TECHNISCHE UNIVERSITÄT DARMSTADT FACHGEBIET THEORETISCHE INFORMATIK PROF. JOHANNES BUCHMANN FATEME SHIRAZI Einführung in die Kryptographie WS 2012/2013 1. Lösungsblatt — 19.10.2012 Übung Organization Die Aufgaben sind jeweils Freitags ab 17 Uhr im Netz verfügbar. Die P-Aufgaben sind Präsenzaufgaben und werden während der Übungsstunde gelöst und die H-Aufgaben sind Hausaufgaben, die abgegeben werden können. Die Lösungen von P-Aufgaben werden am nächsten Freitag und die Lösungen von H-Aufgaben werden dann am übernächsten Freitag im Netz verfügbar sein. Lesen Sie bitte regelmäßig die Webseite https://www.cdc.informatik.tu-darmstadt.de/studium-und-lehre/lehre/ws-12-13/vorlesung/einfuehrung-in-die-kryptographie/ um informiert zu sein. P1 Schutzziele (a) Nennen und beschreiben Sie mindestens vier Schutzziele, die man mit Kryptographie erreichen kann. Wie kann man sie erreichen? Lösung. • • • • • Vertraulichkeit: Information wird nur Berechtigten zugänglich gemacht, z.B. durch Verschlüsselung. Integrität: Bei Transport und Speicherung werden Daten nicht verändert, z.B. durch Verschlüsselung und MAC. Authentizität (ist Teil von Integrität): Herkunft ist verifizierbar, z.B. durch MAC. Identifikation: Identität des Kommunikationspartner ist verifizierbar, z.B. durch Digitale Signaturen. Nichtabstreitbarkeit: Integrität und Authentizität sind Dritten gegenüber nachweisbar, z.B. durch Digitale Signaturen. (b) Beschreiben Sie ein persönliches Erlebnis in dem mindestens zwei Schutzziele eine Rolle spielen. Lösung. Beispiel Online Banking: • Vertraulichkeit: Meine Zugangsdaten werden nicht abgehört, • Integrität: Das Zielkonto meiner Überweisung wird nicht verändert, • Identifikation: Ich rede mit meiner Bank. P2 Teilbarkeit Seien a, b, c ganze Zahlen. Man schreibt für die Aussage “a teilt b” kurz a | b. Beweisen Sie die folgenden Implikationen. Verwenden Sie die Definition: a | b genau dann wenn es ein k ∈ Z gibt, so dass b = ak ist. (a) a | b und b | c =⇒ a2 | bc . Lösung. a | b und b | c bedeutet es gibt k, l ∈ Z, so daß b = ak und c = bl = akl ist. Somit ist auch bc = a2 k2 l , also gilt a2 | bc . (b) | a |6=| b | =⇒ a - b oder b - a. Lösung. Wir beweisen die Kontraposition: a | b und b | a =⇒ kak = kbk. Es gibt wieder k, l ∈ Z, so daß b = ak und a = bl ist. Hierraus folgt das kl = lk = 1 gilt, was bedeutet das k, l ∈ {±1}. 1 P3 Euklidischer Algorithmus (a) Sei a = 99, b = 78. Berechnen Sie ggT(a, b) mit Hilfe des euklidischen Algorithmus und stellen Sie ggT(a, b) als Linearkombination von a und b dar. Lösung. Es gilt ggT(99, 78) = 3 und 3 = (−11) · 99 + 14 · 78. (b) Sei a = 89. Für welche der drei Werte b1 = 34, b2 = 56 oder b3 = 76 benötigt der Euklidische Algorithmus die geringste Laufzeit (Anzahl von Iterationen). Finden Sie einen Wert b4 < a für den die Anzahl der Iterationen bei der Berechnung von ggT(a, b4 ) maximal wird. Lösung. Der Euklidische Algorithmus benötigt zur Berechnung von gcd(89, 34) gcd(89, 56) gcd(89, 76) 8 6 5 Iterationen. Man sieht, das die Zahl der Iterationen nicht notwendig mit der Größe des zweiten Operanden wächst. Die größte Zahl der Iterationen (9) wird für die Berechnung von gcd(89, 55) benötigt. In diesem Fall sind alle Quotienten qk = 1. (*) Die Zahlen 89 und 55 sind Glieder der Fibonacci-Folge, die iterativ wie folgt definiert ist: a−2 = 1, a−1 = 1, an = an−1 + an−2 . Die Anzahl der Iterationen des Euklidischen Algorithmus ist maximal für zwei aufeinanderfolgende Elemente der Fibonacci-Folge. (Wie groß ist sie?) H1 Eigenschaften des größten gemeinsamen Teilers Sei n ≥ 3 ∈ N und a1 , a2 , . . . , an ∈ Z. (a) Zeigen Sie, dass dann gilt: ggT(a1 , . . . , an ) = ggT(ggT(a1 , . . . , an−1 ), an ) Hinweis: Verwenden Sie die Eigenschaft a1 Z + . . . + an Z = ggT(a1 , . . . , an )Z. Berechnen Sie für (a1 , . . . , a4 ) := (60, 84, 140, 210) den ggT iterativ. Bestimmen Sie anschließend Koeffizienten j P ( j) ( j) x i ∈ Z so dass für j = 2, . . . 4 gilt: ai x i = ggT(a1 , . . . , a j ). i=1 (4) (4) (4) (4) (b Begründen Sie, wieso für die obigen Werte für a1 , . . . , a4 alle Koeffizienten x 1 , x 2 , x 3 , x 4 der Linearkombination von Null verschieden sein müssen, um den ggT darzustellen. Lösung. (a) Es gilt: g n Z = a1 Z + · · · + an−1 Z +an Z = gcd(g n−1 , an )Z = hn Z {z } | =g n−1 Z Wegen g n ∈ g n Z = hn Z = {hn x : x ∈ Z} ist g n ein Vielfaches von hn . Analog gilt g n | hn und wegen g n , hn ≥ 0 (Definition des ggT) auch Gleichheit. g2 = ggT(60, 84) = 12 = 3 · 60 − 2 · 84, g3 = ggT(12, 140) = 4 = 12 · 12 − 1 · 140 = 12 · (3 · 60 − 2 · 84) − 1 · 140, g4 = ggT(4, 210) = 2 = −52 · 4 + 1 · 210 = −52 · [12 · (3 · 60 − 2 · 84) − 1 · 140] + 1 · 210. Damit erhält man g4 = 2 = −1872 · 60 + 1248 · 84 + 52 · 140 + 1 · 210. (4) (b) Wäre x j = 0 für ein j ∈ {1, . . . , 4}, so ließe sich die Zahl g4 = 2 bereits durch drei (oder noch weniger) der ai ’s darstellen. Über die Primfaktorzerlegungen a1 a2 a3 a4 = = = = 60 84 140 210 = = = = 2 2 2 2 · · · 2 2 2 · · · 3 3 3 · 5 · · 5 5 · · · 7 7 7 erkennt man aber, dass deren ggT dann echt größer als 2 ist – Widerspruch. 2 H2 Größter gemeinsamer Teiler Finden Sie eine Folge positiver ganzer Zahlen (ai )i≥1 ⊆ Z, so dass die Berechnung von ggT(ai+1 , ai ) mit dem Euklidischen Algorithmus genau i Iterationen benötigt. Begründen Sie Ihr Ergebnis. Wie heißt diese berühmte Folge, die in internationalen Bestsellern wie “The Da Vinci Code” Erwähnung findet? Lösung. Die Lösung ist die Fibonacci-Folge in der jedes Glied die Summe der zwei vorrigen ist. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . . Bei zwei aufeinanderfolgenden Zahlen aus dieser Folge hat Euklids Algorithmus die schlecht-möglichste (englisch: worstcase) Laufzeit. Zulässige Lösungen sind auch alle ganzzahligen Vielfache der Fibonacci-Folge. 3