Calcolo dell'hash Argon2 | Argon2id, Argon2i e Argon2d
Calcola l'hash Argon2 di una password o di un testo qualsiasi. Supporta le tre varianti Argon2id, Argon2i e Argon2d e propone i preset di costo in memoria e iterazioni raccomandati da OWASP. Il calcolo avviene interamente nel browser e il contenuto inserito non viene inviato a un server.
Che cosa fa questo calcolatore di hash Argon2
Digiti una password o una qualsiasi altra stringa e questo strumento ne produce l’hash con una delle tre varianti di Argon2: Argon2id, Argon2i o Argon2d. Argon2 ha vinto la Password Hashing Competition e resiste non solo alla forza bruta semplice, ma anche agli attacchi rapidi condotti con hardware dedicato come GPU e ASIC: per questo è ampiamente considerato la prima scelta per conservare le password nei sistemi di nuova realizzazione.
La robustezza dell’hash poggia su tre parametri: costo di memoria, iterazioni e parallelismo. Aumentarli innalza il costo per l’attaccante, ma accresce altrettanto il tempo e la memoria che un accesso legittimo consuma. Questo strumento offre come preimpostazioni le cinque combinazioni raccomandate dall’OWASP Password Storage Cheat Sheet: ne provi prima una, poi la adatti alla capacità del server su cui opererà davvero.
Come si calcola un hash
- Inserisca la password o la stringa Digiti nel campo della password il testo di cui vuole l’hash. Ciò che inserisce non viene trasmesso da nessuna parte.
- Scelga la variante Salvo motivi particolari, opti per Argon2id, che unisce resistenza agli attacchi con GPU e resistenza agli attacchi side-channel.
- Applichi una preimpostazione OWASP Premendo un pulsante di preimpostazione, costo di memoria, iterazioni e parallelismo vengono fissati su una delle combinazioni raccomandate da OWASP.
- Regoli i parametri se le serve Costo di memoria in KiB, iterazioni e parallelismo si modificano singolarmente. Più i valori sono alti, più il calcolo dura.
- Prema calcola e verifichi il risultato Compaiono l’hash codificato in formato PHC e il tempo effettivamente impiegato dal calcolo. Il pulsante di copia conserva il risultato.
Consigli per sfruttarlo al meglio
- Argon2 ha vinto la Password Hashing Competition del 2015 e la variante Argon2id è quella oggi raccomandata da OWASP. Salvo motivi particolari, scegliete Argon2id.
- I pulsanti dei preset corrispondono alle cinque combinazioni di costo in memoria e iterazioni suggerite dal Password Storage Cheat Sheet di OWASP. Più memoria si richiede, maggiore è la resistenza agli attacchi paralleli su GPU.
- Aumentare il «parallelismo (p)» non produce un vero calcolo parallelo nell'implementazione WebAssembly del browser e il tempo resta quasi invariato. L'accelerazione si ottiene solo su server multiprocessore.
- Il sale viene generato automaticamente a ogni calcolo, quindi lo stesso testo con gli stessi parametri produce ogni volta un hash codificato diverso.
- Con un costo in memoria molto elevato la scheda del browser può smettere temporaneamente di rispondere. Conviene partire da qualche decina di megabyte.
Quando è utile
Decidere come conservare le password di un nuovo servizio
Mentre progetta la conservazione delle password di un sistema nuovo, vede sul momento la lunghezza reale dell’hash e il tempo di calcolo per ciascun insieme di parametri.
Conservare in sicurezza chiavi API e token
Oltre alle password di accesso, torna utile quando non vuole lasciare in chiaro nel database stringhe riservate come chiavi API o segreti condivisi.
Preparare hash fittizi per sviluppo e collaudo
Generi qui gli hash degli account di prova che inserirà direttamente in un database, senza avviare l’applicazione.
Percepire il legame fra parametri e tempi
Calcoli più volte con valori diversi e confronti i tempi indicati: è quel confronto a dirle quali impostazioni convengano al suo server di produzione.
Valutare una migrazione da bcrypt
Calcolare l’hash della stessa stringa con il calcolatore di hash bcrypt e confrontare formato di uscita e durata offre una base per decidere la migrazione.
Termini legati ad Argon2
- Argon2id
- Variante ibrida che unisce le proprietà di Argon2d e Argon2i. Offre insieme resistenza agli attacchi con GPU e a quelli side-channel, e OWASP la indica come prima raccomandazione.
- Argon2i
- Variante il cui ordine di accesso alla memoria non dipende dall’ingresso: ciò la rende forte contro gli attacchi side-channel – quelli che ricavano informazioni dal tempo di esecuzione o dal consumo elettrico – benché un po’ più debole di Argon2d di fronte alle GPU.
- Argon2d
- Variante il cui ordine di accesso alla memoria dipende invece dall’ingresso. Offre la massima resistenza agli attacchi paralleli con GPU o ASIC, ma è vulnerabile a quelli side-channel.
- Costo di memoria
- Parametro che stabilisce quanta memoria impiega il calcolo dell’hash, espressa in KiB. Valori più alti rendono più onerosi gli attacchi paralleli con hardware dedicato.
- Iterazioni
- Detto anche costo temporale, è il parametro che stabilisce quante volte si ripete l’elaborazione interna. Valori più alti allungano il calcolo e rafforzano la resistenza alla forza bruta.
- Parallelismo
- Parametro che stabilisce quante corsie vengono eseguite in parallelo. Giova su un server multicore, ma non ha effetto nell’implementazione WebAssembly che gira nel browser.
- Sale
- Valore casuale aggiunto prima del calcolo dell’hash. Questo strumento lo genera a ogni calcolo, così la stessa stringa con gli stessi parametri produce ogni volta un hash diverso.
- Formato PHC
- Codifica stabilita dalla Password Hashing Competition, che raccoglie in un’unica stringa nome dell’algoritmo, versione, parametri, sale e l’hash stesso, con una forma come $argon2id$v=19$m=…
Domande frequenti
password_verify() di PHP o con le librerie Argon2 degli altri linguaggi. Prestate però attenzione a ciò che inserite.
A proposito — la Password Hashing Competition e la nascita di Argon2
Argon2 fu proclamato algoritmo vincitore, fra 24 candidature, della «Password Hashing Competition» (PHC) svoltasi fra il 2013 e il 2015. Per superare il punto debole dei metodi precedenti come bcrypt (1999) e PBKDF2 (2000) — la vulnerabilità agli attacchi a forza bruta condotti con hardware dedicato come GPU e ASIC — il progetto adotta un impianto che richiede al calcolo una grande quantità di memoria.
Argon2 ha tre varianti. Argon2d massimizza la resistenza agli attacchi su GPU ma è vulnerabile agli attacchi a canale laterale; Argon2i resiste bene a questi ultimi ma è meno robusta contro le GPU. Argon2id è la variante ibrida che unisce le due proprietà ed è raccomandata come prima scelta da OWASP e da molti altri organismi di sicurezza.
Da PHP 7.2 in poi basta indicare la costante PASSWORD_ARGON2ID nella funzione password_hash() per generare un hash Argon2id. Anche Node.js, Python, Ruby e gli altri linguaggi principali dispongono di librerie ufficiali o semiufficiali, e per i nuovi sistemi Argon2id viene sempre più spesso preferito a bcrypt.