NONCE
Dans le contexte de l’informatique, le terme « nonce » désigne un nombre utilisé seulement une seule fois, puis remplacé. Il est souvent aléatoire ou pseudo-aléatoire. On l’utilise dans divers protocoles cryptographiques pour garantir la sécurité du procédé. Par exemple, les signatures ECDSA utilisées au sein du protocole Bitcoin incluent l’utilisation d’un nonce. Cela veut dire que ce nombre doit être nouveau pour chaque signature. Si ce n’est pas le cas, il est possible de calculer la clé privée utilisée en rapprochant deux signatures qui utilisent le même nonce.
On utilise également des nonces dans le processus de minage sur Bitcoin. Les mineurs incrémentent ces valeurs modifiables au sein de leurs blocs candidats. Ils modifient la valeur du nonce dans le but de trouver une empreinte cryptographique inférieure ou égale à la cible de difficulté. Ce processus nécessite une grande puissance de calcul, car il s’agit d’une recherche exhaustive parmi un grand nombre de nonces possibles. Lorsqu’un mineur trouve un nonce qui, lorsqu’il est inclus dans son bloc, produit un hash répondant aux critères de difficulté, le bloc est diffusé au réseau, et le mineur remporte la récompense.
En 2010, des chercheurs ont découvert que la PlayStation 3 de Sony utilisait le même nonce lors de la signature de différents paquets de code. Cette réutilisation du nonce a permis aux attaquants de calculer la clé privée utilisée pour signer le logiciel. Avec la clé privée en main, les attaquants pouvaient créer des signatures valides pour n’importe quel code, ce qui leur permettait d’exécuter des logiciels non autorisés, y compris des jeux piratés ou des systèmes d’exploitation personnalisés, directement sur la PS3.
Il existe une idée reçue sur l’origine du terme de « nonce ». Certains affirment qu’il représenterait l’abréviation de « number only used once ». En réalité, l’origine du mot remonte au 12ème siècle et provient de l’évolution sémantique de l’expression en moyen anglais « for then anes » qui signifiait « pour cette occasion ».