Google 'rompe' per la prima volta l'algoritmo di hashing SHA-1

24 Febbraio 2017 17

Il team di ricerca di Google ha annunciato la tanto attesa "rottura" dell'algoritmo di hashing SHA1, dimostrata empiricamente mostrando la prima collisione pubblica di due documenti PDF. L'evento avviene a 10 anni dall'introduzione dell'algoritmo e ha richiesto nove quintilioni di computazioni SHA1, che se eseguite sequenzialmente corrisponderebbero a 6500 anni di elaborazione su una CPU single-core più 110 anni su una GPU.

SHA-1 (Secure Hash Algorithm) è la versione meno sicura di una famiglia di funzioni crittografiche di hash largamente diffuse sul web. Viene principalmente utilizzato per firmare certificati HTTPS, per verificare l'integrità di file, per archiviare password di login e per gestire repository di codice (ad esempio su Git).

La debolezza dell'algoritmo SHA1 è già nota ed era solo questione di tempo prima che qualcuno investisse energie per dimostrare nella pratica quello che nella teoria era già stato preannunciato. Nel 2011 l'istituto per la standardizzazione NIST l'aveva bollato come obsoleto e nel 2012 già si era calcolato che a quel tempo sarebbero serviti $2,77 milioni per "romperlo", ma ne sarebbero bastati $173.000 nel 2018. Oggi in realtà a chiunque basterebbero $110.000 e la potenza del cloud computing di Amazon per riprodurre lo stesso attacco messo a segno da Google.

A partire dal gennaio 2016, Google considera tutti i certificati firmati con SHA-1 insicuri e avverte da allora con una schermata dall'allarme rossa tutti gli utenti di Chrome che si avventurano in siti web che ne fanno utilizzo. Alcuni grandi nomi di Internet fecero resistenza al repentino abbandono di SHA-1 voluto da Google, come Facebook, Twitter e Cloudflare, tuttavia quasi tutte le autorità di certificazione sono migrate verso algoritmi più sicuri, come SHA-256 e SHA-3.

L'interesse di Google, oltre che fidelizzare gli utenti all'utilizzo di Internet, è quello di proteggere la propria piattaforma pubblicitaria, distribuita su gran parte dei siti Internet esistenti. Le pubblicità online sono ormai il primo target dei malware che infettano le pagine web, per infettare a loro volta gli utenti che le visualizzano.

Le ultime versioni di Chrome (v56) e Firefox (v51) hanno interrotto completamente il supporto a SHA-1. Gli utenti più esposti sono ancora una volta i possessori di vecchi computer con sopra Windows XP, sistema operativo che non supporta la successiva generazione della funzione SHA-2. Microsoft ha inoltre deciso di posticipare l'abbandono completo di SHA-1 a metà 2017 per i suoi browser Edge e Internet Explorer 11 (ma dopo questa notizia ci potrebbero essere novità).

SHA-1, cos'è e come si rompe

Gli algoritmi di hashing sono funzioni che traducono un qualsiasi messaggio in una stringa di dimensione fissa. La particolarità di queste funzioni è che sono semplici da computare in un verso, ma molto difficili nell'altro: è facile e veloce tradurre un messaggio in una stringa, ma al livello pratico è impossibile risalire da una stringa al messaggio. Inoltre è altrettanto difficile trovare due messaggi che abbiamo una codifica uguale (questa caratteristica è stata falsificata da Google per SHA-1).

Ad esempio, utilizzando la codifica SHA-1 su due messaggi differenti (anche leggermente), otteniamo due rispettive stringhe differenti:

  • Voglio comprare la casa per 500.000 euro -> d9a522e9cf80c739d0ba97bd4b1b799794e76e0e

  • Voglio comprare la casa per 500.000.000 euro -> b50167893cbc0faf75831e76add692c0e3bf09eb

Un classico utilizzo delle funzioni di hash è la verifica dell'integrità di un messaggio che viene trasmesso. Se il mittente invia il messaggio con allegata la sua codifica hash, il ricevente può calcolare autonomamente la codifica del messaggio ricevuto, confrontarla con quella inviata, e verificare se il messaggio è stato manomesso o meno. Nell'esempio precedente, se l'attaccante fosse in grado di manomettere il messaggio e il mittente non avesse allegato l'hash, quest'ultimo si ritroverebbe con parecchi soldi di meno nel conto in banca.

Una "collisone" avviene quando si riescono a trovare due messaggi che hanno la stessa codifica hash. Un famoso collision attack contro l'ancor meno sicuro algoritmo hash MD5 richiede pochi secondi di computazione per ricavare due messaggi del genere. L'applicazione di queste tecniche a particolari formati di documenti -come file TIFF, JPEG, PDF, Word, certificati, email, aggiornamenti software- permette di creare due copie molto simili dello stesso file, una delle quali possibilmente infetta, che hanno la stessa codifica hash.

