Constructions de hachage (Merkle-Damgård et éponge)
Portail > Fondamentaux
La manière dont une fonction de hachage est construite explique ses forces et ses faiblesses — notamment la vulnérabilité à l'extension de longueur. Deux grandes familles dominent : Merkle-Damgård et l'éponge.
Merkle-Damgård
Le message est découpé en blocs (après remplissage), traités séquentiellement par une fonction de compression qui mélange chaque bloc avec un état chaîné ; l'état final est le condensé.
<mermaid> flowchart LR
IV[État initial] --> C1[compression] M1[Bloc 1] --> C1 C1 --> C2[compression] M2[Bloc 2] --> C2 C2 --> C3[compression] M3[Bloc n] --> C3 C3 --> H[Condensé]
</mermaid>
(Schéma en Mermaid.)
Utilisée par MD5, SHA-1 et SHA-2.
Faiblesse structurelle : l'extension de longueur. Comme le condensé est l'état interne final, qui connaît H(m) peut calculer H(m ‖ padding ‖ extension) sans connaître m. D'où l'usage de HMAC plutôt que H(clé ‖ message).
Éponge (sponge)
La construction éponge (Keccak / SHA-3) maintient un grand état divisé en deux parties : le débit (rate) et la capacité (capacity, jamais exposée). Deux phases :
- Absorption : les blocs du message sont XORés dans le débit et brassés.
- Essorage (squeeze) : on lit le condensé depuis le débit, en brassant autant que nécessaire.
Avantages :
- Pas d'extension de longueur (la capacité n'est jamais révélée) ;
- sortie extensible (XOF) : SHAKE128/256 produisent une longueur arbitraire.
Autres constructions
- BLAKE2 : dérivé de la conception de ChaCha, robuste et rapide (BLAKE2 et BLAKE3).
- BLAKE3 : construction en arbre (Merkle), parallélisable, avec sortie extensible.
- Whirlpool : bâti autour d'un chiffrement par bloc dédié (construction de Miyaguchi-Preneel) — voir Whirlpool.
Comparaison
| Construction | Exemples | Extension de longueur |
|---|---|---|
| Merkle-Damgård | MD5, SHA-1, SHA-2 | Oui (→ HMAC) |
| Éponge | SHA-3, SHAKE | Non |
| Arbre | BLAKE3 | Non |
Points clés à retenir
- Merkle-Damgård (MD5/SHA-1/SHA-2) : compression chaînée ; sensible à l'extension de longueur → HMAC.
- Éponge (SHA-3/SHAKE) : absorption/essorage, capacité cachée → pas d'extension, sortie extensible.
- BLAKE3 : construction en arbre, parallélisable.
- La construction conditionne directement les faiblesses exploitables.
Voir aussi
- Attaques génériques sur les fonctions de hachage
- SHA-2
- SHA-3 et SHAKE
- Codes d'authentification de message (MAC et HMAC)
| Fonctions de hachage — Portail | |
|---|---|
| Fondamentaux | Principe et propriétés · Constructions · Attaques génériques |
| Algorithmes | MD5 et SHA-1 · SHA-2 · SHA-3 et SHAKE · RIPEMD-160 · Whirlpool · BLAKE2 et BLAKE3 |
| Applications | Usages · Hachage de mots de passe |