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