12.07.2015 Aufrufe

Kryptographie und Komplexit¨at

Kryptographie und Komplexit¨at

Kryptographie und Komplexit¨at

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Kryptographie</strong> <strong>und</strong> KomplexitätEinheit 5.2Angriffe auf Diskrete Logarithmen1. Shanks Babystep-Giantstep2. PollardρAlgorithmus3. Pohlig-Hellman Algorithmus4. Die Index-Calculus Methode


Das Problem des diskreten Logarithmus• Allgemeine Formulierung– Gegeben multiplikative Gruppe (G,·), Element g der Ordnung n<strong>und</strong> y ∈〈g〉. Bestimme die eindeutige Zahl x


Aufzählung• Einfacher, leicht zu programmierender Ansatz– Lösungskandidaten x = 1,2,3,... werden der Reihe nach überprüft– Die Bestimmung vonx = log g y benötigt x−1 Multiplikationen– Hochgradig ineffizient Laufzeit O(n·|n| 2 ) = O(2 |n| )• Nur für Zahlen mit kleinen Logarithmen– Suche nach Logarithmen muß auf Schranke B begrenzt werden– Schranke jenseits von10 7 wenig sinnvollAnders als bei Faktorisierung sagt dies nichts über die Größe von n oder y aus• Keine Optimierungen wie bei Faktorisierung– Jede Zahl könnte der geeignete Logarithmus sein– Man kann wenig über Struktur vonxsagen (z.B. ungerade)– Außer n gibt es keine obere Grenze für x• Beispiel für(Z p ,·) mit p = 944137– log 2 3 = 467306, log 2 4 = 2, log 2 5 existiert nicht,log 2 6 = 467307, ...KRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 2 ANGRIFFE AUF DISKRETE LOGARITHMEN


Shanks Babystep-Giantstep-Algorithmus• Idee: Beschleunigung durch Zwischenspeicherung– Zerlege das gesuchte x = log g y inx = q·m+r– Für diese Zerlegung gilt g q·m+r = y also(g m ) q = y·g −r– Teste diese Gleichung für alle Paare (q,r) umxzu bestimmen– Die Werte y·g −r <strong>und</strong>(g m ) q können separat berechnet werden– Fürm = ⌊ √ n⌋ müssen nur2·⌊ √ n⌋ Werte berechnet werden• Algorithmus– Babystep: Speichere für r


