ObjectifCyber

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.
AlgorithmeTaille du hashStatut sécuritéUsages
MD5128 bits (32 hex)⚠️ Compromis (collisions)Checksums non-sécurisés uniquement
SHA-1160 bits⚠️ Déprecié (collisions)Legacy uniquement
SHA-256256 bits (64 hex)✅ RecommandéIntégrité de fichiers, TLS, bitcoin
SHA-3Variable (224-512 bits)✅ RecommandéAlternative à SHA-2 (algorithme différent)
BLAKE2/BLAKE3Variable✅ Moderne, rapideChecksums haute performance

Propriétés requises d'un bon hash cryptographique :

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.

1. Qu'est-ce qu'une "collision" dans le contexte des fonctions de hachage ?

Collision = H(A) = H(B) avec A ≠ B. Une bonne fonction de hash doit être résistante aux collisions (infaisable de trouver deux inputs différents avec le même output). MD5 et SHA-1 ont des collisions pratiques démontrées (attaques SHAttered pour SHA-1 en 2017). Conséquence : on peut créer de faux documents avec le même hash qu'un document légitime.

2. Un administrateur télécharge une mise à jour de firmware pour un routeur. Pour vérifier que le fichier n'a pas été corrompu ou modifié, il devrait :

Vérification d'intégrité via hash : calculer SHA-256 du fichier téléchargé → comparer avec le hash publié par le fabricant. Si identiques : fichier intact (non corrompu pendant le téléchargement, non modifié par un attaquant). Les antivirus ne détectent pas les modifications de firmware légitimes altérées.

3. Un "salt" dans le stockage des mots de passe est utilisé pour :

Salt = valeur aléatoire unique générée pour chaque utilisateur et ajoutée au mot de passe avant hachage. Même si deux utilisateurs ont "password123", leurs hashes seront différents. Rend les rainbow tables inutiles (les tables préexistantes ne correspondent plus aux hashes saltés). Le salt est stocké en clair à côté du hash.

4. Parmi les algorithmes suivants, lequel est recommandé pour hacher les mots de passe en base de données ?

bcrypt (et Argon2, scrypt, PBKDF2) sont conçus SPÉCIFIQUEMENT pour les mots de passe. Ils sont délibérément LENTS (coût ajustable) pour résister aux attaques par force brute. SHA-256 est rapide (bon pour l'intégrité) mais mauvais pour les mots de passe (un GPU peut calculer milliards de hashes/sec). MD5 et SHA-1 sont compromis.

5. HMAC (Hash-based Message Authentication Code) offre :

HMAC = Hash + clé secrète partagée. Intégrité : le hash détecte toute modification. Authenticité : seul quelqu'un possédant la clé secrète peut générer un HMAC valide. Pas de confidentialité (les données ne sont pas chiffrées). Utilisé dans JWT (signature des tokens), IPsec (AH), TLS (dans les record MAC).

6. L'"effet avalanche" dans une fonction de hachage signifie que :

Effet avalanche = propriété essentielle d'une bonne fonction de hash. Exemple SHA-256 : "hello" → abc...xyz. "hello." (avec un point) → 1f3...890 (complètement différent). Cela empêche les attaques qui essayent de déduire l'input original en observant des hashes similaires. Critique pour la sécurité des systèmes de signatures.

7. FIM (File Integrity Monitoring) utilise le hachage pour :

FIM (Tripwire, AIDE, OSSEC) = calcule et stocke les hashes des fichiers système critiques (/bin, /etc, fichiers Windows system32). Surveillance régulière : si un hash change, une alerte est déclenchée. Détecte les rootkits qui modifient les exécutables système, les malwares persistants, et les modifications non autorisées.

8. Pourquoi MD5 n'est-il plus recommandé pour les usages de sécurité ?

MD5 a des collisions pratiques démontrées depuis les années 2000. Des chercheurs ont créé deux fichiers différents (ex: deux certificats SSL) avec le même hash MD5. En 2008 : faux certificat CA créé exploitant une collision MD5. Résultat : MD5 est inutilisable pour les signatures numériques, certificats, ou toute vérification d'intégrité sécurisée.

9. Un "rainbow table" est :

Rainbow table = attaque de craquage de mots de passe. Précalcule des millions/milliards de couples (mot_de_passe → hash). Pour cracker : chercher le hash dans la table → trouver le mot de passe. Contre-mesure : SALT. Un salt unique par utilisateur rend les rainbow tables inutilisables car elles ne contiennent pas de hashes saltés.

10. Le "key stretching" (PBKDF2) consiste à :

Key stretching (PBKDF2 = Password-Based Key Derivation Function 2) : applique HMAC-SHA256 un grand nombre d'itérations (ex: 100 000 fois). Le processus légitime (vérification d'un seul mot de passe) reste rapide. Mais les attaques par force brute (millions de tentatives) deviennent des millions de fois plus lentes. Le nombre d'itérations est ajustable selon la puissance disponible.