Digitale Signaturen mit Elliptischen Kurven

Gottfried Wilhelm Leibniz Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Theoretische Informatik Digitale Signaturen mi...
3 downloads 2 Views 745KB Size
Gottfried Wilhelm Leibniz Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Theoretische Informatik

Digitale Signaturen mit Elliptischen Kurven

Diplomarbeit im Studiengang Mathematik mit Studienrichtung Informatik von Donka Todorova

Prüfer: Prof. Dr. Heribert Vollmer Zweitprüfer: Prof. Dr. Kurt Schneider

Erklärung

Hiermit versichere ich, dass ich die vorliegende Diplomarbeit selbstständig und ohne fremde Hilfe verfasst habe und keine anderen als die in der Arbeit angegebenen Quellen und Hilfsmittel verwendet habe.

Hannover, den 27.07.2007 Donka Todorova

1

Inhaltsverzeichnis 1

Einleitung

5

2

Kryptographische Grundlagen

7

3

Digitale Signaturen

10

3.1

Grundprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

3.2

ElGamal Signaturverfahren . . . . . . . . . . . . . . . . . . . . . . . . .

12

3.3

Hashfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

3.4

Digitale Signatur Algorithmus . . . . . . . . . . . . . . . . . . . . . . .

15

4

5

6

Mathematische Grundlagen

17

4.1

Mathematische Strukturen . . . . . . . . . . . . . . . . . . . . . . . . .

17

4.2

Der endliche Körper F p . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

4.3

Der endliche Körper F2m . . . . . . . . . . . . . . . . . . . . . . . . . .

20

4.3.1

Repräsentation von F2m durch Polynombasen . . . . . . . . . . .

20

4.3.2

Repräsentation von F2m durch Normalbasen . . . . . . . . . . . .

22

Elliptische Kurven

25

5.1

Kurvengleichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

5.2

Elliptische Kurve über reellen Zahlen . . . . . . . . . . . . . . . . . . .

27

5.3

Elliptische Kurven über F p . . . . . . . . . . . . . . . . . . . . . . . . .

30

5.4

Elliptische Kurven über F2m . . . . . . . . . . . . . . . . . . . . . . . . .

32

5.5

ECDLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

5.5.1

36

Algorithmen für den diskreten Logarithmus . . . . . . . . . . . .

Domainparameter für Elliptische Kurven

40

6.1

Domainparameter für Elliptische Kurven über F p . . . . . . . . . . . . .

40

6.2

Domainparameter für Elliptische Kurven über F2m . . . . . . . . . . . . .

41

2

INHALTSVERZEICHNIS

7

8

3

6.3

Generierung eine zufällige Elliptische Kurve . . . . . . . . . . . . . . . .

41

6.4

Generierung von Domainparametern für Elliptische Kurven . . . . . . . .

46

6.5

Validierung von Domainparametern für Elliptische Kurven . . . . . . . .

48

6.6

Schlüsselpaare bei Elliptischen Kurven . . . . . . . . . . . . . . . . . . .

50

Elliptic Curve Digital Signature Algorithm

52

7.1

Übersicht der Normung . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

7.2

Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

7.3

Schlüsselaustausch . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

7.4

ECDSA Signieralgorithmus . . . . . . . . . . . . . . . . . . . . . . . . .

54

7.5

ECDSA Verifizieralgorithmus . . . . . . . . . . . . . . . . . . . . . . .

55

7.6

ECDSA und DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

Zusammenfassung

A Datentypen und Konvertierung

58 60

Abbildungsverzeichnis 2.1

Symmetrisches Kryptosystem . . . . . . . . . . . . . . . . . . . . . . .

8

2.2

Asymmetrisches Kryptosystem . . . . . . . . . . . . . . . . . . . . . . .

9

5.1

Formen Elliptischer Kurven . . . . . . . . . . . . . . . . . . . . . . . . .

26

5.2

y2 = x3 − 4x + 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

5.3

Addition von zwei Punkten auf einer Elliptischen Kurve . . . . . . . . .

28

5.4

Punktverdoppelung P+P=R . . . . . . . . . . . . . . . . . . . . . . . . .

29

5.5

Elliptische Kurve über F23 . . . . . . . . . . . . . . . . . . . . . . . . .

30

5.6

y + xy = x + g x + 1 über F24 . . . . . . . . . . . . . . . . . . . . . .

33

5.7

25 ∗ P, eine Vereinfachung . . . . . . . . . . . . . . . . . . . . . . . . .

35

2

3

4 2

4

Kapitel 1 Einleitung Die Verwendung Elliptischer Kurven in der Kryptographie (engl. Elliptic Curve Cryptosystems, ECC) wurde erstmalig im Jahre 1985 unabhängig voneinander von Neil Koblitz [10] und Victor Miller [14] vorgeschlagen. Im Laufe der inzwischen vergangenen 20 Jahre wurden, aufbauend auf den Ideen von Koblitz und Miller, viele kryptographische Verfahren auf der Basis Elliptischer Kurven zur Erzeugung digitaler Signaturen, zum sicheren Schlüsselaustausch und Verschlüsselung entwickelt. Der größte Vorteil von ECC ist die wesentlich kürzere Schlüssellänge im Vergleich zu Kryptosystemen die auf endlichen Körpern operieren. Die Konsequenzen die sich daraus ergeben sind einfachere Implementierung der Arithmetik, geringere Bandbreite und geringere Speicheranforderungen. Die am weitesten verbreiteten Signatur-Algorithmen sind RSA und DSA. Beide haben den Nachteil, dass die mathematischen Probleme, auf deren Schwierigkeit die Sicherheit der Verfahren beruht, in subexponentieller Zeit lösbar sind. Dies macht sich bei den notwendigen Schlüssellängen und den daraus resultierenden Ausführungszeiten bemerkbar. Eine gute Alternative dazu ist die Elliptische Kurven Kryptographie mit dem ECDSA (Elliptic Curve Digital Signature Algorithm). Er benötigt für vergleichbare Sicherheit nur einen Bruchteil der Schlüssellänge von DSA bzw. RSA, da für das zugrunde liegende Problem (engl. Elliptic Curve Discrete Logarithm Problem, ECDLP) kein subexponentieller Algorithmus existiert - zumindest ist keiner bekannt. Der auf elliptischen Kurven basierende Signaturalgorithmus ECDSA wurde 1998 als ISO (International Standards Organization) Standard (ISO 14888-3), 1999 als ANSI (American National Standards Institute) Standard (ANSI X9.62), und 2000 als IEEE (Institute of Electrical and Electronics Engineers) Standard (IEEE P1363), als SEC (Standards for Efficient Cryptography) Standard (SEC 1) und FIPS (Federal Information Processing Standards) Standard (FIPS 186-2) ak5

KAPITEL 1. EINLEITUNG

6

zeptiert. Im Folgenden soll noch ein kurzer Überblick über die in den einzelnen Kapiteln behandelten Themen gegeben werden. Das 2. Kapitel (Kryptographische Grundlagen) führt in die notwendigen kryptographischen Grundlagen ein. In Kapitel 3 (Digitale Signaturen) wird das Grundprinzip der Digitalen Signaturen beschrieben. Dabei wird das klassische ElGamal-Signaturverfahren betrachtet, sowie die Notwendigkeit der Verwendung von Hashfunktionen erläutert. Anschließend wird das DSA-Verfahren (Digital Signature Algorithm) vorgestellt. Für den Einstieg in der Thematik der Elliptischen Kurven werden in Kapitel 4 (Mathematische Grundlagen) einige mathematische Grundbegriffe beschrieben. Darauf aufbauend stellt Kapitel 5 (Elliptische Kurven) einen kleinen Ausschnitt der Theorie und Arithmetik der Elliptischen Kurven dar. Elliptische Kurven werden dazu mit reellen Zahlen eingeführt und dann auf endlichen Körper übertragen. Anschließend wird das Problem des diskreten Logarithmus auf Elliptischen Kurven, und Algorithmen um diesen zu berechnen, vorgestellt. In Kapitel 6 (Domainparameter für Elliptische Kurven) werden die Domainparameter für Elliptische Kurven betrachten. Es werden Methoden für die Generierung und Verifizierung der Domainparameter vorgestellt. In Kapitel 7 (Elliptic Curve Digital Signature Algorithm) wird das Signaturverfahren ECDSA auf der Basis der Standards for Efficient Cryptography (SEC) spezifiziert. Dabei werden die Konfigurationsprozedur, die Schlüsselaustauschprozedur, Signieralgorithmus sowie Verifizieralgorithmus vorgestellt. Das achte und letzte Kapitel schließt mit einer Zusammenfassung.

Kapitel 2 Kryptographische Grundlagen In diesem Kapitel sollen die wichtigsten kryptographischen Begriffe, Anforderungen und Verfahren kurz erläutert werden. Kryptographie kommt vor allem bei der Übertragung von Geheimnissen zum Einsatz, oder anders ausgedrückt, bei der Übertragung von Daten. Man spricht dabei von einem Sender (meist Alice genannt), einem Empfänger (meist Bob genannt) und einem Sendeoder Übertagungskanal. Daten, die ohne besondere Entschlüsselungsmethoden gelesen werden können, werden Klartext (engl. plaintext) genannt. Das Verfahren zum Chiffrieren von Klartext, so dass dessen Inhalt unerkannt bleibt, wird Verschlüsselung genannt. Verschlüsseln von Klartext ergibt ein unleserliches Zeichengewirr, das dann Verschlüsselungstext (engl. chiphertext) genannt wird. Mit der Verschlüsselung bleiben Informationen unbefugten Personen verborgen, selbst wenn ihnen die Daten im verschlüsselten Zustand vorliegen. Das Verfahren des Zurückführens von chiffriertem Text in den ursprünglichen Klartext wird als Entschlüsselung bezeichnet. In der modernen Kryptographie werden zwei Arten von Verschlüsselungsverfahren unterschieden. Auf der einen Seite stehen die symmetrischen Verfahren, auch Private-KeyVerfahren genannt. Das sind die klassischen Vertreter der Verschlüsselungsmethoden. Hier ist nur ein Schlüssel in Verwendung. Dieser wird sowohl zur Verschlüsselung als auch zur Entschlüsselung benötigt. Daher ist es wichtig, eine sichere Möglichkeit zu finden, um den Schlüssel an beide Kommunikationsteilnehmer zu verteilen. Die Abbildung 2.1 [13] zeigt das Prinzip der symmetrischen Verfahren. Dabei sind die Elemente m ∈ M die Plaintexte, c ist die Menge der Chiphertexte und K ist die Menge der Schlüssel. Ee ist die Verschlüsselungsfunktion für den Schlüssel e ∈ K und De = Ee−1 ist die dazugehörige def

Entschlüsselungsfunktion. Im Gegensatz zu der oben genannten Klasse verwenden die asymmetrischen Verfahren 7

KAPITEL 2. KRYPTOGRAPHISCHE GRUNDLAGEN

8

Abbildung 2.1: Symmetrisches Kryptosystem zwei verschiede Schlüssel. Einer dient lediglich dem Verschlüsseln von Nachrichten und kann öffentlich zugänglich gemacht werden, der andere Schlüssel wird zum Entschlüsseln verwendet und sollte nur dem Empfänger bekannt sein. Diese Verfahren tragen deshalb auch die Bezeichnung Public-Key-Verfahren. Der zur Dekodierung benutzte Schlüssel kann aus dem anderen nicht hergeleitet werden. Die Arbeitsweise des asymmetrischen Verfahrens ist in Abbildung 2.2 [13] zu sehen. Dabei sind auch hier die Elemente m ∈ M die Plaintexte, c ist die Menge der Chiphertexte, e ist der öffentliche Schlüssel und d der private Schlüssel. Ee ist die Verschlüsselungsfunktion und Dd die Entschlüsselungsfunktion. Das bekannteste asymmetrische Verschlüsselungsverfahren ist das RSA Verfahren [19], das nach seinen Erfindern Ronald L. Rivest, Adi Shamir und Leonard M. Adleman benannt wurde. Es verwendet eine so genannte Falltür-Funktion (Trapdoor-Function). Informell ist dies eine Einwegfunktion, die mit vertretbarem Aufwand schwer umzukehren ist, es sei denn, man besitzt eine zusätzliche (geheime) Information, nämlich die Falltür. Die üblicherweise verwendeten Falltürfunktionen sind die Integer-Faktorisierung (IFP = Integer Faktorisierungs Problem), der diskrete Logarithmus (DLP = Diskreter Logarithmus Problem) und der diskrete Logarithmus auf Elliptischen Kurven (ECDLP). Das Integer Faktorisierung Problem nutzt aus, dass es einfach ist, zwei ganze Zahlen zu multiplizieren, aber sehr viel aufwändiger, aus einer Zahl z = p ∗ q (mod n) deren ganzzahligen

KAPITEL 2. KRYPTOGRAPHISCHE GRUNDLAGEN

9

Abbildung 2.2: Asymmetrisches Kryptosystem Faktoren p und q zu bestimmen. Der schnellste derzeit bekannte Algorithmus zur Faktorisierung (NFS =number field sieve) mit einer Laufzeit von   ist das Zahlkörpersieb  13 2 O exp (1, 923 + o (1)) log n log log n 3 [11]. Bei dem diskreten Logarithmus Problem wird ausgenutzt, dass das Potenzieren b = a x (mod n) einfach zu berechnen ist, nicht aber der diskrete Logarithmus, also die Berechnung von x bei gegebenem a, b, n. Der schnellste zurzeit bekannte Algorithmus zur Berechnung des diskreten Logarithmus ist ebenfalls das Zahlkörpersieb mit derselben Laufzeit wie bei der Faktorisierung. Somit besitzen beide Verfahren dieselbe Verschlüsselungsstärke und sind subexponentiell. Ein drittes Verfahren, die Berechnung des diskreten Logarithmus auf Elliptischen Kurven, erfordert zur Umkehrung dagegen einen exponentiellen Algorithmus (Pollard-ρ) mit der √  Laufzeit O πn/2r bei der Verwendung von r parallelen Prozessoren [16]. Der Schlüsselaustausch bei den asymmetrischen Verfahren ist unproblematischer als bei den symmetrischen Verfahren. Diesem Vorteil an Sicherheit steht der Nachteil gegenüber, dass die asymmetrischen Verfahren etwa 100- bis 1000- mal langsamer als vergleichbare symmetrische Verfahren sind. Sie werden daher in der Regel nur für Anwendungen, wie zur Authentifizierung und zum Schlüsselaustausch für den symmetrischen Schlüssel, eingesetzt.

Kapitel 3 Digitale Signaturen 3.1

Grundprinzip

Ein wesentlicher Vorteil der Verschlüsselung mit öffentlichen Schlüsseln besteht in der Verwendung von digitalen Signaturen. Idee und Begriff der digitalen Signatur erschienen zum ersten Mal als digital signature bei Whitfield Dieffie und Martin Hellman [2]. Bei dem Signaturverfaren wird der private Schlüssel zur Signaturerzeugung und der öffentliche Schlüssel zur Signaturverifikation verwendet. Ist es nun praktisch unmöglich den privaten Schlüssel aus dem öffentlichen Schlüssel und den signierten Nachrichten zu berechnen oder aber anderweitig korrekt signierte Nachrichten zu erzeugen, so ist damit die Authentizität der Nachricht und ebenso die Identität des Absenders festgelegt. Ein Signaturverfahren lässt sich abstrakt durch folgende Algorithmen beschreiben [29]: 1. Ein Schlüsselerzeugungsalgorithmus Generate erzeugt ein Schlüsselpaar (sk, pk). 2. Ein Signieralgorithmus Sign berechnet mit Hilfe des privaten Schlüssels sk zu einem Dokument m die Signatur s = S ign (sk, m). 3. Ein Verifizieralgorithmus Veri f y stellt mit Hilfe des zugehörigen öffentlichen Schlüssels pk fest, ob die Signatur s zum Dokument m gehört oder nicht: Veri f y (pk, m, s) ∈ {true, f alse}. Die Signatur s gehört genau dann zu m, wenn Veri f y (pk, m, s) = true ist. Ist Veri f y (pk, m, s) = f alse, muss die Signatur abgewiesen werden. Gegebenenfalls rekonstruiert der Algorithmus Veri f y auch das Dokument m. Die folgende Abbildung zeigt das Prinzip eines digitalen Signaturverfahrens.

10

KAPITEL 3. DIGITALE SIGNATUREN - s = S ign (sk, m) - m s

