Définition
Keccak-256 vs SHA-256 : définition
Keccak-256 et SHA-256 sont deux fonctions de hachage cryptographiques produisant une empreinte de 256 bits : Bitcoin s'appuie sur SHA-256, Ethereum sur Keccak-256, et elles donnent des résultats différents pour une même donnée.
Thème : Les bases de la crypto
Une fonction de hachage transforme n'importe quelle donnée en une empreinte de taille fixe. Il est pratiquement impossible de retrouver la donnée à partir de l'empreinte, ou de trouver deux données ayant la même. SHA-256 appartient à la famille SHA-2, standardisée par l'agence américaine NIST. Bitcoin l'utilise partout : le minage consiste à appliquer deux fois SHA-256 à l'en-tête de bloc, et les identifiants de transactions en dépendent aussi. Keccak, de son côté, est l'algorithme qui a remporté le concours ayant conduit au standard SHA-3.
Subtilité importante : Ethereum utilise Keccak-256 dans sa version d'origine, avant que le NIST n'ajuste la règle de remplissage (padding) lors de la standardisation de SHA-3. Keccak-256 et SHA3-256 donnent donc des résultats différents, même si on les confond souvent. Ethereum s'en sert pour dériver les adresses à partir des clés publiques, calculer les sélecteurs de fonctions des smart contracts ou organiser leur stockage. Ces fonctions ne sont pas interchangeables : utiliser l'une à la place de l'autre produit des adresses ou des vérifications erronées.
Un exemple concret
Imaginons qu'un développeur porte un outil de Bitcoin vers Ethereum et calcule ses empreintes avec la bibliothèque SHA-256 qu'il utilisait déjà. Les vérifications de signatures échouent toutes, et les adresses qu'il dérive ne correspondent à rien. En remplaçant la fonction par Keccak-256, et non par la bibliothèque SHA3-256 standard, tout rentre dans l'ordre.
Les risques à connaître
Le risque est surtout technique : confondre Keccak-256 et SHA3-256, ou mélanger les fonctions d'un écosystème à l'autre, peut conduire à envoyer des fonds vers des adresses inaccessibles ou à des contrats qui vérifient mal des preuves. Dans les échanges atomiques entre chaînes, il faut une fonction de hachage disponible des deux côtés.
Questions fréquentes sur Keccak-256 vs SHA-256
Keccak-256 et SHA-3, est-ce la même chose ?
Presque, mais pas exactement. Le standard SHA3-256 a modifié le remplissage de Keccak, si bien que les deux produisent des empreintes différentes ; Ethereum utilise la version Keccak d'origine.
Pourquoi Bitcoin utilise-t-il SHA-256 ?
À sa création, SHA-256 était une fonction standardisée, largement étudiée et réputée sûre. Elle sert à la fois au minage et à l'identification des blocs et des transactions.