MD5
Créé en 1991 par Ronald Rivest (MIT)•128 bits (32 hex)
⚠️ DANGER CRITIQUE - NE PLUS UTILISER
MD5 est cryptographiquement cassé depuis 2004 avec des vulnérabilités collision connues. Migration urgente requise vers SHA-256 minimum. Coût d'attaque : moins de 1$ sur AWS.
Fiche Technique
Histoire et Contexte
Genèse et Développement (1991)
MD5 fut développé par Ronald Rivest au MIT en 1991 comme successeur de MD4, lui-même créé en 1990. L'objectif était de corriger les faiblesses de sécurité découvertes dans MD4 tout en conservant des performances acceptables pour l'époque.
Motivations Originales
Adoption Massive (1990s-2000s)
MD5 connut un succès phénoménal et devint le standard de facto pour :
Vulnérabilités Critiques
Attaques par Collision (2004-2005)
critiquePremière collision pratique démontrée par Xiaoyun Wang
Complexité réduite à 2^39 opérations, collision en quelques heures
Attaques Préfixe Choisi (2007)
critiqueCréation de fichiers malveillants avec hash identique
Applications: certificats SSL falsifiés, malware Flame (2012)
Rainbow Tables
élevéTables précalculées de correspondances hash-password
Récupération de mots de passe faibles en quelques secondes
Force Brute GPU (2024)
critiqueGPU modernes: 50+ milliards de hash MD5/seconde
ASIC spécialisés: 200+ milliards/seconde, attaques cloud distribuées
Coûts d'Attaque (2024)
| Méthode d'Attaque | Coût Estimé | Temps |
|---|---|---|
| Collision simple | $0.65 | 1 minute (AWS) |
| Rainbow tables | $0 | Instantané |
| Brute force 8 chars | $10 | 1 heure |
| Préfixe choisi | $100 | 1 jour |
💡 Note : Ces coûts ridiculement bas démontrent pourquoi MD5 ne doit plus jamais être utilisé pour des applications de sécurité en 2024.
Exemples d'Implémentation (À des fins éducatives uniquement)
Ces exemples sont fournis uniquement à des fins éducatives et de migration. N'utilisez JAMAIS MD5 pour de nouvelles applications.
Node.js
const crypto = require('crypto');
const hash = crypto.createHash('md5')
.update('hello world')
.digest('hex');
console.log(hash); // 5d41402abc4b2a76b9719d911017c592
// Exemple avec fichier
const fs = require('fs');
const fileBuffer = fs.readFileSync('fichier.txt');
const fileHash = crypto.createHash('md5')
.update(fileBuffer)
.digest('hex');Python
import hashlib
# Hash simple
text = "hello world"
hash_object = hashlib.md5(text.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig) # 5d41402abc4b2a76b9719d911017c592
# Hash de fichier
import hashlib
with open('fichier.txt', 'rb') as f:
file_hash = hashlib.md5()
while chunk := f.read(8192):
file_hash.update(chunk)
print(file_hash.hexdigest())Audit et Détection
# Recherche d'usage MD5 dans le code
grep -r "md5|MD5" /path/to/code/
# Analyse des certificats
openssl x509 -text -in cert.pem | grep "Signature Algorithm"
# Vérification des hash de fichiers
find . -name "*.md5" -o -name "*md5sum*"Alternatives Recommandées
SHA-256
RecommandéStandard industrie, Bitcoin, TLS, blockchain
Argon2
Moderne - 2024Champion Password Hashing, résistant GPU/ASIC
bcrypt
FiableStandard industrie mots de passe, coût adaptatif
SHA-3 (Keccak)
ModerneStandard NIST récent, construction différente
Migration immédiate vers SHA-256 pour le hachage général,Argon2 ou bcrypt pour les mots de passe. Consultez notre guide de migration pour une transition sécurisée.
Conclusion et Recommandations
Verdict 2024 : MD5 EST MORT
MD5 ne doit plus jamais être utilisé pour les applications de sécurité, l'authentification, l'intégrité cryptographique, ou les signatures numériques.
❌ Usages interdits :
- • Stockage de mots de passe
- • Signatures numériques
- • Certificats SSL/TLS
- • Authentification
- • Génération de clés crypto
✅ Seuls usages acceptables :
- • Checksums non-cryptographiques
- • Identifiants uniques non-critiques
- • Applications legacy en migration
- • Déduplication de données
Plan d'Action Immédiat
MD5 restera dans l'histoire comme un pionnier précieux mais dangereusement obsolète. Sa rapidité ne justifie plus jamais son utilisation face aux risques de sécurité critiques qu'il représente en 2024.