Kapitel 9
Hilfsfunktionen zu Publik-Key-Verfahren
Walter Unger
Lehrstuhl f¨ur Informatik 1
30. Januar 2009
Das Verfahren
Hashfunktionen Einleitung Definitionen
Merkles-Meta-Methode
Bestimmung von Primzahlen Einfacher Test
Soloway-Strassen Miller-Rabin
Agrawal, Kayal und Saxena
Einleitung (9:1) Walter Unger Z
OAEP
I Mit dem OAEP-Verfahren (optimal asymmetric encryption padding) k¨onnen Angriffe, die auf der Gruppenstruktur eines Verschl¨usselungsverfahren beruhen, verhindert werden.
I Dazu werden die folgenden Funktion benutzt:
Verschl¨usselungsfunktion f :D→D mitD ⊂ {0,1}n Pseudo-Zufallsgenerator G :{0,1}k → {0,1}l Hashfunktion h:{0,1}l → {0,1}k mitn=k+l
Verfahren zum Verschl¨ usseln:
Verschl¨usselungsfunktion f:D→DmitD⊂ {0,1}n pseudo Zufallsgenerator G:{0,1}k→ {0,1}l
Hashfunktion h:{0,1}l→ {0,1}k
Seim die zu verschl¨usselnde Nachricht.
1. W¨ahle eine Zufallszahlr ∈ {0,1}k.
2. Setzex = (m⊕G(r))◦(r⊕h(m⊕G(r)).
3. Falls x6∈D wiederhole das Verfahren.
4. Verschl¨ussele mit c :=f(x).
Das Verfahren (9:3) Walter Unger Z
Verfahren zum Entschl¨ usseln:
Verschl¨usselungsfunktion f:D→DmitD⊂ {0,1}n pseudo Zufallsgenerator G:{0,1}k→ {0,1}l
Hashfunktion h:{0,1}l→ {0,1}k
Verschl¨usselung c=f((m⊕G(r))◦(r⊕h(m⊕G(r)))) x0= (m⊕G(r))◦(r⊕h(m⊕G(r))) a=m⊕G(r)
b=r⊕h(m⊕G(r))
Seic die zu entschl¨usselnde Nachricht.
1. Setzex0 :=f−1(c).
2. Bestimme a,b mitx =a◦b und |a|=l sowie|b|=k. 3. Bestimme r =h(a)⊕b.
4. Bestimme m=a⊕G(r).
I Dies Verfahren ist schnell,
I beinhaltet einen Zufallsanteil und
I es muss nicht viel zus¨atzliche Information ¨ubertragen werden.
Hashfunktionen
I Eine Hashfunktion ist eine Funktionh:{0,1}∗→ {0,1}k mit:m7→h(m).
I Diese Funktionen werden z.B. beim Unterschreiben von Texten, zur Fehlererkennung oder Datenverwaltung verwendet.
I Bei den Unterschriften wird statt einer Nachricht mdessen Hashwerth(m) unterschrieben.
I Eine Kollision bei einer Hashfunktionhtritt auf bei einem Paar (m,m0) falls h(m) =h(m0).
I Daher sollten Angreifer nicht in der Lage sein:
1. Zu einer Nachrichtmeine zweite Nachrichtm0 effizient erzeugen zu k¨onnen, mith(m) =h(m0).
2. Zwei Nachrichtenmundm0 effizient erzeugen zu k¨onnen, mit h(m) =h(m0).
Definitionen (9:5) Walter Unger Z
Hashfunktionen
Definition
I Eine HashfunktionhheisstZweitnachricht sicher, falls man nicht zu einer Nachrichtm eine zweite Nachrichtm0 effizient erzeugen kann, mith(m) =h(m0).
I Eine Hashfunktionhheisstkollisionssicher, falls man nicht zwei Nachrichtenmundm0 effizient erzeugen kann, mith(m) =h(m0).
Lemma
Falls eine Hashfunktion kollisionssicher ist, dann ist sie auch Zweitnachricht sicher.
Hashfunktionen
Lemma
Falls eine Hashfunktion kollisionssicher ist, dann ist sie auch Zweitnachricht sicher.
Beweis.
I Wir zeigen, wenn es einen effizienten AlgorithmusAgibt, der eine Zweitnachricht erzeugt, dann gibt es einenB, der eine Kollision effizient bestimmt.
I Der AlgorithmusBw¨ahlt eine Nachrichtm, bestimmth(m) und ruft dannAauf um eine zweite Nachrichtm0 zu bestimmten mit h(m) =h(m0).
Damit reicht es aus Hashfunktionen zu bestimmen, die kollisionssicher sind.
Merkles-Meta-Methode (9:7) Walter Unger Z
Merkles-Meta-Methode
I Im Folgenden werden wir zeigen, dass es ausreicht, kollisionssichere Kompressionsfunktionen zu entwickeln.
I D.h. wir werden das Problem eine kollisionssichere
Hashfunktionh:{0,1}∗ → {0,1}n zu konstruieren, reduzieren auf das Problem eine kollisionssichere Funktion
f :{0,1}m → {0,1}n mitm>n (genannt eine Kompressionsfunktionen) zu entwickeln.
I Zuerst geben wir Merkles-Meta-Methode an, die aus einer gegebenen Funktion h:{0,1}m → {0,1}nein Hashfunktion h :{0,1}∗→ {0,1}n definiert.
Merkles-Meta-Methode
I Gegeben eine Kompressionsfunktion f :{0,1}m → {0,1}n.
I Sei r =m−n.
I Zu bestimmen ist eine Hashfunktion h:{0,1}∗ → {0,1}n.
I Sei nun x∈ {0,1}∗ eine Eingabe f¨urh mit |x|=k·r.
I Wir teilen x auf in x =x1x2. . .xk |xi|=r f¨uri ∈ {1, . . . ,k}.
I Weiterhin kodieren in xk+1 |xk+1|=r die L¨ange von x.
I Nun bestimmen wir rekursiv:
h0 := 0n
hi :=f(hi−1◦xi) 16i 6k+ 1
I Dann definieren wirh :{0,1}∗→ {0,1}k mitx 7→hk+1
Merkles-Meta-Methode (9:9) Walter Unger Z
Uberblick ¨
x1
|x1|=r
x2
|x2|=r
x3
|x3|=r
xk+1
|xk+1|=r
h0
|h0|=n
h1
|h1|=n
?
@
@@R f
h2
|h2|=n
?
@
@@R f
h3
|h3|=n
?
@
@@R f
hk+1
|hk+1|=n
?
@
@@R f
Merkles-Meta-Methode
I Die Erg¨anzung um den Term xk+1 verhindert, das folgende Situation (mit x 7→hk) geschehen kann:
I Falls hi =f(hi−1◦xi) =h0 gilt, so folgt direkt (x,x0) mitx0 =xi+1◦. . .◦xk ist eine Kollision f¨ur h.
Lemma
Falls f kollisionssicher ist, dann ist die Hashfunktion h, die mit Merkles-Meta-Methode konstruiert wird, auch kollisionssicher.
Merkles-Meta-Methode (9:11) Walter Unger Z
Beweis
h0:= 0n hi:=f(hi−1◦xi)
Wir geben einen Algorithmus an, der aus einer Kollision f¨urh eine Kollision f¨ur f bestimmt.
Seix,x0 eine Kollision der Funktion h mit:
x = x1x2. . .xk+1 h1,h2, . . . ,hk+1 x0 = x10x20 . . .xk+10 h01,h20, . . . ,hk+10
seien die Werte, wie sie in der Konstruktion nach Merkle auftreten.
Damit ergibt sich folgendes Verfahren.
Beweis
h0:= 0n hi:=f(hi−1◦xi)
I Falls |x| 6=|x0|,
I Betrachte (hk ◦xk+1,h0k◦xk00+1).
I Es giltxk+16=xk00+1.
I Und damithk◦xk+1 6=h0k◦xk00+1.
I Und weiterf(hk ◦xk+1) =h(x) =h(x0) =f(hk0 ◦xk00+1).
I Damit ist (hk◦xk+1,h0k◦xk00+1) eine Kollision.
I Damit gilt von nun an|x|=|x0|undk =k0.
Merkles-Meta-Methode (9:13) Walter Unger Z
Beweis
h0:= 0n hi:=f(hi−1◦xi)
I Es gilt nun |x|=|x0|undk =k0.
I F¨uri := 1 bis k mache:
I fallshi 6=hi0 undhi+1=h0i+1,
I betrachte (hi◦xi+1,h0i◦xi+10 ).
I Es gilt:hi◦xi+16=h0i◦xi+10 .
I Und weiter:f(hi◦xi+1) =hi+1=h0i+1=f(h0i◦xi+10 ).
I Damit ist (hi◦xi+1,hi0◦xi+10 ) eine Kollision.
I Damit gilt von nun an hi =hi0 f¨ur 16i 6k+ 1.
Beweis
h0:= 0n hi:=f(hi−1◦xi)
I Es gilt nun |x|=|x0|undk =k0
I und hi =h0i f¨ur 16i 6k+ 1.
I F¨uri := 1 bis k−1 mache:
I fallsxi+16=xi+10 ,
I betrachte (hi◦xi+1,h0i◦xi+10 ).
I Analog zum vorherigen Fall:
I Es gilt:hi◦xi+16=h0i◦xi+10 .
I Und weiter:f(hi◦xi+1) =hi+1=h0i+1=f(h0i◦xi+10 ).
I Damit ist (hi◦xi+1,hi0◦xi+10 ) eine Kollision.
I Beachte die Schleife findet ein i mitxi+16=xi+10 da x6=x0
Merkles-Meta-Methode (9:15) Walter Unger Z
Kompressionsfunktionen
I Wie entwickelt man Kompressionsfunktionen?
I Ansatz: nutze symmetrische Verfahren.
I Sei Ek(m) symmetrisches Verfahren mitk ∈ {0,1}r und m∈ {0,1}n.
I Dann setze: f :{0,1}n+r → {0,1}n mit: f(x◦y)7→Ey(x).
I Sei weiter g :{0,1}n→ {0,1}r.
I Dann setze: f :{0,1}2n→ {0,1}n mit:
f(x◦y)7→Eg(y)(x)⊕y.
Bemerkung
Bei der Konstruktion solcher Hashfunktionen ist ein entscheidender Faktor die Wahl vonn. Das Geburtstagsparadoxon – unter 23 Personen ist die Wahrscheinlichkeit, dass zwei am gleichen Tag Geburtstag haben gr¨oßer 1/2 – ist dabei ein guter Einstieg. Daraus l¨asst sich ableiten, dass die Wahrscheinlichkeit, dassk Hashwerte aus dem Wertebereichm= 2n keine Kollision haben
p=p(m,k) = 1 mk
k−1
Y
i=0
(m−i) =
k−1
Y
i=1
(1− 1 m).
Wegen 1−x 6e−x f¨urx∈IR gilt
p6
k−1
Y
i=1
e−1m =e−1m Pk−1i=1 i=e−k(k−1)2m
Merkles-Meta-Methode (9:17) Walter Unger Z
Bemerkung
I Damit ist die Wahrscheinlichkeit einer Kollision 1−p.
I Und 1−p>1/2 fallsk >1/2(√
1 + 8ln2·m+ 1).
I Damit ist k≈1.18√
mund es sind 2n/2Werte zu w¨ahlten und zu vergleichen, um eine Kollision mit Wahrscheinlichkeit >1/2 zu finden.
I Bei der heutigen Rechenleistung werden damit Hashfunktionen mit 128 bis 160 Bits empfohlen.
Einleitung
I Problem: Die Verfahren brauchen Primzahlen.
I D.h. zu bestimmen ist eine zuf¨allige, große Primzahl.
I Allgemeines Vorgehen dabei:
1. W¨ahle zuf¨allig eine große ungerade Zahlx. 2. Teste, ob x eine Primzahl ist.
3. Fallsx keine Primzahl, dann wiederhole Verfahren.
I Anzahl der 100-stelligen Primzahlen: 10100/ln 10100−1099/ln 1099.
I Damit ergibt sich eine Erfolgswahrscheinlichkeit von 0.00868.
I Verbleibendes Problem: Teste, ob gegebene Zahlx Primzahl ist.
(9:19) Walter Unger Z
Stochastischer Primzahltest
I Alle diese Test benutzen das gleiche Grundmuster.
I Beispiel: Gesucht wird ein guter PolitikerP. :-)
I Wir w¨ahlen eine EigenschaftE, die einen schlechten Politiker auszeichnet.
I Befragen Zeugen, ob die Eigenschaft E(P) gilt.
I Je mehr Zeugen wir befragen, desto sicherer gilt:
P ist guter Politiker.
I Z.B. Zeugen die zur EigenschaftBestechlichkeit(P) aussagen.
I D.h. je mehr Zeugen es gibt, desto besser ist unser Verfahren.
I Zum Primzahltest suchen wir nach Eigenschaften von Primzahlen.
Sehr einfacher Test
I Zu testen ist, ob Zahl meine Primzahl ist.
I Eine Zahl w mitw|m ist eine Zeuge, dassm keine Primzahl ist.
I D.h. teste f¨ur viele Zeugenw, ob ggT(w,m) = 1 gilt.
I Problem, es gibt zu wenig Zeugen w.
I L¨osung: Betrachte andere Eigenschaften von Primzahlen.
I Dabei kann ggT(w,m) = 1 vorausgesetzt werden.
I Falls mPrimzahl und ggT(w,m) = 1:
wm−1 ≡1 (mod m).
I Falls ggT(w,m) = 1 und wm−1≡1 (modm), dann heißt w Zeuge daf¨ur, dass mPrimzahl ist.
Einfacher Test (9:21) Walter Unger Z
Einfacher Test
I Test, ob eine ungerade Zahl mPrimzahl ist:
I Wiederhole die folgenden Schritte:
1. W¨ahle zuf¨alligw.
2. Falls ggT(w,m)6= 1 istmkeine Primzahl.
3. Fallswm−16≡1 (modm) istm keine Primzahl.
I Bis m mit hoher Wahrscheinlichkeit Primzahl ist.
I Wir werden sehen:
Nach k Tests ist die Wahrscheinlichkeit daf¨ur, dassm Primzahl ist:
I 1−2−k oder
I 0. (Carmichael-Zahlen - Test versagt).
Absch¨ atzungen
ggT(w,m)6= 1 wm−16≡1 (modm)
Lemma
Entweder alle oder h¨ochsten die H¨alfte aller Zahlen w mit 16w <m und ggT(w,m) = 1 sind Zeugen daf¨ur, dass m Primzahl ist.
Beweisidee:
I Falls alle w Zeugen sind, Aussage erf¨ullt.
I Falls es ein w gibt was kein Zeuge ist, dann erzeugen wir zu jeden Zeugenw0 einen Nichtzeugen.
Einfacher Test (9:23) Walter Unger Z ggT(w,m)6= 1 wm−16≡1 (modm)
Beweis.
I Annahme, es gibt w (16w <m) mitwm−16≡1 (modm).
I Seien wi,16i 6t alle Zahlen mit 16wi <m und wim−1 ≡1 (modm).
I D.h. wir haben einen Nichtzeugen und t verschiedene Zeugen.
I Setzeui =wwi modm f¨ur 16i 6t.
I F¨ur alleui gilt:
I 16ui <m und
I ggT(ui,m) = 1
I ui ist kein Zeuge.
I 1≡uim−1≡wm−1wim−1≡wm−1 (mod m)
I Es gibt mindesten soviel Nichtzeugen wie Zeugen.
Carmichael-Zahlen
I m ist Carmichael-Zahl gdw. mist keine Primzahl und
∀w : ggT(w,m) = 1 gilt: wm−1 6≡1 (modm).
I Carmichael-Zahlen sind quadratfrei.
I m ist Carmichael-Zahl gdw. fallsp|mdann gilt auch (p−1)|(m−1)
I Carmichael-Zahlen sind Produkt von mindestens 3 verschiedenen Primzahlen.
I Beispiele 561, 1729, 294409, 56052361, 2465, 172081, ....
I Es gibt unendlich viele Carmichael-Zahlen.
Soloway-Strassen (9:25) Walter Unger Z
Erinnerung
I p Primzahl undn =Qk j=1piij
I
x p
:=
0 fallsp|x +1 fallsx ∈QRp
−1 sonst
I
x p
=x(p−1)/2modp.
I x n
:=
x p1
i1
·
x p2
i2
· · ·
x pk
ik
I ab n
= an
· bn
I
ab2 n
= an
I Der Wert xn
kann effizient berechnet werden.
Erinnerung
Lemma
Sei m ungerade Primzahl, dann gilt f¨ur alle w : w(m−1)/2≡w
m
(modm).
Beweis.
I Gilt fallsmdasw teilt.
I Ansonsten folgt auswm−1≡1 (modm) dassw(m−1)/2≡ ±1 (mod m) gilt.
I Sei nung Generator von ZZ∗m und weiterw =gi.
I Dann gilt: mw
= 1⇐⇒j ist gerade⇐⇒w(m−1)/2≡1 (mod m).
Soloway-Strassen (9:27) Walter Unger Z
Soloway-Strassen
I Test ob ungerade Zahl mPrimzahl ist:
I Wiederhole die folgenden Schritte:
1. W¨ahle zuf¨alligw.
2. Falls ggT(w,m)6= 1 istmkeine Primzahl.
3. Fallsw(m−1)2 6≡ wm
(mod m) istmkeine Primzahl.
I Bis m mit hoher Wahrscheinlichkeit Primzahl ist.
I Wir werden sehen:
Nach k Tests ist die Wahrscheinlichkeit daf¨ur, dassm Primzahl ist: 1−2−k.
Absch¨ atzungen
ggT(w,m)6= 1 w
(m−1)
2 6≡“
w m
” (modm)
Lemma
H¨ochsten die H¨alfte aller Zahlen w mit 16w <m und ggT(w,m) = 1 sind Zeugen daf¨ur, dass m Primzahl ist.
Beweisidee:
I Bestimme zuerst einw was kein Zeuge ist.
I Mit dem Nichtzeugenw erzeugen wir dann zu jedenZeugen w0 einen Nichtzeugen.
Soloway-Strassen (9:29) Walter Unger Z
Beweis
ggT(w,m)6= 1 w
(m−1)
2 6≡“
w m
” (modm)
I Zuerst konstruieren wir einen Nichtzeugen w0.
I Angenommen p2 teiltm f¨ur eine Primzahlp.
I Setze dann w0 = 1 +m/p.
I Dann gilt:
I
w0 m
= 1
I w0(m−1)/26≡1 (modm) denn p teilt nicht (m−1)/2.
Beweis
ggT(w,m)6= 1 w
(m−1)
2 6≡“
w m
” (modm)
I Zuerst konstruieren wir einen Nichtzeugen w0.
I Falls p2 teil mf¨ur eine Primzahl p dann w¨ahlew0 = 1 +m/p.
I Daher sei nunm Produkt von verschieden Primzahlen.
I Eine davon ist p.
I W¨ahles∈QNRpund
I bestimmtw0 durch Chinesischen Restklassensatz mit:
I w0≡s (mod p)
I w0≡1 (modm/p)
I Nun gilt:
I
w0 m
=−1
I w0(m−1)/2≡1 (modm/p)
I w0(m−1)/26≡ −1 (modm)
Soloway-Strassen (9:31) Walter Unger Z
Beweis
ggT(w,m)6= 1 w
(m−1)
2 6≡“
w m
” (modm)
I Wir haben nun einen Nichtzeugen w0.
I Seien wi,16i 6t alle Zahlen mit 16wi <m und wi(m−1)/2≡ wmi
(mod m).
I D.h. wir haben einen Nichtzeugen und t verschiedene Zeugen.
I Setzeui =wwi modm f¨ur 16i 6t.
I F¨ur alleui gilt:
I 16ui <m und
I ggT(ui,m) = 1
I ui ist kein Zeuge, denn man beachte
I w0(m−1)/2wi(m−1)/2≡
w0 m
wi m
(modm)
I w0(m−1)/2≡
w0 m
(mod m)
I Widerspruch, also istui kein Zeuge.
I Es gibt mindesten soviel Nichtzeugen wie Zeugen.
Miller-Rabin
I Test ob ungerade Zahl mPrimzahl ist:
I Bestimmes,r mit: m−1 = 2sr.
I Wiederhole die folgenden Schritte:
1. W¨ahle zuf¨alligw.
2. Falls ggT(w,m)6= 1 istmkeine Primzahl.
3. Fallswr 6≡1 (modm) undw2s
0
6≡ −1 (f¨ur ein 06s0<s) dann istmkeine Primzahl.
I Bis m mit hoher Wahrscheinlichkeit Primzahl ist.
I Es gilt:
Nach k Tests ist die Wahrscheinlichkeit daf¨ur, dassm Primzahl ist: 1−4−k.
Miller-Rabin (9:33) Walter Unger Z
Einleitung zum deterministischen Primzahltest
I Bis zum Jahr 2002 war es offen, wie schwer ein Primzahltest ist.
I Man kannte nur stochastische Verfahren.
I Dann wurde gezeigt, das der Test in Polynomzeit geht.
I Da das Grad des Polynoms 12 (heute 8) ist, betrachten wir zuerst die bis dahin verwendeten stochastischem Verfahren in einer kurzen Zusammenfassung.
I SeiC ein Test, der nach einer Faktorisierungsbedingung sucht.
C erfolgreich =⇒pnicht prim C nicht erfolgreich =⇒keine Aussage
I F¨uhre nun viele Tests auf einem m¨oglichen Kandidaten aus, bis eine Primzahl mit hoher Wahrscheinlichkeit gefunden wurde.
Primzahltest
1) Falls m=ab f¨ur b>1, dann ist m keine Primzahl.
2) r := 2
3) Solange (r <m))
Falls ggt(m,r)>1, dann ist m keine Primzahl.
Falls r Primzahl, dann
Sei q der gr¨oßte Primfaktor von r−1 Falls(q>4√
rlogm)und(mr−1q 6≡1 (mod r)) dann breche die Schleife ab
r :=r+ 1
4) F¨ur alle a:= 1 bis2r1/2logm teste
Falls(x−a)m6≡(xn−a) (modxr−1,n) dann ist m keine Primzahl.
5) Anderenfalls ist m eine Primzahl.
Agrawal, Kayal und Saxena (9:35) Walter Unger Z
Bemerkungen
I Die Laufzeit dieses Verfahrens ist O(log12m).
I Bei den oben angegeben stochastischen Verfahren, werden Zeugen zuf¨allig erzeugt und dann getestet, ob solch ein Zeuge widerlegt, das m eine Primzahl ist.
I Je mehr Zeugen negativ getestet werden, um so gr¨oßer ist die Wahrscheinlichkeit, das die untersuchte Zahl eine Primzahl ist.
I Bei dem Verfahren von Agrawal, Kayal und Saxena wird auch die Primzahleigenschaft durch Zeugen untersucht.
I Bei diesem Verfahren kann man aber zeigen, das bei einer Zahl, die keine Primzahl ist, eine der Zahlen aaus der letzten Schleife ein Zeuge ist, dass m keine Primzahl ist.
Fragen
I Wie arbeitet das OAEP Verfahren?
I Wie konstruiert man eine Kompressionsfunktion?
I Wie konstruiert man eine Hashfunktion?
I Wie ist die Beweisidee bei Merkles Meta Methode?
I Welche Eigenschaften werden zum Primzahltest verwendet?