Un condensat Merkle–Damgård est l’état interne complet après le dernier bloc : un attaquant peut donc le charger et poursuivre le hachage. Si un service authentifie les requêtes avec SHA-256(secret ‖ params), quiconque voit un seul tag valide peut ajouter &admin=1 (après les octets de remplissage) et calculer un tag valide pour le message allongé. Les signatures d’API de Flickr, fondées sur MD5, sont tombées exactement ainsi en 2009.
Ne sont pas concernés : HMAC (le hachage externe masque l’état interne), SHA-3 et les fonctions SHAKE (la capacité n’est jamais produite en sortie), BLAKE2 et BLAKE3, ainsi que les variantes tronquées de SHA-2 comme SHA-384 et SHA-512/256, dont la sortie omet une partie de l’état. Les schémas de signature hachent le message avant de le signer et ne sont pas concernés.
La règle est simple : ne construisez jamais un MAC sous la forme hash(key ‖ message) avec SHA-1 ou SHA-256 ; utilisez HMAC, KMAC ou BLAKE2 avec clé.