Verifica di un hash Argon2 | Confronta una password con l'hash codificato

Inserite una password e un hash Argon2 già codificato ($argon2id$…) per verificare se corrispondono. Il calcolo avviene interamente nel browser e il contenuto inserito non viene inviato a un server.

Verificare un hash Argon2

Argon2 ha vinto la Password Hashing Competition nel 2015 ed è oggi l'hash per password più raccomandato nei lavori nuovi. La sua differenza principale rispetto a bcrypt sta nel poter regolare l'uso della memoria oltre al tempo di calcolo. Le GPU e l'hardware dedicato eccellono nell'aritmetica parallela ma faticano ad assegnare a ogni nucleo una porzione ampia di memoria, perciò richiedere memoria alza sensibilmente il costo di un attacco a forza bruta.

Un hash Argon2 assume la forma $argon2id$v=19$m=19456,t=2,p=1$sale$digest, con i parametri e il sale incastonati nella stringa stessa. La verifica non ha dunque bisogno di alcun elenco separato di parametri: bastano l'hash e la password. Questo strumento esegue proprio quella verifica. Tutto viene calcolato nel suo browser, e né la password né l'hash che inserisce vengono mai inviati a un server.

Come verificare

  1. Incolli l'hash Argon2 Inserisca così com'è la stringa codificata che comincia con $argon2id$.
  2. Inserisca la password Digiti la password in chiaro che vuole confrontare.
  3. Esegua la verifica Poiché l'algoritmo è concepito per consumare molta memoria, l'operazione può richiedere qualche secondo. È il comportamento atteso.
  4. Legga il risultato Le viene detto se le due corrispondano.

Consigli per sfruttarlo al meglio

  • Per la verifica incollate così com'è l'hash codificato — la stringa che inizia con $argon2id$ — generato con lo strumento di calcolo dell'hash Argon2.
  • L'hash codificato contiene già variante, costo in memoria, iterazioni e sale, quindi in fase di verifica non serve indicare separatamente questi parametri.
  • Se il formato non è valido — per una copia incompleta o per un a capo di troppo — compare un messaggio di errore. Verificate di aver copiato l'intera stringa.
  • Se il risultato è negativo, controllate che nella password non si siano introdotti maiuscole o minuscole diverse né spazi iniziali o finali indesiderati.

Quando torna utile

Controllare un'implementazione di autenticazione

Confermi con una coppia nota di hash e password che il suo codice di accesso verifichi correttamente.

Confermare una migrazione

Stabilisca in anticipo se gli hash portati da un altro sistema siano verificabili così come stanno.

Esaminare i parametri scelti

Legga i valori m, t e p incastonati nella stringa per vedere quale costo sia stato configurato.

Chiudere il cerchio con il generatore

Confermi che un valore prodotto dal generatore di hash Argon2 venga qui verificato correttamente.

I termini di Argon2 spiegati

Argon2id
La variante che unisce resistenza agli attacchi su canale laterale e resistenza agli attacchi via GPU. È la scelta standard nei lavori nuovi.
m (costo di memoria)
La quantità di memoria impiegata, espressa in kibibyte. È il parametro centrale che rende Argon2 resistente agli attacchi via GPU.
t (costo di tempo)
Il numero di iterazioni. Alzarlo allunga il calcolo e con esso il costo per chi attacca.
p (parallelismo)
Il numero di corsie elaborate in parallelo, impostato in base al numero di nuclei del server.
Sale
Dati casuali rinnovati per ogni hash. La stessa password dà ogni volta un hash diverso, il che vanifica gli attacchi con tabelle arcobaleno.
Hash codificato
Il formato che raccoglie nome dell'algoritmo, parametri, sale e digest in un'unica stringa. Porta con sé tutto ciò che serve alla verifica.

Domande frequenti

Il calcolo genera un nuovo hash a partire dalla password, mentre la verifica stabilisce se un hash esistente e una password corrispondono. Di norma si genera e si salva l'hash alla registrazione e si esegue solo la verifica all'accesso.

Il messaggio appare quando l'hash inserito non è nel formato codificato corretto, cioè non inizia con $argon2id$, $argon2i$ o $argon2d$. Verificate che nella copia non manchino caratteri e che non ci siano spazi o a capo in eccesso.

Le cause più comuni sono differenze fra maiuscole e minuscole, caratteri a larghezza piena al posto di quelli normali oppure spazi iniziali o finali. Basta un carattere diverso perché la verifica fallisca: ricontrollate la stringa di partenza.

No. Tutto viene elaborato in WebAssembly nel browser e nulla viene inviato o conservato su un server.

Usate lo strumento complementare di calcolo dell'hash Argon2, che supporta le tre varianti Argon2id, Argon2i e Argon2d.
Tool-kun

A proposito — perché per verificare una password basta confrontare gli hash

Verificare una password sembra a prima vista un'operazione di confronto diretto fra la password memorizzata e quella digitata, ma in realtà il meccanismo è tutt'altro. Il server — o, come in questo strumento, l'elaborazione lato client — ricalcola l'hash della password inserita con lo stesso algoritmo e lo stesso sale usati al momento del salvataggio e si limita a verificare se il risultato coincide con l'hash conservato. La password originale non entra mai nel confronto: è il grande vantaggio di questo approccio.

Tutto ciò funziona perché funzioni come Argon2 sono «deterministiche»: a parità di input, sale e parametri restituiscono sempre lo stesso output. Nella stringa dell'hash codificato — nella forma $argon2id$v=19$m=…$sale$hash — sono incorporati sia il sale sia i parametri usati nel calcolo, quindi non serve indicarli di nuovo: il solo hash basta a ricostruire integralmente il calcolo.

È grazie a queste due proprietà — l'unidirezionalità, per cui dall'hash non si risale alla password, e il determinismo, per cui lo stesso input dà lo stesso output — che chi gestisce un servizio può verificare gli accessi in sicurezza senza conservare alcuna password in chiaro. Anche in caso di violazione della banca dati, l'attaccante ottiene soltanto gli hash e, con un algoritmo costoso come Argon2, un attacco a forza bruta per ricostruire le password richiederebbe tempi lunghissimi.