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 DSA – Wikipedia
Elliptic Curve DSA – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie

Der Elliptic Curve Digital Signature Algorithm (ECDSA) ist eine Variante des Digital Signature Algorithm (DSA), die Elliptische-Kurven-Kryptographie verwendet.

Unterschiede zum normalen DSA-Verfahren

[Bearbeiten | Quelltext bearbeiten]

Generell gilt bei der Elliptische-Kurven-Kryptographie die Faustregel, dass die Bitlänge des Erzeugers der verwendeten Untergruppe etwa dem Doppelten des Sicherheitsniveaus  t {\displaystyle t} {\displaystyle t} entsprechen sollte. Bei einem Sicherheitsniveau von t = 80 {\displaystyle t=80} {\displaystyle t=80} Bit, bei dem ein Angreifer 2 80 {\displaystyle 2^{80}} {\displaystyle 2^{80}} elementare Operationen durchführen muss, um den privaten Schlüssel zu finden, hätte ein DSA-Schlüssel eine Länge von circa 1024 Bit, ein ECDSA-Schlüssel aber nur eine Länge von 160 Bit. Eine Signatur ist jedoch bei beiden Verfahren gleich lang: 4 t {\displaystyle 4t} {\displaystyle 4t} Bit, also 320 Bit für ein Sicherheitsniveau von 80 Bit.

Schlüsselerzeugung

[Bearbeiten | Quelltext bearbeiten]

Alice möchte eine signierte Nachricht an Bob schreiben. Zu Beginn muss man sich auf die Kurvenparameter ( q , F R , a , b , D o m a i n P a r a m e t e r S e e d , G , n , h ) {\displaystyle (q,FR,a,b,DomainParameterSeed,G,n,h)} {\displaystyle (q,FR,a,b,DomainParameterSeed,G,n,h)} einigen. Die ersten Parameter beschreiben die verwendete Kurve: q {\displaystyle q} {\displaystyle q} ist die Ordnung des Körpers, auf dem die Kurve definiert ist; F R {\displaystyle FR} {\displaystyle FR} ist die Angabe der verwendeten Basis; a {\displaystyle a} {\displaystyle a} und b {\displaystyle b} {\displaystyle b} sind zwei Körperelemente, die die Gleichung der Kurve beschreiben; D o m a i n P a r a m e t e r S e e d {\displaystyle DomainParameterSeed} {\displaystyle DomainParameterSeed} ist eine mögliche, zufällig erzeugte Zeichenkette, die vorliegt, wenn die Kurve nachweislich zufällig erzeugt wurde. Weiterhin werden benötigt:

  • G {\displaystyle G} {\displaystyle G}, ein fester Erzeuger der n {\displaystyle n} {\displaystyle n}-Torsionsuntergruppe der Kurve (i. e., G = ( x G , y G ) {\displaystyle G=(x_{G},y_{G})} {\displaystyle G=(x_{G},y_{G})});
  • n {\displaystyle n} {\displaystyle n}, die Ordnung des Punktes G {\displaystyle G} {\displaystyle G}, und h {\displaystyle h} {\displaystyle h}, der Cofaktor (gleich der Ordnung der Kurve geteilt durch die Gruppenordnung n {\displaystyle n} {\displaystyle n});
  • L n {\displaystyle L_{n}} {\displaystyle L_{n}}, die Bitlänge der Gruppenordnung n {\displaystyle n} {\displaystyle n};
  • eine kryptologische Hashfunktion HASH, wie z. B. SHA-2.

Um ihr Schlüsselpaar zu generieren, erzeugt Alice als geheimen Schlüssel d A {\displaystyle d_{A}} {\displaystyle d_{A}} eine zufällige Ganzzahl im Intervall [ 1 , n − 1 ] {\displaystyle [1,n-1]} {\displaystyle [1,n-1]}. Der zugehörige öffentliche Schlüssel ist Q A = d A G {\displaystyle Q_{A}=d_{A}G} {\displaystyle Q_{A}=d_{A}G}.

Algorithmus zur Erzeugung einer Signatur

[Bearbeiten | Quelltext bearbeiten]

