Elliptic Curve DSA

Elliptic Curve DSA

Der Elliptic Curve Digital Signature Algorithmus (ECDSA) (deutsch: digitaler Signatur-Algorithmus mit elliptischen Kurven) ist eine Variante des Digital Signature Algorithm (DSA), der Elliptische-Kurven-Kryptographie verwendet.

Inhaltsverzeichnis

Unterschiede zum normalen DSA-Verfahren

Generell wird bei der Elliptische-Kurven-Kryptographie eine Faustregel angewandt, bei der die Größe des Public Keys (in Bit) etwa dem Doppelten des Sicherheitsniveaus entsprechen sollte. Bei einer Schlüssellänge von 80 Bits würde es bedeuten, dass der Angreifer 280 Operationen durchführen muss, um den privaten Schlüssel zu finden. Im Verhältnis entspricht ein 1024 Bit großer DSA-Schlüssel etwa einem 160-Bit-Schlüssel im ECDSA-Verfahren. Die Signatur-Größe ist jedoch bei beiden gleich groß: 4t Bit, wobei t das Sicherheitsniveau in Bit ist, d.h. 320 Bits für ein Sicherheitsniveau von 80 Bits.

Algorithmus zur Erzeugung einer Signatur

Alice möchte eine signierte Nachricht an Bob schreiben. Zu Beginn muss man sich auf die Kurvenparameter (q,FR,a,b,[DomainParameterSeed,]G,n,h) einigen. q ist die Feldgröße; FR ist die Angabe der verwendeteten Basis; a und b sind zwei Feld-Elemente, die die Gleichung der Kurve beschreiben; DomainParameterSeed ist eine mögliche, zufällig erzeugte Zeichenkette, die vorliegt, wenn die Kurve nachweislich zufällig erzeugt wurde;G ist die Basis der Primzahl-Ordnung in der Kurve (i.e., G = (xG,yG)); n ist die Reihenfolge im Punkt G; und h ist der Cofaktor (welcher gleich ist im der Kurve dividiert durch n).

Alice muss auch ein Schlüsselpaar verwenden, das für die Elliptische-Kurven-Verschlüsselung geeignet ist. Es besteht aus einem geheimen Schlüssel dA (eine zufällig gewählte Ganzzahl [1,n − 1]) und dem öffentlichen Schlüssel QA (wobei QA = dAG). Nimm an Ln ist die Bit-Länge der Gruppen Reinfolge von n.

Wenn Alice die Nachricht mit m verschlüsselt, geht sie nach den folgenden Schritten vor:

  1. Berechne e = HASH(m), wobei HASH eine Kryptologische Hashfunktion ist, wie z.B. SHA-1, und lasse z die Bit-Werte ganz links von Ln dem Wert e entsprechen.
  2. Wähle eine zufällige Ganzzahl k von [1,n − 1].
  3. Berechne r = x1(mod n), wobei (x1,y1) = kG. Wenn r = 0, gehe zum Schritt 2 zurück.
  4. Berechne s = k − 1(z + rdA)(mod n). Wenn s = 0, gehe zum Schritt 2 zurück.
  5. Die Signatur ist das Paar (r,s).

Wenn s berechnet wird, sollte der Wert z, der aus HASH(m) stammt, in eine Ganzzahl umgewandelt werden. Beachte, dass z kann größer n sein aber nicht länger[1].

Es ist entscheidend, dass verschiedene k Werte für verschiedene Signaturen verwendet werden, ansonsten kann die Gleichung im Schritt 4 für dA gelöst werden, der geheime Schlüssel: Es sind zwei Signaturen gegeben (r,s) und (r,s'), mit dem jedes Mal unbekannten k für verschiedene bekannte Nachrichten-Inhalte m und m'. Ein Angreifer kann dann z und z' berechnen, weil ss' = k − 1(zz') entspricht (alle Operationen in diesem Absatz werden mit modulo n durchgeführt) daher kann dann auch k = \frac{z-z'}{s-s'} berechnet werden. Weil s = k − 1(z + rdA) entspricht kann der Angreifer auch den privaten Schlüssel d_A = \frac{s k - z}{r} herausfinden. Dieser Fehler in der Verschlüsselung wurde z.B. verwendet, um die Verschlüsselung in der Spielkonsole PlayStation 3 zu berechnen und damit den Kopierschutz auszuhebeln.[2]

Signatur-Überprüfungsalgorithmus

Wenn Bob die Echtheit der Signatur von Alice prüfen möchte, muss er eine Kopie des öffentlichen Schlüssels QA haben. Wenn er der Quelle von QA nicht vertraut, muss er den Schlüssel überprüfen. (O beschreibt hierbei das Identitätselement (engl. identity element)):

  1. Überprüfe, ob QA ungleich O ist und dass die Koordinaten ansonsten valide sind
  2. Überprüfe, ob QA auf der Kurve liegt
  3. Überprüfe, ob nQA = O

Danach macht Bob folgende Schritte:

  1. Überprüfe, ob r und s Ganzzahlen sind [1,n − 1]. Wenn dies nicht der Fall ist, ist die Signatur ungültig.
  2. Berechne e = HASH(m), wobei HASH die gleiche Funktion wie bei der Erzeugung der Signatur ist. Nimm an z ist Ln das Bit ganz links von e.
  3. Berechne w = s − 1(mod n).
  4. Berechne u1 = zw(mod n) und u2 = rw(mod n).
  5. Berechne (x1,y1) = u1G + u2QA.
  6. Die Signatur ist gültig, wenn r = x1(mod n), ansonsten ist sie nicht valide.

Beachte bei der Verwendung des Straus's Algorithmus (auch bekannt als der Shamir's Trick) bezüglich der Summe von skalaren Multiplikationen (u1G + u2QA) [3][4]

Normen und Standards

NIST

Das US-amerikanische National Institute of Standards and Technology empfiehlt im Standard FIPS 186-3 fünfzehn elliptische Kurven. [5]

SECG

Die "Standards for Efficient Cryptography Group" (SECG) ist ein 1998 gegründetes Konsortium zur Förderung des Einsatzes von ECC-Algorithmen.[6]

ANSI

ANSI X9.62-2005 ist die aktuelle Standardisierung des ECDSA.[7]

EC-GDSA

Das Bundesamt für Sicherheit in der Informationstechnik (BSI) hat in Kooperation mit Brainpool und secunet im März 2010 IETF-RFC 5639 herausgebracht. In diesem Vorschlag "Elliptic Curve Cryptography (ECC) Brainpool Standard - Curves and Curve Generation" ist besonders die unterschiedliche Wahl der Bitlänge 512 zu erwähnen, ein Gegensatz zur von vielen anderen Institutionen (z.b. NIST, SECG) präferierten Bitlänge 521.

EC-KCDSA

Kurven welche der koreanische Staat als Standard definiert hat.[8]

Implementierungen

Open Source

Weblinks

  1. FIPS 186-3, pp. 19 and 26
  2. http://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf, page 123–128
  3. http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf Das Doppel-Basen-Zahlen-System in der Elliptischen Kurven-Kryptographie (engl.)
  4. http://caccioppoli.mac.rub.de/website/papers/multiexp.pdf On the complexity of certain multi-exponentiation techniques in cryptography
  5. NIST: Digital Signature Standard (DSS). (http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf).
  6. http://www.secg.org/index.php?action=secg,about
  7. ANSI X9.62-2005, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)
  8. KCDSA
  9. OpenSSH 5.7 has just been released. OpenBSD, abgerufen am 19. August 2011.
  10. OpenSSH 5.7: Schneller durch die Kurve. Heise.de, 25. Januar 2011, abgerufen am 19. August 2011.
  11. http://www.openssl.org/news/changelog.html

