Hash Function
generalDéfinition
Une fonction de hachage cryptographique est un algorithme qui transforme une entrée de taille arbitraire en une empreinte numérique (digest ou hash) de taille fixe. Cette transformation doit être déterministe (même entrée → même hash), rapide à calculer, irréversible (impossible de retrouver l'entrée à partir du hash), et résistante aux collisions (impossible de trouver deux entrées différentes produisant le même hash). Les propriétés cryptographiques des fonctions de hachage sont formalisées comme suit : résistance à la préimage (étant donné un hash H, trouver un message M tel que hash(M) = H doit être infaisable) ; résistance à la seconde préimage (étant donné un message M1, trouver M2 ≠ M1 tel que hash(M1) = hash(M2) doit être infaisable) ; résistance aux collisions (trouver deux messages M1 et M2 tels que hash(M1) = hash(M2) doit être infaisable). Les algorithmes de hachage couramment utilisés incluent : SHA-256 (256 bits, famille SHA-2, NIST standard, recommandé pour la plupart des usages) ; SHA-384 et SHA-512 (plus de bits, meilleure marge de sécurité pour le long terme) ; SHA-3/Keccak (algorithme distinct de SHA-2, résistant aux attaques par extension de longueur) ; BLAKE3 (très rapide, sécurisé, recommandé pour les applications hautes performances) ; MD5 et SHA-1 (cassés cryptographiquement, ne plus utiliser pour les signatures ou MACs, MD5 encore utilisé pour les checksums d'intégrité non critiques). Les applications des fonctions de hachage sont omniprésentes : signatures numériques (on signe le hash, pas le document entier), stockage des mots de passe (avec sel et KDF), intégrité des fichiers (checksums SHA-256 publiés avec les téléchargements), arbres de Merkle (blockchain, systèmes de fichiers Git, Certificate Transparency), déduplication des données dans les sauvegardes, et identification unique de données (fingerprinting d'images, de fichiers malveillants dans les outils antivirus). Les attaques sur les fonctions de hachage incluent les attaques d'anniversaire (birthday attacks) qui exploitent le paradoxe probabiliste pour trouver des collisions en O(2^n/2) opérations au lieu de O(2^n), et les attaques par extension de longueur (length extension attacks) qui affectent SHA-256 et SHA-512 mais pas SHA-3 ou BLAKE3.
SHA-2 vs SHA-3 vs BLAKE3 — comparaison
Les trois familles d'algorithmes modernes ont des cas d'usage différents. SHA-2 (SHA-256, SHA-512) est le standard le plus déployé, supporté universellement, et intégré dans le matériel via SHA-NI (Intel depuis Goldmont, ARM depuis ARMv8). SHA-3 (Keccak) utilise une construction éponge radicalement différente de SHA-2, résistante aux attaques par extension de longueur et théoriquement plus robuste face aux découvertes futures. BLAKE3 est l'algorithme le plus rapide (souvent 5-10x plus rapide que SHA-256 en logiciel), parallélisable, et conçu pour les usages hautes performances comme la déduplication de stockage, les merkle trees, et le hachage de fichiers volumineux. Les trois sont considérés sécurisés pour 2024+.
Hachage des mots de passe — fonctions dédiées
Les fonctions de hachage générales (SHA-256, SHA-3) ne doivent jamais être utilisées directement pour hacher les mots de passe. Elles sont trop rapides : un GPU moderne peut calculer des milliards de SHA-256 par seconde, rendant les attaques par dictionnaire et brute force triviales. Les fonctions dédiées au hachage de mots de passe sont conçues pour être lentes et nécessiter de la mémoire : bcrypt (historique, robuste, facteur de coût configurable), scrypt (intensive en mémoire), Argon2id (gagnant du Password Hashing Competition 2015, recommandé par OWASP et NIST, résistant aux GPU et ASIC grâce à sa consommation mémoire). Chaque hash doit être salé avec un sel unique et aléatoire pour prévenir les rainbow tables.
Hash dans les blockchains et arbres de Merkle
Les blockchains utilisent massivement les fonctions de hachage. Bitcoin et Ethereum utilisent SHA-256 (Bitcoin), Keccak-256 (Ethereum) pour les transactions et blocs. L'arbre de Merkle (Merkle tree) est une structure de données hiérarchique où chaque nœud parent contient le hash de ses enfants. La racine de l'arbre (Merkle root) résume de manière unique et vérifiable l'ensemble des transactions d'un bloc. Cette structure permet de vérifier l'inclusion d'une transaction dans un bloc en O(log n) opérations sans avoir à télécharger l'intégralité de la blockchain (Simplified Payment Verification, SPV). Git utilise également une structure similaire pour l'adressage de contenu des commits, blobs et trees.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h