Will Alice eine Nachricht m {\displaystyle m} {\displaystyle m} signieren, geht sie folgendermaßen vor:

  1. Berechne e = HASH ( m ) {\displaystyle e={\textrm {HASH}}(m)} {\displaystyle e={\textrm {HASH}}(m)} und definiere z {\displaystyle z} {\displaystyle z} als die L n {\displaystyle L_{n}} {\displaystyle L_{n}} höchstwertigen Bits von e {\displaystyle e} {\displaystyle e}.
  2. Wähle eine zufällige Ganzzahl k {\displaystyle k} {\displaystyle k} von [ 1 , n − 1 ] {\displaystyle [1,n-1]} {\displaystyle [1,n-1]}.
  3. Berechne r = x 1 ( mod n ) {\displaystyle r=x_{1}{\pmod {n}}} {\displaystyle r=x_{1}{\pmod {n}}}, wobei ( x 1 , y 1 ) = k G {\displaystyle (x_{1},y_{1})=kG} {\displaystyle (x_{1},y_{1})=kG}. Wenn r = 0 {\displaystyle r=0} {\displaystyle r=0}, gehe zum Schritt 2 zurück.
  4. Berechne s = k − 1 ( z + r d A ) ( mod n ) {\displaystyle s=k^{-1}(z+rd_{A}){\pmod {n}}} {\displaystyle s=k^{-1}(z+rd_{A}){\pmod {n}}}. Wenn s = 0 {\displaystyle s=0} {\displaystyle s=0}, gehe zum Schritt 2 zurück.
  5. Die Signatur ist das Paar ( r , s ) {\displaystyle (r,s)} {\displaystyle (r,s)}.

Wenn s {\displaystyle s} {\displaystyle s} berechnet wird, sollte der Wert z {\displaystyle z} {\displaystyle z}, der aus HASH ( m ) {\displaystyle {\textrm {HASH}}(m)} {\displaystyle {\textrm {HASH}}(m)} stammt, in eine Ganzzahl umgewandelt werden. Dabei ist zu beachten, dass z {\displaystyle z} {\displaystyle z} größer als n {\displaystyle n} {\displaystyle n} sein kann, aber nicht länger.[1]

Es ist entscheidend, dass für verschiedene Signaturen auch verschiedene k {\displaystyle k} {\displaystyle k}-Werte verwendet werden, ansonsten kann die Gleichung im Schritt 4 nach dem geheimen Schlüssel d A {\displaystyle d_{A}} {\displaystyle d_{A}} aufgelöst werden: Aus zwei Signaturen ( r , s ) {\displaystyle (r,s)} {\displaystyle (r,s)} und ( r , s ′ ) {\displaystyle (r,s')} {\displaystyle (r,s')}, die mit demselben, unbekannten k {\displaystyle k} {\displaystyle k} verschiedene bekannte Nachrichten m {\displaystyle m} {\displaystyle m} und m ′ {\displaystyle m'} {\displaystyle m'} signieren, kann ein Angreifer z {\displaystyle z} {\displaystyle z} und z ′ {\displaystyle z'} {\displaystyle z'} berechnen. Weil s − s ′ = k − 1 ( z − z ′ ) {\displaystyle s-s'=k^{-1}(z-z')} {\displaystyle s-s'=k^{-1}(z-z')} entspricht (alle Operationen in diesem Absatz werden mit modulo n {\displaystyle n} {\displaystyle n} durchgeführt), kann dann auch k = z − z ′ s − s ′ {\displaystyle k={\frac {z-z'}{s-s'}}} {\displaystyle k={\frac {z-z'}{s-s'}}} berechnet werden. Aus k {\displaystyle k} {\displaystyle k} kann der Angreifer wegen s = k − 1 ( z + r d A ) {\displaystyle s=k^{-1}(z+rd_{A})} {\displaystyle s=k^{-1}(z+rd_{A})} auch den privaten Schlüssel d A = s k − z r {\displaystyle d_{A}={\frac {sk-z}{r}}} {\displaystyle d_{A}={\frac {sk-z}{r}}} berechnen. Dieser Fehler in der Verschlüsselung wurde z. B. verwendet, um die Verschlüsselung in der Spielkonsole PlayStation 3 zu berechnen und damit die Beschränkung auf offiziell veröffentlichte Software auszuhebeln.[2]

Überprüfung einer Signatur

[Bearbeiten | Quelltext bearbeiten]

