- 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:
- 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.
- Wähle eine zufällige Ganzzahl k von [1,n − 1].
- Berechne r = x1(mod n), wobei (x1,y1) = kG. Wenn r = 0, gehe zum Schritt 2 zurück.
- Berechne s = k − 1(z + rdA)(mod n). Wenn s = 0, gehe zum Schritt 2 zurück.
- 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 s − s' = k − 1(z − z') entspricht (alle Operationen in diesem Absatz werden mit modulo n durchgeführt) daher kann dann auch berechnet werden. Weil s = k − 1(z + rdA) entspricht kann der Angreifer auch den privaten Schlüssel 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)):
- Überprüfe, ob QA ungleich O ist und dass die Koordinaten ansonsten valide sind
- Überprüfe, ob QA auf der Kurve liegt
- Überprüfe, ob nQA = O
Danach macht Bob folgende Schritte:
- Überprüfe, ob r und s Ganzzahlen sind [1,n − 1]. Wenn dies nicht der Fall ist, ist die Signatur ungültig.
- 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.
- Berechne w = s − 1(mod n).
- Berechne u1 = zw(mod n) und u2 = rw(mod n).
- Berechne (x1,y1) = u1G + u2QA.
- 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
- OpenSSH: Seit Version 5.7 (24. Januar 2011) ist ECDSA und der Schlüsselaustausch via Elliptic Curve Diffie-Hellman (ECDH) aus dem RFC 5656 implementiert. [9][10]
- OpenSSL: Seit Version 0.9.8 (5. Juli 2005) implementiert.[11]
Weblinks
- ↑ FIPS 186-3, pp. 19 and 26
- ↑ http://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf, page 123–128
- ↑ http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf Das Doppel-Basen-Zahlen-System in der Elliptischen Kurven-Kryptographie (engl.)
- ↑ http://caccioppoli.mac.rub.de/website/papers/multiexp.pdf On the complexity of certain multi-exponentiation techniques in cryptography
- ↑ NIST: Digital Signature Standard (DSS). (http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf).
- ↑ http://www.secg.org/index.php?action=secg,about
- ↑ ANSI X9.62-2005, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)
- ↑ KCDSA
- ↑ OpenSSH 5.7 has just been released. OpenBSD, abgerufen am 19. August 2011.
- ↑ OpenSSH 5.7: Schneller durch die Kurve. Heise.de, 25. Januar 2011, abgerufen am 19. August 2011.
- ↑ 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.