clé privée : l'espace de clé bitcoin est-il défectueux  ?


C’est une propriété des courbes elliptiques. Il est attendu et n’a pas d’impact significatif sur la sécurité.

Les points sur une courbe elliptique ont une coordonnée X et Y. Dans le cas de secp256k1, ces coordonnées doivent obéir à l’équation y2 = x3 + 7 (mod p), où p = 2256 – 232 – 977. A chaque fois que (x,y) est sur la courbe, (x,-y) est trop (car y est au carré, donc son signe est ignoré). Maintenant, c’est un mod p de négation; où les « signes » n’existent pas vraiment ; ce ne sont que des nombres entre 0 et p-1. La négation correspond au remplacement de y par p-y, et comme p est impair, cela signifie que chaque coordonnée X a exactement un Y pair qui lui correspond et un impair.

Pour coder les clés publiques, il n’est pas nécessaire d’envoyer la coordonnée Y complète. Il n’y en a que deux, et l’un est impair et l’autre est pair. Ainsi, l’encodage n’envoie que 33 octets. Premier octet pour indiquer si Y est pair (0x02) ou impair (0x03), suivi de 32 octets qui codent la coordonnée X complète.

clé privée : l'espace de clé bitcoin est-il défectueux  ?

Ces deux points (x,y) et (x,-y) sont aussi la négation l’un de l’autre. Les détails sont peut-être trop détaillés pour entrer ici, mais la courbe elliptique a un point « zéro » (également appelé point à l’infini), qui lorsqu’il est ajouté à n’importe quel point se donne, et en ajoutant (x,y) et (x, -y) l’un à l’autre donne l’infini. Donc, d’une certaine manière, w.r.t. l’opération d’addition de points de courbe elliptique, (x,y) et (x,-y) sont la négation l’une de l’autre.

Cela signifie que lorsque vous annulez une clé privée, vous allez effectivement vous retrouver avec la négation de la clé publique correspondante. Les clés privées sont des nombres, mais mod n, et non mod p comme les coefficients des points de courbe. n dans le cas de secp256k1 est n = 2256 -. Globalement, cela signifie que les clés publiques correspondant à a et n-a auront en effet la même coordonnée X et la même coordonnée Y.

Est-ce un problème pour la sécurité ? Non, car c’est une propriété bien connue des courbes elliptiques, et lors de l’analyse de leur sécurité, cela est pris en compte. Les algorithmes les plus connus pour briser la sécurité des courbes elliptiques (résolution de l’ECDLP) utilisent cette propriété et en tirent une accélération d’environ un facteur √2. Pourtant, même avec cette accélération, le temps qu’il faut pour briser la sécurité d’une clé publique est toujours astronomique. Il est également utilisé à d’autres fins : avec l’activation prochaine de Taproot en novembre 2021, les signatures BIP340 « Schnorr » seront activées sur le réseau. Ceux-ci stockent uniquement la coordonnée X et ne font que 32 octets. La coordonnée Y est implicitement paire.

secp256k1 a en fait aussi une propriété connexe  : lors de la multiplication d’une clé privée avec , la coordonnée X est multipliée par la coordonnée restante. Cette propriété est assez particulière (on l’appelle l’endomorphisme GLV), entraîne une accélération significative pour certains algorithmes cryptographiques (dont la vérification ECDSA), mais entraîne également une accélération √3 pour les attaques. Encore une fois, même en tenant compte de cette accélération, la sécurité de la courbe est très sûre.