ElGamal auf elliptischen Kurven
ElGamal auf elliptischen Kurven
ElGamal auf elliptischen Kurven
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
E lG a m a l a u f<br />
e llip t i s c h e n K u r v e n<br />
Frank Nillies<br />
frank@upb.de
Ü b e r s i c h t<br />
Motivation<br />
Definition <strong>ElGamal</strong><br />
<strong>ElGamal</strong> für elliptische <strong>Kurven</strong> [6]<br />
L<strong>auf</strong>zeit und Sicherheit<br />
MOV – Menezes Okamoto Vanstone [7]<br />
Geeignete elliptische <strong>Kurven</strong><br />
2
M o t i v a t i o n<br />
<br />
<br />
erstmalig im Jahre 1985 unabhängig von<br />
Neil Koblitz [1] und Victor Miller [2]<br />
Aufbauend <strong>auf</strong> den Ideen von Koblitz und Miller:<br />
<br />
<br />
<br />
Erzeugung digitaler Signaturen<br />
Sicherer Schlüsselaustausch<br />
Verschlüsselung<br />
ECDSA: Signaturverfahren [3, 4]<br />
ECIES: Verschlüsselungsverfahren<br />
EC-DH: als Schlüsselaustauschverfahren<br />
3
E lG a m a l C r y p t o s y s t e m<br />
Sei p prim, (G, ·) endliche, zyklische Gruppe<br />
G mit Ordnung p.<br />
K = {(p, G, m, α, β) : β = α m }<br />
α ∈ G erzeugendes Element, β ∈ G<br />
p, G, α, β öffentlich<br />
m geheim, 0 < m < p-1<br />
Klartextraum: P = G<br />
Chiffretextraum: C = G × G<br />
4
E lG a m a l V e r s c h lü s s e l u n g<br />
C = enc(x, k) = (y 1<br />
, y 2<br />
) = (α k , xβ k )<br />
k zufällig gleichverteilt, 0 < k < p-1<br />
P = dec(y, m)<br />
= (y 1m<br />
) -1 y 2<br />
= (α km ) -1 xα km<br />
= x<br />
∀ β ∃! m, 0 ≤ m ≤ p–1 : α m = β (Inj.)<br />
Die Berechnung α m ist effizient.<br />
Die Berechnung log α<br />
β ist schwer.<br />
5
E lG a m a l C r y p t o s y s t e m f ü r<br />
E K<br />
Sei p, q prim, G = (E(Z p<br />
), ⊕) mit Ordnung q.<br />
K = {(p, E, m, α, β) : β = mα mod p}<br />
p, E, α, β öffentlich, α, β ∈ G<br />
m geheim, 0 < m < q-1<br />
Klartextraum: P = G<br />
Chiffretextraum: C = G × G<br />
6
V e r s c h l ü s s e lu n g s f u n k t i o n<br />
wähle k: 0 < k < q-1 zufällig.<br />
x sei Punkt der Kurve mit x = cf(N)<br />
enc(x, k) = (y 1<br />
,y 2<br />
)<br />
y 1<br />
= kα<br />
y 2<br />
= x + kβ = x + kmα<br />
7
E n t s c h lü s s e lu n g s f u n k t i o n<br />
dec(y, m) = y 2<br />
– my 1<br />
= y 2<br />
+ (my 1<br />
) -1<br />
= x + kβ – mkα<br />
= x + mkα – mkα<br />
= x<br />
Invertierung der Codierung N = cf -1 (x)<br />
liefert den entsprechenden Klartext.<br />
8
B e i s p i e l<br />
K = {(p, E, m, α, β) : β = mα mod p}<br />
p, E, α, β öffentlich, m geheim<br />
Klartextraum: P = Z q<br />
*<br />
Chiffretextraum: C = Z q<br />
*<br />
× Z q<br />
*<br />
enc(x, k) = (kα, x + kβ )<br />
dec(y, m) = y 2<br />
– my 1<br />
= y 2 + (my 1 )-1<br />
9
L a u f z e i t<br />
2-mal Codierungsfunktion cf(x)<br />
L<strong>auf</strong>zeit:<br />
Verschlüsseln: (2x Multiplikation, 1x Addition)<br />
O(log³ p) [5]<br />
Entschlüsseln: (je 1x Addition u.<br />
Multiplikation)<br />
O(log³ p)<br />
kβ und kα „<strong>auf</strong> Vorrat“ berechnen<br />
10
I d e e f ü r C o d i e r u n g s f u n k t i o n<br />
<br />
<br />
<br />
Kein deterministischer Algorithmus bekannt<br />
Idee:<br />
Teile Z p<br />
in Blöcke der Größe #Klartexte<br />
Teste, ob das erste Blockelement ∈ E(Z p<br />
).<br />
<br />
<br />
Wähle ggf. nächstes/neues Element.<br />
http://www.certicom.com<br />
11
S i c h e r h e i t v o n E lG a m a l a u f<br />
E K s<br />
<strong>ElGamal</strong> lässt sich <strong>auf</strong> Diffie – Hellmann<br />
zurückführen.<br />
Nicht „beweisbar sicher“<br />
DL Problem gilt <strong>auf</strong> geeigneten Gruppen als<br />
nicht lösbar.<br />
(NP – vollständig aber nicht bewiesen)<br />
Auf <strong>elliptischen</strong> <strong>Kurven</strong> nur generische<br />
Algorithmen.<br />
12
A lg o r i t h m u s n a c h M e n e z e s -<br />
V a n s t o n e<br />
Die Grundidee von Menezes und Vanstone:<br />
Vereinfachung der Codierung:<br />
beliebige Elemente aus Z p<br />
*<br />
statt E(Z p<br />
)<br />
Reduzierung des Chiffretextes<br />
um den Faktor 2<br />
13
A lg o r i t h m u s n a c h M e n e z e s -<br />
V a n s t o n e<br />
Sei p, q prim, G = (E(Z p<br />
), ⊕) mit Ordnung q.<br />
K = {(p, E, m, α, β) : β = mα mod p}<br />
p, E, α, β öffentlich, α, β ∈ G<br />
m geheim, 0 < m < q-1<br />
Klartextraum: P = Z p<br />
*<br />
× Z p<br />
*<br />
Chiffretextraum: C = E(Z ) × Z * × Z *<br />
14
V e r s c h lü s s e lu n g n a c h<br />
M e n e z e s -V a n s t o n e<br />
Bob stellt N als ein Element<br />
N = (x 1<br />
, x 2<br />
) ∈ Z p<br />
*<br />
× Z p<br />
*<br />
dar.<br />
Er wählt ein zufälliges k: 0 < k < q-1<br />
(c 1<br />
, c 2<br />
) = kβ, c 1<br />
, c 2<br />
≠ 0<br />
Er berechnet:<br />
γ = kα<br />
b 1<br />
= c 1<br />
x 1<br />
mod p<br />
b 2<br />
= c 2<br />
x 2<br />
mod p.<br />
C = enc(N) = (γ, b , b )<br />
15
E n t s c h lü s s e lu n g n a c h<br />
M e n e z e s -V a n s t o n e<br />
Alice berechnet<br />
mγ = (c 1<br />
, c 2<br />
).<br />
Korrektheit: mγ = mkα = kβ = (c 1<br />
, c 2<br />
)<br />
Alice erhält den Klartext N durch<br />
dec(C) = N = (b 1<br />
c 1<br />
-1<br />
mod p, b 2<br />
c 2<br />
-1<br />
mod p).<br />
Erinnerung: b 1<br />
= c 1<br />
x 1<br />
mod p<br />
b 2<br />
= c 2<br />
x 2<br />
mod p<br />
16
S i c h e r h e i t v o n M .V .<br />
Angriffe mit bekanntem Nachrichtenteil<br />
Angriffe bei konstantem k<br />
Angriffe über Eindeutigkeit<br />
der Chiffretexte [8]<br />
Berechnen des ECDLP<br />
17
K r i t e r i e n f ü r g e e i g n e t e<br />
K u r v e n<br />
Die Kurve muss nichtsingulär sein.<br />
4a³ + 27b² ≠ 0 [5]<br />
Die von der elliptische Kurve E(Z p<br />
)<br />
erzeugte Gruppe G<br />
sollte möglichst groß sein.<br />
Berechnung zufälliger <strong>Kurven</strong> möglich.<br />
Sie werden von dem NIST oder IEEE<br />
empfohlen. <br />
18
Ü b e r s i c h t ü b e r<br />
S c h lü s s e llä n g e n<br />
Quelle: W. Rankl, W. Effing, Handbuch der Chipkarten, Hanser 1999<br />
19
G e b r o c h e n e S c h lü s s e l E C C<br />
Quelle: http://www.certicom.com<br />
20
V i e le n D a n k f ü r I h r e<br />
A u f m e r k s a m k e i t<br />
[1] N. Koblitz, ACourse in Number Theory and Cryptography, NewYork 1987<br />
[2] V.S. Miller, Use of Elliptic Curves in Cryptography, Advances in Cryptology:<br />
Crypt `85, 1986<br />
[3] D. Wätjen, Kryptographie Grundlagen, Algorithmen, Protokolle, Spectrum<br />
2004<br />
[4] D. R. Stinson, Cryptography, Theory and Practice, Chapman&Hall 2002<br />
[5] A. Werner, Elliptische <strong>Kurven</strong> in der Kryptography, Springer 2002<br />
[6] T. <strong>ElGamal</strong>, A Public Key Cryptosystem and a Signature Scheme Based on<br />
Descrete Logarithms, IEEE Transactions on Information Theory, 1985<br />
[7] A. Menesez, S.A.Vanstone, Elliptic Curve Cryptosystems and Their<br />
Implementation, Journal of Cryptography, 1993<br />
[8] K. Kiefer, A Weakness of the Menezes-Vanstone Cryptosystem, 5th international<br />
workshop, Paris 1997<br />
21
E lG a m a l b a s i e r t e s<br />
S i g n a t u r v e r f a h r e n a u f<br />
e llip t i s c h e n K u r v e n , d a s E C D S A<br />
Sei p prim und für den Raum Z p<br />
existiere eine<br />
gültige elliptische Kurve E der Ordnung q.<br />
K = {(p, q, E, m, α, β) : β = mα mod p}<br />
p, q, E, α, β öffentlich, 0 ≤ m ≤ q – 1 geheim<br />
Klartextraum: P = {0, 1} * , Nachricht n<br />
Unterschrift: A = Z q<br />
*<br />
× Z q<br />
*<br />
22
E C D S A<br />
sig(n, k) = (r, s), 0 ≤ k ≤ q – 1 :<br />
kα = (u, v)<br />
r = u mod q<br />
s = k -1 (SHA-1(n) + mr) mod q<br />
Es gilt: r, s ≠ 0 ∈ Z q<br />
*<br />
23
E C D S A<br />
ver(x, (r, s) = true u mod q = r :<br />
w = s -1 mod q<br />
i = w SHA-1(n) mod q<br />
j = wr mod q<br />
(u, v) = iα + jβ<br />
24
Ü b e r s i c h t ü b e r L a u f z e i t e n<br />
E C D S A<br />
25