Die Reform des Morbi-RSA durch das Gesetz für einen fairen ...
8: Naiver Einsatz von RSA · Eik List, Jakob Wenzel Kryptographie(WS 16/17) 8: Naiver Einsatz von...
Transcript of 8: Naiver Einsatz von RSA · Eik List, Jakob Wenzel Kryptographie(WS 16/17) 8: Naiver Einsatz von...
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8: Naiver Einsatz von RSA
–275– 8:
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8: Naiver Einsatz von RSA
• Dieses Kapitel behandelt die wichtigsten RSA-Fallstricke.
• Angriffskategorien3
◦ Elementare Angriffe auf naive Public-Key-Kryptographie◦ Kleiner öffentlicher Exponent e
◦ Kleiner geheimer Exponent d
◦ Implementierungsangriffe◦ Paddingangriffe
–276– 8: Naiver Einsatz von RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.1: Naive Public-Key-Kryptographie
–277– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.1: Naive Public-Key-Kryptographie
• PK: Öffentlicher Schlüssel ((n, e) für RSA)• M : Klartext• EPK: Verschlüsselungsfunktion (für RSA: Me mod n)• C: Chiffretext
Rate-Verifikationsangriff: Gegeben C, gesucht M .
1: for all plausible Klartexte M∗ do
2: Berechne C∗ ← EPK(M∗)3: if C∗ = C then
4: Return M∗
5: end if
6: end for
Effizient wenn die Entropie des Klartexts klein ist.(Frage: Ist dieser Angriff auch relevant fürsymmetrische Verschlüsselungsverfahren?)
–278– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Rate-VerifikationsangriffRelevanz
• In der Praxis sehr ernstes Problem:◦ Nachrichten mit geringer Entropie in der Praxis häufig◦ Oft schwierig, abzuschätzen, was Angreifer über mögliche Klartexte
wirklich wissen
• Ein Angreifer kann eine begrenzte Anzahl (leicht einige Milliarden)plausibler Klartexte generieren und überprüfen, ob einer davonder gesuchte Klartext ist.
=⇒ Gute Public-Key-Verschlüsselung muss die Nachrichten
deshalb randomisieren.
–279– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Randomisierte Public-Key-Verschlüsselung
Beispiel:
• Gegeben: Klartext M
• Alice wählt zufälliges R fester Länge (r Bits) und schicktEPKB
(R ||M) an Bob• (R ||M) hat mindestens r Bits Entropie• Bob entschlüsselt (R ||M) und entfernt die ersten r Bits
BobAlice
C ← EPKB(R ||M)
R$← {0, 1}r (PKB , SKB)
–280– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Naive RSA-Verschlüsselung
• Gegeben: C = M e mod n für geheimes M
• Für beliebiges r ∈ Zn können den Chiffretext C′ zu M ′ = (r ·M) mod n
selbst berechnen:
C′ = (r ·M)e mod n
= (re ·M e) mod n
= (re · C) mod n
• =⇒ Naive RSA-Verschlüsselung ist unsicher
–281– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Naive RSA-Signaturen(ohne Hashen der Nachricht)
• Gegeben: (M, S) mit Klartext M und Signatur S
• Für beliebiges r ∈ Zn können wir die Signatur S′ fürM ′ = (M · re) mod n auch ohne d fälschen:
S′ = (M · re)d mod n
= (Md · red mod ϕ(n)) mod n
= (Md · r1) mod n
= (S · r) mod n
• =⇒ Naive RSA-Signaturen sind nicht fälschungssicher
• =⇒ Nachricht vorher hashen
• Kann auch positiv genutzt werden:
◦ Blinde Signaturen (der Faktor re verschleiert die eigentlicheNachricht M ) für anonyme Bezahlvorgänge
–282– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Elementare Fehler und Angriffe auf RSA
• Wiederverwendung eines Primfaktors (z. B. p):◦ Berechnung von p = ggT(n1, n2)
• Zu geringe Entropie bei der Wahl von p oder q
◦ Möglichkeiten testen
• . . .
–283– 8: Naiver Einsatz von RSA 8.1: Naive PK-Krypto
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.2: RSA mit kleinem öffentlichen Exponenten e
–284– 8: Naiver Einsatz von RSA 8.2: RSA mit kleinem e
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.2: RSA mit kleinem öffentlichen Exponenten e
• Szenario: Gleiches M an e
verschiedene Empfänger
• Eve hört ChiffretexteC1, . . . , Ce mit
• Eve kann M mittels desChinesischen Restsatzes
rekonstruieren
Alice
Bob
Charlie
David
C1 ←Me mod n1
C2 ←Me mod n2
Ce ←Me mod n3
=⇒ Wahl größerer Exponenten e (üblich: e = 216 + 1).
–285– 8: Naiver Einsatz von RSA 8.2: RSA mit kleinem e
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.3: RSA mit kleinem geheimen Exponenten d
–286– 8: Naiver Einsatz von RSA 8.3: RSA mit kleinem d
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.3: RSA mit kleinem geheimen Exponenten d
• Kleines d beschleunigt die Entschlüsselung (d ≈ 2128)
• Wiener’87: Für d < n0.25 kann d effizient berechnet werden
• Vermutung: d < n0.50 (d ≈ 2512 für 1024-bit n) ist unsicher
–287– 8: Naiver Einsatz von RSA 8.3: RSA mit kleinem d
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.4: Implementierungsangriffe
–288– 8: Naiver Einsatz von RSA 8.4: Implementierungsangriffe
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.4: Implementierungsangriffe
• Timing-Angriff (Kocher et al.’97)Die Zeit, die zur Entschlüsselung (d. h. zur Berechnung vonM = Cd mod n) benötigt wird, kann d verraten
• Prozessorleistungs-Angriff (Kocher et al.’99)Die Leistung, die eine Smartcard während der Entschlüsselung benötigt,kann d verraten
• Glitch-Angriff (Boneh et al.’97)Ein Speicherfehler (glitch) der während der Entschlüsselung auftritt,kann d verraten
• Timing-Angriff (Kocher’96): Die Zeit, die zur Verifikation verschiedenerSchritte vergeht, kann den Klartext verraten
• Akustischer Angriff (Genkin et al.’13): Die Laufintensität desProzessorlüfters während der Entschlüsselung kann d verraten
Gegenmaßnahmen: Gewissenhafte Implementierung,Verifizierung des Outputs
–289– 8: Naiver Einsatz von RSA 8.4: Implementierungsangriffe
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.5: Textbook-RSA
–290– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
8.5: Textbook-RSA
• Gegeben ein (kurzer) b-bit String K1, . . . , Kb als Nachricht(typischerweise ein Schlüssel für ein symmetrischesKryptosystem). Man kann K als Zahl < 2
b interpretieren.
• Padding hier: “Auffüllen” der höheren Bits mit Nullen
0 . . . 0 K
• Berechne Chiffretext C ← Ke mod n.
–291– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Meet-in-the-Middle-Angriff auf Textbook-RSA(Praktikabel für “kleine” Werte von b)
• Gesucht: K. Gegeben: C ← Ke mod n.
• Wähle S, T mit S · T > 2b.
Mit signifikanter Wahrscheinlichkeit existieren s ≤ S und t ≤ T mit
K = s · t.
–292– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Meet-in-the-Middle-Angriff auf Textbook-RSA
·te ·(se)−1C = Ke1 Ct Cs (s, Cs) L
?=
1: L ← ∅2: for all s ∈ {1, . . . , S} do
3: Berechne Cs ← C · (se)−1
mod n
4: Speichere (s, Cs) in Liste L5: end for
6: for all t ∈ {1, . . . , T} do
7: Berechne Ct = te mod n
8: Wenn Ct ∈ L, so ist te · se mod n = Ke mod n
9: end for
• Speicheraufwand: O(S), Zeitaufwand: O(S + T ).
–293– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Hybride Verschlüsselung mit Textbook-RSA
Symmetrisches Verschlüsselungsverfahren E mit b-bit Schlüsseln(typischerweise b ∈ {80, . . . , 256}, RSA-Modulus n > 21000)
• Verschlüsselung: Gegeben: Klartext M , RSA-Schlüssel (e, n)
1 Ziehe zufälligen Sitzungsschlüssel K$← {0, 1}b
2 Berechne Y ← Ke mod n
3 Berechne C ← EK(M)4 Chiffretext: (Y, C)
• Entschlüsselung: Chiffretext: (Y, C), RSA-Schlüssel (d, n)
1 Berechne K← Y d mod n
2 Berechne M ← E−1K
(C)
–294– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Sicherheit von Hybrid Textbook-RSA
Beobachtung
Hybrid Textbook-RSA ist nicht einmal Known-Ciphertext-sicher.
• Grund: MitM-Angriff mit Aufwand O(2b/2+1).
• Für b = 128 ist Aufwand von O(265) praktikabel!
• Für b = 256 ist Aufwand von O(2129) aber noch nicht praktikabel.
–295– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Chosen-Ciphertext-Angriff auf Textbook-RSA
Beobachtung
Es kann ungültige (manipulierte) Chiffretexte Y geben. Wir sagen, Y ist (mitan Sicherheit grenzender Wahrscheinlichkeit) ungültig, wenn
K = Y d mod n ≥ 2b,
d. h. wenn K (die Padding-Regel) nicht erfüllt.
• Angenommen, Eve fängt (Y, C) ab, berechnet ein neues Y ′ undschickt (Y ′, C).
• Wie sollte man auf ein ungültiges Y reagieren?4
–296– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Angriff auf Hybrid Textbook-RSAMögliche Reaktionen auf ungültige Chiffretexte
1. Stategie: Fehlermeldung
• Wenn K ≥ 2b, dann gib eine Fehlermeldung aus.
• Was passiert, wenn wir den Chiffretext mit 2e multiplizieren?
Y ′ = Y · 2e mod n
= (K · 2)e mod n
1010111001000000000000000000000000000000 0
K
• Äquivalent zu Shift um 1 Stelle nach links
• Wenn “ungültig” =⇒ MSB von K ist 1
–297– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Angriff auf Hybrid Textbook-RSAMögliche Reaktionen auf ungültigen Chiffretext
2. Stategie: Ignorieren
• Einfach K mod 2b als Nachricht verwenden.
• Was passiert, wenn wir ein z so wählen, dass das höchste Bitüberläuft, wenn wir den Chiffretext mit (2z + 1)e multiplizieren?
Y ′ = Y · (2z + 1)e mod n
= (K · (2z + 1))e mod n
010111001 10101110010000000000000000000000
2z ·K K+
• Wenn “ungültig” =⇒ MSB von K ist 1
• Wir passen z für jedes weitere Bit entprechend an und erhalten K
Stück für Stück
–298– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Mögliche Reaktionen auf ungültigen Chiffretext
•✭✭✭✭✭✭✭✭
Fehlermeldung?
•✘✘✘✘✘✘
Ignorieren?
=⇒ Beides schlechte Ideen!
Was sollte man tun?
• Wenn möglich, zufälliges “Padding” einsetzen!
• Falls das nicht geht, im Fall dass K ungültig ist, ein zufälliges
K′ ∈ {0, . . . , 2
b − 1} verwenden.
–299– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Gibt es so etwas in der Praxis?
• Hybride Verschlüsselung?◦ In der Tat! Siehe PGP, TLS, . . .
◦ In der Praxis ist reine Public-Key-Verschlüsselung selten.
• Derart schwache hybride Verschlüsselung?◦ Eher nicht.
◦ Normalerweise gibt es noch Authentifikationskomponenten, dievorab “ungültige” Klartexte erkennen.
–300– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Die Praxis: Ein trauriges Beispiel
• HBCI (Home Banking Computing Interface) deutscher Standardfür Online-Banking, inzwischen in FinTS (Financial TransactionServices) umbenannt.
• Eine (formal Standard-konforme) Implementation kann den FallK ≥ 2
b ignorieren oder Fehlermeldungen liefern.
• Es gibt (bzw. gab) Implementationen, die das tatsächlich machten.
Problem
Der Standard ist nicht präzise genug. Er hält Informatiker ohne guteKryptographie-Kenntnisse von derartigen Implementationsfehlern nicht ab.
Ein Glück, dass Sie an dieser Vorlesung teilnehmen!
–301– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Bleichenbachers Angriff auf RSA PKCS#1
0000 02 Random PS M
1 Zwei konstante Bytes 00 und 02.
2 Ein “Padding-String” PS aus mindestens 8 Bytes ungleich 0.
3 Ein 00-Byte.
4 Eine Nachricht M aus maximal |n| − 88 Bits.
5 Y ←Me mod n
• Ähnlich zu Kühns Orakelangriffen (aber komplizierter zubeschreiben) =⇒ wir vereinfachen den Angriff
–302– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Vereinfachter Bleichenbacher-Angriff auf RSA
1010111001010101010100111110111111000010 0
2 ·M
• Angenommen:◦ n = 2b (ein invalider RSA-Modulus)◦ Padding prüft ob MSB(M) = 0 nach der Entschlüsselung
• Senden wir Y an Bob, erhalten wir das höchste Bit von M
◦ Wenn Fehlermeldung: MSB(M) = 1◦ Wenn keine Fehlermeldung: MSB(M) = 0
• Senden wir Y · 2e an Bob, erhalten wir das zweithöchste Bit von M
• Senden wir Y · 4e an Bob, erhalten wir das dritthöchste Bit von M
• . . .
–303– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Industrieller Hintergrund
• “Public Key Cryptography Standards” (PKCS): großer Satz vonSpezifikationen im Umfeld der Public-Key-Kryptographie;
• Entwickelt von RSA Laboratories, Apple, Microsoft, MIT, NorthernTelecom, Novell und Sun
• Weit verbreitet und in viele andere Standards eingegangen
• auch (als Teil von SSL/TLS) im WWW weit verbreitet(“https://...”).
–304– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Was lernen wir daraus?
1 Chosen-Ciphertext-Angriffe können für den praktischen Einsatzder Kryptographie gefährlich sein!
2 Der kompetente Einsatz der Public-Key-Kryptographie istschwieriger als man erwarten würde (oder als in vielen ehertheoretischen Kryptographie-Vorlesungen vermittelt wird).
–305– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Optimal Asymmetric Encryption Padding (OAEP)(Bellare, Rogaway’94)
Seien G : {0, 1}∗ → {0, 1}v und H : {0, 1}∗ → {0, 1}w zwei kryptographischeHashfunktionen und EPK eine Public-Key-Verschlüsselungsfunktion (z. B.RSA). Dann wird eine Nachricht M mit |M | ≤ v wie verschlüsselt als:
M 0..0 R
G
H
A B
Y
EPK(A||B)
–306– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA
Eik List, Jakob Wenzel Kryptographie (WS 16/17)
Schlussbemerkungen
Sie sollten verstanden haben
• weshalb der naive Einsatz von RSA keine gute Idee ist,
• auf was man bei dem Einsatz von RSA achten sollte, und
• wie man mit ungültigen Chiffretexten verfährt.
–307– 8: Naiver Einsatz von RSA 8.5: Textbook-RSA