m m wird akzeptiert

11



m wird nicht akzeptiert 

A signiert m

true H  HH  H   H Veri f y (pk, m, s)H  HH  H  H

?

ms

B verifiziert die Signatur s von m

f alse

Abbildung 2.1: Prinzip eines digitalen Signaturverfahrens Es gibt zwei Arten von Signaturverfahren: 1. mit Appendix: Der Signierer verschickt die Nachricht und die Signatur zusammen. Die Nachricht ist nicht aus der Signatur wiederherstellbar. 2. mit messege-recovery: Der Signierer verschickt nur die Signatur, da die Nachricht aus der Signatur wieder gewonnen werden kann. Das in dieser Arbeit behandelte Verfahren ECDSA gehört zu der ersten Kategorie. Für die Erzeugung von Signaturen werden verschiedene Public-Key-Algorithmen verwendet. Im Folgenden werden einige in der Praxis häufig eingesetzte Algorithmen kurz vorgestellt: Das RSA-Verfahren wurde 1978 von Ronald Rivest, Adi Shamir und Leonard Adleman entwickelt. Seine Sicherheit basiert auf dem Faktorisierungsproblem großer, natürlicher Zahlen in Körpern. Es kann sowohl zum Verschlüsseln als auch zum Signieren von Nachrichten eingesetzt werden. Aufgrund seiner großen Verbreitung und Akzeptanz wird das RSA-Verfahren häufig als de-facto- Standard für asymmetrische Verschlüsselung bezeichnet. Im Jahre 1984 wurde in [3] ein weiteres Verfahren von Taher ElGamal vorgestellt (ElGamalVerfahren), dessen Sicherheit auf der Schwierigkeit, diskrete Logarithmen in Gruppen Modulo einer Primzahl zu berechnen, basiert. Das DSA-Verfahren (Digital Signature Algorithm) ist ein Algorithmus speziell zum Signieren, das sich nicht zum Verschlüsseln eignet und ebenso auf dem Diskreten Logarithmus Problem basiert. Es ist eine vom amerikanischen National Institute of Standards and

KAPITEL 3. DIGITALE SIGNATUREN

12

Technologie (NIST) vorgeschlagene und von der National Security Agency (NSA) entwickelte Variante des ElGamal-Signatursystems. 1994 wurde der Algorithmus schließlich als Digital Signature Standard standardisiert. Das ECDSA-Verfahren (Elliptic Curve Digital Signature Algorithm) ist das Analogon von DSA bezüglich diskreter Logarithmen auf Elliptischen Kurven. Bedeutsame Varian  ten sind ECDSA basierend auf Gruppen E F p und auf Gruppen E (F2m ). Der Vorteil von ECDSA gegenüber DSA sind die kleineren erforderlichen Schlüssellängen, was geringere Anforderungen an Bandbreite und Hardware gegenüber RSA und DSA darstellt.

3.2

ElGamal Signaturverfahren

Im Folgenden soll nun der ElGamal-Signaturalgorithmus näher vorgestellt werden. System Parametern • Sei p eine große Primzahl. • Sei G die zyklische multiplikative Gruppe des Körpers Z∗p mit Generator g, d.h. G = {gn |n ∈ N}. Schlüsselerzeugung • Wähle zufällig eine Zahl x ∈ {1, ...., p − 1}. • Berechne y ≡ g x (mod p). • Der öffentliche Schlüssel ist (p, g, y). • Der private Schlüssel ist x. Signatur und Verifikation A signiert m: • Wähle zufällig eine Zahl k, wobei 0 < k < p − 1 und ggT (k, p − 1) = 1. • Berechne r ≡ gk (mod p). • Berechne s ≡ (m − xr) k−1 (mod (p − 1)). B verifiziert die Signatur (r,s) von m:

KAPITEL 3. DIGITALE SIGNATUREN

13

• Prüfe, ob 0 < r < p − 1 und 0 < s < p − 1. (*) • Berechne gm ≡ yr r s (mod p). (**) • Gelten (*) und/oder (**) nicht, so ist das Dokument oder die Signatur verändert worden.

3.3

Hashfunktionen

In der Praxis wird das vorgestellte ElGamal-Signaturverfahren nicht in dieser Form verwendet, denn es ist einfach möglich, Signaturen zu fälschen. Ein möglicher Angriff auf das Verfahren ist, wenn der Angreifer eine legitime Signatur für eine Nachricht kennt, dann kann er andere legitime Signaturen und Nachrichten generieren [3]. Sind also (r, s) für die Nachricht (m) gegeben, dann gilt gm ≡ yr r s (mod p). Werden dazu drei zufällige ganze Zahlen A, B und C benötigt, wobei ggT((Ar − Cs) , (p − 1)) = 1 erfüllt sein muss. Mit diesen wird ein r0 ≡ r A gB yC (mod p) berechnet, woraus sich die Signatur s0 ≡ sr0 / (Ar − Cs) (mod (p − 1)) der Nachricht m0 ≡ r0 (Am + Bs) / (Ar − Cs) (mod (p − 1)) ergibt. Also gilt, dass (r0 , s0 ) die Signatur von m0 ist. Beweis: Es gilt   sr0 /(Ar−Cs) 0 0 0 yr r0s ≡ yr r A gB yC  0 0 0  0 0 1/(Ar−Cs) ≡ yr Ar−r Cs+r Cs r Asr gBsr   0 0 1/(Ar−Cs) ≡ (yr r s )Ar gBsr ≡ g(mAr +Bsr )/(Ar−Cs) 0

≡ gm

0

0

(alle Berechnungen sind (mod p)) Um diese Form der Fälschung zu verhindern, werden kryptographische Hashfunktionen verwendet und nicht die Nachricht selbst signiert. (Kryptographische) Hashfunktionen sind Abbildungen der Form h : Σ∗ → Σn , welche also Strings beliebiger Länge auf Strings fester Länge abbilden. Eine derart definierte Funktion besitzt offensichtlich Kollisionen, was bedeutet, dass es eine Nachricht m und eine weitere Nachricht m0 gibt, für welche die Hashfunktion einen identischen Hashwert erzeugt, so dass also die Bedingung h (m) = h (m0 ) erfüllt ist. Ist es praktisch unmöglich zu einer gegebenen Nachricht m die Nachricht m0 zu finden, für die diese Bedingung erfüllt ist, so heißt die Hashfunktion

KAPITEL 3. DIGITALE SIGNATUREN

14

schwach kollisionsresistent (second-preimage resistant). Ist es dagegen praktisch unmöglich irgendein Paar (m, m0 ) mit m , m0 zu finden, für das h (m) = h (m0 ) gilt, heißt die Hashfunktion stark kollisionsresistent (collision resistant). Lediglich die Hashfunktionen, welche als stark kollisionsresistent angenommen werden, sind für Signaturverfahren geeignet, denn bei diesen kann davon ausgegangen werden, dass tatsächlich die Nachricht m signiert wurde. Eine weitere Bedingung die an Hashfunktionen gestellt wird, ist, dass es praktisch unmöglich sein sollte, zu einem gegebenen Hashwert x eine Nachricht m zu finden, für die h (m) = x erfüllt ist (preimage resistant). Die Qualität einer kryptographischen Hashfunktion beurteilt man vor allem nach ihrer Widerstandsfähigkeit gegen zwei Typen von Angriffen: • Preimage-Angriff: Wie schwer ist es, zu einem vorgegebenen Hashwert eine Nachricht zu erzeugen, die denselben Hashwert ergibt? • Kollisionsangriff: Wie schwer ist es, zwei verschiedenen Nachrichten mit gleichem Hashwert zu finden? Eine t-bit Hashfunktion wird als ideal sicher bezeichnet, falls der Preimage-Angriff ungefähr 2t Operationen benötigt und der Kollisionsangriff ungefähr 2t/2 Operationen benötigt. Nahezu alle sicherheitsrelevanten Anwendungen nutzen derzeit die Hashfunktion SHA-1 (Secure Hash Algorithm) mit einem Hashwert von 160-Bit Länge. Sie kommt auch bei digitalen Signaturen zum Einsatz. Im Februar 2005 wurde bekannt gemacht, dass die Wissenschaftler Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu an der Shandong University in China erfolgreich SHA-1 gebrochen haben [30]. Sie haben ein Verfahren entwickelt, eine Kollision statt mit 280 bereits mit 269 Operationen zu ermitteln. Trotzdem gehen Krypto-Experten davon aus, dass man SHA-1 durchaus noch recht unbesorgt einsetzen kann. Das rührt daher, dass auch 269 noch eine recht große Zahl ist und der zweite Grund ist: um beispielsweise einen digital signierten Vertrag nachträglich zu fälschen, müsste der Angreifer einen Preimage-Angriff durchführen. Verfahren, die die Anzahl der benötigten Operationen für Preimage-Angriffe deutlich reduzieren, sind bisher nicht bekannt. Zurzeit sind die folgenden Hashfunktionen standardisiert: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512. Diese sind mit einem Hashwert von 160-, 224-, 256-, 384- und 512-Bit Länge und bilden Octet-Strings mit Länge kleiner als eine bestimmte Zahl in Hashwerte mit fester Länge ab. Die Hashwerte werden wie folgt berechnet: Konfiguration: Wähle eine der zugelassenen Hashfunktionen. Sei Hash die gewählte Hashfunktion, dann bezeichnen wir mit hashlen die Länge des Hashwertes in Octets, der

KAPITEL 3. DIGITALE SIGNATUREN

15

mit Hash produziert wird. Und mit hashmaxlen bezeichnen wir die maximale Länge der Nachricht in Octets, die von Hash berechnet werden kann. Algorithmus 3.1 Eingabe: die Nachricht M als Octet-String. Ausgabe: der Hashwert H, ein Octet-String mit der Länge hashlen oder ”invalid”. Ablauf: 1. Überprüfe, dass die Länge der Nachricht M kleiner als hashmaxlen Octets ist. Ist das nicht der Fall, dann gib ”invalid” aus und beende den Vorgang. 2. Konvertiere M in Bit-String M mit Algorithmus A.2 aus dem Anhang. 3. Berechne mit der während der Konfigurationsphase festgelegten Hashfunktion den Hashwert:   H = Hash M . 4. Konvertiere H in Octet-String H mit Algorithmus A.1 aus dem Anhang. 5. Gib H aus.

3.4

Digitale Signatur Algorithmus

Im Folgenden soll nun der Digitale Signatur Algorithmus näher vorgestellt werden. Das National Institute of Standards and Technology, welches DSA für die NSA im Rahmen des Digital Signature Standard veröffentlichte, gab als Hashfunktion den SHA-1Algorithmus vor. Schlüsselerzeugung 1. Wähle Primzahl q, wobei 2159 < q < 2160 . h i 2. Wähle t aus dem Intervall [0, 8] und eine Primzahl p aus dem Intervall 2511+64t , 2512+64t mit der Eigenschaft, dass q| (p − 1). 3. Wähle ein Element h ∈ Z∗p und berechne g = h(p−1)/q (mod p), so dass g , 1. 4. Wähle eine ganze Zufallszahl x mit 1 ≤ x ≤ q − 1. 5. Berechne y = g x (mod p).

KAPITEL 3. DIGITALE SIGNATUREN 6. Der öffentliche Schlüssel ist (p, q, g, y) und der geheime Schlüssel ist x. Signatur und Verifikation A signiert m: 1. Wähle eine geheime ganze Zufallszahl k, mit 0 < k < q − 1.   2. Berechne r = gk (mod p) (mod q). Falls r = 0 gehe zu Schritt 1. 3. Berechne k−1 (mod q). 4. Berechne e = SHA-1(m). 5. Berechne s = k−1 (e + xr) (mod q). Falls s = 0 gehe zu Schritt 1. 6. Die Signatur für m ist (r, s) B verifiziert die Signatur (r, s) von m 1. Prüfe, ob 1 ≤ r ≤ q − 1 und 1 ≤ s ≤ q − 1. 2. Berechne e = SHA-1(m). 3. Berechne w = s−1 (mod q). 4. Berechne u1 = ew (mod q) und u2 = rw (mod q). 5. Berechne v = (gu1 yu2 ( mod p)) (mod q). 6. Nur wenn v = r ist die Signatur zu akzeptieren.

16

Kapitel 4 Mathematische Grundlagen Dieses Kapitel führt in die notwendigen mathematischen Grundlagen ein. Den Anfang machen einige Definitionen für grundlegende mathematische Strukturen wie Gruppen und Körper. Danach wird einen Blick auf die verschiedenen Körper, deren Repräsentation und der Arithmetik in ihnen gegeben.

4.1

Mathematische Strukturen

Definition 4.1. Eine Menge G bildet bzgl. einer Verknüpfung ◦ eine Gruppe (G,◦), wenn die Axiome (G1) bis (G4) erfüllt sind. Ist zusätzlich (G5) erfüllt, so liegt eine kommutative oder abelsche Gruppe vor: (G1)

∀a, b∃c : c = a ◦ b, mit a, b, c ∈ G

G abgeschlossen bzgl. ◦

(G2)

∀a, b, c ∈ G : (a ◦ b) ◦ c = a ◦ (b ◦ c)

Asssoziativgesetz

(G3)

∃e ∈ G : ∀a ∈ G : a ◦ e = e ◦ a = a

Neutrales Element

(G4)

∀a ∈ G : ∃a−1 ∈ G : a ◦ a−1 = e, mit a−1 , e ∈ G

Inverses Element

(G5)

∀a, b ∈ G : (a ◦ b) = (b ◦ a)

Kommutativgesetz

Die Ordnung einer Gruppe ist gleich der Anzahl der Elemente in G und wird mit #G bezeichnet. Die Ordnung eines Gruppenelemets g ∈ G ist die kleinste natürliche Zahl m, mit gm = g ◦ g ◦ · · · ◦ g = e, sofern ein solches m existiert. 17

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

18

Definition 4.2. Sei G eine endliche Gruppe der Ordnung m. Ein Element g ∈ G heißt Erzeun o ger von G, falls G = g j | j = 0.....m − 1 . Definition 4.3. Ein Körper (K, +, ·) ist eine Menge mit mindestens zwei Elementen und zwei Verknüpfungen + und · mit folgenden Eigenschaften: (K1)

(K, +) ist eine abelsche Gruppe mit neutralem Element 0.

(K2)

(K \ {0} , ·) ist eine abelsche Gruppe mit neutralem Element 1.

(K3)

Es gelten die Distributivgesetze:

a · (b + c) = (a · b) + (a · c) (a + b) · c = (a · c) + (b · c) , für a, b, c ∈ K. Beispiele für Körper sind die rationalen Zahlen Q, die reellen Zahlen R, die komplexen Zahlen C und die ganzen Zahlen modulo einer Primzahl p (Bezeichnung: Z p ). Ist die Anzahl der Elemente in einem Körper beschränkt, handelt es sich um einen endlichen Körper. Dabei wird die Anzahl der Elemente als Ordnung des Körpers bezeichnet. Die Ordnung eines endlichen Körpers ist von der Form pm mit p Primzahl und m positive ganze Zahl (p heißt die Charakteristik von K). Diesen Körper nennt man auch Galois Field und schreibt dafür GF (pm ). Für GF (pm ) gibt es zwei, für die Kryptographie interessante, Spezialfälle. Einmal ist m = 1, wodurch GF (p) entsteht und im anderen Fall ist die Charakteristik p = 2, dabei erhält man GF (2m ). Beide Klassen von Körpern lassen sich einheitlich durch Fq mit q = pm bezeichnen, wobei p eine Primzahl repräsentiert und m = 1 für p , 2. In §4.2 und in §4.3 werden die Elemente und die Operationen in den endlichen Körpern F p und F2m beschrieben. Bei der Darstellung von Elementen der Körper F2m spielen Polynome eine bedeutende Rolle. Daher werden hier die wichtigsten Begriffe eingeführt. Definition 4.4. Ein Polynom über einem Körper K ist ein Ausdruck der Form b (x) = bn xn + bn−1 xn−1 + ... + b2 x2 + b1 x + b0 .

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

19

Dabei ist x die Unbekannte des Polynoms und die bi ∈ K heißen die Koeffizienten des Polynoms. Die kleinste Zahl l mit der Eigenschaft: ∀ j > l gilt b j = 0 heißt der Grad des Polynoms. Definition 4.5. Ein Polynom über einem endlichen Körper heißt reduzibel, falls es das Produkt zweier Polynome kleineren Grades des selben Körpers ist, ansonsten heißt das Polynom irreduzibel. Anmerkung: Ein Polynom, das über einem Körper irreduzibel ist, kann über einem anderen Körper reduzibel sein.

