Tous les articles

Argon2 : pourquoi cet algorithme a remporté le concours de hachage de mots de passe

Argon2 est, à quelques kilomètres de la frontière française, une création largement luxembourgeoise : l'équipe gagnante du Password Hashing Competition 2015 — Alex Biryukov, Daniel Dinu et Dmitry Khovratovich — travaillait au sein du laboratoire de cryptologie de l'Université du Luxembourg. L'ANSSI, l'agence française de cybersécurité, recommande aujourd'hui Argon2id dans son guide sur le stockage des mots de passe, aux côtés de bcrypt et PBKDF2, mais avec une préférence marquée pour ses propriétés memory-hard.

Pourquoi la mémoire compte autant que le temps

Bcrypt et PBKDF2 se contentent de ralentir le calcul. Argon2 oblige en plus chaque tentative à réserver une quantité configurable de RAM — c'est ce qu'on appelle une fonction memory-hard. Une ferme de GPU louée dans le cloud parallélise des calculs simples à très bas coût, mais paralléliser l'accès simultané à beaucoup de mémoire coûte bien plus cher : contrairement aux cœurs de calcul, la mémoire est physiquement limitée sur chaque carte.

Trois variantes : d, i, id

  • Argon2d — l'accès mémoire dépend du mot de passe lui-même, offrant la résistance maximale face au GPU mais une exposition théorique aux attaques par canal auxiliaire.
  • Argon2i — l'accès mémoire est indépendant du mot de passe, ce qui ferme cette faille au prix d'une résistance légèrement moindre au GPU.
  • Argon2id — combine les deux stratégies à différentes phases du calcul. C'est la variante recommandée par la RFC 9106 et utilisée par défaut dans la plupart des frameworks.

Trois paramètres indépendants

Contrairement au facteur de coût unique de bcrypt, Argon2 permet de régler séparément la mémoire, les itérations et le parallélisme. C'est utile en pratique : une fonction serverless à mémoire limitée peut compenser en augmentant les itérations, tandis qu'un serveur d'authentification dédié disposant de RAM en abondance peut faire l'inverse.

Pourquoi c'est utile

  • Choisir un algorithme moderne pour un nouveau système d'authentification plutôt que MD5 ou un simple SHA-256.
  • Comprendre pourquoi Argon2 renchérit spécifiquement les attaques menées sur du matériel de minage de cryptomonnaies loué.
  • Planifier une migration depuis bcrypt ou PBKDF2 dans le cadre d'un audit de sécurité.

Le piège du parallélisme

Le parallélisme ressemble à un gain gratuit — plus de threads, hachage plus rapide sur un serveur multicœur. Mais un attaquant disposant du même matériel multicœur obtient exactement le même gain de vitesse à chaque tentative. Régler le parallélisme sur le nombre réel de cœurs du serveur est sûr ; l'augmenter « par précaution » ne fait qu'offrir à l'attaquant une remise proportionnelle.

Essayer l'outil