Hashing delle password: bcrypt, Argon2, PBKDF2
Impari perché archiviare le password in chiaro è pericoloso e come l’hashing con salt le protegge.
Hashing delle password: bcrypt, Argon2, PBKDF2 è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Perché non memorizzare le password in chiaro
Memorizzare le password in chiaro è catastrofico: una singola violazione del database espone tutti gli account. Le password devono essere elaborate con una funzione unidirezionale prima della memorizzazione, in modo che nemmeno l'accesso al database riveli la password originale.
Che cos'è l'hashing
Una funzione hash converte un input di qualsiasi lunghezza in un output di lunghezza fissa. Lo stesso input produce sempre lo stesso output, ma non è possibile recuperare l'originale dall'hash. Esempi: SHA-256, bcrypt, Argon2.
Perché non usare SHA-256 per le password
Le funzioni hash generiche come SHA-256 sono progettate per essere veloci. Un attaccante può calcolare miliardi di hash SHA-256 al secondo usando una GPU, rendendo praticabile il cracking tramite forza bruta.
Il password hashing richiede funzioni lente e costose.
Salting
Un salt è un valore casuale aggiunto a ogni password prima dell'hashing. Fa sì che due utenti con la stessa password abbiano hash diversi, impedendo gli attacchi con rainbow table e gli attacchi di cracking in batch. Il salt viene memorizzato insieme all'hash (non è segreto).
# Conceptual salt example
hash = bcrypt("password" + random_salt)bcrypt
bcrypt è stato progettato nel 1999 specificamente per l'hashing delle password. Dispone di un fattore di costo configurabile che controlla la lentezza dell'hashing. Con il miglioramento dell'hardware, aumentate il fattore di costo per mantenere la sicurezza.
Oggi è comune un fattore di costo pari a 12: il calcolo dell'hash richiede circa 250 ms su una CPU moderna.
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) applica molte volte una funzione hash (ad esempio HMAC-SHA256) tramite iterazioni. Più iterazioni = maggiore lentezza = maggiore sicurezza. È raccomandato da NIST e usato da WPA2 per le password Wi-Fi.
Argon2
Argon2 ha vinto la Password Hashing Competition nel 2015. È lo standard moderno. È configurabile in base a:
- Costo temporale — numero di iterazioni
- Costo in memoria — RAM richiesta (limita l'accelerazione tramite GPU)
- Parallelismo — numero di thread
Usate Argon2id per la maggior parte delle applicazioni.
Rainbow table
Una rainbow table è una tabella di ricerca precalcolata da hash a testo in chiaro. Senza salting, un attaccante che possiede l'hash può cercarlo istantaneamente nella tabella. Il salting rende inutilizzabili le rainbow table perché ogni hash è univoco.
Tecniche di cracking delle password
Approcci comuni per il cracking offline:
- Attacco a dizionario — prova le password comuni e le relative varianti
- Forza bruta — prova tutte le combinazioni di caratteri
- Basato su regole — applica regole di mutazione al dizionario (aggiungere l'anno, usare le maiuscole, leet speak)
- Strumenti: Hashcat, John the Ripper
Scegliere l'algoritmo giusto
Ordine di preferenza per le nuove applicazioni:
- Argon2id — migliore resistenza al cracking tramite GPU/ASIC
- bcrypt — ampiamente supportato e con una comprovata affidabilità
- PBKDF2 — approvato da NIST e richiesto in alcuni contesti di conformità
Non usate mai: MD5, SHA-1 o SHA-256 senza salt per le password.
Processo di verifica
Quando un utente effettua l'accesso:
- Recuperi l'hash e il salt memorizzati per l'utente
- Calcoli l'hash della password inviata usando lo stesso salt e algoritmo
- Confronti l'hash risultante con quello memorizzato (confronto a tempo costante)
- Non decifri mai: esegua solo il confronto
Verifica rapida: hashing delle password
Quale algoritmo di hashing delle password è considerato la best practice attuale e ha vinto la Password Hashing Competition?
Riepilogo della lezione
Le password devono essere memorizzate come hash, non in testo in chiaro. Gli algoritmi veloci come SHA-256 non sono adatti: utilizzi funzioni di hashing delle password lente, come Argon2id (preferito), bcrypt o PBKDF2. Utilizzi sempre un salt casuale per ogni password, per prevenire gli attacchi tramite rainbow table. Non implementi mai autonomamente la crittografia: utilizzi librerie collaudate.
Domande Frequenti
La lezione «Hashing delle password: bcrypt, Argon2, PBKDF2» è gratuita?
Sì — il testo completo di «Hashing delle password: bcrypt, Argon2, PBKDF2» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Hashing delle password: bcrypt, Argon2, PBKDF2»?
Impari perché archiviare le password in chiaro è pericoloso e come l’hashing con salt le protegge. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Hashing delle password: bcrypt, Argon2, PBKDF2»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Robustezza e criteri delle password
- Hashing delle password: bcrypt, Argon2, PBKDF2
- Autenticazione a più fattori
- Credential stuffing e password spraying