Shanks Algorithmus am Beispiel• Berechne IntialwerteBestimmelog 3 5 in (Z 3137 ,·)–m = ⌊ √ n⌋ = 56, g −1 = 3 −1 mod3137 = 1046, g m = 893• Erzeuge Babystep-Tabelle B=[(y·g −r ,r)|r


Pollard ρ Algorithmus• Modifikation der Pollard ρ Faktorisierung– Suchea≠a ′ ,b≠b ′ ∈Z nmit g a·yb b′= ga′·y – Ist x = log g y inGso gilt g a·g x·b = g a′·g x·b′ also g a+x·b = g a′ +x·b ′somit a+x·b≡a ′ +x·b ′ modn bzw. (a−a ′ )≡x·(b ′ −b)modn– Damit ist x = (a−a ′ )(b ′ −b) −1 modn falls gcd(b ′ −b,n)=1Bei Erzeugung einer Zufallsfolge mit O( √ n) Elementen findet mandiese Kollision mit Wahrscheinlichkeit 50% (Geburtstagsparadox)• Erzeuge <strong>und</strong> prüfe Zufallskandidaten– Berechne Folge (β 1 ,a 1 ,b 1 ), (β 2 ,a 2 ,b 2 )... mit β i = g a i·y b i<strong>und</strong> (β i+1 ,a i+1 ,b i+1 ) = f(β i ,a i ,b i ) für eine “Zufallsfunktion” f– Gilt β i = β j für eini


Pollard ρ im Detail• Wahl der “Zufallsfunktion” f– Teile Gruppe G in drei⎧gleich große Teilgruppen G 1 ,G 2 ,G 3 auf⎨(β·g,a+ n 1,b) falls β ∈G 1– Definiere f(β,a,b) := (β 2 ,2·na,2·nb) falls β ∈G 2⎩(β·y,a,b+ n 1) falls β ∈G 3– Per Konstruktion erhält f die Eigenschaft β = g a·yb• Konstruktion der(β i ,a i ,b i )– Definiere (β 0 ,a 0 ,b 0 ) = (1,0,0) <strong>und</strong> (β i+1 ,a i+1 ,b i+1 ) = f(β i ,a i ,b i )– Dann giltβ i = g a i·y b i für allei• Suchverfahren– In Schritt k bestimme (β k ,a k ,b k ) <strong>und</strong> (β 2k ,a 2k ,b 2k ) bis β k = β 2k– Ist gcd(b 2k −b k ,n)=1 so berechne x = (a k − n a 2k )(b 2k − m b k ) −1 modn– Ansonsten breche ohne Erfolg abLaufzeit O( √ n) = O(2 |n|/2 )konstanter SpeicherbedarfKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 6 ANGRIFFE AUF DISKRETE LOGARITHMEN


Pollard ρ: Ablaufbeispiel• Trace der Berechnung von log 89 618 in Z 809– Ordnung vong = 89 in(Z ∗ 809,·) ist n = 101– WähleG 1/2/3 = {g≤808|g≡1/0/2 mod 3}Schleife 1. β = 618 a = 0 b = 1 β’ = 76 a’ = 0 b’ = 2Schleife 2. β = 76 a = 0 b = 2 β’ = 113 a’ = 0 b’ = 4Schleife 3. β = 46 a = 0 b = 3 β’ = 488 a’ = 1 b’ = 5Schleife 4. β = 113 a = 0 b = 4 β’ = 605 a’ = 4 b’ = 10Schleife 5. β = 349 a = 1 b = 4 β’ = 422 a’ = 5 b’ = 11Schleife 6. β = 488 a = 1 b = 5 β’ = 683 a’ = 7 b’ = 11Schleife 7. β = 555 a = 2 b = 5 β’ = 451 a’ = 8 b’ = 12Schleife 8. β = 605 a = 4 b = 10 β’ = 344 a’ = 9 b’ = 13Schleife 9. β = 451 a = 5 b = 10 β’ = 112 a’ = 11 b’ = 13Schleife 10. β = 422 a = 5 b = 11 β’ = 422 a’ = 11 b’ = 15– Resultat: x = (a− n a ′ )(b ′ − n b) −1 = 95·n4 −1 = 95·n76= 49• Erweiterung des Algorithmus– Originalverfahren bricht ab, wenn gcd(b 2k −b k ,n)≠1– Kongruenz (a k −a 2k )≡x·(b 2k −b k )modn hat d mögliche Lösungen x iwenn d = gcd(b 2k −b k ,n) > 1– Für kleine d kann man für alle x i prüfen, obg x i = y istKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 7 ANGRIFFE AUF DISKRETE LOGARITHMEN


Der Pohlig-Hellman Algorithmus (I)Wenn die Faktorisierung von n = |G| bekannt ist• Bestimme Logarithmen in Untergruppen von G– Sei n = |G| = ∏ p|n pe p<strong>und</strong>x = log g y– Für jedes p setze n p = n/p e p, g p = g n p, y p = y n p– Dann istp e pdie Ordnung vong p <strong>und</strong> es gilt g x p = g n p·x = y n p= y palso existiert der diskrete Logarithmus x p = log gpy p– Berechne alle x p mit dem Shanks- oder dem Pollard ρ Algorithmus• Berechnex = log g y aus den KomponentenSatz: Gilt x≡ log gp y p modp e pfür allep, dann istx = log g yBeweis: Es gilt (g −x·y) n p= (g n p) −x·y n p= g −x pp ·y p = 1für alle Primteiler p vonn. Also ist die Ordnung vong −x·y (inG)ein Teiler von allen n p . Da 1 der größte gemeinsame Teiler aller n pist, gilt g −x·y = 1∈G also g x = y– Berechne x = log g y aus allen x p mit dem chinesischem RestsatzGesamtlaufzeit O( ∑ p|n√pe p ) konstanter SpeicherbedarfKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 8 ANGRIFFE AUF DISKRETE LOGARITHMEN


Der Pohlig-Hellman Algorithmus (II)• Bestimme p-adische Darstellung von x p =log gp y pDer Übersichtlichkeit halber wird der Index p im folgenden fallen gelassen– Wegen x < p e gilt x = ∑ i


Pohlig-Hellman Algorithmus für x = log 5 3 in Z 2017• Reduktion auf Primzahlpotenzen– Die Gruppenordnung istn = 2016 = 25·32·7– Zu berechnen sind x 2 = log 5 633 63 = log 500 913,x 3 = log 5 2243 224 = log 576 1933 <strong>und</strong> x 7 = log 5 2883 288 = log 1879 1879• Berechnung von x 2 = ∑ 4i=0 x 2,i 2 i– Es ist g ∗ = 500 16 mod2017 = 2016 <strong>und</strong> 913 16 mod2017 = 1– Damit ist x 2,0 = log 2016 1 = 0– Es ist y 2,1 = (913·500 0 ) 8 = 913 8 = 2016 also x 2,1 = log 2016 2016 = 1– Es ist y 2,2 = 1579 4 = 2016 also x 2,2 = log 2016 2016 = 1– Es ist y 2,3 = 1 2 = 1 also x 2,3 = log 2016 1 = 0– Es ist y 2,4 = 1 also x 2,4 = log 2016 1 = 0– Insgesamt ergibt sichx 2 = 6• Berechnung von x– Analog ergibt sich x 3 = 4 <strong>und</strong>x 7 = 1– Lösung der simultanen Kongruenzen x≡6mod32, x≡4mod9 <strong>und</strong>x≡1mod7 ergibt x = 1030KRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 10 ANGRIFFE AUF DISKRETE LOGARITHMEN


Die Index-Calculus MethodeVerwandt mit Siebverfahren für Faktorisierung• Einfache Gr<strong>und</strong>idee– Wähle eine Faktorbasis B ={p prim|p≤b} für eine Zahl b– Bestimme diskrete Logarithmen x p = log g p für alle Elemente vonB– Suche Exponenten a


Die Index-Calculus Methode am BeispielLogarithmen der Faktorbasis fürg = 2 in Z 2027• Relationen der Faktorbasis {2,3,5,7,11}– Zufällige Erzeugung von Zahlen z i liefert· 2 1593 mod2027 = 33 = 3·11· 2 983 mod2027 = 385 = 5·7·11· 2 1318 mod2027 = 1408 = 2 7·11· 2 293 mod2027 = 63 = 3 2·7· 2 1918 mod2027 = 1600 = 2 6·5 2• Bestimmex p =log 2 p fürp∈{2,3,5,7,11}· x 3 +x 11 ≡1593mod2026· x 5 +x 7 +x 11 ≡983mod2026· 7x 2 +x 11 ≡1318mod2026· 2x 3 +x 7 ≡293mod2026· 6x 2 +2x 5 ≡1918mod2026– Löse Kongruenzen mit modifiziertem GaußalgorithmusKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 12 ANGRIFFE AUF DISKRETE LOGARITHMEN


Die Index-Calculus Methode am Beispiel (II)• Modifizierter Gaußalgorithmus– Löse Kongruenzen modulo 2 <strong>und</strong> 1013 (die Primteiler von 2026)– Berechne x p aus Einzellösungen mit Chinesischem Restsatz– Wegen g = 2 ist x 2 = log g 2 = 1• Löse Kongruenzen modulo 2· x 3 +x 11 ≡1593mod2 x 5 +x 7 +x 11 ≡983mod2· x 2 +x 11 ≡1318mod2 x 7 ≡293mod2– Es ergibt sich x 5 ≡x 7 ≡x 11 ≡1mod2 <strong>und</strong> x 3 ≡0mod2• Löse Kongruenzen modulo 1013· x 3 +x 11 ≡580mod1013 x 5 +x 7 +x 11 ≡983mod1013· x 11 ≡298mod1013 2x 3 +x 7 ≡293mod1013· 2x 5 ≡899mod1013– Ergibt x 11 ≡298, x 5 ≡956, x 7 ≡742, x 3 ≡282 mod1013• Lösung der simultanen Kongruenz– x 2 = 1, x 3 = 282, x 5 = 1969, x 7 = 1755, x 11 = 1311KRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 13 ANGRIFFE AUF DISKRETE LOGARITHMEN


Das Index-Calculus Verfahren am Beispiel (III)Berechnung von log 2 13 in Z 2027• Suche ein 11-glattes 13·2 a für eina∈{1,..2026}– Zufallssuche ergibt a = 1397 <strong>und</strong> 13·2 1397 ≡110≡2·5·11mod2027• Berechnex≡ ∑ p∈B x p·e p −a mod ϕ(n)– Liefert x≡x 1 2+x 1 5+x 1 11−a≡1+1969+1311−1397mod2026– Ergebnis ist x = log 2 13 = 1884Verallgemeinerung auf andere Gruppen– Methode stützt sich auf zahlentheoretische Eigenschaften– Andere Gruppen müssen Aufbau einer Faktorbasis <strong>und</strong> Konstruktionvon Relationen aus Exponentenvektoren unterstützen– Relationenfindung inZ ∗ p baut auf Primfaktorzerlegung inZauf– Verfahren zur Relationenfindung in anderen Gruppen nicht bekanntKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 14 ANGRIFFE AUF DISKRETE LOGARITHMEN


DL Algorithmen im Rückblick• Aufzählungsverfahren– Standardverfahren, gut für kleine Gruppenordnungen O(2 |n| )• Algorithmus Algorithmus von Shanks– Zerlegung der Suche in Baby- <strong>und</strong> Giantsteps Zeit/Platz O(2 |n|/2 )• Pollard ρ– Systematische Suche nach Kollisionen O(2 |n|/2 )• Pohlig-Hellman Verfahren– Reduktion auf Primfaktoren vonn O( ∑ p|n e p·√p)• Index-Calculus Methode– Aufbau von Logarithmen einer Faktorbasis O(2 (1+o(1))·|n| 1/2·log |n| 1/2 )– Zahlkörpersieb als effizienteste Variante O(2 1.92·|n| 1/3·log |n| 2/3 )– Verallgemeinert sehr schlecht auf andere GruppenKRYPTOGRAPHIE UND KOMPLEXITÄT §5.2: 15 ANGRIFFE AUF DISKRETE LOGARITHMEN

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!