Se stai confrontando diversi gestori di password o studiando la sicurezza delle password, ti imbatterai rapidamente in termini come hashing e salting. Sebbene questi termini possano sembrare come passaggi per preparare delle patate a colazione, in realtà sono processi essenziali per proteggere qualsiasi account online.
Questo articolo spiega cosa significano hashing e salting delle password, come funzionano e perché sono necessari.
Come proteggiamo le password su Proton
Hashing delle password
L’hashing è un modo per mescolare le informazioni in una stringa di lettere e numeri di lunghezza fissa. Puoi prendere informazioni non criptate, che siano una password, un’immagine o un intero libro, e inserirle in una funzione hash, che trasforma queste informazioni in un valore hash con un numero specifico di caratteri. Ad esempio, SHA-256, una delle funzioni di hash più comuni, crea sempre valori hash a 256 bit (32 byte).
Crea i tuoi valori hash(nuova finestra)
Oltre a creare un prodotto di lunghezza fissa, ci sono altre due cose che distinguono l’hashing dalla crittografia standard. L’hashing è:
- Irreversibile — Non puoi “dehashare” (o rigenerare le informazioni originali) un valore hash in nessun modo.
- Deterministico — Se inserisci le stesse informazioni di input in una funzione hash, restituirà sempre lo stesso valore hash.
- Imprevedibile — Dovrebbe essere quasi impossibile indovinare il valore hash risultante per qualsiasi informazione di input. In effetti, se puoi prendere un valore hash e facilmente indovinare o creare l’input che genererebbe quel valore hash, allora quella funzione hash dovrebbe essere considerata vulnerabile ed evitata.
Queste tre caratteristiche rendono l’hashing un buon modo per memorizzare e verificare le password in modo sicuro.
Hashing, memorizzazione delle password e autenticazione delle password
Quando crei un nuovo account online, fornisci inevitabilmente un nome utente (di solito il tuo indirizzo email) e crei una password. Questo consente al servizio di sapere chi sei e verificare che sei veramente tu.
Ma la password crea un problema complicato per i fornitori di servizi. Hanno essenzialmente tre opzioni. Possono memorizzare la tua password in chiaro, crittografata o hashed.
Non serve essere esperti di cybersecurity per vedere i problemi di memorizzazione delle password in chiaro. Questo permetterebbe al servizio di accedere al tuo account ogni volta che vuole, e la tua password sarebbe esposta in caso di attacco.
La crittografia non funziona nemmeno. Se un servizio crittografa una password usando chiavi che controlla, può comunque accedere alla tua password ogni volta (e potenzialmente esporla in una violazione). E non può crittografare la tua password utilizzando una chiave che non controlla (una chiave che si trova sul tuo dispositivo, ad esempio) perché questo non gli consente di verificare che la tua password sia corretta quando accedi.
L’hashing è un buon compromesso. Poiché l’hashing è irreversibile, i servizi possono memorizzare la tua password e garantire ai loro utenti che non possono accedere ai loro account e che le loro password saranno al sicuro in caso di violazione.
E poiché l’hashing è deterministico, un servizio può verificare una password confrontando i due valori hash. Se i valori hash corrispondono, il servizio sa che le informazioni di input (le password) corrispondono, anche se il servizio non sa quale sia la password effettiva.
È un sistema intelligente, ma l’hashing ha un problema con la prevedibilità. Se assumi che una delle password più comuni per qualsiasi servizio sarà “password”. Con queste informazioni, puoi probabilmente trovare gli account che usano “password” semplicemente esaminando i valori hash più ripetuti.
In effetti, esiste un attacco informatico dedicato a decifrare gli hash utilizzando le cosiddette rainbow table, che compilano hash e cercano di capire le regole che le governano in grandi tabelle. Sono efficaci proprio perché gli hash sono prevedibili.
Salting delle password
Per minimizzare la prevedibilità di una funzione di hash, i programmatori usano il salting. Il salting è una tecnica che prende la funzione di hash prevedibile e aggiunge un po’ di “gusto” extra — da qui il termine “sale” — sotto forma di imprevedibilità. Un sale è un breve insieme di caratteri casuali aggiunti a ogni password prima di essere hashed.
Ciò che rende speciale un sale è che ognuno è unico per ogni utente. Se crei una password con un servizio, ti viene assegnato un sale che nessun altro ha. Se cambi la tua password, alcuni servizi utilizzeranno un nuovo sale da abbinare. Questo assicura sostanzialmente che nessuna password (e quindi, nessun valore hash) venga mai ripetuta finché viene utilizzato un nuovo valore di sale casuale per ogni nuova password.
Questo rende molto più difficile il compito di qualsiasi attaccante. Le loro rainbow table sono inutili poiché il salting rende imprevedibili i valori hash. L’unica cosa che resta da fare è assicurarti che la tua password sia sufficientemente casuale per scoraggiare gli attacchi con dizionario.
Come proteggiamo le password su Proton
Su Proton, mettiamo la privacy e la sicurezza dei nostri utenti al primo posto. Non inviamo mai la tua password ai nostri server, affidandoci invece al protocollo Secure Remote Password (SRP). L’SRP consente a un utente di autenticarsi su un server (e viceversa) dimostrando di conoscere la password senza condividere la password stessa o qualsiasi informazione che un attaccante potrebbe utilizzare per derivare la password (come un valore hash, ad esempio). La tua password rimane sicura sul tuo dispositivo.
Scopri di più su come Proton utilizza l’SRP
Utilizziamo hashing e salting, ma per le tue chiavi di account. Una volta effettuato l’accesso con successo, Proton invia le chiavi del tuo account al tuo client. Il tuo client quindi salta e hasha la tua password usando bcrypt e utilizza il valore hash risultante come chiave per decrittografare la chiave del tuo account. Una volta decrittografata la chiave del tuo account, può essere utilizzata per accedere alle tue email, calendari, ecc. Questo processo avviene localmente sul tuo dispositivo, quindi la tua password e il valore hash non lasciano mai il dispositivo.
Puoi estendere questo livello di protezione anche ai tuoi altri account con Proton Pass, il nostro gestore di password crittografato end-to-end.
Come puoi leggere nella nostra analisi completa del modello di sicurezza di Proton Pass, crittografiamo end-to-end le tue password singolarmente così come i vault dove le memorizzi, impedendo a chiunque, incluso noi, di poter vedere i tuoi elementi in qualsiasi momento del processo di trasferimento.
Possiamo offrire questo tipo di sicurezza avanzata perché siamo interamente finanziati da te, i nostri utenti. Senza azionisti o investitori di capitale di rischio a cui pensare, possiamo concentrarci sullo sviluppo di strumenti che offrano il massimo in termini di sicurezza e usabilità senza compromettere costi o qualità.
Il risultato è un servizio che mette te al primo posto, sia che si tratti della migliore tecnologia di crittografia o di offrire un’interfaccia di prim’ordine. Se ti sembra qualcosa che ti piacerebbe provare, unisciti a Proton Pass oggi.