cryptography blockchain ethereum bitcoin hashing ecdsa

Cryptographie blockchain : maîtriser Keccak-256, secp256k1 et les arbres de Merkle

Une plongée technique dans les primitives cryptographiques de la blockchain. Explorez Keccak-256, RIPEMD-160, HASH160, la courbe secp256k1, les signatures ECDSA et le rôle des arbres de Merkle dans l'intégrité des données.

2026-04-12

Le socle de la décentralisation

La cryptographie est le « crypto » dans cryptomonnaie. Elle fournit les garanties mathématiques de sécurité, de propriété et d'immuabilité qui permettent aux réseaux décentralisés de fonctionner sans autorité centrale.

Dans ce guide, nous explorerons les algorithmes cryptographiques spécifiques utilisés par les principales blockchains comme Bitcoin et Ethereum. Nous examinerons pourquoi certains choix ont été faits, en quoi ils diffèrent de la cryptographie web standard et comment ils collaborent pour sécuriser des milliards de dollars d'actifs.


1. Stratégies de hachage : le double hachage de Bitcoin et HASH160

Bitcoin utilise le hachage pour tout, du minage à la génération d'adresses. Cependant, il utilise rarement un simple hachage SHA-256.

Double SHA-256 (SHA-256d)

La plupart des opérations dans Bitcoin, y compris la Proof of Work et la construction des identifiants de bloc, utilisent deux fois le SHA-256.

  • Formule : SHA256(SHA256(Données))
  • Raisonnement : Satoshi Nakamoto a implémenté cela principalement comme défense contre les attaques par extension de longueur, qui étaient une préoccupation théorique pour la construction de Merkle-Damgård à l'époque.

HASH160 : efficacité de l'espace

Pour générer des adresses, Bitcoin utilise le HASH160.

  • Formule : RIPEMD160(SHA256(CléPublique))
  • Raisonnement : RIPEMD-160 produit un hachage de 20 octets (160 bits), ce qui est plus court que le SHA-256 (32 octets). Cela permet d'économiser de l'espace critique dans l'ensemble UTXO et sur la blockchain tout en maintenant un niveau de sécurité adapté à l'identification des adresses.

2. Keccak-256 d'Ethereum : le « vrai » SHA-3

Ethereum a choisi le Keccak-256 comme fonction de hachage principale. C'est souvent une source de confusion car le Keccak-256 est le gagnant du concours NIST SHA-3, mais il n'est pas exactement identique à la norme finale FIPS 202 SHA-3-256.

Keccak-256 vs NIST SHA-3-256

Pendant le processus de normalisation, le NIST a apporté des modifications mineures au remplissage (padding) de Keccak.

  • Keccak-256 : utilise le remplissage 0x01.
  • NIST SHA-3-256 : utilise le remplissage 0x06.

Comme Ethereum a été construit alors que Keccak était encore en cours de normalisation, il utilise le Keccak-256 original. Cela signifie qu'un générateur de hachage SHA-3-256 standard produira un résultat différent d'un générateur de hachage Keccak-256. Pour les développeurs Ethereum, l'utilisation de la version correcte est vitale pour calculer les signatures de fonction et les racines de Merkle.


3. La courbe secp256k1 et les signatures ECDSA

Bitcoin et Ethereum utilisent tous deux l'algorithme de signature numérique à courbe elliptique (ECDSA) pour signer les transactions, spécifiquement sur la courbe secp256k1.

Pourquoi secp256k1 ?

Alors que la plupart des normes web (comme TLS) utilisent des courbes NIST (par ex. P-256), la communauté blockchain préfère la secp256k1.

  • Courbe de Koblitz : c'est une courbe de « Koblitz », qui permet un calcul plus efficace (multiplication scalaire) que les courbes non-Koblitz.
  • Pas de « portes dérobées » : il existe des craintes que les courbes NIST puissent contenir des « portes dérobées » cachées en raison de la manière dont leurs paramètres ont été choisis. Les paramètres de la secp256k1 ont été choisis de manière plus transparente et déterministe.

Lorsque vous signez une transaction, vous utilisez votre clé privée et l'ECDSA pour produire une signature $(r, s)$. Le réseau utilise la courbe secp256k1 et votre clé publique pour vérifier que la signature est valide.


4. Arbres de Merkle et racines de Merkle

Un arbre de Merkle (ou arbre de hachage) est une structure utilisée pour résumer et vérifier efficacement l'intégrité de grands ensembles de données.

Comment ça marche

  1. Feuilles : chaque transaction d'un bloc est hachée.
  2. Nœuds : les hachages sont regroupés par paires et hachés à nouveau de manière récursive.
  3. Racine : le hachage unique final au sommet est la racine de Merkle (Merkle Root).

La racine de Merkle dans l'en-tête du bloc

La racine de Merkle est incluse dans l'en-tête du bloc. Si un seul bit d'une seule transaction est modifié, l'ensemble de l'arbre de Merkle change, ce qui entraîne une racine de Merkle différente. Cela permet aux clients de « vérification simplifiée des paiements » (SPV) de vérifier qu'une transaction fait partie d'un bloc sans télécharger toute la blockchain.

Un calculateur d'arbre de Merkle est essentiel pour valider les en-têtes de bloc et prouver l'inclusion d'une transaction.


5. Comparaison : algorithmes de hachage et de signature

Protocole Hachage principal Courbe de signature Hachage d'adresse
Bitcoin SHA-256d secp256k1 HASH160
Ethereum Keccak-256 secp256k1 Keccak-256 (20 derniers octets)
Solana SHA-256 Ed25519 Clé publique Base58
Polkadot Blake2b Ed25519/sr25519 SS58

FAQ : cryptographie blockchain

Q : Le Keccak-256 est-il plus sûr que le SHA-256 ?

R : Les deux sont considérés comme cryptographiquement sûrs. Keccak (construction en éponge) est naturellement résistant aux attaques par extension de longueur, tandis que le SHA-256 (Merkle-Damgård) nécessite l'astuce du « double hachage » pour obtenir une résistance similaire.

Q : Pourquoi ne pas utiliser l'Ed25519 pour tout ?

R : L'Ed25519 est plus rapide et plus sûr que l'ECDSA/secp256k1. Cependant, lorsque Bitcoin et Ethereum ont été créés, l'Ed25519 était relativement nouveau et n'était pas aussi largement éprouvé ou pris en charge par le matériel que l'ECDSA. Les chaînes plus récentes comme Solana et Cardano utilisent l'Ed25519.

Q : Qu'est-ce qu'une « collision » ?

R : Une collision se produit lorsque deux entrées différentes produisent la même sortie de hachage. Pour le Keccak-256 ou le SHA-256, trouver une collision est informatiquement impossible avec la technologie actuelle.

Q : Comment est calculé le hachage d'une transaction ?

R : Généralement en hachant les données de transaction sérialisées. Dans Bitcoin, c'est SHA256d(tx_data). Dans Ethereum, c'est Keccak256(rlp_encoded_tx).


Conclusion

La cryptographie blockchain est une suite d'algorithmes soigneusement sélectionnés conçus pour une sécurité, une efficacité et une transparence élevées. De l'efficacité de la secp256k1 à la construction unique en éponge du Keccak-256, ces primitives sont ce qui rend possible la confiance décentralisée. Pour tout développeur travaillant dans ce domaine, comprendre ces fondements n'est pas seulement un exercice académique, c'est la clé pour construire des applications décentralisées sûres et compatibles.