ECC en pratique

ECDSA, tailles de clés et pièges

ECDH échange des clés ; il reste à signer et à comprendre pourquoi les courbes elliptiques ont conquis la cryptographie moderne. C'est le rôle d'ECDSA, et l'occasion d'un des pièges les plus célèbres de la discipline.

Le grand avantage : des clés minuscules

L'atout décisif des courbes elliptiques est la taille des clés. Comme l'ECDLP résiste mieux que la factorisation, il faut moins de bits pour la même sécurité (n bits = 2^n opérations pour casser le système).

Sécurité (bits) Clé RSA Clé ECC Rapport
80 1024 bits 160 bits ~6×
112 2048 bits 224 bits ~9×
128 3072 bits 256 bits ~12×
192 7680 bits 384 bits ~20×
256 15360 bits 512 bits ~30×

Une clé ECC de 256 bits offre donc la même sécurité qu'une clé RSA de 3072 bits. D'où moins de données (certificats plus légers) et des calculs plus rapides, ce qui compte sur les objets connectés, cartes à puce et téléphones.

ECDSA : signer avec une courbe

ECDSA (Elliptic Curve Digital Signature Algorithm) est l'adaptation de la signature numérique aux courbes elliptiques. Comme toute signature à clé publique, on signe avec sa clé privée (le scalaire secret) et n'importe qui vérifie avec la clé publique (le point correspondant).

Mais chaque signature utilise aussi un nombre aléatoire éphémère, le nonce (noté k), tiré au sort à chaque fois. ECDSA est omniprésent : il protège TLS (HTTPS), authentifie SSH et signe les transactions Bitcoin.

Le piège mortel : réutiliser le nonce

Le nonce k doit être secret, aléatoire et unique à chaque signature — exigence absolue. Car la structure mathématique d'ECDSA est telle que si le même k sert à signer deux messages différents, alors, à partir des deux signatures publiques, on peut retrouver k, puis en déduire la clé privée.

   Deux signatures (r, s1) et (r, s2) avec le MÊME k
                     │
                     ▼   (le r identique trahit la réutilisation)
        on résout k  =  (z1 − z2) / (s1 − s2)
                     │
                     ▼
        on remonte à la clé privée d  =  (s1·k − z1) / r
                     │
                     ▼
             CLÉ PRIVÉE ENTIÈREMENT RÉVÉLÉE

Autrement dit, une seule négligence sur le nonce anéantit tout le système : l'attaquant peut désormais signer à votre place.

L'affaire de la PlayStation 3

Ce n'est pas théorique. En 2010, le collectif fail0verflow a montré que Sony utilisait, dans la PlayStation 3, un nonce ECDSA constant pour signer les logiciels autorisés. Résultat : n'importe qui pouvait extraire la clé privée de la console et signer ses propres programmes comme s'ils venaient de Sony. Toute la chaîne de confiance s'est effondrée sur cette unique erreur.

Depuis, les bonnes implémentations génèrent le nonce de façon déterministe à partir du message et de la clé privée (RFC 6979) : il reste unique et imprévisible.

En résumé

  • ECC offre la même sécurité que RSA avec des clés bien plus petites (256 bits ECC ≈ 3072 bits RSA), donc plus de rapidité et moins de données.
  • ECDSA est la signature sur courbe elliptique, utilisée dans TLS, SSH et Bitcoin.
  • Le nonce de chaque signature doit être unique ; le réutiliser révèle la clé privée.
  • La PlayStation 3 (nonce constant) en est l'illustration ; la parade est le nonce déterministe (RFC 6979).