Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Hash Function

general

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis