
Gli informatici per decenni si sono chiesti se esistesse un modo sicuro e onnicomprensivo per offuscare i programmi sui computer, consentendo alle persone di usarli senza scoprire i loro segreti interni.
L’offuscamento del programma abiliterebbe una serie di applicazioni utili: ad esempio, potresti utilizzare un programma offuscato per delegare determinate attività all’interno della tua banca o account di posta elettronica ad altre persone, senza preoccuparti che qualcuno possa utilizzare il programma in un modo per cui non era previsto o leggere le password dell’account (a meno che il programma non sia stato progettato per emetterle).
Ma finora, tutti i tentativi di creare offuscatori pratici sono falliti. Nel 2001 sono arrivate cattive notizie anche sul fronte teorico: la forma più forte di offuscamento è impossibile. Chiamato offuscamento della scatola nera, richiede che gli aggressori non siano in grado di apprendere assolutamente nulla sul programma tranne ciò che possono osservare utilizzando il programma e vedendo ciò che produce.
Alcuni programmi, hanno dimostrato Barak, Sahai e altri cinque ricercatori , rivelano i loro segreti in modo così determinato che è impossibile offuscarli completamente.
Questi programmi, tuttavia, sono stati ideati appositamente per sfidare l’offuscamento e avere poca somiglianza con i programmi del mondo reale.
Quindi gli informatici speravano che potesse esserci un altro tipo di offuscamento che fosse abbastanza debole da essere fattibile ma abbastanza forte da nascondere i tipi di segreti a cui le persone realmente tengono. Gli stessi ricercatori che hanno dimostrato che l’offuscamento della scatola nera è impossibile hanno proposto una possibile alternativa nel loro articolo: l’offuscamento indistinguibile.
A prima vista, iO non sembra un concetto particolarmente utile. Invece di richiedere che i segreti di un programma siano nascosti, richiede semplicemente che il programma sia offuscato abbastanza che se hai due programmi diversi che eseguono la stessa operazione, non puoi distinguere quale versione offuscata proviene da quale versione originale. Ad esempio, supponi di avere un programma che esegue alcune attività relative al tuo conto bancario, ma il programma contiene la tua password non crittografata, rendendoti vulnerabile a chiunque si impossessi del programma.
Quindi, fintanto che esiste un programma in grado di eseguire la stessa attività mantenendo la password nascosta, un offuscamento indistinguibile sarà abbastanza forte da mascherare con successo la password. Dopotutto, se così non fosse, se metti entrambi i programmi attraverso l’offuscatore, sarai in grado di dire quale versione offuscata proviene dal tuo programma originale.
Nel corso degli anni, gli scienziati informatici hanno dimostrato che è possibile utilizzare iO come base per quasi tutti i protocolli crittografici che si possano immaginare (ad eccezione dell’offuscamento della scatola nera).
Ciò include sia le classiche attività crittografiche come la crittografia a chiave pubblica (che viene utilizzata nelle transazioni online) sia gli stupefacenti nuovi arrivati come la crittografia completamente omomorfica, in cui un computer cloud può calcolare su dati crittografati senza imparare nulla al riguardo. E include protocolli crittografici che nessuno sapeva come costruire, come la crittografia negabile o funzionale.
Nel 2013, Sahai e cinque coautori hanno proposto un protocollo iO che divide un programma in qualcosa di simile a pezzi di puzzle, quindi utilizza oggetti crittografici chiamati mappe multilineari per ingarbugliare i singoli pezzi. Se i pezzi vengono assemblati correttamente, il groviglio si annulla e il programma funziona come previsto, ma ogni singolo pezzo sembra privo di significato.
Il risultato è stato salutato come una svolta e ha richiesto dozzine di documenti di follow-up. Ma nel giro di pochi anni, altri ricercatori hanno dimostrato che le mappe multilineari utilizzate nel processo di garbling non erano sicure. Altri candidati iO arrivarono e furono a loro volta superati.
Fonti nel testo

[Tecnologia / Informatica / Domotica]