Literaturverweise

  • Accredited Standards Committee X9, American National Standard X9.62-2005, Public Key Cryptography for the Financial Services Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA), November 16, 2005.
  • Certicom Research, Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography, Version 2.0, May 21, 2009.
  • López, J. and Dahab, R. An Overview of Elliptic Curve Cryptography, Technical Report IC-00-10, State University of Campinas, 2000.
  • Daniel J. Bernstein, Pippenger's exponentiation algorithm, 2002.
  • Daniel R. L. Brown, Generic Groups, Collision Resistance, and ECDSA, Designs, Codes and Cryptography, 35, 119-152, 2005. ePrint version
  • Ian F. Blake, Gadiel Seroussi, and Nigel P. Smart, editors, Advances in Elliptic Curve Cryptography, London Mathematical Society Lecture Note Series 317, Cambridge University Press, 2005.
  • Darrel Hankerson, Alfred Menezes and Scott Vanstone, Guide to Elliptic Curve Cryptography, Springer, Springer, 2004.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Elliptic Curve DSA — (ECDSA) is a variant of the Digital Signature Algorithm (DSA) which operates on elliptic curve groups. As with elliptic curve cryptography in general, the bit size of the public key believed to be needed for ECDSA is about twice the size of the… …   Wikipedia

  • Elliptic Curve Cryptography — Elliptische Kurve über Unter Elliptic Curve Cryptography (ECC) oder deutsch Elliptische Kurven Kryptographie versteht man asymmetrische Kryptosysteme, die Operationen auf elliptischen Kurven über endlichen Körpern v …   Deutsch Wikipedia

  • Elliptic curve — In mathematics, an elliptic curve is a smooth, projective algebraic curve of genus one, on which there is a specified point O . An elliptic curve is in fact an abelian variety mdash; that is, it has a multiplication defined algebraically with… …   Wikipedia

  • Elliptic curve cryptography — (ECC) is an approach to public key cryptography based on the algebraic structure of elliptic curves over finite fields. The use of elliptic curves in cryptography was suggested independently by Neal Koblitz[1] and Victor S. Miller[2] in 1985.… …   Wikipedia

  • Elliptic Curve Digital Signature Algorithm — (ECDSA) est un algorithme de signature numérique. C est une variante du standard DSA qui à la différence de l algorithme d origine utilise la cryptographie sur les courbes elliptiques. Les avantages de ECDSA sur DSA et RSA sont des longueurs de… …   Wikipédia en Français

  • 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. Sommaire 1 Introduction 2 Algorithme 2.1 Préparation des clé …   Wikipédia en Français

  • Counting points on elliptic curves — An important aspect in the study of elliptic curves is devising effective ways of counting points on the curve. There have been several approaches to do so, and the algorithms devised have proved to be useful tools in the study of various fields… …   Wikipedia

  • Digital Signature Algorithm — The Digital Signature Algorithm (DSA) is a United States Federal Government standard or FIPS for digital signatures. It was proposed by the National Institute of Standards and Technology (NIST) in August 1991 for use in their Digital Signature… …   Wikipedia

  • List of mathematics articles (E) — NOTOC E E₇ E (mathematical constant) E function E₈ lattice E₈ manifold E∞ operad E7½ E8 investigation tool Earley parser Early stopping Earnshaw s theorem Earth mover s distance East Journal on Approximations Eastern Arabic numerals Easton s… …   Wikipedia

  • Topics in cryptography — This article is intended to be an analytic glossary , or alternatively, an organized collection of annotated pointers.Classical ciphers*Autokey cipher *Permutation cipher*Polyalphabetic substitution **Vigenère cipher*Polygraphic substitution… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”