Kryptographische Algorithmen - Lerneinheit 6: Public Key

Werbung
Kryptographische Algorithmen
Lerneinheit 6: Public Key Kryptosysteme
Prof. Dr. Christoph Karg
Studiengang Informatik
Hochschule Aalen
Wintersemester 2016/2017
19.9.2016
Public Key Kryptosysteme
Einleitung
Einleitung
Thema dieser Lerneinheit ist die Funktionsweise von Public Key
Kryptosystemen.
Die Lerneinheit gliedert sich in folgende Abschnitte:
• Aufbau von Public Key Kryptosystemen
• Generierung von Primzahlen
• Rabin-Kryptosystem
• RSA-Kryptosystem
• Diffie Hellman Key Exchange
• El-Gamal-Kryptosystem
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
2 / 138
Public Key Kryptosysteme
Aufbau
Aufbau eines Public Key Kryptosystems
Alice
Oskar
Bob
x
enc
x
y
unsicherer Kanal
y
dec
ke
ke
kd
Schlüsselverzeichnis
Prof. Dr. C. Karg (HS Aalen)
Benutzer
Schlüssel
Bob
ke
Kryptographische Algorithmen
Public Key Kryptosysteme
Public Key Kryptosysteme
3 / 138
Sicherheitsaspekte
Sicherheitsaspekte
• Die Sicherheit gängiger Public Key Kryptosysteme basiert auf der
(hoffentlich) hohen Komplexität von algorithmischen Problemen
• Häufig verwendete Problemstellungen:
▷ Faktorisierung von ganzen Zahlen
▷ Berechnung des diskreten Logarithmus
▷ Berechnung von quadratischen Resten
• Die Parameter von Public Key Kryptosystemen werden mittels
Pseudo-Zufallszahlen-Generatoren erzeugt
• Voraussetzungen:
▷ Für kryptografische Zwecke geeignete Generatoren für
Pseudo-Zufallszahlen
▷ Primzahltests
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
4 / 138
Public Key Kryptosysteme
Sicherheitsaspekte
Faktorisierung von ganzen Zahlen
Faktorisierungsproblem
Gegeben: Zusammengesetzte Zahl n ∈ N
Gefragt: Finde einen Faktor f von n, d.h., eine Zahl f mit folgenden
Eigenschaften:
• 1 < f < n, und
• f|n
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
Public Key Kryptosysteme
5 / 138
Sicherheitsaspekte
Berechnung des diskreten Logarithmus
Diskreter-Logarithmus-Problem
Gegeben:
• Primzahl p
• Erzeugendes Element α von Z∗p
• Element β ∈ Z∗p
Gefragt: Berechne die eindeutige ganze Zahl a, 1 ≤ a ≤ p − 1, so
dass
αa ≡ β (mod p).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
6 / 138
Public Key Kryptosysteme
Sicherheitsaspekte
Beispiel zum Diskreten Logarithmus
Betrachte Z∗11 und α = 2.
i
1 2 3 4 5 6 7 8 9 10
αi mod 11 2 4 8 5 10 9 7 3 6 1
Demnach ist log2 (10) = 5 und log2 (6) = 9.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
Public Key Kryptosysteme
7 / 138
Sicherheitsaspekte
Einwegfunktionen
Eine Abbildung f bezeichnet man als Einwegfunktion, falls sie folgende
Bedingungen erfüllt:
• f kann man einfach berechnen
• Selbst wenn der Algorithmus zur Berechnung von f bekannt ist,
ist es für fast alle y schwer, ein x zu finden, so dass f(x) = y gilt
Ob Einwegfunktionen existieren, ist eine der offenen Fragen in der
Kryptografie
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
8 / 138
Public Key Kryptosysteme
Sicherheitsaspekte
Kandidaten für Einwegfunktionen
• Produkt zweier Primzahlen: f(p, q) = p · q, wobei p und q
Primzahlen.
• Diskrete Exponentialfunktion: f(x) = gx mod p, wobei p eine
Primzahl und g ein Generator von (Z∗p , ×p ) ist.
• Modulare Polynomfunktion:
f(x) = an · xn + . . . + a1 · x + a0 mod p,
wobei p eine Primzahl und ai ∈ Zp für 0 ≤ i ≤ n.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
Public Key Kryptosysteme
9 / 138
Sicherheitsaspekte
Falltürfunktionen
Eine Abbildung f bezeichnet man als Falltürfunktion, falls sie folgende
Bedingungen erfüllt:
• f ist einfach zu berechnen.
• Bei Kenntnis einer mit f verbundenen Information (der
sogenannten Falltürinformation), ist die Gleichung f(x) = y für
gegebenes y leicht lösbar
• Ohne Kenntnis der Falltürinformation ist die Gleichung f(x) = y
für alle y schwer lösbar
Bisher konnte nicht nachgewiesen werden, dass Falltürfunktionen
existieren.
Ein Kandidat für eine Falltürfunktion ist die bei RSA eingesetzte
modulare Potenzfunktion
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
10 / 138
Generierung von Primzahlen
Generierung von Primzahlen
• Primzahlen sind die Grundlage für viele Public Key Verfahren
• Die verwendeten Primzahlen müssen geheim gehalten werden
• Konsequenz: ein Benutzer muss in der Lage sein, Primzahlen auf
eine vertrauliche Art und Weise zu generieren
• Ansatz:
1. Zähle zufällig unter Gleichverteilung eine ungerade Zahl mit
einer vorgegebenen Größe
2. Überprüfe, ob die Zahl eine Primzahl ist
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
11 / 138
Der Primzahlsatz
Der Primzahlsatz
Satz 1 (Primzahlsatz) Sei π(n) gleich der Anzahl der Primzahlen,
die kleiner-gleich n sind, d.h.,
π(n) = ∥{p ∈ N | p ist ein Primzahl und p ≤ n}∥.
Dann gilt für alle n ∈ N:
lim
n→∞
π(n)
n
ln n
→ 1.
Interpretation: Für große n ist π(n) ≈
Prof. Dr. C. Karg (HS Aalen)
n
ln n
Kryptographische Algorithmen
Public Key Kryptosysteme
12 / 138
Generierung von Primzahlen
Der Primzahlsatz
Anwendung des Primzahlsatzes
Anwendung: Im Mittel muss man
m=
k ln(2)
ln(2k )
=
2
2
ungerade Zahlen aus {1, 3, . . . , 2k − 1} zufällig unter Gleichverteilung
ziehen, um eine Primzahl zu erhalten.
Zahlenbeispiele:
k
m
128 44.36
256 88.72
512 177.45
1024 354.89
Prof. Dr. C. Karg (HS Aalen)
k
m
2048 709.78
4096 1419.57
8192 2839.13
16384 5678.26
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
13 / 138
Ein einfacher Primzahltest
Ein einfacher Primzahltest
Satz 2 (Fermat) Ist n eine Primzahl, dann gilt für alle a ∈ Z∗n :
an−1 ≡ 1 (mod n).
Ansatz: Finde ein a ∈ {2, . . . , n − 1}, so dass
an−1 ̸≡ 1 (mod n).
In diesem Fall ist n keine Primzahl.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
14 / 138
Generierung von Primzahlen
Ein einfacher Primzahltest
Probleme und Lösungen
Probleme
1. an−1 mod n muss effizient berechnet werden
2. Man kann nicht alle Elemente a ∈ {2, . . . , n − 1} testen
3. Es gibt Zahlen, die durch den Test nicht erkannt werden
Lösungen
1. Einsatz der modularen Exponentiation
2. Zufällige Auswahl von a
3. Einsatz einer verbesserten Testmethode
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
15 / 138
Ein einfacher Primzahltest
Modulare Exponentation
ModularExponentation(a, b, n)
Input: a, b, n ganze Zahlen, wobei n > 0
Output: ab mod n
1
d := 1
2
Sei ⟨bk−1 , . . . , b0 ⟩ die Binärdarstellung von b
3
for i := k − 1 downto 0 do
4
d := (d · d) mod n
5
if (bi = 1) then
6
d := (d · a) mod n
7
return d
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
16 / 138
Generierung von Primzahlen
Carmichael-Zahlen
Carmichael-Zahlen
Eine Carmichael-Zahl ist eine zusammengesetzte Zahl n mit der
Eigenschaft, dass
an−1 ≡ 1 (mod n)
für alle a ∈ {1, 2, . . . , n − 1}.
Bemerkungen:
• Carmichael-Zahlen sind extrem selten. Es gibt nur 255 solche
Zahlen, die kleiner als 108 sind
• Die ersten drei Carmichael-Zahlen sind 561, 1105 und 1729
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
17 / 138
Verbesserung des Primzahltests
Verbesserung des Primzahltests
Satz 3 Ist n eine Primzahl, dann hat die Gleichung
x2 ≡ 1 (mod n)
genau die zwei Lösungen x = 1 und x = −1 = n − 1.
Folgerung: Ist die Gleichung
x2 ≡ 1 (mod n)
lösbar für ein x mit x ̸= 1 und x ̸= n − 1, dann ist n keine Primzahl.
Ansatz: Modifikation der modularen Exponentiation
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
18 / 138
Generierung von Primzahlen
Verbesserung des Primzahltests
Algorithmus Witness(a, n)
Witness(a, n)
Input: a, n ganze Zahlen, wobei n > 0 und 1 ≤ a ≤ n − 1
Output: true, falls n keine Primzahl, false, sonst.
1
Sei ⟨bk , bk−1 , . . . , b0 ⟩ die Binärdarstellung von n − 1
2
d := 1
3
for i := k downto 0 do
4
x := d
5
d := (d · d) mod n;
6
if (d = 1) and (x ̸= 1) and (x ̸= n − 1) then
7
return true
8
if (bi = 1) then d := (d · a) mod n
9
if (d ̸= 1) then
10
return true
11
return false
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
19 / 138
Verbesserung des Primzahltests
Eigenschaften von Witness(a, n)
• Die Funktion Witness(a, n) ist eine abgewandelte Form von
modularer Exponentiation
• Der Algorithmus berechnet an−1 mod n und sucht während der
Berechnung nach Lösungen für die Gleichung x2 ≡ 1 (mod n),
die verschieden zu 1 und n − 1 sind
• Falls Witness(a, n) = true, dann wird a als Beleg
(engl. witness) für die Tatsache angesehen, dass n keine Primzahl
ist.
• Ist n > 2 eine zusammengesetzte Zahl, dann existieren hierfür
mindestens (n − 1)/2 Belege in {1, 2, . . . , n − 1}
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
20 / 138
Generierung von Primzahlen
Miller-Rabin-Test
Miller-Rabin-Test
MillerRabinTest(n, s)
Input: n, s ganze positive Zahlen
Output: true, falls n eine Primzahl ist, false, sonst.
1 for i := 1 to s do
2
a := Random(2, n − 1)
3
if Witness(a, n) = true then
4
return false
5 return true
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Generierung von Primzahlen
Public Key Kryptosysteme
21 / 138
Miller-Rabin-Test
Bemerkungen zum Miller-Rabin-Test
• Der Miller-Rabin-Test besitzt einen einseitigen Fehler:
▷ Falls MillerRabinTest(n, s) = false, dann ist n keine
Primzahl
▷ Falls MillerRabinTest(n, s) = true, dann ist n
Primzahl mit einer Wahrscheinlichkeit von 1 − 2−s
• Die Wahl von s beeinflusst die Fehlerwahrscheinlichkeit
• Die Laufzeit von MillerRabinTest(n, s) ist O(log2 (n)3 · s)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
22 / 138
Rabin-Kryptosystem
Rabin-Kryptosystem
•
•
•
•
Erfunden von Michael O. Rabin im Jahr 1979
Verschlüsselung mittels quadratischer Funktion
Beweisbar sicheres Kryptosystem
Geringe Bedeutung für die Praxis
▷ Verschlüsselungsfunktion nicht injektiv ⇝ erhöhter Aufwand
bei der Entschlüsselung
▷ Anfällig gegen eine Chosen-Ciphertext-Attacke
• Grundlage für weitere Kryptosysteme
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
23 / 138
Definition
Definition Rabin-Kryptosystem
Parameter:
• Primzahlen p und q, wobei p ̸= q, p ≡ 3 (mod 4) und
q ≡ 3 (mod 4)
• n=p·q
Kryptosystem:
• P = C = Zn
• K = {(n, p, q)}
• Schlüssel k = (n, p, q)
▷ Öffentlicher Teil: n
▷ Privater Teil: (p, q)
• Verschlüsselung: enc((n, p, q), x) = x2 mod n
√
• Entschlüsselung: dec((n, p, q), y) = y mod n
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
24 / 138
Rabin-Kryptosystem
Quadratische Reste
Quadratischer Reste
Definition. Sei n eine ungerade ganze Zahl. Sei a eine Zahl, die
teilerfremd zu n ist, d.h., gcd(a, n) = 1.
a ist ein quadratischer Rest modulo n, falls eine Zahl x ∈ Zn existiert,
so dass
x2 ≡ a (mod n)
Ist a kein quadratischer Rest, dann nennt man a einen quadratischen
Nicht-Rest.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
25 / 138
Quadratische Reste
Beispiel zu Quadratischen Resten
Betrachte n = 11.
a 1 2 3 4 5 6 7 8 9 10
a2 1 4 9 5 3 3 5 9 4 1
Also ist die Menge der quadratischen Reste modulo 11 gleich
{1, 3, 4, 5, 9}
Die Menge der quadratischen Nicht-Reste ist
{2, 6, 7, 8, 10}
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
26 / 138
Rabin-Kryptosystem
Quadratische Reste
Zwei nützliche Sätze
Satz 1. Seien p und q Primzahlen mit der Eigenschaft, dass
• p ̸= q
• p ≡ 3 (mod 4) und q ≡ 3 (mod 4)
Sei n = p · q. Sei a ein quadratischer Rest modulo n.
Dann besitzt die Gleichung
x2 ≡ a
(mod n)
vier Lösungen.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
27 / 138
Quadratische Reste
Zwei nützliche Sätze (Forts.)
Satz 2. Sei p eine Primzahl mit der Eigenschaft, dass
p ≡ 3 (mod 4).
Sei a ein quadratischer Rest modulo p.
Dann sind
x1,2 = ±a(p+1)/4 mod p
die beiden Lösungen für die Gleichung
x2 ≡ a
Prof. Dr. C. Karg (HS Aalen)
(mod p).
Kryptographische Algorithmen
Public Key Kryptosysteme
28 / 138
Rabin-Kryptosystem
Entschlüsselung
Entschlüsselung
Gegeben: Quadratischer Rest a modulo p · q
Ansatz: Einsatz des Chinesischen Restsatzes
1. Berechne die Lösungen x1,2 der Gleichung x2 ≡ a (mod p)
2. Berechne die Lösungen y1,2 der Gleichung y2 ≡ a (mod q)
3. Berechne mittels des Chinesischen Restsatzes die vier Lösungen
⟨v1 , v2 , v3 , v4 ⟩ der Gleichung v2 ≡ a (mod p · q)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
29 / 138
Entschlüsselung
Wiederholung: Chinesischer Restsatz
Satz. Seien p und q Primzahlen, wobei p ̸= q.
Dann besitzt das Gleichungssystem
x ≡ bp
x ≡ bq
(mod p)
(mod q)
die eindeutige Lösung
(bp · mp · q + bq · mq · p) mod (p · q)
wobei
Prof. Dr. C. Karg (HS Aalen)
mp ≡ q−1
mq ≡ p−1
(mod p)
(mod q)
Kryptographische Algorithmen
Public Key Kryptosysteme
30 / 138
Rabin-Kryptosystem
Entschlüsselung
Beispiel zur Entschlüsselung
Bob wählt die Primzahlen p = 131 und q = 139 als geheimen
Schlüssel und veröffentlicht den Schlüssel n = p · q = 18209.
Alice will die Nachricht x = 4273 verschlüsselt an Bob senden. Hierzu
berechnet sie
y = x2
(mod n) = 42732
(mod 18209) = 13111
und sendet anschließend den Geheimtext 13111 an Bob.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
31 / 138
Entschlüsselung
Beispiel zur Entschlüsselung (Forts.)
Um Alices Nachricht zu entschlüsseln, berechnet Bob mit dem
erweiterten Algorithmus von Euklid die Werte mp und mq , so dass
1 = mq · p + mp · q
Man überprüft ohne Mühe, dass
mp · q ≡ 1
mq · p ≡ 1
(mod p) und
(mod q)
Der Euklid’sche Algorithmus liefert mp = −49 und mq = 52 als
Ergebnis.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
32 / 138
Rabin-Kryptosystem
Entschlüsselung
Beispiel zur Entschlüsselung (Forts.)
Bob berechnet
und
x1 ≡
≡
x2 ≡
≡
13111(131+1)/4
81
131 − 81
50
(mod
(mod
(mod
(mod
131)
131)
131)
131)
y1 ≡
≡
y2 ≡
≡
13111(139+1)/4
36
139 − 36
103
(mod
(mod
(mod
(mod
139)
139)
139)
139)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
33 / 138
Entschlüsselung
Beispiel zur Entschlüsselung (Forts.)
Anschließend benutzt Bob den Chinesischen Restsatz zur Berechnung
der Wurzeln:
v1 ≡
≡
≡
v2 ≡
≡
≡
(x1 · q · mp + y1 · p · mq )
(81 · 139 · −49 + 36 · 131 · 52)
3094
(x2 · q · mp + y2 · p · mq )
(50 · 139 · −49 + 36 · 131 · 52)
13936
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
(mod
(mod
(mod
(mod
(mod
(mod
n)
18209)
18209)
n)
18209)
18209)
Public Key Kryptosysteme
34 / 138
Rabin-Kryptosystem
Entschlüsselung
Beispiel zur Entschlüsselung (Forts.)
v3 ≡
≡
≡
v4 ≡
≡
≡
(x1 · q · mp + y2 · p · mq )
(81 · 139 · −49 + 103 · 131 · 52)
4273
(x2 · q · mp + y1 · p · mq )
(50 · 139 · −49 + 103 · 131 · 52)
15115
(mod
(mod
(mod
(mod
(mod
(mod
n)
18209)
18209)
n)
18209)
18209)
Bob erkennt (auf eine dem Autor dieses Dokuments nicht bekannte
Art und Weise), dass v3 = 4273 der von Alice versendete Klartext ist.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
35 / 138
Public Key Kryptosysteme
36 / 138
Entschlüsselung
Algorithmus zur Entschlüsselung
RabinDecrypt(a, p, q)
Input: Geheimtext a, geheimer Schlüssel (p, q)
Output: Wurzeln ⟨v1 , v2 , v3 , v4 ⟩ von a modulo p · q
1 n := p · q
2 ⟨d, mq , mp ⟩ := ExtendedEuclid(p, q)
3 x1 := a(p+1)/4 mod p
4 x2 := p − x1
5 y1 := a(q+1)/4 mod q
6 y2 := q − y1
7 v1 := (x1 · q · mp + y1 · p · mq ) mod n
8 v2 := (x2 · q · mp + y1 · p · mq ) mod n
9 v3 := (x1 · q · mp + y2 · p · mq ) mod n
10 v4 := (x2 · q · mp + y2 · p · mq ) mod n
11 return ⟨v1 , v2 , v3 , v4 ⟩
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Sicherheitsaspekte
Sicherheitsaspekte
• Die Sicherheit des Rabin-Kryptosystems ist an das
Faktorisierungsproblem gekoppelt
• Findet man eine effiziente Methode, um das Rabin-Kryptosystem
zu brechen, dann kann man effizient zusammengesetzte Zahlen
faktorisieren, und umgekehrt
• Das Rabin-System ist anfällig gegen eine Attacke mit frei
wählbarem Geheimtext
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
37 / 138
Angriff mit frei wählbarem Geheimtext
Angriff mit frei wählbarem Geheimtext
Annahme: x ist eine der vier Wurzeln von y = r2 mod n
Dann kann man unter Einsatz des CRT vier Fälle unterschieden:
(1)
(2)
(3)
(4)
x ≡ r (mod p) und x ≡ r (mod q)
x ≡ −r (mod p) und x ≡ −r (mod q)
x ≡ r (mod p) und x ≡ −r (mod q)
x ≡ −r (mod p) und x ≡ r (mod q)
Erkenntnis:
• Die Fälle (1) und (2) sind nicht verwertbar
• Anhand Fall (3) oder (4) kann man n faktorisieren
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
38 / 138
Rabin-Kryptosystem
Angriff mit frei wählbarem Geheimtext
Angriff mit frei wählbarem Geheimtext (Forts.)
Aus Fall (3) folgt, dass:
x − r ≡ 0 (mod p) und x − r ≡ −2r (mod q)
Anwendung des CRT:
x − r ≡ 0 · q · mp − 2 · r · p · mq
≡ −2 · r · p · mq
(mod n)
(mod n)
Also ist:
x − r = ℓ · n − 2 · r · p · mq
= p · (ℓ · q − 2 · r · mq )
für ein ℓ ∈ N. Hieraus folgt: gcd(x − r, n) = p
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Rabin-Kryptosystem
Public Key Kryptosysteme
39 / 138
Angriff mit frei wählbarem Geheimtext
Angriff mit frei wählbarem Geheimtext (Forts.)
Fall (4) kann auf analoge Weise analysiert werden
Bemerkungen:
• Die Wahrscheinlichkeit, dass für ein zufälliges r Fall (3) oder (4)
eintritt, ist 21
• Durch wiederholtes Ausführen von RabinAttack(n) kann die
Erfolgswahrscheinlichkeit erhöht werden
• Liefert RabinAttack(n) alle vier Wurzeln als Ergebnis, dann
führt der Angriff direkt zum Erfolg
• Der Angriff kann verhindert werden, indem man den Klartext mit
einer eindeutigen, wiedererkennbaren Markierung versieht
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
40 / 138
Rabin-Kryptosystem
Angriff mit frei wählbarem Geheimtext
Angriff mit frei wählbarem Geheimtext (Forts.)
RabinAttack(n)
Input: Öffentlicher Schlüssel n
1 r := Random(1, n − 1)
2
2 y := r mod n
3 // Die Entschlüsselung liefert eine der vier Wurzeln
4 x := RabinDecrypt(y)
5 if x ≡ ±r (mod n) then
6
return”Failure”
7 else
8
p := gcd(x − r, n)
9
q := n/p
10
return (p, q)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
41 / 138
RSA-Kryptosystem
RSA-Kryptosystem
• Erstes asymmetrisches Kryptosystem
• Erfindung im Jahr 1977
• Benannt nach seinen Erfindern Ronald Rivest, Adi Shamir &
Leonard Adleman
• Sicherheit abhängig von der Komplexität des
Faktorisierungsproblems
• Weltweit meist genutztes Public Key Kryptosystem
• Für Details zur Implementierung siehe Standard PKCS #1
Version 2.2 (⇝ Webpage)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
42 / 138
RSA-Kryptosystem
Definition
Definition RSA-Kryptosystem
Parameter:
• Primzahlen p und q, wobei p ̸= q
• n=p·q
Kryptosystem:
• P = C = Zn
}
{
n = pq, wobei p, q prim,
• K = (n, p, q, e, d) e · d ≡ 1 (mod ϕ(n))
• Schlüssel k = (n, p, q, e, d) ∈ K
▷ Öffentlicher Teil: (n, e)
▷ Privater Teil: (p, q, d)
• Verschlüsselung: enc(k, x) = xe mod n
• Entschlüsselung: dec(k, y) = yd mod n
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
43 / 138
Beispiel
Beispiel zu RSA
Angenommen, Bob wählt p = 101 und q = 113. Dann ist n = 11413
und ϕ(n) = 100 × 112 = 11200.
Die Primfaktorzerlegung von 11200 ist 26 52 7. Also muss Bob für e
eine Zahl wählen, die nicht durch 2, 5 und 7 teilbar ist. Er entscheidet
sich für e = 3533. Er überprüft mittels des Extended Euklid
Algorithmus, dass gcd(e, ϕ(n)) = 1 und ermittelt
e−1 = 6597 mod 11200.
Der geheimzuhaltende Exponent zur Entschlüsselung ist also
d = 6597.
Bob veröffentlicht den öffentlichen Schlüssel (n = 11413, e = 3533) in
einem für jedermann lesbaren Public Key Verzeichnis.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
44 / 138
RSA-Kryptosystem
Beispiel
Beispiel zu RSA (Forts.)
Alice will den Klartext x = 9726 an Bob senden. Hierzu besorgt sie
sich Bob’s öffentlichen Schlüssel (n = 11413, e = 3533) aus obigem
Public Key Verzeichnis.
Anschließend berechnet sie
97263533 mod 11413 = 5761
und sendet den Geheimtext 5761 an Bob.
Bob benutzt seinen geheimen Schlüssel d = 6597, um die Nachricht
zu entschlüsseln:
57616597 mod 11413 = 9726.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
45 / 138
Offene Fragen
Offene Fragen
• Ist RSA tatsächlich ein Kryptosystem? Mit anderen Worten, gilt
die Gleichung
dec(k, enc(k, x)) = (xe mod n)d mod n = x
für alle x ∈ P und k = (n, p, q, e, d) ∈ K?
• Warum ist RSA sicher?
• Kann man RSA effizient implementieren?
• Wie wird der Schlüssel k = (n, p, q, e, d) erzeugt? Was ist hierbei
zu beachten?
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
46 / 138
RSA-Kryptosystem
Korrektheit
Warum funktioniert RSA?
Aufgrund der Definition von RSA gilt für k = (n, p, q, e, d):
dec(k, enc(k, x)) = xed mod n.
Die Zahlen e und d sind multiplikative Inverse modulo
ϕ(n) = (p − 1)(q − 1). Somit ist
ed = 1 + i(p − 1)(q − 1)
für eine ganze Zahl i.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
47 / 138
Korrektheit
Warum funktioniert RSA? (Forts.)
Für x ̸≡ 0 (mod p) folgt wegen dem Satz von Fermat:
xed ≡ x(xp−1 )i(q−1)
≡ x(1)i(q−1)
≡ x
(mod p)
(mod p)
(mod p)
Ferner ist xed ≡ x mod p, falls x ≡ 0 (mod p).
Also gilt für alle x ∈ Zn : xed ≡ x mod p.
Analog zeigt man, dass xed ≡ x mod q für alle x ∈ Zn .
Da n = pq, folgt wegen des Chinesischen Restsatzes, dass
xed ≡ x (mod n)
für alle x ∈ Zn .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
48 / 138
RSA-Kryptosystem
Sicherheit
Sicherheit von RSA
Die Sicherheit von RSA beruht auf der (vermutlich) hohen
Komplexität zweier arithmetischer Probleme.
• Faktorisierungsproblem: Finde für eine gegebene ganze Zahl n
zwei ganzzahlige Faktoren von n, d.h., zwei Zahlen p, q ∈ Z so
dass p · q = n.
• Invertieren der modularen Potenzfunktion: Finde für die
gegebenen ganzen Zahlen e, n, y wobei n > 0 ein x ∈ Zn so dass
xe mod n = y.
Für keines der beiden Probleme ist ein Polynomialzeit Algorithmus
bekannt. Allerdings konnte bisher auch nicht bewiesen werden, dass
kein Polynomialzeit Algorithmus für obige Probleme existiert.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
49 / 138
Erzeugen eines RSA Schlüssels
Erzeugen eines RSA Schlüssels
Schritte zur Generierung eines RSA-Schlüssels:
1. Generierung zweier großer Primzahlen p und q (mindestens 2048
Bit pro Primzahl)
2. Berechnung von n = pq und ϕ(n) = (p − 1)(q − 1)
3. Generierung einer Zufallszahl e ∈ {1, 2, . . . , ϕ(n) − 1}, wobei
gcd(e, ϕ(n)) = 1
4. Berechnung d = e−1 mod ϕ(n) mit dem Erweiterten Algorithmus
von Euklid
5. Veröffentlichung des öffentlichen Schlüssels (n, e) auf geeignete
Art und Weise
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
50 / 138
RSA-Kryptosystem
Berechnung von multiplikativen Inversen
Erweiterter Algorithmus von Euklid
ExtendedEuclid(a, b)
Input: a, b ganze Zahlen, wobei a > b > 0
Output: (d, x, y) wobei d = ax + by = gcd(a, b)
1
if (b = 0) then
2
return (a, 1, 0);
3
else
4
(d ′ , x ′ , y ′ ) := ExtendedEuclid(b, a mod b)
5
d := d ′ ;
6
x = y ′;
7
y = x ′ − ⌊ ba ⌋y ′
8
return (d, x, y)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
51 / 138
Berechnung von multiplikativen Inversen
Berechnung von multiplikativen Inversen
Bekannt: a ist invertierbar modulo n, falls gcd(a, n) = 1.
Wegen ZTK (Satz 3.4) gibt es x, y ∈ Z so dass
gcd(a, n) = 1 = ax + ny.
Somit gilt:
1 ≡ ax + ny
≡ ax
(mod n)
(mod n)
Also: x ist das multiplikative Inverse von a modulo n.
Fazit: Multiplikative Inverse kann man mittels dem Extended Euklid
Algorithmus berechnen.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
52 / 138
RSA-Kryptosystem
Berechnung von multiplikativen Inversen
Algorithmus zur Inversenberechnung
MultInverse(a, n)
Input: a, n ganze Zahlen, wobei n > 0
Output: a−1 mit aa−1 ≡ 1 (mod n) falls existent
1
(d, x, y) := ExtendedEuklid(a, n)
2
if (d ̸= 1) then
3
return “Inverse doesn’t exist.”
4
else
5
return x
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
RSA-Kryptosystem
Public Key Kryptosysteme
53 / 138
Garner Verfahren
Effiziente Entschlüsselung mit Garners Verfahren
Ansatz: Einsatz von p und q zur effizienteren Entschlüsselung von y
Garner’s Formel: Berechne
a = yd mod p
b = yd mod q
x = (((a − b)(q−1 mod p)) mod p) · q + b
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
54 / 138
Angriffe auf RSA
Angriffe auf RSA
• Die Sicherheit von RSA hängt von verschiedenen Faktoren ab,
insbesondere von
▷ der Qualität des Schlüssels, und
▷ der Geheimhaltung des privaten Schlüssels
• Gelingt es, ein Bit eines beliebig wählbaren Geheimtextes zu
entschlüsseln, dann kann man den kompletten Geheimtext
entschlüsseln
• Trotz der bekannten Schwächen ist RSA bei korrekter Benutzung
als sicher einzustufen
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
55 / 138
Angriffe auf RSA
Angriffsziele
• Komplette Kompromittierung
⇝ Oskar ist in der Lage, den geheimen Teil des RSA-Schlüssels
von Bob zu ermitteln und kann somit alle Geheimtexte
entschlüsseln
• Komplette oder teilweise Entschlüsselung eines Geheimtexts
⇝ Oskar kann Teile von vertraulichen Informationen ermitteln,
jedoch nicht den geheimen Teilschlüssel von Bob berechnen
• Unterscheidbarkeit von Geheimtext
⇝ mit einer Wahrscheinlichkeit von > 12 kann Oskar einen
verschlüsselten Klartext von einem Zufallsstring unterscheiden
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
56 / 138
Angriffe auf RSA
Faktorisierung von n bei bekannten ϕ(n)
Faktorisierung von n bei bekanntem ϕ(n)
Annahme: Oskar kennt:
1. n = p · q
2. ϕ(n) = (p − 1) · (q − 1)
Ziel: Berechnung eines Faktors von n
Ansatz: Gleichungssystem mit den Unbekannten p und q lösen
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
57 / 138
Faktorisierung von n bei bekannten ϕ(n)
Faktorisierung von n bei bekanntem ϕ(n) (Forts.)
Gleichung 1: q =
n
p
⇝ Einsetzen in Gleichung 2
(
ϕ(n) = (p − 1) ·
n
−1
p
)
Umformen:
n
+1
p
p · ϕ(n) = pn − p2 − n + p
0 = p2 + (ϕ(n) − n − 1)p + n
ϕ(n) = n − p −
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
58 / 138
Angriffe auf RSA
Faktorisierung von n bei bekannten ϕ(n)
Faktorisierung von n bei bekanntem ϕ(n) (Forts.)
Mitternachtsformel:
p1,2 =
−b ±
√
b2 − 4ac
2a
mit:
a = 1
b = ϕ(n) − n − 1
c = n
Ist diese Gleichung lösbar, dann sind p1 und p2 die beiden Faktoren
von n, d.h., n = p1 · p2
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
59 / 138
Die Wiener Attacke
Die Wiener Attacke
• Angriff von Michael J. Wiener
• Sind die Parameter des RSA-Schlüssels ungünstig gewählt, dann
kann man n faktorisieren
• Es kommt ein Satz aus der Zahlentheorie zum Einsatz
• Herleitung mittels endlichen Kettenbrüchen
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
60 / 138
Angriffe auf RSA
Die Wiener Attacke
Endliche Kettenbrüche
Ein (endlicher) Kettenbruch ist ein Term
q1 +
1
q2 +
1
q3 +...+ q1
.
m
wobei q1 , . . . , qm nicht-negative, ganze Zahlen sind.
Eine alternative Schreibweise ist:
[q1 , . . . , qm ]
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
61 / 138
Die Wiener Attacke
Endliche Kettenbrüche (Forts.)
Satz 4 Seien a, b ∈ N, wobei b > 0. Dann existiert ein endlicher
Kettenbruch [q1 , . . . , qm ] mit
1
a
= q1 +
1
b
q2 + q +...+
3
.
1
qm
Bemerkung. Der Kettenbruch kann mit dem Algorithmus von Euklid
berechnet werden.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
62 / 138
Angriffe auf RSA
Die Wiener Attacke
Algorithmus von Euklid
Euklid(a, b)
Input: Ganze Zahlen a, b ∈ N 0 , wobei a > 0, b ≥ 0.
Output: (d, ⟨q1 , . . . , qm ⟩), wobei d = gcd(a, b)
1 r0 := a
2 r1 := b
3 m := 1
4 while rm ̸= 0 do
⌊
⌋
rm−1
5
qm := rm
6
7
8
9
rm+1 := rm−1 − qm · rm
m := m + 1
m := m − 1
return (rm , ⟨q1 , . . . , qm ⟩)
Prof. Dr. C. Karg (HS Aalen)
// d.h. rm+1 = gcd(rm−1 , rm )
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
63 / 138
Die Wiener Attacke
Beispiel: Berechnung eines Kettenbruchs
Gegeben: a = 42, b = 73
Der Ablauf der Berechnung des Algorithmus von Euklid ist:
42
73
42
31
11
9
2
=
=
=
=
=
=
=
0 · 73 + 42
1 · 42 + 31
1 · 31 + 11
2 · 11 + 9
1·9+2
4·2+1
2·1+0
Jede Gleichung repräsentiert dabei den Term rm−1 = qm · rm + rm+1 .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
64 / 138
Angriffe auf RSA
Die Wiener Attacke
Beispiel: Berechnung eines Kettenbruchs (Forts.)
Der Algorithmus von Euklid liefert (1, [0, 1, 1, 2, 1, 4, 2]) als Ergebnis.
Also ist:
42
=0+
73
1+
Prof. Dr. C. Karg (HS Aalen)
1
1
1+
1
2+
1+
1
1
4+ 1
2
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
65 / 138
Die Wiener Attacke
Konvergenten eines Kettenbruchs
Sei [q1 , . . . , qm ] ein Kettenbruch. Für 1 ≤ j ≤ m ist
Cj = [q1 , . . . , qj ]
die j-te Konvergente von [q1 , . . . , qm ].
Cj nennt man auch den j-ten Näherungsbruch.
Cj ist darstellbar als
cj
,
dj
wobei




j=0
j=0
1,
0,
cj = q1 ,
j = 1 und dj = 1,
j=1




qj · cj−1 + cj−2 , j ≥ 2
qj · dj−1 + dj−2 , j ≥ 2
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
66 / 138
Angriffe auf RSA
Die Wiener Attacke
Beispiel: Konvergenten
Gegeben ist der Kettenbruch [0, 1, 1, 2, 1, 4, 2].
Die entsprechenden Konvergenten sind:
[0]
[0, 1]
[0, 1, 1]
[0, 1, 1, 2]
[0, 1, 1, 2, 1]
[0, 1, 1, 2, 1, 4]
[0, 1, 1, 2, 1, 4, 2]
Prof. Dr. C. Karg (HS Aalen)
=
=
=
=
=
=
=
0/1
1/1
1/2
3/5
4/7
19/33
42/73
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
67 / 138
Die Wiener Attacke
Ein wichtiger Satz …
Satz 5 Seien a, b, c, d beliebige natürliche Zahlen.
Angenommen, gcd(a, b) = 1, gcd(c, d) = 1 und
a c
1
− < 2.
b d
2d
Dann ist
c
d
eine der Konvergenten des Kettenbruchs von ba .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
68 / 138
Angriffe auf RSA
Die Wiener Attacke
…und seine Folgen
Anwendung: Berechnung des geheimen Exponenten d
Voraussetzungen:
• q < p < 2q
• 3d < n1/4
Bemerkung: Der Angriff ist erfolgreich, wenn
• p und q nicht zu weit auseinander liegen und
• die Binärdarstellung von d weniger als ℓ/4 − 1 Bits groß ist.
Hierbei steht ℓ für die Länge der Binärdarstellung von n
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
69 / 138
Die Wiener Attacke
Anwendung des Satzes
Da e · d ≡ 1 (mod ϕ(n)), existiert ein t, so dass
e · d − t · ϕ(n) = 1.
√
Da n = p · q > q2 , ist q < n.
Hieraus folgt:
√
0 < n − ϕ(n) = p + q − 1 < 2q + q − 1 < 3q < 3 n
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
70 / 138
Angriffe auf RSA
Die Wiener Attacke
Anwendung des Satzes (Forts.)
Einsetzen, wobei a = e, b = n, c = t, d = d:
e
ed − tn t − = n d
dn 1 + t(ϕ(n) − n) = dn
(
)
1
+
t(ϕ(n)
−
n)
= −
dn
t(n − ϕ(n)) − 1 = dn
t(n − ϕ(n)) < dn
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
71 / 138
Public Key Kryptosysteme
72 / 138
Die Wiener Attacke
Anwendung des Satzes (Forts.)
√
t(n − ϕ(n)) t
·
3
n
<
dn
dn
3t
= √
d n
Da t < d, ist 3t < 3d < n1/4 . Hieraus folgt:
3t
n1/4
√ <
dn1/2
d n
1
=
dn1/4
1
<
3d2
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Die Wiener Attacke
Anwendung des Satzes (Forts.)
Zusammenfassung:
e
1
t − < 2
n d
3d
Wegen des obigen Satzes ist
t
d
eine der Konvergenten von
Folgerung: Anhand der Konverten von
berechnen
Prof. Dr. C. Karg (HS Aalen)
e
n
kann man ϕ(n) =
Kryptographische Algorithmen
Angriffe auf RSA
e
n
e·d−1
t
Public Key Kryptosysteme
73 / 138
Die Wiener Attacke
Wiener Attacke
Eingabe: Öffentlicher RSA-Schlüssel (n, e)
Vorgehen:
1. Berechne die Konvergenten
ck
c0 c1
, ,...,
d0 d1
dk
des Kettenbruchs ne
2. Überprüfe für die Konvergente
ci
,
di
i = 2, . . . , k,
▷ ob ϕn = e·dcii−1 eine ganze Zahl ist, und
▷ ob n anhand von ϕn faktorisierbar ist
3. Schlägt die obige Überprüfung für alle Konvergenten fehl, dann
gib “Angriff fehlgeschlagen” aus.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
74 / 138
Angriffe auf RSA
Die Wiener Attacke
Beispiel Wiener Attacke
Gegeben: n = 2989234739, e = 2501103889.
Der Kettenbruch von
e
n
ist:
[0, 1, 5, 8, 13, 3, 2505, 1, 7, 3, 1, 5, 3]
Für c4 = 41 und d4 = 49 ist
ϕn =
e · d4 − 1
2501103889 · 49 − 1
=
= 2989124160
c4
41
Die Faktorisierung von n anhand von ϕn liefert p = 47059 und
q = 63521 als Faktoren von n.
Der geheime RSA-Schlüssel ist d = 49.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
75 / 138
Highest-Order-Bit-Attacke
Highest-Order-Bit-Attacke
Annahme: Für y = enc(K, x) ist die Funktion
{
0, 0 ≤ x < n2
half(y) =
1, n2 < x ≤ n − 1
effizient berechenbar.
Frage: Lässt sich dies für einen Angriff auf RSA ausnutzen?
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
76 / 138
Angriffe auf RSA
Highest-Order-Bit-Attacke
Eine nützliche Eigenschaft von RSA
Für alle x1 , x2 ∈ Zn gilt:
enc(K, x1 · x2 ) ≡ (x1 · x2 )d
≡ xd1 · xd2
≡ enc(K, x1 ) · enc(K, x2 )
(mod n)
(mod n)
(mod n)
Insbesondere gilt für alle i = 1, 2, 3, . . .:
enc(K, 2i · x2 ) ≡ enc(K, 2i ) · enc(K, x2 ) (mod n)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
77 / 138
Highest-Order-Bit-Attacke
Anwendung der obigen Eigenschaft
[ n)
half(enc(K, x)) = 0 ⇔ x ∈ 0,
2
[ n ) [ n 3n )
half(enc(K, 2 · x)) = 0 ⇔ x ∈ 0,
∪ ,
4
2 4
[
)
[ n)
n 3n
∪ ,
half(enc(K, 4 · x)) = 0 ⇔ x ∈ 0,
∪
8
4 8
[
) [
)
n 5n
3n 7n
,
,
∪
2 8
4 8
..
.
Mittels Binärer Suche kann man den Schlüssel systematisch
berechnen.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
78 / 138
Angriffe auf RSA
Highest-Order-Bit-Attacke
Algorithmus HalfAttack(n, e, y)
HalfAttack(n, e, y)
Input: Öffentlicher RSA-Schlüssel (n, e), Geheimtext y
Output: Zu y gehörender Klartext x
1 ℓ := ⌊log2 n⌋
2 for i := 0 to ℓ do
3
hi := Half(n, e, y)
4
y := y · 2e mod n
5 lo := 0; hi := n
6 for i := 0 to ℓ
7
mid := (hi + lo)/2
8
if hi = 1 then
9
lo := mid
10
else
11
hi := mid
12 return ⌊hi⌋
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
79 / 138
Highest-Order-Bit-Attacke
Bemerkungen zu HalfAttack(n, e, y)
• Der Algorithmus nutzt die multiplikative Eigenschaft sowie die
Half-Funktion, um das höchstwertigste Bit von
x, 2 · x, 22 · x, . . . , 2ℓ−1 · x
zu berechnen.
• Anschließend wird auf Basis der höchstwertigsten Bits eine Binäre
Suche durchgeführt, um den Klartext x zu bestimmen.
• Die Nachkommastellen bei der Division sind zu beachten.
• Die Laufzeit des Algorithmus ist O(ℓ3 + ℓ · th (ℓ)), wobei th (ℓ) für
die Laufzeit von Half(n, e, y) für ℓ-Bit Zahlen steht
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
80 / 138
Angriffe auf RSA
Highest-Order-Bit-Attacke
Beispiel
Gegeben: n = 4757, e = 857, y = 2238.
Die Wortlänge von n ist ℓ = ⌊log2 ⌋ = 12.
Die Berechnung der höchstwertigsten Bits liefert:
i 0 1 2 3 4 5 6 7 8 9 10 11 12
hi 0 0 1 0 0 1 1 1 1 1 1 0 1
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
81 / 138
Highest-Order-Bit-Attacke
Beispiel (Forts.)
i
0
1
2
3
4
5
6
7
8
9
10
11
12
−
hi
0
0
1
0
0
1
1
1
1
1
1
0
1
−
lo
0.000000000000
0.000000000000
0.000000000000
594.625000000000
594.625000000000
594.625000000000
668.953125000000
706.117187500000
724.699218750000
733.990234375000
738.635742187500
740.958496093750
740.958496093750
741.539184570312
mid
2378.500000000000
1189.250000000000
594.625000000000
891.937500000000
743.281250000000
668.953125000000
706.117187500000
724.699218750000
733.990234375000
738.635742187500
740.958496093750
742.119873046875
741.539184570312
741.539184570312
hi
4757.000000000000
2378.500000000000
1189.250000000000
1189.250000000000
891.937500000000
743.281250000000
743.281250000000
743.281250000000
743.281250000000
743.281250000000
743.281250000000
743.281250000000
742.119873046875
742.119873046875
Ergebnis: Klartext x = 742
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
82 / 138
Angriffe auf RSA
Highest-Order-Bit-Attacke
Angriff durch Berechnung des niederwertigsten Bits
Falls für y = enc(K, x) die Funktion
{
0,
parity(y) =
1,
x gerade
x ungerade
effizient berechenbar ist, dann kann man auch den kompletten
Klartext berechnen.
Begründung: Es gelten folgende Beziehungen:
half(y) = parity((y · enc(K, 2)) mod n)
parity(y) = half((y · enc(K, 2−1 )) mod n)
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Angriffe auf RSA
Public Key Kryptosysteme
83 / 138
Zusammenfassung
Zusammenfassung
• RSA nutzt modulare Exponentiation zur Ver- und
Entschlüsselung.
• Die Sicherheit von RSA beruht auf der (hoffentlich) hohen
Berechnungskomplexität des Faktorisierungsproblems und des
diskreten Logarithmus.
• Da der öffentliche Teil des Schlüssels öffentlich zugänglich ist,
kann jedermann eine verschlüsselte Nachricht an Bob senden.
• RSA kann auch zur Signatur von Nachrichten eingesetzt werden.
• Bei hinreichend langer Schlüssellänge und guter Wahl der
Parameter gilt RSA als sicheres Kryptosystem.
• Für eine praxistaugliche Implementierung sind diverse Aspekte zu
beachten. Weitere Details findet man im RSA-Standard.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
84 / 138
Diffie-Hellman-Schlüsselaustausch
Diffie-Hellman-Schlüsselaustausch
• Erfunden von Whitfield Diffie und Martin E. Hellman aus dem
Jahr 1976
• Protokoll zur vertraulichen Konstruktion eines Schlüssels über
einen unsicheren Kanal
• Sicherheit basiert auf dem Diskreter-Logarithmus-Problem
• Die Arbeit von Diffie und Hellman gilt als die Geburtsstunde der
Public Key Kryptografie
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Diffie-Hellman-Schlüsselaustausch
Public Key Kryptosysteme
85 / 138
Protokoll
Protokoll zum Schlüsselaustausch
Sei p eine Primzahl und α ein Generator von Z∗p
Alice
Bob
Wählt zufällig ein a ∈ Z∗p
Wählt zufällig ein b ∈ Z∗p
αa mod p
αb mod p
αab mod p
Geheimer Schlüssel
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
86 / 138
Diffie-Hellman-Schlüsselaustausch
Protokoll
Beispiel
Angenommen, p = 27803 und α = 5 sind die öffentlichen Parameter
für einen Diffie-Hellman-Schlüsselaustausch.
Alice würfelt a = 21131 und berechnet 521131 mod 27803 = 21420.
Anschließend sendet sie Bob diesen Wert.
Bob würfelt b = 17555 und berechnet 517555 mod 27803 = 17100.
Diesen Wert sendet er an Alice.
Alice und Bob berechnen schließlich den geheimen Schlüssel
2142017555 mod 27803 = 1710021131 mod 27803 = 11134.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Diffie-Hellman-Schlüsselaustausch
Public Key Kryptosysteme
87 / 138
Protokoll
Man-In-The-Middle Attacke
∗
αa mod p
Alice
αa mod p
Oskar
∗
αb mod p
Bob
αb mod p
• Oskar sitzt “zwischen” Alice und Bob und fungiert als
Vermittlungsstelle.
• Oskar ersetzt die Teilschlüssel von Alice und Bob durch seine
eigenen.
• Alice und Bob können zwar ihre Daten mit dem ausgehandelten
Schlüssel verschlüsseln, aber keiner kann die Daten des anderen
entschlüsseln.
• Oskar kann alle Daten ver- bzw. entschlüsseln und entsprechend
weiterleiten.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
88 / 138
Diffie-Hellman-Schlüsselaustausch
Station-To-Station-Protokoll
Verbessertes Verfahren
Sei p eine Primzahl und α ein Generator von Z∗p
Alice
Bob
a
α
αb , signB (mB , αa , αb )
signA (mA , αa , αb )
Alle Berechnungen verstehen sich modulo p
mA und mB stehen für den Signaturschlüssel von Alice bzw. Bob
• Dieses Verfahren ist eine Vereinfachung des Station-To-Station
Protokolls.
• Eine zusätzliche Absicherung wird durch den Einsatz von
Zertifikaten erreicht.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
89 / 138
El Gamal Kryptosystem
ElGamal Kryptosystem
• Erfindung von Taher ElGamal aus dem Jahr 1984
• Probabilistisches Kryptosystem
• Sicherheit hängt ab vom Diskreter-Logarithmus-Problem für
endliche Körper
• Grundlage für zahlreiche weitere Kryptosysteme
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
90 / 138
El Gamal Kryptosystem
Definition
Definition ElGamal-Kryptosystem
Parameter:
• Primzahl p
• Erzeugendes Element α von Z∗p
Kryptosystem:
• P = Zp , C = Zp × Zp
• K = {(p, α, a, β) | 2 ≤ a ≤ p − 2, β ≡ αa (mod p)}.
• Schlüssel k = (p, α, a, β) ∈ K:
▷ Öffentlicher Teil: (p, α, β)
▷ Geheimer Teil: a
• Verschlüsselung: enc(k, x) = (y1 , y2 ), wobei
▷ y1 = αz mod p
▷ y2 = xβz mod p
für eine zufällig gewählte, geheime Zahl z ∈ Zp−1
• Entschlüsselung: dec(k, (y1 , y2 )) = y2 (ya1 )−1 mod p
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
El Gamal Kryptosystem
Public Key Kryptosysteme
91 / 138
Definition
Die Idee hinter ElGamal
• Alice verschlüsselt den Klartext x ∈ Zp , indem sie ihn “maskiert”,
d.h., mit βz multipliziert. Die modulare Exponentialfunktion wird
also zur Generierung eines Zufallsstroms eingesetzt.
• Da Bob die Zufallszahl z nicht kennt, muss Alice diese an ihn
senden. Dies kann nicht direkt geschehen, da Oskar sonst aus
dem öffentlich bekannten β den Wert βz berechnen und somit
den Geheimtext dechiffrieren könnte.
• Da Bob a und somit auch (αz )a = βz kennt, sendet Alice den
Wert αz . Somit ist Bob in der Lage, die Maske zu entfernen
indem er y2 mit dem Inversen von βk multipliziert.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
92 / 138
El Gamal Kryptosystem
Beispiel
Beispiel
Bob wählt p = 2579, α = 2, a = 765 und β = 2765 mod 2579 = 949.
Angenommen, Alice will an Bob die Nachricht x = 1299 senden. Sie
wählt (zufällig) die Zahl z = 853 aus. Dann berechnet sie
• y1 = 2853 mod 2579 = 435, und
• y2 = 1299 × 949853 mod 2579 = 2396.
Bei Empfang des Geheimtextes y = (435, 2396) berechnet Bob
x = 2396 × (435765 )−1 mod 2579 = 1299.
Das Ergebnis ist offensichtlich identisch mit dem von Alice versandten
Klartext.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
El Gamal Kryptosystem
Public Key Kryptosysteme
93 / 138
Korrektheit
Korrektheit von ElGamal
Zum Nachweis der Korrektheit des ElGamal Kryptosystems ist zu
zeigen, dass
dec(k, enc(k, x, z)) = x
für alle k = (p, α, a, β) ∈ K, alle z ∈ Zp−1 und alle x ∈ Zp gilt.
Betrachte y1 = αz mod p und y2 = xβz mod p.
Da
ya1 ≡ (αz )a ≡ (αa )z ≡ βz
(mod p)
ist (ya1 )−1 = (βz )−1 .
Hieraus folgt:
y2 (ya1 )−1 ≡ xβz (βz )−1 ≡ x (mod p).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
94 / 138
El Gamal Kryptosystem
Sicherheit
Warum ist ElGamal sicher?
Die Sicherheit des ElGamal Kryptosystems basiert auf folgenden
Annahmen:
• Hohe Berechnungskomplexität des DLP: Verfügt Oskar über
einen effizienten Algorithmus zur Berechnung von logpα β, dann
kann er ohne Mühe aus β = αa den geheimen Schlüssel a
berechnen.
• Zufällige Wahl von z: Benutzt Alice immer dasselbe z zur
Verschlüsselung, dann besteht die Möglichkeit eines Angriffs mit
bekanntem Klartext-Geheimtext-Paar.
Das ElGamal Kryptosystem wird auch als probabilistisches
Kryptosystem bezeichnet, da der Klartext x in viele zufällige
Geheimtexte (y1 , y2 ) abgebildet wird.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
El Gamal Kryptosystem
Public Key Kryptosysteme
95 / 138
Schlüsselerzeugung
Wie erzeugt man einen Generator?
Ähnlich wie bei RSA werden auch beim ElGamal Kryptosystem die
Parameter zufällig erzeugt.
Bei der Erstellung des Generators sind folgende Fakten hilfreich:
• Ist Z∗n eine zyklische Gruppe, dann ist die Anzahl ihrer
Generatoren gleich ϕ(ϕ(n)). Für eine Primzahl p ist die Anzahl
der Generatoren von Z∗p gleich ϕ(p − 1).
• Man kann beweisen, dass ϕ(n) ≥ n/6 ln(ln(n)) für alle n. Wenn
man also zufällig ein Element α aus Z∗n zieht, dann ist die Chance
gut, dass α ein Generator ist.
• Die Zahl α ∈ Z∗n ist ein Generator von Z∗n genau dann, wenn
αϕ(n)/p ̸≡ 1 (mod n) für alle Primteiler p von ϕ(n).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
96 / 138
El Gamal Kryptosystem
Schlüsselerzeugung
Algorithmus zur Generatorerzeugung
RandomGenerator(p, p1 , e1 , p2 , e2 , . . . , pk , ek )
Input: Primzahl p, Primfaktorzerlegung pe11 pe22 . . . pekk von ϕ(p)
Output: Generator α von Z∗p
1
found := false;
2
while (found = false) do
3
α := Random(2, p − 1);
4
found := true;
5
for i := 1 to k do
6
b := αp−1/pi mod p;
7
if (b = 1) then found := false;
8
return α;
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
El Gamal Kryptosystem
Public Key Kryptosysteme
97 / 138
Schlüsselerzeugung
Erzeugen eines ElGamal Schlüssels
Zur Erstellung eines ElGamal Schlüssels geht man folgendermaßen
vor:
1. Generiere unter Verwendung des Miller-Rabin Primzahltests
zufällig eine Primzahl q so dass auch p = 2q + 1 eine Primzahl ist.
2. Generiere mittels randomGenerator(p, 2, 1, q, 1) einen
Generator α von Z∗p .
3. Wähle zufällig ein a ∈ {2, . . . , p − 2} und berechne β = αa mod p.
4. Mache die Werte p, α und β öffentlich zugänglich.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
98 / 138
El Gamal Kryptosystem
Verallgemeinerung
Verallgemeinerung
Unter dem Diskreter Logarithmus Problem über (G, ⊕) versteht man
folgendes Berechnungsproblem:
Gegeben: (G, α, β), wobei G eine endliche Gruppe mit
Gruppenoperation ⊕, α ∈ G und β ∈ H ist. Hierbei ist H
die von α erzeugte Untergruppe.
Gesucht: Finde die eindeutig bestimmte ganze Zahl a,
0 ≤ a ≤ ∥H∥ − 1, so dass α(a) = β. Hierbei ist
a
(k)
=
k
⊕
i=1
Prof. Dr. C. Karg (HS Aalen)
a = |a ⊕ a ⊕{z. . . ⊕ a} .
k-mal
Kryptographische Algorithmen
El Gamal Kryptosystem
Public Key Kryptosysteme
99 / 138
Verallgemeinerung
ElGamal Kryptosystem über (G, ⊕)
Sei (G, ⊕) eine endliche Gruppe. Sei α ∈ G ein Element, so dass das
DLP über der von α erzeugten Untergruppe H = {αi | i ≥ 0} schwierig
zu lösen ist.
Das ElGamal Kryptosystem über (G, ⊕) ist:
• P = G, C = G × G,
• K = {(G, α, a, β) | 2 ≤ a ≤ ∥H∥ − 1, β = α(a) }
Für k = (G, α, a, β) ∈ K und eine (geheime) ganze Zahl z ∈ Z∥H∥
definiere:
• Verschlüsselung: enc(k, x, z) = (y1 , y2 ), wobei y1 = α(z) , und
y2 = x ⊕ β(z) .
−1
• Entschlüsselung: dec(k, (y1 , y2 )) = y2 ⊕ (y(a)
mod p
1 )
(G, α, β) ist der öffentliche, a der geheime Schlüssel.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
100 / 138
Elliptische Kurven
Definition
Elliptische Kurven über Zp
Betrachte eine Gleichung der Bauart
y2 ≡ x3 + ax + b (mod p),
wobei p > 3 eine Primzahl und a, b ∈ Zp mit
4a3 + 27b2 ̸≡ 0
(mod p).
Die durch diese Gleichung beschriebene Elliptische Kurve E(p, a, b) ist
die Menge all ihrer Lösungen (x, y) ∈ Zp × Zp , zusammen mit einem
zusätzlichen Punkt O. Der Punkt O wird Unendlichkeitspunkt (engl.:
point at infinity) genannt.
√
Man kann zeigen: ∥E(p, a, b)∥ = p + 1 − t mit t ≤ 2 p.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
101 / 138
Gruppenoperation
Gruppenoperation ⊕ über E(p, a, b)
Seien P = (x1 , y1 ) und Q = (x2 , y2 ) von O verschiedene Punkte in
E(p, a, b).
• P⊕O =O⊕P=P
• Falls x2 = x1 und y2 = −y1 , dann ist P ⊕ Q = O.
• Ansonsten ist P ⊕ Q = (x3 , y3 ), wobei
x3 = λ2 − x1 − x2 , und
y3 = λ(x1 − x3 ) − y1 ,
wobei
{
λ=
Prof. Dr. C. Karg (HS Aalen)
(y2 − y1 )/(x2 − x1 ), falls P ̸= Q,
(3x21 + a)/2y1 ,
Kryptographische Algorithmen
falls P = Q,
Public Key Kryptosysteme
102 / 138
Elliptische Kurven
Gruppenoperation
(E(p, a, b), ⊕) ist eine Gruppe
Die Struktur (E(p, a, b), ⊕) ist eine endliche kommutative Gruppe.
• Da (Zp , +, ·) ein Körper ist, sind alle Berechnungen von ⊕
innerhalb von Zp durchführbar. Daher ist die Menge E(p, a, b)
abgeschlossen unter ⊕.
• Das neutrale Element ist O.
• Das Inverse zu (x, y) ist (x, −y).
• Die Operation ⊕ ist assoziativ und kommutativ. Der Beweis
dieser Tatsache ist jedoch schwierig.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
103 / 138
Beispiel
Beispiel: E(11, 1, 6)
Zur Illustration untersuchen wir die Elliptische Kurve
y2 ≡ x3 + x + 6 (mod 11).
Zunächst werden die Elemente in E(11, 1, 6) berechnet.
Da 11 = 4 · 2 + 3, sind die Wurzeln eines quadratischen Rests z gleich
±z(11+1)/4 mod 11 = ±z3 mod 11.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
104 / 138
Elliptische Kurven
Beispiel
Beispiel: E(11, 1, 6) (Forts.)
x x3 + x + 6 mod 11 ∈ QR(11)?
0
6
−
1
8
−
2
5
✓
3
3
✓
4
8
−
5
4
✓
6
8
−
7
4
✓
8
9
✓
9
7
−
10
4
✓
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
y
4, 7
5, 6
2, 9
2, 9
3, 8
2, 9
Public Key Kryptosysteme
105 / 138
Beispiel
Beispiel: E(11, 1, 6) (Forts.)
Neben dem Punkt O enthält E(11, 1, 6) die folgenden Elemente:
(2, 4) (2, 7) (3, 5) (3, 6)
(5, 2) (5, 9) (7, 2) (7, 9)
(8, 3) (8, 8) (10, 2) (10, 9)
Somit gilt: ∥E(11, 1, 6)∥ = 13. Die Gruppe ist (E(11, 1, 6), ⊕) also
zyklisch.
Wegen des Satzes von Lagrange ist jedes von O verschiedene Element
ein Generator.
Im folgenden wird α = (2, 7) als Generator ausgewählt. Da die Gruppe
additiv ist, schreiben wir der Einfachheit halber i · α anstatt α(i) .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
106 / 138
Elliptische Kurven
Beispiel
Beispiel: E(11, 1, 6) (Forts.)
Um 2α = α ⊕ α zu ermitteln, berechnet man zuerst:
λ ≡
≡
≡
≡
(3 · 22 + 1) · (2 · 7)−1
2 · 3−1
2·4
8
(mod
(mod
(mod
(mod
11)
11)
11)
11)
Somit:
x3 = 82 − 2 − 2 mod 11 = 5, und
y3 = 8(2 − 5) − 7 mod 11 = 2.
Also: 2α = (5, 2).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
107 / 138
Beispiel
Beispiel: E(11, 1, 6) (Forts.)
Insgesamt:
α
4α
7α
10α
=
=
=
=
(2, 7)
(10, 2)
(7, 2)
(8, 8)
2α
5α
8α
11α
=
=
=
=
(5, 2)
(3, 6)
(3, 5)
(5, 9)
3α
6α
9α
12α
=
=
=
=
(8, 3)
(7, 9)
(10, 9)
(2, 4)
Also ist α = (2, 7) tatsächlich ein Generator von (E(11, 1, 6), ⊕).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
108 / 138
Elliptische Kurven
Anwendung: ElGamal-Kryptosystem
ElGamal mit (E(11, 1, 6), ⊕)
Bob wählt α = (2, 7) und a = 7 aus. Also ist β = 7α = (7, 2). Der
Schlüssel ist k = ((2, 7), 7, (7, 2)). Die Verschlüsselungsfunktion ist
enc(k, x, z) = (z(2, 7), x ⊕ z(7, 2)),
wobei x ∈ E(11, 1, 6) und 0 ≤ z ≤ 12. Die Entschlüsselungsfunktion
ist
dec(k, y1 , y2 ) = y2 ⊖ 7y1 .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
109 / 138
Anwendung: ElGamal-Kryptosystem
ElGamal mit (E(11, 1, 6), ⊕) (Forts.)
Angenommen, Alice will Bob den Klartext (10, 9) ∈ E(11, 1, 6)
senden. Falls sie z = 3 zufällig zieht, dann berechnet sie:
y1 = 3 · (2, 7)
= (8, 3)
und
y2 = (10, 9) ⊕ 3 · (7, 2)
= (10, 9) ⊕ (3, 5)
= (10, 2)
Der Geheimtext ist y = ((8, 3), (10, 2)).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
110 / 138
Elliptische Kurven
Anwendung: ElGamal-Kryptosystem
ElGamal mit (E(11, 1, 6), ⊕) (Forts.)
Nach Empfang des Geheimtexts y = ((8, 3), (10, 2)) entschlüsselt Bob
diesen wie folgt:
x =
=
=
=
(10, 2) ⊖ 7 · (8, 3)
(10, 2) ⊖ (3, 5)
(10, 2) ⊕ (3, 6)
(10, 9)
Die Entschlüsselung liefert also den korrekten Klartext x = (10, 9).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
111 / 138
Implementierungsaspekte
Implementierungsaspekte
Die Implementierung von ElGamal über Elliptischen Kurven ist
problematisch.
• Bei ElGamal über Zp ist der Geheimtext um den Faktor 2 größer
als der Klartext. Bei ElGamal über E(p, a, b) ist der
Vergrößerungsfaktor gleich 4.
• Der Klartextraum besteht aus Paaren in E(p, a, b). Es existiert
jedoch keine effiziente deterministische Methode, um diese Paare
systematisch zu erzeugen.
Verbesserung: Methode von Menezes und Vanstone
Idee: Verwende Elliptische Kurven “nur” zur Maskierung!
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
112 / 138
Elliptische Kurven
Kryptosystem von Menezes & Vanstone
Kryptosystem von Menezes & Vanstone
Sei E = E(p, a∗ , b∗ ) eine Elliptische Kurve, wobei p > 3 prim und das
DLP für eine Untergruppe H von E schwierig ist. Sei α der Generator
dieser Untergruppe.
• P = Z∗p × Z∗p , C = E × Z∗p × Z∗p
• K = {(α, a, β) | α ∈ E, 2 ≤ a ≤ ∥H∥ − 1, β = a · α}
• Für k = (α, a, β) und eine (geheime) Zufallszahl z ∈ Z∥H∥ und
für x = (x1 , x2 ) ∈ Z∗p × Z∗p definiere
enc(k, x, z) = (y0 , y1 , y2 )
wobei y0 = z · α, (c1 , c2 ) = z · β, und yi = ci xi mod p für i = 1, 2.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Elliptische Kurven
Public Key Kryptosysteme
113 / 138
Kryptosystem von Menezes & Vanstone
Kryptosystem von Menezes & Vanstone
• Für einen Geheimtext y = (y0 , y1 , y2 ), definiere
−1
dec(k, y) = (y1 c−1
1 mod p, y2 c2 mod p)
wobei (c1 , c2 ) = ay0 .
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
114 / 138
Digitale Signaturen
Einleitung
Alice hat Probleme
Alice erhält per Post ein teures Laptop vom Online Händler XY,
welches sie nie bestellt hat.
Sie geht der Sache nach und stellt fest, daß Oskar sie hinters Licht
geführt hat. Er hat eine E-Mail an den Händler gesandt und in ihrem
Namen den Laptop bestellt.
Um derartige Zwischenfälle in Zukunft zu vermeiden, beschließt Alice,
ihre auf elektronischem Wege abzuwickelnden Geschäfte mittels
digitaler Signaturen abzusichern.
Aber was genau ist eine digitale Signatur?
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
115 / 138
Einleitung
Anforderungen an eine digitale Signatur
• Die Signatur muss fälschungssicher sein.
• Die Echtheit der Signatur muss effizient überprüfbar sein.
• Die Signatur darf nicht von einem auf ein anderes Dokument
übertragbar sein.
• Eine Änderung des zur Signatur gehörenden Dokuments muss
erkannt werden.
Und Vorsicht: Eine digitale Signatur ist keine eingescannte
Unterschrift.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
116 / 138
Digitale Signaturen
Einleitung
Definition einer digitalen Signatur
Eine digitale Signatur ist gegeben durch ein Tupel (P, S, K, sign, ver)
mit folgenden Eigenschaften:
• P ist die Menge aller Klartexte.
• S ist die Menge aller Signaturen.
• K ist die Menge aller Schlüssel.
• sign : P × K 7→ S ist der Signierungsalgorithmus.
• ver : P × K × S 7→ {true, false} ist der Verifikationsalgorithmus.
• Für alle Klartexte x und alle Schlüssel k gilt:
{
true falls s = sign(k, x),
ver(k, x, s) =
false falls s ̸= sign(k, x).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
117 / 138
Einleitung
Anwendung einer digitalen Signatur
Alice
Oskar
Bob
x
x, s
sign
ke
unsicherer Kanal
kv
x
yes
x, s
ver
kv
Schlüsselverzeichnis
Prof. Dr. C. Karg (HS Aalen)
Benutzer
Schlüssel
Alice
kv
Kryptographische Algorithmen
Public Key Kryptosysteme
118 / 138
Digitale Signaturen
RSA Signatur
Die RSA Signatur
Das auf dem RSA Kryptosystem beruhende Signaturverfahren ist wie
folgt aufgebaut:
• P = S = Zn , wobei n = pq für hinreichend große Primzahlen p
und q
}
{
n = pq, wobei p, q prim,
• K = (n, p, q, e, d) e · d ≡ 1 (mod ϕ(n))
Für k = (n, p, q, e, d) ∈ K definiere
• Signierung: s = sign(k, x) = xd mod n wobei x ∈ Zn
• Verifikation: ver(k, x, s) = true ⇔ x ≡ se (mod n)
(n, e) ist der öffentliche Teil, (p, q, d) der geheime Teil des Schlüssels.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
119 / 138
RSA Signatur
Beispiel RSA Signatur
Alice wählt p = 7 und q = 11 und n = p · q = 77. Als geheimen
Schlüssel würfelt sie e = 13 und berechnet d = e−1 mod 60 = 37.
Um die Nachricht m = 5 zu signieren, berechnet Alice
537 mod 77 = 47
und sendet das Paar (5, 47) an Bob.
Bob überprüft die Signatur, indem er
4713 mod 77 = 5
berechnet. Offensichtlich ist sie korrekt, da das Ergebnis mit der
Nachricht identisch ist.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
120 / 138
Digitale Signaturen
RSA Signatur
Verschlüsselung und Signatur
Kombiniert man ein Kryptosystem mit einem Signaturverfahren, dann
stellt sich die Frage nach Reihenfolge von Verschlüsselung und
Signierung.
Eine Möglichkeit ist, den Klartext zunächst zu verschlüsseln und
anschließend den Geheimtext zu signieren. Alice berechnet
y = enc(kB , x) und s = sign(kA , y). Dann sendet sie die Nachricht
(y, s) an Bob.
Aber: Fängt Oskar die Nachricht ab, dann kann er die Signatur von
Alice durch seine eigene ersetzen.
Daher empfiehlt es sich, die Nachricht zuerst zu signieren und erst
danach zu verschlüsseln.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
121 / 138
RSA Signatur
Bemerkungen zur RSA Signatur
• Die RSA Signatur ist das am häufigsten eingesetzte
Signaturverfahren.
• Die Sicherheit beruht auf der (vermutlich) hohen Komplexität des
Faktorisierungsproblems.
• Der Schlüssel einer digitalen Signatur ist in der Regel länger als
bei einem Public Key Kryptosystem. Der Grund ist die zeitlich
längere Haltbarkeit von digitalen Signaturen.
• Anstatt die Nachricht blockweise zu signieren, berechnet man mit
einer kryptografischen Hashfunktion eine Prüfsumme und signiert
diese.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
122 / 138
Digitale Signaturen
ElGamal Signatur
Signaturen auf Basis von ElGamal
Sei p eine Primzahl und α ein Generator von Z∗p .
Das ElGamal Signaturverfahren ist wie folgt definiert:
• P = Z∗p , S = Z∗p × Zp−1
• K = {(p, α, a, β) | 2 ≤ a ≤ p − 2, β ≡ αa (mod p)}.
Für k = (p, α, a, β) ∈ K und eine (geheime) Zufallszahl z ∈ Z∗p−1
definiere:
• Signierung: sign(k, x, z) = (γ, δ), wobei
▷ γ = αz mod p und
▷ δ = (x − aγ)z−1 mod (p − 1).
• Verifikation: ver(k, (x, γ, δ)) = true genau dann, wenn
βγ γδ ≡ αx (mod p)
(p, α, β) ist der öffentliche und a der geheime Schlüssel.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
123 / 138
ElGamal Signatur
Beispiel zur ElGamal Signatur
Sei p = 467, α = 2, a = 127 und somit β = 2127 mod 467 = 132.
Bob will die Nachricht x = 100 signieren. Hierzu zieht er die
Zufallszahl z = 213. Man beachte, daß gcd(213, 466) = 1 und
z−1 = 431. Bob berechnet
γ = 2213 mod 467 = 29
und
δ = (100 − 127 × 29) × 431 mod 466 = 51.
Die Signatur von x = 100 ist (γ, δ) = (29, 51).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
124 / 138
Digitale Signaturen
ElGamal Signatur
Beispiel zur ElGamal Signatur (Forts.)
Um zu verifizieren, daß (γ, δ) = (29, 51) die korrekte Signatur von
x = 100 ist, berechnet man
13229 × 2951 ≡ 189
(mod 467)
und
2100 ≡ 189
(mod 467).
Offensichtlich ist die Signatur korrekt. Zur Überprüfung der Signatur
wird nur der öffentliche Schlüssel benötigt.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
125 / 138
ElGamal Signatur
Korrektheit der ElGamal Signatur
Zum Nachweis der Korrektheit verwenden wir die Gleichung
aγ + zδ ≡ x (mod p − 1).
Somit ist aγ + zδ = i(p − 1) + x für eine ganze Zahl i.
Es gilt:
Prof. Dr. C. Karg (HS Aalen)
βγ γδ ≡
≡
≡
≡
αaγ αzδ
αaγ+zδ
αi(p−1)+x
αx
(mod
(mod
(mod
(mod
Kryptographische Algorithmen
p)
p)
p)
p)
Public Key Kryptosysteme
126 / 138
Digitale Signaturen
ElGamal Signatur
Achtung: z unbedingt geheim halten!
Bei der ElGamal Signatur muss Bob unbedingt darauf achten, daß die
Zufallszahl z geheim bleibt.
Gelangt z in die Hände von Oskar, dann kann dieser unter Verwendung
des öffentlichen Schlüssels den geheimen Schlüssel a berechnen, denn
aγ = (x − zδ) mod (p − 1).
Falls γ ein Inverses modulo p − 1 besitzt, dann ist das
Signaturverfahren gebrochen. Somit kann Oskar beliebige Daten mit
Bob’s Signatur unterzeichnen.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
127 / 138
ElGamal Signatur
Achtung: z nur einmal verwenden!
Benutzt Bob ein z zur Signierung zweier verschiedener Nachrichten,
dann kann Oskar hieraus a berechnen. Angenommen, (γ1 , δ1 ) und
(γ2 , δ2 ) sind Signaturen der Nachricht x1 bzw. x2 , die unter
Verwendung derselben Zufallszahl z entstanden sind.
Es gilt: γ1 = γ2 = αz und
δ1 − δ2 ≡ (x1 − x2 )z−1
(mod p − 1).
Falls (x1 − x2 ) mod (p − 1) invertierbar ist, dann kann Oskar hieraus
z−1 und somit z bestimmen. Aus z berechnet er anschließend den
geheimen Schlüssel a.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
128 / 138
Digitale Signaturen
ElGamal Signatur
Bemerkungen zur ElGamal Signatur
• Die Sicherheit der ElGamal Signatur hängt von der Komplexität
des Diskreter Logarithmus ab.
• Die ElGamal Signatur kann auch auf Basis anderer Gruppen (z.B.
elliptischer Kurven) berechnet werden.
• Obwohl die ElGamal Signatur frei verfügbar ist, wird sie selten
eingesetzt.
• Aus der ElGamal Signatur wurde der Digital Signature Algorithm
(DSA) abgeleitet und im Jahre 1991 von der NIST standardisiert.
• Der DSA nimmt nach der RSA Signatur den zweiten Platz auf
der Liste der am meisten eingesetzten Signaturverfahren ein.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
129 / 138
Digital Signature Algorithm (DSA)
Digital Signature Algorithm (DSA)
Der Digital Signature Algorithm ist eine Variante der ElGamal
Signatur. Folgende Modifikationen wurden vorgenommen:
• Die Berechnungen erfolgen über einer Untergruppe von Z∗p der
Größe q. Hierbei ist q eine 160 Bit Primzahl, die die Zahl p − 1
teilt.
• In der Berechnung von δ wird das “−” durch ein “+” ersetzt,
d.h., δ = (x + aγ)z−1 mod q.
• Die Verifikation wird abgeändert in αx βγ ≡ γδ (mod p).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
130 / 138
Digitale Signaturen
Digital Signature Algorithm (DSA)
Definition von DSA
Sei p eine 512-bit Primzahl und q eine 160-bit Primzahl, die (p − 1)
teilt. Sei α ∈ Z∗p ein Element mit ∥⟨α⟩∥ = q.
Der
•
•
•
Digital Signature Algorithm (DSA) ist wie folgt definiert:
P = Z∗p
S = Zq × Zq
K = {(p, q, α, a, β) | 2 ≤ a ≤ p − 2, β ≡ αa (mod p)}.
Für k = (p, q, α, a, β) ∈ K und eine (geheime) Zufallszahl
1 ≤ z ≤ q − 1 definiere:
• Signierung: sign(k, x, z) = (γ, δ), wobei
▷ γ = (αz mod p) mod q und
▷ δ = (x + aγ)z−1 mod q.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
131 / 138
Digital Signature Algorithm (DSA)
Definition von DSA (Forts.)
• Verifikation: Für x ∈ Z∗p und γ, δ ∈ Zq werden die folgenden
Berechnungen durchgeführt:
▷ e1 = xδ−1 (mod q)
▷ e2 = γδ−1 (mod q)
ver(k, (x, γ, δ)) = true genau dann, wenn
(αe1 βe2 mod p) mod q = γ
(p, q, α, β) ist der öffentliche und a der geheime Schlüssel.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
132 / 138
Digitale Signaturen
Digital Signature Algorithm (DSA)
Generierung der DSA Parameter
Zur Erstellung des DSA Schlüssels führt Alice die folgenden Schritte
aus:
1. Wähle eine Primzahl q mit 2159 ≤ q ≤ 2160 .
2. Wähle eine Zahl t mit 0 ≤ t ≤ 8 und eine Primzahl
2511+64t < p < 2512+64t mit der Eigenschaft, daß q die Zahl
(p − 1) teilt.
3. Wähle ein g ∈ Z∗p und berechne α = g(p−1)/q mod p. Wiederhole
diesen Vorgang solange, bis α ̸= 1.
4. Wähle eine Zufallszahl a mit 1 ≤ a ≤ q − 1.
5. Berechne β = αa mod p.
Anschließend veröffentlicht Alice den öffentlichen Schlüssel
(p, q, α, β).
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Digitale Signaturen
Public Key Kryptosysteme
133 / 138
Digital Signature Algorithm (DSA)
Beispiel zu DSA
Angenommen, q = 101 und p = 78q + 1 = 7879. Die Zahl 3 ist ein
Generator von Z7879 . Wir wählen daher
α = 378 mod 7879 = 170.
Der geheime Teil des Schlüssels ist a = 75. Somit ist
β = αa mod 7879 = 17075 mod 7879 = 4567.
Bob will die Nachricht x = 1234 signieren. Hierzu zieht er die
Zufallszahl z = 50 und berechnet z−1 mod 101 = 99.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
134 / 138
Digitale Signaturen
Digital Signature Algorithm (DSA)
Beispiel zu DSA (Forts.)
Anschließend berechnet er die Signatur:
γ =
=
δ =
=
(17050 mod 7879) mod 101
2518 mod 101 = 94
(1234 + 75 × 94) × 99 mod 101
97
Die Signatur (94, 97) der Nachricht 1234 wird wie folgt verifiziert:
δ−1 = 97−1 mod 101 = 25
e1 = 1234 × 25 mod 101 = 45
e2 = 94 × 25 mod 101 = 27
Somit (17045 456727 mod 7879) mod 101 = 2518 mod 101 = 94.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Zusammenfassung
Public Key Kryptosysteme
135 / 138
Vorteile von Public Key Kryptosystemen
Vorteile von Public Key Kryptosystemen
• Nur der private Schlüssel muss geheimgehalten werden.
• Der öffentliche Schlüssel ist für jedermann verfügbar.
• Abhängig von der Art der Nutzung bleibt das Schlüsselpaar über
lange Zeit unverändert.
• Aus Public Key Kryptosystemen lassen sich effiziente
Signaturmechanismen ableiten.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
136 / 138
Zusammenfassung
Nachteile von Public Key Kryptosystemen
Nachteile von Public Key Kryptosystemen
• Der Datendurchsatz ist bei Public Key Kryptosystemen in der
Regel deutlich niedriger als bei Symmetrischen Kryptosystemen.
• Für Public Key Kryptografie werden längere Schlüssel benötigt
als für symmetrische Kryptografie.
• Für keines der Public Key Kryptosysteme konnte die Sicherheit
bewiesen werden.
• Alle Public Key Kryptosysteme basieren auf einer Handvoll
mathematischer Probleme.
• Public Key Kryptosysteme gibt es erst seit den 1970er Jahren.
Sie sind daher relativ unerforscht.
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
137 / 138
Zusammenfassung
Zusammenfassung
• Public Key Kryptosysteme lösen eine Vielzahl kryptografischer
Fragestellungen, die man mit symmetrischen Systemen nicht
lösen kann
• Public Key Kryptosysteme basieren auf einer kleinen Auswahl von
zahlentheoretischen Problemen
• Für keines der obigen Kryptosysteme konnte die Sicherheit
bewiesen werden
• Die in Public Key Kryptosystemen eingesetzten Techniken werden
auch für die Entwicklung von kryptografischen Protokollen
eingesetzt
Prof. Dr. C. Karg (HS Aalen)
Kryptographische Algorithmen
Public Key Kryptosysteme
138 / 138
Herunterladen