Qu`est-ce qu`un nonce en cryptomonnaie ? Minage de Bitcoin, Ethereum, Cryptographie
En décembre 2010, lors du Chaos Communication Congress de Berlin, un petit groupe nommé fail0verflow annonça avoir extrait la clé de signature principale de Sony pour la PlayStation 3. L'exploit ne consistait pas à casser une courbe elliptique de 256 bits, ni à déchiffrer l'AES. Il reposait sur le fait que le système de signature de code de Sony réutilisait le même numéro pour chaque signature produite : un nonce.
Le même mot, « nonce », apparaît dans trois domaines du monde crypto qui n'ont presque rien en commun. C'est la variable qu'un mineur de Bitcoin parcourt des milliards de fois par seconde à la recherche d'un hachage de bloc valide. C'est le compteur utilisé par votre portefeuille Ethereum pour séquencer les transactions sortantes, et la raison pour laquelle une transaction bloquée bloque toutes les suivantes. C'est la valeur unique dont un chiffrement AES-GCM a besoin pour empêcher que deux messages chiffrés ne divulguent leur contenu. Un mot, trois fonctions, aucune n'étant interchangeable. Confondre l'un avec l'autre est la façon dont les nouveaux venus interprètent mal les erreurs « nonce trop faible », dont les mineurs conçoivent des configurations impossibles, et dont des systèmes comme la PS3 perdent leur racine de confiance.
Un nonce de 32 bits appelé « nombre utilisé une seule fois » : origine
L'abréviation est omniprésente. « Nonce signifie "numéro utilisé une seule fois" », ce qui est globalement vrai, mais historiquement inexact. Le mot anglais est antérieur à la cryptographie d'environ 750 ans. L'expression « for the nonce » apparaît dans des manuscrits en moyen anglais vers 1200. Elle signifiait « pour cette occasion particulière ».
La cryptographie emprunte le terme en 1978, avec le protocole d'authentification Needham-Schroeder. Dans ce cas, la propriété déterminante n'est pas l'aléatoire, mais l'unicité, au sein d'un cadre défini. Wikipédia, se référant à la pratique courante, définit un nonce comme « un nombre arbitraire qui ne peut être utilisé qu'une seule fois dans une communication cryptographique ». Un compteur, un horodatage, une valeur aléatoire ou toute combinaison des trois peuvent convenir. L'important est que, dans le système, le même nonce ne soit jamais réutilisé avec la même clé ni dans le même contexte.
Un seul mot suffit, et le travail est réparti entre trois. Le nonce de minage Bitcoin varie jusqu'à ce que le hachage du bloc descende en dessous du seuil de difficulté. Le nonce de compte Ethereum est un compteur que le réseau refuse de laisser se répéter. Un nonce cryptographique en chiffrement symétrique est une valeur associée à une clé ; sa réutilisation, même une seule fois, compromet le chiffrement.
Le mot est employé à tort. Le contexte, lui, ne l'est pas.

