Negli ultimi anni, le cose non sono andate bene per la sicurezza delle informazioni. Sembra infatti che arrivino notizie di nuove violazioni di dati praticamente ogni giorno. Sono sempre più frequenti i report su gravi lacune di sicurezza che riguardano alcune delle più grandi aziende tecnologiche del mondo.
Nel 2019, ad esempio, due colossi tecnologici hanno dichiarato di aver scoperto importanti falle nella sicurezza dei loro sistemi. Facebook ha ammesso di aver memorizzato milioni di password degli utenti di Instagram sotto forma di testo in chiaro. Pochi mesi dopo, Google ha rivelato di aver fatto la stessa cosa con gli utenti di G Suite. Ma perché è così grave conservare le password in questo modo? E come dovrebbero essere memorizzate?
Se le password sono conservate come testo in chiaro, chiunque abbia l'accesso interno ai sistemi di un'azienda potrebbe vederle; per non parlare poi del fatto che, se il database venisse violato, le credenziali sarebbero in bella vista anche per gli hacker. Di conseguenza, un'azienda che si attiene perlomeno alle procedure di sicurezza di base non conserverà mai le password in chiaro.
Al contrario, convertirà le password in una complessa stringa di caratteri utilizzando algoritmi di hashing delle password. Quando cercherai di accedere al tuo account, la password sottoposta a hashing verrà confrontata con altri hash presenti nel database dell'azienda. Se l'hash della password corrisponde, potrai accedere all'account.
Ma come funziona esattamente l'hashing? L'hashing è una funzione unidirezionale per criptare i dati: prende un testo leggibile e lo trasforma in una stringa di caratteri completamente diversa, con una lunghezza definita.
Tuttavia, a differenza di altri algoritmi di crittografia che trasformano i dati, l'hashing è pressoché irreversibile: perciò, anche se gli hacker entrassero in possesso di un database contenente password sottoposte a hashing, tentare di decodificarle sarà uno sforzo inutile. Ciononostante, i criminali informatici hanno altri modi per scoprire le password originali.
Decifrare l'hash
Il problema principale dell'hashing delle password è che, elaborando con un algoritmo di hashing una determinata parola, ad esempio "verde", la stringa di caratteri che si otterrà sarà sempre la stessa. Supponiamo, quindi, che un criminale informatico entri in possesso di un database di password sottoposte a hashing. Nessuno potrà impedirgli di indovinare milioni di password e di sottoporle allo stesso algoritmo, per scoprire quale sia l'hash per una parola specifica.
Al giorno d'oggi, gli hacker non ricorrono più ad attacchi di forza bruta non sofisticati: hanno affinato il loro approccio e usano una strategia più furtiva e subdola, detta "attacco a dizionario". Invece di tentare di indovinare le password in modo casuale, provano combinazioni prevedibili e parole di uso frequente, come ad esempio "password123".
Alcuni hacker hanno migliorato ulteriormente la propria strategia adottando una tecnica innovativa, basata sulle cosiddette "tabelle arcobaleno" (rainbow tables). In sostanza, si tratta di tabelle precalcolate di valori di hash per le password e le combinazioni più utilizzate, che consentono di decifrare in modo semplice e rapido anche i più complessi hash. È come se avessero a disposizione una chiave segreta, e di certo non si fanno scrupoli a usarla.
Hash forti e deboli
Per i motivi di cui sopra, esistono diversi tipi di hashing. Gli algoritmi di hashing come SHA-1 e MD5, ad esempio, non sono particolarmente difficili da violare e sono ormai considerati obsoleti; algoritmi più recenti come bcrypt e SHA2 sono invece più sicuri, anche se risultano vulnerabili nei confronti di alcuni tipi di attacchi. Attualmente l'algoritmo consigliato per l'hashing delle password è Argon2id, creato per essere esigente in termini di memoria e costoso dal punto di vista computazionale, il che lo rende molto resistente ai tipi comuni di attacchi di forza bruta. Argoin2id può eseguire l'hashing della password solo poche volte; tuttavia, a causa della complessità delle sue operazioni, Argoin2id è considerato una soluzione più sicura dell'algoritmo PBKDF2, che esegue migliaia, se non addirittura milioni, di semplici iterazioni di hashing. Ecco perché NordPass utilizza proprio Argoin2id per l'hashing delle credenziali in fase di accesso: è uno degli algoritmi di hash più sicuri in circolazione.
Per rendere il processo di hashing ancora più sicuro è possibile ricorrere a ulteriori opzioni, dette "salt" e "pepper". Il "salt" è una sequenza casuale di caratteri che viene generata e aggiunta alla password prima che venga sottoposta a hashing. Lo scopo del salt è aumentare ulteriormente la complessità della procedura di hashing e, di conseguenza, rendere ancora più difficile la violazione delle password usando le "tabelle arcobaleno", ovvero database di hash precalcolati. Nella maggior parte dei casi, i "salt" sono memorizzati in un database insieme alle password sottoposte a hashing.
In modo analogo, il "pepper" è un valore segreto che viene aggiunto alla password prima della procedura di hashing. A differenza del "salt", però, il "pepper" di solito è inserito direttamente all'interno del codice del sistema che esegue l'hashing delle password, il che le rende ancora più difficili da violare.
I limiti delle funzioni di hash
Queste funzioni possono presentare dei limiti, come ad esempio le collisioni hash: sono situazioni nelle quali due input diversi producono lo stesso valore di output dell'hash. Tuttavia, nella maggior parte degli algoritmi di hashing, la probabilità di collisione è estremamente bassa (soprattutto nelle alternative più moderne) quindi è un problema di cui non preoccuparsi troppo.
In conclusione
Riassumendo quanto detto sinora, non sempre è possibile sapere quanto sia sicura la funzione utilizzata dal tuo fornitore di servizi, quindi la cosa migliore da fare è adottare password forti. Puoi creare una password sicura usando un utile strumento di NordPass, ovvero il generatore di password. Eppure, come dimostrano i casi di Google e Facebook, a volte le credenziali sono conservate in chiaro, senza alcun tipo di protezione o cifratura, quindi è bene non usare mai la stessa password due volte. Sappiamo che ricordare tutte le credenziali è pressoché impossibile, quindi ti consigliamo di usare il gestore di password NordPass.