La collisione portata a termine da Google si basa su un approccio teorico descritto nel 2013 da Marc Stevens. Si inizia con un "prefisso" di un PDF (la sua parte iniziale, fissa e definita in un certo modo), e si riesce a computare un "collision block" per cui è facile aggiungere l'opportuno suffisso al documento. Il risultato sono due PDF molto differenti che hanno però hash uguale.


In particolare il team di Google, assieme al CWI Institute di Amsterdam, ha prodotto due PDF differenti (link1, link2) che collidono sullo stesso hash:

38762cf7­f55934b3­4d179ae6­a4c80cad­ccbb7f0a

Google, rispettando la sua policy di sicurezza, attenderà 90 giorni prima di pubblicare il codice sorgente della tecnica utilizzata per compiere l'attacco. Va inoltre ricordato che si tratta della prima collisione pubblica: non è detto che qualche organizzazione criminale o governativa non abbia già ottenuto risultati simili senza però renderli noti.

Spendere poco per avere tanto? Huawei P9 Lite è in offerta oggi su a 180 euro.

17

Commenti

Regolamento Commentando dichiaro di aver letto il regolamento e di essere a conoscenza delle informazioni e norme che regolano le discussioni sul sito. Clicca per info.
Caricamento in corso. Per commentare attendere...
M3r71n0

Se i canali di trasmissione del file e dell'hash sono diversi...
diventa molto difficile.
(es. File preso da link su internet e hash comunicato tramite irc)

M3r71n0

Checksum?

Giova91

Concordo, articolo molto valido

al404

dite che è per questo motivo che Nintendo non vuole far trapelare le caratteristiche della Switch XD

LeChuck

Complimenti, sempre bello leggere un articolo "tecnico" su questi lidi, specie se spiegato con chiarezza come in questo caso. :)
Spero possa diventare una rubrica semi-fissa. ;)

Valerio Di Carlo

Ero tentato di mettere "e/o"...

takaya todoroki

io la nasconderei in una console di nuova generazione: metti che la concorrenza ha hardware migliore, tu dopo 2/3 anni sveli il gioiello sotto il cofano!

takaya todoroki

Sì è quello che succede nei vari store/repository. Non c'è solo l'hash ma ci sono le firme con chiave asimmetrica e tutto quanto.

Diverso discorso se scarichi un programma direttamente da un sito: se qualcuno fa MITM ti può mostrare sulla pagina il valore hash del programma modificato da lui.
Per questo non bisogna mai scaricare programmi in siti che non abbiano HTTPS e lucchetto verde (il MITM dovrebbe avere prima le risorse per rompere lo strato sicuro, il che è molto più difficile).
Altra cosa che si può fare è cercare l'hash su google e vedere in quanti (e quali ) siti compare (difficilmente in MITM li può cambiare al volo tutti)

takaya todoroki

"non è detto che qualche organizzazione criminale o governativa"

avete dimenticato "o entrambe le cose" ;)

artick82

Io

Homer76

La condifica hash è cifrata con il sistema a chiave asimmetrica, quindi, teoricamente protetta contro alterazioni.
In pratica, la debolezza si "sposta" dall'hashing alla cifratura. :)

Redmario

Ma chi intercetta e modifica il file trasmesso a sua volta non può modificare anche la sua codifica hash? Visto che ci vuole poco a generare un hash da un file no?

qandrav

ci vorrebbe una cpu quantistica in grafene

fabrynet

Ogni tanto qualche articolo interessante ;)
Non so quanto sia opportuno pubblicare questa tecnica di attacco di collisione del digest, magari è già diffusa, ma metterebbe a repentaglio ulteriormente la sicurezza di tutti quei sistemi che ancora adottano SHA-1.

boosook

Ottimo articolo, avete spiegato tutto con estrema chiarezza!

rsMkII

Chi mi presta 110000$?

DKDIB

Questa tecnica ha il vantaggio di non variare le dimensioni del file: io ero fermo alla violazione di CRC-32, che prevede l'aggiunta di 8 byte in coda. :P

Windows

Microsoft Surface Pro 2017 è ufficiale: la nostra video anteprima

Android

Recensione Sony Xperia XA1: equilibrato in tutto meno che nel prezzo

Samsung

Galaxy J5 e J7 (2017) mostrano un lato B diverso dal solito

Recensione Chuwi Hi13: display 3K e Apollo Lake a 310€