Kryptographie

Werbung
TECHNISCHE UNIVERSITÄT DARMSTADT
FACHGEBIET THEORETISCHE INFORMATIK
PROF. JOHANNES BUCHMANN
FATEME SHIRAZI
Einführung in die
Kryptographie
WS 2012/2013
9. Lösungsblatt — 14.12.2012
P1 Hashfunktionen
Sei f : R → R, x 7→ x − bxc. Dabei ist b·c die sogenannte
floor function, die einer reellen Zahl x die eindeutig bestimmte
p
ganze Zahl z mit 0 ≤ x − z < 1 zuordnet, z.B. b 7c = 2. Betrachten Sie die Hashfunktion
p
h : N≥0 → N≥0 , k 7→ b10 · f ( 3k)c.
(a) Bestimmen Sie das Bild von h, d.h. alle Funktionswerte, die h(k) annehmen kann.
Lösung. Das Bild der Funktion f liegt in jedem Fall im halboffenen Intervall [0, 1).
(b) Wie viele Funktionswerte h(k) müssen Sie höchstens untersuchen um eine Kollision zu finden? Geben Sie eine
Kollision von h an.
Lösung. Aus Teil (a) weiß man, dass bei 11 verschiedenen Werten für k mindestens eine Kollision auftreten muss.
Probiert man systematisch die Werte 0, 1, . . . durch und speichert die Hashwerte, so tritt erstmalig bei 3 und 7 eine
Kollision auf, nämlich h(3) = h(7) = 1.
P2 ElGamal-Signatur
(a) Es sei p = 23 und g ≡ 7 mod p eine Primitivwurzel modulo 23. Alice signiert mit dem geheimen Schlüssel a = 5
den Hashwert h(m) = 13 einer Nachricht m. Berechnen Sie die ElGamal-Signatur, wenn Alice als Zufallszahl k = 9
wählt.
Lösung. Alice hat zum Signieren
r ≡ g k mod p
(1)
s ≡ k−1 (h(m) − ar) mod (p − 1)
(2)
sowie
zu berechnen.
Für die konkret angegebenen Werte bedeutet dies: In (1) wird r durch schnelle Exponentiation berechnet zu r ≡
79 ≡ 15 mod 23. Das Inverse von k modulo (p − 1) in (2) existiert, da ggT(k, p − 1) = ggT(9, 22) = 1, und
lässt sich mit dem Erweiterten Euklidischen Algorithmus finden: 9−1 ≡ 5 mod 22. Damit ergibt sich schließlich
s ≡ 5 · (13 − 5 · 15) ≡ 20 mod 22 und die Signatur zur Nachricht m besteht aus dem Paar (r, s) = (15, 20).
(b) In Ihrem Besitz ist die Signatur (r, s) = (50, 9) zur Nachricht m mit h(m) = 3, wobei (p, g, A) = (59, 2, 10) Alices
öffentlicher Schlüssel ist. Verifizieren Sie die Gültigkeit der Signatur.
Lösung. Zur Verifizierung muss man Alices öffentlichen Schlüssel (p, g, A) = (59, 2, 10) besitzen und die folgenden
Bedingungen prüfen:
1≤ r ≤ p−1
(3)
Ar r s ≡ g h(m) mod p
(4)
Bedingung (3) ist offensichtlich erfüllt, da r = 50. Für (4) rechnet man Ar r s ≡ 1050 509 ≡ 4 · 2 ≡ 8 mod 59 aus
und vergleicht dies mit g h(m) ≡ 23 ≡ 8 mod 59. Die Verifikationsbedingungen sind erfüllt und ist die Signatur somit
gültig.
1
P3 Existentielle Fälschung
Angenommen, im ElGamal-Signaturverfahren ist die Bedingung 1 ≤ r ≤ p − 1 nicht gefordert. Verwenden Sie die
existentielle Fälschung aus der Vorlesung, um eine ElGamal-Signatur eines Dokumentes m0 mit Hashwert h(m0 ) = 4 mit
dem öffentlichen Schlüssel (p, g, A) = (23, 7, 17) aus der Signatur (r, s) = (15, 20) für ein Dokument m mit h(m) = 13 zu
berechnen.
Lösung. Sei (p, g, A) = (23, 7, 17) der öffentliche Schlüssel und (r, s) = (15, 20) eine gültige Signatur. Der Angreifer
berechnet zunächst
u = h(m0 )h(m)−1 mod (p − 1),
sofern h(m) modulo (p − 1) invertierbar ist. Weiter sei
s0 = su mod (p − 1).
Mit Hilfe des Chinesischen Restsatzes lässt sich ein r 0 finden, welches der simultanen Kongruenz
r 0 ≡ ru mod (p − 1),
r 0 ≡ r mod p
genügt. Dann ist (r 0 , s0 ) eine gültige Signatur des Hashwerts h(m0 ).
Konkret ist u ≡ 4 · 13−1 ≡ 4 · 17 ≡ 2 mod 22, s0 ≡ 20 · 2 ≡ 18 mod 22. Mit dem Chinesischen Restsatz lässt sich r 0 = 360
aus der simultanen Kongruenz r 0 ≡ 15 · 2 ≡ 8 mod 22, r 0 ≡ 15 mod 23 ermitteln.
Es bleibt nur noch zu prüfen, dass (r 0 , s0 ) = (360, 18) und h(m0 ) = 4 die Verfikationsbedingung (4) erfüllen: Die rechte
0
0
0
Seite ist g h(m ) ≡ 74 ≡ 9 mod 23. Die linke Seite der Kongruenz ist Ar (r 0 )s ≡ 17360 · 36018 ≡ 178 · 1518 ≡ 18 · 12 ≡
9 mod 23. Hierbei macht man sich zum einem zunutze, dass 360 ≡ 15 mod 23 ist, und zum anderen:
16
17360 ≡ 1716·22+8 ≡ (1722 )
| {z }
· 178 ≡ 178 ≡ 17360 mod 22 mod 23.
≡1
Dies ist eine Anwendung des kleinen Satzes von Fermat.
H1 ElGamal-Signatur
In dieser Aufgabe betrachten wir eine Verallgemeinerung der ElGamal-Signatur, bei der die Gruppe (Z/pZ)? durch eine
andere zyklische Gruppe G ersetzt wird. Wir bezeichnen die Anzahl der Elemente von G mit |G| = n.
Wir setzen voraus, dass wir eine Hashfunktion h gegeben haben, die uns beliebige Bitstrings auf ganze Zahlen im Intervall
[0, n) abbildet. Des Weiteren benötigen wir eine Funktion, die uns Elemente von G in ganze Zahlen abbildet. Wir werden
diese Funktion mit l bezeichnen.
In der Schlüsselerzeugung startet man mit einem Erzeuger g der als zyklisch vorausgesetzten Gruppe G und wählt einen
Exponenten a im offenen Intervall (1, n). Der öffentliche Schlüssel ist dann (g, A) = (g, g a ) ∈ G 2 .
Zur Erzeugung der Signatur für ein Dokument m wählt man einen zufälligen ganzen Exponenten k im Intervall (1, n),
der zu n teilerfremd ist, und berechnet:
r = g k,
s ≡ k−1 (h(m) − a · l(r)) mod n
Die Signatur ist dann (r, s) ∈ G × Z/nZ.
(a) Welche Gleichheit muss der Verifizierer testen?
Lösung. Der Verifizier muss testen, ob
?
Al(r) r s = g h(m) .
In der Tat ist bei einer korrekt erstellten Signatur
Al(r) r s = (g a )l(r) (g k )k
−1 (h(m)−a·l(r))
= g a·l(r) g h(m)−a·l(r)
= g h(m) .
2
(b) Wenn in G die Berechnung von diskreten Logarithmen einfach ist, so ist ein Angriff auf das ElGamalSignaturverfahren in dieser Gruppe möglich. Als Beispiel wählen wir G = (Z/pZ, +), die additive Gruppe der
Restklassen zum Modulus p.
Zeigen Sie, dass das Signaturschema völlig unsicher ist, indem Sie die Unterschrift zu einer Nachricht m mit Hashwert
h(m) = 357 zum öffentlichen Schlüssel (p, g, A) = (1031, 215, 548) erzeugen.
Lösung. Zuerst berechnen wir den privaten Schlüssel. Aus A ≡ a · g mod p leiten wir ab
a ≡ A · g −1 ≡ 548 · 215−1 ≡ 156 mod p.
Nun können wir leicht eine Signatur berechnen. Wählen wir z.B. k = 4, dann ist r ≡ k · g ≡ 860 mod p und
k−1 ≡ 258 mod p, so dass
s ≡ k−1 (h(m) − r · a) ≡ 258 · (357 − 860 · 156) ≡ 830 mod p.
Die Verifikation der Signatur erfolgt dann über die Kongruenz
r · A + s · r ≡ 416 ≡ h(m) · g mod p.
Es ist jedoch auch ohne Ermittlung des geheimen Schlüssels möglich, eine Signatur zu erstellen, die als korrekt
verifiziert wird. Dazu wählen wir r völlig beliebig mit 1 ≤ r ≤ p − 1 und berechnen ein passendes s mit s ≡
r −1 · h(m) · g − A mod p.
(c) Wir wählen G als die multiplikative Gruppe des Körpers
F25 = Z2 [x]/p(x)Z2 [x]
mit
p(x) = x 5 + x 3 + 1.
(Die multiplikative Gruppe eines Körpers enthält alle Elemente des Körpers außer der 0. Gruppenoperation ist die
Multiplikation.) Erzeugen Sie den öffentlichen Schlüssel aus (g, a) = (x, 10).
Lösung. Der private Schlüssel besteht aus dem Exponenten a und der öffentliche Schlüssel aus dem Paar (g, g a mod
p(x)), wobei g ein Erzeuger der multiplikativen Gruppe unseres Körpers ist. Da die Gruppenordnung von F25 eine
Primzahl (31) ist, sind alle Elemente g ∈ F25 mit g 6∈ {0, 1} Erzeuger.
Als privaten Schlüssel nehmen wir a = 10. Wir erhalten A ≡ g a ≡ x 4 + x + 1 mod p(x). Der öffentliche Schlüssel ist
damit (g, A) = (x, x 4 + x + 1).
3
Herunterladen