Kryptologie - Institut für Theoretische Informatik
Transcrição
Kryptologie - Institut für Theoretische Informatik
Skript zur Vorlesung: Kryptologie Sommersemester 2007 Dr. Andreas Jakoby Institut für Theoretische Informatik Universität zu Lübeck Inhaltsverzeichnis 1 Einführung 1 2 Klassische Kryptosysteme 3 2.1 Zwei-Wege Kryptosysteme: Das Kryptosystem von Julius Caesar . . . . . . . . . . . . 3 2.2 Affine Kryptosysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Das PLAYFAIR-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Polyalphabetische Kryptosysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.1 Vigenère System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.2 Die Kryptoanalyse des Vigenère Verfahrens . . . . . . . . . . . . . . . . . . . . 11 2.4.3 Die Kryptoanalyse bei unbekannter Schlüssellänge: Der Kasiski-Test . . . . . . 12 2.4.4 Der Friedman-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.5 Eine Verallgemeinerung des Vigenère Verfahrens . . . . . . . . . . . . . . . . . 17 Rotor-Chiffriermaschinen: Die Enigma . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 3 Der Begriff der Sicherheit 22 3.1 Kryptosysteme mit perfekter Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 A priori Annahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1 Variante 1: 1-Gramm-Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.2 Variante 2: 2-Gramm-Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.3 Variante 3: Markov-Ketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Bayes’scher Ansatz in der Kryptoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3 4 Symmetrische Verschlüsselungsalgorithmen 4.1 35 Der Data Encryption Standard (DES) . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.1 Aufbau des DES-Kryptosystems . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.2 Berechnung der Funktion f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.3 Die Teilschlüssel Ki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.1.4 Die Entschlüsselöung eines DES-Cyphertextes . . . . . . . . . . . . . . . . . . . 41 I 4.2 Das Triple DES-Kryptosystem (TDES) . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3 Iterierte Blockkryptosysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4 Differentielle Kryptoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.5 Lineare Kryptoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.5.1 Ein erster Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.5.2 Zusammensetzung von affin-linearen Approximationen . . . . . . . . . . . . . . 52 4.5.3 Angriff auf den letzten Rundenschlüssel für ein SPN-Kryptosystem . . . . . . . 55 Advanced Encryption Standard (AES) . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.6.1 Mathematische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.6.2 Zustand des AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.6.3 Die Unterfunktionen des AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.6.4 Die Rundenschlüssel beim AES . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.6.5 Der AES-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.6 5 Public Key Kryptographie 69 5.1 Das generelle Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Das Merkle-Hellman Kryptosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2.1 Konstruktion des öffentlichen Schlüssels . . . . . . . . . . . . . . . . . . . . . . 71 5.2.2 Entschlüsselungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2.3 Attacke von Shamir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Probleme aus der Zahlentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.3.1 Grundlegende Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Das RSA-Kryptosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.3 5.4 II 1 Einführung Die Geschichte der Kryptologie geht zurück bis in die Antike. Die Anwendungsbereiche der Kryptologie sind historisch mehr im militärischen Bereich angesiedelt, jedoch gelangte die Kryptologie im Verlaufe des letzten Jahrhunderts immer mehr ins Zentrum des allgemeinen Interesses. So benutzen wir heute fast alltäglich kryptographische Protokolle beim elektronischen Zahlungsverkehr oder beim Umgang mit einem Geldautomaten. Die Kryptologie besteht aus zwei wesentlichen Disziplinen: 1. der Kryptographie, d.h. die Kunst eine Nachricht zu verschlüsseln, so dass es für einen Unbefugten nicht möglich ist diese zu lesen oder zu manipulieren, und 2. der Kryptoanalyse, d.h. der Kunst dieses doch zu tun. Das allgemeine Szenario in der Kryptologie besteht aus drei Personen, die wir Alice, Bob und Eve nennen. Alice möchte eine Nachricht über einen unsicheren Kanal an Bob senden, so dass es für Eve, die Zugriff auf den Kanal hat, nicht möglich ist den Inhalt der Nachricht zu erkennen oder zu manipulieren. Wir können also folgendes Bild für das Basismodell der Kryptologie zeichnen: Alice: Bob: Verschlüsselt die Nachricht und sendet sie an Bob. Empfängt die verschlüsselte Nachricht und entschlüsselt sie. unsicherer Kanal unsicherer Kanal Eve: Greift auf den Kanal zu, versucht die verschlüsselte Nachricht zu entschlüsseln oder zu ändern. Abbildung 1: Basismodell der Kryptologie. Die Nachricht, die von Alice an Bob gesendet werden soll, nennen wir Plaintext und die verschlüsselte Nachricht Ciphertext. Um ein praktikables Kryptosystem zu erhalten, muss sichergestellt sein, dass 1. die Verschlüsselung des Plaintextes für Alice einfach zu berechnen ist, 2. die Entschlüsselung des Ciphertextes für Bob einfach zu berechnen ist und 3. die Entschlüsselung bzw. die Manipulation des Ciphertextes für Eve nur mit enormen Aufwand möglich ist. Die klassische Lösung dieser Problemstellung führt uns zu den sogenannten Secret-Key-Kryptosystemen, wo sowohl Alice als auch Bob einen geheimen Schlüssel besitzen, der es ihnen erlaubt einen Plaintext effizient zu verschlüsseln bzw. den Ciphertext effizient zu entschlüsseln. Bevor wir auf verschiedene Kryptoverfahren im Detail eingehen, wollen wir den Begriff der Sicherheit näher formalisieren. Zunächst müssen wie hierbei die Rolle von Eve etwas näher betrachten. Wir oben 1 gesagt, versucht Eve den Ciphertext zu entschlüsseln oder zu manipulieren. Prinzipiell können wir zwei verschiedene Formen einer solchen Attacke unterscheiden: 1. Die aktive Attacke: Hierbei erlauben wir es Eve die Nachricht von Alice an Bob zu verändern. 2. Die passive Attacke: Hierbei ist es Eve nur erlaubt die Nachricht von Alice an Bob abzuhören. Bestehend auf diesem Wissen kann Eve versuchen den Plaintext zu bestimmen. Erlauben wir aktive Attacken, so müssen wir zunächst die Frage beantworten, welches Ziel Eve verfolgt. So ist es möglich, dass sie nur den Ciphertext entschlüsseln möchte oder aber diesen so manipulieren will, dass Bob eine falsche Nachricht erhält. Da sich diese Frage bei passiven Attacke nicht stellt, können wir für diesen Fall eine einfache Definition angeben, die auf der Ununterscheidbarkeit der Kommunikation zwischen Alice und Bob basiert. Wir definieren hierfür zunächst: Definition 1 Seien X = {Xi }i∈N und Y = {Yi }i∈N zwei Familien von Zufallsvariablen, wobei wir für ein festes Polynom p die Variablen Xi , Yi nur Werte aus {0, 1}≤p(i) annehmen. Dann nennen wir X und Y ununterscheidbar, wenn für alle i und alle w ∈ {0, 1}≤p(i) gilt Pr[Xi = w] = Pr[Yi = w] . Wir nennen X, Y statistisch ununterscheidbar, wenn für alle Polynome q und für alle hinreichend große i gilt X 1 |Pr[Xi = w] − Pr[Yi = w]| ≤ . q(i) ≤p(i) w∈{0,1} Wir nennen X, Y berechenbar ununterscheidbar, wenn für alle probabilistischen polynomialzeitbeschränkten Algorithmen E , für alle Polynome q und für alle hinreichend große i gilt |Pr[E(i, Xi ) = 1] − Pr[E(i, Yi ) = 1]| ≤ 1 . q(i) Als Xi und Yi können wir die möglichen Kommunikationssequnezen zwischen Alice und Bob bzw. den übertragenen Ciphertext bei einem Plaintext x bzw. y sehen. Wünschenswert wäre es, wenn ein Kryptosystem so sicher wäre, dass Eve keinen Unterschied zwischen dem möglichen Ciphertexten für x und y erkennen könnte. Dieses würde bedeuten, dass Xi und Yi ununterscheidbar sind. Die wenigen Kryptosysteme, welche diese Sicherheit gewährleisten sind sogenannte One-Time Pad Verfahren. Betrachten wir nun die Definition von berechenbarer Ununterscheidbarkeit. Den Algorithmus E , den wir hier herangezogen haben, können wir als die Attacke von Eve betrachten, die das Verschlüsselungsverfahren von Alice polynomiell oft befragen bzw. belauschen kann. Wäre die Differenz 1 |Pr[E(i, Xi ) = 1] − Pr[E(i, Yi ) = 1]| größer als q(i) für ein Polynom q , dann könnte Eve nach q(i) Versuchen mit großer Wahrscheinlichkeit zwischen x und y unterscheiden. Das Verfahren wäre also nicht besonders sicher. Es wäre somit erstrebenswert, wenn ein Kryptosystem zumindest berechenbare Ununterscheidbarkeit der Ciphertexte gewährleisten könnte. Leider konnte diese Güte für die meisten heute benutzten Kryptosystem (noch) nicht nachgewiesen werden – jedoch auch nicht das Gegenteil. Nichtsdestotrotz stellen diese Verfahren einen wesentlichen Pfeiler der Informatik dar. Mit diesem etwas düsteren Bild, dass nur zur Vorsicht mahnen soll, wollen wir die Vorlesung beginnen. 2 2 Klassische Kryptosysteme 2.1 Zwei-Wege Kryptosysteme: Das Kryptosystem von Julius Caesar Sei Σ = {A, . . . , Z, β} das lateinische Alphabet, wobei β das Leerzeichen darstellt. Die Verschlüsselung erfolgt mit Hilfe einer einfachen Permutation der Buchstaben. Hierzu schreiben wir zunächst die Symbole aus Σ in eine Reihe und dann diese Symbole noch einmal geshiftet darunter. Ein Beispiel ist in der folgenden Tabelle illustriert. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z β Y Z β A B C D E F G H I J K L M N O P Q R S T U V W X Um einen Plaintext zu verschlüsseln oder den Ciphertext zu entschlüsseln, genügt es die Zeichen des entsprechenden Textes gemäß der Tabelle zu ersetzen, d.h. im Plaintext ersetzen wir A durch Y, B durch Z usw. Analog ersetzen wir im Ciphertext Y durch A, Z durch B usw. Das angegebene Verfahren erfüllt somit die ersten beiden Bedingungen, die wir an ein Kryptoverfahren gestellt haben. Es verbleibt somit noch zu untersuchen, ob ein Ciphertext auch schwierig für Eve zu entschlüsseln ist, d.h. wie schwierig die Kryptoanalyse für dieses Verfahren ist. Wir unterscheiden bei der Kryptoanalyse zwei Szenarien: 1. Das Kryptosystem, welches für die Verschlüsselung herangezogen wurde, ist unbekannt. 2. Das Kryptosystem, welches für die Verschlüsselung herangezogen wurde, ist bekannt, aber der aktuelle Schlüssel ist unbekannt. Im Folgenden gehen wir davon aus, dass das Kryptosystem bekannt ist. Für diese Annahme sprechen drei Gründe: • Ist das Verfahren sicher in diesem Fall, dann ist es auch sicher für den Fall, dass das System nicht bekannt ist. • Die Erfahrung zeigt, dass sich die Struktur eines Kryptosystems im Allgemeinen nicht lange geheim halten lässt. • Die Anzahl der bekannten Kryptosysteme ist recht klein, daher ist es im Prinzip möglich alle sinnvollen Verfahren parallel zu attackieren. Als nächstes müssen wir uns fragen, welche Informationen Eve zur Verfügung stehen. Hierbei zeigen sich mehrere Möglichkeiten: 1. nur den Ciphertext, 2. Ciphertexte und einige dazugehörige Plaintexte oder 3. Ciphertexte und einige dazugehörige Plaintexte, die von Eve bestimmt werden können, d.h. Eve kann Alice dazu zwingen einige bestimmt Texte zu verschlüsseln. 3 In der Praxis tauchen je nach Form der Attacke alle drei Fälle auf. Es ist daher interessant alle diese Fälle zu untersuchen. Da es sich bei dem Verfahren von Caesar um einen einfache zyklische Shiftoperation handelt, kann ein entsprechend verschlüsselter Ciphertext sehr einfach entschlüsselt werden. Wir wollen nun versuchen das Caesar-Kryptoverfahren zu verallgemeinern. Hierzu führen wir folgende Abstraktion durch: Transformiere jede Einheit des Plaintexts und jede Einheit des Ciphertexts in ein mathematisches Objekt, welches wir einfach manipulieren können. Diese Transformation soll effizient zu berechnen sein. Für das Caesar-Kryptosystem ist dieses der Z26 = {0, . . . , 26} . Diese Transformation hat den Vorteil, dass wir jetzt auf die Operationen Addition und Multiplikation (modulo 27) zurückgreifen können. Im Folgenden identifizieren wir oft die Texteinheiten und deren mathematische Repräsentation. Das Caesar-Kryptosystem hat nun die Form f (x) = (x + r) mod 27 , wobei wir A durch 0, B durch 1, usw. repräsentieren. In unserem Beispiel oben ist r = 24 . Allgemein können wir das Caesar-Kryptosystem für ein Alphabet der Größe m für ein r ∈ {0, . . . , m− 1} durch die Formel f (x) = (x + r) mod m darstellen. Der Schlüssel bei diesem Verfahren ist somit r . Da es nur m Möglichkeiten gibt den Schlüssel zu wählen, folgt die Unsicherheit dieses Verfahrens aus folgender Beobachtung: Beobachtung 1 Damit ein Kryptosystem sicher ist, muss es eine große Auswahl von möglichen Schlüsseln geben. Um die Anzahl der Schlüssel zu vergrößern, können wir zwei mögliche Verallgemeinerungen vornehmen: 1. Wir fassen eine Folge von k Buchstaben zu einem Symbol zusammen, d.h. wir betrachten sogenannte k -Gramme. Sei x1 . . . xk ein solches k -Gramm, dann erhalten wir folgende Verschlüsselungsformel: ! k X i−1 f (x1 . . . xk ) = r+ xi · m mod mk mit r ∈ {0, . . . , mk − 1} . i=1 Wir erhalten mk verschiedene Schlüssel r . 2. Wir führen einen zweiten Schlüssel ein und betrachten f (x) = (a · x + r) mod m mit r, a ∈ {0, . . . , m − 1} . Es gibt somit m2 viele Schlüssel (a, r) . Diese Verallgemeinerung hat jedoch den Nachteil, dass f nicht mehr injektiv sein muss: Sei (a, r) = (3, 3) und m = 27 , dann gilt f (8) = f (17) = 0 . Sei a−1 das multiplikative Inverse zu a modulo m , d.h. a · a−1 mod m = 1 , dann gilt für die Entschlüsselung f −1 (y) = (a−1 · y − a−1 · r) mod m . Existiert das multiplikative Inverse von a , so können wir den Ciphertext effizient entschlüsseln. Es gilt: 4 Lemma 1 Die Gleichung a · x ≡ 1 mod m hat genau dann eine Lösung, wenn a und m teilerfremd sind. Hat a · x ≡ 1 mod m eine Lösung, so ist diese eindeutig. Um die Wahl von a nicht unnötig einzuschränken, wählen wir daher meistens eine Primzahl für m . Wenden wir uns nun wieder der Analyse der Sicherheit von Caesars Kryptoverfahren zu. Es gilt: Theorem 1 Seien p eine Primzahl, a, r ∈ {0, . . . , p − 1} zwei Schlüssel und x1 , x2 ∈ {0, . . . , p − 1} zwei Nachrichten mit x1 6= x2 . Kennt Eve x1 , x2 , f (x1 ), f (x2 ) , so kann sie den Schlüssel (a, r) des Kryptosystems f (x) = (a · x + r) mod p einfach berechnen. Beweis: Seien n1 = f (x1 ) und n2 = f (x1 ) . Es gilt n1 − n2 ≡ a · (x1 − x2 ) mod p . Da p eine Primzahl ist, existiert auch das multiplikative Inverse (x1 − x2 )−1 von (x1 − x2 ) . Mit Hilfe dieses Wertes können wir a und schließlich r effizient bestimmen. Eine weitere Verallgemeinerung von Caesars Kryptoverfahren erhalten wir, indem wir beliebige Permutationen der Buchstaben zulassen. In diesem Fall ist die Permutation selber der Schlüssel. Man beachte, dass es 27! viele Permutationen und somit 27! verschiedene Schlüssel gibt. Es ist hierbei jedoch nicht nötig alle diese Schlüssel zu testen, da uns im Allgemeinen eine einfache Häufigkeitsanalyse der Buchstaben in den möglichen Plaintexten und eine entsprechende Ersetzung der Buchstaben im Ciphertext weiter hilft. Eine Häufigkeitsanalyse der deutschen Sprache ergibt die folgende Tabelle E 18,46 % N 11,42 % I 8,02 % R 7,14 % S 7,04 % A 5,38 % T 5,22 % U 5,01 % D 4,94 % Solche Tabelle muss man jedoch mit einer gewissen Vorsicht genießen, da die Häufigkeiten der Buchstaben oft vom Kontext der analysierten Texte abhängen. Um einen Text zu entschlüsseln, machen wir jetzt eine Häufigkeitsanalyse der Buchstaben im Ciphertext und ersetzten das am häufigsten vor kommende Symbol im Ciphertext durch das Symbol, welches in unserer Tabelle das höchste Gewicht hat, usw. Aufgabe 1 Beweisen Sie Lemma 1. Aufgabe 2 Bestimmen Sie die Komplexität des Verfahrens aus dem Beweis von Theorem 1. Aufgabe 3 Der nachfolgende Text ist mit Hilfe der Formel f (x) = (a · x + r) mod m entstanden. Bekannt ist, dass die Symbol Q und X am seltensten im Plaintext benutzt wurde. Bestimmen Sie den Schlüssel (a, r) . UELYMJLNQLHQXXLP β FNEQPLHTQETQCLTFYMZLUZSQZFUEJLOMZ O β ZDECFOELMZLQZUSYML β RLETUDLWUZPLHTUOTLTFYMZL UZSQZFUEJLYMJLZ β ELNJLAC β AQCLYAAXUOMEU β ZLCQD β XGQLQLMLA β Q 5 2.2 Affine Kryptosysteme Wir betrachten wie zuvor ein endliches Alphabet Σ der Mächtigkeit N . Wie schon im letzten Abschnitt können wir die Symbole aus Σ durch Zahlen aus ZN darstellen. Wir betrachten hierfür eine bijektive Kodierungsfunktion C : Σ → ZN . Der Einfachheit halber erweitern wir die Funktion C auch auf Zeichenfolgen. Ein Plaintext w = wm−1 . . . w0 kann somit auch als Zahl im ZN m dargestellt werden: m−1 X C(w) = C(wi ) · N i . i=0 Wir können folglich w als eine m -stellige N -näre Zahl auffassen. Bei einem affinem Kryptosystem erhalten wir den verschlüsselten Text durch die Transformation t t(C(w)) = m−1 X yi · N i = (a · C(w) + r) mod N m mit a, r ∈ ZN m i=0 wobei y0 , . . . , ym−1 ∈ ZN . Die Zeichenfolge C −1 (ym−1 ) . . . C −1 (y0 ) gibt dann den Ciphertext wieder. Als Schlüssel dienen die beiden Zahlen (a, r) . Um eine Entschlüsselung des Ciphertexts zu garantieren, verlangen wir, dass a und N m teilerfremd sind, d.h. ggT(a, N M ) = 1 . Um den Text zu entschlüsseln, benötigen wir die Zahlen (â, r̂) wobei â = a−1 mod N m und r̂ = N m − a−1 · r mod N m ist. Die Schlüssel (a, r) und (â, r̂) müssen vom Sender, d.h. Alice, und dem Empfänger, d.h. Bob, sicher aufbewahrt werden. Betrachten wir zunächst die Frage, wieviele Werte es für a gibt, die wie als Schlüssel wählen können. Es gilt: Die Menge aller Zahlen in Zn , die teilerfremd zu n sind bezeichnen wir mit Z∗n = { k ∈ Zn | ggT(k, n) = 1 } . Die Mächtigkeit dieser Menge wird auch als Eulersche ϕ -Funktion bezeichnet. Es gilt Y 1 ∗ . ϕ(n) = |Zn | = n · 1− p Primzahlen p mit ggT(p,n)6=1 Wichtige Spezialfälle der ϕ -Funktion für Primzahlen p, q und α ∈ N+ sind ϕ(p) ϕ(pq) α ϕ(p ) = p−1 = (p − 1)(q − 1) = pα−1 (p − 1) . Betrachten wir nun die Sicherheit dieses Kryptoverfahrens, so erkennen wir, das wir auch für dieses Verfahren die in Theorem 1 beschriebene Attacke heranziehen können. Sind also einige Plaintexte und die dazugehörigen Ciphertexte bekannt, dann können wir den Schlüssel effizient bestimmen. Wir wollen nun der Frage nachgehen, ob der Schlüssel auch in dem Fall gefunden werden kann, wenn nur Ciphertexte zur Verfügung stehen. Um eine mögliche Attacke besser zu verstehen, beginnen wir mit einem Beispiel: Beispiel 1 Betrachten wir das lateinische Alphabet Σ = {β, A, B, . . . , Z} und die Kodierungsfunktion C , die den Elementen von Σ in der oben gegebenen Reihenfolge die Werte von 0 bis 26 6 zuordnet. Ferner betrachten wir den Schlüssel (7, 26) . Dann gilt C(KL) = 309 , t(C(KL)) = 2 und C −1 (T (C(KL))) = βB sowie C(ZL) = 714 , t(C(ZL)) = 650 und C −1 (T (C(ZL))) = XB . In diesem Beispiel haben sowohl die Plaintexte als auch die Ciphertexte den gleichen Suffix. Es stellt sich also die Frage, ob dieses immer der Fall ist, d.h. haben Ciphertexte immer den gleichen Suffix, wenn die dazugehörigen Plaintexte den gleichen Suffix haben? Theorem 2 Sei Σ ein festes endliches nicht leeres Alphabet mit |Σ| = N und m eine feste Plaintextlänge. Ferner sein (a, r) ein Schlüssel mit ggT(a, N m ) = 1 und w, w0 ∈ Σm zwei Nachrichten, die einen gemeinsamen Suffix der Länge i ≤ m haben, dann haben für alle Kodierungsfunktionen C : Σ → ZN auch die Ciphertexte C −1 (t(C(w))) und C −1 (t(C(w0 ))) einen gemeinsamen Suffix der Länge i . Pm−1 Pm−1 Pm−1 Pm−1 Beweis: Sei C(w) = j=0 C(wj )·N j = j=0 xj ·N j und C(w0 ) = j=0 C(wj0 )·N j = j=0 x0j ·N j wobei für alle j < i gilt xj = x0j . Ferner sei = t(C(w)) = a · w + r mod N m = y m−1 X yj · N j j=0 y0 = t(C(w0 )) = a · w0 + r mod N m = m−1 X yj0 · N j . j=0 Wir haben zu zeigen, dass für alle j < i gilt yj = yj0 . Nach Konstruktion gilt: a· m−1 X j xj · N + r ≡ j=0 m−1 X yj · N j mod N m a· und j=0 m−1 X x0j · N j + r j=0 ≡ m−1 X yj0 · N j mod N m . j=0 Betrachten wir die N -näre Darstellung von a und r , so folgt aus diesen Äquivalenzen für alle ` ≤ m : a· m−1 X j xj · N + r ≡ a· j=0 a· m−1 X `−1 X j xj · N + r = j=0 x0j · N j + r j=0 ≡ a· `−1 X Aus der Annahme, dass xj = `−1 X j=0 yj · N j mod N ` yj0 · N j mod N ` j=0 x0j · N j + r = j=0 x0j `−1 X `−1 X j=0 für alle j < i , folgt unmittelbar, dass xj · N j + r = `−1 X x0j · N j + r mod N i . j=0 Da die N -näre Repräsentation einer Zahl eindeutig ist, folgt die Gleichheit der Werte yj und yj0 für alle j < i . Kombinieren wir Theorem 2 mit einer Häufigkeitsanalyse, so können wir sukzessive die Suffixe der Nachricht dekodieren. Wir fassen hierbei den geratenen Suffix der Länge ` als tatsächlichen Suffix der Nachricht auf und können den Schlüssel – oder besser einen möglichen Schlüssel – modulo N ` bestimmen. Wir beginnen somit mit dem Schlüssel modulo N , mit Hilfe dieses Schlüssels bestimmen wir den Schlüssel modulo N 2 , u.s.w. Aufgabe 4 Beweisen Sie, dass ein affines Kryptosystem mit Schlüsseln (a, r) ∈ N2 und a, r < N m bei einmaliger Anwendung und einem Plaintext w ∈ Σm perfekte Sicherheit bietet, d.h. die Zufallsvariablen der Ciphertexte für alle Plaintexte aus Σm sind ununterscheidbar. 7 Aufgabe 5 Geben Sie ein Verfahren an, mit dessen Hilfe ein affines Kryptosystem mit Schlüsseln (a, r) ∈ N2 und a, r < N m geknackt werden kann. Gehen Sie hierbei davon aus, dass für ein hinreichend großes k der Plaintext die Länge m · k hat und daher in k Blöcke Bi der Länge m zerlegt wurde. Jeder dieser Blöcke wurde anschließend mit Hilfe der gleichen Schlüssel verschlüsselt. 2.3 Das PLAYFAIR-System Um die oben beschriebene Schwäche der affinen Kryptosysteme zu überwinden, wurde von Sir Charles Wheatstone folgendes Verfahren vorgeschlagen: Man nehme die Symbole A, B, . . . , Z Matrix, z.B.: S R H T B ohne J und verteile diese zufällig in einer 5 × 5 Y I C N K D P A O M W U X G Q Z L F E V Die Verschlüsselung erfolgt nach den folgenden Regeln: 1. Erweitere den Plaintext, so dass er von gerader Länge ist. 2. Partitioniere den Plaintext in Blöcke der Länge 2, wobei wir garantieren müssen, dass in keinem Block zwei gleiche Symbole stehen. 3. Sind die beiden Symbole in der gleichen Spalte, dann ersetzen wir diese durch die zyklisch nach unten versetzen Symbole in der Matrix, z.B. SH → RT , IK → CY . 4. Sind die beiden Symbole in der gleichen Zeile, dann ersetzen wir diese durch die zyklisch nach rechts versetzen Symbole in der Matrix, z.B. AX → XF . 5. In den verbleibenden Fällen spannen die Symbole im Block ein Rechteck auf, z.B. P F . Wir ersetzen dann diese Symbole durch die Symbole in der gleichen Zeile, die die jeweiligen freien Ecken des Rechtecks darstellen, z.B. P F → LA . Bei diesem Verfahren wird das Problem, dass ein gleicher Suffix im Plaintext auch einen gleichen Suffix im Ciphertext zur Folge hat, gelöst. Jedoch gilt diese Beobachtung nicht für Suffixe gerader Länge. Das Verfahren kann einfach auf Matrizen anderer Dimension erweitert werden, z.B. auf 3×9 -Matrizen. Ferner können diese Matrizen durch einen einfachen Schlüssel generiert werden. Man nehme einen einfachen Begriff, z.B. MAGIC, fülle die ersten Positionen der Matrix mit diesen Symbolen und fülle die verbleibenden Positionen mit den verbleibenden Symbolen des Alphabets auf. So erhalten wir z.B.: M B K Q V A D L R W G E N S X I F O T Y C H P U Z Die wesentlichen Schwachstellen diese Verfahrens sind: 1. Es vernachlässigt die Häufigkeiten von 2-Grammen. So machen die 18 häufigsten 2-Gramme ca. 90% eines Textes in deutsch aus. 8 2. Beim PLAYFAIR-Verfahren führen verschiedene Schlüssel zur gleichen Verschlüsselung, z.B.: P R B H V A S C I W L T D K X M O F Q Y E N G U Z E N G U Z P R B H V A S C I W L T D K X M O F Q Y U Z E N G H V P R B I W A S C K X L T D Q Y M O F Eine Matrix, die sich durch einen zyklischen Shift aller Spalten b.z.w. Zeilen einer anderen Matrix um den gleichen Wert ergibt, führt zu einem äquivalenten Schlüssel. Dieses reduziert die Anzahl der möglichen Schlüssel und somit die Komplexität, den Schlüssel zu knacken. PLAYFAIR wurde vom britischen Außenministerium vom Krim- bis zum Ersten Weltkrieg eingesetzt. 2.4 Polyalphabetische Kryptosysteme Die bisher untersuchten Kryptosysteme benutzen nur eine Regel zur Verschlüsselung, daher nennen wir diese monoalphabetische Kryptosysteme. Ein polyalphabetisches Kryptosystem stellt mehrere Regeln zur Auswahl. Wir zerlegen den Text in verschiedene Einheiten und verschlüsseln die erste Einheit mit Hilfe der ersten Regel, die zweite mit Hilfe der zweiten Regel, u.s.w. Wenn k Regeln zur Verfügung stehen, wird die ` te Einheit nach der (` mod k) + 1 ten Regel verschlüsselt. 2.4.1 Vigenère System Eines der bekanntesten und ältesten polyalphabetische Kryptosysteme ist das Vigenère System, welches auf der nachfolgenden Tabelle beruht, die auch Vigenère Tabelle genannt wird: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M 9 O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Dieses System wurde im 16. Jahrhundert von Blaise de Vigenère (1523-1596) entwickelt. Es basiert auf Arbeiten von Alberti, Trithemius und Porta, welche sich schon vor ihm mit der polyalphabetischen Verschlüsselung befasst hatten. Dieses System kann als eine Verallgemeinerung des Caesar-Verfahrens angesehen werden. Neben der Tabelle benötigt man für dieses System noch ein Schlüsselwort w = w0 . . . wk−1 , in dem alle Symbole des Alphabets maximal einmal vorkommen. Die Verschlüsselung eines Plaintextes x = x0 . . . xm−1 erfolgt nach folgender Regel: Ersetze das Symbol xi im Plaintext durch das C(xi ) te Symbol in der C(wi mod k ) mod 26 ten Zeile der Vigenère Tabelle, wobei C : Σ → Z|Σ| eine adäquate Kodierungsfunktion ist.1 Wollen wir mit einem Schlüssel MAGIC den Text CRYPTOLOGY verschlüsseln, so erhalten wir OREXVALUOA. Zur Entschlüsselung eines Ciphertextes y = y0 . . . ym−1 verfahren wir wie folgt: Sei yi das j te Symbol in der C(wi mod k ) mod 26 ten Zeile der Vigenère Tabelle, dann ist das dazugehörige Plaintextsymbol C −1 (j) . Es ist einfach zu erkennen, dass dieser Algorithmus nicht auf die Vigenère Tabelle beschränkt werden muss. Benutzen wir anstelle der Berechnung der Zeile und Spalte ein Suchverfahren nach der Zeile, deren ersten Eintrag wi mod k und für die Verschlüsselung die Spalte, deren erster Eintrag xi ist, so können wir diesen Verschlüsselungsalgorithmus auch auf andere Tabellen wie z.B. die Beaufort Tabelle anwenden. Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X 1 Beim X Y Z A B C D E F G H I J K L M N O P Q R S T U V W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I Aufzählen der Zeilen und Symbole der Zeilen starten wir mit 0. 10 I J K L M N O P Q R S T U V W X Y Z A B C D E F G H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Die Entschlüsselung erfolgt in solchen Tabellen nach folgender Regel: Sei yi das j te Symbol in der Zeile, die mit C(wi mod k ) beginnt. Ersetze yi durch das j te Symbol in der ersten Zeile. Damit eine Tabelle zur Verschlüsselung herangezogen werden kann, muss sie den folgenden Bedingungen genügen: 1. In jeder Zeile müssen alle Symbole aus Σ genau einmal vorkommen. 2. In jeder Spalte müssen alle Symbole aus Σ genau einmal vorkommen. Diese Regel können wir auch darauf beschränken, dass in der ersten Spalte alle Symbole aus Σ genau einmal vorkommen. Aufgabe 6 Beweisen Sie, dass das affinen Kryptosysteme bei einmaliger Benutzung für den Fall, dass die Länge von r im Schlüssel genau der Länge der Nachricht entspricht, perfekte Sicherheit bietet. Aufgabe 7 Geben Sie ein Verfahren zum Knacken des PLAYFAIR-Verfahren an. Bestimmen sie dessen Zeitkomplexität. Aufgabe 8 Verallgemeinern Sie das PLAYFAIR-Verfahren auf k -dimensionale Matrizen. Betrachten Sie hierbei, dass zunächst nur ein festes Alphabet Σ zur Verfügung steht. 2.4.2 Die Kryptoanalyse des Vigenère Verfahrens Bei der Kryptoanalyse des Vigenère Verfahren unterscheiden wir zwei Szenarien: 1. Die Schlüssellänge k des Schlüssels w = w0 . . . wk−1 ist bekannt. 2. Die Schlüssellänge k ist unbekannt. Die Kryptoanalyse bei bekannter Schlüssellänge Sei x = x0 . . . xm−1 der Plaintext, der verschüsselt werden soll. Platzieren wir nun in einer Tabelle die Symbole des Plaintextes so, dass die Symbole, deren Verschüsselungsregel durch das gleiche Schlüsselsymbol bestimmt wird, eine Spalte bilden, so erkennen wir, dass die Verschlüsselungsregeln periodisch wechseln. Sei ` = bm/kc , so erhalten wir: w0 x0 xk .. . w1 x1 xk+1 .. . x(`−1)k x`k x(`−1)k+1 x`k+1 ... ... ... wk−2 xk−2 x2k−2 .. . . . . x(`−1)k−2 ... xm wk−1 xk−1 x2k−1 .. . x(`−1)k−1 Lemma 2 Sei k die Länge des Schlüsselworts, dann kann das Vigenère Verfahren in k monoalphabetische Verschlüsselungverfahren untergliedert werden. 11 Wir erkennen, dass alle Symbole xi des Plaintexts mit Hilfe der i mod k ten monoalphabetischen Verschlüsselungsregel verschlüsselt wurden. D.h. für alle i ∈ Zk können wir xi xk+i x2k+i . . . als monoalphabetisch verschlüsselten Text betrachten, und diesen versuchen mit Hilfe der bereits diskutierten Hilfsmittel zu entschlüsseln. In vielen Abhandlungen über das Vigenère Verfahren wird vom Schlüsselwort verlangt, dass jedes Element des Alphabets maximal einmal vorkommt. Somit ist die Schlüsselwortlänge durch |Σ| beschränkt. Eine andere Methode, die Schlüssellänge (zumindest mit hoher Wahrscheinlichkeit korreck) zu bestimmen, wurde von dem englischen Mathematiker Charles Babbage (1854) gefunden und von dem preussischen Major Friedrich W. Kasiski (1863) zum ersten Mal eingesetzt. Dieses Verfahren ist als Kasiski-Test bekannt. 2.4.3 Die Kryptoanalyse bei unbekannter Schlüssellänge: Der Kasiski-Test Der Kasiski-Test versucht, wie bereits oben beschrieben, die Schlüssellänge zu bestimmen. Dieses Verfahren basiert auf folgender Beobachtung: Beobachtung 2 Wenden wir auf zwei gleiche Textfragmente im Plaintext jeweils die gleichen Verschlüsselungssequenzen an, so erhalten wir zweimal die gleichen Fragmente im Ciphertext. Dieses Verhalten wird in folgenden Beispiel aus [S90] sichtbar. Die Leerzeichen in diesem Text sind nur der bessern Übersicht halber eingefügt: AVXZH KALBR GLGMO HBWMS PELHH ABABK HIGHP RALFX BUPNP VCLTO CGLGB KHPEL WZXVT CFJOG GSSLZ ZHBUU HCSBZ VIMOF STPFU XSGAV LLILF VXHHB NPZWP AVXTC ZWPBZ ESOLA MHALG HBUMF LACGL UCMIS WMPGO RDWMO HALVX HDKTA LQHTS HMLFR BLBVL UGTBB BZPGG LAQHT HGTBB COLKB MVJXP LHTSP GHUHH ALOML LFRZA HALVX HFMVT SKVBM LTCKL VITYS PHAVW TAVXH VHWPG AHUAB TPGMV AVMVC GHUZR HEKBA WHALB RIYCI TSZGL HFMVT LHIGH OSLAC VNTWW MOILH YMTUR FMVTL VBGLL ZHTRS VTCSM YLKLA HABZS VTJCN MOSKV LFEFI JXYPX LHIGH Wie wir sehen, kommt das Fragment VXHFMVTLHIGH dreimal im Ciphertext vor. Die Wahrscheinlichkeit, dass zwei gleiche Textfragmente im Ciphertext durch zwei gleiche Textfragmente im Plaintext entstanden sind, ist größer als die Wahrscheinlichkeit, dass diese durch zwei unterschiedliche Fragmente entstanden sind. Der Kasiski-Test nutzt diese Eigenschaft wie folgt aus: 1. Bestimme alle Fragmente v0 , v1 , . . . , v` , die im Ciphertext zumindest zweimal vorkommen. In 12 unserem Beispiel sind dieses: v0 v1 = HALVXHFMVTLHIGH (zweimal) = VXHFMVTLHIGH (dreimal) v2 v3 = = VXH (viermal) AVX (dreimal) v4 = HAL (viermal) v5 = VX (sechsmal) 2. Bestimme für alle Paare von Vorkommen eines Fragments vi die Partition des Ciphertextes in wvi qvi r und die dazgehörigen Längen von vi q . Wir bezeichnen die Länge vi q für das j te Paar von vi mit `i,j . Für unser Beispiel erhalten wir `0,1 `1,1 `2,1 `3,1 `4,1 `5,1 = 375 = 129 `1,2 = = 12 ... = 141 `3,2 = = 246 `4,2 = = 180 . . . 246 `1,3 39 60 = ... `4,3 = 375 69 ... 3. Bestimme alle Teiler der Werte `i,j und sortiere diese nach ihrer Häufigkeit. Wir erhalten für für für für für für für für 375 129 246 180 141 60 69 12 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 3, 2, 3, 2, 5, 25, 125, 15, 75, 375, 43, 129, 3, 41, 6, 82, 123, 246, 3, 4, 6, 5, 10, 15, 20, 45, 12, 36, 60, 180, 47, 141, 3, 4, 6, 5, 10, 15, 20, 12, 60, 23, 69, 3, 4, 6, 12 . Der am häufigsten vorkommende Teiler ist die 3. Wir werden sehen, dass dieser Teiler schon zum Erfolg führt. Daher werden wir auf die Analyse des Ciphertextes für die weiteren Teiler verzichten. Im Allgemeinen führt jedoch die erste Wahl nicht immer zum Erfolg. 4. Betrachte den im letzten Schritt gefundenen Teiler als Länge k des Schlüssels. Nach Lemma 2 können wir den Ciphertext in k Teile aufteilen, welche alle mit Hilfe einen monoalphabetischen Verfahrens verschlüsselt wurden. Für unser Beispiel erhalten wir bei k = 3 : y0 y1 y2 AVX LBR OST SGA LFB UGT PGG TAH PGM VCY HAB JCN VCF SSL UUR y0 y1 y2 ZHH VIM PFU VHM LBV BBT VHW UAB VVT LKL ZSK WZX JOG ZWM DWM y0 y1 y2 CSB OFH LQH LFR LPH AVX PGV ZHT CSM ACG HPE VTL UCM PGO OHA y0 y1 y2 ZHA DKT TSL VIT AVW HFM BGL RSB VCL LGB LHB ACG ISA LFR LVX y0 y1 y2 LVX ASK TCK YSM YMT VTL LRA UPN TOE MHA UMF LGH LOM ZAT HFM 13 y0 y1 y2 HFM VBM LVN OIL URA HIG LFX PZW SOL LGM LHT UHH LRI SZG VTL y0 y1 y2 VTL OSL TWW HPE BAB HPN AVX PBZ ACO VJX SPH WHA YCI LJX HIG y0 y1 y2 HIG ACG HBW LHH KVX PZW TCL HGT LKB PGH EKB LBM LFE YPX H y0 y1 y2 HKA LGM MSX LLI HHB PBZ AQH BBT AVM UZR AVT OSK FIG ZHB Zählen wir die Vorkommen der einzelnen Buchstaben so erhalten wir: A B C D E F G H I s0 12 4 2 2 1 1 0 15 1 s1 5 9 11 0 0 10 13 14 7 s2 9 12 0 0 4 2 10 11 3 J K L M N O P Q R s0 2 1 27 2 0 6 10 0 1 s1 2 5 1 2 0 4 7 2 3 s2 0 4 13 17 4 2 0 0 5 S T U V W X Y Z s0 5 6 9 14 2 0 4 7 s1 13 4 1 11 3 1 0 5 s2 0 13 1 2 6 12 1 2 Wissen wir zudem, dass der Text in Englisch geschrieben wurde, so können wir bekannte statistische Daten über die Buchstabenhäufigkeiten im Englischen heranziehen: E T A 12,31% 10,45% 8,05% O N I 7,94% 7,19% 7,18% S R H 6,59% 6,03% 5,14% In einem ersten Ansatz können wir versuchen den Buchstaben E auf den Buchstaben im Ciphertext zu setzen, welcher am häufigsten vorkommt. Ein alternativer Ansatz versucht die Dreierfolge RST auf die Folge von 3 Buchstaben im Alphabet zu übertragen, welche am häufigsten im Ciphertext vorkommt. Wir erhalten zwei mögliche Verschlüsselungsfunktionen (a) R −→ T, S −→ U, T −→ V Diese Funktion hätte zur Folge, dass W −→ Y, X −→ Z, Y −→ A. Somit kämen im Plaintext der Buchstabe W viermal, der Buchstabe X siebenmal und der Buchstabe Y zwölfmal vor. Dieses ist jedoch nach unserer Buchstabenhäufigkeitstabelle im Englischen sehr unwahrscheinlich. (b) R −→ Y, S −→ Z, T −→ A Dieses resultiert in einer Verschlüsselungsfunktion von f0 (x) = x + 7 mod 26 . Analog erhalten wir für f1 (x) = x + 14 mod 26 und f2 (x) = x + 19 mod 26 . Der Schlüssel könnte somit HOT sein. Entschlüsseln wir den Ciphertext mit Hilfe dieses Schlüssels, so erhalten wir: THESTOVEISTHEHEARTOFSAUNA. . . 2.4.4 Der Friedman-Test Eine weitere Möglichkeit einen Kandidaten für die Länge eines Schlüsselworts zu bekommen, stellt der Friedman-Test (William Friedman, 1925) dar. Die wesentliche Idee bei diesem Text basiert auf der Analyse, mit welcher Wahrscheinlichkeit zwei zufällig und unabhängig ausgewählte Buchstaben im Plaintext gleich sind. n Sei x = x0 . . . xn−1 P∈ Σ ein Plaintext der Länge n und für alle b ∈ Σ sei nb die Anzahl der b in x , dann gilt n = b∈Σ nb . Die Anzahl der Paare in x ist gegeben durch m = n2 und die Anzahl der Paare die Form xi = xj = b ist mb = n2b . 14 Die Anzahl der Paare die aus zwei identischen Buchstaben bestehen ist X mΣ = mb . b∈Σ Wir betrachten hierbei Paare bei denen die Reihenfolge berücksichtigt wird und eine Position zweimal gezogen werden darf. Die Wahrscheinlichkeit bei einem zufällig unabhängig gewählten Paar auf zwei identischen Buchstaben zu treffen ist mΣ p(x) = . (1) m Diese Wahrscheinlichkeit wird oft auch als Koinzidenzindex bezeichnet. Es ist einfach zu erkennen, dass unser oben angestellten Überlegungen für jede beliebige Zeichenkette x ∈ Σn gültig ist. Die Wahrscheinlichkeit, dass ein zufällige Position in einem hinreichend langen englischen Text den Buchstabe b ∈ {A, . . . , Z} binhaltet ist in folgender Tabell beschrieben: A B C D E F G pb 0,0856 0,0139 0,0279 0,0378 0,1304 0,0289 0,0199 H I J K L M N pb 0,0528 0,0627 0,0013 0,0042 0,0339 0,0249 0,0707 O P Q R S T U pb 0,0797 0,0199 0,0012 0,0677 0,0607 0,1045 0,0249 V W X Y Z pb 0,0092 0,0149 0,0017 0,0199 0,0008 Die Wahrscheinlichkeit, dass zwei zufällige Positionen in einem englischen Text zwei identische Buchstaben beinhalten ist X p = p2b b∈Σ wohingegen in einer zufälligen Zeichenkette diese Wahrscheinlichkeit durch p̂ = X |Σ|−2 = b∈Σ 1 |Σ| gegeben ist. Für die englische Sprache gilt p = 0, 06873314 . . . und p̂ = 0, 03846 . . . . Für einen monoalphabetisches Verschlüsselungsverfahren gilt: Beobachtung 3 Sei x ein Plaintext und y ein zu x gehöriger Ciphertext, welcher durch ein monoalphabetisches Verschlüsselungsverfahren erzeugt wurde, dann gilt p(x) = p(y) , d.h. x und y haben den gleichen Koinzidenzindex. Im Folgenden werden wir sehen, dass der Koinzidenzindex für einen Ciphertext der über das Vigenère Verfahrens erzeugt wurde mit der Länge des Schlüsselwortes fällt. Um zu entscheiden, ob ein Ciphertext über ein mono- oder ein polyalphabetisches Verfahren erzeut wurde können wir folgende Regel benutzen: 15 Ist p ≈ p , so wurde der Ciphertext über ein monoalphabetische Verfahren erzeugt. Gilt p ≈ p̂ , so wurde der Ciphertext über ein polyalphabetische Verfahren erzeugt. Sei k die Länge des Schlüsselworts. Wie wir aus Lemma 2 wissen zerfällt ein über das Vigenère Verfahren erzeugtes Ciphertext in k Teile, die über ein monoalphabetische Verschlüsselungverfahren generiert werden. Ist der Text lang genug, so können wir aus Beobachtung 3 folgern, dass in jedem dieser Teile der Koinzidenzindex des Plaintextes unverändert beibehalten wird. Betrachten wir jedoch ein Positionspaar mit zwei Positionen, die zu unterschiedlichen monoalphabetische Verschlüsselungverfahren gehören, so reduziert sich die Wahrscheinlichkeit auf ein identisches Paar zu stossen. Im günstigsten Fall ist diese Wahrscheinlichkeit gleich 1/26 . Im Folgenden werden wir als Arbeitshypothese annehmen, dass bei einem Paar von Positionen innerhalb eines Teil, der mit einem monoalpabetischen Verschlüsselungsverfahrens generiert wurde die Wahrscheinlichkeit für gleiche Symbole durch p gegeben ist. Bei einem Paar aus zwei verschiedenen Teilen, ist diese Wahrscheinlichkeit p̂ . Jeder Teil, der über eine bestimmtes monoalpabetisches Verschlüsselungsverfahren generiert wird hat eine Größe von n/k . Es gibt somit n Möglichkeiten die erste Position zu wählen und nk Möglichkeit die zweite Position im gleichen Teil des Ciphertextes zu wählen. Es gibt somit n2 k q = Paare von Positionen, die sich in einem Teil des Ciphertextes befinden. Die Anzahl der Paare von Positionen aus unterschiedlichen Teilen des Ciphertextes ist gegeben durch n2 (k − 1) . k q = Die Anzahl der Positionspaare mit identischen Buchstaben ist somit mΣ = p · n2 (k − 1) n2 + p̂ · . k k Folglich gilt mΣ p + p̂ · (k − 1) = . 2 n k Mit Hilfe dieser Formel und den angegebenen Abschätzungen für p und p̂ erhalten wir p(y) = k ≈ 0, 06873 − 1/26 p(y) − 1/26 ≈ 0, 0303 . p(y) − 0, 03846 Betrachten wir das in Kapitel 2.4.2 diskutierte Beispiel, so erhalten wir: A B C D E F G ni 26 25 13 2 5 13 23 H I J K L M N ni 40 11 4 10 41 21 4 O P Q R S T U 16 ni 12 17 2 9 18 23 11 V W X Y Z n ni 27 11 13 5 14 400 (2) Aus dieser Tabelle und mit Hilfe der Gleichung 1 erhalten wir p(y) = 0, 05565 . und aus der Approximation 2 den Wert k = 1, 8 . . . . Dieser Wert kann als ein Indiez dafür gesehen werden dass zur Verschlüsselung des Ciphertextes ein sehr kurzer Schlüssel benutzt wurden. Betrachten wir nun die Approximation 2 in ihren Extremen: Für ein monoalphabetisches Verfahren erhalten wir p(y) ≈ 0, 06873 und somit k ≈ 1 . Für einen zufällig gewählten Text z erhalten wir 1 p(z) ≈ 26 und somit k → ∞ . 2.4.5 Eine Verallgemeinerung des Vigenère Verfahrens Auf Vigenère geht auch eine Verallgemeinerung des Vigenère Verfahrens zurück, wohingegen sich die Literatur nicht einig ist, wer der Entwickler des Vigenère Verfahrens ist [K67]. Die Verallgemeinerung, die wir nun kurz vorstellen wollen, bezieht den Nachrichtentext bei der Schlüsselgenerierung mit ein. Sei w = w1 . . . wk ein Schlüssel und x = x1 . . . xn eine Nachricht – beide ohne Leerzeichen – dann erhalten wir den neuen Schlüssel durch w0 = w1 . . . wk x1 . . . xn−k . Verschlüsseln wir eine Nachricht mit Hilfe dieses Verfahrens, so müssen wir zunächst einen Präfix des Ciphertextes entschlüsselt haben, um den Schlüssel für den nächsten Teil des Ciphertextes zu erhalten. Die Eigenschaft einer Periodizität können wir zum Knacken dieses Verfahrens nicht mehr ausnutzen. Aufgabe 9 Benutzen Sie den Test von Kasiski um folgenden Text zu entschlüsseln KSMEHZBBLKSMEMPOGAJXSEJCSFLZSY . Aufgabe 10 Versuchen Sie den folgenden Text zu entschlüsseln TPOGDJRJFSUBSFCSQLGPCOFUQNFDSFCLVIFOTGNWGT . 2.5 Rotor-Chiffriermaschinen: Die Enigma Das Prinzip der Rotor-Chiffriermaschine wurde zu Beginn des letzten Jahrhunderts unabhängig von mehreren Personen erfunden. Zu nennen sind hier vor allem: Der Amerikaner E. H. Hebern (1917, Patent 1924), der Deutsche A. Scherbius (Patent 1918), der Niederländer H. A. Koch (Patent 7.10.1919) und der Schwede A. G. Damm (Patent 10.10.1919). Das Prinzip der Rotor-Chiffriermaschine basiert wie die schon früher diskutierten Verfahren von Caesar und Vigenère auf der Permutation der Buchstaben eines Alphabets Σ = {A, . . . , Z} . Bei der Enigma kamen hierbei je nach Typ die sukzessive Ausführung von 3 bis 4 Permutationen zum Einsatz. Im Folgenden bezeichnen wir diese Permutationen mit Π1 , Π2 , Π3 , Π4 . In Abbildung 2 wird die Hintereinanderausführung von zwei Permutationen illustriert. 17 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D L H I A B C K E F X N P J G R M T O Z Y W S U Q V L G K E D I H X A T P J R F C U B Z N V Q S O Y M W Abbildung 2: Hintereinanderausführung von zwei Permutationen. Die sukzessive Ausführung von 3 bis 4 Permutationen bringt jedoch keinen zusätzlichen Sicherheitsgewinn. Auf die Gründe für dieses Verfahren werden wir später eingehen. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D L H I A B C K E F X N P J G R M T O Z Y W S U Q V L G K E D I H X A T P J R F C U B Z N V Q S O Y M W A B C D E F G H I J K L M N O P Q R S T U V W X Y Z T D S B M K Q X V P F R E Z U J G L C A O I Y H W N B R X V T D S F M K H Z J P Q L E A U N W Y C O G I R Q F M B V X H T A J P L K S O D N Z I G C U W E Y Abbildung 3: Die Funktion f −1 = Π−1 1 ◦ Π2 ◦ Π5 ◦ Π2 ◦ Π1 . Auf die so permutierte Folge wenden wir eine weitere Permutation Π5 an, welche eine paarweise Symbolvertauschung realisiert. Diese Permutation wird auch Reflektor oder Umkehrwalze genannt. Abschließend durchlaufen wir die Permutationen Π1 , Π2 , Π3 , Π4 noch einmal rückwärts in umgekehrter Reihenfolge. Die resultierende Verschlüsselungsfunktion ist somit f −1 −1 −1 = Π−1 1 ◦ Π2 ◦ Π3 ◦ Π4 ◦ Π5 ◦ Π4 ◦ Π3 ◦ Π2 ◦ Π1 . 18 Die Funktion von f ist in Abbildung 3 illustriert. Den Vorteil dieser Verschlüsselungsfunktion können wir schnell erkennen, wenn wir das Verfahren zweimal hintereinander anwenden. Sei −1 −1 −1 y = Π−1 1 (Π2 (Π3 (Π4 (Π5 (Π4 (Π3 (Π2 (Π1 (x))))))))) , dann gilt −1 −1 −1 Π−1 1 (Π2 (Π3 (Π4 (Π5 (Π4 (Π3 (Π2 (Π1 (y))))))))) = −1 −1 −1 −1 −1 −1 −1 Π−1 1 (Π2 (Π3 (Π4 (Π5 (Π4 (Π3 (Π2 (Π1 (Π1 (Π2 (Π3 (Π4 (Π5 (Π4 (Π3 (Π2 (Π1 (x)))))))))))))))))) = −1 −1 −1 Π−1 1 (Π2 (Π3 (Π4 (Π5 (Π5 (Π4 (Π3 (Π2 (Π1 (x)))))))))) . Beachten wir, dass eine paarweise Symbolvertauschung ihre eigene Umkehrfunktion darstellt, so erhalten wir −1 −1 −1 x = Π−1 1 (Π2 (Π3 (Π4 (Π5 (Π4 (Π3 (Π2 (Π1 (y))))))))) . Die von der Enigma realisierte Funktion stellt somit ihre eigene Umkehrfunktion dar. Geben wir zum Beispiel das Symbol H in unserem Beispiel (Abbildung 3) ein, so erhalten wir in der Verschlüsselung das Symbol X. Geben wir jetzt wiederum das Symbol X ein, so erhalten wir H. Die Enigma konnte also ohne Umbau sowohl zur Verschlüsselung als auch zur Entschlüsselung benutzt werden. Da die Realisierung jedoch auf einem Stromkreis basierte, war es bei der Realisierung verboten, dass ein Symbol auf sich selbst abgebildet wurde. Die einzelnen Permutationen wurden auf einer Walze realisiert, so dass durch das Drehen einer Walze Πi eine neue Permutation Π0i ensteht. Der wesentliche Trick besteht nun darin, dass sich die erste Walze mit jedem Symbol um eine Position in der Permutation dreht, die zweite Walze mit jedem 26 ten Symbol dreht, die dritte Walze mit jedem 262 ten Symbol dreht, und die letzte Walze mit jedem 263 ten Symbol dreht. Um die Sicherheit zu erhöhen, wurden zudem noch vor der eigentlichen Enigma-Verschlüsselung vier Buchstabenpaare aus den 26 Buchstaben vertauscht. Dieses wurde mit Hilfe eines Steckerbrett realisiert. Ferner konnten die Walzen gegen andere Walzen ausgetauscht und untereinander permutiert werden. Zur Verfügung standen 5 Walzen. Der Tagesschlüssel bestand aus folgenden Punkten: 1. Walzenauswahl 2. Walzenreihenfolge 3. Walzengrundstellung 4. Steckerbrettverkabelung. Insgesamt gab es somit 4 5 · 4 · 3 · 2 · 26 · 26 2 · 24 2 · 22 2 · 4! 20 2 = 8995419473040000 mögliche Schlüssel. Mit der Nachricht wurde auch der Nachrichtenschlüssel übermittelt. Dieser bestand aus den ersten sechs Zeichen der Nachricht – die Einstellung der Walzen wurde einmal wiederholt. Mit diesem wurden die Walzen in eine neue Ausgangsposition gebracht. Mit dem so erhaltenen System konnte mit der Entschlüsselung des eigentlichen Textes begonnen werden. 19 A B C D E F G H I X F N J J K L M N O P Q R S T U V W X Y Z A B K C D E M G H Z P R L I T O V Q B A Y U W S X A F L E M X J N H K O P R I G D U C Q Z S W Y V B T A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z R E Q Y B S W K L N H I U J P O C A F V M T G Z D X R E Z S J N H Q Y B U W K X O A I L V P T C E R D M G F Z R S I B U Z N J K H P O A L W Y M Q C X F G D T E V R Abbildung 4: Die Funktion f = Π1−1 ◦ Π−1 2 ◦ Π5 ◦ Π2 ◦ Π1 für das 28te Symbol. Die Kryptoanalyse der Enigma gestalltete sich im zweiten Weltkrieg als eine sehr aufwendiges Problem. So beschäftigten bei den Alliierten bis zu 10000 Mathematiker, Ingenieure und Hilfskräfte zwischen 1939 und 1945 mit dieser Aufgabe. Es muss hier noch erwähnt werden, dass es einer polnischen Gruppe von 15 Mathematikern um M. Rejewski bereits vor Beginn des zweiten Weltkries gelungen war das Verfahren der ersten Varianten der Enigma zu knacken. Besonders Hilfreich bei der Kryptoanalyse zeigen sich hierbei einige Fehler der Deutschen bei der Verschlüsselung. So wurde in vielen Fällen als Testsignal eine längere Folge von A’s verschlüsselt. Auch die Eigenschaft, dass jede Nachricht mit einer zweifachen Wiederholung des Nachrichtenschlüssels begann konnten sich die Alliierten zu Nutze machen, um den Suchraum für den Tagesschlüssel von 9 · 1018 stark einzugrenzen. Zudem kamen den Alliierten noch einige Zufälle zu Hilfe, so konnten sie in einigen versenkten U-Booten und durch Spionage die Walzen der Enigma erbeuten. Ferner fiehlen ihnen hin und wieder Schlüsselbücher in die Hände. Leider gibt es nur eine sehr beschränkte Literatur über die Kryptoanalyse der Enigma. Daher werden wir uns nun von den klassischen Verfahren langsam verabschieden und uns der modernen Kryptologie zuwenden. Eine gute Darstellung der Enigmaverschlüsselung ist im Internet unter http://de.wikipedia.org/wiki/Enigma %28Maschine%29 und unter 20 http://www.mywiseowl.com/articles/Enigma machine zu finden. Auf diesen Seiten wird auch auf einige Details in der Konstruktion der Enigma eingegangen. 21 3 Der Begriff der Sicherheit Wir wollen uns nun wieder dem Problem zuwenden, mit dem wir uns schon in der ersten Stunde kurz beschäftigt haben: Was verstehen wir unter dem Begriff Sicherheit? Wie wir schon gesehen haben können wir kryptographische Verfahren in verschiedene Stufen der Sicherheit einsortieren: • perfekte oder uneingeschränkte Sicherheit, • probabilistische Sicherheit, • Sicherheit gegen algorithmische Attacken und • unsicher. Für viele bekannte Verfahren ist jedoch die Zuordnung zu einer dieser Sicherheitsklassen noch nicht bekannt. Um trotz dem eine Klassifikation dieser Verfahren zu erhalten, führen wir eine weitere Sicherheitsklasse ein, die • beweisbare Sicherheit. Diese Form der Sicherheit basiert auf dem Begriff der Reduktion. Um zu zeigen, dass ein Verfahren beweisbar sicher ist, zeigen wir, dass das knacken einer signifikanten Anzahl von Schlüsseln auch das effiziente Lösen bestimmter (vermutlich) schwieriger Probleme zur Folge hätte. Ein oft benutztes Beispiel für ein solches vermutlich schwieriges Problem, ist das Problem der große Zahlen zu faktorisieren. Wir wollen uns nun mit einigen dieser Sicherheitsbegriffen etwas näher auseinander setzen. Sei Zm = {0, 1, . . . , m − 1} und Zm,n = Znm . Dann definieren wir die Menge aller möglichen Plaintexte als [ Zm,n Pt := n∈N und die Menge aller möglichen Ciphertexte als Ct := [ Zm,n . n∈N Definition 2 Eine kryptographische Transformation ist eine Familie von bijektiven Transformationen T = (T (n) )n∈N mit T (n) : Zm,n → Zm,n für ein beliebiges aber festes Alphabet Zm . Hängt die kryptographische Transformation von der Wahl (n) eines Schlüssels w ab, so schreiben wir auch Tw = (Tw )n∈N . Ein Kryptosystem ist eine Familie von kryptographischen Transformationen T = { Tw | w ∈ K } wobei K die Menge aller möglichen Schüssel ist. 22 Für die Kryptoanalyse gehen wir davon aus, dass das Kryptosystem bekannt jedoch der Schlüssel unbekannt ist. Zusammenfassend besitzt ein Angreifer auf das Kryptosystem folgende Kenntnisse über das System: • a priori Annahmen über die Wahrscheinlichkeitsverteilung PrPt der möglichen Plaintexte Pt, • a priori Annahmen über die Wahrscheinlichkeitsverteilung Pr K der möglichen Schlüssel K , • das benutzte Kryptosystem T , • einige Beispiele y = Tw (x) für verschiedene w ∈ K und x ∈ Pt und • der zu entschlüsselnde Ciphertext Y . Aus dem a priori Wissen über PrPt und Pr K können wir folgende Wahrscheinlichkeiten bestimmen: 1. PrPt, K (x, w) , d.h. die Wahrscheinlichkeit, dass zur Verschlüsselung von x der Schlüssel w benutzt wird: PrPt, K (x, w) = PrPt (x) · Pr K (w) . Wir gehen davon aus, dass Plaintext und Schlüssel unabhängig von einander gewählt werden. 2. PrCt (y) , d.h. die Wahrscheinlichkeit, dass der Ciphertext y vorkommt: X PrCt (y) = PrPt, K (x, w) . (x,w)∈Pt×K mit y=Tw (x) 3. PrPt,Ct (x, y) , d.h. die Wahrscheinlichkeit, dass y die Verschlüsselung von x ist: X PrPt,Ct (x, y) = PrPt, K (x, w) . w∈K mit Tw (x)=y 4. PrCt,Pt (y, x) , d.h. die Wahrscheinlichkeit, dass y die Verschlüsselung von x ist: X PrCt,Pt (y, x) = PrPt, K (x, w) . −1 w∈K mit Tw (y)=x 5. PrCt, K (y, w) , d.h. die Wahrscheinlichkeit, dass bei y der Schlüssel w benutzt wurde: X PrCt, K (y, w) = PrPt, K (x, w) . x∈Pt mit Tw (x)=y 6. PrPt|Ct (x|y) , d.h. die bedingte Wahrscheinlichkeit vom Plaintext x unter der Voraussetzung, das der Ciphertext y vorliegt: PrPt|Ct (x|y) = PrCt,Pt (y, x) . PrCt (y) 7. Pr K |Ct (w|y) , d.h. die bedingte Wahrscheinlichkeit vom Schlüssel w unter der Voraussetzung, das der Ciphertext y vorliegt: PrK|Ct (w|y) = 23 PrCt, K (y, w) . PrCt (y) 8. PrCt|Pt (y|x) , d.h. die bedingte Wahrscheinlichkeit vom Ciphertext y unter der Voraussetzung, das der Plaintext x vorliegt: PrCt|Pt (y|x) = PrPt,Ct (x, y) . PrCt (y) Bei den Definitionen der bedingten Wahrscheinlichkeiten müssen wir davon ausgehen, dass PrCt (y) > 0 bzw. PrPt (x) > 0 ist. Im Fall, dass diese Wahrscheinlichkeiten gleich Null sind, so definieren wir auch die entsprechenden bedingten Wahrscheinlichkeiten als Null. 3.1 Kryptosysteme mit perfekter Sicherheit Mit Hilfe dieser Wahrscheinlichkeiten können wir nun den Begriff der perfekten Sicherheit definieren: Definition 3 Ein Kryptosystem T nennen wir genau dann uneingeschränkt bzw. perfekt sicher, wenn für alle Plaintexte x und alle Ciphertexte y mit PrCt (y) > 0 gilt PrPt|Ct (x|y) = PrPt (x) . In anderen Worten, wann immer ein Kryptoanalytiker einen Ciphertext sieht, erhält er über den Plaintext keine zusätzliche Information. Aufgabe 11 Beweisen Sie: Ein Kryptosystem T ist genau dann uneingeschränkt sicher, wenn für alle Plaintexte x und alle Ciphertexte y mit PrPt (x) > 0 gilt PrCt|Pt (y|x) = PrCt (y) . Aufgabe 12 Betrachten Sie das in Abbildung 3 eingeschränkte Enigma-Verfahren. Verschlüsseln Sie die Nachricht x = ABCABC. Sei y die verschlüsselte Nachricht. Welchen Text erhalten Sie, wenn Sie zur Entschlüsselung die beiden Permutationen vertauschen. Wir wollen nun eine Beziehung zwischen der Anzahl der Schlüssel und der Anzahl der möglichen Plaintexte herleiten. Theorem 3 Sei T Kryptosystem, welches für alle n -Gramme x, y mit PrPt (x) > 0 und PrCt (y) > 0 uneingeschränkte Sicherheit bietet. Dann gilt |K| ≥ |{ x ∈ Zm,n | PrPt (x) > 0 }| . Beweis: Definiere Zm,n,Pt := { x ∈ Zm,n | PrPt (x) > 0 } Zm,n,Ct := { x ∈ Zm,n | PrCt (x) > 0 } . Im Folgenden nehmen wir an, dass alle Schlüssel in w ∈ K mit strikt positiver Wahrscheinlichkeit vorkommen, d.h. Pr K (w) > 0 . Es gilt: 24 Lemma 3 Für alle Schlüssel w ∈ K ist die (eingeschränkte) Transformation Tw : Zm,n,Pt → Zm,n,Ct injektiv. Beweis: Aus der Definition folgt, dass vollständige Tw : Zm,n → Zm,n bijektiv ist. Ferner gilt X PrPt (x) · Pr K (w) . PrCt (y) = (x,w)∈Pt×K mit y=Tw (x) Somit gilt genau dann PrCt (y) > 0 , wenn für ein Paar (x, w) mit y = Tw (x) die Wahrscheinlichkeiten PrPt (x) und Pr K (w) strikt positiv sind, d.h. PrPt (x) > 0 und Pr K (w) > 0 . Da alle Schlüssel aus K mit einer strikt positiven Wahrscheinlichkeit gewählt werden, gilt für alle Schlüssel w ∈ K Tw (Zm,n,Pt ) ⊆ Zm,n,Ct . Folglich ist die (eingeschränkte) Transformation Tw : Zm,n,Pt → Zm,n,Ct injektiv. Lemma 4 Für alle Ciphertexte y ∈ Zm,n,Ct gilt: ∀x ∈ Zm,n,Pt ∃w ∈ K : Tw (x) = y . Beweis: Der Beweis erfolgt über eine Widerspruchsannahme. Für y ∈ Zm,n,Ct sei x ∈ Zm,n,Pt ein Plaintext, für den kein Schlüssel w mit Tw (x) = y existiert. Da T ein Kryptosystem mit perfekter Sicherheit ist, wissen wir PrPt (x) = PrPt|Ct (x|y) = P = w mit Tw (x)=y PrPt,Ct (x, y) PrCt (y) PrPt (x) · PrK (w) PrCt (y) = 0. Dieses widerspricht der Voraussetzung von x ∈ Zm,n,Pt und somit PrPt (x) > 0 . Lemma 5 Für alle x1 , x2 ∈ Zm,n,Pt mit x1 6= x2 und für alle w1 , w2 ∈ K mit Tw1 (x1 ) = Tw2 (x2 ) gilt w1 6= w2 . Beweis: Der Beweis erfolgt wieder über eine Widerspruchsannahme. Seien x1 , x2 ∈ Zm,n,Pt mit x1 6= x2 zwei Plaintexte mit Tw (x1 ) = Tw (x2 ) für einen Schlüssel w ∈ K . Wie wir oben gesehen haben, ist Tw eingeschränkt auf Zm,n,Pt injektiv. Somit folgt aus Tw (x1 ) = Tw (x2 ) unmittelbar, dass x1 = x2 ist. Fassen wir die letzten beiden Lemmata zusammen, so sehen wir, dass es für jeden Ciphertext in Zm,n,Ct und für jeden Plaintext x ∈ Zm,n mit PrPt (x) > 0 genau einen für x individuellen Schlüssel w ∈ K geben muss, so dass Tw (x) = y ist. Folglich muss es mindestens so viele Schlüssel wie Plaintexte in einem uneingeschränkt sicheren Kryptosystem geben. Zunächst scheint die Generierung von uneingeschränkt sicheren Kryptosystemen wegen der enormen Schlüsselmenge eine schwierige Aufgabe darzustellen. Betrachten wir jedoch so genannte One-TimePads, so sehen wir, dass diese Verfahren eine sehr einfache Struktur haben können. One-Time-PadVerfahren wurden 1918 von dem Amerikaner G. S. Vernam eingeführt und von C. Shannon [S49] näher untersucht. Das wesentliche Problem bei diesen Verfahren ist die Schlüsselübergabe, da, wie wir gesehen haben, die Anzahl der Schlüssel nach unten durch die Anzahl aller möglichen Plaintexte beschränkt ist. 25 Sei w = (w0 , . . . , wn−1 ) eine Folge von n unabhängigen uniform verteilten Zufallsvariablen über Zm . 1 . One-Time-Pads Das bedeutet: Für alle i ∈ {0, . . . , n − 1} und für alle z ∈ Zm gilt Pr(wi = z) = m definieren wir als die bijektive Funktion T (n) : X = (x0 , . . . , xn−1 ) −→ Y = (y0 , . . . , yn−1 ) mit einem randomisiert generierten Schlüssel w = (w0 , . . . , wn−1 ) , wobei für alle i ∈ {0, . . . , n − 1} gilt yi = Tw(n) (xi ) := (xi + wi ) mod m . i Somit gilt Pr K (w) = m1n . Zudem gilt K = Zm,n und folglich |K| = mn . Da wir den Plaintext ebenfalls aus Zm,n wählen, gibt es mindestens so viele Schlüssel wie Plaintexte. Für den One-TimePad gilt: Theorem 4 Für jede Plaintextquelle S , sind die Zufallsvariablen y0 , . . . , yn−1 , die wir über den oben definierten One-Time-Pad erhalten, unabhängig und uniform verteilt über Zm . Es gilt PrCt ((y0 , . . . , yn−1 )) = 1 mn y = (y0 , . . . , yn−1 ) ∈ Zm,n . für alle Beweis: Die Werte xi , yi bestimmen eindeutig den Wert wi über die Formel (yi − xi ) ≡ wi mod m . Ferner sind die Werte wi unabhängig und uniform aus Zm gewählt. Somit gilt X PrPt,Ct (x, y) = PrPt (x) · PrK (w) (n) k∈K mit Tw (x)=y = PrPt (x) · 1 · mn X w∈K mit = 1 (n) Tw (x)=y 1 PrPt (x) · n m und somit PrCt (y) = X PrPt,Ct (x, y) x∈Zm,n = X 1 PrPt (x) · n m x∈Zm,n 1 . mn Analog können wir für jede einzelne Position yi im Ciphertext zeigen, dass = 1 . m Fassen wir diese beiden Beobachtungen zusammen, so folgt, dass die Zufallsvariablen y0 , . . . , yn−1 unabhängig und uniform verteilt sind. PrCt (yi ) = Aus diesem Theorem folgt: PrPt|Ct (x|y) = PrPt,Ct (x, y) PrCt (y) P (n) = = = w∈K mit Tw (x)=y PrPt (x) · PrK (w) PrCt (y) 1 mn · PrPt (x) 1 mn PrPt (x) . 26 Dieses impliziert: Theorem 5 Der oben definierte One-Time-Pad ist ein perfekt sicheres Kryptosystem für alle Plaintexte der Länge n . 3.2 A priori Annahmen Zu Beginn dieses Kapitels sind wir kurz auf die a priori Annahmen über Pr K (w) und PrPt (x) eingegangen. Eine naheliegende Annahme ist, dass die Schlüssel w über Pr K uniform verteilt sind, d.h. jeder Schlüssel kommt mit der gleichen Wahrscheinlichkeit vor. Abhängig von der Umgebung ist diese Annahme jedoch mit Vorsicht zu genießen, da ein Mensch, der sich einen Schlüssel frei wählen kann, zumeist einen Schlüssel wählt, den er sich einfach merken kann. In vielen Bereichen sind wir jedoch nicht auf das Erinnerungsvermögen von Menschen angewiesen, in diesen Fällen können wir von einer uniformen Schlüsselverteilung ausgehen. Für den Plaintext ist die Situation komplizierter. Zur Vereinfachung werden wir davon ausgehen, dass die Sprache des Plaintextes dem Kryptoanalytiker bekannt ist (Analysen zur Spracherkennung sind in [B94] zu finden). Um ein Modell für die Verteilung des Plaintextes zu bekommen können wir alle Zeichenketten der Länge n dieser Sprache auflisten und die entsprechenden Wahrscheinlichkeiten bestimmen. Dieses Modell zeigt jedoch zwei wesentliche Schwachstellen auf: 1. Eine entsprechende Datenbank muss eine enorme Menge an Daten verwalten. 2. Die zu berücksichtigenden Wahrscheinlichkeiten sind nummerisch schwer zu behandeln. Daher wollen wir verschiedene eingeschränkte Modell betrachten. Diese Modelle sollen folgende Eigenschaften aufweisen: 1. Das Modell soll charakteristische Eigenschaften der Sprache hinreichend genau reflektieren. Eine dieser Eigenschaften kann zu Beispiel die Häufigkeit bestimmter Buchstabenkombinationen sein. So kommt in vielen Sprachen (z.B. Deutsch, Französisch, Englisch) nach dem Buchstaben q immer der Buchstabe u. Somit existieren die Kombinationen qa und qz in diesen Sprachen nicht. 2. Berechnungen innerhalb der Sprachrepräsentation sollen ohne große Probleme möglich sein. Prinzipiell kann jede Sprache mit einer beliebig hohen Genauigkeit repräsentiert werden, jedoch steigt der Aufwand der Repräsentation sehr schnell. Die grundlegende Idee zur Modellierung einer Sprache beruht auf einen probabilistischen Prozess. Eine Plaintextquelle modellieren wir mit Hilfe einer (endlichen oder unendlichen) Sequenz von Zufallsvariablen X0 , X1 , . . . . Einen Plaintext x = x0 , x1 , . . . erhalten wir dann über ein Zufallsexperiment aus diesen Variablen, wobei PrPt (x) = Pr(X0 = x0 , X1 = x1 , . . .) ist. Eine Plaintextquelle für n -Gramme definieren wir über die Wahrscheinlichkeiten Pr(Xj = x0 , Xj+1 = x1 , . . . , Xj+n−1 = xn−1 ) für alle (x0 , . . . , xn−1 ) ∈ Zm,n und alle j, n ∈ N . Um ein solides mathematisches Modell zu erhalten, müssen wir garantieren, dass die folgenden Bedingungen erfüllt sind: 27 1. PrPt (x0 , . . . , xn−1 ) ≥ 0 für alle n ∈ N und (x0 , . . . , xn−1 ) ∈ Zm,n . P 2. (x0 ,...,xn−1 )∈Zm,n PrPt (x0 , . . . , xn−1 ) = 1 für alle n ∈ N . P 3. PrPt (x0 , . . . , xn−1 ) = (xn ,...,xs−1 )∈Zm,n−s PrPt (x0 , . . . , xs−1 ) für alle n, s ∈ N mit s > n . Die ersten beiden Bedingungen sind zwei klassische Axiome für Wahrscheinlichkeitsverteilungen, nicht Negativität und Normalisierung. Die dritte Bedingung ist ein Spezialfall von Kolmogoroffs Konsistenzforderung. Diese stellt eine Verbindung zwischen Präfixen und deren Verlängerungen dar. Die Bedeutung dieser Eigenschaft zeigt sich zum Beispiel im Deutschen bei der Verknüpfung von einzelnen Worten, wie zum Beispiel: Bügeleisen, Bügelbrett, usw. Wir wollen jetzt auf verschiedene Quellenmodelle eingehen. 3.2.1 Variante 1: 1-Gramm-Quellen Die einfachste Form eines Quellenmodells ist die 1-Gramm-Quelle: Definition 4 Eine Plaintextquelle generiert 1-Gramme über Zm , indem sie eine Folge von n Symbolen x0 , . . . , xn−1 aus Zm unabhängig voneinander jeweils mit einer Wahrscheinlichkeit von p(xi ) wählt. Wir erhalten somit n−1 Y PrPt (x0 , . . . , xn−1 ) = p(xi ) . i=0 Die Wahrscheinlichkeiten p(xi ) für xi ∈ Zm müssen wir empirisch über eine Häufigkeitsanalyse bestimmen. Eine entsprechende Tabelle für Englisch haben wir bereits im Abschnitt über den FriedmanTest angegeben. Es ist einfach zu erkennen, das 1-Gramm-Quellen die drei mathematischen Bedingungen erfüllen, die wir an eine Plaintextquelle gerichtet haben. Jedoch werden von einer 1-Gramm-Quelle viele charakteristische Eigenschaften von Sprachen nicht reflektiert, so ist PrPt (QE) ≈ 0, 000156 > 0 . 3.2.2 Variante 2: 2-Gramm-Quellen Definition 5 Eine Plaintextquelle generiert 2-Gramme über Zm , indem sie eine Folge von n/2 Paaren von Symbolen x0 , . . . , xn−1 aus Zm unabhängig voneinander jeweils mit einer Wahrscheinlichkeit von p(x2i x2i+1 ) wählt. Wir erhalten somit (n−1)/2 PrPt (x0 , . . . , xn−1 ) = Y p(x2i x2i+1 ) . i=0 Wie schon für 1-Gramme müssen wir auch für 2-Gramme die Wahrscheinlichkeiten p(x2i x2i+1 ) empirisch bestimmen. Um eine hinreichend gute Aussage über die Wahrscheinlichkeiten p(x2i x2i+1 ) herleiten zu können, müssen wir entsprechend große Texte analysieren. Die nachfolgenden Tabellen zeigen die Häufigkeiten aller 262 2-Gramme eines englischen Textes der aus 67320 2-Grammen besteht. Die Werte N (i, j) , dass heißt der Eintrag in der i ten Spalte und j ten Zeile steht für das 2-Gramm (i, j) . Um die entsprechenden Wahrscheinlichkeiten zu erhalten, müssen wir p(i, j) = N (i, j)/67320 berechnen. 28 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A 7 114 319 158 492 98 122 646 236 18 14 359 351 249 48 241 – 470 200 381 72 65 282 9 17 18 B 125 7 – 3 27 – – 2 51 – 1 5 65 2 57 – – 15 4 2 87 – 1 – 1 – C 251 2 52 4 323 – – 5 476 – – 6 5 281 91 1 – 79 94 22 103 – – 15 3 – D 304 1 1 33 890 – 2 3 285 – 1 197 – 761 130 – – 129 9 1 51 2 4 – 2 – E 13 394 453 572 326 150 271 2053 271 26 187 513 573 549 21 310 – 1280 595 872 91 522 239 17 84 36 F 65 – – 1 106 108 – – 80 – 1 28 2 46 731 – – 14 8 4 11 – – – – – G 151 – – 20 93 – 20 – 174 – – 29 – 630 46 – – 80 – 1 80 – – – – – H 13 – 339 1 16 – 145 2 1 – 7 – – 6 14 42 – 8 186 2161 2 – 175 1 – – I 311 74 202 273 118 188 95 426 10 5 56 407 259 301 52 75 – 541 390 865 54 223 259 15 20 17 J 13 7 – 5 4 – – – – – – – – 4 8 – – – – – – – – – – – K 67 – 86 – 27 – – – 31 – 4 21 – 30 44 – – 94 30 – 3 – – – 1 – A B C D E F G H I J K L M N O P Q R S T U V W X Y Z N 1216 – 3 8 1029 1 51 14 1550 – 20 1 8 88 1232 1 – 149 7 9 318 – 44 – 5 – O 5 118 606 111 30 326 129 287 554 45 7 208 240 239 125 268 – 510 234 756 4 46 159 1 64 4 P 144 – – – 143 – – – 62 – – 11 139 2 164 103 – 25 128 2 81 – – 47 9 – Q – – 1 1 25 – – – 5 – – – – 3 – – – – 3 – – – – – – – R 764 81 113 49 1436 142 150 56 212 1 3 9 5 5 861 409 – 97 9 295 306 – 13 – 9 – S 648 28 23 75 917 3 29 10 741 – 39 104 47 340 201 32 – 300 277 257 256 2 45 – 44 – T 1019 6 237 2 301 58 28 85 705 – 1 68 1 743 223 51 – 273 823 131 263 – 2 23 5 – U 89 89 92 91 36 54 58 31 7 48 1 72 65 56 533 81 73 88 192 120 6 1 – – 4 1 V 137 2 – 15 160 – – – 155 – – 15 1 31 188 – – 65 – 3 3 1 – – – – W 37 – – 6 153 – – 4 – – – 3 – 8 194 – – 8 13 54 – – – – 3 – X 17 – – – 113 – – – 14 – – – – 1 7 – – 1 – – 2 – – 5 – – 29 L 681 152 98 19 340 35 23 6 352 – 7 378 2 33 234 144 – 75 48 62 230 – 5 – 5 1 Y 202 143 25 40 90 5 6 15 1 – 4 219 37 71 23 3 – 140 27 125 3 5 3 – 2 – M 182 6 4 27 253 1 3 6 184 – 1 22 126 47 397 13 – 139 37 27 69 1 – 1 11 – Z 15 – – – 3 – – – 49 – – – – 2 2 – – – – 3 1 – – – 1 2 Es ist einfach zu erkennen, dass eine 2-Gramm-Quelle die englische Sprache viel besser reflektiert als eine 1-Gramm-Quelle. So gilt PrPt (QE) = 0 und PrPt (HELP ) = 0, 0000061 > 0 = PrPt (LHEP ) . Auf der anderen Seite gilt PrPt (HELP ) = 0, 0000061 < 0, 0000064 = PrPt (HEP L) , obwohl HEPL kein englischer Begriff ist. Um solche Fehlerwahrscheinlichkeiten noch weiter zu reduzieren, müssen wir t -Gramme für t > 2 analysieren. Hier entsteht jedoch das Problem, dass die dazugehörigen Tabellen exponentiell in t wachsen und die benötigte Datenmenge enorm ist. 3.2.3 Variante 3: Markov-Ketten Eine dritte Variante zur Modellierung von Plaintextquellen erhalten wir über das Markov-Kettenmodell. Definition 6 Eine Plaintextquelle generiert 1-Gramme aus Zm über eine Markov-Kette mit Übergangswahrscheinlichkeiten P = (p(s|t))s,t∈Zm und mit Initialwahrscheinlichkeiten π = (π(s))s∈Zm , wenn für alle n ∈ N und alle x = (x0 , . . . , xn−1 ) ∈ Zm,n gilt PrPt (x0 , . . . , xn−1 ) = π(x0 ) · n−2 Y p(xi+1 |xi ) . i=0 Ferner müssen die folgenden Bedingungen erfüllt sein: 1. p(s|t) ≥ 0 für alle s, t ∈ Zm . P 2. s∈Zm p(s|t) = 1 für alle t ∈ Zm . P 3. π(s) ≥ 0 für alle s ∈ Zm und s∈Zm π(s) = 1 . P 4. π(s) = t∈Zm π(t) · p(s|t) für alle s ∈ Zm . Das Ziel des Markov-Ketten Modells ist es, die Sprache mit Hilfe eines probabilistischen endlichen Automaten zu beschreiben, der m Zustände besitzt. Mit der Wahrscheinlichkeitsverteilung π bestimmen wir das Symbol, mit dem der Text beginnen soll. Die Wahrscheinlichkeiten p(s|t) beschreiben uns dann eine Fortsetzung des Textes. Die Wahrscheinlichkeiten p(s|t) können wir mit Hilfe der Tabelle der 2-Gramme im letzten Abschnitt berechnen. Es gilt p(s|t) = N (t, s) . h∈Zm N (h, t) P Die Wahrscheinlichkeiten π für die englische Sprache sind in der nachfolgenden Tabelle wiedergegeben. A B C D E F G π 0,0723 0,0060 0,0282 0,0483 0,1566 0,0167 0,0216 H I J K L M N π 0,0402 0,0787 0,0006 0,0064 0,0396 0,0236 0,0814 O P Q R S T U 30 π 0,0716 0,0161 0,0007 0,0751 0,0715 0,0773 0,0272 V W X Y Z π 0,0117 0,0078 0,0030 0,0168 0,0010 Die Werte von π können aus den bedingten Wahrscheinlichkeiten P wie folgt bestimmt werden: Stellen wir π als (Zeilen-)Vektor und P als Matrix dar, so folgt aus der vierten Eigenschaft, die wir von dem Markov-Ketten Modell gefordert haben: π = π·P . Sei π (`) (j) die Wahrscheinlichkeit, dass die Markov-Kette im ` ten Schritt im Zustand j ist, dass heißt π (`) (j) = Pr(X`−1 = j) . Aus der Definition folgt unmittelbar π (0) (j) = π(j) und aus der vierten Eigenschaft der Markov-Ketten π (`) (j) = π(j) für alle ` ∈ N . Die Wahrscheinlichkeiten π (`) (j) sind somit stationär. Um die Wahrscheinlichkeiten π zu erhalten, genügt es somit die Gleichung π = π · P zu lösen. Die Lösung dieses Systems wird in vielen Standardwerken beschrieben, siehe hierzu [F68]. Es ist jedoch auch für das Markov-Ketten Modell einfach zu erkennen, dass es eine Sprache nicht perfekt beschreibt. So gilt weiterhin PrPt (HELP ) < PrPt (HEP L) . Aufgabe 13 Betrachten Sie folgendes Szenario: Alice möchte, dass Bob einen Multiple-Choice Test ausfüllt. Hierzu würfelt sie für jedes Kästchen ki des Tests ein Zufallsbit ri und sendet den Test mit der Zufallssequenz r = (r0 , . . . , rn−1 ) an Bob mit Hilfe eines Kuriers Eve. Bob füllt jetzt den Test aus, indem er die Sequenz x = (r0 ⊕ x0 , . . . , rn−1 ⊕ xn−1 ) berechnet. Hierbei stehen die Werte xi für die binäre Kodierung der Ja/Nein-Antwort für Kästchen ki . Im Anschluss nimmt Bob mit einem neuen Kurierdienst Eva Kontakt auf. Nachdem er sich davon überzeigt hat, dass Eva nicht Eve ist, sendet er seine Antworten über Eva an Alice. Zeigen Sie, dass das so benutzte Verfahren perfekte Sicherheit für die Antworten von Bob garantiert. Aufgabe 14 Weisen Sie für die drei oben beschriebenen Varianten von Plaintextquellen nach, dass diese die drei geforderten mathematischen Bedingungen an eine Plaintextquelle erfüllen. Aufgabe 15 Erweitern Sie das Markov-Ketten Modell darauf, dass es bei den bedingten Wahrscheinlichkeiten die letzten ` Symbole des Plaintextes berücksichtigt. 3.3 Bayes’scher Ansatz in der Kryptoanalyse Im Folgenden wollen wir uns mit der Aufgabe des Kryptoanalytikers näher beschäftigen. Diese besteht in erster Linie aus der Suche nach einer Funktion δ , welche einen gegebenen Ciphertext korrekt entschlüsselt. Definition 7 Eine deterministische Entscheidungsfunktion δ = (δ (n) )n∈N ist eine Sequenz von Transformationen δ (n) : Zm,n → Zm,n . Die Menge aller deterministischen Entscheidungsfunktionen bezeichnen wir mit ∆D . Wie oben schon angedeutet, soll eine Entscheidungsfunktion einen verschlüsselten Text entschlüsseln, dass heißt, sie soll auf Eingabe einen Ciphertextes y einen Plaintext x ausgeben, so dass bei der Wahl eines entsprechenden Schlüssels w y = Tw (x) ist. Da diese Funktion deterministisch ist, generiert sie auch für andere Plaintext-Schlüssel-Paare (x0 , w0 ) mit y = Tw0 (x0 ) als Ausgabe den Plaintext x . Ergebnisse der Form Tw0 (x0 ) 6= x0 sind fehlerhaft. Um die Qualität einer deterministischen Entscheidungsfunktion bei der Entschlüsselung von Ciphertexten zu messen, definieren wir den Verlust einer Entscheidungsfunktion: 31 Definition 8 Sei δ ∈ ∆D , dann definieren wir die Verlustfunktion Lδ von δ für alle x ∈ Pt und y ∈ Ct durch 1 für δ(y) 6= x Lδ (x, y) = 0 für δ(y) = x . Da es sich beim Plaintext und dem Ciphertext um Zufallsvariablen handelt, interessiert uns unter anderem der erwartete Verlust einer Entscheidungsfunktion. Wir definieren daher X Ln,δ := E[Lδ(n) ] = PrPt,Ct (x, y) · Lδ (x, y) x,y∈Zm,n und Lδ := { Ln,δ | n ∈ N } . Unser Ziel ist es einen Entscheidungsfunktion zu finden, welche den erwarteten Verlust minimiert. Definition 9 Eine deterministische Entscheidungsfunktion δ ∗ nennen wir optimal, wenn 1. δ ∗ ∈ ∆D ist und 2. für alle δ ∈ ∆D und alle n ∈ N gilt Ln,δ∗ ≤ Ln,δ . Eine spezielle Form der Entscheidungsfunktionen erhalten wir mit folgender Definition: Definition 10 Eine deterministische Entscheidungsfunktion δB nennen wir Bayes’sche Entscheidungsfunktion, wenn PrPt|Ct (δB (y)|y) = max PrPt|Ct (x|y) . x∈Zm,n Man beachte, dass δB (y) genau dann definiert ist, wenn PrCt (y) > 0 ist. Abhängig von der Verteilung PrPt ist es möglich, dass für verschiedene Ciphertexte y Plaintexte x existieren, so dass bei geeignetem Schlüssel w Tw (x) = y ist und zudem PrPt (x) maximal ist. Es kann daher mehrere verschiedene Bayes’sche Entscheidungsfunktion geben. Die wesentliche Bedeutung dieser Entscheidungsfunktionen folgt aus dem nachfolgenden Theorem: Theorem 6 Eine deterministische Entscheidungsfunktion δ ist genau dann optimal, wenn sie eine Bayes’sche Entscheidungsfunktion ist. Beweis: Es gilt: Ln,δ = E[Lδ(n) ] X = PrPt,Ct (x, y) · Lδ (x, y) x,y∈Zm,n = X PrCt (y) · PrPt|Ct (x|y) · Lδ (x, y) x,y∈Zm,n = X X PrCt (y) · PrPt|Ct (x|y) · Lδ (x, y) y∈Zm,n x∈Zm,n = X y∈Zm,n PrCt (y) · X x∈Zm,n 32 PrPt|Ct (x|y) · Lδ (x, y) Zur Vereinfachung der zweiten Summe setzen wir nun unser Wissen über die Definition von Lδ (x, y) ein: Lδ (x, y) ist genau dann 0, wenn δ(y) = x ist. X X PrCt (y) · PrPt|Ct (x|y) · Lδ (x, y) Ln,δ = y∈Zm,n = X x∈Zm,n mit δ(y)6=x X PrCt (y) · y∈Zm,n PrPt|Ct (x|y) x∈Zm,n mit δ(y)6=x Da für jedes y maximal ein x existiert, so dass δ(y) = x ist, können wir im nächsten Schritt diese Formel insoweit vereinfachen, dass wir in der zweiten Summe die Komplementärmenge betrachten: X X Ln,δ = PrCt (y) · 1 − PrPt|Ct (x|y) y∈Zm,n = X x∈Zm,n mit δ(y)=x PrCt (y) · 1 − PrPt|Ct (δ (n) (y)|y) . y∈Zm,n Wir wollen nun die beiden Richtungen des Theorems beweisen: 1. Die Entscheidungsfunktion δ ist genau dann optimal, wenn Ln,δ minimal ist. 2. Da die Entscheidungsfunktion δ (n) für jedes y unabhängig von anderen Ciphertexten y 0 gewählt werden kann, und PrCt (y) unabhängig von δ (n) (y) ist, gilt: Ln,δ ist genau dann minimal, wenn für alle y PrPt|Ct (δ (n) (y)|y) maximal ist, d.h. PrPt|Ct (δ (n) (y)|y) = max PrPt|Ct (x|y) . x∈Zn,m Fassen wir zusammen: Die Entscheidungsfunktion δ ist genau dann optimal, wenn δ eine Bayes’sche Entscheidungsregel ist. Wir wollen nun ein Beispiel für Entscheidungsfunktionen diskutieren. Als Verschlüsselungsfunktion betrachten wir T7 (i) ≡ i + 7 mod 26 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z H I J K L M N O P Q R S T U V W X Y Z A B C D E F G Wir verschlüsseln den Plaintext SENDHELP und erhalten den Ciphertext ZLUKOLSW. Um eine optimale Entscheidungsfunktion zu finden, benötigen wir die Werte der bedingten Wahrscheinlichkeiten PrPt|Ct (x|ZLU KOLSW ) . Für alle 268 8-Gramme x . Da wir jedoch annehmen, dass der Kryptoanalytiker das benutzte Verschlüsselungsverfahren kennt, können wir die Anzahl der betrachteten 8-Gramme auf 26 reduzieren. Ersetzen wir in y die Zeichen durch die entsprechenden Werte, so erhalten wir y = (y0 , y1 , y2 , y3 , y4 , y5 , y6 , y7 ) = (25, 11, 20, 10, 14, 11, 18, 22) und für die interessanten 8-Gramme y−w = (y0 − w, y1 − w, y2 − w, y3 − w, y4 − w, y5 − w, y6 − w, y7 − w) = (25 − w, 11 − w, 20 − w, 10 − w, 14 − w, 11 − w, 18 − w, 22 − w) mod 26 . 33 Für die zu betrachtenden Wahrscheinlichkeiten gilt 1 26 · PrPt (y − w mod 26) PrPt,Ct (x, y) = 0 und PrCt (y) = X PrPt,Ct (x, y) = x∈Z26,8 für x = y − w mod 26 mit k ∈ {0, . . . , 25} sonst. 25 X 1 · PrPt (y − w mod 26) . 26 w=0 Fassen wir zusammen: PrPt (y − w mod 26) PrPt|Ct (y − w mod 26|y) = P25 . k=0 PrPt (y − k mod 26) Die nachfolgende Tabelle fasst die Wahrscheinlichkeiten PrPt|Ct (y − w mod 26|y) für die Plaintextquellen aus Definition 4 bis 6 zusammen: k Y −k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ZLUKOLSW YKTJNKRV XJSIMJQU WIRHLIPT VHQGKHOS UGPFJGNR TFOEIFMQ SENDHELP RDMCGDKO QCLBFCJN PBKAEBIM OAJZDAHL NZIYCZGK MYHXBYFJ LXGWAXEI KWFVZWDH JVEUYVCG IUDTXUBF HTCSWTAE GSBRVSZD FRAQURTC EQZPTQXB DPYOSPWA COXNROVZ BNWMQNUY AMVLPMTX PrPt nach Def. 4 0,00002353 0,00000736 0,00000003 0,05269719 0,00004373 0,00012522 0,00601645 0,35013155 0,00158882 0,00000412 0,00100489 0,00013951 0,00000043 0,00000164 0,00007197 0,00000134 0,00001388 0,00037299 0,58014350 0,00006560 0,00066643 0,00000002 0,00658287 0,00003584 0,00005462 0,00020646 PrPt nach Def. 5 0,00000089 0,00000000 0,00000000 0,00418837 0,00000000 0,00000000 0,00000000 0,99580491 0,00000088 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000495 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 PrPt nach Def. 6 0,00000309 0,00000000 0,00000000 0,00033815 0,00000000 0,00000000 0,00000000 0,99965766 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000111 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 Demnach würde eine optimale Entscheidungsfunktion unter der Annahme, dass eine 1-Gramm Plaintextquelle vorliegt den Text HTCSWTAE liefern und für die beiden anderen oben vorgestellten Plaintextquellen den Plaintext SENDHELP. 34 4 Symmetrische Verschlüsselungsalgorithmen Definition 11 Ein symmetrisches Kryptosystem ist ein Verschlüsselungssystem, welches den gleichen Schlüssel zur Ver- und Entschlüsselung verwendet. Bei manchen symmetrischen Verfahren (z. B. IDEA) ist es notwendig, den aus dem Verschlüsselungs-Schlüssel einen EntschlüsselungsSchlüssel zu berechnen. Im Gegensatz hierzu benutzt ein asymmetrischen Kryptosystem zur Verund Entschlüsselung ein Schlüsselpaar. Wir unterteilt die symmetrischen Verfahren in Blockchiffren und Stromchiffren. • Bei einem Stromchiffre wird der Plaintext Zeichen für Zeichen ver- bzw. entschlüsselt. • Bei einem Blockchiffre wird der Plaintext Block für Block ver- bzw. entschlüsselt, wobei die Blöcke eine feste Größe haben. In einem Schritt werden somit mehrere Zeichen ver- bzw. entschlüsselt. Die bisher vorgestellten Verfahren zählen (mehr oder weniger) zu den Stromchiffresysteme. Im Folgenden werden wir nun die beiden bekanntesten symmetrischen Verschlüsselungsalgorithmen vorstellen: den DES und den AES. 4.1 Der Data Encryption Standard (DES) Bis 1970 wurde die Kryptographie vom Militär dominiert. 1973 wurde daher vom National Bureau of Standards (NBS) der USA eine erste Ausschreibung für ein standardisiertes Verschlüsselungsverfahren gestartet. 1975 wurde das DES im Federal Register veröffentlicht und galt viele Jahre als Standardkryptosystem für kommerzielle Anwendungen. Seit 1994 gelang es das DES durch immer weiter verbesserte Verfahren immer schneller zu knacken. Daraufhin wurde 1999 der Triple-DES (TDES, 3DES) als neuer Standard veröffentlicht und 2005 der DES als Standard außer Kraft gesetzt. 2006 wurde ein FPGA-basierte Parallelrechner COPACOBANA vorgestellt mit dessen Hilfe das DES in weniger als 9 Tagen geknackt werden konnte. Die Materialkosten dieses Rechners liegen unter 10.000 Dollar. Die folgende Beschreibung des DES und des TDES folgt der Beschreibung aus [FIPS99]. 4.1.1 Aufbau des DES-Kryptosystems Das DES-System verschlüsselt einen 64-Bit Block mit Hilfe eines 64-Bit Schlüssels K . 56 Bit des Schlüssels sind frei wählbar. Jedes 8-te Bit des Schlüssels ist so gewählt, dass in jedem 8-Bit Block des Schlüssels eine ungerade Anzahl von 1-en stehen. Die Verschlüsselung geschieht in 18 Stufen: • Die erste und die letzte Stufe bestehen aus einer festen Permutation der Eingabe bzw. der Ausgabe. • Die eigentliche Verschlüsselung geschieht in den 16 verbleibenden Stufen. Aus dem Plaintext x wird mit Hilfe einer Permutation IP (initial permutation) die permutierte Eingabe generiert, die wir in zwei Hälften L0 und R0 aufteilen. 35 Für die nächsten 16 Stufen (den Verschlüsselungsstufen) generieren wir aus dem Schlüssel K jeweils ein 48-Bit Teilschlüssel Ki . In den Verschlüsselungsstufen berechnen wir für i ∈ [1..16] Li := Ri−1 Ri := Li−1 ⊕ f (Ri−1 , Ki ) wobei ⊕ das Bitweise xor der beiden binären Zeichenketten bezeichnet. Auf die Berechnung von f werden wir noch eingehen. Nach den 16 Verschlüsselungsstufen erhalten wir den Preoutput R16 L16 aus dem wir über die inverse Permutation IP −1 die Ausgabe generieren. R1 = L0 ⊕ f (R0 , K1 ) R16 = L15 ⊕ f (R15 , K16 ) K1 R0 I R1 R16 O U N P IP IP −1 f U T T P U ⊕ L0 L0 R0 = IP (x) L1 L16 L1 = R0 L16 = R15 T Die einzelnen Permutationen (in der Konstruktion von f und bei der Erzeugung der Teilschlüssel werden noch weitere Permutationen vorgestellt) sollen unter anderem eine möglichst gut Durchmischung der Bits des Plaintextes garantieren. Neben der gut Durchmischung soll durch die Permutationen auch garantiert werden, dass einzelne Bits des Plaintexts möglichst viele Stellen des Ciphertextes beeinflussen. So unterscheidet sich die Ciphertexte von x1 = 064 und x2 = 063 1 bereits nach der 3-ten Verschlüsselungsstufen in 21 Bits und nach Abschluß der DES Verschlüsselung in 34 Bits. Einen derartigen Effekt nennen wir auch Lawineneffekt. Im Folgenden zählen wir die Bitpositionen in einem Binärstring mit den Werten i = 1, 2, . . . , 64 auf. Für IP bzw. für IP −1 wählen wir: IP 58 60 62 64 57 59 61 63 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 36 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 9 11 13 15 2 4 6 8 1 3 5 7 IP−1 40 8 39 7 38 6 37 5 36 4 35 3 34 2 33 1 48 47 46 45 44 43 42 41 16 15 14 13 12 11 10 9 56 55 54 53 52 51 50 49 24 23 22 21 20 19 18 17 64 63 62 61 60 59 58 57 32 31 30 29 28 27 26 25 Die Lesweise dieser Tabellen ist wie folgt: • Für eine n × m -Tabelle T sei T [i, j] der Wert in der i -ten Spalte und j -ten Zeile von T . • Für einen n · m -Bit String w ist u = T (w) der String, der an der Position i + (j − 1) · n mit i ∈ [1..n] und j ∈ [1..m] das T [i, j] -te Zeichen von w stehen hat. Somit steht in der permutierten Eingabe IP (x) an der ersten Stelle das 58-ste Bit der Eingabe, an der zweiten Stelle das 50-ste Bit der Eingabe, u.s.w. 4.1.2 Berechnung der Funktion f Die Funktion f verknüpft wie folgt Ri mit dem Teilschlüssel Ki+1 : 1. Mit Hilfe der Tabelle E expandieren wir Ri auf 48 Bits, indem wir 16 der 32 Bits verdoppeln. 2. Das expandierte Ri wird bitweise mit Ki+1 ge-xor-ed. 3. Den resultierenden String teilen wir in 8 Blöcke Bi a 6 Bit auf, d.h. B1 . . . B8 = Ki+1 ⊕ E(Ri ) . 4. Auf den i -ten 6-Bit Block Bi wenden wir die über Si gegebene S -Box-Operation Si (Bi ) an. Diese S -Box-Operation reduziert die 6-Bit eines Blocks Bi auf 4-Bits. 5. Die konkatenierte Folge der 4-Bit Blöcke Si (Bi ) permutieren wir abschließende mit Hilfe der Permutation P . Das 32-Bit Resultat dieser Permutation gibt uns das Resultat Funktion f an. Ri (32 Bits) E 48 Bits Ki+1 (48 Bits) ⊕ S8 S1 P Ri+1 (32 Bits) 37 Wir wollen nun zunächst die beiden Tabellen E und P vorstellen, und im Anschluß auf die S -BoxOperation eingehen. Die Expandierungstabelle E hat die folgende Gestallt: 32 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 4 8 12 16 20 24 28 32 5 9 13 17 21 25 29 1 Die erste Zeile von E(Ri ) wird (nach dem xor-en mit einem Teil des Teilschlüssel) in der ersten S -Box-Operation weiterverarbeitet, die zweite Zeile in der zweiten S -Box-Operation und so weiter. Man beachte, dass die letzten beiden Einträge jeder Zeile den ersten beiden Einträgen der Folgezeile entsprechen. Die Tabelle P hat die folgende Gestallt: 16 29 1 5 2 32 19 22 7 12 15 18 8 27 13 11 20 28 23 31 24 3 30 4 21 17 26 10 14 9 6 25 Wie die Permutation IP realisiert die Permutation P wieder eine gute Durchmischung des resultierenden Binärstrings. Beachte, dass dieses bei E nicht der Fall ist. Die Si -Box-Operation ist wie folgt aufgebaut: • Wir betrachten den 6-Bit Block Bi und unterteilen den Binärstring in zwei Teile: in die ersten beiden Bits Bi1 und in die verbleibenden 4 Bits Bi2 . • Das Ergebnis der Si -Box-Operation ist der Binärstring des Werts der Tabelle Si in der Bi1 -ten Zeile und der Bi2 -ten Spalte. Hierbei werden Bi1 und Bi2 als Zahlen interpretiert. Designkriterien für gut S -Boxen wurden in [C94] veröffentlicht. Im Folgenden werden wir die S Boxen des DES-Systems vorstellen: S1 0 1 2 3 0 14 0 4 15 1 4 15 1 12 2 13 7 14 8 3 1 4 8 2 4 2 14 13 4 5 15 2 6 9 6 11 13 2 1 7 8 1 11 7 38 8 3 10 15 5 9 10 6 12 11 10 6 12 9 3 11 12 11 7 14 12 5 9 3 10 13 9 5 10 0 14 0 3 5 6 15 7 8 0 13 4.1.3 S2 0 1 2 3 0 15 3 0 13 1 1 13 14 8 2 8 4 7 10 3 14 7 11 1 4 6 15 10 3 5 11 2 4 15 6 3 8 13 4 7 4 14 1 2 S3 0 1 2 3 0 10 13 13 1 1 0 7 6 10 2 9 0 4 13 3 14 9 9 0 4 6 3 8 6 5 3 4 15 9 6 15 6 3 8 7 5 10 0 7 S4 0 1 2 3 0 7 13 10 3 1 13 8 6 15 2 14 11 9 0 3 3 5 0 6 4 0 6 12 10 5 6 15 11 1 6 9 0 7 13 8 9 12 5 11 9 7 0 8 6 10 2 1 12 7 11 13 10 6 12 12 12 6 9 0 13 0 9 3 5 14 5 11 2 14 15 10 5 15 9 8 1 2 11 4 9 13 8 1 15 10 12 5 2 14 11 7 14 12 3 12 11 12 5 11 13 4 11 10 5 14 2 15 14 2 15 8 1 7 12 7 10 3 13 8 8 1 4 15 9 9 2 7 1 4 10 8 2 3 5 11 5 12 14 11 12 11 1 5 12 13 12 10 2 7 14 4 14 8 2 15 15 9 4 14 S5 0 1 2 3 0 2 14 4 11 1 12 11 2 8 2 4 2 1 12 3 1 12 11 7 4 7 4 10 1 5 10 7 13 14 6 11 13 7 2 7 6 1 8 13 8 8 5 15 6 9 5 0 9 15 10 3 15 12 0 11 15 10 5 9 12 13 3 6 10 13 0 9 3 4 14 14 8 0 5 15 9 6 14 3 S6 0 1 2 3 0 12 10 9 4 1 1 15 14 3 2 10 4 15 2 3 15 2 5 12 4 9 7 2 9 5 2 12 8 5 6 6 9 12 15 7 8 5 3 10 8 0 6 7 11 9 13 1 0 14 10 3 13 4 1 11 4 14 10 7 12 14 0 1 6 13 7 11 13 0 14 5 3 11 8 15 11 8 6 13 S7 0 1 2 3 0 4 13 1 6 1 11 0 4 11 2 2 11 11 13 3 14 7 13 8 4 15 4 12 1 5 0 9 3 4 6 8 1 7 10 7 13 10 14 7 8 3 14 10 9 9 12 3 15 5 10 9 5 6 0 11 7 12 8 15 12 5 2 0 14 13 10 15 5 2 14 6 8 9 3 15 1 6 2 12 S8 0 1 2 3 0 13 1 7 2 1 2 15 11 1 2 8 13 4 14 3 4 8 1 7 5 15 3 12 10 6 11 7 14 8 7 1 4 2 13 8 10 12 0 15 9 9 5 6 12 10 3 6 10 9 11 14 11 13 0 12 5 0 15 3 13 0 14 3 5 14 12 9 5 6 15 7 2 8 11 4 6 10 9 4 Die Teilschlüssel Ki Die Konstruktion der Teilschlüssel Ki erfolgt wieder in mehreren Stufen: 39 1. Im ersten Schritt werden mit Hilfe der Tabelle PC-1 der Schlüssel K permutiert und die redundanten Kontroll-Bits heraus gefiltert. Dieses sind die Bits 8, 16, 24, 32, 40, 48, 56, 64. 2. Die verbleibenden 56 Bits werden in zwei 28-Bit Blöcke aufgeteilt: C0 und D0 . 3. Sukzessive generieren wir aus C0 die Folge C1 , . . . , C16 und aus D0 die Folge D1 , . . . , D16 . Hierbei erhalten wir aus Ci−1 und Di−1 über zyklische Shifts die Blöcke Ci und Di . Die Anzahl der Shifts ist von i abhängig. 4. Aus der Konkatenation der Blöcken Ci und Di selektieren wir über die Tabelle PC-2 den Teilschlüssel Ki . Die folgende Graphik illustriert das zusammenwirken der einzelnen Schritte: K K1 K16 PC-2 PC-2 C0 Linksshift C1 Linksshifts C2 C16 D0 Linksshift D1 Linksshifts D2 D16 e y K PC-1 C0 D0 = PC-1 (K) Die Tabelle PC-1 hat die folgende Gestalt: 57 1 10 19 63 7 14 21 49 58 2 11 55 62 6 13 41 50 59 3 47 54 61 5 33 42 51 60 39 46 53 28 25 34 43 52 31 38 45 20 17 26 35 44 23 30 37 12 9 18 27 36 15 22 29 4 und die Tabelle PC-2 die folgende Gestalt: 14 3 23 16 41 30 44 46 17 28 19 7 52 40 49 42 11 15 12 27 31 51 39 50 24 6 4 20 37 45 56 36 40 1 21 26 13 47 33 34 29 5 10 8 2 55 48 53 32 Die Anzahl der Shifts um aus Ci−1 den Block Ci bzw. aus Di−1 den Block Di zu generieren hängt von i ab: i: Anzahl der Shifts: i: Anzahl der Shifts: 1 1 9 1 2 1 10 2 3 2 11 2 4 2 12 2 5 2 13 2 6 2 14 2 7 2 15 2 8 2 16 1 Mit Hilfe der Tabelle PC-2 wählen wir wählen wir die 48 Bits des Teilschlüssels Ki des 56-Bit Schlüssels Ci Di aus. Der Schlüssel setzt sich bei jedem Auswahlschritt aus der Konkatenation der beiden aktuellen Blöcke Ci Di zusammen. Da wir die beiden Blöcke des 56-Bit Schlüssels vor jedem Auswahlschritt zyklisch Shiften, wird bei jedem Auswahlschritt eine veränderte Kollektion an Bits ausgewählt. 4.1.4 Die Entschlüsselöung eines DES-Cyphertextes Die Entschlüsselung eines DES-Cyphertextes geschieht mehr oder weniger über das gleiche Verfahren, mit dem wir die Verschlüsselung vorgenommen haben. Wir starten mit der folgenden Beobachtung: Da sich Li ohne Veränderung aus Ri−1 ergibt, können wir die Formel Ri = Li−1 ⊕ f (Ri−1 , Ki ) umstellen zu Ri = Li−1 ⊕ f (Li , Ki ) . Die Teilschlüssel Ki sind unabhängig von Eingabe und von Li und Ri und können daher unabhängig vom aktuellen Zustand des Systems generiert werden. Daher ist es möglich die obige Formel so umzustellen, dass wir den Wert Li−1 aus Ri und Li bestimmen können. Wir erhalten Li−1 = Ri ⊕ f (Li , Ki ) . und nach Konstruktion Ri−1 = Li . Die folgenden Graphik illustriert die Entschlüsselöung eines DES-Cyphertextes: L15 = R16 ⊕ f (L16 , K16 ) L0 = R1 ⊕ f (L1 , K1 ) K16 L16 I L15 L0 O U N P IP IP −1 f U T T P U R16 R16 L16 = IP (y) ⊕ R15 R0 R15 = L16 R0 = L1 41 T 4.2 Das Triple DES-Kryptosystem (TDES) Aufgrund der immer schnelleren Attacken gegen das DES-System wurde 1999 ein modifiziertes DESSystem, das TDES, vorgestellt. Ziel des TDES-Kryptosystems war es, dass DES-Kryptosystem sicherer gegen Angriffe zu machen. Hierbei sollte sowohl die Verschlüsselung als auch die Entschlüsselung mit Hilfe des einfachen DES möglich sein. Ferner sollte es mit dem neuen System auch möglich sein Ciphertexte, die mit DES verschlüsselt wurden, zu entschlüsseln. Ein erster Ansatz besteht darin einen Text mehrmals mit DES unter verschiedenen Schlüsseln zu verschlüsseln. Dieses würde zwar das System sicherer machen, jedoch würden die Schwächen des DES erhalten bleiben. Der TDES wählt einen anderen Ansatz. Sei EK (x) die Verschlüsselung von x mit Hilfe des DES-Kryptosystems unter dem Schlüssel K und sei DK (y) die Entschlüsselung von y mit Hilfe des DES-Kryptosystems unter dem Schlüssel K . Seien K1 , K2 , K3 drei Schlüssel, dann erhalten wir die Verschlüsselung von x mit Hilfe des TDESKryptosystems unter dem Schlüssel K1 , K2 , K3 über EK3 (DK2 (EK1 (x))) und die dazugehörige Entschlüsselung über DK1 (EK2 (DK3 (x))) Beim TDES unterscheiden wir drei verschiedene Betriebsformen: 1. Alle Schlüssel sind paarweise unterschiedlich, 2. K1 = K3 6= K2 und 3. K1 = K2 = K3 . Dieses entspricht dem DES-Kryptosystems, der TDES ist somit abwärtskompatibel. 4.3 Iterierte Blockkryptosysteme Bevor wir auf die Kryptoanalyse des DES-Kryptosystems eingehen, werden wir noch einige Verallgemeinerungen des DES-Kryptosystems vorstellen. Definition 12 Ein iteriertes r -Runden Blockkryptosystem besteht aus einer Rundenfunktion g : Zm,n × Zk,l → Zm,n , welche in r Runden den Plaintext x ∈ Zm,n mit Hilfe der Rundenschlüssel K1 , . . . , Kr ∈ Zk,l verschlüsselt. Setzen wir y 0 := x , so erhalten wir yi = g(y i−1 , Ki ) und erhalten den Ciphertext y := y r . Um den Ciphertext entschlüsseln zu können, muss es möglich sein für jeden festen Rundenschlüssel die Umkehrfunktion von g zu berechnen. Viele Kryptosysteme basieren auf den Operationen auf endlichen Körpern, daher werden wir nachfolgend einige Begriffe wiederholen. Definition 13 Sei K eine Menge (mit mindestens zwei Elementen) und + , · zwei Verknüpfungen auf K . (K, +, ·) heißt Körper, wenn für alle a, b, c ∈ K die folgenden Gesetzmäßigkeiten gelten: 42 Assoziativgesetz bezüglich + • : a + (b + c) = (a + b) + c Kommutativgesetz bezüglich + • : a+b=b+a Assoziativgesetz bezüglich · • : a · (b · c) = (a · b) · c Kommutativgesetz bezüglich · • : a·b=b·a Distributivegesetz • : a · (b + c) = a · b + a · c neutrales Element bezüglich + • : ∃0 ∈ K∀a ∈ K : a + 0 = a inverses Element bezüglich + • : ∀a ∈ K∃ − a ∈ K : −a + a = 0 neutrales Element bezüglich · • : ∃1 ∈ K∀a ∈ K : a · 1 = a inverses Element bezüglich · • : ∀a ∈ K∃a−1 ∈ K : a−1 · a = 1 Für den endlichen Körper mit zwei Elementen {0, 1} mit 0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 1, 0 · 0 = 0 · 1 = 1 · 0 = 0, 1 · 1 = 1 bezeichnen wir mit F2 oder GF (2) . Besonders interessieren uns endlichen Körper. Definition 14 Einen endlichen Körper, d.h. den Menge K des Körpers (K, +, ·) umfasst endlich viele Elemente, nennen wir auch Galoiskörper oder Galoisfeld GF (|K|) . Von besonderem Interesse sind Galoisfelder deren Größe eine Primzahlpotenz ist, d.h. Galoisfelder mit |K| = pn für eine Primzahl p . Wir bezeichnen ein solches Feld auch mit GF (pn ) . Da alle endlichen Körper der gleichen Kardinalität zueinander isomorph sind, können wir uns auf die Polynomrepräsentation des Körpers einschränken: • Es sei K ein Körper. Dann heißt ein Polynom f ∈ K[x] in der Variable x irreduzibel, wenn f nicht konstant ist und es keine nicht konstanten Polynome g, h ∈ K[x] gibt, so dass f = g · h ist. • Eine Polynomrepräsentation von GF (pn ) generieren wir wie folgt: – Wähle ein irreduzibels Polynom g ∈ GF(p)[x] vom Grad n und Koeffizienten in GF (p) – ein solchen Polynom existiert immer wenn GF (pn ) existiert. – Wir erhalten die gewünschte Repräsentation über GF (p)[x]/(g(x)) : ∗ Die Elemente von GF (p)[x]/(g(x)) erhalten wir über die Menge aller Polynome mit Grad kleiner n und Koeffizienten aus GF (p) . 43 ∗ + entspricht der Polynomaddition, wobei wir die jeweiligen Koeffizienten modulo p addieren. ∗ · entspricht der Polynommultiplikation, wobei wir zunächst den Grad mit Hilfe der Polynomdivision durch g(x) reduzieren. Der Rest bei der Division, d.h. das Polynom mit einem Grad kleiner n , stellt das gesuchte Ergebnis von · dar, wobei wir abschließend noch die Koeffizienten modulo p berechnen. Aus der Definition der Addition innerhalb der Polynomrepräsentation von GF (2n ) erhalten wir: Stellen wir die Koeffizienten der Elemente von GF (2n ) in der Polynomrepräsentation als einen Binärstring der Länge n dar, dann entspricht die Addition zweier Elemente des GF (2n ) dem bitweise xor dieser Strings. Mit Hilfe von GF (2n ) können wir nun eine spezielle Form von iterierten Blockkryptosystemen vorstellen: Definition 15 Ein iteriertes r -Runden Blockkryptosystem nennen wir ein r -Runden FeistelKryptosystem, wenn der Plaintext x gerade Länge hat, d.h. x = x1 x2 mit |x1 | = |x2 | , und für die Rundenfunktion g gilt: g : GF(2n ) × GF(2n ) × GF(2m ) → GF(2n ) × GF(2n ) wobei g(x1 , x2 , z) = (x2 ⊕ h(x1 , z), x1 ) n ist. Die Funktion h : GF(2 ) ×GF(2m ) → GF(2n ) ist hierbei beliebig und ⊕ das xor der Binärstrings x2 und h(x1 , z) . Sei x = xL xR ein gegebener Plaintext mit xL , xR ∈ Z2,n , K1 , . . . , Kr ∈ Z2,m die Rundenschlüssel, die mit Hilfe eines Schlüsselgenerierungsalgorithmus aus einem Schlüssel K generiert werden. Wir r r 1 0 yR mit := xR und erhalten y = yL := xL und yR setzen yL i−1 i−1 i−1 i i (yL , yR ) := (yR , yL ⊕ h(yR , Ki )) für alle i ∈ [1..r] . Schränken wir die Abbildung h weiter ein, so kommen wir zu Kryptosystemen, die weitgehend mit dem DES-System übereinstimmen. Definition 16 Eine Abbildung f : Zm,n → Zm,k über einen Körper (Zm , +, ·) nennen wir affin, wenn wir wir sie mit Hilfe einer k × n -Matrix A ∈ Zk×n und einem Translationsvektor t ∈ Zkm m über f (x) = A · x + t für x ∈ Znm beschreiben läßt. Die Operationen innerhalb dieses Matrix-Vektor-Produkts und die innerhalb nachfolgende Vektor-Vektor-Addition entsprechen den Körperoperationen. Ist t der 0-Vektor, wobei 0 das neutrale Element bez. + ist, dann nennen wir die Abbildung auch linear. 44 Definition 17 Ein r -Runden Feistel-Blockkryptosystem nennen wir ein iteriertes r -Runden DES-Kryptosystem, wenn für die Funktion h : GF(2n ) × GF(2m ) → GF(2n ) in g(x1 , x2 , z) = (x2 ⊕ h(x1 , z), x1 ) gilt h(x1 , z) = f (E(x) ⊕ z) m n wobei f : GF(2 ) → GF(2 ) mit m ≥ n ist und E : GF(2n ) → GF(2m ) affine Expansionsfunktion ist. Den nichtlinearen Anteil in f bezeichnen wir in Anlehnung an DES als S -Box-Operation. In der Literatur wird noch auf eine weitere Form von iterierte r -Runden Blockkryptosystem untersucht: Definition 18 Ein iteriertes r -Runden Blockkryptosystem nennen wir ein r -Runden SubstitutionsPermutations-Kryptosystem (kurz. SPN-Kryptosystem), wenn wir g wir folgt beschreiben können: sei • S0 , . . . , Sk−1 : Z2,m → Z2,m eine Folge von k Abbildungen, • π : [0..k · m − 1] → [0..k · m − 1] eine Permutation der Positionen eines k · m Bit-Binärstrings und • K1 , . . . , Kr ∈ Z2,k·m eine Folge von r Rundenschlüssel, dann erhalten wir y i = g(y i−1 , Ki ) über wi = y i−1 ⊕ Ki i des Binärstrings wi in k Blöcke der Länge m und für die Aufteilung w0i , . . . , wk−1 yi i = π(S0 (w0i ) . . . Sk−1 (wk−1 )) . Den nichtlinearen Anteil in den Abbildungen Sj bezeichnen wir wieder als S -Box-Operation. Die nachfolgende Abbildung zeigt uns ein 2-Runden SPN-Kryptosystems mit einer Aufteilung in 2 Blöcke. K1 K2 π y00 w01 S0 π y01 ⊕ y10 w02 S0 y02 w12 S1 y12 ⊕ w11 S1 y11 Wir wollen nun noch einen letzten Typ von iterierten Blockkryptosystemen vorstellen. 45 Definition 19 Ein iteriertes r -Runden Blockkryptosystem nennen wir ein lineares r -Runden Kryptosystem über F2 wenn • für jede Runde i ∈ [0..r] y i := Ci (x) = x für i = 0 πi (y i−1 ⊕ Ki ) für i ∈ [1..r] ist, wobei πi eine feste Permutation der n Bits, Ki der Rundenschlüssel und y i der Rundentext angibt. Im nachfolgenden Abschnitt werden wir die differentielle Kryptoanalyse vorstellen. Im Wesentlichen basiert diese auf den folgenden Beobachtungen über lineare Abbildungen bzw. über lineare Kryptosystem. Beobachtung 4 Es gilt • Für eine lineare Abbildung f und alle Eingabe x1 , x2 gilt f (x1 + x2 ) = f (x1 ) + f (x2 ) . • Somit gilt für alle Plaintexte x1 , x2 und alle i ∈ [1..r] Ci (x1 ⊕ x2 ) = Ci (x1 ) ⊕ Ci (x2 ) , d.h. die Differenz der Ciphertexte hängt nur von der Differenz der Plaintexte ab. • Es gilt y1i ⊕ y2i = πi (y1i−1 ⊕ Ki ) ⊕ πi (y2i−1 ⊕ Ki ) = πi (y1i−1 ⊕ Ki ⊕ y2i−1 ⊕ Ki ) = πi (y1i−1 ⊕ y2i−1 ) = πi (· · · (π1 (x1 ⊕ x2 )) · · · ) = πi (· · · (π1 (x1 )) · · · ) ⊕ πi (· · · (π1 (x2 )) · · · ), d.h. der Schlüssel beeinflusst die Differenz in der i -ten Runde nicht. Beobachtung 5 Seien x1 , x2 , x3 , x4 ∈ Z2,n mit x1 ⊕ x2 = x3 ⊕ x4 , dann gilt für unser lineares Kryptosystem und für alle i ∈ [1..r] Ci (x1 ) ⊕ Ci (x2 ) = Ci (x3 ) ⊕ Ci (x4 ) . Für die nichtlineare S -Box-Operation gilt diese Beobachtung im Allgemeinen nicht, d.h. für viele Binärstrings x1 , x2 , x3 , x4 ∈ Z2,n mit x1 ⊕ x2 = x3 ⊕ x4 gilt S(x1 ) ⊕ S(x2 ) 6= S(x3 ) ⊕ S(x4 ) . 46 4.4 Differentielle Kryptoanalyse Zur Kryptoanalyse des DES-Kryptosystems wurden 1990 die differentielle und 1993 die lineare Kryptoanalyse vorgestellt. Die wesentliche Ideen dieser Attacken werden wir im Folgenden vorstellen. Es zeigte sich jedoch, dass das DES-System weitgehend immun gegen differentielle Attacken ist. Dieses liegt vorallem in dem nichtlinearen Anteil des DES, der im Wesentlichen auf den S -Boxen-Operationen basiert. Aus den von Coppersmith veröffentlichten Entwurfsprinzipien der S -Boxen können wir schließen, dass diese Form der Analyse schon lange vor deren Veröffentlichung bekannt war. Eine Betrachtung der differentielle Kryptoanalyse zeigt uns somit ein wesentliches Entwurfskriterium des S -Boxen des DES-Systems. Die differentielle Kryptoanalyse basiert auf der Betrachtung zweier simultan verschlüsselter Plaintexte x1 , x2 . Hierbei analysieren wir nicht die jeweiligen resultierenden Ciphertexte y1 , y2 von x1 , x2 , sondern richten unser Augenmerk auf die Differenz x1 − x2 . Rechnen wir in F2 , dann ist x1 − x2 = x1 + x2 und x1 + x2 = x1 ⊕ x2 . Sei S eine feste S -Box. Für x, ∆E , ∆A ∈ Z2,n definieren wir: • die Ausgabedifferenz ∆S (∆E , x) := S(x) ⊕ S(x ⊕ ∆E ) , • die Anzahl der Übergänge ∆E → ∆A AS (∆E , ∆A ) := |{x | ∆S (∆E , x) = ∆A }| • die Übergangswahrscheinlichkeit AS (∆E , ∆A ) 2n p(S; ∆E , ∆A ) := für den Übergang ∆E → ∆A und die bedingten Wahrscheinlichkeiten AS (∆E , ∆A ) . 0 ∆0 AS (∆E , ∆A ) p(S; ∆A |∆E ) := P A Betrachten wir eine gegebene Menge von S -Boxen, dann können wir diese Wahrscheinlichkeiten p(S; ∆E , ∆A ) für alle S -Boxen bestimmen. Ein Kryptosystem bietet einen Angriffspunk für die differentielle Kryptoanalyse, wenn sich die Übergangswahrscheinlichkeiten für eine S -Box deutlich unterscheiden. Unter dieser Voraussetzung können wir einige Bits des Rundenschlüssels bestimmen. Wir definieren weiter: • Seien x1 , x2 zwei Plaintexte und y1i , y2i die dazugehörigen Ciphertexte nach der i -ten Runde. Arbeitet unser Kryptosystem in r Runden, dann gilt y10 = x1 und y20 = x2 und für die zu x1 und x2 gehörigen Ciphertexte y1 und y2 y1 = y1r und y2 = y2r . • Wir definieren die Rundendifferenz von x1 , x2 über ∆i (x1 , x2 ) = y1i ⊕ y2i . Insbesondere gilt ∆0 (x1 , x2 ) = x1 ⊕ x2 und 47 ∆r (x1 , x2 ) = y1 ⊕ y2 . Betrachten wir anstelle einer Differenz die Entwicklung der Differenz über die einzelnen Runden, so erhalten wir die sogenannte Charakteristik eines Blockkryptosystems: Definition 20 [Charakteristik eines Blockkryptosystems] • Eine Folge von `+1 aufeinander folgenden Differenzen z0 , . . . , z` nennen wir ` -Runden-Charakteristik. • Ein Plaintextpaar x0 , x1 besitzt die ` -Runden Charakteristik z0 , . . . , z` , wenn für alle j ∈ [0..`] ∆j (x1 , x2 ) = zj ist. Die differentielle Kryptoanalyse untersucht die Wahrscheinlichkeiten verschiedener Charakteristiken und versucht mit Hilfe einer r − 1 -Runden-Charakteristik Bits des letzten Rundenschlüssels Kr zu bestimmen. Die verbleibenden Bits des Rundenschlüssels müssen wir dann über die Betrachtung aller verbleibenden Kombinationen (exhaustive search) bestimmen. Es besteht jedoch die Hoffnung, dass sich die Anzahl der verbleibenden möglichen Schlüssel mit Hilfe der differentiellen Kryptoanalyse stark stark reduzieren lässt. Für die differentielle Kryptoanalyse bestimmen wir nun für jede Charakteristik die Wahrscheinlichkeit, dass diese Charakteristik auch tatsächlich auftritt. Sei z0 , . . . , z` eine ` -Runden Charakteristik und sei ∆i die Zufallsvariable der Rundendifferenz für die i -te Runde. Dann gilt: • Sind die Rundenschlüssel der einzelnen Runden voneinander unabhängig, so gilt Y Pr[∆` = z` |∆0 = z0 ] = Pr[∆i = zi |∆i−1 = zi−1 ] . i∈[1..`] • Sind die Rundenschlüssel der einzelnen Runden nicht voneinander unabhängig, d.h. sie wurden durch einen Algorithmus aus einem Schlüssel K generiert, dann kann die Wahrscheinlichkeit Pr[∆` = z` |∆0 = z0 ] nicht mehr durch unsere obige Formel bestimmt werden. • In vielen Fällen (so beim DES, LOKI, FEAL) habe experimentelle Untersuchungen gezeigt, dass die obige Formel eine gute Approximation für Pr[∆` = z` |∆0 = z0 ] darstellt, so dass wir in vielen Fällen davon ausgehen können, dass die Rundenschlüssel tatsächlich unabhängig voneinander sind. Wie bestimmen wir nun die Wahrscheinlichkeiten Pr[∆i = zi |∆i−1 = zi−1 ] ? Beschreiben wir die Verschlüsselung in einer Runde nur mit einer S -Box, dann gilt Pr[∆i = zi |∆i−1 = zi−1 ] = p(S; zi |zi−1 ) . Arbeiten mehrere S -Boxen in jeder Runde parallel, so müssen wir die einzelnen Wahrscheinlichkeiten miteinander in Beziehung setzten, z.B. indem wir das Produkt der entsprechenden Wahrscheinlichkeiten betrachten. Oder die Verschlüsselung der einzelnen Runden mit Hilfe einer größeren S -Box modellieren. Wird nach der S -Box noch eine lineare Transformation T auf das Ergebnis der S -Box ausgeführt, so muss dieses ebenfalls berücksichtigt werden: Pr[∆i = zi |∆i−1 = zi−1 ] = p(S; T −1 (zi )|zi−1 ) . 48 Der Einfachheit halber können wir diese linearen Transformationen als Teil der S -Box-Operation betrachten. Mit diesen Wahrscheinlichkeiten erhalten wir den folgenden Basisalgorithmus für die differentielle Kryptoanalyse: 1. Sei für jeden Rundenschlüssel Kr initiiere dessen Erfolgszähler e(Kr ) mit 0. 2. Wähle eine wahrscheinliche r − 1 -Runden Charakteristik z0 , . . . , zr−1 ,. 3. Wähle einen Plaintext x0 und bestimme x1 = x0 ⊕ z0 , sowie die dazugehörigen Ciphertexte y0 , y 1 . 4. Bestimme alle Kandidaten für den Rundenschlüssel Kr , so dass S −1 (y0 , Kr ) ⊕ S −1 (y1 , Kr ) = zr−1 . gilt. Für jeden gefundenen Kandidaten Kr setze e(Kr ) := e(KR ) + 1 . 5. Wiederhole die Schritte 3 bis 5 bis der Erfolgszähler eines Rundenschlüssels im Vergleich zu den anderen Rundenschlüsseln signifikant größer ist. Wir wählen diesen Schlüssel als aktuellen Rundenschlüssel. Als Faustregel gilt: Wir benötigen O(1/Pr[∆` = z` |∆0 = z0 ]) Plaintextpaare für diesen Angriff. Da wir die Verschlüsselung dem Besitzer des Schlüssels überlassen müssen (in Schritt 3), gehört dieser Angriff zu den sogenannten chosen-plaintext-Angriffen. Betrachten wir unseren Basisalgorithmus etwas näher, so sehen wir, dass wir von der Charakteristik nur z0 und zr−1 benötigen. Dieses führt uns zu der Betrachtung des sogenannten Differentials. Definition 21 Ein ` -Runden Differential ist ein Paar von Differenzen z0 , z` wobei z0 die Plaintextdifferenz und z` die Differenz von zwei Rundentexten der ` -ten Runde darstellt. Analog zur bedingen Wahrscheinlichkeit einer ` -Runden Charakteristik können wir auch die bedinge Wahrscheinlichkeit eines ` -Runden Differentials z0 , z` bestimmen X Y Pr[∆` = z` |∆0 = z0 ] = Pr[∆i = zi |∆i−1 = zi−1 ] . z1 ,...,z`−1 i∈[1..`] Die Wahrscheinlichkeit für ein Differential kann sich um einige Größenordnungen von der Wahrscheinlichkeit einer Charakteristik unterscheiden. Wollen wir die differentielle Kryptoanalyse mit Hilfe der Differentiale betreiben, dann können wir wieder den oben vorgestellten Basisalgorithmus heranziehen. Abhängig von dem vorhandenen Kryptosystem werden in der Literatur noch verschiedene Varianten der differentielle Kryptoanalyse untersucht. Wir werden auf diese jedoch nicht näher eingehen. Wie bereits zuvor angedeutet, wurden die S -Boxen des DES so konstruiert, dass mit Hilfe der differentiellen Kryptoanalyse kein erfolgversprechender Angriff zu erwarten ist. Die differentielle Kryptoanalyse ist jedoch so allgemein gefasst, dass wir sie gegen jede Form von Kryptosystem einsetzen können. Inwiefern wir jedoch mit einem Erfolg rechnen können, wollen wir hier nicht untersuchen. 49 4.5 Lineare Kryptoanalyse Im Folgenden nehmen wir an, dass eine Verschlüsselung eine Boolesche Transformation der Eingabebits X0 , . . . , Xn−1 in die Ausgabebits Y0 , . . . , Yn−1 darstellt. • Einen linearen Ausdruck A(X0 , . . . , Xn−1 ) in X0 , . . . , Xn−1 mit den Koeffizienten a0 , . . . , an−1 ∈ {0, 1} definieren wir über n−1 X ai · Xi . i=0 • Einen affin-linearen Ausdruck A(X0 , . . . , Xn−1 ) in X0 , . . . , Xn−1 mit den Koeffizienten a0 , . . . , an−1 ∈ {0, 1} definieren wir über n−1 X ai · Xi + 1 . i=0 Die Terme sind hierbei über GF (2) definiert. Ein Paar (AE , AA ) nennen wir eine affin-lineare Approximation einer Transformation T , wenn AE = AE (X0 , . . . , Xn−1 ) ein affin-linearen Ausdruck in den Eingabebits und AA = AA (Y0 , . . . , Yn−1 ) ein affin-linearen Ausdruck in den Ausgabebits von T ist. Zwischen den Bits X0 , . . . , Xn−1 und den Bits Y0 , . . . , Yn−1 besteht • eine lineare Beziehung, wenn für a0 , . . . , an−1 , b0 , . . . , bn−1 ∈ {0, 1} n−1 X ai · Xi = i=0 n−1 X bi · Yi i=0 ist und • eine (nichtlineare) affin-lineare Beziehung, wenn n−1 X ai · Xi = i=0 n−1 X bi · Yi + 1 i=0 ist. Eine affin-lineare Approximation (AE , AA ) wir von einer Eingabe x0 , . . . , xn−1 und der dazugehörigen Ausgabe y0 , . . . , yn−1 erfüllt, wenn eine affin-lineare Beziehung zwischen den Ausdrücken besteht, d.h. wenn AE (x0 , . . . , xn−1 ) = AA (y0 , . . . , yn−1 ) ist. Eine affin-lineare Approximation (AE , AA ) ist im deterministischen Sinne gültig, wenn (AE , AA ) für alle Eingaben und den dazugehörigen Ausgaben erfüllt ist. Ist eine affin-lineare Approximation nicht im deterministischen Sinne gültig, dann untersuchen wir die Wahrscheinlichkeit, mit der diese Approximation für eine zufällige Eingabe-Ausgabekombinationen gültig ist. Die Wahrscheinlichkeit p(AE , AA ) für eine affin-lineare Approximation (AE , AA ) ist der Anteil aller Eingabe-Ausgabekombinationen, die die affin-lineare Approximation (AE , AA ) erfüllen, d.h. p(AE , AA ) := |{x ∈ {0, 1}n |AE (x) = AA (T (x))}| · 2−n . 50 Beobachtung 6 • Die lineare und die affine-lineare Beziehung sind komplementär zueinander: n−1 X ai · Xi = i=0 n−1 X bi · Yi ⇐⇒ i=0 n−1 X ai · Xi 6= i=0 n−1 X bi · Yi + 1 . i=0 • Für jede affine-lineare Approximation (AE , AA ) gilt p(AE , AA ) = 1 − p(AE + 1, AA ) . Die lineare Kyptoanalyse basiert auf der Annahme, dass bei optimaler Nichtlinearität einer Transformation T , für jede affine-lineare Approximation (AE , AA ) die Wahrscheinlichkeit p(AE , AA ) etwa 1 2 ist. Mit Hilfe einer affin-linearen Approximation (AE , AA ) , für die die Wahrscheinlichkeit p(AE , AA ) deutlich von 12 abweicht, können wir dann hoffen, einzelne Schlüsselbits bestimmen zu können. 4.5.1 Ein erster Algorithmus Wir betrachten zunächst den Fall, dass einem Angreifer eine affine-lineare Approximation (AE , AA ) für ein Kryptosystem bekannt ist, so dass AE = n−1 X ai · x[i] = AA = i=0 n−1 X i=0 bi · y[i] + n−1 X ci · K[i] i=0 für alle Schlüssel K = K[0] . . . K[n−1] mit einer Wahrscheinlichkeit pL 6= 12 gilt. x = x[0] . . . x[n−1] gibt hierbei den Plaintext und y = y[0] . . . y[n − 1] den Ciphertext an. Den Wert |pL − 21 | nennen wir auch die Verzerrung oder den Bias der Approximation. Um eine solche Approximation zu finden, kann ein Angreifer ein Kryptosystem über eine längere Zeit analysieren. Hierbei sucht der Angreifer nach einer affine-lineare Approximation (AE , AA ) , für die der Wert des Bias maximal ist. Wir gehen im Folgenden davon aus, dass bei einer konkreten Attacke dem Angreifer die Koeffizienten ai , bi , ci für i ∈ [0..n − 1] bekannt sind. Lineare Kryptoanalyse — Basisalgorithmus: Gegeben eine affine-lineare Approximation (AE , AA ) mit maximalem Bias pL . Sei N die Anzahl der Plaintext-Ciphertext-Paare (xj , y j ) , die wir benutzen. Pn−1 j 1. Bestimme die Anzahl N 0 der Plaintext-Ciphertext-Paare (xi , y i ) für die i=0 ai · x [i] = Pn−1 j i=0 bi · y [i] gilt. Pn−1 0 2. Ist N 0 > N/2 , so setzen (oder besser raten) wir i=0 ci · K[i] = 0 und für N ≤ N/2 raten Pn−1 wir i=0 ci · K[i] = 1 . Dieses Verfahren gibt uns 1 Bit Information über den Schlüssel und somit nicht notwendigerweise 1 Bit des Schlüssels. Als Faustregel können wir angeben, dass ca. |pL − 12 |−2 Plaintext- Ciphertext-Paare benötigt werden, um dieses Bit an Information mit hinreichend großer Wahrscheinlichkeit bestimmen zu können. 51 4.5.2 Zusammensetzung von affin-linearen Approximationen Wir wollen nun auf die Frage eingehen, wie wir eine affine-lineare Approximation (AE , AA ) eines Kryptosystems bestimmen können? 1. Wir analysieren alle möglichen affin-lineare Approximationen (AE , AA ) für unser Kryptosystem und bestimmen die jeweiligen Wahrscheinlichkeiten p(AE , AA ) . Der Aufwand für diese Analyse wächst exponentiell in der Anzahl der Eingabe-, Ausgabe- und Schlüsselbits. 2. Oft ist es einfacher anstelle der affin-lineare Approximationen des ganzen Systems die affinlineare Approximationen der einzelnen S -Boxen zu bestimmen und diese dann zu kombinieren. Im Folgenden wollen wir darauf eingehen, wie affine-lineare Approximationen (bei Unabhängigkeit der einzelnen Rundenschlüssel) kombiniert werden können. Wir betrachten ein SPN-Kryptosystem und untersuchen, wie wir aus den affine-lineare Approximation der einzelnen S -Boxen eine affine-lineare Approximation des ganzen Systems erhalten. Hierbei sei i,j (Ai,j E , AA ) die affin-lineare Approximation der S -Box Sj in der i -ten Runde. Das xor-en eines Rundentextes mit einem Rundenschlüssel geschieht zwischen zwei Runden, bzw. zwischen den dazugehörigen S Box-Operation. Zunächst wollen wir zeigen, wie affin-lineare Approximationen einer Runde kombiniert werden können. Im Anschluß werden wir zeigen, wie wir die resultierenden affin-linearen Approximationen aller Runden kombinieren können. Zusammensetzung von parallel arbeitenden S -Boxen einer Runde: Wir betrachten die affin-lineare Approximation der S -Boxen einer Runde. Der Einfachheit halber bezeichnen wir diese mit (AjE , AjA ) und pj = p(AjE , AjA ) = 1 + εj . 2 Die zusammengesetzte affin-lineare Approximation ist dann X X ( AjE , AjA ) . j∈[0..k−1] j∈[0..k−1] Man beachte, dass eine Wahl der Belegung der Eingabe- und Ausgabebits die zusammengesetzte affinlineare Approximation genau dann erfüllt, wenn die Anzahl der durch diese Belegung nicht erfüllten affin-lineare Approximation (AjE , AjA ) gerade ist.2 Lemma 6 Sei p(AjE , AjA ) = p( 1 2 X j∈[0..k−1] 2 Zur ist + εj für alle j ∈ [0..k − 1] , dann gilt AjE , X AjA ) j∈[0..k−1] = 1 + 2k−1 · 2 Y εj . j∈[0..k−1] Erinnerung, die Wahrscheinlichkeit, dass eine Belegung eine affin-lineare Approximation (AjE , AjA ) nicht erfüllt, + 1, AjA ) = 1 − pj = 21 − εj . p(AjE 52 Beweis: Der Beweis folgt über eine vollständige Induktion über k , indem wir die Wahrscheinlichkeiten pk und qk untersuchen. • p` ist die Wahrscheinlichkeit, dass in den ersten ` affin-lineare Approximationen eine gerade Anzahl von Approximationen nicht erfüllt sind. • q` = 1 − p` ist die Wahrscheinlichkeit, dass in den ersten ` affin-lineare Approximationen eine ungerade Anzahl von Approximationen nicht erfüllt sind. Für ` > 1 gilt p` = 1 + ε` 2 · p`−1 + 1 − ε` 2 1 + 2`−1 · 2 Y · q`−1 . Setzen wir die Induktionsannahme p`−1 = εj j∈[0..`−1] in diese Gleichung ein, so folgt, dass für alle ` p` = Y 1 + 2` · εj 2 j∈[0..`] gilt und somit p( X j∈[0..k−1] AjE , X AjA ) = pk j∈[0..k−1] = 1 + 2k−1 · 2 Y εj j∈[0..k−1] ist. Zusammensetzung mehrerer Runde: Aufgrund der obigen Zusammenfassung aller S -Boxen einer Runde können folgendes vereinfachtes SPN-Kryptosystem betrachten: • Zu Beginn der i -ten Runde xor-en wir den Rundenschlüssel Ki mit dem Rundentexte y i−1 der i − 1 -ten Runde. • Anschließend führen wir die S -Box-Operation aus, die durch eine S -Box gegeben ist. • Zum Abschluß einer Runde permutieren wir das Ergebnis mit Hilfe einer Permutation π . Sei (AiE , AiA ) die affin-lineare Approximation der S -Box der i -ten Runde und sei p(AiE , AiA ) = 1 ± εi . 2 Wie wir bereits gesagt haben, interessieren wir uns für eine Approximation mit maximalem Bias, daher betrachten wir im Folgenden sowohl positive als auch negative Abweichungen der Wahrscheinlichkeit p(AiE , AiA ) von 12 . Wir zeigen zunächst, wie wir die beiden ersten Runden zusammenfassen können, sowie welche Approximation (AE , AA ) und Wahrscheinlichkeit p(AE , AA ) daraus resultiert: 53 • Sei (A0E , A0A ) die Approximation der S -Box der ersten und (A1E , A1A ) die Approximation der S -Box der zweiten Runde. • Unser Ziel ist die Approximation (A0E , A1A ) für die ersten beiden Runden. Die beiden Approximationen (A0E , A0A ) und (A1E , A1A ) können wir jedoch nur dann zur Approximationen (A0E , A1A ) zusammensetzen, wenn die rechte Seite der ersten Approximation zur linken Seite der zweiten Approximation passt. Hierbei müssen wir berücksichtigen, dass zwischen den beiden S Boxen die Ausgabe der ersten S -Box permutiert und der Rundenschlüssel R1 der zweien Runde 1 addiert wird. Es gilt somit Yi0 = Xπ(i) ⊕ K1 [i] . Wir betrachten daher nur Approximationspaare (A0E , A0A ) und (A1E , A1A ) mit 0 0 A0A (y00 , . . . , yn−1 ) = A1E (π(y00 , . . . , yn−1 ) ⊕ K1 ). Wir wollen nun versuchen, die Anforderungen an die beiden Approximation (A0E , A0A ) und (A1E , A1A ) etwas einfacher darzustellen. Sei n−1 X A1E (x10 , . . . , x1n−1 ) = a1i · x1i ⊕ s1 i=0 dann gilt A1E ((x̂10 , . . . , x̂1n−1 ) ⊕ K1 ) X = a1i · (x̂1i ⊕ K1 [i]) ⊕ s1 i∈[1..n−1] X = a1i · x̂1i ⊕ i∈[0..n−1] X = X a1i · K1 [i] ⊕ s1 i∈[0..n−1] a1i · x̂1i ⊕ k1 ⊕ s1 i∈[0..n−1] für ein Korrekturbit k1 = ist. Wir definieren daher Pn−1 i=0 a1i · K1 [i] ∈ {0, 1} . Beachte, dass k1 unabhängig von der Eingabe Ã1E := A1E + k1 . Ferner definieren wir π Ã1E (x10 , . . . , x1n−1 ) = Ã1E (π(x10 , . . . , x1n−1 )) und nennen wir die Approximationen (A0E , A0A ) und (A1E , A1A ) konsistent, wenn A0A = π Ã1E ist. Sind zwei Approximationen (A0E , A0A ) und (A1E , A1A ) zueinander konsistent, dann ist im zusam0 mengefassten System die Approximation (A0E , A1A ) genau für die Werte x00 , . . . , x0n−1 , y00 , . . . , yn−1 , y01 , 1 . . . , yn−1 erfüllt, für die entweder 0 A0E (x00 , . . . , x0n−1 ) = A0A (y00 , . . . , yn−1 ) und π 0 1 Ã1E (y00 , . . . , yn−1 ) = A1A (y01 , . . . , yn−1 ) 0 A0E (x00 , . . . , x0n−1 ) 6= A0A (y00 , . . . , yn−1 ) und π 0 1 Ã1E (y00 , . . . , yn−1 ) 6= A1A (y01 , . . . , yn−1 ) oder gilt. Wir wollen nun die Wahrscheinlichkeit p(A0E , A1A ) untersuchen. Hierbei müssen wir jedoch folgendes beachten: Sind die Ereignisse (A0E , A0A ) ist erfüllt und (π Ã1E , A1A ) ist erfüllt nicht unabhängig, dann 54 können wir aus den Wahrscheinlichkeiten p(A0E , A0A ) und p(π Ã1E , A1A ) keine Aussage über die Wahrscheinlichkeit p(A0E , A1A ) herleiten. Wir nennen (A0E , A0A ) und (π Ã1E , A1A ) unabhängig, wenn die Ereignisse (A0E , A0A ) ist erfüllt und (π Ã1E , A1A ) ist erfüllt unabhängig sind. Aus p(AiE , AiA ) = 12 ± εi folgt unmittelbar p(π ÃiE , AiA ) = 21 ± εi . An Stelle von p(AiE , AiA ) = können wir für ein geeignetes s ∈ {0, 1} auch p(AiE , AiA ) = 12 + (−1)s · εi schreiben. 1 2 ± εi Wir gehen nun von der Annahme aus, dass (A0E , A0A ) und (π Ã1E , A1A ) unabhängig sind, dann gilt für geeignete Werte s0 , s1 ∈ {0, 1} : p(A0E , A1A ) = p(A0E , A0A ) · p(π Ã1E , A1A ) + (1 − p(A0E , A0A )) · (1 − p(π Ã1E , A1A )) 1 1 = + (−1)s0 · ε0 · + (−1)s0 · ε0 2 2 1 1 + − (−1)s0 · ε0 · − (−1)s1 · ε1 2 2 s0 s1 (−1) · ε1 1 (−1) · ε0 + + + (−1)s1 +s2 · ε0 · ε1 = 4 2 2 (−1)s1 · ε1 1 (−1)s0 · ε0 − + (−1)s1 +s2 · ε0 · ε1 + − 4 2 2 1 = + (−1)s1 +s2 · 2 · ε0 · ε1 . 2 Analog zu dieser Analyse können wir auch mehr als zwei Runden zusammenfassen. Wir erhalten: Lemma 7 Sei p(AiE , AiA ) = 12 ± εi für alle i ∈ [0..k − 1] und sei (π ÃiE , AiA ) unabhängig von (A0E , Ai−1 A ) , dann gilt für die Konkatenation der k Runden Y p(A0E , Ak−1 ) − 1 = 2k−1 · εj . A 2 j∈[0..k−1] Beweis: Der Beweis folgt über eine vollständige Induktion über k . Die jeweiligen Schritte erfolgen analog zu unserer Analyse bei der Zusammenfassung der ersten beiden Runden. 4.5.3 Angriff auf den letzten Rundenschlüssel für ein SPN-Kryptosystem Eine affin-lineare Approximation (AE , AA ) nennen wir dominant, wenn ihre Wahrscheinlichkeit p(AE , AA ) deutlich größer ist als alle anderen affin-lineare Approximationen. Zur Vereinfachung betrachten wir wieder ein SPN-Kryptosystem, welches in jeder Runde nur eine S -Box besitzt. Da S -Box-Operationen injektiv sind, können wir jede einzelne S -Box-Operation invertieren. Wir erhalten den folgenden Algorithmus: Lineare Kryptoanalyse — Algorithmus für ein SPN: Gegeben eine dominante affin-lineare Approximation (A0E , Ak−2 A ) für die ersten k − 1 Runden. Sei N die Anzahl der Plaintext-Ciphertext-Paare (xj , y j ) , die wir benutzen. 1. Bestimme eine zufällige Menge an Testschlüssel K für die letzte Runde. 55 2. Bestimme N zufällige Plaintext-Ciphertext-Paare (xj , y j ) ( j ∈ [0..N − 1] ). 3. Für jeden Schlüssel K` ∈ K sei e(K` ) die Anzahl der Plaintext- Ciphertext-Paare (xj , y j ) für −1 j die A0E (xj ) = Ak−2 (y ) ⊕ K` ) gilt. A (S 1 4. Sei p(A0E , Ak−2 A ) = 2 + ε , dann ist die erwartete Anzahl der Paare, die die Approximation k−2 0 (AE , AA ) erfüllen, bei N zufälligen Plaintext-Ciphertext-Paaren (xj , y j ) gleich N · 21 + ε . Der Schlüssel K` ∈ K , für den der Wert e(K` ) am nähsten an N · ( 12 + ε) liegt, ist mit großer Wahrscheinlichkeit der richtige Rundenschlüssel. Ein guter Überblick über die differentielle und über die lineare Kryptoanalyse wird von Knudsen in seinem Survey [K98] gegeben. Eine Einführung über dieses Thema anhand eines Beispiels wird in [M03] gegeben. Aufgabe 16 Stellen Sie das DES-Kryptosystem als SPN-Kryptosystem mit einer S -Box dar. Beschreiben Sie die S -Box-Operation, die Permutation und den Algorithmus zur Generierung der Rundenschlüssel. Um die Eingabe und Ausgabe in eine geeignet Form zu bringen, dürfen Sie vor und nach der Verschlüsselung jeweils eine lineare Transformation einsetzen. Aufgabe 17 Betrachten Sie die folgenden beiden S -Boxen: x 000 S0 (x) 000 S1 (x) 111 001 010 011 010 100 010 011 110 101 100 011 000 101 111 001 110 101 100 111 001 110 1. Zeigen Sie, dass die dazugehörigen Operationen nicht linear sind. 2. Bestimmen Sie die einzelnen Eingabe-/Ausgabedifferenzen und deren Übergangswahrscheinlichkeiten p(Si ; ∆E , ∆A ) . 3. Bestimmen Sie die affin-lineare Approximation mit dem maximalen Bias für diese S -Boxen. Bestimmen ferner Sie die affin-lineare Approximation der Konkatenation dieser Boxen, wenn diese parallel auf zwei unabhängigen Blöcken ausgeführt werden, sowie die dazu gehörige Wahrscheinlichkeit. 4.6 Advanced Encryption Standard (AES) Aufgrund der Schwächen von DES kam es 1998 zu der Ausschreibung für einen neuen Standard, dem AES. Hierbei sollte das neue Verfahren die folgenden Kriterien erfüllen: • Gesucht war ein symmetrischer Algorithmus, genauer ein Blockchiffre. • Das Verfahren sollte Blöcke von 128 Bits verwenden und Schlüssel von 128, 192 und 256 Bit Länge einsetzen können. • Der neue Standard sollte leicht in Hard- und Software zu implementieren sein und eine überdurchschnittliche Performance haben. • Für den Einsatz in Smartcards sollten nur geringe Ressourcen erforderlich sein (d.h. kurze Codelänge, niedriger Speicherbedarf). 56 • Der Algorithmus musste frei von patentrechtlichen Ansprüchen sein und von jedermann unentgeltlich genutzt werden können. • AES sollt allen bekannten Methoden der Kryptoanalyse widerstehen können. Als Gewinner der Ausschreibung im Oktober 2000 der nach seinen Entwicklern Joan Daemen und Vincent Rijmen benannte Rijndael-Algorithmus [FIPS01] bekanntgegeben. 4.6.1 Mathematische Grundlagen Die Basiseinheit für Berechnungen im AES stellt das Byte dar, daher sind viele Operationen im AES im GF (28 ) definiert. Um den Wert eines Byte darzustellen benutzen wir entweder die Binärzahl-, die Hexadezimalzahl- oder die Polynomrepräsentation. Betrachten wir die Polynomrepräsentation eines Bytes, so benutzen wir im AES das irreduzible Polynom m(x) = x8 + x4 + x3 + x + 1 . Zur Erinnerung: • Die Addition ⊕ entspricht dem Bitweisen xor, bzw. dem xor der korrespondierenden Koeffizienten der Polynome. • Die Multiplikation · entspricht der Polynommultiplikation modulo m(x) . Die Multiplikation kann mit Hilfe der iterierten Multiplikation eines Polynoms mit x und dem bedingten Subtrahieren (bzw. Addieren) von m(x) ) implementiert werden. Auf dem Bitlevel bedeutet dieses: • Führe einen Linksshift aus. • Erhalten wir einen Überlauf, so xor-e das Resultat mit 100011011 . • Übernehme nur die hinteren 8 Bits. Diese Operation nennen wir xtime () . Um die Operationen in GF (28 ) zu verdeutlichen, hier ein paar Beispiele. • Beispiel für die Addition: 100111002 ⊕ 110001112 = 010110112 oder äquivalent (x7 + x4 + x3 + x2 ) ⊕ (x7 + x6 + x2 + x1 + 1) = x6 + x4 + x3 + x1 + 1 . 57 • Beispiel für die Multiplikation: (x6 + x4 + x2 + x + 1) · (x7 + x + 1) = x13 + x11 + x9 + x8 + 2 · x7 + x6 + x5 + x4 + x3 + 2 · x2 + 2 · x + 1 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 ≡ (x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1) ⊕ (x5 · m(x)) ≡ (x11 + x4 + x3 + 1) ⊕ (x3 · m(x)) ≡ x7 + x6 + 1 mod m(x) . • Beispiel für xtime () : xtime(x7 + 1) = 1000000102 ⊕ 1000110112 = 000110012 ≡ x4 + x3 + 1 . Das multiplikative Inverse p−1 (x) zu einem Polynom p(x) , d.h. p(x) · p−1 (x) ≡ 1 mod m(x) können wir mit Hilfe des erweiterten Algorithmus von Euklid bestimmen. Mit Hilfe dieses Verfahrens können wir für zwei Polynome p(x) und m(x) zwei Polynome p̃(x) und m̃(x) bestimmen, so dass p(x) · p̃(x) + m(x) · m̃(x) = 1 ist. Wir erhalten somit p−1 (x) = p̃(x) mod m(x) . Abhängig von der Operation, benutzt man beim AES verschiedene Darstellungen der Werte der einzelnen Bytes. Ist b7 b6 . . . b0 die Darstellung eines Bytes in Binärdarstellung, dann erhalten wir die Polynomdarstellung über (b7 b6 . . . b0 )2 = b7 · x7 + b6 · x6 + b5 · x5 + b4 · x4 + b3 · x3 + b2 · x2 + b1 · x + b0 . Um die Binärdarstellung in Hexadezimal Darstellung umzuwandeln, benutzen wir für b7 b6 b5 b4 und b3 b2 b1 b0 die folgende Tabelle 00002 00012 00102 00112 01002 01012 01102 01112 = = = = = = = = 016 116 216 316 416 516 616 716 10002 10012 10102 10112 11002 11012 11102 11112 = = = = = = = = 816 916 A16 B16 C16 D16 E16 F16 Polynome mit Koeffizienten in GF (28 ) Neben den Polynomen zur Darstellung der Werte in GF (28 ) benutzen wir beim AES noch Polynomen vom Grad 3, deren Koeffizienten wiederum Elemente des endlichen Körpers (GF (28 ) ) darstellen. Verschiedene Operationen im AES können wir mit Hilfe von Addition und Multiplikation dieser Polynome definieren. Diese Polynome selbst, bilden jedoch keinen endlichen Körper. Sei a(x) = a3 · x3 + a2 · x2 + a1 · x + a0 58 ein solches Polynom, dann benutzen wir auch die Schreibweise [a0 , a1 , a2 , a3 ] . Seien a(x) = a3 · x3 + a2 · x2 + a1 · x + a0 b(x) = b3 · x3 + b2 · x2 + b1 · x + b0 zwei solche Polynome, dann definieren wir • die Addition + über a(x) + b(x) = (a3 ⊕ b3 ) · x3 + (a2 ⊕ b2 ) · x2 + (a1 ⊕ b1 ) · x + (a0 ⊕ b0 ) • und die Multiplikation ⊗ über die Polynommultiplikation modulo x4 + 1 . Es gilt xi mod (x4 + 1) = xi mod 4 somit können wir die Multiplikation ⊗ wie folgt vereinfachen: Sei d(x) = d3 · x3 + d2 · x2 + d1 · x + d0 = a(x) ⊗ b(x) dann erhalten wir d0 a0 a1 d1 d2 = a2 d3 a3 a3 a0 a1 a2 a2 a3 a0 a1 a1 b0 b1 a2 · a3 b2 a0 b3 . Die Multiplikation ⊗ mit einem festen Polynom a(x) ist nicht für alle Polynome a(x) invertierbar. Im AES wir jedoch ein Polynom benutzt welches ein multiplikatives Inverses besitzt: a(x) = 0316 · x3 + 0116 · x2 + 0116 · x + 0216 a−1 (x) = 0B16 · x3 + 0D16 · x2 + 0916 · x + 0E16 . Wählen wir a(x) = 0116 · x3 , d.h. a3 = 0116 und a2 = a1 = a0 = 0016 , dann erhalten wir über die Operation ⊗ eine Rotation nach links: [0016 , 0016 , 0016 , 0116 ] ⊗ [b0 , b1 , b2 , b3 ] = [b1 , b2 , b3 , b0 ] . 4.6.2 Zustand des AES Die Basiseinheit für Berechnungen im AES stellt das Byte dar. Sei a0 . . . a7 die folge der Bits im Speicher, dann benutzen wir die Darstellungen (a7 . . . a0 )2 und a7 · x7 + . . . + a1 · x + a0 . 59 Die Blocklänge beim AES beträgt 128 Bits, d.h. 16 Byte. Abhängig vom Grad der Sicherheit, benutzt das AES Schlüssel der Länge 128, 192 oder 256 Bit, bzw. 16, 24 oder 32 Byte. Ist x ein Block bestehend aus n Bytes, dann bezeichnen wir im Folgenden mit x[i] das i -te Byte.3 Den Zustand des AES können wir Byteweise mit Hilfe eines 4 × 4 -Arrays beschreiben: in0 in1 in2 in3 Input in4 in8 in5 in9 in6 in10 in7 in11 in12 in13 in14 in15 −→ s0,0 s1,0 s2,0 s3,0 Zustand s0,1 s0,2 s1,1 s1,2 s2,1 s2,2 s3,1 s3,2 s0,3 s1,3 s2,3 s3,3 −→ out0 out1 out2 out3 Output out4 out8 out5 out9 out6 out10 out7 out11 out12 out13 out14 out15 Um ein 1-dimensionales Feld aus 16 Bytes in eine 2-dimensionale 4×4 -Matrix umzuwandeln definieren wir die Funktion Square : ({0, 1}8 )16 → ({0, 1}8 )4×4 . Sei s = (si,j )i,j∈[0..3] = Square(x) für x ∈ ({0, 1}8 )16 , dann gilt für alle i, j ∈ [0..3] si,j = x[i + 4 · j] . Die Funktion InvSquare : ({0, 1}8 )4×4 → ({0, 1}8 )16 gibt die Umkehrfunktion von Square () an, d.h. für x = InvSquare(s) gilt x[i + 4 · j] = si,j . Sei s = (si,j )i,j∈[0..3] und s0 = (s0i,j )i,j∈[0..3] , dann definieren wir s ⊕ s0 = (si,j ⊕ s0i,j )i,j∈[0..3] als die elementweise Addition in GF (28 ) und somit als das bitweises Xor der Matrizen. 4.6.3 Die Unterfunktionen des AES Die einzelnen Verschlüsselungsschritte des AES lassen sich mit Hilfe von 4 individuellen Unterfunktionen und deren Umkehrfunktionen aufbauen: • AddRoundKey () und InvAddRoundKey () • ShiftRows () und InvShiftRows () • MixColumns () und InvMixColumns () • SubBytes () und InvSubBytes () 1. AddRoundKey () und InvAddRoundKey () : Bei AddRoundKey () sind Funktion und Umkehrfunktion identisch: 3 Allgemein bezeichnen wir mit x[i] das i -te Element in der Zeichenkette x . An anderer Stelle beziehen wir uns hierbei oft auf ein Bit. Zur Vereinfachung der Darstellung werden wir beim AES mit x[i] das i -te Byte in x bezeichnen. 60 • Eingabe: eine 4 × 4 -Byte-Matrix s und ein 16-Byte Rundenschlüssel Ki • Ausgabe: die 4 × 4 -Byte-Matrix s ⊕ Square(Ki ) . Die einzelnen Rundenschlüssel K0 , . . . , Kr−1 werden mit Hilfe der Funktion KeyExpansion () aus dem Schlüssel K generiert. Die 4 × 4 -Byte-Matrix s gibt den aktuellen Zustand des Rundentextes an. Ki [0] Ki [1] Ki [2] Ki [3] Ki [4] Ki [5] Ki [6] Ki [7] Ki [8] Ki [9] Ki [10]Ki [11]Ki [12]Ki [13]Ki [14]Ki [15] ⊕ s0,0 s0,1 s0,2 s0,3 s00,0 s00,1 s00,2 s00,3 s1,0 s1,1 s1,2 s1,3 s01,0 s01,1 s01,2 s01,3 s2,0 s2,1 s2,2 s2,3 s02,0 s02,1 s02,2 s02,3 s3,0 s3,1 s3,2 s3,3 s03,0 s03,1 s03,2 s03,3 2. ShiftRows () und InvShiftRows () : ShiftRows () führt einen zyklischen Shift auf die einzelnen Zeilen einer 4×4 -Byte-Matrix aus. Hierbei wird die i -te Zeile um i Positionen geshifted. • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix s0 mit s0i,j = si,(j+i) mod 4 . Für die Umkehrfunktion InvShiftRows () erhalten wir: • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix s0 mit s0i,(j+i) mod 4 = si,j . ShiftRows () s0,0 s0,1 s0,2 s0,3 s00,0 s00,1 s00,2 s00,3 s1,0 s1,1 s1,2 s1,3 s01,0 s01,1 s01,2 s01,3 s2,0 s2,1 s2,2 s2,3 s02,0 s02,1 s02,2 s02,3 s3,0 s3,1 s3,2 s3,3 s03,0 s03,1 s03,2 s03,3 61 3. MixColumns () und InvMixColumns () : MixColumns () interpretiert jede Spalte der 4 × 4 -Byte-Matrix als ein Polynom sj = s3,j · x3 + s2,j · x2 + s1,j · x + s0,j mit Koeffizienten aus GF (28 ) und Multipliziert ( ⊗ ) dieses mit dem Polynom p(x) = 0316 · x3 + 0216 · x2 + 0116 · x + 0116 • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix 0 s0,j s01,j 0 = s2,j s03,j s0 mit 0216 0116 0116 0316 0316 0216 0116 0116 0116 0316 0216 0116 0116 s0,j s1,j 0116 · 0316 s2,j 0216 s3,j bzw. s00,j := (0216 · s0,j ) ⊕ (0316 · s1,j ) ⊕ s2,j ⊕ s3,j s01,j s02,j s03,j := (0216 · s1,j ) ⊕ (0316 · s2,j ) ⊕ s3,j ⊕ s0,j := (0216 · s2,j ) ⊕ (0316 · s3,j ) ⊕ s0,j ⊕ s1,j := (0216 · s3,j ) ⊕ (0316 · s0,j ) ⊕ s1,j ⊕ s2,j für alle j ∈ [0..3] . p(x) ⊗ sj (x) s0,0 s0,1 s0,2 s0,3 s00,0 s00,1 s00,2 s00,3 s1,0 s1,1 s1,2 s1,3 s01,0 s01,1 s01,2 s01,3 s2,0 s2,1 s2,2 s2,3 s02,0 s02,1 s02,2 s02,3 s3,0 s3,1 s3,2 s3,3 s03,0 s03,1 s03,2 s03,3 Die Umkehrfunktion InvMixColumns () erhalten wir über die Multipliziert ( ⊗ ) des Spalten-Polynoms mit p−1 (x) = 0B16 · x3 + 0D16 · x2 + 0916 · x + 0E16 • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix s0 0 s0,j s01,j 0 = s2,j s03,j mit 0E16 0916 0D16 0B16 0B16 0E16 0916 0D16 62 0D16 0B16 0E16 0916 0916 s0,j s1,j 0D16 · 0B16 s2,j 0E16 s3,j bzw. s00,j := (0E16 · s0,j ) ⊕ (0B16 · s1,j ) ⊕ (0D16 · s2,j ) ⊕ (0916 · s3,j ) s01,j s02,j s03,j := (0E16 · s1,j ) ⊕ (0B16 · s2,j ) ⊕ (0D16 · s3,j ) ⊕ (0916 · s0,j ) := (0E16 · s2,j ) ⊕ (0B16 · s3,j ) ⊕ (0D16 · s0,j ) ⊕ (0916 · s1,j ) := (0E16 · s3,j ) ⊕ (0B16 · s0,j ) ⊕ (0D16 · s1,j ) ⊕ (0916 · s2,j ) für alle j ∈ [0..3] . 4. SubBytes () und InvSubBytes () : SubBytes () ist eine elementweise Transformation einer 4 × 4 -Byte-Matrix mit Hilfe einer nichtlinearen invertierbaren S -Box. • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix s0 mit s0i,j = Eintrag in der u-ten Zeile und v-ten Spalte der S-Box Tabelle wobei si,j = uv mit u, v ∈ {0, 1}4 ist. Für die Umkehrfunktion InvSubBytes () erhalten wir: • Eingabe: eine 4 × 4 -Byte-Matrix s . • Ausgabe: die 4 × 4 -Byte-Matrix s0 mit s0i,j = Eintrag in der u-ten Zeile und v-ten Spalte der inversen S-Box Tabelle wobei si,j = uv mit u, v ∈ {0, 1}4 ist. Die folgende Tabelle gibt die S -Box für das AES wieder: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 63 CA B7 04 09 53 D0 51 CD 60 E0 E7 BA 70 E1 8C 1 7C 82 FD C7 83 D1 EF A3 0C 81 32 C8 78 3E F8 A1 2 77 C9 93 23 2C 00 AA 40 13 4F 3A 37 25 B5 98 89 3 7B 7D 26 C3 1A ED FB 8F EC DC 0A 6D 2E 66 11 0D 4 F2 FA 36 18 1B 20 43 92 5F 22 49 8D 1C 48 69 BF 5 6B 59 3F 96 6E FC 4D 9D 97 2A 06 D5 A6 03 D9 E6 6 6F 47 F7 05 5A B1 33 38 44 90 24 4E B4 F6 8E 42 7 C5 F0 CC 9A A0 5B 85 F5 17 88 5C A9 C6 0E 94 68 63 8 30 AD 34 07 52 6A 45 BC C4 46 C2 6C E8 61 9B 41 9 01 D4 A5 12 3B CB F9 B6 A7 EE D3 56 DD 35 1E 99 A 67 A2 E5 80 D6 BE 02 DA 7E B8 AC F4 74 57 87 2D B 2B AF F1 E2 B3 39 7F 21 3D 14 62 EA 1F B9 E9 0F C FE 9C 71 EB 29 4A 50 10 64 DE 91 65 4B 86 CE B0 D D7 A4 D8 27 E3 4C 3C FF 5D 5E 95 7A BD C1 55 54 E AB 72 31 B2 2F 58 9F F3 19 0B E4 AE 8B 1D 28 BB F 76 C0 15 75 84 CF A8 D2 73 DB 79 08 8A 9E DF 16 S -Box s0,0 s0,1 s0,2 s0,3 s00,0 s00,1 s00,2 s00,3 s1,0 s1,1 s1,2 s1,3 s01,0 s01,1 s01,2 s01,3 s2,0 s2,1 s2,2 s2,3 s02,0 s02,1 s02,2 s02,3 s3,0 s3,1 s3,2 s3,3 s03,0 s03,1 s03,2 s03,3 Die Tabelleneinträge der S -Box knnen wie folgt berechnet werden: Sei si,j ein Byte, welches wir mit Hilfe der S -Box transformieren wollen, dann verfahren wir wie folgt: −1 8 • Bestimme das multiplikative Inverse s−1 i,j von si,j in GF (2 ) . Für si,j = 00 wählen wir si,j = 00 . −1 • Seien s−1 i,j [i] die Bits von si,j , d.h. −1 −1 −1 −1 −1 −1 −1 s−1 = s−1 i,j i,j [7]si,j [6]si,j [5]si,j [4]si,j [3]si,j [2]si,j [1]si,j [0] dann erhalten wir die Bits des Ergebnisses s0i,j = s0i,j [7]s0i,j [6]s0i,j [5]s0i,j [4]s0i,j [3]s0i,j [2]s0i,j [1]s0i,j [0] s0i,j [i] −1 −1 = s−1 i,j [i] ⊕ si,j [i + 4 mod 8] ⊕ si,j [i + 5 mod 8] über −1 ⊕s−1 i,j [i + 6 mod 8] ⊕ si,j [i + 7 mod 8] ⊕ c[i] wobei c = c[7]c[6]c[5]c[4]c[3]c[2]c[1]c[0] = 011000112 ist. Alternativ können wir die Tabelleneinträge auch über die folgende affin-lineare Transfromation aus dem multiplikative Inverse s−1 i,j von si,j bestimmen: s0i,j [0] s0i,j [1] s0i,j [2] s0i,j [3] s0i,j [4] s0i,j [5] s0i,j [6] s0i,j [7] = 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 64 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 s−1 [0] i,j −1 s i,j [1] s−1 [2] i,j s−1 [3] · i,j s−1 [4] i,j s−1 [5] i,j s−1 [6] i,j s−1 i,j [7] + 1 1 0 0 0 1 1 0 Die folgende Tabelle gibt die inverse S -Box für das AES wieder: 0 1 2 3 4 5 6 7 8 9 A B C D E F 4.6.4 0 52 7C 54 08 72 6C 90 D0 3A 96 47 FC 1F 60 A0 17 1 09 E3 7B 2E F8 70 D8 2C 91 AC F1 56 DD 51 E0 2B 2 6A 39 94 A1 F6 48 AB 1E 11 74 1A 3E A8 7F 3B 04 3 D5 82 32 66 64 50 00 8F 41 22 71 4B 33 A9 4D 7E 4 30 9B A6 28 86 FD 8C CA 4F E7 1D C6 88 19 AE BA 5 36 2F C2 D9 68 ED BC 3F 67 AD 29 D2 07 B5 2A 77 6 A5 FF 23 24 98 B9 D3 0F DC 35 C5 79 C7 4A F5 D6 7 38 87 3D B2 16 DA 0A 02 EA 85 89 20 31 0D B0 26 8 BF 34 EE 76 D4 5E F7 C1 97 E2 6F 9A B1 2D C8 E1 9 40 8E 4C 5B A4 15 E4 AF F2 F9 B7 DB 12 E5 EB 69 A A3 43 95 A2 5C 46 58 BD CF 37 62 C0 10 7A BB 14 B 9E 44 0B 49 CC 57 05 03 CE E8 0E FE 59 9F 3C 63 C 81 C4 42 6D 5D A7 B8 01 F0 1C AA 78 27 93 83 55 D F3 DE FA 8B 65 8D B3 13 B4 75 18 CD 80 C9 53 21 E D7 E9 C3 D1 B6 9D 45 8A E6 DF BE 5A EC 9C 99 0C F FB CB 4E 25 92 84 06 6B 73 6E 1B F4 5F EF 61 7D Die Rundenschlüssel beim AES Um den Rundenschlüssel zu bestimmen benötigen wir noch einige einfache Hilfsfunktionen, die auf einem 4-Byte Wort w = w[0]w[1]w[2]w[3] arbeiten: RotWord () • führt einen zyklischen Shift um ein Byte nach links aus: RotWord(w[0]w[1]w[2]w[3]) = w[1]w[2]w[3]w[0] . SubWord () • wendet einen S -Box-Operation auf jedes Byte an: SubWord(w[0]w[1]w[2]w[3]) = S(w[0])S(w[1])S(w[2])S(w[3]) . Rcon (i) • für i ∈ N mit i > 0 ist Rcon(i) = ci 0016 0016 0016 , wobei wir die Rundenkonstante ci wie folgt über die Operationen in GF (28 ) und der Polynomdarstellung bestimmen ci = xi−1 (modm(x)) . Alle diese Operationen können wir auch mit Hilfe der Multiplikation ⊗ und Addition + von Polynomen mit Koeffizienten in GF (28 ) darstellen. 65 Algorithm 1 KeyExpansion (K) Eingabe: 4 · k -Byte Schlüssel K Ausgabe: Folge der Rundenschlüssel (K0 , . . . , K` ) 1: ` := 6 + k 2: for i = 0 to k − 1 do hi := K[4i]K[4i + 1]K[4i + 2]K[4i + 3] end for 3: for i = k to 4 · ` do 4: t := hi−1 5: if (i mod k) = 0 then 6: t := SubWord(RotWord(t)) ⊕ Rcon(i/k) 7: else 8: if k = 8 ∧ (i mod k) = 4 then t := SubWord(t) end if 9: end if 10: hi := hi−k ⊕ t 11: end for 12: for i = 0 to ` do Ki := h4i h4i+1 h4i+2 h4i+3 end for 13: Return ((K0 , . . . , K` )) Die folgenden beiden Grafiken illustrierten die Arbeitsweise von KeyExpansion (K) bei einer Schlüssellänge von 16 und 24 Byte bzw. 128 und 192 Bit, d.h. k = 4 bzw. k = 6 : ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ h0 h1 h2 h3 h4 h5 h6 h7 h8 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 RotWord () RotWord () RotWord () RotWord () SubWord () SubWord () SubWord () SubWord () Rcon (1) ⊕ ⊕ Rcon (2) ⊕ Rcon (1) ⊕ ⊕ ⊕ 66 Rcon (2) ⊕ ⊕ Und die folgende Grafik schlielich illustriert die Arbeitsweise von KeyExpansion (K) bei einer Schlüssellänge von 32 Byte bzw. 256 Bit, d.h. k = 8 : ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 RotWord () SubWord () Rcon (1) RotWord () SubWord () ⊕ SubWord () Rcon (2) ⊕ ⊕ ⊕ 4.6.5 ⊕ Der AES-Algorithmus Der AES-Algorithmus verschlüsselt einen Plaintext von 16 Byte in mehreren Runden. Die Anzahl der Runden hängt hierbei von der Schlüssellänge ab. Es gilt: • bei 16-Byte Schlüssel beträgt die Rundenzahl 10, • bei 24-Byte Schlüssel beträgt die Rundenzahl 12 und • bei 32-Byte Schlüssel beträgt die Rundenzahl 14. Die Beschreibung von AES in Federal Infomation Processing Standards Publication 197 erlaubt auch die Benutzung größerer Blöcke und Schlüssel. Auf die hierbei benötigten relativ einfachen Modifikationen werden wir jedoch nicht eingehen. Algorithm 2 AES-Verschlüsselung (x, K) Eingabe: 16-Byte Plaintext x und 4 · k -Byte Schlüssel K Ausgabe: 16-Byte Ciphertext y 1: (K0 , . . . , K` ) := KeyExpansion (K) 2: s := Square (x) 3: s := AddRoundKey (s, K0 ) 4: for i = 1 to ` − 1 by +1 do 5: s := SubBytes (s) ; s := ShiftRows (s) 6: s := MixColumns (s) ; s := AddRoundKey (s, Ki ) 7: end for 8: s := SubBytes (s) 9: s := ShiftRows (s) 10: s := AddRoundKey (s, K` ) 11: Return ( InvSquare (s)) 67 Algorithm 3 AES-Entschlüsselung (y, K) Eingabe: 16-Byte Ciphertext y und 4 · k -Byte Schlüssel K Ausgabe: 16-Byte Plaintext x 1: (K0 , . . . , K` ) := KeyExpansion (K) 2: s := Square (y) 3: s := AddRoundKey (s, K` ) 4: for i = ` − 1 to 1 by −1 do 5: s := InvShiftRows (s) ; s := InvSubBytes (s) 6: s := AddRoundKey (s, Ki ) ; s := InvMixColumns (s) 7: end for 8: s := InvShiftRows (s) 9: s := InvSubBytes (s) 10: s := AddRoundKey (s, K` ) 11: Return ( InvSquare (s)) 68 5 Public Key Kryptographie Bei den bisher betrachteten Kryptosystemen handelt es sich um Zwei-Wege Kryptosysteme, d.h. um eine Nachricht sicher zu übertragen, mussten zunächst der Schlüssel sicher übertragen werden. Im Anschluss konnte dann mit Hilfe dieses Schlüssels die Nachricht übertragen werden. Diesen zusätzlichen sicheren Transport benötigen wir nicht mehr, wenn ein Public Key Kryptosystem benutzt wird. In einem solchen System teilen wir die beiden Aufgaben eines Schlüssels in Zwei-Wege Kryptosysteme, d.h. Verschlüsseln und Entschlüsseln, auf zwei Schlüssel auf: einen öffentlichen Schlüssel zur Verschlüsselung der Nachricht und einen privaten Schlüssel zur Entschlüsselung. Diese Idee geht auf Diffie und Hellman (1976) [DH76] zurück, und hat seit dem die Kryptographie wesentlich beeinflusst. 5.1 Das generelle Schema Das generelle Szenario für ein Public Key System hat die folgende Gestalt: Gegeben sind ` Personen A1 , . . . , A` . Jede dieser Personen Ai generiert einen öffentlichen Schlüssel wi und einen privaten Schlüssel w̃i . Die öffentlichen Schlüssel sammeln wir in einer Liste. Möchte Ai an Aj eine Nachricht x senden, so verschlüsselt Ai diese Nachricht mit Hilfe von wj und sendet die Nachricht an Aj . Aj entschlüsselt die Nachricht mit Hilfe von w̃i . Damit dieses Verfahren sicher ist, müssen die folgenden Eigenschaften erfüllt sein: 1. Der Schlüssel w̃i darf nur mit großem Aufwand aus wi (oder irgendwelchen Plaintext-Ciphertext Paaren) zu berechnen sein. 2. Die Verschlüsselung eines Plaintextes muss einfach sein. 3. Die Entschlüsselung ohne Kenntnis von w̃i muss sehr schwer sein. Diese Voraussetzungen führen uns zu sogenannten One-Way Funktionen: Definition 22 Seien X, Y zwei nicht-leere Mengen. Eine One-Way Funktion f ist eine injektive Funktion f : X → Y , so dass f (x) in polynomieller Zeit in der Länge von x für alle x ∈ X berechenbar ist, aber die Umkehrfunktion f −1 (y) für jeden interessanten Anteil der Werte y ∈ Range(f ) nicht effizient berechenbar ist. Aufgabe 18 Beweisen Sie: Ist P = N P , so gibt es keine One-Way Funktionen. Aufgabe 19 Betrachten Sie die folgende Attacke auf einen Ciphertext y ∈ Zm,n , der durch ein Public-Key Verfahren A mit öffentlichem Schlüssel w generiert wurde: Wähle einen Text x ∈ Zm,n . Bestimme den Ciphertext y 0 für x unter Verwendung des Schlüssels w . Ist y 0 = y , so nennen wir die Wahl von x erfolgreich. Zeigen Sie: Gilt für alle Polynome q Pr(die Wahl von x ist erfolgreich) < 1 , q(n) dann ist die Wahrscheinlichkeit, einen Wert x auch bei einer polynomiell häufigen Wiederholung 1 dieser Attacke erfolgreich zu wählen, kleiner q(n) für alle Polynome q . 69 Aufgabe 20 Zeigen Sie wie mit Hilfe eines Public-Key Verfahrens ein Authentifizierungsverfahren implementiert werden kann. Bisher konnte der Beweis für die Existenz von One-Way Funktionen noch nicht erbracht werden. Zwar scheint die Beantwortung dieser Frage mit der Problematik, ob P gleich N P ist, im Zusammenhang zu stehen. Um jedoch eine für die Kryptographie anwendbare One-Way Funktion zu finden, müssen noch einige weitere Kriterien erfüllt sein, welche über die klassischen Worst-Case Bedingungen hinausgehen: 1. Probleme mit hoher Worst-Case Komplexität können auf den meisten Eingabeinstanzen einfach gelöst werden. Zudem existieren keine nicht-linearen unteren Schranken für die meisten N P vollständigen Probleme. 2. Für praktische Anwendungen genügt es, wenn wir f −1 randomisiert effizient berechnen können. Somit schließt die nicht effiziente Berechenbarkeit von f −1 auch die polynomielle randomisierte Berechenbarkeit von f −1 aus. Selbst aus dem Wissen, dass es keinen effizienten deterministischen Algorithmus für f −1 gibt, können wir jedoch nicht schließen, dass es keinen effizienten randomisierten Algorithmus gibt. 3. Da die meisten relevanten Eingaben für die Kryptoanalyse von beschränkter Länge sind, dürfen wir uns bei der nicht effizienten Berechenbarkeit von f −1 nicht auf uniforme Komplexitätsklassen beschränken. Vielmehr müssen wir fordern, dass f −1 auch nicht durch nicht-uniform konstruierbare Schaltkreisfamilien polynomieller Größe berechnet werden kann. 4. Selbst, wenn alle oben beschriebenen Voraussetzungen erfüllt sind, und f −1 auf fast allen Eingaben nicht effizient berechnet werden kann, ist es möglich, dass die wenigen Eingaben, auf denen eine Invertierung von f effizient möglich ist, alle interessanten Eingaben umfasst, wie 10 zum Beispiel alle Eingaben der Länge ≤ 22 . Trotz dieser demotivierenden Einschränkungen gibt es dennoch einige vielversprechende Kandidaten für One-Way Funktionen: 1. die modulare Exponentiation mit der Umkehrfunktion des diskreten Logarithmus, 2. das Produkt von Primzahlen mit der Umkehrfunktion der Primzahlzerlegung und Pn 3. berechne M = i=0 xi · ai mit ai ∈ N und xi ∈ {0, 1} . Die Umkehrfunktion dieser Funktion stellt eine Verallgemeinerung des Rucksackproblems dar. Es bleibt jedoch zu klären, wie wir eine One-Way Funktion einsetzen können, um ein Public-Key Verfahren zu bekommen. Hierfür greifen wir auf sogenannte Trap-Door Funktionen zurück. In der folgenden Definition gibt Ko die Menge der öffentlichen und Kp die Menge der privaten Schlüssel an. Definition 23 Eine Funktion f : Pt × Ko → Ct nennen wir Trap-Door Funktion, wenn die drei nachfolgenden Bedingungen erfüllt sind: 1. Two (·) = f (·, wo ) ist eine One-Way Funktion für alle wo ∈ Ko . 2. Es existiert ein Polynom p , so dass Two (x) in deterministischer (bzw. randomisierter) Zeit p(|x|) für alle wo ∈ Ko berechnet werden kann. 70 3. Es existiert eine One-Way Funktion d : Kp → Ko und eine in polynomieller Zeit berechenbare Funktion g : Kp × Ct → Pt , so dass ∀x ∈ Pt ∀y ∈ Ct ∀wo ∈ Ko : y = f (x, wo ) =⇒ x = g(d−1 (wo ), y) . Wie gefährlich es ist, sich bei der Auswahl einer Trap-Door Funktion auf ein N P -vollständiges Problem zu verlassen, zeigt das folgende Beispiel (vergleiche hierzu [K86]). 5.2 Das Merkle-Hellman Kryptosystem Das Merkle-Hellman Kryptosystem basiert auf dem Rucksack-Problem. Hierfür stellen wir den Plaintext als eine binäre Zeichenkette x = (x0 , . . . , xn−1 ) ∈ {0, 1}n dar. Ferner sei w = (w0 , . . . , wn−1 ) ∈ Nn ein Rucksack-Vektor, d.h. eine Instanz des Rucksack-Problems, mit Rucksackvolumen y = w · xT = n−1 X wi · xi . i=0 Pn−1 Das Resultat y ist eine Zahl zwischen 0 und w und gibt (aufgefüllt mit führenden Nullen) Pn−1 i=0 i den Ciphertext der Länge ` = dlog2 (1 + i=0 wi )e wieder. Damit die Entschlüsselung erfolgreich durchgeführt werden kann, müssen wir die Werte von w geschickt wählen. Im Folgenden wollen wir zunächst auf die Konstruktion von w eingehen. Im Anschluss stellen wir das Entschlüsselungsverfahren für diese Kryptosystem vor, um dann abschließend die Attacke von Shamir [S82] zu diskutieren. 5.2.1 Konstruktion des öffentlichen Schlüssels Die Hintertür zum Merkle-Hellman Verfahren besteht aus einem Paar (k, m) ∈ N × N , deren Werte hinreichend groß gewählt werden und die die Bedingung k < m und ggT(k, m) = 1 (3) erfüllen. Wir wählen nun n Werte w̃ = (w̃0 , . . . , w̃n−1 ) , so dass m > n−1 X w̃i und ∀i ∈ {1, . . . , n − 1} : w̃i > i=0 i−1 X w̃j (4) j=0 ist. Um ein Public-Key Verfahren zu bekommen, wählt die entsprechende Person die Werte k, m, w̃ so, dass die Bedingungen (3) und (4) erfüllt sind. Anschließend berechnet sie w = (w0 , . . . , wn−1 ) , wobei wi = (k · w̃i ) mod m ist. Die Werte k, m, w̃ stellen den privaten und der Vektor w den öffentlichen Schlüssel dar. 5.2.2 Entschlüsselungsverfahren Sei y der empfangene Ciphertext. Wir berechnen zunächst ỹ = (k −1 · y) mod m . Da m und k Teilerfremd sind, können wir das multiplikative Inverse zu k modulo m eindeutig bestimmen. Für 71 ỹ gilt: ỹ = (k −1 · y) mod m = ( n−1 X k −1 · wi · xi ) mod m i=0 = n−1 X ( k −1 · k · w̃i · xi ) mod m = i=0 n−1 X w̃i · xi . i=0 Wir bestimmen nun den Plaintext x = (x0 , . . . , xn−1 ) wie folgt: Sei ỹn = ỹ , dann gilt für i = n − 1, . . . , 0 ỹi+1 ỹi = ỹi+1 mod w̃i und xi = . w̃i 5.2.3 Attacke von Shamir Gegeben sei eine Instanz des Merkle-Hellman Systems, d.h. k, m, w = (w0 , . . . , wn−1 ), w̃ = (w̃0 , . . . , w̃n−1 ) . Der Kryptoanalytiker kennt von dieser Instanz nur den öffentlichen Schlüssel w = (w0 , . . . , wn−1 ) . Das Ziel des Kryptoanalytikers ist es, ein teilerfremdes Paar k, m zu berechnen, so dass für die Sequenz w = (w0 , . . . , wn−1 ) mit wi ≡ wi · k mod m die Bedingung 4 erfüllt sind, d.h. m > n−1 X wi und ∀i ∈ {1, . . . , n − 1} : wi > i=0 i−1 X wj . (5) j=0 Es ist einfach zu erkennen, dass die Werte k, m, w auf die gleiche Art und Weise zur Entschlüsselung von y benutzt werden können, wie die Werte k, m, w̃ . Das Verfahren von Merkle und Hellman hat somit mehrere Hintertüren. Dividieren wir die Werte wi durch m , so erhalten wir −1 wi k ≡ wi · mod 1 m m und n−1 X −1 k wi · mod 1 < 1 . m i=0 −1 Zur Vereinfachung wählen wir r = k m , d.h. n−1 X wi · r mod 1 < 1 . (6) i=0 Der Verlauf der Funktion (wi · r) mod 1 ist in Abbildung 5 dargestellt. Wir suchen zunächst einen Punkt r0 auf der r -Achse, so dass dieser Wert die Bedingung (6) erfüllt. Wir können nun die folgende Beobachtungen anstellen: • Die pi -te Nullstelle der Sägezahnkurve (wi · r) mod 1 ist pi /mi . • Damit das Merkle-Hellman Kryptosystem einen Plaintext gut verschlüsselt, sollten die Werte wi möglichst gross sein, d.h. die Längen der Binärdarstellungen diese Werte liegen nahe bei Länge der Binärdarstellung von m . 72 (wi · r) mod 1 1 0 r 0 1 wi 2 wi pi wi 3 wi wi −1 wi pi +1 wi 1 Abbildung 5: Verlauf der Funktion fi (r) = (wi · r) mod 1 . • Somit ist die Länge der Binärdarstellung von wi = fi (r) kleiner als die Länge der Binärdarstellung von wi und daher muss r in der Nähe einer Nullstelle pi von fi liegen. Aufbauend auf diesen Beobachtungen können wir das folgende System von Ungleichungen aufstellen: 1 ≤ p1 ≤ w1 − 1, 1 ≤ p2 ≤ w2 − 1, .. . 1 ≤ pn ≤ wn − 1, −ε2 ≤ −ε3 ≤ −εn ≤ p1 w1 p1 w1 p1 w1 − wp22 ≤ ε02 − wp33 ≤ ε03 .. . − wpnn ≤ ε0n , (7) wobei die Werte von εi , ε0i akzeptable Abweichungen zwischen den Differenzen wp11 − wpii darstellen. Diese Abweichungen sollen möglichst klein gewählt werden. In vielen Fällen ist es ausreichend eine konstante Anzahl von diesen Ungleichungen zu lösen. Das System von Ungleichungen (7) kann mit Hilfe von Lenstra’s Integer-Programming Algorithmus gelöst werden [L81]. Seien p1 ein Wert, der als Lösung für unser oben angegebenes Ungleichungssystem bestimmt wurde und r1 , . . . , rh aufsteigende Werte mit p1 p1 + 1 ≤ r1 < r2 < . . . < rh < . w1 w1 Diese Werte können wir so wählen, dass zwischen jedem Paar von Werten rt , rt+1 alle Kurven r · wi mod 1 linear sind. Sei qit die Anzahl der Minima von r · wi mod 1 im Intervall (0, rt ) , dann gilt für r ∈ [rt , rt+1 ) r · wi mod 1 = r · wi − qit . Für r ∈ [rt , rt+1 ) können wir somit die nötigen Voraussetzungen für r neu formulieren: n−1 X (r · wi − qit ) < 1 und ∀i ≤ n − 1 : i=0 i−1 X (r · wj − qjt ) < (r · wi − qit ) . j=0 Dieses Gleichungssystem beinhaltet genau eine Variable. Die Lösung dieses Systems ergibt ein Teilin−1 tervall It von [rt , rt+1 ) , so dass für alle r und für alle Werte k, m mit r = km das Paar k, m ein Entschlüsselungssystem für jeden Ciphertext der untersuchten Instanz des Merkle-Hellman Systems bereitstellt. 73 5.3 Probleme aus der Zahlentheorie Wir werden uns nun verschiedene Kryptosysteme, die auf Problemen aus der Zahlentheorie basieren, näher ansehen. Zuvor müssen wir uns jedoch mit verschiedenen Problemen aus der Zahlentheorie beschäftigen. Die meisten der folgenden Punkte sollten schon bekannt sein. Um keine Missverständnisse aufkommen zu lassen, werden wir auf einige Punkte aus der Zahlentheorie hier eingehen. Zunächst ein paar Notationen. Seien m ∈ N und a, b ∈ Z , dann gilt • a ≡ b mod m gdw. m|(a − b) , d.h. m teilt (a − b) • [a]m = {x ∈ Z|a ≡ x mod m} • Zm = {[0], [1], . . . , [m − 1]} und • Z∗m = {[a] ∈ Zm |ggT(a, m) = 1} . Es gilt [a] · [b] = [a · b] und [a] + [b] = [a + b] . Somit sind (Zm , +) und (Z∗m , ·) zwei Gruppen. Der Einfachheit halber identifizieren wir Zm und Z∗m mit diesen Gruppen. Wir lassen die Klammern um die Elemente der Mengen Zm und Z∗m weg. Ferner definiert (Zm , +, ·) einen kommutativen Ring. Um innerhalb eines Restklassenringes rechnen zu können, fassen wir noch einige einfache Ergebnisse zusammen: Beobachtung 7 Seien m ∈ N+ , n ∈ N und a, b, c, d ∈ Z , dann gilt a ≡ b mod m a ≡ b mod m und und a ≡ b mod m und c ≡ d mod m c ≡ d mod m =⇒ =⇒ a + c ≡ b + d mod m a − c ≡ b − d mod m c ≡ d mod m =⇒ a · c ≡ b · d mod m a ≡ b mod m =⇒ an ≡ bn mod m . Da wir in einem Restklassenring nicht mit der gebräuchlichen Division arbeiten können, benutzen wir das modulare Inverse als Umkehrfunktion der Multiplikation. a−1 ∈ Zm nennen wir das modulare Inverse zu a modulo m , wenn a · a−1 ≡ 1 mod m ist. Es gibt jedoch nicht zu jedem Paar a, m das modulare Inverse von a . Wie wir schon gesehen haben gilt: Beobachtung 8 Die Äquivalenz a · x ≡ 1 mod m hat genau dann eine Lösung, wenn ggT(a, m) = 1 ist. Wenn eine Lösung von a · x ≡ 1 mod m existiert, so ist diese eineindeutig. Von besonderer Bedeutung für verschiedene Kryptosysteme ist die Eulersche ϕ -Funktion, Y 1 ∗ ϕ(m) = |Zm | = m · 1− . p Primzahlen p<m mit ggT(p,n)6=1 Beobachtung 9 Für die Eulersche ϕ -Funktion gilt: 74 1. ϕ(m · n) = ϕ(m) · ϕ(n) für ggT(m, n) = 1 , 2. ϕ(pα ) = pα−1 (p − 1) für Primzahlen p und 3. ϕ(p) = p − 1 für Primzahlen p . Zahlen a werden wir im Weiteren immer als Binärzahlen darstellen. Mit n = 1 + blog2 ac bezeichnen wir im Allgemeinen die Länge der Binärzahl. 5.3.1 Grundlegende Probleme Definition 24 Größter gemeinsamer Teiler (ggT) Gegeben: Zwei Zahlen a, b ∈ N . Problem: Bestimme die größte Zahl, die sowohl a als auch b teilt. Um den größten gemeinsamer Teiler zu finden, können wir auf den erweiterten Euklidischen Algorithmus zurückgreifen. Algorithm 4 ErwEuklid Eingabe: a, b ∈ N mit a > b Ausgabe: d ∈ N , x, y ∈ Z mit d = ggT(a, b) und d = a · x + b · y 1: x0 = 1, x1 = 0, y0 = 0, y1 = 1 und r0 = a, r1 = b 2: for i = 1, 2, . . . bis ri+1 = 0 do 3: qi = b ri−1 ri c 4: ri+1 = ri−1 − qi · ri 5: xi+1 = xi−1 − qi · xi 6: yi+1 = yi−1 − qi · yi 7: end for 8: Ausgabe ri , xi , yi Für diesen Algorithmus gilt: Theorem 7 Algorithmus 4 berechnet den größten gemeinsamen Teiler zweier Zahlen a, b , indem er maximal 1, 5 · log2 max{a, b} + O(1) Divisionen von Zahlen kleiner gleich max{a, b} ausführt. Beweis: Der Beweis erfolgt, indem wir die folgenden Lemmata zeigen: Lemma 8 Algorithmus 4 berechnet den größten gemeinsamen Teiler zweier Zahlen a, b korrekt. Beweis: Zunächst zeigen wir über eine vollständige Induktion über i , dass r0 · xi + r1 · yi = ri ist. Für i = 0 und i = 1 erhalten wir r0 · x0 + r1 · y0 = r0 · 1 + r1 · 0 = r0 und r0 · x1 + r1 · y1 = r0 · 0 + r1 · 1 = r1 . Wir betrachten nun die Hypothese, dass die Aussage für alle i0 ≤ i erfüllt ist. Aus dem Algorithmus wissen wir, dass xi+1 = xi−1 − qi · xi und yi+1 = yi−1 − qi · yi 75 ist. Somit gilt: r0 · xi+1 + r1 · yi+1 = r0 · xi−1 − r0 · qi · xi + r1 · yi−1 − r1 · qi · yi = r0 · xi−1 + r1 · yi−1 − qi · (r0 · xi + r1 · yi ) = ri−1 − qi ri = ri+1 . Die erste Aussage ist somit bewiesen. Es gilt für alle i ≥ 1 ri+1 + ri ≤ ri−1 . (8) Nach Konstruktion gilt ri−1 − qi ri = ri+1 und somit ri+1 + ri = ri−1 − (qi − 1)ri . Da wir durch den Algorithmus sicherstellen, dass ri+1 = ri−1 mod ri < ri ist, gilt qi ≥ 1 und somit ri+1 + ri ≤ ri−1 . Da die Werte ri nicht negativ sind, gibt es ein n ∈ N , so dass rn+1 = 0 ist. Es verbleibt zu zeigen, dass rn = ggT(a, b) ist. Sei d = ggT(a, b) . Da rn = r0 · xn + r1 · yn = a · xn + b · yn ist, muss rn ein Vielfaches von d sein. Da rn+1 = 0 ist, gilt rn−1 = qn · rn . Somit teilt rn den Wert rn−1 . Induktiv können wir nun für alle i = n − 2, . . . , 0 zeigen, dass rn den Wert ri = qi+1 ri+1 + ri+2 teilt. Inbesondere teilt rn die Werte r0 = a und r1 = b . Somit gilt rn = d . Lemma 9 Algorithmus 4 benötigt maximal 1, 5·log2 max{a, b} +O(1) Divisionen von Zahlen kleiner gleich max{a, b} . Beweis: Algorithmus 4 benötigt genau eine Division pro Schleifendurchlauf. Die Anzahl der Schleifendurchläufe ist jedoch maximal, wenn wir den jeweiligen Wert ri pro Durchlauf nur um einen möglichst kleinen Wert reduzieren. Somit erhalten wir eine möglichst lange Folge bei ri+1 + ri = ri−1 für alle i ≥ 1 . Drehen wir die Zählrichtung um, so erhalten wir die Folge ai = ai−1 + ai−2 und Startwerte a0 = a1 = 1 , d.h. wir erhalten die Folge der Fibonacci-Zahlen, wobei a = an die n -te und b = an−1 die (n − 1) -te Fibonacci-Zahl ist. Für diese Zahlenfolge gilt an = √ !n+1 1 1+ 5 √ · − 2 5 √ !n+1 1− 5 . 2 √ Da | 1−2 5 | < 0, 62 ist, gilt lim n→∞ √ !n+1 1− 5 = 0. 2 Das asymptotische Wachstumsverhalten von an wird somit durch n + 1 ≈ log 1+√5 an . 2 Die Behauptung des Lemmas folgt unmittelbar. Theorem 7 folgt unmittelbar aus diesen beiden Lemmata. 76 √ n+1 1+ 5 2 bestimmt. Es gilt Definition 25 Modulare Inverse Gegeben: Zwei Zahlen a, m ∈ N . Problem: Bestimme a−1 ∈ Zm , so dass a−1 ·a ≡ 1 mod m ist, sofern dieser Wert existiert. a−1 = 0 , wenn kein Wert a−1 mit a−1 · a ≡ 1 mod m existiert. Das modulare Inverse kann mit Hilfe des erweiterten Euklidischen Algorithmus berechnet werden. Theorem 8 Das modulare Inverse kann auf Eingabe von a, m in Zeit O(max{log2 a, log2 m}2 ) berechnet werden. Aufgabe 21 Führen Sie das Merkle-Hellman Kryptoverfahren (Ver- und Entschlüsselung) für die Werte n = 5 , m = 8443 , k = 2550 und w̃ = (171, 196, 457, 1191, 2410) durch. Tip: k −1 = 3950 mod m . Aufgabe 22 Beweisen Sie die Korrektheit des Entschlüsselungsverfahrens zum Merkle-Hellman Kryptosystem. Aufgabe 23 Beweisen Sie die Korrektheit der Null-Teiler Eigenschaft für n ∈ N mit n ≥ 2 : Die Aussage ∀k ∈ N∀` ∈ N : k · ` ≡ 0 mod n =⇒ ` ≡ 0 mod n oder k ≡ 0 mod n ist genau dann gültig, wenn n eine Primzahl ist. Aufgabe 24 Beweisen Sie die Korrektheit des Kürzungsgesetzes für n ∈ N mit n ≥ 2 : Die Aussage ∀k, `, j ∈ N : j 6≡ 0 mod n und j · ` ≡ j · k mod n =⇒ ` ≡ k mod n ist genau dann gültig, wenn n eine Primzahl ist. Theorem 9 Chinesischer Restklassen Satz Seien m1 , . . . , mr r Zahlen, die paarweise relativ prim Q zueinander sind, d.h. für alle i, j ∈ {1, . . . , r} mit i 6= j gilt ggT(mi , mj ) = 1 , und sei r m = i=1 mi . Ferner seien a1 ∈ Zm1 , . . . , ar ∈ Zmr . Dann existiert genau eine eindeutig bestimmte Zahl y ∈ Zm mit y ≡ ai mod mi für alle i ∈ {1, . . . , r} . Ferner kann y in polynomieller Zeit in der Länge der Eingabe berechnet werden. m . Da die Werte m1 , . . . , mr alle paarweise relativ prim zueinander Beweis: Für jedes i sei ni = m i sind, gilt ggT(mi , ni ) = 1 . Somit existiert auch das modulare Inverse n−1 von ni bezüglich mi . i Wir wählen t X ŷ = ni · n−1 und y = ŷ mod m . i · ai i=1 Da nj von mi für alle i 6= j ein Vielfaches ist, gilt y ≡ ŷ ≡ ni · n−1 i · ai ≡ ai mod mi . Somit erfüllt y die erwünschten Bedingungen bezüglich der Restklassenzugehörigkeit. 77 Es verbleibt noch zu zeigen, dass dieser Wert eindeutig ist. Dieser Beweis erfolgt über eine Widerspruchsannahme. Sei x 6= y ein Wert in Zm , welcher die Voraussetzungen, d.h. x ≡ ai mod mi für alle i erfüllt. Dann gilt x − y ≡ 0 mod mi für alle i . Folglich teilt mi die Differenz x − y Q . Da die r Werte m1 , . . . , mr alle paarweise relativ prim zueinander sind, teilt auch das Produkt m = i=1 mi die Differenz x − y . Da beide Werte x und y aus Zm gewählt wurden, folgt dass x − y = 0 und somit x = y ist – ein Widerspruch. Die Laufzeitschranke folgt unmittelbar aus der Formel zur Berechnung von ŷ und y . Definition 26 Modulare Exponentiation Gegeben: m ∈ N , m ≥ 2 , x ∈ N und a ∈ Z∗m . Problem: Bestimme y ∈ Zm mit y ≡ ax mod m Der folgende Algorithmus löst das Problem der modularen Exponentiation: Algorithm 5 ModExp Eingabe: m ∈ N , m ≥ 2 , x = x` . . . x0 ∈ N und a ∈ Z∗m Ausgabe: y ∈ Zm mit y ≡ ax mod m 1: y = 1 2: for i = ` to 0 by −1 do 3: if xi = 1 then 4: y := y 2 · a mod m 5: else 6: y := y 2 mod m 7: end if 8: end for 9: Ergebnis y Aus der Analyse dieses Verfahrens folgt: Theorem 10 Algorithmus 5 löst das Problem der modularen Exponentiation in Zeit O(max{log2 a, log2 m, log2 x}3 ) . Die Umkehrfunktionen der modularen Exponentiation geben zwei gute Kandidaten für Trap-Door Funktion ab: die diskrete Wurzel, bzw. die Faktorisierung, und der diskrete Logarithmus: Definition 27 Diskrete Wurzel Gegeben: m ∈ N , m ≥ 2 , r ∈ N und a ∈ Z∗m . Problem: Bestimme x ∈ Zm mit a ≡ xr mod m , wenn ein solcher Wert x existiert. Existiert keine solche Lösung, so gebe Es existiert keine Lösung aus. Um ein besseres Verständnis für das Problem der diskreten Wurzel zu erhalten, müssen wir auf die Struktur der multiplikativen Gruppe Z∗m näher eingehen. Theorem 11 Ist p eine Primzahl, so ist Z∗p eine zyklische Gruppe der Ordnung p − 1 . 78 Beweis: Für Primzahlen p haben wir bereits gesehen, dass |Z∗p | = ϕ(p) = p − 1 ist. Um zu erkennen, dass Z∗p zyklisch ist, werden wir zeigen, dass ein Element x der Ordnung p − 1 in Z∗p existiert, d.h. |{xi mod p|i ∈ N}| = p − 1 . Hierfür werden wir alle Elemente aus Z∗p verschiedener Ordnung zählen. Sei d ∈ N , d > 0 , mit d|p − 1 , dann definieren wir Sd = { a ∈ Z∗p | a ist von der Ordnung d } . Es ist einfach zu erkennen, dass die Mengen Sd paarweise disjunkt sind. Es ist bekannt, dass diese Mengen Z∗p partitionieren. Es gilt somit X |Sd | = |Z∗p | = p − 1 . d mit d|p−1 Es gilt: Lemma 10 Sei p eine Primzahl und f (x) = a0 · xn + · · · + an−1 · x + an eine Polynom mit f 6≡ 0 mod p , dann hat f (b) ≡ 0 mod p maximal n unterschiedliche Lösungen. Wir wollen nun folgendes Lemma zur Bestimmung der Kardinalitt der Mengen Sd zeigen: Lemma 11 Sei d ein Wert mit d|p − 1 , dann ist entweder |Sd | = 0 oder |Sd | = ϕ(d) . Beweis: Sei Sd eine nicht leere Menge und a ∈ Sd , dann sind die Werte a mod p, a2 mod p, . . . , ad mod p alle paarweise unterschiedlich, und jedes Element dieser Folge ist eine Lösung von xd ≡ 1 mod p . Wir kennen somit d Lösungen für xd ≡ 1 mod p . Unter der Voraussetzung, dass Sd nicht leer ist, folgt aus Lemma 10: Sd ⊆ { ai | i ∈ {1, . . . , d} } . Wir betrachten nun ein festes k ∈ {1, . . . , d} . Ist ggT(k, d) = ` > 1 , dann gilt (ak )d/` = ak/`·d ≡ 1 mod p . Somit ist ak von einer kleineren Ordnung als d . Wir betrachten nun den Fall, dass ggT(k, d) = 1 ist, dann existiert ein modulares Inverses ` zu k , d.h. ` · k ≡ 1 mod d , und somit ist ak·` ≡ a mod p . Folglich gilt für alle e ∈ {1, . . . , d − 1} ((ak )e )` ≡ (ak·` )e ≡ ae 6≡ 1 mod p. Somit ist |{(ak )e |e ∈ N}| = d und ak ist ein Element der Ordnung d , d.h. ak ∈ Sd . Fassen wir zusammen, so erkennen wir: Sd = { ak | 1 ≤ k ≤ d, ggT(k, d) = 1 } und |Sd | = ϕ(d). Unter der Annahme, dass für einige Werte d mit d|p − 1 die Menge Sd leer ist, gilt X X |Sd | < ϕ(d) . d|p−1 d|p−1 Um die rechte Seite dieser Ungleichung abzuschätzen, benutzen wir das folgende Lemma: 79 Lemma 12 Für alle positiven ganzen Zahlen gilt X ϕ(d) = n . d|n Beweis: Sei n eine positive ganze Zahl und d ein Wert mit d|n , dann definiere Rd = { m · i | m = n/d und i ∈ Z∗d } . Zunächst gilt Rd ⊂ {1, . . . , n} und |Rd | = ϕ(d) . Sei x ∈ {1, . . . , n} , m = ggT(x, n) , d = n/m und i = x/m . Da x = m · i , n = m · d und m = ggT(x, n) ist, gilt ggT(i, d) = 1 und folglich gilt x ∈ Rd . Wir betrachten nun die Frage, ob x auch in einer anderen Menge Re vorkommen kann, also, ob die Mengen Rd paarweise disjunkt sind. Sei e ein entsprechender Wert, d.h. e|n und x ∈ Re . Dann gibt es Werte î und m̂ mit x = m̂ · î , n = m̂ · e und ggT(e, î) = 1 . Es gilt n · î = m̂ · î = x = m · i = e n ·i d und somit d · î = e · i . Da jedoch ggT(e, î) = 1 ist, erhalten wir e|d , und da ggT(d, i) = 1 ist, erhalten wir d|e . Somit gilt e = d — ein Widerspruch. Folglich gehört jedes Element x ∈ {1, . . . , n} zu genau einer Menge Rd und es gilt X X |Rd | = ϕ(d) = n . d|n d|n Es gilt demnach X d|p−1 |Sd | < X ϕ(d) = p − 1 . d|p−1 Diese Ungleichung widerspricht jedoch der Beobachtung, dass die Mengen Sd eine Partitionierung der Menge Z∗p darstellen. Folglich ist für jeden Wert d mit d|p − 1 die Menge Sd nicht leer, dieses gilt insbesondere für d = p − 1 . Ein Element x ∈ Z∗p , welches die ganze Gruppe Z∗p aufspannt, d.h. Z∗p = { xi | i ∈ {1, . . . , p} } nennen wir Generator von Z∗p . Definition 28 Diskreter Logarithmus Gegeben: m ∈ N , m ≥ 2 , a ∈ Z∗m und x ∈ Z∗m . Problem: Bestimme r ∈ Zm mit a ≡ xr mod m , wenn ein solcher Wert x existiert. Existiert keine solche Lösung, so gebe Es existiert keine Lösung aus. Wir nennen diesen Wert r den diskreten Logarithmus von a zur Basis x und schreiben r = dlogx (a) . Für eine Primzahl p können wir folgende naheliegende Beobachtung zeigen: Beobachtung 10 Für eine Primzahl p und einen Generator x von Z∗p gilt xp−1 ≡ 1 mod p . 80 Diese Beobachtung können wir in einem ersten Schritt wie folgt generalisieren: Theorem 12 Kleiner Satz von Fermat Für alle Primzahlen p und alle x ∈ Z∗p gilt xp−1 ≡ 1 mod p . Beweis: Für alle Elemente x ∈ Z∗p gilt: Beobachtung 11 Für alle Primzahlen p und alle x ∈ Z∗p gilt {x mod p, 2 · x mod p, . . . , (p − 1) · x mod p} = Z∗p . Beweis: Der Beweis erfolgt über eine Widerspruchsannahme. Sei x ∈ Z∗p mit {x mod p, 2 · x mod p, . . . , (p−1)·x mod p} ⊂ Z∗p , dann existieren c1 , c2 ∈ Z∗p mit c1 ·x ≡ c2 ·x mod p und c1 6≡ c2 mod p . Da p eine Primzahl ist, gilt ggT(x, p) = 1 . Somit existiert das multiplikative Inverse x−1 von x . Es gilt c1 · x ≡ c2 · x mod p c1 · x · x−1 ≡ c2 · x · x−1 mod p =⇒ =⇒ c1 ≡ c2 mod p im Widerspruch zu c1 6≡ c2 mod p . Aus dieser Beobachtung folgt xp−1 · (p − 1)! ≡ p−1 Y i·x ≡ i=1 p−1 Y i ≡ (p − 1)! mod p . i=1 Da p eine Primzahl ist, gilt ggT(p, (p − 1)!) = 1 und somit existiert das multiplikative Inverse ((p − 1)!)−1 von (p − 1)! . Es gilt xp−1 · (p − 1)! ≡ (p − 1)! mod p =⇒ xp−1 ≡ 1 mod p . Eine Verallgemeinerung vom kleinen Satz von Fermat auf beliebige positive ganze Zahlen p ist auch als der Satz von Euler bekannt. Theorem 13 Satz von Euler Sei n ∈ N mit n ≥ 2 , dann gilt für alle x ∈ Z∗n xϕ(n) ≡ 1 mod n . Beweis: Wir beweisen dieses Theorem zunächst für Primzahlpotenzen n = p` . Der Beweis erfolgt über eine Induktion über ` . Für ` = 1 folgt die Behauptung unmittelbar aus dem kleinen Satz von Fermat. Sei ` > 1 , dann gilt ϕ(p` ) = (p − 1) · p`−1 = p` − p`−1 = p · (p`−1 − p`−2 ) und somit `−1 `−2 p ` `−1 `−2 xϕ(p ) ≡ xp·(p −p ) ≡ xp −p mod p` . Da ϕ(p`−1 ) = p`−1 − p`−2 ist, folgt aus der Induktionshypothese `−1 xp −p`−2 ≡ 1 mod p`−1 . 81 Folglich gilt `−1 xp −p`−2 = 1 + c · p`−1 für eine geeignete Konstante c ∈ N . Zur Vereinfachung setzen wir z = c · p`−1 . Aus dem Binomialsatz erhalten wir p X p p (1 + z) = · 1i · z p−i . i i=0 Da pi für i ≥ 1 ein Vielfaches von p ist, gilt für alle i ∈ {1, . . . , p − 1} p · 1i · z p−i ≡ 0 mod p` i und somit, da p · (` − 1) ≥ ` ist, ` xϕ(p ) ≡ 1 + z p ≡ 1 + cp · pp·(`−1) ≡ 1 mod p` . Dieses beweist den Satz von Euler für Primzahlpotenzen. Wir betrachten nun diesen Satz für beliebige n ∈ N mit n ≥ 2 . Sei n = p`11 ·p`kk die Primzahlzerlegung von n . Zunächst gilt xϕ(n) ≡ 1 mod p`i i . Die Behauptung folgt nun unmittelbar aus folgender Beobachtung: Beobachtung 12 Seien m1 , m2 ∈ N mit m1 , m2 ≥ 1 und x1 , x2 ∈ N , dann gilt x1 ≡ x2 mod m1 und x1 ≡ x2 mod m2 =⇒ x1 ≡ x2 mod m1 · m2 . Abschließend noch ein paar Bemerkungen zur Komplexität von der Berechnung der diskreten Wurzel. Für den Fall, dass m eine Primzahl ist, existiert ein polynomial zeitbeschränkter Las-Vegas Algorithmus zur Berechnung der diskreten Wurzel [AMM77, B70]. Ist die Primzahlzerlegung von m bekannt, so können wir diskreten Wurzeln mit Hilfe der Darstellung der Wurzel in der Chinesischen Restklassendarstellung bestimmen. 5.4 Das RSA-Kryptosystem Das RSA-Kryptosystem ist heute wohl das bekannteste Public-Key Kryptoverfahren. Benannt ist dieses Verfahren nach dessen Entwicklern Rivest, Shamir und Adleman [RSA78], die 2002 für dessen Entwicklung den Turing Award erhielten. Sei A ein Teilnehmer an dem Public-Key-Kryptoverfahren, dann verfährt A wie folgt, um den öffentlichen Schlüssel wo und den privaten Schlüssel wp zu generieren. 1. A wählt zwei große Primzahlen pA und qA (von zumindest 200 Bits, wobei die Anzahl der Bits in pA größer ist als die Anzahl der Bits in qA ). 2. Sei nA = pA · qA und ϕ(nA ) = ϕ(pA ) · ϕ(qA ) = (pA − 1) · (qA − 1) = nA − pA − qA + 1 . 82 3. Wähle eine zufällig Zahl eA ∈ {1, . . . , ϕ(nA )} mit ggT(eA , ϕ(nA )) = 1 und berechne dA = e−1 A mod ϕ(nA ) . 4. Veröffentliche wo = (nA , eA ) und verwahre wp = (pA , qA , dA ) . Zur Verschlüsselung eines Plaintextes x berechnet B y = xeA mod nA und sendet den Ciphertext y an A . Zur Entschlüsselung berechnet A y dA mod nA . 83 Literatur [AMM77] L. Adleman, K. Mander, G. Miller, On Taking Roots in Finite Fields, 18th FOCS, 1977, S. 175-177. [B94] F. L. Bauer, Kryptologie, Springer-Verlag, 1994. [B70] E. R. Berlekamp, Factoring Polynomials over Large Finite Fields, Mathematics of Computations 24, 1970, S. 713–735. [B81] M. Blum, Coin Flipping per Telephon: A Protocol for Solving Problems Impossible, SIGACT News 15, 1981, 23-27. [B88] G. Brassard, Modern Cryptology, Springer-Verlag, 1988. [BCC88] G. Brassard, D. Chaum, C. Crépeau, Minimum Disclosure Proofs of Knowledge, Journal of Computer and System Science, Vol. 37, No. 2, 1988, 156-189. [BSW95] A. Beutelspacher, J. Schwenk, K.-D. Wolfenstetter, Moderne Verfahren der Kryptographie, Vieweg 1995. [C94] D. Coppersmith, The Data Encryption Standard (DES) and Its Strength against attacks, IBM J. Res. Dev. 38, No. 2, 1994, 243-250. [CLRS01] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms (second edition), MIT Press, 2001. [DH76] W. Diffie, M. E. Hellman, New Directions in Cryptography, IEEE Transactions on Information Theory, IT-22 No. 6, 1976, S. 644–654. [EP91] European Patent Application 0 428 252 A2, A System for Controlling Access to Broadcast Transmissions, 1991. [F68] W. Feller, An Introduction to Probability Theory and its Applications, Vol. 1, 3. Auflage, Wiley, 1968. [FIPS99] Federal Information Processing Standards Publication 46-3, Data Encryption Standard, 1999. [FIPS01] Federal Information Processing Standards Publication 197, Announcing the ADVANCED ENCRYPTION STANDARD (AES), 2001. [GGM86] O. Goldreich, S. Goldwasser, S. Micali, How to Construct Random Functions, Journal of the ACM, Vol. 33, No. 4, 1986, 210-217. [GK96] O. Goldreich, H. Krawczyk, On the Composition of Zero-Knowledge Proof Systems, SIAM Journal on Computing, Vol. 25, No. 1, 1996, 169-192. [GMR85] S. Goldwasser, S. Micali, R. Rackoff, The Knowledge Complexity of Interactiv Proof Systems, SIAM J. Comput. 8(1), 1989, 186-208; siehe auch Proc. 17. STOC, 1985, 291-304. [GMW86] O. Goldreich, S. Micali, A. Wigderson, Proofs that Yield Nothing but their Validity and a Methodology of Cryptographic Protocol Design, Proc. 27 FOCS, 1986, 171-185. [J02] A. Jakoby, Skript zur Vorlesung: Interaktive Protokolle: Arthur-Merlin-Spiele und andere, Universität zu Lübeck, Institut für Theoretische Informatik, Sommersemester 2002. [K67] D. Kahn, The Codebreakers: The Strory of Secret Writing, Macmillan, 1967. 84 [K98] L. Knudsen, Block Ciphers – A Survey, State of the Art in Applied Cryptography, LNCS 1528, 1998, 18-48. [K87] N. Koblitz, A Course in Number Theory and Cryptology, Springer-Verlag, 1987. [K86] E. Kranakis, Primality and Cryptography. Wiley-Teubner Series in Computer Science, 1986. [L81] H. W. Lenstra, Integer Programming with a Fixed Number of Variables, University of Amsterdam, Department of Mathematics, TR 81-03, 1981. [L86] L. A. Levin, Average Case Complete Problems, SIAM Journal on Computing, Vol. 15, 1986, 285-286. [L68] C. L. Liu, Introduction to Combinatorial Mathematics, McGrawHill, New York, 1968. [M03] R. Matthes, Algebra, Kryptologie und Kodierungstheorie, Fachbuchverlag Leipzig, 2003. [N91] M. Naor, Bit Commitment Using Pseudorandomness, Journal of Cryptology, 1991, 151-158. [NPS99] M. Naor, B. Pinkas, R. Sumner, Privacy Preserving Auctions and Mechanism Design, 1st ACM Conference on Electronic Commerce, 1999, S. 129-139. [RSA78] R. Rivest, A. Shamir und L. Adleman, A Method for Obtaining Digital Signatures and PublicKey Cryptosystems, Communications of the ACM 21, 1978, S. 120-126. [S90] A. Salomaa, Public-Key Cryptology, Springer-Verlag, 1990. [S96] J. Schwenk, Conditional Access, in: taschenbuch der telekom praxis 1996, B. Seiler, Verlag Schiele & Schön, Berlin. [S79] A. Shamir, How to Share a Secret, Communications of the ACM 22, 1979, S. 612-613. [S82] A. Shamir, A Polynomial Time Algorithm for Breaking the Merkle-Hellman Cryptosystem, 23rd FOCS, 1982, S. 145-152. [S49] C. E. Shannon, Communication Theory of Secrecy Systems, Bell Syst. Tech. J. 28, 1949, S. 379-423. [Y82] A. Yao, Theory and applications of trapdoor functions, 23rd FoCS, 1982, S. 80–91. [Y86] A. Yao, How to Generate and Exchange Secrets, 27rd FoCS, 1986, S. 162–167. 85