RIPEMD-160
RIPEMD-160 est une fonction de hachage produisant un condensat de 160 bits. Bitcoin l'utilise après SHA-256 pour générer des adresses (HASH160). Elle est moins répandue que SHA-2 mais résistante aux collisions. Son intérêt : produire des adresses plus courtes que SHA-256 seul.
Origine
RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest, 160 bits) a été conçu en 1996 à l'Université KU Leuven (Belgique) par Hans Dobbertin, Antoon Bosselaers et Bart Preneel. Il s'inscrit dans le projet européen RIPE et a été pensé comme alternative ouverte aux fonctions américaines de NIST (SHA-1, SHA-2). Sa structure interne dérive de MD4.
Caractéristiques techniques
| Paramètre | Valeur | |-----------|--------| | Sortie | 160 bits / 20 octets | | Taille de bloc | 512 bits | | Rounds | 80 (deux pipelines parallèles de 5×16) | | Sécurité collision | ~2⁸⁰ (théorique), pas de collision pratique connue | | Sécurité préimage | ~2¹⁶⁰ |
Contrairement à SHA-1 (cassé en collisions en 2017), RIPEMD-160 résiste toujours en pratique. Aucune collision n'a été publiée.
Usage dans Bitcoin
Bitcoin utilise RIPEMD-160 en combinaison avec SHA-256 dans la primitive HASH160 :
HASH160(x) = RIPEMD-160(SHA-256(x))
Cette double primitive sert à :
- Générer les adresses P2PKH :
HASH160(pubkey)→ préfixe1.... - Générer les adresses P2SH :
HASH160(redeemScript)→ préfixe3.... - L'output P2WPKH SegWit v0 : 20 octets directement issus de HASH160.
Le choix d'enchaîner les deux fonctions est une "défense en profondeur" : même si l'une d'elles présentait une faiblesse, l'autre tiendrait. C'est une décision de design de Satoshi sans équivalent dans les autres protocoles.
Pourquoi 160 bits
Avec 160 bits, on a 2¹⁶⁰ ≈ 1.46 × 10⁴⁸ adresses possibles, suffisamment pour exclure tout risque de collision en pratique. Une adresse Bitcoin compressée tient en 25 octets (un préfixe + 20 octets de hash + 4 octets de checksum), encodée en Base58Check en ~34 caractères. Avec un hash de 256 bits, l'adresse serait plus longue, sans gain de sécurité utile.
Évolution avec SegWit et Taproot
- P2WPKH : continue à utiliser HASH160 (20 octets).
- P2WSH : utilise SHA-256 simple (32 octets, plus de RIPEMD-160).
- P2TR (Taproot) : abandonne complètement RIPEMD-160 ; l'output est la pubkey tweakée directement.
RIPEMD-160 reste donc gravé dans Bitcoin pour les adresses legacy et SegWit v0, mais disparaît de la nouvelle génération.
À retenir
RIPEMD-160 est un héritage européen précieux de la cryptographie des années 1990, choisi par Satoshi pour sa robustesse et son indépendance vis-à-vis du NIST. Il restera dans Bitcoin tant que des adresses P2PKH et P2WPKH circuleront.
Termes lies
- Fonction de hachageUne fonction de hachage transforme une entrée de taille arbitraire en une sortie de taille fixe (le condensat). Elle est déterministe, à sens unique et résistante aux collisions. Bitcoin utilise principalement SHA-256 et RIPEMD-160. Le hachage est au cœur du minage, des adresses et des arbres de Merkle.
- HASH160HASH160 désigne l'application successive de SHA-256 puis RIPEMD-160 sur une donnée. Bitcoin l'utilise pour transformer une clé publique en hash de clé publique, base des adresses P2PKH et P2SH. Le résultat fait 160 bits (20 octets), gage d'adresses compactes. C'est l'un des piliers du modèle d'adressage classique.
- P2PKHP2PKH (Pay-to-Public-Key-Hash) est le format historique d'adresse Bitcoin (préfixe 1...). Le script verrouille les fonds sur le HASH160 de la clé publique. Il dévoile la clé publique uniquement à la dépense. Toujours valide mais peu utilisé sur les nouveaux wallets.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.