Il primo giorno del 2016, Mozilla ha interrotto il supporto per una tecnologia di sicurezza indebolita chiamata SHA-1 nel browser Web Firefox. Quasi immediatamente, hanno annullato la loro decisione, poiché avrebbe interrotto l'accesso ad alcuni siti Web meno recenti. Ma nel febbraio 2017 le loro paure si sono finalmente avverate: i ricercatori hanno rotto SHA-1 creando il primo attacco di collisione nel mondo reale . Ecco cosa significa tutto ciò.
Cos'è SHA-1?
SHA in SHA-1 sta per Algoritmo hash sicuro e, in poche parole, puoi pensarlo come una specie di problema di matematica o metodo rimescola i dati che vengono inseriti in esso . Sviluppato dalla NSA degli Stati Uniti, è un componente fondamentale di molte tecnologie utilizzate per crittografare importanti trasmissioni su Internet. I metodi di crittografia comuni SSL e TLS, di cui potresti aver sentito parlare, possono utilizzare una funzione hash come SHA-1 per creare i certificati firmati che vedi nella barra degli strumenti del browser.
Non approfondiremo la matematica e l'informatica di nessuna delle funzioni SHA, ma ecco l'idea di base. Un "hash" è un codice univoco basato sull'input di qualsiasi dato . Anche una piccola stringa casuale di lettere immessa in una funzione hash come SHA-1 restituirà un numero lungo e stabilito di caratteri, rendendo (potenzialmente) impossibile ripristinare la stringa di caratteri ai dati originali. Questo è il modo in cui normalmente funziona l'archiviazione delle password. Quando crei una password, la password immessa viene sottoposta ad hashing e archiviata dal server. Al tuo ritorno, quando digiti la password, viene nuovamente hash. Se corrisponde all'hash originale, si può presumere che l'input sia lo stesso e ti verrà concesso l'accesso ai tuoi dati.
Le funzioni hash sono utili principalmente perché rendono facile capire se l'input, ad esempio, un file o una password, è cambiato. Quando i dati di input sono segreti, come una password, è quasi impossibile invertire l'hash e recuperare i dati originali (noti anche come "chiave"). Questo è un po 'diverso dalla "crittografia", il cui scopo è rimescolare i dati allo scopo di decodificarli in un secondo momento , utilizzando cifre e chiavi segrete. Gli hash hanno semplicemente lo scopo di garantire l'integrità dei dati, per assicurarsi che tutto sia uguale. Git, il software di controllo e distribuzione della versione per il codice open source, utilizza gli hash SHA-1 proprio per questo motivo .
Sono molte informazioni tecniche, ma per dirla semplicemente: un hash non è la stessa cosa della crittografia, da allora viene utilizzato per identificare se un file è stato modificato .
In che modo questa tecnologia influisce su di me?
Supponiamo che tu debba visitare un sito web in privato. La tua banca, la tua e-mail, persino il tuo account Facebook, utilizzano tutti la crittografia per mantenere privati i dati che invii loro. Un sito Web professionale fornirà la crittografia ottenendo un certificato da un'autorità attendibile, una terza parte, affidabile per garantire che la crittografia sia a livello, privata tra il sito Web e l'utente e non venga spiata da nessun'altra parte. Questo rapporto con la terza parte, chiamato Autorità di certificazione , o QUELLA , è fondamentale, dal momento che qualsiasi utente può creare un certificato "autofirmato", puoi persino farlo fai da te su una macchina che esegue Linux con Openssl . Symantec e Digicert sono due società di CA ampiamente note, ad esempio.
Esaminiamo uno scenario teorico: How-To Geek vuole mantenere private le sessioni degli utenti collegati con la crittografia, quindi richiede a una CA come Symantec Richiesta di firma del certificato , o CSR . Creano un file chiave pubblica e chiave privata per crittografare e decrittografare i dati inviati su Internet. La richiesta CSR invia la chiave pubblica a Symantec insieme alle informazioni sul sito Web. Symantec controlla la chiave rispetto al suo record per verificare che i dati non siano stati modificati da tutte le parti, poiché qualsiasi piccola modifica nei dati rende l'hash radicalmente diverso.
Quelle chiavi pubbliche e certificati digitali sono firmati da funzioni hash, perché l'output di queste funzioni è facile da vedere. Una chiave pubblica e un certificato con un hash verificato da Symantec (nel nostro esempio), un'autorità, assicura a un utente di How-To Geek che la chiave è invariata e non inviata da qualcuno malintenzionato.
Poiché l'hash è facile da monitorare e impossibile (alcuni direbbero "difficile") da invertire, la firma hash corretta e verificata significa che il certificato e la connessione possono essere considerati attendibili e i dati possono essere concordati per essere inviati crittografati dall'inizio alla fine . Ma cosa succede se l'hash in realtà non era unico ?
Che cos'è un attacco di collisione ed è possibile nel mondo reale?
Potresti aver sentito parlare di "Problema di compleanno" in matematica , anche se potresti non sapere come si chiamava. L'idea di base è che se riunisci un gruppo di persone abbastanza grande, è molto probabile che due o più persone compiano lo stesso compleanno. Più in alto di quanto ti aspetteresti, infatti, abbastanza da sembrare una strana coincidenza. In un gruppo di 23 persone, c'è una probabilità del 50% che due condividano un compleanno.
Questa è la debolezza intrinseca di tutti gli hash, incluso SHA-1. Teoricamente, la funzione SHA dovrebbe creare un hash univoco per tutti i dati che vi vengono inseriti, ma man mano che il numero di hash cresce, diventa più probabile che coppie di dati differenti possano creare lo stesso hash. Quindi si potrebbe creare un certificato non attendibile con un hash identico a un certificato attendibile. Se ti convincono a installare quel certificato non attendibile, potrebbe mascherarsi come attendibile e distribuire dati dannosi.
La ricerca di hash corrispondenti all'interno di due file è chiamata a attacco di collisione . È noto che almeno un attacco di collisione su larga scala è già avvenuto per gli hash MD5. Ma il 27 febbraio 2017, Google ha annunciato SHAttered , la prima collisione mai realizzata per SHA-1. Google è stata in grado di creare un file PDF con lo stesso hash SHA-1 di un altro file PDF, nonostante avesse contenuti diversi.
SHAttered è stato eseguito su un file PDF. I PDF sono un formato di file relativamente sciolto; È possibile apportare molte piccole modifiche a livello di bit senza impedire ai lettori di aprirlo o causare differenze visibili. I PDF vengono spesso utilizzati anche per fornire malware. Sebbene SHAttered possa funzionare su altri tipi di file, come gli ISO, i certificati sono specificati rigidamente, rendendo improbabile un simile attacco.
Quindi quanto è facile eseguire questo attacco? SHAttered era basato su un file metodo scoperto da Marc Stevens nel 2012 che ha richiesto oltre 2 ^ 60,3 (9,223 quintilioni) di operazioni SHA-1, un numero sbalorditivo. Tuttavia, questo metodo è ancora 100.000 volte meno operazioni di quanto sarebbe necessario per ottenere lo stesso risultato con la forza bruta. Google ha scoperto che con 110 schede grafiche di fascia alta che lavorano in parallelo, ci vorrebbe circa un anno per produrre una collisione. Il noleggio di questo tempo di elaborazione da Amazon AWS costerebbe circa $ 110.000. Tieni presente che quando i prezzi dei componenti del computer scendono e puoi ottenere più potenza con meno, attacchi come SHAttered diventano più facili da eseguire.
$ 110.000 possono sembrare molti, ma per alcune organizzazioni rientra nel regno della convenienza, il che significa che i cybervilliani della vita reale potrebbero falsificare firme di documenti digitali, interferire con i sistemi di backup e controllo delle versioni come Git e SVN o far sembrare legittima una ISO Linux dannosa.
Fortunatamente, esistono fattori attenuanti che impediscono tali attacchi. SHA-1 è più raramente utilizzato per le firme digitali. Le autorità di certificazione non forniscono più certificati firmati con SHA-1 e sia Chrome che Firefox hanno abbandonato il supporto per loro. Le distribuzioni Linux in genere vengono rilasciate più di una volta all'anno, rendendo poco pratico per un utente malintenzionato creare una versione dannosa e quindi generarne una riempita per avere lo stesso hash SHA-1.
D'altra parte, alcuni attacchi basati su SHAttered stanno già avvenendo nel mondo reale. Il sistema di controllo della versione SVN utilizza SHA-1 per differenziare i file. Il caricamento dei due PDF con hash SHA-1 identici in un repository SVN lo causerà corrompere .
Come posso proteggermi dagli attacchi SHA-1?
Non c'è molto da fare per l'utente tipico. Se utilizzi i checksum per confrontare i file, dovresti utilizzare SHA-2 (SHA-256) o SHA-3 anziché SHA-1 o MD5. Allo stesso modo, se sei uno sviluppatore, assicurati di utilizzare algoritmi di hashing più moderni come SHA-2, SHA-3 o bcrypt. Se sei preoccupato che SHAttered sia stato utilizzato per fornire a due file distinti lo stesso hash, Google ha rilasciato uno strumento sul Sito alterato che può controllare per te.
Crediti immagine: Lego Firefox , Un sacco di hash , Per favore, non danneggiare l'autore Web sconosciuto, Google .