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.