Beruflich Dokumente
Kultur Dokumente
Taro Fruhwirth
Silvie Schmidt
April 2, 2014
Joze Kocijancic
Contents
1 ECC - Elliptic Curve Cryptography
1.1 Elliptische Kurven . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Punkt-Multiplikation . . . . . . . . . . . . . . . . . .
1.1.2 Punktaddition . . . . . . . . . . . . . . . . . . . . . .
1.1.3 Punktverdopplung . . . . . . . . . . . . . . . . . . .
1.2 ECC auf endlichen Koerpern . . . . . . . . . . . . . . . . . .
1.2.1 ECC auf Primkoerpern . . . . . . . . . . . . . . . . .
1.2.2 ECC auf Binaerkoerpern . . . . . . . . . . . . . . . .
1.2.3 Domainparameter . . . . . . . . . . . . . . . . . . . .
1.3 Warum elliptische Kurven in der Kryptographie? . . . . . .
1.3.1 ECDLP - Elliptic Curve Discrete Logarithm Problem
2 ECDH Implementierung
2.1 Funktionsweise DH-Verfahren . . . . . . . . . .
2.1.1 DH . . . . . . . . . . . . . . . . . . . . .
2.1.2 ECDH . . . . . . . . . . . . . . . . . . .
2.2 Implementierung mit Double-And-Add . . . . .
2.2.1 Double-And-Add Algorithmus . . . . . .
2.3 Implementierung mit Montgomery Ladder . . .
2.3.1 Montgomery Ladder Algorithmus . . . .
2.4 Implementierung mittels Bernsteins Curve25519
2.5 Laufzeiten der verschiedenen Implementierungen
2.6 Vergleich der verschiedenen Verfahren . . . . . .
A Anhang/Ergaenzende Information/Quellen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
4
4
5
5
6
6
7
7
.
.
.
.
.
.
.
.
.
.
8
9
9
9
10
11
11
12
12
13
13
15
Im folgenden Kapitel wird die Elliptic Curve Cryptography (ECC) einfuehrend besprochen - dies bezieht sich sowohl auf deren mathematischen Aspekte, so wie deren
Bedeutung fuer die Kryptographie. Das zweite Kapitel beschaeftigt sich mit dem Diffie
Hellman Schluesselaustauschverfahren (DH) und dessen Entwicklung mit Hilfe von
ECC, Elliptic Curve Diffie Hellman (ECDH). Letztendlich wird zum Abschluss die
vorliegende Implementierung besprochen und ein Vergleich mit den Implementierungen der anderen Verfahren dargestellt.
1.1
Elliptische Kurven
(1)
4a3 + 27b2 6= 0
(2)
mit
um Singularitaet, d.h. mehrfache Nullstellen, zu vermeiden. Alle Punkte (x,y), die
die o.a. Formel 1 erfuellen, liegen auf der Kurve. Die Koeffizienten der Kurve werden
durch a und b ausgedrueckt. Ellipitsche Kurven sind symmetrisch entlang der x-Achse.
1.1.1
Punkt-Multiplikation
Die Punkt-Multiplikation bez. elliptischer Kurven ist die Multiplikation eines Punktes
der Kurve mit einem Skalar mit Hilfe der Kurvengleichung; dabei werden die Punktaddition und die Punktverdopplung durchgefuehrt; beide Verfahren werden in den
nachfolgenden Abschnitten erklaert.
kP = Q
1
http://www.sagemath.org
(3)
Punktaddition
Die Punktaddition ist eine Addition zweier Punkte P und Q der Kurve, deren Ergebnis,
ein Punkt R, ebenfalls auf der Kurve ist. P und Q muessen voneinander verschieden
und nicht zueinander invers sein, da gilt:
P + (P ) = O
(4)
Diese Formel (4) sagt ja nichts anderes als, dass die Summe zweier Punkte mit gleicher
x-Koordinate im Unendlichen liegt.
O stellt den Punkt im Unendlichen dar, der das neutrale Element bez. der Addition
ist. (P ) ist die Spiegelung von P an der x-Achse.
P +O =O+P =P
(5)
(6)
Die Addition R = P + Q erfolgt dann zunaechst mit der Ermittlung der Steigung
der Gerade durch P und Q:
(yQ yP )
s=
(7)
xQ xP
Die Koordinaten von R werden dann wie folgt errechnet:
1.1.3
x R = s2 x P x Q
(8)
yR = s(xP xR ) yP
(9)
Punktverdopplung
Die Verdopplung eines Punktes bedeutet eine Addition mit sich selbst, deren Ergebnis
wieder einen Punkt auf der Kurve darstellt. In dem man eine Tangente durch den
Punkt legt und den dabei entstehenden Schnittpunkt an der x-Achse spiegelt, erhaelt
man den verdoppelten Punkt. Die y-Koordinate des Punktes darf dabei nicht 0 sein, da
die Verdopplung den Punkt im Unendlichen darstellt. Die Punktverdopplung R = 2P
wird wie folgt berechnet. Die Tangente s in P :
(3x2P + a)
2yP
(10)
xR = s2 2xP
(11)
yR = s(xP xR ) yP
(12)
s=
Die Koordinaten von R:
1.2
Die Gleichung einer elliptischen Kurve auf einem Primkoerper lautet wie folgt:
y 2 = x3 + ax + b (mod p)
(13)
mit
4a3 + 27b2
(mod p) 6= 0
(14)
Die Elemente sind Integerzahlen im Bereich zwischen 0 und p1. Der Modulus p ist
eine Primzahl und wird so gewaehlt, dass die Kurve genuegend Elemente enthaelt, um
der kryptographischen Sicherheit zu genuegen. Punktaddition und Punktverdopplung
sind analog zu den Operationen mit reellen Zahlen - allerdings mit (mod p).
Punkt-Addition:
(yQ yP )
s=
(mod p)
(15)
xQ xP
Die Koordinaten von R werden dann wie folgt errechnet:
xR = s 2 xP xQ
2
http://www.sagemath.org
(mod p)
(16)
yR = s(xP xR ) yP
(mod p)
(17)
(3x2P + a)
2yP
(mod p)
(18)
xR = s2 2xP
(mod p)
(19)
s=
Die Koordinaten von R:
yR = s(xP xR ) yP
1.2.2
(mod p)
(20)
Die Gleichung einer elliptischen Kurve auf einem Binaerkoerper F (2m ) lautet wie folgt:
y 2 + xy = x3 + ax2 + b
(21)
b 6= 0
(22)
mit
Die Elemente sind Integerzahlen mit einer Bitlaenge von max. m Bits. Punktaddition und Punktverdopplung koennen von denen der reellen Zahlen abgeleitet werden
und fuer Binaerkoerper wie folgt adaptiert:
Punkt-Addition:
(yQ + yP )
s=
(23)
xQ + xP
xR = s 2 + s + xP + xQ + a
(24)
yR = s(xP + xR ) + xR + yP
(25)
Punkt-Verdopplung R = 2P :
s=
1.2.3
(xP + yP )
xP
(26)
xR = s 2 + s + a
(27)
yR = x2P + xR (s + 1)
(28)
Domainparameter
Domain-Parameter von FP :
p...Primzahl bzw. Potenz einer Primzahl
a, b...Koeffizienten der Kurve
P ...Basispunkt der Kurve
n...Ordnung von P
P)
h...Kofaktor mit h = #E(F
n
Anzahl der Punkte auf der Kurve #E(FP ):
Allgemein hat eine elliptische Kurve ca. p Punkte; diese wird u.a. durch die HasseSchranke (Hasse-Theorem) ausgedrueckt:
(1
1.3
p)2 #E(FP ) (1 +
p)2
(29)
Derzeit gelten bei kryptographischen Systemen wie RSA, El-Gamal und Diffie-Hellman
Bitlaengen mit ca. 1024 Bit als sicher. Allerdings sind immer groesser werdende Bitlaengen in der Praxis nicht erwuenscht, sondern man strebt im Gegenteil kuerzere
Bitlaengen bei gleichbleibender Sicherheit an. Die Idee dahinter ist es, eine Gruppe zu
finden, in der ein dementsprechendes schweres Problem existiert. Im Fall von elliptischen Kurven ist dies das Problem des diskreten Logarithmus (ECDLP).
1.3.1
Bei bekannten Q und P ist das k aus Q = kP bereits bei Bitlaeengen von 160 Bit nicht
mehr effizient berechenbar; vorausgesetzt werden hier richtig gewaehlte Parameter. Das
ECDLP bei einer Bitlaenge von 160 Bit ist einem RSA-System mit 1024 Bit bez. dem
Schwierigkeitsgrad gleichzusetzen.
Daraus folgend wird die ECC fuer drahtlose Systeme immer attraktiver, da die
kleineren Schluessellaengen in schnelleren Berechnungen resultieren. Des weiteren werden auch weniger Energie, weniger Memory und weniger Bandbreite benoetigt, womit
die ECC fuer mobile Endgeraete optimal ist.
ECDH Implementierung
Diffie-Hellman (DH) ist ein Verfahren zum Austausch von Schluesseln. Der Algorithmus wurde von Martin Hellman gemeinsam mit Whitfield Diffie und Ralph Merkle an
der Stanford-Universitaet in Kalifornien entwickelt und 1976 veroeffentlicht.
http://hackaday.com
[SCHN2013]
5
[ECCBP2005]
4
p = E95E4A5F737059DC60DFC7AD95B3D8139515620F
a = 340E7BE2A280EB74E2BE61BADA745D97E8F7C300
b = 1E589A8595423412134FAA2DBDEC95C8D8675E58
x = BED5AF16EA3F6A4F62938C4631EB5AF7BDBCDBC3
y = 1667CB477A1A8EC338F94741669C976316DA6321
n = E95E4A5F737059DC60DF5991D45029409E60FC09
h=1
Bei den vorliegenden Implementierungen wurde auf eine Ueberpruefung der Primzahl
auf p = 3mod4 verzichtet, da nur geteste Domainparameter verwendet wurden; in der
Praxis kann dies allerdings zu Problemen fuehren, wenn nicht getestete Kurven bzw.
zufaellig erzeugte verwendet werden.
Bei der Implementierung der skalaren Multipliaktion ist darauf zu achten, dass bei
BigInteger Zahlen nicht einfach dividiert werden kann. Vielmehr wird mit dem Inversen
multipliziert:
x
= x y 1 (mod p)
(30)
y
Mit dem Inversen zu rechnen bedarf viel Rechenzeit und ist immer wieder Gegenstand
von Forschungen, dies zu minimieren.
2.1
Funktionsweise DH-Verfahren
DH
Alice und Bob einigen sich auf eine Primzahl p und eine natuerliche Zahl g < p.Alice
waehlt geheime Zahl a < p 1 und berechnet A = g a modp und schickt A an Bob. Bob
waehlt geheime Zahl b < p1 und berechnet B = g b modp und schickt B an Alice.Alice
berechnet dann k = B a modp und Bob berechnet k = Ab modp.
Wie die Abbildun verdeutlicht, besitzen am Ende beide das gleiche Geheimnis 7 .
DH ist nicht mehr sicher, wenn ein Angreifer bei einem Man-In-The-Middle Angriff
Datenpakete veraendern kann. Der Angreifer tauscht mit beiden Teilnehmern jeweils
die Schluesseln aus und gaukelt sowohl Alice als auch Bob vor mit dem jeweilig anderen zu kommunizieren. In der Praxis werden daher die ausgetauschten Nachrichten
authentifiziert.
2.1.2
ECDH
Alice und Bob waehlen sich oeffentlich den endlichen Koerper FP und die elliptische
Kurve E. Sei P ein oeffentlich bekannter Punkt mit der Ordnung n auf der elliptischen Kurve. Alice waehlt zufaellig einen geheimen Schluessel kA und berechnet
QA = kA P ; daraufhin schickt sie das Ergebnis an Bob. Bob waehlt zufaellig einen
6
7
[SCHN1995]
http://commons.wikimedia.org/wiki/Category:Internetprotocols
2.2
[Kos2006]
10
Double-And-Add Algorithmus
2.3
Der Montgomery-Ladder Algorithmus bietet einen guten Kompromiss bez. Performance, Sicherheit und benoetigter Ressourcen. Er eignet sich besonders da, wo Speicherbedarf eine wichtige Rolle spielt, da dieser nicht auf vorberechnete Teilergebnisse
zurueckgreift9 .
9
[HMV2004]
11
2.4
Curve25519 ist eine ellipitische Kurve, die von Daniel J. Bernstein fuer DH entwickelt
wurde. Es ist dies eine Montgomery-Kurve mit folgender Gleichung:
y 2 = x3 + 486662x2 + x
(31)
Sie ist ueber einen Primkoerper mit p = 2255 19 und dem Basispunkt x = 9
definiert. Weiters ist zu erwaehnen, dass diese Kurve ein besonders schnelles Verfahren
darstellt. Jeder User der Curve25519 bestitzt einen 32-Byte Private Key und einen
32-Byte Public Key; beide gemeinsam besitzen ein 32-Byte Shared Secret.
12
2.5
Bit-Size
160
256
512
160
256
512
256
Laufzeit [ms]
340
458
649
458
551
781
121
Table 1: Laufzeitenvergleich
2.6
10
[DJB2009]
13
14
4
4
340 ms
ECDH - 160p
280 - 380ms 3
STS
MQV
64 ms
1-5s
DH
SRP
Anz.Nachr.
Laufzeit
Implementierung
je 20 Byte
ca. 17800
Client: 9 Hashop., 2
Mult., 1 Sub, 1 Add., 3
modPow.,
1
Mod
1: 7 Byte 2: 585 Server: 8 Hashop., 2
Byte 3: 1064 Byte 4: Mult. 2 Add., 3
69 Byte
modPow., 1 Mod
je eine
Anz. Operationen
Operationen
symmetrisch
symmetrisch
Symmetrie
Gre Nachr.
Anhang/Ergaenzende Information/Quellen
List of Figures
1
2
3
4
5
6
7
8
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
5
8
10
10
11
12
13
14
Laufzeitenvergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
List of Tables
1
.
QUELLEN
[ECCBP2005]
ECC Brainpool Standard Curves and Curve Generation v.1.0. Okt.2005.
[HMV2004]
D. Hankerson, A. J. Menezes, S. Vanstone. Guide to Elliptic Curve Cryptography.
Springer-Verlag. Januar 2004.
[SCHN1995]
Bruce Schneier. Applied Cryptography. 1995.
[SCHN2013]
https://www.schneier.com/blog/archives/ 2013/09/the nsa is brea.html#c1675929
[SEC12000]
Standards for Efficient Cryptography, SEC1: Ellipitic Curve Cryptography.Ceritcom
Research. Cericom Corp., September 2000.
[SEC22000]
Standards for Efficient Cryptography, SEC1: Recommended Ellipitic Curve Parameters.Ceritcom Research. Cericom Corp., September 2000.
[DJB2009]
Daniel J. Bernstein, Curve25519: new Diffie-Hellman speed records.
http://http://cr.yp.to/ecdh.html, Feb.2009.
[Kos2006]
Manuel Koschuch et al. Hardware/Software Co-Design of Elliptic Curve Cryptography
15
16