4.2

Der endliche Körper F p

Der endliche Körper F p , mit p Primzahl, ist wohl der bekannteste Körper. Seine Elemente werden als ganzen Zahlen {0, 1, 2, ...., p − 1} dargestellt. Die Addition und Multiplikation sind wie folgt definiert:   • Addition: Seien a, b ∈ F p , dann ist a + b = r, wobei r ∈ 0, p − 1 der Rest bei der Division von a + b mit p ist. Diese Operation ist bekannt als Addition modulo p mit Schreibweise a + b ≡ r (mod p).   • Multiplikation: Seien a, b ∈ F p , dann ist a · b = s, wobei s ∈ 0, p − 1 der Rest bei der Division von a · b mit p ist. Diese Operation ist bekannt als Multiplikation modulo p mit Schreibweise a · b ≡ s (mod p). Es ist günstig auch die Subtraktion und Division von Körperelementen zu definieren. Um das zu machen, sollen zuerst die additiven und die multiplikativen Inversen beschrieben werden. • Additives Inverse: Sei a ∈ F p , dann ist die additive Inverse (−a) von a in F p die eindeutige Lösung der Gleichung a + x ≡ 0 (mod p). • Multiplikatives Inverse: Sei a ∈ F p und a , 0, dann ist die multiplikative Inverse a−1 von a in F p die eindeutige Lösung der Gleichung a · x ≡ 1 (mod p). Die additiven und die multiplikativen Inversen in F p können effektiv berechnet werden. Die Multiplikative Inverse kann zum Beispiel mit dem erweiterten Euklidischen Algorithmus berechnet werden. Die Subtraktion und die Division sind dann wie folgt definiert:   a − b ( mod p) ist a + (−b) ( mod p) und a/b ( mod p) ist a · b−1 ( mod p).

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

4.3

20

Der endliche Körper F2m

F2m wird auch als Erweiterungskörper von F2 bezeichnet mit m als Erweiterungsgrad. F2m kann auch als m-dimensionaler Vektorraum über F2 interpretiert werden. Wie für jeden Vektorraum kann dann eine Basis B = {β0 , ..., βm−1 } definiert werden, wobei die βi linear unabhängig über F2m sind. Jedes Element α ∈ F2m lässt sich dann eindeutig als LinerP kombination dieser Basiselemente darstellen, also α = mi=1 ai βi mit a1 , ..., am ∈ F2 . Der endliche Körper F2m hat Charakteristik 2 und besteht aus 2m Elementen. Obwohl es nur ein endlicher Körper F2m mit Charakteristik 2 für jede Potenz 2m von 2 mit m ≥ 1 gibt, existieren mehrere verschiedene Möglichkeiten die Elemente von F2m zu repräsentieren. Es gibt zwei gängige Repräsentationen für F2m , die ANSI X9.62 erlaubt: Polynombasen und Normalbasen. Die Addition von Körperelementen erfolgt stets durch XOR-Verknüpfung der Vektorrepräsentation. Die restlichen arithmetischen Operationen sind abhängig von der gewählten Repräsentation.

4.3.1

Repräsentation von F2m durch Polynombasen

In der Polynombasen-Darstellung werden die Polynome in Restklassen modulo eines irreduziblen Reduktopnspolynoms eingeteilt. Ein Reduktionspolynom entspricht der Primzahl p in F p . Die Elemente von dem endlichen Körper F2m werden als Menge von binären Polynomen (d.h. Polynomen mit Koeffizienten 0 oder 1) mit Grad (m − 1) oder kleiner realisiert: n o F2m = am−1 xm−1 + am−2 xm−2 + .... + a1 x + a0 : ai ∈ {0, 1} Definition 4.6. Sei f (x) = xn + fn−1 xn−1 + ... + f1 x + f0 ein irreduzibles Polynom und fi ∈ F2 für i = 0, ..., n−1, dann heißt f (x) Körper- oder Reduktionspolynom von F2m . Die Addition und die Multiplikation sind mit Hilfe eines Reduktionspolynoms wie folgt definiert: • Addition: Sei a = am−1 xm−1 + .... + a0 , b = bm−1 xm−1 + .... + b0 ∈ F2m , dann ist a + b = r in F2m , wobei r = rm−1 xm−1 + .... + r0 und ri ≡ ai + bi (mod 2). • Multiplikation: Sei a = am−1 xm−1 + .... + a0 , b = bm−1 xm−1 + .... + b0 ∈ F2m , dann ist a · b = s in F2m , wobei s = sm−1 xm−1 + .... + s0 und s ist der Rest bei der Division von dem Polynom ab mit f (x) über F2 .

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

21

Der Grad des Reduktionspolynoms und die Ordnung des endlichen Körpers sind identisch. Für die Kryptographie sind nur irreduzible Polynome mit einem Grad größer einhundert interessant. Wieder ist es günstig die Subtraktion und Division von Körperelementen zu definieren. Um das zu machen, sollen zuerst die additiven und die multiplikativen Inversen beschrieben werden. • Additives Inverse: Sei a ∈ F2m , dann ist die additive Inverse (−a) von a in F2m die eindeutige Lösung der Gleichung a + x = 0 in F2m . • Multiplikatives Inverse: Sei a ∈ F2m , a , 0 dann ist die multiplikative Inverse a−1 von a in F2m die eindeutige Lösung der Gleichung a · x = 1 in F2m . Die additiven und die multiplikativen Inversen in F2m können effektiv mit dem erweiterten Euklidischen Algorithmus berechnet werden. Die Subtraktion und die Division sind wie   folgt definiert: a − b in F2m ist a + (−b) in F2m und a/b in F2m ist a · b−1 in F2m . Dazu als Beispiel die Elemente von F24 als Bitfolge und in der Koeffizientenschreibweise: Beispiel 4.1: 0000 = 0

0100 = x2

1000 = x3

1100 = x3 + x2

0001 = 1

0101 = x2 + 1

1001 = x3 + 1

1101 = x3 + x2 + 1

0010 = x

0110 = x2 + x

1010 = x3 + x

1110 = x3 + x2 + x

0011 = x + 1

0111 = x2 + x + 1 1011 = x3 + x + 1 1111 = x3 + x2 + x + 1

Anmerkung: Der Generator des Körpers F∗24 ist das Element g = (0010). Beweis: g0 = (0001)

g4 = (0011)

g8 = (0101)

g12 = (1111)

g1 = (0010)

g5 = (0110)

g9 = (1010)

g13 = (1101)

g2 = (0100)

g6 = (1100)

g10 = (0111)

g14 = (1001)

g3 = (1000)

g7 = (1011)

g11 = (1110)

g15 = (0001)

Beispiel 4.2: Multiplikation in F24 Sei f (x) = x4 + x + 1 das Reduktionspolynom.       x3 + x2 + 1 · x3 + x + 1 = x6 + x5 + x4 + x3 + x2 + x + 1 und     x6 + x5 + x4 + x3 + x2 + x + 1 mod x4 + x + 1 = x3 + x.

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

22

Auswahl des Reduktionspolynoms Die Reduktion von Polynomen ist besonders effizient, wenn das Reduktionspolynom dünn besetzen ist, d.h. eine kleine Zahl von Termen bzw. eine kleine Anzahl von Koeffizienten ungleich Null besitzt. Die irreduziblen Polynome mit der geringsten Anzahl von Termen bzw. mit dem geringsten Hamminggewicht, nämlich drei, sind die Trinome der Form f (x) = xm + xk + 1 mit m > k ≥ 1. Daher werden Trinome, sofern sie existieren, häufig als Reduktionspolynome gewählt. Existiert kein irreduzibles Trinom vom Grad m, dann sind die nächstbesten Polynome die Pentanome der Form f (x) = xm + xk3 + xk2 + xk1 + 1 mit m > k3 > k2 > k1 ≥ 1. Die folgenden Regeln zur Auswahl des Reduktionspolynoms zur Darstellung von Elementen von F2m sind spezifiziert: 1. Wenn es ein irreduzibles Trinom vom Grad m über F2 gibt, dann muss das Reduktionspolynom ein solches sein. Es wird empfohlen, das Trinom mit dem kleinsten Exponenten k zu wählen. 2. Existiert kein irreduzibles Trinom vom Grad m über F2 , dann muss das Reduktionspolynom ein irreduzibles Pentanom vom Grad m über F2 sein. Es wird empfohlen, die Auswahl des Pentanoms nach folgenden Kriterien zu treffen: 2.1 k3 ist möglichst klein, 2.2 für diesen bestimmten Wert von k3 ist k2 möglichst klein, 2.3 für diese speziellen Werte von k3 und k2 ist k1 möglichst klein.

4.3.2

Repräsentation von F2m durch Normalbasen

Definition 4.7. Eine Normalbasis von F2m über F2 ist eine Menge der Form n o 2 m−1 B = θ, θ2 , θ2 , ..., θ2 , wobei die Elemente von B linear unabhängig sind und θ ∈ F2m .

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

23

Eine solche Basis existiert für jedes m. Ein Element α aus F2m lässt sich darstellen als: α=

m−1 X

i

ai θ2 , mit ai ∈ F2 .

i=0

Das neutrale Element bezüglich der Addition ist (0,0,..,0,0), das neutrale Element bezüglich der Multiplikation ist (1,1,...,1,1). Normalbasisdarstellungen haben den Vorteil, dass die Quadrierung eines Elements sehr effizient ist. Die Multiplikation hingegen kann im allgemein sehr mühselig sein. Daher fordern die Standards IEEE P1363 und ANSI X9.62, Gauss’sche Normalbasen (GNB) zu benutzen, wodurch die Multiplikation einfacher und effizienter ist. Eine GNB für F2m existiert immer dann, wenn m nicht durch 8 teilbar ist. Der Typ einer GNB ist eine positive ganze Zahl T , die die Komplexität der Multiplikation angibt. Sei m eine natürliche Zahl, die nicht durch 8 teilbar ist und T eine natürliche Zahl. Dann existiert eine Typ T GNB für F2m genau dann, wenn p = T n + 1 prim ist und ggT (T n/k, n) = 1 ist, wobei k die multiplikative Ordnung von 2 modulo p ist. Im Folgenden werden die arithmetischen Operationen von Elementen in F2m definiert, wenn eine GNB vom Typ T verwendet wird.

• Addition: Seien a = (a0 , a1 , ..., am−1 ) und b = (b0 , b1 , ..., bm−1 ) ∈ F2m , dann ist a + b = c = (c0 , c1 , .., cm−1 ) mit ci = (ai + bi ) (mod 2). • Quadrierung: Unter Ausnutzung von a2 = a für a ∈ F2 und α ∈ F2m ergibt sich folgende Rechenregel:  m−1 2 m−1 m−1 X X X    i i   2 2 2i+1   a =  ai β  = ai β = ai−1 β2 = am−1 , a0 , a1, ..., am−2 i=0

i=0

i=0

Eine Quadrierung entspricht daher einer Rotation der ai . • Multiplikation: Sei p = T m + 1 und sei u ∈ F p ein Element der Ordnung T , dann definiere die Folge F(1), F(2),...., F(p-1) durch:   F 2i u j ( mod p) = i für 0 ≤ i ≤ m − 1, 0 ≤ j ≤ T − 1. Seien a = (a0 , a1 , ..., am−1 ) und b = (b0 , b1 , ..., bm−1 ) ∈ F2m , dann a · b = c = (c0 , c1 , .., cm−1 ), wobei: – Wenn T gerade ist, dann gilt cl =

P p−2 k=1

aF(k+1)+l bF(p−k)+l , mit 0 < l < m − 1.

KAPITEL 4. MATHEMATISCHE GRUNDLAGEN

24

– Wenn T ungerade ist, dann gilt P  P p−2 cl = m/2 k=1 ak+l−1 bm/2+k+l−1 + am/2+k+l−1 bk+l−1 + k=1 aF(k+1)+l bF(p−k)+l , mit 0 < l < m − 1. • Invertierung: Sei a ein Element in F2m , die Inverse von a in F2m , bezeichnet mit a−1 , ist die eindeutige Lösung der Gleichung a · x = 1. Die Normalbasisdarstellung hat den Vorteil, dass das Quadrieren eines Körperelements sehr effizient ist. Im Gegensatz dazu ist die Multiplikation zweier unterschiedlicher Elemente wesentlich langsamer als in Polynombasisdarstellung. Ähnlich verhält es sich auch mit der Invertierung. Da diese beiden Operationen wesentliche Bestandteile einer Addition zweier Punkte einer Elliptischen Kurve sind, ist die Polynombasisdarstellung vorzuziehen.

Kapitel 5 Elliptische Kurven Elliptische Kurven werden seit über 100 Jahren in der Zahlentheorie und der algebraischen Geometrie wissenschaftlich untersucht. Entstanden aus dem Problem den Umfang einer Ellipse zu berechnen, haben Elliptische Kurven heute einen weiten Anwendungsbereich in der Mathematik und der Kryptographie gefunden. In der Kryptographie werden sie unter anderem dazu benutzt große Zahlen zu faktorisieren, Primzahlbeweise durchzuführen oder dienen als Basis für Public-Key-Algorithmen. Einer der Public-KeyAlgorithmen, ECDSA wird im Kapitel 7 näher erläutert. In diesem Kapitel wollen wir die Theorie und die Arithmetik der Elliptischen Kurven betrachten. Elliptische Kurven werden dazu mit reellen Zahlen eingeführt und dann auf endlichen Körper übertragen. Anschließend wird das Problem des diskreten Logarithmus Elliptischer Kurven, und Algorithmen um diesen zu berechnen, vorgestellt.

5.1

Kurvengleichung

Definition 5.1. Eine Elliptische Kurve über dem (beliebigen) Körper K ist eine glatte projektive Kurve E von Grad 3 über K, die durch eine Gleichung der Form E : y2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 . mit Koeffizienten a1 , a2 , a3 , a4 , a5 , a6 ∈ K gegeben ist. So eine Gleichung heißt (verallgemeinerte) Weierstraß-Gleichung. Durch die Anwendung der Elliptischen Kurve auf den endlichen Körpers F pm mit der 25

KAPITEL 5. ELLIPTISCHE KURVEN

26

Charakteristik p , {2, 3} kann die Gleichung zu E1 : y2 = x3 + a4 x + a6 vereinfacht werden. Wenn die Charakteristik dagegen p = 2 ist, wird die Weierstraß-Normalform zu E2 : y2 + xy = x3 + a2 x2 + a6 oder E3 : y2 + a3 y = x3 + a4 x + a6 . vereinfacht. Zu dieser Menge von Punkten wird noch der spezielle Punkt O (engl. point at infinity), der im Unendlichen liegt, dazugenommen. Per Definition gilt P + (−P) = O. Damit Elliptische Kurven für kryptographische Zwecke eingesetzt werden können, muss sichergestellt sein, dass die Kurve keine Knickpunkte, keine Schnittpunkte mit sich selbst und keine isolierten Punkte aufweist, also eine Kurve, die an jedem Punkt eine eindeutig bestimmte Tangente besitzt. In der Abbildung 5.1 sind die Formen der Elliptischen Kurven zu sehen.

Abbildung 5.1: Formen Elliptischer Kurven

KAPITEL 5. ELLIPTISCHE KURVEN

5.2

27

Elliptische Kurve über reellen Zahlen

Ist E eine Elliptische Kurve über den Körper der reellen Zahlen R, so lässt sich E durch eine Gleichung der Form y2 = x3 + ax + b, mit x, y, a, b ∈ R beschreiben Mit der Wahl der reellen Zahlen a und b ergeben sich verschiedene Elliptische Kurven. Zum Beispiel seien a = −4 und b = 1, dann ergibt sich die Elliptische Kurve mit der Gleichung y2 = x3 − 4x + 1. In Abbildung 5.2 ist diese Elliptische Kurve wiedergegeben. In diesem Beispiel hat die Kurve drei verschiedene Nullstellen. Damit wir solche Fälle

