23 FEBBRAIO 2017, GOOGLE ROMPE LO SHA-1 PROVANDO LA NECESSITÀ DI MIGLIORI SOLUZIONI NEL CAMPO DELLA CYBER SECURITY
Il 23 febbraio 2017 Google ha portato a compimento una collisione di hash fra due file protetti da crittografia mediante l’algoritmo crittografico SHA-1 (Secure Hash Algorithm 1), dimostrando che questo può dar luogo a due file diversi contrassegnati da uno stesso hash e che, di fatto, non è più sicuro. Ma andiamo con ordine.
Per meglio comprendere quanto accaduto sarà bene fare qualche premessa, cominciando con una definizione di funzione crittografica di hash.
CHE COS’È UNA FUNZIONE CRITTOGRAFICA DI HASH?
Il termine “hash”, derivante dall’inglese to hash (tritare, sminuzzare), indica un algoritmo matematico che consente di trasformare un qualunque file (o comunque un numero arbitrario di bit) in una stringa di caratteri, detta digest, di dimensione fissa e prestabilita.
Indipendentemente dalla dimensione del file in entrata e dalla sua natura – testo, immagine, audio, video ecc. – il digest ottenuto applicando la funzione di hash al file avrà sempre la stessa lunghezza.
I campi di applicazione degli hash sono numerosi, ma principalmente si calcola il digest di un documento elettronico per garantire l’integrità del suo contenuto.
Infatti, ad ogni documento elettronico corrisponderà un digest ben preciso, in grado di identificare in modo univoco la forma e il contenuto di quel documento. Modificando il documento originario, anche in maniera minima, il digest del documento modificato risulterà completamente diverso.
Ad esempio, applicando un hash crittografico alla frase “InfoCert S.p.A.”, il digest che ne risulta è:
aabe0f12019839dc18ce2937e1e851840862de4c.
Calcolando il digest della frase “InfoCert S.p.A” otteniamo invece:
3116abbf55955418a773fa4c72a3783b77e517b5.
È stato sufficiente eliminare l’ultimo punto di “S.p.A.” per ottenere una stringa alfanumerica completamente differente.
Applicando lo stesso procedimento ai nostri file potremmo, ad esempio, controllare che il digest di un contratto inviato tramite posta elettronica a un cliente corrisponda al digest del contratto effettivamente ricevuto dal cliente. Se i due digest non dovessero corrispondere avremmo la prova di una manomissione del file. Al contrario, la corrispondenza dei due digest garantirebbe l’integrità del file e del suo contenuto.
L’ALBA E I CAMPI DI APPLICAZIONE DELLO SHA-1
Detto ciò, possiamo tornare allo SHA-1 e raccontarne la storia a partire dalla nascita, nell’aprile del 1995.
SHA-1 ed è uno dei membri della Secure Hash Algorithm, una famiglia di cinque differenti funzioni crittografiche di hash – SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512 – sviluppate dalla NSA (National Security Agency) statunitense a partire dal 1993.
Come tutte le funzioni crittografiche di hash gli SHA producono una stringa di dimensione prestabilita: lo SHA-1, utilizzato per calcolare il digest di esempio di prima, produce una stringa lunga 160bit, gli altri quattro producono un digest avente numero di bit pari al numero indicato dalla propria sigla. Lo SHA-224 produrrà un digest di 224bit, lo SHA-256 uno di 256 e così via.
Le applicazioni pratiche dello SHA-1 sono tante, tra le principali: la firma dei certificati SSL che stanno alla base delle comunicazioni sicure su canale HTTPS, l’archiviazione delle credenziali di accesso ai siti web e, come avviene in Git o all’avvio della Nintendo Wii, la verifica dei pacchetti di installazione dei software.
L’ATTACO DI GOOGLE E LA FINE DELLO SHA-1
I dubbi sulla solidità dello SHA-1 sono iniziati nel 2005 quando due ricercatori, Vincent Rijmen e Elisabeth Oswald, hanno ipotizzato che con un totale di 280 (si parla di un numero con 24 zeri!) computazioni SHA-1 fosse possibile dare origine ad una collisione, cioè generare, per due file differenti, un medesimo digest.
Con il passare del tempo la posizione dello SHA-1 non poteva fare altro che peggiorare. Nel 2015 è stato un gruppo di tre ricercatori ad ipotizzare che, attraverso un cluster (una catena di computer) composto da 64 CPU ed un costo al tempo compreso tra i 75.000 e i 120.000 dollari si potesse dar vita ad una collisione dopo 257 computazioni SHA-1.
Come anticipato, il 23 febbraio 2017, dopo 2 anni di ricerca in collaborazione con il CWI Institute di Amsterdam, Google rompe definitivamente lo SHA-1. Per l’attacco il gruppo di ricercatori è partito da uno scritto del 2013 di Marc Stevens contenente un approccio teorico per la generazione di una collisione e, passando per la creazione di uno specifico file PDF, è riuscito ad ottenere due file con un diverso contenuto e il medesimo digest SHA-1.
L’attacco di Google, basato su soluzioni di cloud computing, ha comportato 9 quintilioni di computazioni SHA-1 (9,223,372,036,854,775,808) e rappresenta uno dei maggiori processi computazionali mai completati. È stato calcolato che per portarlo a termine sia necessario un anno di tempo ed il potere di calcolo di 110 CPU.
Nonostante le risorse da impiegare possano sembrare elevate il metodo individuato da Google è comunque 100.000 volte più veloce di un attacco a forza bruta che, per poter giungere allo stesso risultato, richiederebbe per un anno intero il potere di calcolo di 12 milioni di CPU.
SHA-256 E QUALIFIED TRUST SERVICE PROVIDER
La soluzione alla vulnerabilità dello SHA-1, così come dichiarato dalla stessa Google all’interno del proprio comunicato, è rappresentata dal passaggio a funzioni crittografiche di hash più evolute e sicure la cui violazione comporta un incremento esponenziale dello sforzo computazionale. Lo SHA-256 in tal senso rappresenta una valida soluzione.
In Italia è già la Deliberazione CNIPA 45/2009 attraverso le modifiche introdotte dalla Determinazione Commissariale del 28 luglio 2010 a considerare lo SHA-256 come lo standard che i certificatori accreditati devono utilizzare per la sottoscrizione dei certificati elettronici di certificazione, di sottoscrizione, di marcatura temporale e per la sottoscrizione delle relative CRL (Certificate Revocation List).
È interessante notare come anche eIDAS, il regolamento UE 910/2014 in materia di identificazione elettronica e servizi fiduciari per le transazioni elettroniche nel mercato interno, converga verso l’uso dello SHA-256 come algoritmo di hash utilizzato di default nell’erogazione dei qualified trust services da parte dei qualified Trust Service Provider (qTSP) come InfoCert.
L’adozione dello SHA-256 da parte dei qTSP rappresenta uno degli step fondamentali per giungere al mutuo riconoscimento dei documenti sottoscritti con firma qualificata a livello europeo e, di conseguenza, al libero scambio di documenti informatici giuridicamente rilevanti.
Junior Business Analyst presso InfoCert,
società del Gruppo Teconinvestimenti
29 marzo 2017