Che cos'è SHA-1?
Lo SHA in SHA-1 sta per Secure Hash Algorithme, 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.
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 riguarda?
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. Questo rapporto con la terza parte, chiamato Autorità di certificazione, o circa, è fondamentale, 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 fa appello a una CA come Symantec con un Richiesta di firma del certificato, o CSR. Creano a chiave pubblica e chiave privata per crittografare e decifrare 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.
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 e che i 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 ci si aspetterebbe, infatti, abbastanza da sembrare una strana coincidenza. In un gruppo di 23 persone, esiste il 50% di probabilità che due condividano un compleanno.
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 di documenti, interferire con sistemi di controllo di versioni e versioni 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 vengono rilasciate più frequentemente di una volta all'anno, rendendo impossibile per un utente malintenzionato creare una versione malevola e quindi generare una casella con 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 il 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 ferire l'autore del Web sconosciuto, Google.