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.

Consigli per il calcolo dell'hash Argon2

  • 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.

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.