Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. WeltenzyklopÀdie
  2. Elliptic curve digital signature algorithm
Elliptic curve digital signature algorithm 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

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

[modifier | modifier le code]

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

[modifier | modifier le code]

Soit une courbe de formule y 2 = x 3 + a x + b {\displaystyle y^{2}=x^{3}+ax+b} {\displaystyle y^{2}=x^{3}+ax+b}. 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 O {\displaystyle O} {\displaystyle O} 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 Z / n Z {\displaystyle \mathbb {Z} /n\mathbb {Z} } {\displaystyle \mathbb {Z} /n\mathbb {Z} } 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 k − 1  mod  n {\displaystyle k^{-1}{\text{ mod }}n} {\displaystyle k^{-1}{\text{ mod }}n} lorsque k {\displaystyle k} {\displaystyle k} est un entier entre 1 et n-1 dĂ©signe l'inverse de k {\displaystyle k} {\displaystyle k} dans le corps Z / n Z {\displaystyle \mathbb {Z} /n\mathbb {Z} } {\displaystyle \mathbb {Z} /n\mathbb {Z} }.

Préparation des clés

[modifier | modifier le code]
  • Choisir un entier s entre 1 {\displaystyle 1} {\displaystyle 1} et n − 1 {\displaystyle n-1} {\displaystyle n-1} qui sera la clĂ© privĂ©e.
  • Calculer Q = s G {\displaystyle Q=sG} {\displaystyle Q=sG} en utilisant l'Ă©lĂ©ment de la courbe elliptique.
  • La clĂ© publique est Q et la clĂ© privĂ©e est s.

Signature

[modifier | modifier le code]
  • 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 ( i ,   j ) = k   G {\displaystyle (i,~j)=k~G} {\displaystyle (i,~j)=k~G}
  • Calculer x = i   mod   n {\displaystyle x=i~{\bmod {~}}n} {\displaystyle x=i~{\bmod {~}}n} ; si x = 0 {\displaystyle x=0} {\displaystyle x=0}, aller Ă  la premiĂšre Ă©tape
  • Calculer y = k − 1 ( H ( m ) + s x )   mod   n {\displaystyle y=k^{-1}(H(m)+sx)~{\bmod {~}}n} {\displaystyle y=k^{-1}(H(m)+sx)~{\bmod {~}}n} 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 y = 0 {\displaystyle y=0} {\displaystyle y=0}, aller Ă  la premiĂšre Ă©tape
  • La signature est la paire (x, y).

