Komplexitätstheorie mit Anwendungen in der Kryptographie Dennis Hofheinz∗ Karlsruher Institut für Technologie Organisatorisches • Wir werden Arora und Baraks Buch Computational Complexity: A Modern Approach“ benutzen. ” Eine Vorabversion ist unter http://www.cs.princeton.edu/theory/complexity/ erhältlich. • Die Vorlesung ist prüfbar im Masterstudiengang (6 Leistungspunkte im Modul Komplexitätstheorie“). ” Notation Für eine Menge S ist S ∗ := {(s1 , . . . , sn ) | n ∈ N, si ∈ S} die Menge aller endlichen Folgen über S. Für eine Folge x ∈ S ∗ schreiben wir |x| für die Länge von x. Für f, g : N → N schreiben wir • f = O(g) wenn f (n)/g(n) beschränkt ist, • f = Ω(g) wenn g = O(f ) (also g(n)/f (n) beschränkt ist), • f = o(g) wenn lim supn→∞ f (n)/g(n) = 0, • f = ω(g) wenn g = o(f ) (also lim supn→∞ g(n)/f (n) = 0), • f = Θ(g) wenn f = O(g) und g = O(f ). Für n ∈ N bezeichnet 1n den String von n Einsen. 1 Turingmaschinen Definition 1.1 (Turingmaschine). Eine (k-Band-)Turingmaschine (TM) (für k ≥ 2) M = (Γ, Q, δ) besteht aus: • Einer endlichen Zustandsmenge Q ⊇ {qstart , qhalt }. qstart und qhalt sind Start- bzw. Haltezustand. • Einem endlichen Alphabet Γ ⊇ {B, , 0, 1}. B und sind Start- bzw. Leersymbol. • Einer Transitionsfunktion δ : Q × Γk → Q × Γk−1 × {L, S, R}k . Lauf einer TM. Wenn wir eine TM M mit Eingabe x = (x1 , . . . , xn ) ∈ Γ∗ laufen lassen, meinen wir damit folgendes. Man stelle sich ein Nur-lese-Band vor, auf dem x steht, also eine unendliche Folge in N0 von Γ-Elementen mit (tin 0 , t1 , . . .) ∈ Γ in (tin 0 , t1 , . . . ) = (B, x1 , . . . , xn , , , . . . ). Man stelle sich weiter k − 1 weitere Schreib-/Lesebänder vor, die mit Leerzeichen gefüllt sind: (t20 , t21 , . . . ) = (B, , , . . . ) .. .. . . (t0k−1 , t1k−1 , . . . ) = (B, , , . . . ) out (tout 0 , t1 , . . . ) = (B, , , . . . ). Schließlich seien k Köpfe auf den jeweils ersten Zellen der einzelnen Bänder plaziert. Man wende nun 1 out die Transitionsfunktion δ auf M s Startzustand q = qstart und die jeweiligen Inhalte t := (tin 1 , t1 , . . . , t1 ) ∗ [email protected] 1 der Bandzellen unter den Köpfen an. δ(q, t) = (q 0 , t0 , d) legt den neuen Zustand q 0 , die neuen Zellinhalte k t0 = (t11 , . . . , tout 1 ), sowie die Richtungen d ∈ {L, S, R} (”left“, ”stay“, ”right“) fest, in der die Köpfe bewegt werden sollen. Dabei wird niemals ein Kopf jenseits des Startsymbols bewegt. Weiter wird erzwungen, dass ein Startsymbol nie überschrieben wird, und kein Startsymbol auf eine Nicht-Startposition eines Bandes geschrieben wird. Man fahre so fort, bis M den Haltezustand annimmt. Wir sagen, dass M (x) y ∈ Γ∗ ausgibt, wenn y der Inhalt des Ausgabebandes (tout 1 , . . . ) zum Zeitpunkt des Anhaltens ist, wobei das führende Start- und abschließende Leersymbole entfernt werden. Wir sagen weiter, dass M die Funktion f : (Γ \ {B, })∗ → (Γ \ {B, })∗ berechnet, wenn M die Ausgabe y = f (x) für alle x ∈ (Γ \ {B, })∗ gibt. Definition 1.2 (Zeit-/Bandkomplexität). Eine TM M hat Zeitkomplexität T (n) (mit T : N → N) wenn M (x) für alle x ∈ (Γ \ {B, })∗ nach höchstens T (|x|) Schritten anhält. M hat Bandkomplexität S(n) wenn M (x) für alle x ∈ (Γ \ {B, })∗ auf höchstens S(|x|) Zellen der Schreib-/Lesebänder zugreift. In vielen Fällen werden wir uns auf Beschränkungen F für Zeit- oder Bandkomplexität beschränken, die ihrerseits in einem vernünftigen Sinn berechenbar sind: Definition 1.3 (Zeit-/bandkonstruierbar). Eine Funktion F : N → N ist zeitkonstruierbar wenn F (n) ≥ n und eine TM M existiert, die F (n) (in Binärdarstellung) bei Eingabe 1n berechnet und Zeitkomplexität O(F (n)) hat. Analog ist F bandkonstruierbar, sofern F (n) ≥ n und eine TM M existiert, die F (n) bei Eingabe 1n berechnet und Bandkomplexität O(F (n)) hat. Universalität der Definition. Satz 1.4 (Unwichtigkeit des Bandalphabets, Claim 1.5 in [1]). Für jedes f : {0, 1}∗ → {0, 1} und T : N → N gilt: • wenn f von einer TM M mit Zeitkomplexität T (n) und Alphabet Γ berechnet wird, • dann wird f von einer TM M̃ mit Zeitkomplexität 4 log |Γ|·T (n) und Alphabet {B, , 0, 1} berechnet. Beweis. Codiere ein Element aus Γ als log |Γ| Elemente aus {B, , 0, 1}. Passe die Transitionsfunktion an, so dass sie codierte Elemente liest/schreibt. (Dies kann etwa mit einem impliziten Zähler in der Transitionsfunktion geschehen, der von 1 bis log |Γ| zählt.) Satz 1.5 (Unwichtigkeit der Anzahl der Arbeitsbänder, Claim 1.6 in [1]). Eine Einzelband-TM M sei eine TM mit einem einzigen Band, das sowohl als Eingabe-, Arbeits- und Ausgabeband fungiert. Dann gilt für jedes f : {0, 1}∗ → {0, 1} und zeitkonstruierbares T : N → N: • wenn f von einer k-Band-TM M mit Zeitkomplexität T (n) berechnet wird, • dann wird f von einer Einzelband-TM M̃ mit Zeitkomplexität 5kT (n)2 berechnet. Beweis. Codiere die k Bänder von M versetzt in ein Band. Genauer besetzt das i-te Band von M die Positionen i, k + i, 2k + i, etc. von M̃ s Band. Für jedes Symbol a aus M s Alphabet gibt es die Symbole a und â in M̃ s Alphabet. Ein Symbol â zeigt an, dass der jeweilige Kopf über dieser Zelle steht. M̃ verfährt wie folgt: 1. Initialisiere das aufgeteilte Band: Codiere die Eingabe auf ein wie beschrieben aufgeteiltes Band maximaler Länge kT (n) und markiere die jeweiligen initialen Kopfpositionen (mit ˆ). 2. Simuliere einen Berechnungsschritt von M wie folgt: (a) Laufe das aufgeteilte Band von links nach rechts ab und sammle die Symbole unter den jeweiligen Köpfen auf. (b) Wende M s Transitionsfunktion auf die aufgesammelten Symbole an, um den neuen Zustand, die neuen Zellinhalte unter den Köpfen und die Kopfbewegungen zu bestimmen. (c) Laufe das aufgeteilte Band von rechts nach links ab, wobei die Zellinhalte und Kopfpositionen angepasst werden. 3. Wiederhole Schritt 2, bis M den Haltezustand annimmt. 4. Decodiere die Ausgabe. Bemerkung 1.6. Man beachte, dass die Kopfbewegungen von M̃ bei geschickter Implementierung nur abhängig von der Länge |x| der Eingabe, nicht aber abhängig von x selbst sind. Solche Maschinen heißen oblivious. 2 Bemerkung 1.7. Der quadratische Overhead in der Simulation ist inhärent. Beispielsweise kann die Funktion f : {0, 1}∗ → {0, 1} mit f (b1 b2 . . . bn ) = 1 ⇔ b1 b2 . . . bn = bn bn−1 . . . b1 auf einer Einzelband-TM nur in Zeit Ω(n2 ) berechnet werden, auf einer 2-Band-TM aber in Zeit O(n). 2 Universalität und ein schwieriges Problem Die universelle Turingmaschine. tion sinnvoll: Turingmaschinen sind abzählbar. Insbesondere ist folgende Defini- Definition 2.1 (Gödelnummerierung). Eine Gödelnummerierung ist eine Aufzählung M1 , M2 , . . . aller Turingmaschinen. Wir nennen i die (nicht notwendig eindeutige) Gödelnummer von Mi . Wir fordern, dass für gegebene TM M unendlich viele Gödelnummern i mit M = Mi existieren.1 Gelegentlich wird es nützlich sein, auch Bitstrings α ∈ {0, 1}∗ in naheliegender Weise als Gödelnummern zu interpretieren: dann ist Mα = Mi , wobei i die Interpretation von α als natürliche Zahl ist. Wir werden im Folgenden eine feste Gödelnummerierung annehmen, die effiziente Simulationen durch eine universelle Turingmaschine erlaubt: Satz 2.2 (Universelle TM, Theorem 1.9 in [1]). Es existiert eine Gödelnummerierung und eine TM U, so dass U(α, x) für beliebige (α, x) ∈ ({0, 1}∗ )2 die Berechnung von Mα (x) emuliert. Dabei • gibt U(α, x) dieselbe Ausgabe wie Mα (x), und • existiert eine von x unabhängige (aber von α abhängige) Konstante C, so dass U(α, x) in höchstens CT log T Schritten hält, sofern Mα (x) in T Schritten hält. U heißt universelle TM. Der Beweis von Satz 2.2 ist technisch, aber konzeptionell einfach: U(α, x) schreibt zunächst die Transitionsfunktion von Mα auf ein gesondertes Arbeitsband und simuliert anschließend Mα schrittweise, mit den eigenen Bändern als Arbeitsbändern. (Wir können davon ausgehen, dass Mα höchstens zwei Arbeitsbänder benutzt und ein festes Alphabet hat.) Beispiel für schwierige Probleme: Funktionen, die nicht berechenbar sind. Satz 2.3 (Nicht-berechenbare Funktion, Theorem 1.10 in [1]). Es existiert eine Funktion fUC : {0, 1}∗ → {0, 1}, die von keiner TM berechnet wird. Beweis. Sei fUC (x) = 0 genau dann, wenn Mx (x) schließlich 1 ausgibt. Gibt Mx (x) keine 1 aus (oder hält nicht), setzen wir fUC (x) = 1. Wäre fUC berechenbar von einer TM M = Mx , so würde M (x) = Mx (x) = fUC (x) gelten, im Widerspruch zur Definition von fUC . Bemerkung 2.4. Der Beweis von Satz 2.3 ist ein Beispiel für ein Diagonalisierbarkeitsargument. Diese Art von Argumenten wird uns noch häufiger begegnen. Satz 2.5 (Das Halteproblem ist nicht entscheidbar, Theorem 1.11 in [1]). Es gibt keine TM, die die Funktion fHALT : ({0, 1}∗ )2 → {0, 1} mit fHALT (α, x) = 1 ⇐⇒ Mα (x) erreicht den Haltezustand berechnet. Beweis. Angenommen, M berechnet fHALT . Dann berechnet die folgende TM M 0 fUC . Zunächst simuliert M 0 (x) als Unterroutine M (x, x). Ist M (x, x) = 0, dann hält Mx (x) nicht, und M 0 kann 1 ausgeben. Andernfalls kann M 0 die Ausführung von Mx (x) intern simulieren; es ist garantiert, dass diese Simulation abbricht. Ist Mx (x) = 1, so gibt M 0 schließlich 0 aus, ansonsten 1. Bemerkung 2.6. Der Beweis von Satz 2.5 enthält eine Reduktion. Reduktionen spielen eine zentrale Rolle in der Komplexitätstheorie und in der Kryptographie. 1 Diese Forderung wird nützlich sein, um für eine gegebene TM M die Existenz beliebig großer Gödelnummern i mit M = Mi zu folgern. 3 3 Sprachen und Komplexitätsklassen In vielen Fällen ist es sinnvoll und handhabbarer, Entscheidungsprobleme zu betrachten, also die Aufgabe, zu entscheiden, ob x ∈ L für gegebenes x ∈ {0, 1}∗ und eine feste Sprache L ⊆ {0, 1}∗ ist. Die Berechnung von fUC und fHALT etwa sind Beispiele für Entscheidungsprobleme. Definition 3.1 (Sprache). Eine Sprache L über einem Alphabet Γ ist eine Untermenge L ⊆ Γ∗ . Wir sagen, dass eine TM M eine Sprache L entscheidet (oder erkennt), wenn M deren charakteristische Funktion f : Γ∗ → {0, 1} mit f (x) = 1 ⇔ x ∈ L berechnet. Üblicherweise werden wir Sprachen über dem Alphabet Γ = {0, 1} betrachten. Definition 3.2 (Elementare Komplexitätsklassen). Wir schreiben DTIME(T (n)) := {L | L wird entschieden von einer TM mit Zeitkomplexität O(T (n))} SPACE(S(n)) := {L | L wird entschieden von einer TM mit Bandkomplexität O(S(n))} und weiter P := [ DTIME(T (n)), PSPACE := T ∈N[X] [ SPACE(S(n)). S∈N[X] Definition 3.3 (Nichtdeterministische TM). Eine nichtdeterministische TM (auch NDTM) M ist eine TM mit zwei Transitionsfunktionen δ0 und δ1 , sowie einem speziellen Zustand qaccept . In jedem Schritt kann M δ0 oder δ1 benutzen. Die Ausführung von M hält an, wenn M qaccept oder qhalt erreicht. Wir sagen, dass M eine Eingabe x ∈ Γ∗ akzeptiert (oder: M (x) akzeptiert, M (x) = 1), wenn es eine Folge von Schritten gibt, nach der M (x) qaccept erreicht. M entscheidet (oder erkennt) eine Sprache L ⊆ {0, 1}∗ , wenn gilt: M akzeptiert x ⇔ x ∈ L. M hat Zeit-/Bandkomplexität F (n), wenn für alle möglichen Berechnungspfade nur F (n) Zeit-/Bandkomplexität benötigt wird. Definition 3.4 (Nichtdeterministische Komplexitätsklassen). Wir schreiben NTIME(T (n)) := {L | L wird entschieden von einer NDTM mit Zeitkomplexität O(T (n))} NSPACE(S(n)) := {L | L wird entschieden von einer NDTM mit Bandkomplexität O(S(n))} sowie NP := [ NTIME(T (n)), NPSPACE := T ∈N[X] [ NSPACE(S(n)). S∈N[X] Satz 3.5 (Zusammenhang det./nichtdet. Zeit-/Bandkomplexität, Theorem 4.3 in [1]). Für bandkonstruierbares S : N → N ist: DTIME(S(n)) ⊆ NTIME(S(n)) ⊆ SPACE(S(n)) ⊆ NSPACE(S(n)) ⊆ DTIME(2O(S(n)) ). Beweis. Es genügt, NTIME(S(n)) ⊆ SPACE(S(n)) und NSPACE(S(n)) ⊆ DTIME(2O(S(n)) ) zu zeigen. Um NTIME(S(n)) ⊆ SPACE(S(n)) einzusehen, betrachte man eine TM M̃ , die eine NDTM M mit Zeitkomplexität cS(n) wie folgt simuliert: • Für alle w = (w1 , . . . , wcS(n) ) ∈ {0, 1}cS(n) : – Simuliere M mit Transitionsschritten von δw1 , . . . , δwcS(n) . Wenn M akzeptiert, gib 1 aus. • Gib 0 aus. M̃ hat Bandkomplexität O(S(n)) und entscheidet dieselbe Sprache wie M . Wir zeigen NSPACE(S(n)) ⊆ DTIME(2O(S(n)) ). Sei dazu M eine NDTM mit Bandkomplexität O(S(n)). Wir müssen eine (deterministische) TM M̃ mit Zeitkomplexität 2O(S(n)) konstruieren, die dieselbe Sprache wie M entscheidet. Man betrachte dazu den Graphen GM,x aller Konfigurationen von M bei Eingabe x ∈ {0, 1}n . Eine Konfiguration besteht dabei aus einem Zustand, einer Belegung aller Bänder, und der Position aller Köpfe. Es existiert eine Kante zwischen zwei Knoten u und v, wenn u durch einen einzigen Schritt in v überführt werden kann. Nach Annahme kann jede mögliche Konfiguration von M in O(S(n)) Zellen ausgedrückt werden. Wir können ohne Beschränkung der Allgemeinheit annehmen, dass 4 • genau eine akzeptierende Konfiguration Caccept existiert, • der Graph aller Konfigurationen von M zyklenfrei ist, und • für je zwei Knoten in O(S(n)) Schritten entschieden werden kann, ob sie Nachbarn sind. Insgesamt hat der Konfigurationsgraph 2O(S(n)) Knoten, und es muss lediglich entschieden werden, ob ein Pfad von Startkonfiguration Cstart zur akzeptierenden Konfiguration Caccept existiert. Etwa mit einem Breitensuchalgorithmus kann dies in 2O(S(n)) Schritten erledigt werden. Beispielsweise kann M̃ wie folgt verfahren: 1. Schreibe alle syntaktisch möglichen Konfigurationen auf. (Dies kann in 2O(S(n)) Schritten geschehen.) 2. Markiere die Startkonfiguration Cstart . 3. Für jede neu markierte Konfiguration: (a) Markiere jede Folgekonfiguration. (Benutze dazu ein gesondertes Band für Tests auf Folgekonfigurationen. Es ergibt sich ein Aufwand von 2O(S(n)) Schritten.) 4. Wiederhole Schritt 3, bis sich keine neuen Markierungen mehr ergeben. (Insgesamt ergeben sich 2O(S(n)) Wiederholungen von Schritt 3, also insgesamt (2O(S(n)) )2 = 2O(S(n)) Schritte.) 5. Gib 1 aus genau dann wenn Caccept markiert ist. ? Die vielleicht bekannteste offene Frage aus der Komplexitätstheorie ist P = NP. Überraschenderweise ist diese Frage für Band komplexitätsklassen relativ einfach klärbar: Satz 3.6 (Savitch, Theorem 4.12 in [1]). Wenn S : N → N bandkonstruierbar ist, dann gilt NSPACE(S(n)) ⊆ SPACE(S(n)2 ). Beweis. Sei M eine NDTM mit Bandkomplexität S(n). Wir konstruieren eine deterministische TM M̃ mit Bandkomplexität O(S(n)2 ), die dieselbe Sprache wie M entscheidet. Wie im Beweis von Satz 3.5 können annehmen, dass für jedes x ∈ {0, 1}n der Konfigurationsgraph GM,x höchstens m := 2O(S(n)) Knoten hat, zyklenfrei ist, und eine eindeutige akzeptierende Konfiguration Caccept existiert. Betrachte die Funktion reach?(u, v, i), die angibt, ob Knoten v von Knoten u durch einen Pfad der Länge ≤ 2i erreichbar ist. Offensichtlich gilt reach?(Cstart , Caccept , dlog me) = 1 ⇐⇒ M akzeptiert x. Wir implementieren reach? rekursiv. Zunächst kann reach?(u, v, 0) mit Bandkomplexität O(S(n)) berechnet werden. Weiter ist reach?(u, v, i) = 1 genau dann wenn eine Zwischenkonfiguration“ w existiert ” mit reach?(u, w, i − 1) = 1 und reach?(w, v, i − 1) = 1. Demnach kann reach?(u, v, i) wie folgt implementiert werden: • Für alle syntaktisch möglichen Knoten w: – Wenn reach?(u, w, i − 1) = reach?(w, v, i − 1) = 1, gib reach?(u, v, i) = 1 zurück. • Gib reach?(u, v, i) = 0 zurück. Man beachte, dass bei jedem rekursiven Abstieg nur zusätzlicher Speicherplatz O(S(n)) benötigt wird, um sich die Werte für u, v, w, und i zu merken. Da wir reach?(Cstart , Caccept , dlog me) aufrufen, ergibt sich eine Bandkomplexität von O(dlog me · S(n)) = O(S(n)2 ). Korollar 3.7. PSPACE = NPSPACE. 4 Manche Probleme sind schwieriger als andere Satz 4.1 (Zeithierarchietheorem, Theorem 3.1 in [1]). Seien t, T : N → N zeitkonstruierbar mit t(n) log t(n) = o(T (n)). Dann ist DTIME(t(n)) ( DTIME(T (n)). Beweis. Wir beweisen zunächst DTIME(n) ( DTIME(n1,5 ). Man betrachte dazu die TM D, die bei Eingabe x ∈ {0, 1}n die universelle Turingmaschine U(x, x) für n1,4 Schritte simuliert. Gibt U(x, x) Ausgabe y ∈ {0, 1}, dann gibt D Ausgabe 1 − y. Andernfalls gibt D Ausgabe 0. Die Sprache L, die von D entschieden wird, liegt offenbar in DTIME(n1,5 ). Nehmen wir zum Widerspruch an, dass L ∈ DTIME(n) ist. Dann existiert einerseits eine TM M , die L in O(n) Schritten entscheidet. Insbesondere gilt M (x) = D(x) für alle x ∈ {0, 1}∗ . Andererseits simuliert D(x) die Ausführung von Mx (x) in F (|x|) = O(|x| log |x|) Schritten. Es existiert also ein x mit 5 F (|x|) < |x|1,4 und Mx = M . Nach Definition von D gilt also D(x) = 1 − Mx (x) = 1 − M (x), was D(x) = M (x) widerspricht. Dies beweist den Satz für t(n) = n und T (n) = n1,5 . Der allgemeine Fall folgt analog, erfordert jedoch mehr Sorgfalt bei der Wahl und Analyse der Konstanten. Mit analogem Beweis ergibt sich: Satz 4.2 (Bandhierarchietheorem, Theorem 4.8 in [1]). Seien t, T : N → N bandkonstruierbar mit t(n) = o(T (n)). Dann ist SPACE(t(n)) ( SPACE(T (n)). Der fehlende log T (n)-Faktor ergibt sich daraus, dass universelle Simulation mit U zwar einen logarithmischen Zeit-Overhead, jedoch nur einen konstanten Band-Overhead hat. Der nichtdeterministische Fall gestaltet sich komplizierter: Satz 4.3 (Nichtdeterministisches Zeithierarchietheorem, Theorem 3.2 in [1]). Seien t, T : N → N zeitkonstruierbar mit t(n + 1) = o(T (n)). Dann ist NTIME(t(n)) ( NTIME(T (n)). Beweis. Wir beweisen nur NTIME(n) ( NTIME(n1,5 ). Man ist versucht, die Strategie aus dem Beweis von Satz 4.1 direkt zu übernehmen. Dies scheitert jedoch, da es nichttrivial ist, die Ausgabe einer NDTM zu invertieren. Unsere geänderte Strategie sieht deshalb vor, eine NDTM zu simulieren und nur auf sehr wenigen Eingaben zu invertieren. 1,2 Man betrachte dazu die Funktion f : N → N mit f (1) = 2 und f (i + 1) = 2f (i) . Sei D die NDTM, die bei Eingabe der Form 1n (andere Eingaben führen direkt zur Ablehnung) wie folgt verfährt: 1. Finde i mit f (i) < n ≤ f (i + 1). (Dies kann in O(n1,5 ) Schritten geschehen.) 2. Ist n < f (i + 1), so simuliere nichtdeterministisch Mi (1n+1 ) für n1,1 Schritte und gib Mi s Ausgabe aus. Hält Mi nicht, gib 0 aus. (Dies kann in O(n1,5 ) Schritten geschehen.) 3. Ist n = f (i + 1), ermittle durch vollständige Suche über Mi s mögliche Schritte, ob Mi (1f (i)+1 ) in (f (i)+1)1,1 Schritten ablehnt oder akzeptiert. Gib 1−Mi (1f (i)+1 ) aus, oder 0, falls Mi zu lange läuft. 1,1 Dieser Schritt erfordert eine vollständige Suche über 2(f (i)+1) Transitionsmöglichkeiten. Wegen 1,2 n = f (i + 1) = 2f (i) ist dies aber in O(n1,5 ) Schritten möglich. Wenn L die Sprache bezeichnet, die D entscheidet, gilt also L ∈ NTIME(n1,5 ). Nehmen wir zum Widerspruch an, dass L ∈ NTIME(n), und dass eine NDTM M mit Zeitkomplexität O(n) existiert, die L entscheidet. Dann existiert ein hinreichend großes i, so dass M = Mi ist, und dass M (1n+1 ) für alle n ≥ f (i) in weniger als n1,1 Schritten simuliert werden kann. Nach Konstruktion von D gilt dann D(1n ) = M (1n+1 ) f (i+1) D(1 f (i)+1 ) 6= M (1 für f (i) < n < f (i + 1), ). Nach Annahme gilt D(1n ) = M (1n ) für alle n, was zum Widerspruch führt. 5 NP Definitionen. Wir nennen eine TM M mit polynomieller Zeitkomplexität auch Polynomialzeit-TM. Definition 5.1 (NP, alternative Definition). NP ist die Menge aller Sprachen L ⊆ {0, 1}∗ , für die ein Polynom p : N → N und eine Polynomialzeit-TM M existiert mit x∈L ⇐⇒ ∃w ∈ {0, 1}p(|x|) mit M (x, w) = 1 für alle x ∈ {0, 1}∗ . Solche w heißen Zeugen (für die Aussage x ∈ L). Bemerkung 5.2. Diese Definition ist offensichtlich äquivalent zu unserer generischen Definition: eine NDTM kann den Zeugen durch nichtdeterministische Zustandsübergänge raten“ und dann überprüfen. ” Umgekehrt kann die Folge der zu qaccept führenden Zustandsübergänge einer NDTM als Zeuge betrachtet werden. NP kann also als die Menge der Sprachen betrachtet werden, die effizient verifizierbare (Mitgliedschafts-)Beweise haben. 6 Definition 5.3 (co-Klassen). Für eine Sprache L ⊆ {0, 1}∗ sei L = {0, 1}∗ \ L deren Komplement. Für eine Menge CLASS von Sprachen sei dann coCLASS := {L | L ∈ CLASS}. Insbesondere ist coNP = {L | L ∈ NP}. Zwar ist trivialerweise coP = P, aber es ist nicht trivialerweise coNP = NP. Tatsächlich wird vermutet, dass coNP 6= NP ist. (Übungsaufgabe: Wenn coNP 6= NP, dann gilt sowohl coNP 6⊃ NP als auch coNP 6⊂ NP.) Man beachte außerdem, dass aus coNP 6= NP schon P 6= NP folgt. Beispiel 5.4. Beispiele für Sprachen in NP (wobei eine geeignete Codierung als Bitstrings angenommen wird): COMPOSITE := {x | x ∈ N hat mehr als einen Primfaktor} PRIMES := {x | x ∈ N ist prim} GI := {(G1 , G2 ) | G1 und G2 sind isomorphe Graphen} Wir haben sogar PRIMES ∈ P, und deshalb COMPOSITE = PRIMES ∈ coP = P. Auch ist für GNI := {(G1 , G2 ) | G1 und G2 sind nicht-isomorphe Graphen} GNI = GI ∈ coNP. Es ist nicht bekannt, ob GI ∈ P gilt. NP-Vollständigkeit. Definition 5.5 (Karp-Reduktion, Härte, Vollständigkeit). Eine Sprache L ⊆ {0, 1}∗ ist (PolynomialzeitKarp-)reduzierbar auf eine Sprache L0 ⊆ {0, 1}∗ , geschrieben L ≤K L0 , wenn es eine in Polynomialzeit berechenbare Funktion f : {0, 1}∗ → {0, 1}∗ gibt, so dass für alle x ∈ {0, 1}∗ gilt: x∈L ⇐⇒ f (x) ∈ L0 . Sei CLASS eine Menge von Sprachen, etwa CLASS = NP. Dann ist L0 CLASS-hart, wenn L ≤K L0 für alle L ∈ CLASS gilt. L0 ist CLASS-vollständig, wenn L0 CLASS-hart ist und L0 ∈ CLASS. Bemerkung 5.6. Im Falle P 6= NP liegt jede NP-vollständige Sprache schon in NP \ P. Definition 5.7 (SAT, 3SAT). Man wähle eine geeignete Codierung von aussagenlogischen Formeln in konjunktiver Normalform (CNF). (Also Formeln der Form (u1 ∨ ū2 )∧(ū1 ∨ ū3 ) etc.) Literale sind Variablen oder negierte Variablen, und Klauseln sind Disjunktionen von Literalen. Es bezeichne SAT die Sprache aller erfüllbaren Formeln in CNF. Weiter bezeichne 3SAT die Sprache aller erfüllbaren Formeln in 3CNF, also Formeln mit höchstens 3 Literalen pro Klausel. Satz 5.8 (Cook-Levin, Theorem 2.10 in [1]). Sowohl SAT als auch 3SAT sind NP-vollständig. Bemerkung 5.9. Neben SAT und 3SAT sind eine Reihe weiterer Sprachen als NP-vollständig bekannt: 3-Färbbarkeit von Graphen, das Problem des Handlungsreisenden, Sudoku, Tetris, und viele mehr. Es sind momentan mehr als 3000 NP-vollständige Probleme bekannt. Da man P 6= NP vermutet, wird für alle diese Sprachen angenommen, dass sie in NP \ P liegen, also nicht in Polynomialzeit entschieden werden können. Aber nicht alle Sprachen in NP \ P sind NP-vollständig, vorausgesetzt, dass P 6= NP: Satz 5.10 (Ladner, Theorem 3.3 in [1]). Wenn P 6= NP ist, gibt es eine Sprache L ∈ NP \ P, die nicht NP-vollständig ist. Beweis. Betrachte L := SATH , wobei H : N → N eine noch festzulegende in Polynomialzeit berechenbare und monoton wachsende Funktion ist: H(n) SATH := {ψ01n | ψ ∈ SAT und n = |ψ|}. In Abhängigkeit von H gibt es zwei Möglichkeiten (man beachte, dass H monoton ist!): 7 1. Ist H beschränkt (etwa H(n) ≤ C ∈ N für alle n), dann ist SATH NP-vollständig. (Die triviale Reduktion SAT ≤K SATH fügt lediglich das polynomielle Padding hinzu.) 2. Gilt aber limn→∞ H(n) = ∞, dann ist SATH nicht NP-vollständig. Nehmen wir zum Widerspruch SAT ≤K SATH an. Dann gibt es eine mit Aufwand O(ni ) (für festes i ∈ N) berechenbare Funktion H(|ψ|) f , die SAT-Instanzen ψ 0 der Länge n auf SATH -Instanzen ψ01|ψ| der Länge |ψ| + 1 + |ψ|H(|ψ|) = O(ni ) abbildet. Wegen limn→∞ H(n) = ∞ ist |ψ| = o(n). Damit können also beliebige SAT-Instanzen der Länge n auf SAT-Instanzen der Länge o(n) reduziert werden. Insbesondere existiert ein n0 , so dass jede SAT-Instanz der Länge n ≥ n0 in O(ni ) Schritten auf eine SAT-Instanz n0 < n reduziert werden kann. Eine SAT-Instanz der Länge n0 kann aber in konstanter Zeit gelöst werden. Damit kann also SAT rekursiv in Polynomialzeit gelöst werden, und SAT ∈ P, im Widerspruch zur Annahme P 6= NP. Wir definieren nun eine geeignete Funktion H. Genauer ist H 0 (n) die kleinste natürliche Zahl i < log log n, so dass für alle x ∈ {0, 1}∗ mit |x| ≤ log n gilt: Mi (x) hält in i|x|i Schritten und Mi (x) = 1 ⇔ x ∈ SATH . Hierbei ist H die Monotonisierung von H 0 , also H(n) := maxm≤n H 0 (m). Wenn kein solches i existiert, setzen wir H 0 (n) := log log n. Man beachte, dass die Definition von H rekursiv, aber wohldefiniert ist. Wir behaupten, dass SATH eine geeignete Sprache ist. Zunächst ist H offenbar monoton. Weiter ist H 0 (und damit H) in Polynomialzeit berechenbar: zur Berechnung von H reicht eine Reihe von universellen Simulationen aus, bei denen sowohl die Eingaben als auch die Gödelnummer logarithmisch (bzw. doppelt logarithmisch) klein sind. Weiter gilt: 1. Falls SATH ∈ P, dann gibt es eine TM M , die SATH in cnc Schritten (für geeignetes c ∈ N) i entscheidet. Sei i > c mit Mi = M . Nach Definition von H 0 gilt für n > 22 also H 0 (n) ≤ i. Dann ist H beschränkt, und SATH ist NP-vollständig, was SATH ∈ P widerspricht. 2. Falls SATH NP-vollständig ist, gilt SATH 6∈ P, und für jedes i ∈ N gibt es ein (hinreichend langes) x ∈ {0, 1}∗ , so dass Mi (x) nicht korrekt entscheidet, ob x ∈ SATH ist. Insbesondere kann es nur endlich viele n ∈ N mit H 0 (n) = i geben. Das bedeutet, dass H 0 (n) beliebig große Werte annimmt. Damit ist limn→∞ H(n) = ∞, und SATH ist nicht NP-vollständig, im Widerspruch zur Annahme. Insgesamt ist SATH also weder in P, noch NP-vollständig, und leistet demnach das Gewünschte. Bemerkung 5.11. Es sind keine natürlichen“ Sprachen bekannt, die – unter der Annahme P 6= NP ” – in NP \ P liegen und nicht NP-vollständig sind. Es gibt auch nur wenige Kandidaten hierfür; ein bekannter Kandidat ist das Faktorisierungsproblem: gegeben (N, k) ∈ N2 , entscheide, ob N einen Teiler ≤ k hat. ? Die Schwierigkeit der P = NP-Frage. Die Frage, ob P = NP gilt, ist aus mehreren Gründen interessant. Zum einen kann sie umformuliert werden als Frage, ob alles, was effizient nachvollziehbar ist, auch effizient berechnet werden kann. Zum anderen stellt sie als ungelöstes Problem eine technische Herausforderung dar. Es gibt Gründe, warum die Frage bislang noch nicht gelöst werden konnte. Einer dieser Gründe soll jetzt näher betrachtet werden. Definition 5.12 (Orakel-TM). Eine (deterministische oder nichtdeterministische) Orakel-Turingmaschine M ist eine TM mit • einem speziellen (Schreib-/Lese-)Orakelband, • speziellen Zuständen qquery , qyes , und qno . M kann wie folgt mit einem Orakel O ⊆ {0, 1}∗ ausgeführt werden: M wird wie üblich ausgeführt, jedoch • wann immer M den Zustand qquery erreicht, wird der Inhalt von M s Orakelband als Bitstring x ∈ {0, 1}∗ interpretiert, und • falls x ∈ O, so wird M s Zustand in qyes überführt, und • falls x 6∈ O, so wird M s Zustand in qno überführt. ? Mit anderen Worten, M kann Anfragen x ∈ O stellen. Für diese Ausführung schreiben wir auch M O . Für festes O ⊆ {0, 1}∗ sind die Sprachklassen PO , NPO , etc. in offensichtlicher Weise definiert. Definition 5.13 (EXP). EXP := [ c DTIME(2n ). c∈N 8 Satz 5.14 (Baker, Gill, Solovay, Theorem 3.7 in [1]). Es existieren Orakel A, B ⊆ {0, 1}∗ mit PA = NPA und PB 6= NPB . Beweis. Wir definieren geeignete Orakel A und B: Das Orakel A. Wir setzen (i, x, 1n ) ∈ A Mi (x) gibt 1 in ≤ 2n Schritten aus. :⇐⇒ Dann gilt EXP ⊆ PA , weil A erlaubt, exponentielle TMs effizient zu simulieren. Andererseits gilt NPA ⊆ EXP, weil in exponentieller Zeit sowohl A als auch eine Polynomialzeit-NDTM simuliert werden können. Also ist EXP ⊆ PA ⊆ NPA ⊆ EXP, also PA = NPA = EXP. Das Orakel B. Für gegebenes B ⊆ {0, 1}∗ betrachte man zunächst die Sprache UB = {1n | B ∩ {0, 1}n 6= ∅}. Es ist UB ∈ NPB , denn eine NDTM kann einen String x ∈ B ∩ {0, 1}n nichtdeterministisch raten und dann über das B-Orakel überprüfen. Wir konstruieren B iterativ und legen in jedem Schritt die charakteristische Funktion fB : {0, 1}∗ → {0, 1} auf endlich vielen neuen Eingaben fest. Anfangs ist fB noch nirgendwo festgelegt. Im i-ten Schritt wählen wir zunächst ein n, das größer ist als die Länge jeder bislang festgelegten Eingabe x von f . Wir lassen MiB (1n ) für 2n /10 Schritte laufen (oder bis Mi hält), und beantworten Mi s Orakelanfragen x wie folgt: • Wenn fB (x) schon festgelegt wurde, antworten wir mit fB (x). • Wenn fB (x) noch nicht festgelegt wurde, antworten wir mit 0 und setzen fB (x) := 0. Gibt Mi (1n ) schließlich 0 aus, setzen wir fB (x) := 1 für alle noch nicht festgelegten x ∈ {0, 1}n . Weil jedes Mi nur höchstens 2n /10 Schritte läuft, gibt es zu diesem Zeitpunkt noch mindestens ein bis dahin noch nicht festgelegtes fB (x) für x ∈ {0, 1}n , weshalb in dem Fall 1n ∈ UB ist. Wir setzen für alle verbleibenden x ∈ {0, 1}n analog fB (x) := 0, falls Mi (1n ) = 1 ist, so dass in dem Fall 1n 6∈ UB ist. In jedem Fall gilt also Mi (1n ) = 1 ⇔ 1n 6∈ UB . (Hält Mi (1n ) nicht innerhalb von 2n /10 Schritten, ist unwichtig, wie wir weiter verfahren. Wir können etwa wie im Falle Mi (1n ) = 0 verfahren.) Für alle durch dieses Verfahren noch nicht definierten fB (x) setzen wir fB (x) := 0. Unsere Konstruktion von f (bzw. von B und damit UB ) stellt sicher, dass keine TM M die Sprache UB in Polynomialzeit entscheidet. In der Tat: für jedes Polynom T , welches M ’s Laufzeit beschränkt, gilt schließlich T (n) < 2n /10 (für alle hinreichend großen n ≥ n0 ). Man wähle eine Gödelnummer i von M (so dass M = Mi ist), für die i ≥ n0 gilt. (Solch ein i nach unserer Annahme, dass jede TM durch unendlich viele Gödelnummern repräsentiert wird.) Dann gilt Mi (1i ) ⇔ 1i 6∈ UB nach unserer Konstruktion von B. Satz 5.14 zeigt, dass es keinen relativierenden Beweis für P = NP oder P 6= NP geben kann. (Ein relativierender Beweis ist ein Beweis, der auch gültig bleibt, wenn alle Maschinen Zugriff auf ein beliebiges, aber festes Orakel O haben.) Man beachte, dass unsere bisherigen Diagonalisierungsbeweise ? alle relativieren. Man kann also zwar hoffen, P = NP durch Diagonalisierung zu klären; man wird aber in jedem Fall nicht-relativierende Techniken benutzen müssen. (Wir werden nicht-relativierende Techniken noch im Kontext interaktiver Beweissysteme kennenlernen.) Ausflug: Brassards Satz. Zunächst benötigen wir einige Definitionen. Definition 5.15 (Probabilistische TM). Eine probabilistische Turingmaschine (PTM) ist eine TM mit zwei Transitionsfunktionen δ0 , δ1 . In jedem Schritt wird δ0 bzw. δ1 jeweils mit Wahrscheinlichkeit 1/2 angewandt. Die Ausgabe M (x) von M bei Eingabe x ∈ {0, 1}∗ ist demnach eine Zufallsvariable. Definition 5.16 (Public-Key-Verschlüsselung). Ein Public-Key-Verschlüsselungsschema (PKE-Schema) PKE = (Gen, Enc, Dec) besteht aus drei probabilistischen Polynomialzeitalgorithmen (d.h. PTMs): 9 Schlüsselgenerierung. Gen(1n ) gibt Tupel (e, d) aus. e ist öffentlicher und d geheimer Schlüssel. Verschlüsselung. Enc(e, m) gibt bei Eingabe eines öffentlichen Schlüssels und einer Nachricht m ∈ {0, 1} ein Chiffrat c aus. Entschlüsselung. Dec(d, c) gibt bei Eingabe eines geheimen Schlüssels und eines Chiffrats eine Nachricht m aus. Ein (öffentlicher oder geheimer) Schlüssel bzw. ein Chiffrat heißt wohlgeformt, wenn er/es mögliche Ausgabe von Gen bzw. mögliche Ausgabe von Enc für gegebenes e ist. Wir fordern, dass wohlgeformte geheime und öffentliche Schlüssel und Chiffrate effizient erkennbar sind. Außerdem soll Korrektheit in dem Sinne gelten, dass Dec(d, Enc(e, m)) = m immer und für alle möglichen (e, d) im Bild von Gen und alle m ∈ {0, 1} gilt. Insbesondere sind die Mengen der möglichen Chiffrate Enc(e, 0) und Enc(e, 1) für festes e disjunkt. Definition 5.17 (Schwache Sicherheit). Für ein PKE-Schema PKE = (Gen, Enc, Dec) betrachte man die Sprache LPKE = {(1n , e, c) | e ist wohlgeformt und c ist mögliche Ausgabe von Enc(e, 1)}. Wir nennen PKE schwach sicher, wenn LPKE 6∈ P. Es sind keine (schwach) sicheren PKE-Schemata bekannt, obwohl es Kandidaten hierfür gibt. Wegen LPKE ∈ NP (was noch zu zeigen ist) würde die Existenz eines sicheren PKE-Schemas schon P 6= NP implizieren. P 6= NP ist also eine notwendige Annahme für sichere PKE-Schemata. Andererseits gab es Bestrebungen, sichere PKE-Schemata allein unter der Annahme P 6= NP zu konstruieren. Insbesondere könnte man hoffen, LPKE als NP-vollständig zu zeigen; damit würde schon P 6= NP implizieren, dass LPKE 6∈ P ist. Diese Bestrebungen waren (bislang) jedoch nicht von Erfolg gekrönt. Ein Grund hierfür ist in Brassards Satz zu finden: Satz 5.18 (Brassard, vereinfacht). Sei PKE ein PKE-Schema. Ist LPKE NP-hart, gilt NP = coNP. Beweis. Zunächst ist LPKE ∈ NP ∩ coNP: einerseits ist der von Gen und Enc verwendete Zufall (d.h. die Folge der Transitionen) ein Zeuge für (1n , e, c) ∈ LPKE . Andererseits bezeugt Zufall, mit dem (e, d) = Gen(1n ) und c = Enc(e, 0) ist, dass (1n , e, c) 6∈ LPKE . (Da Wohlgeformtheit der Chiffrate nach Annahme effizient nachprüfbar ist, können wir annehmen, dass e und c wohlgeformt sind, dass also ein Zeuge wie oben entweder für (1n , e, c) ∈ LPKE oder für (1n , e, c) 6∈ LPKE existiert.) Wir zeigen nun coNP ⊆ NP; sei dazu L ∈ coNP, also nach Definition L ∈ NP. Weil LPKE NPvollständig ist, gilt also L ≤K LPKE , weshalb nach Definition L ≤K LPKE ist. Nun ist LPKE ∈ coNP, weshalb LPKE ∈ NP ist, womit schließlich L ∈ NP folgt. Also gilt coNP ⊆ NP, und somit coNP = NP. Weil vermutet wird, dass coNP 6= NP ist, gibt Brassards Satz also Anlass zur Vermutung, dass kein LPKE tatsächlich NP-hart ist. Beispiel: Polly Cracker. Es wurde schon häufiger versucht, PKE-Schemata zu konstruieren, deren Sicherheit auf NP-vollständigen Problemen beruht. Ein Beispiel ist Polly Cracker: Definition 5.19 (Polly Cracker). Das PKE-Schema Polly Cracker PKE = (Gen, Enc, Dec) ist wie folgt definiert, wobei F = GF2 ist und X = (X1 , . . . , Xr ) Variablen sind: Schlüsselgenerierung. Gen(1n ) generiert ` = `(n) Polynome f = (f1 , . . . , f` ) ⊆ F[X] mit gemeinsamer Nullstelle s ∈ Fr .2 Öffentlicher Schlüssel ist e = f , und geheimer Schlüssel ist d = s. Verschlüsselung. Enc(e, m) wählt Polynome (h1 , . . . , h` ) ⊆ F[X] und berechnet c = c(X) = m + ` X hi (X) · fi (X) ∈ F[X]. i=1 Entschlüsselung. Dec(d, c) berechnet m = c(s) ∈ F. Zum Beispiel könnte man dazu beliebige Polynome fi0 ∈ F[X] und ein s ∈ Fn wählen, und dann fi (X) = fi0 (X) − fi0 (s) setzen. 2 10 Korrektheit folgt sofort wegen Dec(d, Enc(e, m)) = Dec(d, m + ` X hi (X) · fi (X)) = m + i=1 ` X i=1 hi (s) · fi (s) = m. | {z } =0 Eine konkrete Polly-Cracker-Instanz. Das Berechnen des geheimen Schlüssels d aus dem öffentlichen Schlüssel e entspricht genau dem Lösen eines multivariaten Gleichungssystems f (X) = 0. Die vorangegangene Beschreibung von Polly Cracker legt nicht fest, wie genau die fi , die hi , oder auch nur ` gewählt werden. Es gibt konkretere Vorschläge hierfür, die insbesondere eine Übersetzung NP-vollständiger Probleme ermöglichen. Etwa können wir einen Graphen G = (V, E) mit V = (v1 , . . . , vt ) und E ⊆ V × V so auf Polynome f = (f1 , . . . , f` ) abbilden, dass jede Dreifärbung von G Anlass zu einer Lösung des Gleichungssystems f (X) = 0 gibt: X = (Xv,i )v∈V, 1≤i≤3 f1 = (Xv,1 + Xv,2 + Xv,3 + 1)v∈V f2 = (Xv,i Xv,j )v∈V, 1≤i<j≤3 f3 = (Xu,i Xv,i )(u,v)∈E, 1≤i≤3 f = (f1 , f2 , f3 ) (Xv,i = 1 heißt: Knoten v hat Farbe i) ( = 0“ heißt 1 oder 3 Farben pro Knoten) ” ( = 0“ heißt höchstens eine Farbe pro Knoten) ” ( = 0“ heißt unterschiedliche Farben für benachbarte Knoten) ” (also f (s) = 0 für alle f ∈ f ⇐⇒ sv,i induziert Dreifärbung). Ist Polly Cracker NP-vollständig? Die vorangegangene Beschreibung suggeriert, dass Polly Cracker so sicher ist wie NP-vollständige Probleme schwer sind“. Insbesondere scheint ein Widerspruch zu Bras” sards Satz vorzuliegen. Dies ist jedoch nicht der Fall: • Schwache Sicherheit“ wie im Satz von Brassard betrachtet das Problem, einzelne Chiffrate zu ” entschlüsseln. Die NP-Vollständigkeit von Polly Cracker bezieht sich auf das Problem, den geheimen Schlüssel aus dem öffentlichen zu berechnen. • Tatsächlich kann, je nach Wahl der hi , ein Polly-Cracker-Chiffrat schon durch bloße lineare Algebra gebrochen werden. (Man betrachte die Gleichung c(X) = m + ` X hi (X) · fi (X) i=1 bei bekanntem c, setze m und die Koeffizienten der hi als Unbekannte an, und vergleiche die Koeffizienten links und rechts.) • Je nach Wahl der fi und der hi könnten wohlgeformte Schlüssel und Chiffrate nicht effizient erkennbar sein. (Im Falle der Dreifärbbarkeitsvariante oben sind allerdings zumindest wohlgeformte Schlüssel effizient erkennbar.) Warnung. Die Beschreibung der Sicherheit von Verschlüsselungssystemen mit den bislang besprochenen komplexitätstheoretischen Mitteln kann aus folgendem Grund nur unzureichend sein. Wir haben bislang nur die Worst-Case-Komplexität“ von Problemen betrachtet. Das heißt, dass wir ein Problem als ” schwer betrachtet haben, wenn es schwere Instanzen gibt. In der Kryptographie ist man aber vor allem an Average-Case-Komplexität“ interessiert. Das bedeutet, dass etwa ein PKE-Schema nur dann als sicher ” betrachtet werden sollte, wenn fast alle induzierten Probleminstanzen schwer sind. (Wer würde schon ein Verschlüsselungsschema benutzen, das nur manchmal schwer zu brechen ist?) Impagliazzos 5 Welten. 1995 hat Russell Impagliazzo 5 verschiedene mögliche Welten“ vorgestellt. ” Hintergrund dieser Einteilung ist, dass wir zwar in einer dieser Welten leben – wir wissen aber nicht in welcher. Abhängig davon, in welcher Welt wir leben, ergeben sich ganz unterschiedliche Konsequenzen. Impagliazzos Welten sind: Algorithmica. Es gilt P = NP (oder ein moralisches Äquivalent“ wie NP ⊆ BPP, wobei BPP die ” Menge aller effizient von probabilistischen TMs erkennbaren Sprachen ist). In Algorithmica existieren keine PKE-Schemata, und genereller nur extrem eingeschränkte Kryptographie. Andererseits können in Algorithmica viele Probleme (etwa Optimierungsprobleme) effizient gelöst werden, für die im Augenblick nur Heuristiken existieren. 11 Heuristica. NP-vollständige Probleme haben schwierige Instanzen (und es gilt insbesondere P 6= NP), alle NP-Probleme sind aber easy on average“. Anders gesagt: alle NP-Probleme sind heuristisch ” lösbar. Diese Welt ähnelt Algorithmica, jedoch könnte die Lösung von Problemen um so schwieriger werden, je ausgewählter“ die Probleminstanzen werden. ” Pessiland. NP-Probleme sind hard on average“ (und damit ist P 6= NP), es gibt aber keine Ein” wegfunktionen. (Einwegfunktionen sind noch zu definieren und stellen eine Voraussetzung für die meisten kryptographischen Systeme – insbesondere Secret-Key- und Public-Key-Verschlüsselung – dar.) Pessiland vereint die Nachteile der anderen Welten: NP-Probleme sind schwierig, aber nicht nutzbar für kryptographische Zwecke. Minicrypt. Es existieren Einwegfunktionen (was P 6= NP impliziert), aber keine Public-Key-Kryptographie (also keine sicheren Schlüsselaustauschprotokolle oder PKE-Schemata). Cryptomania. Es existiert sichere Public-Key-Kryptographie (und damit auch Einwegfunktionen). 6 Alternierung Um die nun folgenden Techniken kennenzulernen, sehen wir uns zunächst ein PSPACE-vollständiges Problem an: Definition 6.1 (Quantifizierte Formeln, TQBF). Eine quantifizierte Boolesche Formel (QBF) ist eine Formel Q1 x1 Q2 x2 . . . Q` x` φ(x1 , . . . , x` ). Hierbei ist Qi ∈ {∀, ∃}, die xi sind Variablen über {0, 1}, und φ ist eine aussagenlogische Formel. TQBF ist die Sprache der (in der offensichtlichen Interpretation) wahren QBF. Satz 6.2 (Theorem 4.13 in [1]). TQBF ist PSPACE-vollständig. Beweis. Zunächst gilt TQBF ∈ PSPACE: eine QBF ψ kann rekursiv ausgewertet werden, wobei in Rekursionstiefe i den i-ten Quantor Qi eliminiert. Im Basisfall muss φ für bekannte Eingaben xi ausgewertet werden, was mit |ψ| Bandkomplexität gelingt. Weiter benötigt jeder Rekursionsschritt lediglich Bandkomplexität O(|ψ|). Es bleibt nachzuweisen, dass TQBF PSPACE-hart ist, dass also jede Sprache L, die von einer TM M mit polynomieller Bandkomplexität S(n) entschieden wird, auch auf TQBF reduzierbar ist. Dazu konstruieren wir für gegebenes x ∈ {0, 1}n eine QBF ψ mit ψ ∈ TQBF ⇔ M (x) = 1. Sei m = O(S(n)) die maximale Bitlänge einer Konfiguration von M . Wir starten mit einer aussagenlogischen Formel φM,x (C, C 0 ) für Bitstring-Variablen C, C 0 ∈ {0, 1}m , wobei φM,x (C, C 0 ) = 1 ist genau dann wenn Konfiguration C mittels einer Transition in Konfiguration C 0 überführt werden kann. Ähnlich wie beim Beweis des Satzes von Savitch werden wir nun schrittweise φM,x in (quantifizierte) Formeln ψi abwandeln, so dass ψi (C, C 0 ) = 1 ist genau dann wenn C in höchstens 2i Transitionen in C 0 überführt werden kann. Wir setzen ψ0 := φM,x und definieren ψi (C, C 0 ) als ∃C 00 ∀D1 ∀D2 ((D1 = C ∧ D2 = C 00 ) ∨ (D1 = C 00 ∧ D2 = C 0 )) ⇒ ψi−1 (D1 , D2 ). Diese etwas komplizierte Definition stellt sicher, dass die Größe von ψi nur linear in i wächst (anders etwa als die naheliegendere Formel ∃C 00 ψi−1 (C, C 00 ) ∧ ψi−1 (C 00 , C 0 )). Ähnlich wie bei Savitchs Satz gilt M (x) = 1 ⇔ ψcm (Cstart , Caccept ) ∈ TQBF für geeignetes festes c ∈ N. Dabei ist |ψcm | = O(m2 ), was bedeutet, dass unsere Reduktion polynomiell ist. Die Wahrheit einer QBF zu finden kann als Spiel angesehen werden: nehmen wir eine QBF ψ der Form ∃x1 ∀x2 . . . ∃xn−1 ∀xn φ(x1 , . . . , xn ) an. Stellen wir uns vor, dass alle Variablen mit ungeradem Index (x1 , x3 , . . .) von Spieler A gewählt werden, während alle Variablen mit geradem Index (x2 , x4 , . . .) von Spieler B gewählt werden. Spieler A fängt an und wählt x1 ; sodann wählt B x2 , und so fort. Spieler A gewinnt, wenn schließlich φ(x1 , . . . , xn ) = 1 ist. Dann ist ψ genau dann wahr, wenn es für A eine Gewinnstrategie gibt. 12 Die polynomielle Hierarchie. Definition 6.3 (Polynomielle Hierarchie). Sei i ≥ 1. Dann ist Σpi die Klasse aller Sprachen L, für die eine Polynomialzeit-TM M und ein Polynom q existiert mit x∈L ⇐⇒ ∃u1 ∀u2 . . . Qi ui M (x, u1 , . . . , ui ) = 1, wobei uj Variablen über {0, 1}q(|x|) sind, und Qi = ∃ oder Qi = ∀ je nachdem, ob i ungerade oder gerade ist. Weiter ist Πpi := coΣpi , und die polynomielle Hierarchie ist definiert als [ p Σi . PH := i≥1 Man beachte, dass demnach Πpi aus allen Sprachen L besteht, für die M und q existieren mit x∈L ⇐⇒ ∀u1 ∃u2 . . . Qi ui M (x, u1 , . . . , ui ) = 1, für Variablen uj wie oben und einzusehen, dass Σpi ⊆ Πpi+1 ⊆ Σpi+2 S Qi p= ∃ für gerade i. Hiermit ist einfach gilt, und deshalb PH = i≥1 Πi . Man beachte weiter, dass Σp1 = NP, und Πp1 = coNP ist. Es ist unbekannt, ob Σpi = Σpi+1 für ein i gilt. (Man glaubt, dass dies nicht so ist.) Weil TQBF ∈ PSPACE ist, gilt weiterhin Σpi ⊆ PSPACE; die Klassen Σpi bilden somit eine Hierarchie zwischen NP und PSPACE. Der folgende Satz zeigt eine Motivation für Interesse an der polynomiellen Hierarchie: Satz 6.4 (Theorem 5.4 in [1]). Es gilt: 1. Für jedes i ≥ 1 ist PH = Σpi sofern Σpi = Πpi . Wir sagen in diesem Fall, dass die polynomielle Hierarchie zur i-ten Ebene kollabiert. 2. P = NP impliziert PH = P. In diesem Fall kollabiert die polynomielle Hierarchie zu P. Beweis. Wir zeigen nur die zweite Behauptung; der Beweis für die erste Behauptung ist ähnlich. Genauer zeigen wir durch vollständige Induktion über i ≥ 1, dass Σpi = P gilt; Πpi = coΣpi = coP = P folgt dann sofort. Für i = 1 folgt Σpi = NP = P nach Annahme. Sei also Σpi−1 = Πpi−1 = P und L ∈ Σpi . Dann gibt es eine Polynomialzeit-TM M und ein Polynom q mit x ∈ L ⇐⇒ ∃u1 ∀u2 . . . Qi ui M (x, u1 , . . . , ui ) = 1 mit Variablen uj ∈ {0, 1}q(|x|) und Qi = ∃ oder Qi = ∀ je nachdem, ob i ungerade oder gerade ist. Betrachte die Sprache L0 mit (x, u1 ) ∈ L0 ⇐⇒ ∀u2 ∃u3 . . . Qi ui M (x, u1 , . . . , ui ) = 1. Nach Induktionsannahme gilt L0 ∈ Πpi−1 = P, und L0 wird von einer Polynomialzeit-TM M 0 entschieden. Also ist x ∈ L ⇐⇒ ∃u1 ∈ {0, 1}q(|x|) M 0 (x, u1 ) = 1. Demnach ist L ∈ NP = P, was Σpi ⊆ P und damit wie gewünscht Σpi = P zeigt. Alternierende Turingmaschinen. Definition 6.5 (ATM, ATIME, AP). Eine alternierende TM (ATM) M ist definiert wie eine NDTM, jedoch hat jeder Zustand q außer qaccept und qhalt ein Label l(q) ∈ {∀, ∃}. Bei einer Ausführung von M können wie bei einer NDTM beide Transitionsfunktionen genutzt werden. Wir legen nun fest, wann M eine Eingabe x ∈ {0, 1}∗ akzeptiert. Hierbei beschränken wir uns auf ATMs M , die Zeitkomplexität T (n) haben, wobei T : N → N beliebig ist. (Das heißt, dass M immer nach höchstens T (n) Schritten qhalt oder qaccept erreicht.) Es bezeichne GM,x den Konfigurationsgraphen von M bei Eingabe x. Eine Konfiguration ist ∀- bzw. ∃Konfiguration, wenn dies für den Zustand von M in dieser Konfiguration gilt. Wir markieren nun Knoten C von GM,x : • Zunächst werden alle Konfigurationen C, in denen M im akzeptierenden Zustand qaccept ist, markiert. 13 • Anschließend werden alle ∃-Konfigurationen markiert, bei denen mindestens eine direkte Nachfolgekonfiguration markiert ist. • Weiter werden alle ∀-Konfigurationen markiert, bei denen alle direkten Nachfolgekonfigurationen markiert sind. • Dieses Verfahren wird fortgesetzt, bis keine neuen Markierungen mehr hinzukommen. M (x) akzeptiert, wenn die Startkonfiguration (mit Zustand qstart ) markiert ist. Für T : N → N ist ATIME(T (n)) die Menge aller S Sprachen, die von einer ATM mit Zeitkomplexität O(T (n)) akzeptiert wird. Damit setzen wir AP = T ∈N[X] ATIME(T (n)). Man beachte, dass eine NDTM einfach eine ATM ist, bei der die Labels aller Zustände ∃ sind. Im Gegensatz zu einer NDTM können wir aber die Ausgabe einer ATM negieren, indem wir qaccept und qhalt vertauschen, sowie alle Labels ändern. (Die Regeln von de Morgan zeigen, dass diese Transformation zur Negation der Ausgabe führt.) Beispiel 6.6 (ATM). Sei L := {N ∈ N | N = pq für Primzahlen p und q} . Weil es einen (nichttrivialen) deterministischen Polynomialzeit-Primzahltest gibt, liegt diese Sprache schon in NP, und damit insbesondere in AP. (Mögliche Zeugen wären etwa p oder q.) Wir geben hier aber eine besonders einfache ATM M an, die L entscheidet. M (x) rät zunächst mittels ∃-Zuständen p ∈ {1, . . . , N } und q ∈ {1, . . . , N } und überprüft dann, ob alle folgenden Bedingungen erfüllt sind: a. N = pq, b. p ist prim, c. q ist prim. Wenn a., b., und c. gelten, akzeptiert M . Hierbei kann b. (und analog c.) wie folgt verifiziert werden: M wählt mittels ∀-Zuständen einen Teiler t ∈ {2, . . . , p − 1} und überprüft, ob t|p gilt. Wenn ja, so ist p nicht prim, und M betritt qhalt . Wenn t 6 |p gilt, akzeptiert M . Satz 6.7 (Theorem 5.10 in [1]). AP = PSPACE. Beweis. Zum einen gilt PSPACE ⊆ AP, weil TQBF ∈ AP ist. Genauer kann eine geeignete ATM M bei gegebener QBF ψ der Form Q1 x1 Q2 x2 . . . Q` x` φ(x1 , . . . , x` ) zunächst Variablen xi ∈ {0, 1} in ∃- bzw. ∀-Zuständen (je nach Qi ) raten“ und φ(x1 , . . . , x` ) auswerten. ” Die Definition von Akzeptanz bei ATMs stellt sicher, dass ψ ∈ TQBF ⇔ M (ψ) = 1 ist. Andererseits kann AP ⊆ PSPACE ähnlich gezeigt werden, wie in Satz 6.2 TQBF ∈ PSPACE gezeigt wurde: genauer kann das Label der Startkonfiguration einer ATM rekursiv bestimmt werden, was lediglich polynomiellen Bandplatz erfordert. 7 Interaktive Beweissysteme Deterministische interaktive Beweissysteme. Definition 7.1 (k-Runden-Interaktion). Für zwei Funktionen f, g : {0, 1}∗ → {0, 1}∗ , eine Eingabe x ∈ {0, 1}∗ und k = k(|x|) ≥ 0 bezeichnet hf, gi(x) die k-Runden-Interaktion von f und g. Dabei ist hf, gi(x) die Konkatenation der Bitstrings a1 := f (x), a2 := g(x, a1 ), a3 := f (x, a1 , a2 ), . . . , ak , sowie der Ausgabe outf hf, gi(x) := f (x, a1 , . . . , ak ). Definition 7.2 (Deterministisches interaktives Beweissystem, dIP). Eine deterministisches interaktives Beweissystem für eine Sprache L ⊆ {0, 1}∗ sind zwei TMs (P, V), wobei gilt: Effizienz. V (der Verifier) hat polynomielle Zeitkomplexität in der ersten Eingabe. P (der Prover) ist nicht beschränkt. Vollständigkeit. Für alle x ∈ L gilt outV hV, Pi(x) = 1. Soundness. Für alle x 6∈ L und alle TMs P0 gilt: outV hV, P0 i(x) = 0. 14 Für k : N → N bezeichnet dIP[k] die Klasse aller Sprachen L ⊆ {0, 1}∗ , für die ein deterministisches Beweissystem (P, V) mit k-Runden-Interaktion existiert. Weiter ist [ dIP[k]. dIP := k∈N[X] Satz 7.3 (Lemma 8.4 in [1]). dIP = NP. Beweis. Zunächst hat jede Sprache L ∈ NP ein triviales Beweissystem, in dem P lediglich einen Zeugen für x ∈ L sendet. Weiter sei L ∈ dIP[k], so dass P existiert mit ∀x ∈ L : outV hV, Pi(x) = 1. Für gegebenes x ∈ L ist das (eindeutige) Transkript hV, Pi(x) ein Zeuge für x ∈ L. Zum einen kann ein solches Transkript effizient (mittels V) auf Gültigkeit überprüft werden; andererseits existiert im Falle x 6∈ L kein in diesem Sinne überzeugendes Transkript. (Andernfalls gäbe es ein P mit outV hV, P0 i(x) = 1, was der Soundness von (P, V) widerspräche.) Deterministische interaktive Beweissysteme sind demnach nicht mächtiger als nicht-interaktive Beweissysteme (im Sinne von NP). Die Situation wird bedeutend interessanter, wenn wir Probabilismus zulassen. Probabilistische interaktive Beweissysteme. Definition 7.4 (Probabilistische interaktive Beweissysteme, IP). Ein (probabilistisches) interaktives Beweissystem für eine Sprache L ⊆ {0, 1}∗ besteht aus zwei TMs (P, V), so dass Effizienz. V ist probabilistisch (im Sinne von Definition 5.15) und hat polynomielle Zeitkomplexität in der ersten Eingabe. P ist deterministisch und nicht beschränkt. Vollständigkeit. Für alle x ∈ L gilt Pr [outV hV, Pi(x) = 1] ≥ 2/3. Soundness. Für alle x 6∈ L und alle TMs P0 gilt Pr [outV hV, P0 i(x) = 1] ≤ 1/3. Für k : N → N bezeichnet IP[k] die Klasse aller Sprachen L ⊆ {0, 1}∗ , für die ein interaktives Beweissystem (P, V) mit (probabilistischer) k-Runden-Interaktion existiert. Weiter ist [ IP := IP[k]. k∈N[X] Die Schranken 2/3 und 1/3 sind (fast) beliebig. Mehrfache Ausführung des interaktiven Beweises zeigt, dass beliebige feste Schranken 1/2 + c bzw. 1/2 − c für festes 0 < c < 1/2 zu einer äquivalenten Definition von IP führen. (Wie steht es um den Fall c = 1/2?) Im Falle von probabilistischen interaktiven Beweissystemen wie oben spricht man auch von privatecoin-Beweissystemen, da der Verifier seine Zufallsentscheidungen nicht notwendig öffentlich machen muss. Offenbar gilt NP = dIP ⊆ IP. Es gibt allerdings auch interessantere interaktive Beweissysteme: Beispiel 7.5. Wir haben schon gesehen, dass die Sprache graph non-isomorphism“ ” GNI := {(G1 , G2 ) | G1 und G2 sind nicht-isomorphe Graphen} in coNP liegt. Aber es gilt auch GNI ∈ IP. Betrachte dazu folgendes interaktive Beweissystem (P, V): 1. V wählt i ∈ {1, 2} und eine Permutation π (der Knoten) von Gi gleichverteilt. V sendet H := π(Gi ) an P. 2. P überprüft, ob H isomorph zu G1 oder G2 ist (etwa durch vollständige Suche über eine Permutation). Sei H isomorph zu Gj . Dann sendet P j an V. 3. V gibt 1 aus genau dann, wenn i = j ist. Es ist klar, dass dieses Protokoll effizient und vollständig ist. Um Soundness einzusehen nehme man isomorphe Graphen G1 , G2 an. Dann ist H unabhängig von i, weshalb auch j unabhängig von i ist. Unabhängig von P gibt also V 1 mit Wahrscheinlichkeit höchstens 1/2 aus. (Schon zwei Wiederholungen des interaktiven Beweises führen also zur Ablehnung von Instanzen x 6∈ GNI mit Wahrscheinlichkeit 3/4.) Beispiel 7.6. Ähnlich wie im Falle der Sprache GNI lässt sich ein interaktives Beweissystem für die Sprache QNR := {(a, N ) | N ∈ N und a ∈ Z∗N ist ein quadratischer Nichtrest} 15 angeben. Zwar ist QNR ∈ coNP; es ist aber nicht bekannt, ob QNR in NP liegt. Wir zeigen, dass zumindest QNR ∈ IP gilt. Sei zunächst ohne Beschränkung der Allgemeinheit a ∈ Z∗N . Wir definieren nun P und V wie folgt: 1. V wählt b ∈ {0, 1}, sowie r ∈ Z∗N gleichverteilt und sendet c := r2 ab mod N an P. 2. P prüft, ob c ein quadratischer Rest ist, und sendet b0 ∈ {0, 1} (mit b0 = 0 genau dann wenn c quadratischer Rest ist) an V. 3. V gibt 1 aus genau dann wenn b = b0 ist. Wieder ist klar, dass dieses Protokoll effizient und vollständig ist. Auch gilt Soundness: falls a ∈ Z∗N ein quadratischer Rest ist, hängt c und damit b0 nicht von b ab. Es gilt dann also Pr [b = b0 ] ≤ 1/2 für jedes P. Warnung. Meist übergangen wird folgende Komplikation: es ist mit einer wie üblich definierten probabilistischen Polynomialzeit-TM nicht möglich, etwa 1 mit Wahrscheinlichkeit exakt 1/3 auszugeben. Insbesondere ist es im Allgemeinen auch nicht möglich, eine Permutation π wie oben exakt gleichverteilt zu wählen. (Allerdings sind exponentiell genaue Approximationen möglich, was im Beispiel oben hinreichend ist, aber eine kompliziertere Analyse erfordert.) 7.1 IP ⊆ PSPACE Eine naheliegende Frage ist nun beispielsweise, ob auch coNP ⊆ IP gilt. Die Antwort ist ja“; tatsächlich ” gilt sogar: Satz 7.7 (Theorem 8.19 in [1]). IP = PSPACE. Wir werden den Beweis von Satz 7.7 aufteilen. Zunächst soll IP ⊆ PSPACE bewiesen werden, wobei wir der Darstellung aus [3, Chapter 17] folgen. Lemma 7.8. Sei L ∈ IP, so dass ein interaktives Beweissystem (P, V) existiert, wobei P polynomielle Bandkomplexität hat. Dann ist L ∈ PSPACE. Beweis. Seien L und (P, V) wie im Lemma. Dann gilt nach Definition: • x ∈ L genau dann wenn Pr [outV hV, Pi(x) = 1] ≥ 2/3. • x 6∈ L genau dann wenn Pr [outV hV, Pi(x) = 1] ≤ 1/3. Außerdem ist V polynomiell zeitbeschränkt. Es existiert also ein Polynom p : N → N, so dass die Gesamtlänge aller ausgetauschten Nachrichten höchstens p(|x|) ist. Eine einzelne TM M kann bei Eingabe x somit eine vollständige Suche über alle 2p(|x|) Transitionsmöglichkeiten von V, über alle 2p(|x|) möglichen P-Nachrichten, und alle damit verbundenen V-Ausgaben anstellen. Mittels Gewichtung kann M so q := Pr [outV hV, Pi(x) = 1] bestimmen. Ist q ≥ 2/3, so folgt x ∈ L, und M kann 1 ausgeben. Andernfalls (q ≤ 1/3) folgt x 6∈ L, und M kann 0 ausgeben. Es bleibt zu zeigen, dass jeder Prover P durch einen Beweiser Popt ersetzt werden kann, der polynomielle Bandkomplexität hat. Sei also ein Beweissystem (P, V) gegeben. Wie üblich bezeichne x ∈ {0, 1}n die gemeinsame Eingabe. Wir nehmen ohne Beschränkung der Allgemeinheit an, dass ein Polynom p : N → N existiert, so dass • jede Nachricht aus exakt p(n) Bits besteht, und • V seine Ausgabe immer nach exakt p(n) ausgetauschten Nachrichten generiert. Sei im Folgenden Ai ∈ {0, 1}p(n) die i-te ausgetauschte Nachricht. Definition 7.9 (Optimaler Prover). Sei Popt die folgende TM, welche mit V interagiert. Ein partielles Transkript (a1 , . . . , ai ) ∈ ({0, 1}p(n) )i heißt möglich, wenn a1 , a3 , . . . mögliche Nachrichten von V bei PNachrichten a2 , a4 , . . . sind. Für ein mögliches vollständiges Transkript a = (a1 , . . . , ap(n) ) sei Wa := Pr outV hV, Pi(x) = 1 | (A1 , . . . , Ap(n) ) = (a1 , . . . , ap(n) ) , (1) wobei die Wahrscheinlichkeit über Vs Zufall ist. Popt wird nun rekursiv so definiert (beginnend mit der letzten Nachricht), dass Vs Annahmewahrscheinlichkeit maximiert wird. Wenn das Transkript soweit (a1 , . . . , ap(n)−1 ) war, wird Popt a∗p(n) := arg max ap(n) ∈{0,1}p(n) 16 W(a1 ,...,ap(n) ) (2) berechnen und an V senden.3 a∗p(n) ist die Nachricht, die Vs Annahmewahrscheinlichkeit bei gegebenem teilweisen Transkript (a1 , . . . , ap(n)−1 ) maximiert. Mittels a∗p(n) läßt sich nun W(a1 ,...,ap(n)−2 ) wie in (1) definieren, wenn wir als letzte P-Nachricht a∗p(n) annehmen. Hieraus ergibt sich a∗p(n)−2 , W(a1 ,...,ap(n)−4 ) , und schließlich a∗2 . Hierdurch wird Popt rekursiv als die Maschine definiert, die Nachrichten a∗2 , a∗4 , etc. sendet. Lemma 7.10. Popt hat polynomielle Bandkomplexität. Beweis. Für ein vollständiges Transkript (a1 , . . . , ap(n) ) kann W(m1 ,...,mp(n) ) mittels vollständiger Suche über Vs Zufall berechnet werden. Mittels vollständiger Suche über ap(n) ∈ {0, 1}p(n) kann so a∗p(n) aus (a1 , . . . , ap(n)−1 ) mit O(p(n)) Bandkomplexität berechnet werden. Jeder einzelne Rekursionsschritt zur Berechnung eines a∗i erfordert demnach O(p(n)) Bandkomplexität. Insgesamt ergibt sich eine Bandkomplexität von O(p(n)2 ). Lemma 7.11. (Popt , V) ist ein interaktives Beweissystem für L. Beweis. Es reicht aus, Vollständigkeit zu zeigen, da Effizienz klar ist und Soundness eine Eigenschaft von V allein ist. Wir zeigen, dass für alle x ∈ {0, 1}∗ gilt: Pr [outV hV, Popt i(x) = 1] ≥ Pr [outV hV, Pi(x) = 1] , (3) was für Vollständigkeit ausreicht. Sei also x beliebig. Für gerades i und ein teilweises Transkript (a1 , . . . , ai−1 ) von (P, V) sei aPi die (eindeutige) Nachricht, die von P als i-te Nachricht gesendet werden würde. Sei a∗i die Nachricht, die von Popt gesendet werden würde. (Man beachte, dass a∗i auch für teilweise Transkripte definiert ist, die nicht notwendig von (Popt , V) generiert wurden.) Sei A das Ereignis, dass V schließlich 1 ausgibt. Dann gilt (wobei die Wahrscheinlichkeit wie üblich über Vs Zufall ist): Pr [outV hV, Pi(x) = 1] h i = Pr A | A2 = aP2 , . . . , Ap(n)−4 = aPp(n)−4 , Ap(n)−2 = aPp(n)−2 , Ap(n) = aPp(n) h i ≤ Pr A | A2 = aP2 , . . . , Ap(n)−4 = aPp(n)−4 , Ap(n)−2 = aPp(n)−2 , Ap(n) = a∗p(n) h i ≤ Pr A | A2 = aP2 , . . . , Ap(n)−4 = aPp(n)−4 , Ap(n)−2 = a∗p(n)−2 , Ap(n) = a∗p(n) ... h i ≤ Pr A | A2 = a∗2 , . . . , Ap(n)−4 = a∗p(n)−4 , Ap(n)−2 = a∗p(n)−2 , Ap(n) = a∗p(n) = Pr [outV hV, Popt i(x) = 1] . (3) folgt. Nehmen wir Lemma 7.10, Lemma 7.11 und Lemma 7.8 zusammen, so ergibt sich: Satz 7.12. IP ⊆ PSPACE. 7.2 PSPACE ⊆ IP Es verbleibt, PSPACE ⊆ IP zu zeigen. Dazu folgen wir größtenteils [2, Chapter 9]. Arithmetisierung einer Formel. Zunächst wissen wir, dass es wegen der PSPACE-Vollständigkeit von TQBF ausreicht, ein interaktives Beweissystem für TQBF anzugeben. Dazu wird hilfreich sein, logische Ausdrücke als arithmetische Formeln zu betrachten. Genauer: Definition 7.13 (Arithmetisierung). Die Arithmetisierung AF einer aussagenlogischen Formel F ist der arithmetische Ausdruck über Z, der aus F durch Aus technischen Gründen sollte a∗p(n) eindeutig definiert sein, deshalb bezeichne arg max in (2) die lexikographisch kleinste Nachricht ap(n) , die W(a1 ,...,ap(n) ) maximiert. 3 17 • Ersetzen von u ∧ v durch u · v, • Ersetzen von u ∨ v durch u + v, und • Ersetzen von ¬u durch (1 − u) entsteht. Die Arithmetisierung einer 3CNF-Formel F := (L1,1 ∨ L1,2 ∨ L1,3 ) ∧ . . . ∧ (Lm,1 ∨ Lm,2 ∨ Lm,3 ) (mit Literalen Li,j ) ist also AF := (L1,1 + L1,2 + L1,3 ) · . . . · (Lm,1 + Lm,2 + Lm,3 ), wobei negierte Literale Li,j = ¬u als (1 − u) interpretiert werden. Für eine Formel F in CNF und eine Variablenbelegung φ = (φ1 , . . . , φ` ) ∈ {0, 1}` haben wir zudem F (φ) = 1 ⇔ AF (φ) 6= 0. (4) (Man beachte, dass Negationen nur direkt vor Variablen vorkommen können, da F in CNF ist. Tatsächlich gilt (4) nicht für beliebige Formeln.) Hat F in CNF nun m Klauseln, so ist zudem 0 ≤ AF (φ) ≤ rm für alle φ ∈ {0, 1}` , wobei r eine obere Schranke für die Anzahl der Literale pro Klausel in F ist. Weiter ist das univariate Polynom p0i : Z → Z mit p0i (X) := AF (φ1 , . . . , φi−1 , X, φi+1 , . . . , φ` ) vom Grad höchstens m. Beweissystem für SAT. Wir werden nun zunächst ein interaktives Beweissystem (P, V) für SAT angeben, also ein System, das beweist, dass eine aussagenlogische Formel F in CNF nicht erfüllbar ist. Wegen der gerade gemachten Bemerkungen ist F nicht erfüllbar genau dann wenn X X ··· AF (φ1 , . . . , φ` ) = 0. (5) φ1 ∈{0,1} φ` ∈{0,1} Für P reicht es aus, V zu zeigen, dass (5) modulo einer hinreichend großen Primzahl q > 2` rm gilt. (Die Bitlänge eines solchen q ist polynomiell in der Größe von F , weshalb auch V modulo q arbeiten kann.) Im Folgenden werden wir also X X ··· AF (φ1 , . . . , φ` ) ≡ 0 mod q (6) φ1 ∈{0,1} φ` ∈{0,1} betrachten. V kann (6) nicht direkt auswerten, weil (6) aus exponentiell vielen Summanden besteht. Deshalb wird (6) durch Interaktion mit P schrittweise auf einfachere Gleichungen reduziert. Dazu wird P in jedem Schritt die jeweils äußerste Summe φi ∈{0,1} A(φi ) durch eine Auswertung A(ri ) an einem zufälligen, von V gewählten ri ∈ Zq ersetzt. Dies führt schließlich zu einem einzigen Wert v ∈ Zq . Aufgabe von P wird es sein, V zu überzeugen, dass die Ersetzung korrekt durchgeführt wird. (Man beachte, dass V nicht direkt mit der Summe (6) arbeiten kann.) Genauer wird im i-ten Schritt die Aussage X X ··· AF (r1 , . . . , ri−1 , φi , . . . , φ` ) ≡ vi−1 mod q (7) φi ∈{0,1} φ` ∈{0,1} auf die Aussage X φi+1 ∈{0,1} X ··· AF (r1 , . . . , ri , φi+1 , . . . , φ` ) ≡ vi mod q (8) φ` ∈{0,1} reduziert, wobei v0 = 0 ist und die ri ∈ Zq von V gewählt werden. Um V von (8) zu überzeugen, berechnet P das Polynom X X pi (X) := ··· AF (r1 , . . . , ri−1 , X, φi+1 , . . . , φ` ) mod q, φi+1 ∈{0,1} φ` ∈{0,1} 18 und sendet es an V. (Man beachte, dass pi von kleinem Grad und univariat ist.) V bricht sofort ab, falls pi (0) + pi (1) 6≡ vi−1 mod q ist (was wegen (7) der Fall sein muss). Ist pi (0) + pi (1) ≡ vi−1 mod q, so wählt V ri ∈ Zq gleichverteilt und sendet es an P. Beide Parteien berechnen vi := pi (ri ) und fahren mit dem nächsten Schritt fort. Nach ` Schritten kann V die Gleichung AF (r1 , . . . , r` ) ≡ v` mod q (9) selbst durch Auswertung von AF überprüfen. V gibt 1 aus genau dann wenn (9) gilt. Satz 7.14. (P, V) ist ein interaktives Beweissystem für SAT. Beweis. Effizienz ist klar. Vollständigkeit folgt, weil die richtigen“ Polynome pi die Gleichung pi (0) + ” pi (1) ≡ vi−1 mod q erfüllen, und weil (8) für korrektes pi aus (7) folgt. Deshalb wird V im Zusammenspiel mit P immer akzeptieren. Um Soundness einzusehen betrachte man beliebiges P0 und eine Formel F mit X X ··· AF (φ1 , . . . , φ` ) 6≡ 0 mod q. φ1 ∈{0,1} φ` ∈{0,1} Es genügt, zu zeigen, dass ¬(7) ⇒ ¬(8) gilt (für jedes i und mit hoher Wahrscheinlichkeit über Vs Zufall). Man nehme also X X AF (r1 , . . . , ri−1 , φi , . . . , φ` ) 6≡ vi−1 mod q ··· φi ∈{0,1} φ` ∈{0,1} an, so dass insbesondere pi (0) + pi (1) 6≡ vi−1 mod q für das richtige“ Polynom pi (X) gilt. Sei p0i (X) das ” Polynom, das von P0 tatsächlich an V gesandt wird. Wir dürfen p0i (0) + p0i (1) ≡ vi−1 mod q annehmen, da andernfalls V direkt abbricht. Weil pi (X) und p0i (X) verschiedene Polynome vom Grad ≤ m sind, hat pi (X) − p0i (X) höchstens m Nullstellen. Deshalb ist die Wahrscheinlichkeit, dass pi (ri ) ≡ p0i (ri ) für zufälliges ri ist, beschränkt durch m/q, also exponentiell klein. Da vi durch p0i (ri ) 6≡ pi (ri ) definiert wird, gilt (8) höchstens mit Wahrscheinlichkeit m/q. Dies beweist ¬(7) ⇒ ¬(8) mit hoher Wahrscheinlichkeit über Vs Zufall und für alle i wie gewünscht. Korollar 7.15. coNP ⊆ IP. Von SAT zu TQBF. Um ein Beweissystem für TQBF anzugeben (und damit IP ⊆ PSPACE zu zeigen), müssen wir zusätzlich Quantoren vor einer Formel F wie oben berücksichtigen. Die Arithmetisierung Q einer QBF erfolgt wie zu erwarten ist: Wir ersetzen ∀u F (u) durch A (u) und ∃ uF (u) durch u∈{0,1} F P u∈{0,1} AF (u). Bei der Anpassung des obigen Beweissystems (P, V) an QBFs treten folgende Probleme auf: (a) die reduzierten Polynome pi (X) könnten von hohem Grad sein, da sie eine polynomielle Anzahl von geschachtelten Produkten (bedingt durch ∀-Quantoren) enthalten können, (b) die Größe der Zahlen, die bei der Auswertung der Arithmetisierung einer QBF auftreten können, kann doppelt exponentiell werden (und nicht nur einfach exponentiell wie bei aussagenlogischen Formeln). Problem (a) kann gelöst werden, indem eine QBF F zunächst in eine einfache“ Form gebracht wird, die ” einfacher behandelt werden kann. Problem (b) verschwindet, wenn der Verifier V eine Primzahl q wählt. (Wenn zwei Terme ungleich modulo Q sind, sind sie auch ungleich modulo fast aller Primzahlen q < Q.) Definition 7.16 (Einfache QBF). Eine QBF F ist einfach, sofern • Negationen nur vor Variablen stehen (wie etwa bei einer CNF-Formel), • in jeder Unterformel von F der Form ∃u G(u) oder ∀u G(u) gilt folgendes: in G tritt u ungebunden im Bereich höchstens eines ∀-Quantors auf. Mit anderen Worten: zwischen jedem Auftreten einer Variablen u und ihrer Quantifizierung steht höchstens ein ∀u0 . Lemma 7.17. Jede QBF kann in Polynomialzeit in einfache Form gebracht werden. Beweis. Idee: ersetze ∀u G(u) durch ∀u∃ũ (u = ũ) ∧ G(ũ) für eine neue Variable ũ. Das interaktive Beweissystem (P, V) kann damit auf QBFs F angewandt werden, wobei P Aussagen der Form AF 0 = K mod q für geeignetes K > 0, die Vereinfachung F 0 von F , und von V gewähltes q ist. Es folgt: Satz 7.18. PSPACE ⊆ IP. 19 Zero-Knowledge-Beweissysteme. Die Soundness-Eigenschaft eines IPS schützt den Verifier davor, eine falsche Aussage zu akzeptieren. Umgekehrt kann man auch daran denken, den Prover davor zu schützen, zuviel Information“ preiszugeben. Insbesondere könnte man versuchen, etwa bei einem IPS für ” eine Sprache L ∈ NP jeden Zeugen für x ∈ L vor dem Verifier zu verbergen. Eine solche Eigenschaft kann etwa dann nützlich sein, wenn ein IPS als Authentifikationsprotokollen genutzt werden soll. Man betrachte dazu ein Beweissystem für eine Sprache L ∈ NP, bei dem der Prover effizient ausgeführt wird, sofern er einen Zeugen für x ∈ L kennt. Ein triviales Beispiel eines solchen IPS ist das, bei dem der Prover den Zeugen an den Verifier sendet. Bei diesem trivialen Beweissystem kennt allerdings der Verifier nach einer Interaktion mit dem Prover den Zeugen, und kann demnach von dort an beispielsweise einem Dritten von x ∈ L überzeugen. Für Authentifikationszwecke ist dies allerdings nachteilig; tatsächlich würde man sich wünschen, dass der Verifier nicht in der Lage ist, andere von x ∈ L zu überzeugen. (In diesem Sinne ist ein Zeuge für x ∈ L das Geheimnis des Provers, von dessen Kenntnis er andere überzeugt und sich damit authentifiziert.) Um diese Zero-Knowledge“-Eigenschaft zu formalisieren, soll zunächst der Begriff eines NP-Beweissystems ” definiert werden: Definition 7.19 (NP-Beweissystem). Sei L ∈ NP mit Zeugenrelation R ⊆ {0, 1}∗ × {0, 1}∗ . (Das heißt: für alle x ∈ {0, 1}n gilt ∃w ∈ {0, 1}p(n) : R(x, w) ⇔ x ∈ L, und R kann von einer Polynomialzeit-TM berechnet werden.) Ein NP-Beweissystem (kurz: NP-IPS) für L ist ein IPS (gemäß Definition 7.4) für L mit den folgenden Änderungen: Effizienz des Provers. P ist eine Polynomialzeit-PTM, die als Eingabe nicht nur x ∈ {0, 1}n erhält, sondern auch einen Zeugen w ∈ {0, 1}p(n) mit R(x, w). Vollständigkeit. Wir fordern Pr [outV hV, Pi(x) = 1] ≥ 2/3. für alle x ∈ L und w mit R(x, w). Die Soundness-Bedingung bleibt unverändert; insbesondere wird Soundness auch gegen unbeschränkte Prover P0 gefordert. Wir können nun weiter die Eigenschaft der Verifier lernt nichts (außer der Richtigkeit der Aussage x ∈ ” L)“ formalisieren. Die Intuition ist hier wie folgt: wir fordern, dass es effizient möglich sein soll, Transkripte von Prover-Verifier-Interaktionen zu generieren, auch wenn kein Zeuge für die zugrundeliegende Aussage x ∈ L bekannt ist. Auf diese Weise kann argumentiert werden, dass alles, was man aus einem solchen Transkript lernen kann, schon effizient generierbar sein muss. Definition 7.20 (Zero-Knowledge-Beweissystem). Sei (P, V) ein NP-IPS für L ∈ NP mit Zeugenrelation R. Für eine TM V∗ sei hP, V∗ i(x, w) das Transkript (also alle gesendeten Nachrichten) einer Interaktion von P und V∗ bei gemeinsamer Eingabe x und zusätzlicher P-Eingabe w. (P, V) ist perfect zero-knowledge wenn für jede Polynomialzeit-PTM V∗ eine PTM S (der Simulator) mit erwarteter polynomieller Laufzeit4 existiert, so dass folgendes gilt: • für jedes x ∈ L und jedes w mit R(x, w) sind die Zufallsvariablen hP, V∗ i(x, w) und Ss Ausgabe S(x) bei Eingabe x identisch verteilt. Abschwächungen von Definition 7.20, die nur eine kleine statistische Distanz der Zufallsvariablen hP, V∗ i(x, w) und S(x) fordern, oder gar nur Ununterscheidbarkeit durch effiziente TMs“ sind möglich ” und üblich. Beispiel 7.21. Wir betrachten wieder die Sprache GI := {(G1 , G2 ) | G1 und G2 sind isomorphe Graphen} und das folgende NP-IPS für GI: 1. P erhält x = (G1 , G2 ) und einen Isomorphismus φ mit φ(G1 ) = G2 als Eingabe. P wählt gleichverteilt eine Permutation π der Knoten von G2 und sendet den Graphen H := π(G2 ) an V. 2. V wählt gleichverteilt b ∈ {1, 2} und sendet b an P. 3a. Ist b = 1, so sendet P ψ := π ◦ φ an V. 4 Wir fordern hier, dass der Erwartungswert der Laufzeit von S polynomiell beschränkt ist. Diese etwas unnatürlich wirkende Eigenschaft ist ein Zugeständnis an viele natürliche Beweissysteme, die nur mit dieser schwächeren Laufzeitbeschränkung als Zero-Knowledge bewiesen werden können. 20 3b. Ist b = 2, so sendet P die Permutation ψ := π an V. 4. V erhält ψ und akzeptiert genau dann wenn ψ(Gb ) = H ist. Effizienz und Vollständigkeit dieses Protokolls sind klar. Um Soundness einzusehen, nehme man x 6∈ L an, so dass G1 und G2 zwei nicht-isomorphe Graphen sind. Sobald ein Prover P0 in dieser Situation einen Graphen H sendet, kann dieser Graph als Permutation H = ψ(Gb ) höchstens eines der beiden Gb erklärt werden. (Würde H = ψ1 (G1 ) und H = ψ2 (G2 ) gelten, so wäre G1 = (ψ1−1 ◦ ψ2 )(G2 )) isomorph zu G2 .) Mit einer Wahrscheinlichkeit von mindestens 1/2 wählt V demnach ein b ∈ {1, 2}, für das kein ψ mit H = ψ(Gb ) existiert; in diesem Fall wird V nicht akzeptieren. Zusammengenommen zeigt dies, dass (P, V) ein NP-IPS für GI ist. Wir zeigen nun noch, dass (P, V) auch die perfect-zero-knowledge-Eigenschaft hat. Man betrachte dazu für gegebenen Verifier V∗ folgenden Simulator S, der intern V∗ simuliert und hierfür die Rolle eines Provers einnimmt. 1. S wählt gleichverteilt b0 ∈ {1, 2} und eine Permutation π der Knoten von Gb0 , und sendet H := π(Gb0 ) an V∗ . 2. Hierauf wird (die interne Simulation von) V∗ ein b ∈ {1, 2} an S senden. 3a. Ist b = b0 , so sendet S π an V∗ , gibt das Protokoll der gesamten Interaktion aus, und hält. 3b. Ist b 6= b0 , so beginnt S den gesamten Prozeß (mit neuem b0 und π) von vorn. Die erwartete Laufzeit von S ist polynomiell, da die erwartete Anzahl der Durchläufe (bis b = b0 ) erreicht ist, 1 · 1/2 + 2 · 1/4 + 3 · 1/8 + 4 · 1/16 + . . . = 2 ist. (In jedem Durchlauf gilt b = b0 mit Wahrscheinlichkeit 1/2.) Weiter hat die Ausgabe von S (nach erfolgreichem Durchlauf mit b = b0 ) dieselbe Verteilung wie hP, V∗ i(x, w): in beiden Fällen ist H ein zufälliges Element aus der Isomorphieklasse von G1 und G2 , und ψ ist die Abbildung mit H = ψ(Gb ). Es ist sogar möglich, Zero-Knowledge-Beweissysteme für NP-vollständige Sprachen anzugeben. Wir zitieren ohne Beweis: Satz 7.22 (Goldreich, Micali, Wigderson). Für jede Sprache L ∈ NP existiert ein perfect zero-knowledge NP-IPS. 8 Schaltkreise Turingmaschinen stellen ein universelles, jedoch bisweilen unhandliches Berechnungsmodell dar. Die Betrachtung alternativer Berechnungsmodelle kann deshalb dazu dienen, insbesondere die Herleitung unterer Komplexitätsschranken zu erleichtern. Zudem ist anzunehmen, dass etwa logische Schaltkreise ein realitätsnäheres Berechnungsmodell als Turingmaschinen darstellen. Definition 8.1 (Boolesche Schaltkreise). Ein Boolescher Schaltkreis (BSK) C ist ein azyklischer gerichteter Graph. Ein Knoten heißt • Eingabeknoten, falls er Eingangsgrad 0 hat, • Ausgabeknoten, falls er Ausgangsgrad 0 hat, • und Gatter, falls er kein Eingabeknoten ist. Jedes Gatter trägt einen Bezeichner ∨, ∧ oder ¬. Wir fordern, dass es genau einen Ausgabeknoten gibt, jedes ∨- oder ∧-Gatter Eingangsgrad 2 hat, und jedes ¬-Gatter Ausgangsgrad 1. Es bezeichne |C| die Größe von C, also die Anzahl der Knoten. Sei nun C ein BSK mit n Eingaben (d.h. Eingabeknoten). Dann ist die Ausgabe C(x) für eine Eingabe x ∈ {0, 1}n in offensichtlicher Weise durch Auswertung von C definiert. Definition 8.2 (Schaltkreisfamilie, SIZE, P/poly ). Sei T : N → N eine Funktion. Eine T (n)-Schaltkreisfamilie ist eine Folge (Cn )n∈N von BSKs, wobei Cn n Eingaben hat und |Cn | ≤ T (n) gilt. (Wir werden gelegentlich auch sagen, dass die Familie (Cn ) T (n)-größenbeschränkt ist.) SIZE(T (n)) ist die Menge aller Sprachen, die von einer passenden T (n)-Schaltkreisfamilie erkannt werden können. Weiter ist [ P/poly := SIZE(p(n)). p∈N[X] Satz 8.3 (Theorem 6.16 in [1]). P ⊆ P/poly . Beweis. Ein Beweis ähnlich dem des Cook-Levin-Theorems Satz 5.8 kann durchgeführt werden. Genauer kann ein geeigneter BSK die Ausführung einer TM M Schritt für Schritt simulieren. Die Größe des BSK ist dabei polynomiell in der Zeitkomplexität von M . 21 Die Mächtigkeit von Schaltkreisen. Bemerkenswerterweise ist einfach einzusehen, dass P 6= P/poly gilt: Man betrachte die Sprache L := {1n | Mn (n) hält}. Da fHALT nicht berechenbar ist, ist auch L nicht berechenbar. Andererseits existiert offenbar eine (n + 2)Schaltkreisfamilie (Cn ), die L erkennt: je nachdem, ob 1n ∈ L ist, gibt Cn (1n ) entweder 1 oder 0 aus. (Weiter ist Cn (x) = 0 für x ∈ {0, 1}n \ {1n }.) Entscheidend hierbei ist, dass für jede Eingabelänge n nur ein geeignetes Cn existieren muss; dieses muss jedoch nicht effizient aus n berechnet werden können. Schaltkreisfamilien, bei denen Cn effizient (also mittels einer TM, deren Zeitkomplexität polynomiell in n ist) berechnet werden können, nennt man uniform. Es ist einfach einzusehen, dass P genau die Sprachen enthält, die mittels uniformer Schaltkreisfamilien erkannt werden können. Andererseits enthält die Klasse P/poly genau die Sprachen, die von Turingmaschinen mit Hinweis entschieden werden können: Definition 8.4 (TM mit Hinweis). Seien T : N → N und a : N → N Funktionen. Dann bezeichnet DTIME(T (n))/a(n) die Klasse aller Sprachen L, für die eine TM M mit Zeitkomplexität O(T (n)) und eine Familie (αn )n∈N mit αn ∈ {0, 1}a(n) existiert, so dass x∈L ⇐⇒ M (x, α|x| ) = 1. S = T,a∈N[X] DTIME(T (n))/a(n). Lemma 8.5 (Theorem 6.18 in [1]). P/poly S Beweis. P/poly ⊆ T,a∈N[X] DTIME(T (n))/a(n) gilt, weil eine Beschreibung eines polynomiell großen BSKs Cn als S Hinweis αn codiert und von einer geeigneten universellen TM M ausgewertet werden kann. P/poly ⊇ T,a∈N[X] DTIME(T (n))/a(n) gilt, weil die Ausführung jeder polynomiell beschränkten TM mittels eines BSKs Cn emuliert werden kann, wobei die Information αn in Cn festverdrahtet wird. Grenzen der Mächtigkeit von Schaltkreisen. Um einen genaueren Eindruck zu bekommen, wie sich die Klasse P/poly zu bekannten Klassen verhält, beweisen wir das folgende: Satz 8.6 (Meyer, Theorem 6.20 in [1]). EXP ⊆ P/poly impliziert EXP = Σp2 . Beweis. Es reicht, EXP ⊆ Σp2 zu zeigen. Sei dazu L ∈ EXP, so dass L von einer oblivious TM M , die in genau 2p(n) Schritten terminiert, erkannt wird. (Man erinnere sich, dass eine oblivious TM eine solche ist, deren Kopfbewegungen unabhängig von der Eingabe sind. Solche TMs haben sich als hilfreich erwiesen, um TM-Simulationen durch Formeln oder Schaltkreise zu emulieren.) Wir müssen zeigen, dass eine quantifizierte Formel existiert mit x∈L ⇐⇒ ∃u1 ∀u2 M 0 (x, u1 , u2 ) = 1, (10) wobei |u1 | und |u2 | polynomiell beschränkt sind und M 0 eine TM mit polynomieller Zeitkomplexität ist. Ähnlich wie beim Beweis des Cook-Levin-Theorems betrachte man nun für feste Eingabe x ∈ {0, 1}n die eindeutige Abfolge z1 , . . . , z2p(n) von aufeinanderfolgenden Konfigurationen von M (x). Nach Annahme existiert ein BSK Cn polynomieller Größe, so dass Cn bei Eingabe (i, j) (in binärer Codierung) das jte Bit einer geeigneten festen Beschreibung von zi ausgibt. (Man beachte, dass M (x) in exponentieller Zeit simuliert werden kann. Jede so in exponentieller Zeit erkennbare Sprache kann aber wegen EXP ⊆ P/poly auch von einem geeigneten BSK Cn erkannt werden.) Der interessante Fall in (10) wird u1 = Cn sein; deshalb wird im Folgenden u1 als ein Schaltkreis mit Eingabe (i, j) interpretiert. Weiter wird in (10) u2 einen Index i enthalten, so dass M 0 folgende Überprüfung durchführt, wobei z̃i die durch p(n) (u1 (i, 1), . . . , u1 (i, 2p(n) )) ∈ {0, 1}2 gegebene Konfiguration ist: 1. Falls i = 2p(n) ist, so ist in z̃i ein Haltezustand mit Ausgabe 1 erreicht. 2. Falls i < 2p(n) ist, so codiert z̃i+1 den eindeutigen Nachfolgezustand von z̃i . Da die Beschreibung von zi (bzw. z̃i ) exponentielle Größe hat, wird die zweite Bedingung über einen zusätzlichen Zähler in u2 realisiert, der etwa die zu überprüfende Stelle auf dem Arbeitsband angibt. Hiermit gilt L ∈ Σp2 und damit EXP ⊆ Σp2 wie gewünscht. In ähnlicher Weise erhält man: Satz 8.7 (Karp-Lipton, Theorem 6.19 in [1]). NP ⊆ P/poly impliziert PH = Σp2 . 22 Es erscheint also unwahrscheinlich, dass etwa eine NP-vollständige Sprache wie SAT in P/poly liegt, oder dass exponentiell harte Probleme von polynomiell beschränkten Schaltkreisfamilien gelöst werden können. Tatsächlich gibt es sogar Funktionen, die nicht von BSKs (einer vorgegebenen Größe) berechnet werden können: Satz 8.8 (Existenz nicht-berechenbarer Funktionen für Schaltkreise, Theorem 6.21 in [1]). Für jedes n > 1 existiert eine Funktion f : {0, 1}n → {0, 1}, die von keinem BSK der Größe 2n /(10n) berechnet wird. n Beweis. Es existieren 22 verschiedene Funktionen f : {0, 1}n → {0, 1}. Andererseits kann jeder BSK der Größe S durch einen Bitstring der Länge 9S log S repräsentiert werden. (Eine geeignete Codierung wäre etwa eine Liste aller Gatter, mit einer Liste von eingehenden Kanten für jedes Gatter; man beachte, dass jedes Gatter einen Eingangsgrad von höchstens 2 hat.) Es gibt also höchstens 29S log S BSKs der Größe S. n n Für S = 2n /(10n) folgt, dass es höchstens 29S log S < 2(2 )·(9/10) < 22 BSKs der Größe S gibt. Da jeder BSK nicht mehr als eine Funktion berechnet, gibt es Funktionen f : {0, 1}n → {0, 1}, die von keinem BSK der Größe S = 2n /(10n) berechnet werden. Satz 8.9 (Nichtuniforme Zeithierarchie, Theorem 6.22 in [1]). Für Funktionen T, T 0 : N → N mit 2n /n > T 0 (n) > 10T (n) > n gilt SIZE(T (n)) ( SIZE(T 0 (n)). Beweis. Wir zeigen SIZE(n) ( SIZE(n2 ) zur Veranschaulichung der Beweisstrategie. Wegen Satz 8.8 gibt es für jedes ` ∈ N Funktionen f : {0, 1}` → {0, 1}, die nicht von BSKs der Größe 2` /(10`) berechnet werden. Andererseits kann f von einem geeigneten BSK der Größe 2` 10` berechnet werden. (Man denke etwa an einen BSK, der eine explizite Fallunterscheidung für jeden Wert der Eingabe durchführt.) Setzen wir etwa ` = 1, 1 log n und g : {0, 1}n → {0, 1} mit g(x) = f (x` ), wobei x` die ersten ` Bits der Eingabe x ∈ {0, 1}n darstellt, so folgt g ∈ SIZE(n2 ) \ SIZE(n). Schaltkreise beschränkter Tiefe. Besonders interessant ist die Erforschung von Schaltkreisen, deren Tiefe (d.h. die Länge des längsten Pfades von einem Eingabe- zu einem Ausgabeknoten) beschränkt ist. Zum einen entsprechen Schaltkreise beschränkter Tiefe parallelisierbaren (bzw. parallelisierten) Algorithmen. Zum anderen können wir für Schaltkreise beschränkter Tiefe interessante (Unmöglichkeits-)Resultate angeben. Definition 8.10 (NC, AC). Für d ∈ N ist NCd die Menge aller Sprachen, die von polynomiell (in n) größenbeschränkten Schaltkreisfamilien (Cn ) erkannt werden, wobei Cn Tiefe O(logd n) hat. Weiter ist [ NC := NCd. d∈N Analog definieren wir ACd und AC, wobei wir jedoch BSKs mit ∨- und ∧-Gattern unbeschränkten Eingangsgrades zulassen. Offenbar gilt NCi ⊆ ACi ⊆ NCi + 1 und damit NC = AC. NC repräsentiert intuitiv genau die Probleme, die durch effiziente Parallelalgorithmen gelöst werden können: jeder Teilprozess evaluiert ein Gatter, wobei nur logd n (parallele) Rechenschritte nötig sind. (Diese Intuition kann auch formalisiert werden, was jedoch hier nicht geschehen soll.) Beispiel 8.11. Es ist einfach einzusehen, dass die Sprache PARITY := {x ∈ {0, 1}∗ | x hat Parität 0} zwar in NC1 liegt, nicht jedoch in NC0. (Tatsächlich befinden sich in NC0 nur Sprachen, deren Ausgabe von einer konstanten Anzahl der Eingabebits abhängen.) Es gilt sogar PARITY 6∈ AC0, was jedoch weitaus schwieriger einzusehen ist. 23 Håstads Switching-Lemma. Ziel dieses Abschnitts wird es sein, eine untere Schranke für ein konkretes Problem herzuleiten. Das heißt, dass gezeigt werden soll, dass ein gewisser Mindestaufwand nötig ist, um dieses Problem zu lösen. Das Problem, um das es hierbei geht, ist es, die Sprache PARITY zu erkennen, |x| also die Funktion ⊕(x) = ⊕i=1 xi zu berechnen. Es soll gezeigt werden: Satz 8.12 (Theorem 14.1 in [1]). PARITY 6∈ AC0. Korollar 8.13. AC0 ( NC1. Maßgebliches technisches Werkzeug im Beweis von Satz 8.12 wird Håstads Switching-Lemma sein. Es bezeichne hierbei eine k-CNF eine aussagenlogische Formel in konjunktiver Normalform, wobei jede Klausel höchstens k Literale enthält; analog für k-DNFs. Für eine Funktion f : {0, 1}n → {0, 1} und eine (teilweise) Belegung ρ ∈ {0, 1, ⊥}n der Eingabebits von f bezeichne f |ρ die Spezialisierung von f bezüglich ρ, also die Funktion f 0 ((xi )ρi =⊥ ) := f (x01 , . . . , x0n ) mit x0i = ρi für ρi 6= ⊥ und x0i = xi für ρi = ⊥. Lemma 8.14 (Switching-Lemma, Lemma 14.2 in [1]). Es werde f : {0, 1}n → {0, 1} von einer k-DNF berechnet. Sei ρ eine zufällige Belegung von t zufällig gewählten Eingabebits, und sei s ≥ 2. Dann gilt: Pr [f |ρ ist nicht als s-CNF darstellbar] ≤ (n − t)k 10 n s/2 , wobei die Wahrscheinlichkeit über ρ ist. Mit anderen Worten: Wir können eine k-DNF in eine s-CNF umwandeln, indem wir hinreichend viele Variablen zufällig belegen. Es ist einfach einzusehen (nach de Morgan), dass das Switching-Lemma auch mit vertauschten Rollen von DNF und CNF gilt. Lemma 8.14 selbst soll nicht bewiesen werden; jedoch soll gezeigt werden, wie Lemma 8.14 hilft, Satz 8.12 zu zeigen. Beweis von Satz 8.12 mittels Lemma 8.14. Wir nehmen einen beliebigen AC0-Schaltkreis C an und zeigen, dass C nicht die Paritätsfunktion berechnet. Genauer zeigen wir, dass bei geeigneter Spezialisierung der meisten (aber nicht aller) Eingabebits von C ein Schaltkreis mit konstanter Ausgabe entsteht. Dies führt zum Widerspruch, denn die Paritätsfunktion hängt von allen Eingabebits ab. Sei also C ein AC0-Schaltkreis der Tiefe d, wobei wir ohne Beschränkung der Allgemeinheit annehmen, dass folgendes gilt: • alle Gatter (bis auf den Ausgabeknoten) haben Ausgangsgrad 1, • ¬-Gatter kommen nur direkt nach den Eingabeknoten vor, • ∨- und ∧-Gatter treten abwechselnd auf; auf der i-ten Ebene des Schaltkreises (gerechnet von den Eingabeknoten) kommen nur ∨- (für gerade i) bzw. ∧-Gatter (für ungerade i) vor, • die erste Ebene (direkt nach den Eingabe- und ¬-Gattern) besteht ausschließlich aus ∧-Gattern mit Eingangsgrad 1. Auf diese Weise kann man sich C als sehr strukturierten Baum vorstellen (wenn man von den Eingabeknoten absieht). Ziel wird sein, die Tiefe dieses Baums schrittweise zu reduzieren, indem wir Eingabebits zufällig spezialisieren. Sei ni die Anzahl der nach dem i-ten Schritt noch nicht spezialisierten Eingabebits √ (so dass n0 = n). Wir werden in jedem Schritt ni − ni zufällige noch nicht spezialisierte Eingabebits i zufällig festlegen, womit sich ni = n1/2 ergibt. Sei weiter ki = 10b2i , wobei |C| ≤ nb für hinreichend großes n ist. (Ein solches von n unabhängiges b existiert, da |Cn | polynomiell beschränkt in n ist.) Sei i ungerade (der Fall für gerades i verläuft analog). Vor dem i-ten Schritt besteht die jeweils erste (nicht-¬)-Ebene des Baums ausschließlich aus ∧-Gattern mit Eingangsgrad ≤ ki ; die nächste Ebene besteht ausschließlich aus ∨-Gattern. Jedes dieser ∨-Gatter wertet eine ki -DNF in ni Variablen aus. Legen √ wir nun zufällig gewählte ni − ni Eingabebits zufällig fest, können wir das Switching-Lemma anwenden. Es ergibt sich, dass die entstehende ki -DNF mit Wahrscheinlichkeit mindestens 1−( ki10 n1/2i+1 )ki+1 /2 ≥ 1 − 1/(10nb ) (für hinreichend große n) durch eine äquivalente ki+1 -CNF ersetzt werden kann. Der Vorteil hierbei ist, dass nach dieser Prozedur (betrachtet für alle ∨-Gatter der zweiten Ebene) sowohl die zweite als auch die 24 dritte Ebene lediglich auch ∧-Gattern bestehen. Die zweite kann also mit der dritten Ebene verschmolzen werden, so dass die Tiefe des Schaltkreises um eins reduziert wird. Dieser Prozess endet nach d − 2 Schritten mit einem Schaltkreis der Tiefe 2 und konstantem Eingangsgrad kd−2 = 10b2d−2 auf der ersten (nicht-¬-)Ebene. Dies entspricht genau einer kd−2 -CNF oder einer kd−2 -DNF. Eine solche Formel kann durch Fixierung von höchstens kd−2 Variablen konstant gemacht werden (etwa so, dass eine Klausel immer zu 0 bzw. 1 auswertet). Die entstehende konstante Funktion entspricht C mit einigen (aber nicht allen) spezialisierten Eingabebits. Da die Paritätsfunktion aber von allen Eingabebits abhängt, kann sie von C nicht berechnet werden. Schaltkreise mit Zählern. Wir geben noch ein weiteres Beispiel für eine bekannte untere Schranke: Definition 8.15 (ACC0). Für m ∈ N ist ein MODm -Gatter wie folgt definiert: ist die Summe aller Eingaben ≡ 0 mod m, so gibt MODm 0 aus, andernfalls 1. Für m1 , . . . , mk ∈ N ist die Klasse ACC0(m1 , . . . , mk ) die Menge aller Sprachen L, die mit Schaltkreisfamilien (Cn ) konstanter Tiefe und polynomieller Größe erkannt werden. Hierbei dürfen die Cn ∨-, ∧-, ¬- und MODmi -Gatter mit unbeschränktem Eingangsgrad benutzen. Weiter ist ACC0 die Vereinigung aller ACC0(m1 , . . . , mk ) für beliebige k ∈ N und m1 , . . . , mk ∈ N. Satz 8.16 (Razborov-Smolensky, Theorem 14.4 in [1]). Seien p und q verschiedene Primzahlen. Dann kann MODp nicht von Schaltkreisfamilien in ACC0(q) berechnet werden. Insbesondere kann etwa die Parität nicht von ACC0(3)-Schaltkreisen (und somit erst recht nicht von AC0-Schaltkreisen) berechnet werden. 9 Randomisierung Wir erinnern zunächst an Definition 5.15: Definition (Probabilistische TM). Eine probabilistische Turingmaschine (PTM) ist eine TM mit zwei Transitionsfunktionen δ0 , δ1 . In jedem Schritt wird δ0 bzw. δ1 jeweils mit Wahrscheinlichkeit 1/2 angewandt. Die Ausgabe M (x) von M bei Eingabe x ∈ {0, 1}∗ ist demnach eine Zufallsvariable. Um PTMs strukturiert zu behandeln, definieren wir nun die entsprechenden Komplexitätsklassen: Definition 9.1 (BPP, RP). BPP ist die Menge aller Sprachen L, für die eine Polynomialzeit-PTM M existiert mit: • für x ∈ L ist Pr [M (x) = 1] ≥ 2/3, • für x 6∈ L ist Pr [M (x) = 1] ≤ 1/3. Analog ist RP ist die Menge aller Sprachen L, für die eine Polynomialzeit-PTM M existiert mit: • für x ∈ L ist Pr [M (x) = 1] ≥ 2/3, • für x 6∈ L ist Pr [M (x) = 1] = 0. Damit ist trivialerweise P ⊆ RP ⊆ BPP = coBPP, und coRP ist die Menge aller Sprachen L, für die eine Polynomialzeit-PTM M existiert mit: • für x ∈ L ist Pr [M (x) = 1] = 1, • für x 6∈ L ist Pr [M (x) = 1] ≤ 1/3. Desweiteren sind die Konstanten 1/3 bzw. 2/3 (fast) beliebig: durch wiederholte Ausführung können etwa Konstanten 1/2n bzw. 1 − 1/2n erreicht werden. Es wird im Folgenden nützlich sein, den von einer PTM verwendeten Zufall explizit zu machen. Genauer gibt es zu jeder PTM M eine TM M 0 und ein Polynom p : N → N, so dass Pr [M (x) = 1] = Pr M 0 (x, r) = 1 , wobei die Wahrscheinlichkeit auf der rechten Seite über gleichverteiltes r ∈ {0, 1}p(|x|) ist. (M 0 simuliert M und verwendet das i-te Bit von r, um die Transitionsfunktion im i-ten Schritt zu bestimmen.) Wir schreiben kurz M (x; r) statt M 0 (x, r). 25 Beispiele für randomisierte Algorithmen. Ein Beispiel für einen (nichttrivialen) randomisierten Algorithmus ist der Primzahltest von Rabin und Miller. Dieser zeigt, dass die Sprache PRIMES := {x | x ∈ N ist prim} in coRP liegt. Beispiel 9.2. Ein weiteres Beispiel für einen nichttrivialen randomisierten Algorithmus ist der folgende Algorithmus von Karp und Rabin. Sei ein Polynom p ∈ Z[X1 , . . . , Xm ] in impliziter Form (also etwa durch einen Schaltkreis mit +“-, und ·“- und Konstantengattern) gegeben. Wir nehmen eine implizite Form Q ” ” an, da in bestimmten Fällen (etwa p(X1 , . . . , Xm ) = i (1 + Xi )) eine implizite Form sehr kompakt sein kann, wohingegen etwa die ausgeschriebene Form exponentiell viele Terme enthält. Ziel ist es, festzustellen, ob p ≡ 0, also ob p(X1 , . . . , Xm ) = 0 für alle Belegungen der Xi ist. In dieser Situation benutzen wir (ohne Beweis): Lemma 9.3 (Schwartz-Zippel). Sei p ∈ Z[X1 , . . . , Xm ] vom Totalgrad d und mit p 6≡ 0. Für jede endliche Menge S ⊆ Z und gleichverteilte a1 , . . . , am ∈ S gilt dann Pr [p(a1 , . . . , am ) 6= 0] ≥ 1 − d/|S|. Eine offensichtliche Möglichkeit, auf p ≡ 0 zu testen, ist demnach, p auf zufälligen Eingaben ai aus einer hinreichend großen Menge S auszuwerten. Ist p(a1 , . . . , am ) 6= 0, so kann abgelehnt werden. Ist aber p(a1 , . . . , am ) = 0, ist wegen Lemma 9.3 wahrscheinlich, dass p ≡ 0 ist. Dieses Vorgehen kann jedoch ineffizient werden, da bei der Auswertung von p exponentiell große Zwischenergebnisse entstehen können (selbst wenn p ≡ 0 sein sollte). Um Abhilfe zu schaffen, kann p(a1 , . . . , am ) modulo einer hinreichend großen Zahl k ausgewertet werden. (Ist nämlich p(a1 , . . . , am ) 6= 0, so wird auch p(a1 , . . . , am ) 6= 0 modulo der meisten“ Zahlen ” k sein. Tatsächlich würde p(a1 , . . . , am ) 6= 0 zusammen mit p(a1 , . . . , am ) ≡ 0 mod k implizieren, dass k|p(a1 , . . . , am ) 6= 0 ist.) Bezug zu anderen Komplexitätsklassen. Eine naheliegende Frage ist: Was genau lässt sich durch ” den Einsatz von randomisierten Algorithmen gewinnen?“ Anders formuliert: Wie ordnet sich etwa BPP in das Netz der schon besprochenen Komplexitätsklassen ein? Satz 9.4 (Theorem 6.22 in [1]). BPP ⊆ P/poly . Beweis. Sei L ∈ BPP. Wir dürfen annehmen, dass eine PTM M und ein Polynom p existiert mit • für x ∈ L ist Pr [M (x; r) = 1] ≥ 1 − 1/2|x|+1 , • für x 6∈ L ist Pr [M (x; r) = 1] ≤ 1/2|x|+1 , wobei die Wahrscheinlichkeiten über uniformes r ∈ {0, 1}p(|x|) sind. Man fixiere eine Bitlänge n von x. Wir nennen r schlecht für x, wenn M (x; r) = 0 ∧ x ∈ L oder M (x; r) = 1 ∧ x 6∈ L, d.h. wenn r zu einer falschen Ausgabe von M führt. Andernfalls heißt r gut für x. Für festes x gibt es höchstens 2p(n) /2n+1 schlechte r. Sei badx die Menge dieser schlechten r für gegebenes x. Sei weiter bad = ∪|x|=n badx die Menge aller r, welche schlecht für irgendein x sind. Dann gilt X |bad| ≤ |badx | ≤ 2n · 2p(n) /2n+1 ≤ 2p(n) /2. |x|=n Insbesondere existiert also ein r, welches gut für alle x ∈ {0, 1}n ist. Für jedes n kann ein solches r als Hinweis αn aufgefasst werden. Das zeigt L ∈ DTIME(T (n))/p(n) für geeignetes polynomielles T , und damit (wegen Lemma 8.5) L ∈ P/poly . Satz 9.5 (Theorem 7.15 in [1]). BPP ⊆ Σp2 ∩ Πp2 . Beweis. Wir zeigen BPP ⊆ Σp2 ; wegen coBPP = BPP ⊆ Σp2 = coΠp2 folgt damit auch BPP ⊆ Πp2 . Sei also L ∈ BPP. Wir dürfen eine TM M annehmen, die L erkennt und (ggf. nach hinreichend vielen Wiederholungen) für alle x ∈ {0, 1}n eine Fehlerwahrscheinlichkeit von Pr [M (x; r) gibt falsche Ausgabe] ≤ 1/2n hat, wobei die Wahrscheinlichkeit über M s Zufall r ∈ {0, 1}p(n) (für ein geeignetes Polynom p) definiert ist. 26 Für x ∈ {0, 1}n sei Sx die Menge aller Zufallswerte r, für die M (x; r) akzeptiert. Je nachdem, ob x ∈ L oder x 6∈ L ist, enthält dann Sx entweder fast alle oder fast keine p(n)-Bitstrings (jeweils höchstens bis auf einen 1/2n -Anteil aller p(n)-Bitstrings). Wir betrachten nun jeweils um u ∈ {0, 1}p(n) verschobene“ Mengen Sx + u := {r + u | r ∈ Sx }, wobei ” r + u hier als komponentenweises XOR von Bitstrings zu verstehen + 1 gilt: Sk ist. Für k := dp(n)/ne p(n) . (Dies folgt aus p(n) ist S := (S + u ) = 6 {0, 1} 1. Für x P 6∈ L und beliebige u , . . . , u ∈ {0, 1} i k i=1 x P 1 |S| ≤ i |Sx + ui | = i |Sx | ≤ k/2p(n)−n = (k/2n ) · 2p(n) < 2p(n) .) Insbesondere existiert ein r ∈ S mit M (x; r) = 0. S 2. Für jedes x ∈ L existieren u1 , . . . , uk ∈ {0, 1}p(n) mit S := ki=1 (Sx + ui ) = {0, 1}p(n) . Dies folgt mit einem probabilistischen Argument: für jedes r ∈ {0, 1}p(n) und ein unabhängig gleichverteiltes ui ist S Pr [r ∈ Sx + ui ] ≥ 1 − 1/2n . Für unabhängig gleichverteilte ui und S = ki=1 (Sx + ui ) ist demnach nk p(n) p(n) Pr [r ∈ S] ≥ 1 − 1/2 > 1 − 1/2 . Mit einer union bound folgt Pr S = {0, 1} > 0 für zufällige ui , weshalb eine Kombination der ui existieren muss, so dass S = {0, 1}p(n) ist. Zusammengenommen ergibt sich: [ x ∈ L ⇔ ∃u1 , . . . , uk ∀r r ∈ (Sx + ui ), i wobei r ∈ S i (Sx + ui ) durch Ausführen von M (x; r + ui ) überprüft werden kann. Es folgt L ∈ Σp2 . Es lässt sich also BPP in sinnvoller Weise in Beziehung zu unseren bisher betrachteten Komplexitätsklassen setzen. Tatsächlich vermutet man, dass P = BPP gilt, was jedoch nicht bewiesen ist. 10 ? Die Frage P = BPP und Derandomisierung Motivation. Es ist klar, dass P ⊆ BPP ist. Es ist nicht bekannt, ob Gleichheit gilt. Ein offensichtlicher Ansatz, BPP ⊆ P zu zeigen, wäre, eine PTM zu derandomisieren. Hierbei wird eine vorhandene PTM M mit verschiedenen Zufallswahlen ausgeführt, um Pr [M (x) = 1] zu approximieren (es wird also M (x; r) mit verschiedenen r ∈ {0, 1}p(n) ausgeführt). Im Allgemeinen wird man dabei nicht alle Zufallswahlen r betrachten können, da exponentiell viele (genauer: 2p(n) ) mögliche r existieren. Definition von PRGs. Ein erster Schritt wird nun sein, eine PTM M , welche p(n) viele Zufallsbits benötigt, in eine PTM M 0 umzuwandeln, welche weniger Zufallsbits benötigt. Es soll also zunächst die Menge des benötigten Zufalls reduziert werden. Dies motiviert die folgenden Definitionen, wobei etwas Notation nützlich sein wird: eine PPT-TM M ist eine Polynomialzeit-PTM. Eine NPPT-TM ist eine nicht-uniforme PPT-TM (also eine PTM, die zusätzlich zur Eingabe x einen polynomiell großen Hinweis α|x| erhält, der nur von der Eingabelänge abhängt). Weiter hat eine PTM M Zufallskomplexität R(n), falls bei der Ausführung M (x; r) der explizite Zufall r höchstens Länge R(|x|) hat. Wir schreiben im Folgenden Un für die Gleichverteilung auf {0, 1}n . Definition 10.1 (vernachlässigbar). Eine Funktion : N → R ist vernachlässigbar (in n), falls gilt: ∀p ∈ N[X] ∃n0 ∈ N ∀n ≥ n0 |(n)| ≤ 1 . p(n) Vernachlässigbare Funktionen verschwinden schließlich schneller als der Kehrwert jedes Polynoms. Wir können vernachlässigbare Funktionen als asymptotisch kleine“ Funktionen ansehen. ” Definition 10.2 (PRG). Sei ` : N → N mit `(n) > n für alle n. Sei weiter G : {0, 1}∗ → {0, 1}∗ von einer Polynomialzeit-TM berechenbar, so dass |G(x)| = `(|x|) für alle x ∈ {0, 1}∗ . G ist ein Pseudozufallsgenerator (PRG) mit Streckung `, falls für alle NPPT-TMs A die Funktion Pr [A(G(Un )) = 1] − Pr A(U`(n) ) = 1 vernachlässigbar in n ist. 27 Nutzen von PRGs. Satz 10.3. Es werde L ∈ BPP von einer PPT-TM M mit Zufallskomplexität `(n)/3 erkannt. Weiter sei G ein PRG mit Streckung `(n). Dann wird L (im Sinne von BPP) von einer PPT-TM M + mit Zufallskomplexität n erkannt. Beweis. Es gilt Pr [M (x) gibt falsche Ausgabe] ≤ 1/3, wobei falsche Ausgabe“ bedeutet, dass M (x) = 1 für x 6∈ L oder umgekehrt. Führen wir M dreifach ” aus und machen einen Mehrheitsentscheid bezüglich der Ausgabe, ergibt sich eine PPT-TM M 0 mit Zufallskomplexität `(n) und Pr M 0 (x) gibt falsche Ausgabe ≤ 7/27. (11) Ersetzen wir nun den Zufall r ∈ {0, 1}`(n) (bei n = |x|) in der Ausführung von M 0 (x, r) durch G(s) für gleichverteiltes s ∈ {0, 1}n , ergibt sich eine PPT-TM M ∗ mit Zufallskomplexität n, für die Pr [M ∗ (x) gibt falsche Ausgabe] ≤ 1/3 (12) für alle hinreichend großen n und alle x ∈ {0, 1}n ist. Um dies einzusehen nutzen wir die PRG-Eigenschaft von G aus. Genauer: nehmen wir zum Widerspruch an, es gebe eine unendliche Folge (xn )n∈N (mit xn ∈ {0, 1}n ), so dass (12) für unendlich viele xn nicht gilt. Fassen wir M 0 (xn ; r) als NPPT-TM mit Hinweis xn und eigentlicher Eingabe r ∈ {0, 1}`(n) auf, ergibt sich ein PRG-Unterscheider A, der wegen (11) und ¬(12) effizient zwischen r = U`(n) und r = G(Un ) unterscheidet. Dies widerspricht jedoch der PRG-Eigenschaft von G. Es verbleibt, M ∗ so zu modifizieren, dass für alle x ∈ {0, 1}n mit nicht hinreichend großen n die entsprechenden Ausgaben festverdrahtet werden, so dass (12) für alle n ∈ N gilt. (Man beachte, dass nur endlich viele n nicht hinreichend groß sind.) Dies führt zu einer PPT-TM M + mit Zufallskomplexität n, die L erkennt. Konstruktion von PRGs. Andererseits können wir PRGs mit beliebig (polynomiell) langer Streckung aus PRGs mit (minimaler) Streckung n + 1 konstruieren: Satz 10.4. Sei G ein PRG mit Streckung n + 1, und sei ` ∈ N[X] mit `(n) > n ein Polynom. Dann existiert ein PRG G0 mit Streckung `(n). Beweis. G0 (s) berechnet sukzessive σi si := G(si−1 ) für i = 1, . . . , `(n), s0 := s ∈ {0, 1}n , si ∈ {0, 1}n und σi ∈ {0, 1}. Ausgabe von G0 (s) ist σ1 . . . σ`(n) ∈ {0, 1}`(n) . Zur Analyse von G0 betrachte man folgende Zufallsvariablen, wobei die σi wie oben beschrieben aus uniformem s ∈ {0, 1}n berechnet werden: H0 := σ1 . . . σ`(n) H1 := U1 σ1 . . . σ`(n)−1 .. .. . . H`(n)−1 := U`(n)−1 σ1 H`(n) := U`(n) , Wir müssen zeigen, dass für alle NPPT-TMs A0 Pr A0 (G0 (Un )) = 1 − Pr A0 (U`(n) ) = 1 = Pr A0 (H0 ) = 1 − Pr A0 (H`(n) ) = 1 = `(n) X Pr A0 (Hi−1 ) = 1 − Pr A0 (Hi ) = 1 i=1 vernachlässigbar ist. (Wir werden den nur längenabhängigen Hinweis von A0 der Übersichtlichkeit halber im Folgenden nicht explizit schreiben.) Sei also A0 beliebig, aber fest. Man betrachte die NPPT-TM A, 28 die bei Eingabe σs (für (σ, s) ∈ {0, 1} × {0, 1}n ) gleichverteilt i ∈ {1, . . . , `(n)} wählt, sodann gleichverteilt Ui−1 ∈ {0, 1}i−1 , und schließlich aus s die Bits σ1 , . . . , σ`(n)−i wie G0 berechnet. Ausgabe ist A0 (Ui−1 σσ1 . . . σ`(n)−i ). (Hinweis von A ist hierbei der Hinweis von A0 .) Entscheidend ist nun folgende Beobachtung: bei gleichverteilter Eingabe σs = Un+1 hat A Ausgabeverteilung A0 (Hi ); ist aber σs = G(Un ), so hat A Ausgabeverteilung A0 (Hi−1 ). Nach Annahme über G gilt, dass A := Pr [A(G(Un )) = 1] − Pr [A(Un+1 ) = 1] `(n) 1 X = Pr [A(G(Un )) = 1 | i = j] − Pr [A(Un+1 ) = 1 | i = j] `(n) j=1 `(n) 1 X 0 Pr A (Hi−1 ) = 1 − Pr A0 (Hi ) = 1 `(n) i=1 1 Pr A0 (G0 (Un )) = 1 − Pr A0 (U`(n) ) = 1 = `(n) = vernachlässigbar ist. Da ` ein Polynom ist, ist hiermit auch Pr [A0 (G0 (Un ))]−Pr A0 (U`(n) ) vernachlässigbar. Da weiter A0 beliebig war, ist deshalb G0 ein PRG mit Streckung `(n). Wir können uns also darauf beschränken, PRGs mit Streckung n + 1 zu konstruieren. Zunächst halten wir fest, dass wir weitere Annahmen brauchen, um einen PRG zu konstruieren: Lemma 10.5. Angenommen, ein PRG mit Streckung n + 1 existiert. Dann ist P 6= NP. Beweis. Sei G ein PRG mit Streckung n + 1. Man betrachte die Sprache [ LG := {x ∈ {0, 1}n+1 | ∃s ∈ {0, 1}n : x = G(s)}. n∈N Es ist LG ∈ NP; geeigneter Zeuge für x ∈ L ist s. Wäre LG ∈ P, so gäbe es eine Polynomialzeit-TM A mit Pr [A(G(Un )) = 1] = 1 Pr [A(Un+1 ) = 1] ≤ 1/2, was der PRG-Eigenschaft von G widerspräche. Also ist LG ∈ NP \ P. Wir müssen uns also realistischerweise auf unbewiesene Annahmen zurückziehen, um PRGs zu konstruieren. Eine dieser Annahmen ist die folgende: Definition 10.6 (Einwegpermutation). f : {0, 1}∗ → {0, 1}∗ ist eine Einwegpermutation, wenn f bijektiv und längenerhaltend (im Sinne von |f (x)| = |x|) ist und folgendes gilt: für jede NPPT-TM A ist Pr [A(f (x)) = x] vernachlässigbar als Funktion in n, wobei x ∈ {0, 1}n gleichverteilt ist. Kandidaten für Einwegpermutationen sind beispielsweise die Potenzierung (mit festem oder zufälligem Exponenten) in geeigneten zyklischen Gruppen. Tatsächlich ist Definition 10.6 etwas restriktiv bezüglich der Bitdarstellung von Urbildern und Bildern, um die Präsentation des folgenden Ergebnisses zu erleichtern. Ein Kandidat in einer syntaktisch etwas gelockerten Definition von Einwegpermutationen ist beispielsweise die Abbildung f (x, N ) = x2 mod N für N = P Q mit primen P, Q = 3 mod 4 und x ∈ QRN . Satz 10.7 (Goldreich-Levin). Sei f eine Einwegpermutation. Dann ist G : {0, 1}∗ → {0, 1}∗ mit G(x, r) = (f (x), hx, ri, r) ∈ {0, 1}|x|+|r|+1 ein PRG mit Streckung n + 1, wobei x, r ∈ {0, 1}m ist, und hx, ri = ⊕m i=1 xi ri das bitweise Skalarprodukt von x und r ist. 29 Beweisidee. Nehmen wir zum Widerspruch einen erfolgreichen Unterscheider A zwischen G(x, r) und U|x|+|r|+1 an. Wir können A als einen Prädiktor B auffassen, der bei Eingabe f (x) und r das innere Produkt hx, ri vorhersagt. Nehmen wir dabei zunächst an, dass B(f (x), r) = hx, ri immer (d.h. für alle x und r) gilt. Dann können wir B benutzen, um x = (x1 , . . . , xm ) aus f (x) zu berechnen, indem wir B(f (x), ei ) = hx, ei i = xi für alle Einheitsvektoren ei berechnen. Dies aber erzeugt einen Widerspruch zur Annahme, dass f eine Einwegpermutation ist. Weichen wir nun unsere Annahme etwas auf und nehmen Pr [B(f (x), r) = hx, ri] = 4/5 für hinreichend viele x an (wobei die Wahrscheinlichkeit über r ist). In diesem Fall ist problematisch, dass etwa für alle r = ei der Prädiktor B die falschen Ergebnisse liefern könnte. Wir gehen dem aus dem Weg, indem wir hx, ai = hx, bi ⊕ hx, b ⊕ ai für alle x, a, b ∈ {0, 1}m nutzen. Genauer berechnen wir B(f (x), s) ⊕ B(f (x), s ⊕ ei ) für alle i und jeweils viele gleichverteilte s ∈ {0, 1}m und bilden einen Mehrheitsentscheid, um hx, ei i vorherzusagen. Nun gilt B(f (x), r) = hx, ri tatsächlich aber nur mit Wahrscheinlichkeit 1/2 + für nicht-vernachlässigbares . Insbesondere können wir nicht annehmen, dass im Vorgehen wie oben mit hinreichender Wahrscheinlichkeit > 1/2 sowohl B(f (x), s) als auch B(f (x), s ⊕ ei ) richtig berechnet werden. Die Lösung von Goldreich und Levin, die hier nur skizziert werden soll, ist, die Werte s nicht echt unabhängig und gleichverteilt zu wählen, sondern nur paarweise unabhängig. Genauer werden alle zur Randomisierung benötigten s als Linearkombinationen der Form s = α1 s1 ⊕ α2 s2 ⊕ · · · ⊕ αt st (mit αi ∈ {0, 1} und gleichverteilten si ∈ {0, 1}m ) berechnet. Hiermit sind die s zwar paarweise unabhängig, es können aber 2t viele s aus den si kombiniert werden. Der Vorteil dieses Verfahrens ist, dass sich die Werte hx, si aus den hx, si i ergeben: hx, si = α1 hx, s1 i ⊕ · · · ⊕ αt hx, st i. Genauer reicht es aus, anfangs die t Werte hx, si i zu raten (man beachte, dass t logarithmisch klein ist), um sich alle hx, si ohne B zu erschließen. Auf diese Weise wird B nur gebraucht, um die Werte hx, s ⊕ ei i zu berechnen, und eine Erfolgswahrscheinlichkeit“ 1/2 + von B reicht bei hinreichend vielen ” Wiederholungen aus. Von teilweiser zu vollständiger Derandomisierung. Wir fassen zusammen, was wir bisher gezeigt haben: • Wenn eine Einwegpermutation existiert, dann existiert ein PRG mit Streckung n + 1. • Wenn ein PRG mit Streckung n + 1 existiert, dann wird jede Sprache L ∈ BPP von einer PTM mit Zufallskomplexität n erkannt. Das gerade Gesagte zeigt noch nicht, dass P = BPP ist (selbst wenn man Einwegpermutationen annimmt); man hat es immer noch mit n vielen Zufallsbits in einer PTM zu tun. Über diese 2n möglichen Zufallswahlen kann in Polynomialzeit keine vollständige Suche angestellt werden. Man stelle sich aber nun vor, dass eine PTM M nur c log n (für konstantes c ∈ N) Zufallsbits benötigt. Die genaue Akzeptanzwahrscheinlichkeit einer solchen PTM bei gegebener Eingabe x ∈ {0, 1}n kann in polynomieller Zeit berechnet werden. (Für jedes r ∈ {0, 1}c log n wird M (x; r) ausgeführt; man beachte, dass nur 2c log n = nc solche r existieren.) Mit anderen Worten: jede Sprache, die von einer PPT-TM mit Zufallskomplexität O(log n) entschieden wird, ist auch von einer Polynomialzeit-TM entscheidbar. Man könnte also daran interessiert sein, PRGs zu konstruieren, die c log n Zufallsbits auf n Zufallsbits (und damit auf polynomiell viele Zufallsbits) ausdehnen. Solche PRGs lassen sich beispielsweise aus exponentiell harten Einwegfunktionen konstruieren: Satz 10.8 (informell). Angenommen, es existieren exponentiell harte Einwegfunktionen (oder exponentiell starke PRGs). Dann ist P = BPP. 30 Anwendungen von Pseudozufall in der Kryptographie. Pseudozufall erweist sich in vielen Bereichen der Kryptographie als nützlich. Als vielleicht prominentestes Beispiel soll hier eine Anwendung in Verschlüsselungsschemata angesprochen werden. Zunächst kann beobachtet werden, dass ein PRG in naheliegender Weise als Ersatz für den echten Zufall in einem one-time pad gebraucht werden kann. Ein one-time pad ist ein Verschlüsselungsverfahren, bei dem sowohl Sender als auch Empfänger über einen gemeinsamen Zufallsstring K = K1 . . . K` ∈ {0, 1}` verfügen. Der Sender verschickt ein Chiffrat C = Ri ⊕ M für eine Nachricht M ∈ {0, 1} (wobei bei mehreren Nachrichten kein Ri mehrmals verwendet werden darf). Der Empfänger entschlüsselt M = C ⊕ Ri . Nachteil dieses Verfahrens ist ein großer gemeinsamer Schlüssel K. Sollen ` Bits verschlüsselt werden, ist K ∈ {0, 1}` erforderlich. Statt K ∈ {0, 1}` kann aber einfach K ∈ {0, 1}n für kleines, von ` unabhängiges n gewählt werden, und mit K 0 := G(K) verschlüsselt werden, wobei G ein PRG mit Streckung ` ist. Der Nachteil eines solchen Verfahrens ist die benötigte Synchronisation zwischen Sender und Empfänger: beide müssen wissen, welcher Teil Ki0 des Schlüssels gerade benutzt wird. Blockchiffren (also letztlich Abbildungen E der Form E(K, M ) = C) beheben diesen Mangel. Aus einem PRG kann auch eine Blockchiffre gebaut werden, indem zunächst eine pseudo-random function (PRF) konstruiert wird. Eine PRF ist eine effizient berechenbare Funktion F : {0, 1}n × {0, 1}n → {0, 1}n , so dass Orakelzugriff auf F (K, ·) (für gleichverteiltes K) ununterscheidbar ist von Orakelzugriff auf eine gleichverteilt gezogene echt zufällige Funktion {0, 1}n → {0, 1}n . Eine PRF F kann aus einem PRG G mit Streckung 2n etwa wie folgt konstruiert werden: F (K, x) mit x = (x1 , . . . , x` ) ∈ {0, 1}l setzt K0 := K, und Ki+1 = yi,xi für yi,0 yi,1 := G(Ki ) (wobei yi,0 , yi,1 ∈ {0, 1}k also die beiden Hälften von G(Ki ) darstellen). Ausgabe ist F (K, x) = Kn . (Diese Konstruktion geht auf eine Arbeit von Goldreich, Goldwasser und Micali zurück.) Umgekehrt kann mit einer PRF eine Nachricht effizient blockweise (in Blöcken von n Bits) verschlüsselt werden; üblicherweise wird hierbei noch eine PRF in einen Block-Operationsmodus eingebunden, um zu vermeiden, dass gleiche Nachrichten bei gleichem Schlüssel auf gleiche Chiffrate abgebildet werden. 11 Probabilistically checkable proofs Motivation. Man betrachte folgende Verallgemeinerung von NP: angenommen, man möchte x ∈ L überprüfen und hat Zugriff auf einen Zeugen π ∈ {0, 1}` . Im Falle von NP (bzw. unserer alternativen Definition von NP) ist π direkte Eingabe eines effizienten Verifiers V; für eine sinnvolle Definition sollte also die Länge ` von π polynomiell in |x| sein. Nehmen wir nun an, dass V der Zeuge π nicht als Eingabe zur Verfügung gestellt wird, sondern nur in impliziter Form gegeben wird. (Dies kann etwa dadurch geschehen, dass V Orakelzugriff auf eine Funktion χπ : N → {0, 1} hat, wobei χπ (i) = πi das i-te Bit von π liefert.) Offenbar kann jede Sprache L ∈ NP auf diese Weise durch einen Verifier V erkannt werden, der zunächst den gesamten NP-Zeugen bitweise ausliest. Die wahre Kraft wie oben definierter Beweise entfaltet sich aber erst, wenn wir probabilistische Verifier V erlauben, die zwar in Polynomialzeit (in |x|) laufen, aber über Orakelzugriff auf einen exponentiell langen Zeugen π verfügen. Letztlich ist dies eine weitere Formulierung der Probleme, deren Lösungen wir effizient überprüfen können. Es ergeben sich aber einige überraschende technische Unterschiede. Wir schreiben kurz Vπ , um auszudrücken, dass V Orakelzugriff auf die Funktion χπ (·) wie oben hat. Wir sagen, dass der Orakelzugriff nichtadaptiv ist, wenn die Orakelanfragen nur vom verwendeten Zufall und der Eingabe abhängen, nicht aber vom Ergebnis früherer Orakelanfragen. Definition 11.1 (PCP). Ein (r(n), q(n))-Verifier (für r, q : N → N) für eine Sprache L ⊆ {0, 1}∗ ist eine Orakel-PPT-TM V mit den folgenden Eigenschaften: Komplexität. Für x ∈ {0, 1}n und π ∈ {0, 1}∗ benutzt Vπ (x) höchstens r(n) viele Zufallsbits und macht höchstens q(n) viele Orakelanfragen (und dies nichtadaptiv). r(n) Vollständigkeit. Für jedes x ∈ L existiert ein π ∈ {0, 1}q(n)2 mit Pr [Vπ (x) = 1] = 1. Soundness. Für jedes x 6∈ L und alle π ∈ {0, 1}∗ ist Pr [Vπ (x) = 1] ≤ 1/2. 31 PCP(r(n), q(n)) ist die Menge aller Sprachen L, für die c, d ∈ N und ein (c · r(n), d · q(n))-Verifier existieren. S Offenbar ist NP ⊆ p∈N[X] PCP(0, p(n)) und PCP(log n, 1) ⊆ NP. Spektakulärer ist folgende Aussage: Satz 11.2 (PCP-Theorem, Theorem 11.5 in [1]). NP = PCP(log n, 1). Es ist also jede NP-Sprache entscheidbar von einem Verifier, der nur logarithmisch viel Zufall verwendet und nur konstant viele Beweisabfragen durchführt. Tatsächlich kann ein geeigneter Beweiser immer mit lediglich drei Beweisanfragen auskommen. Wir werden Satz 11.2 nicht beweisen. Allerdings sind die Konsequenzen dieses Satzes überaus interessant. Bevor wir diese näher beleuchten, werden wir jedoch zunächst ein Beispiel für eine PCP-Sprache betrachten. Beispiel 11.3. Wir betrachten wieder die Sprache GNI := {(G1 , G2 ) | G1 und G2 sind nicht-isomorphe Graphen}. Wir haben schon gesehen, dass GNI ∈ coNP ist und insbesondere GNI ∈ IP (mit einem interessanten“ ” Beweissystem) gilt. Das interaktive Beweissystem (P, V), mit dem GNI ∈ IP gezeigt wurde, hatte die folgende Form: 1. V wählt i ∈ {1, 2} und eine Permutation τ von Gi gleichverteilt und sendet H := τ (Gi ) an P. 2. P überprüft, ob H isomorph zu G1 oder G2 ist. Ist H isomorph zu Gj , so sendet P j an V. 3. V gibt 1 aus genau dann, wenn i = j ist. Fassen wir nun die Reaktion von P als bestimmte, durch H anzeigte Stelle eines exponentiell großen r(n) Beweises π auf, so kann P durch einen statischen“ Beweis π ∈ {0, 1}2 für ein geeignetes Polynome r ” ersetzt werden. (Das von H bestimmte Bit von π ist 1 genau dann, wenn H isomorph zu G1 ist.) V wird dann nur noch nicht-interaktiv“ durch Orakelanfragen klären, ob H isomorph zu G1 oder G2 ist und eine ” entsprechende Ausgabe geben. Dies zeigt, dass GNI ∈ PCP(r(n), 1) für ein Polynom r ist. PCPs und Approximationen. Es besteht ein interessanter Zusammenhang zwischen der Approximation von Problemlösungen und PCPs. Zunächst soll deshalb der Begriff der Approximation formalisiert werden: Definition 11.4 (Approximation der optimalen 3CNF-Lösung). Sei ϕ eine 3CNF-Formel. Der Inhalt val(ϕ) von ϕ ist der maximale Anteil der gleichzeitig erfüllbaren Klauseln von ϕ. Beispielsweise ist für ϕ = (u1 ∨ u2 ) ∧ (¬u1 ∨ ¬u2 ) ∧ (u1 ∨ ¬u2 ) ∧ (¬u1 ∨ u2 ) val(ϕ) = 3/4 (denn ϕ ist nicht erfüllbar, aber jede Belegung von u1 , u2 erfüllt 3 der 4 Klauseln). Man beachte, dass val(ϕ) = 1 ist genau dann wenn ϕ erfüllbar ist. Definition 11.5 (ρ-Approximationsalgorithmus für 3CNF-Lösungen). Sei 0 ≤ ρ ≤ 1. Ein ρ-Approximationsalgorithmus für 3CNF-Lösungen ist ein Algorithmus, der bei Eingabe einer Formel ϕ eine Variablenbelegung ausgibt, die mindestens ρ · val(ϕ) aller Klauseln von ϕ erfüllt. Es existiert ein trivialer 1/2-Approximationsalgorithmus für 3CNF-Lösungen: Belege alle Variablen sukzessive so, dass jeweils immer mindestens die Hälfte aller noch nicht erfüllten Klauseln, die diese Variable enthalten, erfüllt wird. (Hierfür setzen wir voraus, dass keine Klausel sowohl eine Variable als auch ihre Negation enthält.) Es stellt sich folgende Frage: Ist es schwierig, (3CNF-)Approximationen zu berechnen? Kann aus der Existenz geeignet guter Approximationen gefolgert werden, dass das Problem eine positive Instanz ist (dass also etwa die gegebene 3CNF-Formel erfüllbar ist)? Die Antwort liefert eine äquivalente Formulierung des PCP-Theorems: 32 Satz 11.6 (PCP-Theorem, Theorem 11.9 in [1]). Es existiert ein ρ < 1, so dass für jede Sprache L ∈ NP eine in Polynomialzeit berechenbare Funktion f existiert, die 3CNF-Formeln ausgibt, und für die gilt: x∈L ⇒ val(f (x)) = 1 x 6∈ L ⇒ val(f (x)) < ρ. Man beachte, dass dieselbe Aussage mit ρ = 1 nichts anderes als die NP-Vollständigkeit von 3SAT anzeigt. Für ρ < 1 ergibt sich aber eine hochgradig nichttriviale Aussage. Als im Sinne von Satz 11.6 geeignete Werte für ρ wurde schon ρ = 7/8+ für beliebiges > 0 gezeigt. Aus Satz 11.6 folgt, dass mithilfe eines effizienten ρ-Approximationsalgorithmus für 3CNF-Lösungen jede NP-Sprache effizient entschieden werden kann. Wir erhalten Korollar 11.7 (Corollary 11.10 in [1]). Es gibt ein ρ < 1, so dass folgendes gilt: die Existenz eines ρ-Approximationsalgorithmus für 3CNF-Lösungen impliziert P = NP. Um die Äquivalenz von Satz 11.2 und Satz 11.6 einzusehen, kann ein Verifier V mit festverdrahteter Eingabe x und Zufall r als eine Menge von polynomiell vielen Formeln {φr } aufgefasst werden (und umgekehrt). Ein Beweis π im Sinne von Satz 11.2 entspricht dabei einer Variablenbelegung von φ. Anwendung von PCPs: Universal Arguments. Eine wesentliche Stärke der PCP-Charakterisierung liegt in der Tatsache, dass beliebige NP-Sprachen durch Abfrage konstant vieler Beweisstellen erkannt werden können. PCPs erlauben auf diese Weise, auch Aussagen zu beweisen, deren Zeugen (im Sinne von NP) nicht a priori durch ein festes Polynom beschränkt sind. Ein Beispiel für die Konsequenzen dieser Eigenschaft von PCPs ist das Zero-Knowledge-Beweissystem von Barak. Dieses Beweissystem stellt einen theoretischen Durchbruch dar. Es zeigt nämlich, dass gewisse Eigenschaften von Zero-KnowledgeBeweissystemen nur erzielt werden können, wenn der Simulator (im Sinne von Definition 7.20) den Code (bzw. die explizite TM-Beschreibung) des Verifiers benutzt. Für unsere Zwecke sind diese Eigenschaften von Baraks Beweissystem aber nicht vorrangig. Hier soll vor allem eine interessante von ihm benutzte Technik vorgestellt werden, die ohne PCPs nicht ohne weiteres möglich scheint. Genauer nutzt Barak Universal Arguments (UAs). Hiermit ist folgende Variante interaktiver Beweissysteme gemeint: Definition 11.8 (Universal Argument, informell und vereinfacht). Ein Universal Argument (UA) für die universelle Sprache LU := {(i, x, t) | ∃w ∈ {0, 1}∗ : Mi (x, w) akzeptiert in höchstens t Schritten} besteht aus zwei TMs (P, V), so dass folgendes gilt: Effizienz. V ist eine PTM mit Laufzeit polynomiell in der Länge der Eingabe y = (i, x, t). P ist eine PTM und erhält als Eingabe y und ein zugehöriges w ∈ {0, 1}∗ ; seine Laufzeit ist polynomiell in der Laufzeit von Mi (x, w). (Die zusätzliche Eingabe w gleicht den Nachteil der beschränkten Rechenkomplexität von P aus.) Vollständigkeit. Für alle y = (i, x, t) ∈ L und Zeugen w ∈ {0, 1}∗ (so dass Mi (x, w) in ≤ t Schritten akzeptiert) gilt: Pr [outV hV, Pw i(y) = 1] = 1, wobei hV, Pw i ausdrückt, dass P in der Interaktion als zusätzliche Eingabe w erhält. (Computational) Soundness. Für alle y 6∈ L und alle PPT-TMs P0 ist Pr outV hV, P0 i(y) = 1 vernachlässigbar. Man beachte, dass wir nur über effiziente P0 quantifizieren. Man spricht deshalb auch von Argumentsystemen (im Gegensatz zu Beweissystemen). Witness Indistinguishability. V lernt in einer Interaktion nicht, welcher NP-Zeuge benutzt wurde. (Diese Eigenschaft ist nur interessant, wenn mehrere Zeugen existieren und stellt eine Abschwächung der Zero-Knowledge-Eigenschaft dar.) Genauer: für alle Familien (yn , wn,1 , wn,2 )n∈N mit yn ∈ {0, 1}n ∩ LU und (möglicherweise verschiedenen) zugehörigen Zeugen wn,i und alle PPT-TMs V0 gilt, dass Pr outV0 hV0 , Pwn,1 i(yn ) = 1 − Pr outV0 hV0 , Pwn,2 i(yn ) = 1 vernachlässigbar (als Funktion in n) ist. 33 Schwacher Proof-of-Knowledge (informell). Aus jedem effizienten Prover P0 , der V bei Eingabe y = (i, x, t) von y ∈ LU überzeugt, kann effizient ein zugehöriges w aus der Beschreibung von P0 extrahiert werden. Man beachte, dass die Schwierigkeit in der Konstruktion von UAs darin besteht, mit nicht a priori längenbeschränkten Zeugen umzugehen. Dies ist der Anknüpfungspunkt für PCPs. Genauer kann ein UA kann aus einer kollisionsresistenten Hashfunktion und einem geeigneten PCP-Verifier konstruiert werden. Die Intuition dieser Konstruktion ist wie folgt: zunächst sei folgende Variante des PCP-Theorems vorgestellt: S Satz 11.9 (PCP-Theorem, Theorem 11.8 in [1]). NEXP = r∈N[X] PCP(r(n), 1). Offenbar ist LU ∈ NEXP; es existiert also ein PCP-Verifier, der polynomiell viel Zufall und konstant viele Beweisanfragen benötigt, um LU zu erkennen. Stellt man sich in einem ersten Schritt vor, dass ein Prover einfach diese Beweisanfragen beantwortet, erhält man (fast) einen UA. Es ergibt sich allerdings eine Schwierigkeit bezüglich der Soundness dieses Argumentsystems: ein unehrlicher Prover P0 könnte seine Antworten an die jeweiligen Beweisanfragen anpassen. Um dies zu vermeiden, muss sich ein Prover zunächst auf den gesamten (eventuell exponentiell großen) Beweis π festlegen. Hierzu werden die Bits von π als Blätter eines vollständigen Binärbaums polynomieller Tiefe dargestellt. Jeder Knoten des Baums enthält einen Hashwert auf die zwei unmittelbaren Nachfolger; damit ist ein Pfad durch den Baum, vom Wurzelknoten bis zu einem Bit von π, als Folge von polynomiell vielen Hashwerten gegeben. Eine solche Folge kann von einem polynomiell beschränkten Verifier nachvollzogen werden. Andererseits ist der Prover auf den gesamten Baum festgelegt, wenn er dem Verifier anfangs den zum Wurzelknoten gehörigen Hashwert schickt. (Andernfalls gäbe es zwei Möglichkeiten, einen Hashwert zu erklären, was der Kollisionsresistenz der verwendeten Hashfunktion widerspräche.) Auf diese Weise lässt sich die Soundness des UA aus der Soundness des verwendeten PCPs folgern. Weiter folgt noch nicht ohne weiteres Witness Indistinguishability, denn die Hashwerte verbergen nicht unbedingt die gehashten Werte. Um diesem Problem beizukommen, können wir jedoch einfach statt der eigentlichen Bits Commitments auf die jeweiligen Bits in den Blättern speichern, und diese im Falle einer Abfrage öffnen. (Commitments verbergen den jeweiligen Inhalt ähnlich wie eine Verschlüsselung, benötigen aber keinen Schlüssel und haben zusätzlich eine bindende Eigenschaft; dies bedeutet, dass ein Commitment immer nur zu einem einzigen Wert geöffnet werden kann.) Schließlich folgt die Proof-of-Knowledge-Eigenschaft aus einer ähnlichen Eigenschaft des zugrundeliegenden PCPs. Nehmen wir nun ein UA (etwa wie beschrieben konstruiert) an. Baraks Zero-Knowledge-Argumentsystem (P, V) für beliebige NP-Sprachen L funktioniert dann wie folgt: 1. Bei Eingabe x ∈ L und einem Zeugen w sendet P zunächst ein Commitment Com auf 0n an V. 2. Dann sendet V einen zufälligen Bitstring r ∈ {0, 1}n . 3. Anschließend beweist P mittels eines UA folgende Aussage, wobei H eine feste kollisionsresistente Hashfunktion ist: Entweder x ∈ L, . . . . . . oder das Commitment Com kann zu einem Wert H(Π) geöffnet werden, wobei Π die Beschreibung einer effizient berechenbaren Funktion mit Π(Com) = r ist (oder beides). Ein ehrlicher Prover wird einen Zeugen für x ∈ L und damit für diese Aussage kennen. Hintergrund für den etwas sonderbar anmutenden oder“-Teil der bewiesenen Aussage ist die Konstruktion ” eines Simulators (im Sinne unserer Zero-Knowledge-Definition). Halten wir uns zur Erinnerung vor Augen, dass wir Korrektheit, Soundness, und eine geeignete ZeroKnowledge-Eigenschaft von (P, V) zeigen möchten. Effizienz und Korrektheit folgen aus den jeweiligen Eigenschaften des UAs. Soundness folgt aus der Soundness des UAs, und der Tatsache, dass r von einem ehrlichen V unabhängig von Com gewählt wird. (Genauer: aus ein Prover, der die Soundness verletzt, würde sich mittels der Proof-of-Knowledge-Eigenschaft ein Prover herleiten lassen, der Kollisionen der Hashfunktion H findet.) Um einzusehen, dass (P, V) die Zero-Knowledge-Eigenschaft hat, müssen wir einen Simulator S angeben, der Interaktionen mit einem beliebigen gegebenen Verifier V simuliert. Nun wird S in einer Interaktion 34 mit V im Allgemeinen keinen Zeugen für x ∈ L kennen. Allerdings wird S intern V simulieren können, um ein gültiges Transkript zu produzieren. Insbesondere wird S den Programmcode und den gesamten verwendeten Zufall von V kennen. Da V r wählt (möglicherweise in Abhängigkeit von Com), kann S also schon zu Anfang des Protokolls ein Programm Π wie in der UA-Aussage gefordert angeben. Der Simulator verfährt also wie folgt: 1. S sendet ein Commitment Com auf H(Π) an V, wobei Π das Programm von V selbst (mit festverdrahtetem Zufall) ist. 2. (Die Simulation von) V sendet einen zufälligen Bitstring r ∈ {0, 1}n . 3. S beweist mittels eines UA folgende Aussage: Entweder x ∈ L, . . . . . . oder das Commitment Com kann zu einem Wert H(Π) geöffnet werden, wobei Π die Beschreibung einer effizient berechenbaren Funktion mit Π(Com) = r ist (oder beides). Entscheidend ist, dass tatsächlich Π(Com) = r ist (nach Konstruktion), und S deshalb einen Zeugen für den oder“-Teil der Aussage kennt. ” Auf diese Weise kann S Transkripte ausgeben, die ununterscheidbar von echten Transkripten sind. (Dies folgt aufgrund der Sicherheit des Commitments und der Witness Indistinguishability des UAs.) Man mache sich die Subtilität dieser Simulation klar: nur, wenn V tatsächlich innerhalb von S simuliert wird, ist der alternative Beweisweg“ über den oder“-Teil der Aussage möglich. Anders gesagt: P (bzw. S) ” ” beweist V die Aussage entweder die eigentliche Aussage x ∈ L stimmt, oder Du wirst gerade simuliert!“ ” Wesentlich hierbei ist, dass der einzige offensichtliche Weg, die jeweils nächste Nachricht von V vorherzusagen, darin besteht, V selbst auszuführen. (Immerhin ist a priori nichts über V bekannt.) Dies hat zur Konsequenz, dass der Zeuge für den oder“-Teil der bewiesenen Aussage mit der Komplexität von V ” wächst. Da wir beliebig (polynomiell) große V annehmen, ist demnach für den Zeugen keine polynomielle a-priori-Schranke bekannt. Es ist also essentiell, dass die Komplexität der UA-Kommunikation nicht von der Größe des Zeugen abhängt. An dieser Stelle fließt letztendlich ein, dass mittels eines PCP kurze interaktive Beweise (also UAs) konstruiert werden können. Literatur [1] Sanjeev Arora and Boaz Barak. Computational Complexity: A Modern Approach. Cambridge University Press, 2009. [2] Oded Goldreich. Computational Complexity: A Conceptual Perspective. Cambridge University Press, 2008. [3] Dexter Kozen. Theory of Computation. Springer, New York, 2006. 35