Qual è considerato l'algoritmo di crittografia più forte?
Per la massima sicurezza, richiede la fonte di entropia (casualità) di più alta qualità che si possa trovare, preferibilmente da qualche processo fisico analogico ultra complesso, come il rumore termico nei componenti elettrici. Si può anche usare una combinazione di immagini di videocamere di fenomeni meteorologici, immagini altamente localizzate di onde oceaniche che si agitano e si schiantano sulle rocce, ecc. e alimentare questi dati in streaming con una funzione di hashing di alta qualità (come SHA-256) per generare un flusso casuale di bit da usare come one-time-pad.Il one-time-pad è semplicemente un flusso di bit veramente casuale che ha esattamente la stessa lunghezza del flusso di bit del testo in chiaro. I due flussi di bit sono bit-wise XOR'ed insieme per creare il testo cifrato.
Per decifrare il messaggio, bisogna essere in possesso sia del testo cifrato che del flusso di bit one-time-pad. Basta XOR insieme per recuperare il testo in chiaro.
Ora ecco la parte più importante: Non usare mai, MAI più quel flusso di bit one-time-pad per qualsiasi attività crittografica futura! Si chiama "one time pad" per una ragione - è destinato ad essere usato UNA VOLTA, e SOLO UNA VOLTA. Se questa regola fondamentale è seguita in modo impeccabile, allora chiunque sia in grado di intercettare il messaggio cifrato mentre è in transito non ha assolutamente alcuna speranza di decifrare il messaggio senza avere anche il possesso dei bit one-time-pad. L'UNICO vettore di attacco possibile per questo schema di cifratura/decifratura è quello di ottenere in qualche modo il possesso del one-time-pad. Nessun tipo di analisi matematica intelligente o di utilizzo di risorse di supercalcolo può recuperare il testo in chiaro dal solo possesso del testo cifrato.
Se qualcuno infrange le regole e decide di riutilizzare un one-time-pad, e due o più messaggi cifrati vengono intercettati, allora la sicurezza di questo schema di crittografia è notevolmente compromessa. La crittoanalisi che coinvolge lo XOR-ing di due o più messaggi di testo cifrato intercettati (tutti crittografati con lo stesso one-time-pad) rivela molto su ciò che c'è nel one-time-pad, e i messaggi di testo in chiaro sono quindi quasi regalati. Se l'attaccante/intercettatore ha modo di influenzare il contenuto dei messaggi futuri, allora un "attacco known-plaintext" può rompere la crittografia. Quindi deve essere ripetuto: Mai, MAI usare un one-time-pad più di una volta. Fare una cosa del genere in un ambiente di massima sicurezza con documenti classificati dovrebbe, come minimo, far revocare l'autorizzazione di sicurezza di qualcuno, e potrebbe benissimo far condannare qualcuno a un po' di tempo in prigione. A meno che, naturalmente, la persona non abbia un certo cognome... Meglio non parlarne qui.
In pratica (specialmente nella sicurezza informatica), i pad monouso non sono pratici, e sono raramente o mai usati. Il problema è che per ogni messaggio criptato inviato/ricevuto, un one-time-pad separato deve anche essere inviato/ricevuto tramite un canale fuori banda altamente fidato, come un corriere o in alcuni casi tramite una lettera USPS o un pacco Fedex o UPS. Ciò che è più comunemente usato in ambienti altamente sicuri per proteggere i documenti più sensibili e classificati è un algoritmo di crittografia a chiave simmetrica come AES-256. Come il nome dell'algoritmo implica, la chiave di cifratura/decifratura è lunga 256 bit. Il vantaggio di algoritmi come questo è che le chiavi possono essere riutilizzate per criptare molti, molti documenti, e i testi cifrati di questi documenti possono essere fatti trapelare ai nemici senza che questi possano scoprire la chiave di crittografia/decrittografia. Questo è particolarmente vero se i calcoli del cifrario a blocchi sono fatti in una modalità di cifratura a catena (modalità CBC), con un "vettore di inizializzazione" randomizzato che fondamentalmente aggiunge "sale" all'inizio del messaggio, per assicurarsi che anche se vengono cifrati dei testi in chiaro identici, i loro testi cifrati saranno impossibili da correlare per l'attaccante.
Nelle comunicazioni remote sicure, spesso non è ancora abbastanza buono avere algoritmi di cifratura simmetrica forti disponibili con chiavi lunghe (256-bit). Se due sistemi remoti non hanno mai comunicato tra loro prima, e desiderano scambiare dati criptati tramite un algoritmo come AES-256 (che, finora, ha resistito ai duri attacchi dei crittografi), ci deve essere un modo per questi sistemi di concordare una chiave segreta di crittografia/decrittografia da usare, anche se una terza parte (un nemico man-in-the-middle) sta ascoltando tutto il traffico di rete tra queste due macchine (con uno sniffer di pacchetti in qualche luogo cruciale). È qui che entra in gioco la crittografia asimmetrica (chiave pubblica/privata) come RSA, usata insieme a protocolli di scambio di chiavi come Diffie-Hellman. Con i recenti sviluppi del "quantum computing", c'è grande preoccupazione che algoritmi a chiave pubblica/privata come RSA (che dipendono dalla difficoltà di fattorizzare grandi numeri nei loro due fattori primi) possano presto essere resi rotti e inutili, almeno per alcune delle lunghezze di chiave più piccole ancora in uso oggi. La dimensione predefinita della chiave RSA per molti programmi e protocolli oggi (GPG, SSH, OpenSSL) è 2048 bit. Al momento, questo è ancora considerato "non violabile", ma coloro che sono paranoici riguardo ai prossimi progressi del calcolo quantistico sono ben consigliati di aumentare la lunghezza delle chiavi RSA ad almeno 4096 bit.
Sentiamo spesso nelle notizie alcune storie molto inquietanti su come i server che utilizzano una particolare versione di OpenSSL per proteggere l'identità dei siti web (tramite i certificati SSL e il protocollo HTTPS) vengono violati, e il presunto software open-source di fiducia come OpenSSL e SSH è sotto tiro per essere "insicuro" o "altamente vulnerabile" finché non viene patchato. E sfortunatamente, è vero che tali sistemi sono davvero *sono* vulnerabili agli attacchi (in alcuni casi, con qualcuno che si collega al server da remoto e ottiene una shell di root sul sistema). Il problema non è con gli algoritmi di crittografia/decrittografia in sé. Se implementati correttamente, AES-256 e RSA 4096-bit dovrebbero essere estremamente sicuri nel prossimo futuro. Quello che succede, purtroppo, è che la codifica dei protocolli usati con questi algoritmi è complessa e le implementazioni possono ancora avere bug nascosti in agguato nel codice, che aspettano solo di essere sfruttati da qualcuno. Spesso, questi bug coinvolgono semplici e stupidi errori di programmazione come gli errori di buffer-overrun, dove un attaccante può iniettare codice arbitrario eseguibile a scelta nelle strutture dati appropriate e ingannare il software per farlo eseguire e concedere l'accesso al sistema, spesso con privilegi elevati.
Articoli simili
- L'algoritmo di Dijkstra è un algoritmo greedy o un algoritmo di programmazione dinamica?
- LastPass o 1Password usano una crittografia più forte?
- Come si usa il raycasting nella ricostruzione 3D? Come viene considerato un'alternativa all'algoritmo dei cubi di marcia?
- Qual è/era il forte/castello più forte per la difesa di qualsiasi epoca, preferibilmente non all'inglese?