Abbildung 5.2: y2 = x3 − 4x + 1 vermeiden, soll 4a3 + 27b2 , 0 sein. Die Menge aller Punkte auf einer Elliptischen Kurve über R enthält alle Punkte (x,y), mit x ∈ R und y ∈ R, die die Gleichung y2 = x3 + ax + b genügen, zusammen mit dem speziellen Punkt O, der im Unendlichen liegt. Elliptische Kurven besitzen auf Grund ihrer Symmetrie zur x-Achse folgende Eigenschaft. Wenn eine Gerade eine Elliptische Kurve schneidet entstehen immer genau 3 Schnittpunkte. Dabei muss man zwischen verschiedenen Fällen unterscheiden: • eine Gerade die parallel zur y-Achse liegt, hat sie einen Schnittpunkt im Punkt O,

KAPITEL 5. ELLIPTISCHE KURVEN

28

• wenn eine Gerade die Kurve tangiert, wird dieser Punkt als doppelter Schnittpunkt gezählt, • bei Geraden die anders verlaufen, ist es offensichtlich, dass 3 Schnittpunkte existieren. Auf der Elliptischen Kurven lässt sich eine Addition erklären. Die Formeln für die Addition ergeben sich aus der geometrischen Anschauung, siehe z.B. Abbildungen 5.3 und 5.4 und für eine Erläuterung Silverman [21]. Die Addition von zwei Punkten auf einer Elliptischen Kurve ist wie folgt definiert: Sind P = (x1 , y1 ) und Q = (x2 , y2 ) Punkte auf einer Elliptischen Kurve E, gegeben durch die Gleichung y2 = x3 + ax + b, dann definieren wir den dritten Punkt R wie folgt: Bestimme den dritten Schnittpunkt (−R) der Geraden L durch P und Q mit E und spiegele diesen Punkt an der x- Achse. Dieser Punkt liegt wieder auf E und soll R heißen. Schreibweise P + Q = R. Dazu Abbildung 5.3: Falls P = Q, dann ist R = (x3 , y3 ) wie folgt definiert: Zuerst bestimme die Tangente der

Abbildung 5.3: Addition von zwei Punkten auf einer Elliptischen Kurve Elliptischen Kurve in P, diese schneidet die Kurve im zweiten Punkt (−R). Dann spiegele

KAPITEL 5. ELLIPTISCHE KURVEN

29

diesen Punkt an der x-Achse. Dieser Punkt liegt wieder auf E und ist der gesuchte Punkt R. Dazu Abbildung 5.4: Die folgenden algebraischen Formeln für die Addition von zwei Punkten sind aus der

Abbildung 5.4: Punktverdoppelung P+P=R geometrischen Beschreibung abgeleitet. Sei E eine Elliptische Kurve, die durch y2 = x3 + ax + b definiert ist. Seien P1 = (x1 , y1 ) und P2 = (x2 , y2 ) Punkte auf E, wobei P1 , P2 , O. Dann ist P1 + P2 = P3 = (x3 , y3 ) wie folg definiert: 1. Falls x1 , x2 , dann x3 =

y2 − y1 − x1 − x2 , x2 − x1

y3 =

y2 − y1 (x1 − x3 ) − y1 . x2 − x1

2. Falls x1 = x2 und y1 , y2 , dann P1 + P2 = O . 3. Falls P1 = P2 und y1 , 0, dann ! 3x1 + a x3 = − 2x1 , 2y1

y3 =

3x1 + a (x1 − x3 ) − y1 . 2y1

4. Falls P1 = P2 und y1 = 0, dann P1 + P2 = O. Zusätzlich gilt für alle Punkte P auf E: P + O = O + P = P.

KAPITEL 5. ELLIPTISCHE KURVEN

5.3

30

Elliptische Kurven über F p

Sei F p endlicher Körper, mit p ungerade Primzahl, seien a, b ∈ F p mit   4a3 + 27b2 . 0 (mod p), dann ist die Elliptische Kurve E F p über F p eine Menge von Punkten in einer Ebene, deren Koordinaten durch die folgende Gleichung erfüllt werden: y2 ≡ x3 + ax + b (mod p) ,

x, y, a, b ∈ F p

zusammen mit dem speziellen Punkt O. Hier ist die Anzahl der Elemente beschränkt und die Elemente sind ganzzahlig, wodurch nun keine kontinuierliche Kurve mehr gezeichnet werden kann. Im Koordinatensystem erscheinen jetzt nur einzelne Punkte, deren Anzahl   durch den endlichen Körper eindeutig begrenzt ist. Die Anzahl der Punkte auf E F p wird   bezeichnet mit #E F p und nach dem Theorem von Hasse gilt:   √ #E F p = p + 1 − t, mit |t| ≤ 2 p.   Die Punktezahl #E F p heißt Ordnung von E und die Größe t heißt Spur von E. Die

Abbildung 5.5: Elliptische Kurve über F23 Punktoperationen sind hier nicht mehr geometrisch definiert. Die Rechenregeln der Algebra sind aber weiterhin anwendbar und die Additionsregeln sind wie folgt definiert: 1. O + O = O

KAPITEL 5. ELLIPTISCHE KURVEN

31

  2. P + O = O + P = P für alle P ∈ E F p   3. Falls P = (x, y) ∈ E F p , dann: (x, y) + (x, −y) = O Bemerkung: die Inverse des Punktes (x, y) ist − (x, y) = (x, −y) . 4. Addition von zwei Punkten mit verschiedenen x - Koordinaten (Punktaddition):     Seien (x1 , y1 ) ∈ E F p und (x2 , y2 ) ∈ E F p mit x1 , x2 . Dann gilt (x1 , y1 ) + (x2 , y2 ) = (x3 , y3 ), mit: x3 ≡ m2 −x1 −x2 (mod p) , y3 ≡ m (x1 − x3 )−y1 (mod p) , mit m ≡

y2 − y1 (mod p). x2 − x1

5. Addition von einem Punkt zu sich selbst (Punktverdoppelung):   Sei (x1 , y1 ) ∈ E F p mit y1 , 0. Dann gilt (x1 , y1 ) + (x1 , y1 ) = (x3 , y3 ), mit : 3x12 + a x3 ≡ m − 2x1 (mod p) , y3 ≡ m (x1 − x3 ) − y1 (mod p), mit m ≡ (mod p). 2y1   Die Menge aller Punkte auf E F p bildet mit den obigen Definitionen der Addition eine 2

additive abelsche Gruppe. Beispiel 5.1: Sei p = 29 und damit F29 = {0, 1, 2, ...28} und eine Elliptische Kurve in reduzierter Weierstraß-Normalform durch die Parameter a = 1 und b = 6 als y2 = x3 + x + 6 gegeben. Aus dem Theorem von Hasse erhält man für die Punktanzahl der Elliptischen Kurve das Intervall #E (F29 ) ∈ [20, 40]. Tatsächlich besitzt diese Kurve neben dem Punkt O die folgenden 37 Punkte: (0, 8) (0, 21) (2, 4) (2, 25) (4, 4) (4, 25) (8, 2) (8, 27) (16, 0) (3, 6) (2, 23) (6, 5) (6, 24) (12, 8) (12, 21) (14, 3) (14, 26) (28, 2) (28, 27) (27, 5) (27, 24) (25, 5) (25, 24) (26, 11) (26, 18) (23, 4) (23, 5) (17, 8) (17, 21) (5, 7) (5, 22) (10, 1) (10, 28) (20, 14) (20, 15) (22, 2) (22, 27) , womit also #E (F29 ) = 38. Werden nun die Punkte P1 =(8,27) und P2 =(17,21) addiert, so erhält man als Resultat den Punkt P3 =(27,5), wie die folgende Rechnung zeigt: !2 !2 y2 − y1 21 − 27 x3 = − x1 − x2 = − 8 − 17 x2 − x1 17 − 8 = (23 · 13)2 + 4 = 89405 ≡ 27 ( mod 29) ! ! 21 − 27 y2 − y1 y3 = (x3 − x1 ) − y1 = (27 − 8) − 27 x2 − x1 17 − 8 = −19 · 9 + 2 = −169 ≡ 5 ( mod 29)

KAPITEL 5. ELLIPTISCHE KURVEN

32

Soll das Resultat dieser Addition verdoppelt werden, so erhält man P3 = 2P1 =(17,8) mit P1 =(27,5), wie die folgende Rechnung zeigt: ! !2 3x1 + a 3 · (27)2 + 1 − 2 · 27 x3 = − 2x1 = 2y1 2·5 = (13 · 3)2 + 4 = 1525 ≡ 17 ( mod 29) ! ! 3x12 + a 3 · (27)2 + 1 y3 = −y1 − (x3 − x1 ) = −5 − (17 − 27) 2y1 2·5 = 24 − 19 · 10 = −166 ≡ 8 ( mod 29)

5.4

Elliptische Kurven über F2m

Sei F2m ein endlicher Körper mit der Charakteristik 2 und seien a, b ∈ F2m , mit b , 0. Dann ist die Elliptische Kurve E (F2m ) über F2m eine Menge von Punkten in einer Ebene, deren Koordinaten durch die folgende Gleichung erfüllt werden: y2 + xy = x3 + ax2 + b,

x, y, a, b ∈ F2m

zusammen mit dem speziellen Punkt O, der im Unendlichen liegt. Die Anzahl der Punkte auf E (F2m ) wird bezeichnet mit #E (F2m ) und nach dem Theorem von Hasse gilt: √ #E (F2m ) = 2m + 1 − t, mit |t| ≤ 2 2m . Auch hier heißt die Punktezahl #E (F2m ) Ordnung von E und die Größe t heißt Spur von E. Die Punkte auf der Elliptischen Kurve E (F2m ) über F2m treten völlig zufällig in der Darstellung auf. Dieses zeigt auch die Abbildung 5.6 (s.u.). Die Additionsregeln sind wie folgt definiert: 1. O + O = O 2. (x, y) + O = O + (x, y) = (x, y) für alle (x, y) ∈ E (F2m ) 3. (x, y) + (x, x + y) = O für jedes (x, y) ∈ E (F2m ) Bemerkung: die Inverse des Punktes (x, y) ist − (x, y) = (x, x + y) 4. Addition von zwei Punkten mit verschiedenen x - Koordinaten (Punktaddition): Seien (x1 , y1 ) ∈ E (F2m ) und (x2 , y2 ) ∈ E (F2m ) mit x1 , x2 . Dann gilt (x1 , y1 ) + (x2 , y2 ) = (x3 , y3 ), mit: x3 = m2 +m+x1 +x2 +a in F2m , y3 = m (x1 + x3 )+x3 +y1 in F2m , und m =

y1 + y2 in F2m . x1 + x2

KAPITEL 5. ELLIPTISCHE KURVEN

33

5. Addition von einem Punkt zu sich selbst (Punktverdoppelung): Sei (x1 , y1 ) ∈ E (F2m ) mit y1 , 0. Dann gilt (x1 , y1 ) + (x1 , y1 ) = (x3 , y3 ), mit : ! b y1 2 2 x3 = x1 + 2 in F2m , y3 = x1 + x1 + x3 + x3 in F2m . x1 x1 Unter diesen Additionsregeln bildet die Menge der Punkte auf E (F2m ) eine additive abelsche Gruppe. Beispiel 5.2: Sei über den Körper F24 eine Elliptische Kurve mit den Parametern a = (0011) = g4 und b = (0001) = g0 als y2 + xy = x3 + g4 x2 + 1 gegeben, wobei g = (0010) der Generator des Körpers F∗24 ist (siehe Beispiel 4.1). Mit dem Reduktionspolynom r (x) = x4 + x + 1 hat die Kurve die folgenden #E (F24 ) = 16 Punkte: (1, g13 )

(g9 , g13 )

(g3 , g8 )

(g10 , g)

(g3 , g13 )

(g10 , g8 )

(g5 , g3 )

(g12 , 0)

(g5 , g11 )

(g12 , g12 )

(g6 , g8 )

(0, 1)

6

14

(g , g )

6

(1, g )

9

10

(g , g )

O

In Abbildung 5.6 ist diese Elliptische Kurve wiedergegeben.

Abbildung 5.6: y2 + xy = x3 + g4 x2 + 1 über F24 Werden nun die Punkte P1 =(g9 ,g13 ) und P2 =(g5 ,g3 ) addiert, so erhält man als Resultat

KAPITEL 5. ELLIPTISCHE KURVEN

34

den Punkt P3 =(g3 ,g13 ), wie die folgende Rechnung zeigt: x3 = = = y3 = = =

y1 + y2 x1 + x2

!2

! y1 + y2 + + x1 + x2 + a x1 + x2 !2 (1000) + (1101) (1000) + (1101) + (1010) + (0110) + (0011) + (0110) + (1010) (0110) + (1010) (0100)2 + (1111) + (0100) = (1011) + (0011) = (1000) = g3 ! y1 + y2 (x1 + x3 ) + x3 + y1 x1 + x2 ! (1000) + (1101) ((1000) + (1010)) + (1000) + (1101) (0110) + (1010) (0010) (0100) + (0101) = (0101) + (1000) = (1101) = g13

  Soll das Resultat dieser Addition verdoppelt werden, so erhält man P3 = 2P1 = g5 , g11   mit P1 = g3 , g13 , wie die folgende Rechnung zeigt: (0001) b = (1000)2 + 2 x1 (1000)2 (0001) (1100) + = (1100) + (1010) = (0110) = g5 (1100) ! y1 2 x1 + x1 + x3 + x3 x1 ! (1101) 2 (0110) + (0110) (1000) + (1000) + (1000) (1010) + (0110) (1111) = (1010) + (0100) = (1110) = g11

x3 = x12 + = y3 = = =

In der Kryptographie wird die eben beschriebene Addition eher für eine Addition eines Punktes zu sich selbst, als für eine Addition zweier unterschiedlicher Punkte benutzt. Dazu ein Beispiel: P + P + ... + P = k ∗ P Darunter versteht man auch die Skalarmultiplikation bei Elliptischen Kurven. Da es sich hier nicht um eine gewöhnliche Addition handelt, ist die herkömmliche Multiplikation des Punktes P mit k nicht möglich. Dadurch kann man die Multiplikation auch nicht mit der Skalarmultiplikation eines Vektors mit einem Skalar vergleichen. Die beschriebene Addition muss also schrittweise durchgeführt werden. Je größer k wird, umso größer wird auch der Rechenaufwand. Es gibt aber eine Vereinfachung, um den Rechenaufwand in Grenzen zu halten. Als Beispiel soll hierfür k = 25 sein. Abbildung 5.7 zeigt, wie sich das

KAPITEL 5. ELLIPTISCHE KURVEN

35

Abbildung 5.7: 25 ∗ P, eine Vereinfachung Addieren der einzelnen Punkte in mehrere Teilprobleme zerlegen lässt. Die Zerlegung in Teilprobleme ist auf Grund der Assoziativität der Gruppe zulässig. So ist in der zweiten Zeile nur noch 12 ∗ (P + P) + P statt 24 mal P zu addieren. (P + P) kann man mit einer Addition berechnen, d.h. es werden 24 − (12 + 1 + 1) = 10 Additionen eingespart. Die weiteren Zeilen folgen dem gleichen Schema. Im Endeffekt werden nur noch 6 statt 24 Additionen benötigt. Definition 5.2. Die Ordnung eines Punktes einer elliptischen Kurve ist die kleinste positive Zahl r, so dass r · P = O. Die Ordnung eines Punktes existiert immer und   ist ein Teiler der Kurvenordnung #E Fq . Zusätzlich gilt: falls k, l ∈ N, dann kP = lP gdw. k ≡ l (mod r).

5.5

ECDLP

In diesem Abschnitt wird das Problem des diskreten Logarithmus auf Elliptischen Kurven vorgestellt (ECDLP). Zur Lösung dieses Problems auf einer beliebigen Elliptischen Kurve ist bisher kein subexponentieller Algorithmus bekannt. Unter dem Problem des diskreten Logarithmus auf der Elliptischen Kurve versteht man die folgende Fragestellung: Sei q ∈ N oder q = 2m für ein m ∈ N. Seien eine Elliptische Kurve E über Fq , ein Punkt     P ∈ E Fq der Ordnung n und ein Punkt Q ∈ E Fq gegeben. Bestimme die natürliche Zahl l, 0 ≤ l ≤ n − 1, sodass Q = lP, vorausgesetzt, eine solche Zahl l existiert. l wird dann diskreter Logarithmus genannt.

KAPITEL 5. ELLIPTISCHE KURVEN

5.5.1

36

Algorithmen für den diskreten Logarithmus

