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

  1. 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.
  2. Scelga la variante Salvo motivi particolari, opti per Argon2id, che unisce resistenza agli attacchi con GPU e resistenza agli attacchi side-channel.
  3. Applichi una preimpostazione OWASP Premendo un pulsante di preimpostazione, costo di memoria, iterazioni e parallelismo vengono fissati su una delle combinazioni raccomandate da OWASP.
  4. 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.
  5. 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

Per un sistema nuovo la prima scelta è Argon2id, che oggi anche OWASP indica come raccomandazione iniziale. Se però un sistema esistente usa bcrypt, ricordate che la migrazione richiede il ricalcolo degli hash, per esempio al successivo accesso di ciascun utente.

Argon2d offre la massima resistenza agli attacchi su GPU ma è debole verso gli attacchi a canale laterale; Argon2i ha le caratteristiche opposte. Argon2id combina i due approcci e, salvo motivi particolari, è la variante consigliata.

I preset di questo strumento riprendono le cinque combinazioni del Password Storage Cheat Sheet di OWASP. Su un server reale, regolate i valori — compatibilmente con la memoria disponibile — in modo che un singolo calcolo richieda fra 100 e 500 ms.

Sì: viene usato l'algoritmo Argon2 standard, quindi l'hash è verificabile con password_verify() di PHP o con le librerie Argon2 degli altri linguaggi. Prestate però attenzione a ciò che inserite.

No. Il calcolo avviene interamente in WebAssembly nel browser e nulla di quanto inserito lascia il vostro dispositivo.
Tool-kun

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.