keccak

L’algorithme Keccak est une fonction de hachage qui compresse des données arbitraires en une empreinte de longueur fixe et constitue le fondement du standard SHA-3 adopté par le NIST. Il est couramment utilisé dans Ethereum pour la génération d’adresses, les sélecteurs de fonctions de contrats et les logs d’événements. Keccak repose sur une architecture « éponge », mélangeant les données via des phases d’absorption et d’extraction, associées à 24 cycles de permutation. Cette conception permet différentes longueurs de sortie, conciliant sécurité et performance.
Résumé
1.
Keccak est une fonction de hachage cryptographique choisie comme base pour la norme SHA-3.
2.
La blockchain Ethereum utilise l’algorithme Keccak-256 pour générer des adresses et des hachages de transactions.
3.
Keccak adopte une conception dite de « sponge construction », offrant une sécurité élevée et des longueurs de sortie flexibles.
4.
Comparé aux algorithmes SHA-2 traditionnels, Keccak offre une résistance accrue aux collisions et des avantages en termes de performance.
keccak

Qu’est-ce que l’algorithme Keccak ?

L’algorithme Keccak désigne une famille de fonctions de hachage cryptographiques permettant de transformer des données d’entrée de toute taille en une empreinte numérique de longueur fixe. Il constitue le socle du standard SHA-3 et s’impose comme une référence dans les applications blockchain.

Une fonction de hachage fonctionne comme une « machine à empreintes » : une même entrée produit systématiquement la même sortie, mais il est pratiquement impossible de retrouver l’entrée initiale à partir de la sortie seule. Keccak autorise différentes longueurs de sortie, le format 256 bits (Keccak-256) étant le plus répandu. Ce format fixe facilite la vérification, l’indexation et les contrôles de cohérence.

Pourquoi Keccak est-il essentiel dans le Web3 ?

Keccak joue un rôle central en tant que « machine à empreintes » pour des systèmes comme Ethereum, où il sous-tend des opérations clés telles que la génération d’adresses, la sélection des fonctions des smart contracts et l’indexation des journaux d’événements.

Par exemple, sur les plateformes comme Gate, lors d’un dépôt d’ETH, l’adresse commençant par « 0x » est générée en hachant la clé publique avec Keccak-256 puis en sélectionnant les 20 derniers octets. Pour les appels de contrat, le sélecteur de fonction est obtenu en appliquant Keccak-256 à la signature de la fonction et en extrayant les 4 premiers octets. Les journaux d’événements exploitent Keccak pour produire des topics et accélérer la recherche.

Comment fonctionne l’algorithme Keccak ?

Keccak repose sur une « construction éponge ». Comme une éponge, il « absorbe » d’abord les données d’entrée pour mélanger l’état interne, puis « essore » la sortie de hachage désirée.

Étape 1, Absorption : Le message d’entrée est découpé en blocs, qui sont XORés dans la « zone inscriptible » de l’état—à l’image de l’eau absorbée par une éponge qui s’intègre à l’état.

Étape 2, Permutation : Une fonction de permutation (Keccak-f) opère sur plusieurs cycles pour mélanger les bits de l’état. Ce « shuffle » réversible s’exécute généralement sur 24 tours pour Keccak-f[1600].

Étape 3, Essorage : La sortie est extraite de la « zone lisible » de l’état. Pour des sorties plus longues, il faut appliquer des permutations supplémentaires avant d’extraire davantage de données—comme essorer une éponge pour obtenir plus d’eau.

Avec les paramètres de Keccak-256, l’état interne totalise 1 600 bits, répartis en un débit (zone lecture/écriture) de 1 088 bits et une capacité (tampon de sécurité) de 512 bits. Plus la capacité est élevée, plus la sécurité est renforcée.

Comment Keccak est-il utilisé dans Ethereum ?

Quatre usages principaux de Keccak dans Ethereum : la génération d’adresses, les sélecteurs de fonctions, les topics d’événements et l’indexation des structures de données.

  • Génération d’adresse : Une adresse Ethereum est obtenue en appliquant Keccak-256 à la clé publique et en sélectionnant les 20 derniers octets pour l’adresse préfixée « 0x ». Les adresses de dépôt sur Gate sont générées ainsi. Certains formats de checksum utilisent aussi Keccak pour la vérification de la casse.
  • Sélecteurs de fonctions : La signature textuelle d’une fonction (ex. : « transfer(address,uint256) ») est hachée avec Keccak-256, puis les 4 premiers octets servent de sélecteur. Le sélecteur « 0xa9059cbb » est issu de cette règle.
  • Topics d’événements : Le nom de l’événement et les types de paramètres sont concaténés puis hachés avec Keccak-256 pour produire un topic. Cela permet une recherche rapide et efficace des événements on-chain.
  • Indexation des structures de données : Dans les arbres d’état ou les clés de mapping, Keccak-256 sert à hacher les clés pour limiter les collisions et accélérer les requêtes.