Wir wollen diesen Abschnitt mit dem folgenden Beispiel motivieren: Beispiel 5.3: Sei E eine Elliptische Kurve definiert durch die Gleichung y2 = x3 + 3x + 1 über F p mit   p = 107 + 19. Die Ordnung dieser Kurve ist r = #E F p = 999946 = 2 · 32 · 347 · 1601 = 18 · 347 · 1601. Nehmen wir die folgende Punkte P = (2, 4417259) und Q = (1, 866032) mit Q = xP, wobei x unbekannt ist. Also wir wissen die Faktorisierung von n und können die folgenden Gleichungen bilden: r n P = Q gibt x ≡ 14 ( mod 18) 18 18 r n x P = Q gibt x ≡ 81 ( mod 347) 347 347 n r P = Q gibt x ≡ 854 ( mod 1601) x 1601 1601 x

Wir wissen, dass 18 18r P = rP = O gilt. So können wir die möglichen Werte von x reduzieren (also wir sollen die Werte zwischen 0 und 17 prüfen). Jetzt können wir leicht alle möglichen Werte von x prüfen, um die Relation x ≡ 14 ( mod 18) zu lösen. Entsprechend dieser Methode können wir auch alle Gleichungen lösen. Dann brauchen wir nur den Chinesischen Restsatz zu benutzen, um x = 5553122 zu finden. Das benutzte Verfahren im letzten Beispiel ist unter dem Namen Silver-Pohling-HellmanVerfahren bekannt. Es funktioniert in der Praxis, wenn in der Gruppenordnung r nur klei  ne Primteiler auftreten. Man sagt dann auch, die Gruppe E Fq hat ”glatte” Gruppenordnung r. Die bisher bekannten Algorithmen zur Berechnung des diskreten Logarithmus auf der Elliptischen Kurve werden kurz in diesem Abschnitt vorgestellt. Naive Logarithmenberechnung Als erstes wird die Naive Logarithmenberechnung vorgestellt. Für eine Elliptische Kurve   E über Fq sieht das Verfahren so aus: Gegeben sind P ∈ E Fq der Ordnung n und   Q ∈ E Fq . Wir suchen l mit lP = Q. Setze P1 = P und berechne rekursiv Pl = lP = Pl−1 + P für 1 ≤ l < n und teste bei jedem Schritt: • Gilt Pl = Q, dann ist l der gesuchte Logarithmus und man hört auf. • Gilt Pl = O, dann ist l die Ordnung von P und der Logarithmus existiert nicht.

KAPITEL 5. ELLIPTISCHE KURVEN

37

Diese Methode benötigt maximal n Schritte. Also die Ordnung n des Punktes P soll möglichst groß sein. Baby-Stap Giant-Step Methode nach Shanks Ist m ∈ N mit m2 ≥ n, so gibt es natürliche Zahlen i, j mit 1 < i, j < m und x = m j − i. Dann folgt (m j − i) P = Q, also iP + Q = j (mP). Es werden zwei Listen gebildet   B = [iP + Q : i = 1, ..., m] (baby-staps) und G = j (mP) : j = 1, .., m (giant steps). Falls   i, j mit B [i] = G j gefunden werden, so folgt iP + Q = j (mP), also ( jm − i) P = Q und √ damit logP Q = m j − i. Diese Methode benötigt maximal n Schritte. Silver-Pohling-Hellmann Verfahren   Sei E eine Elliptische Kurve über Fq und P, Q ∈ E Fq . Wir nehmen an, wir können die   Gruppenordnung bestimmen und faktorisieren: r = #E Fq = pe11 · · · pess mit paarweise verschiedenen Primzahlen pi . Wir schreiben di = qei i und haben dann r = d1 · · · d s und   ggT dr1 , ..., drs = 1. Wir überlegen, gibt es ein x mit xP = Q, so folgt x dri P = dri Q. Wegen n o n o di · dri P = O gilt: x · dri P : x ∈ Z = x · dri P : 0 ≤ x ≤ di − 1 . Wir können daher mit dem naiven Logarithmenberechnungsverfahren nach einem xi suchen mit: xi · 0 ≤ xi ≤ di −1. Wir nehmen jetzt an, wir haben für alle i ein xi mit

xi · dri P

=

r P di r Q di

=

r Q di

für

gefunden.

Mit dem Chinesischen Restsatz kann x mit x ≡ xi (mod di ) für alle i ermittelt werden. Um diesen Angriff zu vermeiden muss die Ordnung der gewählten Elliptischen Kurve prim oder durch eine große Primzahl teilbar sein. Die Pollardsche ρ-Methode   Sei E eine Elliptische Kurve über F p , von der die Gruppenordnung r = #E Fq bekannt   ist. Wir wollen für P, Q ∈ E Fq die Gleichung xP = Q lösen. Wir konstruieren mit P und     Q eine ”Zufallsfolge” Xi = ai P+bi Q von Punkten in E Fq wie folgt: Wir zerlegen E Fq   in drei disjunkte Mengen E Fq = S 0 ∪ S 1 ∪ S 2 . Dann wählen wir a0 , b0 und berechnen X0 = a0 P + b0 Q. Rekursiv wird jetzt für i ≥ 1 definiert    P + Xi−1 für Xi−1 ∈ S 0      Xi =  2Xi−1 für Xi−1 ∈ S 1       Q + Xi−1 für Xi−1 ∈ S 2 Dann aus Xi = ai P + bi Q werden ai und bi für i ≥ 1 berechnet. Die Idee ist nun: Findet man i < j mit Xi = X j , so folgt ai P + bi Q = a j P + b j Q, also ! a j − ai (mod r) P Q= bi − b j

KAPITEL 5. ELLIPTISCHE KURVEN

38

 √ Auf diese Weise kann der diskrete Logarithmus in O nπ/2 Schritten berechnet wer√ den. Der Algorithmus kann mit dem Faktor 2 beschleunigt werden und hat dann eine √  zu erwartende Laufzeit von O nπ/2 . In [16] wird gezeigt, dass der Algorithmus mit r Prozessoren implementiert werden kann, so dass die zu erwartende Laufzeit jedes ein√  zelnen Prozessors O nπ/2r beträgt. Aufgrund der zufällig festgelegten Punkte, die in jeder Iteration verwendet werden, heißen derartige Methoden Random Walks. Es gibt ein alternatives Verfahren, den Pollard-λ-Algorithmus, der eine identische erwartete Laufzeit besitzt, in der Praxis zwar etwas langsamer arbeitet, jedoch geeignet ist, um den diskreten Logarithmus schneller zu berechnen, falls dieser in einem bekannten kleinen Intervall liegt. Mehrfache Logarithmen Silverman und Stapleton [22] fanden heraus, dass, wenn man eine einzelne Instanz von ECDLP (für einen gegebene Elliptische Kurve E und Basispunkt P) mit der (parallelisierten) Pollardschen-ρ Methode gelöst hat, dann das Lösen weiterer Instanzen von ECDLP (für die gleiche Kurve E und den gleichen Punkt P) beschleunigt werden kann. Wenn das Lösen der ersten Instanz die Zeit t benötigt, dann benötigt man für die zweite √  2 − 1 t ≈ 0.41t. Hat man diese beiden Instanzen gelöst, so ist die erwartete Rechenzeit √ √  3 − 2 t ≈ 0.32t. Hat man diese drei Instanzen gelöst, so ist zum Lösen der dritten √ √  die erwartete Rechenzeit zum Lösen der vierten 4 − 3 t ≈ 0.27t usw. Also sind die nachfolgenden Instanzen immer einfacher und schneller zu lösen. Der Zeitaufwand zum Lösen vom k Instanzen eines ECDLP für die gleiche Kurve E und den gleichen Punkt P √ ist nur der k-fache des Aufwands zum Lösen der ersten Instanz. Anomalen Kurven Für spezielle Klassen von Elliptischen Kurven gibt es Alternativen. Für Elliptische Kurven über Fq , bei denen die Spur t = 1 ist, lassen sich die diskreten Logarithmen in polynomieller Zeit berechnen. Dies wurde unabhängig voneinander in [25], [26] und [27] beschrieben. Diese so genannten anomalen Kurven sind also kryptographisch nicht geeignet. Bei der Erzeugung von Punktgruppen muss somit überprüft werden, ob die Spur ungleich 1 ist. Supersinguläre Kurven Menzes, Okamoto und Vanstone [12] haben gezeigt, wie ECDLP in einer Elliptischen Kurve E über einem Körper Fq zu DLP in der multiplikativen Gruppe im Erweiterungs-

KAPITEL 5. ELLIPTISCHE KURVEN

39

körper Fqk für kleine k reduziert werden kann, für das subexponentielle Algorithmen bekannt sind. Dieses Verfahren heißt MOV-Reduktion, nach den Initialen der Autoren. Die Reduktionsmethode funktioniert nur für eine spezielle Klasse von Kurven, die sogennanten supersingulären Kurven. Als supersingulär werden Elliptische Kurven über einem Körper Fq bezeichnet, wenn die Spur t von E die Charakteristik p von Fq teil. Für diese Klasse von Elliptischen Kurven gilt, dass k ≤ 6 ist. Daraus folgt, dass die MOV-Bedingung für diese Kurven erfüllt ist und damit alle supersingulären Kurven für kryptographische Anwendung uninteressant sind. Es gibt einen einfachen Test, um sicher zu stellen, dass eine Elliptische Kurve nicht anfällig gegen einen solchen Angriff ist: n, die Ordnung des Punktes P, darf nicht qk − 1 für kleine k teilen, für die das DLP über Fqk leicht zu behandeln ist. Für die Index-Kalkulus-Methode, die den diskreten Logarithmus in endlichen Körpern in subexponentieller Zeit berechnet, existiert auf Elliptischen Kurven bisher noch kein vergleichbarer, subexponentieller Algorithmus. Wenn wir die Idee von endlichen Körpern auf Elliptische Kurven übertragen wollen, treten einige Probleme auf. Silvermann und Suzuki [24] haben überzeugende Argumente gegeben, warum die Index-KalkulusMethode nicht auf dem ECDLP übertragen werden kann. Silverman hatte eine Idee [23], die die Vorgehensweise umkehrt und deswegen den Namen Xedni-Kalkulus-Methode trägt. Bei der Präsentation der Methode war dessen Laufzeit noch unklar. Neuere Untersuchungen ergaben, dass dieser Algorithmus nicht besser als erschöpfende Suche und somit ineffizient ist [7].

Kapitel 6 Domainparameter für Elliptische Kurven Zu jedem kryptographischen Verfahren in der Public-Key-Kryptographie (Verschlüsselung, Schlüsselaustausch, Signatur) gehört ein Satz von Parametern, die Domainparameter. Zu den Verfahren, die mit Ellitischen Kurven arbeiten, gehört immer ein Satz von EC-Domainparametern (Elliptic Curve Domainparameter), mit denen die benutzten Schlüssel assoziiert sind. Ein gültiger Schlüssel kann nicht zusammen mit den ”falschen” EC-Domainparametern benutzt werden.

6.1

Domainparameter für Elliptische Kurven über F p

Die Domainparameter für eine Elliptische Kurve über F p werden repräsentiert durch ein Sextupel der Form: T = (p, a, b, G, n, h) . Die Primzahl p bezeichnet die Charakteristik des verwendeten Körpers F p . Die Elemente a, b ∈ F p spezifizieren eine Elliptische Kurve, die durch die Gleichung E : y2 ≡ x3 + ax + b ( mod p)   definiert ist. Wie bereits beschrieben, wird diese Gleichung von #E F p Punkten erfüllt, wovon einer mit G = (xG , yG ) gegeben ist und Basispunkt heißt. Die Ordnung des Basis  punktes ist mit n bezeichnet und die ganze Zahl h = #E F p /n heißt Kofaktor. Der Punkt   G erzeugt also eine Untergruppe der Ordnung n von E F p .

40

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

6.2

41

Domainparameter für Elliptische Kurven über F2m

Die Domainparameter für eine Elliptische Kurve über F2m werden repräsentiert durch ein Septupel der Form: T (m, f (x) , a, b, G, n, h) . Die ganze Zahl m definiert zusammen mit dem irreduziblen binären Polynom f (x) vom Grad m den verwendeten Körper F2m . Die Elemente a, b ∈ F2m spezifizieren eine Elliptische Kurve, die durch die Gleichung E : y2 + xy ≡ x3 + ax2 + b in F2m definiert ist. Diese Gleichung wird von #E (F2m ) Punkten erfüllt, wovon einer der Basispunkt ist und mit G = (xG , yG ) bezeichnet wird. Die Ordnung dieses Punktes ist mit n definiert und für den Kofaktor h gilt h = #E (F2m ) /n. Der Punkt G erzeugt also eine Untergruppe der Ordnung n von E (F2m ). Wie bereits im Abschnitt 5.5.1 beschrieben, sind für spezielle Klassen von Elliptischen Kurven verbesserte Angriffe auf ECDLP in subexponentieller Zeit möglich. Daher soll die Kurve nicht anomal und nicht supersigulär sein. Weiterhin soll die Elementanzahl durch eine große Primzahl teilbar sein, um die Silver-Pohling-Hellmann Attacke auszuschließen. Man kann auf verschiedene Arten so eine Kurve erhalten: • zufällige Erzeugung, • Verwendung von Teilkörperkurven, • Verwendung von Standards (NIST, SEC). In dem folgenden Abschnitt wird die Methode zur Generierung eine zufällige Elliptische Kurve dargestellt.

6.3

Generierung eine zufällige Elliptische Kurve

Die Parameter, die eine Elliptische Kurve definieren, werden so definiert, dass sie Ausgabe einer Hashfunktion sein können. Der Eingabewert X der Hashfunktion H dient als Beweis, dass die Elliptische Kurve in der Tat zufällig generiert wurde. Das bietet Sicherheit dem Benutzer der Elliptischen Kurve, dass die Person, die die Kurve generiert hat, nicht absichtlich eine ”schwache” Kurve konstruiert hat, um danach den privaten Schüssel

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

42

des Benutzers berechnen zu können. Mit den Algorithmen 6.1 und 6.3 wird zuerst gezeigt, wie eine zufällige Elliptische Kurve über die Körper F p und F2m generiert werden kann und danach wird mit den Algorithmen 6.2 und 6.3 geprüft, ob die Kurve zufällig generiert wurde. Für den Fall, dass die Elliptische Kurve über den Körper F p generiert wird, wird angenommen, dass die folgenden Größen gewählt sind: • eine Primzahl p, • untere und obere Grenze rmin und rmax für die Ordnung des Basispunktes, • kryptographische Hashfunktion H mit Länge des Hashwertes B Bits, mit l m B ≥ 12 log2 (rmin ) , • L ist die Bitlänge der Nachricht die von H berechnet werden kann, mit L ≥ B. Es wird die folgende Notation benutzt: v = dlog2 pe, s = b(v − 1) /Bc und w = v − Bs − 1. Algorithmus 6.1 Generierung eine zufällige Elliptische Kurve über F p Eingabe: die Primzahl p. Ausgabe: Bit-String X und die Elemente a, b ∈ F p . Ablauf: 1. Wähle einen beliebigen Bit-String X mit Länge L. 2. Berechne h := H (X) und sei W0 der Bit-String, der aus den rechten w Bits von h besteht. 3. Konvertiere X in eine ganze Zahl z mit Algorithmus A.6 aus dem Anhang. 4. Für 1 ≤ i ≤ s :   4.1 Konvertiere (z + i) mod 2L in Bit-String Xi mit Algorithmus A.5 aus dem Anhang. 4.2 Berechne Wi := H (Xi ). 5. Sei W der Bit-String, den man durch die Konkatenation von W0 , W1 , .., W s wie folgt erhält: W = W0 ||W1 ||...||W s . 6. Konvertiere W in eine ganze Zahl c mit Algorithmus A.6 aus dem Anhang.

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

43

7. Falls c = 0 oder 4c + 27 ≡ 0 ( mod p), dann gehe zu Schritt 1. 8. Wähle beliebige ganze Zahlen a, b ∈ F p , so dass cb2 ≡ a3 (mod p). 9. Die Elliptische Kurve über F p ist E : y2 = x3 + ax + b. 10. Gib (X, a, b) aus. Mit dem folgenden Algorithmus wird geprüft, ob die Elliptische Kurve E mit dem Algorithmus 6.1 generiert wurde. Algorithmus 6.2 Verifikation, dass die Elliptische Kurve zufällig über F p generiert wurde Eingabe: Bit-String X mit Länge L, die Elemente a, b ∈ F p , die die Elliptische Kurve E : y2 = x3 + ax + b über F p definieren. Ausgabe: ”wahr” oder ”falsch”. Ablauf: 1. Berechne h := H (X) und sei W0 der Bit-String, der aus den rechten w Bits von h besteht. 2. Konvertiere X in eine ganze Zahl z mit Algorithmus A.6 aus dem Anhang. 3. Für 1 ≤ i ≤ s :   3.1 Konvertiere (z + i) mod 2L in Bit-String Xi mit Algorithmus A.5 aus dem Anhang. 3.2 Berechne Wi := H (Xi ). 4. Sei W der Bit-String, den man durch die Konkatenation von W0 , W1 , .., W s wie folgt erhält: W = W0 ||W1 ||...||W s . 5. Konvertiere W in eine ganze Zahl c mit Algorithmus A.6 aus dem Anhang. 6. Prüfe, ob: 6.1 c > 0. 6.2 (4c + 27 ( mod p)) > 0.

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

