Institut für Theoretische Informatik ITI Dr. Jürgen Koslowski Cryptologie 1+2 Aufgabenblatt 3, 2016-11-08 Übungsaufgabe 1 Bestimmen Sie unter Verwendung des erweiterten Euklidischen Algoritmus die Inversen modulo 2175 von 203 und 124 , falls sie existieren. Beschreiben Sie das Verfahren und führen Sie die notwendigen einzelnen Rechnungen explizit aus (ggf. durch Angabe einer geeigneten Tabelle). Lösungsvorschlag: Der zweite Teil des erweiterten Euklidischen Algorithmus ist nur durchzuführen, wenn bei der Bestimmung des größten gemeinsamen Teilers im ersten Teil der Wert 1 auftritt: 2175 203 145 58 = 10 · 203 + 145 = 1 · 145 + 58 = 2 · 58 + 29 = 2 · 29 + 0 Also folgt ggT(2175, 203) = 29 und das gesuchte Inverse existiert nicht. Im zweiten Fall liefert der Euklidische Algorithmus 2175 124 67 57 10 7 = 17 · 124 + 67 = 1 · 67 + 57 = 1 · 57 + 10 = 5 · 10 + 7 = 1 · 7 + 3 = 2 · 3 + 1 und somit 0 1 (−17) 18 (−35) 193 = 17 · 1 = 1 · (−17) = 1 · 18 = 5 · (−35) = 1 · 193 = 2 · (−228) + (−17) + 18 + (−35) + 193 + (−228) + 649 Dies liefert 124−1 mod 2175 = 649 mod 2175 . Übungsaufgabe 2 Bestimmen Sie die letzten beiden Ziffern von 19961996 ohne Zuhilfenahme eines Rechners. Lösungsvorschlag: Gesucht ist der Wert von x = 19961996 mod 100 . Um eine handhabbarere Basis zu erhalten, wenden wir den Modulus an und erhalten x = 961996 mod 100 = (−4)1996 mod 100 = 41996 mod 100 (∗) wobei im letzten Schritt berücksichtigt wurde, dass der Exponent gerade ist. Wegen ggT(4, 100) = 4 können wir den Satz von Euler und die daraus folgenden Rechenregeln nicht anwenden. Andererseits erwarten wir schon, dass fortgesetztes Potenzieren von 4 modulo 100 irgendwann regelmäßiges Verhalten zeitigt. In der Tat gilt 41 mod 100 = 4 42 mod 100 = 16 43 mod 100 = 64 44 mod 100 = 56 45 mod 100 = 24 46 mod 100 = 96 = (−4) mod 100 woraus wir 411 mod 100 = 4 folgern. Damit ist 11 der kleinste Exponent mit der Eigenschaft, dass ein früherer Wert wieder angenommen wird, und zwar der von 41 mod 100 . In diesem “Orbit” der Größe 10 tritt 1 = 40 mod 100 allerdings nicht auf. Damit folgt 41996 mod 100 = 46 mod 100 = 212 mod 100 = 4096 mod 100 = 96 (In Gleichung (∗) hätte man evtl. gleich (−4) mod 100 mit 4096 mod 100 identifizieren und so die Rechnung etwas abkürzen können.) Alternativ kann man auch den Chinesischen Restsatz anwenden: 100 = 4 · 25 und ggT(4, 25) = 1 , sowie ϕ(4) = 2 und ϕ(25) = 20 . Einerseits gilt 19961996 mod 4 = 0 , weil 1996 mod 4 = 0 . Andererseits erhält man 1996 mod 25 = (−4) mod 25 = 21 , und damit 19961996 mod 25 = (−4)1996 mod 25 = 416 mod 25 = 4 · 45 3 mod 25 = 4 · (−1)3 mod 25 = 21 Gemäß dem Chinesischen Restsatz wird h0, 21i ∈ Z4 × Z25 in Z100 abgebildet auf 4 · 4−1 mod 25 · 21 mod 100 = 4 · 19 · 21 mod 100 = 4 · 399 mod 100 = −4 mod 100 = 96 Übungsaufgabe 3 Zeigen oder widerlegen Sie: ist n = torzerlegung von n , so gilt Q i<k pri i mit pi prim für i < k die eindeutige Primfak- ϕ(n) = n · Y 1 . 1− pi i<k [Hinweis: Sie können die Formel oben auf Seite 41 des Buchs hier nicht anwenden; diese Formel soll gerade überprüft werden.] Lösungsvorschlag: P Erste Variante: Induktion über die Anzahl der Primfaktoren, d.h., über i<k ri , und Verwendung der ursprünglichen Definition von ϕ : für n = 1 und n prim ist die Behauptung klar, da sich das Produkt über keinen bzw. genau einen Faktor erstreckt. Wir nehmen an, die Behauptung sei für n erfüllt. Für eine Primzahl p ist sie nun für n · p zu testen. Offenbar gilt für a < np ggT(a, np) = 1 ⇐⇒ ggT(a, n) = 1 ∧ ggT(a, p) = 1 Damit ergibt sich ϕ(np) = |{ a ∈ Znp : ggT(a, np) = 1 }| = |Znp | − |{ a ∈ Znp : ggT(a, n) 6= 1 }| − |{ a ∈ Znp : ggT(a, p) 6= 1 }| + |{ a ∈ Znp : ggT(a, p) 6= 1 ∧ ggT(a, n) 6= 1 }| = np − p(n − ϕ(n)) −n ( + n, falls ggT(n, p) = p n − ϕ(n), falls ggT(n, p) = 1 ( pϕ(n), falls ggT(n, p) = p = (p − 1)ϕ(n), falls ggT(n, p) = 1 Q 1 p · n · 1 − i<k p i = Q Q 1 (p − 1) · n · i<k 1 − pi = p · n · i<k 1 − falls ggT(n, p) = p 1 1 pi · 1 − p falls ggT(n, p) = 1 Zweite, viel kürzere, Variante: Anwendung des Satzes von Folie 56: ! Y Y Y Y Y 1 ri ri ri −1 ri ri −1 ϕ pi = ϕ (pi ) = (pi − 1)pi = pi − pi =n· 1− pi i<k i<k i<k i<k i<k Übungsaufgabe 4 Es sei C = DES(M, K) die Verschlüsselung eines binären Klartextes M mit Hilfe des Schlüssels K bei Verwendung des Data Encryption Standard. Mit c(M ) bzw. c(K) bezeichnen wir das bitweise Komplement von M und K . Weiterhin sei C 0 = DES(c(M ), c(K)) der zugehörige Chiffretext. Beweisen Sie, dass C 0 = c(C) gilt. Was folgt daraus für einen Klartextangriff? Lösungsvorschlag: Wir nennen eine Abbildung Zn2 tierung kommutiert, d.h., p Zm 2 komlementär , falls sie mit der bitweisen KomplemenZn2 p c Zn2 Zm 2 c p (1) Zm 2 Komplementäre Funktionen sind offenbarr unter Komposition abgeschlossen und jede Projekπi tion Zm Z2 , i < m , ist komplementär. Außerdem ist Zn2 f Zm 2 genau dann kom2 plementär, wenn alle Kompositionen πi ◦ f mit i < m diese Eigenschaft haben. Folglich ist 0 1 das cartesische Produkt Zn2 0 × Zn2 1 f0 × f1 Zm × Zm zweier komplementärer Funktionen 2 2 wieder komplementär. Gleiches gilt für alle Funktionen, die durch Vervielfachen, Löschen oder Vertauschen von Projektionen gebildet werden können. Damit folgt sofort, dass mit dem Schlüssel K 0 = c(K) für die Teilschlüssel gilt Ki0 = c(Ki ) , 1 ≤ i ≤ 16 . Eine wichtige nicht komplementäre Funktion ist ⊕ (exclusive or ), es gilt sogar m Zm 2 × Z2 c×c m Zm 2 × Z2 (2) ⊕ ⊕ Zm 2 Aber dafür sind folgende Kompositionen komplementär, die genau eines der beiden Argumente von ⊕ komplementieren: m Zm 2 × Z2 c × id id × c m Zm 2 × Z2 ⊕ Zm 2 (3) Um nachzuweisen, dass DES komplementär ist, betrachten wir den Algorithmus auf Seite 52 im Buch (Folie 72) mit der Eingabe (M 0 , K 0 ) = (c(M ), c(K)) . Die initiale Permutation ist komplementär, liefert also (L00 , R00 ) = (c(L0 ), c(R0 )) . Wir nehmen an, dass im Schritt i < 15 die Ergebnisse (L0i , Ri0 ) = (c(Li ), c(Ri )) geliefert werden. Dann erhalten wir im nächsten Schritt 0 0 (L0i+1 , Ri+1 ) = (Ri0 , L0i ⊕ f (Ri0 , Ki+1 )) = (c(Ri ), c(Li ) ⊕ f (c(Ri ), c(Ki+1 ))) (4) Der erste Schritt bei der Berechnung von f (c(Ri ), c(Ki+1 )) besteht darin, E(c(Ri )) ⊕ c(Ki+1 ) zu bilden. Aber da E nach der Vorüberlegung komplementär ist, erhalten wir wegen (2) E(c(Ri )) ⊕ c(Ki+1 ) = c(E(Ri )) ⊕ c(Ki+1 ) = Ri ⊕ Ki+1 Somit entfällt erfreulicherweise die Untersuchung der S-Boxen darauf, wie sie komplementierte Argumente verarbeiten und es gilt f (c(Ri ), c(Ki+1 )) = f (Ri , Ki+1 ) . Da die Funktionen in (3) komplementär sind, können wir die Berechnung (4) wie folgt fortsetzen 0 (L0i+1 , Ri+1 ) = (c(Ri ), c(Li ) ⊕ f (Ri , Ki+1 )) = (c(Ri ), c(Li ⊕ f (Ri , Ki+1 ))) = c(Ri , Li ⊕ f (Ri , Ki+1 )) Im 16. Schritt unterbleibt die Vertauschung der beiden Hälften, wir erhalten 0 (R16 , L016 ) = c(R16 , L16 ) Die finale Permutation ist wieder komplementr, damit folgt die Behauptung. Der Aufwand bei einem Klartextangriff halbiert sich somit. Übungsaufgabe 5 (a) Bestimmen Sie für den DES die zu P C1 inverse Schlüsselpermutation. (b) Im DES gibt es vier Schlüssel K , so daä die Chiffrierung EK selbstinvers ist, d.h., es gilt EK (EK (M )) = M für alle M ∈ Z64 2 . Bestimmen Sie diese Schlüssel. Lösungsvorschlag: (a) Aus dem Vergleich der Identitätstransformation und P C1 läßt sich mation direkt ablesen: −1 8 17 26 62 56 48 40 32 24 16 8 7 0 57 49 41 33 25 17 15 6 16 25 61 9 5 14 24 60 1 58 50 42 34 26 23 18 10 4 13 22 59 2 59 51 43 35 31 = 62 54 46 38 30 22 14 39 3 12 21 30 6 61 53 45 37 29 21 47 2 11 20 29 13 5 60 52 44 36 28 55 1 10 19 28 20 12 4 27 19 11 3 63 0 9 18 27 die inverse Transfor58 57 56 54 53 52 51 50 49 48 46 45 44 43 42 41 40 38 37 36 35 34 33 32 7 15 23 31 39 47 55 63 Die ursprüngliche Beschreibung von P C1 eliminiert die Paritätsbits des 64-Bit Schlüssels (blau), was das Auffinden der inversen Permutation duch das Auszählen der Positionen unnötig erschwert. Behält man die Paritätsbits bei (die in P C1 natürlich nicht mehr als solche fungieren), erhält man (P C1 )−1 , indem man in Position k < 64 die Position der Zahl k in P C1 einträgt. Wie ist P C1 entstanden? Neben den invarianten Paritätsbits ergeben sich in (P C1 )−1 zwei dreieckige Bereiche, rot und grün markiert, die durch eine gewisse Regelmäßigkeit gekennzeichet sind. Es stellt sich heraus, dass bestimmte geometrische Transformationen, die diese farbigen Bereiche berücksichtigen, die initiale Permutation P C1 erzeugen. Wir beginnen markieren die interessanten Bereiche in der Identitätstransformation: 0 8 16 24 32 40 48 56 1 2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20 21 22 23 25 26 27 28 29 30 31 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 50 51 52 53 54 55 57 58 59 60 61 62 63 Die letzte Spalte der Paritätsbits (blau) bleibt invariant. Wir fügen das rote bzw. grüne Dreieck um eine Spalte nach rechts, bzw. links verschoben unterhalb der linken vier bzw. der rechten drei schwarzen Spalten an. Dann fügt man die Spalten (bis auf die letzte der Paritätsbits) in geometrisch absteigender Reihenfolge zu einer (7 × 8) -Matrix zusammen (wobei die letzten vier Spalten von hinten nach vorne umsortiert werden). Nach Drehung dieser (7 × 8) -Matrix um −π/2 erhält man P C1 . 8 16 24 32 40 48 56 17 25 33 41 49 57 0 26 34 42 50 58 1 9 35 43 51 59 2 3 10 11 18 19 27 4 12 20 28 36 44 52 60 5 13 7 15 23 31 14 39 21 22 47 29 30 55 37 38 63 45 46 53 54 61 62 6 7→ 56 48 40 32 24 16 8 7 0 57 49 41 33 25 17 15 9 1 58 50 42 34 26 23 18 10 2 59 51 43 35 31 62 54 46 38 30 22 14 39 6 61 53 45 27 29 21 47 13 5 60 52 44 36 28 55 20 12 4 27 19 11 3 63 Führt man ausgehend von 0 8 16 24 32 40 48 56 1 2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20 21 22 23 25 26 27 28 29 30 31 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 50 51 52 53 54 55 57 58 59 60 61 62 63 diese Transformationen rückwärts durch, muß sich (P C1 )−1 ergeben. Wir starten mit einer (8 × 8) -Matrix der Zahlen von 0 bis 63 (zeilenweise aufgelistet), drehen die ersten 7 Spalten um π/2 und invertieren die Reihenfolge der letzten vier Spalten. Vertikale Verschiebung der Spalten gemää des obigen Schemas liefert dann 6 5 4 3 2 1 0 14 13 22 12 21 30 11 20 29 10 19 28 9 18 27 8 17 26 62 16 25 61 24 60 59 58 57 56 54 53 52 51 50 49 48 46 45 44 43 42 41 40 7 15 23 31 38 39 37 47 36 55 35 63 34 33 32 Fügt man die farbigen Dreiecke wieder oben ein, so erhält man (P C1 )−1 , wie oben angegeben. (b) Da die Dechiffrierung nur die Reihenfolge der Teilschlüssel umkehrt, sind Schlüssel K̄ = hks : s ≤ 64i mit der folgenden Eigenschaft gesucht Ki = K15−i für i < 8 Dies ist sicherlich der Fall, wenn für C0 D0 ∈ 256 , was P C1 (K̄) ohne die alten Paritätsbits entspricht, gilt Ci = C15−i und Di = D15−i für i < 8 Die Bedingung C0 = C15 impliziert, dass die ersten Bits dieser Wörter übereinstimmen müssen; nach Vorgabe der Linksverschiebungen sind dies aber die ersten beiden Bits von C0 Ebenso müssen das erste und das zweite Bit von C0 übereinstimmen, usw.. Folglich müssen alle 28 Bits von C0 konstant denselben Wert haben. Entsprechendes gilt auch für die 28 Bits von D0 . Wir suchen nun Schlüssel K , so dass für den um Paritätsbits ergänzten Schlüssel K̄ nach Anwendung von P C1 und Entfernen der Paritätsbits ein Wert in {028 , 128 } · {028 , 128 } übrigbleibt. Aber dazu ist einfach die inverse Permutation P C1−1 auf die vier möglichen um (bisher unbekannte) Paritätsbits ergänzte Wörter anzuwenden, also auf 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ? ? ? ? ? ? ? ? und 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ? ? ? ? ? ? ? ? 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 sowie auf die bitweisen Komplemente. Das liefert bei ungerader Parität 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 und 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 sowie die entsprechenden Komplemente. Platzsparender ist die Hex-Schreibweise: K̄0 = 0101010101010101 = (01)8 K̄1 = FEFEFEFEFEFEFEFE = (FE)8 K̄2 = 1F1F1F1F0E0E0E0E = (1F)4 (0E)4 K̄3 = E0E0E0E0F1F1F1F1 = (E0)4 (F1)4 Verwendet man stattdessen die Paritätsbits zur Herstellung gerader Parität, so erhält man K̄0 = 0000000000000000 = (00)8 K̄1 = FFFFFFFFFFFFFFFF = (FF)8 K̄2 = 1E1E1E1E0F0F0F0F = (1E)4 (0F)4 K̄3 = E1E1E1E1F0F0F0F0 = (E1)4 (F0)4 Vermutlich will man aus technischen Gründen das Byte 00 vermeiden.
© Copyright 2024 ExpyDoc