Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Viktor Gärtner Geändert vor über 8 Jahren
1
Kryptografie und Datensicherheit RSA
2
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 1. Asymmetrisches Verschlüsselungsverfahren 2. der euklidische und der erweiterte euklidische Algorithmus 3. Verschlüsselungs- und Entschlüsselungsfunktion 4. Beweis zur Existenz einer Entschlüsselungsfunktion 5. Einblick in die Sicherheitsfrage
3
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 1. Asymmetrisches Verschlüsselungsverfahren - Public-Key Verschlüsselung
4
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Symmetrische Verschlüsselung: klassische Verschlüsselung mithilfe eines Schlüssels der Texte sowohl ver- als auch entschlüsselt und beiden Kommunikationspartnern bekannt ist ● Problem bei dieser Art der Kommunikation: der Schlüssel muss über einen sicheren Kanal ausgetauscht werden um verschlüsselt kommunizieren zu können
5
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Bob generiert ein Schlüsselpaar bestehend aus einem Ver- schlüsselungsschlüssel und einem passenden Entschlüsselungs- schlüssel
6
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Bob generiert ein Schlüsselpaar bestehend aus einem Ver- schlüsselungsschlüssel und einem passenden Entschlüsselungs- schlüssel ● Bob teilt Alice den Schlüssel zum Verschlüsseln mit (der öffentliche Schlüssel)
7
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Bob generiert ein Schlüsselpaar bestehend aus einem Ver- schlüsselungsschlüssel und einem passenden Entschlüsselungs- schlüssel ● Bob teilt Alice den Schlüssel zum Verschlüsseln mit (der öffentliche Schlüssel) ● Alice verschlüsselt einen Text mit Bobs öffentlichem Schlüssel
8
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Alice übermittelt Bob den verschlüsselten Text
9
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Alice übermittelt Bob den verschlüsselten Text ● Bob entschlüsselt den Text mithilfe seines passenden Entschlüsselungsschlüssel (dem privaten Schlüssel)
10
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Asymmetrische Verschlüsselungsverfahren Public-Key-Verschlüsselungsverfahren ● Alle Informationen die Eve beim Lauschen erhält sind der öffentliche Schlüssel und der verschlüsselte Text ● Im Idealfall nützen diese Informationen Eve nichts um an den privaten Schlüssel oder den Plaintext zu gelangen
11
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Verhältnismäßig junges Gebiet in der Kryptografie ● Erste Arbeiten zum Public-Key-Verfahren von Ellis, Cocks und Williamson 1973 im British Government Communication Headquarter ● Unterlag jedoch der Geheimhaltung, wurde nicht publiziert, patentiert und auch nicht weiterentwickelt ● 1977 RSA–Verfahren: Rivest, Shamir und Adleman ● Bis heute sicherstes Public-Key-Verfahren
12
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 2. Der euklidische und der erweiterte euklidische Algorithmus
14
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Dargestellt als Pseudo-Code: ● simple_euclid(int a, int b) begin { int r; a = abs(a); b = abs(b); while (b != 0) { r = a%b; a = b; b = r; } return a; }
15
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Rechenbeispiel: ● ggT(100,35) ● 35 > 0 => ggT(35,100 mod 35) ● 30 > 0 => ggT(30, 35 mod 30) ● 5 > 0 => ggT(5, 30 mod 5) ● 0 = 0 => ggT(100,35) = 5 Algorithmus: ● Für b = 0 ist der ggT(a,b) = a ● Sonst ist der ggT(a,b) = ggT(|b|, a mod |b|)
16
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beweis für den einfachen euklidischen Algorithmus: Die erste Aussage des Algorithmus ist trivialerweise wahr. Wir beweise also den zweiten Teil der Aussage des Algorithmus.
17
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Es gilt: Es existiert eine ganze Zahl q so dass: der ggT(a,b) teilt
18
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Es gilt: Es existiert eine ganze Zahl q so dass: der ggT(a,b) teilt trivialerweise teilt ggT(a,b) auch und muss dementsprechend auch teilen. q.e.d.
19
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Der Erweiterte euklidische Algorithmus errechnet ein x und y, so dass: Es gelten nun die beiden Folgen: repräsentiert die Restbeträge, die beim Anwenden des einfachen euklidischen Alg. Anfallen. Es gilt hier: und. ist entsprechend die Folge der Quotienten.
20
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Mit: definieren wir darüberhinaus die beiden Folgen: Es wird gelten:
21
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Mit: definieren wir darüberhinaus die beiden Folgen: Es wird gelten: ● Die Folge r lässt sich nun darstellen mit:
22
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beweis: ● für und ist die Formel korrekt, da ● Aus und folgt:
23
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beweis: q.e.d.
24
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Annahme: reduziert mit dem modulo von r0 ergibt sich: ● Gilt: folgt:
25
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 r = b_0; return(r,s,t) Euklidischer Algorithmus – Pseudocode temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = ggT(a,b) sa + tb = r
26
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 3. Verschlüsselungs- und Entschlüsselungsfunktion
27
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Die Schlüsselerzeugung: ● Bob wählt zwei zufällige Primzahlen p und q ● Das Produkt dieser Primzahlen ist n = pq
28
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Die Schlüsselerzeugung: ● Bob wählt zwei zufällige Primzahlen p und q ● Das Produkt dieser Primzahlen ist n = pq ● φ(n) ist definiert als φ(n) = (p-1)(q-1)
29
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Die Schlüsselerzeugung: ● Bob wählt zwei zufällige Primzahlen p und q ● Das Produkt dieser Primzahlen ist n = pq ● φ(n) ist definiert als φ(n) = (p-1)(q-1) ● Nun wählt Bob ein a mit Und: ggT(a, φ(n)) = 1
30
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Die Schlüsselerzeugung: ● Bob wählt zwei zufällige Primzahlen p und q ● Das Produkt dieser Primzahlen ist n = pq ● φ(n) ist definiert als φ(n) = (p-1)(q-1) ● Nun wählt Bob ein a mit Und: ggT(a, φ(n)) = 1 ● Anchließend ermittelt Bob ein b mit: und
31
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● b lässt sich mit dem Erweiterten euklidischen Algorithmus berechnen:
32
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● n heißt das „RSA - Modul“ ● a heißt der Verschlüsselungsexponent ● b heißt der Entschlüsselungsexponent ● Der private Schlüssel ist (b) ● Der öffentliche Schlüssel ist (n,a)
33
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Rechenbeispiel Schlüsselerzeugung: ● Bob wählt als Primzahlen: p = 13 und q = 17 ● Daraus ergibt sich n = 13 * 17 = 221 ● φ(n) ist dementsprechend φ(n) = 12 * 16 = 192 ● a muss kleiner φ(n) sein und mit φ(n) den ggT(a, φ(n)) = 1 teilen. Es bietet sich a = 5 an.
34
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Die Ermittlung von b mittels euklidischen Algorithmus: a*b mod Φ(n) = 1 5*b mod 192 = 1 5*b = l*192 + 1 für ein l ϵ Z 5*b – 192 * l = 1
35
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Notwendige Form für euklidischen Algorithmus: 5*b – 192 * l = 1 = ggT(b,l)
36
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
37
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
38
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
39
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
40
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
41
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
42
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
43
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
44
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
45
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
46
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
47
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
48
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
49
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
50
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
51
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
52
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t)
53
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Beispielrechnung zur Ermittlung von b (und l) 5*b – 192 * l = 1 = ggT(b,l) a_0 = a; b_0 = b; t_0 = 0; t = 1; s_0 = 1; s = 0; q = abs(a_0 / b_0) r = a0 – q*b_0 while r > 0 temp = t_0 – q*t; t_0 = t; t = temp; temp = s_0 – q*s s_0 = s; s = temp; a_0 = b_0; b_0 = r; q = abs(a_0 / b_0) r = a_0 - q*b_0 r = b_0; return(r,s,t) 5*77 – 192 * 2 = 1 = ggT(b,l)
54
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Verschlüsselungsvorgang: ● Klartextraum: ● Verschlüssele m = 110 mit dem Public-Key: 77 ● n = 221 φ(n) = 192 a = 5 b = 77
55
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Entschlüsselungsvorgang: ● Entschlüssele c = 172 mit dem Private-Key: 5 ● n = 221 φ(n) = 192 a = 5 b = 77
56
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Blockchiffre mit RSA: ● Alphabetgröße: N mit Σ = {0, 2,..., N-1} ●
57
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Blockchiffre mit RSA: ● ● c kann zur Basis N geschrieben werden
58
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispielrechnung mit Text: ● „bccbdb“ ● n = 221 φ(n) = 192 a = 5 b = 77
59
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispielrechnung mit Text: ● „bcc“ ● „bdb“ n = 221 φ(n) = 192 a = 5 b = 77 k = 3
60
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispielrechnung mit Text: ● n = 221 φ(n) = 192 a = 5 b = 77 k = 3
61
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispielrechnung mit Text: ● ● „caacaaca“ n = 221 φ(n) = 192 a = 5 b = 77 k = 3
62
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 3. Beweis zur Existenz einer Entschlüsselungsfunktion
63
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● →● →
64
Beweis:
65
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beweis: Der kleine Satz von Fermat: Unter der Vorraussetzung a mit p und q teilerfremd:
66
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beweis: Nach Fermat: Da p und q Primzahlen und teilerfremd sind: da m < n, gilt:
67
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 5. Einblick in die Sicherheitsfrage
68
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Quellen und Referenzen: „Cryptography, Theory and Practice“ Douglas R. Stinson, Chapman and Hall 2006, Third Edition „Einführung in die Kryptographie“ Prof. Dr. Johannes Buchmann, Springer 2004, Dritte Auflage
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.