Quelle différence entre Keccak et SHA3 ?

La distinction principale entre Keccak et SHA3 réside dans leurs paramètres de padding (« séparation de domaine »). SHA3-256 utilise le suffixe 0x06, alors que Keccak-256 courant dans Ethereum utilise 0x01.

Conséquence : des entrées identiques produisent des sorties différentes selon Keccak-256 ou SHA3-256. En développement ou en audit, il est impératif de vérifier si l’on utilise « Keccak-256 » ou « SHA3-256 »—ces fonctions ne sont pas interchangeables. Lors de la standardisation SHA-3 par le NIST en 2015, ce changement de séparation de domaine a été introduit (source : NIST, 2015).

Comment bien utiliser Keccak en développement ?

Première étape : Déterminez si votre entrée est en bytes ou en texte. Pour une chaîne de caractères, encodez toujours en UTF-8 ; pour une chaîne hexadécimale, convertissez-la en bytes bruts sans inclure le préfixe « 0x » dans les données.

Deuxième étape : Sélectionnez la fonction adéquate. Dans l’EVM, keccak256 (Keccak-256) est la référence. Certaines bibliothèques nomment SHA3-256 « sha3 »—vérifiez la documentation et les versions pour éviter toute confusion.

Troisième étape : Validez les résultats par recoupement. Utilisez deux bibliothèques ou outils indépendants pour calculer les hachages et vérifiez leur concordance ; des sélecteurs connus comme « transfer(address,uint256) » donnant « 0xa9059cbb » servent de test.

Considérez les hachages comme des empreintes irréversibles dans vos processus—ils ne servent ni au chiffrement ni à la génération de nombres aléatoires. Pour contrer les attaques par table arc-en-ciel, ajoutez systématiquement un salt aléatoire avant le hachage et hachez l’ensemble salt et données.

Quels sont les risques et pièges courants avec Keccak ?

Trois écueils principaux : différences de padding, erreurs d’encodage, et mauvaise utilisation dans les applications.

  • Différences de padding : Utiliser Keccak-256 à la place de SHA3-256 produit des résultats distincts, ce qui peut entraîner des adresses ou sélecteurs non valides—risque de perte de fonds ou d’échec d’appel de contrat.
  • Erreurs d’encodage : Confondre texte et hexadécimal modifie complètement le résultat du hachage. Standardisez vos stratégies d’encodage en développement et couvrez les cas limites dans vos tests.
  • Mauvaise utilisation : Le hachage ne remplace pas le chiffrement. Stocker des données sensibles après un hachage unique reste vulnérable aux attaques par dictionnaire. Ajoutez toujours un salt aléatoire et contrôlez les politiques d’accès. Pour la sécurité financière (ex. : reconnaissance des dépôts on-chain sur Gate), effectuez des tests et audits approfondis avant le lancement.

Keccak : sécurité et efficacité

La sécurité de Keccak repose sur sa construction éponge et son paramètre de capacité. Pour Keccak-256, la résistance aux collisions est d’environ 2^128 opérations ; la résistance à la pré-image atteint environ 2^256 opérations.

Au 01 janvier 2025, aucune attaque pratique de collision ou de pré-image n’a été recensée sur les paramètres standards ; la recherche cible surtout des variantes à nombre de tours réduit ou des limites théoriques. Côté performance, les bibliothèques majeures intègrent des implémentations CPU/GPU optimisées pour un haut débit ; l’accélération matérielle (ASIC, etc.) progresse pour les usages intensifs.

Perspectives d’avenir pour Keccak