Wenn Bob die Echtheit einer von Alice erzeugten Signatur prüfen möchte, muss er eine Kopie ihres öffentlichen Schlüssels Q A {\displaystyle Q_{A}} {\displaystyle Q_{A}} besitzen. Wenn er sich nicht sicher ist, dass Q A {\displaystyle Q_{A}} {\displaystyle Q_{A}} ordnungsgemäß erzeugt wurde, muss er überprüfen, ob es sich wirklich um einen Schlüssel handelt (das neutrale Element wird mit O {\displaystyle O} {\displaystyle O} bezeichnet):

  1. Überprüfe, ob Q A {\displaystyle Q_{A}} {\displaystyle Q_{A}} ungleich O {\displaystyle O} {\displaystyle O} ist und dass die Koordinaten ansonsten valide sind
  2. Überprüfe, ob Q A {\displaystyle Q_{A}} {\displaystyle Q_{A}} auf der Kurve liegt
  3. Überprüfe, ob n Q A = O {\displaystyle nQ_{A}=O} {\displaystyle nQ_{A}=O}. Hier wird überprüft, ob Q A {\displaystyle Q_{A}} {\displaystyle Q_{A}} ein Vielfaches des Erzeugers G {\displaystyle G} {\displaystyle G} ist. Falls in den Kurvenparametern der Kofaktor h = 1 {\displaystyle h=1} {\displaystyle h=1} ist, kann dieser Schritt weggelassen werden.

Danach führt Bob folgende Schritte durch:

  1. Überprüfe, ob r {\displaystyle r} {\displaystyle r} und s {\displaystyle s} {\displaystyle s} ganze Zahlen sind und im Intervall [ 1 , n − 1 ] {\displaystyle [1,n-1]} {\displaystyle [1,n-1]} liegen. Wenn dies nicht der Fall ist, ist die Signatur ungültig.
  2. Berechne e = HASH ( m ) {\displaystyle e={\textrm {HASH}}(m)} {\displaystyle e={\textrm {HASH}}(m)}, wobei HASH die gleiche Funktion wie bei der Erzeugung der Signatur ist. Bezeichne mit z {\displaystyle z} {\displaystyle z} die L n {\displaystyle L_{n}} {\displaystyle L_{n}} höchstwertigen Bits von e {\displaystyle e} {\displaystyle e}.
  3. Berechne w = s − 1 ( mod n ) {\displaystyle w=s^{-1}{\pmod {n}}} {\displaystyle w=s^{-1}{\pmod {n}}}.
  4. Berechne u 1 = z w ( mod n ) {\displaystyle u_{1}=zw{\pmod {n}}} {\displaystyle u_{1}=zw{\pmod {n}}} und u 2 = r w ( mod n ) {\displaystyle u_{2}=rw{\pmod {n}}} {\displaystyle u_{2}=rw{\pmod {n}}}.
  5. Berechne ( x 1 , y 1 ) = u 1 G + u 2 Q A {\displaystyle (x_{1},y_{1})=u_{1}G+u_{2}Q_{A}} {\displaystyle (x_{1},y_{1})=u_{1}G+u_{2}Q_{A}}.
  6. Die Signatur ist gültig, wenn r = x 1 ( mod n ) {\displaystyle r=x_{1}{\pmod {n}}} {\displaystyle r=x_{1}{\pmod {n}}}, ansonsten ist sie ungültig.

