ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f...

22
ADS: Algorithmen und Datenstrukturen 2 Teil 10 Prof. Peter F. Stadler & Dr. Christian H¨ oner zu Siederdissen Bioinformatik/IZBI Institut f¨ ur Informatik & Interdisziplin¨ ares Zentrum f¨ ur Bioinformatik Universit¨ at Leipzig 8. Juni 2016 [Letzte Aktualisierung: 29/06/2016, 15:36] 1 / 22

Transcript of ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f...

Page 1: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

ADS: Algorithmen und Datenstrukturen 2Teil 10

Prof. Peter F. Stadler & Dr. Christian Honer zu Siederdissen

Bioinformatik/IZBIInstitut fur Informatik

& Interdisziplinares Zentrum fur BioinformatikUniversitat Leipzig

8. Juni 2016[Letzte Aktualisierung: 29/06/2016, 15:36]

1 / 22

Page 2: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 2 / 22

Page 3: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 3 / 22

Page 4: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 4 / 22

Page 5: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 5 / 22

Page 6: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

Beispiel: Euklid

a b ba/bc d y x

99 78 1 3 -11 1478 21 3 3 -11 321 15 1 3 3 -215 6 2 3 -2 1

6 3 2 3 1 03 0 - 3 0 1

P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V10 8. Juni 2016 6 / 22

Page 7: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 7 / 22

Page 8: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

(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 : ∃ (unique) 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, V10 8. Juni 2016 8 / 22

Page 9: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

(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, V10 8. Juni 2016 9 / 22

Page 10: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 10 / 22

Page 11: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

Eulers Phi

Φ(n) = n∏

p:p∈P∧p|n

(1− 1

p

)

Falls p ∈ P dann Z∗p = {1, 2, . . . , p − 1}und Φ(n) = p − 1

Falls p /∈ P dann Φ(n) < n − 1

P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V10 8. Juni 2016 11 / 22

Page 12: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

PKI-Kryptographie

das RSA Kryptosystem

P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V10 8. Juni 2016 12 / 22

Page 13: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 13 / 22

Page 14: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 14 / 22

Page 15: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 15 / 22

Page 16: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 16 / 22

Page 17: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 17 / 22

Page 18: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

(I) Finden von Primzahlen

Primzahltheorem: limn→∞pi(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, V10 8. Juni 2016 18 / 22

Page 19: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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 ≡ 16 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, V10 8. Juni 2016 19 / 22

Page 20: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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

P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V10 8. Juni 2016 20 / 22

Page 21: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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 3970 92 1 636 8463 65 1 637 4224 25 19 63

P.F. Stadler & C. Honer (Bioinf, Uni LE) ADS 2, V10 8. Juni 2016 21 / 22

Page 22: ADS: Algorithmen und Datenstrukturen 2 - Teil 10 · Juni 2016 2 / 22. Grundlagen Groˇe Eingaben f ur diese VL-Einheit sind groˇ in Bezug die Anzahl Bit die n otig sind, die Eingabe

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, V10 8. Juni 2016 22 / 22