Hashing Password: Protezione Forte Contro Il Furto Di Password
Secondo Forbes, nella Darknet circolano circa 15 miliardi di password rubate. Anche quelle lunghe composte da caratteri casuali non sono sicure se i criminali informatici sono in grado di scoprire dove sono state salvate. Gli algoritmi di hashing delle password migliorano la sicurezza, traducendo ogni password in un codice che non può essere decodificato al contrario. In questo articolo spiegheremo come funziona l'hashing delle password e cosa devi tenere a mente quando usi questa tecnica.
Cos'è l'Hashing Delle Password?
Ogni volta che apri un account su un negozio online, il sito web salva la password che hai scelto sul suo server, spesso anche in locale. Tuttavia, la necessità di memorizzare questi dati comporta dei rischi; se il server viene violato, i criminali informatici possono facilmente accedere alle password.
Alcuni siti memorizzano tutte le loro password in forma crittografata. Sebbene ciò migliori notevolmente la sicurezza, è solo parzialmente efficace contro gli hacker. Ecco il problema: un algoritmo di crittografia ha bisogno di una chiave per decriptare i dati. Poiché anche la chiave è conservata sul server, è vulnerabile in caso di violazione dei dati.
I metodi di hashing delle password, al contrario, convertono la password in una "stringa" (sequenza di caratteri) con una lunghezza fissa. Ad esempio, qwerty si traduce in 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5 utilizzando l'algoritmo SHA-256. Questo codice è una sequenza di 64 caratteri esadecimali, e ogni carattere richiede 4 bit di memoria.
Con la crittografia, la tua chiave privata è comunque archiviata sul server del servizio scelto ma, con l'hashing, il sito web mantiene solo l'hash finale.
A differenza della crittografia, l'algoritmo opera in una sola direzione (la cosiddetta funzione unidirezionale), rendendo impossibile derivare la password originale dalla stringa. In un certo senso, l'hashing funziona come un'impronta digitale. Puoi confrontare le impronte digitali e abbinarle alle persone. Tuttavia, è impossibile determinare l'identità di qualcuno da un'impronta digitale se le sue informazioni non sono già archiviate in un database.
Puoi utilizzare questo strumento online per vedere come diversi algoritmi delle famiglie crittografiche SHA e Keccak convertono parole e frasi in hash.
Come Funziona l'Hashing Delle Password?
Ecco cosa succede quando accedi a un sito che utilizza l'hashing delle password:
- 1.
Si crea una password durante l'accesso iniziale. Il sito esegue l'hashing e memorizza solo l'hash.
- 2.
La prossima volta che accedi, inserisci la password non crittografata.
- 3.
La funzione hash calcola nuovamente l'hash e lo confronta con quello memorizzato.
- 4.
Se i valori hash corrispondono, potrai accedere.
- 5.
Se perdi o dimentichi la tua password, dovrai generarne una nuova tramite un link e-mail o un altro metodo (ad es. SMS). Il sito non è in grado di recuperare la vecchia password dall'hash archiviato.
Cosa Rende Buona Una Funzione Hash?
Esistono numerosi algoritmi hash, i primi risalenti agli anni '70. Da allora ne sono stati creati molti altri, e tutti questi algoritmi condividono le seguenti proprietà:
Funzione unidirezionale: con una funzione unidirezionale, l'argomento non può essere calcolato in base al valore della funzione. Ad esempio, proviamo ad eseguire l'hashing della frase "Il sole splende", utilizzando l'algoritmo SHA-256. Il risultato è c4512d108926769997cd2abe3e3cb8f13f35363d8c0353b66a0d889986245e7c. È impossibile determinare la frase originale da questa stringa.
Deterministica: Se inseriamo più volte la nostra frase di esempio nello strumento hash, otteniamo sempre lo stesso risultato. Ciò garantisce che se inserisci la password corretta, sarai sempre in grado di accedere. Detto questo, una frase leggermente diversa, come "Il figlio splende", risulterà in 7c06434c82c9a4116a1aba38fe2bfc93e2ccbf622f61a445e57f210c7d4e4829, che è una stringa completamente diversa di caratteri. Per questo motivo, gli attacchi di forza bruta (con cui gli hacker tentano di scoprire le password utilizzando più varianti di esse) perdono la loro efficacia.
Risultati con lo stesso formato: con la funzione hash SHA-256, tutto l'input, indipendentemente dalla lunghezza, risulta in una stringa a 256 bit. In generale, tutte le password sottoposte a hash con lo stesso algoritmo hanno la stessa lunghezza, indipendentemente dalla password originale.
Resistente ai conflitti: due input diversi non dovrebbero mai produrre lo stesso risultato. In pratica, nessun algoritmo di hashing è resistente ai conflitti al 100%, perché mentre i valori di input sono infiniti, il numero di output è al massimo a^b (a = il numero di caratteri possibili; b = la lunghezza della stringa). Tuttavia, questo è comunque sufficiente, poiché la probabilità di conflitto è estremamente bassa.
Le funzioni hash comuni che forniscono un'elevata sicurezza sono SHA-3, SHA-256 e SHA-512, nonché BCrypt, PBKDF2, Argon2 e Scrypt.
Cosa Significa Aggiungere Salt e Pepper Alle Tue Password?
Anche l'hashing delle password non blocca comunque tutti gli accessi non autorizzati. Secondo uno studio degli esperti di sicurezza informatica ID Agent, milioni di persone usano la loro squadra sportiva preferita, la band preferita o nomi comuni come password dell'account. Gli hacker possono semplicemente sfogliare gli account dei social media delle loro vittime e iniziare a indovinare le password. I criminali informatici eseguiranno anche l'hashing di un termine popolare insieme a lievi variazioni e quindi verificheranno i risultati su centinaia di migliaia di account (noti come attacchi di forza bruta inversa).
Per risolvere questo problema, alcuni siti aggiungono una stringa a ciascuna password prima di eseguirne l'hashing. Queste sono note come password "Salted" (letteralmente, salate). Come l'hash, il salt è memorizzato sul server. Esistono salt univoci, quindi ogni utente ha una stringa univoca, e salt che vengono applicati a tutti gli utenti. Il primo fornisce un livello di sicurezza più elevato.
Il "pepper" (letteralmente, pepe) funziona in modo simile; aggiunge una stringa alla password originale. A differenza del salt, il pepper non è memorizzato nel database del server del sito, ma è scritto a codice. Ciò significa che anche in caso di furto di dati, gli account non verranno compromessi. D'altra parte, la stessa stringa viene utilizzata per tutte le password, rendendole più facili da indovinare.
Sia il salt che l'hash sono salvati sul server.
L'Hashing Delle Password è Sicuro Al 100%?
Neppure le password con salt e pepper, insieme ai migliori algoritmi di hashing, non offrono una protezione completa. Gli hacker possono comunque raggiungere i propri obiettivi tramite le seguenti strategie:
Nei classici attacchi di forza bruta e "a dizionario", gli hacker generano milioni di hash di password e li confrontano con i valori hash memorizzati sul server. Se due hash corrispondono, avranno identificato la password originale.
Sulla Darknet, i criminali vendono tabelle con valori hash pre-generati o rubati esattamente per questo scopo. Queste "tabelle arcobaleno" consentono una ricerca strutturata della password che corrisponde a un particolare hash e sono molto più veloci degli attacchi di forza bruta.
Anche le password salted non sono completamente sicure; in caso di furto di dati, i salt stessi possono cadere nelle mani dei criminali informatici.
Gli account sono esposti a rischi aggiuntivi se il sito web utilizza algoritmi hash obsoleti. Sia SHA-1 che MD5 sono stati "craccati" e non sono più considerati sicuri.
Conclusioni
L'hashing delle password è un modo comune per proteggere le password sui server. Anche in caso di attacco al server, gli algoritmi di hashing assicurano che gli hacker ricevano solo stringhe senza valore. I sistemi salt e pepper migliorano ulteriormente la sicurezza.
Tuttavia, se le password possono essere facilmente indovinate, gli attacchi di forza bruta ai database possono avere risultati più devastanti. Gli hacker hanno violato anche alcuni algoritmi hash. In generale, password complesse e algoritmi aggiornati offrono la migliore protezione contro il furto di dati.