44

6.3 cb2 ≡ a3 ( mod p). 7. Gelten die Bedingungen im Schritt 6 nicht, dann gib ”falsch” aus, sonst gib ”wahr” aus. Für den Fall, dass die Elliptische Kurve über den Körper F2m generiert wird, wird angenommen, dass die folgenden Größen gewählt sind: • der Körper F2m , • untere und obere Grenze rmin und rmax für die Ordnung des Basispunktes, • kryptographische Hashfunktion H mit Länge des Hashwertes B Bits, mit l m B ≥ 21 log2 (rmin ) , • L ist die Bitlänge der Nachricht die von H berechnet werden kann, mit L ≥ B. Es wird die folgende Notation benutzt: s = b(m − 1) /Bc und w = m − Bs Algorithmus 6.3 Generierung einer zufälligen Elliptischen Kurve über F2m Eingabe: Der Körper F2m . Ausgabe: Bit-String X und die Elemente a, b ∈ F2m . Ablauf: 1. Wähle einen beliebigen Bit-String X mit Länge L. 2. Berechne h := H (X) und sei W0 der Bit-String, der aus den rechten w Bits von h besteht. 3. Konvertiere X in eine ganze Zahl z mit Algorithmus A.6 aus dem Anhang. 4. Für 1 ≤ i ≤ s :   4.1 Konvertiere (z + i) mod 2L in Bit-String Xi mit Algorithmus A.5 aus dem Anhang. 4.2 Berechne Wi := H (Xi ). 5. Sei W der Bit-String, den man durch die Konkatenation von W0 , W1 , .., W s wie folgt erhält: W = W0 ||W1 ||...||W s . 6. Konvertiere W in Körperelement b mit Algorithmen A.1 und A.8 aus dem Anhang.

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

45

7. Falls b = 0, dann gehe zu Schritt 1. 8. Sei a ein beliebiges Element in F2m . 9. Die Elliptische Kurve über F2m ist E : y2 + xy = x3 + ax2 + b. 10. Gib (X, a, b) aus. Mit dem folgenden Algorithmus wird geprüft, ob die Elliptische Kurve E mit dem Algorithmus 6.3 generiert wurde. Algorithmus 6.4 Verifikation, dass die Elliptische Kurve über F2m zufällig generiert wurde Eingabe: Bit-String X und die Elemente a, b ∈ F2m , die die Elliptische Kurve E : y2 + xy = x3 + ax2 + b über F2m definieren. Ausgabe: ”wahr” oder ”falsch”. Ablauf: 1. Berechne h := H (X) und sei W0 der Bit-String, der aus den rechten w Bits von h besteht. 2. Konvertiere X in eine ganze Zahl z mit Algorithmus A.6 aus dem Anhang. 3. Für 1 ≤ i ≤ s :   3.1 Konvertiere (z + i) mod 2L in Bit-String Xi mit Algorithmus A.5 aus dem Anhang. 3.2 Berechne Wi := H (Xi ). 4. Sei W der Bit-String, den man durch die Konkatenation von W0 , W1 , .., W s wie folgt erhält: W = W0 ||W1 ||...||W s . 5. Konvertiere W in Körperelement b0 mit Algorithmen A.1 und A.8 aus dem Anhang. 6. Prüfe, ob 6.1 b , 0. 6.2 b = b0 . 7. Gelten die Bedingungen im Schritt 6 nicht, dann gib ”falsch” aus, sonst gib ”wahr” aus.

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

6.4

46

Generierung von Domainparametern für Elliptische Kurven

Wir haben bereits in den Abschnitten 6.1 und 6.2 die Domainparameter für Elliptische Kurven über F p dargestellt und hier wird gezeigt, wie diese generiert werden können. Algorithmus 6.5 Generierung von Domainparametern für Elliptische Kurven über F p Eingabe: Der ungefähre gewünschte Sicherheitsgrad der Domainparameter in Bits in Form einer ganzen Zahl t ∈ {80, 112, 128, 192, 256}. Optional ein Bit-String X, falls die Elliptische Kurve zufällig generiert wird. Ausgabe: Die Domainparameter T = (p, a, b, G, n, h) für die Elliptische Kurve über einem Körper F p derart, das für die Berechnung des diskreten Logarithmus in der mit T definierten Elliptischen Kurve mit etwa 2t Operationen gerechnet werden muss. Ablauf:   1. Bestimme eine Primzahl p, so dass log2 p = 2t, falls 80 < t < 256, oder andern    falls log2 p = 521, falls t = 256, log2 p = 192, falls t = 80 erfüllt. Diese Zahl definiert den verwendeten Körper F p . 2. Wähle zwei Elemente a, b ∈ F p , um die Elliptische Kurve, gegeben durch die Gleichung y2 ≡ x3 + ax + b (mod p), zu bestimmen. Wähle weiterhin einen Punkt G = (xG , yG ) auf dieser Kurve, die prime Ordnung n von G und eine weitere ganze   Zahl, den Kofaktor h = #E F p /n, so dass die folgenden Bedingungen erfüllt sind: • 4a3 + 27b2 . 0 (mod p).   • #E F p , p. • pB . 1 ( mod n), für sämtliche B des Intervalls 1 ≤ B ≤ 100. • h ≤ 2t/8 . • n − 1 soll einen großen Primfaktor haben. 3. Gib T = (p, a, b, G, n, h) aus. Die Domainparameter für Elliptische Kurven über F2m werden wie folgt generiert: Algorithmus 6.6 Generierung von Domainparametern für Elliptische Kurven über F2m Eingabe: Der ungefähre gewünschte Sicherheitsgrad der Domainparameter in Bits in Form einer ganzen Zahl t ∈ {80, 112, 128, 192, 256}. Optional ein Bit-String X, falls die

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

47

Elliptische Kurve zufällig generiert wird. Ausgabe: Die Domainparameter T (m, f (x) , a, b, G, n, h) über dem Körper F2m derart, das für die Berechnung des diskreten Logarithmus in der mit T definierten Elliptischen Kurve mit etwa 2t Operationen gerechnet werden muss. Ablauf: 1. Sei t0 die kleinste ganze Zahl größer als t mit t ∈ {112, 128, 192, 256, 512}. Wähle m ∈ {163, 233, 239, 283, 409, 571}, so dass die Ungleichung 2t < m < 2t0 erfüllt ist. Dieses m bestimmt den Körper F2m . 2. Wähle ein irreduzibles Polynom f (x) von Grad m aus Tabelle 1 (s.u.). Dieses ist das Reduktionspolynom für F2m . 3. Wähle zwei Elemente a, b ∈ F2m , um die Elliptische Kurve, gegeben durch die Gleichung: y2 + xy ≡ x3 + ax2 + b über F2m , zu bestimmen. Wähle weiterhin einen Punkt G (xG , yG ), die prime Ordnung n von G und eine weitere ganze Zahl, den Kofaktor h = #E (F2m ) /n, so dass die folgenden Bedingungen erfüllt sind: • b , 0 in F2m . • #E (F2m ) , 2m . • 2mB . 1 (mod n) für sämtliche B des Intervalls 1 ≤ B < 100. • h ≤ 2t/8 . • n − 1 soll einen großen Primfaktor haben. 4. Gib T (m, f (x) , a, b, G, n, h) aus. F2163

f (x) = x163 + x7 + x6 + x3 + 1

F2233

f (x) = x233 + x74 + 1

F2239

f (x) = x239 + x36 + 1 f (x) = x239 + x158 + 1

F2283

f (x) = x283 + x12 + x7 + x5 + 1

F2409

f (x) = x409 + x87 + 1

F2571

f (x) = x571 + x10 + x5 + x2 + 1

Tabelle 1: Reduktionspolynome von F2m

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

6.5

48

Validierung von Domainparametern für Elliptische Kurven

Häufig ist es für eine Partei wünschenswert sich sicher zu sein, dass die Domainparameter, die für eine Elliptische Kurve über dem Körper F p oder F2m benutzt werden, valid sind, d.h. dass diese die Anforderungen von Domainparametern für Elliptische Kurven erfüllen. Es sind die folgenden vier Methoden vorgesehen, mit denen sich eine Partei U vergewissern kann, ob die mit den Domainparameter T beschriebene Elliptische Kurve den Vorgaben entspricht. 1. U verwendet die in diesem Abschnitt beschriebenen Algorithmen 6.7 und 6.8, um die Domainparameter zu überprüfen. 2. U erzeugt die Domainparameter T selbst mit den im letzten Abschnitt beschriebenen Algorithmen 6.5 und 6.6. 3. U erhält in einer beglaubigten Art und Weise die Versicherung, dass eine dritte Partei die Überprüfung der Domainparameter mit den in diesem Abschnitt beschriebenen Algorithmen 6.7 und 6.8 durchgeführt hat. 4. U erhält in einer beglaubigten Art und Weise die Versicherung, dass eine dritte Partei die Domainparameter mit den im letzten Abschnitt beschriebenen Algorithmen 6.5 und 6.6 erzeugt hat. Die Überprüfung der Domainparameter erfolgt mit dem folgenden Algorithmus. Algorithmus 6.7 Validierung von Domainparametern über F p Eingabe: Die Domainparameter der Form T = (p, a, b, G, n, h) und eine ganze Zahl t ∈ {80, 112, 128, 192, 256}, die den geforderten ungefähren Sicherheitsgrad bezeichnet. Optional der Bit-String X, falls die Elliptische Kurve zufällig generiert wird. Ausgabe: ”valid” oder ”invalid”. Ablauf:   1. Überprüfe, ob p eine ungerade Primzahl ist, so dass log2 p = 2t,   falls 80 < t < 256, oder log2 p = 521, falls t = 256, oder andernfalls dlog2 pe = 192, falls t = 80.   2. Überprüfe, ob a, b, xG , yG ganze Zahlen aus dem Intervall 0, p − 1 sind.

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

49

3. Überprüfe, ob 4a3 + 27b2 . 0 (mod p). 4. Überprüfe, ob yG2 ≡ xG3 + axG + b (mod p). 5. Überprüfe, ob n eine ungerade Primzahl ist.  2  √ 6. Überprüfe, ob h ≤ 2t/8 und h = p + 1 /n . 7. Überprüfe, ob nG = O. 8. Überprüfe, ob pB . 1 (mod n) für sämtliche B des Intervalls. 1 ≤ B ≤ 100 erfüllt ist und nh , p gilt. 9. Falls einer dieser Schritte nicht erfolgreich war, gib ”invalid” aus. Andernfalls gib ”valid” aus. Die Überprüfung der Domainparameter über F2m erfolgt mit dem folgenden Algorithmus. Algorithmus 6.8 Validierung von Domainparametern über F2m Eingabe: Die Domainparameter T = (m, f (x) , a, b, G, n, h) und eine ganze Zahl t ∈ {80, 112, 128, 192, 256}, die den geforderten ungefähren Sicherheitsgrad bezeichnet. Optional der Bit-String X, falls die Elliptische Kurve zufällig generiert wird. Ausgabe: ”valid” oder ”invalid”. Ablauf: 1. Sei t0 die kleinste ganze Zahl größer als t mit t ∈ {112, 128, 192, 256, 512}. Überprüfe, dass m ∈ {163, 233, 239, 283409, 571} ist, so dass 2t < m < 2t0 gilt. 2. Überprüfe, ob f (x) ein irreduzibles Polynom aus Tabelle 1 ist. 3. Überprüfe, ob a, b, xG , yG binäre Polynome vom Grad (m − 1) oder weniger sind. 4. Überprüfe, ob b , 0 in F2m . 5. Überprüfe, ob yG2 + xG yG = xG3 + axG2 + b in F2m . 6. Überprüfe, ob n eine ungerade Primzahl ist.  √ 2  7. Überprüfe, ob h ≤ 2t/8 und h = 2m + 1 /n . 8. Überprüfe, ob nG = O .

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

50

9. Überprüfe, ob 2mB . 1 (mod n), für sämtliche B des Intervalls 1 ≤ B ≤ 100 erfüllt ist und nh , 2m gilt. 10. Falls einer dieser Schritte nicht erfolgreich war, gib ”invalid” aus. Andernfalls gib ”valid” aus.

6.6

Schlüsselpaare bei Elliptischen Kurven

Zur einer gegebenen Menge von Domainparametern T = (p, a, b, G, n, h) oder T = (m, f (x) a, b, G, n, h) besteht ein Schlüsselpaar aus dem privaten Schlüssel d, der aus  dem Intervall [1, n − 1] ist, und dem öffentlichen Schlüssel Q = xQ , yQ , der ein Punkt der Elliptischen Kurve E ist, wobei Q = dG ist. Da Q der öffentliche Schlüssel ist, muss sichergestellt sein, dass es nicht möglich ist, den privaten Schlüssel d aus Q zu berechnen. Das Auflösen der Gleichung Q = dG nach d ist nicht möglich, da für zwei Punkte einer Elliptischen Kurve keine Division existiert. Andersherum könnte man versuchen, solange G auf sich selbst zu addieren, bis Q erreicht wird. Also d soll so gewählt werden, dass die nicht optimierte Addition von G + G + .. + G (d mal) nicht in annehmbarer Zeit zu berechnen ist. Ein Schlüsselpaar für Elliptische Kurven sollte wie folgt erzeugt werden: Algorithmus 6.9 Generierung des Schlüsselpaares Eingabe: gültige EC-Domainparameter der Form T = (p, a, b, G, n, h) oder T = (m, f (x) a, b, G, n, h). Ausgabe: ein Schlüsselpaar (d, Q) für die Parameter T . Ablauf: 1. Wähle eine zufällige ganze Zahl d aus dem Intervall [1, n − 1]. 2. Berechne Q = dG. 3. Gib (d, Q) aus. Mit dem Algorithmus 6.10 wird überprüft, ob der übergebene Punkt Q tatsächlich auf der verwendeten durch T spezifizierten Elliptischen Kurve liegt, ein skalares Vielfaches von G ist und nicht das neutrale Element repräsentiert. Algorithmus 6.10 Validierung des öffentlichen Schlüssels Eingabe: gültige EC-Domainparameter der Form T = (p, a, b, G, n, h) oder  T = (m, f (x) a, b, G, n, h) und ein öffentlicher Schlüssel Q = xQ , yQ für die Parameter

KAPITEL 6. DOMAINPARAMETER FÜR ELLIPTISCHE KURVEN

51

T. Ausgabe: ”valid” für einen gültigen oder ”invalid” für einen ungültigen Schlüssel. Ablauf: 1. Überprüfe, dass Q , O ist. 2. Falls T die Domainparameter einer Elliptischen Kurve über einem Körper F p dar  stellen, überprüfe dass xQ und yQ ganze Zahlen im Intervall 1, p − 1 sind und das außerdem y2Q ≡ x3Q + axQ + b ( mod p) erfüllt ist. 3. Falls T die Domainparameter einer Elliptischen Kurve über einem Körper F2m darstellen, überprüfe dass xQ und yQ binäre Polynome vom Grad maximal (m − 1) sind und außerdem y2Q + xQ yQ ≡ x3Q + ax2Q + b ( mod f (x)) erfüllt ist. 4. Überprüfe, dass nQ = O ist. 5. Falls eine der beschriebenen Bedingungen nicht erfüllt ist, gib ”invalid” aus, ansonsten gib ”valid” aus.

Kapitel 7 Elliptic Curve Digital Signature Algorithm In diesem Kapitel wird das Signaturverfahren ECDSA auf der Basis der Standards for Efficient Cryptography (SEC) spezifiziert. Dazu wird zuerst eine kurze Übersicht der existierenden Standards und deren Zusammenhänge dargestellt. Anschließend wird das Signaturverfahren entsprechend der SEC Struktur beschrieben.