Keccak restera un pilier de la sécurité des systèmes, au cœur de SHA-3 ; dans l’écosystème EVM, il demeure fondamental pour les adresses, sélecteurs et l’indexation des logs. Avec la montée de l’accélération matérielle et l’amélioration des bibliothèques, performance et outils continueront d’évoluer. Certains nouveaux usages (notamment les zero-knowledge proofs) pourraient adopter des hachages alternatifs comme Poseidon, sans remettre en cause la stabilité de Keccak pour l’empreinte et l’indexation généralistes. Pour les développeurs, il suffit de distinguer Keccak-256 de SHA3-256 et de gérer rigoureusement encodage et tests pour garantir la fiabilité de Keccak comme outil bas niveau.

FAQ

Je souhaite générer une adresse de portefeuille avec Keccak : par où commencer ?

Sur Ethereum, Keccak-256 sert à générer les adresses de compte—en hachant la clé publique avec Keccak-256 puis en sélectionnant les 20 derniers octets comme adresse. Si vous utilisez Gate ou une application de portefeuille, ce processus est automatisé ; pour le développement de smart contracts, exploitez la fonction keccak256() de Solidity. Testez d’abord des bibliothèques comme Web3.js pour observer comment le hachage convertit des données de longueur variable en résultats fixes de 256 bits.

Pourquoi différents outils produisent-ils des résultats de hachage Keccak différents ?

Cela provient le plus souvent de différences d’encodage des données d’entrée. Keccak-256 attend des données en bytes—lorsque vous saisissez des chaînes de texte, les outils peuvent gérer l’encodage différemment (UTF-8 vs ASCII). La solution : standardisez votre encodage et spécifiez le format d’entrée lors du développement ; les plateformes comme Gate fournissent des instructions claires. Vérifiez aussi que vous utilisez Keccak-256 ou SHA3-256—leurs sorties diffèrent même pour une entrée identique.

Outre la génération d’adresses, à quoi sert Keccak dans les smart contracts ?

Keccak-256 intervient dans de nombreux cas d’usage des smart contracts : vérification de l’intégrité des données (hachage des transactions pour comparaison), génération d’identifiants uniques (hachage de paramètres combinés), ou gestion des accès (stockage d’informations sensibles sous forme de hachage plutôt qu’en clair). Certains contrats hachent les données utilisateur avant stockage pour éviter d’exposer les valeurs brutes. Cette polyvalence fait de Keccak un outil fondamental du Web3—gardez à l’esprit que le hachage est irréversible : il est impossible de reconstituer les données initiales à partir du hachage.

Faut-il des connaissances avancées en cryptographie pour maîtriser Keccak ?

Non. En tant qu’utilisateur Web3 ou développeur débutant, il suffit de retenir que « Keccak est une fonction de hachage unidirectionnelle—une entrée identique produit une sortie identique ». L’étude approfondie de la cryptographie reste optionnelle (pour les audits de sécurité ou la recherche) ; la plupart des développeurs se contentent d’appeler les fonctions des bibliothèques comme keccak256 de Solidity. Commencez par expérimenter sur des cas concrets comme la signature ou la génération d’adresse via Gate ou sur testnet.

Quelles précautions prendre avec Keccak dans les applications hors chaîne ?

Lors d’un appel à Keccak depuis du code hors chaîne (front-end ou back-end), vérifiez que la version de la bibliothèque correspond à celle utilisée on-chain—généralement Keccak-256. Privilégiez les bibliothèques standard telles que Web3.js ou ethers.js, qui intègrent Keccak correctement par défaut. Soyez attentif à la sérialisation des données—si vous générez des hachages hors chaîne pour vérification on-chain, les méthodes de sérialisation (comme l’encodage ABI) doivent être strictement identiques. Testez systématiquement dans des environnements dédiés, notamment pour les signatures ou la vérification de contrats.

Un simple « j’aime » peut faire toute la différence

Partager

