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” Wintersemester 2011/12 Universität Duisburg-Essen Organisatorisches Vorstellung Terminabsprache Ablauf der Vorlesung und der Übungen Einordnung & Prüfung Literatur & Folien Einführung und Motivation: “Formale Aspekte der Software-Sicherheit und Kryptographie” Barbara König Inhalt der Vorlesung Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 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 Termine: Dozentin: Prof. Barbara König Raum LF 264 Montag, 10:05-11:35, Raum LC 140 E-Mail: barbara [email protected] Montag, 12:15-13:45, Raum LC 140 Sprechstunde nach Vereinbarung (Mit einer Mittagspause zwischen beiden Terminen.) Übungsleitung: Sebastian Küpper Die Übung findet an dem Termin Mo, 10-12, in zweiwöchigem Rhythmus im Wechsel mit der Vorlesung statt. Die erste Übung findet am 24.10. statt. Web-Seite: http://www.ti.inf.uni-due.de/teaching/ws201112/ssk/ Barbara König 2 “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 in der Vorwoche auf der Webseite bereitgestellt. (Es gibt nur in jeder zweiten Woche ein Übungsblatt.) Diese Vorlesung gehört zu folgenden Studiengängen . . . Die Hausaufgaben werden in der Vorlesung oder zu Beginn der Übung abgegeben und korrigiert. 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 Hausaufgabenpunkte erzielt werden und einmal vorgerechnet wird oder eine Aufgabe aus jedem der drei Themengebiete vorgerechnet wird. Zitate aus der Prüfungsordnung: Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” DAI – Fachprüfung/Leistungskontrolle in “Informatik der Systeme” Im Gebiet Informatik der Systeme: Leistungskontrollen über Lehrveranstaltungen [...] im Umfang von insgesamt 8 SWS. Die Fachprüfung im Gebiet Informatik der Systeme erstreckt sich auf Studieninhalte im Umfang von 10 SWS, für die keine Leistungskontrollen erbracht wurden. diese Veranstaltung hat 4 SWS. Barbara König 5 “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 Einordnung 6 Voraussetzungen Für diese Veranstaltung sollten Sie vorher möglichst die folgenden Vorlesungen gehört haben: MAI – Informatik für den Anwendungsbereich Im Master “Angewandte Informatik” ist diese Veranstaltung folgendermaßen eingeordnet: Berechenbarkeit und Komplexität http://jordan.inf.uni-due.de/teaching/ws1011/beko/ Wahrscheinlichkeitstheorie und Stochastik Informatik für den Anwendungsbereich Katalog “Verteilte, Verlässliche Systeme” (Verlässliche Software) Logik http://www.ti.inf.uni-due.de/teaching/ss2011/logik/ Stundenzahl: 4 SWS (3V + 1Ü), 6 Credits . . . 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 Prüfung Literatur John Talbot, Dominic Welsh: Complexity and Cryptography – An Introduction. Cambridge, 2006. Diese Vorlesung wird mündlich geprüft. Der Prüfungstermin ist voraussichtlich der 10. Februar. Christos H. Papadimitriou: Computational Complexity. Addison Wesley, 1994. Oded Goldreich: Foundations of Cryptography (Basic Tools). Cambridge University Press, 2001. Für Fachprüfungen wird ein gesonderter Termin vereinbart. Oded Goldreich: Foundations of Cryptography (Basic Applications). Cambridge University Press, 2004. 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 Literatur William Stallings: Cryptography and Network Security: Principles and Practice. Prentice-Hall, 2003. Martı́n Abadi: Security Protocols: Principles and Calculi – Tutorial Notes. FOSAD 2006/07 Tutorial Lectures, Springer, 2007, p. 1-23. 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. http://users.soe.ucsc.edu/~abadi/Papers/nato.ps Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 11 Bruno Blanchet: Using Horn Clauses for Analyzing Security Protocols. Formal Models and Techniques for Analyzing Security Protocols. IOS Press, 2010. http://www.di.ens.fr/~blanchet/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. http://www.di.ens.fr/~blanchet/publications/ AbadiBlanchetPOPL02.html 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 Folien Inhalt der Vorlesung Folien werden Inhalt Kryptographie im Web bereitgestellt und regelmäßig aktualisiert. Die Folien werden sehr ähnlich zu den Folien aus dem Sommersemester 2010 sein (erhältlich über http://jordan.inf.uni-due.de/teaching/ss2010/ssk/). Barbara König Kryptographische Protokolle Verifikation von kryptographischen Protokollen “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 Inhalt der Vorlesung Kryptographie ist . . . die Wissenschaft von der Verschlüsselung von Informationen. 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” 15 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” 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 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. 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. 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 http://jordan.inf.uni-due.de/teaching/ss2010/ssk/dateien/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 Wieviele mögliche Schlüssel gibt es? Kann man alle diese Schlüssel durchprobieren? Gibt es eine andere Methode, den Text zu entschlüsseln? Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 19 Häufigkeitsanalyse von Buchstaben und Suche nach bekannten Wörtern 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” 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 Häufigkeit der Buchstaben im Deutschen: 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: http://etext.lib.virginia.edu/toc/modeng/public/PoeGold.html In Deutsch unter: http://www.haus-freiheit.de/Poekrimi/goldkaefer.html Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 21 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” 22 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Motivation: Entschlüsselung Motivation: Schlüsselaustausch Bemerkungen: 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 das 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! 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. Wir betrachten nun ein offenes System mit n Teilnehmern: Wieviele Schlüssel müssen ausgetauscht werden, damit jeder mit jedem sicher kommunizieren kann? Um die Sicherheit eines Kryptosystems zu analysieren, benötigt man Wahrscheinlichkeitsrechnung. 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 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. 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 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: Schlüsselaustausch 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. 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! 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” 27 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 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 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 29 “Form. Asp. der Software-Sicherheit und Kryptographie” 30 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 Needham-Schroeder-Protokoll (fehlerhaft) Konventionen: Ein symmetrischer Schlüssel der Form KAB wird für die Verschlüsselung von Nachrichten zwischen A und B verwendet. 1 A → S: A, B, NA 2 S → A: {NA , KAB , {KAB , A}KBS }KAS 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. 3 A → B: {KAB , A}KBS 4 B → A: {NB }KAB 5 A → B: {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 Graphische Darstellung: Erläuterung der einzelnen Schritte: S 1. A, B, NA 2. {NA, KAB , {KAB , A}KBS }KAS 3. {KAB , A}KBS A 4. {NB }KAB B 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. 5. {NB − 1}KAB Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 33 “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 2. S → A: {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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 35 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” 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 4. B → A: {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 5. A → B: {NB − 1}KAB 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? “Form. Asp. der Software-Sicherheit und Kryptographie” 37 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 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. Angriff 1 2 3 4 5 A → S: A, B, NA E ersetzt diese Nachricht durch: A, E , NA 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 . E → A: {NB }KAE 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” 39 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 S → A: {NA , B, KAB , {KAB , A}KBS }KAS 3 A → B: {KAB , A}KBS 4 B → A: {NB }KAB 5 A → B: {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” 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: Authentifizierungs-Protokolle 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” 41 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” 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: 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). 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. 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 Motivation: Informationssicherheit 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. Barbara König 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 45 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 Inhalt der Vorlesung Kyptographische Protokolle Digitale Unterschriften 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) 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 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 Wir beschreiben jetzt formal, was es bedeutet, eine Nachricht zu verschlüsseln und zu entschlüsseln. Komponenten eines Kryptosystems (Definition) M: eine Menge von möglichen Nachrichten Hinweis: E steht für “encryption” und D für “decryption”. CM: eine Menge von verschlüsselten Nachrichten Sei (e, d) ∈ K ein Schlüsselpaar. Die Ver- und Entschlüsselungsfunktionen müssen folgende Eigenschaft haben: Ke : eine Menge von Schlüsseln, die zum Verschlüsseln verwendet werden Kd : eine Menge von Schlüsseln, die zum Entschlüsseln verwendet werden Für alle m ∈ M gilt D(E (m, e), d) = m. 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” 49 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 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) Alice Barbara König (e, e) 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 ) Alice Bob 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 Ver- und Entschlüsselung Historische Verschlüsselungsverfahren 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 53 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” 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” 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 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. 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. 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. Entschlüssselungsverfahren: Beispiel: e = CAESAR, wobei z(C) = 2, z(A) = 0, z(E) = 4, z(S) = 19, z(R) = 18 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. DASISTDERGEHEIMTEXT + CAESARCAESARCAESARC FAWBSLFEVZEZGIQMEPV Sobald die Länge k gefunden wurde, kann dann der Schlüssel, Stelle für Stelle, mit Hilfe der Häufigkeitsanalyse ermittelt werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 57 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 Historische Verschlüsselungsverfahren Ein besonderer Fall ergibt sich jedoch, wenn der Schlüssel genau so lang ist wie der zu verschlüsselnde Text. 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. Voraussetzungen: der Einmalschlüssel muss geheim bleiben, der Einmalschlüssel muss zufällig gewählt sein und der Einmalschlüssel darf nur einmal verwendet werden. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 59 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” 60 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitrechnung Wahrscheinlichkeitsrechnung 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.) Falls Ω endlich ist und alle Elementarereignisse in Ω gleich wahrscheinlich sind, so gilt P(x) = 1 |Ω| für jedes x ∈ Ω Beispiel: Würfeln mit einem fairen Würfel. Dann gilt Ω = {1, 2, 3, 4, 5, 6} und P(x) = 16 für alle x ∈ Ω. Diese Annahme, dass alle Elementarereignisse gleich wahrscheinlich sind, gilt jedoch nicht immer. (Beispiel: manipulierter Würfel) x∈Ω Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 61 Barbara König “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 Das Würfeln einer 1 oder 6 bezeichnet man als (zusammengesetztes) Ereignis, im Unterschied zu Elementarereignissen. Ereignis, Wahrscheinlichkeit eines Ereignisses (Definition) Wir betrachten einen Wahrscheinlichkeitsraum, bestehend aus Ω und P : Ω → R. Eine Menge E ⊆ Ω heißt Ereignis. Die Wahrscheinlichkeit des Ereignisses E wird folgendermaßen berechnet: X P(x) P(E ) = x∈E Rechnen mit Wahrscheinlichkeiten (Satz) Seien A, B ⊆ Ω Ereignisse: P(Ω\A) = 1 − P(A) P(A ∪ B) = P(A) + P(B) − P(A ∩ B) P(∅) = 0 Beispiel: Ereignis E = {1, 6} mit P(E ) = P({1, 6}) = P(1) + P(6) = Barbara König 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. 1 1 1 + = 6 6 3 “Form. Asp. der Software-Sicherheit und Kryptographie” 63 Insbesondere folgt daraus P(A ∪ B) = P(A) + P(B), falls A ∩ B = ∅, d.h., falls A und B disjunkte Ereignisse sind. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 64 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Unabhängigkeit von Ereignissen (Definition) Zwei Ereignisse A, B ⊆ Ω heißen unabhängig, falls gilt: P(A ∩ B) = P(A) · P(B) Beispiel Würfel: Die Ereignisse {1, 3, 5} (Ergebnis ist ungerade) und {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 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 2 3 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 65 Bedingte Wahrscheinlichkeit (Definition) Die bedingte Wahrscheinlichkeit ist definiert durch P(A | B) = P(A ∩ B) , P(B) falls P(B) 6= 0. 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. Sprechweise: Wahrscheinlichkeit von A, vorausgesetzt B. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 66 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung 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) Zwei (nicht-leere) Ereignisse A, B sind unabhängig genau dann, wenn: P(A | B) = P(A) und P(B | A) = P(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” 67 Zufallsvariable (Definition) Eine Zufallsvariable ist eine Abbildung X : Ω → S. Sei y ∈ S. Man definiert: 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” 68 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Wahrscheinlichkeitsrechnung Wahrscheinlichkeitsrechnung Sei S eine endliche Menge. Eine Zufallsvariable X : Ω → S heißt gleichverteilt, falls P(X (ω) = s) = 1 |S| für alle s ∈ S E (m, e) = m ⊕ e Bemerkungen: Die Ereignismenge Ω muss hier nicht notwendigerweise endlich sein. Es gibt noch weitere (diskrete) Wahrscheinlichkeitsverteilungen: geometrische Verteilung, Binomialverteilung, Poisson-Verteilung Barbara König 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 “Form. Asp. der Software-Sicherheit und Kryptographie” 69 D(c, d) = c ⊕ d Die Menge der Elementarereignisse Ω sieht wie folgt aus: Ω = 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” 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: 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). 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 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 Wahrscheinlichkeitsrechnung 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” 73 Außerdem gilt: P(E = c) = X P(msg = m0 ∧ E = c) m0 ∈M = X pm0 · m0 ∈M 1 1 X 1 1 0 = p = · · 1 = m 2n 2n 2n 2n 0 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” 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 Wir betrachten nun moderne symmetrische Verschlüsselungsverfahren. (e, e) (e, e) Alice Bob Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 75 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” 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 Sowohl DES als auch AES sind Blockchiffre, die nach folgendem Prinzip funktionieren: Eine Nachricht wird in Blöcke der Länge n (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 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 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 . 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. 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” 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: 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 Jedes Byte der Nachricht wird durch ein anderes Byte substituiert (diese Substitionen werden in sogenannten S-Boxen tabelliert). Die Bytes der Nachricht werden (spalten- oder zeilenweise) permutiert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 79 Ä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” 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 S-Box bei AES (Teil 2) 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 Angenommen q(x) = c7 x 7 + c6 x 6 + · · · + c0 . Dann bestimme das Ergebnis-Byte d7 d6 . . . d0 durch folgende affine Transformation: d0 1 0 0 0 1 1 1 1 c0 1 d1 1 1 0 0 0 1 1 1 c1 1 d2 1 1 1 0 0 0 1 1 c2 0 d3 1 1 1 1 0 0 0 1 c3 0 = d4 1 1 1 1 1 0 0 0 · c4 + 0 d5 0 1 1 1 1 1 0 0 c5 1 d6 0 0 1 1 1 1 1 0 c6 1 d7 0 0 0 1 1 1 1 1 c7 0 “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 Beispiel: Zu substituierendes Byte: 00110011, entspricht x 5 + x 4 + x + 1 Inverses: 01101100, entspricht x 6 + x 5 + x 3 + x 2 Test: (x 5 + x 4 + x + 1) · (x 6 + x 5 + x 3 + x 2 ) = x 11 + x 10 + x 8 + x 7 + x 10 + x 9 + x 7 + x 6 + x 7 + x 6 + x 4 + x 3 + x 6 + x 5 + x 3 + x 2 = x 11 + x 9 + x 8 + x 7 + x 6 + x 5 + x 4 + x 2 x 11 +x 9 +x 8 +x 7 +x 6 +x 5 +x 4 +x 2 ÷ x8 + x4 + x3 + x + 1 11 7 6 4 3 x +x +x +x +x = x3 + x + 1 x 9 +x 8 +x 5 +x 3 +x 2 +x Rest: 1 9 5 4 2 x +x +x +x +x 8 4 3 x +x +x +x 8 4 3 x +x +x +x+1 1 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 83 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!) 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 Kriterien bei symmetrischen Verschlüsselungsverfahren (informell): Bemerkungen: 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 Konfusion Der Zusammenhang zwischen Schlüssel und verschlüsseltem Text sollte so komplex wie möglich sein. Diffusion Jedes Bit der verschlüsselten Nachricht sollte von jedem Bit der ursprünglichen Nachricht auf möglichst komplexe Weise abhängig sein. Insbesondere sollte sich der verschlüsselte Text vollständig ändern, sobald ein Bit der ursprünglichen Nachricht verändert wird. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 85 “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. Diese Arten von Angriffen setzen einen schrittweise immer mächtigeren Angreifer voraus. 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 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. 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 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. 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 Komplexitätsklasse co-NP (Definition) 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. 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” 113 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. Die 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 oben auch D 0 (E (m, e), e) = m für alle m ∈ M fordern. Entschlüsselungsproblem liegt in NP (Satz) Wir betrachten ein 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., LE is “gleich schwierig” wie D 0 . 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 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 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 125 “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]. Um π wirklich genau berechnen zu können, benötigt man einen guten Zufallszahlengenerator! 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 . Eine andere (klassischere) Möglichkeit, π zu berechnen, ist es den Grenzwert einer Reihe zu bestimmen. 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 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 Z die endliche Menge der Zustände, Klassische Turingmaschinen haben intuitiv folgendes Aussehen: Kopf kann sich nach links und rechts bewegen und Zeichen überschreiben e i n g a b e Σ das Eingabealphabet, Γ mit Γ ⊃ Σ das Arbeitsalphabet oder Bandalphabet, δ : Z × Γ → Z × Γ × {L, R, N} die Überführungsfunktion, z0 ∈ Z der Startzustand, Signal für Endzustand Automat mit endlich vielen Zuständen ∈ Γ\Σ 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 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 Gleichheit 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 148 “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 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 gibt, so dass der Erwartungswert der Laufzeit polynomial beschränkt ist und für jede Eingabe x ∈ Σ∗ gilt: 1 falls x ∈ L, dann gilt P(M akzeptiert x) = P(aM (x) = 1) = 1. 2 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 Probleme in ZPP gilt also: Es gibt Algorithmen, 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. 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 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-te Durchlauf benötigt i 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. 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 bedeutet auch, dass man sich auf den Test verlassen kann, wenn er behauptet, dass eine Zahl zusammengesetzt ist. COMPOSITE Eingabe: eine natürliche Zahl n > 1 Ausgabe: ist n zusammengesetzt, d.h., gibt es natürliche Zahlen k, ` > 1 mit n = k · `? Das Komplement von COMPOSITE ist das Problem PRIMES, das auch in RP (und sogar in P) liegt. Allerdings werden wir das hier nicht zeigen. PRIMES Eingabe: eine natürliche Zahl n > 1 Ausgabe: ist n eine Primzahl? Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 164 “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. Die kleinste solche Carmichael-Zahl ist 561 = 3 · 11 · 17. Es ist außerdem bekannt, dass jede Carmichael-Zahl ungerade ist. 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 . Beweis: 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 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 168 “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 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. Für Carmichael-Zahlen benötigen wir nun noch ein zusätzliches Kriterium. 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 | 0 ≤ i < k} ein Miller-Zeuge für n befindet, größer als 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 172 “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 ·25 mod 561 = 5292 mod 561 = 463 3 52 ·25 mod 561 = 4632 mod 561 = 67 4 52 ·25 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. Inzwische wurde sogar gezeigt, dass PRIMES ∈ P gilt (Agrawal, Kayal, Saxena). Dennoch wird der probabilistische Test noch bevorzugt, da er wesentlich effizienter ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 176 “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)|) 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 and für jedes Polynom p gilt P(f (M(f (x))) = f (x)) < 1 , p(n) falls x zufällig aus der Menge {0, 1}n gewählt wird. Intuitiv: die Wahrscheinlichkeit dafür, dass M die Funktion korrekt invertiert, ist vernachlässigbar. Barbara König “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 Was bedeutet die Wahrscheinlichkeit P(f (M(f (x))) = f (x))? Bemerkungen: M(y ) ist 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. 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. Wir betrachten nun folgende Zufallsvariable XM : 1 falls M bei Eingabe f (x) und mit Zufallsbits b̃ XM (x, b̃) = ein Urbild von f (x) bestimmt 0 sonst Beschränkt wird also die Wahrscheinlichkeit P(XM = 1). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 182 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 183 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Faktorisierung Warum fordert man nicht sogar P(f (M(f (x))) = f (x)) < 1 p(n) für jedes x ∈ {0, 1}n ? Die Elementarereignisse würden in diesem Fall nur auf 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 184 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” 185 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Faktorisierung Diskreter Logarithmus Als Entscheidungsproblem kann man das Faktorisierungsproblem folgendermaßen darstellen: Um den diskreten Logarithmus definieren zu können, benötigen wir zunächst einige Begriffe: Faktorisierung Eingabe: Zwei Zahlen n, r ∈ N0 , wobei n das Produkt von zwei k-Bit Primzahlen ist. Primitivwurzel modulo m Eine Zahl g ∈ {0, . . . , m − 1} heißt Primitivwurzel modulo m, falls g ein Generator der multiplikativen Gruppe 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” 186 Z∗m = {a ∈ {1, . . . , m − 1} | ggT (a, m) = 1} 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” 187 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 ist eine Primitivwurzel, auch wenn p eine Primzahl ist. Beispielsweise gilt für p = 7: 20 mod 7 = 1, 21 mod 7 = 2, 22 mod 7 = 4, 23 mod 7 = 1 2 ist keine Primitivwurzel modulo 7 0 3 mod 7 = 1, 31 mod 7 = 3, 32 mod 7 = 2, 33 mod 7 = 6, 34 mod 7 = 4, 35 mod 7 = 5, 36 mod 7 = 1 3 ist eine Primitivwurzel modulo 7 Barbara König Diskrete Exponentialfunktion Gegen seien eine Primzahl p, eine Primitivwurzel g modulo p und x ∈ Z∗p = {1, . . . , p − 1}. Wir definieren dexp(p, g , x) = (p, g , g x mod p) Die Funktion dexp liegt in FP. Die Umkehrfunktion, die aus g x mod p (und p und g ) den eindeutig bestimmten Exponenten x berechnet heißt diskreter Logarithmus und gilt als schwer zu berechnen. Auch für den diskreten Logarithmus existiert ebenfalls ein dazugehöriges Entscheidungsproblem. “Form. Asp. der Software-Sicherheit und Kryptographie” 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 Einwegfunktionen Einwegfunktionen Forderung: im Fall der symmetrischen Verschlüsselung ist die Verschlüsselungsfunktion E für einen festen Schlüssel eine Einwegfunktion. Existieren Einwegfunktionen? das weiß man nicht genau. Man weiß nur, dass folgendes aus der Existenz von Einwegfunktionen folgen würde: P 6= NP und NP 6⊆ BPP es gibt (sichere) symmetrische Verschlüsselungsverfahren, die mit kurzen Schlüsseln arbeiten (anders als der One-Time-Pad) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 190 Falls Einwegfunktionen existieren, dann gilt P 6= NP. Außerdem gilt dann NP 6⊆ BPP, d.h., es gibt eine Sprache in NP\BPP. Beweis: sei f : {0, 1}∗ → {0, 1}∗ eine Einwegfunktion und sei Lf = {(x, y ) | ∃u ∈ {0, 1}∗ : f (xu) = y }. Lf liegt in NP, denn u kann geraten und in Polynomzeit überprüft werden. Falls P = NP gilt, so wäre Lf in Polynomzeit entscheidbar, und man kann Lf dazu benutzen, um in Polynomzeit ein Urbild für einen gegebenen Funktionswert f (x) zu bestimmen. (Siehe Argumentation für die sehr ähnliche Sprache LE weiter oben.) Das ist ein Widerspruch dazu, dass f eine Einwegfunktion ist. Außerdem kann Lf nicht in BPP liegen, denn dann gäbe es eine probabilistische Turingmaschine, die mit ausreichend hoher Wahrscheinlichkeit Urbilder finden würde. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 191 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Einwegfunktionen Einwegfunktionen Eine beliebige Einwegfunktion – wenn sie existieren sollte – kann man nicht direkt für symmetrische Verschlüsselung verwenden. Der Grund dafür ist, dass es auch eine dazugehörige Entschlüsselungsfunktion geben muss, die leicht zu berechnen ist. Bemerkung: Es ist nicht bekannt, ob die umgekehrten Folgerungen gelten: d.h., man weiß nicht, ob aus P 6= NP oder NP 6⊆ BPP die Existenz einer Einwegfunktion folgt. (Das liegt daran, dass eine Einwegfunktion nicht nur im worst-case schwer zu invertieren sein sollte.) Barbara König Aber: die Existenz von Einwegfunktionen garantiert die Existenz von Pseudo-Zufallsgeneratoren. Pseudo-Zufallsgenerator (informell) Ein Pseudo-Zufallsgenerator ist ein deterministisches Verfahren, das aus einem gegebenen 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” 192 “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 Falltürfunktionen Anwendungen für Pseudo-Zufallsgeneratoren: Nach Austausch eines symmetrischen Schlüssels kann dieser als Startwert für einen Pseudo-Zufallsgenerator verwendet werden. Damit kann der One-Time-Pad simuliert werden und sichere symmetrische Verschlüsselung erreicht werden. Generierung von Nonces. Generierung von Zufallszahlen für randomisierte Verfahren, Derandomisierung von randomisierten Verfahren. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 194 Für asymmetrische Verschlüsselung müssen wir noch mehr fordern: sogenannte Falltürfunktionen. Falltürfunktion (informell) Die Verschlüsselungsfunktion E eines asymmetrischen Kryptosystems heißt Falltürfunktion, wenn E in Polynomzeit berechnenbar 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 zufällig gewählte Nachrichten und Schlüssel, E nur unter Kenntnis des öffentlichen Schlüssels zu invertieren,¡ vernachlässigbar ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 195 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. 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. Außerdem ist unklar, ob daraus, dass die Faktorisierungsfunktion eine Einwegfunktion ist, folgt, dass die RSA-Funktion eine Falltürfunktion ist. Barbara König “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 Die fünf Welten von Impagliazzo Beweis (Skizze): sei e · d − 1 = 2k · m mit m ungerade. Das Verfahren zur Faktorisierung von n beruht auf der Tatsache, dass für ein zufällig gewähltes a ∈ {1, . . . , n − 1} die Wahrscheinlichkeit, in der Menge i {a2 ·m | 0 ≤ i < k} einen Miller-Zeugen für n zu finden, größer gleich 21 ist (ohne Beweis). Angenommen, b wäre ein solcher Miller-Zeuge, d.h., n | (b 2 − 1), aber n - (b − 1) und n - (b + 1). D.h., es gilt p | (b − 1) und q | (b + 1) (oder umgekehrt). Man bestimmt nun p = ggT (b − 1, n) und q = pn . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 198 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. 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 Die fünf Welten von Impagliazzo Die fünf Welten von Impagliazzo Algorithmica 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” 200 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” 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 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” 202 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” 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 Kryptographische Protokolle: Motivation 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” 204 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 Secure Multi-Party Computations Wir werden uns im folgenden einige davon genauer ansehen. 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 Digitale Unterschriften Digitale Unterschriften 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) 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” 206 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” 207 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Digitale Unterschriften Identifizierung und Authentifizierung Weitere Bemerkungen: Wenn ein Kryptosystem auch zum Signieren verwendet wird, so ist relativ leicht ein 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 er Alice eine Nachricht unterschreiben lassen, aber die andere mit dieser Signatur verschicken. Barbara König 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 208 “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 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. 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” 210 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” 211 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Identifizierung und Authentifizierung Interaktive Beweissysteme 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. 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. Peggy hat unbeschränkte Resourcen, insbesondere darf sie nicht-deterministisch arbeiten, beliebig viel Zeit verbrauchen und Zufallsbits verwenden. Es werden nur polynomial viele Nachrichten ausgetauscht, die auch nur polynomiale Länge haben. 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 Interaktive Beweissysteme Interaktive Beweissysteme Beispiel: wir betrachten folgende zwei Graphen G1 , G2 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. 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 . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 214 2 1 3 4 1 2 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” 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 Das interaktive Beweissystem für NON-GRAPHISO funktioniert wie folgt: seien G1 , G2 zwei Graphen, beide mit Knotenmenge {1, . . . , n}. 1 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 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 216 “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 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 41 . IP ist die Menge aller Sprachen, die ein polynomiales interaktives Beweissystem haben. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 218 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” 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 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” 220 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. 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 Man weiß folgendes über die Beziehung zwischen NP und IP: NP ⊆ IP Die Komplexitätsklasse NP ist eine Teilmenge von IP. 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.) 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. 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” 222 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 Zero-Knowledge-Protokolle Wir wollen nun präzisieren, was es bedeutet, dass durch ein interaktives Beweissystem kein Wissen preisgegeben wird. Von Adi Shamir stammt folgendes wichtige Resultat zu IP: 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). 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 “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 Zero-Knowledge-Protokolle Zero-Knowledge-Protokolle 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 226 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” 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 Analogie: Biertester 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 diesem 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. 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 2 3 4 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 228 Peggy wählt ein zufällige Permutation π : {1, . . . , n} → {1, . . . , n}. Sie wendet π auf G1 an und erhält H = π(G1 ). Dann schickt sie H an Victor. Victor wählt eine Zufallszahl i ∈ {1, 2} und schickt diese an Peggy. Peggy bestimmt eine weitere Permutation σ mit H = σ(Gi ) und schickt σ an Victor. Victor akzeptiert, falls σ(Gi ) = H. 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 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 σ. Falls die Graphen nicht isomorph sind, dann muss Peggy in der Hälfte der Fälle mit einer falschen Permutation σ antworten. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 230 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” 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 Analogie: Verschlossene Tür 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 . 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” 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 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. 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. Damit werden keine Nachrichten ausgetauscht und das Interaktionsverhalten kann trivialerweise von einer weiteren Maschine M simuliert 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” 234 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 Bit Commitment 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). 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 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? “Form. Asp. der Software-Sicherheit und Kryptographie” 236 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 Bit Commitment Bit Commitment Anwendung: Voraussetzungen: 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 238 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 ≤ 12 + ε (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 x bekannt ist. 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 Bit Commitment (Protokoll) Kandidaten für Hardcore-Prädikate: Bei der diskreten Exponentialfunktion: höchstwertiges Bit Bei der RSA-Falltürfunktion: niedrigstwertiges Bit Ein Funktion mit Hardcore-Prädikat ist zwangsläufig eine Einwegfunktion. Außerdem existieren Hardcore-Prädikate, falls Einwegfunktionen existieren. 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 “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 Bemerkungen: 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 242 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” 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 Münzwurf über das Telefon (Protokoll) 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 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. “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 Beispielablauf Münzwurf: 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 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” 246 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 Zero-Knowledge-Protokolle für NP-vollständige Probleme Zero-Knowledge-Protokolle für NP-vollständige Probleme Wir betrachten nun ein Zero-Knowledge-Protokoll für ein als NP-vollständig bekanntes Problem: Färbbarkeit von Graphen Beispiele: 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” 248 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” 249 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: 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. 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” 250 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” 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 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 mit 1 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” 252 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” 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 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 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. Für 3-COL: Färbungsfunktion des Graphen Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 254 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 Secure Multi-Party Computations Secure Multi-Party Computations 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” 256 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” 257 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. 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” 258 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 258 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 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. Hilfsprotokoll: Oblivious Transfer = Unbewusster Transfer Oblivious Transfer Gemeinsame Berechnung der Projektions-Funktion: 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 ) f : {0, 1}k × {1, . . . , k} → {∗} × {0, 1} f ((c1 , . . . , ck ), i) (∗, ci ) Alice und Bob wollen diese Projektion gemeinsam berechnen, so dass: Alice kennt c1 , . . . , ck und erfährt keine weiteren Informationen. Alice und Bob konstruieren einen Schaltkreis und werten ihn gemeinsam aus. Barbara König = Bob kennt zu Beginn des Protokolls i und am Ende nur i und ci . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 259 “Form. Asp. der Software-Sicherheit und Kryptographie” 260 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Oblivious Transfer Oblivious Transfer 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. Protokoll: Oblivious Transfer 1 Alice bestimmt eine Falltürfunktion t mit Hardcore-Prädikat B und schickt (t, B) an Bob. 2 3 Ein Hardcore-Prädikat B zu t. 4 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 261 Bob wählt zufällig z1 , . . . , zk und schickt (z1 , . . . , t(zi ), . . . , zk ). Alice erhält (y1 , . . . , yk ) und schickt (c1 ⊕ B(t −1 (y1 )), . . . , ck ⊕ B(t −1 (yk ))). Bob empfängt (x1 , . . . , xk ) und bestimmt xi ⊕ B(zi ). 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 Oblivious Transfer Oblivious Transfer Korrektheit 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. 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 . . . 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 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 263 “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 Secure Multi-Party Computations Secure Multi-Party Computations Idee Jede Verbindung zwischen Gattern wird verdopppelt. 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. 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 r ∧ r Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 265 i1 Barbara König i0 “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 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 = ra ⊕ rb r =a⊕b a ra rb S(∧) b a1 r =a⊕b i1 = a1 ⊕ b1 Barbara König b1 a0 r = ra ⊕ rb r =a⊕b ra rb S(∧) a b b0 i0 = a0 ⊕ b0 a1 b1 r =a⊕b a0 b0 i1 = a1 ⊕ b1 “Form. Asp. der Software-Sicherheit und Kryptographie” 266 Barbara König i0 = a0 ⊕ b0 “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 Secure Multi-Party Computations Secure Multi-Party Computations Verteilung der Eingabe-Bits: Verteilung der Eingabe-Bits: Schaltkreis S(Schaltkreis) a1⊕y1 y1 a0⊕y0 y0 a1 a0 b1 b0 Eingabebits Bob Alice Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 267 a1 a0 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 267 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 ∨ Auswertung eines not-Gatters: ¬a b Alice invertiert ihr Bit. ∨ S(¬) ¬(a ⊕ b) = ¬a ⊕ b ∨ 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}. a1 b1 ¬ a0 b0 1 0 “Form. Asp. der Software-Sicherheit und Kryptographie” 268 m0 0 Barbara König 1 “Form. Asp. der Software-Sicherheit und Kryptographie” 269 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 S(∨) S(∨) S(∨) S(∧) ∧ S(∧) Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen S(∨) ∧ z rb1,b0 z ⊕ rb1 ,b0 = (a1 ⊕ b1 ) ∧ (a0 ⊕ b0 ) m1 ∧ ¬ Bob erhält rb1 ,b0 durch Oblivious Transfer. Barbara König ∧ 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” 269 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 269 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, 1, 0, 0 S(∨) S(∧) S(∨) S(∧) S(∧) S(∨) 10 S(∧) S(∨) S(∧) S(∨) S(∧) S(∧) 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” 269 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 m0 Barbara König m1 m0 S(∨) S(∨) S(∨) 10 “Form. Asp. der Software-Sicherheit und Kryptographie” 269 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen S(∨) S(∨) 10 S(∨) 0 1, 0, 0, 0 S(∨) S(∧) S(∧) S(∧) 0 1, 0, 0, 0 S(∧) S(∨) S(∧) S(∧) 11 S(∧) 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” 269 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 269 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen m1 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen 1 m0 00 0 11 S(∨) S(∨) 10 S(∨) 00 11 S(∨) S(∨) 10 00 11 00 11 S(∧) S(∧) S(∧) S(∧) S(∨) 00 11 S(∨) S(∨) 00 11 00 11 S(∧) S(∧) S(∧) S(∧) 11 01 11 01 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” 269 Barbara König “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 Bemerkung: Zuletzt werden die Ausgabewerte mit Hilfe von xor berechnet. Wenn jeder Teilnehmer einen privaten Ausgabewert erhalten soll, dann muss noch Alice ihre entsprechende Bits an Bob schicken und umgekehrt. 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 (bei Oblivious Transfer) verwendeten Funktionen tatsächlich Falltürfunktionen mit dazugehörigen Hardcore-Prädikaten sind. sich Alice und Bob korrekt bezüglich des Protokolls verhalten (semi-honest behaviour). 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 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Secure Multi-Party Computations Secure Multi-Party Computations 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 und aus diesen etwaige Schlüsse ziehen. 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. Im allgemeinen Fall sollte man jedoch mit bösartigem Verhalten (malicious behaviour) rechnen. Barbara König 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. Das ist teilweise extrem aufwändig, da immer sichergestellt werden muss, dass der jeweils andere Teilnehmer keine zusätzliche Informationen erhält. “Form. Asp. der Software-Sicherheit und Kryptographie” 272 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 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 274 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.). 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 Verifikation kryptographischer Protokolle 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: 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 an geheime 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” 276 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” 277 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 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” 278 Eindringlingsmodell nach Dolev-Yao (II) Der Angreifer kann nicht: Nachrichten entschlüsseln, wenn er den entsprechenden Schlüssel nicht besitzt oder Nonces erraten, die er nicht abgefangen hat. 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” 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 Eindringlingsmodell nach Dolev-Yao (III) Wir nehmen ebenfalls an, dass ein Teilnehmer, der eine verschlüsselte Nachricht empfängt, herausfinden kann, ob diese Nachricht mit einem bekannten Schlüssel K verschlüsselt ist. Er erhält dann entweder die entschlüsselte Nachricht oder eine Fehlermeldung. 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” 280 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 wertlegen. Wir betrachten als Beschreibungsformalismus vor allem den angewandten π-Kalkül (es gibt jedoch auch andere geeignete Formalismen). 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 Diese Notation ist noch zu unpräzise. Insbesondere: Warum reichen bisherige Beschreibungsmechanismen nicht aus? Eine Möglichkeit ist es, ein Protokoll als Folge ausgetauschter Nachrichten zu modellieren: Beispiele: 1 B → A: PB 2 A → B: {{K }SA }PB 3 B → A: {m}K Needham-Schroeder-Protokoll im Einführungsteil Barbara König Protokoll “Form. Asp. der Software-Sicherheit und Kryptographie” 282 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” 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 Bemerkung: das oben angegebene Protokoll der Form 1 B → A: PB 2 A → B: {{K }SA }PB 3 B → A: {m}K 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” 284 Eve (E ) hat folgende Angriffsmöglichkeit (Man-in-the-Middle-Attack), falls Alice auch mit Eve kommuniziert: 1 E → A: PE 2 A → E: {{K }SA }PE 3 E → B: {{K }SA }PB 4 B → A: {m}K Die letzte Nachricht kann jedoch von Eve abgefangen und entschlüsselt werden, denn Eve besitzt K . Wir werden dieses Protokoll im folgenden häufiger als Beispiel einsetzen. Barbara König “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 Verifikation kryptographischer Protokolle (Schema) 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. Verwende dann eine der folgenden Analysetechniken: Einschränken auf endlichen Zustandsraum und Durchsuchen des Zustandsraum ( Model-Checking) Horn-Formeln und Resolution Verhaltensäquivalenzen Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 286 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” 287 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 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” 288 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. 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 Angewandter π-Kalkül Angewandter π-Kalkül 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 angewandte werden. (Beispielsweise können bestimmte Funktionen nur auf Nachrichten oder Schlüssel angewandt werden.) 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, Beispiele für Terme: es gilt M = L[x/M 0 ], N = L[x/N 0 ] und Σ ` M 0 = N 0 , encrypt(m, K ) es gilt M = M 0 [x/L], N = N 0 [x/L] und Σ ` M 0 = N 0 , decrypt(encrypt(m, x), y ) Σ ` N = M (Symmetrie) oder Σ ` N = L und Σ ` L = M (Transitivität). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 290 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 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} 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} 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” 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 Signaturen Zusätzlich zu den Funktionen pk, sk verwenden wir zweistellige Funktionen sigcheck, sigget und sign und eine Konstante ok. Definierende Gleichungen: Definierende Gleichungen: Σ = {xor(x, y ) = xor(y , x), Σ = {sigcheck(sign(x, sk(y )), pk(y )) = ok, sigget(sign(x, sk(y )), pk(y )) = x} Barbara König Logischer Operator xor Wir verwenden eine zweistellige Funktion xor. “Form. Asp. der Software-Sicherheit und Kryptographie” 294 xor(xor(x, y ), z) = xor(x, xor(y , z)), xor(xor(x, y ), y ) = x} 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 Paare Wir benutzen eine zweistellige Funktion pair und einstellige Funktionen fst, snd, die nur auf Paaren definiert sind. der inaktive Prozess 0, eine parallele Komposition P | Q, eine Replikation !P Definierende Gleichungen: Σ = {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 Syntax des angewandten π-Kalküls Ein Prozess ist entweder: eine Restriktion (νn)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, n ein Name, c ein Kanalname, M, N Terme und x eine Variable. “Form. Asp. der Software-Sicherheit und Kryptographie” 296 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 Bemerkungen: Die syntaktischen Konstrukte sind eng verwandt mit den entsprechende Konstrukten in CCS. Insbesondere entspricht (νn)P dem Prozess P\{n} in CCS. Der Name n ist in (νn)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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 298 Evaluationskontext Ein Evaluationskontext C [ ] ist ein spezieller Prozess, in dem der Platzhalter , der für einen Prozess steht, genau einmal vorkommen. Dieser Platzhalter darf auch 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. 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” 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 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 (νn)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 P[x/M] ≡ P[x/N] falls Σ ` M = N C [P] ≡ C [Q] falls P ≡ Q und C [ ] ein Evaluationskontext ist Barbara König 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” 300 “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 Bemerkungen: Semantik des angewandten π-Kalküls (Reduktionsregeln) Folgende Regeln beschreiben die Reduktionsrelation → zwischen 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” 302 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” 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 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 Wir betrachten ein erstes kleines Beispielprotokoll (Nonce-Challenge): 1 A → B: {n}K 2 B → A: {n − 1}K 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 304 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 Die entsprechenden Prozesse sehen wie folgt aus: Alice: A = (νn)(chsencrypt(n, K )i. c(x). if sdecrypt(x, K ) = dec(n) then A0 else 0) Bob: B = c(y ). chsencrypt(dec(sdecrypt(y , K )), K )i. B0 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 306 Bemerkungen: 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 gemeinsam 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” 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 Reduktionsfolge bei korrektem Verhalten (ohne Eindringling): Daher gilt: A | B ≡ (νn)(chsencrypt(n, K )i. c(x). if sdecrypt(x, K ) = dec(n) then A0 else 0 | B) Diese Äquivalenz gilt, 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” 308 A | B → (νn)(c(x). if sdecrypt(x, K ) = dec(n) then A0 else 0 | chsencrypt(dec(sdecrypt(sencrypt(n, K ), K )), K )i. B 0) 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 Aufgrund der Gleichungen können wir folgenden Term vereinfachen: Daraus ergibt sich folgende Reduktion: A | B →→ (νn)(if sdecrypt(sencrypt(dec(n), K ), K ) Σ ` sencrypt(dec(sdecrypt(sencrypt(n, K ), K )), K ) = sencrypt(dec(n), K ) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 310 = dec(n) then A0 else 0 Barbara König | B 0) “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 Der so entstandene Prozess ist wegen Bemerkung: Σ ` sdecrypt(sencrypt(dec(n), K ), K ) = dec(n) Im angewandten π-Kalkül ist es auch möglich, einen vollkommen privaten Kanal zu etablieren: äquivalent zu (νb)(bhmi.P | b(x).Q) (νn)(if dec(n) = dec(n) then A else 0 0 | B 0) Und damit ergibt sich: A | B →→→ (νn)(A0 | B 0 ) Barbara König 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. Im allgemeinen werden wir Kanalnamen nicht restringieren, da wir nicht annehmen können, dass es wirklich sichere Kanäle gibt. “Form. Asp. der Software-Sicherheit und Kryptographie” 312 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 Die entsprechenden Prozesse sehen wie folgt aus: Wir betrachten nun das vorherige Beispielprotokoll: Alice: A = (νK )(νKA ) 1 B → A: PB 2 A → B: {{K }SA }PB 3 B → A: {m}K c(p). chaencrypt(sign(K , sk(KA )), p)i. c(x). 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. 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” 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 Bob: B = (νm)(νKB ) Weitere Bemerkungen: chpk(KB ). c(y ).a(u). (if sigcheck(y 0 , u) = ok then chsencrypt(m, sigget(y 0 , u))i.B 0 else 0)[y 0 /adecrypt(y , sk(KB ))] | !bhpk(KB )i.0 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. 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” 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 Modellierung des Angreifers Modellierung des Angreifers Wie sehen Angreifer im Kalkül aus? 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 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” 318 Das letzte Beispielprotokoll hält die Nachricht m nicht geheim. Es gibt einen entsprechenden Angreifer: E = (νKE ) c(pA ). chpk(KE )i. c(z). chaencrypt(v , pA )i. c(u).a(pB ). shsdecrypt(u, sigget(v , pB ))i.0) [v /adecrypt(z, sk(KE ))] 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 Modellierung des Angreifers Modellierung des Angreifers 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 4 5 6 E empfängt den signierten und verschlüsselten Sitzungsschlüssel K von Alice. E verschlüsselt den signierten Sitzungsschlüssel unter dem öffentlichen Schlüssel von Bob und schickt ihn an Bob. E empfängt die mit dem Sitzungsschlüssel verschlüsselte Nachricht m von Bob. 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. E entschlüsselt diese Nachricht (denn sie kennt K !) und gibt die Nachricht auf dem offenen Kanal s bekannt. 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 Mit Hilfe der 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. Wir modellieren nun das Needham-Schroeder-Protokoll (siehe Einführungsteil Protokoll ). Needham-Schroeder-Protokoll (fehlerhaft) 1 A → S: A, B, nA 2 S → A: {nA , KAB , {KAB , A}KBS }KAS 3 A → B: {KAB , A}KBS 4 B → A: {nB }KAB 5 A → B: {nB − 1}KAB Hashfunktionen können ähnlich modelliert werden. 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 Alice: Als Theorien verwenden wir die Theorie für die symmetrische Verschlüsselung, sowie eine zweistellige Funktion check mit A = (νnA ) cS htriple(A, B, nA )i. cS (x). check(sencrypt(x, y ), y ) = ok, if first(u) = nA 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.) then cAB hthrd(u)i. cAB (y ). if check(y , snd(u)) = ok 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. then cAB hsencrypt(dec(sdecrypt(y , snd(u))), snd(u))i.0 else 0 else 0 [u/sdecrypt(x, KAS )] Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 324 “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 Bob: Server: B = (νnB ) S cAB (x). = (νK ) cS (x). cAB hsencrypt(nB , fst(u))i. if fst(x) = A cAB (y ). then if snd(x) = B if sdecrypt(y , fst(u)) = dec(nB ) then cS hsencrypt(triple(thrd(x), K , sencrypt(pair(K , A), then 0 else failhi.0 [u/sdecrypt(x, KBS )] KBS )), KAS )i.0 else . . . 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” 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 Es gibt noch weitere Fallunterscheidungen, wobei alle Paare von möglichen Teilnehmern (einschließlich Eve) abgefragt werden müssen. 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 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) Statt S kann auch !S verwendet werden, dann wird der Server repliziert und steht immer wieder für Anfragen zur Verfügung. “Form. Asp. der Software-Sicherheit und Kryptographie” 328 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 Alice (modifiziert): Authentifizierung wird typischerweise folgendermaßen definiert: 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.) A = (νnA ) cS htriple(A, B, nA )i. cS (x). if first(u) = nA then cAB hthrd(u)i. 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. cAB (y ). cAB hsencrypt(dec(sdecrypt(x, snd(u))), snd(u))i. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 330 ah(A, B)i.0 else 0 [u/sdecrypt(x, KAS ))] 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 Bob (modifiziert): In diesem Fall müssen wir für die Authentifizierung fordern: B = (νnB ) cAB (x). bh(B, snd(u))ii.0 | cAB hsencrypt(nB , fst(u))i. cAB (y ). if sdecrypt(y , fst(u)) = dec(nA ) then 0 else fail.0 [u/sdecrypt(x, KBS )] 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. 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” 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 Hier gibt es einen Angreifer ( unterlaufen kann: ) E , der das Protokoll Angriff Angreifer Eve: E = cS (x). cS htriple(A, E , thrd(x))i. cAB (y ). cAB hsencrypt(nB , snd(u))i. 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. cAB (z).0) [u/sdecrypt(y , KES )] Bemerkung: Eve hält nB nicht geheim. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 334 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 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” 336 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 von Beginn an besitzt, zusammen mit allen weiteren Nachrichten, die er bisher empfangen hat. Ein variablenfreier Term M ist aus M herleitbar (in Zeichen M ` M, wenn es gibt Mi ∈ M, i ∈ {1, . . . , n}, es gibt einen Term N, der keine Namen und die freien x1 , . . . , xn Variablen enthält, und Σ ` M = N[x1 /M1 , . . . , xn /Mn ] 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 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” 338 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 ((νn)P) | E ({n}) in der Name n, den der Angreifer kennt, nicht identisch mit dem Namen, der in P gebunden ist. 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 Durchsuchen des Zustandsraums – Model-Checking Idee: 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. 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” 340 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 Durchsuchen des Zustandsraums – Model-Checking Durchsuchen des Zustandsraums – Model-Checking Einschränkungen: Bemerkungen: 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” 342 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. 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 Horn-Formeln und Resolution Horn-Formeln und Resolution Wir betrachten nun einen weiteren Ansatz (entwickelt von Bruno Blanchet), der auch für unendliche Zustandsräume und beliebig viele parallele Sitzungen funktioniert (Replikation ist erlaubt!). Das Problem zu entscheiden, ob es auf eine gegebenes Protokoll einen Angriff gibt ist unentscheidbar (so wie die meisten Verifikationsprobbleme). Deshalb wird die Menge der erreichbaren Systemzustände überapproximiert. überapproximiert: es gibt möglicherweise korrekte Protokolle, die nicht als solche erkannt werden. Menge der Fehlerzustände 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 (http://www.proverif.ens.fr/) implementiert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 344 Erreichbare Zustände Menge aller Zustände Überapproximation der erreichbaren Zustände 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 Horn-Formeln und Resolution Horn-Formeln und Resolution 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 346 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. 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 Syntax der Prädikatenlogik 1 2 3 4 Falls P ein Prädikatsymbol der Stelligkeit k ist, und falls t1 , . . . , tk Terme sind, dann ist P(t1 , . . . , tk ) eine Formel. Für jede Formel F ist auch ¬F eine Formel. 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 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 x A des Universums zuordnet. 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 . “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 Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: Erfüllbarkeit, Unerfüllbarkeit Eine Formel F ist erfüllbar, wenn sie ein Modell hat, ansonsten ist sie unerfüllbar. 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 Beispiele: Die Formel F = ∀x∃yP(x, f (y )) ist erfüllbar. ist ein Modell für F . PB B mit UB = N0 , kein Modell für F . Die Formel G = ∀xP(x) ∧ ∃y ¬P(y ) ist unerfüllbar. = {(m, n) | m > n} und Barbara König f B (n) = n ist “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 Horn-Formeln und Resolution Horn-Formeln und Resolution Klauselform, Hornformel Eine Formel F ist in Klauselform, wenn sie folgende Form hat: 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 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. “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 Horn-Formeln und Resolution Horn-Formeln und Resolution 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” 354 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. 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 Horn-Formeln und Resolution Horn-Formeln und Resolution Beispiel: zu resolvierende Literale sind unterstrichen. 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 K und ¬P10 , . . . , ¬Pm 0 unifizierbar ist. Prädikate aus K 0 , so dass P1 , . . . , Pn , P10 , . . . , Pm Sei sub der allgemeinste Unifikator. Wir erhalten K10 und K20 dadurch, dass wir die oben angegebenen Prädikate aus K1 und K2 entfernen. Dann ist SSS SSS S S SSS sub = [x/f (g (z)), y /gS(z)] SS) oo ooo o o o w oo o Oft benutzt man auch die Mengenschreibweise: TTTT TTT TTTT sub = [x/f (g (z)), y /gT(z)] TTT ein Resolvent der Klauseln K1 , K2 . ¬P(f (g (z))) Q(f (g (z)), g (z)) {P(x), P(f (y )), Q(x, y )} R = (K10 ∨ K20 )sub Barbara König P(x) ∨ P(f (y )) ∨ Q(x, y ) {¬P(f (g (z)))} m mmm m m mmm mmm {Q(f (g (z)), g (z))} “Form. Asp. der Software-Sicherheit und Kryptographie” 356 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 Horn-Formeln und Resolution Horn-Formeln und Resolution 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 Res n+1 (M) = Res(Res n (M)) [ Res ∗ (M) = Res n (M). für n ≥ 0 n≥0 Sei F = ∀x1 . . . ∀xn F ∗ eine Formel in Klauselform. Wir schreiben Res ∗ (F ∗ ) für Res ∗ ({K | K ist Klausel von F ∗ }). 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)) kann man durch Resolution die leere Klausel herleiten. Res ∗ (F ∗ ) kann möglicherweise eine unendliche Menge sein. 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 Horn-Formeln und Resolution Horn-Formeln und Resolution Folgende Form der Resolution funktioniert speziell für Hornklauseln: 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. K1 qqq q q q G1 K2 qqq qqq G Satz (Vollständigkeit der SLD-Resolution) G2 Sei M eine unerfüllbare Klauselmenge mit nur einer Zielklausel G . Dann gibt es für F eine SLD-Resolutionsherleitung der leeren Klausel, die mit G beginnt. .. . Kn ss s s sss 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” 360 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 Horn-Formeln und Resolution Horn-Formeln und Resolution Wir betrachten noch eine andere Form der Resolution, die vollständig für Horn-Klauseln ist: 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 G resolviert, um zu erhalten. 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. 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” 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 Horn-Formeln und Resolution Horn-Formeln und Resolution 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 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. “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 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 falls M und N Konstruktorterme sind Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 366 Bemerkungen: durch diese Modifikation entsteht ein Kalkül mit anderem Reduktionsverhalten. Insbesondere kann Senden und If-Then-Else blockierend sein. 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” 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 Bemerkungen: 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” 368 Wir betrachten das kleine Beispielprotokoll in vereinfachter Form. (Wir lassen das Signieren des Sitzungsschlüssels K weg.) 1 B → A: PB 2 A → B: {K }PB 3 B → A: {m}K 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 Im angewandten π-Kalkül: Alice: A = (νK ) c(p). chaencrypt(K , p)i. c(x).0 Bob: B = (νm)(νKB ) chpk(KB )i. c(y ). 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. 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” 370 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 Wir verwenden Formeln, bestehend aus: Funktionssymbolen, die den Konstruktoren aus der Theorie entsprechen. Hornklauseln für die Konstruktoren Konstantensymbolen, die den im Protokoll vorkommenden Namen entsprechen oder das Vorwissen des Angreifers repräsentieren. für jeden n-stelligen Konstruktor in der Theorie. 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” 372 Att(x1 ) ∧ · · · ∧ Att(xn ) → Att(f (x1 , . . . , xn )) Im betrachteten Beispiel: Att(x) ∧ Att(y ) → Att(sencrypt(x, y )) (K1) Att(x) ∧ Att(y ) → Att(aencrypt(x, y )) (K2) Att(x) → Att(pk(x)) (K3) Att(x) → Att(sk(x)) (K4) 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 Hornklauseln für das Verhalten des Angreifers Hornklauseln für die Destruktoren Msg (x, y ) ∧ Att(x) → Att(y ) Att(M1 ) ∧ · · · ∧ Att(Mn ) → Att(M) (Angreifer kann Nachrichten von Kanälen, die er kennt, abfangen.) für jede Gleichung der Form g (M1 , . . . , Mn ) = M. Im betrachteten Beispiel: Att(x) ∧ Att(y ) → Msg (x, y ) Att(sencrypt(x, y )) ∧ Att(y ) → Att(x) (D1) Att(aencrypt(x, pk(y ))) ∧ Att(sk(y )) → Att(y ) Barbara König (E1) (D2) “Form. Asp. der Software-Sicherheit und Kryptographie” 374 (E2) (Angreifer kann Nachrichten, die er kennt, auf Kanälen verschicken, die er kennt.) 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 Modellierung des Protokolls (Teil 1) 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 alle entsprechenden Variablen enthalten. Im betrachteten Beispiel: Verhalten von Alice Msg (c, p) → Msg (c, aencrypt(K , p)) 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 ) (A1) Dabei sind c, K Konstanten und p eine Variable. Barbara König Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 376 “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 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), wobei M = sencrypt(m, adecrypt(y , sk(KB ))). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 378 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. Im betrachteten Beispiel: Att(c) Att(KE ) (V1) (V2) 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 Mit Hilfe der obigen Hornklauseln, kann man die leere Klausel ableiten, wir benutzen dazu unäre Resolution. Zielklausel Wir betrachten zunächst den Fall der Geheimhaltung einer Nachricht m. Dann ist die Zielklausel {Att(c)}(V1) {¬Att(x), ¬Att(y ), Msg (x, y )}(E2) TTTT TTTT TTTT TTT {¬Att(y ), Msg (c, y )}(R1) Att(m) Dabei wird die Zielklausel negiert zur Klauselmenge hinzugefügt: {¬Att(m)} (Z) {Att(c)}(V1) {¬Msg (x, y ), ¬Att(x), Att(y )}(E1) TTTT TTTT TTTT TTT {¬Msg (c, y ), Att(y )}(R2) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 380 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 {Att(KE )}(V2) {¬Msg (c, y ), Att(y )}(R2) {Msg (c, pk(KB ))}(B1) TTTT TTTT TTTT TTT {Att(pk(KB ))}(R3) {¬Att(x), Att(pk(x))}(K1) WWWWW WWWWW WWWWW WWWWW W {¬Att(y ), Msg (c, y )}(R1) {Att(pk(KE ))}(R4) {¬Msg (c, p), Msg (c, aencrypt(K , p))}(A1) {Msg (c, pk(KE ))} WWWWW WWWWW WWWWW WWWWW W WWWWW WWWWW WWWWW WWWWW W {Msg (c, aencrypt(K , pk(KE )))}(R5) 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 {Att(KE )}(V2) {Msg (c, aencrypt(K , pk(KE )))}(R5) {¬Msg (c, y ), Att(y )}(R2) VVVV VVVV VVVV VVVV VV {Att(aencrypt(K , pk(KE )))}(R6) {¬Att(x), Att(sk(x))}(K2) XXXXX XXXXX XXXXX XXXXX XXXX {¬Att(aencrypt(x, pk(y ))), ¬Att(sk(y )), Att(x)}(D1) {Att(sk(KE ))} {Att(aencrypt(K , pk(KE )))}(R6) {¬Att(aencrypt(x, pk(KE ))), Att(x)} XXXXX XXXXX XXXXX XXXXX XXX XXXXX XXXXX XXXXX XXXXX XXXX Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 384 Barbara König {Att(K )}(R7) “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(pk(KB ))}(R3) {¬Att(x), ¬Att(y ), Att(aencrypt(x, y ))}(K3) {Att(K )}(R7) {¬Att(x), Att(aencrypt(x, pk(KB ))))} VVVV VVVV VVVV VVVV VVV VVVV VVVV VVVV VVVV VVV {¬Att(y ), Msg (c, y )}(R1) {Att(aencrypt(K , pk(KB ))))} VVVV VVVV VVVV VVVV VVV {Msg (c, aencrypt(K , pk(KB )))}(R8) {Msg (c, aencrypt(K , pk(KB )))}(R8) {¬Msg (c, aencrypt(z, pk(KB ))), YYYYYY Msg (c, sencrypt(m, z))}(B2) YYYYYY YYYYYY YY {¬Msg (c, y ), Att(y )}(R2) {Msg (c, sencrypt(m, K ))} ZZZZZZZ ZZZZZZZ ZZZZ {¬Att(sencrypt(x, y )), ¬Att(y ), Att(x)}(D2) {Att(sencrypt(m, K ))} ZZZZZZZ ZZZZZZZ ZZZZ {Att(K )}(R7) ZZ {¬Att(K ), Att(m)} ZZZZZZZ ZZZZZZZ ZZZZZZZ ZZ {¬Att(m)}(Z ) ZZZ {Att(m)} ZZZZZZZ ZZZZZZZ ZZZZZZZ ZZZZ 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 Achtung: D.h., die leere Klausel ist ableitbar und es gibt damit einen Angriff auf dieses Protokoll. Der Angriff läßt sich auch aus dem Resolutionsbeweis herleiten. Es ist jedoch noch nicht klar, wie man im Fall eines korrekten Protokolls beweisen soll, dass die leere Klausel nicht herleitbar ist. Barbara König 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 388 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 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. 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. 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” 390 Verschattung In einem Prozess der Form (νn)P wird für jede Folge von Nachrichten, die zuvor empfangen wurden, ein neuer Name a erzeugt. Das gilt insbesondere wenn sich der Prozess unter einer Replikation befindet. Um dies zu beschreiben, wird a ersetzt durch a(x1 , . . . , xn ), wobei die Variablen aus den vorher vorkommenden Eingabe-Präfixen entnommen werden. Beispiel: !c(x).(νn)(dhni.P) ergibt unter anderem die Hornklausel 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” 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 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).(if n = sdecrypt(x, K ) then dhxi.0 else 0) sub = [x/sencrypt(n, K )] ist die einzige minimale Substitution, die zur Gleichheit von n und sdecrypt(x, K ) führt. 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. 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” 392 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 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” 394 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 http://www.di.ens.fr/~blanchet/publications/ 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 Wir betrachten nun die Funktionsweise von ProVerif: 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 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. “Form. Asp. der Software-Sicherheit und Kryptographie” 396 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 query attacker:secretM[]. let processA = new K; in(c, p); out(c, aencrypt(K,p)); in(c, x). Aufruf von ProVerif: let processB = new secretM; new Kb; out(c,pk(Kb)); in(c,y); out(c,sencrypt(secretM,adecrypt(y,sk(Kb)))). process > 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. (processA | processB) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 398 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 die Modellierung des fehlerhaften Needham-Schroeder-Protokolls in ProVerif. param traceDisplay = long. (* 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(). 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). (* Dekrementierung *) fun dec/1. Barbara König “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 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,()). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 402 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” 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 process Bei Aufruf von ProVerif wird wieder ausgegeben, dass die Eigenschaft nicht erfüllt ist: new Kas; new Kbs; (processA | processB | processS) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 404 > 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. 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 Hier wird korrekte Authentifizierung durch Korrespondenz von Ereignissen überprüft: Wenn Ereignis (event) a(x,y) eintritt, dann muss zuvor Ereignis b(y,x) eingetreten sein. Dazu reichert man die Syntax und Semantik des π-Kalküls um Ereignisse an. 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” 406 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” 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 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 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))). “Form. Asp. der Software-Sicherheit und Kryptographie” 408 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 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” 410 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. query attacker:secretM[]. 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 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. let processB = in(c,x); out(c,sdecrypt(x,K)). process 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. new K; new secretM; (processA | processB) 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 Beispiel: Wir betrachten einen Konstruktor f und einen Destruktor g (beide einstellig) mit der Gleichung 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. 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” 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 Probleme mit SLD-Resolution: Probleme mit unärer Resolution: Bei SLD-Resolution kann folgende unendliche Folge von Resolventen entstehen: Auch unäre Resolution funktioniert hier nicht. Wir erhalten folgenden unendlichen Resolutionsbeweis: {¬Att(b)} {¬Att(f(b))} {¬Att(f(x)), Att(x)} {Att(a)} {¬Att(f(x)), Att(x)} {Att(f(a))} ffff fffff {¬Att(f(f(b)))} fff fffff .. . {¬Att(x), Att(f(x))} fffff fffff {Att(f(f(a)))} {¬Att(x), Att(f(x))} fff fffff .. . Barbara König “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 Daher wird folgendes Vorgehen benutzt: Wir beginnen mit der Klauselmenge ohne die Zielklausel. 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. 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” 418 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” 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 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” 420 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 “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 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 422 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. 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 Saturierung/Sättigung 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: 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))}} 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. Nur in der ersten Klausel ist ein Literal selektiert. Diese Klausel kann mit der zweiten und vierten Klausel resolviert werden und man erhält: Klauseln, die durch bereits existierende Klauseln subsumiert werden, werden sofort entfernt. In beiden Klauseln ist kein Literal selektiert. Außerdem ist die erste der beiden neuen Klauseln eine Tautologie (und könnte entfernt werden), die zweite gab es bereits. Wir bestimmen nun Saturate ∗ (M) dadurch, indem wir alle Klauseln K mit sel(K ) 6= ∅ aus M 0 entfernen. Barbara König {¬Att(x), Att(x)} Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 424 {Att(a)} “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 Beispiel (Fortsetzung): Bemerkung: Die Saturierung terminiert also und wir erhalten als Ergebnis: Die übrigbleibenden Klauseln sind alle von der Form Saturate ∗ (M) = {{¬Att(x), Att(f(x))}, {Att(a)}, {Att(f(a))}, {¬Att(x), Att(x)}} Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 426 Att(x1 ) ∧ · · · ∧ Att(xn ) → P0 , wobei auch n = 0 möglich ist. Dann handelt es sich um eine Tatsachenklausel. 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 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” 428 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” 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 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” 430 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” 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 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” 432 Beispiel: es gilt G = {¬Att(b)} und Saturate ∗ (M) = {{¬Att(x), Att(f(x))}, {Att(a)}, {Att(f(a))}, {¬Att(x), Att(x)}} Wir können nur G mit der vierten Klausel aus Saturate ∗ (M) resolvieren, wodurch wir wieder G erhalten (Subsumierung). 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” 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 Verhaltensäquivalenzen Auch bei diesem Vorgehen ist nicht klar, dass das Verfahren terminiert. In der Praxis terminiert das Verfahren jedoch sehr häufig. Man kann auch zeigen, dass für eine bestimmte Klasse von kryptographischen Protokollen (sogenannte tagged protocols) das Resolutionsverfahren immer terminiert. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 434 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” 435 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. 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. 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: 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” 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 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) 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. 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]. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 438 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 Bemerkungen: 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 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 kann nicht festgestellt werden, ob ein (frischer) Wert als Bild einer Einwegfunktion entstanden ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 440 “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 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. Diese Definition ist verschieden von der bisherigen Definition von Geheimhaltung, die davon ausgeht, dass die geheimzuhaltende Nachricht im Prozess gebunden ist. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 442 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” 443 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: Beispiel MACs 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 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” 444 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 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) 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. 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. Nachricht m K Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 446 Block 1 Block 2 Block n h h h Barbara König MAC “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 Verhaltensäquivalenzen Diese Konstruktion von MACs hat in der vorgestellten Form folgenden Nachteil: 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. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 448 Wir modellieren diese Art der MAC-Berechnung im angewandten π-Kalkül. Dazu verwenden wir 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). 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 Dazu stellen wir folgende Gesetze auf: mac(x, y ) = f(x, y ) f(x, null) = x f(x, concat(y , z)) = h(f(x, y ), z) 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 )) Der Angriff sieht formal wie folgt aus: Gegeben ist eine MAC M = f(K , m) Dann berechnet man daraus h(M, m0 ) = h(f(K , m), m0 ) = f(K , concat(m, m0 )) 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. = h(f(K , concat(null, m1 )), m2 ) = h(h(f(K , null), m1 ), m2 ) = h(h(K , m1 ), m2 ) Barbara König “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 Der Angreifer im angewandten π-Kalkül sieht wie folgt aus: E = ahmi.b(y ).bhpair(concat(m, m0 ), h(snd(y ), m0 ))i.0 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: 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. mac(x, y ) = f(x, f(x, y )) Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 452 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 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. 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: (νK1 ) . . . (νKn )P ≈ (νK1 ) . . . (νKn )P 0 (Ohne Beweis.) 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 Verhaltensäquivalenzen sind jedoch dann nützlich, wenn 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). Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 456 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” 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 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. 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. Beispiele: Man kann nun zeigen, dass die so definierte Verhaltensäquivalenz mit der Beobachtungskongruenz übereinstimmt. 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 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. (νm)(ahmi.P) −→ P (Prozess schickt zuvor verschattete Nachricht m an Umgebung.) 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 Weitere Verifikationstechniken Schlussbemerkungen 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) 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. und viele weitere Methoden und Werkzeuge . . . Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 460 Organisatorisches Einführung Kryptographie Kryptographische Protokolle Verifikation von kryptographischen Protokollen Schlussbemerkungen 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 bisher relativ wenige 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 aber ein interessantes Forschungsthema. Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 462 Barbara König “Form. Asp. der Software-Sicherheit und Kryptographie” 461