Comme indiquĂ© dans les normes, il est crucial que, non seulement k {\displaystyle k} {\displaystyle k} soit secret (sinon on peut trouver s {\displaystyle s} {\displaystyle s} Ă  partir de la signature et y = k − 1 ( H ( m ) + s x ) {\displaystyle y=k^{-1}(H(m)+sx)} {\displaystyle y=k^{-1}(H(m)+sx)}), mais aussi de choisir un k {\displaystyle k} {\displaystyle k} diffĂ©rent Ă  chaque signature (en tirant k {\displaystyle k} {\displaystyle k} 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 ( x , y ) {\displaystyle (x,y)} {\displaystyle (x,y)} et ( x , y â€Č ) {\displaystyle (x,y')} {\displaystyle (x,y')}, utilisant le mĂȘme k {\displaystyle k} {\displaystyle k} pour deux messages m {\displaystyle m} {\displaystyle m} et m â€Č {\displaystyle m'} {\displaystyle m'}, et comme y − y â€Č = k − 1 ( H ( m ) − H ( m â€Č ) ) {\displaystyle y-y'=k^{-1}(H(m)-H(m'))} {\displaystyle y-y'=k^{-1}(H(m)-H(m'))} (mod n {\displaystyle n} {\displaystyle n}), on trouve k = H ( m ) − H ( m â€Č ) y − y â€Č {\displaystyle k={\frac {H(m)-H(m')}{y-y'}}} {\displaystyle k={\frac {H(m)-H(m')}{y-y'}}} et donc s {\displaystyle s} {\displaystyle s} en utilisant y = k − 1 ( H ( m ) + s x ) {\displaystyle y=k^{-1}(H(m)+sx)} {\displaystyle y=k^{-1}(H(m)+sx)}.

Vérification

[modifier | modifier le code]
  • VĂ©rifier que Q est diffĂ©rent de O {\displaystyle O} {\displaystyle O} (le point Ă  l'infini) et que Q appartient bien Ă  la courbe elliptique
  • VĂ©rifier que nQ donne O {\displaystyle O} {\displaystyle O}
  • ContrĂŽler que x et y sont bien entre 1 et n-1
  • Calculer ( i , j ) = ( H ( m ) y − 1   mod   n ) G + ( x y − 1   mod   n ) Q {\displaystyle (i,j)=(H(m)y^{-1}~{\bmod {~}}n)G+(xy^{-1}~{\bmod {~}}n)Q} {\displaystyle (i,j)=(H(m)y^{-1}~{\bmod {~}}n)G+(xy^{-1}~{\bmod {~}}n)Q}
  • VĂ©rifier que x = i   mod   n {\displaystyle x=i~{\bmod {~}}n} {\displaystyle x=i~{\bmod {~}}n}.

Démonstration

[modifier | modifier le code]

( H ( m ) y − 1   mod   n )   G + ( x y − 1   mod   n )   Q {\displaystyle \left(H(m)y^{-1}~{\bmod {~}}n\right)~G+{\Big (}xy^{-1}~{\bmod {~}}n{\Big )}~Q} {\displaystyle \left(H(m)y^{-1}~{\bmod {~}}n\right)~G+{\Big (}xy^{-1}~{\bmod {~}}n{\Big )}~Q}

= ( H ( m ) y − 1   mod   n ) G + ( x y − 1   mod   n ) s   G {\displaystyle =\left(H(m)y^{-1}~{\bmod {~}}n\right)G+{\Big (}xy^{-1}~{\bmod {~}}n{\Big )}s~G} {\displaystyle =\left(H(m)y^{-1}~{\bmod {~}}n\right)G+{\Big (}xy^{-1}~{\bmod {~}}n{\Big )}s~G}

= ( ( H ( m ) + s x ) y − 1 )   mod   n   G {\displaystyle =\left((H(m)+sx)y^{-1}\right)~{\bmod {~}}n~G} {\displaystyle =\left((H(m)+sx)y^{-1}\right)~{\bmod {~}}n~G}

= ( ( H ( m ) + s x ) k ( H ( m ) + s x ) − 1 )   mod   n   G {\displaystyle =\left(\left(H(m)+sx\right)k(H(m)+sx)^{-1}\right)~{\bmod {~}}n~G} {\displaystyle =\left(\left(H(m)+sx\right)k(H(m)+sx)^{-1}\right)~{\bmod {~}}n~G}

= ( k   mod   n )   G {\displaystyle =\left(k~{\bmod {~}}n\right)~G} {\displaystyle =\left(k~{\bmod {~}}n\right)~G} = k   G {\displaystyle =k~G} {\displaystyle =k~G} = ( i ,   j ) {\displaystyle =(i,~j)} {\displaystyle =(i,~j)}

Donc si x = i   mod   n {\displaystyle x=i~{\bmod {~}}n} {\displaystyle x=i~{\bmod {~}}n}, la signature est vĂ©rifiĂ©e.

Sécurité

[modifier | modifier le code]

Puisque tous les algorithmes connus pour rĂ©soudre le problĂšme du logarithme discret sur les courbes elliptiques sont en O ( n ) {\displaystyle O({\sqrt {n}})} {\displaystyle O({\sqrt {n}})} (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 F q {\displaystyle \mathbb {F} _{q}} {\displaystyle \mathbb {F} _{q}}, oĂč q ≈ 2 256 {\displaystyle q\approx 2^{256}} {\displaystyle q\approx 2^{256}}.

Intégration

[modifier | modifier le code]

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 F p {\displaystyle \mathbb {F} _{p}} {\displaystyle \mathbb {F} _{p}}, nommées P-192, P-224, P-256, P-384, P-521, dix courbes sur cinq corps finis de la forme F 2 m {\displaystyle \mathbb {F} _{2^{m}}} {\displaystyle \mathbb {F} _{2^{m}}} [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]. Cela est repris et complĂ©tĂ© en y ajoutant, les courbes brainpoolP256r1, brainpoolP384r1 et brainpoolP512r1 (RFC 5639[9]) dans le Guide des mĂ©canismes cryptographiques de 2020, et les courbes Curve25519 et Curve448 (RFC 7748[10]) dans le document Guide de sĂ©lection d'algorithmes cryptographiques de 2021.

Notes et références

[modifier | modifier le code]
  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".
  9. ↑ (en) Request for comments no 5639
  10. ↑ (en) Request for comments no 7748

Annexes

[modifier | modifier le code]

Articles connexes

[modifier | modifier le code]
  • EdDSA, autre signature utilisant une courbe elliptique et basĂ©e sur la courbe d'Edwards tordue
  • Curve25519, basĂ©e sur edDSA et protĂ©gĂ©e contre les gĂ©nĂ©rateurs de nombres pseudo-alĂ©atoires dĂ©faillants

Liens externes

[modifier | modifier le code]
  • « ECDSA, technologie clĂ© de bitcoin Â» (version du 15 mars 2016 sur Internet Archive).
v Â· m
Bitcoin
  • Histoire
  • Statut lĂ©gal
  • Économie
Personnes
  • Gavin Andresen
  • Andreas Antonopoulos
  • Adam Back
  • Wences Casares
  • Tim Draper
  • Hal Finney
  • Mark KarpelĂšs
  • Bobby C. Lee (en)
  • Satoshi Nakamoto
  • Charlie Shrem
  • Nick Szabo
  • Amir Taaki
  • Ross Ulbricht
  • Roger Ver
  • Cody Wilson
  • Jumeaux Winklevoss (en)
  • Craig Steven Wright
Logo Bitcoin
Technologies
  • Base58
  • RĂ©seau Bitcoin
  • ChaĂźne de blocs
  • PiĂšces de couleur (pt)
  • Crypto-monnaie
  • Bitcoin ATM (en)
  • Service de mĂ©lange de crypto-monnaie
  • ECDSA
  • Lightning
  • P2P
  • Preuve de travail
  • SHA-2
  • SegWit
  • UTXO
Échanges
  • ANX (zh)
  • Bitstamp
  • BTC-e
  • BTC China (en)
  • Coinsecure (Inde)
  • Coinbase
  • Huobi (en)
  • ItBit (en)
  • Crypto.com
  • Kraken
  • LocalBitcoins (en)
  • OKCoin
Clients Logiciels
  • Bitcoin Core (principal)
  • Bitcoin Classic
  • Bitcoin Knots
  • Bitcoin Unlimited
  • Bitcoin XT
  • Electrum (de)
Connexes
  • RĂ©serve stratĂ©gique de bitcoins
  • icĂŽne dĂ©corative Portail de la cryptologie
  • icĂŽne dĂ©corative Portail des cryptomonnaies
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Elliptic_curve_digital_signature_algorithm&oldid=221020241 Â».
CatĂ©gories :
  • Algorithme de cryptographie asymĂ©trique
  • Signature Ă©lectronique
CatĂ©gories cachĂ©es :
  • Article contenant un appel Ă  traduction en anglais
  • Article contenant un appel Ă  traduction en portugais
  • Article contenant un appel Ă  traduction en chinois
  • Article contenant un appel Ă  traduction en allemand
  • Portail:Cryptologie/Articles liĂ©s
  • Portail:Informatique/Articles liĂ©s
  • Portail:Cryptomonnaies/Articles liĂ©s

  • indonesia
  • Polski
  • Ű§Ù„Ű±ÙŠŰ©
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • Ù…Ű”Ű±
  • Nederlands
  • æœŹèȘž
  • PortuguĂȘs
  • Sinugboanong Binisaya
  • Svenska
  • ĐŁĐșŃ€Đ°Ń—ĐœŃĐșа
  • Tiáșżng Việt
  • Winaray
  • äž­æ–‡
  • РуссĐșĐž
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id