Comment fonctionne le nonce dans le minage de Bitcoin
Dans Bitcoin, le nonce occupe un champ de 32 bits à l'intérieur de l'en-tête de bloc de 80 octets. Quatre octets. Les valeurs vont de zéro à 4 294 967 295. Un peu moins de 4,3 milliards de nombres possibles, ce qui paraissait énorme lorsque Satoshi a écrit le protocole et qui est maintenant épuisé par un ASIC de la taille d'un bureau en quelques microsecondes.
Le minage est une course pour trouver une valeur dans le champ qui produit un hachage de bloc valide. Prenons l'en-tête de 80 octets. Passons-le deux fois dans SHA-256, la fonction de hachage cryptographique utilisée par la blockchain Bitcoin. On obtient un nombre de 256 bits. Comparons ce nombre au hachage cible défini par la difficulté du réseau, le mécanisme de consensus qui gère la preuve de travail. Si le hachage est inférieur à la cible, le bloc est valide et le mineur gagne. S'il est supérieur à la cible, le nonce est incrémenté de 1 et le hachage est recalculé. Les mineurs de Bitcoin répètent ce processus jusqu'à ce que quelqu'un trouve un nonce valide et que le nouveau bloc soit ajouté à la blockchain.
Pourquoi un champ si petit pour une tâche aussi importante ? Pour des raisons structurelles. Le nonce est l'élément de l'en-tête le moins coûteux à modifier pour un mineur. Tous les autres champs ont des dépendances. La racine Merkle résume les transactions du bloc ; la modifier oblige donc à recalculer l'intégralité de l'arbre des transactions avant de pouvoir tenter un nouveau hachage. Le nonce contourne tout cela. Chaque tentative de hachage est indépendante. Incrémenter le nonce n'apporte pas plus de précision que de choisir une valeur aléatoire. Une méthode par force brute, déguisée en langage de consensus.
La conception a tenu environ un an. Puis les circuits intégrés spécifiques (ASIC) l'ont rendue obsolète. Les mineurs modernes épuisent l'intégralité de l'espace des 4,3 milliards de nonces en microsecondes, et non en secondes. Un Bitmain Antminer S21 Pro fonctionne à 234 térahaches par seconde. L'ensemble du champ des nonces est épuisé sur ce matériel en environ 18 microsecondes . En mai 2026, le hashrate total du réseau Bitcoin avoisinait les 996 EH/s, avec une difficulté de 132,47 billions. Un seul S21 Pro traite à lui seul toutes les valeurs de nonce possibles des dizaines de milliers de fois par seconde.
Le protocole de Satoshi offre donc au mineur deux solutions de repli une fois l'espace 32 bits épuisé. La première consiste à utiliser le « nonce supplémentaire », un champ intégré à la signature de script (scriptSig) de la transaction coinbase. Ce champ est codifié par BIP34. Il s'agit d'un nonce supplémentaire de deux à cent octets, contrôlé par le mineur. Toute modification du nonce supplémentaire entraîne un changement de l'identifiant de transaction coinbase (TXID), le recalcul de la racine Merkle, la modification de l'en-tête du bloc et l'ouverture d'une nouvelle recherche de nonce 32 bits. La seconde solution consiste à incrémenter l'horodatage ou à faire pivoter les bits de version dans la plage autorisée par le protocole. Les pools de minage effectuent actuellement ces modifications de manière systématique. La modification du nonce est la plus économique, suivie de celle du nonce supplémentaire. Les rotations de la racine Merkle et de l'horodatage sont plus coûteuses à recalculer.
Lorsqu'un mineur obtient un hachage inférieur à la cible (appelée « nonce doré »), le nouveau bloc est diffusé sur le réseau pair-à-pair, et chaque concurrent abandonne sa recherche en cours pour recommencer au tour suivant.
| Modèle ASIC | Taux de hachage | Il est temps d'épuiser le nonce 32 bits | Efficacité |
|---|---|---|---|
| Antminer S21 | 200 TH/s | ~21 µs | 17,5 J/TH |
| Antminer S21 Pro | 234 TH/s | ~18 µs | 15 J/TH |
| Antminer S21 XP | 270 TH/s | ~16 µs | 13,5 J/TH |
Un exemple concret et récent illustre cette abstraction. Le bloc 948 000, miné début 2026, possède le hachage `00000000000000000001b01841afc366a4f999b291c8563ee0d0db956fc2db44` et une valeur de nonce gagnante de 2 582 463 598. Ce seul entier, combiné au reste de l'en-tête du bloc, a produit un hachage suffisamment faible pour être ajouté à la blockchain. Tous les autres nonces testés par le mineur lors de ce cycle ont produit une valeur trop élevée.
Voilà en quoi consiste la preuve de travail, d'un point de vue mécanique. Ce n'est pas une énigme au sens strict du terme. Il s'agit de la recherche d'un nonce valide, payée en électricité.
Nonce de hachage vs nonce de compte : même terme, fonction différente
Le terme « nonce » est réutilisé pour une autre fonction dans le domaine des cryptomonnaies, et cette confusion est la principale source de désorientation chez les nouveaux venus. Le nonce de minage Bitcoin est une variable de recherche. Le nonce de compte Ethereum est un compteur. Ils partagent le nom, et quasiment rien d'autre.
| Nonce de hachage (Bitcoin) | nonce du compte (Ethereum) | |
|---|---|---|
| Emploi | Recherchez un hachage valide sous la cible | Séquencer les transactions sortantes par compte |
| Là où il vit | En-tête de bloc (32 bits) | État du compte (entier complet, commence à 0) |
| Qui le mute ? | Le mineur, en termes de matériel, des milliards par seconde | Le portefeuille, automatiquement, un par envoi |
| Que signifie « faux » ? | Billet de loterie invalide, essayez le suivant | La transaction a été rejetée ou bloquée. |
| Lié au consensus ? | Oui, ceci est une preuve de travail | Non, il s'agit d'une protection contre la rediffusion. |
Un nonce de hachage est un nombre temporaire qu'un mineur utilise. Un nonce de compte, quant à lui, est un état permanent enregistré dans la vue du réseau concernant votre adresse. Confondre l'un avec l'autre — en traitant le nonce d'un bloc Bitcoin comme un compteur de séquence — est la façon dont certains interprètent une erreur « nonce trop bas » sur Ethereum et pensent que leur configuration de minage est défaillante. Différentes blockchains, différentes tâches, mais un même terme. Même au sein d'un même écosystème, le rôle du nonce dans les opérations blockchain dépend entièrement du niveau d'analyse : la couche de consensus ou la couche de compte.
Nonce du compte Ethereum et problème des transactions bloquées
Chaque compte externe sur Ethereum possède son propre nonce. Ce compteur démarre à zéro lors de la première transaction effectuée par l'adresse. Il s'incrémente ensuite de un pour chaque transaction incluse dans un bloc. Lorsque vous envoyez une transaction, votre portefeuille interroge le réseau pour obtenir sa valeur actuelle, y ajoute le nonce suivant et signe la transaction. Le réseau n'accepte les transactions sortantes que dans un ordre strict : nonce 0, puis 1, puis 2. Aucun nonce ne peut être interrompu.
Cet ordre strict confère à Ethereum sa protection contre les attaques par rejeu. Une transaction signée est liée à un nonce spécifique et, depuis l'EIP-155, également à un identifiant de chaîne spécifique. Un attaquant ne peut pas rediffuser une ancienne transaction exécutée comme s'il s'agissait d'une nouvelle. Au moment où la rediffusion arrive, le nonce du compte a déjà évolué. L'identifiant de chaîne empêche les rejeu inter-chaînes instantanément. Au sein d'une même chaîne, une transaction confirmée est stockée à un instant donné sur un compteur qui a déjà évolué.
Ce même ordre rigide est à l'origine du problème récurrent des nouveaux portefeuilles Ethereum. Une transaction est émise avec un pourboire insuffisant. Les validateurs la laissent passer. Le mempool la retire de la file d'attente prioritaire. La transaction se retrouve alors en suspens : ni confirmée, ni en échec, simplement bloquée. Pire encore, chaque transaction ultérieure signée par la même adresse se voit attribuer un nonce plus élevé. Le réseau refuse de les traiter tant que la transaction bloquée n'est pas confirmée ou remplacée. Une seule transaction lente suffit à bloquer toute la file d'attente.
La solution réside dans un mécanisme appelé « remplacement par frais ». Votre portefeuille rediffuse une nouvelle transaction au même nonce que la transaction bloquée, mais avec des frais de gaz plus élevés. L'EIP-1559, le modèle de tarification du gaz utilisé par Ethereum depuis la mise à jour de Londres en août 2021, définit la règle : la nouvelle transaction doit augmenter les frais `maxFeePerGas` et `maxPriorityFeePerGas` d'au moins 10 % par rapport à la transaction initiale. Vous souhaitez annuler la transaction bloquée plutôt que de la remplacer ? Envoyez un autotransfert de zéro ETH au nonce bloqué, avec un pourboire plus élevé. Le slot est alors libéré et toutes les transactions suivantes dans la file d'attente sont débloquées.
Voici les chiffres de mai 2026, à titre indicatif. Le pourboire prioritaire moyen avoisine 1,875 Gwei. Une annulation standard de 21 000 unités de gaz coûte environ 0,05 $ par temps calme, et peut atteindre quelques dollars en cas de forte affluence. Une leçon s'impose à tous : il faut toujours remplacer en premier le nonce en attente le plus bas . Augmenter les frais d'une transaction ultérieure alors que la précédente est toujours bloquée est totalement inutile.
L'abstraction des comptes modifie légèrement la donne. Les comptes intelligents ERC-4337 utilisent un nonce bidimensionnel, divisant l'entier en une « clé » de 192 bits et une séquence de 64 bits. Différentes clés forment des flux de transactions parallèles. Un lot bloqué sur une clé n'empêche pas le traitement sur une autre. Le nonce du compte n'est plus un simple compteur linéaire.
Un dernier mythe à déconstruire. La transition d'Ethereum vers la preuve d'enjeu lors de la fusion, en septembre 2022, n'a pas supprimé le nonce de compte. Ce qui a disparu, c'est le nonce de minage dans l'en-tête du bloc, car les validateurs sont désormais sélectionnés par emplacement et non plus par un puzzle de hachage. Le nonce de compte, quant à lui, est resté exactement à sa place habituelle, dans l'arbre d'état du compte.
Nonce cryptographique dans le chiffrement : la version catastrophique
Sortez de la blockchain et le nonce cryptographique se révèle bien plus efficace. Une erreur, et c'est la catastrophe.
Chaque algorithme de chiffrement authentifié moderne associe une clé secrète à un nonce unique pour chaque message. AES-GCM, l'algorithme principal de TLS 1.3, utilise 96 bits. Sa spécification a été définie dans la publication spéciale 800-38D du NIST. ChaCha20-Poly1305, l'alternative codifiée dans la RFC 8439 (juin 2018), utilise également un nonce de 96 bits et l'associe à une clé de 256 bits. En clair, la règle est la même pour les deux algorithmes : chaque paire (clé, nonce) est utilisée une seule fois. La réutilisation n'est pas une simple dégradation, mais une rupture brutale.
À quoi ressemble la faille ? Réutilisez un nonce dans AES-GCM avec une seule clé. Imaginez qu'un attaquant ait intercepté les deux textes chiffrés. Il effectue un XOR entre eux. Le résultat du XOR des deux textes clairs sous-jacents est alors divulgué. Confidentialité compromise en un instant. Pire encore. Le mode d'authentification de GCM expose sa sous-clé d'authentification interne — la valeur qui signe chaque texte chiffré avec cette clé. Muni de cette sous-clé, l'attaquant écrit de nouveaux textes chiffrés authentifiés, que le destinataire légitime accepte sans problème. Un chiffrement de pointe, avec un seul nonce défectueux, devient vulnérable au décalage de César.
Rien de tout cela n'est hypothétique. Un document USENIX WOOT de 2016, intitulé « Adversaires non respectueux des nonces », a analysé des points de terminaison HTTPS en production et a identifié 184 serveurs réutilisant des nonces GCM. Parmi les versions vulnérables figuraient des images Cisco IOS XE spécifiques et le firmware Radware ADC. Ces vulnérabilités sont répertoriées sous la référence CVE-2016-0270 et plusieurs CVE connexes.
La faille de sécurité des PS3 de Sony en décembre 2010 était due à la même attaque, mais avec un chiffrement différent : ECDSA. Chaque signature ECDSA nécessite une valeur unique et secrète, notée k . Le code de signature de Sony omettait cette étape d'unicité. Il utilisait une constante k , réutilisée pour chaque signature. Si un attaquant dispose de deux signatures ECDSA sur des messages différents avec la même valeur de k , il obtient deux équations linéaires à deux inconnues. En les résolvant, il obtient la clé de signature privée, sous forme fermée. fail0verflow a démontré cela lors du 27e Chaos Communication Congress à Berlin. La clé de signature principale de Sony s'est retrouvée sur Internet en quelques heures. Toutes les PS3 jamais fabriquées ont alors perdu leur chaîne de confiance.
La solution déterministe, codifiée dans la RFC 6979 en 2013, élimine le générateur de nombres aléatoires. La valeur k est dérivée d'un HMAC du message et de la clé privée. Même message, même clé, même valeur k : aucun générateur de nombres aléatoires susceptible d'être corrompu. Les bibliothèques Bitcoin modernes utilisent l'ECDSA déterministe par défaut.
Deux corollaires découlent de ces exemples, et ils sont souvent source de confusion pour les développeurs. Avec les chiffrements AEAD (AES-GCM, ChaCha20-Poly1305), un nonce prévisible convient parfaitement. Un compteur suffit. L'unicité est la seule exigence. Avec ECDSA et les signatures Schnorr, la règle s'inverse. Un nonce prévisible est catastrophique. Le nonce de signature doit alors être à la fois unique, imprévisible et secret. C'est précisément en mélangeant ces deux approches que les failles de réutilisation de nonce apparaissent régulièrement dans le code des portefeuilles personnalisés. L'audit 2024 du projet de sauvegarde Kopia a révélé un risque de collision aléatoire de nonce GCM sur les clés à longue durée de vie, et les rapports de tests d'intrusion sur les SDK les plus récents font état de constatations similaires mois après mois.
Nonce vs sel vs IV : éviter la confusion à trois voies
Dans les articles sur la sécurité, on utilise souvent trois mots comme s'ils étaient synonymes : Salt, Nonce, IV. Or, ce ne sont pas des synonymes.
Le sel est utilisé pour le hachage des mots de passe. On choisit une valeur aléatoire pour chaque utilisateur, on l'intègre au hachage, et ainsi les tables arc-en-ciel précalculées pour « password123 » deviennent inopérantes contre votre base de données. Le sel est stocké en clair à côté du hachage. Personne ne le cache. Le fait que deux utilisateurs partagent le même sel est problématique ; un attaquant qui pirate l'un pourrait ainsi pirater l'autre. Ce n'est pas dramatique.
Le nonce est essentiel à la messagerie et aux signatures. Il est utilisé pour chaque message en chiffrement symétrique et pour chaque signature en ECDSA. Les algorithmes de chiffrement AEAD, comme AES-GCM, exposent le nonce en clair, à l'instar du sel associé à un hachage. ECDSA, quant à lui, le masque, le traite comme un secret et exige une nouvelle génération d'aléatoire à chaque exécution. Dans les deux cas, les collisions ne sont pas seulement problématiques ; elles sont fatales. Toute garantie est alors compromise.
IV (initialization vector) est l'ancien nom de ce que les spécifications plus récentes appellent un nonce. Les modes CBC et CTR ont utilisé ce terme pendant des années. La documentation AEAD moderne a changé de terme, principalement parce que « vector » sonnait comme un exercice de mathématiques et qu'il était souvent réutilisé. « Nonce » insiste davantage sur la règle.
Besoin d'une règle qui tienne sur un post-it ? Un sel protège un secret que vous stockez. Un nonce protège un secret que vous envoyez.