Glossaires associés
époque
Dans le Web3, le terme « cycle » désigne les processus récurrents ou les fenêtres propres aux protocoles ou applications blockchain, qui interviennent à des intervalles fixes, qu’il s’agisse du temps ou du nombre de blocs. Il peut s’agir, par exemple, des événements de halving sur Bitcoin, des rounds de consensus sur Ethereum, des calendriers de vesting des tokens, des périodes de contestation des retraits sur les solutions Layer 2, des règlements de taux de financement et de rendement, des mises à jour des oracles ou encore des périodes de vote de gouvernance. La durée, les conditions de déclenchement et la souplesse de ces cycles diffèrent selon les systèmes. Maîtriser le fonctionnement de ces cycles permet de mieux gérer la liquidité, d’optimiser le moment de ses actions et d’identifier les limites de risque.
Qu'est-ce qu'un nonce
Le terme « nonce » désigne un « nombre utilisé une seule fois », dont la fonction est d’assurer qu’une opération donnée ne soit réalisée qu’une fois ou dans un ordre strictement séquentiel. Dans le domaine de la blockchain et de la cryptographie, le nonce intervient principalement dans trois cas : le nonce de transaction garantit le traitement séquentiel des opérations d’un compte et empêche leur répétition ; le nonce de minage est employé pour rechercher un hash conforme à un niveau de difficulté défini ; enfin, le nonce de signature ou de connexion prévient la réutilisation des messages lors d’attaques par rejeu. Ce concept se rencontre lors de transactions on-chain, du suivi des opérations de minage, ou lors de la connexion à des sites web via votre wallet.
Décentralisé
La décentralisation désigne une architecture qui répartit la prise de décision et le contrôle entre plusieurs participants, un principe largement utilisé dans la blockchain, les actifs numériques et la gouvernance communautaire. Elle repose sur le consensus de nombreux nœuds du réseau, permettant au système de fonctionner sans dépendre d'une autorité centrale, ce qui améliore la sécurité, la résistance à la censure et l'ouverture. Dans le secteur des cryptomonnaies, la décentralisation s'illustre par la collaboration internationale des nœuds de Bitcoin et Ethereum, les exchanges décentralisés, les wallets non-custodial et les modèles de gouvernance communautaire où les détenteurs de tokens votent pour définir les règles du protocole.
Immuable
L’immutabilité représente une caractéristique essentielle de la blockchain, empêchant toute altération ou suppression des données dès leur enregistrement et après obtention du nombre requis de confirmations. Grâce à l’utilisation de fonctions de hachage cryptographique enchaînées et à des mécanismes de consensus, cette propriété assure l’intégrité et la vérifiabilité de l’historique des transactions, constituant ainsi un socle de confiance pour les systèmes décentralisés.
chiffrement
Un algorithme cryptographique désigne un ensemble de méthodes mathématiques visant à « verrouiller » l’information et à en vérifier l’authenticité. Parmi les principaux types figurent le chiffrement symétrique, le chiffrement asymétrique et les algorithmes de hachage. Au sein de l’écosystème blockchain, ces algorithmes sont fondamentaux pour la signature des transactions, la génération d’adresses et l’assurance de l’intégrité des données, participant ainsi à la protection des actifs et à la sécurisation des échanges. Les opérations des utilisateurs sur les portefeuilles et les plateformes d’échange, telles que les requêtes API ou les retraits d’actifs, reposent également sur une implémentation sécurisée de ces algorithmes et une gestion rigoureuse des clés.

Articles Connexes

Comment miser sur l'ETH?
Débutant

Comment miser sur l'ETH?

La fusion étant terminée, Ethereum est enfin passé de PoW à PoS. Les jalons maintiennent maintenant la sécurité du réseau en jalonnant l'ETH et en obtenant des récompenses. Il est important de choisir les méthodes et les prestataires de services appropriés avant de procéder au piquetage. La fusion étant terminée, Ethereum est enfin passé de PoW à PoS. Les jalons maintiennent maintenant la sécurité du réseau en jalonnant l'ETH et en obtenant des récompenses. Il est important de choisir les méthodes et les prestataires de services appropriés avant de procéder au piquetage.
2022-11-21 07:46:18
Les 10 meilleurs outils de trading en Crypto
Intermédiaire

Les 10 meilleurs outils de trading en Crypto

Le monde de la crypto évolue constamment, avec de nouveaux outils et plateformes émergents régulièrement. Découvrez les meilleurs outils de crypto-monnaie pour améliorer votre expérience de trading. De la gestion de portefeuille et de l'analyse du marché au suivi en temps réel et aux plateformes de meme coin, apprenez comment ces outils peuvent vous aider à prendre des décisions éclairées, à optimiser vos stratégies et à rester en avance sur le marché dynamique des crypto-monnaies.
2024-11-28 05:39:59
Les meilleures plateformes de loterie en crypto-monnaie pour 2024
Débutant

Les meilleures plateformes de loterie en crypto-monnaie pour 2024

Explorez le monde des loteries cryptographiques grâce à ce guide complet sur les mécanismes des loteries cryptographiques, ainsi que sur les meilleures plateformes.
2024-01-28 16:53:22