7.1

Übersicht der Normung

Das auf Elliptischen Kurven basierende Signaturverfahren ECDSA wurde in den Standards ISO 14888-3 [6], IEEE 1363 [5], ANSI X9.62 [1], FIPS 186-2 [15] und in SEC1 [20] spezifiziert. Dabei referenziert FIPS 186-2 die Spezifikation von ANSI X9.62 und empfiehlt die Verwendung einer von 15 vorgegebenen Elliptische Kurven. Das Ziel beider Spezifikationen war einen möglichst hohen Sicherheitsstandard zu erreichen. Während FIPS 186-2 neben ECDSA auch DSA und RSA behandelt, sind in ANSI X9.62 keine weiteren Algorithmen spezifiziert und für ECDSA auch keine speziellen elliptischen Kurven empfohlen. Die ECDSA Spezifikation von SEC entspricht im wesentlichen ebenso ANSI X9.62, lässt jedoch Charakteristik 2-Körper zu mit Ordnung kleiner als 160-Bit. Die in FIPS 186-2 empfohlenen Elliptische Kurven sind auch in SEC enthalten. Zusätzlich zu ECDSA enthält SEC1 Spezifikationen für ECIES (Elliptic Curve Integrated Encryption Scheme) sowie für zwei auf elliptischen Kurven basierende Schlüsselaustauschverfahren, das EC-Diffie-Hellman Scheme und das EC-MQV Scheme (Menezes-Qu-Vanstone), welche alle im Standard ANSI X9.63 behandelt werden. Im Gegensatz zu dieser Inten-

52

KAPITEL 7. ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM

53

tion versteht sich der Standard IEEE P1363 eher als Referenz einer Vielzahl von verschiedenen Techniken, die auf Faktorisierung oder auf diskreten Logarithmen, sowohl für Primzahlkörper als auch für Elliptische Kurven, basieren, ohne beispielsweise minimale Schlüsselgrößen zu verlangen.

7.2

Konfiguration

Die Parteien U und V sollten die folgende Konfigurationsprozedur verwenden, um sich vorzubereiten, das ECDSA zu verwenden: 1. U sollte festlegen, welche der vorgesehenen Hashfunktionen für die Signaturerzeugung verwendet werden soll. Sei Hash die gewählte Hashfunktion, dann bezeichnen wir mit hashlen die Länge des Hashwertes in Octets, der mit Hash produziert wird. 2. U sollte mit Algorithmus 6.5 oder Algorithmus 6.6 EC-Domainparameter der Form T = (m, f (x) , a, b, G, n, h) oder T = (p, a, b, G, n, h) für die gewünschte Sicherheitsstufe festlegen. U sollte sich mit Algorithmus 6.7 oder Algorithmus 6.8 davon überzeugen, dass die generierten EC-Domainparameter gültig sind. 3. V sollte in einer beglaubigten Art und Weise die von U festgelegten EC-Domainparameter T und die Hashfunktion Hash erhalten. 4. V sollte mit Algorithmus 6.7 oder Algorithmus 6.8 die Gültigkeit der EC-Domainparameter T überprüfen.

7.3

Schlüsselaustausch

Die Parteien U und V sollten die folgende Schlüsselaustauschprozedur verwenden, um sich vorzubereiten, das ECDSA zu verwenden: 1. U sollte mit Algorithmus 6.9 ein Schlüsselpaar dU , QU für die EC-Domainparameter T festlegen. 2. V sollte in einer beglaubigten Art und Weise den öffentlichen Schlüssel QU erhalten. V kann optional mit Algorithmus 6.10 die Gültigkeit des öffentlichen Schlüssels QU überprüfen.

KAPITEL 7. ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM

7.4

54

ECDSA Signieralgorithmus

Um eine Nachricht m zu signieren, soll die Partei U wie folgt vorgehen: Algorithmus 7.1: Signieralgorithmus Eingabe: die Nachricht m, in Form eines Octet-Strings. Ausgabe: eine Signatur S = (r, s) der Nachricht m, bestehend aus den ganzen Zahlen r und s, oder ”invalid”. Ablauf: 1. Erzeuge mit den während der Konfigurationsphase festgelegten EC-Domainparameter ein Schlüsselpaar (k, R) mit R = (xR , yR ) mit Algorithmus 6.9. 2. Konvertiere das Körperelement xR in eine ganze Zahl xR mit Algorithmus A.11 aus dem Anhang. 3. Berechne r ≡ xR (mod n). Falls r = 0, dann gehe zu Schritt 1. 4. Berechne mit Algorithmus 3.1 und mit der während der Konfigurationsphase festgelegten Hashfunktion den Hashwert: H = Hash (m) bestehen aus hashlen Octets. Falls die Hashfunktion ”invalid” ausgibt, gib ebenfalls ”invalid” aus und beende den Vorgang. 5. Bestimme eine ganze Zahl e von H wie folgt: 5.1 Konvertiere mit Algorithmus A.2 aus dem Anhang den Octet-String H in einen Bit-String H 5.2 Setze E = H, falls dlog2 ne ≥ 8 ( hashlen ), oder bilde E aus den linken dlog2 ne Bits von H, falls dlog2 ne < 8 ( hashlen ). 5.3 Konvertiere mit Algorithmus A.1 aus dem Anhang den Bit-String E in den Octet-String E. 5.4 Konvertiere mit Algorithmus A.4 den Octet-String E in die ganze Zahl e. 6. Berechne: s ≡ k−1 (e + rdU ) ( mod n) . Falls s = 0 gehe zu Schritt 1. 7. Gib S = (r, s) aus.

KAPITEL 7. ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM

7.5

55

ECDSA Verifizieralgorithmus

V erhält also eine Nachricht m und eine Signatur (r, s). Um zu prüfen, ob die Signatur (r, s) gültig ist, sollte V wie folgt vorgehen. Algorithmus 7.2: Verifizieralgorithmus Eingabe: eine Nachricht m in Form eines Octet-Strings und U 0 s Signatur S = (r, s). Ausgabe: ”valid” für eine gültige Signatur oder ”invalid” für eine ungültige Signatur. Ablauf: 1. Falls r und s nicht aus dem Intervall [1, n − 1] sind, gib ”invalid” aus und beende den Vorgang. 2. Berechne mit Algorithmus 3.1 und mit der während der Konfigurationsphase festgelegten Hashfunktion den Hashwert: H = Hash (m) bestehen aus hashlen Octets. Falls die Hashfunktion ”invalid” ausgibt, gib ebenfalls ”invalid” aus und beende den Vorgang. 3. Bestimme eine ganze Zahl e von H wie folgt: 3.1 Konvertiere mit Algorithmus A.2 aus dem Anhang den Octet-String H in einen Bit-String H. 3.2 Setze E = H, falls dlog2 ne ≥ 8 ( hashlen ) oder bilde E aus den linken dlog2 ne Bits von H, falls dlog2 ne < 8 ( hashlen ). 3.3 Konvertiere mit Algorithmus A.1 aus dem Anhang den Bit-String E in den Octet-String E. 3.4 Konvertiere mit Algorithmus A.4 den Octet-String E in die ganze Zahl e. 4. Berechne: u1 ≡ es−1 ( mod n) und u2 ≡ rs−1 ( mod n) . 5. Berechne: R = (xR , yR ) = u1G + u2 QU . Falls R = O, gib ”invalid” aus und beende den Vorgang.

KAPITEL 7. ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM

56

6. Konvertiere das Körperelement xR in ganze Zahl xR mit Algorithmus A.11 aus dem Anhang. 7. Setze v ≡ xR (mod n). 8. Falls v = r gib ”valid” aus, andernfalls gib ”invalid” aus. Beweis der Korrektheit des Verfahrens R

= u1 G + u2 Q u     = es−1 mod n G + rs−1 mod n Qu     = es−1 mod n G + rs−1 mod n duG   = s−1 (e + rdu ) mod n G   −1 −1 = k (e + rdu ) (e + rdu ) mod n G   = (e + rdu )−1 k (e + rdu ) mod n G = kG = R

Also gilt nach Definition v = r.

7.6

ECDSA und DSA

ECDSA ist das Analogon zum Digitalen Signatur Algorithmus DSA. Beide Algorithmen basieren auf dem ElGamal-Signaturverfahren und benutzen die Signaturgleichung der Form s = k−1 (h (m) + dr) (mod n). Jedoch anstatt in einer Untergruppe der Ordnung q in Z∗p wird bei ECDSA in einer Punktgruppe einer Elliptischen Kurve gerechnet. Da ECDLP schwieriger zu sein scheint als das DLP in Z∗p , kann man eine EC Gruppe benutzen, die deutlich kleiner als Z∗p ist, um das gleiche Sicherheitslevel zu erreichen. So     liefert eine Elliptische Kurve E Z∗p mit einen Punkt P ∈ E Z∗p , dessen Ordnung eine 160-Bit Zahl ist, etwa den gleichen Sicherheitslevel wie DSA mit einem 1024-Bit Modulus. In diesem Fall haben sowohl DSA- als auch ECDSA- Signaturen die gleiche Länge von 320-Bit. Um die Effizienz von EC Kryptosystemen zu verdeutlichen, werden die Zeiten zum Berechnen von   1. kP mit P ∈ E Z∗p , p ≈ 2160 , k 160-Bit Zufallszahl (eine Operation in ECDSA) 2. gk (mod p), wobei p eine 1024-Bit Primzahl ist, k eine 160-Bit Zufallszahl (eine Operation in DSA)

KAPITEL 7. ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM

57

verglichen [8].  Angenommen, eine Körpermultiplikation in Z∗p benötigt log2 (p) 2 Operationen, dann dauert eine Multiplikation in (2) (1024/160)2 ≈ 41 mal länger als eine Körpermultiplikation in (1). Für die Berechnung von kP in ECDSA mit wiederholtem Verdoppeln und Addieren benötigt man durchschnittlich 160 EC Verdoppelungen und 80 EC Additonen. Jeder dieser beiden Operationen benötigt eine Körperinversion und zwei Körpermultiplikationen. Die Kosten für eine Addition können vernachlässigt werden, ebenso die für Körperquadrierung, wenn Fn2 benutzt wird. Für Fn2 dauert in der Praxis eine Körperinversion etwa so lange wie drei Körpermultiplikationen. Operation (1) benötigt also 1200 Körpermultiplikationen. Dies entspricht der Dauer von 1200/41 ≈ 29 1024-Bit modularen Multiplikationen. Für die Berechnung von gk (mod p) mit wiederholter Quadrierung und Multiplikation benötigt man durchschnittlich 240 1024-Bit modulare Multiplikationen. Daher ist Operation (1) achtmal schneller als (2).

Kapitel 8 Zusammenfassung Im Zeitalter der zunehmenden Digitalisierung unserer Gesellschaft gewinnen digitale Signaturen mehr und mehr an Bedeutung. Heute schreiben wir Rechnungen, Geschäftsbriefe und sonstige Korrespondenz am Computer. Insbesondere Emails sind als Kommunikationsmedium nicht mehr wegzudenken. Um die Rechtsverbindlichkeit dieser Dokumente sicherzustellen, druckt man sie meist aus und unterschreibt sie mit der Hand. Wünschenswert ist es daher, dass auch für Computerdokumente eine der eigenhändigen Signatur gleichgestellte Technik existiert. Der deutsche Gesetzgeber hat diese Tendenz frühzeitig erkannt und hat die digitale Signaturen auf eine Ebene mit der konventionellen, handschriftlichen Unterschrift gleichgestellt, und hat damit zur weiteren Verbreitung der digitalen Signaturen beigetragen. Ziel der vorliegenden Arbeit war die digitalen Signaturen auf der Basis Elliptischen Kurven vorzustellen. Zuerst wurden die kryptographischen Grundlagen und das Grundprinzip der digitalen Signaturen beschrieben. Um die Theorie und Arithmetik der Elliptischen Kurven darzustellen, wurden zuerst einige mathematische Strukturen beschrieben. Schließlich wurde das ECDSA-Verfahren vorgestellt. Signaturen auf der Basis Elliptischen Kurven sind heute die einzige ernsthafte Alternative zu RSA und DSA. Sie besitzen einige sehr schöne Eigenschaften, wie höhere Sicherheit durch das ECDLP und deutlich kürzere Schlüssel- und Signaturlängen. Durch die kürzeren Schlüssellängen verringern sich nicht nur Speicher- und Bandbreitebedarf, sondern auch die Anforderungen an die kryptographischen Operationen. ECC spielt für Implementierungen auf Smartcards, mobilen und embedded Systemen mit begrenzten Speicher- und Rechenressourcen eine wichtige Rolle. ECC hat mit der Standardisierung durch die Internet Engineering Task Force (IETF) an großer Bedeutung für die Internet-Kommunikation gewonnen. ECC kann in den IETF Standards 58

KAPITEL 8. ZUSAMMENFASSUNG

59

für alle Schlüssel Internet-Protokolle gefunden werden: IPSec, TLS, PKIX und S/MIME [28]. Auch der neue elektronische Reisepass wird ECDSA verwenden, um die Daten des Radio-Frequency-Chips zu sichern. Die allgemeine Stimmung zu ECC insbesondere zu Signaturen auf der Basis Elliptischer Kurven ist positiv. Sowohl Industrie als auch Wissenschaft haben Vertrauen in ECC. Dementsprechend kann man erwarten, dass die Bedeutung von ECC noch zunehmen wird.

Anhang A Datentypen und Konvertierung Die verschiedenen Komponenten verwenden verschiedene Datentypen. Hier werden nun diese Datentypen und die dazugehörenden Regeln der Konvertierung zwischen den einzelnen Typen beschrieben. Die Typen lassen sich nach der Art ihrer Verwendung in zwei Kategorien unterteilen. Zum einen werden Typen benötigt, die algebraische Elemente repräsentieren, also ganze Zahl, FieldElement und EllipticCurvePoint, zum anderen muss die Nachricht und das Argument für die Hashfunktion repräsentiert werden, wofür die Typen Bit-String und Octet-Sting verwendet werden.

Konvertierung zwischen Bit-Strings und Octet-Strings Algorithmus A.1: Bit-String → Octet-String Eingabe: Bit-String B, bestehend aus blen Bits. Ausgabe: Octet-String M bestehend aus mlen = dblen/8e Octets. Ablauf: Der übergebene Bit-String B0 B1 ...Bblen−1 wird zuerst auf eine durch acht teilbare Länge gebracht, indem von links her die blen (mod 8) fehlenden Bits jeweils mit 0 aufgefüllt werden. Das Resultat wird dann in 8-Bit Blöcke aufgeteilt und bildet den Octet-String M = M0 M1 ...Mmlen−1 . Dazu sollte wie folgt vorgegangen werden: 1. Für 0 < i ≤ mlen − 1, setze: Mi = Bblen−8−8(mlen−1−i) Bblen−7−8(mlen−1−i) ...Bblen−1−8(mlen−1−i) . 2. Für M0 setze die linken 8(mlen) - blen Bits auf 0 und setze die übrigen 8 - (8(mlen))blen) Bits aus B0 B1 ...B8−8(mlen)+blen−1 zusammen. 3. Gib M aus. 60

ANHANG A. DATENTYPEN UND KONVERTIERUNG

61

Algorithmus A.2: Octet-String → Bit-String Eingabe: Octet-String M, bestehend aus mlen Octets. Ausgabe: Bit-String B, bestehend aus blen=8(mlen) Bits. Ablauf: Konvertiere den Octet-String M = M0 M1 ...Mmlen−1 in den Bit-String B0 B1 ...Bblen−1 wie folgt: 1. Für 0 ≤ i ≤ mlen − 1 setze B8i B8i+1 ...B8i+7 = Mi . 2. Gib B aus.

Konvertierung zwischen ganze Zahlen und Octet-Strings Algorithmus A.3: ganze Zahl → Octet-String Eingabe: eine positive ganze Zahl x und die gewünschte Anzahl mlen der Octets. Dazu muss 28(mlen) > x erfüllt sein. Ausgabe: Octet-String M bestehend aus mlen Octets. Die ganze Zahl x wird hier als Bit-String interpretiert und in einzelne ”Ziffern” eines Zahlensystems zur Basis 28 = 256 derart aufgeteilt, dass damit x = xmlen−1 28(mlen−1) + xmlen−2 28(mlen−2) +....+ x1 28 + x0 gilt. Das Resultat ist der Octet-String M = M0 M1 ...Mmlen−1 . Die Konvertierung sollte wie folgt durchgeführt werden: Ablauf: 1. Für 0 < i ≤ mlen − 1 setze Mi = xmlen−1−i . 2. Gib M aus. Algorithmus A.4: Octet-String → ganze Zahl Eingabe: Octet-String M bestehend aus mlen Octets. Ausgabe: eine ganze Zahl x. Der Octet-String M = M0 M1 ...Mmlen−1 wird als Zahl zur Basis 256 aufgefasst und deren Konvertierung in eine ganze Zahl x wird wie folgt durchgeführt: Ablauf:

