Cryptology Academy · Lezione

Argon2: hashing delle password memory-hard

Esplori Argon2i, Argon2d e Argon2id e scopra perché la resistenza basata sulla memoria è importante.

Lezione 3 di 413 passaggi

Argon2: hashing delle password memory-hard è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 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 Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

Argon2 ha vinto la Password Hashing Competition (PHC) nel 2015 ed è la principale raccomandazione di OWASP. Il suo design memory-hard contrasta gli attacchi tramite GPU e ASIC, contro i quali bcrypt non è altrettanto efficace.

Perché la proprietà memory-hard è importante

Le GPU hanno migliaia di core, ma una quantità limitata di RAM per core (circa 1 KB). Argon2 richiede almeno 64 MB di RAM per hash. Un attaccante che tenta 1.000 hash in parallelo avrebbe bisogno di 64 GB di RAM, una risorsa costosa e limitata.

Varianti di Argon2

Argon2d: accesso dipendente dai dati; è la variante più veloce, ma vulnerabile agli attacchi side-channel basati sui tempi di esecuzione. Argon2i: accesso indipendente dai dati; protegge dagli attacchi basati sui tempi di esecuzione. Argon2id: variante ibrida; consigliata per la maggior parte delle applicazioni.

Parametri di Argon2

m: memoria in kilobyte (OWASP: 19456 KB = 19 MB come minimo, 64 MB consigliati) t: costo temporale / iterazioni (3 consigliato) p: parallelismo / thread (4 consigliato) salt: 16 byte casuali output: 32 byte

Argon2id in Python

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

Formato dell'hash Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... Tutti i parametri sono memorizzati nella stringa dell'hash. La verifica è autonoma: non è necessario memorizzare separatamente i parametri.

Raccomandazioni OWASP 2024 per Argon2id

Minimo: m=19456 KB (19 MB), t=2, p=1 Consigliato: m=65536 KB (64 MB), t=3, p=4 Alta sicurezza: m=262144 KB (256 MB), t=4, p=8 Adatti i valori in base alla memoria disponibile sul server.

Argon2 contro bcrypt e PBKDF2

Argon2id: memory-hard, resistente agli ASIC, consigliato per i sistemi nuovi. bcrypt: ampiamente supportato, non memory-hard, con un buon supporto per i sistemi legacy. PBKDF2: conforme a FIPS, non memory-hard, da usare negli ambienti regolamentati.

Strategia di aggiornamento degli hash

Quando passa da bcrypt ad Argon2: 1. Aggiunga una nuova colonna per il nuovo hash 2. Al successivo accesso: verifichi con il vecchio bcrypt, ricalcoli l'hash con Argon2 e memorizzi il nuovo hash 3. Dopo X mesi, imponga il reset della password agli utenti che non hanno ancora eseguito l'aggiornamento

Argon2 nei framework reali

Django: imposti PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: utilizzi il pacchetto argon2 (non argon2-ffi) PHP 7.2+: utilizzi la costante integrata PASSWORD_ARGON2ID in password_hash()

Pepper: segreto lato server

Un pepper è un segreto lato server combinato con la password prima del calcolo dell'hash: hash(password + pepper). Anche se il DB viene divulgato, all'attaccante serve anche il pepper. La rotazione del pepper invalida tutti gli hash.

Verifica rapida

Perché Argon2 è più resistente agli attacchi tramite GPU rispetto a bcrypt?

Riepilogo

Argon2id è oggi lo strumento migliore per il calcolo degli hash delle password. Ora confronteremo tutti e tre gli algoritmi e impareremo a scegliere quello più adatto al contesto.
Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Argon2: hashing delle password memory-hard» è gratuita?

Sì — il testo completo di «Argon2: hashing delle password memory-hard» è 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 Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Argon2: hashing delle password memory-hard»?

Esplori Argon2i, Argon2d e Argon2id e scopra perché la resistenza basata sulla memoria è importante. Eserciti Cryptology 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 Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology 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 3 di 4.

Quanto tempo richiede la lezione «Argon2: hashing delle password memory-hard»?

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 Cryptology Academy?

Sì. Ogni lezione Cryptology 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

  1. Perché SHA-256 semplice non è sufficiente per le password
  2. bcrypt: algoritmo e fattore di costo
  3. Argon2: hashing delle password memory-hard
  4. PBKDF2 e scelta dell'algoritmo giusto
← Torna a Cryptology Academy