FLIN fait ce choix pour vous. La fonction hash_password() utilise Argon2id avec des paramètres calibrés. La fonction verify_password() effectue une comparaison à temps constant. Il n'y a pas de configuration, pas de sélection d'algorithme et aucun moyen d'utiliser accidentellement MD5.
flinhash = hash_password("correct horse battery staple")
// "$argon2id$v=19$m=65536,t=3,p=4$..."
is_valid = verify_password("correct horse battery staple", hash)
// true ou falseParamètres par défaut basés sur les recommandations OWASP 2024 : 64 Mo de mémoire, 3 itérations, 4 threads parallèles, hash de 256 bits, sel de 128 bits. Hachage en environ 200 ms -- assez rapide pour les utilisateurs, assez lent pour les attaquants (~57 ans de GPU par mot de passe).
La sortie au format PHC est auto-descriptive : si nous upgratons les paramètres par défaut, verify_password peut toujours vérifier les hashs créés avec les anciens paramètres.
Ceci est la partie 107 de la série "How We Built FLIN".
Navigation de la série : - [106] Security by Design: OWASP Top 10 in the Language - [107] Argon2 Password Hashing Built Into FLIN (vous êtes ici) - [108] JWT Authentication in 3 Lines of FLIN - [109] Rate Limiting and Security Headers