Stando ad una ricerca fatta dal Centrum Wiskunde & Informatica di Amsterdam e la Google Research pare che il mito della sicurezza dato da SHA-1 pare che stia crollando di brutto, ed ecco che è giunto il momento di fare il punto della situazione ed è forse l’ora di cambiare un pò le regole del gioco.
Si perché a quanto pare da questa ricerca ne è risultato che ci sono una serie di collisioni tra gli hash SHA-1, che portano questo storico algoritmo a non essere più così sicuro e che quindi ci si deve sbrigare a fare la migrazione verso algoritmi molto più aggiornati e sicuri. Va subito detto che la migrazione verso nuovi algoritmi è già in atto da un pò di tempo a questa parte, ma per una migrazione totale da SHA-1 ad un algoritmo più sicuro si deve aspettare ancora un pò di tempo, visto che non è una cosa che si fa cliccando su due tasti.
Prima di continuare il nostro cammino alla scoperta di questa insicurezza data da SHA-1, andiamo a vedere che cos’è SHA e SHA-1.
L’acronimo SHA sta per Secure Hash Algorithm, questo acronimo indica una famiglia di cinque diverse funzioni crittografiche di hash sviluppate a partire dal 1993 ad oggi. La cosa bella è che questa famiglia di funzioni crittografiche di hash è stata sviluppata e pensata per la prima volta dalla National Security Agency (la famosa NSA, passata alla storia per alcune cose non proprio ortodosse). Queste funzioni crittografiche di hash sono state pubblicate dal NIST come standard federale dal governo degli USA.
Gli algoritmi di questa famiglia sono i seguenti: SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512. Però in realtà oggi come oggi, si conoscono solo due dei 5, perché le ultime 4 varianti sono spesso indicate genericamente come SHA-2, questo per dare la possibilità alle persone distinguerle dal SHA-1.
Come dicevo prima, l’SHA-1 oggi è il più diffuso algoritmo della famiglia SHA ed è utilizzato in numerose applicazioni e protocolli nonostante sia ormai insicuro e verrà presto sostituito dagli altri 4, più moderni ed efficienti.
In poche parole e ancor più semplici SHA-1 è un semplice algoritmo crittografico per la generazione di hash, vale a dire la creazione di una stringa binaria di dimensioni fisse a partire di una serie di dati di dimensioni arbitrarie. Questo significa che i dati in questione possono essere una semplice parola, una frase di senso compiuto o una stringa di testo super mega lunga, ma il risultato non cambia. Cioè la stringa binaria generata da SHA-1 sarà sempre uguale.
Eccovi un esempio pratico e veloce sul come si può calcolare l’hash SHA-1 di una stringa, direttamente in PHP:
<?php $str = "insidevcode"; $sha1 = sha1($str); echo $sha1; ?>
<?php $str = "insidevcode il blog per gli sviluppatori e non solo"; $sha1 = sha1($str); echo $sha1; ?>
Adesso che abbiamo capito che c’è SHA-1 e come questo può essere utilizzato in modo pratico, andiamo a vedere come mai di questa sua insicurezza.
Diciamo che questo sistema di crittografia è passato alla storia per non più sicuro questo perché negli ultimi anni ha subito una serie di attacchi che hanno dimostrato che la sua robustezza bob è più quella di una volta.
Ma come hanno fatto i ricercatori a scoprire che SHA-1 non è più così sicuro?
Semplicemente andando a scovare una collisione che ha generato la stessa impronta hash SHA-1 per due file PDF completamente diversi. Insomma è come se negli esempi prima mostrati, avessimo ricevuto lo stesso identico output. Questa cosa non è ammissibile, questo significa che non ci devono essere collisioni di questo tipo e non si deve arrivare a questo tipo di situazione, cioè in cui due identità totalmente diverse hanno la stessa improntata hash. È come se due persone totalmente diverse avessero le stesse impronte.
Questo problema non è da sottovalutare visto che gli hash crittografici SHA-1 vengono impegnati per la verifica dei certificati delle connessioni HTTPS, per non parlare della ricerca di file duppicati e per non dimenticare gli archivi dei progetti software Git.
Sicuramente adesso mi starete chiedendo: se SHA-1 non è più così sicuro, che cosa fanno le varie società che sviluppato software oppure si occupano di hosting?
La risposta è semplice, cioè che tutti quanti sono impegnati nel migliorare la situazione e trovare le migliori soluzioni per migrare verso alcune versioni della famiglia SHA in modo veloce e indollore, questo perché nessuno vuole fare la brutta figura con i proprio utenti. Però va detto che qualcuno ci ha visto bene e ci vede bene da molto tempo, cioè la Mozilla che già nella versione di Firefox 51 aveva iniziato a deprecare l’algoritmo SHA-1, con Firefox 52 viene disabilitato di default.
In conclusione va detta questa cosa, cioè che una semplice ricerca e una sola collisione non fa si che tutto il mondo e soprattutto il Web sia insicuro, è sicuramente un campanello d’allarme che non va sottovalutato. È sicuramente una cosa da tenere d’occhio soprattutto se prendiamo in considerazione che la tecnologia e la potenza di calcolo aumenta ogni giorno, dando la possibilità ai malintenzionati di utilizzare tutta questa potenza di calcolo per fare le stesse identiche cose fatte dai ricercatori.
Spero che questo post sia stato di vostro gradimento e aspettiamo le vostre impressioni nei commenti qui sotto.
Vi segnaliamo qualche libro se siete interessati a leggere qualche cosa in più sugli algoritmi:
Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram, per restare sempre in contatto con noi e con le nostre guide.
Blogger e Sviluppatore, appassionato sin da piccolo dell’informatica e di tutta la tecnologia.