In questi ultimi giorni estivi del 2016 c'è stato l'annuncio da parte di DropBox (www.dropbox.com) del leak del loro database di 68 milioni di accounts dei loro utenti. Il database è stato reso pubblico e risale alla metà del 2012. Tutti coloro che non avevano cambiato la password d'accesso da giugno 2012 sono stati a rischio per 4 anni e mezzo, perché in questo periodo i criminali hanno potuto provare a ricavare le password d'accesso dai dati a loro disposizione.
"Provare a ricavare la password" è un'affermazione importante in questo contesto, perché i criminali non hanno ottenuto le password vere e propria ma piuttosto la sua versione hash (vedi anche: Breve storia della crittografia).
Un codice hash è un codice a lunghezza fissa, a seconda dell'algoritmo utilizzato, generato da una funzione matematica non reversibile: dal codice non si può ricavare l'oggetto al quale si riferisce, ossia se applichiamo la funzione di hash ad un file di 200Gb o alla parola "pippo", avremo sempre una sequenza di numeri e lettere di lunghezza fissa. Una sequenza che, comprensibilmente, non contiene alcuna indicazione sul contenuto originale; è un po' come se fosse la targa di un'automobile o l'impronta digitale di un essere umano.
Un esempio vale sempre mille parole:
hash("pippo")= ABC123hash("l'estate sta finendo")= DFF872
Da qui possiamo capire che dal codice DFF872 non possiamo ricavare l'intera frase "l'estate sta finendo", perché non è una cifratura o una codifica in un altro alfabeto ma è un codice a lunghezza fissa, che identifica univocamente un qualcosa, basta cambiare anche un solo bit ed il codice cambia, per esempio:
hash("l'estate sta finend")=ADB634
Com'è conservata la nostra password online?
Quando scegliamo la password, es. "pippo", nel database viene memorizzato l'hash di "pippo", (per riprendere l'esempio precedente,ABC123) quindi ogni volta che inseriamo la password per accedere ad un servizio, l'applicazione calcola l'hash della password e lo confronta con quello presente nel database, se i due hash coincidono allora la nostra password è corretta.
Ma se i database contengono l'hash delle password e dall'hash è impossibile risalire alla password in chiaro, allora non rischiamo nulla?
Purtroppo i rischi ci sono eccome, perché al di là della teoria esistono metodi per ricavare la password in chiaro, specialmente se molto semplice (parole di senso compiuto, sequenze famose, ecc.), ci sono le rainbow tables, i dizionari, i servizi online. Persino una semplice ricerca su Google può farci trovare lo strumento giusto. Qui un bell'articolo in inglese.