Explorer les émotions dans le texte en utilisant le modèle pré-entrainé VADER
Pourquoi MD5 et SHA‑1 ne suffisent plus?
Dans le passé, des fonctions comme MD5 ou SHA‑1 était très utilisées pour hacher les mots de passe. Ces algorithmes, bien qu’efficaces pour vérifier l’intégrité des données, ne sont plus adaptés à la sécurité des mots de passe. En effet, ils sont trop rapides et donc vulnérables aux attaques par force brute et aux rainbow tables.
Aujourd’hui, un attaquant peut tester des milliards de combinaisons par seconde avec du matériel courant, ce qui rend MD5 et SHA‑1 totalement insuffisants. C’est pourquoi il est indispensable de recourir à des algorithmes modernes comme bcrypt et Argon2 spécialement conçus pour le hachage sécurisé des mots de passe. Leur lenteur volontaire et leurs paramètres configurables (coût, mémoire, parallélisme) rendent les attaques massives beaucoup plus difficiles et protègent efficacement les utilisateurs.
Il existe également des algorithmes comme SHA‑256, plus robustes que MD5 ou SHA‑1 pour l’intégrité des données. Cependant, même SHA‑256 reste trop rapide pour le hachage des mots de passe et n’intègre pas de mécanismes de ralentissement ou de consommation mémoire.
Bcrypt et Argon2: les standards modernes du hachage
Bcrypt: ajuster le coût pour ralentir les attaques
Bcrypt est un algorithme de hachage spécialement conçu pour sécuriser les mots de passe. Contrairement à des fonctions rapides comme MD5 ou SHA‑1, bcrypt est volontairement lent et paramétrable. En effet, on peut ajuster son coût (nombre d’itérations) afin de rendre les attaques par force brute beaucoup plus coûteuses en temps et en ressources.
L'atout majeur de bcrypt est qu’il génère automatiquement un sel (salt) unique pour chaque mot de passe haché. Cela signifie que même si deux utilisateurs choisissent le même mot de passe, leurs empreintes seront différentes, rendant impossible l’utilisation de rainbow tables ou de dictionnaires pré‑calculés. Grâce à cette combinaison de lenteur volontaire et de sel intégré, bcrypt reste une solution fiable et largement adoptée pour protéger les mots de passe en PHP.
Argon2: le champion du Password Hashing Competition
Argon2 est un algorithme de hachage moderne, vainqueur du
Password Hashing Competition en 2015, conçu spécialement pour la protection des mots de passe. Sa force réside dans sa capacité à être configurable: on peut ajuster le temps de calcul, la quantité de mémoire utilisée et le degré de parallélisme. Cette flexibilité permet de rendre les attaques par force brute et par GPU/ASIC beaucoup plus coûteuses car elles nécessitent non seulement du temps mais aussi une grande quantité de mémoire.
Contrairement aux anciens algorithmes rapides (MD5, SHA‑1, même SHA‑256), Argon2 est pensé pour ralentir volontairement les attaquants et s’adapter aux évolutions matérielles.
Exemple d'implémentation de bcrypt et Argon2 en PHP
Utilisation des fonction password_hach et password_verify
En PHP, la fonction
password_hash() permet de créer un hash sécurisé d’un mot de passe en utilisant des algorithmes modernes comme bcrypt ou Argon2. Elle génère automatiquement un sel unique et applique les paramètres de sécurité (coût, mémoire, etc.) pour rendre le hachage robuste.
La fonction
password_verify(), quant à elle, sert à comparer un mot de passe saisi par l’utilisateur avec son hash stocké en base de données. Elle retourne simplement true si le mot de passe correspond, ou false sinon, garantissant une vérification fiable sans jamais exposer le mot de passe original.
Exemple d'implémentation de l'algorithme bcrypt:
<?php
$password = "MonMotDePasseSecret";
// Hachage
$hash_bcrypt = password_hash($password, PASSWORD_BCRYPT);
// Vérification
if(password_verify($password, $hash_bcrypt)){
echo "Mot de passe valide";
}
else{
echo "Mot de passe invalide";
}
?>
Exemple d'implémentation de l'algorithme Argon2:
<?php
$password = "MonMotDePasseSecret";
// Hachage
$hash_argon2 = password_hash($password, PASSWORD_ARGON2ID);
// Vérification
if (password_verify($password, $hash_argon2)){
echo "Mot de passe valide";
}
else{
echo "Mot de passe invalide";
}
?>
Avec Argon2, on peut configurer plusieurs paramètres:
- memory_cost (mémoire utilisée, ex. 1<<17 = 128 Mo)
- time_cost (nombre d’itérations)
- threads (parallélisme)
Par exemple:
$hash_argon2 = password_hash($password, PASSWORD_ARGON2ID, [
'memory_cost' => 1<<17, // 128 MB
'time_cost' => 4, // 4 itérations
'threads' => 2 // 2 threads
]);
La variante Argon2id est aujourd’hui la plus recommandée pour le hachage des mots de passe. Elle combine les avantages des deux autres versions (Argon2i résistant aux attaques par dictionnaire et Argon2d qui est plus robuste contre les attaques GPU/ASIC).