Inhaltsverzeichnis 1 Kurze Einführung

Werbung
Inhaltsverzeichnis
1 Kurze Einführung
1
2 Teibarkeit,größter gemeinsamer Teiler und der
von Euklid
2.1 Der euklidische Algorithmus . . . . . . . . . . .
2.2 Laufzeit des euklidischen Algorithmus . . . . . .
2.3 Erweiterter Euklid . . . . . . . . . . . . . . . .
Algorithmus
. . . . . . . .
. . . . . . . .
. . . . . . . .
2
3
3
4
3 Modulare Arithmetik
4
4 Das RSA public-key System der Kryptographie
5
5 Primzahltests
7
5.1 Der Pseudoprimzahltest . . . . . . . . . . . . . . . . . . . . . 8
5.2 Der Miller Rabin Test . . . . . . . . . . . . . . . . . . . . . . 9
5.3 Der AKS-Test ’Primes is in P’ . . . . . . . . . . . . . . . . . . 10
1
Kurze Einführung
Zahlentheoretische Algorithmen gehören zusammen mit geometrischen Konstruktionen zu den ältesten niedergeschriebenen Algorithmen überhaupt. Die
Zahlentheorie wurde lange Zeit wegen ihrer theoretisch sehr interessanten
Problemstellungen von Mathematikern sehr geschätzt, dabei waren das Finden von Primzahlen und die Zerlegung großer Zahlen in ihre Primfaktoren,
welche nach Gauß zu den interessantesten Aufgaben der Arithmetik gehören
ohne jede Bedeutung für die Anwendung. Heute spielen Verfahren zur Lösung
dieser Probleme eine zentrale Rolle in der Kryptographie. Die Sicherheit vieler dieser Verfahren beruht nämlich darauf, dass es vergleichsweise wesentlich
einfacher ist große Primzahlen zu bestimmen als ihr Produkt, falls man erstere nicht kennt, zu zerlegen. In diesem Vortrag wird als Beispiel für ein
solches Verfahren, das RSA-Verfahren vorgestellt. Außerdem werden einige
grundlegende Zahlentheoretische Algorithmen zusammen mit den Begriffen
und Konzepten, auf denen sie basieren besprochen.
1
2
Teibarkeit,größter gemeinsamer Teiler und
der Algorithmus von Euklid
Mit Zahlen seien in diesem und den folgenden Kapiteln nur ganze Zahlen
gemeint. Bei Zahlentheoretischen Algorithmen werden Laufzeiten sowohl in
arithmetischen als auch in Bit-Operationen betrachtet,diese Laufzeiten werden hier mit entsprechend OA und OB bezeichet.
Defintion 1 Wir nennen die größte Zahl,die 2 Zahlen a und b teilt,den
grössten gemeinsamen Teiler und bezeichnen sie mit ggT(a,b)
Hier ist eine kurze Zusammenstellung einiger Eigenschaften,der Teilbarkeitsrelation und des ggT’s.
Teilbarkeit ist reflexiv und transitiv aber nicht symmetrisch
d | a ∧ d | b =⇒ d | ggT (a, b)
Satz 1 Wenn a und b beliebige von 0 verschiedene Zahlen sind,dann ist der
ggT(a,b) die kleinste positive Zahl,die in der Menge {ax + by x, y ∈ Z} enthalten ist.
2
Folgerung 1 Für beliebige Zahlen a und b gilt: d | a und d | b
⇒ d | ggT (a, b)
Folgerung 2 Für alle Zahlen a,b und n ≥ 0 gilt: ggT (na, nb) = nggT (a, b)
Folgerung 3 Für alle positiven Zahlen n,a und b gilt: n | ab ∧ ggT (a, n) =
1⇒ n|b
2.1
Der euklidische Algorithmus
Stammt in seiner ürsprünglichen Form von Euklid(ca 300 v Chr) Er basiert
auf der Rekursion : ggT(a,b)=ggT(b,a mod b) Welche sich mit den vorangehenden Sätzen beweisen lässt. Der Algorithmus hat als Pseudocode die
Gestalt
Euclid(a,b)
1 if b=0
2 then return a
3 else return Euclid (b,a mod b)
2.2
Laufzeit des euklidischen Algorithmus
Lemma 1 Sei a>b ≥ 1 und k ≥ 0 die Anzahl in rekursiven Aufrufen,die
Euclid(a,b) benötigt, dann gilt: a ≥ Fk+2 und b ≥ Fk+1
Als direkte Folgerung ergibt sich der Satz von Lamé mitdessen Hilfe
wir die Laufzeit(in Rekursionsaufrufen) über die Folge der Fibonacci Zahlen abschätzen können.
Satz 1 (Satz von Lamé) Für jede Zahl k ≥ 1 mit a > b ≥ 1 benötigt
Euclid(a,b) weniger als k rekursive Aufrufe
Dies ist die bestmögliche obere Schranke.
Denn benachbarte Fibonacci Zahlen sind ein Worst-Case Input für Euclid
Da Euclid (F3 , F2 ) genau einmal die Rekursion aufruft und wir für k
grösser 2, Fk+1 mod Fk = Fk−1 haben,folgt
ggT (Fk+1 , Fk ) = ggT (Fk , (Fk+1 mod Fk ))
= ggT (Fk , Fk−1 )
(2)
3
Euclid(Fk+1 , Fk )) benötigt also genau k-1 rekurive
Aufrufe.
√
√
1+
5
(
)
Für Fk haben wir: Fk ≈ ϕk / 5 mit ϕ =
2
Wir erhalten als Abschätzung für die Laufzeit(Rekursive Aufrufe)O (log b).
Haben beide Eingaben bei Euklid β-Bit,so haben wir:
OA = O(β) und OB = (β 3 ).
2.3
Erweiterter Euklid
Der erweiterte euklidische Algorithmus gibt zusammen mit dem größten gemeinsamen Teiler d auch die Koeffizienten x,y dessen Darstellung als
Linearkombination von a und b aus.
Input:a,b
Output:(d,x,y)
Extended Euclid(a,b)
Output:(d,x,y),
d = ggT (a, b)
= ax + by
Extended Euclid(a,b)
1 if b=0
2 return(a,1,0)
3 (d’,x’,y’)←−Extended Euclid(b,a mod b)
4 (d,x,y)←− d0 , y 0 , x0 − f loor( ab )y 0 )
5 return (d,x,y)
3
Modulare Arithmetik
Zum Verständnis des RSA Verfahrens und der Primzahltests
benötigen wir noch ein paar Begriffe und Konzepte aus der
modularen Arithmetik.
4
(Zn , +n ) ist abelsche Gruppe
(Z∗n , ·n )) ist abelsche Gruppe
Eulersche Funktion: ϕ(n) := |Z∗n | =
P
p≤n ggT (n,p)=1
1
Satz von Euler:∀n ≥ 2 : aϕ(n) ≡ 1 (mod n)
∀ a ∈ Zn ∗
Satz von Fermat:p ∈ P ∧ ggT (a, p) = 1 ⇒ ap−1 ≡ 1 (mod p)
Q
Chinesischer Restsatz n = ri=1
n1 , . . . , nr ∈ N paarweise teilerfremd.
dann folgt:φ :Z∗n −→ Z∗n1 , . . . , Z∗nr
φ (a (mod n)) := ((a (mod n1 )) , . . . , (a (mod nr )))
ist Isomorphismus.
=⇒ ϕ ((pq)) = ϕ (p) · ϕ (q),falls ggT (p, q) = 1
4
Das RSA public-key System der Kryptographie
• Jeder Teilnehmer hat einen public key P und einen secret key S
Im RSA System besteht jeder Schlüssel(key) aus einem Zahlenpaar.
• Der secret key wird an keine andere Person weitergegen.
Der public key kann an jede beliebige Person weitergegeben werden.
D bezeichne die Menge der möglichen Nachrichten
public-und secret key sind Funktionen D−→D
mit S (P (d)) = d undP (S (d)) = d.∀ d ∈ D
Beispiel: Bob möchte eine Nachricht N an Alice senden ohne das eine dritte
Person ,die die Nachricht abfängt erfährt worum es geht bzw was der
Inhalt ist.
5
Hierfür verschickt Alice an Bob ihren public key,mit dem Bob die Nachricht verschlüsselt, behält aber ihren secret key
für sich, mit,dem sie die von Bob ihr zugesandte verschlüsselte Nachricht
wieder öffnet.
Im wesentlichen hängt die Sicherheit des Systems davon ab, dass eine
Person, die Alice’s secret key nicht besitzt, die Funktion nicht in einer realistischen Zeitspanne berechnen kann.
Es stellt sich also das Hauptproblem: Wie findet man eine Funktion ,die
man jedem mitteilen kann, ohne das jemand, der sie kennt, aus ihr auf einfache Art und Weise die Umkehrfunktion berechnen könnte.
Das RSA System macht hier sich zu Nutze, dass es relativ einfach ist
große Primzahlen zu finden, währendessen es sehr schwer ist eine große zusammengesetzte Zahl zu faktorisieren.
Das RSA(System)
1 Wähle zwei große(≥ 512-Bits) Primzahlen p und q,
p 6= q
2 Setze n = pq
3 Wähle eine kleine ungerade Zahl e die teilerfremd zu ϕ (n) ist
4 Finde e’ invers zu e modulo ϕ (n) bez üglichM ultiplikation
5 Setze P = (e, n) RSA public key
6 Setze S = (e0 , n) RSA secret key
Wir haben D= Zn mit P (N ) = N e (mod n) und
S (N ) = N e0 (mod n) für N ∈ D
6
Das RSA-Verfahren funktioniert,denn für N gilt
stets
P (S (n)) = S (P (n))
0
= N ee
Da e, e’ bezüglich der Multiplikation modulo ϕ (n) = (p − 1) (q − 1)
zueinander invers sind,gibt es eine Zahl k mit ee’= 1 + k(p − 1)(q − 1).
Aber für N 6= 0 (mod p) erhalten wir dann
0
N ee
≡ N N p−1
k(q−1)
(mod p)
≡ N (1)k(q−1) (mod p)
≡ N (mod p)
(3)
(4)
0
Ausserdem gilt auch N ee ≡ N , falls N ≡ 0 (mod p)
0
Also N ee ≡ N (mod p)
0
Analog erhält man N ee ≡ N (mod q), nachdem Chinesischem Restastz
0
also N ee ≡ N (mod n)
q.e.d
5
Primzahltests
Das Problem des Unterschiedens von Primzahlen und zusammengesetzten Zahlen und das Zerlegen von grossen Zahlen
in ihre Primfaktoren ist eine der wichtigsten und interessantesten
Aufgaben der Arithmetik.
C.F.Gauß
Wir wollen möglichst einfache Methoden entwickeln um große Prim- Zah7
len zu bestimmen. Eine Möglichkeit ist,das wir zufällig irgendwelche ungeraden großen Zahlen wählen und testen ob es Primzahlen sind oder nicht.
Hierfür müssen wir aber effiziente Verfahren entwickeln.
Wir untersuchen zunächst die Verteilung der Primzahlen innerhalb der
natürlichen
Zahlen um die Wahrscheinlichkeit, dass wir unter den Zahlen ≤ n zufällig
eine Primzahl ziehen, zu schätzen.
Verteilung der Primzahlen: π (n) := |{p ∈ P, p ≤ n}|
Primzahlsatz:limn→∞
π(n)
n/ ln(n)
=1
Schon für n = 109 (Zahlentheoretisch gesehen kleine Zahl) erhält man
hiermit eine auf 6 prozent genaue Approximation
π (n) = 50, 847, 534; n/ln ≈ 48, 254, 942
Die Wahrscheinlichkeit, dass eine zufällig ausgewählte Zahl Primzahl ist,
ist also Schätzungsweise:1/ ln (n)
Wir lernen jetzt 3 Primzahltests kennen
5.1
Der Pseudoprimzahltest
Defintion 2 n heißt Pseudoprimzahl zur Basis a,falls n zusammengesetzt ist
und an−1 ≡ 1 (mod n)
8
Pseudoprime(n)
1 if Modular-Exponentation (2, n − 1, n) 6= 1 (mod n)
2 then return Composite . Sicher
3 else return Prime . Wahrscheinlich
Modular-Exponentation(a,b,n)gibt die Potenz ab (mod n)
• Nur 22 Werte ≤ 104 für die der Test versagt. Irrtumswahrscheinlichkeit→ 0 für β → ∞
5.2
Der Miller Rabin Test
Der Miller-Rabin-Test
• mehrere zufällig ausgewählte Basen a,anstatt einer festen Basis
• Wird bei Modular-Exponentation während des Quadrierens eine eine
nichttriviale Wurzel von 1 (mod n) entdeckt−→ Composite
Hilfsmethode Witness(a,n) testet ob durch a die Zusammengesetztheit
von n gezeigt wird, indem falls an−1 6= 1 (mod n) gilt ,n sicher zusammengesetzt ist,sonst aber nicht sicher ist das n Prim ist.
Witness(a,n)
1 let n − 1 = 2t u where t ≥ 1 and u is odd
2 x0 ←− Modular-Exponentation(a,u,n)
3 for i ←− 1 to t
4 do xi ←− x2i−1 (mod n)
5 if xi = 1 and xi−1 6= 1 xi−1 6= n − 1
6 then return TRUE
7 if xt 6= 1
8 then return TRUE
9 return False
X := hx0 , . . . , xt i
9
Miller-Rabin(n,s)
1 for j ←− to s
2 do a ←− Random(1,n-1)
3 if Witness(a,n)
4 then return Composite . Sicher
5 return Prime . nahezu Sicher
(Beispiel) : n = 561 ⇒ n − 1 = 560
= 24 · 35
Angenommen a=7 wird als Basis gewählt
Dann berechnet Witness x0 ≡ a35 ≡ 241(mod 561)
Also X = h241, 298, 166, 67, 1i
Eine nichtriviale Wurzel von 1 wird bei der letzten Quadrierung entdeckt,
da a280 ≡ 67 (mod n) und a560 ≡ 1 (mod n) Deshalb beweist a=7 die
Zusammengesetztheit von n. Witness(a,n) gibt also TRUE aus.
⇒ Miller-Rabin gibt Composite aus.
Für eine Zahl n der Bitgröße β erhalten wir: OA = O (sβ) und OB =
O (sβ 3 ).
Satz 2 Ist n eine ungerade zusammengesetzte Zahl,dann gibt es mindestens
n−1
Zahlen mit Witness(a,n)=TRUE.
2
5.3
Der AKS-Test ’Primes is in P’
Das Problem einen deterministischen Primzahltest zu finden, der in polynomieller Zeit läuft, wurde erst vor kurzem von drei indischen Wissenschaftlern
gelöst. Nach diesen ist er benannt AKS: Agrawal, Saxena, Kayal
10
Satz von AKS Sei n ∈ N und r, q ∈ N mit q | (r − 1)
und
r−1
n q mod r ≥ 2.
S⊆ Zn mit ggT (n, a − a0 ) = 1∀a, a0 ∈ S
√
2b r c
und q+s−1
≥
n
.
s
Dann gilt: (x − a)n ≡ xn − a mod (xr − 1, n) ∈ S
=⇒ n ist Primzahlpotenz.
Algorithmus(Strukturell)
1 if n echte Primzahlpotenz
2 then return FALSE
3 Wähle (q,r,S) wie im Satz von AKS
4 Für a ∈ S do
a) if ggT (a, n) ≥ 2 return FALSE
b) if (x − a)n ≡ xn − a mod(xr − 1, n) return FALSE
return TRUE
Literatur
Euklid Bücher(VII-X) Cormann Introduction to Algorithms Primes is in P(A Breakthrough for ‘Everyman
www.ams.org/notices/200305/fea-bornemann.pdf
11
Herunterladen