Chapitre 10 — Hachage, Intégrité & Mots de Passe
La cryptographie est l'outil fondamental de la sécurité. Ce module couvre les fonctions de hachage (MD5, SHA), leur utilisation pour l'intégrité et le stockage des mots de passe.
Mémorisez ! Le hachage est unidirectionnel — impossible de retrouver la donnée originale depuis le hash. Le même input produit toujours le même hash (déterministe). Une petite modification de l'input produit un hash complètement différent (effet avalanche). Le hash a toujours la même longueur, quel que soit la taille de l'input.
| Algorithme | Taille du hash | Statut sécurité | Usages |
|---|---|---|---|
| MD5 | 128 bits (32 hex) | ⚠️ Compromis (collisions) | Checksums non-sécurisés uniquement |
| SHA-1 | 160 bits | ⚠️ Déprecié (collisions) | Legacy uniquement |
| SHA-256 | 256 bits (64 hex) | ✅ Recommandé | Intégrité de fichiers, TLS, bitcoin |
| SHA-3 | Variable (224-512 bits) | ✅ Recommandé | Alternative à SHA-2 (algorithme différent) |
| BLAKE2/BLAKE3 | Variable | ✅ Moderne, rapide | Checksums haute performance |
Propriétés requises d'un bon hash cryptographique :
- Résistance à la préimage : impossible de retrouver l'input depuis le hash.
- Résistance aux collisions : impossible de trouver deux inputs différents qui donnent le même hash.
- Effet avalanche : un changement minime de l'input produit un hash radicalement différent.
- Déterminisme : le même input donne toujours le même hash.
- Vérification de fichiers : calculer le hash d'un fichier téléchargé et comparer avec le hash publié. Si identiques = fichier intact (non corrompu, non modifié).
- HMAC (Hash-based Message Authentication Code) : combine un hash avec une clé secrète. Assure à la fois l'intégrité (hash) ET l'authenticité (clé). Utilisé dans JWT, HTTPS, IPsec.
- Signature numérique : hash du document chiffré avec la clé privée de l'émetteur. Assure intégrité + non-répudiation + authenticité.
- Code de hachage dans les téléchargements : les sites de logiciels publient les hashes SHA-256 pour permettre aux utilisateurs de vérifier les fichiers.
- Tripwire / FIM (File Integrity Monitoring) : surveille les changements de fichiers système en comparant les hashes actuels aux valeurs de référence. Détecte les rootkits et modifications non autorisées.
Astuce Examen
Les mots de passe ne doivent JAMAIS être stockés en clair. Ne jamais utiliser MD5 ou SHA-1 directs pour les mots de passe (trop rapides = craquage facile). Utiliser des algorithmes de hachage de mots de passe LENTS : bcrypt, Argon2, scrypt, ou PBKDF2. Ces algorithmes intègrent un salt et sont délibérément lents pour ralentir les attaques par force brute.
- Salt : valeur aléatoire unique ajoutée au mot de passe avant hachage. Empêche les attaques par rainbow table (le même mot de passe donne un hash différent pour chaque utilisateur).
- Pepper : valeur secrète globale (en plus du salt) ajoutée avant hachage. Stockée séparément de la base de données — un attaquant qui vole la DB sans le pepper ne peut pas cracker les hashes.
- Rainbow Table : table précalculée de mots de passe → hashes. Rendue inefficace par le salt (car le salt rend chaque hash unique même pour le même mot de passe).
- Algorithmes dédiés aux mots de passe :
- bcrypt : intègre le salt automatiquement, facteur de coût ajustable (work factor).
- Argon2 : gagnant de la Password Hashing Competition 2015. Résistant aux GPU et aux ASICs.
- PBKDF2 : applique un hash (ex: SHA-256) N fois (key stretching). Recommandé par NIST.
- scrypt : mémoire-intensif, résistant aux ASICs.