Beweisbar sichere Kryptographie Dennis Hofheinz Wintersemester 2012/2013, Karlsruher Institut für Technologie Notation Für n N schreiben wir n := {1,..., n}. Für einen Bitstring x {0, 1} bezeichnet x die Bitlänge von x. Für n N bezeichnet 1 n den String von n Einsen. Für eine Menge S bezeichnet s S gleichverteiltes Ziehen von s aus S. Für einen probabilistischen Algorithmus M bezeichnet y M(x), daß y die Ausgabe von M bei Eingabe x ist. Um den von M verwendeten Zufall r explizit zu machen, schreiben wir auch y = M(x; r). 1 Motivation Szenario: sichere Nachrichtenübermittlung. Angenommen, Alice möchte Bob eine geheimzuhaltende Nachricht über eine unsichere Datenleitung schicken. Mit unsicherer Datenleitung sei hier zunächst gemeint, daß ein hypothetischer Angreifer alle über die Leitung gesendeten Signale mithört. Will man erreichen, daß der Angreifer die zu versendene Nachricht nicht erfährt, ist also zu vermeiden, die Nachricht im Klartext zu senden. Stattdessen sollten Maßnahmen ergriffen werden, die Nachricht vor dem Transport über die unsichere Leitung geeignet zu schützen. Dies kann durch Verschlüsseln der Nachricht erreicht werden. Secret-Key-Verschlüsselung. Bei Nutzung eines Secret-Key-Verschlüsselungsschemas (kurz: eines SKE-Schemas) verfügen Alice und Bob über einen gemeinsamen Schlüssel K {0, 1}. Sowohl der Verschlüsselungs- als auch der Entschlüsselungsalgorithmus erfordern K als Eingabe. Der Schlüssel K ist dabei geheimzuhalten wird er veröffentlicht, kann ein Angreifer selbst ein gesendetes Chiffrat entschlüsseln. SKE-Schemata haben den Nachteil, daß durch die benötigten geheimen Schlüssel K eine Schlüsselverteilung benötigt wird. Zudem gibt es bei einem Kommunikationssystem mit n teilnehmenden Parteien n(n 1)/2 Schlüssel, wobei wir davon ausgehen, daß jedes Paar von Parteien über einen eigenen Schlüssel verfügt. Public-Key-Verschlüsselung. Um diesem Mißstand entgegenzuwirken, kann Public-Key-Verschlüsselung (PKE) verwendet werden. Bei einem PKE-Schema wird eine Nachricht M unter einem öffentlichen Schlüssel pk verschlüsselt: Dennis.Hofheinz@kit.edu C Enc(pk, M). 1
Um ein Chiffrat C zu entschlüsseln, muß dabei ein passender geheimer Schlüssel sk genutzt werden: M Dec(sk, C). Der öffentliche Schlüssel pk allein erlaubt keine Entschlüsselung. Damit ist es prinzipiell möglich, daß pk veröffentlicht wird. Insbesondere kann pk von allen Sendern genutzt werden, die Nachrichten an den Besitzer von sk verschlüsseln und senden möchten. Es sind also bei n Parteien im System nur n Schlüsselpaare nötig. 2 Überblick In dieser Vorlesung sollen folgende Themen behandelt werden: Definitionen. Wir werden nach einer sinnvollen und nützlichen Definition von PKE-Schemata und ihrer Sicherheit suchen. Dabei werden wir Wert darauf legen, Konzepte wie asymptotische Sicherheit und die Unterscheidung verschiedener Bedrohungsarten zu motivieren und zu erklären. Konstruktionen. Wir werden Beispiele für sichere und effiziente Konstruktionen von PKE-Systemen angeben. Hierbei soll Wert darauf gelegt werden, die Sicherheit der Systeme in einem festgelegten Rahmen und unter vereinbarten Annahmen und Definitionen mathematisch zu beweisen. Techniken. Wir werden Techniken kennenlernen, um Sicherheitsbeweise damit sind hier Reduktionsbeweise im Sinne der Komplexitätstheorie gemeint zu führen. Dreh- und Angelpunkt unserer Betrachtungen werden PKE-Schemata sein. Jedoch werden wir gelegentlich auch andere, verwandte kryptographische Systeme betrachten, etwa digitale Signaturschemata. Insbesondere können im Umfeld von PKE-Schemata entwickelte Techniken auch in anderen Kontexten als sehr nützlich erkannt werden. 3 Definition von Public-Key-Verschlüsselungsschemata Ein erster Versuch. Zunächst wollen wir das Objekt unserer Untersuchungen definieren. Beginnen wir dazu zunächst mit einem Definitionsversuch: Definition 3.1 (PKE-Schema, erster Versuch). Ein PKE-Schema PKE mit Nachrichtenraum M {0, 1} besteht aus drei probabilistischen Algorithmen (Gen, Enc, Dec): Schlüsselgenerierung. Gen(ε) gibt bei leerer Eingabe ε ein Schlüsselpaar (pk, sk) aus. Verschlüsselung. Enc(pk, M) gibt bei Eingabe eines öffentlichen Schlüssels pk und einer Nachricht M M ein Chiffrat C aus. Entschlüsselung. Dec(sk, C) gibt bei Eingabe eines geheimen Schlüssels sk und eines Chiffrats C eine Nachricht M M aus. Wir fordern Korrektheit in dem Sinne, daß für alle M M, alle (pk, sk) im Bild von Gen, und alle C im Bild von Enc(pk, M) immer Dec(sk, C) = M gilt. Definition 3.1 wäre nicht mit erster Versuch annotiert, wenn sie der Weisheit letzter Schluß wäre. Um die Probleme zu verstehen, die Definition 3.1 verbunden sind, halten wir zunächst fest, daß kein PKE-Schema im Sinne von Definition 3.1 uneingeschränkt sicher sein kann: 2
Lemma 3.2 (PKE-Unsicherheit gegen unbeschränkte Angreifer). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema im Sinne von Definition 3.1. Dann existiert ein deterministischer Algorithmus A, der M A(pk, C) für alle M M und alle möglichen (pk, sk) Gen(ε) und C Enc(pk, M) erfüllt. Beweis. A sucht mit vollständiger Suche nach M M, R {0, 1} mit C = Enc(pk, M ; R ) und gibt das erste so gefundene M aus. Bei Eingabe (pk, C) wie im Lemma existieren solche M, R ; der Algorithmus terminiert also. Andererseits impliziert Enc(pk, M ; R ) = C = Enc(pk, M; R) (1) wegen der angenommenen Korrektheit von PKE schon M = M. (Um dies einzusehen, wende man Dec(sk, ) auf (1) an.) Selbstverständlich ist der Angreifer A aus Lemma 3.2 alles andere als effizient. Es bleibt also zu hoffen, daß man ein PKE-Schema angeben kann, daß sicher zumindest gegen effiziente Angriffe ist. Aber auch hier ist etwas Vorsicht geboten: Lemma 3.3 (PKE-Unsicherheit mit kleiner Wahrscheinlichkeit). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema im Sinne von Definition 3.1. Dann existiert ein probabilistischer Algorithmus A mit etwa derselben Laufzeit wie Enc, der A(pk, C) {, M} und Pr M A(pk, C) > 0 für alle M M und alle möglichen (pk, sk) Gen(ε) und C Enc(pk, M) erfüllt. Beweis. Man betrachte das A aus dem Beweis von Lemma 3.2; statt jedoch eine vollständige Suche über M, r durchzuführen rate man M M, r {0, 1}. (Hierzu kann eine beliebige Verteilung X mit Pr X = x > 0 für alle x {0, 1} verwendet werden.) Asymptotische Sicherheit. Es existieren also generische allerdings entweder ineffiziente oder nur selten erfolgreiche Angriffe auf PKE-Schemata. Wir können also nur auf eine Sicherheitsaussage der Form Jeder effiziente Angriff gegen PKE hat höchstens mit kleiner Wahrscheinlichkeit Erfolg. hoffen. Hierbei ist noch zu definieren, was effiziente Angriffe und kleine Wahrscheinlichkeiten sind. Eine Möglichkeit hierzu wäre etwa, Effiziente Angreifer := Algorithmen mit Laufzeit 2 80 Kleine Wahrscheinlichkeiten := Wahrscheinlichkeiten 2 80 zu setzen. Ein Schema, daß in diesem Sinne sicher wäre, dürfte man wohl als intuitiv sicher bezeichnen können. Allerdings hat eine solche Sicherheitsdefinition Nachteile: 3
Mangelnde Skalierbarkeit. Durch algorithmische Fortschritte verändern sich Komplexitätsabschätzungen. Beispielsweise wurde 1977 geschätzt, daß die Faktorisierung einer 429-Bit-Zahl mehrere Millionen Jahre beanspruchen würde. 1994 wurden erstmals Zahlen dieser Größe durch verteilte Berechnungen faktorisiert. Das heißt auch, daß heute noch aktuelle konkrete Abschätzungen für die Erfolgswahrscheinlichkeit eines Angriffs oder die Komplexität einer Berechnung in absehbarer Zukunft veraltet sein könnten. Aus diesem Grund scheint es gewagt, konkrete Schranken für die Sicherheit eines Schemas (und die Klassifikation von sicheren Schemata) anzugeben. Mangelnde technische Handhabbarkeit. Bezeichnet man ein Schema genau dann als sicher, wenn es keine Angriffe mit Erfolgswahrscheinlichkeit größer als 2 80 zuläßt, so könnte eine Kombination von zwei Instanzen eines sicheren Schemas unsicher werden. (Man nehme etwa an, daß ein Angriff auf jede einzelne Instanz die Erfolgswahrscheinlichkeit 2 80 hat. Dann ist die Wahrscheinlichkeit, daß ein Angriff auf mindestens eine von zwei Instanzen des Schemas funktioniert, 2 79 2 160 > 2 80. Aus diesem Grund werden wir nicht versuchen, effizient und kleine Wahrscheinlichkeit wie oben konkret zu definieren. Stattdessen werden wir PKE-Schemata als komplexitätstheoretische Objekte auffassen, die einen expliziten, unär kodierten Sicherheitsparameter 1 k (mit k N) als Eingabe erhalten. Mit größerem Sicherheitsparameter soll intuitiv gesprochen mehr Sicherheit garantiert werden. Das bedeutet, daß das Schema selbst eine Zeitkomplexität haben darf, die polynomiell in k ist, Angriffe polynomiell in k sein dürfen (aber nicht aufwendiger), der Erfolg eines Angriffs als Funktion in k klein sein muß. Als kleine Funktionen (um einen Angriffserfolg zu beschränken) bieten sich verschiedene Möglichkeiten an: Man könnte fordern, daß eine Funktion f(k) klein ist, wenn lim k f(k) = 0 oder gar f(k) 2 k ist. Wir werden uns hier für die derzeit gängigste Formalisierung kleiner Funktionen entscheiden: Definition 3.4 (Vernachlässigbare Funktion). Eine Funktion f : N R ist vernachlässigbar, wenn gilt: c N k 0 N k > k 0 : f(k) < 1 k c. Eine vernachlässigbare Funktion verschwindet also asymptotisch schneller als jedes Polynom. Es ist beispielsweise k log k vernachlässigbar, k 1000 allerdings nicht. Weiter definieren wir Definition 3.5 (PPT). Ein probabilistischer Algorithmus ist PPT (für probabilistic polynomialtime), wenn er polynomielle Zeitkomplexität in der Länge der ersten Eingabe hat. So ausgestattet können wir nun unsere Definition eines PKE-Schemas leicht verfeinern (unterlegt dabei die Veränderungen gegenüber Definition 3.1): Definition 3.6 (PKE-Schema). Ein PKE-Schema PKE mit Nachrichtenraum M k {0, 1} besteht aus drei PPT-Algorithmen (Gen, Enc, Dec): Schlüsselgenerierung. Gen(1 k ) gibt bei Eingabe 1 k ein Schlüsselpaar (pk, sk) aus. Verschlüsselung. Enc(pk, M) gibt bei Eingabe eines öffentlichen Schlüssels pk und einer Nachricht M M k ein Chiffrat C aus. 4
Entschlüsselung. Dec(sk, C) gibt bei Eingabe eines geheimen Schlüssels sk und eines Chiffrats C eine Nachricht M M k { } aus. Wir fordern Korrektheit in dem Sinne, daß für alle k N, alle M M k, alle (pk, sk) im Bild von Gen(1 k ), und alle C im Bild von Enc(pk, M) immer Dec(sk, C) = M gilt. Die spezielle Ausgabe von Dec signalisiert hierbei, daß die Entschlüsselung fehlgeschlagen ist. 4 Sicherheitsdefinitionen Vorbemerkungen. Tasten wir uns nun vor zu einer ersten Sicherheitsdefinition. Wir haben bereits festgehalten: Angriffe sollten effizient, also PPT sein, und Angriffserfolge sollten vernachlässigbar sein. Es ist aber noch nicht klar, was das Ziel eines Angriffs sein soll. Mehrere Ziele sind denkbar: Den geheimen Schlüssel (und damit eine universelle Methode, um zu entschlüsseln) aus dem öffentlichen Schlüssel berechnen. Ein gegebenes Chiffrat entschlüsseln (also die zugehörige Nachricht finden). (Möglicherweise begrenzte) Informationen über die verschlüsselte Nachricht bei gegebenem Chiffrat finden. Man beachte hierbei, daß diese Ziele in absteigender Reihenfolge der Schwierigkeit angegeben sind. Findet man beispielsweise einen geheimen Schlüssel, so ist es damit auch möglich, jedes gegebene Chiffrat zu entschlüsseln. Je nach Einsatzzweck können auch speziellere Anforderungen existieren. (Wir werden diesbezüglich noch ein konkretes Beispiel kennenlernen.) Generell werden wir aber daran interessiert sein, eine möglichst universelle Sicherheitsdefinition zu finden, die Angriffe in einer Vielzahl von Szenarien ausschließt. Anders gesagt: wir sind daran interessiert, die Sicherheit eines Schemas unabhängig vom Einsatzzweck zu analysieren. Einwegeigenschaft der Verschlüsselung. schwachen Definition: Beginnen wir zunächst mit einer vergleichsweise Definition 4.1 (OW-CPA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema mit für jedes k endlichem Nachrichtenraum M k. Sei A ein PPT-Algorithmus. Sei Adv ow-cpa PKE,A (k) := Pr Exp ow-cpa PKE,A (k) = 1, wobei das Experiment Exp ow-cpa PKE,A wie folgt definiert ist: Experiment Exp ow-cpa PKE,A (k) (pk, sk) Gen(1 k ) M M k C Enc(pk, M ) M A(1 k, pk, C ) if M = M then return 1 else return 0 PKE ist OW-CPA-sicher (für one-way under chosen-plaintext attacks ), falls für jeden PPT- Algorithmus A die Funktion Adv ow-cpa PKE,A (k) vernachlässigbar ist. 5
Es ist sofort klar, wo das Problem dieser Definition liegt: Die Auswahl der Zielnachricht M erfolgt relativ willkürlich: M wird gleichverteilt aus M k gezogen. Es sind PKE-Schemata denkbar, die zwar Definition 4.1 erfüllen, die jedoch einige feste Nachrichten wie ja oder nein immer unsicher verschlüsseln. (Man denke etwa an ein Schema, bei dem immer ja Enc(pk, ja) und nein Enc(pk, nein) gilt.) Dennoch wird sich später Definition 4.1 als nützliches Hilfsmittel erweisen, um leistungsfähigere PKE-Schemata zu konstruieren. OW-CPA-Sicherheit und die Größe des Nachrichtenraums. Eine erste Beobachtung zeigt, daß Definition 4.1 überdies nur bei hinreichend großem Nachrichtenraum Sinn ergibt: Lemma 4.2 (OW-CPA-Unmöglichkeit bei kleinem Nachrichtenraum). Sei PKE ein PKE-Schema mit Nachrichtenraum M k {0, 1} k, so daß 1/ M k als Funktion in k nicht-vernachlässigbar ist. Dann ist PKE nicht OW-CPA-sicher. Beweis. Der Angreifer A, der unabhängig von der Eingabe M M k wählt, erzielt was nach Annahme nicht-vernachlässigbar ist. Adv ow-cpa PKE,A (k) = Pr M = M = 1 M k, Selbstverständlich hätten wir auch Adv ow-cpa PKE,A anders definieren können, beispielsweise durch Adv ow-cpa PKE,A (k) := Pr Exp ow-cpa PKE,A (k) = 1 1/ M k. In diesem Fall könnte man auch hoffen, OW- CPA-Sicherheit bei kleinem Nachrichtenraum zu erreichen. (In der Tat würde dann das noch einzuführende Lemma 4.4 auch bei kleinem Nachrichtenraum gelten.) Wir haben uns in Definition 4.1 für eine OW-CPA-Formulierung ohne Korrekturterm 1/ M k entschieden, da eine solche Formulierung intuitiv naheliegender erscheint und eine absolute Sicherheit unabhängig von der Größe des Nachrichtenraums garantiert. Ununterscheidbarkeit von Chiffraten. Es stellt sich die Frage, wie eigentlich die Nachricht M gewählt wird, deren Chiffrat A schließlich entschlüsseln soll. In einer konkreten Anwendung wird diese Nachricht einer bestimmten, anwendungsspezifischen Verteilung genügen. Überdies kann es in einigen Anwendungen ausreichen, sagen wir, die erste Hälfte von M zu finden, um die Anwendung zu schädigen. (Man denke an Nachrichten der Form Leider müssen wir Ihnen mitteilen,... bzw. Wir freuen uns, Ihnen mitteilen zu dürfen,....) Einen Ausweg bietet hier die Möglichkeit, A selbst die zu verschlüsselnde Nachricht M wählen zu lassen. Natürlich kann dann nicht mehr das Angriffsziel sein, M zu finden. Vielmehr soll A nun zwischen den Chiffraten von zwei selbstgewählten Nachrichten unterscheiden: Definition 4.3 (IND-CPA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema. Sei A ein PPT-Algorithmus. Sei Adv ind-cpa PKE,A (k) := Pr Exp ind-cpa PKE,A (k) = 1 1 2, wobei das Experiment Exp ind-cpa PKE,A wie folgt definiert ist: 6
Experiment Exp ind-cpa PKE,A (k) (pk, sk) Gen(1 k ) (M 0, M 1, state) A(1 k, find, pk) b {0, 1} C Enc(pk, M b ) b A(1 k, attack, state, C ) if b = b then return 1 else return 0 A heißt gültig, wenn es in Exp ind-cpa PKE,A immer M 0 = M 1 garantiert. PKE ist IND-CPA-sicher (für indistinguishable under chosen-plaintext attacks ), falls für jedes gültige A die Funktion (k) vernachlässigbar ist. Adv ind-cpa PKE,A Man beachte, daß Definition 4.3 nicht von einem PKE-Schema mit deterministischer Verschlüsselung Enc (und nichttrivialem Nachrichtenraum) erfüllt werden kann. Ein IND-CPA-Angreifer A könnte bei deterministischer Verschlüsselung zwei beliebige verschiedene, aber gleich lange Nachrichten M 0, M 1 wählen und bei attack-eingabe das erhaltene Chiffrat mit Enc(pk, M 0 ) und Enc(pk, M 1 ) vergleichen. Universalität der Definition. Ein gewichtiger Vorteil der IND-CPA-Definition ist ihre Universalität: Es existieren eine Reihe von äquivalenten Sicherheitsdefinitionen für PKE-Schemata. Beispielsweise fordert ROR-CPA-Sicherheit, daß kein effizienter Angreifer ein Verschlüsselungsorakel (das also bei Eingabe M immer Enc(pk, M) liefert) unterscheiden kann von einem Orakel, das bei Eingabe M immer Enc(pk, R) liefert, für zufälliges R {0, 1} M derselben Länge wie M. Es kann dabei einfach eingesehen werden, daß ROR-CPA-Sicherheit und IND-CPA-Sicherheit äquivalent sind. Ähnliches gilt für semantische Sicherheit; semantische Sicherheit fordert, daß jede Funktion f(m) einer Nachricht M unter Kenntnis eines Chiffrats von M nicht signifikant besser approximiert werden kann als ohne Kenntnis dieses Chiffrats. Dies soll für beliebige Nachrichtendistributionen, beliebige (selbst nicht-berechenbare) Funktionen f, und selbst wenn beliebige zusätzliche Information h(m) über M zur Verfügung steht. Zum Verbergen der Nachrichtenlänge. Wir lassen in Definition 4.3 nur Angreifer zu, die versuchen, Chiffrate von gleich langen Nachrichten ( M 0 = M 1 ) zu unterscheiden. Es wird also geduldet, daß beispielsweise Chiffrate von Nachrichten der Länge k unterschieden werden können von Chiffraten der Länge k + 1. (Anders gesagt: Wir fordern nicht, daß Verschlüsseln die Länge einer Nachricht verbirgt.) Diese Einschränkung der Sicherheit ergibt sich aus einer praktischen Notwendigkeit: Ein (mittels Gen erzeugter) öffentlicher Schlüssel pk und ein (mittels Enc(pk, ) erzeugtes) Chiffrat C legen schon eindeutig eine Nachricht fest. Es gibt also mindestens so viele Chiffrate wie Nachrichten. Ein Abzählargument liefert, daß also zwischen Nachrichtenlänge und Chiffratlänge ein Zusammenhang bestehen muß. Anders gesagt: Die Länge eines Chiffrats läßt in einem gewissen Umfang Rückschlüsse auf die Länge der verschlüsselten Nachricht zu. Es kann also die Nachrichtenlänge zumindest nicht vollständig verborgen werden. Zusammenhang zwischen OW-CPA und IND-CPA-Sicherheit. Es ist relativ einfach einzusehen, daß IND-CPA-Sicherheit schon OW-CPA-Sicherheit impliziert (sofern Lemma 4.2 dies zuläßt): 7
Lemma 4.4 (IND-CPA OW-CPA). Sei PKE ein PKE-Schema mit Nachrichtenraum M k {0, 1} k, so daß 1/ M k als Funktion in k vernachlässigbar ist. Ist dann PKE IND-CPA-sicher, so ist PKE auch OW-CPA-sicher. Beweis. Sei also PKE = (Gen, Enc, Dec) IND-CPA-sicher. Um zu zeigen, daß PKE auch OW- CPA-sicher ist, müssen wir für einen beliebigen PPT-Algorithmus A zeigen, daß Adv ow-cpa PKE,A (k) vernachlässigbar ist. Sei also A gegeben. Wir konstruieren einen PPT-Algorithmus B aus A wie folgt: Algorithmus B(1 k, find, pk) M 0 M k M 1 (M k \ {M 0 }) state := (M 0, M 1 ) return (M 0, M 1, state) Algorithmus B(1 k, attack, state, C ) parse state =: (M 0, M 1 ) M A(1 k, pk, C ) if M = M 0 then return 0 elseif M = M 1 then return 1 else return 0 Zunächst ist offenbar M 0 = M 1 = k, und deshalb B gültig im Sinne von Definition 4.3. Nach Annahme ist also Adv ind-cpa PKE,B (k) vernachlässigbar. Wie wir sogleich zeigen werden, gilt weiter Adv ind-cpa PKE,B (k) Advow-cpa PKE,A (k)/2 1/ M k (2) für hinreichend großes k, woraus das Lemma folgt. Es genügt also, (2) zu zeigen. Sei invert das Ereignis, daß A bei einer Ausführung von B tatsächlich C invertiert, also die Nachricht M mit M = Dec(sk, C ) findet. Weil sowohl M 0 als auch M 1 für sich genommen gleichverteilt über M k sind, gilt ε := Pr invert = Adv ow-cpa PKE,A (k). Weiter ist Adv ind-cpa PKE,B (k) + 1/2 = Pr b = b Nun gilt wiederum Pr b = b invert = 1 2 = Pr b = b invert Pr invert + Pr b = b invert Pr invert = 1 ε + Pr b = b invert (1 ε). ( Pr b = b invert, b = 0 + Pr b = b invert, b = 1 ) = 1 2 (Pr M M 1 invert, b = 0 + 0) ( ) 1 ( ) 1 1, 2 M k 1 wobei ( ) nutzt, das M 1 selbst bei bekanntem M 0 gleichverteilt über einer Menge der Kardinalität M k 1 ist. Einsetzen ergibt Adv ind-cpa PKE,B (k) ε + 1 ( ) 1 1 (1 ε) 1 2 M k 1 2 = ε 2 1 ε 2 M k 2, was wiederum (2) für hinreichend großes k zeigt. 8
5 Annahmen und erste Reduktionen PKE-Sicherheit braucht Annahmen. Man könnte nun hoffen, ein PKE-Schema zusammen mit einem Beweis seiner IND-CPA-Sicherheit anzugeben. Es ist allerdings problematisch, einen solchen Beweis angeben zu wollen, ohne weitere Annahmen zu machen: Lemma 5.1 (Notwendigkeit von Annahmen für PKE-Sicherheit). Angenommen, es existiert ein PKE-Schema, welches OW-CPA-sicher ist. Dann folgt P NP. Beweis. Betrachten wir die Sprache L PKE := { (pk, C, M) C = Enc(pk, M; R) für ein R und einen Präfix M von M }. Offenbar gilt L PKE NP: Ein passender Zeuge für (pk, C, M) L PKE ist (M, R) mit C = Enc(pk, M; R). Nehmen wir nun zum Widerspruch an, daß L PKE P ist; wir zeigen, daß dies der OW-CPA-Sicherheit von PKE widerspricht. Sei genauer D ein Polynomialzeit-Algorithmus, der L PKE entscheidet. Bei gegebenen pk und C = Enc(pk, M; R) kann mittels D durch bitweise Suche M gefunden werden. Es läßt sich so aus D ein PPT-Algorithmus A mit Adv ow-cpa PKE,A (k) = 1 konstruieren, was der OW-CPA-Sicherheit von PKE widerspricht. Es ist nicht realistisch, zu hoffen, daß beim Sicherheitsbeweis eines PKE-Schemas nebenbei P NP bewiesen wird. Deshalb können wir nur auf Sicherheitsaussagen der Form Wenn ein geeignetes Problem schwierig ist, dann ist Schema PKE IND-CPA-sicher. hoffen. Im folgenden sollen einige geeignete Berechenbarkeitsprobleme vorgestellt werden. (Es erübrigt sich beinahe, zu erwähnen, daß die Schwierigkeit jedes dieser Probleme schon P NP impliziert.) Faktorisierungsbasierte Probleme. Als eine der nützlichsten mathematischen Plattformen für kryptographische Anwendungen haben sich Ringe der Form Z N := Z/NZ ( Rechnung modulo N ) für ein Produkt N = P Q für zwei hinreichend große Primzahlen P, Q erwiesen. Wir nehmen hierfür einen geeigneten PPT-Algorithmus GenN an, der bei Eingabe 1 k verschiedene Primzahlen P > 2 und Q > 2 wählt und N, P, Q für N = P Q ausgibt. (Beispielsweise könnte man P und Q als gleichverteilt gewählte k-bit-primzahlen setzen.) Verbunden mit Z N ergeben sich folgende Annahmen. Faktorisierungsannahme. Es ist schwierig, N zu faktorisieren. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv fac GenN,A (k) := Pr Exp fac GenN,A (k) = 1 vernachlässigbar ist. RSA-Annahme. Es ist schwierig, bei gegebenen N, e Z (P 1)(Q 1) und y Z N ein x Z N mit y = x e mod N zu finden. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv rsa GenN,A (k) := Pr Exp rsa GenN,A (k) = 1 vernachlässigbar ist. 9
Starke RSA-Annahme. Es ist schwierig, bei gegebenen N und y Z N ein Tupel (x, e) mit x Z N und e 2 zu finden, das x e = y mod N erfüllt. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv srsa GenN,A (k) := Pr Exp srsa GenN,A (k) = 1 vernachlässigbar ist. Die verwendeten Experimente sind dabei wie folgt definiert: Experiment Exp fac GenN,A (k) (N, P, Q) GenN(1 k ) D A(1 k, N) if D {P, Q} then return 1 else return 0 Experiment Exp rsa GenN,A (k) (N, P, Q) GenN(1 k ) e Z (P 1)(Q 1) y Z N x A(1 k, N, e, y) if x e = y mod N then return 1 else return 0 Experiment Exp srsa GenN,A (k) (N, P, Q) GenN(1 k ) y Z N (x, e) A(1 k, N, y) if x e = y mod N and e 2 then return 1 else return 0 Offenbar impliziert die starke RSA-Annahme die RSA-Annahme, welche wiederum die Faktorisierungsannahme impliziert. Unglücklicherweise ist aber nicht bekannt, ob die RSA-Annahme von der Faktorisierungsannahme impliziert wird. Ein Beispiel für ein PKE-Schema in Z N. Das ursprünglich von Rivest, Shamir und Adleman vorgeschlagene RSA-Schema PKE RSA = (Gen RSA, Enc RSA, Dec RSA ) mit Nachrichtenraum M = Z N ist wie folgt definiert: Algorithmus Gen RSA (1 k ) (N, P, Q) GenN(1 k ) e Z (P 1)(Q 1) d := 1/e mod (P 1)(Q 1) (pk, sk) := ((N, e), (N, d)) return (pk, sk) Algorithmus Enc RSA (pk, M) parse pk =: (N, e) C := M e mod N return C Algorithmus Dec RSA (sk, C) parse sk =: (N, d) M := C d mod N return M Wir nehmen dabei eine geeignete Kodierung von Elementen M Z N als Bitstrings an. Die Korrektheit von PKE RSA kann mittels des Chinesischen Restesatzes (Rechnung modulo P bzw. Rechnung modulo Q) eingesehen werden. Theorem 5.2 (Sicherheit von PKE RSA ). PKE RSA ist OW-CPA-sicher genau dann wenn die RSA- Annahme gilt. Beweis. Ein OW-CPA-Angreifer A auf PKE RSA kann direkt als A wie in der RSA-Annahme betrachtet werden. Insbesondere ist momentan nicht bekannt, ob die Faktorisierungsannahme schon die OW-CPA- Sicherheit von PKE RSA impliziert. Theorem 5.3 (Unsicherheit von PKE RSA ). PKE RSA ist nicht IND-CPA-sicher. Beweis. Man beachte, daß Enc RSA deterministisch ist. Ein geeigneter IND-CPA-Angreifer A kann somit die Verschlüsselungen zweier verschiedener gleich langer Nachrichten M 0, M 1 Z N durch Vergleich mit den (eindeutig bestimmten) Enc(pk, M 0 ) bzw. Enc(pk, M 1 ) unterscheiden. 10
Probleme in zyklischen Gruppen. Als weitere sehr nützliche mathematische Plattform haben sich zyklische Gruppen erwiesen. Sei also (G k ) k N eine Familie von nichttrivialen endlichen zyklischen Gruppen. (Man beachte: Um von asymptotisch schweren Problemen zu reden, ist hier wieder der Begriff des Sicherheitsparameters nötig.) Der Einfachheit halber werden wir im folgenden den Index k unterdrücken und G statt G k schreiben. Wir setzen die jeweilige Gruppenordnung q := G > 1 als bekannt voraus. Gens G G bezeichnet die Menge der Generatoren von G; wir setzen voraus, daß die Gleichverteilung auf Gens G effizient berechenbar ist. Es ergeben sich die folgende Annahmen. Diskreter-Logarithmus-(DLog-)Annahme. Es ist schwierig, x aus g x zu berechnen. Genauer: für jeden PPT-Algorithmus A ist die Funktion Adv dlog G,A A(1 (k) := Pr k, g, g x ) = x g Gens G, x q vernachlässigbar ist. Computational-Diffie-Hellman-(CDH-)Annahme. Es ist schwierig, bei gegebenen g, g x, g y das Element g xy zu berechnen. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv cdh G,A(k) := Pr A(1 k, g, g x, g y ) = g xy g Gens G, x, y q vernachlässigbar ist. Decisional-Diffie-Hellman-(DDH-)Annahme. Es ist schwierig, bei gegebenen g, g x, g y das Element g xy von einem zufälligen Gruppenelement zu unterscheiden. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv ddh G,A(k) := Pr Exp ddh G,A(k) = 1 1 2 vernachlässigbar ist. Hierbei ist das Experiment Exp ddh G,A wie folgt definiert: Experiment Exp ddh G,A (k) g Gens G x, y, z q b {0, 1} (g 0, g 1 ) := (g xy, g z ) b A(1 k, g, g x, g y, g b ) if b = b then return 1 else return 0 Es ist einfach einzusehen, daß die CDH-Annahme die DLog-Annahme impliziert. Immer noch relativ einfach kann auch eingesehen werden, daß die DDH-Annahme die CDH-Annahme impliziert. (Hier ergibt sich die Schwierigkeit, daß die Korrektheit einer CDH-Lösung nicht unbedingt effizient verifiert werden kann. Deshalb unterscheide man hier die Fälle 1/ G vernachlässigbar und 1/ G nicht vernachlässigbar. Im ersten Fall kann wie in Lemma 4.4 verfahren werden, und im zweiten Fall kann eingesehen werden, daß die DDH-Annahme genauso wie die CDH-Annahme nicht gilt.) Weiter ist einfach einzusehen und im Verlauf nützlich, daß Adv ddh G,A(k) = 1 2 ( Pr A(1 k, g, g x, g y, g z ) = 1 11 Pr A(1 k, g, g x, g y, g xy ) = 1 ) (3)
gilt, wobei wie in Exp ddh G,A die Variablen g Gens G und x, y, z q gleichverteilt gezogen werden. (Um (3) einzusehen, konditioniere man die Definition von Adv ddh G,A auf b = 0 bzw. b = 1.) Mögliche Instanziierungen. Es gibt Kandidaten für Gruppen G, in denen die oben genannenten Annahmen gelten. Die zwei populärsten dieser Kandidaten sollen kurz besprochen werden. Multiplikative Untergruppen von endlichen Körpern. G kann als (echte) Untergruppe der multiplikativen Gruppe Z p eines endlichen Körpers Z p (mit primem p) gewählt werden. Hierbei ist zu beachten, daß zum einen p hinreichend groß gewählt werden sollte, so daß Zahlen in der Größenordnung von p nicht effizient faktorisiert werden können. (Andernfalls können mittels des Index-Calculus-Algorithmus effizient diskrete Logarithmen berechnet werden.) p sollte also nach derzeitigem Kenntnisstand eine Bitlänge von mehr als 1024 haben. Zudem sollte der Fall G = Z p (also die Verwendung der gesamten multiplikativen Gruppe) vermieden werden, da dann die DDH-Annahme verletzt ist: Lemma 5.4. In Gruppen der Form G = Z p gilt die DDH-Annahme nicht. Beweis. Man betrachte den Angreifer A, der bei Eingabe (1 k, g, g x, g y, g b ) die Legendre- Symbole ( ) ( ) ( ) g x := (g x ) (p 1)/2 g y mod p, := (g y ) (p 1)/2 gb mod p, := g (p 1)/2 p p p b mod p berechnet. Für unsere Zwecke reicht es, über Legendre-Symbole das folgende zu wissen: ( ) ( ) ( ) g g x g x g G, x Z : { 1, 1}, = ; p p p weiter ist (für p > 2) für genau die Hälfte aller Elemente g G das Legendre-Symbol ( g p ) = 1. Unser Angreifer A gibt schließlich 1 aus genau dann wenn gilt: ( ( ) ( ) ) ( ) g x g y gb = 1 = 1 = 1. p p p Intuitiv sagt A mit einer 1-Ausgabe aus, daß g b nicht den Regeln genügt, den ein g xy genügen müßte. Etwa aus ( gx gxy p ) = 1 würde ( p ) = ( gx p )y = 1 folgen. Offenbar gibt demnach A immer 0 aus, falls g b = g xy = (g x ) y = (g y ) x ist. Falls aber g b = g z für unabhängiges z q ist, so gibt A mit Wahrscheinlichkeit 3/4 1/2 = 3/8 eine 1 aus. Insgesamt gilt also Adv ddh G,A(k) (3) = 1 ( ) Pr A(1 k, g, g x, g y, g z ) = 1 Pr A(1 k, g, g x, g y, g xy ) = 1 = 3 2 16, was die Behauptung zeigt. Andererseits sind Gruppen G := { g Z p ( ) } g = 1 p (für geeignetes p) durchaus populäre Kandidaten für Gruppen, in denen die DDH-Annahme nach heutigem Stand gilt. 12
Elliptische Kurven. G kann als geeignete Untergruppe einer elliptischen Kurve gewählt werden. (Hier soll jedoch nicht auf die Definition oder Konstruktion von elliptischen Kurven eingegangen werden.) Dies hat den Vorteil, das in einer solchen Struktur kein Äquivalent des Index-Calculus-Algorithmus existiert, weshalb Gruppen sehr viel kleinerer Ordnung und Darstellung (im Vergleich zu G Z p) gewählt werden können. Auf diese Weise können Gruppen gewählt werden, bei denen nach heutigem Stand die DDH-Annahme gilt und deren Elemente durch etwa 200 Bits repräsentiert werden können. Eine wichtige Bemerkung hierzu: es ist gängig, zyklische Gruppen G einer primen Ordnung q zu wählen. Dies hat den Vorteil, daß jedes Element g G \ {1} schon G generiert. Ein Beispiel für ein PKE-Schema in zyklischen Gruppen. Nehmen wir eine Familie von Gruppen G wie oben an. Das von ElGamal vorgeschlagene und nach ihm benannte PKE-Schema PKE ElG = (Gen ElG, Enc ElG, Dec ElG ) mit Nachrichtenraum M = G ist wie folgt definiert: Algorithmus Gen ElG (1 k ) g Gens G x q (pk, sk) := ((g, g x ), x) return (pk, sk) Algorithmus Enc ElG (pk, M) parse pk =: (g, X) y q C := (g y, X y M) return C Algorithmus Dec ElG (sk, C) set x := sk parse C =: (Y, Z) M := Z/Y x return M Wir nehmen dabei eine geeignete Kodierung von Elementen M G als Bitstrings an. Korrektheit von PKE ElG gilt wegen X y = (g x ) y = g xy = (g y ) x = Y x. An PKE ElG ist interessant, daß Verschlüsselung randomisiert erfolgt: Ein fester Klartext M kann zu q verschiedenen Chiffraten C führen, abhängig vom verwendeten Zufall y. Theorem 5.5 (OW-CPA-Sicherheit von PKE ElG ). PKE ElG ist genau dann OW-CPA-sicher, wenn die CDH-Annahme gilt. Beweis. Wir zeigen zunächst, daß die OW-CPA-Unsicherheit von PKE ElG benutzt werden kann, um die CDH-Annahme zu widerlegen. Man nehme also einen Angreifer A mit nicht-vernachlässigbarem OW-CPA-Vorteil Adv ow-cpa PKE ElG,A an. Wir konstruieren einen CDH-Angreifer B aus A, der wie folgt agiert. Bei Eingabe (1 k, g, g x, g y ) wählt B ein zufälliges Element Z G und setzt M A(1 k, (g, g x ), (g y, Z)). Man beachte, daß diese A-Eingaben wie in Exp ow-cpa Z/M aus. Es gilt PKE ElG,A verteilt sind. Schließlich gibt B den Wert weshalb Z/M = g xy Z/g xy = M Dec(x, (g y, Z)) = M, Adv cdh G,B(k) = Adv ow-cpa PKE ElG,A (k) ist und somit B ein erfolgreicher Angreifer auf die CDH-Annahme ist. Umgekehrt kann ein erfolgreicher CDH-Angreifer in ähnlicher Weise zu einem OW-CPA-Angreifer auf PKE ElG umgebaut werden. 13
Theorem 5.6 (IND-CPA-Sicherheit von PKE ElG ). PKE ElG ist genau dann IND-CPA-sicher, wenn die DDH-Annahme gilt. Beweis. Analog zu Theorem 5.5. 6 Das Schema von Blum und Goldwasser Die bislang präsentierten Sicherheitsbeweise PKE-Schemata könnten den Eindruck hinterlassen, daß im wesentlichen schon die Sicherheit des Schemas angenommen wurde. (Der Beweis leistet also nur eine mehr oder weniger oberflächliche Umformulierung von Annahmen.) Deshalb soll nun ein PKE-Schema vorgestellt werden, dessen IND-CPA-Sicherheit unter der Faktorisierungsannahme bewiesen werden kann. Genauer ist das Ziel die Herleitung des folgenden Ergebnisses: Theorem 6.1 (IND-CPA-Sicherheit unter der Faktorisierungsannahme). Es existiert ein PKE- Schema PKE BG mit Nachrichtenraum M k = {0, 1} k, welches IND-CPA-sicher unter der Faktorisierungsannahme ist. Hierzu ist ein wenig Vorbereitung nötig. Quadratische Reste. Wir betrachten den Ring Z N für N = P Q mit P = Q = 3 mod 4. (Man sagt in dem Fall auch, daß N ein Blum-Integer ist.) Die Menge QR N := { x 2 x Z } N ist die Menge der quadratischen Reste modulo N. Sei Q N : QR N QR N x x 2 mod N die Quadrierungsfunktion auf QR N. Wir machen zunächst einige kleine Beobachtungen: Lemma 6.2. Q N ist bijektiv. Beweis. Wegen des Chinesischen Restesatzes wissen wir, daß die Ringisomorphie Z N = ZP Z Q gilt. Weil P = Q = 3 mod 4 ist, gilt deshalb für die multiplikativen Gruppen Z N = Z P Z Q = C P 1 C Q 1 = ( C(P 1)/2 C 2 ) ( C(Q 1)/2 C 2 ), wobei C i die (additiv geschriebene) zyklische Gruppe mit i Elementen darstellt und (P 1)/2 und (Q 1)/2 ungerade sind. Quadrierung in Z N entspricht einer Multiplikation mit 2 in den (additiv geschriebenen) C i -Komponenten. Deshalb ist eine Quadrierung in Z N eine Bijektion auf den C (P 1)/2 - und C (Q 1)/2 -Komponenten, annihiliert aber die C 2 -Komponenten. Die Quadrate in QR N sind also genau die Menge C (P 1)/2 C (Q 1)/2, und die Quadrierungsfunktion Q N ist auf der Menge der Quadrate bijektiv. 14
Lemma 6.3. Unter Kenntnis der Faktorisierung N = P Q kann Q 1 N effizient (d. h. in Polynomialzeit) berechnet werden. Beweis. Es ist x e = x e mod QR N für alle x QR N. Weiter ist nach dem Gesagten QR N eine Gruppe ungerader Ordnung QR N = (P 1)(Q 1)/4. Insbesondere hat 2 ein multiplikatives Inverses modulo QR N. Sei nun λ := 2 1 mod QR N, d. h. λ ist die kleinste natürliche Zahl mit 2 λ = 1 mod QR N. Für alle x QR N gilt ( x 2 ) λ = x 2λ = x 2λ mod QR N = x 1 mod QR N = x 1 = x mod N. Exponentiation mit λ erlaubt es also, Q N effizient zu invertieren. (Man beachte, daß die Faktorisierung von N erlaubt, λ effizient zu berechnen.) Lemma 6.4. Jedes Element y QR N hat genau vier Quadratwurzeln in Z N ; es existieren also genau vier Elemente x Z N mit y = x 2 mod N. Beweis. Durch den Chinesischen Restesatz wird klar, daß die Quadrate y QR N genau Elementen (y P, y Q ) Z P Z Q entsprechen, wobei y P und y Q Quadrate in Z P bzw. Z Q sind. Wegen Z P = C (P 1)/2 C 2 hat jedes Quadrat y P Z P genau zwei Quadratwurzeln x P und x P. (Analog für y Q.) Durch Kombination ergeben sich genau 4 mögliche Quadratwurzeln (x P, x Q ), (x P, x Q ), ( x P, x Q ), und ( x P, x Q ) eines y. Bemerkung 6.5. Die letzten Resultate (Lemma 6.2, Lemma 6.3, Lemma 6.4) können auch alternativ bewiesen werden, indem man den Kern des Gruppenhomomorphismus Q N : Z N QR N mit Q N (x) = x 2 mod N betrachtet. (Der einzige Unterschied zwischen Q N und Q N besteht im Definitionsbereich.) Genauer besteht ker(q N ) aus allen x Z N mit x2 = 1 mod N. Ähnlich wie im Beweis von Lemma 6.4 liefert der Chinesische Restesatz, daß es genau 4 solche x = (x P, x Q ) gibt, von denen genau eines schon ein Quadrat ist. Damit folgt Lemma 6.4 (weil Q N ein Homomorphismus ist), und wegen QR N = Z N /4 = (P 1)(Q 1)/4 auch Lemma 6.2. Schließlich folgt Lemma 6.3 wie oben. Von der Faktorisierungsannahme zu Einwegpermutationen. Unter der Faktorisierungsannahme hat die Quadrierungsfunktion Q N eine für unsere Zwecke nützliche Einwegeigenschaft: Definition 6.6 (Einwegfunktion, Einwegpermutation). Sei F = (F k ) k N eine Familie von Familien von Funktionen f F k mit f : X f Y f über endlichen Mengen X f. Wir nennen F eine Familie von Einwegfunktionen, falls für jeden PPT-Algorithmus A die Funktion Adv ow F,A(k) := Pr f(a(1 k, f(x))) = f(x) f F k, x X f vernachlässigbar in k ist. Falls zusätzlich jedes f F k F bijektiv ist und Y f = X f gilt, heißt F Familie von Einwegpermutationen. Man beachte, daß dann gilt: f(a(1 k, f(x))) = f(x) A(1 k, f(x)) = x. Wenn der Bezug zum Sicherheitsparameter klar ist, sagen wir auch manchmal, daß eine einzelne Funktion f eine Einwegfunktion bzw. Einwegpermutation ist. 15
Lemma 6.7. Unter der Faktorisierungsannahme ist Q N eine Einwegpermutation. Beweis. Da Q N nach Lemma 6.2 bijektiv ist, reicht es aus, zu zeigen, daß für jeden PPT-Algorithmus A die Funktion Adv ow Q N,A(k) = Pr A(1 k, N, Q N (x)) = x x QR N vernachlässigbar ist. Genauer zeigen wir nun Adv fac GenN,B (k) Advow Q N,A (k) 2 für einen geeigneten Faktorisierungsalgorithmus B, den wir aus A konstruieren. Nach Annahme ist Adv fac GenN,B vernachlässigbar, weshalb wegen (4) auch Advow Q N,A vernachlässigbar sein muß. B verfährt wie folgt: Algorithmus B(1 k, N) x B Z N y = x 2 B mod N x A A(1 k, N, y) return gcd(x A x B, N) Setzen wir zur Analyse x := Q 1 N (y), d. h. x ist die (eindeutige) Quadratwurzel von y in QR N. Da die Eingabe y von A wie in Definition 6.6 ein gleichverteiltes Element aus QR N ist, gilt Pr x A = x = Adv ow Q N,A(k). Weiter hat y nach Lemma 6.4 in Z N genau 4 Quadratwurzeln. Es gibt also 4 mögliche Elemente x 1,..., x 4 Z N mit x2 i = y mod N. Nach Konstruktion ist x B ein zufälliges dieser x i. Für genau zwei dieser x i gilt x i {x, x}. Wir haben also Pr x B { x, x} = 1 2. (4) Zudem sind die Ereignisse x B { x, x} und As Ausgabe unabhängig, da A nur y, nicht aber x B als Eingabe erhält. Demnach gilt Pr x A = x x B { x, x} = Pr x A = x Pr x B { x, x} = Advow 2 Q N,A. (5) Nehmen wir nun x A = x x B {x, x} an. Dann ist x 2 A = y = x2 B mod N; anders ausgedrückt, (x A + x B )(x A x B ) = x 2 A x2 B = 0 mod N, weshalb N = gcd((x A + x B )(x A x B ), N) gcd(x A + x B, N) gcd(x A x B, N) eine Faktorisierung von N liefert. Weil x A + x B 0 mod N und x A x B 0 mod N ist, ist diese Faktorisierung nichttrivial. Demnach faktorisiert B erfolgreich N, sobald x A = x x B {x, x} gilt. Wegen (5) folgt (4). 16
Zwischenschritt: faktorisierungsbasierte OW-CPA-Sicherheit. Als Zwischenschritt auf unserem Weg zu einem faktorisierungsbasierten IND-CPA-sicheren PKE-Schema betrachte man das folgende PKE-Schema PKE Rab = (Gen Rab, Enc Rab, Dec Rab ) mit Nachrichtenraum QR N : Algorithmus Gen Rab (1 k ) (N, P, Q) GenN(1 k ) (pk, sk) := (N, (P, Q)) return (pk, sk) Algorithmus Enc Rab (pk, M) parse pk =: N C := Q N (M) return C Algorithmus Dec Rab (sk, C) parse sk =: (P, Q) M := Q 1 N (C) return M Offenbar ist PKE Rab genau dann OW-CPA-sicher, wenn die Funktion Q N eine Einwegpermutation ist. Mit Lemma 6.7 ergibt sich: Theorem 6.8 (Sicherheit von PKE Rab ). Unter der Faktorisierungsannahme ist PKE Rab OW-CPAsicher. PKE Rab ist allerdings nicht IND-CPA-sicher, denn Enc Rab ist deterministisch. Ununterscheidbarkeit. Als nächstes soll aus der Einwegpermutation Q N eine stärkere Form von Unvorhersagbarkeit hergeleitet werden. Zunächst definieren wir hierfür einen Begriff für die Ununterscheidbarkeit von zwei Verteilungen: Definition 6.9 (Ununterscheidbarkeit). Seien A = (A k ) k N und B = (B k ) k N zwei Folgen von Zufallsvariablen. Wir sagen, daß A und B ununterscheidbar sind (geschrieben A c B), falls für alle PPT-Algorithmen D die Funktion Adv dist A,B,D(k) := Pr D(1 k, A k ) = 1 Pr D(1 k, B k ) = 1 vernachlässigbar in k ist. Bevor wir fortfahren, soll der universelle Charakter von Definition 6.9 herausgestellt werden. Hierfür definieren wir exemplarisch: Definition 6.10 (Reihenfolgen-Ununterscheidbarkeit). Wir sagen, daß A = (A k ) k N und B = (B k ) k N Reihenfolgen-ununterscheidbar sind (geschrieben A c 2 B) falls für alle PPT-Algorithmen D die Funktion Pr D(1 k, C b, C 1 b ) = b b {0, 1}, C 0 = A k, C 1 = B k 1/2 vernachlässigbar in k ist. Um die Universalität von Definition 6.9 zu illustrieren, zeigen wir: Lemma 6.11. A c B A c 2 B, falls A oder B effizient berechenbar sind. Beweis. Zunächst bemerken wir, daß A und B genau dann Reihenfolgen-ununterscheidbar sind wenn Pr D(1 k, A k, B k ) = 1 Pr D(1 k, B k, A k ) = 1 (6) 17
vernachlässigbar ist. Es gilt nämlich (wobei wir b {0, 1}, C 0 = A k, und C 1 = B k voraussetzen): ( ) 2 Pr D(1 k, C b, C 1 b ) = b 1/2 ( ) = 2 Pr D(1 k, C b, C 1 b ) = b b = 0 + Pr D(1 k, C b, C 1 b ) = b b = 1 1 = Pr D(1 k, C b, C 1 b ) = b b = 0 + Pr D(1 k, C b, C 1 b ) = b b = 1 1 = Pr D(1 k, C 0, C 1 ) = 0 + Pr D(1 k, C 1, C 0 ) = 1 1 = Pr D(1 k, C 1, C 0 ) = 1 Pr D(1 k, C 0, C 1 ) = 1. Aus (6) folgt offenbar A c 2 B A c B. Für die Umkehrung nehmen wir ohne Beschränkung der Allgemeinheit an, daß A effizient berechenbar ist und bemerken Pr D(1 k, A k, B k ) = 1 Pr D(1 k, A k, A k ) = 1 = Pr E(1 k, B k ) = 1 Pr E(1 k, A k ) = 1 (7) Pr D(1 k, B k, A k ) = 1 Pr D(1 k, A k, A k ) = 1 = Pr F(1 k, B k ) = 1 Pr F(1 k, A k ) = 1 (8) für geeignete PPT-Algorithmen E und F, die die erste bzw. zweite Eingabe A k selbst generieren und D aufrufen. Nach Annahme sind die rechten Seiten von (7) und (8) vernachlässigbar, weshalb auch (6) vernachlässigbar sein muß. Es sind ähnliche Variationen eines intuitiven Ununterscheidbarkeitsbegriffs denkbar; jedoch sollten diese in den meisten Fällen äquivalent zu Definition 6.9 sein. Von Einwegpermutationen zu Ununterscheidbarkeit. Definition 6.12 (Hard-Core-Prädikat). Sei H = (H k ) k N eine Familie von Familien von Paaren von Funktionen (f, h) H k mit f : X f Y f und h : X f {0, 1} über endlichen Mengen X f. Wir sagen (wenn der Bezug zu H klar ist), daß h ein Hard-Core-Prädikat von f ist, falls gilt: (f(x), h(x)) c (f(x), U {0,1} ), wobei (f, h) H k, x X f und U {0,1} {0, 1} unabhängig gezogen werden. Selbst bei gegebenem f(x) sieht h(x) also aus wie unabhängiger Zufall. Anders gesagt: f(x) hilft nicht wesentlich dabei, h(x) zu berechnen. Für x Z N sei lsb N (x) das niederwertigste Bit von x (also x mod 2) in einer Darstellung von x als Ganzzahl x {0,..., N 1}. Wir werden ohne Beweis das folgende Resultat benutzen: Theorem 6.13 (Hard-Core-Eigenschaft des LSB). Angenommen, Q N ist eine Einwegpermutation. Dann ist Funktion lsb N ist ein Hard-Core-Prädikat von Q N. (Für Interessierte: Diese Eigenschaft von lsb N wurde in 1 gezeigt.) Mittels Theorem 6.13 könnte man schon hoffen, ein unter der Faktorisierungsannahme IND- CPA-sicheres PKE-Schema zu definieren. Man könnte etwa Chiffrate der Form C := (x 2, lsb N (x) M) 18
(mit M {0, 1}) erzeugen. Unter Kenntnis der Faktorisierung von N läßt sich x und damit lsb N (x) berechnen. Andererseits sollte ohne Kenntnis der Faktorisierung lsb N (x) und damit lsb N (x) M wie unabhängiger Zufall aussehen. In der Tat wurde ein ähnliches Schema von Goldwasser und Micali vorgeschlagen und als IND-CPA-sicher bewiesen. Nachteil des Schemas ist jedoch der kleine Nachrichtenraum: Es können nur einzelne Bits M {0, 1} verschlüsselt werden. Wir werden deshalb an dieser Stelle die bisherigen Gedanken noch etwas weiterentwickeln. Von einem Bit zu vielen Bits. Unser Vorgehen wird sein, die Anwendung der Quadrierungsfunktion Q N zu iterieren. Intuitiv wird bei jeder Anwendung ein weiteres Zufallsbit verfügbar, welches dann direkt zur Verschlüsselung genutzt werden kann. Wir definieren also zunächst ( ) BBS N (x) := lsb N (x), lsb N (Q N (x)), lsb N (Q 2 N(x)),..., lsb N (Q k 1 N (x)) {0, 1} k. Lemma 6.14 (Pseudozufallseigenschaft von BBS N ). Unter der Annahme, daß lsb N Core-Prädikat von Q N ist, gilt ein Hard- (N, Q k N(x), BBS N (x)) c (N, Q k N(x), U {0,1} k), wobei (N, P, Q) GenN(1 k ), und x QR N und U {0,1} k {0, 1} k unabhängig gleichverteilt sind. Beweis. Sei ein beliebiger PPT-Algorithmus D gegeben. Wir müssen zeigen, daß Adv dist A,B,D vernachlässigbar ist, wobei A := (N, Q k N (x), BBS N(x)) k und B := (N, Q k N (x), U {0,1} k) k) ist. Hierzu konstruieren wir zunächst aus D einen Algorithmus D, der zwischen (Q N (x), lsb N (x)) und (Q N (x), U {0,1} ) unterscheidet und dazu wie folgt verfährt: Algorithmus D (1 k, N, y, z) (mit y QR N und z {0, 1}) i k u {0, 1} i 1 v := (lsb N (y), lsb N (Q N (y)),..., lsb N (Q k i 1 N (y))) {0, 1} k i w := (u, z, v) {0, 1} k b D(1 k, N, Q k i N (y), w) return b Zur Analyse von D definieren wir für i {0,..., k} und x QR N die Zufallsvariable H i,x := (U {0,1} i, lsb N (Q i N(x)),..., lsb(q k 1 N (x))) {0, 1}k, wobei U {0,1} i {0, 1} i gleichverteilt ist. Offenbar ist H 0,x = BBS N (x), und H k,x = U {0,1} k gleichverteilter k-bit-string. Weiter gilt in der Ausführung von D für jedes j k: Dist w i = j, z = lsb N (x) = Dist H j 1,x Dist w i = j, z = U {0,1} = Dist Hj,x ist ein (9) 19
und somit Adv dist A,B,D(k) = Pr D(1 k, N, Q k N(x), BBS N (x)) = 1 = Pr D(1 k, N, Q k N(x), H 0,x ) = 1 (9) = k j=1 = k j=1 Pr Pr D(1 k, N, Q k N(x), U {0,1} k) = 1 D(1 k, N, Q k N(x), H k,x ) = 1 ( ) Pr D(1 k, N, Q k N(x), H j 1,x ) = 1 Pr D(1 k, N, Q k N(x), H j,x ) = 1 ( ) Pr D (1 k, N, Q N (x), lsb N (x)) = 1 i = j Pr D (1 k, N, Q N (x), U {0,1} ) = 1 i = j ( k Pr D (1 k, N, Q N (x), lsb N (x)) = 1 i = j Pr D (1 k, N, Q N (x), U {0,1} ) = 1 i = j ) = Pr i = j j=1 ( ) = k Pr D (1 k, N, Q N (x), lsb N (x)) = 1 Pr D (1 k, N, Q N (x), U {0,1} ) = 1 = k Adv dist A,B,D (k) für A := (N, Q k N (x), lsb N(x)) und B := (N, Q k N (x), U {0,1}). Nach Annahme ist Adv dist A,B,D (k) vernachlässigbar, weshalb auch Adv dist A,B,D (k) vernachlässigbar ist. Das Schema von Blum und Goldwasser. Wir sind nun endlich in der Lage, das PKE-Schema PKE BG := (Gen BG, Enc BG, Dec BG ) von Blum und Goldwasser mit Nachrichtenraum M k = {0, 1} k vorzustellen und als IND-CPA-sicher zu beweisen: Algorithmus Gen BG (1 k ) (N, P, Q) GenN(1 k ) (pk, sk) := (N, (P, Q)) return (pk, sk) Algorithmus Enc BG (pk, M) parse pk =: N x QR N y := Q k N (x) C := (y, BBS N (x) M) return C Algorithmus Dec BG (sk, C) parse sk =: (P, Q) parse C =: (y, ρ) M := BBS N (Q k N (y)) ρ return M Dieses Schema genügt Theorem 6.1, ist also unter der Faktorisierungsannahme IND-CPA-sicher: Beweis von Theorem 6.1. Nehmen wir einen beliebigen PPT-Angreifer A auf die IND-CPA-Sicherheit von PKE BG an. Wir konstruieren aus A einen PPT-Unterscheider D mit Adv dist A,B,D(k) = Adv ind-cpa PKE BG,A(k) (10) für A := (N, Q k N (x), BBS N(x)) und B := (N, Q k N (x), U {0,1} k). Unter der Faktorisierungsannahme ist nach Lemma 6.7, Theorem 6.13 und Lemma 6.14 Adv dist A,B,D vernachlässigbar. Es reicht also, ein D anzugeben, das (10) erfüllt. Sei D wie folgt definiert: 20
Algorithmus D(1 k, N, y, z) (mit y QR N und z {0, 1} k ) pk := N (M 0, M 1, state) A(1 k, find, pk) b {0, 1} C := (y, z M b ) b A(1 k, attack, state, C ) if b = b then return 1 else return 0 Man beachte, daß y = Q k N (x) für unbekanntes x gilt. Unterscheiden wir nun die Fälle z = BBS N(x) und z = U {0,1} k. Im Fall z = BBS N (x) ist C = (y, z M b ) = (Q k N (x), BBS N(x) M b ) eine ehrliche Verschlüsselung von M b, und D führt das IND-CPA-Experiment Exp ind-cpa PKE BG,A mit A aus. Deshalb ist Pr D(1 k, N, Q k N(x), BBS N (x)) = 1 = Pr Exp ind-cpa PKE BG,A (k) = 1 = Adv ind-cpa PKE BG,A (k) + 1 2. Gilt andererseits z = U {0,1} k, so ist auch das Chiffratelement z M b (aus Sicht von A) unabhängig gleichverteilt und insbesondere unabhängig von b. Da b selbst gleichverteilt ist, folgt Pr D(1 k, N, Q k N(x), U {0,1} k) = 1 = 1 2. Insgesamt können wir also (10) und damit die IND-CPA-Sicherheit von PKE BG folgern. 7 Aktive Sicherheit Motivation: sichere Auktionen. Nehmen wir eine Auktion mit Auktionator A und der Einfachheit halber nur zwei Bietern B 1 und B 2 an. Es soll die Unabhängigkeit der Gebote sichergestellt werden, wobei aber keine sicheren Kanäle zwischen A und B 1 bzw. A und B 2 angenommen werden sollen. Es liegt nahe, in dieser Situation auf Public-Key-Verschlüsselungstechniken zurückzugreifen. Etwa könnte man B 1 und B 2 ihre jeweiligen Gebote unter dem öffentlichen Schlüssel pk A von A verschlüsselt an A senden lassen. Nehmen wir dabei an, daß das verwendete PKE-Schema PKE = (Gen, Enc, Dec) IND-CPA-sicher sei. Man könnte nun hoffen, daß die IND-CPA-Sicherheit von PKE sicherstellt, daß das Gebot M 2 von B 2 unabhängig vom Gebot M 1 von B 1 abgegeben wird, selbst wenn B 2 vor Abgabe des Gebots C 1 = Enc(pk A, M 1 ) erfährt. Immerhin sichert die IND-CPA-Sicherheit von PKE zu, daß B 2 durch C 1 keine verwertbare (bzw. effizient nutzbare) Information über M 1 erhält. Allerdings ist hier Vorsicht geboten: Nehmen wir beispielsweise an, daß das (unter der DDH- Annahme) IND-CPA-sichere ElGamal-Schema PKE = PKE ElG verwendet wird. Nehmen wir weiter an, daß eine Gruppe G Z p für geeignetes p verwendet wird, und daß Gebote M i G auf naheliegende Weise als Ganzzahlen M i {0,..., p 1} interpretiert werden. Man beachte nun, daß ElGamal homomorph in dem Sinne Enc(pk, M; r) Enc(pk, M ; r ) = (g r, X r M) (g r, X r M ) = (g r+r, X r+r MM ) = Enc(pk, MM ; r + r ) 21
ist, so daß insbesondere Enc(pk A, M 1 ; r) Enc(pk A, 2; r ) = Enc(pk A, 2M 1, r + r ) gilt. 1 Anders gesagt: Ein unehrlicher Bieter B 2 kann zunächst das verschlüsselte Gebot C 1 = Enc(pk A, M 1 ) abwarten, dieses mit einer 2-Verschlüsselung multiplizieren und das erhaltene Chiffrat als eigenes verschlüsseltes Gebot abgeben. Auf diese Weise kann B 2 den Bieter B 1 sicher überbieten (vorausgesetzt, daß M 1 < p/2 ist), ohne allerdings zu wissen, worauf er geboten hat. Man beachte, daß B 2 in diesem Fall einen aktiven Angriff durchführt, also nicht nur abhört, sondern anschließend aktiv in das Geschehen eingreift. Offenbar reicht also IND-CPA-Sicherheit nicht aus, um (zumindest intuitiv) Sicherheit gegen aktive Angreifer zu garantieren. Non-Malleability. Im Hinblick auf das gerade vorgestellte Auktionsbeispiel sollte ein intuitiv sicheres PKE-Schema die Eigenschaft haben, daß sich aus gegebenen Chiffraten keine neuen Chiffrate von verwandten Klartexten konstruieren lassen. Diese spezielle Eigenschaft heißt Non- Malleability und wurde zuerst 1991 formalisiert. Wir werden hier Non-Malleability nicht weiter thematisieren, da es nur einen Zwischenschritt auf der Suche nach dem universellen Sicherheitsbegriff für PKE-Schemata darstellt. Gründe für IND-CCA-Sicherheit. Stattdessen werden wir IND-CCA-Sicherheit vorstellen, eine Variante von IND-CPA-Sicherheit. Ohne zunächst näher darauf einzugehen, wie IND-CCA- Sicherheit überhaupt definiert ist, sollen hier Gründe vorgestellt werden, warum wir uns im folgenden auf IND-CCA-Sicherheit konzentrieren: Realisiert sichere Kanäle. Die Untersuchung komplexer Protokolle gestaltet sich einfacher und modularer, wenn man zunächst sichere Kanäle zwischen einigen oder allen Parteien annimmt, und diese erst später durch PKE-Verschlüsselung implementiert. In diesem Zusammenhang stellt sich heraus, daß IND-CCA-Sicherheit genau sichere Kanäle gegen aktive Angreifer realisiert. (Damit ist gemeint: Ein IND-CCA-sicheres PKE-Schema kann anstelle von sicheren Kanälen in jedem größeren Protokoll genutzt werden, ohne die Sicherheitseigenschaften des größeren Protokolls zu beeinflussen. Umgekehrt ist jedes PKE-Schema mit dieser Eigenschaft schon IND-CCA-sicher.) Impliziert zahlreiche andere Begriffe. Es wurden viele zu IND-CCA-Sicherheit äquivalente oder zumindest von IND-CCA-Sicherheit implizierte natürliche PKE-Sicherheitsbegriffe gefunden. Hierzu gehört beispielsweise Non-Malleability. Diese Äquivalenzen sollen später noch einmal kurz beleuchtet werden, wenn wir IND-CCA-Sicherheit definiert haben. Kann unter Standardannahmen erfüllt werden. Es existieren effiziente PKE-Schemata, die unter der Faktorisierungsannahme, der DDH- oder der CDH-Annahme IND-CCA-sicher sind. In diesem Sinne fordert IND-CCA-Sicherheit nicht zu viel. Derartige Schemata sollen im Verlauf der Vorlesung noch vorgestellt werden. Standard in der Literatur. Aus den oben genannten Gründen hat sich mittlerweile IND-CCA- Sicherheit als Standardbegriff für PKE-Schemata herauskristallisiert. Definition von IND-CCA-Sicherheit. IND-CCA-Sicherheit steht für indistinguishability under chosen-ciphertext attacks und stellt eine Verschärfung von IND-CPA-Sicherheit dar. Tatsächlich 1 Der Einfachheit halber nehmen wir 2 G und M 1 < p/2 an. 22
unterscheiden sich die Sicherheitsexperimente von IND-CPA- und IND-CCA-Sicherheit nur in den Möglichkeiten des Angreifers. Genauer steht einem IND-CCA-Angreifer ein Entschlüsselungsorakel Dec(sk, ) zur Verfügung, welches beliebige Eingaben C C entschlüsselt, wobei C das von A im Experiment erhaltene Chiffrat bezeichnet. (Es ist einfach einzusehen, daß kein Schema sicher wäre, wenn A auch die Entschlüsselung von C erfragen dürfte.) Wir geben im folgenden die vollständige IND-CCA-Definition wieder, wobei die Unterschiede zur IND-CPA-Definition (Definition 4.3) unterstrichen sind. Definition 7.1 (IND-CCA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema. Sei A ein PPT-Algorithmus. Sei Adv ind-cca PKE,A (k) := Pr ExpPKE,A ind-cca (k) = 1 1 2, wobei das Experiment Exp ind-cca PKE,A wie folgt definiert ist: Experiment Exp ind-cca PKE,A (k) (pk, sk) Gen(1 k ) (M 0, M 1, state) A Dec(sk, ) (1 k, find, pk) b {0, 1} C Enc(pk, M b ) b A Dec(sk, ) (1 k, attack, state, C ) if b = b then return 1 else return 0 A heißt gültig, wenn es in Exp ind-cca PKE,A immer M 0 = M 1 garantiert und sein Dec-Orakel nie mit Eingabe C aufruft. PKE ist IND-CCA-sicher (für indistinguishable under chosen-ciphertext attacks ), falls für jedes gültige A die Funktion AdvPKE,A ind-cca (k) vernachlässigbar ist. Offensichtlich impliziert IND-CCA-Sicherheit schon IND-CPA-Sicherheit. (Jeder gültige IND- CPA-Angreifer kann als gültiger IND-CCA-Angreifer interpretiert werden, der seinen Orakelzugriff nicht nutzt.) Lemma 7.2 (IND-CCA IND-CPA). Jedes PKE-Schema PKE, welches IND-CCA-sicher ist, ist auch IND-CPA-sicher. Die Umkehrung gilt allerdings nicht, wie das folgende Beispiel zeigt. Beispiel: IND-CCA-Unsicherheit von ElGamal. Man rufe sich das PKE-Schema PKE ElG = (Gen ElG, Enc ElG, Dec ElG ) in einer Gruppe G ins Gedächtnis. Wie schon im Auktionsbeispiel besprochen gilt Enc(pk, M; r) Enc(pk, 1; r ) = Enc(pk, M; r + r ). Ist r 0 so gilt insbesondere Enc(pk, M; r) Enc(pk, M; r + r ). Ein IND-CCA-Angreifer A auf PKE ElG kann also sein Dec-Orakel mit C := C Enc(pk, 1; r ) für beliebiges r 0 aufrufen und so die verschlüsselte Nachricht M b erhalten. Wählt A anfangs zwei beliebige verschiedene Nachrichten M 0 M 1, so können deren Chiffrate mittels Dec demnach einfach unterschieden werden. 23
Äquivalente Sicherheitsbegriffe. Für einen universellen Sicherheitsbegriff mag IND-CCA- Sicherheit etwas zu simpel anmuten. Man könnte etwa vermuten, daß einem Angreifer in realen Szenarien mehr als ein Challenge -Chiffrat C zur Verfügung steht. Zudem könnten in einem komplexen Kontext mehrere öffentliche Schlüssel benutzt werden. Man stelle sich nun einen Sicherheitsbegriff vor, in dem einem Angreifer eine beliebige (polynomielle) Anzahl p pk (k) bzw. p C (k) von öffentlichen Schlüsseln pk i und Challenge-Chiffraten Ci,j angeboten werden. (Jedes Chiffrat C i,j enthält dabei einen von zwei jeweils neu vom Angreifer gewählten Klartexten M i,j,0 bzw. M i,j,1.) Der Angreifer A wählt schließlich einen öffentlichen Schlüssel pk i und einen Chiffrat-Index j aus und rät, ob Ci,j = Enc(pk i, M i,j,0 ) oder Ci,j = Enc(pk i, M i,j,1 ) gilt. Das Schema sei Multi-IND-CCA-sicher, wenn jeder PPT-Angreifer A hierbei einen Erfolgswahrscheinlichkeit hat, die vernachlässigbar nahe an 1/2 liegt. Überraschenderweise ist Multi-IND-CCA-Sicherheit äquivalent zu IND-CCA-Sicherheit. Offenbar impliziert Multi-IND-CCA-Sicherheit schon IND-CCA-Sicherheit. Der Beweis der Umkehrung soll hier schon aufgrund einer nicht gegebenen formalen Definition von Multi-IND-CCA-Sicherheit nur skizziert werden. Für die Umkehrung muß ein Multi-IND-CCA-Angreifer A in einen IND- CCA-Angreifer B mit vergleichbarer Laufzeit und Erfolgswahrscheinlichkeit überführt werden. Hierzu rät B den Index (i, j ) des von A schließlich angegriffenen Chiffrats gleichverteilt und übernimmt den öffentlichen Schlüssel pk i := pk und das Chiffrat Ci,j := C des eigenen IND-CCA-Experiments, und wählt alle verbleibenden öffentlichen Schlüssel pk i (mit i i ) und Chiffrate Ci,j (mit (i, j) (i, j )) selbst. War (i, j ) richtig geraten, so kann Bs eigenes Experiment in As Multi-IND-CCA-Szenario eingebettet werden, und A löst genau Bs eigene Aufgabe. War (i, j ) nicht die von A schließlich gewählte Chiffrat-Instanz, so muß B abbrechen sagen wir, daß B dann 0 ausgibt. Informell gesprochen ist B also genau dann erfolgreich, wenn (i, j ) richtig geraten wurde (was mit Wahrscheinlichkeit 1/(p pk (k)p C (k)) geschieht) und A erfolgreich war. So kann eingesehen werden, daß für As Vorteil im Multi-IND-CCA-Experiment gilt, daß Adv multi-ind-cca PKE,A Adv ind-cca PKE,B Advmulti-ind-cca PKE,A (k) (k) = p pk (k)p C (k) ist; insbesondere ist Adv ind-cca PKE,B genau dann vernachlässigbar, wenn Advmulti-ind-cca PKE,A vernachlässigbar ist. Die IND-CCA-Sicherheit eines PKE-Schemas zieht deshalb Multi-IND-CCA-Sicherheit nach sich. Nur erwähnt sei hier schließlich, daß IND-CCA-Sicherheit auch Non-Malleability (im oben beschriebenen Sinne) impliziert. Die Schwierigkeit beim Beweis von IND-CCA-Sicherheit. Nehmen wir an, wir wollen die Sicherheit eines gegebenen PKE-Schemas unter der Annahme beweisen, daß ein Problem P schwer ist. In den vorangegangenen Beispiel haben wir dazu einen beliebigen IND-CPA-Angreifer A umgewandelt in einen P-Problemlöser B mit vergleichbarem Angriffs- bzw. Lösungserfolg. Aus der Annahme, daß P schwer zu lösen ist, folgt, daß B nur vernachlässigbaren Erfolg im Lösen von P hat. Hieraus wiederum folgt, daß A auch nur vernachlässigbaren Erfolg im Brechen des PKE-Schemas hat. 24
Vereinfacht gesagt wird hierbei B aus A konstruiert, indem B bei Eingabe einer Probleminstanz P von P das jeweilige PKE-Sicherheitsexperiment für A simuliert. B muß also aus der eigenen Aufgabe P eine passende Aufgabe für A konstruieren. Umgekehrt muß anschließend aus einer Lösung (bzw. eines erfolgreichen Angriffs) von A eine Lösung von P konstruiert werden. B kann also als zwischen Probleminstanzen und -lösungen im Sinne von P und dem Sicherheitsexperiment des PKE-Schemas gesehen werden. Übersetzer Ein sehr einfaches Beispiel ist hier die OW-CPA-Sicherheit des ElGamal-Kryptosystems unter der CDH-Annahme. In diesem Fall ist eine Aufgabe P der Form (g, g x, g y ), und die gültige Lösung ist g xy. Um aus einem ElGamal-Angreifer A eine Lösung zu gewinnen kann ein Problemlöser B die Aufgabe (g, g x, g y ) wie im Beweis von Theorem 5.5 in einen öffentlichen Schlüssel pk := (g, g x ) und ein Chiffrat C := (g y, Z) des ElGamal-Schemas umwandeln. Durch diese Übersetzung kann aus einem erfolgreichen OW-CPA-Angreifer A, der einen Klartext M = Z/g xy findet, die Problemlösung g xy gewonnen werden. Die zugehörige Übersetzung etwa zwischen dem Faktorisierungsproblem und der IND-CPA- Sicherheit des Blum-Goldwasser-Schemas ist zwar ungleich komplizierter, läßt sich jedoch modular aus den Beweisen von Lemma 6.7, Theorem 6.13, Lemma 6.14 und Theorem 6.1 gewinnen. In allen bisher behandelten Fällen ist diese Übersetzung dergestalt, daß eine Instanz P des Problems P in einen öffentlichen Schlüssel pk und ein Chiffrat C übersetzt wird. Den zugehörigen geheimen Schlüssel (etwa x im Falle von ElGamal, oder die Faktorisierung von N bei dem Blum-Goldwasser- Schema) kennt B dabei nicht. Man mache sich klar, daß dies auch widersinnig wäre: würde B den geheimen Schlüssel sk kennen, so bräuchte B auch A nicht, sondern könnte selbst die Sicherheit des simulierten PKE-Schemas brechen. B kann nur dann von A nützliche Hilfe beim Lösen von P erwarten, wenn B selbst die konstruierte PKE-Instanz nicht brechen kann. Wollen wir nun die IND-CCA-Sicherheit eines gegebenen Schemas unter einer geeigneten Annahme P beweisen, so bietet sich wieder an, mittels eines wie oben beschriebenen B gegebene P-Instanzen P in eine Instanz des IND-CCA-Sicherheitsexperiments zu übersetzen. Hierbei stellt sich folgendes Problem: kennt B den zugehörigen geheimen Schlüssel sk, so kann B nicht hoffen, aus einem erfolgreichen Angriff durch A nützliche Informationen im Hinblick auf P zu gewinnen. (B könnte ja mittels sk selbst einen erfolgreichen Angriff konstruieren.) Kennt B andererseits sk nicht, so ist vollkommen unklar, wie B das Entschlüsselungsorakel Dec(sk, ) für A nachbilden soll. (Man rufe sich in Erinnerung, daß A bei Ausführung erwartet, Zugriff auf ein Orakel Dec(sk, ) zu haben, welches beliebige Chiffrate außer dem Ziel -Chiffrat C entschlüsselt.) Diese Schwierigkeit in der Konstruktion von B (bzw. der durch B durchgeführten Simulation des IND-CCA-Experiments) ist der Hauptgrund dafür, daß das erste praktikable und vollständig als IND-CCA-sicher bewiesene PKE-Schema erst 1998, mehr als 15 Jahre nach Vorstellung des ersten IND-CPA-sicheren Schemas, vorgestellt wurde. Im Verlauf der Vorlesung sollen verschiedene Strategien vorgestellt werden, das beschriebene Dilemma zu umgehen. 8 Das Schema von Naor und Yung Zunächst soll eine generische Methode vorgestellt werden, IND-CCA-Sicherheit zu erreichen, und insbesondere das soeben beschriebene Dilemma der Simulation des Entschlüsselungsorakels zu umgehen. Obwohl dieses Schema nicht praktikabel (also recht ineffizient) ist, stellte es doch eine 25
maßgebliche Inspiration für spätere, effizientere Schemata dar. Deshalb soll hier zumindest die Grundidee der Naor-Yung-Konstruktion erläutert werden. Nichtinteraktive Beweissysteme. Das zu beschreibende Schema benutzt ein technisches Hilfsmittel, das wir aufgrund seiner Komplexität hier nicht formal behandeln wollen. Es handelt sich um Simulation-Sound Non-Interactive Zero-Knowledge Proofs (SS-NIZKs) for NP eine Variante von nichtinteraktiven Zero-Knowledge-Beweisen für allgemeine NP-Sprachen. NIZKs für NP sind mächtige Werkzeuge, die es erlauben intuitiv gesprochen Beweise für die Korrektheit von beliebigen NP-Instanzen zu zeigen (etwa dieser Graph ist drei-färbbar ), ohne dabei jedoch Information über den zugehörigen Zeugen (etwa die konkrete Drei-Färbung) zu veröffentlichen. Die Definition von SS-NIZKs soll hier nur skizziert werden: Definition 8.1 ((SS-)NIZK, Skizze). Sei L NP eine Sprache mit PPT-Zeugenrelation R. (Das heißt: x L w {0, 1} p( x ) : R(x, w) = 1 für ein geeignetes, festes Polynom p.) Ein Simulation-Sound Non-Interactive Zero-Knowledge Proof System (SS-NIZK) für L besteht aus drei Algorithmen: Setup. Setup(1 k ) generiert einen Common Reference String CRS. Beweis. Prove(CRS, x, w) gibt einen Beweis π aus. Verifikation. Verify(CRS, x, π) gibt 0 oder 1 aus. Wir fordern Vollständigkeit. Prove generiert im Sinne von Verify korrekte Beweise. Zero-Knowledge. Es existiert ein PPT-Algorithmus Sim, der bei Eingabe x L einen Common Reference String CRS und einen Beweis π ausgibt. Sowohl CRS als auch π sind dabei nicht von echten, mittels Prove generierten Beweisen zu unterscheiden. (Simulation-)Soundness. Es ist schwierig, einen im Sinne von Verify korrekten Beweis π für eine falsche Aussage x L zu finden. Dies gilt selbst dann, wenn CRS von Sim generiert wurde, und schon ein von Sim generierter Beweis für ein vom Angreifer gewähltes x vorliegt. Es existieren Konstruktionen von SS-NIZKs für NP-vollständige Sprachen (und damit für beliebige NP-Sprachen). Diese sind allerdings überaus ineffizient, allein schon wegen der üblicherweise nötigen (Karp-)Reduktion einer gegebenen Sprache L NP zu der nativen NP-vollständigen Sprache des SS-NIZKs. Die Konstruktion. Als Zutat benötigen wir ein IND-CPA-sicheres PKE-Schema PKE CPA = (Gen CPA, Enc CPA, Dec CPA ). Weiter definieren wir eine Sprache L NY wie folgt: L NY := {(pk 1, pk 2, C 1, C 2 ) M, R 1, R 2 : C 1 = Enc(pk 1, M; R 1 ) C 2 = Enc(pk 2, M; R 2 )} Elemente von L NY beschreiben also genau Paare von Chiffraten derselben Nachricht. Zugehörige Zeugen können dabei einfach der Form (M, R 1, R 2 ) sein. Für das Naor-Yung-Schema benötigen wir ein SS-NIZK für L NY. Nach diesen Vorbereitungen kann das PKE-Schema PKE NY = (Gen NY, Enc NY, Dec NY ) von Naor und Yung wie folgt beschrieben werden: 26
Algorithmus Gen NY (1 k ) (pk 1, sk 1 ) Gen CPA (1 k ) (pk 2, sk 2 ) Gen CPA (1 k ) CRS Setup(1 k ) pk := (pk 1, pk 2, CRS) sk := (pk, sk 1 ) return (pk, sk) Algorithmus Enc NY (pk, M) parse pk =: (pk 1, pk 2, CRS) C 1 Enc CPA (pk 1, M; R 1 ) C 2 Enc CPA (pk 2, M; R 2 ) x := (pk 1, pk 2, C 1, C 2 ) w := (M, R 1, R 2 ) π Prove(CRS, x, w) C := (C 1, C 2, π) return C Algorithmus Dec NY (sk, C) parse sk =: (pk, sk 1 ) parse pk =: (pk 1, pk 2, CRS) parse C =: (C 1, C 2, π) x := (pk 1, pk 2, C 1, C 2 ) M := Dec CPA (sk 1, C 1 ) if Verify(CRS, x, π) = 1 return M else return Intuitiv handelt es sich hierbei also einfach um eine Doppelverschlüsselung : Die Nachricht M wird zwei Mal, unter verschiedenen öffentlichen Schlüsseln pk 1 und pk 2, verschlüsselt. Weiter wird das Chiffrat mit einem Beweis versehen, daß wirklich zweimal dieselbe Nachricht verschlüsselt wurde. Der Zweck dieses auf den ersten Blick unnütz erscheinenden Vorgehens wird beim Sicherheitsbeweis deutlich, den wir hier nur skizzieren wollen. Theorem 8.2 (Sicherheit von PKE NY ). Unter der Annahme, daß das verwendete Beweissystem ein SS-NIZK ist, und daß das verwendete PKE-Schema PKE CPA IND-CPA-sicher ist, ist PKE NY IND-CCA-sicher. (Für Interessierte: Ein vollständiger Beweis einer abgeschwächten IND-CCA-Sicherheit IND- CCA1-Sicherheit, siehe Definition 9.3 findet sich in 6. Erst später wurde auch die volle IND-CCA- Sicherheit des Schemas gezeigt, sofern der verwendete NIZK die Simulation-Soundness-Eigenschaft hat 7.) Beweis. (Skizze.) Sei ein beliebiger IND-CCA-Angreifer A auf PKE NY gegeben. In Abkehr von unseren bisherigen Sicherheitsbeweisen verfahren wir dabei in einer Folge von Spielen. Wir beginnen dabei damit, das IND-CCA-Experiment ExpPKE ind-cca NY,A mit A als Spiel 1 zu definieren. Die Ausgabe out 1 von Spiel 1 ist dabei die Ausgabe von Exp ind-cca PKE NY,A. Nach Definition gilt also Pr out 1 = 1 = Pr Exp ind-cca PKE NY,A (k) = 1. Ziel ist es, zu zeigen, daß Pr out 1 = 1 nahe an 1/2 liegt. Unser Plan dazu sieht wie folgt aus: Wir werden schrittweise eine Reihe von Veränderungen an Spiel 1 vornehmen, die zu Spiel 2, Spiel 3, usw. führen. Bei jeder dieser Veränderungen werden wir zeigen, daß diese Veränderung die Ausgabewahrscheinlichkeit Pr out i = 1 nur unwesentlich ändert. Schließlich werden wir bei einem Spiel n ankommen, bei dem Pr out n = 1 = 1/2 nach Konstruktion einfach einzusehen ist. Dies impliziert, daß Pr out 1 = 1 1/2 vernachlässigbar ist, da jeder unserer Schritte out i nur in vernachlässigbarer Weise ändert. Wir bezeichnen mit C = (C 1, C 2, π ) das Zielchiffrat im IND-CCA-Experiment, also das vom Experiment konstruierte Chiffrat von M b. Der Einfachheit halber nehmen wir an, daß M 0 = M 1 = k ist. (Ist dem nicht so, so kann der Beweis entsprechend modifiziert werden.) In Spiel 2 ersetzen wir CRS im öffentlichen Schlüssel und den Beweis π in C durch die Ausgabe eines Simulators Sim (der nach Annahme über den SS-NIZK existiert). Effekt dieser Veränderung ist, daß zum Erstellen von π kein Zeuge (M b, R 1, R 2 ) mehr benötigt wird. Insbesondere wird R 2 27
ausschließlich zum Erstellen von C2 verwendet. Da nach Annahme Sim ununterscheidbare CRS- Werte und Beweise erzeugt, ist Pr out 2 = 1 Pr out 1 = 1 vernachlässigbar. In Spiel 3 ersetzen wir das zweite Teilchiffrat C 2 von C durch ein Chiffrat von 0 k. Man beachte, daß weder R 2 noch sk 2 in Spiel 2 oder Spiel 3 benutzt werden. (Entschlüsseln von PKE NY -Chiffraten geschieht nur mittels sk 1.) Deshalb kann aus jedem Unterscheider zwischen Spiel 2 und Spiel 3 ein IND-CPA-Angreifer B auf PKE CPA konstruiert werden, und es folgt, daß Pr out 3 = 1 Pr out 2 = 1 vernachlässigbar ist. Interessant an diesem Schritt ist, daß in Spiel 3 das Chiffrat inkonsistent (im Sinne x = (pk 1, pk 2, C 1, C 2 ) L NY) ist. Der zugehörige Konsistenzbeweis π wird dabei wie in Spiel 2 von Sim ohne einen Zeugen w generiert. Aufgrund der Ununterscheidbarkeit von Spiel 2 und Spiel 3 bedeutet dies insbesondere, daß der Simulator Sim in der Lage ist, gültige Beweise π für falsche Aussagen x L NY zu erzeugen. Dies widerspricht nicht der (Simulation-)Soundness des SS-NIZK, da Sim geeignete Common Reference Strings CRS generieren darf. (Die Soundness des SS-NIZK gilt nur gegen Angreifer, die einen ehrlich mittels Setup generierten CRS vorgesetzt bekommen.) In Spiel 4 verwenden wir sk 2 statt sk 1 in Dec NY. Es wird also nur der Beweis π des eingegebenen Chiffrats überprüft und dann (gegebenenfalls) C 2 entschlüsselt. Um einen Unterschied zwischen Spiel 3 und Spiel 4 zu entdecken, müßte ein Unterscheider ein Chiffrat C mit gültigem Beweis π, aber Chiffraten C 1, C 2 von verschiedenen Klartexten erzeugen und entschlüsseln lassen. Genau das würde aber der Simulation-Soundness des verwendeten Beweissystems widersprechen, und wir können folgern, daß Pr out 4 = 1 Pr out 3 = 1 vernachlässigbar ist. Man beachte, daß in Spiel 4 nur sk 2, nicht aber sk 1 verwendet wird. In Spiel 5 ersetzen wir das erste Teilchiffrat C 1 von C durch ein Chiffrat von 0 k. Analog zu Spiel 3 ergibt sich, daß die Vernachlässigbarkeit von Pr out 5 = 1 Pr out 4 = 1 aus der IND-CPA-Sicherheit von PKE CPA folgt. Nun sind wir am Ziel: in Spiel 5 wurden beide Teilchiffrate von C durch Chiffrate von 0 k ersetzt; damit hängt C und damit die gesamte Sicht von A nicht mehr von dem vom IND-CCA- Experiment gewählten Bit b ab. Anders gesagt: A erhält keine Information darüber, ob M 0 oder M 1 verschlüsselt werden sollte. Gehen wir ohne Beschränkung der Allgemeinheit davon aus, daß A immer ein Bit ausgibt, so folgt damit Zusammenfügen der Teilschritte ergibt, daß Pr out 5 = 1 = 1/2. Adv ind-cca PKE NY,A (k) = Pr Exp ind-cca PKE NY,A (k) = 1 1/2 = Pr out 1 = 1 Pr out 5 = 1 vernachlässigbar ist, woraus (weil A beliebig gewählt war) die IND-CCA-Sicherheit von PKE NY folgt. 28
Interpretation. Zurückkehrend zum vorigen Abschnitt könnte man sich nun fragen, wie genau eigentlich das beschriebene Dilemma ohne sk kein Dec(sk, )-Orakel, mit sk Angriff nutzlos im Falle des Naor-Yung-Schemas aufgelöst wird. Nennen wir dazu ein PKE NY -Chiffrat C = (C 1, C 2, π) konsistent, wenn C 1 und C 2 tatsächlich Chiffrate derselben Nachricht M sind und π gültig im Sinne von Verify ist. Dann besitzen wir im Beweis von Theorem 8.2 (also in jedem Spiel) einen geheimen Schlüssel, mit dem konsistente Chiffrate entschlüsselt werden können. In den Spielen Spiel 1 bis Spiel 3 ist dies sk 1, und in den Spielen Spiel 4 und Spiel 5 ist dies sk 2. Allerdings ist in den Spielen Spiel 3 und Spiel 4 das Zielchiffrat C selbst inkonsistent. (Denn hier ist C 1 eine Chiffrat von M b und C 2 ein Chiffrat von 0 k.) Kern des Sicherheitsarguments ist also, dem Angreifer A ein inkonsistentes Chiffrat vorzusetzen, bei dem der geheime Schlüssel des Spiels zu diesem Zeitpunkt nicht funktionieren würde. Auf diese Weise können wir auf der einen Seite A dazu benutzen, ein zugrundeliegendes Problem zu lösen (hier: die IND-CPA-Sicherheit von PKE CPA zu brechen), ohne jedoch in der Simulation selbst das Problem lösen zu können. Beispielsweise kann jeder Unterscheider zwischen Spiel 2 und Spiel 3 dazu benutzt werden, um die zweite PKE CPA -Instanz (mit öffentlichem Schlüssel pk 2 ) zu brechen. (Man beachte, daß in diesen Spielen das Experiment selbst nicht in der Lage ist, pk 2 -Chiffrate zu entschlüsseln.) 9 Das Schema von Cramer und Shoup Motivation. Das Schema von Naor und Yung ist durch die Verwendung von generischen Zero- Knowledge-Beweisen recht ineffizient. Um diesem Hauptnachteil entgegenzuwirken soll nun ein PKE-Schema mit einem ähnlichen Grundkonzept vorgestellt werden, das jedoch eine sehr effiziente Art von Konsistenzbeweis verwendet. Um die Konsistenz von Chiffraten zu beweisen wurden von Cramer und Shoup Hash Proof Systems (HPSs) eingeführt. Hierbei handelt es sich strenggenommen um eine Variante von (SS- )NIZKs, bei denen der Verifier (also derjenige, der den Beweis überprüft) einen geheimen Schlüssel besitzt. (Man rufe sich in Erinnerung, daß im Falle des Naor-Yung-Schemas der Verifier letztlich der Empfänger war, der ohnehin über einen geheimen Schlüssel verfügt.) Subset-Membership-Probleme. Im folgenden betrachten wir eine Sprache L X mit endlichem X, wobei L und X vom Sicherheitsparameter k abhängen dürfen. Man fixiere weiter eine PPT-Zeugenrelation R für L, so daß wie üblich x L w {0, 1} p( x ) : R(x, w) = 1 gilt. Wir werden im folgenden implizit voraussetzen, daß es effizient möglich ist, gleichverteilt ein Element x L zusammen mit einem passenden Zeugen w mit R(x, w) = 1 zu ziehen. Außerdem soll es effizient möglich sein, gleichverteilt aus der Menge X \ L zu ziehen. Das Subset-Membership-Problem (SMP) L X bezeichnet das Problem, die Gleichverteilung auf L von der Gleichverteilung auf X \ L zu unterscheiden. Genauer: Definition 9.1 (Subset-Membership-Problem). Wir sagen, daß das Subset-Membership-Problem L X hart ist (geschrieben L c X \ L), falls für jeden PPT-Algorithmus D Pr D(1 k, x) = 1 x L Pr D(1 k, x) = 1 x X \ L vernachlässigbar ist. 29
Beispiel: die Diffie-Hellman-Sprache. Für ein einfaches und überaus ergiebiges SMP fixiere man eine Familie von zyklischen Gruppen G primer Ordnung q und wähle zufällig zwei Generatoren g, h Gens G. (Wir gehen davon aus, daß G und g, h öffentlich bekannt sind, also als zusätzliche Eingabe eines etwaigen SMP-Unterscheiders angesehen werden können.) Man setze L g,h := {(g r, h r ) r N}. Unter der DDH-Annahme ist das SMP L g,h G G (für zufällige g, h) hart: Die DDH-Annahme besagt (g, g x, g y, g xy ) c (g, g x, g y, g z ) Setzen wir h := g x, so ist (g, g x, g y, g xy ) = (g, h, G, H) mit (G, H) L g,h und (g, g x, g y, g z ) = (g, h, G, H) mit gleichverteiltem (G, H) G G. Weil die Gleichverteilung auf X = G G (sogar statistisch) ununterscheidbar von der Gleichverteilung auf X\L g,h ist, 2 existiert deshalb eine direkte Korrespondenz zwischen DDH- und SMP-Unterscheidern. Hash Proof Systems. Intuitiv ist ein Hash Proof System (für eine Sprache L X mit Zeugenrelation R) ein Beweissystem für L, d.h. für Aussagen der Form x L. Genauer: Definition 9.2 (Hash Proof System). Ein Hash Proof System HPS für L X und mit Schlüsselmenge K besteht aus den folgenden Algorithmen: Schlüsselgenerierung. HGen(1 k ) gibt einen öffentlichen Schlüssel pk HPS und einen geheimen Verifikationsschlüssel vk HPS aus. Öffentliche Evaluierung. PubEval(pk HPS, x, w) gibt einen eindeutigen Schlüssel K K aus. Geheime Evaluierung. PrivEval(vk HPS, x) gibt einen eindeutigen Schlüssel K K aus. Wir fordern für alle k N das folgende: Vollständigkeit. Für alle möglichen (pk HPS, vk HPS ) HGen(1 k ) und alle (x, w) {0, 1} k {0, 1} p(k) mit R(x, w) = 1 gilt immer: PubEval(pk HPS, x, w) = PrivEval(vk HPS, x). Special Soundness. Für alle pk HPS im Bild von HGen(1 k ), alle x L und alle K K gilt: Pr PrivEval(vk HPS, x) = K pk HPS = 1 K, wobei hier die Wahrscheinlichkeit über alle vk HPS mit (pk HPS, vk HPS ) HGen(1 k ) gemeint ist. (Es wird also auf pk HPS, nicht aber auf vk HPS konditioniert.) Die Namensgebung Hash Proof System ist wie folgt zu erklären. Es handelt sich zunächst bei einem Hash Proof System um ein Beweissystem für L, da ein Schlüssel K als Beweis für eine Aussage x L interpretiert werden kann. Mit dem öffentlichen Schlüssel pk HPS ist nämlich aus einem Zeugen w für x L leicht ein passender Schlüssel K = PubEval(pk HPS, x, w) berechenbar. Dieser Schlüssel kann vom Beweisempfänger mittels K? = PrivEval(vk HPS, x) auf Gültigkeit überprüft werden. Andererseits läßt sich für eine falsche Aussage x L nicht erraten, welches der einzige gültige Schlüssel K = PrivEval(vk HPS, x) ist, der den Empfänger von der Korrektheit der Aussage überzeugen würde. 2 Genauer: Es ist leicht einzusehen, daß der statistische Abstand zwischen den Zufallsvariablen Gleichverteilung auf G G und Gleichverteilung auf X \ L g,h 1/q ist. Andererseits muß 1/q schon für die Gültigkeit der DDH- Annahme vernachlässigbar (als Funktion im Sicherheitsparameter) sein. 30
Beispiel: ein HPS für die Diffie-Hellman-Sprache. Sei G mit g, h Gens G und L g,h G G wie oben definiert. Man betrachte die folgenden Algorithmen: Schlüsselgenerierung. HGen(1 k ) wählt a, b q und gibt pk HPS := u := g a h b und vk HPS = (a, b) aus. Öffentliche Evaluierung. PubEval(pk HPS, (g r, h r ), r) gibt K := u r aus. Geheime Evaluierung. PrivEval(vk HPS, (G, H)) gibt K := G a H b aus. Die Menge der Schlüssel ist hierbei K = G. Vollständigkeit gilt wegen PubEval(pk HPS, (g r, h r ), r) = u r = (g a h b ) r = (g r ) a (h r ) b = PrivEval(vk HPS, (g r, h r )). Special Soundness andererseits folgt aus folgender Überlegung: für jedes gegebene pk HPS = u existieren q Paare (a, b) mit u = g a h b. (Für jedes a q existiert ein eindeutiges b mit u = g a h b.) Anders gesagt: ein gegebenes u legt nur a + ωb mod q (für h = g ω ) fest, nicht aber a und b. Sei nun (G, H) L g,h, also etwa (G, H) = (g rg, h r h) mit r g r h. Wir müssen zeigen, daß für jedes K K gilt: Pr (g rg ) a (h r h ) b = K a + ωb mod q = 1 q. (11) Nun gilt (g rg ) a (h r h ) b = g rga+ωr hb = g rg(a+ωb)+ω(r h r g)b = u rg ( h r h r g ) b Durch u und (G, H) = (g rg, h r h) liegen u rg und h r h r g fest. Überdies ist h r h r g Gens G, da r h r g ist und G prime Ordnung hat (also Gens G = G\{1} gilt). b ist aber für sich genommen immer noch gleichverteilt; deshalb ist selbst bei festen u und (G, H) der Schlüssel (g rg ) a (h r h) b gleichverteilt, und (11) folgt. Wir definieren zunächst eine Ab- Ein simples, fast IND-CCA-sicheres PKE-Schema. schwächung von IND-CCA-Sicherheit: Definition 9.3 (IND-CCA1). Ein PKE-Schema ist IND-CCA1-sicher, wenn es IND-CCA-sicher ist, sofern in der Sicherheitsdefinition nur über gültige Angreifer A quantifiziert wird, die keine Dec-Anfragen nach Erhalt des Zielchiffrats C stellen. Es ist übrigens ein interessantes offenes Problem, ob (bzw. unter welchen Annahmen) das ElGamal-Schema IND-CCA1-sicher ist. Betrachten wir nun das folgende einfache PKE-Schema PKE CSL = (Gen CSL, Enc CSL, Dec CSL ), welches eine Vereinfachung des Schemas von Cramer und Shoup darstellt. Hierbei nehmen wir ein HPS HPS für eine Sprache L X an. Der Einfachheit halber sei der zugehörige Schlüsselraum K = {0, 1} 2k. (Für andere Schlüsselräume kann eine geeignete Abbildung K {0, 1} 2k benutzt werden.) Nachrichtenraum von PKE CSL ist {0, 1} k. 31
Algorithmus Gen CSL (1 k ) (pk HPS, vk HPS ) HGen(1 k ) pk := pk HPS sk := vk HPS return (pk, sk) Algorithmus Enc CSL (pk, M) parse pk =: pk HPS wähle (x, w) mit R(x, w) = 1 K := PubEval(pk HPS, x, w) K =: (K 1, K 2 ) ( {0, 1} k) 2 C := (x, K 1, K 2 M) return C Algorithmus Dec CSL (sk, C) parse sk =: vk HPS parse C =: (x, C 1, C 2 ) K := PrivEval(vk HPS, x) K =: (K 1, K 2 ) ( {0, 1} k) 2 M := C 2 K 2 if C 1 = K 1 return M else return Theorem 9.4 (Sicherheit von PKE CSL ). Falls das SMP L X hart ist und HPS ein HPS für L X ist, dann ist das wie oben beschriebene PKE-Schema PKE CSL IND-CCA1-sicher. Beweis. Wir verfahren wieder in Spielen, wobei Spiel 1 das IND-CCA-Experiment mit einem beliebigen gegebenen Angreifer A ist. Da wir nur IND-CCA1-Sicherheit beweisen wollen, dürfen wir annehmen, daß A nur vor Erhalt des Zielchiffrats C Dec-Anfragen stellt. Wie üblich bezeichnet out i die Ausgabe von Spiel i, so daß nach Konstruktion gilt: Pr out 1 = 1 1/2 = Adv ind-cca PKE CSL,A (k). In Spiel 2 ändern wir die Art und Weise, wie C generiert wird. In Spiel 1 wird bei der Berechnung von C der Schlüssel K = PubEval(pk HPS, x, w ) für gleichverteiltes x L generiert. In Spiel 2 hingegen wählen wir x L gleichverteilt und setzen K := PrivEval(vk HPS, x ). Man beachte, daß dies bedeutet, daß der Zeuge w für x L in Spiel 2 nicht mehr benötigt wird. Andererseits gilt wegen der Vollständigkeit von HPS, daß PubEval(pk HPS, x, w ) = PrivEval(vk HPS, x ) ist, und damit Pr out 2 = 1 = Pr out 1 = 1. In Spiel 3 wählen wir x gleichverteilt aus X \ L (anstatt aus L). Da L c X \ L ist, folgt mit einer einfachen Reduktion, daß Pr out 3 = 1 Pr out 2 = 1 vernachlässigbar ist. In Spiel 4 verändern wir Dec. Genauer lehnt Dec nun alle inkonsistenten (im Sinne von x L) Dec-Anfragen mit -Ausgabe ab. (Abgelehnt werden nun also alle Anfragen (x, C 1, C 2 ) mit x L oder C 1 K 1 für (K 1, K 2 ) = K = PrivEval(vk HPS, x).) Hier ist zu beachten, daß nach Annahme A nur Dec-Anfragen vor Erhalt von C stellt. Das bedeutet, daß alle Dec-Anfragen von A nur von pk HPS, nicht aber von vk HPS abhängen. Andererseits ist wegen der Special Soundness von HPS der richtige Schlüssel K = PrivEval(vk HPS, x) für x L aus Sicht von A gleichverteilt. Insbesondere ist auch K 1 {0, 1} k, das zur Überprüfung der Konsistenz eines Chiffrats benutzt wird, unabhängig gleichverteilt und für A nicht vorhersagbar. Ein Hybridargument (ähnlich wie im Beweis von Lemma 6.14) zeigt Pr out 4 = 1 Pr out 3 = 1 Q 2 k, (12) wobei Q = Q(k) eine (notwendig polynomielle) Schranke für die Anzahl von As Dec-Anfragen ist. 32
Hier gilt es, eine Subtilität zu beachten: prinzipiell kann A mit jedem abgelehnten inkonsistenten Chiffrat einen 1/2 k -Anteil der möglichen Wert von vk HPS ausschließen. So kann A nach Q Dec- Anfragen mit geeigneten inkonsistenten C einen Q/2 k -Anteil von vk HPS ausschließen. Dem tragen wir Rechnung durch den Faktor Q in (12). Ein genauer Beweis von (12) würde wie im Beweis von Lemma 6.14 hybride Spiele H i (für i = 0,..., Q) definieren, wobei in H i nur die Ablehnung der ersten i inkonsistenten Dec-Anfragen erzwungen wird. (Die verbleibenden Anfragen werden wie in Dec vorgeschrieben behandelt.) Beim Übergang von H i nach H i+1 wird hierbei nur eine einzelne Dec-Anfrage verändert, und somit ein potentieller Fehler von 1/2 k in der Ausgabewahrscheinlichkeit des Experiments erzeugt. In Spiel 5 ersetzen wir die vom Experiment verschlüsselte Nachricht M b durch 0 k. Hier ist zu beobachten, daß in Spiel 4 die gesamte Sicht von A nur von pk HPS und C abhängt. Anders gesagt: Ein unbeschränktes A könnte sich alle Dec-Anfragen selbst beantworten. (Für konsistente C folgt die Entschlüsselung wegen der Vollständigkeit von HPS informationstheoretisch aus pk HPS, und inkonsistente C werden abgelehnt.) Deshalb garantiert die Special-Soundness-Eigenschaft von HPS, daß K aus Sicht von A gleichverteilt ist. Insbesondere ist aus Sicht von A das Chiffrat C unabhängig von M b. Es gilt also Pr out 5 = 1 = Pr out 4 = 1. Andererseits ist Pr out 5 = 1 = 1/2, da A in Spiel 5 keine Informationen über b erhält. Insgesamt folgt also, daß Adv ind-cca PKE CSL,A (k) = Pr out 1 = 1 1/2 = Pr out 1 = 1 Pr out 5 = 1 vernachlässigbar ist, was die IND-CCA1-Sicherheit von PKE CSL zeigt. Von IND-CCA1- zu IND-CCA-Sicherheit. Es ist einfach einzusehen, daß PKE CSL nicht IND-CCA-sicher ist. (Man überlege sich hierzu, auf welche Weise ein Zielchiffrat C verändert werden kann, und wie sich der zugehörige Klartext hierbei ändert.) Das Problem, das im einem Sicherheitsbeweis wie dem für PKE CSL auftritt ist, daß nach Veröffentlichung eines inkonsistenten Zielchiffrats C keine Eigenschaften des verwendeten HPS mehr genutzt werden können. Dem wirkt das eigentliche Schema von Cramer und Shoup folgendermaßen entgegen: 1. Es wird ein HPS verwendet, das selbst nach Veröffentlichung eines inkonsistenten Chiffrats (bzw. Schlüssels K = PrivEval(vk HPS, x) für x X \ L) für ein zweites inkonsistentes x x immer noch garantiert, daß K = PrivEval(vk HPS, x ) gleichverteilt ist. Diese Eigenschaft wurde von Cramer und Shoup universal 2 genannt und stellt sicher, daß auch inkonsistente Chiffrate nach Veröffentlichung von C ohne Verlust abgelehnt werden können. 2. Es werden zwei HPSs verwendet. Eines dient dazu, einen Schlüssel zu generieren, der die Nachricht versteckt (wie der Schlüssel K 2 im Falle von PKE CSL ). Das zweite HPS dient dazu, die Konsistenz des Chiffrats zu beweisen (wie K 1 aus PKE CSL ) und damit das Chiffrat zu authentifizieren. Dieser Übergang zu zwei HPSs erlaubt eine modulare Darstellung, kann aber mittels geschicketem Einsatz einer kollisionsresistenten Hashfunktion vermieden werden. Das vollständige Cramer-Shoup-Schema soll hier nicht näher besprochen werden, da das Schema und dessen Beweis konzeptionell sehr ähnlich zu PKE CSL sind. Bemerkt sei hier nur, daß Optimierungen des Cramer-Shoup-Schemas zu den effizientesten bekannten beweisbar sicheren PKE-Schemata gehören. 33
10 Einige Betrachtungen zur Implementierung Es soll noch angerissen werden, wie konkret einige der vorgestellten PKE-Verfahren implementiert werden können. Insbesondere soll besprochen werden, wie geeignete mathematische Plattformen algorithmisch behandelt werden können. Wir gliedern deshalb diese recht oberflächlichen Betrachtungen nach der zugrundeliegenden mathematischen Plattform. Faktorisierungsbasierte Verfahren. Faktorisierungsbasierte Verfahren finden in Ringen Z N statt, die durch eine zusammengesetzte Zahl N = P Q mit Primzahlen P und Q definiert sind. Es stellen sich vor allem zwei Fragen: In welcher Größenordnung sollten diese Primzahlen bzw. N sein, damit das Faktorisierungsproblem (oder verwandte Probleme) nach gängigem Kenntnisstand hart sind? Mit welchen Algorithmen kann man Primzahlen einer grob festgelegten Größe finden? Die erste Frage ist im Augenblick nicht ganz einfach zu beantworten. Derzeit (2011) ist der effizienteste Algorithmus zur Faktorisierung großer zusammengesetzter Zahlen das Zahlkörpersieb. Dessen asymptotische Laufzeit ist leider momentan noch nicht ganz geklärt und hängt auch von einigen variablen Parametern des Algorithmus ab. Etwas spekulative Resultate legen allerdings nahe, daß es mit Implementierungen auf Spezialhardware mit größerem Geldaufwand eventuell möglich sein könnte, eine 1024-Bit-Zahl innerhalb eines Jahres zu faktorisieren. (Im Bereich öffentlicher Forschung wurde eine solche Implementierung allerdings noch nicht unternommen.) Deshalb sollte gegenwärtig eine Implementierung von faktorisierungsbasierter Verschlüsselung nach Möglichkeit Zahlen N substantiell größerer Länge als 1024 Bit wählen. (Der Einfachheit halber könnte hier etwa ein N der Länge 2048 Bit gewählt werden.) Die Faktoren P und Q sollten balanciert, also etwa von der halben Bitlänge von N gewählt werden. Die zweite Frage wird derzeit wie folgt behandelt: Soll eine Primzahl P der (Bit-)Länge l gewählt werden, so wird einfach eine gleichverteilt zufällige ungerade Zahl P der Länge l gewählt und auf Primalität getestet. Ist P nicht prim, wird das Vorgehen mit einer neuen Zahl P wiederholt. Für den Test auf Primalität gibt es effiziente Algorithmen, etwa den Primtest von Rabin und Miller. 3 Der Primtest von Rabin und Miller. Grundidee des Miller-Rabin-Tests ist der folgende: Ist P prim, so ist Z P ein Körper, und insbesondere hat das Polynom X 2 1 Z p X nur die Nullstellen 1 und 1. Anders gesagt: 1 Z P hat nur die Quadratwurzeln 1 und 1. Überdies gilt x P 1 = 1 mod P für primes P und x 0 mod P. Ist P andererseits zusammengesetzt, so hat 1 Z P mindestens 4 Quadratwurzeln. Diese Beobachtung kann wie folgt ausgenutzt werden. Schreiben wir zunächst P 1 = 2 n P für ungerades P. Wir untersuchen nun für zufälliges x 0 mod P die Quadratwurzelfolge xp, x 2P,..., x P 1 mod P ; tritt in dieser Folge ein Übergang z, 1 mit z { 1, 1} auf, oder ist womöglich x P 1 1 mod P, so wissen wir sicher, daß P zusammengesetzt sein muß. Tritt andererseits für mehrere solcher x nie ein verdächtiger Übergang z, 1 mit z { 1, 1} auf, so darf vermutet werden, daß P prim ist. 3 Der Primtest von Rabin und Miller hat eine positive Fehlerwahrscheinlichkeit (die allerdings durch Mehrfachausführung exponentiell klein gehalten werden kann). Aber obwohl es mittlerweile einen deterministischen Algorithmus ohne Fehler zum Test auf Primalität gibt, ist der Miller-Rabin-Test aufgrund seiner Effizienz für die Praxis momentan der attraktivste Primtest. 34
Verfahren in zyklischen Gruppen. Für Verfahren, die auf der DLog-Annahme (oder verwandten Annahmen) in einer zyklische Gruppe G basieren, stellen sich gleich mehrere Fragen: Welche Typen von Gruppen sind zu verwenden? Welche Größe sollten diese Gruppen haben? Wie kann in diesen Gruppen effizient gerechnet werden? Wie schon in Abschnitt 5 angedeutet, sind als zyklische Gruppen vor allem elliptische Kurven und Untergruppen der multiplikativen Gruppe eines endlichen Körpers Z p (bzw. F p e) interessant. Für das DLog-Problem in (der multiplikativen Gruppe von) endlichen Körpern existiert ein subexponentieller Algorithmus, der Index-Calculus-Algorithmus. Die Laufzeit dieses Algorithmus hängt dabei in hohem Maße von der Laufzeit intern benötigter Faktorisierungen ganzer Zahlen in der Größenordnung von p ab. Damit sollte p von einer Bitlänge gewählt werden, die eine Faktorisierung Zahlen in der Größenordnung von p nicht zuläßt. Insbesondere sollte p eine Bitlänge von mehr als 1024 Bit haben. Ein Analogon des Index-Calculus-Algorithmus existiert nicht für elliptische Kurven, weshalb elliptische Kurven verhältnismäßig kleiner Größe (bzw. Bitlänge ihrer Elemente) gewählt werden können. Eine elliptische Kurve besteht aus allen Lösungen (x, y) einer Gleichung y 2 = x 3 + ax + b über einem geeigneten endlichen Körper und mit geeigneten Konstanten a, b. Die besten derzeit bekannten Algorithmen zum Lösen des DLog-Problems in elliptischen Kurven sind generisch (funktionieren also in beliebigen endlichen zyklischen Gruppen) und haben eine Komplexität in der Größenordnung G. Es ist deshalb üblich, elliptische Kurven der Größe etwa 2 200 bis 2 400 zu benutzen, was wiederum eine Rechnung in einem zugrundeliegenden Körper etwa derselben Größe nach sich zieht. Die entstehenden Gruppenelemente sind bei platzsparender Speicherung von der Größe etwa 200 bis 400 Bits. Rechnung in einer elliptischen Kurve ist dabei effizient mit elementarer Arithmetik im zugrundeliegenden Körper möglich. Insgesamt führen damit elliptische Kurven nach derzeitigem Stand zu den effizientesten (sowohl bezüglich Zeit- als auch bezüglich Speicherkomplexität) derzeitigen Public-Key-Kryptosystemen. (Natürlich könnte sich dies ändern, sobald algorithmische Fortschritte beispielsweise effizientere DLog-Algorithmen in elliptischen Kurven hervorbringen.) 11 Secret-Key-Verschlüsselung Bis jetzt haben wir aufgrund ihrer Flexibilität und vielfältigen Anwendungsmöglichkeiten PKE- Schemata betrachtet. Im Gegensatz dazu wurden SKE-Schemata nur angedeutet. Bei einem SKE- Schema verfügen sowohl Sender als auch Empfänger über einen gemeinsamen geheimen Schlüssel. (Anders gesagt: Ver- und Entschlüsselungsalgorithmus erhalten denselben Schlüssel K als Eingabe.) Der große Nachteil von SKE-Schemata gegenüber PKE-Schemata ist damit vor allem mangelnde Flexibilität: Um ein SKE-Schema zwischen zwei Parteien zu betreiben muß zunächst eine Schlüsselverteilung (bzw. ein Schlüsselaustausch) stattfinden. Andererseits sind derzeit konstruierte SKE-Schemata wesentlich effizienter als PKE-Schemata. Wir werden im folgenden daran interessiert sein, die Vorteile von PKE- und SKE-Schemata zu kombinieren. Hierzu ist allerdings wie üblich etwas Vorbereitung nötig. Insbesondere werden wir SKE-Schemata formal definieren und genauer betrachten, was in diesem Abschnitt geschehen soll. Glücklicherweise sind dabei die (Sicherheits-)Definitionen von SKE-Schemata denen von PKE- Schemata sehr ähnlich. 35
Definition. Wir beginnen mit der Definition einen SKE-Schemas (unterstrichen sind hierbei die Unterschiede zur PKE-Definition): Definition 11.1 (SKE-Schema). Ein SKE-Schema SKE mit Nachrichtenraum M k {0, 1} besteht aus drei PPT-Algorithmen (G, E, D): Schlüsselgenerierung. G(1 k ) gibt bei Eingabe 1 k einen Schlüssel K aus. Verschlüsselung. E(K, M) gibt bei Eingabe eines Schlüssels K und einer Nachricht M M k ein Chiffrat C aus. Entschlüsselung. D(K, C) gibt bei Eingabe eines Schlüssels K und eines Chiffrats C eine Nachricht M M k aus. Wir fordern Korrektheit in dem Sinne, daß für alle k N, alle M M k, alle K im Bild von G(1 k ), und alle C im Bild von E(K, M) immer D(K, C) = M gilt. Da bei den meisten bekannten SKE-Schemata die Schlüsselgenerierung extrem einfach ist ziehe K gleichverteilt aus einer Menge K möglicher Schlüssel lassen manche SKE-Definitionen den Algorithmus G ganz weg und nehmen K K für alles weitere an. SKE-Schemata mit State. Schemata mit State: Eine für die Praxis wichtige Variante von SKE-Schemata sind SKE- Definition 11.2. Ein SKE-Schema mit State ist wie ein SKE-Schema definiert, jedoch haben die Algorithmen E und D eine zusätzliche Ausgabe K (die im Bild von G liegt). Für Korrektheit fordern wir zusätzlich, daß die ausgegebenen aktualisierten Schlüssel K beim Aufruf von (C, K ) E(K, M) und (M, K ) D(K, C) immer übereinstimmen. Die Intuition hierbei ist wie folgt: K stellt einen aktualisierten Schlüssel (bzw. internen Zustand) dar, der beim nächsten Aufruf von E bzw. D verwendet wird. Man beachte, daß für die Korrektheit des Schemas implizit angenommen wird, daß bei Generierung und Entschlüsselung eines Chiffrats (durch E bzw. D) jeweils derselbe Schlüssel K verwendet wird. Diese Annahme kann im Falle von SKE-Schemata gerechtfertigt werden, denn anders als bei einem PKE-Schema wird bei der Benutzung eines SKE-Schemas oft nur jeweils eine Partei ver- bzw. entschlüsseln. Insbesondere werden die Algorithmen E und D nur von jeweils einer Partei lokal ausgeführt. Es kann überdies oft angenommen werden, daß Ver- und Entschlüsselungen synchronisiert stattfinden, in dem Sinne, daß Chiffrate in derselben Reihenfolge mit D entschlüsselt werden, wie sie mit E generiert wurden. Unter solchen Voraussetzungen kann durch eine geschickte Wahl der Algorithmen E und D sichergestellt werden, daß auch die Schlüssel K bei Generierung und Entschlüsselung eines Chiffrats dieselben sind. (Für ein solches Schema werden wir noch ein konkretes Beispiele sehen.) Man mache sich anhand der obigen Überlegungen klar, warum ein PKE-Schema mit State nicht sehr sinnvoll wäre. Sicherheitsdefinition (passive Angriffe). Um zu einer nützlichen Definition von SKE-Sicherheit zu gelangen, wird es schon ausreichen, die Sicherheitsdefinition von PKE-Schemata anzupassen. Als naheliegende Anpassung der PKE-Definition wird dabei der Angreifer A mit einem Verschlüsselungsorakel ausgestattet. Diese Anpassung kann wie folgt legitimiert werden: A kann im Falle eines SKE-Schemas keine Chiffrate mittels eines öffentlichen Schlüssels (wie im Falle eines PKE-Schemas) selbst erzeugen; andererseits wird selbst ein passiver Angreifer bei einem Angriff 36
auf ein konkretes größeres Protokoll Chiffrate beobachten können. Durch Zugriff auf ein Verschlüsselungsorakel wird A deshalb die Möglichkeit gegeben, Chiffrate selbst zu generieren. Definition 11.3 (SKE-IND-CPA). Sei SKE = (G, E, D) ein SKE-Schema. Sei A ein PPT-Algorithmus. Sei Adv ske-ind-cpa SKE,A (k) := Pr Exp ske-ind-cpa SKE,A (k) = 1 1 2, wobei das Experiment Exp ske-ind-cpa SKE,A wie folgt definiert ist: Experiment Exp ske-ind-cpa SKE,A (k) K G(1 k ) (M 0, M 1, state A ) A E(K, ) (1 k, find) b {0, 1} C E(K, M b ) b A E(K, ) (1 k, attack, state A, C ) if b = b then return 1 else return 0 A heißt gültig, T ist und in Exp ske-ind-cpa SKE,A immer M 0 = M 1 garantiert. PKE ist IND-CPAsicher (für indistinguishable under chosen-plaintext attacks ), falls für jedes gültige A die Funktion (k) vernachlässigbar ist. Adv ske-ind-cpa SKE,A Für SKE-Schema SKE mit State ist Definition 11.3 wie folgt anzupassen: A erhält bei einer E-Anfrage nur den Chiffratteil C der E-Auswertung, nicht aber den aktualisierten Schlüssel K. Im i-ten Aufruf des E-Orakels von A wird ein Schlüssel K i 1 benutzt, wobei wir K 0 := K setzen, und K i als Schlüssel-Ausgabe von E im i-ten Aufruf definiert wird. Die Generierung des Zielchiffrats C wird bezüglich des Schlüssels so behandelt wie ein E- Orakelaufruf. (Insbesondere wird der momentane Schlüssel K i benutzt.) Ein PKE-Schema als SKE-Schema. SKE-Schema (ohne State) auffassen läßt: Zunächst sei bemerkt, daß sich jedes PKE-Schema als Lemma 11.4 (PKE-Schema als SKE-Schema). Sei PKE ein PKE-Schema. Sei SKE das SKE- Schema, das aus PKE entsteht, wenn wir K := (pk, sk) setzen und die Algorithmen von PKE in naheliegender Weise anpassen. Dann impliziert die IND-CPA-Sicherheit von PKE die IND-CPA- Sicherheit von SKE. Beweis. Sei A ein beliebiger gültiger Angreifer auf SKE. Wir müssen zeigen, daß Adv ske-ind-cpa SKE,A vernachlässigbar ist. Dazu konstruieren wir aus A einen (gültigen) Angreifer B auf PKE mit Adv ind-cpa PKE,B (k) = Advske-ind-cpa SKE,A (k). (13) Damit folgt das Lemma: Nach Annahme über PKE muß die linke Seite von (13) vernachlässigbar sein. 37
Die Konstruktion von B aus A ist denkbar einfach: B führt intern A aus und nutzt den im IND-CPA-Experiment mit PKE erhaltenen öffentlichen Schlüssel pk, um für A ein E-Orakel (wie in As IND-CPA-Experiment mit SKE) zu implementieren. Offensichtlich gilt hiermit Pr Exp ind-cpa PKE,B (k) = 1 = Pr Exp ske-ind-cpa SKE,A (k) = 1 und damit (13). Nach unseren Ergebnissen über PKE-Schemata fällt uns damit in den Schoß: Korollar 11.5. Unter der DDH- oder der Faktorisierungsannahme existieren IND-CPA-sichere SKE-Schemata. Beispiel: ein einfaches IND-CPA-sicheres SKE-Schema mit State. Für ein etwas interessanteres Beispiel eines SKE-Schemas benötigen wir ein einfaches technisches Hilfsmittel: Definition 11.6 (PRG). Ein Pseudozufallsgenerator (PRG) PRG ist eine in Polynomialzeit berechenbare Funktion PRG : {0, 1} {0, 1} mit PRG(s) = 2 s für alle s {0, 1} und PRG(U {0,1} k) c U {0,1} 2k, wobei U {0,1} k {0, 1} k und U {0,1} 2k {0, 1} 2k gleichverteilte Zufallsstrings sind. Intuitiv streckt PRG einen kurzen, echt zufälligen Eingabestring s auf einen Bitstring doppelter Länge, der nicht effizient von echtem Zufall unterschieden werden kann. Wir haben in Lemma 6.14 mit BBS N schon einen PRG (in etwas komplizierterer Form und unter der Faktorisierungsannahme) kennengelernt. Wir halten ein allgemeineres Resultat ohne Beweis fest: Theorem 11.7. Wenn Einwegfunktionen existieren, dann existieren auch PRGs, und umgekehrt. (Für Interessierte: In 2 wurde bewiesen, daß Einwegpermutationen mit Hardcoreprädikaten PRGs implizieren. In 4 wurde gezeigt, daß jede Einwegfunktion und jede Einwegpermutation so verändert werden kann, daß sie ein Hardcoreprädikat hat. Schließlich wurde in 5 gezeigt, daß schon Einwegfunktionen mit Hardcoreprädikat PRGs implizieren. Die Rückrichtung PRGs implizieren Einwegfunktionen ist recht einfach einzusehen: PRGs sind bereits Einwegfunktionen.) Aus einem gegebenen PRG PRG kann nun denkbar einfach ein Verschlüsselungsverfahren SKE PRG = (G PRG, E PRG, D PRG ) mit State und Nachrichtenraum M k = {0, 1} k konstruiert werden: Algorithmus G PRG (1 k ) K {0, 1} k return K Algorithmus E PRG (K, M) parse (ρ, K ) := PRG(K) (with ρ, K {0, 1} k ) C := M ρ return (C, K ) Algorithmus D PRG (K, C) parse (ρ, K ) := PRG(K) (with ρ, K {0, 1} k ) M := C ρ return (M, K ) Die Korrektheit von SKE PRG ist einfach einzusehen. Interessanter gestaltet sich der Beweis der IND-CPA-Sicherheit von SKE PRG : Theorem 11.8 (Sicherheit von SKE PRG ). Ist PRG ein PRG, so ist SKE PRG IND-CPA-sicher. 38
Beweis. Geben wir uns einen gültigen Angreifer A vor. Wir müssen zeigen, daß Adv ske-ind-cpa SKE PRG,A vernachlässigbar ist. Wieder verfahren wir in Spielen, wobei Spiel 1 das IND-CPA-Experiment mit SKE und A ist. Da A PPT ist, dürfen wir ohne Beschränkung der Allgemeinheit annehmen, daß ein Polynom Q = Q(k) existiert, so daß A vor dem Erhalt des Zielchiffrats C genau Q 1 E- Orakelaufrufe tätigt. Wir können deshalb die Generierung des Zielchiffrats C einfach als Q-ten E-Aufruf betrachten. Nach Konstruktion ist Pr out 1 = 1 = Pr Exp ske-ind-cpa SKE PRG,A (k) = 1 für die Ausgabe out 1 von Spiel 1. Wir definieren nun eine Reihe von Spielen, in denen wir schrittweise die von E PRG benutzten Schlüssel und PRG-Funktionswerte durch unabhängig zufällige Bitstrings ersetzen. Genauer sei für i {0,..., Q} Spiel 2.i wie folgt definiert: Für alle j mit 1 j i: Im j-ten E-Aufruf wird die PRG-Ausgabe PRG(K j 1 ) durch einen unabhängigen gleichverteilten Zufallsstring R j {0, 1} 2k ersetzt. Das bedeutet, daß die durch R j definierten ρ und K unabhängig gleichverteilte k-bitstrings sind. Trivialerweise ist Spiel 2.0 identisch mit Spiel 1, wohingegen in Spiel 2.Q in allen E-Aufrufen bis einschließlich der Generierung von C frische, unabhängig gleichverteilte Schlüssel K j und Pads ρ benutzt werden. Der Unterschied zwischen Spiel 2.i und Spiel 2.i + 1 hingegen besteht lediglich darin, daß in einem einzelnen (dem (i + 1)-ten) E-Aufruf der Wert PRG(K i ) durch unabhängigen Zufall ersetzt wird. An dieser Stelle ist zu beachten, daß K i schon im i-ten E-Aufruf (bzw. für i = 1 während der Initialisierung von K 0 ) frisch und unabhängig gleichverteilt gewählt wurde. Es liegt nahe, die PRG-Eigenschaft von PRG zu nutzen, um zu zeigen, daß Spiel 2.0 und Spiel 2.Q nicht zu unterscheiden sind. Konkret können wir wie im Beweis von Lemma 6.14 einen PRG-Unterscheider D(1 k, Z) (mit Eingabe Z = PRG(U {0,1} k) oder Z = U {0,1} 2k) konstruieren, der Spiel 1 mit A simuliert, jedoch anfangs i Q gleichverteilt wählt, in den ersten i 1 E-Aufrufen die Ausgabe von PRG(K j ) durch unabhängigen Zufall ersetzt, und im i-ten E-Aufruf PRG(K i 1 ) durch Z ersetzt. Es ist einfach einzusehen, daß D Spiel 2.i 1 simuliert, falls Z = PRG(U {0,1} k) ist, und Spiel 2.i, falls Z = U {0,1} 2k ist. Eine einfache Rechnung wie im Beweis von Lemma 6.14 zeigt, daß ( ) Pr out 2.0 = 1 Pr out 2.Q = 1 = Q Pr D(1 k, PRG(U {0,1} k)) = 1 Pr D(1 k, U {0,1} 2k) = 1 ist. Da die rechte Seite dieser Gleichung nach Annahme über PRG vernachlässigbar ist, ist es auch die linke Seite. Nun gilt Pr out 2.Q = 1 = 1/2, da in Spiel 2.Q gilt, daß C = M b ρ unabhängig von b ist, da ρ unabhängig gleichverteilt ist. Insgesamt folgt, daß Adv ske-ind-cpa SKE PRG,A (k) = Pr Exp ske-ind-cpa SKE PRG,A (k) = 1 1/2 = Pr out 1 = 1 Pr out 2.Q = 1 vernachlässigbar ist, was wie gewünscht die IND-CPA-Sicherheit von SKE PRG zeigt. 39
Vergrößerung des Nachrichtenraums. Es ist recht einfach, den Nachrichtenraum eines SKE- Schemas unter Erhalt von SKE-IND-CPA-Sicherheit zu vergrößern: Theorem 11.9. Sei SKE ein SKE-Schema mit Nachrichtenraum {0, 1} k. Sei weiter SKE das SKE- Schema mit Nachrichtenraum {0, 1}, das Nachrichten blockweise mittels SKE verschlüsselt. Eine Nachricht Nachricht M {0, 1} wird dazu in Blöcke zu je höchstens k Bits unterteilt, jeder Block wird mittels SKE verschlüsselt, und die Chiffrate konkateniert. Ist dann SKE SKE-IND-CPA-sicher, so ist auch SKE SKE-IND-CPA-sicher Der Beweis soll hier nur skizziert werden: In einem spielbasierten Beweis werden zunächst alle Nachrichtenblöcke des Zielchiffrats durch Verschlüsselungen von Zufallsnachrichten ersetzt. Dies kann mit einem Hybridargument geschehen; in jedem Schritt wird ein weiterer Block durch eine Zufallsverschlüsselung ersetzt. (Ein jeder solcher Schritt kann durch die SKE-IND-CPA-Sicherheit des zugrundeliegenden SKE-Schemas SKE legitimiert werden.) Anschließend ist zu beobachten, daß in einem derartig veränderten Spiel der Angreifer keine Information mehr über die verschlüsselte Nachricht erhält; die Erfolgswahrscheinlichkeit des Angreifers in diesem veränderten Spiel beträgt demnach genau 1/2, und Sicherheit folgt wie gewohnt. Aktive Sicherheit. In Analogie zur entsprechenden PKE-Sicherheitsdefinition können wir auch die Sicherheit von SKE-Schemata gegen aktive Angriffe untersuchen. Wir geben nur die Unterschiede zur IND-CPA-Definition an: Definition 11.10 (SKE-IND-CCA). Ein SKE-Schema SKE ist IND-CCA-sicher, falls es IND- CPA-sicher ist, wobei im IND-CPA-Experiment der Angreifer A zusätzlich über ein Entschlüsselungsorakel D(K, ) verfügt, das jedoch nicht mit dem Zielchiffrat C aufgerufen werden darf. Für SKE-Schemata mit State ergeben sich die für E bzw. D verwendeten Schlüssel aus dem jeweils vorigen Aufruf von E bzw. D. (Anders gesagt: Die Schlüssel für Ver- und Entschlüsselung entwickeln sich unabhängig voneinander.) Interessanterweise ist aktive Sicherheit für SKE-Schemata verhältnismäßig einfach zu erreichen: Eine einfache Konstruktion eines aktiv sicheren SKE-Schemas. wieder ein technisches Hilfsmittel vor. Wir geben uns zunächst Definition 11.11 (PRF). Eine Pseudozufallsfunktion (PRF) PRF ist eine in Polynomialzeit berechenbare Funktion PRF : {0, 1} {0, 1} {0, 1} mit y = k für y := PRF(K, x) und alle K, x {0, 1} k. Weiter fordern wir, daß für jeden PPT-Algorithmus D die Funktion Adv prf PRF,D D (k) := Pr PRF(K, ) (1 k ) = 1 Pr D R( ) (1 k ) = 1 vernachlässigbar ist, wobei K {0, 1} k und R : {0, 1} k {0, 1} k eine echt zufällige Funktion ist und D nur Orakelanfragen x der Bitlänge k stellen darf. (Kein effizienter Algorithmus kann also per Orakelzugriff PRF(K, ) von einer echt zufälligen Funktion unterscheiden.) Wir geben wieder ohne Beweis an: Theorem 11.12. Wenn Einwegfunktionen existieren, dann existieren auch PRFs, und umgekehrt. 40
(Für Interessierte: Zunächst reicht es wegen Theorem 11.7 aus, die Äquivalenz von PRFs und PRGs zu zeigen. In 3 wird bewiesen, daß aus PRGs PRFs konstruiert werden können. Die Rückrichtung ist trivial.) Mit einer PRF PRF und einem IND-CPA-sicheren SKE-Schema SKE CPA = (G CPA, E CPA, D CPA ) ausgestattet können wir nun ein IND-CCA-sicheres SKE-Schema SKE AE = (G AE, E AE, D AE ) vorstellen. Der Einfachheit halber nehmen wir an, daß SKE CPA -Chiffrate als k-bitstrings interpretiert werden können. Algorithmus G AE (1 k ) K E G CPA (1 k ) K A {0, 1} k K := (K E, K A ) return K Algorithmus E AE (K, M) parse K =: (K E, K A ) C E E(K E, M) C A PRF(K A, C E ) C := (C E, C A ) return C Algorithmus D AE (K, C) parse K =: (K E, K A ) parse C =: (C E, C A ) M D(K E, C) if C A = PRF(K A, C E ) return M else return Ähnlich wie bei den im den vorigen Abschnitten betrachteten IND-CCA-sicheren PKE-Verfahren kann hier von konsistenten und inkonsistenten Chiffraten geredet werden: Ein Chiffrat C = (C E, C A ) ist konsistent, wenn C A = PRF(K A, C E ) gilt. Inkonsistente Chiffrate werden bei der Entschlüsselung mit abgelehnt. Im Sicherheitsbeweis von E AE werden wir ausnutzen, daß ein Angreifer selbst kein konsistentes Chiffrat generieren kann. Anders gesagt: Das Entschlüsselungsorakel ist für A unnütz, da es alle Chiffrate ablehnt. (Wir dürfen ohne Beschränkung der Allgemeinheit annehmen, daß A nie ein Chiffrat in sein Entschlüsselungsorakel eingibt, das von As Verschlüsselungsorakel generiert wurde; für ein solches Chiffrat kennt A den zugehörigen Klartext schon.) Theorem 11.13 (Sicherheit von SKE AE ). Ist SKE CPA IND-CPA-sicher und PRF eine PRF, so ist SKE AE IND-CCA-sicher. Beweis. Geben wir uns einen gültigen Angreifer A vor. Wir müssen zeigen, daß As Angriffserfolg Adv ske-ind-cca SKE AE,A im (in Definition 11.10 implizit definierten) IND-CCA-Experiment Expske-ind-cca SKE AE,A vernachlässigbar ist. Wir dürfen ohne Beschränkung der Allgemeinheit davon ausgehen, daß A nur D-Anfragen für Chiffrate C macht, die nicht von As E-Orakel erzeugt wurden. (Macht A solche Anfragen, kann A so modifiziert werden, daß es über alle E-Anfragen Buch führt und sich wie oben beschriebene D-Anfragen intern selbst mit dem passenden, bei E eingegebenen, Klartext beantwortet.) Weiter nehmen wir ohne Einschränkung an, daß A höchstens Q = Q(k) D-Aufrufe macht, wobei Q ein geeignetes Polynom ist. Wie üblich verfahren wir in Spielen, wobei Spiel 1 das IND-CCA-Experiment mit SKE und A ist. Es ist Pr out 1 = 1 = Pr ExpSKE ske-ind-cca AE,A (k) = 1 für die Ausgabe out 1 von Spiel 1. In Spiel 2 ersetzen wir alle PRF(K A, )-Aufrufe durch Aufrufe einer echt zufälligen gewählten Funktion 4 R : {0, 1} k {0, 1} k. Dies betrifft PRF-Aufrufe in E- und D-Orakelaufrufen von A, 4 Man beachte, daß R-Aufrufe mittels einer lazy sampling genannten Technik effizient gemacht werden können. Genauer muß nicht die volle Funktionsbeschreibung von R sofort festgelegt werden; es reicht aus, bei jedem R(x)- Aufruf für noch nicht angefragtes x {0, 1} k einen frischen Funktionswert y {0, 1} k gleichverteilt zu ziehen und für weitere Funktionsaufrufe zu speichern. 41
sowie den PRF-Aufruf während der Generierung des Zielchiffrats C. Man beachte, daß in Spiel 1 die Funktion PRF(K A, ) als black box benutzt wird, und insbesondere der Schlüssel K A nur zur Auswertung von PRF genutzt wird. Somit können wir einen Algorithmus D O( ) mit Orakelzugriff auf ein Orakel O definieren, so daß D intern Spiel 1 simuliert, aber alle PRF(K A, )-Funktionswerte durch Orakelaufrufe an O( ) ersetzt. Damit gilt Ist O = PRF(K A, ), so simuliert D O( ) Spiel 1. Ist O = R( ) eine echt zufällige Funktion, so simuliert D O( ) Spiel 2. Damit ist Pr out 1 = 1 Pr out 2 = 1 = Pr D PRF(KA, ) (1 k ) = 1 Pr D R( ) (1 k ) = 1 = Adv prf PRF,D (k) (mit unabhängig gleichverteiltem K A ) vernachlässigbar nach Annahme über PRF. In Spiel 3.i (für i {0,..., Q}) lehnt As D-Orakel die ersten i eingegebenen Chiffrate mit -Ausgabe ab. Offenbar ist Spiel 3.0 identisch mit Spiel 2, und in Spiel 3.Q ist As D-Orakel völlig nutzlos, da alle Aufrufe abgelehnt werden. Betrachten wir zur Analyse einen einzelnen D-Aufruf von A, wobei das eingegebene Chiffrat C = (C E, C A ) sei. Wir wollen zeigen, daß C schon nach den Regeln von Spiel 2 mit hoher Wahrscheinlichkeit abgelehnt wird. Man rufe sich hierzu in Erinnerung, daß C in Spiel 2 mit -Ausgabe abgelehnt wird, wenn C A R(C E ) ist. Wir unterscheiden zwei Fälle: 1. Es wurde zu diesem Zeitpunkt bereits ein Chiffrat C = (C E, C A ) mit C E = C E von E erzeugt (also durch einen E-Orakelaufruf von A oder bei der Generierung von C ). 2. Es wurde zu diesem Zeitpunkt noch kein Chiffrat C = (C E, C A ) mit C E = C E von E erzeugt. Im ersten Fall dürfen wir nach den eingangs gemachten Bemerkungen annehmen, daß C C und damit C A C A gilt. Insbesondere ist also R(C E ) = R(C E) = C A C A, weshalb C von D schon nach den Regeln von Spiel 2 abgelehnt werden würde. Im zweiten Fall wird R(C E ) {0, 1} k aus Sicht von A unabhängig gleichverteilt sein. 5 Es gilt also C A = R(C E ) nur mit Wahrscheinlichkeit 1/2 k. Fassen wir den betrachteten D-Aufruf C in Spiel 3.i als den (i + 1)-ten D-Aufruf auf, so folgt Pr out 3.i = 1 Pr out 3.i+1 = 1 1 2 k und damit Pr out 3.0 = 1 Pr out 3.Q = 1 Q 2 k. In Spiel 3.Q schließlich werden alle D-Aufrufe abgelehnt; A spielt also in Spiel 3.Q im wesentlichen ein IND-CPA-Spiel gegen SKE CPA. Formal können wir einen Angreifer B auf SKE CPA s IND-CPA-Sicherheit konstruieren, der intern A simuliert und dabei alle alle D-Anfragen von A mit ablehnt, alle E-Antworten bzw. das Zielchiffrat C in Bs eigenem IND-CPA-Experiment mit SKE CPA um einen zufällig gewähltes C A {0, 1} k ergänzt. 5 Wir nehmen hier implizit an, daß dies der erste echte, nicht automatisch abgelehnte D-Aufruf mit C E ist. 42
Für dieses B gilt Nach Annahme über SKE CPA ist deshalb Pr out 3.Q = 1 = Pr Exp ske-ind-cpa SKE CPA,B (k) = 1. Pr out 3.Q = 1 1/2 = Adv ske-ind-cpa SKE CPA,B (k) vernachlässigbar, weshalb auch (k) = Pr out 1 = 1 1/2 Adv ske-ind-cca SKE AE,A vernachlässigbar ist. Adv prf PRF,D (k) + Q 2 k + Adv ske-ind-cpa SKE CPA,B (k) Man beachte, daß sich die Konstruktion und der Sicherheitsbeweis von SKE AE auch auf SKE- Schemata mit State übertragen. Zusammenspiel der besprochenen Bausteine. Diese überraschend einfache generische Konstruktion von IND-CCA-sicheren SKE-Schemata kann zu folgendem Vorgehen genutzt werden: 1. Man starte mit einem IND-CPA-sicheren SKE-Schema SKE mit festem Nachrichtenraum (etwa SKE PRG mit Nachrichtenraum {0, 1} k ). 2. Man erweitere den Nachrichtenraum von SKE auf {0, 1} durch Konkatenation von Chiffraten. (M = (M 1, M 2 ) {0, 1} 2k etwa wird verschlüsselt durch Konkatenation der Chiffrate von M 1 und M 2.) Das entstehende SKE-Schema ist immer noch IND-CPA-sicher. (Dies ist etwa mittels eines Hybridarguments einfach einzusehen.) 3. Durch Einsetzen in die Konstruktion SKE AE entsteht ein IND-CCA-sicheres SKE-Schema mit Nachrichtenraum {0, 1}. Man beachte, daß ein solches Vorgehen für PKE-Verfahren mit den besprochenen Techniken zwar prinzipiell möglich ist (beispielsweise mittels des NY-Verfahrens), aber im allgemeinen zu recht ineffizienten Verfahren führt. Weitergehende Überlegungen. Die bislang besprochenen SKE-Konstruktionen und -Techniken stellen nur die Spitze des Eisbergs dar. Zwar sind die vorgestellten Verfahren im Vergleich zu PKE- Verfahren schon recht effizient; allerdings sind real benutzte Verfahren (wie etwa der Advanced Encryption Standard) noch bedeutend effizienter, oftmals um den Preis jeglicher beweisbarer Sicherheitseigenschaften. Ein hierbei besonders wichtiges und hier nicht besprochenes technisches Instrument stellen hier die Betriebsarten für Blockchiffren dar. Eine Betriebsart einer Blockchiffre dient dazu, ein SKE-Verfahren (ohne State) in ein SKE-Verfahren mit State umzuwandeln, wobei hierbei zusätzliche Sicherheitseigenschaften ohne nennenswerten Effizienzverlust erreicht werden. Etwa existieren Betriebsarten, die eine bloße Pseudozufallspermutation in ein IND-CCA-sicheres SKE-Verfahren mit State umwandeln. Aus theoretischer Sicht ist folgende Beobachtung interessant: im Vergleich zu PKE-Verfahren lassen sich sichere SKE-Verfahren schon aus Einwegfunktionen konstruieren. (Informell könnte man sagen, daß die Existenz sicherer Secret-Key-Verfahren äquivalent zur Existenz von Einwegfunktionen ist.) Andererseits sind Einwegfunktionen nach heutigem Kenntnisstand nicht hinreichend, um Public-Key-Kryptographie (etwa PKE-Verfahren oder Schlüsselaustauschprotokolle) zu konstruieren. Dies läßt sich sogar formalisieren: Man kann beispielsweise zeigen, daß keine Black-Box- Konstruktion von PKE-Verfahren aus Einwegfunktionen existiert. 43
12 Hybride Verschlüsselung Fassen wir noch einmal die Vor- und Nachteile von PKE- und SKE-Schemata zusammen: PKE-Schemata sind flexibler (und erfordern insbesondere keinen Austausch eines gemeinsamen geheimen Schlüssels), sind aber ineffizienter als SKE-Schemata; SKE-Schemata sind effizienter, erfordern aber einen gemeinsamen geheimen Schlüssel. Ein hybrides Verschlüsselungssystem sucht danach, die Vorteile beider Systeme zu vereinen. Technisch betrachtet sind hybride Verschlüsselungen deshalb zunächst gewöhnliche PKE-Verfahren; allerdings werden in einem Hybridverfahren in einer generischen Weise SKE-Verfahren genutzt, um eine höhere Effizienz zu erzielen. Definition. Sei PKE = (Gen, Enc, Dec) ein PKE-Schema und SKE = (G, E, D) ein SKE-Schema, so daß der Nachrichtenraum von PKE den Schlüsselraum von SKE umfaßt. (Mit anderen Worten: PKE kann genutzt werden, um SKE-Schlüssel zu verschlüsseln.) Dann definieren wir das hybride PKE-Schema PKE Hyb = (Gen Hyb, Enc Hyb, Dec Hyb ) wie folgt: Algorithmus Gen Hyb (1 k ) (pk, sk) Gen(1 k ) return (pk, sk) Algorithmus Enc Hyb (pk, M) K G(1 k ) C PKE Enc(pk, K) C SKE E(K, M) C := (C PKE, C SKE ) return C Algorithmus Dec Hyb (sk, C) parse C =: (C PKE, C SKE ) K Dec(sk, C PKE ) M D(K, C SKE ) return M Vorteile hybrider Verschlüsselung. PKE Hyb verschlüsselt zunächst einen Sitzungsschlüssel K mit PKE, um dann die eigentliche Nachricht mit SKE (und Schlüssel K) zu verschlüsseln. Es ergibt sich die Sinnfrage: Warum überhaupt derartig verschachtelt verschlüsseln? Dies scheint zunächst die (In-)Effizienz der beiden verwendeten Verfahren zu vereinen. Es scheint, als hätte man genauso gut gleich die Nachricht mit PKE verschlüsseln können. Um dieser Überlegung zu entgegnen sei zunächst bemerkt, daß der Nachrichtenraum von PKE Hyb gleich dem Nachrichtenraum von SKE ist. Dies ist von großem Vorteil, haben wir doch im vorigen Abschnitt gesehen, daß wir auf einfache Weise effiziente und sogar IND-CCA-sichere SKE-Schemata mit Nachrichtenraum {0, 1} konstruieren können. Umgekehrt sind die Nachrichtenräume der bislang betrachteten PKE-Verfahren endlich (etwa {0, 1} k, Z N, oder G). Stellt man sich nun vor, extrem lange Nachrichten (etwa den gesamten Datenstrom einer SSL- Verbindung) verschlüsseln zu wollen, fällt der Aufwand für die PKE-Verschlüsselung Enc(pk, K) bei PKE Hyb kaum noch ins Gewicht; die Hauptarbeit wird vom Secret-Key-Verfahren SKE geleistet, das M verschlüsselt. In diesem Sinne vereint PKE Hyb die Vorteile von Public-Key- und Secret-Key- Verfahren insbesondere dann, wenn lange Nachrichten verschlüsselt werden sollen. Sicherheit. Intuitiv ist zu erwarten, daß PKE Hyb unsicher ist, sobald einer der Teilbausteine (also PKE oder SKE) unsicher ist. Interessanter ist natürlich der Fall, daß sowohl PKE als auch SKE sicher sind: Theorem 12.1 ((Aktive) Sicherheit hybrider Verschlüsselung). Sind die in PKE Hyb verwendeten Verfahren PKE und SKE beide IND-CCA-sicher, so ist auch PKE Hyb IND-CCA-sicher. 44
Beweis. Geben wir uns einen gültigen Angreifer A auf die IND-CCA-Sicherheit von PKE Hyb vor. Wir müssen zeigen, daß Adv ind-cca PKE Hyb,A vernachlässigbar ist. Sei Spiel 1 das IND-CCA-Experiment mit PKE Hyb und A, so daß Pr out 1 = 1 = Pr ExpPKE ind-cca Hyb,A (k) = 1 für die Ausgabe out 1 von Spiel 1 ist. Für die Beschreibung von Spiel 2 bezeichne K den in Spiel 1 bei der Erstellung des Zielchiffrats C = (CPKE, C SKE ) erzeugten, in C PKE Enc(pk, K ) verschlüsselten, und in CSKE E(K, M b ) benutzten Sitzungsschlüssel. In Spiel 2 erzeugen wir stattdessen CPKE Enc(pk, K ) für einen zusätzlichen, unabhängig gezogenen Schlüssel K G(1 k ). Weiter werden in Spiel 2 Dec Hyb - Anfragen für C = (C PKE, C SKE ) mit C PKE = CPKE behandelt, als ob K Dec(sk, CPKE ) gelten würde. (Mit anderen Worten: Es ist CPKE tatsächlich ein Chiffrat von K, das aber wie ein Chiffrat von K behandelt wird.) Wir konstruieren einen IND-CCA-Angreifer A PKE auf PKE, der den Übergang von Spiel 1 nach Spiel 2 legitimiert. A PKE simuliert intern Spiel 1, bettet aber den im IND-CCA-Spiel mit PKE erhaltenen öffentlichen Schlüssel pk als öffentlichen Schlüssel von PKE Hyb in das simulierte Spiel ein. Dec Hyb -Anfragen von A beantwortet A PKE unter Benutzung des eigenen Dec(sk, )-Orakels. Für das Zielchiffrat im simulierten Spiel wird CPKE gesetzt als Zielchiffrat in A PKEs eigenem IND-CCA-Spiel, wobei K und K die von A PKE gewählten Nachrichten sind. Tritt CPKE in einer Dec Hyb-Anfrage von A auf, so kann A PKE diese Anfrage natürlich nicht mittels des Dec(sk, )-Orakels entschlüsseln lassen, da es sich hierbei um A PKE s eigenes Zielchiffrat handelt. In diesem Fall behandelt A PKE das Chiffrat CPKE als Chiffrat von K. Schließlich gibt A PKE die Ausgabe des simulierten Spiels aus. Auf diese Weise simuliert A PKE exakt Spiel 1, sofern A PKE als eigenes Zielchiffrat CPKE Enc(pk, K ) erhält. Erhält A PKE aber CPKE Enc(pk, K ) als Zielchiffrat, so simuliert A PKE genau Spiel 2. Damit ist die Ausgabe von A PKE entweder out 1 oder out 2, je nachdem, ob K oder K für A PKE verschlüsselt wird. Intuitiv gesprochen heißt dies: Läge die Verteilungen von out 1 und out 2 nicht-vernachlässigbar auseinander, so wäre A PKE ein erfolgreicher IND-CCA-Angreifer gegen PKE. Formal: Pr out 1 = 1 Pr out 2 = 1 = 2Adv ind-cca PKE,A PKE (k). Aus Spiel 2 kann weiter direkt ein IND-CCA-Angreifer A SKE auf SKE hergeleitet werden. Genauer simuliert A PKE Spiel 2, leitet aber As Zielnachrichten M 0, M 1 an das eigene IND-CCA- Experiment mit SKE. Das erhaltene Chiffrat CSKE wird in das Zielchiffrat C des simulierten Spiels eingebettet. Man beachte, daß demnach A SKE den bei der Generierung von CSKE genutzten Schlüssel K nicht kennt, also Dec-Anfragen der Form C = (CPKE, C SKE unter Benutzung des eigenen IND- CCA-Orakels für SKE (mit implizitem Schlüssel K ) beantworten muß. Hiermit gilt so daß insgesamt Pr out 2 = 1 = Adv ske-ind-cca SKE,A SKE (k) + 1/2, Pr out 1 = 1 1/2 = 2Adv ind-cca PKE,A PKE (k) + Adv ske-ind-cca SKE,A SKE (k) nach Annahme über PKE und SKE vernachlässigbar ist, was die Sicherheit von PKE Hyb zeigt. Analog erhält man: Theorem 12.2 ((Passive) Sicherheit hybrider Verschlüsselung). Sind die in PKE Hyb verwendeten Verfahren PKE und SKE beide IND-CPA-sicher, so ist auch PKE Hyb IND-CPA-sicher. 45
13 Identitätsbasierte Verschlüsselung Motivation. Ein PKE-Schema hat gegenüber einem SKE-Schema den erheblichen Vorteil, daß kein initialer Schlüsselaustausch nötig ist. Es reicht aus, den öffentlichen Schlüssel des Empfängers zu kennen, um verschlüsselte Nachrichten an ihn zu erzeugen. Es muß allerdings immer noch ein Weg gefunden werden, an den öffentlichen Schlüssel des Empfängers zu gelangen. In einem System mit vielen Benutzern kann hierzu etwa ein zentraler Schlüsselserver diese Schlüssel aller Benutzer bereithalten. Ein anderer Weg kann mit identitätsbasierter Verschlüsselung beschritten werden: hier reicht es aus, die Identität (etwa die E-Mail-Adresse) des Empfängers zu kennen, um verschlüsselte Nachrichten an diesen zu generieren. Natürlich muß sichergestellt werden, daß nur der designierte Empfänger eine derart verschlüsselte Nachrichte auch wieder entschlüsseln kann. Deshalb erhält jeder Benutzer einen speziellen geheimen Schlüssel, den user secret key für seine Identität. Dieser muß von einer speziellen Entität bereitgestellt werden, die einen master secret key besitzt, mit dem alle user secret keys generiert werden können. Aus diesem Grund muß es im System auch einen master public key geben, der bei der Verschlüsselung genutzt wird. (Man beachte allerdings, daß dieser master public key von allen Benutzern genutzt wird und insbesondere nicht von einer Identität abhängt.) Definition. Man gelangt zu folgender Definition: Definition 13.1 (IBE-Schema). Ein IBE-Schema IBE mit Nachrichtenraum M k {0, 1} und Identitätsraum ID k {0, 1} besteht aus vier PPT-Algorithmen (Gen, Ext, Enc, Dec): Schlüsselgenerierung. Gen(1 k ) gibt bei Eingabe 1 k ein Schlüsselpaar (mpk, msk) aus. Extraktion (Generierung von Benutzerschlüsseln). Ext(msk, id) gibt bei Eingabe eines master secret keys msk und einer Identität id ID k einen user secret key usk id aus. Verschlüsselung. Enc(mpk, id, M) gibt bei Eingabe eines master public keys mpk, einer Identität id ID k und einer Nachricht M M k ein Chiffrat C aus. Entschlüsselung. Dec(usk id, C) gibt bei Eingabe eines user secret keys usk id und eines Chiffrats C eine Nachricht M M k { } aus. Wir fordern Korrektheit in dem Sinne, daß für alle k N, alle Nachrichten M M k und Identitäten id ID k, alle (mpk, msk) Gen(1 k ), usk id Ext(msk, id) und C Enc(mpk, id, M) immer Dec(usk id, C) = M gilt. Motivation zur Sicherheitsdefinition. Bevor wir ein konkretes IBE-Schema vorstellen, sollten wir einen Augenblick über eine mögliche Sicherheitsdefinition nachdenken. Grundsätzlich soll wieder eine IND-CPA-artige (bzw. IND-CCA-artige) Definition behandelt werden. Es soll also für einen Angreifer wieder darum gehen, ein ehrlich generiertes Chiffrat einer von zwei selbstgewählten Nachrichten zuzuordnen. Wie im Falle von IND-CPA- und IND-CCA-Sicherheit wird eine derartig sicheres Verfahren sichere Kanäle realisieren. Man beachte allerdings, daß ein IBE-Schema grundsätzlich ein System für viele Benutzer bereitstellt. Einige dieser Benutzer könnten hierbei korrumpiert sein. Es muß deshalb garantiert sein, daß etwa Wissen um einen user secret key usk id nicht ermöglicht, für id id verschlüsselte Nachrichten zu entschlüsseln. (Man überlege sich, wieviel Nutzen ein Verschlüsselungssystem hätte, bei dem ein Benutzer die an einen anderen Benutzer gerichteten Nachrichten lesen kann.) 46
Sicherheitsdefinition. Wir gelangen zu folgender Definition: Definition 13.2 (IBE-IND-CPA). Sei IBE = (Gen, Ext, Enc, Dec) ein IBE-Schema, und sei A ein PPT-Algorithmus. Sei Adv ibe-ind-cpa IBE,A (k) := Pr Exp ibe-ind-cpa IBE,A (k) = 1 1 2, wobei das Experiment Exp ibe-ind-cpa IBE,A wie folgt definiert ist: Experiment Exp ibe-ind-cpa IBE,A (k) (mpk, msk) Gen(1 k ) (id, M 0, M 1, state) A Ext(msk, ) (1 k, find, mpk) b {0, 1} C Enc(mpk, id, M b ) b A Ext(msk, ) (1 k, attack, state, C ) if b = b then return 1 else return 0 A heißt gültig, wenn es in Exp ibe-ind-cpa IBE,A immer M 0 = M 1 garantiert und sein Ext-Orakel nie nach einem Schlüssel für id befragt. IBE ist IBE-IND-CPA-sicher, falls für jedes gültige A die Funktion (k) vernachlässigbar ist. Adv ibe-ind-cpa IBE,A Diese Definition heißt IBE-IND-CPA (und nicht etwa IBE-IND-CCA), da A kein Entschlüsselungsorakel (für Chiffrate für die Zielidentität C ) erhält. Tatsächlich kann man Definition 13.2 leicht zu einer derartigen IBE-IND-CCA-Definition erweitern. Hierfür gibt man A Zugriff auf ein Dec-Orakel, welches bei Eingabe (id, C) zunächst usk id Ext(msk, id) ausführt und dann Dec(usk id, C) zurückgibt. Die entstehende Definition wird für uns allerdings nicht weiter interessant sein, da wir kein IBE-IND-CCA-sicheres Schema vorstellen werden. Eine abgeschwächte Sicherheitsdefinition. Leider ist es nicht einfach, Definition 13.2 zu erfüllen. Wir werden deshalb zunächst eine technische Abschwächung von IBE-IND-CPA-Sicherheit angeben und zeigen, wie diese erfüllt werden kann. Einziger Unterschied zu Definition 13.2 ist hierbei, daß sich der Angreifer A auf die Zielidentität id festlegen muß, bevor er auch nur den master public key mpk gesehen hat. Definition 13.3 (IBE-sID-IND-CPA). Betrachte Definition 13.2 mit folgendem abgewandeltem Experiment Exp ibe-sid-ind-cpa IBE,A : Experiment Exp ibe-sid-ind-cpa IBE,A (k) (id, state) A(1 k, select) (mpk, msk) Gen(1 k ) (M 0, M 1, state ) A Ext(msk, ) (1 k, find, mpk, state) b {0, 1} C Enc(mpk, id, M b ) b A Ext(msk, ) (1 k, attack, state, C ) if b = b then return 1 else return 0 47
Genügt IBE der sich ergebenden Sicherheitsdefinition, so heißt IBE IBE-sID-IND-CPA-sicher (für IBE-IND-CPA-sicher unter selective-id-angriffen ). Offenbar impliziert IBE-IND-CPA-Sicherheit schon IBE-sID-IND-CPA-Sicherheit. Umgekehrt läßt sich aus einem IBE-sID-IND-CPA-sicheren IBE-Schema leicht eines konstruieren, welches immer noch IBE-sID-IND-CPA-sicher, aber nicht IBE-IND-CPA-sicher ist. (Wie?) Technische Hilfsmittel. Schon IBE-sID-IND-CPA-Sicherheit hat sich als recht schwer zu erfüllen entpuppt. Wir werden uns deshalb eines mittlerweile sehr populären technischen Hilfsmittels bedienen, nämlich dem eines pairings. Genauer werden wir zwei zyklische Gruppe G, G T von primer Ordnung G = G T = q annehmen, zusammen mit einer Abbildung e : G G G T (dem pairing ), die folgende Eigenschaften hat: nicht-ausgeartet: für g G mit g 1 gilt e(g, g) 1 G T. bilinear: für g G und a, b N gilt e(g a, g b ) = e(g, g) ab. Insbesondere gilt e(g, h) = e(h, g) und e(g, h u) = e(g, h) e(g, u). Solche Gruppen und pairings existieren trivialerweise für beliebige q: man betrachte etwa G = G T = Z + q und e(g, h) = g + h. Diese Gruppen sind für uns nicht besonders interessant; für unsere Zwecke setzen wir voraus, daß gewisse Probleme in G, G T hart sind. Wir können allerdings nicht erwarten, daß zum Beispiel die DDH-Annahme in G gilt: man überlege sich, daß das pairing e erlaubt, effizient DDH-Tupel (g, g a, g b, g ab ) G 4 von zufälligen G 4 -Tupeln zu unterscheiden. Es gibt andererseits Kandidaten für pairing-gruppen G, G T, für die die DDH-Annahme in G T gilt. Da hier allerdings keine Aussage über G-Elemente gemacht wird, ist auch die DDH-Annahme in G T für unsere Zwecke nicht weiter nützlich. Wir werden deshalb folgende, auf unser Szenario zugeschnittene DDH-Variante betrachten: Bilinear-Decisional-Diffie-Hellman-(BDDH-)Annahme. Es ist schwierig, gegeben g, g a, g b, g c G, das Element e(g, g) abc G T von einem zufälligen G T -Element zu unterscheiden. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion Adv bddh G,G T,A(k) := Pr Exp bddh G,G T,A(k) = 1 1 2 vernachlässigbar ist, wobei das Experiment Exp bddh G,G T,A wie folgt definiert ist: Experiment Exp bddh G,G T,A (k) g Gens G a, b, c, d q b {0, 1} (g 0, g 1 ) := (e(g, g) abc, e(g, g) d ) b A(1 k, g, g a, g b, g c, g b ) if b = b then return 1 else return 0 14 Das IBE-Schema von Boneh und Boyen Wir sind nun bereit, das Boneh-Boyen-Schema vorzustellen. Wie schon angedeutet wurde, wird dieses Schema nur selective-id-sicherheit erzielen. Wir nehmen zyklische Gruppen G, G T der (primen) 48
Ordnung q mit pairing e : G G G T an, so daß die BDDH-Annahme gilt. Das Schema. Man betrachte das folgende IBE-Schema IBE BB mit Identitätsraum q und Nachrichtenraum G T : Algorithmus Gen BB (1 k ) wähle α, β q und g, h G mpk := (g, h, u, v) := (g, h, g α, e(g, g) αβ ) msk := (g, h, u, α, β) return (mpk, msk) Algorithmus Ext BB (msk, id) parse msk =: (g, h, u, α, β) wähle r q usk id := (d 1, d 2 ) := (g αβ (u id h ) r, g r ) return usk id Algorithmus Enc BB (mpk, id, M) parse mpk =: (g, h, u, v) wähle s q C := (c 0, c 1, c 2 ) := (M v s, g s, ( u id h ) s ) return C Algorithmus Dec BB (usk id, C) parse usk id =: (d 1, d 2 ) und C =: (c 0, c 1, c 2 ) M := c 0 e(c 1, d 1 ) 1 e(c 2, d 2 ) return M Korrektheit. Korrektheit folgt wegen Dec BB (usk id, C) = c 0 e(c 2, d 2 ) e(c 1, d 1 ) = M ( e(g, g) αβ) s = M e(g, g) αβs e( ( u id h ) s, g r ) e(g s, g αβ ) e(g s, (u id h) r ) e( ( u id h ) s, g r ) e(g s, g αβ (u id h) r ) e(g, g)αβs e( = M e(g, g) αβs ( u id h ), g) rs e(g, (u id h)) rs = M Vorbemerkungen zur Sicherheit. Beim Beweis der IBE-sID-IND-CPA-Sicherheit eines IBE- Schemas sind wir in einer ähnlichen Lage wie bei einem IND-CCA-Beweis. Während einer Reduktion müssen wir in der Lage sein, für einen Angreifer ein Ext-Orakel zu implementieren, dürfen dabei aber nicht den vollständigen (master) secret key kennen. Unsere Lösung im IND-CCA-Fall bestand darin, das Zielchiffrat während des Beweises inkonsistent zu machen (wobei hierbei vom Schema abhängig ist, was inkonsistent genau bedeutet). Im Falle des IBE-Schemas IBE BB werden wir allerdings einen anderen Weg einschlagen. Genauer werden wir während der Reduktion auf die BDDH-Annahme eine Simulation des IBE-sID- IND-CPA-Experiments mit einem punktierten master secret key entwerfen. Hierbei bedeutet punktiert, daß dieser master secret key genutzt werden kann, um alle Ext-Anfragen perfekt zu beantworten, außer denen für die vorher vom Angreifer festgelegte Zielidentität id. Auf diese Weise kann die Reduktion von einer Vorhersage des Angreifers für das id -Chiffrat C profitieren, dabei aber alle Ext-Anfragen beantworten. Der Sicherheitsbeweis. Wir zeigen: Theorem 14.1 (Sicherheit von IBE BB ). Gilt die BDDH-Annahme für die Gruppen G, G T, dann ist das IBE-Schema IBE BB IBE-sID-IND-CPA-sicher. Beweis. Da der Beweis nur aus einer einzigen Reduktion besteht, werden wir den Beweis diesmal nicht spielbasiert führen. Stattdessen geben wir für einen angenommenen IBE-Angreifer A direkt einen BDDH-Unterscheider D (mit demselben Erfolg wie A) an. 49
Sei also A ein gültiger IBE-sID-IND-CPA-Angreifer auf IBE BB. Wir beschreiben nun einen BDDH-Angreifer D, den wir aus A konstruieren. Angenommen, D erhält als Eingabe G-Elemente g, g a, g b, g c sowie ein Element z G T. Ziel von D ist es, herauszufinden, ob z = e(g, g) abc ist, oder ob z G T zufällig gezogen wurde. Generierung des punktierten master secret keys. Als erstes ruft D den IBE-Angreifer A mit select-eingabe auf und erhält eine Zielidentität id. Hierauf wählt D einen zufälligen Exponenten x q und legt sich folgende Variablen zurecht: u := g a, v := e(g a, g b ), h := u id g x. Man beachte, daß u id h = g a(id id )+x ist und der entstehende master public key mpk := (g, h, u, v) exakt so wie in einem IBE-sID-IND-CPA-Experiment mit IBE BB verteilt ist. Simulation von A. Anschließend führt D das IBE-sID-IND-CPA-Experiment mit A (weiter) aus. Hierbei wird mpk als master public key an A übergeben, A wählt zwei Nachrichten M 0, M 1, dann wählt D ein Bit b {0, 1}, und verschlüsselt schließlich M b für A. Beachtenswert sind hier zwei Besonderheiten. Zum einen kennt D nicht den zugehörigen master secret key (der insbesondere die geheimen Exponenten α = a und β = b enthalten würde). Wir müssen also beschreiben, wie D für A das Ext-Orakel implementiert. Zum anderen wird D natürlich versuchen, A zum Lösen seiner eigenen BDDH-Aufgabe zu nutzen. Dafür wird D in das Zielchiffrat C die zu D s eigenem Problem gehörige Eingabe z G T einbauen. Wir werden auch hier beschreiben, wie das genau zu geschehen hat. Implementierung des Ext-Orakels. Nehmen wir an, A stellt eine Anfrage id an das Ext-Orakel. Wir dürfen dabei annehmen, daß id id ist. Da für den zurechtgelegten master public key ein zugehöriger (D nicht vollständig bekannter) master secret key die Form (g, h, u, α, β) mit α = a und β = b hat, hat ein korrekt generierter user secret key für id die Form ( r ( usk id = (d 1, d 2 ) = (g ab u h) ) id, g r ) = (g ab g a(id id r )+x, g r ). Ziehen wir r q zufällig und setzen 1 d 2 := g r (g b) id id, so ist implizit r := r b/(id id ), weshalb auch das zugehörige d 1 von D mittels d 1 = g ab+(a(id id )+x)(r id id ) = g b id id ab(1 id id )+a (id id ) r x b id id +x r = (g a ) (id id ) r (g b) x id id g x r berechnet werden kann. Auf diese Weise kann D perfekt verteilte user secret keys für alle Identitäten id id generieren. Man beachte aber, daß diese Rechnung für id = id fehlschlägt. 50
Einbettung des BDDH-Problems. Das Zielchiffrat C = (c 0, c 1, c 2 ) für A wird nicht mittels Enc generiert, sondern aus D s BDDH-Aufgabe z. Man rufe sich in Erinnerung, daß Enc(mpk, id, M b ) Chiffrate der Form ( s) (c 0, c 1, c 2 ) = (M b v s, g s, u h) id generiert. Setzen wir nun c 1 := g c (für D s Eingabe g c ) an, so ergibt sich ( ) c 2 = u id c ( h = u id id g x) c = (g c ) x, was wiederum von D aus g c und x berechnet werden kann. Weiter ist c 0 = M b v c = M b e(g, g) abc. In dieser Situation übergibt D dem Angreifer A als Zielchiffrat C := (c 0, c 1, c 2) := (M b z, g c, (g c ) x ). Ist z = e(g, g) abc, so liefert dies ein perfekt verteiltes Chiffrat von M b. Ist aber z G T (und unabhängig) gewählt, so ist auch C unabhängig von b. zufällig Ausgabe und Analyse. Gibt A schließlich Ausgabe b, so gibt D die Ausgabe des Experiments aus. (D gibt also 1 aus genau dann wenn b = b ist.) Nach dem oben Gesagten ist Pr D(1 k, g, g a, g b, g c, e(g, g) abc ) = 1 = Adv ibe-sid-ind-cpa IBE,A (k). Andererseits ist Pr D(1 k, g, g a, g b, g c, z) = 1 = 1/2 (für zufälliges z G T ), da in diesem Fall As Ausgabe b unabhängig vom in der Simulation verwendeten b ist. Zusammenfügen ergibt G,G T,D(k) = Advibe-sid-ind-cpa IBE,A (k), 2 Adv bddh woraus die IBE-sID-IND-CPA-Sicherheit von IBE BB folgt. Von selective-id- zu voller IBE-IND-CPA-Sicherheit. Der vorgestellte Beweis nutzt wesentlich aus, daß die Zielidentität id von vornherein bekannt ist. Insbesondere wird in der Simulation der master public key in Abhängigkeit von id konstruiert. Genauer wird die Simulation in der Lage sein, alle Ext-Anfragen bis auf id zu beantworten. Wählt ein Angreifer id aber adaptiv, in Abhängigkeit von mpk (oder womöglich sogar Ext-Antworten), dann versagt diese Strategie. Im folgenden soll eine Idee skizziert werden, die zu voller Sicherheit führt. Stellen wir uns nun eine Simulation vor, in der es viele Identitäten gibt, für die Ext-Anfragen nicht beantwortet werden können; jede dieser Identitäten sei für die Einbettung eines BDDH- Problems geeignet. Genauer sei die Wahrscheinlichkeit für jede Identität P, daß die Simulation eine Ext-Anfrage für diese Identität beantworten kann. Stellen wir uns idealisierend diese Wahrscheinlichkeiten als unabhängig vor, dann könnte eine solche Simulation mit Wahrscheinlichkeit 51
P Q (1 P ) eine Anzahl von Q Ext-Anfragen beantworten, und dann ein BDDH-Problem in die Zielidentität id einbetten. Wählen wir P = 1/(2Q), so gelingt die Simulation mit Wahrscheinlichkeit 1/O(Q). Da der simulierte Angreifer PPT ist, wird Q polynomiell sein, weshalb 1/O(Q) signifikant sein wird, was ausreicht, um IBE-IND-CPA-Sicherheit zu zeigen. Ein IBE-Schema, das IBE BB in dieser Weise abwandelt und als sicher beweist, wird in 8 vorgestellt. Literatur 1 Werner Alexi, Benny Chor, Oded Goldreich, and Claus-Peter Schnorr. RSA and Rabin functions: Certain parts are as hard as the whole. SIAM Journal on Computing, 17(2):194 209, 1988. 2 Manuel Blum and Silvio Micali. How to generate cryptographically strong sequences of pseudorandom bits. SIAM Journal on Computing, 13(4):850 864, 1984. 3 Oded Goldreich, Shafi Goldwasser, and Silvio Micali. How to construct random functions. In 25th FOCS, pages 464 479, Singer Island, Florida, October 24 26, 1984. IEEE Computer Society Press. 4 Oded Goldreich and Leonid A. Levin. A hard-core predicate for all one-way functions. In 21st ACM STOC, pages 25 32, Seattle, Washington, USA, May 15 17, 1989. ACM Press. 5 Johan Håstad, Russell Impagliazzo, Leonid A. Levin, and Michael Luby. A pseudorandom generator from any one-way function. SIAM Journal on Computing, 28(4):1364 1396, 1999. 6 Moni Naor and Moti Yung. Public-key cryptosystems provably secure against chosen ciphertext attacks. In 22nd ACM STOC, Baltimore, Maryland, USA, May 14 16, 1990. ACM Press. 7 Amit Sahai. Non-malleable non-interactive zero knowledge and adaptive chosen-ciphertext security. In 40th FOCS, pages 543 553, New York, New York, USA, October 17 19, 1999. IEEE Computer Society Press. 8 Brent R. Waters. Efficient identity-based encryption without random oracles. In Ronald Cramer, editor, EUROCRYPT 2005, volume 3494 of LNCS, pages 114 127, Aarhus, Denmark, May 22 26, 2005. Springer, Berlin, Germany. 52