Aller au contenu
ecdsa.com

Problème du nombre caché

Le problème de réseaux euclidiens qui consiste à retrouver un secret à partir de nombreuses relations linéaires bruitées révélant quelques-uns de ses bits ; il transforme de petits biais ou de petites fuites dans les nonces ECDSA et DSA en récupération complète de la clé privée.
Autres graphiesHNPlattice attackbiased nonce attack

Chaque signature ECDSA donne s·k = z + r·d (mod n). Si l’on sait que les bits de poids fort de chaque k sont nuls, ou s’ils fuient par un canal auxiliaire, chaque signature devient une équation linéaire approchée en la clé privée d ; avec suffisamment de signatures, une réduction de réseau (LLL ou BKZ) sur une matrice construite à partir des triplets (r, s, z) permet de trouver d. C’est le problème du nombre caché (hidden number problem) de Boneh et Venkatesan (1996), appliqué à DSA par Howgrave-Graham et Smart (2001) puis par Nguyen et Shparlinski (2002).

Une fuite de quelques bits par signature suffit avec quelques centaines à quelques milliers de signatures, et des techniques récentes abaissent la fuite nécessaire sous un bit. Parmi les cas documentés figurent Minerva (2019, fuites temporelles de la longueur en bits dans des cartes à puce et des bibliothèques), TPM-Fail (2019, TPM micrologiciel d’Intel et un TPM de STMicroelectronics), LadderLeak (2020) et l’étude « Biased Nonce Sense » de 2019, qui a retrouvé des clés à partir de vraies signatures Bitcoin et Ethereum aux nonces trop courts.

Parades : générez des nonces uniformément sur tout l’intervalle (de façon déterministe selon la RFC 6979, ou hedged), calculez avec du code en temps constant qui ne révèle pas la longueur en bits du nonce, et traitez toute fuite de nonce signalée comme une compromission de clé et non comme un bug cosmétique.

Normes et références

Tous les termes