Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Ver- und Entschlüsselung Wir beschreiben jetzt formal, was es bedeutet, eine Nachricht zu verschlüsseln und zu entschlüsseln. Vorlesung “Formale Aspekte der Software-Sicherheit und Kryptographie” Sommersemester 2015 Universität Duisburg-Essen Komponenten eines Kryptosystems (Definition) M: eine Menge von möglichen Nachrichten CM: eine Menge von verschlüsselten Nachrichten Ke : eine Menge von Schlüsseln, die zum Verschlüsseln verwendet werden Prof. Barbara König Übungsleitung: Sebastian Küpper Kd : eine Menge von Schlüsseln, die zum Entschlüsseln verwendet werden K ⊆ Ke × Kd : eine Menge von gültigen Schlüsselpaaren Eine Verschlüsselungsfunktion E : M × Ke → CM Eine Entschlüsselungsfunktion D : CM × Kd → M Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 48 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Ver- und Entschlüsselung Ver- und Entschlüsselung Hinweis: E steht für “encryption” und D für “decryption”. Sei (e, d) ∈ K ein Schlüsselpaar. Die Ver- und Entschlüsselungsfunktionen müssen folgende Eigenschaft haben: Für alle m ∈ M gilt D(E (m, e), d) = m. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 49 Symmetrisches Kryptosystem Bei einem symmetrischen Kryptosystem gilt Ke = Kd und für ein (e, d) ∈ K gilt immer e = d. D.h., es wird derselbe Schlüssel zum Ver- und Entschlüsseln benutzt. Sowohl Alice, als auch Bob müssen zur Kommunikation diesen Schlüssel kennen. (e , e ) (e , e ) Alice Bob Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 50 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Ver- und Entschlüsselung Ver- und Entschlüsselung Asymmetrisches Kryptosystem Bei einem asymmetrischen Kryptosystem gilt für ein (e, d) ∈ K normalerweise e 6= d. D.h., es werden verschiedene Schlüssel zum Ver- und Entschlüsseln benutzt. Wenn Alice eine Nachricht an Bob schickt, dann reicht es aus, wenn Alice e kennt. Dieser Schlüssel wird auch der öffentliche Schlüssel von Bob genannt. Daneben kennt Bob noch seinen privaten Schlüssel d. e (e , d ) Sicherheitsaspekte: die bisherigen Definitionen sagen nichts über die Sicherheit der Kryptosysteme. Im Fall der symmetrischen Verschlüsselung sollte es einfach sein, m aus E (m, e) zu bestimmen, wenn man d = e kennt. Ohne Kenntnis des Schlüssels sollte die Bestimmung von m schwierig sein. Ebenso sollte es im Fall des asymmetrischen Verschlüsselung einfach sein, m aus E (m, e) zu bestimmen, wenn man d kennt. Die Bestimmung von m sollte jedoch schwierig sein, wenn man nur e kennt. Wir werden im weiteren Verlauf der Vorlesung klären, was genau mit “schwierig” gemeint ist. Alice Barbara König Bob “Form. Asp. der Software-Sicherheit und Kryptographie” 51 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 52 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Historische Verschlüsselungsverfahren Historische Verschlüsselungsverfahren Wir betrachten zunächst einige einfache symmetrische Verschlüsselungsverfahren. Caesar-Verschlüsselung Bei der Caesar-Verschlüsselung (nach Julius Caesar) wird jeder Buchstabe durch den Buchstaben ersetzt, der drei Stellen weiter im Alphabet vorkommt. (Statt drei kann auch ein anderer Zahlenwert verwendet.) Beispiel: aus “CAESAR” wird “FDHVDU” Monoalphabetische Verschlüsselung Gegeben ist eine Permutation π : A → A des Alphabetes und jeder Buchstabe a der Nachricht wird durch sein Bild π(a) ersetzt. (Siehe Beispiel im Einführungsteil.) Auch die monoalphabetische Verschlüsselung kann durch Häufigkeitsanalysen einfach entschlüsselt werden. Spezialfall der monoalphabetische Verschlüsselung, der durch Häufigkeitsanalyse sehr leicht entschlüsselt werden kann. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 53 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 54 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Historische Verschlüsselungsverfahren Historische Verschlüsselungsverfahren Vigenère-Verschlüsselung Bei der Vigenère-Verschlüsselung (nach Blaise de Vigenère, 16. Jhdt.) wird ein Schlüssel e = e0 . . . em−1 ∈ A∗ über dem Alphabet gegeben. Eine Abbildung z : A → N0 ordnet jedem Buchstaben einen Zahlenwert zu (z(A) = 0, . . . , z(Z) = 25). Dann werden die Buchstaben des zu verschlüsselnden Textes m = m0 . . . mn ∈ A∗ der Reihe nach verschlüsselt, indem der Zahlenwert des jeweils nächsten Buchstabens des Schlüssels addiert und und das Ergebnis modulo 26 genommen wird. Beispiel: e = CAESAR, wobei z(C) = 2, z(A) = 0, z(E) = 4, z(S) = 19, z(R) = 18 DASISTDERGEHEIMTEXT + CAESARCAESARCAESARC FAWBSLFEVZEZGIQMEPV Insbesondere gilt für den verschlüsselten Text c = c0 . . . cn ∈ A∗ , dass ci = z −1 ((z(mi ) + z(ei mod m )) mod 26) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 55 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 56 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Historische Verschlüsselungsverfahren Historische Verschlüsselungsverfahren Bei der Vigenère-Verschlüsselung nützt eine Häufigkeitsanalyse über den gesamten Text wenig. Ein besonderer Fall ergibt sich jedoch, wenn der Schlüssel genau so lang ist wie der zu verschlüsselnde Text. Entschlüssselungsverfahren: One-Time-Pad Beim One-Time-Pad wird ein Text mit einem zufällig gewähltem Schlüssel gleicher Länge verknüpft. Die Verknüpfung kann wie beim Vigenère-Schlüssel passieren. Alternativ können auch zwei Bitstrings durch ⊕ (xor) verknüpft werden. Zunächst muss die Länge des Schlüssels e ermittelt werden. Das kann man machen, indem man verschiedene Längen k ausprobiert und die Häufigkeitsverteilung der Buchstaben ermittelt, deren Stelle kongruent zu einem festen i modulo k ist. Manchmal kann die Länge auch durch das periodische Auftreten bestimmter Zeichenfolgen im Text bestimmt werden. Sobald die Länge k gefunden wurde, kann dann der Schlüssel, Stelle für Stelle, mit Hilfe der Häufigkeitsanalyse ermittelt werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 57 Voraussetzungen: der Einmalschlüssel muss geheim bleiben, der Einmalschlüssel muss zufällig gewählt sein und der Einmalschlüssel darf nur einmal verwendet werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 58 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Historische Verschlüsselungsverfahren Wahrscheinlichkeitrechnung Der One-Time-Pad wurde so von Geheimdiensten im 20. Jahrhundert verwendet. Dabei wurde zunächst der Schlüssel ausgetauscht, beispielsweise kann er auf Papier oder in digitaler Form einem Agenten mitgegeben werden. Claude Shannon hat gezeigt, dass der One-Time-Pad informationstheoretisch sicher ist und damit ein perfektes Verschlüsselungsverfahren darstellt. Insbesondere hat er gezeigt, dass Die Kenntnis des verschlüsselten Textes keine zusätzlichen Informationen über den Inhalt der Nachricht liefert. bzw. Jeder Nachrichteninhalt hat die gleiche Wahrscheinlichkeit, unabhängig davon, ob man den verschlüsselten Text kennt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 59 Um dieses (nicht sehr schwierige) Ergebnis formalisieren und beweisen zu können, benötigt man (diskrete) Wahrscheinlichkeitstheorie. Wahrscheinlichkeitsraum (Definition) Ein Wahrscheinlichkeitsraum besteht aus einer Ergebnismenge Ω, bestehend aus den Elementarereignissen, und einer Funktion P : Ω → R, die jedem Elementarereignis eine Wahrscheinlichkeit zuordnet. Dabei muss gelten: Für jedes x ∈ Ω gilt 0 ≤ P(x) ≤ 1. (Die Wahrscheinlichkeit für ein Elementarereignis liegt zwischen 0 und 1.) P P(x) = 1. (Die Summe aller Wahrscheinlichkeiten ist 1.) x∈Ω Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 60 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Falls Ω endlich ist und alle Elementarereignisse in Ω gleich wahrscheinlich sind, so gilt P(x) = 1 |Ω| für jedes x ∈ Ω Beispiel: Würfeln mit einem fairen Würfel. Dann gilt Ω = {1, 2, 3, 4, 5, 6} und P(x) = 16 für alle x ∈ Ω. Diese Annahme, dass alle Elementarereignisse gleich wahrscheinlich sind, gilt jedoch nicht immer. (Beispiel: manipulierter Würfel) Das Würfeln einer 1 oder 6 bezeichnet man als (zusammengesetztes) Ereignis, im Unterschied zu Elementarereignissen. Ereignis, Wahrscheinlichkeit eines Ereignisses (Definition) Wir betrachten einen Wahrscheinlichkeitsraum, bestehend aus Ω und P : Ω → R. Eine Menge E ⊆ Ω heißt Ereignis. Die Wahrscheinlichkeit des Ereignisses E wird folgendermaßen berechnet: X P(x) P(E ) = x∈E Beispiel: Ereignis E = {1, 6} mit P(E ) = P({1, 6}) = P(1) + P(6) = Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 61 Barbara König 1 1 1 + = 6 6 3 “Form. Asp. der Software-Sicherheit und Kryptographie” 62 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Bemerkung: Für unsere Zwecke können wir alle Teilmengen von Ω als Ereignisse ansehen. Im allgemeinen Fall (insb. für nicht-diskrete Wahrscheinlichkeitsräume) beschränkt man sich auf die Ereignisse, die Elemente einer Ereignisalgebra (oder σ-Algebra) sind. Unabhängigkeit von Ereignissen (Definition) Zwei Ereignisse A, B ⊆ Ω heißen unabhängig, falls gilt: P(A ∩ B) = P(A) · P(B) Rechnen mit Wahrscheinlichkeiten (Satz) Beispiel Würfel: Die Ereignisse A = {1, 3, 5} (Ergebnis ist ungerade) und B = {2, 4, 6} (Ergebnis ist gerade) sind nicht unabhängig. Es gilt: 1 1 1 P(A ∩ B) = P(∅) = 0 6= = · = P(A) · P(B) 4 2 2 Seien A, B ⊆ Ω Ereignisse: P(Ω\A) = 1 − P(A) P(A ∪ B) = P(A) + P(B) − P(A ∩ B) P(∅) = 0 Barbara König Asp. der+ Software-Sicherheit Insbesondere folgt daraus P(A ∪ B)“Form. = P(A) P(B), fallsund Kryptographie” A ∩ B = ∅, d.h., falls A und B disjunkte Ereignisse sind. 63 Die Ereignisse {1, 3, 5} (Ergebnis ist ungerade) und {1, 2, 3, 4} (Ergebnis ist kleiner gleich vier) sind unabhängig. Es gilt: 1 1 2 P(A ∩ B) = P({1, 3}) = = · = P(A) · P(B) 3 Asp. 2 der3Software-Sicherheit und Kryptographie” Barbara König “Form. Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Bedingte Wahrscheinlichkeit (Definition) Die bedingte Wahrscheinlichkeit ist definiert durch P(A | B) = P(A ∩ B) , P(B) falls P(B) 6= 0. 64 Beispiel Würfel: A = {1, 3, 5} (Ergebnis ist ungerade) und B = {1, 2, 3} (Ergebnis ist kleiner gleich drei). Dann gilt: P(A | B) = P({1, 3}) 2 P(A ∩ B) = = P(B) P({1, 2, 3}) 3 Unabhängigkeit und bedingte Wahrscheinlichkeit (Satz) Die Wahrscheinlichkeit P(A | B) ist intuitiv die Wahrscheinlichkeit, dass das Ereignis A eintritt, unter der Bedingung, dass man bereits weiß, dass das Ereignis B eintritt. Zwei (nicht-leere) Ereignisse A, B sind unabhängig genau dann, wenn: P(A | B) = P(A) und P(B | A) = P(B) Sprechweise: Wahrscheinlichkeit von A, vorausgesetzt B. D.h., die Kenntnis, dass das Ereignis B eintreten wird, ändert die Wahrscheinlichkeit von A nicht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 65 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 66 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Zufallsvariable (Definition) Eine Zufallsvariable ist eine Abbildung X : Ω → S. Sei y ∈ S. Man definiert: Sei S eine endliche Menge. Eine Zufallsvariable X : Ω → S heißt gleichverteilt, falls P(X (ω) = y ) = P({ω ∈ Ω | X (ω) = y }) Analog werden P(X (ω) ≤ y ), P(X (ω) ≥ y ), P(X (ω) ∈ R) (für R ⊆ S), etc. definiert. (Im ersten und zweiten Fall muss eine partielle Ordnung ≤ auf S definiert sein.) Bemerkungen: Trotz des Namens hat eine Zufallsvariable mit einer Variablen relativ wenig zu tun. Es handelt sich einfach um eine Funktion. Manchmal schreibt man statt P(X (ω) = y ) einfach nur P(X = y ). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 67 P(X (ω) = s) = 1 |S| für alle s ∈ S Bemerkungen: Die Ereignismenge Ω muss hier nicht notwendigerweise endlich sein. Es gibt noch weitere (diskrete) Wahrscheinlichkeitsverteilungen: geometrische Verteilung, Binomialverteilung, Poisson-Verteilung Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 68 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Wir wenden nun die Wahrscheinlichkeitstheorie auf den One-Time-Pad an. Wir nehmen an, dass M = {0, 1}n (= Menge der Nachrichten) eine Menge von Bitstrings der Länge n ist. Genauso ist Ke = Kd = {0, 1}n und E (m, e) = m ⊕ e D(c, d) = c ⊕ d Die Menge der Elementarereignisse Ω sieht wie folgt aus: Ω = M × Ke = {0, 1}n × {0, 1}n Wir betrachten folgende Zufallsvariable: msg : Ω → M, msg (m, e) = m (Projektion auf die erste Komponente) E : Ω → CM (die bereits vorher definierte Verschlüsselungsfunktion) Wir setzen pm = P(msg = m) (die Wahrscheinlichkeit dafür, dass Nachricht m verschickt wird). D.h. Elementarereignisse sind Paare von Nachrichten und Schlüsseln. Die Nachrichten sind nicht alle gleich wahrscheinlich, für die Schlüssel gilt dies jedoch. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 69 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 70 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Nach Shannon muss ein perfektes Kryptosystem folgende Eigenschaft erfüllen: Perfektes Kryptosystem Die Wahrscheinlichkeit, dass eine Nachricht m geschickt wird, ist gleich der bedingten Wahrscheinlichkeit, dass m geschickt wird, vorausgesetzt dass die Kodierung c bekannt ist. Für den One-Time-Pad bedeutet das für feste m, c ∈ {0, 1}n : P(msg = m | E = c) = P(msg = m) (∗) Oder (etwas informeller): P(m wurde geschickt | c wurde empfangen) = P(m wurde geschickt) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 71 Beweis: Wir zeigen nun, dass der One-Time-Pad die Eigenschaft (*) erfüllt. Es gilt, dass P(msg = m | E = c) = P(msg = m ∧ E = c) P(E = c) Es gilt: P(msg = m ∧ E = c) = P({(m, e 0 ) | e 0 ∈ Ke , E (m, e 0 ) = c}). Es kann nur einen Schlüssel e 0 = c ⊕ m geben, der m zu c verschlüsselt. Also handelt es sich bei der Menge um ein Elementarereignis und es gilt: P({(m, c ⊕ m)}) = pm · 1 2n Die letzte Beziehung gilt, da m und der Schlüssel unabhängig voneinander gewählt werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 72 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Symmetrische Verschlüsselung: DES und AES Außerdem gilt: P(E = c) = X m0 ∈M = X m0 ∈M P(msg = m0 ∧ E = c) pm0 · 1 1 X 1 1 = · pm0 = n · 1 = n n n 2 2 2 2 0 Wir betrachten nun moderne symmetrische Verschlüsselungsverfahren. (e , e ) (e , e ) Alice Bob m ∈M Zusammengefasst: P(msg = m | c wurde empfangen) = pm · 1 2n 1 2n = pm = P(msg = m) und damit ist der One-Time-Pad ein perfektes Kryptosystem. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 73 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 74 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES Die zwei wichtigsten symmetrischen Verschlüsselungsverfahren sind: DES (Data Encryption Standard): war ab 1976 lange Zeit der de-facto-Standard für symmetrische Verschlüsselungsverfahren und wird immer noch in großem Maßstab eingesetzt. Allerdings ist die Schlüssellänge (56 Bit) heute zu kurz und nur noch die Variante Triple DES gilt als sicher. AES (Advanced Encryption Standard): 2002 wurde bei einem Wettbewerb des US-amerikanischen NIST (National Institute of Standards and Technology) das Kryptosystem Rijndael als Nachfolger für DES ausgewählt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 75 Sowohl DES als auch AES sind Blockchiffre, die nach folgendem Prinzip funktionieren: Eine Nachricht wird in Blöcke der Länge n Bits (typischerweise n = 128, 192, 256) aufgespalten und jeder Block wird einzeln verschlüsselt. Wir können also im Folgenden davon ausgehen, dass M = {0, 1}n Es gibt einen symmetrischen Schlüssel der Länge m (typischerweise m = 128, 256). D.h., Ke = Kd = {0, 1}m . Ein Block der Länge n wird durch die Verschlüsselung wieder zu einem Block der Länge n, d.h., CM = {0, 1}n . Aus der gleichen Länge von Nachricht und verschlüsseltem Text kann man schließen, dass die Verschlüsselungsfunktion für einen festen Schlüssel bijektiv sein muss. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 76 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES Die Verschlüsselungsfunktion E : {0, 1}n × {0, 1}m → {0, 1}n wird wie folgt realisiert: eine Nachricht m ∈ {0, 1}n wird mit einem Schlüssel e ∈ {0, 1}m in k Runden verschlüsselt. Zu Beginn gilt m0 = m, man bestimmt mi+1 durch mi+1 = Ei (mi , ei ), wobei ei der Schlüssel der i-ten Runde ist. Der Rundenschlüssel ei wird mit Hilfe eines festgelegten Verfahrens aus e berechnet. Die Verschlüsselungsfunktion Ei wird durch Aneinanderreihung verschiedener Transformationen berechnet, wobei eine Transformation folgendes sein kann: xor-Verknüpfung des zu verschlüsselnden Textes mit dem Rundenschlüssel (AddRoundKey) Jedes Byte der Nachricht wird durch ein anderes Byte substituiert (diese Substitionen werden in sogenannten S-Boxen tabelliert). (SubBytes) Die Bytes der Nachricht werden tabellarisch angeordnet und (spalten- oder zeilenweise) permutiert. (ShiftRows) Die Bytes der Nachricht werden untereinander auf bestimmte Weise mit xor verknüpft. (MixColumns) Die in Klammern angegebenen englischen Bezeichnungen stammen aus AES. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 77 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 78 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES Bemerkungen: Ähnliche Operationen wie sie zur Verschlüsselung einer Nachricht verwendet werden, können auch dazu benutzt werden, die Rundenschlüssel aus dem Schlüssel (bzw. aus Teilen der bisher verschlüsselten Nachricht) zu gewinnen. Bei AES stellt man sich ein Byte auch als Polynom über dem zweielementigen Körper, bestehend aus den Elementen {0, 1}, vor. D.h. b7 b6 . . . b0 ∈ {0, 1}8 entspricht b7 x 7 + b6 x 6 + · · · + b0 Dann kann xor durch Addition solcher Polynom und S-Boxen durch Bildung des multiplikativen Inversen (bezüglich Multiplikation modulo eines irreduziblen Polynoms m(x)), gefolgt von einer affinen Transformation, beschrieben werden. Barbara König AES benutzt genau eine S-Box, die folgendermaßen funktioniert: S-Box bei AES (Teil 1) Fasse das zu substituierende Byte als Polynom p(x) vom Grad 7 über dem Körper {0, 1} auf. Bestimme das Inverse q(x) von p(x) modulo m(x) = x 8 + x 4 + x 3 + x + 1. D.h., es muss p(x) · q(x) mod m(x) = 1 gelten. “Form. Asp. der Software-Sicherheit und Kryptographie” 79 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 80 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES Beispiel: S-Box bei AES (Teil 2) Zu substituierendes Byte: 00110011, entspricht x 5 + x 4 + x + 1 Angenommen q(x) = c7 x 7 + c6 x 6 + · · · + c0 . Dann bestimme das Ergebnis-Byte d7 d6 . . . d0 durch folgende affine Transformation: d0 1 0 0 0 1 1 1 1 c0 1 d1 1 1 0 0 0 1 1 1 c1 1 d2 1 1 1 0 0 0 1 1 c2 0 d3 1 1 1 1 0 0 0 1 c3 0 = d4 1 1 1 1 1 0 0 0 · c4 + 0 d5 0 1 1 1 1 1 0 0 c5 1 d6 0 0 1 1 1 1 1 0 c6 1 d7 0 0 0 1 1 1 1 1 c7 0 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 81 Inverses: 01101100, entspricht x 6 + x 5 + x 3 + x 2 Test: (x 5 + x 4 + x + 1) · (x 6 + x 5 + x 3 + x 2 ) = x 11 + x 10 + x 8 + x 7 + x 10 + x 9 + x 7 + x 6 + x 7 + x 6 + x 4 + x 3 + x 6 + x 5 + x 3 + x 2 = x 11 + x 9 + x 8 + x 7 + x 6 + x 5 + x 4 + x 2 x 11 +x 9 +x 8 +x 7 +x 6 +x 5 +x 4 +x 2 ÷ x8 + x4 + x3 + x + 1 11 7 6 4 3 x +x +x +x +x = x3 + x + 1 x 9 +x 8 +x 5 +x 3 +x 2 Rest: 1 9 5 4 2 x +x +x +x +x 8 4 3 x +x +x +x 8 4 3 x +x +x +x+1 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 82 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES Bemerkungen: Affine Transformation: 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 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 · 1 + 0 = 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 Ergebnis: 11000011 (Vektoren werden von unten nach oben gelesen!), entspricht x 7 + x 6 + x + 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 83 Die Subsitution mittels einer S-Box entspricht einer monoalphabetischen Verschlüsselung. Das Inverse zu einem Polynom kann mit Hilfe des euklidischen Algorithmus berechnet werden. (Dazu später mehr bei RSA.) Zur Entschlüsselung gibt es eine inverse S-Box, die dazu da ist, die Substitution wieder rückgängig zu machen. Die gesamte S-Box ist tabelliert. Siehe http://en.wikipedia.org/wiki/Rijndael S-box. D.h., in der Praxis muss das Inverse nicht berechnet werden. Durch die algebraische Darstellung kann aber das Kryptosystem besser analysiert werden, um zu zeigen, dass es gegen bestimmte Arten von Angriffen geschützt ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 84 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Symmetrische Verschlüsselung: DES und AES Symmetrische Verschlüsselung: DES und AES AES S-Box | 0 1 2 3 4 5 6 7 8 9 a b c d e f ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--| 00 |63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 10 |ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 20 |b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 30 |04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 40 |09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 50 |53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 60 |d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 70 |51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 80 |cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 90 |60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a0 |e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b0 |e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c0 |ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d0 |70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e e0 |e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f0 |8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 85 Kriterien bei symmetrischen Verschlüsselungsverfahren (informell): Konfusion Der Zusammenhang zwischen Schlüssel und verschlüsseltem Text sollte so komplex wie möglich sein. Diffusion Jedes Bit der verschlüsselten Nachricht sollte von jedem Bit der ursprünglichen Nachricht auf möglichst komplexe Weise abhängig sein. Insbesondere sollte sich der verschlüsselte Text vollständig ändern, sobald ein Bit der ursprünglichen Nachricht verändert wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 86 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung Asymmetrische Verschlüsselung Geschichte: Wir betrachten nun asymmetrische Verschlüsselungsverfahren: e (e , d ) 1976: Diffie-Hellman-Schlüsselaustauschprotokoll Beschreibt wie Alice und Bob einen geheimen Schlüssel über ein offenes Netzwerk austauschen können. 1977: RSA (benannt nach Rivest, Shamir, Adleman) Asymmetrisches Verschlüsselungsverfahren (mit Verwendung öffentlicher Schlüssel) Alice Barbara König Bob “Form. Asp. der Software-Sicherheit und Kryptographie” 87 Erst viel später wurde bekannt, dass ganz ähnliche Verfahren bereits 1973 von Williamson, Cock und Ellis beim GHCQ (Government Communications Headquarters, Teil des britischen Geheimdiensts) entwickelt wurden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 88 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung: RSA Asymmetrische Verschlüsselung: RSA Beispiele (Eulersche ϕ-Funktion): Für RSA benötigen wir Voraussetzungen aus der Zahlentheorie: die Eulersche ϕ-Funktion, der Satz von Euler-Fermat und der euklidische Algorithmus. Eulersche ϕ-Funktion Die Eulersche ϕ-Funktion ϕ : N0 → N0 ist folgendermaßen definiert: ϕ(n) mit n ∈ N0 ist die Anzahl der Zahlen zwischen 1 und n, die zu n teilerfremd sind. ϕ(n) = |{m ∈ N0 | 1 ≤ m ≤ n und ggT (m, n) = 1}| n 0 1 2 3 4 5 6 ϕ(n) 0 1 1 2 2 4 2 n 7 8 9 10 11 12 13 ϕ(n) 6 4 6 4 10 4 12 Für eine Primzahl p gilt ϕ(p k ) = p k − p k−1 , insbesondere ϕ(p) = p − 1. Für zwei Zahlen m, n ∈ N0 mit ggT (m, n) = 1 gilt ϕ(m · n) = ϕ(m) · ϕ(n). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 89 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 90 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung: RSA Asymmetrische Verschlüsselung: RSA Satz von Euler-Fermat Für zwei Zahlen m, n ∈ Z mit ggT (m, n) = 1 gilt: mϕ(n) mod n = 1 Lösen diophantischer Gleichungen Gegeben seien a, b, c ∈ Z. Wir suchen Lösungen x, y ∈ Z der Gleichung a·x +b·y =c Diese Gleichung hat genau dann eine Lösung, wenn ggT (a, b) | c. Lösungen für solche Gleichungen können mit Hilfe des erweiterten euklidischen Algorithmus bestimmt werden. Dieser bestimmt nicht nur ggT (a, b), sondern auch Werte für x und y . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 91 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 92 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung: RSA Asymmetrische Verschlüsselung: RSA 1. Schritt: Schlüsselerzeugung Bob generiert zwei große Primzahlen p, q mit p 6= q und setzt n = p · q. Bob bestimmt ϕ(n) (in diesem Fall gilt ϕ(n) = (p − 1) · (q − 1)). Bob bestimmt d, e ∈ {0, . . . , ϕ(n) − 1} mit (d · e) mod ϕ(n) = 1 (d.h., d, e sind modulo ϕ(n) zueinander invers) (e, n) ist der öffentliche Schlüssel, den Bob bekanntgibt. (d, n) ist der private Schlüssel, den Bob geheimhält. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 93 2. Schritt: Verschlüsselung Alice will eine Nachricht M an Bob verschlüsseln. Sie kodiert diese Nachricht als eine Zahl m ∈ {0, . . . , n − 1} (z.B. durch Binärkodierung). Alice rechnet c = me mod n und schickt c an Bob. 3. Schritt: Entschlüsselung Bob empfängt c. Er rechnet m = c d mod n und erhält damit wieder die ursprüngliche Nachricht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 94 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung: RSA Asymmetrische Verschlüsselung: RSA Warum funktioniert RSA? Rechenbeispiel RSA p = 5, q = 11, n = 5 · 11 = 55 ϕ(n) = (p − 1) · (q − 1) = 4 · 10 = 40 Wähle e = 3 und berechne das Inverse d = 27: Löse 3 · x + 40 · y = 1, dies ergibt Lösungen x = −13, y = 1 Das ergibt d = x mod 40 = (−13) mod 40 = 27 Nachricht m = 9 soll übertragen werden. Alice berechnet die Kodierung c = 93 mod 55 = 729 mod 55 = 14. Code c = 14 kommt an. Bob rechnet 1427 mod 55 = (143 mod 55)9 mod 55 9 9 = (2744 mod 55) mod 55 = 49 mod 55 = (493 mod 55)3 mod 55 = (117649 mod 55)3 mod 55 = 43 mod 55 = 64 mod 55 = 9 = m Barbara König Korrektheit: Warum erhält Bob wieder die ursprüngliche Nachricht? Das kann mit dem Satz von Euler-Fermat nachgewiesen werden. Es gilt (e · d mod ϕ(n)) = 1 und damit gibt es eine Zahl z ∈ Z mit e · d = z · ϕ(n) + 1. Also ergibt sich beim Verschlüsseln und anschließenden Entschlüsseln: (me mod n)d mod n = me·d mod n = mz·ϕ(n)+1 mod n = (m · (mϕ(n) )z ) mod n = m · 1z mod n = m mod n = m Diese Argumentation funktioniert nicht, falls m, n nicht teilerfremd sind. In diesem Fall kann man aber mit Hilfe des Chinesischen Restsatzes nachweisen, dass man trotzdem das richtige Ergebnis erhält. “Form. Asp. der Software-Sicherheit und Kryptographie” 95 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 96 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Asymmetrische Verschlüsselung: RSA Asymmetrische Verschlüsselung: RSA Warum funktioniert RSA? (Fortsetzung) Sicherheit: Warum ist es für andere schwierig, die Nachricht zu entschlüsseln? Das liegt (im Wesentlichen) daran, dass man d nur dann leicht aus e berechnen kann, wenn man ϕ(n) kennt. Um ϕ(n) zu berechnen, müsste man die Primfaktorzerlegung von großen Zahlen (ca. 1024–2048 Bits) bestimmen, was sehr schwer ist. Wir werden uns das noch genauer ansehen und uns überlegen, welche Voraussetzungen erfüllt sein müssen, damit RSA sicher ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 97 Weitere Bemerkungen: Auch bei einer sinnvollen Implementierung der Potenzierung bei der Ver- und Entschlüsselung ist RSA kein sehr effizientes Verfahren. Daher wird im Allgemeinen RSA nur zum Schlüsselaustausch verwendet. Sobald ein geheimer Sitzungsschlüssel vereinbart ist, kann ein symmetrisches Verschlüsselungsverfahren (z.B. AES) verwendet werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 98 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Sicherheit von Kryptosystemen Sicherheit von Kryptosystemen Bisher ist noch nicht klar, warum die bisher vorgestellten Kryptosysteme sicher sind. Wir wissen noch nicht einmal, was “sicher” überhaupt bedeutet. Wir betrachten zunächst einmal, welche Arten von Angriffen auf ein Kryptosystem möglich sind: Ciphertext-only attack Nur die verschlüsselte Nachricht oder mehrere verschlüsselte Nachrichten sind bekannt. (Je mehr Nachrichten bekannt sind, desto besser.) Known-plaintext attack Nicht nur eine verschlüsselte Nachricht, sondern auch die dazugehörige unverschlüsselte Nachricht sind bekannt. Das Ziel ist es, den verwendeten Schlüssel zu ermitteln. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 99 Chosen-plaintext attack Der Angreifer hat die Möglichkeit, dem Verschlüsseler eine bestimmte Nachricht unterzuschrieben, die verschlüsselt wird. Beispiel: Im 2. Weltkrieg wurden von den Alliierten bestimmte Bereiche des Meeres vermint, damit die Kryptoanalytiker in Bletchley Park Nachrichten mit dem Wort “Minen” abfangen konnten, um damit den Code der Enigma zu entschlüsseln. Chosen-ciphertext attack Der Angreifer hat die Möglichkeit eine unter einem unbekannten Schlüssel verschlüsselte Nachricht zu wählen und die dazugehörige entschlüsselte Nachricht zu erhalten. Dies ist beispielsweise möglich, wenn ein Schlüssel auch zum Signieren verwendet wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 100 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Sicherheit von Kryptosystemen Sicherheit von Kryptosystemen Wir betrachten hier nicht die folgenden Arten von Angriffen (die aber in der Praxis auch sehr wichtig sind!): Side channel attack Angriff auf eine bestimmte physikalische Implementierung eines Kryptosystems, indem das kryptographische Gerät während der Verschlüsselung beobachtet wird. Beispiel: aus der Laufzeit des Verschlüsselungsalgorithmus können Rückschlüsse auf die Schlüssellänge gezogen werden (sogenannte timing attack). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 101 Bei früheren Verschlüsselungsverfahren setzte man oft darauf, dass der Angreifer das Verschlüsselungsverfahren nicht kannte (Security by Obscurity). Heute fordert man, dass ein Verschlüsselungsverfahren auch dann sicher sein muss, wenn der Algorithmus bekannt ist. (Der Schlüssel selbst muss natürlich unbekannt sein.) Um diese Sicherheit zu gewährleisten, muss ein Kryptosystem einer mathematischen Analyse unterzogen werden. Der Begriff “schwierig zu entschlüsseln” wird heutzutage insbesondere mit Mitteln der Komplexitätstheorie definiert und untersucht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 102 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie Wir definieren zunächst die Klasse aller Sprachen, die von einer deterministischen Turingmaschine mit Zeitbeschränkung akzeptiert werden können. Daher nun eine kurze Wiederholung der wichtigsten komplexitätstheoretischen Begriffe. Kurze Vorausschau: leider wird sich herausstellen, dass der Begriff NP-hart bzw. NP-vollständig nicht ausreichend sein wird, um ein Kryptosystem als “schwierig zu entschlüsseln” zu klassifizieren. Wir müssen daher im Laufe der Vorlesung auf andere Begriffe ausweichen. Zeitbeschränkte det. TM und akz. Sprachen (Definition) Sei f : N0 → N0 eine (totale) Funktion. Die Klasse TIME(f (n)) besteht aus allen Sprachen A, für die es eine deterministische Mehrband-Turingmaschine M gibt mit A = T (M) und time M (x) ≤ f (|x|) für alle Wörter x. Dabei gibt time M (x) die Anzahl der Rechenschritte von M bei Eingabe x an. Das heißt, die Anzahl der Schritte der Turingmaschine ist beschränkt und die Beschränkung ist abhängig von der Länge der Eingabe. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 103 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 104 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie definieren, die von deterministischen Turingmaschinen mit polynomialer Laufzeitbeschränkung erkannt werden. Komplexitätsklasse P (Definition) P = {A | es gibt eine det. Turingmaschine M und ein Polynom p mit T (M) = A und time M (x) ≤ p(|x|)} [ = TIME(p(n)) p Polynom Intuitiv umfasst P alle Probleme, für die effiziente Algorithmen existieren. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 105 Analog zur Komplexitätsklasse P kann man auch eine Klasse FP von Funktionen definieren, die in polynomieller Zeit berechnet werde können. Funktionsklasse FP FP ist die Klasse aller Funktionen der Form f : Σ∗ → Σ∗ , für die es eine deterministische Turingmaschine M und ein Polynom p gibt, so dass M berechnet die Funktion f und time M (x) ≤ p(|x|) für alle Wörter x ∈ Σ∗ . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 106 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie Ähnlich wie bei deterministischen Turingmaschinen kann man auch zeitbeschränkte nichtdeterministische Turingmaschinen und die dazugehörigen Sprachklassen definieren. Zeitbeschränkte nichtdet. TM und akz. Sprachen (Definition) Sei f : N0 → N0 eine (totale) Funktion. Die Klasse NTIME(f (n)) besteht aus allen Sprachen A, für die es eine nichtdeterministische Mehrband-Turingmaschine M gibt mit A = T (M) und ntime M (x) ≤ f (|x|) für alle Wörter x. Dabei gilt min{Länge akzeptierender Rechnungen von M auf x} falls x ∈ T (M) ntime M (x) = 0 falls x ∈ 6 T (M) Barbara König Komplexitätsklasse NP (Definition) [ NP = NTIME(p(n)) p Polynom Offensichtlich gilt P ⊆ NP. Aber gilt auch P 6= NP? “Form. Asp. der Software-Sicherheit und Kryptographie” 107 P 6= NP-Problem (ungelöst) “Form. Asp. der Software-Sicherheit und Kryptographie” 108 Barbara König Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie Analog zum Begriff der Reduzierbarkeit in der Berechenbarkeitstheorie definieren wir nun den Begriff der polynomialen Reduzierbarkeit. Anschaulich bedeutet Reduktion, dass wir mit Hilfe von f aus einer Maschine MB für das Problem B immer eine Maschine MA für das Problem A konstruieren können. Dabei hat die Vorverarbeitungsfunktion f polynomielle Laufzeit. Polynomiale Reduzierbarkeit (Definition) Gegeben seien Sprachen A ⊆ Σ∗ , B ⊆ Γ∗ . Dann heißt A auf B polynomial reduzierbar (in Zeichen A ≤p B), falls es eine totale und mit polynomialer Laufzeit (deterministisch) berechenbare Funktion f : Σ∗ → Γ∗ gibt, so dass für alle x ∈ Σ∗ gilt: x ∈ A ⇐⇒ f (x) ∈ B. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 109 x f f (x ) MB Ja Nein MA Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 110 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie NP-hart, NP-vollständig (Definition) Eine Sprache A heißt NP-hart, falls für alle Sprachen L ∈ NP gilt: L ≤p A. Eine Sprache A heißt NP-vollständig, falls A NP-hart ist und A ∈ NP gilt. Das bedeutet: eine NP-vollständige Sprache ist mindestens so schwierig wie jedes andere Problem in NP. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 111 Beispiel: Erfüllbarkeitsproblem SAT Eingabe: eine aussagenlogische Formel F Ausgabe: Hat F eine erfüllende Belegung? Das heißt, gibt es eine Belegung der atomaren Aussagen mit 0 bzw. 1, so dass F unter dieser Belegung den Wert 1 hat? SAT ist das klassische Beispiel für ein NP-vollständiges Problem. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 112 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung Komplexitätstheorie Wiederholung Komplexitätstheorie Neben NP ist oft auch die Klasse aller Komplemente von NP-Problemen interessant. Sobald man von einer NP-vollständigen Sprache (wie beispielsweise SAT) zeigen könnte, dass sie in P (nicht) enthalten ist, wäre das P 6= NP-Problem gelöst. NP-Vollständigkeit und P Sei A NP-vollständig. Dann gilt Die Komplexitätsklasse co-NP enthält genau die Sprachen, deren Komplement in NP liegt. SAT = {F | F ist eine erfüllbare aussagenlogische Formel} A ∈ P ⇐⇒ P = NP Bemerkung: Daraus folgt unmittelbar, dass auch A 6∈ P ⇐⇒ P 6= NP für jedes NP-vollständige Problem A gilt. Barbara König Komplexitätsklasse co-NP (Definition) “Form. Asp. der Software-Sicherheit und Kryptographie” 113 liegt in NP; das Komplement von SAT, nämlich UNSAT = {F | F ist eine unerfüllbare aussagenlogische Formel} liegt per Definition in co-NP. Ebenso liegt das Gültigkeitsproblem in co-NP. Man weiß weder, ob NP ⊆ co-NP, noch ob co-NP ⊆ NP. Es gilt jedoch P ⊆ NP ∩ co-NP. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 114 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie und die Komplexitätsklasse NP Kryptographie und die Komplexitätsklasse NP Wir machen nun einen ersten Versuch, um den Begriff der “Schwierigkeit” für das Entschlüsseln von Kryptosystemen zu definieren. Wir betrachten ein asymmetrisches Verschlüsselungsverfahren, bei dem der öffentliche Schlüssel bekannt ist. Die Verschlüsselungsfunktion E : M × Ke → CM und die Entschlüsselungsfunktion D : CM × Kd → M liegen in FP. D0 : Jede Funktion CM × Ke → M mit alle c ∈ CM, e ∈ Ke liegt nicht in FP. E (D 0 (c, e), e) = c für Bemerkung: Falls die Verschlüsselung eindeutig rückgängig gemacht werden kann, könnte man hier auch D 0 (E (m, e), e) = m für alle m ∈ M fordern. Entschlüsselungsproblem liegt in NP (Satz) Wir betrachten ein asymmetrisches Kryptosystem, für das gilt: M, CM ⊆ Σ∗ Die Verschlüsselungsfunktion E : M × Ke → CM liegt in FP. Falls E (m, e) = c gilt, so ist m höchstens polynomiell größer als c (D.h., p(|c|) ≥ |m| für ein Polynom p.) Dann liegt die Sprache LE = {(m0 , c, e) | ∃u ∈ Σ∗ : E (m0 u, e) = c} in NP. Aber vielleicht ist die Forderung, dass D 0 nicht in FP liegt, noch etwas zu schwach . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 115 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 116 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie und die Komplexitätsklasse NP Kryptographie und die Komplexitätsklasse NP Bemerkungen: Beweis: Die nichtdeterministische Turingmaschine, die LE entscheidet, rät u und überprüft, ob E (m0 u, e) = c. Da höchstens p(|c|) Zeichen geraten müssen und E in Polynomzeit berechenbar ist, arbeitet die Turingmaschine in polynomieller Zeit. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 117 Die Forderung, dass m höchstens polynomiell größer ist als c, ist sehr natürlich. Normalerweise sind Codewörter genauso lang oder länger als die dazugehörigen Nachrichten. Wenn LE in Polynomzeit berechenbar wäre, dann könnte man D 0 einfach berechnen: seien c und e gegeben. Setze m0 = ε. Angenommen mi ∈ Σi und wir wissen, dass mi ein Anfangsstück der gesuchten Nachricht m ist. Dann bestimme mi+1 , durch Abfragen “(mi a, c, e) ∈ LE ?” für jedes a ∈ Σ. Falls eine solche Abfrage erfolgreich ist, setze mi+1 = mi a. Falls eine Nachricht mn nicht mehr verlängert werden kann, dann setze D 0 (c, e) = m. (Die Iteration terminiert, da |m| beschränkt ist.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 118 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie und die Komplexitätsklasse NP Kryptographie und die Komplexitätsklasse NP Andererseits: wenn D 0 in FP läge (und außerdem Verschlüsselung eindeutig rückgängig gemacht werden kann), dann liegt LE in P: man muss – gegeben ein Tupel (m0 , c, e) – D 0 (c, e) bestimmen und überprüfen, ob m0 ein Präfix von D 0 (c, e) ist. D.h., die Berechnung von LE und D 0 ist “gleich schwierig”. Da sich Begriffe wie NP-Vollständigkeit nur auf Sprachen beziehen, nicht auf Funktionen, ist es günstiger mit dem Entscheidungsproblem, nämlich LE , zu arbeiten. Barbara König Um die Berechnung von D 0 so schwierig wie möglich zu machen, könnte man jetzt folgendes fordern: Mögliche Forderung an Kryptosysteme Für ein asymmetrisches Kryptosystem mit Verschlüsselungsfunktion E muss die Sprache LE NP-vollständig sein. Kann man dann – unter der Voraussetzung, dass P 6= NP – wirklich schließen, dass das Kryptosystem sicher ist? “Form. Asp. der Software-Sicherheit und Kryptographie” 119 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 120 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie und die Komplexitätsklasse NP Kryptographie und die Komplexitätsklasse NP Selbst wenn P 6= NP gelten würde, reicht diese Forderung nicht aus. Dafür gibt es zwei Gründe: NP-Vollständigkeit und Kryptographie Wir müssen miteinbeziehen, dass der Angreifer auch randomisierte Berechnungen durchführen kann. Die Funktion D 0 muss für jedes Element schwer zu berechnen sein. Die NP-Vollständigkeit von LE garantiert nur, dass es Elemente gibt, für die D 0 schwer zu berechnen ist (worst-case vs. average-case). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 121 Bemerkungen: Für SAT ist bekannt, dass es nur relativ wenige Formeln gibt, für die es wirklich schwer ist, nachzuweisen, dass sie unerfüllbar sind bzw. eine erfüllende Belegung zu finden. Daher sind Werkzeuge für SAT (sogenannte SAT-Solver) sehr erfolgreich. Das bedeutet auch, dass SAT ungeeignet ist als Problem, das als Grundlage für ein Kryptosystem dienen soll. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 122 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie und die Komplexitätsklasse NP Kryptographie und die Komplexitätsklasse NP Man hat versucht, Kryptosysteme auf NP-vollständigen Problemen aufzubauen, beispielsweise auf SUBSET-SUM (Merkle und Hellman): SUBSET-SUM Eingabe: eine endliche Menge A ⊆ N0 und t ∈ N0 Ausgabe: gibt es eine Teilmenge A0 ⊆ A, deren Summe P genau t ist? D.h., gilt a∈A0 a = t? Leider hat sich inzwischen herausgestellt, dass es doch effiziente Lösungsverfahren für die in dem Kryptosystem verwendeten Instanzen von SUBSET-SUM gibt. Barbara König Interessanterweise sind nach derzeitigem Kenntnisstand Probleme besser geeignet, von denen nicht bekannt ist, ob sie in P liegen und die auch nicht als NP-vollständig bekannt sind. Dazu gehören insbesondere: Faktorisierung Diskreter Logarithmus Wir werden beide Probleme und die dazugehörigen Funktionen später noch genauer betrachten. “Form. Asp. der Software-Sicherheit und Kryptographie” 123 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 124 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Randomisierung Randomisierung Bestimme Zufallspunkte in einem Quadrat und überprüfe, ob sie innerhalb des eingeschriebenen Kreises liegen: Wir betrachten zunächst randomisierte Berechnungen. Eine interessante Feststellung ist, dass Randomisierung bei Berechnungen helfen kann! Dazu zunächst ein einfaches Beispiel: Berechnung von π Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 125 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 126 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Randomisierung Randomisierung Bemerkungen: Randomisierte Berechnung von π Wähle zufällig Punkte (x, y ) in einem Quadrat mit Seitenlänge 1. D.h., x, y ∈ [0, 1]. Bestimme, ob (x, y ) innerhalb des Kreises liegt, der in das Quadrat einbeschrieben ist. Teste dazu, ob (x − 12 )2 + (y − 21 )2 ≤ r 2 = 14 . Sei n die Gesamtanzahl der Punkte und k die Zahl der Punkte innerhalb des Kreises. Dann gilt für die Fläche F des Kreises: F = r 2 π = π4 und F ≈ kn . Dadurch erhalten wir eine Näherung für π. Barbara König Um π wirklich genau berechnen zu können, benötigt man einen guten Zufallszahlengenerator! Eine andere (klassischere) Möglichkeit, π zu berechnen, ist es den Grenzwert einer Reihe zu bestimmen. Ein weiteres Beispiel für ein Problem, bei dem Randomisierung helfen kann, ist das Sortierproblem: für eine feste Eingabe hat Quick-Sort eine erwartete Laufzeit von O(n log n), wenn das Pivotelement zufällig gewählt wird. (Gegenüber einer worst-case-Laufzeit von O(n2 ) im deterministischen Fall.) “Form. Asp. der Software-Sicherheit und Kryptographie” 127 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 128 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Turingmaschinen Probabilistische Turingmaschinen Klassische Turingmaschinen können im Allgemeinen keine Zufallszahlen erzeugen. Daher betrachten wir nun probabilistische Turingmaschinen. Turingmaschine (Definition) Eine (deterministische) Turingmaschine M ist ein 7-Tupel M = (Z , Σ, Γ, δ, z0 , , E ), wobei Z die endliche Menge der Zustände, Klassische Turingmaschinen haben intuitiv folgendes Aussehen: Kopf kann sich nach links und rechts bewegen und Zeichen überschreiben e i n g a b e Σ das Eingabealphabet, Γ mit Γ ⊃ Σ das Arbeitsalphabet oder Bandalphabet, δ : Z × Γ → Z × Γ × {L, R, N} die Überführungsfunktion, Automat mit endlich vielen Zuständen Signal für Endzustand z0 ∈ Z der Startzustand, ∈ Γ\Σ das Leerzeichen oder Blank und E ⊆ Z die Menge der Endzustände ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 129 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 130 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Turingmaschinen Probabilistische Turingmaschinen Bei probabilistischen Turingmaschinen erhält die Maschine zusätzlich ein Band mit Zufallsbits, auf dem sie sich beliebig bewegen darf. Diese Bits beeinflussen die Zustandsübergänge. Kopf kann sich nach links und rechts bewegen und Zeichen überschreiben e i n g a b 0 1 1 0 0 Probabilistische Turingmaschine (Definition) e Signal für Endzustand Automat mit endlich vielen Zuständen Nach der Wiederholung von herkömmlichen Turingmaschinen führen wir nun probabilistische Turingmaschinen ein. Dabei modifizieren wir die Definition leicht. Eine probabilistische Turingmaschine M ist ein 7-Tupel M = (Z , Σ, Γ, δ, z0 , , E ), wobei alle Komponenten mit Ausnahme von δ wie bei einer herkömmlichen Turingmaschine definiert sind. Die Überführungsfunktion δ hat folgendes Aussehen: δ : Z × Γ × {0, 1} → Z × Γ × {L, R, N} × {L, R, N} 1 Barbara König 0 Band mit Zufallsbits Coin-Tossing Tape “Form. Asp. der Software-Sicherheit und Kryptographie” 130 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 131 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Turingmaschinen Probabilistische Turingmaschinen Dabei hat δ(z, a, b) = (z 0 , c, x, y ) mit z, z 0 ∈ Z , a, c ∈ Γ, b ∈ {0, 1}, x, y ∈ {L, R, N} folgende Bedeutung: Wenn die Turingmaschine im Zustand z ist, a auf dem Arbeitsband liest und das Bit b auf dem Band mit Zufallsbits steht, dann wechselt sie in den Zustand z 0 , schreibt ein c, geht auf dem Arbeitsband in die Richtung x und auf dem Zufallsbit-Band in die Richtung y . Laufzeitbeschränkung von probabilistischen Turingmaschinen Wir sagen, dass eine probabilistische Turingmaschine hält, wenn sie auf jeder Eingabe – unabhängig von den verwendeten Zufallsbits – hält, d.h., einen Endzustand erreicht. Außerdem hat eine probabilistische Turingmaschine eine polynomiale Laufzeit, wenn sie auf jeder Eingabe x – unabhängig von den verwendeten Zufallsbits – höchstens p(|x|) Schritte macht, wobei p ein Polynom ist. Wir gehen davon aus, dass der Turingmaschine zu Beginn der Berechnung entsprechende Zufallsbits bereitgestellt werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 132 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 133 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Turingmaschinen Probabilistische Turingmaschinen Wir betrachten die verwendeten Zufallsbits als Elementarereignisse. Falls die Turingmaschine auf einem festen Wort der Länge n arbeitet, ist die Menge der Elementarereignisse wie folgt definiert: Ω = {0, 1}p(n) Bemerkung: Mehr Zufallsbits werden in p(n) Schritten nicht benötigt. Jedes dieser Elementarereignisse ist gleich wahrscheinlich. Probabilistische Turingmaschinen sind nur eine Möglichkeit, den Begriff der randomisierten Berechnung präzise zu fassen. Die Tatsache, ob eine Maschine M ein Wort x der Länge n akzeptiert, ist eine Zufallsvariable aM (x) : Ω → {0, 1}. Für b̃ ∈ Ω gilt aM (x)(b̃) = 1 genau dann, wenn M das Wort x unter Verwendung der Zufallsbits b̃ akzeptiert. Wie das oft in der Berechenbarkeitstheorie der Fall ist, gibt es auch andere analoge Berechnungsmodelle. Die Laufzeit einer Maschine M auf einem Wort x ist ebenfalls eine Zufallsvariable tM (x) : Ω → N0 . Für b̃ ∈ Ω gibt tM (x)(b̃) die Anzahl der Schritte an, die die Berechnung auf x mit den Zufallsbits b̃ in Anspruch nimmt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 134 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 135 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Wir können un die erste probabilistische Komplexitätsklasse definieren. Komplexitätsklasse RP (Randomized polynomial time) Eine Sprache L ⊆ Σ∗ gehört zu der Klasse RP genau dann, wenn es eine probabilistische Turingmaschine M mit polynomialer Laufzeit gibt, so dass für jede Eingabe x ∈ Σ∗ gilt: 1 2 falls x ∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) ≥ 21 . falls x 6∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) = 0. Frage: Kann man auch eine höhere Wahrscheinlichkeit als erhalten, wenn das Wort in der Sprache liegt? Antwort: Ja! Man muss die Maschine nur mehrmals (mit jeweils anderen Zufallsbits) laufen lassen. Sei M 0 die Maschine, die M k-mal ausführt und akzeptiert, sobald M einmal akzeptiert. Da die jeweils verwendeten Zufallsbits unabhängig voneinander sind, gilt für x ∈ L: k 1 0 P(M akzeptiert x nicht) ≤ 2 und damit P(M 0 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 136 1 2 k 1 akzeptiert x) ≥ 1 − 2 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 137 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Wir wollen nun mit Wahrscheinlichkeit größer gleich p akzeptieren. Es gilt k 1 1 1 ⇐⇒ ≤ 2k ⇐⇒ k ≥ log2 p ≤1− 2 1−p 1−p 1 = − log2 (1 − p)-mal Dann reicht es, die Maschine M log2 1−p laufen zu lassen. Das ist für eine feste Wahrscheinlichkeit p nur ein konstanter Faktor. Beispiel: wir betrachten ganzzahlige Polynome mit n Variablen, d.h., Polynome über den Variablen x1 , . . . , xn , bei denen alle Koeffizienten ganzzahlig sind. Gegeben sei nun ein solches ganzzahliges Polynom p, dargestellt durch einen arithmetischen Ausdruck. Dieses Polynom ist nicht notwendigerweise in ausmultiplizierter Form, d.h., als Summe von Termen der Form a · x1i1 · · · · · xnin , gegeben! Beispielsweise wird es als Produkt von Summen p(x) = (x1 + x2 ) · (x3 + x4 ) · · · · · (x2n−1 + x2n ) dargestellt. Auf jeden Fall haben wir eine Berechnungsverfahren für p, welches in Polynomzeit ausführbar ist. Der Grad eines Polynoms (in ausmultiplizierter Form) ist die maximale Summe der Exponenten in einem Summanden. Beispielsweise hat p(x1 , x2 ) = 3x13 x22 + x14 + 2x23 + x12 x2 den Grad 5. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 138 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 139 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Wir betrachten folgendes Problem: NON-ZERO-POLY Eingabe: ein Polynom p mit Grad kleiner gleich k Ausgabe: ist p nicht identisch zu Null, d.h., gibt es a1 , . . . , an ∈ Z, so dass p(a1 , . . . , an ) 6= 0 gilt? Bemerkung: Sobald man NON-ZERO-POLY effizient lösen kann, können auch zwei Polynome p, q effizient auf Ungleichheit getestet werden. Dazu überprüft man, ob (p − q) ∈ NON-ZERO-POLY. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 140 Idee zur Berechnung von NON-ZERO-POLY: wähle beliebige ganze Zahlen a1 , . . . , an ∈ Z und setze sie in p ein. Das Polynom wird akzeptiert, falls p(a1 , . . . , an ) 6= 0 gilt. Dieser Test läuft sicherlich in Polynomzeit, aufgrund des gegebenen arithmetischen Ausdrucks bzw. polynomialen Verfahrens. Das Verfahren akzeptiert niemals ein Polynom, das identisch zu Null ist. D.h., die zweite Bedingung in der Definition von RP ist auf jeden Fall erfüllt. Wir müssen uns nun noch überlegen, ob auch die erste Bedingung erfüllt ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 141 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Beweis: die Menge der Elementarereignisse ist Ω = {1, . . . , N}n , wobei alle Elementarereignisse gleich wahrscheinlich sind. Wir führen eine Induktion über n durch. Wahrscheinlichkeit für Nullstellen (Schwartz-Zippel-Lemma) Sei p ein ganzzahliges Polynom mit n Variablen und Grad kleiner gleich k. Sei außerdem p nicht identisch zu Null. Wenn a1 , . . . , an unabhängig und gleichverteilt aus {1, . . . , N} gewählt werden, so gilt: k P(p(a1 , . . . , an ) = 0) ≤ N n = 1: in diesem Fall haben wir Polynom mit nur einer einzigen Variable x1 . Ein solches Polynom kann höchstens k Nullstellen haben und die Wahrscheinlichkeit, eine davon aus der Menge {1, . . . , N} auszuwählen ist kleiner gleich Nk . n−1 → n: In diesem Fall lässt sich p schreiben als p = p0 + p1 · xn + p2 · xn2 + · · · + pt · xnt , wobei die pi die Variable xn nicht enthalten. Außerdem ist pt nicht identisch zum Nullpolynom und hat höchstens Grad k − t. Wir können davon ausgehen, dass t > 0 ist, denn ansonsten hätte p nur Variablen aus {x1 , . . . , xn−1 }. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 142 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 143 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Wir definieren nun folgende Ereignisse: PN = {(a1 , . . . , an ) ∈ Ω | p(a1 , . . . , an ) = 0} PTN = {(a1 , . . . , an ) ∈ Ω | pt (a1 , . . . , an−1 ) = 0} P(PN | PTN) ≤ Nt , denn es wird vorausgesetzt, dass pt (a1 , . . . , an−1 ) 6= 0 gilt. Dies ist der höchste Koeffizient des Polynoms q definiert durch: q(xn ) = p(a1 , . . . , an−1 , xn ) Es gilt: P(PN) = P(PN | PTN) · P(PTN) + P(PN | PTN) · P(PTN) ≤ P(PTN) + P(PN | PTN) Dabei ist PTN = Ω\PTN. Wir schätzen nun noch die beiden Wahrscheinlichkeiten in der Summe ab: k−t N , P(PTN) ≤ denn pt ist ein Polynom vom Grad k − t mit weniger Variablen, so dass die Induktionsvoraussetzung zutrifft. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 144 Dieses Polynom ist nicht identisch mit Null, da der höchste Koeffizient ungleich 0 ist. Die Wahrscheinlichkeit, dass unter dieser Voraussetzung p(a1 , . . . , an ) = 0 gilt, ist die Wahrscheinlichkeit, dass wir eine Nullstelle von q wählen. Und diese Wahrscheinlichkeit ist kleiner gleich Nt , da q Grad t hat. Insgesamt ergibt sich: P(p(a1 , . . . , an ) = 0) ≤ Barbara König k −t t k + = N N N “Form. Asp. der Software-Sicherheit und Kryptographie” 145 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Für das Problem NON-ZERO-POLY gibt es noch keinen bekannten deterministischen Polynomzeitalgorithmus. NON-ZERO-POLY liegt in RP NON-ZERO-POLY ∈ RP Beweis: aufgrund der Vorüberlegungen müssen wir uns nur noch überlegen, dass man die Zahlen a1 , . . . , an so wählen kann, dass p(a1 , . . . , an ) = 0 mit Wahrscheinlichkeit kleiner 12 gilt, falls p nicht identisch Null ist. Nach dem vorherigen Satz müssen wir a1 , . . . , an zufällig aus der Menge {1, . . . , 2k} wählen. Barbara König Falls das Polynom als arithmetischer Ausdruck gegeben ist, dann nützt es auch nichts, den Ausdruck mit Hilfe des Distributivgesetzes auszumultiplizieren und das Polynom als Summe von Termen der Form a · x1i1 · · · · · xnin darzustellen. Diese Darstellung ist im Normalfall exponentiell größer als der ursprüngliche Ausdruck. “Form. Asp. der Software-Sicherheit und Kryptographie” 146 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 147 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Außerdem gilt folgende Beziehung zwischen RP und NP: Es ist relativ leicht, P und RP miteinander zu vergleichen: P vs. RP Es gilt P ⊆ RP. Begründung: jede deterministische Turingmaschine kann auch als probabilistische Turingmaschine aufgefasst werden, die ihren Zufallsbit-Bandinhalt ignoriert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 148 NP vs. RP Es gilt RP ⊆ NP. Beweis: falls L ∈ RP gilt, so gibt es eine probabilistische Turingmaschine, die ein Wort w ∈ L mit Wahrscheinlichkeit größer gleich 12 akzeptiert und ein Wort w 6∈ L nie akzeptiert. Dies kann durch eine nicht-deterministische Turingmaschine simuliert werden, die ihre Zufallsbits selbst rät. Falls w ∈ L, so gibt es eine Folge von Zufallsbits, die zur Akzeptanz von w führt. Falls w 6∈ L, so gibt es eine solche Folge nicht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 149 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Bemerkungen: Wir betrachten noch weitere Komplexitätsklassen: Es macht wenig Sinn in obiger Definition P(M akzeptiert x) ≥ 12 und P(M akzeptiert x) ≤ 12 zu fordern. Dann würde ein einfacher Münzwurf, bei dem mit Wahrscheinlichkeit 12 akzeptiert oder nicht akzeptiert wird, den Anforderungen an die Turingmaschine genügen. Komplexitätsklasse BPP (bounded-error probabilistic polynomial time) Eine Sprache L ⊆ Σ∗ gehört zu der Klasse BPP genau dann, wenn es eine probabilistische Turingmaschine M mit polynomialer Laufzeit gibt, so dass für jede Eingabe x ∈ Σ∗ gilt: 1 2 Wie bei RP kann die Wahrscheinlichkeit für eine falsche Antwort vermindert werden, indem man die Maschine mehrfach laufen lässt. falls x ∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) ≥ 43 . falls x 6∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) ≤ 41 . Barbara König Jedes andere Paar von Zahlen p, q ∈ [0, 1] mit p > q < 12 kann statt 34 und 14 verwendet werden. ( Übungsaufgabe) “Form. Asp. der Software-Sicherheit und Kryptographie” 150 Barbara König 1 2 und “Form. Asp. der Software-Sicherheit und Kryptographie” 151 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Über das Verhältnis von RP und BPP weiß man folgendes, was daraus folgt, dass man die Akzeptanzwahrscheinlichkeit einer RP-Turingmaschine beliebig erhöhen kann. RP vs. BPP Es gilt RP ⊆ BPP. Es ist unbekannt wie sich NP und BPP zueinander verhalten. Bisher ist weder NP ⊆ BPP noch BPP ⊆ NP bekannt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 152 Zuletzt betrachten wir noch folgende Komplexitätsklasse: Komplexitätsklasse ZPP (zero-error probabilistic polynomial time) Eine Sprache L ⊆ Σ∗ gehört zu der Klasse ZPP genau dann, wenn es eine probabilistische Turingmaschine M gibt, so dass der Erwartungswert der Laufzeit polynomial beschränkt ist und für jede Eingabe x ∈ Σ∗ gilt: 1 2 falls x ∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) = 1. falls x 6∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) = 0. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 153 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Was bedeutet “der Erwartungswert der Laufzeit ist polynomial beschränkt”? Erwartungswert Für eine Zufallsvariable X : Ω → R ist der Erwartungswert X X E [X ] = P(ω) · X (ω) = P(X = y ) · y , y ∈Y ω∈Ω wobei Y = {X (ω) | ω ∈ Ω} ⊆ R die Werte sind, die X annehmen kann. Für die Turingmaschinen in der Definition von ZPP heißt das, dass für jedes Wort x gelten muss: die Zufallsvariable tM (x), die die Laufzeit von M in Abhängigkeits der Zufallsbits beschreibt, erfüllt E [tM (x)] ≤ p(|x|), wobei p ein Polynom ist. Barbara König Für Probleme in ZPP gilt also: Es gibt Algorithmen für diese Probleme, die immer die richtige Antwort geben. Aber: es ist unklar, ob diese Algorithmen immer polynomiale Laufzeit haben. Im Mittel, wenn man den Erwartungswert betrachtet, ist die Laufzeit aber polynomial. Intuitiv bedeutet das, dass die Algorithmen nur sehr selten lange Laufzeiten haben. “Form. Asp. der Software-Sicherheit und Kryptographie” 154 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 155 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Bemerkungen: Algorithmen, die arbeiten wie die Turingmaschinen, die ZPP-Probleme entscheiden, nennt man Las-Vegas-Algorithmen: die Laufzeit, aber nicht die Ausgabe des Algorithmus ist randomisiert. Insbesondere ist der Erwartungswert der Laufzeit polynomial beschränkt, die Ausgabe ist unabhängig von den Zufallsbits. Verfahren, bei denen auch die Ausgabe randomisiert ist, nennt man Monte-Carlo-Verfahren. Sie entsprechen den Turingmaschinen für RP- und BPP-Probleme. Hier ist die Laufzeit immer polynomial beschränkt, die Ausgabe ist aber abhängig von den Zufallsbits. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 156 ZPP und RP Ein Problem L liegt in ZPP genau dann, wenn L und sein Komplement in RP liegen. Zum Beweis dieser Aussage benötigen wir die Markow-Ungleichung: Markow-Ungleichung Für eine Zufallsvariable X : Ω → R+ 0 und t ∈ R mit t > 0 gilt: P(X ≥ t) ≤ Barbara König E [X ] t “Form. Asp. der Software-Sicherheit und Kryptographie” 157 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen “⇒”: Wir zeigen nun, dass ZPP ⊆ RP gilt. Damit haben wir die Richtung von links nach rechts gezeigt. Beweis: Zunächst beobachten wir, dass ZPP unter Komplement abgeschlossen ist (einfach Ja- und Nein-Ausgänge der Turingmaschine vertauschen). Sei L ∈ ZPP und sei M eine probabilistische Turingmaschine, die L akzeptiert. Der Erwartungswert der Laufzeit von M ist durch das Polynom p beschränkt. Wir konstruieren eine neue Turingmaschine M 0 , die bei Eingabe von x mit n = |x| folgendes macht: sie simuliert M 2p(n) Schritte lang und akzeptiert nur dann, wenn M bis dahin akzeptiert hat. Es ist klar, dass P(M 0 akzeptiert x) = 0 gilt, falls x 6∈ L. Außerdem gilt, falls x ∈ L: P(M 0 akzeptiert x) = P(M akzeptiert x in höchstens 2p(n) Schritten) ≥ 12 . Denn nach der Markow-Ungleichung überschreitet eine Zufallsvariable das Doppelte ihres Erwartungswertes nur mit Wahrscheinlichkeit kleiner gleich 12 . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 158 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 159 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen “⇐”: Für die Richtung von rechts nach links sei nun L eine Sprache die in RP liegt und deren Komplement auch in RP liegt. D.h., wir haben zwei Turingmaschinen M1 , M2 , so dass M1 Wörter immer korrekt akzeptiert und M2 Wörter immer korrekt zurückweist. Wir nehmen an, dass die Laufzeit beider Maschinen durch das Polynom p beschränkt ist. Wir lassen M1 und M2 immmer wieder solange parallel laufen bis entweder M1 akzeptiert oder M2 das Wort zurückweist. Bei einem Durchlauf ist die Wahrscheinlichkeit für das Eintreten dieses Ereignisses mindestens 12 . D.h., die erwartete Laufzeit ist kleiner gleich: ∞ i ∞ X X 1 1 1 2p(n) = 2p(n) = 2p(n) = 4p(n) 1 2 2i 1 − 2 i=0 i=0 Dabei ist p(n) die Anzahl der Schritte eines Durchlaufs einer Turingmaschine und 2p(n) die Zahl der Schritte für beide Maschinen. Ein Durchlauf für jede Maschine wird mindestens durchgeführt. Die Wahrscheinlichkeit dafür, dass der (i + 1)-te Durchlauf i benötigt wird, ist kleiner gleich 12 (alle vorherigen Durchläufe brachten kein definitives Ergebnis). Die Reihe konvergiert zu 2 und damit haben wir wiederum polynomiale Laufzeit. wobei n die Länge des betrachteten Wortes ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 160 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 161 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Probabilistische Komplexitätsklassen Probabilistische Komplexitätsklassen Analog zu co-NP kann man auch co-RP definieren: Es gelten folgende Beziehungen zwischen probabilistischen Komplexitätsklassen: Komplexitätsklasse co-RP (Definition) P ⊆ ZPP = RP ∩ co-RP ⊆ RP ⊆ BPP Die Komplexitätsklasse co-RP enthält genau die Sprachen, deren Komplement in RP liegt. Damit kann man den obigen Satz auch folgendermaßen notieren: ZPP = RP ∩ co-RP Barbara König RP ⊆ NP Es ist jedoch nichts über das Verhältnis zwischen BPP und NP bekannt. Außerdem gibt es Vermutungen, dass P und ZPP gleich sein könnten, aber auch das ist nicht bewiesen. “Form. Asp. der Software-Sicherheit und Kryptographie” 162 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 163 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Wir zeigen also, dass folgendes Problem in RP liegt: Wir betrachten nun den Miller-Rabin-Primzahltest, ein probabilistisches Verfahren, das einer RP-Turingmaschine entspricht. Primzahltests sind wichtig, um für Verschlüsselungsverfahren – wie beispielsweise RSA – große Primzahlen zu finden. COMPOSITE Eingabe: eine natürliche Zahl n > 1 Ausgabe: ist n zusammengesetzt, d.h., gibt es natürliche Zahlen k, ` > 1 mit n = k · `? Wenn die eingegebene Zahl eine Primzahl ist, dann gibt der Algorithmus dies auch immer aus. Wenn die Zahl zusammengesetzt, d.h., keine Primzahl, ist, dann irrt er sich mit Wahrscheinlichkeit kleiner gleich 12 . Das Komplement von COMPOSITE ist das Problem PRIMES, das auch in RP (und sogar in P) liegt. Allerdings werden wir das hier nicht zeigen. Das bedeutet auch, dass man sich auf den Test verlassen kann, wenn er behauptet, dass eine Zahl zusammengesetzt ist. PRIMES Eingabe: eine natürliche Zahl n > 1 Ausgabe: ist n eine Primzahl? Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 164 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 165 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Die erste Idee, die hinter dem Miller-Rabin-Primzahltest steckt, ist die folgende: Fermat-Zeugen Sei n > 1 eine natürliche Zahl und a ∈ {1, . . . , n − 1}. Falls an−1 mod n 6= 1 gilt, so ist n zusammengesetzt. Man nennt a dann auch einen Fermat-Zeugen dafür, dass n zusammengesetzt ist. Idee: Für ein gegebenes n wähle ein zufälliges a ∈ {1, . . . , n − 1} und teste, ob an−1 mod n 6= 1. Falls ja, gebe “zusammengesetzt” zurück, ansonsten “prim”. Dieser extrem einfach Test funktioniert sogar beinahe. Er schlägt nur für sogenannte Carmichael-Zahlen fehl, das sind zusammengesetzte Zahlen, die sehr wenige Fermat-Zeugen haben. Diese Behauptung folgt unmittelbar aus dem Satz von Euler-Fermat (siehe weiter oben im Abschnitt über RSA). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 166 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 167 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Wenn eine Zahl keine der relative seltenen Carmichael-Zahlen ist, dann gibt es sogar sehr viele Fermat-Zeugen. Carmichael-Zahlen Eine zusammengesetzte Zahl n heißt Carmichael-Zahl, falls alle Fermat-Zeugen dieser Zahl nicht teilerfremd zu n sind. D.h., jedes a ∈ {1, . . . , n − 1} mit ggT (a, n) = 1 erfüllt an−1 mod n = 1. Anzahl der Fermat-Zeugen Sei n eine zusammengesetzte Zahl, die keine Carmichael-Zahl ist. Dann ist die Anzahl der Fermat-Zeugen in {1, . . . , n − 1} größer gleich n2 . Bemerkung: Für alle n gilt: ein Nicht-Fermat-Zeuge a für n ist immer teilerfremd zu n. Beweis: Die kleinste solche Carmichael-Zahl ist 561 = 3 · 11 · 17. Es ist außerdem bekannt, dass jede Carmichael-Zahl ungerade ist. Zur Erinnerung: die Elemente von Z∗n = {a ∈ {1, . . . , n − 1} | ggT (a, n) = 1} bilden eine Gruppe bezüglich der Multiplikation. Wir betrachten nun B = {a ∈ Z∗n | an−1 mod n = 1}. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 168 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 169 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Für Carmichael-Zahlen benötigen wir nun noch ein zusätzliches Kriterium. Man kann leicht zeigen, dass B eine Untergruppe von Z∗n ist (1 ∈ B und B ist abgeschlossen unter Multiplikation und Inversenbildung). B ist eine Untergruppe von Z∗n ist aber nicht gleich Z∗n , denn da n keine Carmichael-Zahl ist, enthält Z∗n mindestens einen Fermat-Zeugen. Nach dem Satz von Lagrange ist die Anzahl der Elemente einer Untergruppe ein Teiler∗der Anzahl der Elemente der gesamten Gruppe. Daher gilt |B| ≤ |Z2n | < n2 . Zn \Z∗n Außerdem sind alle Elemente von Fermat-Zeugen. Daher ist die Zahl der Nicht-Fermat-Zeugen durch n2 beschränkt. Miller-Zeuge Sei n > 1 und sei b ∈ {1, . . . , n − 1} mit b 6= 1 b 6= n − 1 b 2 mod n = 1 Dann ist n eine zusammengesetzte Zahl. Die Zahl b heißt auch Miller-Zeuge für n oder nicht-triviale Quadratwurzel von 1. Beweis: es gilt n | (b 2 − 1) = (b − 1)(b + 1), jedoch n - b − 1 und n - b + 1. Damit kann n keine Primzahl sein, denn wenn eine Primzahl ein Produkt teilt, teilt sie auch einen der Faktoren. Bemerkung: b mod n 6= n − 1 ist äquivalent zu b 6≡ −1 (mod n). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 170 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 171 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Man kann nun folgendes zeigen: Wahrscheinlichkeit für einen Miller-Zeugen Gegeben sei eine Carmichael-Zahl n, insbesondere ist damit n ungerade. Sei außerdem n − 1 = 2k · m mit m ungerade und k ≥ 1. Für ein zufällig gewähltes a ist die Wahrscheinlichkeit, dass sich in i der Menge {a2 ·m mod n | 0 ≤ i < k} ein Miller-Zeuge für n befindet, größer gleich 12 . Der Beweis ist recht technisch, ist jedoch ähnlich zu dem Nachweis, dass eine Zahl n, die keine Carmichael-Zahl ist, mehr als n 2 Fermat-Zeugen hat. Auch hier wird der Satz von Lagrange verwendet. Bei Zahlen, die keine Carmichael-Zahlen sind, ist die Wahrscheinlichkeit, einen Miller-Zeugen zu finden, viel geringer. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 172 Man sucht nun nicht zufällig nach solchen Miller-Zeugen, sondern nutzt folgende Tatsachen aus: Angenommen, n ist ungerade und der Test für den Fermat-Zeugen schlägt fehl, d.h., an−1 mod n = 1. Sei nun n − 1 = 2k · m für k ≥ 1 und m ungerade. Falls am mod n = 1 gilt, dann geben wir auf und geben (evtl. zu Unrecht) aus, dass die Zahl eine Primzahl ist. Ansonsten (am mod n 6= 1) quadrieren wir die Zahl am immer k wieder, bis a2 ·m erreicht ist. Da letztere Zahl kongruent 1 modulo n ist, erreichen wir irgendwann den ersten Index i mit i a2 ·m mod n = 1 (und dies gilt auch für Indizes größer als i). i−1 Falls nun a2 ·m mod n 6= n − 1 gilt, so haben wir einen i−1 Miller-Zeugen b = a2 ·m gefunden ( Zahl ist zusammengesetzt!). Ansonsten geben wir wieder auf und geben “prim” aus. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 173 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Beispiel: Bemerkung: in der Folge i k am mod n, . . . , a2 ·m mod n, . . . , a2 ·m mod n = an−1 mod n können nur folgende Muster auftauchen. 1, 1, . . . , 1 Primzahl? ?, . . . , ?, 1, . . . , 1 zusammengesetzte Zahl! ?, . . . , ?, n − 1, 1, . . . , 1 Primzahl? zusammengesetzte Zahl! ?, . . . , ? bzw. ?, . . . , ?, n − 1 n−1 (kann nur auftreten, falls a mod n 6= 1 und damit a ein Fermat-Zeuge ist) Dabei steht ? für eine Zahl ungleich 1 und ungleich n − 1. Barbara König Sei n = 561. Wir wählen zufällig a = 5 und testen, ob a ein Fermat-Zeuge für n ist: 5560 mod 561 = 1. D.h., 5 ist kein Fermat-Zeuge. Es gilt 560 = 24 · 35. Wir berechnen 535 mod 561 = 23 52·35 mod 561 = 232 mod 561 = 529 2 52 ·35 mod 561 = 5292 mod 561 = 463 3 52 ·35 mod 561 = 4632 mod 561 = 67 4 52 ·35 mod 561 = 672 mod 561 = 1 (Das wurde vorher schon berechnet!) Also ist b = 67 ein Miller-Zeuge und das Verfahren gibt aus, dass 561 zusammengesetzt ist. “Form. Asp. der Software-Sicherheit und Kryptographie” 174 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 175 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Primzahltests Das Verfahren kann effizient so implementiert werden, dass zunächst am mod n berechnet wird und dann sukzessive Quadrate genommen werden. Miller-Rabin-Primzahltest Eingabe: eine ungerade natürliche Zahl n ≥ 3 Wähle zufällig ein a ∈ {1, . . . , n − 1} falls ggT (a, n) 6= 1, gebe “zusammengesetzt” aus sei n − 1 = 2k · m mit m ungerade falls am mod n = 1, gebe “prim” aus for i = 0 to k − 1 do i falls a2 ·m mod n = n − 1, dann gebe “prim” aus end gebe “zusammengesetzt” aus Gerade natürliche Zahlen müssen separat getestet werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 176 Zusammenfassung (Miller-Rabin-Primzahltest): Es gibt ein Verfahren, das bei Eingabe einer natürlichen Zahl n “prim” oder “zusammengesetzt” ausgibt, wobei mit einer Wahrscheinlichkeit größer gleich 12 “zusammengesetzt” ausgegeben wird, wenn n zusammengesetzt ist. immer “prim” ausgegeben wird, wenn n eine Primzahl ist. Das Verfahren hat außerdem polynomiale Laufzeit. Daher folgt COMPOSITE ∈ RP. Man kann auch PRIMES ∈ RP nachweisen, daher gilt COMPOSITE ∈ RP ∩ co-RP = ZPP und auch PRIMES ∈ ZPP. Inzwischen wurde sogar gezeigt, dass PRIMES ∈ P gilt (Agrawal, Kayal, Saxena). Dennoch wird der probabilistische Test noch bevorzugt, da er wesentlich effizienter ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 177 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Primzahltests Einwegfunktionen Weitere Bemerkungen: Ein wichtiges Konzept in der Komplexitätstheorie sind sogenannte Zeugen oder Zertifikate, die garantieren, dass ein Wort x in einer Sprache L liegt. Für probabilistische Komplexitätsklassen ist die Situation wie folgt: Gibt es für jedes Wort x ausreichend viele Zeugen für x ∈ L und x 6∈ L, so liegt L in ZPP. Gibt es für jedes Wort x ausreichend viele Zeugen für x ∈ L, so liegt L in RP. Wir betrachten nun sogenannte Einwegfunktionen, das sind intuitiv Funktionen, die leicht zu berechnen sind – sie liegen in FP – und deren Umkehrung fast immer schwer zu berechnen ist. Zusätzlich fordert man im Allgemeinen auch noch, dass die Umkehrung sogar dann schwer zu berechnen ist, wenn man ein probabilistisches Verfahren verwendet. Gibt es keine Zeugen, aber erhält hat man trotzdem ausreichend hohe Wahrscheinlichkeiten dafür, dass x ∈ L bzw. x 6∈ L gilt, so liegt L in BPP. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 178 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 179 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Wir betrachten im Folgenden nur ehrliche Funktionen. Das sind Funktionen, die ihre Eingabe nicht zu stark verkürzen. Denn wenn die Größe des Urbildes nicht polynomial in der Größe des Bildes ist, dann kann das Urbild sowieso nicht in polynomialer Zeit gefunden werden. Damit gäbe es triviale Einwegfunktionen, an denen wir aber nicht interessiert sind. Ehrliche Funktionen Eine Funktion f : Σ∗ → Γ∗ heißt ehrlich, falls es ein Polynom q gibt, so dass für alle x ∈ Σ∗ gilt: |x| ≤ q(|f (x)|) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 180 Außerdem benötigen wir – um ausdrücken zu können, dass die Wahrscheinlichkeit ein Kryptosystem zu entschlüsseln vernachlässigbar gering ist – den Begriff einer vernachlässigbaren Funktion. Vernachlässigbare Funktion Eine Funktion r : N0 → R+ 0 heißt vernachlässigbar, wenn es für jedes Polynom p (mit p : N0 → N0 ) eine Zahl C ∈ N0 gibt mit r (n) < 1 p(n) für n > C . Anschaulich: wenn der Funktionswert n groß genug ist, dann fällt r schneller als jedes Polynom. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 181 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Wir betrachten den dritten Punkt der Definition noch etwas genauer: Einwegfunktion Eine Funktion f : {0, 1}∗ → {0, 1}∗ heißt Einwegfunktion, falls f liegt in FP, f ist ehrlich und für jede probabilistische polynomzeitbeschränkte Turingmaschine M ist die Wahrscheinlichkeit vernachlässigbar, dass M ein korrektes Urbild für f (x) berechnet, falls x zufällig aus der Menge {0, 1}n gewählt wird. Barbara König Notation: M(y ) sei eine Zufallsvariable, die die Ausgabe der probabilistischen Turingmaschine M bei Terminierung angibt, wenn die Turingmaschine mit Eingabe y gestartet wurde. f (M(f (x))) = f (x) bedeutet, dass die Turingmaschine M korrekt ein Urbild von f (x) berechnet hat. Da f nicht bijektiv sein muss, können wir nicht erwarten, dass dieses Urbild auch gleich x sein muss. “Form. Asp. der Software-Sicherheit und Kryptographie” 182 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 183 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Welche Wahrscheinlichkeit genau ist vernachlässigbar? Elementarereignisse: die Elementarereignisse stammen aus der 0 Menge Ω = {0, 1}n × {0, 1}q(q (n)) , wobei q das Polynom ist, das die Laufzeit von M beschränkt und q 0 das Polynom ist, das die Laufzeit der Maschine beschränkt, die f berechnet. D.h., ein Elementarereignis ist ein Paar bestehend aus einem Wort x ∈ {0, 1}n und einem Zufallsbit-String b̃. Alle Elementarereignisse sind gleich wahrscheinlich. n: Wir betrachten nun folgende Zufallsvariable XM 1 falls M bei Eingabe f (x) und mit Zufallsbits b̃ n XM (x, b̃) = ein Urbild von f (x) bestimmt 0 sonst Warum fordert man nicht sogar, dass P(f (M(f (x))) = f (x)) für jedes x ∈ {0, 1}n vernachlässigbar ist? Die Elementarereignisse würden in diesem Fall nur aus den Zufallsbit-Strings bestehen. Solche Einwegfunktionen kann es gar nicht geben! Man kann nie verhindern, dass der Entschlüsselungsalgorithmus auf bestimmten verschlüsselten Nachrichten korrekt funktioniert. Beispielsweise könnte die Turingmaschine immer eine feste Nachricht ausgeben. n = 1) = Beschränkt wird also die Wahrscheinlichkeit r (n) = P(XM P(f (M(f (x))) = f (x)), wobei n die Länge von x ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 184 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 185 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Faktorisierung Faktorisierung Wir betrachten nun einige mögliche Kandidaten für Einwegfunktionen, zunächst die Funktion pmult: Primzahlmultiplikation pmult pmult(p, q) = p · q, wobei p, q beide k-Bit Primzahlen sind. Die Funktion pmult liegt in FP. Die Umkehrfunktion müsste die Faktorisierung eines Produkts von Primzahlen bestimmen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 186 Als Entscheidungsproblem kann man das Faktorisierungsproblem folgendermaßen darstellen: Faktorisierung Eingabe: Zwei Zahlen n, r ∈ N0 , wobei n das Produkt von zwei k-Bit Primzahlen ist. Ausgabe: Besitzt n einen Faktor p 6= 1, der kleiner als r ist? Eine andere Variante des Entscheidungsproblems fragt, ob das i-te Bit des kleineren Faktors gleich 1 ist. Beide Probleme liegen in NP, es ist jedoch nicht bekannt, ob sie NP-vollständig sind. Auch aus dem Beweis der NP-Vollständigkeit und aus P 6= NP kann man nicht notwendigerweise schließen, dass pmult eine Einwegfunktion ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 187 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Faktorisierung Diskreter Logarithmus Um den diskreten Logarithmus definieren zu können, benötigen wir zunächst einige Begriffe: Auch wenn nicht klar ist, ob pmult wirklich eine Einwegfunktion ist, so ist dies durch den RSA Factoring Challenge zumindest “empirisch” überprüft worden: Primitivwurzel modulo m Eine Zahl g ∈ {0, . . . , m − 1} heißt Primitivwurzel modulo m, falls g ein Generator der multiplikativen Gruppe http://en.wikipedia.org/wiki/RSA Factoring Challenge Z∗m = {a ∈ {1, . . . , m − 1} | ggT (a, m) = 1} Es gibt darin immer noch zahlreiche Produkte von Primzahlen, die bisher noch nicht faktorisiert wurden. ist. D.h., es muss gelten: {g k mod m | k ∈ N0 } = Z∗m Bemerkung: Es gilt |Z∗m | = ϕ(m). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 188 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 189 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Diskreter Logarithmus Diskreter Logarithmus Wir betrachten die Funktion dexp: Bemerkungen: Nicht für alle m ∈ N0 gibt es Primitivwurzeln. Es gibt jedoch auf jeden Fall Primitivwurzeln, falls m eine Primzahl ist. Nicht jedes Element von Z∗p ungleich 1 ist eine Primitivwurzel, auch wenn p eine Primzahl ist. Beispielsweise gilt für p = 7: 20 mod 7 = 1, 21 mod 7 = 2, 22 mod 7 = 4, 23 mod 7 = 1 2 ist keine Primitivwurzel modulo 7 0 3 mod 7 = 1, 31 mod 7 = 3, 32 mod 7 = 2, 33 mod 7 = 6, 34 mod 7 = 4, 35 mod 7 = 5, 36 mod 7 = 1 3 ist eine Primitivwurzel modulo 7 Barbara König Diskrete Exponentialfunktion Gegeben seien eine Primzahl p, eine Primitivwurzel g modulo p und x ∈ Z∗p = {1, . . . , p − 1}. Wir definieren dexp(p, g , x) = (p, g , g x mod p) Die Funktion dexp liegt in FP. Die Umkehrfunktion, die aus g x mod p (und p und g ) den eindeutig bestimmten Exponenten x berechnet heißt diskreter Logarithmus und gilt als schwer zu berechnen. Auch für den diskreten Logarithmus existiert ebenfalls ein dazugehöriges Entscheidungsproblem. “Form. Asp. der Software-Sicherheit und Kryptographie” 190 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 191 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Mit Hilfe von Einwegfunktionen könnte man symmetrische Verschlüsselung realisieren. Dazu müssten Einwegfunktionen jedoch existieren. Existieren Einwegfunktionen? das weiß man nicht genau. Man weiß nur, dass folgendes aus der Existenz von Einwegfunktionen folgen würde: P 6= NP und NP 6⊆ BPP es gibt (sichere) symmetrische Verschlüsselungsverfahren, die mit kurzen Schlüsseln arbeiten (anders als der One-Time-Pad) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 192 Falls Einwegfunktionen existieren, dann gilt P 6= NP. Außerdem gilt dann NP 6⊆ BPP, d.h., es gibt eine Sprache in NP\BPP. Beweis: sei f : {0, 1}∗ → {0, 1}∗ eine Einwegfunktion und sei Lf = {(x, y ) | ∃u ∈ {0, 1}∗ : f (xu) = y }. Lf liegt in NP, denn u kann geraten und in Polynomzeit überprüft werden. Falls P = NP gilt, so wäre Lf in Polynomzeit entscheidbar, und man kann Lf dazu benutzen, um in Polynomzeit ein Urbild für einen gegebenen Funktionswert f (x) zu bestimmen. (Siehe Argumentation für die sehr ähnliche Sprache LE weiter oben.) Das ist ein Widerspruch dazu, dass f eine Einwegfunktion ist. Außerdem kann Lf nicht in BPP liegen, denn dann gäbe es eine probabilistische Turingmaschine, die mit ausreichend hoher Wahrscheinlichkeit Urbilder finden würde. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 193 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Eine beliebige Einwegfunktion – wenn sie existieren sollte – kann man nicht direkt für symmetrische Verschlüsselung verwenden. Der Grund dafür ist, dass es auch eine dazugehörige Entschlüsselungsfunktion geben muss, die leicht zu berechnen ist. Bemerkung: Es ist nicht bekannt, ob die umgekehrten Folgerungen gelten: d.h., man weiß nicht, ob aus P 6= NP oder NP 6⊆ BPP die Existenz einer Einwegfunktion folgt. (Das liegt daran, dass eine Einwegfunktion nicht nur im worst-case schwer zu invertieren sein sollte.) Barbara König Aber: die Existenz von Einwegfunktionen garantiert die Existenz von Pseudo-Zufallsgeneratoren. Pseudo-Zufallsgenerator (informell) Ein Pseudo-Zufallsgenerator ist ein deterministisches Verfahren, das aus einem gegebenem Startwert eine Sequenz von Bits erzeugt, die von einer probabilistischen polynomzeit-beschränkten Turingmaschine nicht von einer zufällig erzeugten Bit-Sequenz unterschieden werden kann. “Form. Asp. der Software-Sicherheit und Kryptographie” 194 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 195 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Falltürfunktionen Für asymmetrische Verschlüsselung müssen wir noch mehr fordern: spezielle Einwegfunktionen, sogenannte Falltürfunktionen. Anwendungen für Pseudo-Zufallsgeneratoren: Nach Austausch eines symmetrischen Schlüssels kann dieser als Startwert für einen Pseudo-Zufallsgenerator verwendet werden. Damit kann der One-Time-Pad simuliert werden und sichere symmetrische Verschlüsselung erreicht werden. Generierung von Nonces. Generierung von Zufallszahlen für randomisierte Verfahren, Derandomisierung von randomisierten Verfahren. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 196 Falltürfunktion (informell) Die Verschlüsselungsfunktion E eines asymmetrischen Kryptosystems heißt Falltürfunktion, wenn E in Polynomzeit berechenbar ist, wenn der öffentliche Schlüssel bekannt ist, die Entschlüsselungsfunktion D in Polynomzeit berechenbar ist, wenn der private Schlüssel bekannt ist und die Wahrscheinlichkeit (für eine probabilistische polynomzeitbeschränkte Turingmaschine), für zufällig gewählte Nachrichten und Schlüssel, E nur unter Kenntnis des öffentlichen Schlüssels zu invertieren, vernachlässigbar ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 197 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Falltürfunktionen Falltürfunktionen Das heißt, es gibt eine “geheime Falltür” (den privaten Schlüssel), mit Hilfe derer die Verschlüsselungsfunktion doch einfach zu invertieren ist. Man vermutet, dass das RSA-Kryptosystem eine Falltürfunktion darstellt. Dies ist jedoch nicht bewiesen, denn die Existenz einer Falltürfunktion würde auch die Existenz von Einwegfunktionen garantieren. Außerdem ist unklar, ob daraus, dass die Primzahlmultiplikation eine Einwegfunktion ist, folgt, dass die RSA-Funktion eine Falltürfunktion ist. Barbara König Immerhin weiß man aber folgendes über die Sicherheit von RSA: Faktorisierungsalgorithmus durch Kenntnis der RSA-Schlüssel Falls die RSA-Schlüssel (e, n) und (d, n) bekannt sind, gibt es einen probabilistischen Polynomzeit-Algorithmus, der n in die Faktoren p, q aufspaltet. D.h., man kann zeigen, dass das Finden des privaten Schlüssels gleichbedeutend mit der Faktorisierung von n ist. Das bedeutet nicht, dass das Brechen des Kryptosystems gleichbedeutend mit der Faktorisierung ist. “Form. Asp. der Software-Sicherheit und Kryptographie” 198 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 199 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Falltürfunktionen Falltürfunktionen Beweis (Skizze): wir betrachten n, e, d, wobei n = p · q das Produkt zweier Primzahlen ist. Außerdem sind e, d modulo ϕ(n) = (p − 1) · (q − 1) zueinander invers. Das Produkt e · d ist ungerade, denn es gilt e · d ≡ 1 (mod ϕ(n)) und ϕ(n) ist eine gerade Zahl. Sei nun e · d − 1 = 2k · m mit m ungerade. Man wählt zufällig ein a ∈ {1, . . . , n − 1}. Falls ggT (a, n) 6= 1, dann haben wir mit ggT (a, n) einen Teiler von n gefunden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 200 Falls ggT (a, n) = 1, dann gilt aed−1 ≡ az·ϕ(n) ≡ 1 (mod n). Das Verfahren zur Faktorisierung von n beruht nun auf der Tatsache, dass für ein zufällig gewähltes solches a die Wahrscheinlichkeit, in der Menge i {a2 ·m | 0 ≤ i < k} einen Miller-Zeugen für n zu finden, größer gleich 21 ist (ohne Beweis). Angenommen, b wäre ein solcher Miller-Zeuge, d.h., n | (b 2 − 1), aber n - (b − 1) und n - (b + 1). D.h., es gilt p | (b − 1) und q | (b + 1) (oder umgekehrt). Man bestimmt nun p = ggT (b − 1, n) und q = pn . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 201 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Die fünf Welten von Impagliazzo Die fünf Welten von Impagliazzo Algorithmica Es ist unbekannt, ob Einweg- und Falltürfunktionen existieren. Diese Frage hängt mit der Frage nach P 6= NP zusammen, ist aber nicht gleichbedeutend. In seinem Artikel “A Personal View of Average-Case Complexity” hat Russell Impagliazzo die möglichen Antworten auf diese Fragen zusammengestellt und fünf daraus resultierende mögliche Welten beschrieben. Er geht dabei davon aus, dass – wenn ein Problem in P liegt – der dazugehörige Polynomzeitalgorithmus bekannt und praktikabel ist. In Algorithmica gilt P = NP (oder zumindest NP ⊆ BPP, was im wesentlichen dieselben Auswirkungen hat). Fast alle Optimierungsprobleme wären einfach. Programme müssten nur noch die Eigenschaften der Ausgabe beschreiben, das Berechnungsverfahren kann automatisch generiert werden. Es gibt keine Einweg- oder Falltürfunktionen. Alle Kryptosysteme, die mit beschränkten Schlüssellängen arbeiten, sind einfach zu brechen. Es gibt keine Authentifizierungsverfahren. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 202 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 203 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Die fünf Welten von Impagliazzo Die fünf Welten von Impagliazzo Heuristica Heuristica ist die Welt, in der NP-Probleme im worst-case schwierig zu lösen sind, aber fast alle zufällig gewählten Instanzen einfach sind. Insbesondere können schwere Instanzen nur mit großem Aufwand gefunden werden. Da schwere Probleme sehr selten sind, können in der Praxis fast alle Aufgabenstellungen (aus NP) effizient gelöst werden. Auch in Heuristica ist Kryptographie im wesentlichen nicht möglich, da schwere Instanzen – d.h., schwer zu entschlüsselnde Nachrichten – nicht verläßlich produziert werden können. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 204 Pessiland Pessiland ist – nach Impagliazzo – die schlimmste aller Welten. Es ist einfach, schwere Instanzen von NP-Problemen zu finden, aber es ist nicht möglich, verläßlich schwere und gelöste Instanzen zu erzeugen. Es gibt wenige Vorteile für das Lösen von Problemen. Es gibt keine Einwegfunktionen, denn Einwegfunktionen sind gerade ein Verfahren, um effizient schwere und gelöste Instanzen (das Bild der zu versendenden Nachricht unter der Einwegfunktion) zu generieren. Ebensowenig ist Authentifizierung möglich. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 205 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Die fünf Welten von Impagliazzo Die fünf Welten von Impagliazzo Minicrypt In Minicrypt kann man schwere und gelöste Instanzen von NP-Problemen generieren, d.h., es existieren Einwegfunktionen. Aber es gibt keine Falltürfunktionen. Es gibt wenige positive algorithmische Aspekte. Man kann jedoch aus Einwegfunktionen Pseudo-Zufallsgeneratoren erzeugen und damit probabilistische Algorithmen derandomisieren. Symmetrische Verschlüsselung und Authentifizierung sind möglich. Asymmetrische Verschlüsselungsverfahren sind nicht möglich. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 206 Cryptomania In Cryptomania existieren zusätzlich noch Falltürfunktionen. Es gibt immer noch Einwegfunktionen, Pseudo-Zufallsgeneratoren, etc. und auch hier sind symmetrische Verschlüsselung und Authentifizierung möglich. Zusätzlich sind auch asymmetrische Verschlüsselung und zahlreiche andere kryptographische Protokolle (Austausch von geheimen Schlüsseln, digitale Signaturen, elektronische Wahlen, elektronische Bezahlverfahren, etc.) möglich. Cryptomania entspricht von den praktischen Auswirkungen her am ehesten unserer heutigen Welt. Es ist aber nicht klar, ob wir wirklich in Cryptomania leben! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 207