Cryptographie

Calcul de Hash Argon2 | Compatible Argon2id, Argon2i, Argon2d

Calculez le hash Argon2 d'une chaîne de caractères telle qu'un mot de passe. Compatible avec les trois variantes Argon2id, Argon2i et Argon2d, avec des préréglages de coût mémoire et de nombre d'itérations recommandés par l'OWASP. Le calcul s'effectue entièrement dans votre navigateur : le contenu saisi n'est jamais envoyé au serveur.


Astuces pour le calcul du hash Argon2

  • Argon2 est l'algorithme vainqueur de la Password Hashing Competition de 2015, et Argon2id est actuellement la variante recommandée par l'OWASP. Sauf raison particulière, choisissez Argon2id.
  • Les boutons de préréglages correspondent aux cinq combinaisons de coût mémoire et de nombre d'itérations recommandées par l'OWASP Password Storage Cheat Sheet. Plus la mémoire allouée est élevée, plus la résistance aux attaques parallèles par GPU est forte.
  • Augmenter le « degré de parallélisme (p) » ne change presque rien au temps de calcul dans cette implémentation WebAssembly du navigateur, qui ne parallélise pas réellement le traitement. L'accélération apportée par le parallélisme n'est effective que sur un serveur multicœur.
  • Un sel est généré automatiquement à chaque calcul, si bien que la même chaîne avec les mêmes paramètres produit à chaque fois un hash encodé différent.
  • Un coût mémoire trop élevé peut rendre l'onglet du navigateur temporairement inactif. Il est conseillé de commencer avec quelques dizaines de mégaoctets.

Foire aux questions

Pour un nouveau système, Argon2id est le premier choix : l'OWASP le recommande désormais en priorité. Si un système existant utilise déjà BCrypt, notez que la migration nécessite un recalcul des hashes (par exemple un re-hachage lors de la prochaine connexion).

Argon2d offre la meilleure résistance aux attaques par GPU mais reste vulnérable aux attaques par canal auxiliaire, tandis qu'Argon2i présente les propriétés inverses. Argon2id combine les deux approches et il est recommandé de le choisir sauf raison particulière.

Les boutons de préréglages de cet outil correspondent aux cinq combinaisons recommandées par l'OWASP Password Storage Cheat Sheet. Pour un usage sur un serveur réel, visez un temps de calcul d'environ 100 à 500 ms par hash et ajustez en fonction de la mémoire disponible.

Oui. Cet outil utilise l'algorithme Argon2 standard, donc le hash peut être vérifié directement avec password_verify() en PHP ou toute bibliothèque de vérification Argon2 dans d'autres langages. Faites toutefois attention à la façon dont vous manipulez les données saisies.

Non. Le calcul du hash s'effectue entièrement dans le navigateur via WebAssembly, et aucune donnée saisie n'est jamais transmise à l'extérieur.
ツールくん

Anecdote — la Password Hashing Competition et les origines d'Argon2

Argon2 a été désigné algorithme vainqueur parmi 24 candidats lors de la « Password Hashing Competition » (PHC), organisée entre 2013 et 2015. Cette compétition visait à corriger les faiblesses des méthodes existantes comme BCrypt (1999) ou PBKDF2 (2000), vulnérables aux attaques par force brute accélérées par du matériel spécialisé tel que les GPU ou les ASIC ; Argon2 a donc été conçu pour exiger une grande quantité de mémoire lors du calcul.

Argon2 se décline en trois variantes. Argon2d maximise la résistance aux attaques par GPU mais reste vulnérable aux attaques par canal auxiliaire, tandis qu'Argon2i résiste bien à ces attaques par canal auxiliaire au prix d'une résistance GPU légèrement inférieure. Argon2id combine ces deux approches en une variante hybride, et de nombreux organismes de sécurité, dont l'OWASP, la recommandent en priorité pour le stockage des mots de passe.

Depuis PHP 7.2, il suffit d'appeler password_hash() avec la constante PASSWORD_ARGON2ID pour générer un hash Argon2id. Des bibliothèques officielles ou quasi officielles existent également pour Node.js, Python, Ruby et d'autres langages majeurs, et Argon2id devient de plus en plus souvent le premier choix devant BCrypt pour le stockage des mots de passe dans les nouveaux systèmes.