ads: algorithmen und datenstrukturen 2 - teil 11 · pdf file5 3968 92 1 63 6 8463 65 1 63 7...
TRANSCRIPT
ADS: Algorithmen und Datenstrukturen 2Teil 11
Prof. Peter F. Stadler & Dr. Christian Honer zu Siederdissen
Bioinformatik/IZBIInstitut fur Informatik
& Interdisziplinares Zentrum fur BioinformatikUniversitat Leipzig
14. Juni 2017[Letzte Aktualisierung: 14/06/2017, 01:45]
1 / 22
Zahlentheorie und Kryptographie
Public-Key Kryptographie mittels RSA (Rivest, Shamir, Adleman)
Verschlusseln von Nachrichten zwischen zwei Parteien
Geheime Schlussel zum EntschlusselnOffentliche Schlussel zum Verschlusseln
Signaturen fur Nachrichten
leicht zu verifizierenNicht falschbarKleinste Anderungen in Nachricht erkennbar
Lustige Warnung: es gibt keinen Beweis das dieses Verfahren sicher ist
Introduction to Algorithms, Cormen et al, Number-Theoretic Algorithms
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 2 / 22
Grundlagen
Große Eingaben fur diese VL-Einheit sind groß in Bezug die AnzahlBit die notig sind, die Eingabe zu kodieren
Wir reden typischerweise uber eine Integer-zahl, aber diese hat 512oder mehr Bit
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 3 / 22
Grundlagen
p ∈ N = {0, 1, . . . } is prim, wenn 1 und p die einzigen Teiler von psind
P = {2, 3, 5, 7, 11, 13 . . . } ⊂ N ist die Menge aller Primzahlen
wir schreiben d |a, falls ∃k ∈ Z : a = kd
Equivalenzklasse modulo n: [a]n = {a + kn : k ∈ Z}wir schreiben a ≡ b mod n fallsa = qn + r und b = q′n + r
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 4 / 22
Faktorisierung: Grundlegendes
Einzigartige Faktorisierung: ∀a ∈ N : a = pe11 · · · pekk , pi ∈ P
großter gemeinsamer Teiler (d = ggT (a, b) = ax + by):
Euklid (a,b)if b = 0 then
Return (a,1,0)end;(d,y’,x) := Euklid (b, a mod b) ;Return (d, x, y ′ − ba/bcx) ;
mit a > b ≥ 1 und b < Fk+1 werden < k rekursive Aufrufedurchgefuhrt
die Laufzeit von Euklid ist: O(β) arithmetische Operationen, O(β3)Bitoperationen
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 5 / 22
Beispiel: Euklid
a b ba/bc d x y
99 78 1 3 -11 1478 21 3 3 3 -1121 15 1 3 -2 315 6 2 3 1 -2
6 3 2 3 0 13 0 - 3 1 0
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 6 / 22
Teilerfremde Zahlen
a und b sind teilerfremd falls Euklid(a, b).d = 1
Beispiel: 8 hat Teiler 1,2,4,8 und 15 hat Teiler 1,3,5,15.
Falls a, b teilerfremd zu p, dann ab teilerfremd zu p.
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 7 / 22
(IV) Uhren- oder Modulo Arithmetik
Gruppe:
Gruppe (S ,⊕) mit Menge S und binarer Operation ⊕ auf S .
Abgeschlossen: ∀a, b ∈ S : a⊕ b ∈ S
Id: ∃e ∈ S : e ⊕ a = a⊕ e = a
Assoziativ: ∀a, b, c ∈ S : (a⊕ b)⊕ c = a⊕ (b ⊕ c)
Inverses: ∀a ∈ S : ∃ (ein) b ∈ S : a⊕ b = b ⊕ a = e
Beispiel: (Z,+), ganze Zahlen mit Addition, e = 0, Inverses: −a.
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 8 / 22
(IV) Modulo Arithmetik
Endliche Gruppe:
Sei n eine naturliche Zahl
Zn sei die Menge der Zahlen {0 . . . n − 1}Darauf lassen sich zwei nutzliche Gruppen definieren:
⊕ = +: (Zn,+n)⊕ = ×: (Zn,×n)
Sei a ≡ a′ mod n, b ≡ b′ mod n:a + b ≡ a′ + b′ mod n undab ≡ a′b′ mod nin der jeweiligen Gruppe
Multiplikative Gruppe modulo n: Z∗n = {a ∈ Zn : ggT(a, n) = 1}
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 9 / 22
Beispiel: Gruppen Modulo n
a + b mod 3
+3 0 1 20 0 1 21 1 2 02 2 0 1
a ∗ b mod 3
∗3 1 21 1 22 2 1
Sehen sie die neutralen Elemente und die inversen Elemente?
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 10 / 22
Eulers Phi
Φ(n) = n∏
p:p∈P∧p|n
(1− 1
p
)
Falls p ∈ P dann Z∗p = {1, 2, . . . , p − 1}und Φ(p) = p − 1
Falls p /∈ P dann Φ(n) < n − 1
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 11 / 22
PKI-Kryptographie
das RSA Kryptosystem
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 12 / 22
Ein paar Begriffe und Definitionen
Alice und Bob wollen kommunizieren
Eve (“Eavesdropper”) mochte lauschen (Eve arbeitet fur die NSA)
Offentlicher Schlussel: P (Alice: PA, Bob: PB)
Geheimer Schlussel: S (Alice: SA, Bob: SB)
PA(·) (etc) seien die entsprechenden Funktionen
Sei M ∈ D die zu sendende Nachricht
Es gelte:
M = SA(PA(M))M = PA(SA(M))
Wir hoffen: SA kann nur von Alice in vertretbarer Zeit berechnetwerden!
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 13 / 22
M PA(M)
Bobverschlusselt
C = PA(M) SA(C )
Aliceentschlusselt
M
Eve belauscht CM
?= NSA(C )
Es gibt keine bekannte schnelle Funktion NSA die C in M ohne Kenntnisvon SA verwandelt
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 14 / 22
Das RSA Kryptosystem
In sechs Schritten zu sicherer Kommunikation:
1 Wahle zufallige Primzahlen p, q, p 6= q, beide ≥ 512–2048 bitp = 11, q = 13
2 Berechne n = pqn = 143
3 Wahle e, ungerade und klein, relativ prim zu (p − 1)(q − 1)(zB 216 + 1 = 65537)e = 23 (rel. prim zu 120)
4 Berechne d mit de ≡ 1 mod (p − 1)(q − 1)d = 47, 47 ∗ 23 mod 120 = 1
5 Offentlicher Schlussel: P = (e, n)P = (23, 143)
6 Geheimer Schlussel: S = (d , n)S = (47, 143)
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 15 / 22
Beispiel
1 Verschlusseln von m = 7
2 c ≡ me mod n 2 ≡ 723 mod 143
3 Entschlusseln von c = 2
4 m ≡ cd mod n 7 ≡ 247 mod 143
Es gibt nicht so viele kleine Primzahlen das sich viele Beispiele findenließen.
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 16 / 22
Korrektheit von RSA
fur alle m ∈ D gilt:
P(S(m)) = S(P(m)) = med mod n
ed = 1 + k(p − 1)(q − 1)
med = med−1m = mk(p−1)(q−1)m = (mp−1)k(q−1)m≡ 1k(q−1)m ≡ m mod p
analog fur mod q
damit auch fur mod pq = n
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 17 / 22
(I) Finden von Primzahlen
Primzahltheorem: limn→∞π(n)n/ ln n = 1
Wkeit das k ∈ N prim: 1/ ln n
Faktorisieren von k ist viel zu langsam (kommt noch!)
Falls k prim, dann: ak−1 ≡ 1 mod k (∀a ∈ {1 . . . k − 1})Fur a = 2 gilt das fast immer, die Fehlerrate ist 10−20 bei 512-bitZahlen!
Allerdings gibt es sog. Carmichael-Zahlen bei denen der Test immerversagt (also falsch “prim” ausgibt)
dort hilft der Miller-Rabin Test weiter
Wir konnen also sehr leicht grosse Primzahlen finden durch zufallige Wahleines k und dann Primzahltest
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 18 / 22
Beispiel
a = 2 k = 47 246 ≡ 1 mod 47
a ∈ {2 . . . 46} : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
a = 2 k = 49 = 7 ∗ 7 248 ≡ 15 mod 49
a ∈ {2 . . . 48} : [15, 43, 29, 43, 8, 0, 43, 36, 8, 15, 22, 15, 0,36, 8, 22, 1, 1, 22, 0, 29, 29, 36, 36, 29, 29,0, 22, 1, 1, 22, 8, 36, 0, 15, 22, 15, 8, 36, 43, 0, 8, 43, 29, 43, 15, 1]
Wir mussen allerdings nur fur a = 2 testen um mit großer Sicherheit k alsPrim bestimmen zu konnen
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 19 / 22
Faktorisierung von n = pq: Pollard-Rho
i := 1 x1 := Rand (0, n − 1) y := x1 k := 2 ;while True do
i := i + 1 ;xi := x2i−1 − 1 mod n ;
d := ggT (y − xi , n) ;if d 6= 1 und d 6= n then
print d ;endif i = k then
y := xi ;k := 2k ;
end
end
erwartete Zeit: O(n1/4)
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 20 / 22
Beispiel: Pollard-Rho
Sei n = 323 = 19 ∗ 17
i xi+1 = (x2i − 1) xi+1 mod 323 d y
1 - 2 - 22 3 3 1 33 8 8 1 34 63 63 1 635 3968 92 1 636 8463 65 1 637 4224 25 19 63
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 21 / 22
Zusammenfassung
Das RSA-Kryptosystem basiert auf einfacher Zahlentheorie
Das Finden von zufalligen Primzahlen ist einfach
Es gibt keine bekannte, schnelle Methode n = pq zu faktorisieren
Es gibt aber auch keinen Beweis der Sicherheit (!)
RSA wird typischerweise benutzt um einen symmetrischenSession-Key zu verschlusseln
“Basis”-RSA hat einige Schwachpunkte, die allerdings in gutenImplementationen nicht zum Tragen kommen:es gilt aber: baut euch RSA nicht selbst!
P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V11 14. Juni 2017 22 / 22