En ECDSA, le signataire choisit k dans l’intervalle 1…n−1, calcule le point kG et prend sa coordonnée x modulo n comme r ; puis s = k⁻¹·(z + r·d) mod n, où z est le condensat tronqué du message et d la clé privée (FIPS 186-5 §6.4.1). Comme s est linéaire à la fois en k et en d, connaître k pour une seule signature suffit pour retrouver la clé privée : d = (s·k − z)·r⁻¹ mod n. FIPS 186-5 §6.3 exige donc un k neuf pour chaque signature, protégé comme la clé elle-même.
La réutilisation est tout aussi fatale, et facile à détecter : deux signatures sous une même clé avec le même r donnent k = (z₁ − z₂)·(s₁ − s₂)⁻¹ mod n, puis d. C’est ainsi que la clé de signature de la PlayStation 3 a été extraite en 2010, et que de nombreux portefeuilles de blockchain ont été vidés. Le nonce n’a même pas besoin de se répéter : quelques bits de biais ou de fuite par signature, recueillis sur suffisamment de signatures, permettent à la réduction de réseau de résoudre le problème du nombre caché et de retrouver la clé.
Les bibliothèques modernes dérivent k de façon déterministe à partir de la clé privée et du condensat du message (la RFC 6979, autorisée par FIPS 186-5 §6.3.2) ou utilisent une variante hedged qui mêle un aléa frais à la même dérivation. EdDSA intègre l’idée à l’algorithme : le nonce d’Ed25519 est le condensat SHA-512 d’une moitié de la clé secrète et du message (RFC 8032 §5.1.6). Le vérificateur de réutilisation de nonce recherche des valeurs r répétées dans un ensemble de signatures.
Hors des signatures, « nonce » désigne toute valeur utilisée une seule fois : l’IV de 96 bits d’AES-GCM, le claim nonce d’OpenID Connect, l’en-tête Replay-Nonce d’ACME. Ces valeurs exigent l’unicité et la fraîcheur, pas le secret ; le nonce de signature a ceci de particulier qu’il exige les deux.