Qu'est-ce qu'une fonction de Hash (Hachage) ?
Une fonction de hachage est un algorithme mathématique qui prend des données d'une taille variable (un mot de passe court, ou un fichier PDF entier) et les transforme en une chaîne de caractères de taille fixe (l'empreinte). C'est ce qu'on appelle un Hash.
La caractéristique principale d'un Hash est d'être à sens unique : il est mathématiquement impossible de retrouver le texte d'origine à partir du Hash (contrairement au chiffrement ou à l'encodage Base64). De plus, la moindre modification du texte d'origine changera le Hash du tout au tout.
Chiffrement (Encryption) VS Hachage (Hashing)
Le Chiffrement est conçu pour être réversible (vous fermez la porte avec une clé, vous pouvez la rouvrir avec cette même clé). Le Hachage est conçu pour vérifier l'intégrité (vous vérifiez que le mot de passe saisi donne la même empreinte que celle enregistrée dans la base de données, sans jamais connaitre le mot de passe réel).
Quel algorithme choisir aujourd'hui ?
- MD5 et SHA-1 : Ne les utilisez PLUS JAMAIS pour stocker des mots de passe. Avec la puissance des ordinateurs actuels, ils sont victimes d'attaques par collision. Ils ne servent plus qu'à vérifier l'intégrité d'un fichier téléchargé.
- SHA-256 / SHA-512 : C'est la norme actuelle (famille SHA-2). Ces algorithmes sont utilisés par le protocole HTTPS, la blockchain Bitcoin, et pour sécuriser des données gouvernementales.
- Note : Pour stocker des mots de passe en base de données, utilisez des algorithmes conçus pour être lents par conception, comme Bcrypt ou Argon2.