ANHANG A. DATENTYPEN UND KONVERTIERUNG

62

1. Betachte Mi als eine Zahl aus dem Intervall [1, 256] und setze: x=

mlen−1 X

28(mlen−1−i) Mi .

i=0

2. Gib x aus.

Konvertierung zwischen ganze Zahlen und Bit-Strings Algorithmus A.5: ganze Zahl → Bit-String Eingabe: eine positive ganze Zahl x und die gewünschte Anzahl blen der Bits, dazu muss 2blen > x erfüllt sein. Ausgabe: Bit-String B bestehend aus blen Bits. Die ganze Zahl x wird in einzelne ”Ziffern” eines Zahlensystems zur Basis 2 derart aufgeteilt, dass damit x = xblen−1 2blen−1 + xblen−2 2blen−2 + ... + x1 2 + x0 gilt. Das Resultat ist der Octet-String B = B0 B1 ...Bblen . Die Konvertierung sollte wie folgt durchgeführt werden: Ablauf: 1. Für 1 ≤ i ≤ mlen setze Bi = xblen−i . 2. Gib B aus. Algorithmus A.6 Bit-String → ganze Zahl Eingabe: Bit-String B bestehend aus blen Bits. Ausgabe: eine ganze Zahl x. Der Bit String B = B0 B1 ..Bblen wird als Zahl zur Basis 2 aufgefasst und deren Konvertierung in eine ganze Zahl wird wie folgt durchgeführt: Ablauf: 1. Seien (B0 , B1 , .., Bblen ) die Bits von B, dann setze: x=

blen X i

2. Gib x aus.

2blen−i Bi .

ANHANG A. DATENTYPEN UND KONVERTIERUNG

63

Konvertierung zwischen Körperelementen und Octet-Strings Algorithmus A.7: FieldElement → Octet-String Eingabe: Ein Element a des endlichen Körpers Fq . Ausgabe: Octet-String M bestehend aus mlen = dlog2 q/8e Octets. Das Element a ist entweder eine ganze Zahl des Körpers F p oder ein Polynom des Körpers F2m , dessen Koeffizienten als Bit-String aufgefasst werden. Dabei wird der Koeffizient des Monoms mit dem höchsten Grad als das erste Bit von links definiert. Ein Element a wird wie folgt in einen Octet-String M = M1 M2 ...Mmlen−1 konvertiert: Ablauf: 1. Falls q = p eine ungerade Primzahl ist, dann ist a eine ganze Zahl im Intervall   0, p − 1 . In diesem Fall konvertiere a zu M mit Algorithmus A.3 und gib M aus. 2. Falls q = 2m , dann ist a = am−1 xm−1 + ... + a1 x + a0 ein binäres Polynom. Dann wird a nach M wie folgt konvertiert: 2.1 Für 0 < i ≤ mlen − 1 setze Mi = a7+8(mlen−1−i) a6+8(mlen−1−i) ...a8(mlen−1−i) . 2.2 Für M0 setze die linken 8(mlen)-m Bits auf 0 und setze die übrigen 8-(8(mlen)m) Bits aus am−1 am−2 ...a8(mlen)−8 zusammen. 2.3 Gib M aus. Algorithmus A.8: Octet-String → FieldElement Eingabe: Einen Hinweis auf den verwendeten Körper Fq und ein Octet-String M bestehend aus mlen = dlog2 /8e Octets. Ausgabe: ein Element a des Körpers Fq oder ”invalid”. Ablauf: Konvertiere den Octet-String M = M0 M1 ...Mmlen−1 mit Mi = Mi0 Mi1 ...Mi7 in das Körperelement a wie folgt: 1. Falls q = p eine ungerade Primzahl ist, dann muss a eine ganze Zahl im Intervall   0, p − 1 sein. In diesem Fall konvergiere M zu a mit Algorithmus A.4. Falls a nicht   im Intervall 0, p − 1 liegt, gib ”invalid” aus und beende den Vorgang. Andernfalls gib a aus. 2. Ist dagegen q = 2m , dann muss a ein binäres Polynom vom maximalen Grad (m − 1) sein. Setze a = am−1 xm−1 + ... + a1 x + a0 mit 7−i+8(bi/8c) ai = Mmlen−1−(bi/8c)

ANHANG A. DATENTYPEN UND KONVERTIERUNG

64

Gib ”invalid” aus und beende den Vorgang, falls die linken 8(mlen)-m Bits von M0 nicht sämtlich gleich 0 sind. Andernfalls gib a aus.

Konvertierung zwischen Punkten auf Elliptischen Kurven und Octet-Strings Punkte auf Elliptischen Kurven bestehen aus zwei Koordinaten. Da jedoch y2 = f (x) zwei y-Werte für einen x-Wert als Lösung besitzt und man beide jederzeit berechnen kann, genügt es lediglich zu wissen, welcher von beiden gemeint ist. Diese Information kann in einem Bit des x-Wertes gespeichert werden. Da man damit den Speicherbedarf für einen Punkt halbiert hat, wird dieses Verfahren Punkt - Komprimierung genannt. Algorithmus A.9: EllipticCurvePoint → Octet-String Konfiguration: Entscheide, ob Punkt-Komprimierung verwendet wird oder nicht. Eingabe: Ein Punkt P auf einer Elliptischen Kurve über Fq , die durch die Körperelemente a, b bestimmt ist. Ausgabe: Octet-String, bestehend aus mlen Octets; dabei ist mlen = 1, falls P = O, mlen = d(log2 q/8)e + 1, falls P , O und Punkt-Komprimierung verwendet wird oder mlen = 2 d(log2 q/8)e + 1, falls P , O und Punkt-Komprimierung nicht verwendet wird. Den kompletten Vorgang für die Konvertierung des Punktes P in den Octet-String M = M0 M1 ...Mmlen−1 beschreibt das folgende Verfahren: Ablauf: 1. Falls P = O, gib M = 0016 aus. 2. Falls P = (xP , yP ) , O und Punkt-Komprimierung verwendet wird: (a) Konvertiere mit Algorithmus A.7 das Element xP in einen Octet-String X, bestehend aus d(log2 q/8e) Octets. (b) Bestimme ein Bite yP wie folgt (Dieses Bit repräsentiert dann die y-Koordinate): i. Wenn q = p eine ungerade Primzahl ist, setze e yP = yP (mod 2). ii. Wenn q = 2m , setze e yP = 0 falls xP = 0. Ansonsten berechne z = zm−1 xm−1 + ...z1 x + z0 , so dass z = yP x−1 yP = z0 . P und setze e (c) Falls e yP = 0, setze das Octet Y = 0216 . Falls stattdessen e yP = 1, setze das Octet Y = 0316 .

ANHANG A. DATENTYPEN UND KONVERTIERUNG

65

(d) Gib M = Y||X aus. 3. Falls P = (xP , yP ) , O und Punkt-Komprimierung nicht verwendet wird: (a) Konvertiere mit Algorithmus A.7 das Element xP in einen Octe-String X, bestehend aus d(log2 q/8)e Octets. (b) Konvertiere mit Algorithmus A.7 das Element yP in einen Octet-String Y, bestehend aus d(log2 q/8)e Octets. (c) Gib M = 0416 ||X||Y aus. Algorithmus A.10 Octet-String → EllipticCurvePoint Eingabe: eine Elliptische Kurve über Fq , die durch die Elemente a, b bestimmt ist und ein Octet-String M, der entweder aus dem einzelnen Octet 0016 besteht, aus einem String mit mlen = d(log2 q/8)e + 1 Octets oder aus einem String mit mlen = 2 d(log2 q/8)e + 1 Octets. Ausgabe: ein Punkt P einer Elliptischen Kurve oder ”invalid”. Ablauf: 1. Falls M = 0016 , gib P = O aus. 2. Falls M die Länge d(log2 q/8)e + 1 Octets hat, gehe wie folgt vor: (a) Spalte M = Y||X in ein einzelnes Octet Y und einen Octet-String X, der aus d(log2 q/8)e Octets besteht. (b) Konvertiere X mit Algorithmus A.8 in das Element xP . Falls die Routine ”invalid” ausgibt, gib ebenfalls ”invalid” aus und brich den Vorgang ab. (c) Falls Y = 0216 , setze e yP = 0. Falls Y = 0316 , setze e yP = 1. Ansonsten gib ”invalid” aus und brich den Vorgang ab. (d) Bilde aus xP und e yP den Punkt P wie folgt: i. Falls q = p eine ungerade Primzahl ist, berechne das Element α ≡ x3P + axP + b (mod p) und berechne die Quadratwurzel β von α (mod p). Falls keine Quadratwurzeln von α mod p existieren, gib ”invalid” aus und brich den Vorgang ab. Ansonsten setze yP = β, falls β ≡ e yP (mod 2) oder yP = p − β, falls β . e yP (mod 2). ii. Falls q = 2m und xP = 0, setze yP = b2

m−1

als Element in F2m .

ANHANG A. DATENTYPEN UND KONVERTIERUNG

66

iii. Falls q = 2m und xP , 0, berechne das Element β in F2m mit β = xP + m−1 + ...z1 x + z0 in F2m , a + bx−2 P und finde ein weiteres Element z = zm−1 x

so dass z2 + z = β. Falls kein solches z existiert, gib ”invalid” aus und brich den Vorgang ab. Andernfalls setze yP = xP z, falls z0 = e yP oder setze stattdessen yP = xP (z + 1), falls z0 , e yP . (e) Gib P = (xP , yP ) aus. 3. Falls M aus mlen = 2 d(log2 q/8)e + 1 Octets besteht: (a) Spalte M = W||Y||X in ein einzelnes Octet W und zwei aufeinander folgende Octet-Strings X, Y, die jeweils aus d(log2 q/8)e zusammenhängenden Octets bestehen. (b) Überprüfe, dass W = 0416 ist. Wenn diese Bedingung nicht erfüllt ist gib ”invalid” aus und brich den Vorgang ab. (c) Konvertiere X mit Algorithmus A.8 in das Element xP aus Fq . Falls die Routine ”invalid” ausgibt, gib ebenfalls ”invalid” aus und brich den Vorgang ab. (d) Konvertiere Y mit Algorithmus A.8 in das Element yP aus Fq . Falls die Routine ”invalid” ausgibt, gib ebenfalls ”invalid” aus und brich den Vorgang ab. (e) Überprüfe, dass P = (xP , yP ) die Gleichung der Elliptischen Kurve mit den Parametern a, b erfüllt. Wenn P kein Punkt der Kurve ist, gib ”invalid” aus und brich den Vorgang ab. (f) Gib P = (xP , yP ) aus.

Konvertierung zwischen Körperelemente und ganze Zahlen Algorithmus A.11 FieldElement → ganze Zahl Eingabe: Ein Element a des endlichen Körpers Fq . Ausgabe: Eine ganze Zahl x. Ablauf: 1. Falls q = p eine ungerade Primzahl, dann ist a eine ganze Zahl aus dem Intervall   0, p − 1 . Gib x = a aus.

ANHANG A. DATENTYPEN UND KONVERTIERUNG

67

2. Falls q = 2m , dann ist a ein Polynom vom Grad (m − 1), d.h. a = am−1 xm−1 + am−2 xm−2 + ... + a1 + a0 . Setze x=

m−1 X i=0

Gib x aus.

2i ai .

Literaturverzeichnis [1] ANSI X9.62, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA), 1999 [2] Diffie, W. and Hellman, M., New directions in cryptography, IEEE Transactions on Information Theory, IT-22(6):644-654, 1976 [3] ElGamal, T., A public key cryptosystem and a signature scheme based on discrete logarithms, IEEE Transactions on Information Theory, 31, 469-472, 1985 [4] Hellmann, R.C., An improved algorithm for computing logarithms over GF(p) and its cryptographic significance, IEEE Transactions on Information Theory 24, 106110, 1978 [5] IEEE P1363, Standard specifications for public-key cryptography, 2000 [6] ISO/IEC 14888-3, Information Technology - Security Techniques - Digital Signatures with Appendix - Part 3: Certificate Based-Mechanisms, 1998 [7] Jacobson, Analysis

M.J., of

the

Koblitz, Xandi

N.,

Silverman,

Calculus

J.H.,

Attack,

Stein,

preprint,

A.,

Teske,

erhlätlich

E., unter

http://www.cacr.math.uwaterloo.ca, Technical Reports, 1999 [8] Johnson, D.B. and Menezes, A.J., Elliptic Curve DSA (ECDSA): An Enhanced DSA, ECC Whitepapers, Certicom, 1997/98 [9] Johnson, D.B. and Menezes, A.J., The Elliptic Curve Digital Signature Algorithm (ECDSA), Technical Report CORR 99-31, Dept. of C&O, University of Waterloo, Canada, 1999 [10] Koblitz, N., Elliptic curve cryptosystems, Mathematics of Computation, 48, 203209, 1987 68

LITERATURVERZEICHNIS

69

[11] Menezes, A., Elliptic curve cryptosystems, CryptoBytes 2, 1-3, 1995 [12] Menezes, A., Vanstone, S., and Okamoto, T., Reducing elliptic curve logarithms to logarithms in a finite field, Proceedings of the 23rd Annual ACM Symposium on Theory of Computing, 80-89, New Orleans, Louisiana, 6-8 May 1991 [13] Menezes, A., Van Oorschot, P. and Vanstone, S., Handbook of Applied Cryptography, CRC Press, 1996 [14] Miller, V., Uses of elliptic curves in cryptography, Advances in Cryptology- CRYPTO’85, Lecture Notes in Computer Science, 218, Springer-Verlag, 417-426, 1985 [15] National Institute of Standards and Technology, Digital Signature Standard, FIPS Publication 186-2, 2000 [16] Van Oorschot, P.C. and Wiener, M.J., Parallel Collision Search with Application to Hash Functions and Discrete Logarithms, Proceedings of 2nd ACM Conference on Computer and Communication Security, 1994 [17] Oswald, E., Introduction to Elliptic Curve Cryptography, 2005 [18] Pohling, S. and Hellman, M., An improved algorithm for computing logarithms over GF(p) and its cryptographic significance, IEEE Transactions on Information Theory, 24, 106-110, 1978 [19] Rivest, R., Shamir, A. and Adleman, L.M., A Method for Obtaining Digital Signatures and Public Key Cryptosystems, Communications of the ACM, 21, 120-126, 1978 [20] SEC1: Elliptic Curve Cryptography, Certicom Research, November 13, 2006 [21] Silverman, J.H., Rational Points on elliptic curves, Springer-Verlag, 1992 [22] Silverman, R. and Stapleton, J., Contribution to ANSI X9F1 working group, 1997 [23] Silverman, J., The Xendi Calculus and the elliptic curve discrete logarithm problem, Designs, Codes and Cryptography, 20, 5-40, 2000 [24] Silverman, J.H., Suzuki J., Elliptic Curve Discrete Logarithms and the Index Calculus, Advances in Cryptology, Asia Crypt’98, LNCS 1512,110-125, 1998

LITERATURVERZEICHNIS

70

[25] Satoh, T., and Araki, K., Fermat quotients and polynomial time discrete log algorithm for anomalous elliptic curve, Commentarii Math. Univ. St. Pauli, 47, 81-92, 1998 [26] Semaev, I.A., Evaluation of Discrete Logarithms on Some Elliptic Curves, Mathematics of Computation, 67, 353-356, 1998 [27] Smart, N.P., The discrete logarithm on elliptic curves of trace one, Crptology, 12, 193-196, 1999 [28] Vastone, S.,How ECC Can Improve Internet Communikations: ECC and the IETF, Code and Cipher, Vol. 1, no. 4, 2004 [29] Wohlmacher, P., Digitale Signaturen und Sicherheitsinfrastrukturen,IT Verl. für Informationstechnik, 2001 [30] Xiaoyun Wang, Yiqun Lisa Yin aud Hongbo Yu, Fiding Collisions in the Full SHA1, 2005