Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Das heutige Programm: Vorlesung “Formale Aspekte der Software-Sicherheit und Kryptographie” Sommersemester 2015 Universität Duisburg-Essen Organisatorisches Vorstellung Ablauf der Vorlesung und der Übungen Einordnung & Prüfung Literatur & Folien Einführung und Motivation: “Formale Aspekte der Software-Sicherheit und Kryptographie” Prof. Barbara König Übungsleitung: Sebastian Küpper Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” Inhalt der Vorlesung 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Vorstellung Vorlesungstermine 2 Dozentin: Prof. Barbara König Raum LF 264 Termine: E-Mail: barbara [email protected] Sprechstunde nach Vereinbarung Montag, 10:15-11:45, Raum LE 120 Donnerstag, 12:15-13:45, Raum LE 120 Übungsleitung: Die Übung findet an dem Termin Mo, 10-12, in (normalerweise) zweiwöchigem Rhythmus im Wechsel mit der Vorlesung statt. Die erste Übung findet am 20.4. statt. Sebastian Küpper, M.Sc. Raum LF 261 E-Mail: [email protected] Web-Seite: http://www.ti.inf.uni-due.de/teaching/ss2015/ssk/ Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 3 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 4 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Übung und Hausaufgaben Einordnung Das Übungsblatt wird spätestens am Montag in der Vorwoche der Übung auf der Webseite bereitgestellt. Verteilt über das Semester gibt es drei Testat-Blätter. Die Lösungen zu den Testatblättern werden in der darauffolgenden Woche direkt in der Übung abgegeben. Die anderen Blätter werden nicht korrigiert, aber natürlich in der Übung besprochen. Es gibt eine Bonusregelung: der Bonus (eine Notenstufe besser in der Prüfung, z.B. 1,7 statt 2,0) wird erzielt, wenn 50 % der Testat-Punkte erzielt, alle Testat-Blätter bearbeitet wurden und mindestens einmal eine Aufgabe an der Tafel vorgerechnet wurde. Gruppenabgabe ist nicht erlaubt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” Diese Vorlesung ist folgendermaßen eingeordnet . . . MAI Informatik für den Anwendungsbereich Katalog “Verteilte, Verlässliche Systeme” Stundenzahl: 4 SWS (3V + 1Ü), 6 Credits 5 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einordnung Prüfung 6 Voraussetzungen Für diese Veranstaltung sollten Sie vorher möglichst die folgenden Vorlesungen gehört haben: Berechenbarkeit und Komplexität http://www.ti.inf.uni-due.de/teaching/ws201415/beko/ Diese Vorlesung wird mündlich geprüft. Der Prüfungstermin ist voraussichtlich der 24./25. August. Wahrscheinlichkeitstheorie und Stochastik Logik http://www.ti.inf.uni-due.de/teaching/ws201415/logik/ . . . oder äquivalente Veranstaltungen. Das wird keine Komplexitätstheorie-Veranstaltung, aber wir benötigen einige Grundlagen aus der Komplexitätstheorie. Gleiches gilt für die Wahrscheinlichkeitstheorie und Logik. Die Grundlagen werden auch noch einmal kurz wiederholt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 7 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 8 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Literatur Literatur William Stallings: Cryptography and Network Security: Principles and Practice. Prentice-Hall, 2003. John Talbot, Dominic Welsh: Complexity and Cryptography – An Introduction. Cambridge, 2006. Martı́n Abadi: Security Protocols: Principles and Calculi – Tutorial Notes. FOSAD 2006/07 Tutorial Lectures, Springer, 2007, p. 1-23. Christos H. Papadimitriou: Computational Complexity. Addison Wesley, 1994. Oded Goldreich: Foundations of Cryptography (Basic Tools). Cambridge University Press, 2001. http://users.soe.ucsc.edu/~abadi/Papers/fosad-protocols.pdf Martı́n Abadi: Security Protocols and their Properties. 20th International Summer School on Foundations of Secure Computation, IOS Press, 2000, p. 39-60. Oded Goldreich: Foundations of Cryptography (Basic Applications). Cambridge University Press, 2004. http://users.soe.ucsc.edu/~abadi/Papers/nato.ps Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 9 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 10 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Literatur Folien Bruno Blanchet: Using Horn Clauses for Analyzing Security Protocols. Formal Models and Techniques for Analyzing Security Protocols. IOS Press, 2010. http://prosecco.gforge.inria.fr/personal/bblanche/publications/ BlanchetBook09.html Martı́n Abadi and Bruno Blanchet: Analyzing Security Protocols with Secrecy Types and Logic Programs. Journal of the ACM, 52(1):102-146, 2005. Folien werden im Web bereitgestellt und regelmäßig aktualisiert. Die Folien werden sehr ähnlich zu den Folien aus dem Sommersemester 2013 sein (erhältlich über http://www.ti.inf.uni-due.de/teaching/ss2013/ssk/). http://prosecco.gforge.inria.fr/personal/bblanche/publications/ AbadiBlanchetPOPL02.html Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 11 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 12 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Inhalt der Vorlesung Inhalt der Vorlesung Kryptographie ist . . . die Wissenschaft von der Verschlüsselung von Informationen. Inhalt Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographie ist inzwischen für sicheren Nachrichtenaustausch (Online-Bezahlungssysteme, Online-Banking, etc.) unverzichtbar geworden. Ein Teil der Informatik ist der Entwurf von sicheren Verschlüsselungssystemen und die Analyse existierender Verschlüsselungssysteme. Dabei möchte man möglichst weitreichende Garantien über deren Sicherheit erhalten. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 13 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 14 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Inhalt der Vorlesung Motivation: Entschlüsselung Kryptographische Protokolle . . . sind Protokolle, die Nachrichten nach bestimmten – vorher festgelegten Regeln – austauschen und dabei kryptographische Verfahren verwenden (hauptsächlich zum Verschlüsseln, aber auch zum Signieren von Nachrichten). Solche Protokolle sind sehr fehleranfällig. Beispielsweise sind zahlreiche falsche Authentifizierungsprotokolle im Umlauf. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 15 Wir beginnen mit einigen motivierenden Beispielen. Als erstes entschlüsseln wir einen Text, von dem wir wissen, dass er durch Permutation von Buchstaben verschlüsselt wurde. Ein solches Verfahren nennt man auch monoalphabetische Verschlüsselung. Monoalphabetische Verschlüsselung Sei A die Menge aller 26 Buchstaben des Alphabets und sei π : A → A eine beliebige bijektive Abbildung. Dann wird ein Wort m0 . . . mn ∈ A∗ dadurch verschlüsselt, dass jeder Buchstabe mi durch π(mi ) ersetzt wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 16 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Entschlüsselung Motivation: Entschlüsselung Wir haben nun einen (längeren) Text abgefangen, der auf diese Weise entschlüsselt wurde, die Permutation π (= der Schlüssel) ist jedoch nicht bekannt. Wie kann dieser Text entschlüsselt werden? DPGASUPF UPQ ZQRTGSIQXTAOP ZQRTGSIQXTAOEYAP JPQLXAQPF KPQUPF HFGPQGPOVG OF UOP ZVXEEOEYAPF HFU DSUPQFPF JPQLXAQPF. UOPEP POFGPOVHFI ZSQQPETSFUOPQG OD KPEPFGVOYAPF DOG UPQ HFGPQGPOVHFI OF ERDDPGQOEYAP HFU XERDDPGQOEYAP JPQLXAQPF. Wieviele mögliche Schlüssel gibt es? Kann man alle diese Schlüssel durchprobieren? Gibt es eine andere Methode, den Text zu entschlüsseln? DPGASUPF UPQ ZVXEEOEYAPF ZQRTGSIQXTAOP: ESVXFIP LHPQ UOP ZQRTGSIQXTAOP FSYA ZPOFP PVPZGQSFOEYAPF QPYAFPQ POFIPEPGNG KHQUPF, PQEPGNGP DXF CPO UPQ JPQEYAVHPEEPVHFI (NH UOPEPQ NPOG UOP POFNOIP XFKPFUHFI UPQ ZQRTGSIQXTAOP) ODDPQ JSVVEGXPFUOIP CHYAEGXCPF SUPQ CHYAEGXCPFIQHTTPF. ESVYAP JPQLXAQPF EOFU APHGP JPQXVGPG HFU HFEOYAPQ. [...] Vollständiger Text unter www.ti.inf.uni-due.de/fileadmin/public/teaching/ssk/misc/krypto-1.txt Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 17 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 18 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Entschlüsselung Motivation: Entschlüsselung Ein durch monoalphabetische Verschlüsselung kodierter Text kann im Allgemeinen einfach durch Häufigkeitsanalyse von Buchstaben und Suche nach bekannten Wörtern Eine solche Entschlüsselung ist sehr schön in der Kurzgeschichte “The Gold Bug” (dt. “Der Goldkäfer”) von Edgar Allan Poe beschrieben. In Englisch unter: entschlüsselt werden. Dabei wird insbesondere ausgenutzt, dass “e” der bei weitem häufigste Buchstabe im Deutschen ist, dass dreibuchstabige Wörter mit einem “e” in der Mitte im Allgemeinen Artikel sind (der, den, dem, . . . ), usw. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 19 http://etext.lib.virginia.edu/toc/modeng/public/PoeGold.html In Deutsch unter: http://gutenberg.spiegel.de/buch/der-goldkafer-2271/1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 20 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Entschlüsselung Motivation: Entschlüsselung Bemerkungen: Häufigkeit der Buchstaben im Deutschen: Platz 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Buchstabe Häufigkeit E N I S R A T D H U L C G M 17,40 09,78 07,55 07,27 07,00 06,51 06,15 05,08 04,76 04,35 03,44 03,06 03,01 02,53 % % % % % % % % % % % % % % Platz 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Barbara König Buchstabe Häufigkeit O B W F K Z P V ß J Y X Q 02,51 01,89 01,89 01,66 01,21 01,13 00,79 00,67 00,31 00,27 00,04 00,03 00,02 % % % % % % % % % % % % % “Form. Asp. der Software-Sicherheit und Kryptographie” 21 Ein gutes Verschlüsselungsverfahren muss nicht nur sicherstellen, dass es Fälle gibt, in denen ein Text nicht entschlüsselt werden kann. Es muss darüber hinaus garantieren, dass das Entschlüsseln eines Textes immer schwer ist und dass es auch nicht möglich ist, den Ursprungstext mit einer bestimmten Wahrscheinlichkeit zu ermitteln. Dem Entschlüssler stehen randomisierte Verfahren zur Verfügung, die Wahrscheinlichkeitsverteilungen ausnutzen können. Ein Kryptosystem muss solchen Angriffen standhalten! Um die Sicherheit eines Kryptosystems zu analysieren, benötigt man Wahrscheinlichkeitsrechnung. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 22 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Schlüsselaustausch Motivation: Schlüsselaustausch Eine weitere Fallstudie: Schlüsselaustausch Angenommen, wir haben ein hinreichend sicheres Kryptosystem. Zwei Partner können sicher miteinander kommunizieren, wenn sie einen gemeinsamen geheimen Schlüssel vereinbart haben. Antwort: es müssen n2 = n(n−1) Schlüssel ausgetauscht werden! 2 Das ist ein großer Verwaltungsaufwand, selbst wenn man eine zentrale Stelle zur Schlüsselverteilung hat. Wir betrachten nun ein offenes System mit n Teilnehmern: Wieviele Schlüssel müssen ausgetauscht werden, damit jeder mit jedem sicher kommunizieren kann? Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 23 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 24 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Schlüsselaustausch Motivation: Schlüsselaustausch Lösung des Schlüsselaustausch-Problems: Man verwendet sogenannte asymmetrische Verschlüsselungsverfahren. Dabei gibt es Schlüsselpaare bestehend aus einem öffentlichen Schlüssel, der nur zur Verschlüsselung, jedoch nicht zur Entschlüsselung verwendet werden kann und einem privaten Schlüssel, der zum Entschlüsseln dient. Jeder Teilnehmer erzeugt sein eigenes Schlüsselpaar und gibt nur den öffentlichen Schlüssel bekannt. Demnach werden nur n Schlüsselpaare benötigt. Außerdem können die öffentlichen Schlüssel ohne Bedenken über das Netz verschickt werden, ohne dass die Kommunikationspartner sich persönlich treffen müssen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 25 Analogie: Die Geheimnisse werden in Kisten verschickt, die mit einem Schloss verschlossen werden können. Jeder Partner hat seinen eigenen (privaten) Schlüssel und eine unbegrenzte Anzahl dazu passender Schlösser. Die Schlösser entsprechen den öffentlichen Schlüsseln. Die Schlösser können beliebig an die Kommunikationspartner verteilt werden und dienen dazu, die Kisten vor dem Versenden zu verschließen. Das ist System ist sicher, wenn man durch den Besitz eines Schlosses nicht herausfinden kann, wie der dazugehörige Schlüssel aussieht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 26 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Schlüsselaustausch Motivation: Authentifizierungs-Protokolle Verschlüsselungsverfahren, die auf dem Prinzip von privaten und öffentlichen Schlüsseln beruhen, nennt man asymmetrisch. Bei klassischen symmetrischen Verfahren teilen sich jeweils zwei Partner einen Schlüssel. In der Analogie bedeutet das, dass die beiden Kommunikationspartner jeweils eine Kopie desselben Schlüssels haben. Die Kopien müssen jedoch zunächst ausgetauscht werden! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 27 Eine wichtiges (Teil-)Problem bei Protokollen ist es, einen Nachweis zu führen, dass der entsprechende Kommunikationspartner auch derjenige ist, für den er sich ausgibt. Die Führung dieses Nachweises nennt man Authentifizierung. Szenario: es gibt zwei Kommunikationspartner Alice und Bob. Außerdem gibt es den bösartigen Eindringling Eve, die alle Nachrichten abfangen kann und neue Nachrichten produzieren kann. Sie kann jedoch keine Nachrichten entschlüsseln, wenn sie den passenden Schlüssel nicht besitzt. Eve möchte sich Alice gegenüber als Bob ausgeben (und sie dazu überreden, ihr 1.000 EUR zu überweisen . . . ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 28 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle Angenommen, die Parteien benutzen eine Variante des Needham-Schroeder-Protokolls. Dabei wird symmetrische Verschlüsselung eingesetzt und der Schlüsselaustausch findet über einen Server statt. (Es gibt auch eine asymmetrische Variante.) Das Protokoll benutzt sogenannte Nonces: Nonce (number used once) Zufällige Zahlen oder Bit-Kombinationen, die nur einmal verwendet werden und die garantieren sollen, dass eine Nachricht frisch und neu erzeugt ist. Sie sollen verhindern, dass eine alte Nachricht als Replay geschickt wird. Barbara König Konventionen: Ein symmetrischer Schlüssel der Form KAB wird für die Verschlüsselung von Nachrichten zwischen A und B verwendet. Mit {M}K bezeichnen wir eine Nachricht M, die mit dem Schlüssel K verschlüsselt ist. Nur derjenige, der K besitzt, kann die Nachricht M lesen. “Form. Asp. der Software-Sicherheit und Kryptographie” 29 “Form. Asp. der Software-Sicherheit und Kryptographie” 30 Barbara König Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle Graphische Darstellung: Needham-Schroeder-Protokoll (fehlerhaft) 1 2 3 4 5 A → S: A, B, NA A → B: {KAB , A}KBS S → A: {NA , KAB , {KAB , A}KBS }KAS B → A: {NB }KAB A → B: S 1. A, B , NA 3. {KAB , A}KBS A {NB − 1}KAB 2. {NA, KAB , {KAB , A}KBS }KAS 4. {NB }KAB B 5. {NB − 1}KAB Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 31 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 32 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle 2. S → A: Erläuterung der einzelnen Schritte: 1. A → S: A, B, NA Alice fordert beim (vertrauenswürdigen) Server einen Sitzungsschlüssel für die Kommunikation mit Bob an. Sie schickt einen Nonce NA mit, um sicherzugehen, dass die Antwort sich wirklich auf ihre Anforderung bezieht. Diese Nachricht ist unverschlüsselt. Barbara König {NA , KAB , {KAB , A}KBS }KAS Der Server schickt den Sitzungsschlüssel KAB an Alice. Dieser wird mit Hilfe von KAS (dem gemeinsamen Schlüssel von Alice und dem Server) verschlüsselt. Der Server fügt auch den Nonce NA hinzu, um Alice gegenüber zu beweisen, dass die Nachricht die Antwort auf Alice’ Anfrage war. Des weiteren wird eine für Bob bestimmte Nachricht mitgeschickt: {KAB , A}KBS . Damit wird Bob mitgeteilt, wie der Sitzungsschlüssel lautet und wer (A = Alice) mit ihm kommunizieren will. “Form. Asp. der Software-Sicherheit und Kryptographie” 33 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 34 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle 4. B → A: 3. A → B: {KAB , A}KBS Alice entschlüsselt die Nachricht des Servers und schickt die enthaltene Nachricht {KAB , A}KBS an Bob weiter. Sie selbst kann mit diesem Teil der Nachricht nichts anfangen, nur Bob kann sie entschlüsseln. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 35 {NB }KAB Bob entschlüsselt die erhaltene Nachricht und stellt fest, dass Alice mit ihm kommunizieren möchte. Außerdem erhält er dadurch den Sitzungsschlüssel KAB . Da Bob dem Server vertraut, kann er davon ausgehen, dass der Sitzungsschlüssel KAB ansonsten nur Alice mitgeteilt wurde. Er möchte jetzt jedoch noch testen, ob sein Kommunikationspartner tatsächlich Alice ist. Dazu generiert er eine “Testnachricht”, die den Nonce NB enthält und mit KAB verschlüsselt ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 36 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle Szenario: Alice möchte eine Verbindung mit Bob aufbauen. Eve hört mit und fängt geeignete Nachrichten ab bzw. modifiziert sie. Damit gelingt es ihr, sich Alice gegenüber als Bob auszugeben. 5. A → B: {NB − 1}KAB Angriff Alice weist sich Bob gegenüber aus, indem sie die Nachricht entschlüsselt und den Nonce um eins dekrementiert. Damit kann Bob feststellen, dass sein Gegenüber den entsprechenden Schlüssel besitzt und daher Alice ist. Leider ist das Protokoll so fehlerhaft und kann von Eve angegriffen werden. Warum? 1 A → S: A, B, NA E ersetzt diese Nachricht durch: A, E , NA 2 3 S → A: {NA , KAE , {KAE , A}KES }KAS A → B: {KAE , A}KES Eve fängt diese Nachricht ab und erhält damit den Sitzungsschlüssel KAE . 4 E → A: {NB }KAE 5 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 37 A → B: {NB − 1}KAE Eve fängt auch diese Nachricht ab. Alice ist jetzt überzeugt mit Bob zu kommunizieren, spricht aber mit Eve! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 38 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Authentifizierungs-Protokolle Das Problem kann unter anderem dadurch gelöst werden, indem der Server in die zweite Nachricht den Namen des Kommunikationspartners (B = Bob) einfügt: Needham-Schroeder-Protokoll 1 A → S: A, B, NA 2 3 4 5 S → A: {NA , B, KAB , {KAB , A}KBS }KAS B → A: {NB }KAB A → B: A → B: {KAB , A}KBS {NB − 1}KAB Damit erkennt Alice, wenn sie die Nachricht {NA , E , KAE , {KAE , A}KES }KAS erhält, dass dies die falsche Nachricht sein muss. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 39 Die fehlerhafte Variante des Needham-Schroeder-Protokolls, wie wir sie betrachtet haben, wurde so nie benutzt. Im Netzwerkauthentifizierungsprotokoll Kerberos wurde jedoch das Needham-Schroeder-Protokoll mit asymmetrischer Verschlüsselung verwendet, das einen ähnlichen Fehler enthielt. (Die Variante mit asymmetrischer Verschlüsselung ist etwas komplizierter, daher betrachten wir sie im Moment nicht.) Dieser Fehler wurde erst im Jahr 1995 – 17 Jahre nach der Entwicklung des Protokolls – entdeckt! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 40 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Authentifizierungs-Protokolle Motivation: Informationssicherheit Ein anderes Problem besteht darin, dass Eve die dritte Nachricht später wieder einspielen kann. Falls Eve bis dahin in den Besitz von KAB gekommen ist, kann sie sich diesmal für Alice ausgeben. Lösung: Zeitstempel in der dritten Nachricht Solche Angriffe nennt man man-in-the-middle attacks. Ähnliche Probleme gibt es auch bei der sogenannten SMB reflection attack und bei vielen anderen bekannten Angriffen auf Sicherheitsprotokolle. (SMB = Server Message Block: Protokoll zum Sharing von Dateien, Druckern, etc. in einem Netwerk; wird vor allem unter Windows benutzt). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 41 Mit der zunehmenden Vernetzung von Computern wird die Informationssicherheit immer wichtiger. Daten müssen gegenüber Dritten, d.h., vor möglichen Angreifern geschützt werden. Im Englischen: security (im Gegensatz zum allgemeineren Begriff safety, der sich auf die Abwesenheit von Fehlern oder den Schutz vor Fehlern in der Software bezieht). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 42 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Informationssicherheit Motivation: Informationssicherheit Bei Informationssicherheit sind unter anderem folgende Aspekte relevant: Vertraulichkeit Daten dürfen lediglich von autorisierten Benutzern gelesen bzw. modifiziert werden, dies gilt sowohl beim Zugriff auf gespeicherte Daten wie auch während der Datenübertragung. Integrität Daten dürfen nicht unbemerkt verändert werden, bzw. es müssen alle Änderungen nachvollziehbar sein. Zurechenbarkeit (engl. accountability) Eine durchgeführte Handlung kann einem Kommunikationspartner eindeutig zugeordnet werden. Verbindlichkeit/Nichtabstreitbarkeit (engl. non-repudiation) Verbindlichkeit erfordert, dass kein unzulässiges Abstreiten durchgeführter Handlungen möglich ist. Sie ist unter anderem wichtig beim elektronischen Abschluss von Verträgen und kann durch digitale Signaturen erreicht werden. Authentizität/Authentifizierung Echtheit und Glaubwürdigkeit einer Person oder eines Dienstes müssen überprüfbar sein. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 43 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 44 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Informationssicherheit Inhalt der Vorlesung Einige der oben genannte Ziele kann man durch den Einsatz von Verschlüsselungsverfahren erreichen. Wie wir am Beispiel des Needham-Schroeder-Protokolls gesehen haben, ist es aber auch sehr wichtig, dass nicht nur die kryptographischen Verfahren, sondern auch die eingesetzten Protokolle korrekt und nicht angreifbar sind. In beiden Fällen ist es wichtig zu definieren, was es überhaupt bedeutet, ein Verschlüsselungsverfahren oder Protokoll erfolgreich anzugreifen und zu analysieren, dass die eingesetzten Verfahren korrekt sind. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 45 Kyptographie Grundlagen der Kryptographie Spezielle Verschlüsselungsverfahren (historische Verschlüsselungsverfahren, One-Time-Pad, Blockchiffre DES/AES, RSA) Bedingungen an die Sicherheit von Kryptosystemen (randomisierte Komplexitätsklassen, Einwegfunktionen, Falltür-Funktionen) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 46 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Inhalt der Vorlesung Ver- und Entschlüsselung Kyptographische Protokolle Digitale Unterschriften Wir beschreiben jetzt formal, was es bedeutet, eine Nachricht zu verschlüsseln und zu entschlüsseln. Zero-Knowledge-Proofs: Wie überzeuge ich meinen Partner davon, dass ich ein Geheimnis kenne, ohne das Geheimnis zu verraten? Secure Multi-Party Computations: Gemeinsame Berechnung eines Ergebnisses durch mehrere Teilnehmer, ohne dass die einzelnen Parameter bekanntgegeben werden müssen. Verifikation von kyptographischen Protokollen Eindringlingsmodell nach Dolev-Yao Sicherheitslücken in kryptographischen Protokollen Verifikation kryptographischer Protokolle (mit Prozesskalkülen, Resolution, Model-Checking) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 47 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 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” 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 57 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 Das Würfeln einer 1 oder 6 bezeichnet man als (zusammengesetztes) Ereignis, im Unterschied zu Elementarereignissen. Falls Ω endlich ist und alle Elementarereignisse in Ω gleich wahrscheinlich sind, so gilt P(x) = 1 |Ω| 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 ) = 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 ∈ Ω. x∈E Diese Annahme, dass alle Elementarereignisse gleich wahrscheinlich sind, gilt jedoch nicht immer. (Beispiel: manipulierter Würfel) 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” 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. 64 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. 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 66 Barbara König 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: 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). Ω = M × Ke = {0, 1}n × {0, 1}n 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 0 = p = · · 1 = m 2n 2n 2n 2n 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 79 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. 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 x7 x6 Angenommen q(x) = c7 + c6 + · · · + 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 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 x 11 +x 7 +x 6 +x 4 +x 3 = 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 81 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 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 · 1 + 0 = 0 0 0 0 0 0 1 1 0 1 1 1 0 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 85 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 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 = (2744 mod 55)9 mod 55 = 499 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 95 Warum funktioniert RSA? 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. 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 107 Komplexitätsklasse NP (Definition) [ NP = NTIME(p(n)) p Polynom Offensichtlich gilt P ⊆ NP. Aber gilt auch P 6= NP? P 6= NP-Problem (ungelöst) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 108 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 ) Ja MB 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. Jede Funktion D 0 : CM × Ke → M mit E (D 0 (c, e), e) = c für alle c ∈ CM, e ∈ Ke liegt nicht in FP. 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 119 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? 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 121 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 123 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. 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 127 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.) 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 Klassische Turingmaschinen haben intuitiv folgendes Aussehen: Kopf kann sich nach links und rechts bewegen und Zeichen überschreiben e Z die endliche Menge der Zustände, i n g a b e Σ das Eingabealphabet, Γ mit Γ ⊃ Σ das Arbeitsalphabet oder Bandalphabet, δ : Z × Γ → Z × Γ × {L, R, N} die Überführungsfunktion, Signal für Endzustand Automat mit endlich vielen Zuständen 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 136 Frage: Kann man auch eine höhere Wahrscheinlichkeit als erhalten, wenn das Wort in der Sprache liegt? 1 2 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 k 1 P(M 0 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: P(PTN) ≤ k−t N , 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 146 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. 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 148 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: 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 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 150 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. Wie bei RP kann die Wahrscheinlichkeit für eine falsche Antwort vermindert werden, indem man die Maschine mehrfach laufen lässt. Jedes andere Paar von Zahlen p, q ∈ [0, 1] mit p > q < 12 kann statt 34 und 14 verwendet werden. ( Übungsaufgabe) 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 154 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. 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 i 2 2 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) 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 162 P ⊆ ZPP = RP ∩ co-RP ⊆ RP ⊆ BPP 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. 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 172 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 174 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. 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 176 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 180 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 182 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. 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 190 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. 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 192 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 194 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. 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 196 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 198 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. 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 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 . “Form. Asp. der Software-Sicherheit und Kryptographie” 200 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 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Kryptographische Protokolle: Motivation Digitale Unterschriften Falls wir in Cryptomania leben, gibt es Falltürfunktionen und asymmetrische Verschlüsselung. Damit kann man zahlreiche interessante kryptographische Protokolle gewinnen. Digitale Unterschriften Authentifizierungs- und Identifizierungs-Protokolle Zero-Knowledge-Protokolle Ein asymmetrisches Kryptosystem, das kommutativ ist, kann auch für digitale Unterschriften verwendet werden. Kommutatives, asymmetrisches Kryptosystem Ein asymmetrisches Kryptosystem heißt kommutativ, falls M = CM und folgende Bedingung für die Verschlüsselungsfunktion E : M × Ke → M und die Entschlüsselungsfunktion D : M × Kd → M gilt: D(E (m, e), d) = E (D(m, d), e) Münzwurf über das Telefon Secure Multi-Party Computations Wir werden uns im Folgenden einige davon genauer ansehen. für jedes m ∈ M und jedes Schlüsselpaar (e, d) ∈ K . Beispiel: RSA ist kommutativ, denn es gilt: D(E (m, (e, n)), (d, n)) = D(me mod n, (d, n)) = (me )d mod n = (md )e mod n = E (md mod n, (e, n)) = E (D(m, (d, n)), (e, n)) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 208 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 209 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Digitale Unterschriften Digitale Unterschriften Digitale Unterschrift Alice, die eine Nachricht m an Bob schicken will, “entschlüsselt” diese mit ihrem privaten Schlüssel dA , erhält s = D(m, dA ) und schickt (m, s) an Bob. Bob “verschlüsselt” s mit Hilfe von Alice’ öffentlichem Schlüssel eA und überprüft, ob E (s, eA ) = m. Falls ja, so akzeptiert er die Unterschrift. Aufgrund der Kommutativität des Kryptosystems ergibt sich aus einer korrekten Signatur wieder die ursprüngliche Nachricht. Nur Alice kennt dA und sie hat durch die Erzeugung von s nachgewiesen, dass sie dA besitzt. Denn ohne Kenntnis von dA ist die Entschlüsselung zu aufwändig (unter der Annahme, dass E eine Falltürfunktion ist). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 210 Weitere Bemerkungen: Wenn ein Kryptosystem auch zum Signieren verwendet wird, so ist relativ leicht, einen Chosen-Ciphertext-Angriff auf das Kryptosystem durchführbar: man bringt den Teilnehmer dazu, den gewählten Ciphertext zu signieren. In der Praxis wird nicht die gesamte Nachricht, sondern ein Hashwert, der aus der Nachricht gebildet wird, “entschlüsselt” und als Signatur mitgeschickt. Allerdings muss dann eine Hashfunktion gewählt werden, so dass es schwierig ist, zwei Nachrichten mit demselben Hashwert zu finden (Kollision). In diesem Fall könnte der Angreifer Alice eine Nachricht unterschreiben lassen, aber die andere mit dieser Signatur verschicken. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 211 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Identifizierung und Authentifizierung Identifizierung und Authentifizierung Ein typisches Identifizierungsverfahren ist das folgende: dabei kommunizieren Victor (“Verifier”) und Peggy (“Prover”). Peggy möchte sich gegenüber Victor identifizieren. Identifizierungs- und Authentifizierungsverfahren dienen dazu, dass Teilnehmer in einem Netzwerk gegenüber anderen eindeutig ihre Identität nachweisen können. Dies geschieht zumeist dadurch, dass sie nachweisen, ein Geheimnis zu kennen, das nur diesem bestimmten Teilnehmer bekannt sein sollte. Challenge-Response-Schema mit öffentlichem Schlüssel Victor wählt eine Zufallszahl (einen Nonce) r und berechnet den dazugehörigen Hashwert x = h(r ). Er verwendet den öffentlichen Schlüssel eP von Peggy, berechnet den Challenge c = E (r , eP ) und schickt c, x an Peggy (gemeinsam mit seiner Identität). Peggy beschließt, sich Victor gegenüber zu identifizieren. Sie berechnet r = D(c, dP ) und überprüft, ob x = h(r ). Dann schickt sie r an Victor. Victor akzeptiert den Beweis von Peggys Identität, falls sie den korrekten Wert r zurückliefert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 212 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 213 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Identifizierung und Authentifizierung Identifizierung und Authentifizierung Bemerkungen: Durch die Entschlüsselung signiert Peggy den Challenge c. Sie weist dadurch – wie bei einer Signatur – nach, dass sie ihren privaten Schlüssel kennt. Eine Zufallszahl r (statt einer festen Zahl) wird verwendet, damit kein Replay-Angriff durchgeführt werden kann. Durch den Hashwert x weiß Peggy, dass Victor den Wert r bereits kennt. Sie gibt ihm damit keine zusätzlichen Informationen und liefert ihm dadurch keine bisher unbekannte Signatur. Dieses Schema hat Vorteile gegenüber einer Passwort-basierten Identifizierung. Es muss kein Passwort ausgetauscht werden und auch wenn ein Angreifer die Kommunikation abhört, kann er sich anschließend nicht als Peggy ausgeben. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 214 Wir wollen garantieren, dass Peggy außer ihrer Identität Victor gegenüber keine weiteren Informationen verrät (beispielsweise ihren öffentlichen Schlüssel). Insbesondere sind wir an Protokollen interessiert, bei denen Peggy Victor davon überzeugen kann, ein Geheimnis zu kennen, ohne dieses Geheimnis selbst zu verraten. Solche Protokolle sind unter dem Namen Zero-Knowledge-Protokolle bekannt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 215 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Wir beschreiben zunächst interaktive Beweissysteme, bei denen noch nicht unbedingt verlangt wird, dass keine Informationen preisgegeben werden. Es gibt eine Eingabe x ∈ Σ∗ , die beide Partner kennen. Victor und Peggy senden sich wechselseitig Nachrichten und stellen Anfragen. Victor entscheidet zuletzt, ob x akzeptiert wird. Man macht dabei folgende Beschränkungen: Victor ist eine polynomzeitbeschränkte probabilistische Turingmaschine. Wir betrachten ein interaktives Beweissystem für Nicht-Graphisomorphie, ein Problem, von dem nicht bekannt ist, ob es in NP oder in BPP liegt. NON-GRAPHISO Eingabe: ein Paar (G1 , G2 ), bestehend aus zwei ungerichteten Graphen G1 = (V1 , E1 ), G2 = (V2 , E2 ). Dabei gilt V1 = V2 = {1, . . . , n} und eine Kante e ∈ Ei ist eine zweielementige Knotenmenge. Peggy hat unbeschränkte Resourcen, insbesondere darf sie nicht-deterministisch arbeiten, beliebig viel Zeit verbrauchen und Zufallsbits verwenden. Ausgabe: Sind die Graphen G1 , G2 nicht isomorph? Das heißt, es gibt keine Permutation π : V1 → V2 , so dass {v1 , v2 } ∈ E1 genau dann, wenn {π(v1 ), π(v2 )} ∈ E2 . Es werden nur polynomial viele Nachrichten ausgetauscht, die auch nur polynomiale Länge haben. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 216 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 217 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Beispiel: wir betrachten folgende zwei Graphen G1 , G2 2 1 1 2 Das interaktive Beweissystem für NON-GRAPHISO funktioniert wie folgt: seien G1 , G2 zwei Graphen, beide mit Knotenmenge {1, . . . , n}. 1 3 4 3 4 G1 und G2 sind isomorph, d.h., (G1 , G2 ) 6∈ NON-GRAPHISO. Eine Permutation, die die Isomorphie nachweist ist π : {1, 2, 3, 4} → {1, 2, 3, 4} mit π(1) = 2, π(2) = 1, π(3) = 4, π(4) = 3. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 218 2 Victor wählt eine Zufallszahl i ∈ {1, 2} und eine zufällige Permutation π : {1, . . . , n} → {1, . . . , n}. Victor benennt die Knoten von Gi mit Hilfe von π um und erhält dadurch H = π(Gi ). Er schickt H an Peggy und fragt nach einem Index i, so dass Gi und H isomorph sind. 3 Peggy antwortet mit einem Index j. 4 Victor akzeptiert, falls i = j. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 219 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Falls G1 und G2 nicht isomorph sind, so kann Peggy – mit ihren unbeschränkten Resourcen – immer herausfinden, ob H isomorph zu G1 oder zu G2 ist und eine korrekte Antwort schicken. Falls die Graphen isomorph sind, so kann Peggy nur raten und kann daher nur in der Hälfte der Fälle eine korrekte Antwort schicken. Interaktives Beweissystem für eine Sprache Eine Sprache L hat ein polynomiales interaktives Beweissystem, wenn es ein – wie oben beschriebenes – interaktives Beweissystem gibt, das folgende Bedingung erfüllt: es gibt einen Verifier V und einen Prover P, wobei folgendes gilt. falls x ∈ L liegt, dann ist die Wahrscheinlichkeit, dass V , P gemeinsam das Wort x akzeptieren, größer gleich 43 . falls x 6∈ L liegt, dann ist für jeden (potentiell bösartigen) Prover P 0 die Wahrscheinlichkeit, dass V , P 0 gemeinsam das Wort x akzeptieren, kleiner gleich 14 . IP ist die Menge aller Sprachen, die ein polynomiales interaktives Beweissystem haben. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 220 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 221 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Bemerkungen: Intuitiv ist P der gutartige Prover, der in der Lage sein muss, den Verifier V mit hoher Wahrscheinlichkeit zu überzeugen. Ein bösartiger Prover P 0 – der V evtl. täuschen will – hat nur eine niedrige Wahrscheinlichkeit, mit der er V überzeugen kann (falls das Wort nicht in der Sprache liegt). Wie bei den probabilistischen Komplexitätsklassen kann man die Wahrscheinlichkeit für Akzeptanz bzw. fehlerhafte Akzeptanz durch mehrfache Ausführung des Protokolls erhöhen bzw. vermindern. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 222 NON-GRAPHISO hat ein polynomiales interaktives Beweissystem, d.h., NON-GRAPHISO ∈ IP: Falls (G1 , G2 ) ∈ NON-GRAPHISO, d.h., G1 , G2 sind nicht isomorph, so antwortet Peggy immer richtig und Victor akzeptiert mit Wahrscheinlichkeit 1. Falls (G1 , G2 ) 6∈ NON-GRAPHISO, d.h., G1 , G2 sind isomorph, so hat Peggy nur eine Wahrscheinlichkeit von Victor zu Akzeptanz zu bewegen. 1 2 Um die Akzeptanzwahrscheinlichkeit im Fehlerfall auf kleiner gleich 1 4 zu drücken, ist es erforderlich, das Beweissystem zweimal auszuführen, und auf Nicht-Isomorphie zu entscheiden, wenn Peggy beide Male den korrekten Index schickt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 223 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Man weiß folgendes über die Beziehung zwischen NP und IP: NP ⊆ IP Die Komplexitätsklasse NP ist eine Teilmenge von IP. Analogie: Biertester Im Finkenkrug gibt es zwei Sorten von Bier: Alt und Kölsch. Peggy behauptet, mit verbundenen Augen zwischen beiden unterscheiden zu können. Ihr werden die Augen verbunden und sie erhält in einer Testreihe in zufälliger Reihenfolge mit Alt und Kölsch gefüllte Gläser. Der Test gilt als bestanden, wenn Peggy alle Gläser korrekt erkennt. Beweis: jedes Wort einer NP-Sprache besitzt ein Zertifikat polynomieller Länge, das in Polynomzeit verifiziert werden kann. (Ein Zertifikat, das immer funktioniert, ist die Angabe eines akzeptierenden Berechnungspfades in einer gegebenen nicht-deterministischen Turingmaschine.) Peggy kann dieses Zertifikat berechnen und an Victor schicken, wobei Victor das Zertifikat überprüft. Die Wahrscheinlichkeiten für korrekte Akzeptanz und fehlerhafte Akzeptanz sind sogar gleich 1 bzw. 0. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 224 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 225 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Interaktive Beweissysteme Interaktive Beweissysteme Von Adi Shamir stammt folgendes wichtige Resultat zu IP: BPP ⊆ IP Die Komplexitätsklasse BPP ist eine Teilmenge von IP. Beweis: Für ein Problem in BPP kann der Verifier selbst – ohne jede Interaktion mit dem Prover – die Antwort mit der geforderten Wahrscheinlichkeit berechnen. IP = PSPACE Die Sprachen, die ein polynomiales interaktives Beweissystem haben, sind genau die Sprachen, die von (deterministischen) Turingmaschinen mit polynomialer Platzbeschränkung akzeptiert werden. Es existieren Sprachen in IP, von denen nicht bekannt ist, ob sie in NP liegen (beispielsweise NON-GRAPHISO). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 226 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 227 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Wir wollen nun präzisieren, was es bedeutet, dass durch ein interaktives Beweissystem kein Wissen preisgegeben wird. Perfekter Zero-Knowledge-Beweis Ein Ablauf eines interaktiven Beweissystems P, V auf einer Eingabe x erzeugt eine Folge von Nachrichten. Ein solches interaktives Beweissystem ist ein perfektes Zero-Knowledge-Beweissystem für L, wenn es für jeden – möglicherweise bösartigen Verifier V 0 – eine probabilistische polynomzeitbeschränkte Turingmaschine M gibt, die bei einer Eingabe x ∈ L dieselbe Menge von Protokollabläufen wie V 0 , P erzeugen kann, wobei die Protokollabläufe jeweils mit derselben Wahrscheinlichkeit wie in einem echten Beweis von V 0 , P vorkommen. Barbara König Bemerkungen: Die Turingmaschine M wird auch als Fälscher (engl. forger) bezeichnet. Ein Beobachter kann die Menge von Abläufen von V 0 , P nicht von den von M erzeugten Abläufen unterscheiden. Es muss für jeden Verifier V 0 gefordert werden, dass die Protokollabläufe von V 0 , P simuliert werden können, denn es muss sichergestellt werden, dass nicht nur der gutartige Verifier V , der sich an das Protokoll hält, sondern auch ein bösartiger Verifier nicht in den Besitz von zusätzlichem Wissen kommen kann. Eine andere Definition (Computational Zero-Knowledge) fordert nur, dass die Wahrscheinlichkeitsverteilungen für die echten und gefälschten Protokollabläufe nicht in Polynomzeit unterschieden werden können. “Form. Asp. der Software-Sicherheit und Kryptographie” 228 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 229 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Analogie: Biertester Zero-Knowledge-Beweissystem für NON-GRAPHISO: Das vorgestellte interaktive Beweissystem für NON-GRAPHISO ist Zero-Knowledge, denn eine polynomzeitbeschränkte Turingmaschine M kann bei Eingabe von nicht-isomorphen Graphen G1 , G2 die Interaktion dadurch simulieren, dass sie Gi geeignet permutiert und anschließend selbst die Antwort i schickt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 230 Wenn Victor, der die Biersorten auswählt, und Peggy miteinander kooperieren, dann können sie eine Testreihe durchführen, bei der Peggy die Biersorten immer richtig benennt, auch wenn sie sie eigentlich nicht unterscheiden kann. Dazu muss vorab die Reihenfolge vereinbart werden oder Victor und Peggy einigen sich auf ein geheimes Zeichen. Ein Beobachter kann aus einem Ablauf kein zusätzliches Wissen gewinnen, denn der Ablauf könnte auch “simuliert” sein. Insbesondere weiß er nichts über die echten Fähigkeiten von Peggy. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 231 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Wir betrachten nun einen weiteren Zero-Knowledge-Beweis für GRAPHISO, das Komplement von NON-GRAPHISO. Von GRAPHISO ist bekannt, dass es in NP liegt, aber nicht, ob es NP-vollständig ist. 1 Peggy wählt eine zufällige Permutation π : {1, . . . , n} → {1, . . . , n}. Sie wendet π auf G1 an und erhält H = π(G1 ). Dann schickt sie H an Victor. Aus ähnlichen Gründen wie zuvor ist dieses Protokoll ein interaktives Beweisprotokoll. Falls die Graphen G1 , G2 isomorph sind, so akzeptieren Victor und Peggy gemeinsam mit Wahrscheinlichkeit 1, denn Peggy findet immer eine entsprechende Permutation σ. 2 Victor wählt eine Zufallszahl i ∈ {1, 2} und schickt diese an Peggy. Falls die Graphen nicht isomorph sind, dann muss Peggy in der Hälfte der Fälle mit einer falschen Permutation σ antworten. 3 Peggy bestimmt eine weitere Permutation σ mit H = σ(Gi ) und schickt σ an Victor. 4 Victor akzeptiert, falls σ(Gi ) = H. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 232 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 233 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Das Protokoll erfüllt außerdem die Zero-Knowledge-Bedingungen, denn ein Ablauf kann folgendermaßen von M simuliert werden: gegeben seien zwei isomorphe Graphen G1 , G2 , M kennt jedoch nicht den dazugehörigen Isomorphismus. M wählt eine zufällige Permutation σ und einen Index i. Dann bestimmt sie H = σ(Gi ). Die simulierten Nachrichten sind – der Reihe nach – H, i, σ. Ein Beobachter kann nicht feststellen, dass H nicht unbedingt durch Permutation von G1 gewonnen wurde. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 234 Auch im Falle eines bösartigen Verifiers kann jeder Ablauf durch eine probabilistische Turingmaschine M simuliert werden. Insbesondere folgt aus der Tatsache, dass es sich um ein Zero-Knowledge-Protokoll handelt, dass der Verifier nicht in den Besitz von Informationen kommen kann, die er nicht selbst in probabilistischer Polynomzeit berechnen könnte. D.h., falls GRAPHISO nicht in BPP liegt (was nicht bekannt ist), dann gewinnt der Verifier aufgrund des Beweissystems keine Informationen über den Isomorphismus zwischen zwei gegebenen Graphen G1 , G2 . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 235 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Analogie: Verschlossene Tür In einem Gebäude mit dem folgenden Grundriss gibt es eine verschlossene Tür. Peggy behauptet, dass sie weiß, wie diese Tür geöffnet werden kann. Sie will nachweisen, dass sie die Tür öffnen kann, will aber niemanden zeigen, wie das funktioniert. linker Korridor rechter Korridor X Tür Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 236 Der Test funktioniert folgendermaßen: sie betritt das Gebäude und geht – ohne dass jemand dies beobachten kann – entweder in den linken oder rechten Korridor. Anschließend stellt sich Victor – mit etwaigen Zeugen – auf den Punkt X. Er ruft anschließend entweder “links” oder “rechts” und Peggy muss auf diesem Korridor das Gebäude wieder verlassen. Dazu muss sie unter Umständen die Türe durchqueren. Wieder können Peggy und Victor gemeinsam einen korrekten Protokollablauf simulieren, indem sie sich vorher über die Folge von Links-/Rechts-Kommandos verständigen. Dieser Ablauf kann von einem Beobachter nicht von einem korrekt ablaufenden Test unterschieden werden. Außerdem kann auch ein bösartiger Victor kein zusätzliches Wissen über den Schließmechanismus der Tür erlangen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 237 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle Jede Sprache L ∈ BPP hat trivialerweise ein Zero-Knowledge-Beweissystem. Eine solche Sprache benötigt keinen “allmächtigen” Prover, sondern der Verifier kann alle Berechnungen selbst ausführen. Falls Einwegfunktionen existieren, so kann man zeigen, dass jede Sprache in NP (und sogar jede Sprache in IP!) ein Zero-Knowledge-Beweissystem hat (im Sinne von Computational Zero-Knowledge). Damit werden keine Nachrichten ausgetauscht und das Interaktionsverhalten kann trivialerweise von einer weiteren Maschine M simuliert werden. Wir werden uns dieses Resultat für NP genauer ansehen (unter der stärkeren Voraussetzung, dass bijektive Einwegfunktionen existieren). Dafür benötigt man jedoch zunächst Hilfsprotokolle . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 238 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 239 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Bit Commitment Anwendung: Bit Commitment (Problemstellung) Bob will, dass Alice sich auf den Wert eines Bits b ∈ {0, 1} festlegt. Alice könnte jetzt ein Bit wählen und an Bob schicken. Sie will aber, dass Bob erst später von ihrer Wahl erfährt. Wie kann Bob erreichen, dass sich Alice jetzt auf ein Bit festlegt und später – wenn sie zusätzliche Informationen besitzt – nicht bezüglich ihrer Festlegung lügen kann? Barbara König Alice und Bob wollen ein Zahlenratespiel spielen: Alice soll eine Zahl n ∈ {1, . . . , 100} wählen. Bob nennt eine Zahl m und Alice sagt, ob m < n, m = n oder m > n gilt. Bob rät so lange, bis er die korrekte Zahl gefunden hat. Er soll möglichst wenige Schritte brauchen. Alice hätte einen Vorteil, wenn sie ihre Zahl während des Spiels ändern kann. Von daher wäre es gut, wenn sie sich zu Beginn auf eine Zahl festlegen könnte, ohne dass Bob diese Zahl kennt. “Form. Asp. der Software-Sicherheit und Kryptographie” 240 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 241 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Bit Commitment Voraussetzungen: Eine bijektive Einwegfunktion f (eine sogenannte Einweg-Permutation). Ein Hardcore-Prädikat B ∈ FP zu f , so dass B(x) ∈ {0, 1} nur mit einer Wahrscheinlichkeit p ≤ 21 + ε (wobei ε vernachlässigbar ist) in Polynomzeit vorhergesagt werden kann, wenn f (x) bekannt ist. Sowohl f als auch B können in Polynomzeit berechnet werden. D.h., insbesondere kann B(x) einfach berechnet werden, wenn das Wort x bekannt ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 242 Kandidaten für Hardcore-Prädikate: Bei der diskreten Exponentialfunktion: höchstwertiges Bit Bei der RSA-Falltürfunktion: niedrigstwertiges Bit Eine Funktion mit Hardcore-Prädikat ist zwangsläufig eine Einwegfunktion. Außerdem existieren Hardcore-Prädikate, falls Einwegfunktionen existieren. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 243 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Bit Commitment Bemerkungen: Bit Commitment (Protokoll) Ein Einwegfunktion f und ein dazugehöriges Hardcore-Prädikat B werden zu Beginn des Protokolls festgelegt. Alice wählt ihr Bit b ∈ {0, 1}. Sie sucht ein x ∈ Σ∗ mit B(x) = b und schickt C = f (x) (die Festlegung, engl. commitment) an Bob. Bob empfängt C , kann aus C allerdings keine Informationen über b erlangen. Später kann Alice Bob gegenüber nachweisen, dass sie sich auf b festgelegt hat, indem sie x an Bob schickt. Bob überprüft dann, ob C = f (x) gilt und berechnet B(x). Barbara König Es ist wichtig, dass f eine Einweg-Permutation ist. Ansonsten hat f (x) evtl. mehrere Urbilder, von denen sich Alice später eines aussuchen kann. Die Festlegung C werden wir in Zukunft auch mit C (b) bezeichnet. Wie lang soll x gewählt werden? Eigentlich sollte die Sicherheit eines Protokolls in der Länge der Eingabe gemessen werden. Hier ist die Eingabe (ein Bit!) jedoch sehr kurz. Von daher nimmt man als Ersatz einen Sicherheitsparameter als zusätzliche Eingabe. Dieser ist einfach eine Zeichenkette 1k und in Bezug auf k muss die Erfolgswahrscheinlichkeit für den Angreifer vernachlässigbar sein. “Form. Asp. der Software-Sicherheit und Kryptographie” 244 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 245 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Bit Commitment Ein klassische “Anwendung” für Bit Commitment ist die folgende: Münzwurf über das Telefon Alice und Bob kommunizieren über das Telefon (bzw. Internet) und wollen gemeinsam eine Zufallszahl bestimmen. Sie vertrauen einander nicht und die Aufgabe soll daher nicht einer der beiden Parteien überlassen werden. Die grundlegende Idee ist, dass beide ein Bit wählen und das Zufallsbit durch xor-Verknüpfung dieser Bits entsteht. Durch Bit Commitment wird verhindert, dass einer der beiden Partner sein gewähltes Bit im Nachhinein ändert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 246 Bemerkung: Gleichzeitiges Übertragen der Bits ist in diesem Berechnungsmodell nicht möglich. Auf der Idee der gleichzeitigen Übertragung beruht beispielsweise das Spiel “Stein, Schere, Papier”, bei dem beide Teilnehmer mehr oder weniger gleichzeitig ihre Wahl treffen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 247 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Bit Commitment Münzwurf über das Telefon (Protokoll) Alice wählt ein Bit a ∈ {0, 1} und schickt eine Festlegung C (a) an Bob. Bob kennt a nicht und wählt sein Bit b ∈ {0, 1}, welches er an Alice schickt. Alice weist die Wahl von a nach und gibt das Ergebnis a ⊕ b bekannt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 248 Beispiel: wir betrachten als Einwegfunktion die diskrete Exponentialfunktion und wählen die Primzahl p = 19 und den Generator g = 3. In diesem Fall verwenden wir folgendes Hardcore-Prädikat 0 falls x ≤ p−1 2 most(x) = 1 sonst Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 249 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Bit Commitment Zero-Knowledge-Protokolle für NP-vollständige Probleme Beispielablauf Münzwurf: Alice wählt zufällig das Bit a = 1 und wählt als x = 14 als Zeugen. Sie schickt f (x) = g x mod p = 314 mod 19 = 4 an Bob. Bob empfängt f (x) = 4 kann daraus jedoch keine Schlüsse ziehen. Er wählt zufällig das Bit b = 0 und schickt es an Alice. Alice ermittelt a ⊕ b = 1 und gibt das Ergebnis der Münzwurfes bekannt. Außerdem schickt sie x = 14 an Bob, damit dieser ihre Festlegung nachprüfen kann. Bemerkung: für reale Anwendungen ist p = 19 natürlich viel zu klein gewählt! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 250 Wir betrachten nun ein Zero-Knowledge-Protokoll für ein als NP-vollständig bekanntes Problem: Färbbarkeit von Graphen k-Färbbarkeit von Graphen (k-COL) Dabei ist k ∈ N0 eine natürliche Zahl. Eingabe: Ein ungerichteter Graph G = (V , E ). Ausgabe: Gibt es eine Zuordnung von k verschiedenen Farben zu Knoten in V , so dass keine zwei benachbarten Knoten v1 , v2 dieselbe Farbe haben? Für k ≥ 3 ist k-COL NP-vollständig. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 251 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle für NP-vollständige Probleme Zero-Knowledge-Protokolle für NP-vollständige Probleme Beispiele: Computational Zero-Knowledge-Beweissystem für 3-COL Wir nehmen an, dass V = {v1 , . . . , vn }. Peggy berechnet eine beliebige 3-Färbung c : V → {1, 2, 3} für G . (Insbesondere gilt c(v1 ) 6= c(v2 ), falls {v1 , v2 } ∈ E .) Peggy schickt Festlegungen C (c(v1 )), . . . , C (c(vn )) an Victor. Victor wählt eine zufällige Kante {u, w } ∈ E und schickt sie an Peggy. Graph ist 3-färbbar, aber nicht 2-färbbar Barbara König Graph ist 4-färbbar, aber nicht 3-färbbar “Form. Asp. der Software-Sicherheit und Kryptographie” 252 Peggy weist gegenüber Victor nach, dass sie die Farben c(u), c(w ) gewählt hat und dass c(u) 6= c(w ). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 253 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle für NP-vollständige Probleme Zero-Knowledge-Protokolle für NP-vollständige Probleme Dieses Beweissystem hat folgende Eigenschaften: Falls der Graph 3-färbbar ist, dann kann Peggy immer eine korrekte 3-Färbung wählen und Victor akzeptiert mit Wahrscheinlichkeit 1. Falls der Graph nicht 3-färbbar ist, dann gibt es mindestens eine Kante {u, v } ∈ E , die “falsch” gefärbt ist, d.h., c(u) = c(v ). Victor hat also eine Wahrscheinlichkeit kleiner gleich 1 − |E1 | , eine korrekt gefärbte Kante zu wählen. Um eine Wahrscheinlichkeit kleiner gleich 14 zu erhalten, muss das Protokoll entsprechend oft iteriert werden. Dabei ist wichtig, dass Peggy jedes Mal eine neue Färbung wählt (beispielsweise durch Permutation einer früheren Färbung), ansonsten erhält Victor Wissen über die Färbungsfunktion. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 254 Es handelt sich um einen Zero-Knowledge-Beweis (im Sinne von Computational Zero-Knowledge), denn der Fälscher kann das Protokoll nicht exakt imitieren, wenn er keine 3-Färbung kennt. Er kann jedoch in einem Durchlauf: Eine beliebige Kante {u, w } wählen und dieser zwei zufällig gewählte Farben zuordnen. Alle anderen Knoten werden zufällig gefärbt (was mit großer Wahrscheinlichkeit eine ungültige Färbung ergibt). Er kann nun die entsprechenden Festlegungen für die Farben schicken, dann Victor {u, w } “wählen” lassen und die entsprechende Wahl nachweisen. Ein Beobachter kann dieses Verhalten in Polynomzeit nicht von einem echten Protokollablauf unterscheiden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 255 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle für NP-vollständige Probleme Zero-Knowledge-Protokolle für NP-vollständige Probleme Mit Hilfe von Reduktionen kann nun ein Zero-Knowledge-Beweis für jedes NP-Problem A konstruiert werden. Sei also A in Polynomzeit auf 3-COL reduzierbar (A ≤p 3-COL). Die dazugehörige Reduktionsfunktion bezeichnen wir mit g . Computational Zero-Knowledge-Beweissystem für A Peggy und Victor bestimmen bei einer Eingabe x beide den Graphen G = g (x). Anschließend wird der Zero-Knowledge-Beweis für die 3-Färbbarkeit von G durchgeführt. Die Antwort von Victor ist dann auch die Antwort auf die Fragen “x ∈ A?”. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 256 Die Standardreduktionsfolge eines NP-Problems A nach 3-COL ist: Direkte Reduktion auf SAT (Umwandlung der nicht-deterministischen Turingmaschine für A in eine aussagenlogische Formel) SAT ≤p 3KNF-SAT 3KNF-SAT ≤p 3-COL Man kann zeigen, dass alle diese Reduktionen auch die dazugehörigen Zertifikate ineinander umwandeln. Die Zertifikate sind jeweils: Für A: erfolgreicher Berechnungspfad der Turingmaschine Für SAT und 3KNF-SAT: Modelle der Formeln Für 3-COL: Färbungsfunktion des Graphen Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 257 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Zero-Knowledge-Protokolle für NP-vollständige Probleme Secure Multi-Party Computations Reduktionen die Zertifikate in Zertifikate überführen, nennt man auch Levin-Reduktionen. Die Existenz von Levin-Reduktionen heißt insbesondere, dass man durch Reduktionen Zero-Knowledge-Beweise erhält, bei denen Peggy nicht nur nachweist, dass x ∈ A gilt, sondern auch zeigt, dass sie das dazugehörige Zertifikat kennt. Denn sie weist ja die Kenntnis des Zertifikats für 3-COL (die Färbungsfunktion) nach. Es gibt jedoch auch direktere Zero-Knowledge-Beweise für NP-Probleme, die für praktische Anwendungen vermutlich besser geeignet sind. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 258 Wir beschäftigen uns jetzt mit Secure Multi-Party Computations: Alice und Bob berechnen gemeinsam eine zweistellige Funktion f : I1 × I2 → O1 × O2 , zu der jeder genau einen Parameter kennt, ohne die Parameter selbst bekanntzugeben. Jeder erhält dabei einen privaten Ausgabewert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 259 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Carolin findet auf dem Speicher ein Bild. Anwendungen: Elektronische Wahlen: die einzelnen Teilnehmer wollen ihre Stimme nicht öffentlich bekanntgeben. Es muss jedoch trotzdem das Ergebnis der Wahl bestimmt werden. Auktionen ohne vertrauenswürdigen Auktionator: kein Bieter soll erfahren, wie die Gebote der anderen Bieter lauten. Nur der Gewinner erfährt, dass er gewonnen hat und welchen Preis er zahlen muss. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 260 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 261 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Carolin findet auf dem Speicher ein Bild. Sie will es an Alice oder Bob verkaufen. Alice: “Ich will das Bild haben.” Bob: “Ich will das Bild haben.” Alice: “Lass uns doch eine Auktion durchführen. Jeder von uns nennt ein Gebot. Derjenige von uns mit dem höheren Gebot bekommt das Bild und muss das Geld an Carolin zahlen.” Bob: “Wenn ich verliere, dann will ich aber nicht, dass irgendjemand mein Gebot erfährt. Das soll geheim bleiben.” Alice: “Kein Problem: Dann berechnen wir gemeinsam das Maximum unserer Gebote, ohne die Gebote bekanntzugeben.” Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 261 Alice, Bob und Carolin beschließen, dass das Bild höchstens 3€ wert sein kann, die möglichen Gebote sollten also in der Menge {0€, 1€, 2€, 3€} liegen. Falls die Gebote binär codiert sind (a1 a0 für Alice, b1 b0 für Bob), so berechnet sich das Maximum m1 m0 durch folgende aussagenlogische Formel: m1 = a1 ∨ b1 m0 = (a1 ∧ a0 ) ∨ (b1 ∧ b0 ) ∨ (¬a1 ∧ b0 ) ∨ (a0 ∧ ¬b1 ) Alice und Bob konstruieren einen Schaltkreis und werten ihn gemeinsam aus. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 262 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Oblivious Transfer Hilfsprotokoll: Oblivious Transfer = Unbewusster Transfer Oblivious Transfer Gemeinsame Berechnung der Projektions-Funktion: f : {0, 1}k × {1, . . . , k} → {∗} × {0, 1} f ((c1 , . . . , ck ), i) = (∗, ci ) Alice und Bob wollen diese Projektion gemeinsam berechnen, so dass: Voraussetzungen: Eine bijektive Falltürfunktion (trapdoor permutation) t, deren Inverses t −1 nur dann effizient in Polynomzeit berechnet werden kann, wenn man den privaten Schlüssel kennt. Der private Schlüssel befindet sich im Besitz von Alice. Ein Hardcore-Prädikat B zu t. Alice kennt c1 , . . . , ck und erfährt keine weiteren Informationen. Bob kennt zu Beginn des Protokolls i und am Ende nur i und ci . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 263 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 264 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Oblivious Transfer Oblivious Transfer Korrektheit Protokoll: Oblivious Transfer 1 Alice bestimmt eine Falltürfunktion t mit Hardcore-Prädikat B und schickt (t, B) an Bob. 2 Bob wählt zufällig z1 , . . . , zk und schickt (z1 , . . . , t(zi ), . . . , zk ). 3 Alice erhält (y1 , . . . , yk ) und schickt (c1 ⊕ B(t −1 (y1 )), . . . , ck ⊕ B(t −1 (yk ))). 4 Bob empfängt (x1 , . . . , xk ) und bestimmt xi ⊕ B(zi ). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 265 Bob berechnet xi ⊕ B(zi ) = ci ⊕ B(t −1 (yi )) ⊕ B(zi ) = ci ⊕ B(t −1 (t(zi ))) ⊕ B(zi ) = ci Sicherheit Alice kann zj und t(zj ) nicht unterscheiden und erhält dadurch keine Informationen darüber, welches Bit Bob anfordert. Bob kann aus cj ⊕ B(t −1 (zj )) (für j 6= i) nicht B(t −1 (zj )) – und damit cj – bestimmen, da er nur t(t −1 (zj )) = zj , nicht aber t −1 (zj ) kennt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 266 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Oblivious Transfer Secure Multi-Party Computations Bemerkung: Das korrekte Verhalten von Bob muss aber erzwungen werden, ansonsten schickt er (t(z1 ), . . . , t(zi ), . . . , t(zk )) statt (z1 , . . . , t(zi ), . . . , zk ) und erhält dadurch alle Bits c1 , . . . , cn . Dazu später mehr . . . Barbara König Wir beschreiben nun die sichere Auswertung eines Schaltkreises, für den die Teilnehmer jeweils eigene Eingabebits besitzen, die den anderen Teilnehmern unbekannt sind. Diese Methode stammt von Yao und ist unter dem Namen garbled circuit oder scrambled circuit bekannt. “Form. Asp. der Software-Sicherheit und Kryptographie” 267 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 268 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Idee Idee Jede Verbindung zwischen Gattern wird verdopppelt. Jede Verbindung zwischen Gattern wird verdopppelt. Für jede Belegung r einer Verbindung zwischen Gattern bekommen Alice und Bob Anteile a, b mit r = a ⊕ b. Für jede Belegung r einer Verbindung zwischen Gattern bekommen Alice und Bob Anteile a, b mit r = a ⊕ b. Ein Gatter mit k Eingängen und m Ausgängen wird durch ein “sicheres Gatter” mit 2k Eingängen und 2m Ausgängen ersetzt. Ein Gatter mit k Eingängen und m Ausgängen wird durch ein “sicheres Gatter” mit 2k Eingängen und 2m Ausgängen ersetzt. r r r = ra ⊕ rb r =a⊕b ∧ a r i1 Barbara König i0 “Form. Asp. der Software-Sicherheit und Kryptographie” 269 ra rb S (∧) b a1 r =a⊕b i1 = a1 ⊕ b1 Barbara König b1 a0 b0 i0 = a0 ⊕ b0 “Form. Asp. der Software-Sicherheit und Kryptographie” 269 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Idee Jede Verbindung zwischen Gattern wird verdopppelt. Verteilung der Eingabe-Bits Für jede Belegung r einer Verbindung zwischen Gattern bekommen Alice und Bob Anteile a, b mit r = a ⊕ b. Ein Gatter mit k Eingängen und m Ausgängen wird durch ein “sicheres Gatter” mit 2k Eingängen und 2m Ausgängen ersetzt. r = ra ⊕ rb r =a⊕b ra rb Schaltkreis a1 a0 b1 b0 Eingabebits Bob Alice S (∧) a b a1 b1 r =a⊕b i1 = a1 ⊕ b1 a0 b0 i0 = a0 ⊕ b0 “Form. Asp. der Software-Sicherheit und Kryptographie” 269 Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 270 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Auswertung eines not-Gatters: Verteilung der Eingabe-Bits a1 a0 S (¬) ¬(a ⊕ b) = ¬a ⊕ b S (Schaltkreis) a1⊕y1 y1 a0⊕y0 y0 ¬a b Alice invertiert ihr Bit. x1 b1⊕x1 x0 b0⊕x0 b1 b0 Eingabebits Alice erzeugt Zufallsbits x1 , x0 und schickt sie an Bob. Bob erzeugt Zufallsbits y1 , y0 und schickt sie an Alice. a b Auswertung eines and-Gatters: Alice wählt ein zufälliges Bit z und berechnet rb,b0 = z ⊕ ((a1 ⊕ b) ∧ (a0 ⊕ b 0 )) für alle b, b 0 ∈ {0, 1}. Bob erhält rb1 ,b0 durch Oblivious Transfer. z rb1,b0 S (∧) a1 b1 a0 b0 z ⊕ rb1 ,b0 = (a1 ⊕ b1 ) ∧ (a0 ⊕ b0 ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 270 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 271 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 ∨ S (∨) ∨ ∨ ∧ ∨ ∧ ∧ S (∨) ∧ S (∨) ¬ 1 0 11 1 0 1 0 0 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 S (∨) S (∨) S (∧) S (¬) 0 0 S (∨) S (∨) S (∧) 01 “Form. Asp. der Software-Sicherheit und Kryptographie” 272 m0 1 0, 1, 0, 0 S (∧) S (¬) 1 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 S (∧) ¬ 0 Barbara König S (∧) S (∨) S (∨) S (∧) S (∧) S (∧) S (¬) S (∨) 1 0, 1, 0, 0 S (∨) S (∧) S (∨) S (∧) S (¬) S (∧) S (∧) S (¬) S (¬) 01 0 0 11 1 0 01 0 0 11 1 0 1 0 0 1 1 0 0 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 S (∨) S (∨) S (∨) 10 S (∨) S (∨) 10 S (∨) 0 1, 0, 0, 0 S (∨) S (∧) S (∧) S (∧) S (∧) S (∨) S (∧) S (∧) S (∧) 11 S (∧) 11 S (¬) S (¬) S (¬) S (¬) 01 0 0 11 1 0 01 0 0 11 1 0 1 0 0 1 1 0 0 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 Barbara König m1 m0 00 S (∨) S (∨) S (∨) 10 S (∨) 10 0 1, 0, 0, 0 S (∨) S (∧) “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen S (∧) S (∧) S (∧) S (∨) 00 11 S (∨) S (∨) 00 11 00 11 S (∧) S (∧) S (∧) S (∧) 11 S (¬) S (¬) 11 01 S (¬) S (¬) 01 0 0 11 1 0 01 0 0 11 1 0 1 0 0 1 1 0 0 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen 1 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations 0 11 S (∨) 10 S (∨) 00 11 S (∨) S (∨) 00 11 00 11 Bemerkung: S (∧) S (∧) S (∧) S (∧) Zuletzt werden die Ausgabewerte mit Hilfe von xor berechnet. 11 01 S (¬) S (¬) 01 0 0 11 1 0 1 0 0 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 272 Wenn jeder Teilnehmer einen privaten Ausgabewert erhalten soll, dann muss noch Alice ihre entsprechende Bits an Bob schicken und umgekehrt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 273 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Weder Alice noch Bob können in polynomieller Zeit Informationen über die Eingabewerte des jeweils anderen bestimmen. (Abgesehen von den Informationen, die sie durch Kenntnis des berechneten Funktionswertes erhalten.) Unter den Voraussetzungen, dass: Die Forderung nach halb-ehrlichem Verhalten (semi-honest behaviour) bedeutet, dass Die Teilnehmer sich korrekt bezüglich des Protokolls verhalten, aber alle erhaltenen Informationen mitprotokollieren können und aus diesen etwaige Schlüsse ziehen. die (bei Oblivious Transfer) verwendeten Funktionen tatsächlich Falltürfunktionen mit dazugehörigen Hardcore-Prädikaten sind. In manchen Fällen mag die Annahme solches Verhaltens gerechtfertigt sein, beispielsweise wenn die Teilnehmer dazu gezwungen werden können, mit bereitgestellter Software oder bereitgestellten Geräten zu arbeiten. sich Alice und Bob korrekt bezüglich des Protokolls verhalten (semi-honest behaviour). Im allgemeinen Fall sollte man jedoch mit bösartigem Verhalten (malicious behaviour) rechnen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 274 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 275 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations Es gibt die Möglichkeit, ein Protokoll, das korrekt für halb-ehrliches Verhalten ist, in ein Protokoll zu übersetzen, das korrekt für bösartiges Verhalten ist (protocol compilation Goldreich). Dabei werden als Hilfsprotokolle Bit Commitment und Zero-Knowledge-Beweise eingesetzt. Insbesondere muss jeder Teilnehmer gegenüber den anderen Teilnehmern nachweisen, dass: die Eingabewerte zu Beginn festgelegt wurden und dass sich alle Berechnungen auf diese Eingabewerte beziehen, die Zufallsbits tatsächlich zufällig sind und die korrekte Art von Nachrichten geschickt wurden. Was kann durch ein solches Protokoll nicht erzwungen werden? Einer der Teilnehmer bricht das Protokoll ab. Die Teilnehmer verwenden falsche Eingabewerte. Der zweite Punkt ist bei vielen Anwendungen kein Problem, da die Teilnehmer eine Motivation haben, den Eingabewert nicht zu manipulieren (z.B. Gebot bei Auktionen, Stimme bei Wahlen). Im allgemeinen erlaubt man alles, was auch bei der Berechnung der Funktion durch einen vertrauenswürdigen Dritten (trusted third party) passieren könnte. Das ist teilweise extrem aufwändig, da immer sichergestellt werden muss, dass der jeweils andere Teilnehmer keine zusätzliche Informationen erhält. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 276 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 277 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Verifikation kryptographischer Protokolle Wir wechseln nun die Sichtweise und beschäftigen uns mit der Verifikation kryptographischer Protokolle. Dabei gehen wir jetzt von folgenden Voraussetzungen aus: Erweiterung: Verwendung des vorgestellten Ansatzes für beliebig viele Kommunikationspartner (two-party vs. multi-party). Probleme: hohe Komplexität durch Austausch vieler Nachrichten und Erzwingung der semi-honest behaviour. Es gibt viele Vorschläge von Protokollen für bestimmte Anwendungen (Auktionen, Wahlen, etc.). Sowohl symmetrische als auch asymmetrische Verschlüsselung ist sicher und kann nicht gebrochen werden. Wir wollen sicherstellen, dass der Angreifer keinerlei Möglichkeit hat, das Protokoll zu unterlaufen. (D.h., er kommt nicht in den Besitz von geheimen Informationen, kann sich nicht für einen Dritten ausgeben, etc.) Dies soll durch (halb-)automatische Techniken verifiziert werden. D.h., wir nehmen nicht mehr die komplexitätstheoretische Sichtweise ein, bei der der Angreifer eine polynomzeitbeschränkte probabilistische Turingmaschine ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 278 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 279 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Verifikation kryptographischer Protokolle Die Protokolle, die wir im Folgenden verifizieren werden, sind von eher einfacher Art, dennoch gibt es typischerweise zahlreiche Fehler in solchen Protokollen. Mögliche Angriffe auf das Protokoll sind: Man-in-the-Middle, Replay, etc. Angriffe, die das Brechen der Verschlüsselung beinhalten, können jedoch nicht entdeckt werden. Wir betrachten ein Angreifer-Modell (sogenanntes Dolev-Yao-Modell), bei dem der Angreifer beliebig Nachrichten abfangen und weiterverwenden kann kann, jedoch nicht in der Lage ist, die Verschlüsselung zu brechen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 280 Etwas genauer . . . Eindringlingsmodell nach Dolev-Yao (I) Der Angreifer kann an beliebigen Protokollabläufen teilnehmen, beliebig Nachrichten abfangen, Nachrichten entschlüsseln, falls er den entsprechenden Schlüssel besitzt, alte Nachrichten wieder einspielen und aus bekannten Komponenten neue Nachrichten bauen und an beliebige Kommunikationspartner verschicken. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 281 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Verifikation kryptographischer Protokolle Eindringlingsmodell nach Dolev-Yao (II) Der Angreifer kann nicht: Eindringlingsmodell nach Dolev-Yao (III) Wir nehmen ebenfalls an, dass ein Teilnehmer, der eine verschlüsselte Nachricht empfängt, Nachrichten entschlüsseln, wenn er den entsprechenden Schlüssel nicht besitzt herausfinden kann, ob diese Nachricht mit einem bekannten Schlüssel K verschlüsselt ist. oder Nonces erraten, die er nicht abgefangen hat. Er erhält dann entweder die entschlüsselte Nachricht oder eine Fehlermeldung. D.h., er hat nicht nur eine sehr kleine Wahrscheinlichkeit, Nachrichten zu entschlüsseln, oder Nonces zu erraten, sondern gar keine Möglichkeit. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 282 Analog kann ein Teilnehmer Signaturen (erstellt mit einem privaten Schlüssel) erkennen und verifizieren, wenn er den dazugehörigen öffentlichen Schlüssel kennt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 283 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Verifikation kryptographischer Protokolle Warum reichen bisherige Beschreibungsmechanismen nicht aus? Um das Protokoll verifizieren zu können, benötigen wir eine exakte, formale Beschreibung des Protokolls, die keine Mehrdeutigkeiten enthält. D.h., wir müssen mehr als bisher auf exakte Protokollbeschreibungen Wert legen. Wir betrachten als Beschreibungsformalismus vor allem den angewandten π-Kalkül (es gibt jedoch auch andere geeignete Formalismen). Eine Möglichkeit ist es, ein Protokoll als Folge ausgetauschter Nachrichten zu modellieren: Beispiele: 1 2 3 B → A: PB B → A: {m}K A → B: {{K }SA }PB Needham-Schroeder-Protokoll im Einführungsteil Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 284 Barbara König Protokoll “Form. Asp. der Software-Sicherheit und Kryptographie” 285 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Verifikation kryptographischer Protokolle Diese Notation ist noch zu unpräzise. Insbesondere: Sie sagt nichts darüber aus, was ein Teilnehmer berechnet, nachdem eine Nachricht empfangen wurde. Wird überprüft, ob alle Komponenten der Nachricht korrekt sind? Werden zurückgeschickte Nonces mit früher generierten oder erhaltenen Nonces verglichen? Werden Zeitstempel überprüft? Was macht der Teilnehmer, wenn die Nachricht nicht das korrekte Format hat? Es ist unklar, welche Möglichkeiten der Angreifer hat. Können mehrere Protokollabläufe gleichzeitig durchgeführt werden? Könnte ein (oder beide) Teilnehmer auch gleichzeitig einen Protokollablauf mit dem Angreifer durchführen? Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 286 Bemerkung: das oben angegebene Protokoll der Form 1 2 3 B → A: PB B → A: {m}K A → B: {{K }SA }PB beschreibt folgendes Szenario: Bob schickt an Alice seinen öffentlichen Schlüssel. Alice schickt an Bob einen Sitzungsschlüssel K , der von ihr signiert ist und den sie mit Bob’s öffentlichen Schlüssel verschlüsselt hat. Bob verwendet den Sitzungsschlüssel, um eine Nachricht an Alice zu verschlüsseln. Dieses Protokoll ist nicht korrekt: es gibt einen Angriff. Welchen? Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 287 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Verifikation kryptographischer Protokolle Eve (E ) hat folgende Angriffsmöglichkeit (Man-in-the-Middle-Attack), falls Alice auch mit Eve kommuniziert: 1 2 3 4 5 B → E: Modelliere das Protokoll im angewandten π-Kalkül. Damit erhält man auch ein Angreifermodell und die Möglichkeit, das mögliche Systemverhalten als Transitionssystem darzustellen. PB E → A: PE E → B: {{K }SA }PB A → E: {{K }SA }PE B → A: {m}K Verifikation kryptographischer Protokolle (Schema) Die letzte Nachricht kann jedoch von Eve abgefangen und entschlüsselt werden, denn Eve besitzt K . Verwende dann eine der folgenden Analysetechniken: Einschränken auf endlichen Zustandsraum und Durchsuchen des Zustandsraum ( Model-Checking) Horn-Formeln und Resolution Verhaltensäquivalenzen Wir werden dieses Protokoll im Folgenden häufig als Beispiel einsetzen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 288 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 289 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verifikation kryptographischer Protokolle Angewandter π-Kalkül Dabei macht es einen Unterschied, welche Eigenschaft des Protokolls genau verifiziert werden soll. Wir werden hauptsächlich betrachten: Geheimhaltung: bestimmte Nachrichteninhalte bleiben gegenüber dem Angreifer geheim. (Beispielsweise verletzt das Beispielprotokoll weiter oben die Geheimhaltung. Der Angreifer erfährt m.) Authentifizierung: der Angreifer ist nicht in der Lage, sich als ein anderer Teilnehmer auszugeben. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 290 Der angewandte π-Kalkül (applied π-calculus, von Abadi und Fournet) ist ein sogenannter Prozesskalkül bzw. eine Prozessalgebra. Vorgänger dieses Kalküls sind CCS (Calculus of Communicating Systems) und der π-Kalkül, beide eingeführt von Robin Milner. Ein anderer verwandter Kalkül ist der Spi-Kalkül (Spi calculus). Prozesskalküle sind “Mini-Programmiersprachen”, in denen Interaktion von Prozessen sehr kompakt und auch sehr präzise beschrieben werden kann. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 291 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Wir beginnen damit, die Syntax des angewandten π-Kalküls einzuführen: Namen und Variable Es gibt eine Menge von Namen, deren Elemente als Kanalnamen, Schlüssel, Nonces, Nachrichteninhalte, etc. verwendet werden. Außerdem gibt es eine Menge von Variablen. Kanalnamen werden im Folgenden mit a, b, c, . . . bezeichnet, Schlüssel mit K , Nonces mit n und Nachrichteninhalte mit m. Variablen werden im Allgemeinen mit x, y , z, x1 , x2 , . . . bezeichnet. Funktionssymbole und Terme Außerdem gibt es eine Menge von Funktionssymbolen. Aus den Namen, Variablen und Funktionssymbolen werden Terme gebildet. Hinweis: dabei ist darauf zu achten, dass Funktionssymbole in der korrekten Stelligkeit auf Elemente des korrekten Typs angewandt werden. (Beispielsweise können bestimmte Funktionen nur auf Nachrichten oder Schlüssel angewandt werden.) Beispiele für Terme: encrypt(m, K ) decrypt(encrypt(m, x), y ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 292 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 293 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Gleichungen Gegeben ist eine Menge Σ von Gleichungen auf Termen (manchmal auch Theorie genannt), die das Verhalten der Funktionssymbole bzw. der dazugehörigen Funktionen beschreiben. Für zwei Terme M, N gilt Σ ` M = N (die Gleichheit M = N ist aus den Gleichungen herleitbar), falls eine der folgenden Bedingungen erfüllt ist (jeweils für geeignete Terme L, M 0 , N 0 ): M und N sind identisch (Reflexivität), die Gleichung M = N ist in Σ enthalten, es gilt M = L[x/M 0 ], N = L[x/N 0 ] und Σ ` M 0 = N 0 , es gilt M = M 0 [x/L], N = N 0 [x/L] und Σ ` M 0 = N 0 , Σ ` N = M (Symmetrie) oder Σ ` M = L und Σ ` L = N (Transitivität). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 294 Beispiele für Terme und Gleichungen: Symmetrische Verschlüsselung Funktionen sdecrypt und sencrypt, die als ersten Parameter eine Nachricht und als zweiten Parameter einen Schlüssel erhalten. Definierende Gleichungen: Σ = {sdecrypt(sencrypt(x, y ), y ) = x} Es gilt daher beispielsweise: Σ ` sdecrypt(sencrypt(m, K ), K ) = m Σ 6` sdecrypt(sencrypt(m, K ), K 0 ) = m, falls K 6= K 0 . Σ ` sencrypt(sdecrypt(sencrypt(m, K ), K ), K ) = sencrypt(m, K ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 295 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Asymmetrische Verschlüsselung Zusätzlich zu den Funktionen adecrypt und aencrypt gibt es noch einstellige Funktionen sk, pk die aus einem Geheimnis einen privaten und öffentlichen Schlüssel ableiten. Definierende Gleichungen: Σ = {adecrypt(aencrypt(x, pk(y )), sk(y )) = x} Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 296 Signaturen Zusätzlich zu den Funktionen pk, sk verwenden wir zweistellige Funktionen sigcheck, sigget und sign und eine Konstante ok. Definierende Gleichungen: Σ = {sigcheck(sign(x, sk(y )), pk(y )) = ok, sigget(sign(x, sk(y )), pk(y )) = x} Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 297 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Logischer Operator xor Wir verwenden eine zweistellige Funktion xor, definiert auf den Wahrheitswerten 0, 1. Definierende Gleichungen: Definierende Gleichungen: Σ = {xor(x, y ) = xor(y , x), xor(xor(x, y ), z) = xor(x, xor(y , z)), xor(0, x) = x, xor(x, x) = 0} Barbara König Paare Wir benutzen eine zweistellige Funktion pair und einstellige Funktionen fst, snd, die nur auf Paaren definiert sind. “Form. Asp. der Software-Sicherheit und Kryptographie” 298 Σ = {fst(pair(x, y )) = x, snd(pair(x, y )) = y } Im Folgenden werden wir auch die Notation (x, y ) statt pair(x, y ) verwenden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 299 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Bemerkungen: Syntax des angewandten π-Kalküls Ein Prozess ist entweder: der inaktive Prozess 0, eine parallele Komposition P | Q, eine Replikation !P eine Restriktion (νu)P, eine Bedingung if M = N then P else Q, ein Prozess mit Eingabe-Präfix c(x).P oder ein Prozess mit Ausgabe-Präfix chMi.P. Dabei sind P, Q Prozesse, u ein Name, c ein Kanalname, M, N Terme und x eine Variable. Barbara König Die syntaktischen Konstrukte sind eng verwandt mit den entsprechende Konstrukten in CCS. Insbesondere entspricht (νn)P dem Prozess P\{n} in CCS. Der Name u ist in (νu)P gebunden. Damit erzeugt man neue Schlüssel und Nonces, die der Umgebung nicht bekannt sind Ebenso ist die Variable x in c(x).P gebunden. (Dieses Konstrukt ist als Restriktion oder auch Verschattung bekannt.) Gebundene Namen und Variablen können (gebunden) umbenannt werden. Die Replikation !P steht für beliebig viele Kopien von P, die parallel ablaufen. Ausgabe- bzw. Eingabe-Präfix beschreiben das Senden bzw. Empfangen einer Nachricht auf dem Kanal c, wobei sich der Prozess anschließend wie P verhält. “Form. Asp. der Software-Sicherheit und Kryptographie” 300 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 301 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Evaluationskontext Ein Evaluationskontext C [ ] ist ein spezieller Prozess, in dem der Platzhalter , der für einen Prozess steht, genau einmal vorkommen. Dieser Platzhalter darf nicht unter einer Replikation, unter einer Bedingung oder unter einem Präfix vorkommen. Mit C [P] bezeichnen wir den Prozess, der dadurch entsteht, dass der Platzhalter in C [ ] durch den Prozess P ersetzt wird. Semantik des angewandten π-Kalküls (Strukturelle Kongruenz) Strukturelle Kongruenz (≡) ist die kleinste Äquivalenzrelation auf Prozessen, die mit Hilfe der folgenden Regeln hergeleitet werden kann: P≡P|0 P | (Q | R) ≡ (P | Q) | R !P ≡ P |!P (νu)0 ≡ 0 P|Q≡Q|P (νu)(νv )P ≡ (νv )(νu)P P | (νu)Q ≡ (νu)(P | Q) falls u nicht frei in P vorkommt Beispiele: C [ ] = (νm)( | a(x).bhmi.0) ist ein Evaluationskontext. ! und a(x). sind keine gültigen Evaluationskontexte. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 302 P[x/M] ≡ P[x/N] falls Σ ` M = N C [P] ≡ C [Q] falls P ≡ Q und C [ ] ein Evaluationskontext ist Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 303 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Bemerkungen zur strukturellen Kongruenz: P[x/M] ist der Prozess P, in dem jedes freie Vorkommen der Variablen x durch den Term M ersetzt wurde. Dabei ist folgendes zu beachten: freie Namen oder Variablen, die in M vorkommen, dürfen durch diese Ersetzung nicht gebunden werden. Falls dies passieren würde, muss umbenannt werden. Beispiel: ((νn)ahxi.bhni.0)[x/n] = (νn0 )ahni.bhn0 i.0 Die vorletzte Regel beschreibt, dass ein Term M durch einen anderen Term N ersetzt werden kann, falls die Gleichheit von M und N unter Σ nachgewiesen werden kann. Die letzte Regel garantiert die Abgeschlossenheit der strukturellen Kongruenz unter Evaluationskontexten. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 304 Semantik des angewandten π-Kalküls (Reduktionsregeln) Folgende Regeln beschreiben die Reduktionsrelation → auf Prozessen: chMi.P | c(x).Q → P | Q[x/M] if M = N then P else Q → P falls Σ ` M = N if M = N then P else Q → Q falls M, N variablenfreie Terme sind und Σ 6` M = N C [P] → C [Q] falls P → Q und C [ ] ein Evaluationskontext ist P → Q falls P 0 → Q 0 , P ≡ P 0 und Q 0 ≡ Q Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 305 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Bemerkungen: Die erste Regel beschreibt das Senden einer Nachricht M über einen Kanal c. Falls die Gleichheit von M und N nachgewiesen werden kann, dann wird im Fall einer Bedingung der Then-Fall betreten. Wenn die Gleicheit nicht nachgewiesen werden kann, dann darf der Else-Fall nur dann betreten werden, wenn die Terme M, N variablenfrei sind. D.h., es gibt keine Möglichkeit mehr, die Terme durch Substitutionen und Anwendungen der Gleichungen in die gleiche Form zu bringen. Terme, die durch die Theorie nicht unifiziert werden können, gelten als verschieden. Die letzten beiden Regeln beschreiben, dass die Reduktionsrelation unter Evaluationskontexten und struktureller Kongruenz abgeschlossen ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 306 Transitionssystem Das Transitionssystem eines Prozesses P besteht aus: Zustandsmenge: Äquivalenzklassen von Prozessen, die von P aus erreicht werden können. D.h., jede Äquivalenzklasse [Q]≡ mit P →∗ Q ist ein Zustand. Transitionen: Es gibt einen Übergang von [Q1 ]≡ nach [Q2 ]≡ genau dann, wenn Q1 → Q2 . Um die Anzahl der Zustände möglichst klein zu halte, sollte – wie oben beschrieben – die Menge der von P erreichbaren Prozesse durch die strukturelle Kongruenz faktorisiert werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 307 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Die entsprechenden Prozesse sehen wie folgt aus: Wir betrachten ein erstes kleines Beispielprotokoll (Nonce-Challenge): Alice: A = (νn)(chsencrypt(n, K )i. 1 2 A → B: B → A: {n}K c(x). {n − 1}K if sdecrypt(x, K ) = dec(n) then A0 Dabei ist n ein Nonce und K ist ein Sitzungsschlüssel von Bob bzw. Alice. Um dieses Protokoll im angewandten π-Kalkül zu modellieren, verwenden wir die Theorie symmetrische Verschlüsselung zusammen mit einer Dekrementierungsfunktion dec. else 0) Bob: B = c(y ). chsencrypt(dec(sdecrypt(y , K )), K )i. B0 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 308 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 309 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Bemerkungen: Reduktionsfolge bei korrektem Verhalten (ohne Eindringling): Dabei ist n der zu verschickende Nonce, der zunächst in A gebunden ist und keinem anderen Teilnehmer bekannt ist. Mit c bezeichnen wir den (offenen) Kanal, über den der Nachrichtenaustausch stattfindet. A0 bzw. B 0 sind die Fortsetzungen von Alice und Bob. Dadurch wird das Verhalten der beiden Teilnehmer nach Austausch der beiden Nachrichten beschrieben. Wir nehmen an, dass x nicht frei in A0 und y nicht frei in B 0 vorkommt. Das Verhalten von Alice und Bob zusammen wird durch S = (νK )(A | B) beschrieben. Durch die Restriktion kann man sicherstellen, dass das Geheimnis K nach außen hin verschattet ist. Falls der Nonce nicht korrekt zurückgeschickt wird, so bricht A das Protokoll ab und wird zum Null-Prozess. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 310 A | B ≡ (νn)(chsencrypt(n, K )i. c(x). if sdecrypt(x, K ) = dec(n) then A0 else 0 | B) Diese Äquivalenz gilt aufgrund der Regeln der strukturellen Kongruenz, da n nicht frei in B vorkommt. (Falls dies der Fall wäre, so müsste n zunächst umbenannt werden.) Diesen Effekt bezeichnet man auch als Erweiterung des Bindungsbereichs (scope extrusion). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 311 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Daher gilt: Aufgrund der Gleichungen können wir folgenden Term vereinfachen: A | B → (νn)(c(x). if sdecrypt(x, K ) = dec(n) then A0 Σ ` sencrypt(dec(sdecrypt(sencrypt(n, K ), K )), K ) | else 0 = sencrypt(dec(n), K ) chsencrypt(dec(sdecrypt(sencrypt(n, K ), K )), K )i. B 0) “Form. Asp. der Software-Sicherheit und Kryptographie” 312 Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 313 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Der so entstandene Prozess ist wegen Daraus ergibt sich folgende Reduktion: Σ ` sdecrypt(sencrypt(dec(n), K ), K ) = dec(n) äquivalent zu A | B →→ (νn)(if sdecrypt(sencrypt(dec(n), K ), K ) = dec(n) (νn)(if dec(n) = dec(n) 0 then A0 then A else 0 | B 0) else 0 | B 0) Und damit ergibt sich: A | B →→→ (νn)(A0 | B 0 ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 314 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 315 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Bemerkung: Im angewandten π-Kalkül ist es auch möglich, einen vollkommen privaten Kanal zu etablieren: Wir betrachten nun das vorherige Beispielprotokoll: 1 (νb)(bhmi.P | b(x).Q) 2 3 Aufgrund der Restriktion (νb) kann der Kanal b vom Angreifer nicht abgehört werden, es sei denn, einer der beiden Teilnehmer verschickt b explizit über einen anderen Kanal. Diese Mobilität von Kanalnamen spielt im π-Kalkül eine große Rolle, ist für uns hier aber nicht so wichtig. B → A: PB B → A: {m}K A → B: {{K }SA }PB Um dieses Protokoll im angewandten π-Kalkül zu modellieren, verwenden wir die Theorien für symmetrische und asymmetrische Verschlüsselung zusammen mit der Theorie für Signaturen. Im Allgemeinen werden wir Kanalnamen nicht restringieren, da wir nicht annehmen können, dass es wirklich sichere Kanäle gibt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 316 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 317 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Angewandter π-Kalkül Die entsprechenden Prozesse sehen wie folgt aus: Alice: Bob: B = (νm)(νKB ) chpk(KB )i. A = (νK )(νKA ) c(y ).a(u). c(p). (if sigcheck(y 0 , u) = ok chaencrypt(sign(K , sk(KA )), p)i. then chsencrypt(m, sigget(y 0 , u))i.B 0 c(x). else 0)[y 0 /adecrypt(y , sk(KB ))] A0 [x 0 /sdecrypt(x, K )] | !ahpk(KA )i.0 Dabei gibt Alice ihren öffentlichen Schlüssel pk(KA ) über den offenen Kanal a bekannt, behält aber KB als Geheimnis. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 318 | !bhpk(KB )i.0 Auch hier gibt Bob seinen öffentlichen Schlüssel bekannt. Außerdem empfängt er den öffentlichen Schlüssel von Alice, den er zum Überprüfen der Signatur benötigt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 319 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Angewandter π-Kalkül Modellierung des Angreifers Wie sehen Angreifer im Kalkül aus? Weitere Bemerkungen: A0 bzw. B 0 sind auch hier die Fortsetzungen von Alice und Bob. A0 enthält x 0 als freie Variable, wobei x 0 als Platzhalter für die zu empfangene (entschlüsselte) Nachricht m steht. B 0 enthält analog y 0 als freie Variable. Das Verhalten von Alice und Bob gemeinsam wird durch Sys = A | B beschrieben. Ein Angreifer E (E steht für Eve) kann ein beliebiger Prozess des Kalküls sein. Dieser wird mit dem eigentlichen System Sys (i.a. bestehend aus Alice und Bob) parallel komponiert: Sys | E . Damit können wir nun auch beschreiben, was es bedeutet, dass eine Nachricht m geheimgehalten wird: Geheimhaltung Ein System Sys hält eine Nachricht m geheim, wenn es keinen Angreifer E gibt mit einer Reduktionsfolge Sys | E →∗ P, so dass in P m als (unverschlüsselter) Nachrichteninhalt auf einem nicht-verschatteten Kanal verschickt wird. Wenn der Angreifer in den Besitz von m kommt, so kann er diese Nachricht immer auf einem offenen Kanal verschicken. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 320 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 321 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Das letzte Beispielprotokoll hält die Nachricht m nicht geheim. Es gibt einen entsprechenden Angreifer: E = (νKE ) c(pB ). chpk(KE )i. Bemerkungen: Die Schritte von Eve der Reihe nach: 1 E empfängt den öffentlichen Schlüssel von Bob. 2 E schickt ihren eigenen öffentlichen Schlüssel an Alice. 3 E empfängt den signierten und verschlüsselten Sitzungsschlüssel K von Alice. 4 E verschlüsselt den signierten Sitzungsschlüssel unter dem öffentlichen Schlüssel von Bob und schickt ihn an Bob. 5 E empfängt die mit dem Sitzungsschlüssel verschlüsselte Nachricht m von Bob. 6 E entschlüsselt diese Nachricht (denn sie kennt K !) und gibt die Nachricht auf dem offenen Kanal s bekannt. c(z). chaencrypt(v , pB )i. c(u).a(pA ). shsdecrypt(u, sigget(v , pA ))i.0) [v /adecrypt(z, sk(KE ))] Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 322 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 323 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Es gibt einen Ablauf von Sys | E , bei dem zuletzt m auf dem Kanal s verschickt wird. D.h., die Geheimhaltung von m ist nicht gewährleistet. Es gilt: Sys | E →∗ (νm)(shmi.0 | P) für einen geeigneten Prozess P. Es gibt natürlich auch Abläufe, bei denen das Geheimnis nicht preisgegeben wird, aber mindestens ein Ablauf verletzt die Geheimhaltung. Mit Hilfe einer geeigneten Theorie kann man auch Einwegfunktionen modellieren: wir verwenden ein einstelliges Funktionssymbol f (ohne Gleichungen!). Da es kein Funktionssymbol für die Umkehrfunktion gibt, kann auch niemand Urbilder ermitteln. Beispielprozess: A = chf(g)i.0 Dabei ist g ein “Geheimnis”. Kein Angreifer, der f(g) als Nachricht empfängt, kann den Wert g ermitteln. Hashfunktionen können ähnlich modelliert werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 324 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 325 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Wir modellieren nun das Needham-Schroeder-Protokoll (siehe Einführungsteil Protokoll ). Needham-Schroeder-Protokoll (fehlerhaft) 1 2 3 4 5 A → S: A, B, nA A → B: {KAB , A}KBS S → A: {nA , KAB , {KAB , A}KBS }KAS B → A: {nB }KAB A → B: check(sencrypt(x, y ), y ) = ok, die feststellt, ob eine Nachricht, mit einem bestimmten Schlüssel verschlüsselt wurde. (Ansonsten kann Alice nicht überprüfen, ob der Nonce nB mit dem korrekten Schlüssel verschlüsselt wurde.) Außerdem verwenden wir die Theorie für Paare und – um dreistellige Tupel zu erhalten – eine dreistellige Funktion triple (analog zu pair) mit den Projektionen fst, snd und thrd. {nB − 1}KAB Barbara König Als Theorien verwenden wir die Theorie für die symmetrische Verschlüsselung, sowie eine zweistellige Funktion check mit “Form. Asp. der Software-Sicherheit und Kryptographie” 326 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 327 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Alice: Bob: A = (νnA ) B = (νnB ) cS htriple(A, B, nA )i. cAB (x). cS (x). cAB hsencrypt(nB , fst(u))i. if first(u) = nA cAB (y ). then cAB hthrd(u)i. if sdecrypt(y , fst(u)) = dec(nB ) cAB (y ). then 0 if check(y , snd(u)) = ok then cAB hsencrypt(dec(sdecrypt(y , snd(u))), snd(u))i.0 else 0 else 0 [u/sdecrypt(x, KAS )] Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 328 else failhi.0 [u/sdecrypt(x, KBS )] Die Nachricht von Bob auf dem Kanal fail signalisiert, dass der Protokollablauf nicht erfolgreich war. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 329 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Server: S Es gibt noch weitere Fallunterscheidungen, wobei alle Paare von möglichen Teilnehmern (einschließlich Eve) abgefragt werden müssen. = (νK ) cS (x). if fst(x) = A then if snd(x) = B then cS hsencrypt(triple(thrd(x), K , sencrypt(pair(K , A), KBS )), KAS )i.0 else . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 330 Diese Fallunterscheidungen könnte man dadurch vermeiden, indem man eine einstellige Funktion key einführt, die zu dem Bezeichner eines Teilnehmers den Schlüssel zurückgibt, den dieser Teilnehmer mit dem Server teilt. Diese Funktion darf jedoch dem Angreifer nicht zugänglich sein! Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 331 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Authentifizierung wird typischerweise folgendermaßen definiert: Das gesamte System besteht aus der parallelen Komposition von A, B und S, zusammen mit der Restriktion der entsprechenden Schlüssel: Sys = (νKAS )(νKBS )(A | B | S) Authentifizierung Wenn Alice der Meinung ist, dass sie einen Protokollablauf mit Bob durchführt, dann hat Bob zuvor beschlossen, dass er einen Protokollablauf mit Alice durchführt. (Oder umgekehrt.) Statt S kann auch !S verwendet werden, dann wird der Server repliziert und steht immer wieder für Anfragen zur Verfügung. Um diese Eigenschaft formulieren zu können, fügen wir entsprechende Nachrichten ein, die Alice bzw. Bob an ihre Umwelt schicken, um ihre Überzeugungen bekanntzugeben. Wir modifizieren also die Prozess-Beschreibungen leicht. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 332 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 333 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Bob (modifiziert): Alice (modifiziert): B = (νnB ) A = (νnA ) cAB (x). cS htriple(A, B, nA )i. bh(B, snd(u))ii.0 | cS (x). cAB hsencrypt(nB , fst(u))i. if first(u) = nA cAB (y ). then cAB hthrd(u)i. cAB (y ). if sdecrypt(y , fst(u)) = dec(nA ) cAB hsencrypt(dec(sdecrypt(x, snd(u))), snd(u))i. then 0 ah(A, B)i.0 else 0 [u/sdecrypt(x, KAS ))] Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 334 else fail.0 [u/sdecrypt(x, KBS )] Bemerkung: Um weitere Reduktionen nicht zu blockieren, sendet Bob asynchron auf dem Kanal b, d.h., die Nachricht wird parallel zum weiteren Ablauf verschickt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 335 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers In diesem Fall müssen wir für die Authentifizierung fordern: Hier gibt es einen Angreifer ( unterlaufen kann: Angriff ) E , der das Protokoll Angreifer Eve: Für jeden Angreifer E gilt: in jedem Ablauf von Sys | E , in dem Alice bekanntgibt, dass sie mit Bob spricht, d.h., es wird eine Nachricht ah(A, B)i geschickt, erzeugt Bob zuvor eine Nachricht bh(B, A)i. D.h., er bezeugt, einen Protokollablauf mit Alice begonnen zu haben. Ähnlich müsste man beschreiben, dass Alice sich gegenüber Bob korrekt authentifiziert hat. E = cS (x). cS htriple(A, E , thrd(x))i. cAB (y ). cAB hsencrypt(nB , fst(u))i. cAB (z).0) [u/sdecrypt(y , KES )] Bemerkung: Eve hält nB nicht geheim. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 336 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 337 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Es gibt Abläufe von Sys | E , in denen Alice die Nachricht ah(A, B)i schickt, ohne dass Bob zuvor seine Nachricht geschickt hat. In diesen Abläufen ist Bob überhaupt nicht beteiligt, es kommunizieren nur Alice, der Server und Eve. Wir haben nun eine Methode gesehen, mit der man Angriffe auf ein Protokoll beschreiben kann: man spezifiziert den Angreifer E als Prozess. Aber wie kann man zeigen, dass es keinen solchen Angreifer gibt? Man müsste ja unendlich viele Angreifer ausprobieren! Wir betrachten nun einen universalen Angreifer, der alle Nachrichten abfangen kann, daraus weitere Nachrichten gewinnen kann, die er nicht-deterministisch abschickt. Es gibt einen herkömmlichen Angreifer, genau dann, wenn der universale Angreifer eine Angriffsmöglichkeit findet. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 338 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 339 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Wir führen nun einen neue Art von Prozess ein, indem wir die Syntax des Kalküls erweitern: Angreifer Sei nun auch E (M), wobei M eine Menge von Termen ist, ein Prozess. Dabei ist M das Wissen, das der Angreifer hat, d.h., die Kanalnamen, Nonces und Schlüssel, die er zu Beginn besitzt, zusammen mit den weiteren Nachrichten, die er empfangen hat. Ein variablenfreier Term M ist aus M herleitbar (in Zeichen M ` M), wenn es gibt Terme Mi ∈ M, i ∈ {1, . . . , n}, es gibt einen Term N, der keine Namen und die freien Variablen x1 , . . . , xn enthält, und Σ ` M = N[x1 /M1 , . . . , xn /Mn ] Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 340 Strukturelle Kongruenz und Reduktionsregeln für den Angreifer (νn)P | E (M) ≡ (νn)(P | E (M)) falls n in keinem der Terme von M vorkommt chMi.P | E (M) → P | E (M ∪ {M}) falls M ` c E (M) | c(x).Q → E (M) | Q[x/M] falls M ` c und M ` M Der Angreifer muss den entsprechenden Kanal c kennen, um auf ihm Nachrichten empfangen oder versenden zu können. D.h. im letzten Fall dürfen nur diejenigen Nachrichten verschickt werden, die aus dem bisherigen Wissen des Angreifers abgeleitet werden können. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 341 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Modellierung des Angreifers Modellierung des Angreifers Der Angreifer wird mit einem bestimmten Vorwissen ausgestattet. D.h., er kennt zu Beginn des Protokollablaufs bestimmte Kanäle, Schlüssel, Nonces, die Elemente der Menge M sind. Durch die Bindungsbereiche ist aber auf jeden Fall garantiert, dass der Angreifer keine “geheimen” Namen kennen, die anderswo verschattet sind. Beispiel: in dem System ((νu)P) | E ({u}) ist der Name u, den der Angreifer kennt, nicht identisch mit dem Namen, der in P gebunden ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 342 Beispiel: im Fall des Needham-Schroeder-Protokolls gibt es einen Ablauf von Sys | E ({cS , cAB , A, E , nB , KES }), in dem Alice eine Nachricht auf Kanal a erzeugt, ohne dass Bob zuvor seine Nachricht auf Kanal b erzeugt hat. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 343 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Durchsuchen des Zustandsraums – Model-Checking Durchsuchen des Zustandsraums – Model-Checking Idee: Beschreibe das gegebene Protokoll mit Hilfe des Prozesses Sys. Lege das Vorwissen M der Angreifers fest. Überprüfe durch Durchsuchen des Zustandsraums, dass Sys | E (M) nicht in einen Zustand kommen kann oder einen Ablauf erzeugen kann, in dem die Geheimhaltungs- oder Authentifizierungseigenschaften verletzt sind. Problem: Es ist nicht klar, dass der Zustandsraum des Transitionssystems von Sys | E (M) endlich ist. Um dies zu erreichen, muss man bestimmte Einschränkungen machen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 344 Einschränkungen: Die Protokollbeschreibung Sys erlaubt nur endliches Verhalten (nicht beliebig viele parallele Sitzungen, keine Replikation). Es gibt entweder nur endlich viele Äquivalenzklassen von Termen oder die Größe der vom Angreifer verschickten Terme wird beschränkt. Die Theorie muss entscheidbar sein, d.h., für zwei gegebene Terme M, N muss entschieden werden können ob Σ ` M = N gilt oder nicht gilt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 345 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Durchsuchen des Zustandsraums – Model-Checking Horn-Formeln und Resolution Wir betrachten nun einen weiteren Ansatz (entwickelt von Bruno Blanchet), der Bemerkungen: Es ist möglich, das Wissen des Angreifers on-the-fly zu generieren. D.h., immer wenn ein Angreifer einen frischen Nonce oder Schlüssel braucht, so kann er diesen raten. Bei Authentifizierung ist es oft wünschenswert, nicht nur zu überprüfen, dass ein bestimmtes Ereignis vor einem anderen Ereignis stattgefunden hat, sondern dass – falls es mehrere Protokollabläufe gibt – die entsprechenden Authentifizierungsereignisse in Eins-zu-Eins-Beziehung stehen. auch für unendliche Zustandsräume und beliebig viele parallele Sitzungen funktioniert (Replikation ist erlaubt!). überapproximiert: es gibt möglicherweise korrekte Protokolle, die nicht als solche erkannt werden. Dazu werden die Möglichkeiten des Angreifers und der Protokollablauf in Prädikatenlogik formalisiert (genauer: in Horn-Klauseln) und es wird versucht, mit Hilfe von Resolution zu zeigen, ob der Angreifer sein Ziel erreichen kann. Dieser Ansatz ist in dem Tool ProVerif (proverif.inria.fr) implementiert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 346 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 347 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Das Problem zu entscheiden, ob es auf ein gegebenes Protokoll einen Angriff gibt ist unentscheidbar (so wie die meisten Verifikationsprobbleme). Deshalb wird die Menge der erreichbaren Systemzustände überapproximiert. Falls der Schnitt der Überapproximation der erreichbaren Zustände mit der Menge der Fehlerzustände leer ist, ist das System korrekt. Wenn der Schnitt nicht-leer ist, dann kann allerdings keine Aussage getroffen werden. In diesem Fall kann man normalerweise nicht zeigen, dass in dem Schnitt kein erreichbarer Zustand liegt. Menge der Fehlerzustände Erreichbare Zustände Menge aller Zustände Überapproximation der erreichbaren Zustände Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 348 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 349 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Syntax der Prädikatenlogik Wir wiederholen zunächst Prädikatenlogik und Resolution. Gegeben seien Mengen von Variablen, Funktionssymbolen und Prädikatsymbolen. Terme werden – wie im angewandten π-Kalkül – aus Variablen und Funktionssymbolen gebildet. 1 Falls P ein Prädikatsymbol der Stelligkeit k ist, und falls t1 , . . . , tk Terme sind, dann ist P(t1 , . . . , tk ) eine Formel. 2 Für jede Formel F ist auch ¬F eine Formel. 3 4 Für alle Formeln F und G sind auch (F ∧ G ) und (F ∨ G ) Formeln. Falls x eine Variable ist und F eine Formel, so sind auch ∃xF und ∀xF Formeln. Das Symbol ∃ wird Existenzquantor und ∀ Allquantor genannt. Eine Formel der Form P(t1 , . . . , tk ) oder ¬P(t1 , . . . , tk ) heißt Literal. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 350 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 351 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Strukturen, Modelle Gegeben sei eine Formel F . Eine zu F passende Struktur A besteht auf einer Menge UA (dem Universum) und einer Interpretation, die jeder in F vorkommenden freien Variable x ein Element des Universums zuordnet. xA jedem in F vorkommenden k-stelligen Funktionssymbol f eine k → U zuordnet. Funktion f A : UA A jedem in F vorkommenden k-stelligen Prädikatsymbol P eine k zuordnet. Relation P A ⊆ UA Man kann F unter A (auf offensichtliche Weise) auswerten und erhält einen Wahrheitswert A(F ) ∈ {0, 1}. Falls A(F ) = 1, dann heißt A Modell von F . Barbara König Beispiel: F = ∀x∃yP(x, f (y )) A mit UA = N0 , P A = {(m, n) | m < n} und n − 1 falls n > 0 A f (n) = 0 sonst ist ein Modell für F . B mit UB = N0 , P B = {(m, n) | m > n} und f B (n) = n ist kein Modell für F . “Form. Asp. der Software-Sicherheit und Kryptographie” 352 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 353 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Klauselform, Hornformel Eine Formel F ist in Klauselform, wenn sie folgende Form hat: Erfüllbarkeit, Unerfüllbarkeit Eine Formel F ist erfüllbar, wenn sie ein Modell hat, ansonsten ist sie unerfüllbar. Beispiele: Die Formel F = ∀x∃yP(x, f (y )) ist erfüllbar. Die Formel G = ∀xP(x) ∧ ∃y ¬P(y ) ist unerfüllbar. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 354 F = ∀x1 . . . ∀xn F ∗ , wobei F ∗ keine Quantoren enthält und sich in konjunktiver Normalform befindet. Sie ist eine Hornformel, wenn sich zusätzlich in jeder Klausel höchstens ein positives Literal befindet. Beispiele: F = ∀x∀y (¬P(x) ∨ Q(x, y ) ∨ R(x)) ∧ (¬P(y ) ∨ R(f (y ))) ist in Klauselform, ist aber keine Hornformel. F = ∀x∀y (¬P(x) ∨ Q(x, y ) ∨ ¬R(x)) ∧ (¬P(y ) ∨ R(f (y ))) ist eine Hornformel. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 355 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Bemerkungen: Zu jeder prädikatenlogischen Formel F kann man einfach eine erfüllbarkeitsäquivalente Formel F 0 in Klauselform konstruieren. (Die Umwandlung in eine erfüllbarkeitsäquivalente Hornformel ist nicht so einfach möglich.) Es gibt drei verschiedene Typen von Hornklauseln: Ein positives Prädikat: P0 ≡ 1 → P0 (Tatsachenklausel) Nur negative Prädikate: ¬P1 ∨ · · · ∨ ¬Pn ≡ P1 ∧ · · · ∧ Pn → 0 (Zielklausel) Negative und ein positives Prädikat: ¬P1 ∨ · · · ∨ ¬Pn ∨ P0 ≡ P1 ∧ · · · ∧ Pn → P0 (Prozedurklauseln) wobei jedes Pi von der Form P(t1 , . . . , tn ) ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 356 Substitution, Unifikation Sei sub = [x1 /t1 , . . . , xn /tn ] eine Substitution und seien P1 , . . . , Pn Prädikate der Form P(t10 , . . . , tn0 ). Die Substitution sub heißt Unifikator der Prädikate, falls P1 sub = P2 sub = · · · = Pn sub. Sie heißt allgemeinster Unifikator, wenn es für jede anderen Unifikator sub 0 eine Substitution s gibt mit sub s = sub 0 . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 357 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Bemerkungen: Substitutionen werden – anders als andere Funktionen – hinter ihr Argument geschrieben. Daher wird die Verknüpfung von Substitutionen folgendermaßen notiert: für zwei Substitutionen s1 , s2 ist s1 s2 die Substitution, bei der zuerst s1 und dann s2 ausgeführt wird. Resolvent Gegeben seien zwei Klauseln K1 und K2 . Wir nehmen an, dass es keine Variable gibt, die in beiden Klauseln vorkommt. (Ansonsten kann man vorher umbenennen.) 0 negierte Seien P1 , . . . , Pn Prädikate aus K1 und ¬P10 , . . . , ¬Pm 0 0 Prädikate aus K2 , so dass P1 , . . . , Pn , P1 , . . . , Pm unifizierbar ist. Sei sub der allgemeinste Unifikator. Wir erhalten K10 und K20 , indem wir die oben angegebenen Prädikate aus K1 und K2 entfernen. Dann ist R = (K10 ∨ K20 )sub ein Resolvent der Klauseln K1 , K2 . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 358 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 359 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Beispiel: zu resolvierende Literale sind unterstrichen. P(x) ∨ P(f (y )) ∨ Q(x, y ) ¬P(f (g (z))) sub = [x/f (g (z)), y /g (z)] ) w Q(f (g (z)), g (z)) Resolution Für eine Menge M von Klauseln bezeichnen wir mit Res(M) die Menge aller Resolventen, die man aus den Klauseln von M gewinnen kann, vereinigt mit M. Durch iterierte Resolventenbildung erhält man: Res 0 (M) = M Oft benutzt man auch die Mengenschreibweise: Res n+1 (M) = Res(Res n (M)) [ Res ∗ (M) = Res n (M). für n ≥ 0 n≥0 {P(x), P(f (y )), Q(x, y )} {¬P(f (g (z)))} sub = [x/f (g (z)), y /g (z)] {Q(f (g (z)), g (z))} Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 360 Sei F = ∀x1 . . . ∀xn F ∗ eine Formel in Klauselform. Wir schreiben Res ∗ (F ∗ ) für Res ∗ ({K | K ist Klausel von F ∗ }). Res ∗ (F ∗ ) kann möglicherweise eine unendliche Menge sein. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 361 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Folgende Form der Resolution funktioniert speziell für Hornklauseln: Resolutionssatz Gegeben sei eine Formel F = ∀x1 . . . ∀xn F ∗ in Klauselform. Die Formel F ist unerfüllbar, genau dann, wenn die leere Klausel (dargestellt durch ) in Res ∗ (F ∗ ) enthalten ist. Beispiel: aus ∀x∀y (P(f (x)) ∨ Q(x)) ∧ ¬P(f (g (y ))) ∧ ¬Q(g (a)) Definition (SLD-Resolution) Eine SLD-Resolutionsherleitung der leeren Klausel hat die rechts abgebildete Form, wobei G eine Zielklausel ist, G1 , G2 , . . . nur aus negativen Literalen bestehen und K1 , . . . , Kn Tatsachen- oder Prozedurklauseln sind. kann man durch Resolution die leere Klausel herleiten. G K1 G1 K2 G2 .. . Kn Die Abkürzung SLD steht für “linear resolution with selection function for definite clauses” Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 362 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 363 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wiederholung: Prädikatenlogik und Resolution Wiederholung: Prädikatenlogik und Resolution Wir betrachten noch eine andere Form der Resolution, die vollständig für Horn-Klauseln ist: Satz (Vollständigkeit der SLD-Resolution) Sei M eine unerfüllbare Klauselmenge, bestehend aus Hornklauseln, mit nur einer Zielklausel G . Dann gibt es für F eine SLD-Resolutionsherleitung der leeren Klausel, die mit G beginnt. Unäre Resolution Eine Menge M von Hornklauseln mit einer Zielklausel G . Die Menge M ist unerfüllbar, genau dann, wenn es eine Resolutionsableitung der leeren Klausel gibt, die folgende Bedingungen erfüllt: Bis auf die letzten Resolutionsschritte wird immer eine Tatsachenklausel mit einer Prozedurklausel unifiziert. Dadurch entsteht entweder eine Tatsachen- oder eine Prozedurklausel. In den letzten Schritten werden dann Tatsachenklauseln mit der Zielklausel G resolviert, um zu erhalten. Weil eine der beiden Klauseln nur ein Element enthält, wird diese Resolution als unäre Resolution oder unit resolution bezeichnet. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 364 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 365 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Jetzt wieder zurück zur Verifikation von kryptographischen Protokollen . . . Idee: modelliere das Protokoll durch eine Menge von Hornklauseln und zeige, dass eine gegebene Zielklausel – die beispielsweise ausdrückt, dass der Angreifer in den Besitz des Geheimnisses kommen kann – nicht ableitbar ist. Um ausreichende Effizienz zu erreichen, betrachten wir eine Einschränkung des angewandten π-Kalküls: insbesondere werden Funktionssymbole nach Konstruktoren und Destruktoren unterschieden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 366 Konstruktoren und Destruktoren Wir unterteilen die Menge der Funktionssymbole in Konstruktoren und Destruktoren. Außerdem wird das Format der Gleichungen in Σ folgendermaßen eingeschränkt: alle Gleichungen sind von der Form g (M1 , . . . , Mn ) = M, wobei M1 , . . . , Mn , M nur aus Variablen, Namen und Konstruktoren aufgebaut sind (wir bezeichnen solche Terme als Konstruktorterme) und g ein Destruktor ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 367 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Die meisten der von uns betrachteten Theorien erlauben diese Klassifizierung. Beispiel: Symmetrische Verschlüsselung Funktionen sdecrypt und sencrypt Gleichungen: Σ = {sdecrypt(sencrypt(x, y ), y ) = x} Hier ist sdecrpyt ein Destruktor und sencrypt ein Konstruktor. Barbara König Außerdem wird die Semantik des Kalküls modifiziert, insbesondere die Reduktionsregel für das Versenden von Nachrichten und die Reduktionsregeln für If-Then-Else: chMi.P | c(x).Q → P | Q[x/M] if M = N then P else Q → P falls Σ ` M = N if M = N then P else Q → Q falls M, N variablenfreie Terme sind und Σ 6` M = N wobei M und N in allen Fällen Konstruktorterme sind “Form. Asp. der Software-Sicherheit und Kryptographie” 368 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 369 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Bemerkungen: durch diese Modifikation entsteht ein Kalkül mit anderem Reduktionsverhalten. Insbesondere kann Senden und If-Then-Else blockierend sein. Bemerkungen: Beispiele: Der Prozess P = chsdecrypt(m, K )i.0 verschickt seine Nachricht nie, da es sich bei sdecrypt(m) nicht um einen Konstruktorterm handelt. Der Prozess Q = c(x).chsdecrypt(x, K )i.0 verschickt seine Nachricht dann, wenn er auf c zuvor eine Nachricht empfängt und für x einsetzt, die dazu führt, dass sdecrypt(x, K ) zu einem Konstruktorterm vereinfacht werden kann. Dies ist beispielsweise bei einer Nachricht der Form sencrypt(m, K ) der Fall. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 370 Dieses blockierende Verhalten kann auch für die Modellierung Sinn machen. Insbesondere kann damit ausgedrückt werden, dass ein Prozess nicht weiterarbeitet, wenn er eine empfangene Nachricht nicht entschlüsseln kann. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 371 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Im angewandten π-Kalkül: Alice: A = (νK ) c(p). Wir betrachten das kleine Beispielprotokoll in vereinfachter Form. (Wir lassen das Signieren des Sitzungsschlüssels K weg.) 1 2 3 B → A: A → B: B → A: PB Bob: {K }PB B = (νm)(νKB ) chaencrypt(K , p)i. c(x).0 chpk(KB )i. {m}K c(y ). chsencrypt(m, adecrypt(y , sk(KB )))i.0 Alle für den Angriff nicht notwendigen Teile der Prozesse (Bekanntgabe der öffentlichen Schlüssel, Fortsetzungen, etc.) wurden weggelassen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 372 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 373 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Wir verwenden Formeln, bestehend aus: Funktionssymbolen, die den Konstruktoren aus der Theorie entsprechen. Alle möglichen Protokollabläufe dieses Protokolls – in Anwesenheit eines Angreifers – werden nun mit Hilfe von Hornklauseln modelliert. Als Theorien benötigen wir symmetrische und asymmetrische Verschlüsselung. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 374 Konstantensymbolen, die den im Protokoll vorkommenden Namen entsprechen oder das Vorwissen des Angreifers repräsentieren. Prädikatsymbolen: Att (einstellig) Intuition: Falls Att(M) für einen Konstruktorterm M gilt, so bedeutet dies, dass der Angreifer M kennt. Msg (zweistellig) Intuition: Falls Msg (c, M) für einen Kanal c und einen Konstruktorterm M gilt, so bedeutet dies, dass der Term auf dem Kanal verschickt wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 375 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Hornklauseln für die Konstruktoren Att(x1 ) ∧ · · · ∧ Att(xn ) → Att(f (x1 , . . . , xn )) für jeden n-stelligen Konstruktor in der Theorie. Hornklauseln für die Destruktoren Att(M1 ) ∧ · · · ∧ Att(Mn ) → Att(M) für jede Gleichung der Form g (M1 , . . . , Mn ) = M. Im betrachteten Beispiel: Att(x) ∧ Att(y ) → Att(sencrypt(x, y )) Att(x) ∧ Att(y ) → Att(aencrypt(x, y )) Att(x) → Att(pk(x)) Att(x) → Att(sk(x)) (K1) (K2) Im betrachteten Beispiel: Att(sencrypt(x, y )) ∧ Att(y ) → Att(x) (D1) Att(aencrypt(x, pk(y ))) ∧ Att(sk(y )) → Att(x) (K3) (D2) (K4) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 376 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 377 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Modellierung des Protokolls (Teil 1) Hornklauseln für das Verhalten des Angreifers Msg (x, y ) ∧ Att(x) → Att(y ) (E1) (Angreifer kann Nachrichten von Kanälen, die er kennt, abfangen.) Att(x) ∧ Att(y ) → Msg (x, y ) (E2) (Angreifer kann Nachrichten, die er kennt, auf Kanälen verschicken, die er kennt.) Für einen Teilnehmer des Protokolls werden folgende Hornformeln erzeugt: falls der Teilnehmer nach dem Empfang der Nachrichten x1 , . . . , xn (jeweils auf den Kanälen c1 , . . . , cn ) den Konstruktorterm M als Nachricht auf dem Kanal c verschickt, so erzeugen wir folgende Klausel: Msg (c1 , x1 ) ∧ · · · ∧ Msg (cn , xn ) → Msg (c, M) Es muss jede der vorher empfangenen Nachrichten berücksichtigt werden, denn M könnte die entsprechenden Variablen enthalten. Im betrachteten Beispiel: Verhalten von Alice Msg (c, p) → Msg (c, aencrypt(K , p)) (A1) Dabei sind c, K Konstanten und p eine Variable. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 378 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 379 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Modellierung des Protokolls (Teil 2) Falls der Term M, der verschickt wird, kein Konstruktorterm ist, so wird folgendermaßen verfahren: Wir betrachten alle minimalen Substitutionen sub, so dass Σ ` Msub = M 0 , wobei M 0 ein Konstruktorterm ist. (“Minimal” bedeutet, dass so wenig wie möglich ersetzt wird, analog zum allgemeinsten Unifikator.) Für jede solche Substitution sub wird folgende Klausel erzeugt: Msg (c1 , x1 sub) ∧ · · · ∧ Msg (cn , xn sub) → Msg (c, M 0 ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 380 Im betrachteten Beispiel: Verhalten von Bob Msg (c, pk(KB )) (B1) Msg (c, aencrypt(z, pk(KB ))) → Msg (c, sencrypt(m, z)) (B2) Dabei sind c, KB , m Konstanten und z eine Variable. Die für den zweiten Fall eingesetzte Substitution ist sub = [y /aencrypt(z, pk(KB ))], die dazu führt, dass Σ ` Msub = sencrypt(m, z), für M = sencrypt(m, adecrypt(y , sk(KB ))). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 381 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Vorwissen des Angreifers Der Angreifer erhält Wissen über alle freie Kanäle, außerdem erhält er Konstanten, die er als Nonces bzw. Schlüssel einsetzen kann. Att(m) Im betrachteten Beispiel: Att(c) Att(KE ) Zielklausel Wir betrachten zunächst den Fall der Geheimhaltung einer Nachricht m. Dann ist die Zielklausel (V1) Dabei wird die Zielklausel negiert zur Klauselmenge hinzugefügt: {¬Att(m)} (Z) (V2) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 382 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 383 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Mit Hilfe der obigen Hornklauseln, kann man die leere Klausel ableiten, wir benutzen dazu unäre Resolution. {Att(c)}(V1) {¬Att(x), ¬Att(y ), Msg (x, y )}(E2) {¬Msg (c, y ), Att(y )}(R2) {Msg (c, pk(KB ))}(B1) {¬Att(y ), Msg (c, y )}(R1) {Att(pk(KB ))}(R3) {Att(c)}(V1) {¬Msg (x, y ), ¬Att(x), Att(y )}(E1) {¬Msg (c, y ), Att(y )}(R2) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 384 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 385 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution {Att(KE )}(V2) {¬Att(x), Att(pk(x))}(K1) {¬Att(y ), Msg (c, y )}(R1) {Att(pk(KE ))}(R4) {¬Msg (c, p), Msg (c, aencrypt(K , p))}(A1) {Msg (c, pk(KE ))} {Msg (c, aencrypt(K , pk(KE )))}(R5) {¬Msg (c, y ), Att(y )}(R2) {Att(aencrypt(K , pk(KE )))}(R6) {Msg (c, aencrypt(K , pk(KE )))}(R5) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 386 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 387 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution {Att(KE )}(V2) {¬Att(x), Att(sk(x))}(K2) {Att(pk(KB ))}(R3) {¬Att(x), ¬Att(y ), Att(aencrypt(x, y ))}(K3) {¬Att(aencrypt(x, pk(y ))), ¬Att(sk(y )), Att(x)}(D1) {Att(sk(KE ))} {Att(K )}(R7) {¬Att(x), Att(aencrypt(x, pk(KB ))))} {Att(aencrypt(K , pk(KE )))}(R6) {¬Att(aencrypt(x, pk(KE ))), Att(x)} {¬Att(y ), Msg (c, y )}(R1) {Att(aencrypt(K , pk(KB ))))} {Att(K )}(R7) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 388 {Msg (c, aencrypt(K , pk(KB )))}(R8) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 389 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution {Msg (c, aencrypt(K , pk(KB )))}(R8) {¬Msg (c, y ), Att(y )}(R2) {¬Msg (c, aencrypt(z, pk(KB ))), Msg (c, sencrypt(m, z))}(B2) {Msg (c, sencrypt(m, K ))} D.h., da es einen Angriff auf dieses Protokoll gibt, ist die leere Klausel ist ableitbar. {Att(sencrypt(m, K ))} Der dazugehörige Angriff läßt sich auch aus dem Resolutionsbeweis herleiten. {Att(K )}(R7) {¬Att(K ), Att(m)} Es ist jedoch noch nicht klar, wie man im Fall eines korrekten Protokolls beweisen soll, dass die leere Klausel nicht herleitbar ist. {¬Att(m)}(Z ) {Att(m)} {¬Att(sencrypt(x, y )), ¬Att(y ), Att(x)}(D2) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 390 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 391 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Zunächst betrachten wir aber, wie weitere syntaktische Konstrukte des π-Kalküls in Hornklauseln übersetzt werden. Bisher hatten wir nur sequentielle Abfolgen von Präfixen betrachtet. Achtung: Der obige Resolutionsbeweis entspricht einem Angriff, der auch in dem Fall funktionieren würde, wenn der Sitzungsschlüssel von Alice signiert wird. (Eve “denkt” sich einen öffentlichen Schlüssel für Bob aus und schickt diesen an Alice.) In dem vereinfachten Protokoll gibt es noch einen direkteren Angriff für Eve: sie erzeugt einfach selbst den Sitzungsschlüssel, verschlüsselt diesen mit dem öffentlichen Schlüssel von Bob und schickt diese Nachricht an Bob. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 392 Parallele Komposition Ein Prozess P | Q wird dadurch übersetzt, dass sowohl die Klauseln von P als auch die Klauseln von Q erzeugt werden. Replikation In einem Prozess der Form !P wird die Replikation zunächst ignoriert. Das ist korrekt, da logische Formeln nicht “verbraucht” werden, sondern immer für Schlussfolgerungen zur Verfügung stehen. Die Tatsache, dass unter einer Replikation aber immer wieder neue Namen erzeugt werden können, wird im nächsten Fall behandelt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 393 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Verschattung In einem Prozess der Form (νu)P wird für jede Folge von Nachrichten, die zuvor empfangen wurden, ein neuer Name u erzeugt. Das gilt insbesondere wenn sich der Prozess unter einer Replikation befindet. Um dies zu beschreiben, wird u ersetzt durch u(x1 , . . . , xn ), wobei die Variablen aus den vorher vorkommenden Eingabe-Präfixen entnommen werden. If-Then-Else In einem Prozess der Form if M = N then P else Q bestimmt man die minimalen Substitutionen sub, so dass Σ ` Msub = Nsub und Msub ein Konstruktorterm ist. Auf die Klauseln, die aus P entstehen, werden dann diese Substitutionen angewandt, um die eigentlichen Hornklauseln zu erhalten. Die Klauseln, die aus Q entstehen, bleiben unverändert. Beispiel: !c(x).(νn)(dhni.P) ergibt unter anderem die Hornklausel Beispiel: c(x).(if n = sdecrypt(x, K ) then dhxi.0 else 0) Msg(c, x) → Msg (d, n(x)) Das ist ähnlich zu der sogenannten Skolemisierung, bei der Existenzquantoren in prädikatenlogischen Formeln eliminiert werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 394 sub = [x/sencrypt(n, K )] ist die einzige minimale Substitution, die zur Gleichheit von n und sdecrypt(x, K ) führt. Aus dem Then-Fall entsteht damit die Klausel Msg(c, sencrypt(n, K )) → Msg (d, sencrypt(n, K )). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 395 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Das Verifikationsverfahren arbeitet zwar mit Überapproximation, ist aber in folgendem Sinne korrekt: Korrektheit des Verifikationsverfahrens Wenn es einen Angriff auf das Protokoll gibt, dann ist die erzeugte Klauselmenge unerfüllbar, d.h., die leere Klausel ist ableitbar. bzw. Wenn die leere Klausel nicht ableitbar ist, dann gibt es keinen Angriff auf das Protokoll. D.h., das Protokoll ist korrekt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 396 Literaturhinweise zur Verifikation von kryptographischen Protokollen mit Hornklauseln: Bruno Blanchet: Using Horn Clauses for Analyzing Security Protocols. Formal Models and Techniques for Analyzing Security Protocols. IOS Press, 2010. (Überblick und Beschreibung der verwendeten Resolutionstechniken) Martı́n Abadi and Bruno Blanchet: Analyzing Security Protocols with Secrecy Types and Logic Programs. Journal of the ACM, 52(1):102-146, 2005. (Enthält unter anderem das Verfahren zur Übersetzung von Prozessen in Horn-Klauseln) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 397 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Wir betrachten nun die Funktionsweise von ProVerif: Bruno Blanchet: Automatic Verification of Correspondences for Security Protocols. Journal of Computer Security, 17(4):363-434, 2009. (Beschreibt die Verifikation von Authentifizierung) Artikel sind erhältlich unter prosecco.gforge.inria.fr/personal/bblanche/index-eng.html Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 398 ProVerif hat zwei verschiedene Eingabeformate: Hornklauseln und Prozesse des angewandten π-Kalküls. Wir verwenden nur das zweite Eingabeformat. ProVerif liefert eine der folgenden drei Ausgaben: Die zu verifizierende Eigenschaft ist erfüllt. (Zielklausel ist durch Resolution nicht herleitbar.) Es gibt einen Angriff (mit Ausgabe des Angriffs). Die Eigenschaft kann nicht verifiziert werden. (Zielklausel ist durch Resolution herleitbar, es kann jedoch kein Angriff gefunden werden.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 399 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Wir betrachten nun das obige Beispielprotokoll modellieren es in ProVerif: Protokoll und param traceDisplay = long. (* Kleines Beispiel-Protokoll - vereinfacht *) free c. (* Asymmetric Encryption *) fun aencrypt/2. fun pk/1. fun sk/1. reduc adecrypt(aencrypt(m,pk(k)),sk(k)) = m. (* Symmetric Encryption *) fun sencrypt/2. reduc sdecrypt(sencrypt(m,k),k) = m. Barbara König query attacker:secretM[]. let processA = new K; in(c, p); out(c, aencrypt(K,p)); in(c, x). let processB = new secretM; new Kb; out(c,pk(Kb)); in(c,y); out(c,sencrypt(secretM,adecrypt(y,sk(Kb)))). process (processA | processB) “Form. Asp. der Software-Sicherheit und Kryptographie” 400 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 401 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Wir betrachten nun die Modellierung des fehlerhaften Needham-Schroeder-Protokolls in ProVerif. param traceDisplay = long. Aufruf von ProVerif: > proverif -in pi beispiel-prot-simple [...] A trace has been found. RESULT not attacker:secretM_8[] is false. Es wird auch der Angriff explizit ausgegeben. (* Needham-Schroeder - fehlerhaft *) free cs. free cab. free fail. (* Symmetric Encryption *) fun sencrypt/2. fun ok/0. reduc sdecrypt(sencrypt(m,k),k) = m. reduc check(sencrypt(m,k),k) = ok(). (* Dekrementierung *) fun dec/1. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 402 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 403 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution query ev:a(x,y) ==> ev:b(y,x). let processA = new Na; out(cs, (A,B,Na)); in(cs, x); let (N,Kab,M) = sdecrypt(x,Kas) in if N=Na then out(cab,M); in(cab,y); if check(y,Kab)=ok() then out(cab,sencrypt(dec(sdecrypt(y,Kab)),Kab)); event a (A,B). Barbara König let processB = new Nb; in(cab,x); let (Kab,a) = sdecrypt(x,Kbs) in event b (B,a); out(cab,sencrypt(Nb,Kab)); in(cab,y); if sdecrypt(y,Kab) = dec(Nb) then 0 else out(fail,()). “Form. Asp. der Software-Sicherheit und Kryptographie” 404 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 405 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution let processS = in(cs,(t1,t2,N)); new K; if t1=A then (if t2=B then out(cs,sencrypt((N,K,sencrypt((K,A),Kbs)),Kas)) else if t2=E then out(cs,sencrypt((N,K,sencrypt((K,A),Kes)),Kas))) else if t1=B then (if t2=A then out(cs,sencrypt((N,K,sencrypt((K,B),Kas)),Kbs)) else if t2=E then out(cs,sencrypt((N,K,sencrypt((K,B),Kes)),Kbs))) else if t1=E then (if t2=A then out(cs,sencrypt((N,K,sencrypt((K,E),Kas)),Kes)) else if t2=B then out(cs,sencrypt((N,K,sencrypt((K,E),Kbs)),Kes))). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 406 process new Kas; new Kbs; (processA | processB | processS) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 407 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Hier wird korrekte Authentifizierung durch Korrespondenz von Ereignissen überprüft: Bei Aufruf von ProVerif wird wieder ausgegeben, dass die Eigenschaft nicht erfüllt ist: Wenn Ereignis (event) a(x,y) eintritt, dann muss zuvor Ereignis b(y,x) eingetreten sein. > proverif -in pi my-needham-schroeder [...] A trace has been found. RESULT ev:a(x_25,y_26) ==> ev:b(y_26,x_25) is false. Dazu reichert man die Syntax und Semantik des π-Kalküls um Ereignisse an. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 408 Die Verifikation funktioniert in etwa folgendermaßen: es wird überprüft, dass in jedem Resolutionsbeweis, der eine Tatsachenklausel mit dem Ereigniss a(x,y) ableitet, b(y,x) als Hypothese verwendet wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 409 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Das Needham-Schroeder-Protokoll kann korrigiert werden, so dass die Verifikation erfolgreich ist. Insbesondere muss dazu der Server den Namen des Kommunikationspartners mit in die Nachricht aufnehmen und Alice muss dies überprüfen. Wir ändern das Protokoll (insbesondere die Prozesse, die Alice und den Server beschreiben) entsprechend ab . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 410 let processA = new Na; out(cs, (A,B,Na)); in(cs, x); let (N,b,Kab,M) = sdecrypt(x,Kas) in if N=Na then if b=B then out(cab,M); in(cab,y); if check(y,Kab)=ok() then out(cab,sencrypt(dec(sdecrypt(y,Kab)),Kab)); event a (A,B). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 411 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution let processS = in(cs,(t1,t2,N)); new K; if t1=A then (if t2=B then out(cs,sencrypt((N,B,K,sencrypt((K,A),Kbs)),Kas)) else if t2=E then out(cs,sencrypt((N,E,K,sencrypt((K,A),Kes)),Kas))) else if t1=B then (if t2=A then out(cs,sencrypt((N,A,K,sencrypt((K,B),Kas)),Kbs)) else if t2=E then out(cs,sencrypt((N,E,K,sencrypt((K,B),Kes)),Kbs))) else if t1=E then (if t2=A then out(cs,sencrypt((N,A,K,sencrypt((K,E),Kas)),Kes)) else if t2=B then out(cs,sencrypt((N,B,K,sencrypt((K,E),Kbs)),Kes))). Dieses Verifikationsverfahren ist eine Approximationstechnik. Über-Approximation entsteht insbesondere durch folgende Effekte: Die Kodierung ignoriert wie oft eine Aktion ausgeführt wird. Auch wenn eine Nachricht nur einmal empfangen werden kann, kann die dazugehörige Hornklausel beliebig oft verwendet werden. Das bedeutet im Wesentlichen, dass jeder Prozess als replizierter Prozess betrachtet wird. Außerdem entsteht Überapproximation durch die Behandlung von If-Then-Else-Anweisungen. (Vor allem durch fehlende Einschränkungen für den Else-Fall.) Des weiteren können verschattete Namen, die eigentlich verschieden sind, durch die Approximation als gleich angesehen werden. Dies führt jedoch nur zu zusätzlichem Verhalten, tatsächliche Systemabläufe werden nie unterschlagen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 412 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 413 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution In folgendem Beispiel kann Prozess processB nur einen Nonce entschlüsseln und zurückschicken, processA schickt daher niemals das Geheimnis. Das kann durch die Überapproximation jedoch nicht erkannt werden. param traceDisplay = long. (* Beispiel fuer Ueberapproximation *) free c. (* Symmetric Encryption *) fun sencrypt/2. reduc sdecrypt(sencrypt(m,k),k) = m. let processB = in(c,x); out(c,sdecrypt(x,K)). process new K; new secretM; (processA | processB) query attacker:secretM[]. Barbara König let processA = new N1; new N2; out(c,sencrypt(N1,K)); out(c,sencrypt(N2,K)); in(c,x1); in(c,x2); if x1=N1 then if x2=N2 then out(c,secretM) else 0 else 0. “Form. Asp. der Software-Sicherheit und Kryptographie” 414 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 415 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution ProVerif erzeugt folgende Ausgabe: > proverif -in pi approx [...] Could not find a trace corresponding to this derivation. RESULT not attacker:secretM_7[] cannot be proved. Ein echter Angriff wird jedoch gefunden, wenn processB repliziert wird. Denn dann kann er beliebig viele Nonces entschlüsseln. Barbara König Wir betrachten nun die von ProVerif verwendeten Resolutionstechniken genauer. Ein Hauptproblem beim Einsatz von Resolution ist die Terminierung. Für eine gegebene Menge M von Klauseln ist es normalerweise nicht klar, dass Res ∗ (M) endlich ist und der Resolutionsprozess damit terminiert. “Form. Asp. der Software-Sicherheit und Kryptographie” 416 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 417 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: Wir betrachten einen Konstruktor f und einen Destruktor g (beide einstellig) mit der Gleichung g(f(x)) = x Dies ergibt folgende Hornklauseln: Att(f(x)) → Att(x) Att(x) → Att(f(x)) Wir nehmen an, dass der Angreifer folgendes Vorwissen hat: Att(a) Att(f(a)) für eine Konstante a. Ziel ist es, zu zeigen, dass der Angreifer nicht in den Besitz von b gelangen kann, wobei b eine weitere Konstante ist. D.h., die Zielklausel ist ¬Att(b). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 418 Probleme mit SLD-Resolution: Bei SLD-Resolution kann folgende unendliche Folge von Resolventen entstehen: {¬Att(b)} {¬Att(f(x)), Att(x)} {¬Att(f(b))} {¬Att(f(x)), Att(x)} {¬Att(f(f(b)))} .. . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 419 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Daher wird folgendes Vorgehen benutzt: Probleme mit unärer Resolution: Wir beginnen mit der Klauselmenge ohne die Zielklausel. Auch unäre Resolution funktioniert hier nicht. Wir erhalten folgenden unendlichen Resolutionsbeweis: Es gibt eine Selektionsfunktion sel, die aus jeder Klausel ein oder kein negatives Literal auswählt. Klauseln K1 , K2 werden nur dann resolviert, wenn kein Literal in K1 ausgewählt ist und das zu resolvierende Literal von K2 ausgewählt ist. {Att(a)} {¬Att(x), Att(f(x))} {Att(f(a))} {¬Att(x), Att(f(x))} {Att(f(f(a)))} Nachdem alle oben möglichen Resolventen wie oben beschrieben gebildet wurden, werden alle Klauseln entfernt, bei denen ein Literal selektiert ist. Dann wird, mit den übrigen Klauseln, von der Zielklausel aus eine Rückwärtsresolution (ähnlich zur SLD-Resolution) durchgeführt. .. . (Das ist eine etwas vereinfachte Darstellung! Details befinden sich in den Artikeln von Blanchet.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 420 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 421 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Außerdem wird darauf geachtet, dass “überflüssige” Klauseln, die bereits durch andere Klauseln subsumiert werden, sofort entfernt werden. Subsumption Gegeben seien zwei Klauseln K1 , K2 folgender Form: K1 = P1 ∧ · · · ∧ Pm → P0 K2 = P10 ∧ · · · ∧ Pn0 → P00 Man sagt, dass die Klausel K1 die Klausel K2 subsumiert (in Zeichen: K1 w K2 ), falls es eine Substitution sub gibt mit: P0 sub = P00 und {P1 , . . . , Pm }sub ⊆ {P10 , . . . , Pn0 } Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 422 Bemerkungen: In obiger Definition gilt möglicherweise m = 0 oder n = 0, d.h., es gibt keine negativen Literale. Aus K1 w K2 folgt K1 |= K2 (logische Implikation). Die umgekehrte Richtung gilt jedoch nicht notwendigerweise. Falls die Resolution von K2 und einer weiteren Klausel K einen Resolventen R2 ergibt, so ergibt entweder die Resolution von K1 und K einen Resolventen R1 mit R1 w R2 oder es gilt bereits K1 w R2 . D.h., es reicht, mit der Klausel K1 weiterzuresolvieren, da alle Resolutionsschritte von K2 durch K1 “imitierbar” sind und man sogar allgemeinere Klauseln erhält. Klauseln, die durch andere Klauseln subsumiert werden, werden aus der Menge der Resolventen entfernt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 423 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: Gegeben seien folgende Klauseln K1 , K2 : K1 = P(x) → R(x) K2 = P(f(x)) ∧ Q(x) → R(f(x)) Die Klausel K1 subsumiert K2 (K1 w K2 ). Die dazugehörige Substitution ist sub = [x/f(x)] Barbara König Selektionsfunktion Wir nehmen an, dass eine Selektionsfunktion existiert, die einer Klausel K = P1 ∧ · · · ∧ Pm → P0 entweder ein negatives Literal zuordnet, das in der Klausel vorkommt (sel(K ) = {Pi }) oder die leere Menge zurückgibt (sel(K ) = ∅). Im ersten Fall sagt man, dass Pi selektiert ist, im zweiten Fall ist kein Literal selektiert. “Form. Asp. der Software-Sicherheit und Kryptographie” 424 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 425 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Saturierung/Sättigung Die folgenden Korrektheitsbeweise funktionieren mit jeder beliebigen Selektionsfunktion. Für die Terminierung ist es jedoch wichtig, eine “gute” Selektionsfunktion zu wählen. In unserem Fall ist eine gute Selektionsfunktion eine Funktion, die niemals ein Prädikat der Form Att(x) selektiert. Für solche Literale ergeben sich nämlich sehr viele Resolutionsmöglichkeiten. Falls es unter den negativen Literalen ein Prädikat gibt, das von Att(x) verschieden ist, dann wird aber auf jeden Fall eines davon selektiert. Gegeben sei eine Menge M von Klauseln. Wir bestimmen eine Menge M 0 dadurch, dass wir (iteriert) alle möglichen Resolventen aus den Klauseln in M bilden (analog zu Res ∗ ). Dabei wird jedoch folgende Bedingung eingehalten: Angenommen, es werden zwei Klauseln K1 , K2 miteinander resolviert, wobei das positive Literal aus K1 und das negative Literal aus K2 genommen wird: dann darf in K1 kein Literal selektiert sein und das zu resolvierende Literal in K2 muss selektiert sein. Klauseln, die durch bereits existierende Klauseln subsumiert werden, werden sofort entfernt. Wir bestimmen nun Saturate ∗ (M) dadurch, indem wir alle Klauseln K mit sel(K ) 6= ∅ aus M 0 entfernen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 426 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 427 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: wir bilden Saturate ∗ (M) für folgende Klauselmenge M (noch ohne Zielklausel) {{¬Att(f(x)), Att(x)}, {¬Att(x), Att(f(x))}, {Att(a)}, {Att(f(a))}} Beispiel (Fortsetzung): Nur in der ersten Klausel ist ein Literal selektiert. Diese Klausel kann mit der zweiten und vierten Klausel resolviert werden und man erhält: Die Saturierung terminiert also und wir erhalten als Ergebnis: {¬Att(x), Att(x)} {Att(a)} Saturate ∗ (M) = {{¬Att(x), Att(f(x))}, {Att(a)}, {Att(f(a))}, {¬Att(x), Att(x)}} In beiden Klauseln ist kein Literal selektiert. Außerdem ist die erste der beiden neuen Klauseln eine Tautologie (und könnte entfernt werden, da daraus keine neuen Klauseln resolviert werden können), die zweite gab es bereits. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 428 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 429 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Bemerkung: Die übrigbleibenden Klauseln sind alle von der Form Att(x1 ) ∧ · · · ∧ Att(xn ) → P0 , wobei auch n = 0 möglich ist. Dann handelt es sich um eine Tatsachenklausel. Korrektheit der Saturierung Gegeben sei eine Zielklausel G . Wenn aus M ∪ {G } durch Resolution die leere Klausel hergeleitet werden kann, so kann man auch aus Saturate ∗ (M) ∪ {G } die leere Klausel herleiten (und umgekehrt). Beweis: Da Saturate ∗ (M) nur Klauseln enthält, die aus M hergeleitet werden können, kann man eine Herleitung der leeren Klausel aus Saturate ∗ (M) ∪ {G } immer in eine Herleitung der leeren Klausel aus M ∪ {G } umwandeln. Die andere Richtung ist etwas komplizierter, da bestimmte Klauseln (nämlich diejenigen, in denen ein Literal selektiert ist) entfernt wurden. Angenommen, es gibt eine Herleitung der leeren Klausel aus M ∪ {G }. Wir nehmen an, dass es sich dabei um unäre Resolution handelt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 430 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 431 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Diese Herleitung beginnt – neben der Verwendung der Zielklausel – mit Klauseln aus M. Diese Klauseln, die nicht aus anderen Klauseln resolviert werden, bezeichnen wir als Hypothesen. Zunächst argumentieren wir, dass diese Resolutionsableitung so umgeformt werden kann, dass bei Resolution von zwei Klauseln K1 , K2 , wobei K1 eine Tatsachenklausel ist und sel(K2 ) 6= ∅ gilt, das selektierte Literal resolviert wird. Ist dies nicht der Fall, so wird das selektierte Literal später mit einer Tatsachenklausel resolviert, in diesem Fall kann jedoch die Reihenfolge der Resolutionen so geändert werden, dass das selektierte Literal sofort resolviert wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 432 Wir transformieren nun diesen Resolutionsbeweis in einen Resolutionsbeweis für Saturate ∗ (M) ∪ {G }. Die dabei entstehenden Resolutionsbeweise haben Klauseln aus M 0 als Hypothesen, der im letzten Schritt entstehende Resolutionsbeweis besitzt dann nur noch Klauseln aus Saturate ∗ (M) als Hypothesen. Falls der Beweis als Hypothese eine Klausel K aus M 0 verwendet, die nicht in Saturate ∗ (M) liegt, so gilt sel(K ) 6= ∅. Diese Klausel wird mit einer oder mehreren Tatsachenklausel K1 , . . . , Kn resolviert, wobei immer mit dem in K selektierten Literal resolviert wird (nach der oben beschriebenen Umformung). Dadurch entstehen Resolventen R1 , . . . , Rn , die alle Elemente von M 0 sind. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 433 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Also entfernen wir K aus dem Resolutionsbeweis. Das bedeutet, dass wir nun zusätzlich R1 , . . . , Rn als Hypothesen verwenden, die aber alle in M 0 liegen. In jedem Schritt wird mindestens eine Klausel entfernt, die Größe des Resolutionsbeweises bleibt ansonsten unverändert. D.h., nach einer festen Anzahl von Schritten erhalten wir einen Resolutionsbeweis, der nur noch Klauseln K mit sel(K ) = ∅ als Hypothesen verwendet. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 434 Anschließend wird – ausgehend von der Zielklausel G – eine Rückwärtsresolution (ähnlich zu einer SLD-Resolution) durchgeführt. Dabei werden noch folgende Optimierungen verwendet: Suchpfade, die zu subsumierten Klauseln führen, werden nicht mehr weiterverfolgt. Die Anzahl der erzeugten Klauseln wird durch Einsatz der Selektionsfunktion minimiert. (Wird nicht im Detail besprochen.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 435 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: es gilt G = {¬Att(b)} und Saturate ∗ (M) = {{¬Att(x), Att(f(x))}, {Att(a)}, {Att(f(a))}, Auch bei diesem Vorgehen ist nicht klar, dass das Verfahren immer terminiert. In der Praxis terminiert das Verfahren jedoch sehr häufig. Wir können nur G mit der vierten Klausel aus Saturate ∗ (M) resolvieren, wodurch wir wieder G erhalten (Subsumierung). Man kann auch zeigen, dass für eine bestimmte Klasse von kryptographischen Protokollen (sogenannte tagged protocols) das Resolutionsverfahren immer terminiert. {¬Att(x), Att(x)}} D.h., nach wenigen Schritten wird abgebrochen und festgestellt, dass die leere Klausel nicht herleitbar ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 436 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 437 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Wir betrachten nun eine dritte Technik zur Verifikation von kryptographischen Protokollen: Verhaltensäquivalenzen. Dazu nehmen wir an, dass ein externer Beobachter mit dem System interagiert. Man möchte feststellen, ob der Beobachter das System Sys von einem anderen System Sys 0 unterscheiden kann oder nicht. (Ähnlich zu Zero-Knowledge.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 438 Wir betrachten wieder die ursprüngliche Variante des angewandten π-Kalküls (keine Unterscheidung von Konstruktoren und Destruktoren, kein blockierendes Senden und If-Then-Else). Weitere Einzelheiten sind beschrieben in: Martı́n Abadi, Cédric Fournet: Mobile Values, New Names, and Secure Communication. Proc. of POPL ’01, pp. 104–115, ACM, 2001. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 439 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Zunächst definieren wir die Beobachtungen, die gemacht werden können. Beobachtungen Sei P ein Prozess des angewandten π-Kalküls. Wir schreiben P ⇓ a (a kann in P beobachtet werden), falls es einen Evaluationskontext C [ ] gibt mit P →∗ C [ahMi.Q], wobei a in C nicht gebunden ist. Intuitiv kann man Ausgabeaktionen auf Kanälen (in diesem Fall auf Kanal a) beobachten. Eine solche Beobachtung heißt auch barb (= Stachel). Beispiel: Wir definieren nun Relation auf Prozessen, wobei diese Relationen die Eigenschaft haben müssen, dass zwei Prozesse, die in Relation stehen, sich gegenseitig simulieren können. Bisimulation Eine symmetrische Relation R auf Prozessen heißt Bisimulation, wenn sie folgende Eigenschaften hat: Falls P R Q, dann gilt: Aus P ⇓ a folgt Q ⇓ a (für jede Beobachtung a) Falls P →∗ P 0 für einen Prozess P 0 , dann gibt es einen Prozess Q 0 mit Q →∗ Q 0 und P 0 R Q 0 . Für jeden Evaluationskontext C [ ] gilt C [P] R C [Q]. Für den Prozess P = chNi.0 | c(x).ahxi.0 gilt P ⇓ c und P ⇓ a. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 440 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 441 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Bemerkungen: Beobachtungskongruenz Falls es für zwei Prozesse P, Q eine Bisimulation R gibt mit P R Q, dann schreiben wir P ≈ Q und sagen, dass P, Q beobachtungskongruent sind. Man unterscheidet auch zwischen starken und schwachen Bisimulationen. Bei schwachen Bisimulationen kann ein Schritt durch mehrere andere Schritte simuliert werden. Daher handelt es sich hier um eine schwache Bisimulation. Der Evaluationskontext C [ ] steht intutiv für den Angreifer. Falls er die beiden Prozesse unterscheiden kann, dann kann er dies durch eine Beobachtung auf einem Kanal a bekanntgeben. Die obige Definition für Bisimulation ist algorithmisch unbrauchbar, da über alle Kontexte quantifiziert wird. Es gibt jedoch alternative, besser handhabbare Definitionen. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 442 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 443 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Beispiele: folgende Paare von Prozessen sind beobachtungskongruent P = 0, Q = (νa)(ahMi.0) P = 0, Q = (if a = b then chMi.0 else 0) P = (νa)(chai.0), Q = (νb)(chf(b)i.0), wobei f eine Funktion ist, für die keine Gleichungen existieren (Einwegfunktion). D.h., es ist ununterscheidbar, ob ein frischer Wert geschickt wird oder ein frischer Wert, auf den eine Einwegfunktion angewandt wurde. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 444 Geheimhaltung mit Verhaltensäquivalenzen Sei P ein Prozess mit einer freien Variablen x, die für eine Nachricht steht. Ein Prozess P gewährleistet die Geheimhaltung der entsprechenden Nachricht, wenn P[x/m] ≈ P[x/n] für zwei beliebige Namen m, n gilt. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 445 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen: Beispiel MACs Beispiel: Der Prozess P = (νK )(chsencrypt(x, K )i.0) hält alle Nachrichten geheim, die für x eingesetzt werden, denn es gilt: (νK )(chsencrypt(n, K )i.0) ≈ (νK )(chsencrypt(m, K )i.0) für beliebige Namen m, n. Intuition: der Angreifer kennt höchstens einen Schlüssel, der verschieden von K ist. Auch wenn der Angreifer m bzw. n besitzen sollte, so kann er nicht überprüfen, ob diese Nachrichten verschlüsselt den verschickten Nachrichten entsprechen. Alles, was er erzeugt, ist verschieden von sencrypt(m, K ) und sencrypt(n, K ). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 446 Wir betrachten nun als Anwendungsbeispiel sogenannte MACs (Message Authentication Codes), die auf symmetrischer Verschlüsselung basieren. Sie haben eine ähnliche Funktion wie Signaturen, die auf asymmetrischer Verschlüsselung basieren. Üblicherweise wird dabei eine Nachricht, zusammen mit einer Art Verschlüsselung der Nachricht unter einem symmetrischen Schlüssel K verschickt. Dann können die Besitzer von K überprüfen, dass tatsächlich einer von ihnen die Nachricht erzeugt hat. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 447 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen: Beispiel MACs Verhaltensäquivalenzen Zur Formalisierung im angewandten π-Kalkül verwenden wir eine zweistellige Funktion mac. Der Term mac(K , m) (für eine Nachricht m und einen symmetrischen Schlüssel K ) wird als Beweis aufgefasst, dass die Nachricht von einem Teilnehmer geschickt wurde, der den symmetrischen Schlüssel K kennt. Bei Empfang einer Nachricht m mit MAC M berechnet der Empfänger mac(K , m) und überprüft, ob dieser Wert gleich M ist. “Form. Asp. der Software-Sicherheit und Kryptographie” 448 Barbara König Szenario: eine von Alice weitergeleitete Nachricht wird von Bob empfangen und nur dann weitergeschickt, wenn sie die korrekte MAC hat: A = !a(x).bhpair(x, mac(K , x))i.0 B = b(y ). (if mac(K , fst(y )) = snd(y ) then chfst(y )i.0 else 0) Sys = (νK )(A | B) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 449 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Wir diskutieren nun Aspekte, die sich bei der Erzeugung von MACs mit Hilfe der Merkle-Damgård-Konstruktion ergeben. Diese funktioniert wie folgt: Es wird eine Einweg-Kompressionsfunktion h verwendet, die zwei Blöcke auf einen Block abbildet. Diese Konstruktion von MACs hat in der vorgestellten Form folgenden Nachteil: Ein initialer Wert (= Schlüssel K ) wird nun mit dem ersten Block der Nachricht bezüglich h verknüpft. Der entstehende Wert wird mit dem zweiten Block der Nachricht verknüpft, usw. Falls eine MAC für eine Nachricht m bekannt ist, so kann man – da die Kompressionsfunktion h bekannt ist – einfach eine MAC für eine Nachricht m konkateniert mit m0 gewinnen. Nachricht m K Block 1 Block 2 Block n h h h Barbara König MAC “Form. Asp. der Software-Sicherheit und Kryptographie” 450 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 451 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Dazu stellen wir folgende Gesetze auf: mac(x, y ) = f(x, y ) Wir modellieren diese Art der MAC-Berechnung im angewandten π-Kalkül. Dazu verwenden wir f(x, null) = x f(x, concat(y , z)) = h(f(x, y ), z) eine zweistellige MAC-Funktion f (entspricht mac), die zweistellige Kompressionsfunktion h, eine Konstante null für die leere Folge von Blöcken und eine zweistellige Funktion concat (zur Konkatenation von Blöcken (eine Folge m1 , m2 , m3 wird als concat(concat(concat(null, m1 ), m2 ), m3 ) dargestellt). Natürlich sollte immer mindestens ein Block verschlüsselt werden, ansonsten wird der Schlüssel offengelegt. Beispiel: mac(K , concat(concat(null, m1 ), m2 )) = f(K , concat(concat(null, m1 ), m2 )) = h(f(K , concat(null, m1 )), m2 ) = h(h(f(K , null), m1 ), m2 ) = h(h(K , m1 ), m2 ) “Form. Asp. der Software-Sicherheit und Kryptographie” 452 Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 453 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Der Angreifer im angewandten π-Kalkül sieht wie folgt aus: Der Angriff sieht formal wie folgt aus: E = ahmi.b(y ).bhpair(concat(m, m0 ), h(snd(y ), m0 ))i.0 Gegeben ist eine MAC M = f(K , m) Dann berechnet man daraus 0 0 0 h(M, m ) = h(f(K , m), m ) = f(K , concat(m, m )) D.h., falls es eine MAC zu einer existierenden Nachricht m gibt, so kann der Angreifer MACs zu beliebigen Verlängerungen von m erzeugen, ohne K zu kennen. Eve läßt von Alice eine MAC für die Nachricht m erstellen, schickt dann aber die Konkatenation von m, m0 mit einer gültigen MAC, die aber nicht von Alice erstellt wurde. Eine Möglichkeit, solche Angriffe zu verhindern, ist es, folgende Funktion für die Berechnung der MAC zu verwenden: mac(x, y ) = f(x, f(x, y )) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 454 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 455 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Damit haben wir drei Möglichkeiten, MACs zu spezifizieren: Mit einer zweistelligen Funktion mac, ohne jede Gleichungen. Mit der Gleichung mac(x, y ) = f(x, y ). Mit der Gleichung mac(x, y ) = f(x, f(x, y )) Dabei wird f – wie oben – durch iterierte Anwendung der Kompressionsfunktion h berechnet. Alle drei Möglichkeiten, können in ProVerif modelliert werden. Da die Gleichungen jedoch nicht alle die für Destruktoren/Konstruktoren notwendige Form haben, muss man sich auf die eingeschränkte Gleichungsbehandlung in ProVerif verlassen. Kleine Änderungen an den Gleichungen führen oft zu Nicht-Terminierung. Im ersten und letzten Fall kann der Prozess Sys verifiziert werden. Dies geschieht durch Verwendung von Korrespondenzen: Bob löst ein Ereignis der Form macb(x) aus, falls er eine Nachricht x weiterschickt. Vorher muss ein Ereignis maca(x) stattgefunden haben, direkt bevor Alice die Nachricht mit einer MAC versieht. Im zweiten Fall kann der Prozess nicht verifiziert werden. Es wird jedoch kein durchführbarer Angriff gefunden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 456 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 457 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Wir möchten nun jedoch zeigen, dass die dritte Variante für die Erzeugung von MACs immer äquivalent zur ersten Variante ist. D.h., wenn es keinen Angriff in der ersten Variante gibt, dann gibt es auch keinen in der dritten Variante. Dies geschieht mit Hilfe der Beobachtungskongruenz. Korrektheit der Erzeugung von MACs Sei P ein Prozess, in dem die Schlüssel K1 , . . . , Kn frei vorkommen und nur für die Erzeugung von MACs verwendet werden. Sei P 0 der Prozess der aus P entsteht, indem jedes Vorkommen von mac(Ki , M) durch f(Ki , f(Ki , M)) ersetzt wird. Außerdem gibt es für mac keine Gleichungen und f ist wie oben mit Hilfe der Kompressionsfunktion h definiert. Dann gilt: Bemerkung: Mit Hilfe der Beobachtungskongruenz kann zwar Geheimhaltung (siehe oben) und auch Authentifizierung spezifiziert werden, dafür gibt es jedoch meist effizientere Methoden (z.B. Model-Checking oder Resolution). (νK1 ) . . . (νKn )P ≈ (νK1 ) . . . (νKn )P 0 (Ohne Beweis) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 458 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 459 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Verhaltensäquivalenzen Verhaltensäquivalenzen sind jedoch dann nützlich, wenn man zeigen will, dass eine Transformation des Protokolls nichts am Verhalten des Protokolls ändert (siehe Berechnung von MACs). man genau überprüfen will, welches Verhalten der Angreifer sehen bzw. nicht sehen kann. (Beispielsweise möchte man für Wahlprotokolle, dass eine Wahl, in der Alice X gewählt hat, für den Angreifer ununterscheidbar ist von einer Wahl, in der Alice Y gewählt hat. Das beschreibt sogenannte receipt-freeness, welche bedeutet, dass der Angreifer Alice nicht zu einer bestimmten Wahl zwingen kann.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 460 Wir diskutieren noch kurz, wie man Verhaltensäquivalenzen konkret nachweisen kann. Anstatt auf einem unbeschrifteten Transitionssystem arbeitet man auf einem beschrifteten Transitionssystem (LTS = labelled transition systems). Dabei beschreiben die Beschriftungen die Interaktionen des Prozesses mit seiner Umgebung. Beispiele: a(m) a(x).bhxi.0 −→ bhmi.0 (Umgebung schickt Nachricht m auf Kanal a.) ahmi ahmi.P −→ P (Prozess schickt Nachricht m an Umgebung.) (νm)ahmi (νm)(ahmi.P) −→ P (Prozess schickt zuvor verschattete Nachricht m an Umgebung.) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 461 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Verhaltensäquivalenzen Weitere Verifikationstechniken Anschließend definiert man Bisimulation auf den beschrifteten Transitionen: eine Transition muss durch eine andere Transition mit derselben Beschriftung beantwortet werden. Die Quantifizierung über alle Kontext wird weggelassen. Man kann nun zeigen, dass die so definierte Verhaltensäquivalenz mit der Beobachtungskongruenz übereinstimmt. Durch Einsatz zusätzlicher Techniken (z.B. Up-To-Techniken) kann man dann in vielen Fällen erreichen, dass die benötigten Bisimulationen endlich sind. Damit ist die Technik automatisierbar. BAN-Logik (Burrows-Abadi-Needham-Logik): Logik, in der man Schlüsse über kryptographische Protokolle ziehen kann und Aussagen folgender Form machen kann: “Teilnehmer A glaubt X ”, “Teilnehmer B sagt Y ”, “Nonce N ist frisch” AVISPA: Automated Validation of Internet Security Protocols and Applications (EU-finanziertes Projekt) CASPA: Causality-based Abstraction for Security Protocol Analysis (M. Maffei, Universität des Saarlandes) Scyther: A Tool for the Automatic Verification of Security Protocols (C. Cremers, ETH Zürich) und viele weitere Methoden und Werkzeuge . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 462 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 463 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Schlussbemerkungen Schlussbemerkungen Verifikatikonstechniken sollten helfen, Protokolle besser zu verstehen und robustere Protokolle zu entwerfen (auch indem man typische Fehler aufdeckt). Siehe auch Abadi’s Design Principles in Security Protocols: Principles and Calculi – Tutorial Notes. Dort werden typische Fehler besprochen und erklärt, wie man sie vermeiden kann. Kann man aus der Korrektheit eines Protokolls nach dem Dolev-Yao-Eindringlingsmodell auch etwas über die Angriffsmöglichkeiten von polynomzeitbeschränkten probabilistischen Angreifern sagen? dazu gibt es inzwischen ebenfalls Arbeiten (beispielsweise: Abadi, Rogaway: Reconciling two views of cryptography (The computational soundness of formal encryption). Journal of Cryptology, 15(2):103–127, 2005. Dieser Bereich ist weiterhin ein interessantes Forschungsthema. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 464 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Schlussbemerkungen Es gibt auch Verfahren, die Protokolle, in denen Verschlüsselungsverfahren (RSA, etc.) explizit Teil des Protokolls sind, direkt verifizieren. (Korrektheit bezüglich eines polynomzeitbeschränkten probabilistischen Angreifers.) Einsatz von Theorembeweisern (beispielsweise: Gilles Barthe, Benjamin Grégoire, Sylvain Heraud, Santiago Zanella Béguelin: Computer-Aided Security Proofs for the Working Cryptographer. CRYPTO 2011: 71-90) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 466 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 465