Cos'è SHAttered? Attacchi di collisione SHA-1, spiegati
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, in quanto avrebbe ridotto l'accesso ad alcuni siti Web meno recenti. Ma nel febbraio 2017, i loro timori si sono finalmente avverati: i ricercatori hanno rotto SHA-1 creando il primo attacco di collisione nel mondo reale. Ecco cosa significa tutto ciò.
Che cos'è SHA-1?
Lo SHA in SHA-1 sta per Secure Hash Algorithm, e, in poche parole, puoi considerarlo come una sorta di problema di matematica o metodo rimescola i dati che vengono inseriti. Sviluppato dalla NSA degli Stati Uniti, è un componente fondamentale di molte tecnologie utilizzate per crittografare importanti trasmissioni su Internet. Metodi di crittografia comuni SSL e TLS, di cui potresti aver sentito parlare, possono utilizzare una funzione di 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 di lettere casuali inserita in una funzione di hash come SHA-1 restituirà un lungo numero di caratteri impostato, rendendo (potenzialmente) impossibile riportare la stringa di caratteri ai dati originali. Questo è il modo in cui la memorizzazione delle password di solito funziona. Quando si crea una password, l'immissione della password viene sottoposta a hash e archiviata dal server. Al tuo ritorno, quando digiti la tua password, questa viene nuovamente cancellata. Se corrisponde all'hash originale, l'input può essere assunto come uguale e ti verrà concesso l'accesso ai tuoi dati.
Le funzioni di 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, l'hash è quasi impossibile da invertire e recuperare i dati originali (noto anche come "chiave"). Questo è un po 'diverso da "crittografia", il cui scopo è scrambling dei dati allo scopo di decodificarlo in seguito, usando cifrari e chiavi segrete. Gli hash servono semplicemente a garantire l'integrità dei dati, per assicurarsi che tutto sia lo stesso. Git, il software di controllo e distribuzione delle versioni per codice open source, usa 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 è usato per identificare se un file è cambiato.
In che modo questa tecnologia mi influenza?
Diciamo che è necessario visitare un sito Web in privato. La tua banca, la tua e-mail, persino il tuo account Facebook: tutti usano la crittografia per mantenere privati i dati che tu li hai inviati. Un sito Web professionale fornirà la crittografia ottenendo un certificato da un'autorità fidata, una terza parte, fidata per garantire che la crittografia sia al livello, privata tra il sito Web e l'utente e non essere spiata da nessun'altra parte. Questa relazione con la terza parte, chiamata Autorità di certificazione, o circa, è cruciale, dal momento che ogni utente può creare un certificato "autofirmato": puoi persino farlo da solo su una macchina che esegue Linux con Open SSL. Ad esempio, Symantec e Digicert sono due società di CA note.
Esaminiamo uno scenario teorico: How-To Geek vuole mantenere le sessioni degli utenti registrati private con la crittografia, quindi è una petizione come Symantec con una Richiesta di firma del certificato, o CSR. Creano a chiave pubblica e chiave privata per crittografare e decodificare i dati inviati su Internet. La richiesta CSR invia la chiave pubblica a Symantec insieme alle informazioni sul sito web. Symantec controlla la chiave contro il suo record per verificare che i dati siano immutati 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à, assicurano all'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 "difficili") da invertire, la firma hash corretta e verificata significa che il certificato e la connessione possono essere considerati attendibili ei dati possono essere accettati per essere inviati crittografati da un capo all'altro . Ma cosa succede se l'hash non era in realtà unico?
Che cos'è un attacco di collisione, ed è possibile nel mondo reale?
Potresti aver sentito parlare del "problema del compleanno" in matematica, anche se potresti non sapere come è stato chiamato. L'idea di base è che se raccogli un gruppo abbastanza grande di persone, è molto probabile che due o più persone abbiano lo stesso compleanno. Più in alto di quanto ti aspetteresti, anzi, abbastanza da sembrare una strana coincidenza. In un gruppo di 23 persone, c'è il 50% di probabilità che due condividano un compleanno.
Questa è la debolezza intrinseca di tutti gli hash, incluso SHA-1. In teoria, la funzione SHA dovrebbe creare un hash univoco per tutti i dati inseriti, ma man mano che il numero di hash aumenta, diventa più probabile che coppie di dati diverse possano creare lo stesso hash. In questo modo è possibile creare un certificato non affidabile con un hash identico a un certificato attendibile. Se ti hanno chiesto di installare quel certificato non affidabile, potrebbe mascherarlo come affidabile e distribuire dati dannosi.
Trovare gli hash corrispondenti all'interno di due file è chiamato 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 è stato 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 lento; possono essere apportate molte piccole modifiche a livello di bit senza impedire ai lettori di aprirle o causare differenze visibili. I PDF sono spesso usati anche per fornire malware. Mentre SHAttered può lavorare su altri tipi di file, come ISO, i certificati sono rigidamente specificati, rendendo improbabile un tale attacco.
Quindi, quanto è facile questo attacco da eseguire? SHAttered si basava su un metodo scoperto da Marc Stevens nel 2012 che richiedeva 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 high-end che lavorano in parallelo, ci vorrebbe circa un anno per produrre una collisione. Il noleggio di questo tempo di calcolo da Amazon AWS costerebbe circa $ 110.000. Tieni presente che quando i prezzi diminuiscono per le parti del computer e puoi ottenere più energia per meno, gli attacchi come SHAttered diventano più facili da ottenere.
$ 110.000 possono sembrare molto, ma è nel regno dell'accessibilità per alcune organizzazioni, il che significa che i cybervilliani della vita reale potrebbero creare firme digitali dei documenti, interferire con i sistemi di controllo di versioni e backup come Git e SVN o far apparire legittimo un ISO Linux dannoso.
Fortunatamente, ci sono fattori attenuanti che impediscono tali attacchi. SHA-1 è usato raramente 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 di Linux in genere rilasciano più frequentemente di una volta all'anno, rendendo poco pratico per un utente malintenzionato creare una versione malevola e quindi generare una versione con riempimento per avere lo stesso hash SHA-1.
D'altra parte, alcuni attacchi basati su SHAttered stanno già accadendo nel mondo reale. Il sistema di controllo versione SVN usa SHA-1 per differenziare i file. Il caricamento dei due PDF con hash SHA-1 identici in un repository SVN causerà il danneggiamento.
Come posso proteggermi dagli attacchi SHA-1?
Non c'è molto da fare per l'utente tipico. Se stai usando i checksum per confrontare i file, dovresti usare SHA-2 (SHA-256) o SHA-3 piuttosto che 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 dare due file distinti lo stesso hash, Google ha rilasciato uno strumento sul sito SHAttered che può controllarti.
Crediti immagine: Lego Firefox, un sacco di hash, per favore non danneggiare l'autore del Web sconosciuto, Google.