Mit Hilfe von Straus’ Algorithmus (auch bekannt als Shamir's Trick) kann die Summe zweier skalarer Multiplikationen ( u 1 G + u 2 Q A {\displaystyle u_{1}G+u_{2}Q_{A}} {\displaystyle u_{1}G+u_{2}Q_{A}}) schneller berechnet werden.[3][4]

Normen und Standards

[Bearbeiten | Quelltext bearbeiten]

ANSI

[Bearbeiten | Quelltext bearbeiten]

Der Standard X9.62-2005 des American National Standards Institute ist die maßgebliche Spezifikation von ECDSA, die von den nachfolgend genannten Standards als Referenz verwendet wird.[5]

NIST

[Bearbeiten | Quelltext bearbeiten]

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

SECG

[Bearbeiten | Quelltext bearbeiten]

Die Standards for Efficient Cryptography Group (SECG) ist ein 1998 gegründetes Konsortium zur Förderung des Einsatzes von ECC-Algorithmen, welches im Dokument SEC1 auch den ECDSA spezifiziert.[7]

ISO/IEC

[Bearbeiten | Quelltext bearbeiten]

Die International Organization for Standardization und die International Electrotechnical Commission definiert ECDSA in dem internationalen Standard ISO/IEC 14888-3[8] (der ältere Standard 15946-2 wurde 2007 zurückzogen). Darin werden neben EC-DSA (die im Standard verwendete Abkürzung) noch die Varianten EC-GDSA (Elliptic Curve German Digital Signature Algorithm), EC-KCDSA (Korean Certificate-based Digital Signature Algorithm), EC-RDSA (Russian Digital Signature Algorithm), EC-SDSA und EC-FSDSA (Schnorr und Full Schnorr Digital Signature Algorithm) spezifiziert.

BSI

[Bearbeiten | Quelltext bearbeiten]

Das Bundesamt für Sicherheit in der Informationstechnik legt in der Technischen Richtlinie TR-03111[9] Vorgaben und Empfehlungen u. a. für die Implementierung des ECDSA fest.

Implementierungen

[Bearbeiten | Quelltext bearbeiten]

Open Source

[Bearbeiten | Quelltext bearbeiten]
  • OpenSSH: Ab Version 5.7 (24. Januar 2011) ist ECDSA und der Schlüsselaustausch via Elliptic Curve Diffie-Hellman (ECDH) aus dem RFC 5656[10] implementiert.[11][12]
  • OpenSSL: Ab Version 0.9.8 (5. Juli 2005) implementiert.[13]
  • BouncyCastle: Ab 10. März 2014[14]
  • GnuTLS
  • .Net-Framework ab Version 3.5[15]
  • Bitcoin[16]

Literatur

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

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Digital Signature Standard; includes info on ECDSA. csrc.nist.gov
  • Beispielhafte Implementierung von ECDSA in Excel. infsec.de

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ FIPS 186-4. (PDF; 0,7 MB) NIST, Juli 2013, S. 19 und 26.
  2. ↑ Console Hacking 2010 (Memento vom 15. Dezember 2014 im Internet Archive; PDF; 9 MB) CCC, 27th Chaos Communication Congress, S. 123–128.
  3. ↑ Das Doppel-Basen-Zahlen-System in der Elliptischen Kurven-Kryptografie. (PDF; 0,2 MB) lirmm.fr/~imbert (englisch)
  4. ↑ On the complexity of certain multi-exponentiation techniques in cryptography (PDF) caccioppoli.mac.rub.de @1@2Vorlage:Toter Link/caccioppoli.mac.rub.de (Seite nicht mehr abrufbar, festgestellt im März 2018. Suche in Webarchiven)
  5. ↑ ANSI X9.62-2005, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)
  6. ↑ NIST (Hrsg.): Digital Signature Standard (DSS). (nist.gov [PDF]). 
  7. ↑ www.secg.org – Standards for Efficient Cryptography Group (SECG)
  8. ↑ ISO/IEC 14888-3 (2018)iso.org
  9. ↑ TR-031111: Elliptische-Kurven-Kryptographie (ECC). (PDF) bsi.bund.de
  10. ↑ RFC: 5656 – Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer. Dezember 2009 (englisch).
  11. ↑ OpenSSH 5.7 has just been released. OpenBSD, abgerufen am 19. August 2011. 
  12. ↑ OpenSSH 5.7: Schneller durch die Kurve. Heise.de, 25. Januar 2011, abgerufen am 19. August 2011. 
  13. ↑ openssl.org
  14. ↑ Supported Curves (ECDSA and ECGOST) – Java APIs 1.X. The Legion of the Bouncy Castle, abgerufen am 9. März 2018. 
  15. ↑ ECDsa Class (System.Security.Cryptography). In: msdn.microsoft.com. Abgerufen am 9. März 2018 (englisch). 
  16. ↑ Blair Marshall: How does ECDSA work in Bitcoin. 22. Februar 2018, abgerufen am 12. Oktober 2024 (englisch). 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Elliptic_Curve_DSA&oldid=262989215“
Kategorie:
  • Signaturverfahren
Versteckte Kategorie:
  • Wikipedia:Weblink offline

  • 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