AccueilđŸ‡«đŸ‡·Chercher

Elliptic curve digital signature algorithm

Elliptic Curve Digital Signature Algorithm (ECDSA) est un algorithme de signature numérique à clé publique, variante de DSA. Il fait appel à la cryptographie sur les courbes elliptiques.

Introduction

L’algorithme a Ă©tĂ© proposĂ© en 1992 par Scott Vanstone, en rĂ©ponse Ă  un appel d'offres pour les signatures numĂ©riques du National Institute of Standards and Technology (NIST). Vanstone fonda la sociĂ©tĂ© Certicom en 1985, et son entreprise dĂ©tient la plupart des brevets des algorithmes Ă  base de courbes elliptiques. Les avantages de ECDSA sur DSA et RSA sont des longueurs de clĂ©s plus courtes et des opĂ©rations de signature et de chiffrement plus rapides.

ECDSA est défini par le standard ANSI X9.62-1998, Public Key Cryptography For The Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)[1].

Algorithme

Soit une courbe de formule . C'est une courbe elliptique sur un corps d'entiers fini modulo p avec p un nombre premier et un point G de la courbe (appelé point de base). L'ordre de G est n, le plus petit entier tel que nG donne le point à l'infini de la courbe et élément neutre du groupe commutatif sur les points de la courbe. Pour que tous les entiers entre 1 et n-1 soient inversibles modulo n, il est impératif que l'anneau soit un corps, et donc que n soit un nombre premier (c'est une conséquence du théorÚme de Bézout). Ainsi, dans ce qui suit, la notation lorsque est un entier entre 1 et n-1 désigne l'inverse de dans le corps .

Préparation des clés

  • Choisir un entier s entre et qui sera la clĂ© privĂ©e.
  • Calculer en utilisant l'Ă©lĂ©ment de la courbe elliptique.
  • La clĂ© publique est Q et la clĂ© privĂ©e est s.

Signature

  • Choisir de maniĂšre alĂ©atoire un nombre k entre 1 et n-1
    • voir Annexe B5 de FIPS 186-4[2] pour les mĂ©thodes recommandĂ©es de gĂ©nĂ©ration de ce nombre.
    • Sony, lors de la sĂ©curisation de la PS3, n'a pas suffisamment pris de soin lors du choix de ce nombre ce qui a permis de retrouver la clĂ© privĂ©e[3] - [4]
    • EdDSA utilise une mĂ©thode dĂ©terministe pour calculer ce nonce cryptographique
    • Pour la signature des transactions de cryptomonnaies, certaines implĂ©mentations[5] utilisent un calcul de type HMAC pour obtenir k
  • Calculer
  • Calculer ; si , aller Ă  la premiĂšre Ă©tape
  • Calculer oĂč H(m) est le rĂ©sultat d'un hachage cryptographique sur le message m Ă  signer, souvent SHA-1 (le NIST et l'ANSSI conseillent de ne plus utiliser SHA-1 mais SHA-256 ou SHA-512, ethereum utilise Keccak-256, une variante de SHA-3)
  • Si , aller Ă  la premiĂšre Ă©tape
  • La signature est la paire (x, y).

Comme indiquĂ© dans les normes, il est crucial que, non seulement soit secret (sinon on peut trouver Ă  partir de la signature et ), mais aussi de choisir un diffĂ©rent Ă  chaque signature (en tirant au hasard, la probabilitĂ© de tomber sur un nombre dĂ©jĂ  utilisĂ© est du mĂȘme ordre que de trouver la clĂ© privĂ©e par hasard) car sinon, on peut trouver la clĂ© privĂ©e : avec deux signatures et , utilisant le mĂȘme pour deux messages et , et comme (mod ), on trouve et donc en utilisant .

VĂ©rification

  • VĂ©rifier que Q est diffĂ©rent de (le point Ă  l'infini) et que Q appartient bien Ă  la courbe elliptique
  • VĂ©rifier que nQ donne
  • ContrĂŽler que x et y sont bien entre 1 et n-1
  • Calculer
  • VĂ©rifier que .

DĂ©monstration





Donc si , la signature est vérifiée.

Sécurité

Puisque tous les algorithmes connus pour rĂ©soudre le problĂšme du logarithme discret sur les courbes elliptiques sont en (baby-step giant-step, algorithme de rho Pollard), la taille du corps doit donc ĂȘtre approximativement deux fois plus grande que le paramĂštre de sĂ©curitĂ© voulu. Pour un degrĂ© de sĂ©curitĂ© de 128-bits (AES-128, RSA-3072), on prendra une courbe sur un corps , oĂč .

Intégration

En pratique, l'ECDSA repose souvent sur des courbes recommandées par des organisations comme le NIST ou Certicom.

Le NIST recommande par exemple quinze courbes elliptiques différentes sur dix corps différents. Cinq courbes sont recommandées sur cinq corps finis d'ordre p premier , nommées P-192, P-224, P-256, P-384, P-521, dix courbes sur cinq corps finis de la forme [6].

L'ANSSI recommande l'utilisation de la courbe FRP256v1, dont les paramÚtres ont été publiés au Journal Officiel[7] en 2011, et les courbes P-256, P-384, P-521, B-283, B-409 et B-571 définies dans le FIPS 186-2[8].

Notes et références

  1. draft ANSI X9.62-1998
  2. http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
  3. BBC News Technology article sur la sécurisation de la PS3
  4. Engadget: valeur du nombre aléatoire k utilisé pour la signature des logiciels de la PS3.
  5. voir fonction deterministic_generate_kcode source ethereum en python
  6. FIPS PUB 186-4, Digital Signature Standard (DSS)
  7. Avis relatif aux paramĂštres de courbes elliptiques dĂ©finis par l’État français, Journal officiel n°241 du 16/10/2011.
  8. Référentiel Général de Sécurité, Annexe B1, "Mécanismes cryptographiques RÚgles et recommandations concernant le choix et le dimensionnement des mécanismes cryptographiques".

Annexes

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.