Pourquoi le nonce est important au-delà des notions de base du minage de bitcoin
Un nonce est un petit objet : 32 bits pour Bitcoin, un compteur pour Ethereum et 12 octets pour AES-GCM. Son importance est disproportionnée par rapport à sa taille. Pour les utilisateurs lambda, chaque transaction Ethereum bloquée, chaque négociation TLS avec un site bancaire, chaque signature générée par un portefeuille matériel dépend d'une gestion correcte du nonce. Pour les développeurs, une mauvaise gestion du nonce est la principale source de failles critiques dans le code cryptographique personnalisé. L'incident de la PS3 était un cas extrême, mais ce même mode de défaillance continue d'apparaître dans les SDK de portefeuilles et les outils de sauvegarde plus récents. Pour l'économie du Bitcoin, le nonce de 32 bits, combiné au mécanisme du nonce supplémentaire, est ce qui a fait du minage ASIC une loterie équitable dès le départ. Un des choix de conception les plus importants de Satoshi, pourtant évident dans un champ d'en-tête anodin.
Un nonce est ce qui garantit qu'un événement s'est produit une seule fois, dans cet ordre précis et de cette manière exacte . Sans lui, tout système reposant sur l'unicité s'effondre et devient vulnérable aux attaques, facilement reproductibles par un attaquant. Le consensus est rompu. La protection contre les attaques par rejeu disparaît. Le chiffrement est compromis. Les signatures peuvent être falsifiées.