Musterlösung - Arbeitsgruppe Kryptographie und Sicherheit
Transcription
Musterlösung - Arbeitsgruppe Kryptographie und Sicherheit
IKS Institut für Kryptographie und Sicherheit Lehrstuhl Prof. Dr. J. Müller-Quade Institut für Kryptographie und Sicherheit Stammvorlesung Sicherheit im Sommersemester 2012 Musterlösung zu Übungsblatt 6 Aufgabe 20a: Das HB-Protokoll wurde entwickelt, damit sich ein rechenschwacher Client (z. B. ein RFIDTag) bei einem entsprechendem Server (z. B. einem RFID-Reader) authentifizieren kann. Es ist parametrisiert durch einen Rauschparamter η ∈ (0, 21 ), eine Fehlertoleranz ε ∈ (0, η) sowie zwei Sicherheitsparameter k und l und läuft folgendermaßen ab (dabei bezeichne “ das innere Produkt von zwei Vektoren): ” 0. Reader und Tag besitzen ein gemeinsames Authentifikationsgeheimnis x ∈ {0, 1}k . 1. Der Reader sendet eine zufällige Challenge a ∈ {0, 1}k an das Tag. 2. Das Tag sendet z = (a x) ⊕ ν an den Reader, wobei ν ein Zufallsbit ist mit Pr[ν = 1] = η. 3. Der Reader prüft, ob z = (a x). 4. Die Schritte 1 bis 3 werden l mal wiederholt. Wenn dabei der Test in Schritt 3 wenigstens (1 − η − ε) · l mal true“ ergibt, ist das Tag authentifiziert. ” Dieses Protokoll bietet allerdings nur Sicherheit gegen passive Lauscher, die den Protokolllauf nicht beeinflussen. Wie kann ein bösartiger Reader, der x gar nicht kennt, das Authentifikationsgeheimnis lernen? Lösung: Der bösartige Reader wählt a nicht zufällig, sondern schickt mehrfach denselben Wert. Über einen Mehrheitsentscheid kann er dann einzelne Bits über x lernen; bspw. wird die Challenge a = (1, 0 . . . , 0) in der Mehrzahl der Fälle mit dem ersten Bit von x beantwortet. Aufgabe 20b: Das HB+ -Protokoll ist eine Weiterentwicklung des HB-Protokolls, um auch Sicherheit gegen bösartige Reader zu gewährleisten. Es läuft folgendermaßen ab: 0. Reader und Tag besitzen zwei gemeinsame Authentifikationsgeheimnisse x, y ∈ {0, 1}k . 1. Das Tag sendet einen zufälligen Blinding-Faktor b ∈ {0, 1}k an den Reader. 2. Der Reader sendet eine zufällige Challenge a ∈ {0, 1}k an das Tag. 3. Das Tag sendet z = (a x) ⊕ (b y) ⊕ ν an den Reader, wobei ν ein Zufallsbit ist mit Pr[ν = 1] = η. 4. Der Reader prüft, ob z = (a x) ⊕ (b y). 5. Die Schritte 1 bis 4 werden l mal wiederholt. Wenn dabei der Test in Schritt 4 wenigstens (1 − η − ε) · l mal true“ ergibt, ist das Tag authentifiziert (d. h. das Protokollergebnis ist accept“). ” ” Wie kann ein Man-in-the-Middle, der Nachrichten zwischen Reader und Tag beliebig abändern kann und am Ende das Protokollergebnis ( accept“/ reject“) sieht, ein beliebiges Bit über x oder y lernen? ” ” Lösung: Der Man-in-the-Middle wählt zu Beginn eine Position i ∈ {1, . . . , k} und kippt in jeder Runde das i-te Bit der Challenge a. Das Protokollergebnis am Ende ist genau dann trotzdem accept“, wenn das i-te Bit ” von x Null ist. Analog kann man durch Kippen des i-ten Bits von b das i-te Bit von y lernen. (Und wenn man mehr als ein Bit kippt, lernt man die Parität der entsprechenden Bits von x und/oder y.) Aufgabe 21: Zeigen Sie: Das Berechnen von ϕ(n) zu einem gegeben RSA-Modulus n ist äquivalent zum Faktorisieren von n. Hinweis: Stellen Sie auf Basis von n und ϕ(n) ein Gleichungssystem für die Primfaktoren p und q von n auf. Lösung: Es gilt ϕ(n) = (p − 1)(q − 1) = p · q − p − q − 1. Damit haben wir folgendes Gleichungssystem: p·q = n p + q = n − ϕ(n) + 1 Insbesondere gilt p · (n − ϕ(n) + 1 − p) = n. Diese quadratische Gleichung lässt sich mit Standardmethoden nach p auflösen. Wir erhalten: p n − ϕ(n) + 1 ± (n − ϕ(n) + 1)2 − 4n p= 2 Damit lassen sich aus n und ϕ(n) die Primfaktoren p und q von n berechnen. Umgekehrt kann man aus p und q direkt ϕ(n) = (p − 1)(q − 1) berechnen. Aufgabe 22: Wir betrachten ElGamal-Signaturen über der Gruppe hgi ⊆ Z× p mit p = 31 und g = 29. • Wie lautet der öffentliche Schlüssel y zum geheimen Schlüssel x = 6? • Berechnen Sie die Signaturen zu den Nachrichten m1 = 19 und m2 = 22 mit geheimem Schlüssel x = 6 und ohne Hashing. Wählen Sie dabei als Zufall k1 = 7 bzw. k2 = 23. • Zeigen Sie: Unabhängig vom öffentlichen Schlüssel y ist jedes Tupel (30, b) mit ungeradem b eine gültige Signatur zur Nachricht m = 5. Lösung: • Es ist y = 296 = (−2)6 = 64 = 2 mod 31. • Die Signaturen σ(m1 ) = (a1 , b1 ) und σ(m2 ) = (a2 , b2 ) berechnen sich wie folgt: a1 = 297 = (−2)7 = −128 = −4 = 27 b1 = 19−27·6 7 23 a2 = 29 b2 = = (19 − 27 · 6) · 13 = (19 + 3 · 6) · 13 = 37 · 13 = 7 · 13 = 91 = 1 23 = (−2) 22−23·6 23 mod 31 = 22 23 = (−2) −6= 5·4 22 −7 3 4 3 4 3 mod 30 3 · (−2) = (−32) · (−2) = (−1) · (−2) = (−2) = −8 = 23 − 6 = 22 · (−13) − 6 = (−8) · (−13) − 6 = 104 − 6 = 98 = 8 mod 31 mod 30 • Eine Signatur (a, b) zur Nachricht m ist gültig bezüglich eines öffentlichen Schlüssels y, wenn g m = y a · ab . Wir müssen also zeigen, dass für alle möglichen öffentlichen Schlüssel y und alle ungeraden b gilt: 295 = y 30 · 30b mod 31 Modulo 31 gilt 295 = (−2)5 = −32 = −1 und 30 = −1. Die zu zeigende Aussage ist daher äquivalent zu: −1 = y 30 · (−1) mod 31 also y 30 = 1 mod 31 Diese Aussage ist wahr, denn y 30 = y 30 mod ϕ(31) = y 30 mod 30 = y 0 = 1 mod 31. ACHTUNG: Die Zahlenwerte in diesem Beispiel sind etwas unglücklich gewählt! Wenn man die Potenzen von g beginnend mit g 1 berechnet, erhält man hgi = {−2, 4, −8, 16, −1, 2, −4, 8, −16, 1} ( Z× 31 und insbesondere ord(g) = 10. Damit können alle Werte, die ausschließlich als Exponenten von g auftreten, modulo 10 reduziert werden; es gilt also m1 = b 9 und m2 = b 2 und k2 = b 3. Auch b1 und b2 müssen damit eigentlich modulo 10 berechnet werden: b1 = b2 = 9−27·6 7 2−23·6 3 = = 9−7·6 7 2−3·6 3 = = 9 7 2 3 − 6 = 9 · 3 − 6 = 21 = 1 −6=2·7−6=8 mod 10 mod 10 Aufgabe 23a: I. A. wird in der Praxis eine Nachricht m nicht direkt signiert, sondern ein kryptographischer Hashwert h(m). Wie essentiell ist in diesem Kontext, dass h eine Einwegfunktion ist (d. h. für hinreichend zufälliges x ist es nicht praktikabel, aus dem entsprechenden Hashwert y = h(x) ein Urbild x̃ ∈ h−1 (y) zu berechnen) und wie essentiell ist Kollisionsresistenz (d. h. es ist nicht praktikabel zwei verschiedene Eingaben x1 , x2 mit demselben Hashwert y = h(x1 ) = h(x2 ) zu finden)? Lösung: Die Einweg-Eigenschaft ist in der Parxis oft nicht weiter wichtig; i. A. wird zusammen mit der Signatur sowieso die signierte Nachricht (und damit eine passende Eingabe für die Hashfunktion) übertragen. Formal wird die Einweg-Eigenschaft jedoch bei verschiedenen Verfahren (z. B. RSA-Signaturen) allerdings benötigt, um EUF-CMA-Sicherheit zu erreichen; andernfalls1 könnte man zu jedem Wert s passender Länge allein unter Verwendung des öffentlichen Verifikationsschlüssels eine (zufällig aussehende und daher i. A. sinnfreie) Nachricht m finden, sodass s eine gültige Signatur für m ist. Kollisionsresistenz ist dagegen auf jeden Fall unverzichtbar, da man bestimmte Nachrichten sonst gar nicht signieren kann, ohne gleichzeitig (ungewollt) eine gültige Signatur für eine oder mehrere andere Nachrichten preiszugeben. Aufgabe 23b: Konstruieren Sie eine kollisionsresistente Funktion ohne Einweg-Eigenschaft. Nehmen Sie dabei eine kollisionsresistente Einwegfunktion h : {0, 1}∗ → {0, 1}n als gegeben an, die als Baustein verwendet werden darf. Hinweis: Um die Einweg-Eigenschaft zu verletzen, muss man nicht für jeden Bildwert ein entsprechendes Urbild berechnen können. Lösung: Die folgendermaßen definierte Funktion h0 : {0, 1}∗ → {0, 1}n+1 ist kollisionsresistent aber keine Einwegfunktion: 0kx falls x ∈ {0, 1}n h0 (x) = 1kh(x) sonst Da in der Aufgabenstellung die Ausgabelänge der zu konstruierenden Funktion nicht begrenzt war, wäre auch2 h0 (x) = xkh(x) oder sogar einfach nur h(x) = x eine formal korrekte Lösung gewesen. Aufgabe 23c: Es sei eine Funktion h : {0, 1}∗ → {0, 1}n gegeben. Wir definieren induktiv: x wenn i = 0 hi (x) = hi−1 (h(x)) wenn i > 0 Zeigen Sie, dass h genau dann kollisionsresistent ist, wenn für jedes i ∈ {1, . . . , n} auch hi kollisionsresistent ist. Lösung: Wir zeigen, dass h genau dann nicht kollisionsresistent ist, wenn hi nicht kollisionsresistent ist. ⇒“: Wenn h nicht kollisionsresistent ist, finden wir mit praktikablem Aufwand x1 und x2 , sodass h(x1 ) = h(x2 ) ” und x1 6= x2 . Damit gilt insbesondere aber auch hi (x1 ) = hi (x2 ) und somit kann hi nicht kollisionsresistent sein. ⇐“: Wenn hi nicht kollisionsresistent ist, finden wir mit praktikablem Aufwand x1 und x2 , sodass hi (x1 ) = ” hi (x2 ) und x1 6= x2 . Sei j der größte Wert, für den noch hj (x1 ) 6= hj (x2 ) gilt. Dieser Wert j lässt sich durch vollständige Suche in maximal i Schritten finden. Nach Konstruktion bilden hj (x1 ) und hj (x2 ) eine Kollsion für h und somit kann h nicht kollisionsresistent sein. Aufgabe 24: Um die Vorteile von asymmetrischer und symmetrischer Verschlüsselung zu kombinieren, werden in der Praxis meist hybride Verschlüsselungsverfahren eingesetzt. Dabei wird ein frischer Zufallsschlüssel k asymmetrisch verschlüsselt und die eigentliche Nachricht mit k symmetrisch verschlüsselt. Was ist von der analogen Idee für Nachrichtenauthentifizierung zu halten, bei der für die eigentliche Nachricht ein MAC mit frischem Zufallsschlüssel k berechnet und k mit einem asymmetrischen Verfahren signiert wird? Lösung: Das Verfahren ist absolut unsicher. Jeder, der k kennt, kann damit einen MAC zu jeder beliebigen Nachricht berechnen. D. h. sobald man eine einzige authentifizierte Nachricht lernt, kann man beliebig andere korrekt authentifizierte Nachrichten erstellen. Aufgabe 25: Bewerten Sie die Sicherheit der folgenden MACs. Dabei sei h : {0, 1}n → {0, 1}n eine Einwegfunktion und g : {0, 1}n × {0, 1}n → {0, 1}n kollisionsresistent; ferner sei Enck die Verschlüsselungsfunktion einer sicheren n-bit-Blockchiffre mit Schlüssel k, es bezeichne IV einen jeweils frisch zufällig gewählten Initialisierungsvektor, der zusammen mit dem MAC übertragen wird, und bei gegebener Nachricht m bezeichne mi den i-ten n-bit-Block von m. (Der Einfachheit halber seien in dieser Aufgabe alle Nachrichtenlängen ganzzahlige Vielfache von n.) • Mack (m) = Enck h(m1 ) ⊕ h(m2 ) ⊕ h(m3 ) ⊕ . . . • Mack (m) = Enck h(. . . h(h(h(m1 ) ⊕ m2 ) ⊕ m3 ) . . .) 1 Dies 2 Ein wurde von einem findigen Studenten im Anschluss an die Übung angemerkt. findiger Student bemerkte dies während der Übung. • Mack (m) = h . . . h h h Enck (m1 ) ⊕ Enck (m2 ) ⊕ Enck (m3 ) ⊕ . . . • Mack (m) = Enck g(. . . g(g(IV , m1 ), m2 ) . . .) • Mack (m) = g . . . g g g Enck (IV ), m1 , m2 , m3 . . . • Mack (m) = g . . . g g g IV , Enck (m1 ) , Enck (m2 ) , Enck (m3 ) . . . Welche Fälschungsmöglichkeiten hat ein Angreifer bei den unsicheren Verfahren? (Für als sicher bewertete Verfahren wird keine weitere Begründung verlangt.) Lösung: • Beim ersten Verfahren kann ein Angreifer beliebig Nachrichtenblöcke vertauschen, ohne dass sich der MAC ändert. Ebenso ändert das zweifache Einfügen eines zusätzlichen Nachrichtenblocks den MAC nicht. Außerdem könnte man, wenn h nicht kollisionsresistent ist, Nachrichtenblöcke durch andere Blöcke mit demselben Bildwert unter h ersetzen. Das Verfahren ist also auf jeden Fall unsicher. • Das zweite Verfahren ist ebenfalls unsicher. Gegeben eine Nachricht m = m1 k . . . kml und Mack (m), kann man recht leicht eine andere Nachricht m̃ erstellen, sodass Mack (m̃) = Mack (m), ohne dass man dafür den Schlüssel k kennen muss. Für i beliebig gewählte Nachrichtenblöcke m̃1 , . . . , m̃i und ein beliebiges j ∈ {1, . . . , l}, findet man immer ein m̃i+1 , sodass gilt: h(. . . h(h(m1 ) ⊕ m2 ) . . .) ⊕ mj = h(. . . h(h(m̃1 ) ⊕ m̃2 ) . . .) ⊕ m̃i+1 Für m̃ = m̃1 k . . . km̃i+1 kmj+1 k . . . kml gilt dann Mack (m̃) = Mack (m). Außerdem könnte man, wenn h nicht kollisionsresistent ist, dies auch wieder nutzen, um einzelne Blöcke zu verändern/ersetzen. • Das dritte Verfahren ist vermutlich sicher. • Das vierte Verfahren ist nicht sicher, wenn g keine Einwegfunktion ist. In solch einem Fall kann ein Angreifer u. U. ein Tupel (IV 0 , m0 ) ∈ g −1 (IV ) finden. Damit kann dann die Nachricht m am Anfang um einen Block verlängert und der Initialisierungsvektor durch IV 0 ersetzt werden, ohne dass sich dadurch der MAC ändert. Durch Iteration des Angriffs kann m ggf. auch um mehrere Blöcke verlängert werden. Falls g eine Einwegfunktion ist, ist das Verfahren allerdings sicher. • Das fünfte Verfahren ist nicht sicher, da man Nachrichten beliebig verlängern und den MAC entsprechend weiterrechnen kann. Gegeben m und Mack (m), sowie ein beliebiger zusätzlicher Nachrichtenblock m0 , gilt: Mack (mkm0 ) = g Mack (m), m0 • Das letzte Verfahren ist sicher, wenn g eine Einwegfunktion ist. Andernfalls3 könnte man für eine n 1-Block-Nachricht m ∈ {0, 1} durch Invertieren von g aus Mac (m) = g IV, Enc (m) das k k Urbild IV, Enck (m) zurückgewinnen und damit dann Mack (mkm) = g g IV, Enck (m) , Enck (m) berechnen. Analog könnte man auch bei beliebigen Nachrichten den letzten Block vervielfältigen. ACHTUNG: Die Angriffe, bei denen g invertiert wird, sind sehr hypothetischer Natur. Eigentlich wird dabei immer auch benötigt, dass das Bild, zu dem ein Urbild berechnet wird, eine bestimmte Form hat. Könnte man g nämlich für beliebige Bildwerte invertieren, so könnte man auch die Kollisionsresistenz brechen, indem man ein x0 ∈ g −1 (g(x)) für ein zufälliges x ∈ {0, 1}n × {0, 1}n berechnet; hierfür würde nämlich mit großer Wahrscheinlichkeit x0 6= x und gleichzeitig auf jeden Fall g(x0 ) = g(x) gelten4 . 3 Dieser Angriff wurde von einem findigen Studenten entdeckt; der Übungsleiter hätte das Verfahren als uneingeschränkt sicher eingestuft. 4 Auch dieser Umstand wurde in unterschiedlichen Kontexten von Studenten in der Übung angemerkt.