01.11.2013 Aufrufe

Beweisbar sichere Kryptographie - IKS - KIT

Beweisbar sichere Kryptographie - IKS - KIT

Beweisbar sichere Kryptographie - IKS - KIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Beweisbar</strong> <strong>sichere</strong> <strong>Kryptographie</strong><br />

Dennis Hofheinz ∗<br />

Wintersemester 2012/2013, Karlsruher Institut für Technologie<br />

Notation<br />

Für n ∈ N schreiben wir [n] := {1, . . . , n}. Für einen Bitstring x ∈ {0, 1} ∗ bezeichnet |x| die<br />

Bitlänge von x. Für n ∈ N bezeichnet 1 n den String von n Einsen. Für eine Menge S bezeichnet<br />

s ← S gleichverteiltes Ziehen von s aus S. Für einen probabilistischen Algorithmus M bezeichnet<br />

y ← M(x), daß y die Ausgabe von M bei Eingabe x ist. Um den von M verwendeten Zufall r<br />

explizit zu machen, schreiben wir auch y = M(x; r).<br />

1 Motivation<br />

Szenario: <strong>sichere</strong> Nachrichtenübermittlung. Angenommen, Alice möchte Bob eine geheimzuhaltende<br />

Nachricht über eine un<strong>sichere</strong> Datenleitung schicken. Mit un<strong>sichere</strong>r“ Datenleitung sei<br />

”<br />

hier zunächst gemeint, daß ein hypothetischer Angreifer alle über die Leitung gesendeten Signale<br />

mithört. Will man erreichen, daß der Angreifer die zu versendene Nachricht nicht erfährt, ist also zu<br />

vermeiden, die Nachricht im Klartext zu senden. Stattdessen sollten Maßnahmen ergriffen werden,<br />

die Nachricht vor dem Transport über die un<strong>sichere</strong> Leitung geeignet zu schützen. Dies kann durch<br />

Verschlüsseln der Nachricht erreicht werden.<br />

Secret-Key-Verschlüsselung. Bei Nutzung eines Secret-Key-Verschlüsselungsschemas (kurz:<br />

eines SKE-Schemas) verfügen Alice und Bob über einen gemeinsamen Schlüssel K ∈ {0, 1} ∗ . Sowohl<br />

der Verschlüsselungs- als auch der Entschlüsselungsalgorithmus erfordern K als Eingabe. Der<br />

Schlüssel K ist dabei geheimzuhalten – wird er veröffentlicht, kann ein Angreifer selbst ein gesendetes<br />

Chiffrat entschlüsseln. SKE-Schemata haben den Nachteil, daß durch die benötigten geheimen<br />

Schlüssel K eine Schlüsselverteilung benötigt wird. Zudem gibt es bei einem Kommunikationssystem<br />

mit n teilnehmenden Parteien n(n−1)/2 Schlüssel, wobei wir davon ausgehen, daß jedes Paar<br />

von Parteien über einen eigenen Schlüssel verfügt.<br />

Public-Key-Verschlüsselung. Um diesem Mißstand entgegenzuwirken, kann Public-Key-Verschlüsselung<br />

(PKE) verwendet werden. Bei einem PKE-Schema wird eine Nachricht M unter einem<br />

öffentlichen Schlüssel pk verschlüsselt:<br />

∗ Dennis.Hofheinz@kit.edu<br />

C ← Enc(pk, M).<br />

1


Um ein Chiffrat C zu entschlüsseln, muß dabei ein passender geheimer Schlüssel sk genutzt werden:<br />

M ← Dec(sk, C).<br />

Der öffentliche Schlüssel pk allein erlaubt keine Entschlüsselung. Damit ist es prinzipiell möglich,<br />

daß pk veröffentlicht wird. Insbesondere kann pk von allen Sendern genutzt werden, die Nachrichten<br />

an den Besitzer von sk verschlüsseln und senden möchten. Es sind also bei n Parteien im System<br />

nur n Schlüsselpaare nötig.<br />

2 Überblick<br />

In dieser Vorlesung sollen folgende Themen behandelt werden:<br />

Definitionen. Wir werden nach einer sinnvollen und nützlichen Definition von PKE-Schemata<br />

und ihrer Sicherheit suchen. Dabei werden wir Wert darauf legen, Konzepte wie asymptotische<br />

Sicherheit und die Unterscheidung verschiedener Bedrohungsarten zu motivieren und zu<br />

erklären.<br />

Konstruktionen. Wir werden Beispiele für <strong>sichere</strong> und effiziente Konstruktionen von PKE-Systemen<br />

angeben. Hierbei soll Wert darauf gelegt werden, die Sicherheit der Systeme – in einem<br />

festgelegten Rahmen und unter vereinbarten Annahmen und Definitionen – mathematisch zu<br />

beweisen.<br />

Techniken. Wir werden Techniken kennenlernen, um Sicherheitsbeweise – damit sind hier Reduktionsbeweise<br />

im Sinne der Komplexitätstheorie gemeint – zu führen.<br />

Dreh- und Angelpunkt unserer Betrachtungen werden PKE-Schemata sein. Jedoch werden wir<br />

gelegentlich auch andere, verwandte kryptographische Systeme betrachten, etwa digitale Signaturschemata.<br />

Insbesondere können im Umfeld von PKE-Schemata entwickelte Techniken auch in<br />

anderen Kontexten als sehr nützlich erkannt werden.<br />

3 Definition von Public-Key-Verschlüsselungsschemata<br />

Ein erster Versuch. Zunächst wollen wir das Objekt unserer Untersuchungen definieren. Beginnen<br />

wir dazu zunächst mit einem Definitionsversuch:<br />

Definition 3.1 (PKE-Schema, erster Versuch). Ein PKE-Schema PKE mit Nachrichtenraum M ⊆<br />

{0, 1} ∗ besteht aus drei probabilistischen Algorithmen (Gen, Enc, Dec):<br />

Schlüsselgenerierung. Gen(ε) gibt bei leerer Eingabe ε ein Schlüsselpaar (pk, sk) aus.<br />

Verschlüsselung. Enc(pk, M) gibt bei Eingabe eines öffentlichen Schlüssels pk und einer Nachricht<br />

M ∈ M ein Chiffrat C aus.<br />

Entschlüsselung. Dec(sk, C) gibt bei Eingabe eines geheimen Schlüssels sk und eines Chiffrats C<br />

eine Nachricht M ∈ M aus.<br />

Wir fordern Korrektheit in dem Sinne, daß für alle M ∈ M, alle (pk, sk) im Bild von Gen, und<br />

alle C im Bild von Enc(pk, M) immer Dec(sk, C) = M gilt.<br />

Definition 3.1 wäre nicht mit ”<br />

erster Versuch“ annotiert, wenn sie der Weisheit letzter Schluß<br />

wäre. Um die Probleme zu verstehen, die Definition 3.1 verbunden sind, halten wir zunächst fest,<br />

daß kein PKE-Schema im Sinne von Definition 3.1 uneingeschränkt sicher sein kann:<br />

2


Lemma 3.2 (PKE-Unsicherheit gegen unbeschränkte Angreifer). Sei PKE = (Gen, Enc, Dec) ein<br />

PKE-Schema im Sinne von Definition 3.1. Dann existiert ein deterministischer Algorithmus A,<br />

der<br />

M ← A(pk, C)<br />

für alle M ∈ M und alle möglichen (pk, sk) ← Gen(ε) und C ← Enc(pk, M) erfüllt.<br />

Beweis. A sucht mit vollständiger Suche nach M ′ ∈ M, R ′ ∈ {0, 1} ∗ mit C = Enc(pk, M ′ ; R ′ ) und<br />

gibt das erste so gefundene M ′ aus. Bei Eingabe (pk, C) wie im Lemma existieren solche M ′ , R ′ ;<br />

der Algorithmus terminiert also. Andererseits impliziert<br />

Enc(pk, M ′ ; R ′ ) = C = Enc(pk, M; R) (1)<br />

wegen der angenommenen Korrektheit von PKE schon M ′ = M. (Um dies einzusehen, wende man<br />

Dec(sk, ·) auf (1) an.)<br />

Selbstverständlich ist der Angreifer A aus Lemma 3.2 alles andere als effizient. Es bleibt also<br />

zu hoffen, daß man ein PKE-Schema angeben kann, daß sicher zumindest gegen effiziente Angriffe<br />

ist. Aber auch hier ist etwas Vorsicht geboten:<br />

Lemma 3.3 (PKE-Unsicherheit mit kleiner Wahrscheinlichkeit). Sei PKE = (Gen, Enc, Dec) ein<br />

PKE-Schema im Sinne von Definition 3.1. Dann existiert ein probabilistischer Algorithmus A mit<br />

etwa derselben Laufzeit wie Enc, der<br />

A(pk, C) ∈ {⊥, M} und Pr [M ← A(pk, C)] > 0<br />

für alle M ∈ M und alle möglichen (pk, sk) ← Gen(ε) und C ← Enc(pk, M) erfüllt.<br />

Beweis. Man betrachte das A aus dem Beweis von Lemma 3.2; statt jedoch eine vollständige Suche<br />

über M ′ , r ′ durchzuführen rate man M ′ ∈ M, r ′ ∈ {0, 1} ∗ . (Hierzu kann eine beliebige Verteilung<br />

X mit Pr [X = x] > 0 für alle x ∈ {0, 1} ∗ verwendet werden.)<br />

Asymptotische Sicherheit. Es existieren also generische – allerdings entweder ineffiziente oder<br />

nur selten erfolgreiche – Angriffe auf PKE-Schemata. Wir können also nur auf eine Sicherheitsaussage<br />

der Form<br />

Jeder effiziente Angriff gegen PKE hat höchstens mit kleiner Wahrscheinlichkeit Erfolg.<br />

hoffen. Hierbei ist noch zu definieren, was ”<br />

effiziente“ Angriffe und ”<br />

kleine Wahrscheinlichkeiten“<br />

sind. Eine Möglichkeit hierzu wäre etwa,<br />

Effiziente Angreifer := Algorithmen mit Laufzeit ≤ 2 80<br />

Kleine Wahrscheinlichkeiten := Wahrscheinlichkeiten ≤ 2 −80<br />

zu setzen. Ein Schema, daß in diesem Sinne sicher wäre, dürfte man wohl als ”<br />

intuitiv sicher“<br />

bezeichnen können. Allerdings hat eine solche Sicherheitsdefinition Nachteile:<br />

3


Mangelnde Skalierbarkeit. Durch algorithmische Fortschritte verändern sich Komplexitätsabschätzungen.<br />

Beispielsweise wurde 1977 geschätzt, daß die Faktorisierung einer 429-Bit-Zahl<br />

mehrere Millionen Jahre beanspruchen würde. 1994 wurden erstmals Zahlen dieser Größe<br />

durch verteilte Berechnungen faktorisiert. Das heißt auch, daß heute noch aktuelle konkrete<br />

Abschätzungen für die Erfolgswahrscheinlichkeit eines Angriffs oder die Komplexität einer<br />

Berechnung in absehbarer Zukunft veraltet sein könnten. Aus diesem Grund scheint es gewagt,<br />

konkrete Schranken für die Sicherheit eines Schemas (und die Klassifikation von ”<br />

<strong>sichere</strong>n“<br />

Schemata) anzugeben.<br />

Mangelnde technische Handhabbarkeit. Bezeichnet man ein Schema genau dann als ”<br />

sicher“,<br />

wenn es keine Angriffe mit Erfolgswahrscheinlichkeit größer als 2 −80 zuläßt, so könnte eine<br />

Kombination von zwei Instanzen eines <strong>sichere</strong>n Schemas unsicher werden. (Man nehme etwa<br />

an, daß ein Angriff auf jede einzelne Instanz die Erfolgswahrscheinlichkeit 2 −80 hat. Dann ist<br />

die Wahrscheinlichkeit, daß ein Angriff auf mindestens eine von zwei Instanzen des Schemas<br />

funktioniert, 2 −79 − 2 −160 > 2 −80 .<br />

Aus diesem Grund werden wir nicht versuchen, ”<br />

effizient“ und ”<br />

kleine Wahrscheinlichkeit“ wie oben<br />

konkret zu definieren. Stattdessen werden wir PKE-Schemata als komplexitätstheoretische Objekte<br />

auffassen, die einen expliziten, unär kodierten Sicherheitsparameter 1 k (mit k ∈ N) als Eingabe<br />

erhalten. Mit größerem Sicherheitsparameter soll – intuitiv gesprochen – mehr Sicherheit garantiert<br />

werden. Das bedeutet, daß<br />

• das Schema selbst eine Zeitkomplexität haben darf, die polynomiell in k ist,<br />

• Angriffe polynomiell in k sein dürfen (aber nicht aufwendiger),<br />

• der Erfolg eines Angriffs – als Funktion in k – ”<br />

klein“ sein muß.<br />

Als ”<br />

kleine“ Funktionen (um einen Angriffserfolg zu beschränken) bieten sich verschiedene Möglichkeiten<br />

an: Man könnte fordern, daß eine Funktion f(k) ”<br />

klein“ ist, wenn lim k→∞ f(k) = 0 oder gar<br />

f(k) ≤ 2 −k ist. Wir werden uns hier für die derzeit gängigste Formalisierung ”<br />

kleiner“ Funktionen<br />

entscheiden:<br />

Definition 3.4 (Vernachlässigbare Funktion). Eine Funktion f : N → R ist vernachlässigbar,<br />

wenn gilt:<br />

∀c ∈ N ∃k 0 ∈ N ∀k > k 0 : |f(k)| < 1 k c .<br />

Eine vernachlässigbare Funktion verschwindet also asymptotisch schneller als jedes Polynom.<br />

Es ist beispielsweise k − log k vernachlässigbar, k −1000 allerdings nicht.<br />

Weiter definieren wir<br />

Definition 3.5 (PPT). Ein probabilistischer Algorithmus ist PPT (für probabilistic polynomialtime),<br />

wenn er polynomielle Zeitkomplexität in der Länge der ersten Eingabe hat.<br />

So ausgestattet können wir nun unsere Definition eines PKE-Schemas leicht verfeinern (unterlegt<br />

dabei die Veränderungen gegenüber Definition 3.1):<br />

Definition 3.6 (PKE-Schema). Ein PKE-Schema PKE mit Nachrichtenraum M k ⊆ {0, 1} ∗ besteht<br />

aus drei PPT-Algorithmen (Gen, Enc, Dec):<br />

Schlüsselgenerierung. Gen(1 k ) gibt bei Eingabe 1 k ein Schlüsselpaar (pk, sk) aus.<br />

Verschlüsselung. Enc(pk, M) gibt bei Eingabe eines öffentlichen Schlüssels pk und einer Nachricht<br />

M ∈ M k ein Chiffrat C aus.<br />

4


Entschlüsselung. Dec(sk, C) gibt bei Eingabe eines geheimen Schlüssels sk und eines Chiffrats C<br />

eine Nachricht M ∈ M k ∪ {⊥} aus.<br />

Wir fordern Korrektheit in dem Sinne, daß für alle k ∈ N, alle M ∈ M k , alle (pk, sk) im Bild von<br />

Gen(1 k ), und alle C im Bild von Enc(pk, M) immer Dec(sk, C) = M gilt.<br />

Die spezielle Ausgabe ⊥ von Dec signalisiert hierbei, daß die Entschlüsselung fehlgeschlagen ist.<br />

4 Sicherheitsdefinitionen<br />

Vorbemerkungen. Tasten wir uns nun vor zu einer ersten Sicherheitsdefinition. Wir haben<br />

bereits festgehalten:<br />

• Angriffe sollten effizient, also PPT sein, und<br />

• Angriffserfolge sollten vernachlässigbar sein.<br />

Es ist aber noch nicht klar, was das Ziel eines Angriffs sein soll. Mehrere Ziele sind denkbar:<br />

• Den geheimen Schlüssel (und damit eine universelle Methode, um zu entschlüsseln) aus dem<br />

öffentlichen Schlüssel berechnen.<br />

• Ein gegebenes Chiffrat entschlüsseln (also die zugehörige Nachricht finden).<br />

• (Möglicherweise begrenzte) Informationen über die verschlüsselte Nachricht bei gegebenem<br />

Chiffrat finden.<br />

Man beachte hierbei, daß diese Ziele in absteigender Reihenfolge der Schwierigkeit angegeben sind.<br />

Findet man beispielsweise einen geheimen Schlüssel, so ist es damit auch möglich, jedes gegebene<br />

Chiffrat zu entschlüsseln. Je nach Einsatzzweck können auch speziellere Anforderungen existieren.<br />

(Wir werden diesbezüglich noch ein konkretes Beispiel kennenlernen.) Generell werden wir aber<br />

daran interessiert sein, eine möglichst universelle Sicherheitsdefinition zu finden, die Angriffe in<br />

einer Vielzahl von Szenarien ausschließt. Anders gesagt: wir sind daran interessiert, die Sicherheit<br />

eines Schemas unabhängig vom Einsatzzweck zu analysieren.<br />

Einwegeigenschaft der Verschlüsselung.<br />

schwachen Definition:<br />

Beginnen wir zunächst mit einer vergleichsweise<br />

Definition 4.1 (OW-CPA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema mit für jedes k endlichem<br />

Nachrichtenraum M k . Sei A ein PPT-Algorithmus. Sei<br />

[<br />

]<br />

Adv ow-cpa<br />

PKE,A (k) := Pr Exp ow-cpa<br />

PKE,A (k) = 1 ,<br />

wobei das Experiment Exp ow-cpa<br />

PKE,A<br />

wie folgt definiert ist:<br />

Experiment Exp ow-cpa<br />

PKE,A (k)<br />

(pk, sk) ← Gen(1 k )<br />

M ∗ ← M k<br />

C ∗ ← Enc(pk, M ∗ )<br />

M ′ ← A(1 k , pk, C ∗ )<br />

if M ∗ = M ′ then return 1<br />

else return 0<br />

PKE ist OW-CPA-sicher (für one-way under chosen-plaintext attacks“), falls für jeden PPT-<br />

”<br />

Algorithmus A die Funktion Adv ow-cpa<br />

PKE,A<br />

(k) vernachlässigbar ist.<br />

5


Es ist sofort klar, wo das Problem dieser Definition liegt: Die Auswahl der ”<br />

Zielnachricht“ M ∗<br />

erfolgt relativ willkürlich: M ∗ wird gleichverteilt aus M k gezogen. Es sind PKE-Schemata denkbar,<br />

die zwar Definition 4.1 erfüllen, die jedoch einige feste Nachrichten wie ”<br />

ja“ oder ”<br />

nein“ immer<br />

unsicher verschlüsseln. (Man denke etwa an ein Schema, bei dem immer ja ← Enc(pk, ja) und<br />

nein ← Enc(pk, nein) gilt.) Dennoch wird sich später Definition 4.1 als nützliches Hilfsmittel<br />

erweisen, um leistungsfähigere PKE-Schemata zu konstruieren.<br />

OW-CPA-Sicherheit und die Größe des Nachrichtenraums. Eine erste Beobachtung zeigt,<br />

daß Definition 4.1 überdies nur bei hinreichend großem Nachrichtenraum Sinn ergibt:<br />

Lemma 4.2 (OW-CPA-Unmöglichkeit bei kleinem Nachrichtenraum). Sei PKE ein PKE-Schema<br />

mit Nachrichtenraum M k ⊆ {0, 1} k , so daß 1/|M k | als Funktion in k nicht-vernachlässigbar ist.<br />

Dann ist PKE nicht OW-CPA-sicher.<br />

Beweis. Der Angreifer A, der unabhängig von der Eingabe M ′ ← M k wählt, erzielt<br />

was nach Annahme nicht-vernachlässigbar ist.<br />

Adv ow-cpa<br />

PKE,A (k) = Pr [ M = M ′] = 1<br />

|M k | ,<br />

Selbstverständlich hätten wir auch Adv ow-cpa<br />

PKE,A<br />

anders definieren können, beispielsweise durch<br />

[<br />

]<br />

Adv ow-cpa<br />

PKE,A (k) := Pr Exp ow-cpa<br />

PKE,A (k) = 1 − 1/|M k |. In diesem Fall könnte man auch hoffen, OW-<br />

CPA-Sicherheit bei kleinem Nachrichtenraum zu erreichen. (In der Tat würde dann das noch einzuführende<br />

Lemma 4.4 auch bei kleinem Nachrichtenraum gelten.) Wir haben uns in Definition 4.1<br />

für eine OW-CPA-Formulierung ohne Korrekturterm“ 1/|M ” k | entschieden, da eine solche Formulierung<br />

intuitiv naheliegender erscheint und eine absolute“ Sicherheit unabhängig von der Größe<br />

”<br />

des Nachrichtenraums garantiert.<br />

Ununterscheidbarkeit von Chiffraten. Es stellt sich die Frage, wie eigentlich die Nachricht<br />

M ∗ gewählt wird, deren Chiffrat A schließlich entschlüsseln soll. In einer konkreten Anwendung<br />

wird diese Nachricht einer bestimmten, anwendungsspezifischen Verteilung genügen. Überdies kann<br />

es in einigen Anwendungen ausreichen, sagen wir, die erste Hälfte von M ∗ zu finden, um die Anwendung<br />

zu schädigen. (Man denke an Nachrichten der Form Leider müssen wir Ihnen mitteilen,<br />

”<br />

...“ bzw. Wir freuen uns, Ihnen mitteilen zu dürfen, ...“.)<br />

”<br />

Einen Ausweg bietet hier die Möglichkeit, A selbst die zu verschlüsselnde Nachricht M ∗ wählen<br />

zu lassen. Natürlich kann dann nicht mehr das Angriffsziel sein, M ∗ zu finden. Vielmehr soll A nun<br />

zwischen den Chiffraten von zwei selbstgewählten Nachrichten unterscheiden:<br />

Definition 4.3 (IND-CPA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema. Sei A ein PPT-Algorithmus.<br />

Sei<br />

[<br />

]<br />

Adv ind-cpa<br />

PKE,A (k) := Pr Exp ind-cpa<br />

PKE,A (k) = 1 − 1 2 ,<br />

wobei das Experiment Exp ind-cpa<br />

PKE,A<br />

wie folgt definiert ist:<br />

6


Experiment Exp ind-cpa<br />

PKE,A (k)<br />

(pk, sk) ← Gen(1 k )<br />

(M 0 , M 1 , state) ← A(1 k , find, pk)<br />

b ← {0, 1}<br />

C ∗ ← Enc(pk, M b )<br />

b ′ ← A(1 k , attack, state, C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

A heißt gültig, wenn es in Exp ind-cpa<br />

PKE,A<br />

immer |M 0| = |M 1 | garantiert. PKE ist IND-CPA-sicher<br />

(für indistinguishable under chosen-plaintext attacks“), falls für jedes gültige A die Funktion<br />

”<br />

(k) vernachlässigbar ist.<br />

Adv ind-cpa<br />

PKE,A<br />

Man beachte, daß Definition 4.3 nicht von einem PKE-Schema mit deterministischer Verschlüsselung<br />

Enc (und nichttrivialem Nachrichtenraum) erfüllt werden kann. Ein IND-CPA-Angreifer<br />

A könnte bei deterministischer Verschlüsselung zwei beliebige verschiedene, aber gleich lange Nachrichten<br />

M 0 , M 1 wählen und bei attack-Eingabe das erhaltene Chiffrat mit Enc(pk, M 0 ) und Enc(pk, M 1 )<br />

vergleichen.<br />

Universalität der Definition. Ein gewichtiger Vorteil der IND-CPA-Definition ist ihre Universalität:<br />

Es existieren eine Reihe von äquivalenten Sicherheitsdefinitionen für PKE-Schemata. Beispielsweise<br />

fordert ROR-CPA-Sicherheit, daß kein effizienter Angreifer ein Verschlüsselungsorakel<br />

(das also bei Eingabe M immer Enc(pk, M) liefert) unterscheiden kann von einem Orakel, das bei<br />

Eingabe M immer Enc(pk, R) liefert, für zufälliges R ∈ {0, 1} |M| derselben Länge wie M. Es kann<br />

dabei einfach eingesehen werden, daß ROR-CPA-Sicherheit und IND-CPA-Sicherheit äquivalent<br />

sind. Ähnliches gilt für semantische Sicherheit; semantische Sicherheit fordert, daß jede Funktion<br />

f(M) einer Nachricht M unter Kenntnis eines Chiffrats von M nicht signifikant besser approximiert<br />

werden kann als ohne Kenntnis dieses Chiffrats. Dies soll für beliebige Nachrichtendistributionen,<br />

beliebige (selbst nicht-berechenbare) Funktionen f, und selbst wenn beliebige zusätzliche Information<br />

h(M) über M zur Verfügung steht.<br />

Zum Verbergen der Nachrichtenlänge. Wir lassen in Definition 4.3 nur Angreifer zu, die<br />

versuchen, Chiffrate von gleich langen Nachrichten (|M 0 | = |M 1 |) zu unterscheiden. Es wird also<br />

geduldet, daß beispielsweise Chiffrate von Nachrichten der Länge k unterschieden werden können<br />

von Chiffraten der Länge k + 1. (Anders gesagt: Wir fordern nicht, daß Verschlüsseln die Länge<br />

einer Nachricht verbirgt.) Diese Einschränkung der Sicherheit ergibt sich aus einer praktischen<br />

Notwendigkeit: Ein (mittels Gen erzeugter) öffentlicher Schlüssel pk und ein (mittels Enc(pk, ·)<br />

erzeugtes) Chiffrat C legen schon eindeutig eine Nachricht fest. Es gibt also mindestens so viele<br />

Chiffrate wie Nachrichten. Ein Abzählargument liefert, daß also zwischen Nachrichtenlänge und<br />

Chiffratlänge ein Zusammenhang bestehen muß. Anders gesagt: Die Länge eines Chiffrats läßt –<br />

in einem gewissen Umfang – Rückschlüsse auf die Länge der verschlüsselten Nachricht zu. Es kann<br />

also die Nachrichtenlänge zumindest nicht vollständig verborgen werden.<br />

Zusammenhang zwischen OW-CPA und IND-CPA-Sicherheit. Es ist relativ einfach einzusehen,<br />

daß IND-CPA-Sicherheit schon OW-CPA-Sicherheit impliziert (sofern Lemma 4.2 dies<br />

zuläßt):<br />

7


Lemma 4.4 (IND-CPA ⇒ OW-CPA). Sei PKE ein PKE-Schema mit Nachrichtenraum M k ⊆<br />

{0, 1} k , so daß 1/|M k | als Funktion in k vernachlässigbar ist. Ist dann PKE IND-CPA-sicher, so<br />

ist PKE auch OW-CPA-sicher.<br />

Beweis. Sei also PKE = (Gen, Enc, Dec) IND-CPA-sicher. Um zu zeigen, daß PKE auch OW-<br />

CPA-sicher ist, müssen wir für einen beliebigen PPT-Algorithmus A zeigen, daß Adv ow-cpa<br />

PKE,A<br />

(k) vernachlässigbar<br />

ist. Sei also A gegeben. Wir konstruieren einen PPT-Algorithmus B aus A wie folgt:<br />

Algorithmus B(1 k , find, pk)<br />

M 0 ← M k<br />

M 1 ← (M k \ {M 0 })<br />

state := (M 0 , M 1 )<br />

return (M 0 , M 1 , state)<br />

Algorithmus B(1 k , attack, state, C ∗ )<br />

parse state =: (M 0 , M 1 )<br />

M ← A(1 k , pk, C ∗ )<br />

if M = M 0 then return 0<br />

elseif M = M 1 then return 1<br />

else return 0<br />

Zunächst ist offenbar |M 0 | = |M 1 | = k, und deshalb B gültig im Sinne von Definition 4.3. Nach<br />

Annahme ist also Adv ind-cpa<br />

PKE,B<br />

(k) vernachlässigbar. Wie wir sogleich zeigen werden, gilt weiter<br />

Adv ind-cpa<br />

PKE,B<br />

(k) ≥ Advow-cpa<br />

PKE,A (k)/2 − 1/|M k| (2)<br />

für hinreichend großes k, woraus das Lemma folgt. Es genügt also, (2) zu zeigen. Sei invert das<br />

Ereignis, daß A bei einer Ausführung von B tatsächlich C ∗ invertiert, also die Nachricht M mit<br />

M = Dec(sk, C ∗ ) findet. Weil sowohl M 0 als auch M 1 für sich genommen gleichverteilt über M k<br />

sind, gilt ε := Pr [invert] = Adv ow-cpa<br />

PKE,A<br />

(k). Weiter ist<br />

Adv ind-cpa<br />

PKE,B (k) + 1/2 = Pr [ b = b ′]<br />

Nun gilt wiederum<br />

Pr [ b = b ′ | ¬invert ] = 1 2<br />

= Pr [ b = b ′ | invert ] Pr [invert] + Pr [ b = b ′ | ¬invert ] Pr [¬invert]<br />

= 1 · ε + Pr [ b = b ′ | ¬invert ] (1 − ε).<br />

(<br />

Pr<br />

[<br />

b = b ′ | ¬invert, b = 0 ] + Pr [ b = b ′ | ¬invert, b = 1 ])<br />

= 1 2 (Pr [M ≠ M 1 | ¬invert, b = 0] + 0)<br />

(∗)<br />

≥ 1 (<br />

)<br />

1<br />

1 −<br />

,<br />

2 |M k | − 1<br />

wobei (∗) nutzt, das M 1 selbst bei bekanntem M 0 gleichverteilt über einer Menge der Kardinalität<br />

|M k | − 1 ist. Einsetzen ergibt<br />

Adv ind-cpa<br />

PKE,B (k) ≥ ε + 1 (<br />

)<br />

1<br />

1 −<br />

(1 − ε) − 1 2 |M k | − 1<br />

2 = ε 2 − 1 − ε<br />

2|M k | − 2 ,<br />

was wiederum (2) für hinreichend großes k zeigt.<br />

8


5 Annahmen und erste Reduktionen<br />

PKE-Sicherheit braucht Annahmen. Man könnte nun hoffen, ein PKE-Schema zusammen<br />

mit einem Beweis seiner IND-CPA-Sicherheit anzugeben. Es ist allerdings problematisch, einen<br />

solchen Beweis angeben zu wollen, ohne weitere Annahmen zu machen:<br />

Lemma 5.1 (Notwendigkeit von Annahmen für PKE-Sicherheit). Angenommen, es existiert ein<br />

PKE-Schema, welches OW-CPA-sicher ist. Dann folgt P ≠ NP.<br />

Beweis. Betrachten wir die Sprache<br />

L PKE := { (pk, C, M) | C = Enc(pk, M; R) für ein R und einen Präfix M von M } .<br />

Offenbar gilt L PKE ∈ NP: Ein passender Zeuge für (pk, C, M) ∈ L PKE ist (M, R) mit C =<br />

Enc(pk, M; R). Nehmen wir nun zum Widerspruch an, daß L PKE ∈ P ist; wir zeigen, daß dies<br />

der OW-CPA-Sicherheit von PKE widerspricht. Sei genauer D ein Polynomialzeit-Algorithmus, der<br />

L PKE entscheidet. Bei gegebenen pk und C = Enc(pk, M; R) kann mittels D durch bitweise Suche<br />

M gefunden werden. Es läßt sich so aus D ein PPT-Algorithmus A mit<br />

Adv ow-cpa<br />

PKE,A (k) = 1<br />

konstruieren, was der OW-CPA-Sicherheit von PKE widerspricht.<br />

Es ist nicht realistisch, zu hoffen, daß beim Sicherheitsbeweis eines PKE-Schemas ”<br />

nebenbei“<br />

P ≠ NP bewiesen wird. Deshalb können wir nur auf Sicherheitsaussagen der Form<br />

Wenn ein geeignetes Problem schwierig ist, dann ist Schema PKE IND-CPA-sicher.<br />

hoffen. Im folgenden sollen einige ”<br />

geeignete Berechenbarkeitsprobleme“ vorgestellt werden. (Es<br />

erübrigt sich beinahe, zu erwähnen, daß die Schwierigkeit jedes dieser Probleme schon P ≠ NP<br />

impliziert.)<br />

Faktorisierungsbasierte Probleme. Als eine der nützlichsten mathematischen Plattformen für<br />

kryptographische Anwendungen haben sich Ringe der Form Z N := Z/NZ ( Rechnung modulo N“)<br />

”<br />

für ein Produkt N = P Q für zwei hinreichend große Primzahlen P, Q erwiesen. Wir nehmen hierfür<br />

einen geeigneten PPT-Algorithmus GenN an, der bei Eingabe 1 k verschiedene Primzahlen P > 2<br />

und Q > 2 wählt und N, P, Q für N = P Q ausgibt. (Beispielsweise könnte man P und Q als<br />

gleichverteilt gewählte k-Bit-Primzahlen setzen.)<br />

Verbunden mit Z N ergeben sich folgende Annahmen.<br />

Faktorisierungsannahme. Es ist schwierig, N zu faktorisieren. Genauer nehmen wir an, daß für<br />

jeden PPT-Algorithmus A die Funktion<br />

[<br />

]<br />

Adv fac<br />

GenN,A (k) := Pr Exp fac<br />

GenN,A (k) = 1<br />

vernachlässigbar ist.<br />

RSA-Annahme. Es ist schwierig, bei gegebenen N, e ∈ Z ∗ (P −1)(Q−1) und y ∈ Z N ein x ∈ Z N<br />

mit y = x e mod N zu finden. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A die<br />

Funktion<br />

Adv rsa<br />

GenN,A (k) := Pr [ Exp rsa<br />

GenN,A (k) = 1]<br />

vernachlässigbar ist.<br />

9


Starke RSA-Annahme. Es ist schwierig, bei gegebenen N und y ∈ Z N ein Tupel (x, e) mit<br />

x ∈ Z N und e ≥ 2 zu finden, das x e = y mod N erfüllt. Genauer nehmen wir an, daß für<br />

jeden PPT-Algorithmus A die Funktion<br />

Adv srsa<br />

GenN,A (k) := Pr [ Exp srsa<br />

GenN,A (k) = 1]<br />

vernachlässigbar ist.<br />

Die verwendeten Experimente sind dabei wie folgt definiert:<br />

Experiment Exp fac<br />

GenN,A (k)<br />

(N, P, Q) ← GenN(1 k )<br />

D ← A(1 k , N)<br />

if D ∈ {P, Q} then return 1<br />

else return 0<br />

Experiment Exp rsa<br />

GenN,A (k)<br />

(N, P, Q) ← GenN(1 k )<br />

e ← Z ∗ (P −1)(Q−1)<br />

y ← Z N<br />

x ← A(1 k , N, e, y)<br />

if x e = y mod N then return 1<br />

else return 0<br />

Experiment Exp srsa<br />

GenN,A (k)<br />

(N, P, Q) ← GenN(1 k )<br />

y ← Z N<br />

(x, e) ← A(1 k , N, y)<br />

if x e = y mod N<br />

and e ≥ 2 then return 1<br />

else return 0<br />

Offenbar impliziert die starke RSA-Annahme die RSA-Annahme, welche wiederum die Faktorisierungsannahme<br />

impliziert. Unglücklicherweise ist aber nicht bekannt, ob die RSA-Annahme von der<br />

Faktorisierungsannahme impliziert wird.<br />

Ein Beispiel für ein PKE-Schema in Z N . Das ursprünglich von Rivest, Shamir und Adleman<br />

vorgeschlagene RSA-Schema PKE RSA = (Gen RSA , Enc RSA , Dec RSA ) mit Nachrichtenraum M = Z N<br />

ist wie folgt definiert:<br />

Algorithmus Gen RSA (1 k )<br />

(N, P, Q) ← GenN(1 k )<br />

e ← Z ∗ (P −1)(Q−1)<br />

d := 1/e mod (P − 1)(Q − 1)<br />

(pk, sk) := ((N, e), (N, d))<br />

return (pk, sk)<br />

Algorithmus Enc RSA (pk, M)<br />

parse pk =: (N, e)<br />

C := M e mod N<br />

return C<br />

Algorithmus Dec RSA (sk, C)<br />

parse sk =: (N, d)<br />

M := C d mod N<br />

return M<br />

Wir nehmen dabei eine geeignete Kodierung von Elementen M ∈ Z N als Bitstrings an. Die Korrektheit<br />

von PKE RSA kann mittels des Chinesischen Restesatzes (Rechnung modulo P bzw. Rechnung<br />

modulo Q) eingesehen werden.<br />

Theorem 5.2 (Sicherheit von PKE RSA ). PKE RSA ist OW-CPA-sicher genau dann wenn die RSA-<br />

Annahme gilt.<br />

Beweis. Ein OW-CPA-Angreifer A auf PKE RSA kann direkt als A wie in der RSA-Annahme betrachtet<br />

werden.<br />

Insbesondere ist momentan nicht bekannt, ob die Faktorisierungsannahme schon die OW-CPA-<br />

Sicherheit von PKE RSA impliziert.<br />

Theorem 5.3 (Unsicherheit von PKE RSA ). PKE RSA ist nicht IND-CPA-sicher.<br />

Beweis. Man beachte, daß Enc RSA deterministisch ist. Ein geeigneter IND-CPA-Angreifer A kann<br />

somit die Verschlüsselungen zweier verschiedener gleich langer Nachrichten M 0 , M 1 ∈ Z N durch<br />

Vergleich mit den (eindeutig bestimmten) Enc(pk, M 0 ) bzw. Enc(pk, M 1 ) unterscheiden.<br />

10


Probleme in zyklischen Gruppen. Als weitere sehr nützliche mathematische Plattform haben<br />

sich zyklische Gruppen erwiesen. Sei also (G k ) k∈N eine Familie von nichttrivialen endlichen<br />

zyklischen Gruppen. (Man beachte: Um von asymptotisch schweren Problemen zu reden, ist hier<br />

wieder der Begriff des Sicherheitsparameters nötig.) Der Einfachheit halber werden wir im folgenden<br />

den Index k unterdrücken und G statt G k schreiben. Wir setzen die jeweilige Gruppenordnung<br />

q := |G| > 1 als bekannt voraus. Gens G ⊆ G bezeichnet die Menge der Generatoren von G; wir<br />

setzen voraus, daß die Gleichverteilung auf Gens G effizient berechenbar ist.<br />

Es ergeben sich die folgende Annahmen.<br />

Diskreter-Logarithmus-(DLog-)Annahme. Es ist schwierig, x aus g x zu berechnen. Genauer:<br />

für jeden PPT-Algorithmus A ist die Funktion<br />

]<br />

Adv dlog<br />

G,A<br />

[A(1 (k) := Pr k , g, g x ) = x | g ← Gens G , x ← [q]<br />

vernachlässigbar ist.<br />

Computational-Diffie-Hellman-(CDH-)Annahme. Es ist schwierig, bei gegebenen g, g x , g y<br />

das Element g xy zu berechnen. Genauer nehmen wir an, daß für jeden PPT-Algorithmus A<br />

die Funktion<br />

[<br />

]<br />

Adv cdh<br />

G,A(k) := Pr A(1 k , g, g x , g y ) = g xy | g ← Gens G , x, y ← [q]<br />

vernachlässigbar ist.<br />

Decisional-Diffie-Hellman-(DDH-)Annahme. Es ist schwierig, bei gegebenen g, g x , g y das<br />

Element g xy von einem zufälligen Gruppenelement zu unterscheiden. Genauer nehmen wir<br />

an, daß für jeden PPT-Algorithmus A die Funktion<br />

[<br />

]<br />

Adv ddh<br />

G,A(k) := Pr Exp ddh<br />

G,A(k) = 1 − 1 2<br />

vernachlässigbar ist.<br />

Hierbei ist das Experiment Exp ddh<br />

G,A wie folgt definiert:<br />

Experiment Exp ddh<br />

G,A (k)<br />

g ← Gens G<br />

x, y, z ← [q]<br />

b ← {0, 1}<br />

(g 0 , g 1 ) := (g xy , g z )<br />

b ′ ← A(1 k , g, g x , g y , g b )<br />

if b = b ′ then return 1<br />

else return 0<br />

Es ist einfach einzusehen, daß die CDH-Annahme die DLog-Annahme impliziert. Immer noch relativ<br />

einfach kann auch eingesehen werden, daß die DDH-Annahme die CDH-Annahme impliziert.<br />

(Hier ergibt sich die Schwierigkeit, daß die Korrektheit einer CDH-Lösung nicht unbedingt effizient<br />

verifiert werden kann. Deshalb unterscheide man hier die Fälle 1/|G| vernachlässigbar“ und 1/|G|<br />

” ”<br />

nicht vernachlässigbar“. Im ersten Fall kann wie in Lemma 4.4 verfahren werden, und im zweiten<br />

Fall kann eingesehen werden, daß die DDH-Annahme – genauso wie die CDH-Annahme – nicht<br />

gilt.) Weiter ist einfach einzusehen und im Verlauf nützlich, daß<br />

Adv ddh<br />

G,A(k) = 1 2<br />

(<br />

Pr<br />

[<br />

A(1 k , g, g x , g y , g z ) = 1<br />

11<br />

]<br />

− Pr<br />

[<br />

A(1 k , g, g x , g y , g xy ) = 1<br />

])<br />

(3)


gilt, wobei wie in Exp ddh<br />

G,A die Variablen g ∈ Gens G und x, y, z ∈ [q] gleichverteilt gezogen werden.<br />

(Um (3) einzusehen, konditioniere man die Definition von Adv ddh<br />

G,A auf b = 0 bzw. b = 1.)<br />

Mögliche Instanziierungen. Es gibt Kandidaten für Gruppen G, in denen die oben genannenten<br />

Annahmen gelten. Die zwei populärsten dieser Kandidaten sollen kurz besprochen werden.<br />

Multiplikative Untergruppen von endlichen Körpern. G kann als (echte) Untergruppe der<br />

multiplikativen Gruppe Z ∗ p eines endlichen Körpers Z p (mit primem p) gewählt werden. Hierbei<br />

ist zu beachten, daß zum einen p hinreichend groß gewählt werden sollte, so daß Zahlen<br />

in der Größenordnung von p nicht effizient faktorisiert werden können. (Andernfalls können<br />

mittels des Index-Calculus-Algorithmus effizient diskrete Logarithmen berechnet werden.) p<br />

sollte also nach derzeitigem Kenntnisstand eine Bitlänge von mehr als 1024 haben. Zudem<br />

sollte der Fall G = Z ∗ p (also die Verwendung der gesamten multiplikativen Gruppe) vermieden<br />

werden, da dann die DDH-Annahme verletzt ist:<br />

Lemma 5.4. In Gruppen der Form G = Z ∗ p gilt die DDH-Annahme nicht.<br />

Beweis. Man betrachte den Angreifer A, der bei Eingabe (1 k , g, g x , g y , g b ) die Legendre-<br />

Symbole<br />

( )<br />

( )<br />

( )<br />

g<br />

x<br />

:= (g x ) (p−1)/2 g<br />

y<br />

mod p, := (g y ) (p−1)/2 gb<br />

mod p, := g (p−1)/2<br />

p<br />

p<br />

p<br />

b<br />

mod p<br />

berechnet. Für unsere Zwecke reicht es, über Legendre-Symbole das folgende zu wissen:<br />

( ( ) ( ) g g<br />

x g x<br />

∀g ∈ G, x ∈ Z :<br />

∈ {−1, 1},<br />

= ;<br />

p)<br />

p p<br />

weiter ist (für p > 2) für genau die Hälfte aller Elemente g ∈ G das Legendre-Symbol ( g p ) = 1.<br />

Unser Angreifer A gibt schließlich 1 aus genau dann wenn gilt:<br />

( ( ) ( ) ) ( )<br />

g<br />

x<br />

g<br />

y<br />

gb<br />

= 1 ∨ = 1 ∧ = −1.<br />

p<br />

p<br />

p<br />

Intuitiv sagt A mit einer 1-Ausgabe aus, daß g b nicht den Regeln genügt, den ein g xy genügen<br />

müßte. Etwa aus ( gx gxy<br />

p<br />

) = 1 würde (<br />

p ) = ( gx p )y = 1 folgen. Offenbar gibt demnach A immer<br />

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<br />

gibt A mit Wahrscheinlichkeit 3/4 · 1/2 = 3/8 eine 1 aus. Insgesamt gilt also<br />

Adv ddh<br />

G,A(k) (3)<br />

= 1 ( [<br />

] [<br />

])<br />

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<br />

2<br />

16 ,<br />

was die Behauptung zeigt.<br />

Andererseits sind Gruppen<br />

G :=<br />

{ ( } g<br />

g ∈ Z ∗ p | = 1<br />

p)<br />

(für geeignetes p) durchaus populäre Kandidaten für Gruppen, in denen die DDH-Annahme<br />

nach heutigem Stand gilt.<br />

12


Elliptische Kurven. G kann als geeignete Untergruppe einer elliptischen Kurve gewählt werden.<br />

(Hier soll jedoch nicht auf die Definition oder Konstruktion von elliptischen Kurven<br />

eingegangen werden.) Dies hat den Vorteil, das in einer solchen Struktur kein Äquivalent des<br />

Index-Calculus-Algorithmus existiert, weshalb Gruppen sehr viel kleinerer Ordnung und Darstellung<br />

(im Vergleich zu G ⊆ Z ∗ p) gewählt werden können. Auf diese Weise können Gruppen<br />

gewählt werden, bei denen nach heutigem Stand die DDH-Annahme gilt und deren Elemente<br />

durch etwa 200 Bits repräsentiert werden können.<br />

Eine wichtige Bemerkung hierzu: es ist gängig, zyklische Gruppen G einer primen Ordnung q zu<br />

wählen. Dies hat den Vorteil, daß jedes Element g ∈ G \ {1} schon G generiert.<br />

Ein Beispiel für ein PKE-Schema in zyklischen Gruppen. Nehmen wir eine Familie von<br />

Gruppen G wie oben an. Das von ElGamal vorgeschlagene und nach ihm benannte PKE-Schema<br />

PKE ElG = (Gen ElG , Enc ElG , Dec ElG ) mit Nachrichtenraum M = G ist wie folgt definiert:<br />

Algorithmus Gen ElG (1 k )<br />

g ← Gens G<br />

x ← [q]<br />

(pk, sk) := ((g, g x ), x)<br />

return (pk, sk)<br />

Algorithmus Enc ElG (pk, M)<br />

parse pk =: (g, X)<br />

y ← [q]<br />

C := (g y , X y · M)<br />

return C<br />

Algorithmus Dec ElG (sk, C)<br />

set x := sk<br />

parse C =: (Y, Z)<br />

M := Z/Y x<br />

return M<br />

Wir nehmen dabei eine geeignete Kodierung von Elementen M ∈ G als Bitstrings an. Korrektheit<br />

von PKE ElG gilt wegen<br />

X y = (g x ) y = g xy = (g y ) x = Y x .<br />

An PKE ElG ist interessant, daß Verschlüsselung randomisiert erfolgt: Ein fester Klartext M kann<br />

zu q verschiedenen Chiffraten C führen, abhängig vom verwendeten Zufall y.<br />

Theorem 5.5 (OW-CPA-Sicherheit von PKE ElG ). PKE ElG ist genau dann OW-CPA-sicher, wenn<br />

die CDH-Annahme gilt.<br />

Beweis. Wir zeigen zunächst, daß die OW-CPA-Unsicherheit von PKE ElG benutzt werden kann, um<br />

die CDH-Annahme zu widerlegen. Man nehme also einen Angreifer A mit nicht-vernachlässigbarem<br />

OW-CPA-Vorteil Adv ow-cpa<br />

PKE ElG ,A<br />

an. Wir konstruieren einen CDH-Angreifer B aus A, der wie folgt<br />

agiert. Bei Eingabe (1 k , g, g x , g y ) wählt B ein zufälliges Element Z ← G und setzt<br />

M ← A(1 k , (g, g x ), (g y , Z)).<br />

Man beachte, daß diese A-Eingaben wie in Exp ow-cpa<br />

Z/M aus. Es gilt<br />

PKE ElG ,A<br />

verteilt sind. Schließlich gibt B den Wert<br />

weshalb<br />

Z/M = g xy ⇐⇒ Z/g xy = M ⇐⇒ Dec(x, (g y , Z)) = M,<br />

Adv cdh<br />

G,B(k) = Adv ow-cpa<br />

PKE ElG ,A (k)<br />

ist und somit B ein erfolgreicher Angreifer auf die CDH-Annahme ist.<br />

Umgekehrt kann ein erfolgreicher CDH-Angreifer in ähnlicher Weise zu einem OW-CPA-Angreifer<br />

auf PKE ElG umgebaut werden.<br />

13


Theorem 5.6 (IND-CPA-Sicherheit von PKE ElG ). PKE ElG ist genau dann IND-CPA-sicher, wenn<br />

die DDH-Annahme gilt.<br />

Beweis. Analog zu Theorem 5.5.<br />

6 Das Schema von Blum und Goldwasser<br />

Die bislang präsentierten Sicherheitsbeweise PKE-Schemata könnten den Eindruck hinterlassen,<br />

daß im wesentlichen schon die Sicherheit des Schemas angenommen wurde. (Der Beweis leistet also<br />

nur eine mehr oder weniger oberflächliche Umformulierung von Annahmen.) Deshalb soll nun ein<br />

PKE-Schema vorgestellt werden, dessen IND-CPA-Sicherheit unter der Faktorisierungsannahme<br />

bewiesen werden kann. Genauer ist das Ziel die Herleitung des folgenden Ergebnisses:<br />

Theorem 6.1 (IND-CPA-Sicherheit unter der Faktorisierungsannahme). Es existiert ein PKE-<br />

Schema PKE BG mit Nachrichtenraum M k = {0, 1} k , welches IND-CPA-sicher unter der Faktorisierungsannahme<br />

ist.<br />

Hierzu ist ein wenig Vorbereitung nötig.<br />

Quadratische Reste. Wir betrachten den Ring Z N für N = P Q mit P = Q = 3 mod 4. (Man<br />

sagt in dem Fall auch, daß N ein Blum-Integer ist.) Die Menge<br />

QR N := { x 2 | x ∈ Z ∗ }<br />

N<br />

ist die Menge der quadratischen Reste modulo N. Sei<br />

Q N :<br />

QR N → QR N<br />

x ↦→ x 2 mod N<br />

die Quadrierungsfunktion auf QR N . Wir machen zunächst einige kleine Beobachtungen:<br />

Lemma 6.2. Q N ist bijektiv.<br />

Beweis. Wegen des Chinesischen Restesatzes wissen wir, daß die Ringisomorphie<br />

Z N<br />

∼ = ZP × Z Q<br />

gilt. Weil P = Q = 3 mod 4 ist, gilt deshalb für die multiplikativen Gruppen<br />

Z ∗ N<br />

∼= Z ∗ P × Z ∗ Q<br />

∼= C P −1 × C Q−1<br />

∼ =<br />

(<br />

C(P −1)/2 × C 2<br />

)<br />

×<br />

(<br />

C(Q−1)/2 × C 2<br />

)<br />

,<br />

wobei C i die (additiv geschriebene) zyklische Gruppe mit i Elementen darstellt und (P − 1)/2<br />

und (Q − 1)/2 ungerade sind. Quadrierung in Z ∗ N<br />

entspricht einer Multiplikation mit 2 in den<br />

(additiv geschriebenen) C i -Komponenten. Deshalb ist eine Quadrierung in Z ∗ N<br />

eine Bijektion auf<br />

den C (P −1)/2 - und C (Q−1)/2 -Komponenten, annihiliert aber die C 2 -Komponenten. Die Quadrate in<br />

QR N sind also genau die Menge C (P −1)/2 × C (Q−1)/2 , und die Quadrierungsfunktion Q N ist auf der<br />

Menge der Quadrate bijektiv.<br />

14


Lemma 6.3. Unter Kenntnis der Faktorisierung N = P Q kann Q −1<br />

N<br />

effizient (d. h. in Polynomialzeit)<br />

berechnet werden.<br />

Beweis. Es ist x e = x e mod |QR N |<br />

für alle x ∈ QR N . Weiter ist nach dem Gesagten QR N eine<br />

Gruppe ungerader Ordnung |QR N | = (P − 1)(Q − 1)/4. Insbesondere hat 2 ein multiplikatives<br />

Inverses modulo |QR N |. Sei nun λ := 2 −1 mod |QR N |, d. h. λ ist die kleinste natürliche Zahl mit<br />

2 · λ = 1 mod |QR N |. Für alle x ∈ QR N gilt<br />

(<br />

x<br />

2 ) λ<br />

= x 2λ = x 2λ mod |QR N | = x 1 mod |QR N | = x 1 = x mod N.<br />

Exponentiation mit λ erlaubt es also, Q N effizient zu invertieren. (Man beachte, daß die Faktorisierung<br />

von N erlaubt, λ effizient zu berechnen.)<br />

Lemma 6.4. Jedes Element y ∈ QR N hat genau vier Quadratwurzeln in Z N ; es existieren also<br />

genau vier Elemente x ∈ Z N mit y = x 2 mod N.<br />

Beweis. Durch den Chinesischen Restesatz wird klar, daß die Quadrate y ∈ QR N genau Elementen<br />

(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 ∼ =<br />

C (P −1)/2 × C 2 hat jedes Quadrat y P ∈ Z ∗ P genau zwei Quadratwurzeln x P und −x P . (Analog<br />

für y Q .) Durch Kombination ergeben sich genau 4 mögliche Quadratwurzeln (x P , x Q ), (x P , −x Q ),<br />

(−x P , x Q ), und (−x P , −x Q ) eines y.<br />

Bemerkung 6.5. Die letzten Resultate (Lemma 6.2, Lemma 6.3, Lemma 6.4) können auch alternativ<br />

bewiesen werden, indem man den Kern des Gruppenhomomorphismus Q ′ N : Z∗ N → QR N mit<br />

Q N (x) = x 2 mod N betrachtet. (Der einzige Unterschied zwischen Q ′ N und Q N besteht im Definitionsbereich.)<br />

Genauer besteht ker(Q ′ N ) aus allen x ∈ Z∗ N mit x2 = 1 mod N. Ähnlich wie im Beweis<br />

von Lemma 6.4 liefert der Chinesische Restesatz, daß es genau 4 solche x = (x P , x Q ) gibt, von<br />

denen genau eines schon ein Quadrat ist. Damit folgt Lemma 6.4 (weil Q ′ N<br />

ein Homomorphismus<br />

ist), und wegen |QR N | = |Z ∗ N<br />

|/4 = (P − 1)(Q − 1)/4 auch Lemma 6.2. Schließlich folgt Lemma 6.3<br />

wie oben.<br />

Von der Faktorisierungsannahme zu Einwegpermutationen. Unter der Faktorisierungsannahme<br />

hat die Quadrierungsfunktion Q N eine für unsere Zwecke nützliche Einwegeigenschaft:<br />

Definition 6.6 (Einwegfunktion, Einwegpermutation). Sei F = (F k ) k∈N eine Familie von Familien<br />

von Funktionen f ∈ F k mit f : X f → Y f über endlichen Mengen X f . Wir nennen F eine Familie<br />

von Einwegfunktionen, falls für jeden PPT-Algorithmus A die Funktion<br />

]<br />

Adv ow<br />

F,A(k) := Pr<br />

[f(A(1 k , f(x))) = f(x) | f ← F k , x ← X f<br />

vernachlässigbar in k ist. Falls zusätzlich jedes f ∈ F k ∈ F bijektiv ist und Y f = X f gilt, heißt F<br />

Familie von Einwegpermutationen. Man beachte, daß dann gilt:<br />

f(A(1 k , f(x))) = f(x) ⇐⇒ A(1 k , f(x)) = x.<br />

Wenn der Bezug zum Sicherheitsparameter klar ist, sagen wir auch manchmal, daß eine einzelne<br />

Funktion f eine Einwegfunktion bzw. Einwegpermutation ist.<br />

15


Lemma 6.7. Unter der Faktorisierungsannahme ist Q N eine Einwegpermutation.<br />

Beweis. Da Q N nach Lemma 6.2 bijektiv ist, reicht es aus, zu zeigen, daß für jeden PPT-Algorithmus<br />

A die Funktion<br />

]<br />

Adv ow<br />

Q N ,A(k) = Pr<br />

[A(1 k , N, Q N (x)) = x | x ← QR N<br />

vernachlässigbar ist. Genauer zeigen wir nun<br />

Adv fac<br />

GenN,B<br />

(k) ≥<br />

Advow Q N ,A (k)<br />

2<br />

für einen geeigneten Faktorisierungsalgorithmus B, den wir aus A konstruieren. Nach Annahme ist<br />

Adv fac<br />

GenN,B vernachlässigbar, weshalb wegen (4) auch Advow Q N ,A vernachlässigbar sein muß. B verfährt<br />

wie folgt:<br />

Algorithmus B(1 k , N)<br />

x B ← Z ∗ N<br />

y = x 2 B mod N<br />

x A ← A(1 k , N, y)<br />

return gcd(x A − x B , N)<br />

Setzen wir zur Analyse x := Q −1<br />

N (y), d. h. x ist die (eindeutige) Quadratwurzel von y in QR N. Da<br />

die Eingabe y von A wie in Definition 6.6 ein gleichverteiltes Element aus QR N ist, gilt<br />

Pr [x A = x] = Adv ow<br />

Q N ,A(k).<br />

Weiter hat y nach Lemma 6.4 in Z ∗ N<br />

genau 4 Quadratwurzeln. Es gibt also 4 mögliche Elemente<br />

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<br />

zwei dieser x i gilt x i ∉ {x, −x}. Wir haben also<br />

Pr [x B ∉ {−x, x}] = 1 2 .<br />

(4)<br />

Zudem sind die Ereignisse ”<br />

x B ∉ {−x, x}“ und As Ausgabe unabhängig, da A nur y, nicht aber x B<br />

als Eingabe erhält. Demnach gilt<br />

Pr [x A = x ∧ x B ∉ {−x, x}] = Pr [x A = x] · Pr [x B ∉ {−x, x}] = Advow<br />

2<br />

Q N ,A<br />

. (5)<br />

Nehmen wir nun x A = x ∧ x B ∉ {x, −x} an. Dann ist x 2 A = y = x2 B<br />

mod N; anders ausgedrückt,<br />

(x A + x B )(x A − x B ) = x 2 A − x2 B<br />

= 0 mod N, weshalb<br />

N = gcd((x A + x B )(x A − x B ), N)| gcd(x A + x B , N) · gcd(x A − x B , N)<br />

eine Faktorisierung von N liefert. Weil x A + x B ≠ 0 mod N und x A − x B ≠ 0 mod N ist, ist diese<br />

Faktorisierung nichttrivial. Demnach faktorisiert B erfolgreich N, sobald x A = x ∧ x B ∉ {x, −x}<br />

gilt. Wegen (5) folgt (4).<br />

16


Zwischenschritt: faktorisierungsbasierte OW-CPA-Sicherheit. Als Zwischenschritt auf<br />

unserem Weg zu einem faktorisierungsbasierten IND-CPA-<strong>sichere</strong>n PKE-Schema betrachte man<br />

das folgende PKE-Schema PKE Rab = (Gen Rab , Enc Rab , Dec Rab ) mit Nachrichtenraum QR N :<br />

Algorithmus Gen Rab (1 k )<br />

(N, P, Q) ← GenN(1 k )<br />

(pk, sk) := (N, (P, Q))<br />

return (pk, sk)<br />

Algorithmus Enc Rab (pk, M)<br />

parse pk =: N<br />

C := Q N (M)<br />

return C<br />

Algorithmus Dec Rab (sk, C)<br />

parse sk =: (P, Q)<br />

M := Q −1<br />

N (C)<br />

return M<br />

Offenbar ist PKE Rab genau dann OW-CPA-sicher, wenn die Funktion Q N eine Einwegpermutation<br />

ist. Mit Lemma 6.7 ergibt sich:<br />

Theorem 6.8 (Sicherheit von PKE Rab ). Unter der Faktorisierungsannahme ist PKE Rab OW-CPAsicher.<br />

PKE Rab ist allerdings nicht IND-CPA-sicher, denn Enc Rab ist deterministisch.<br />

Ununterscheidbarkeit. Als nächstes soll aus der Einwegpermutation Q N eine stärkere Form<br />

von Unvorhersagbarkeit hergeleitet werden. Zunächst definieren wir hierfür einen Begriff für die<br />

Ununterscheidbarkeit von zwei Verteilungen:<br />

Definition 6.9 (Ununterscheidbarkeit). Seien A = (A k ) k∈N und B = (B k ) k∈N zwei Folgen von<br />

Zufallsvariablen. Wir sagen, daß A und B ununterscheidbar sind (geschrieben A ≈ c B), falls für<br />

alle PPT-Algorithmen D die Funktion<br />

[<br />

] [<br />

]<br />

Adv dist<br />

A,B,D(k) := Pr D(1 k , A k ) = 1 − Pr D(1 k , B k ) = 1<br />

vernachlässigbar in k ist.<br />

Bevor wir fortfahren, soll der universelle Charakter von Definition 6.9 herausgestellt werden.<br />

Hierfür definieren wir exemplarisch:<br />

Definition 6.10 (Reihenfolgen-Ununterscheidbarkeit). Wir sagen, daß A = (A k ) k∈N und B =<br />

(B k ) k∈N Reihenfolgen-ununterscheidbar sind (geschrieben A ≈ c 2 B) falls für alle PPT-Algorithmen<br />

D die Funktion<br />

]<br />

Pr<br />

[D(1 k , C b , C 1−b ) = b | b ← {0, 1}, C 0 = A k , C 1 = B k − 1/2<br />

vernachlässigbar in k ist.<br />

Um die Universalität von Definition 6.9 zu illustrieren, zeigen wir:<br />

Lemma 6.11. A c ≈ B ⇔ A c ≈ 2 B, falls A oder B effizient berechenbar sind.<br />

Beweis. Zunächst bemerken wir, daß A und B genau dann Reihenfolgen-ununterscheidbar sind<br />

wenn<br />

[<br />

] [<br />

]<br />

Pr D(1 k , A k , B k ) = 1 − Pr D(1 k , B k , A k ) = 1<br />

(6)<br />

17


vernachlässigbar ist. Es gilt nämlich (wobei wir b ← {0, 1}, C 0 = A k , und C 1 = B k voraussetzen):<br />

( [<br />

] )<br />

2 Pr D(1 k , C b , C 1−b ) = b − 1/2<br />

( [<br />

] [<br />

])<br />

= 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<br />

[<br />

] [<br />

]<br />

= 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<br />

[<br />

] [<br />

]<br />

= Pr D(1 k , C 0 , C 1 ) = 0 + Pr D(1 k , C 1 , C 0 ) = 1 − 1<br />

[<br />

] [<br />

]<br />

= Pr D(1 k , C 1 , C 0 ) = 1 − Pr D(1 k , C 0 , C 1 ) = 1 .<br />

Aus (6) folgt offenbar A ≈ c 2 B ⇒ A ≈ c B. Für die Umkehrung nehmen wir ohne Beschränkung der<br />

Allgemeinheit an, daß A effizient berechenbar ist und bemerken<br />

[<br />

] [<br />

] [<br />

] [<br />

]<br />

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)<br />

[<br />

] [<br />

] [<br />

] [<br />

]<br />

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)<br />

für geeignete PPT-Algorithmen E und F, die die erste bzw. zweite Eingabe A k selbst generieren<br />

und D aufrufen. Nach Annahme sind die rechten Seiten von (7) und (8) vernachlässigbar, weshalb<br />

auch (6) vernachlässigbar sein muß.<br />

Es sind ähnliche Variationen eines ”<br />

intuitiven“ Ununterscheidbarkeitsbegriffs denkbar; jedoch<br />

sollten diese in den meisten Fällen äquivalent zu Definition 6.9 sein.<br />

Von Einwegpermutationen zu Ununterscheidbarkeit.<br />

Definition 6.12 (Hard-Core-Prädikat). Sei H = (H k ) k∈N eine Familie von Familien von Paaren<br />

von Funktionen (f, h) ∈ H k mit f : X f → Y f und h : X f → {0, 1} über endlichen Mengen X f . Wir<br />

sagen (wenn der Bezug zu H klar ist), daß h ein Hard-Core-Prädikat von f ist, falls gilt:<br />

(f(x), h(x))<br />

c<br />

≈ (f(x), U {0,1} ),<br />

wobei (f, h) ← H k , x ← X f und U {0,1} ← {0, 1} unabhängig gezogen werden.<br />

Selbst bei gegebenem f(x) sieht h(x) also aus wie unabhängiger Zufall. Anders gesagt: f(x)<br />

hilft nicht wesentlich dabei, h(x) zu berechnen.<br />

Für x ∈ Z N sei lsb N (x) das niederwertigste Bit von x (also x mod 2) in einer Darstellung von<br />

x als Ganzzahl x ∈ {0, . . . , N − 1}. Wir werden ohne Beweis das folgende Resultat benutzen:<br />

Theorem 6.13 (Hard-Core-Eigenschaft des LSB). Angenommen, Q N ist eine Einwegpermutation.<br />

Dann ist Funktion lsb N ist ein Hard-Core-Prädikat von Q N .<br />

(Für Interessierte: Diese Eigenschaft von lsb N wurde in [1] gezeigt.)<br />

Mittels Theorem 6.13 könnte man schon hoffen, ein unter der Faktorisierungsannahme IND-<br />

CPA-<strong>sichere</strong>s PKE-Schema zu definieren. Man könnte etwa Chiffrate der Form<br />

C := (x 2 , lsb N (x) ⊕ M)<br />

18


(mit M ∈ {0, 1}) erzeugen. Unter Kenntnis der Faktorisierung von N läßt sich x und damit lsb N (x)<br />

berechnen. Andererseits sollte ohne Kenntnis der Faktorisierung lsb N (x) und damit lsb N (x) ⊕ M<br />

wie unabhängiger Zufall aussehen. In der Tat wurde ein ähnliches Schema von Goldwasser und<br />

Micali vorgeschlagen und als IND-CPA-sicher bewiesen. Nachteil des Schemas ist jedoch der kleine<br />

Nachrichtenraum: Es können nur einzelne Bits M ∈ {0, 1} verschlüsselt werden. Wir werden deshalb<br />

an dieser Stelle die bisherigen Gedanken noch etwas weiterentwickeln.<br />

Von einem Bit zu vielen Bits. Unser Vorgehen wird sein, die Anwendung der Quadrierungsfunktion<br />

Q N zu iterieren. Intuitiv wird bei jeder Anwendung ein weiteres Zufallsbit verfügbar,<br />

welches dann direkt zur Verschlüsselung genutzt werden kann. Wir definieren also zunächst<br />

(<br />

)<br />

BBS N (x) := lsb N (x), lsb N (Q N (x)), lsb N (Q 2 N(x)), . . . , lsb N (Q k−1<br />

N (x)) ∈ {0, 1} k .<br />

Lemma 6.14 (Pseudozufallseigenschaft von BBS N ). Unter der Annahme, daß lsb N<br />

Core-Prädikat von Q N ist, gilt<br />

ein Hard-<br />

(N, Q k N(x), BBS N (x))<br />

c<br />

≈<br />

(N, Q k N(x), U {0,1} k),<br />

wobei (N, P, Q) ← GenN(1 k ), und x ← QR N und U {0,1} k ← {0, 1} k unabhängig gleichverteilt sind.<br />

Beweis. Sei ein beliebiger PPT-Algorithmus D gegeben. Wir müssen zeigen, daß Adv dist<br />

A,B,D vernachlässigbar<br />

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<br />

konstruieren wir zunächst aus D einen Algorithmus D ′ , der zwischen (Q N (x), lsb N (x)) und<br />

(Q N (x), U {0,1} ) unterscheidet und dazu wie folgt verfährt:<br />

Algorithmus D ′ (1 k , N, y, z) (mit y ∈ QR N und z ∈ {0, 1})<br />

i ← [k]<br />

u ← {0, 1} i−1<br />

v := (lsb N (y), lsb N (Q N (y)), . . . , lsb N (Q k−i−1<br />

N<br />

(y))) ∈ {0, 1} k−i<br />

w := (u, z, v) ∈ {0, 1} k<br />

b ← D(1 k , N, Q k−i<br />

N<br />

(y), w)<br />

return b<br />

Zur Analyse von D ′ definieren wir für i ∈ {0, . . . , k} und x ∈ QR N die Zufallsvariable<br />

H i,x := (U {0,1} i, lsb N (Q i N(x)), . . . , lsb(Q k−1<br />

N (x))) ∈ {0, 1}k ,<br />

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<br />

gleichverteilter k-Bit-String. Weiter gilt in der Ausführung von D ′ für jedes j ∈ [k]:<br />

Dist [w | i = j, z = lsb N (x)] = Dist [H j−1,x ]<br />

Dist [ ]<br />

w | i = j, z = U {0,1} = Dist [Hj,x ]<br />

ist ein<br />

(9)<br />

19


und somit<br />

[<br />

Adv dist<br />

A,B,D(k) = Pr D(1 k , N, Q k N(x), BBS N (x)) = 1<br />

[<br />

]<br />

= Pr D(1 k , N, Q k N(x), H 0,x ) = 1<br />

(9)<br />

=<br />

k∑<br />

j=1<br />

=<br />

k∑<br />

j=1<br />

]<br />

− Pr<br />

[<br />

]<br />

− Pr D(1 k , N, Q k N(x), U {0,1} k) = 1<br />

[<br />

]<br />

D(1 k , N, Q k N(x), H k,x ) = 1<br />

( [<br />

] [<br />

])<br />

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<br />

( [<br />

] [<br />

])<br />

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<br />

( [ 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 ])<br />

=<br />

Pr [i = j]<br />

j=1<br />

( [<br />

] [<br />

])<br />

= 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<br />

A ′ ,B ′ ,D ′(k)<br />

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<br />

A ′ ,B ′ ,D ′(k)<br />

vernachlässigbar, weshalb auch Adv dist<br />

A,B,D (k) vernachlässigbar ist.<br />

Das Schema von Blum und Goldwasser. Wir sind nun endlich in der Lage, das PKE-Schema<br />

PKE BG := (Gen BG , Enc BG , Dec BG ) von Blum und Goldwasser mit Nachrichtenraum M k = {0, 1} k<br />

vorzustellen und als IND-CPA-sicher zu beweisen:<br />

Algorithmus Gen BG (1 k )<br />

(N, P, Q) ← GenN(1 k )<br />

(pk, sk) := (N, (P, Q))<br />

return (pk, sk)<br />

Algorithmus Enc BG (pk, M)<br />

parse pk =: N<br />

x ← QR N<br />

y := Q k N (x)<br />

C := (y, BBS N (x) ⊕ M)<br />

return C<br />

Algorithmus Dec BG (sk, C)<br />

parse sk =: (P, Q)<br />

parse C =: (y, ρ)<br />

M := BBS N (Q −k<br />

N (y)) ⊕ ρ<br />

return M<br />

Dieses Schema genügt Theorem 6.1, ist also unter der Faktorisierungsannahme IND-CPA-sicher:<br />

Beweis von Theorem 6.1. Nehmen wir einen beliebigen PPT-Angreifer A auf die IND-CPA-Sicherheit<br />

von PKE BG an. Wir konstruieren aus A einen PPT-Unterscheider D mit<br />

Adv dist<br />

A,B,D(k) = Adv ind-cpa<br />

PKE BG ,A(k) (10)<br />

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<br />

ist nach Lemma 6.7, Theorem 6.13 und Lemma 6.14 Adv dist<br />

A,B,D vernachlässigbar. Es reicht also, ein<br />

D anzugeben, das (10) erfüllt.<br />

Sei D wie folgt definiert:<br />

20


Algorithmus D(1 k , N, y, z) (mit y ∈ QR N und z ∈ {0, 1} k )<br />

pk := N<br />

(M 0 , M 1 , state) ← A(1 k , find, pk)<br />

b ← {0, 1}<br />

C ∗ := (y, z ⊕ M b )<br />

b ′ ← A(1 k , attack, state, C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

Man beachte, daß y = Q k N (x) für unbekanntes x gilt. Unterscheiden wir nun die Fälle z = BBS N(x)<br />

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<br />

Verschlüsselung von M b , und D führt das IND-CPA-Experiment Exp ind-cpa<br />

PKE BG ,A<br />

mit A aus. Deshalb ist<br />

[<br />

] [<br />

]<br />

Pr D(1 k , N, Q k N(x), BBS N (x)) = 1 = Pr Exp ind-cpa<br />

PKE BG ,A (k) = 1 = Adv ind-cpa<br />

PKE BG ,A (k) + 1 2 .<br />

Gilt andererseits z = U {0,1} k, so ist auch das Chiffratelement z ⊕ M b (aus Sicht von A) unabhängig<br />

gleichverteilt und insbesondere unabhängig von b. Da b selbst gleichverteilt ist, folgt<br />

[<br />

]<br />

Pr D(1 k , N, Q k N(x), U {0,1} k) = 1 = 1 2 .<br />

Insgesamt können wir also (10) und damit die IND-CPA-Sicherheit von PKE BG folgern.<br />

7 Aktive Sicherheit<br />

Motivation: <strong>sichere</strong> Auktionen. Nehmen wir eine Auktion mit Auktionator A und – der Einfachheit<br />

halber – nur zwei Bietern B 1 und B 2 an. Es soll die Unabhängigkeit der Gebote sichergestellt<br />

werden, wobei aber keine <strong>sichere</strong>n Kanäle zwischen A und B 1 bzw. A und B 2 angenommen<br />

werden sollen.<br />

Es liegt nahe, in dieser Situation auf Public-Key-Verschlüsselungstechniken zurückzugreifen.<br />

Etwa könnte man B 1 und B 2 ihre jeweiligen Gebote unter dem öffentlichen Schlüssel pk A von A<br />

verschlüsselt an A senden lassen. Nehmen wir dabei an, daß das verwendete PKE-Schema PKE =<br />

(Gen, Enc, Dec) IND-CPA-sicher sei.<br />

Man könnte nun hoffen, daß die IND-CPA-Sicherheit von PKE sicherstellt, daß das Gebot M 2<br />

von B 2 unabhängig vom Gebot M 1 von B 1 abgegeben wird, selbst wenn B 2 vor Abgabe des Gebots<br />

C 1 = Enc(pk A , M 1 ) erfährt. Immerhin sichert die IND-CPA-Sicherheit von PKE zu, daß B 2 durch<br />

C 1 keine verwertbare (bzw. effizient nutzbare) Information über M 1 erhält.<br />

Allerdings ist hier Vorsicht geboten: Nehmen wir beispielsweise an, daß das (unter der DDH-<br />

Annahme) IND-CPA-<strong>sichere</strong> ElGamal-Schema PKE = PKE ElG verwendet wird. Nehmen wir weiter<br />

an, daß eine Gruppe G ⊆ Z p für geeignetes p verwendet wird, und daß Gebote M i ∈ G auf<br />

naheliegende Weise als Ganzzahlen M i ∈ {0, . . . , p − 1} interpretiert werden. Man beachte nun, daß<br />

ElGamal homomorph in dem Sinne<br />

Enc(pk, M; r) · Enc(pk, M ′ ; r ′ ) = (g r , X r · M) · (g r′ , X r′ · M ′ )<br />

= (g r+r′ , X r+r′ · MM ′ ) = Enc(pk, MM ′ ; r + r ′ )<br />

21


ist, so daß insbesondere<br />

Enc(pk A , M 1 ; r) · Enc(pk A , 2; r ′ ) = Enc(pk A , 2M 1 , r + r ′ )<br />

gilt. 1 Anders gesagt: Ein unehrlicher Bieter B 2 kann zunächst das verschlüsselte Gebot C 1 =<br />

Enc(pk A , M 1 ) abwarten, dieses mit einer 2-Verschlüsselung multiplizieren und das erhaltene Chiffrat<br />

als eigenes verschlüsseltes Gebot abgeben. Auf diese Weise kann B 2 den Bieter B 1 sicher überbieten<br />

(vorausgesetzt, daß M 1 < p/2 ist), ohne allerdings zu wissen, worauf er geboten hat.<br />

Man beachte, daß B 2 in diesem Fall einen aktiven Angriff durchführt, also nicht nur abhört,<br />

sondern anschließend aktiv in das Geschehen eingreift. Offenbar reicht also IND-CPA-Sicherheit<br />

nicht aus, um (zumindest intuitiv) Sicherheit gegen aktive Angreifer zu garantieren.<br />

Non-Malleability. Im Hinblick auf das gerade vorgestellte Auktionsbeispiel sollte ein intuitiv<br />

<strong>sichere</strong>s“ PKE-Schema die Eigenschaft haben, daß sich aus gegebenen Chiffraten keine neuen ”<br />

Chiffrate von verwandten“ Klartexten konstruieren lassen. Diese spezielle Eigenschaft heißt Non-<br />

”<br />

Malleability und wurde zuerst 1991 formalisiert. Wir werden hier Non-Malleability nicht weiter<br />

thematisieren, da es nur einen Zwischenschritt auf der Suche nach dem“ universellen Sicherheitsbegriff<br />

für PKE-Schemata ”<br />

darstellt.<br />

Gründe für IND-CCA-Sicherheit. Stattdessen werden wir IND-CCA-Sicherheit vorstellen,<br />

eine Variante von IND-CPA-Sicherheit. Ohne zunächst näher darauf einzugehen, wie IND-CCA-<br />

Sicherheit überhaupt definiert ist, sollen hier Gründe vorgestellt werden, warum wir uns im folgenden<br />

auf IND-CCA-Sicherheit konzentrieren:<br />

Realisiert <strong>sichere</strong> Kanäle. Die Untersuchung komplexer Protokolle gestaltet sich einfacher und<br />

modularer, wenn man zunächst <strong>sichere</strong> Kanäle zwischen einigen oder allen Parteien annimmt,<br />

und diese erst später durch PKE-Verschlüsselung implementiert. In diesem Zusammenhang<br />

stellt sich heraus, daß IND-CCA-Sicherheit genau <strong>sichere</strong> Kanäle gegen aktive Angreifer realisiert.<br />

(Damit ist gemeint: Ein IND-CCA-<strong>sichere</strong>s PKE-Schema kann anstelle von <strong>sichere</strong>n<br />

Kanälen in jedem größeren Protokoll genutzt werden, ohne die Sicherheitseigenschaften des<br />

größeren Protokolls zu beeinflussen. Umgekehrt ist jedes PKE-Schema mit dieser Eigenschaft<br />

schon IND-CCA-sicher.)<br />

Impliziert zahlreiche andere Begriffe. Es wurden viele zu IND-CCA-Sicherheit äquivalente<br />

oder zumindest von IND-CCA-Sicherheit implizierte natürliche PKE-Sicherheitsbegriffe gefunden.<br />

Hierzu gehört beispielsweise Non-Malleability. Diese Äquivalenzen sollen später noch<br />

einmal kurz beleuchtet werden, wenn wir IND-CCA-Sicherheit definiert haben.<br />

Kann unter Standardannahmen erfüllt werden. Es existieren effiziente PKE-Schemata, die<br />

unter der Faktorisierungsannahme, der DDH- oder der CDH-Annahme IND-CCA-sicher sind.<br />

In diesem Sinne fordert IND-CCA-Sicherheit nicht zu viel“. Derartige Schemata sollen im<br />

”<br />

Verlauf der Vorlesung noch vorgestellt werden.<br />

Standard in der Literatur. Aus den oben genannten Gründen hat sich mittlerweile IND-CCA-<br />

Sicherheit als Standardbegriff für PKE-Schemata herauskristallisiert.<br />

Definition von IND-CCA-Sicherheit. IND-CCA-Sicherheit steht für indistinguishability under<br />

chosen-ciphertext attacks“ und stellt eine Verschärfung von IND-CPA-Sicherheit dar. ”<br />

Tatsächlich<br />

1 Der Einfachheit halber nehmen wir 2 ∈ G und M 1 < p/2 an.<br />

22


unterscheiden sich die Sicherheitsexperimente von IND-CPA- und IND-CCA-Sicherheit nur in den<br />

Möglichkeiten des Angreifers. Genauer steht einem IND-CCA-Angreifer ein Entschlüsselungsorakel<br />

Dec(sk, ·) zur Verfügung, welches beliebige Eingaben C ≠ C ∗ entschlüsselt, wobei C ∗ das von A im<br />

Experiment erhaltene Chiffrat bezeichnet. (Es ist einfach einzusehen, daß kein Schema sicher wäre,<br />

wenn A auch die Entschlüsselung von C ∗ erfragen dürfte.) Wir geben im folgenden die vollständige<br />

IND-CCA-Definition wieder, wobei die Unterschiede zur IND-CPA-Definition (Definition 4.3) unterstrichen<br />

sind.<br />

Definition 7.1 (IND-CCA). Sei PKE = (Gen, Enc, Dec) ein PKE-Schema. Sei A ein PPT-Algorithmus.<br />

Sei<br />

[<br />

]<br />

Adv ind-cca<br />

PKE,A (k) := Pr ExpPKE,A ind-cca (k) = 1 − 1 2 ,<br />

wobei das Experiment Exp ind-cca<br />

PKE,A wie folgt definiert ist:<br />

Experiment Exp ind-cca<br />

PKE,A (k)<br />

(pk, sk) ← Gen(1 k )<br />

(M 0 , M 1 , state) ← A Dec(sk,·) (1 k , find, pk)<br />

b ← {0, 1}<br />

C ∗ ← Enc(pk, M b )<br />

b ′ ← A Dec(sk,·) (1 k , attack, state, C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

A heißt gültig, wenn es in Exp ind-cca<br />

PKE,A immer |M 0| = |M 1 | garantiert und sein Dec-Orakel nie mit<br />

Eingabe C ∗ aufruft. PKE ist IND-CCA-sicher (für indistinguishable under chosen-ciphertext attacks“),<br />

falls für jedes gültige A die Funktion AdvPKE,A ind-cca (k) vernachlässigbar ”<br />

ist.<br />

Offensichtlich impliziert IND-CCA-Sicherheit schon IND-CPA-Sicherheit. (Jeder gültige IND-<br />

CPA-Angreifer kann als gültiger IND-CCA-Angreifer interpretiert werden, der seinen Orakelzugriff<br />

nicht nutzt.)<br />

Lemma 7.2 (IND-CCA ⇒ IND-CPA). Jedes PKE-Schema PKE, welches IND-CCA-sicher ist, ist<br />

auch IND-CPA-sicher.<br />

Die Umkehrung gilt allerdings nicht, wie das folgende Beispiel zeigt.<br />

Beispiel: IND-CCA-Unsicherheit von ElGamal. Man rufe sich das PKE-Schema PKE ElG =<br />

(Gen ElG , Enc ElG , Dec ElG ) in einer Gruppe G ins Gedächtnis. Wie schon im Auktionsbeispiel besprochen<br />

gilt<br />

Enc(pk, M; r) · Enc(pk, 1; r ′ ) = Enc(pk, M; r + r ′ ).<br />

Ist r ′ ≠ 0 so gilt insbesondere Enc(pk, M; r) ≠ Enc(pk, M; r + r ′ ). Ein IND-CCA-Angreifer A auf<br />

PKE ElG kann also sein Dec-Orakel mit C := C ∗ · Enc(pk, 1; r ′ ) für beliebiges r ′ ≠ 0 aufrufen und so<br />

die verschlüsselte Nachricht M b erhalten. Wählt A anfangs zwei beliebige verschiedene Nachrichten<br />

M 0 ≠ M 1 , so können deren Chiffrate mittels Dec demnach einfach unterschieden werden.<br />

23


Äquivalente Sicherheitsbegriffe. Für einen universellen“ Sicherheitsbegriff mag IND-CCA-<br />

”<br />

Sicherheit etwas zu simpel anmuten. Man könnte etwa vermuten, daß einem Angreifer in realen<br />

Szenarien mehr als ein Challenge“-Chiffrat C ∗ zur Verfügung steht. Zudem könnten in einem<br />

”<br />

komplexen Kontext mehrere öffentliche Schlüssel benutzt werden. Man stelle sich nun einen Sicherheitsbegriff<br />

vor, in dem einem Angreifer eine beliebige (polynomielle) Anzahl p pk (k) bzw. p C (k)<br />

von öffentlichen Schlüsseln pk i und Challenge-Chiffraten Ci,j ∗ angeboten werden. (Jedes Chiffrat C∗ i,j<br />

enthält dabei einen von zwei jeweils neu vom Angreifer gewählten Klartexten M i,j,0 bzw. M i,j,1 .) Der<br />

Angreifer A wählt schließlich einen öffentlichen Schlüssel pk i und einen Chiffrat-Index j aus und rät,<br />

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,<br />

wenn jeder PPT-Angreifer A hierbei einen Erfolgswahrscheinlichkeit hat, die vernachlässigbar nahe<br />

an 1/2 liegt.<br />

Überraschenderweise ist Multi-IND-CCA-Sicherheit äquivalent zu IND-CCA-Sicherheit. Offenbar<br />

impliziert Multi-IND-CCA-Sicherheit schon IND-CCA-Sicherheit. Der Beweis der Umkehrung<br />

soll hier – schon aufgrund einer nicht gegebenen formalen Definition von Multi-IND-CCA-Sicherheit<br />

– nur skizziert werden. Für die Umkehrung muß ein Multi-IND-CCA-Angreifer A in einen IND-<br />

CCA-Angreifer B mit vergleichbarer Laufzeit und Erfolgswahrscheinlichkeit überführt werden. Hierzu<br />

rät B den Index (i ∗ , j ∗ ) des von A schließlich angegriffenen Chiffrats gleichverteilt und<br />

• übernimmt den öffentlichen Schlüssel pk i ∗ := pk und das Chiffrat Ci ∗ ∗ ,j ∗ := C∗ des eigenen<br />

IND-CCA-Experiments, und<br />

• wählt alle verbleibenden öffentlichen Schlüssel pk i (mit i ≠ i ∗ ) und Chiffrate Ci,j ∗ (mit (i, j) ≠<br />

(i ∗ , j ∗ )) selbst.<br />

War (i ∗ , j ∗ ) richtig geraten, so kann Bs eigenes Experiment in As Multi-IND-CCA-Szenario eingebettet<br />

werden, und A löst genau Bs eigene Aufgabe. War (i ∗ , j ∗ ) nicht die von A schließlich gewählte<br />

Chiffrat-Instanz, so muß B abbrechen – sagen wir, daß B dann 0 ausgibt. Informell gesprochen ist<br />

B also genau dann erfolgreich, wenn (i ∗ , j ∗ ) richtig geraten wurde (was mit Wahrscheinlichkeit<br />

1/(p pk (k)p C (k)) geschieht) und A erfolgreich war. So kann eingesehen werden, daß für As Vorteil<br />

im Multi-IND-CCA-Experiment gilt, daß<br />

Adv multi-ind-cca<br />

PKE,A<br />

Adv ind-cca<br />

PKE,B<br />

Advmulti-ind-cca<br />

PKE,A (k)<br />

(k) =<br />

p pk (k)p C (k)<br />

ist; insbesondere ist Adv ind-cca<br />

PKE,B genau dann vernachlässigbar, wenn Advmulti-ind-cca<br />

PKE,A vernachlässigbar<br />

ist. Die IND-CCA-Sicherheit eines PKE-Schemas zieht deshalb Multi-IND-CCA-Sicherheit nach<br />

sich.<br />

Nur erwähnt sei hier schließlich, daß IND-CCA-Sicherheit auch Non-Malleability (im oben beschriebenen<br />

Sinne) impliziert.<br />

Die Schwierigkeit beim Beweis von IND-CCA-Sicherheit. Nehmen wir an, wir wollen<br />

die Sicherheit eines gegebenen PKE-Schemas unter der Annahme beweisen, daß ein Problem P<br />

schwer ist. In den vorangegangenen Beispiel haben wir dazu einen beliebigen IND-CPA-Angreifer<br />

A umgewandelt in einen P-Problemlöser B mit vergleichbarem Angriffs- bzw. Lösungserfolg. Aus<br />

der Annahme, daß P schwer zu lösen ist, folgt, daß B nur vernachlässigbaren Erfolg im Lösen<br />

von P hat. Hieraus wiederum folgt, daß A auch nur vernachlässigbaren Erfolg im Brechen des<br />

PKE-Schemas hat.<br />

24


Vereinfacht gesagt wird hierbei B aus A konstruiert, indem B bei Eingabe einer Probleminstanz<br />

P von P das jeweilige PKE-Sicherheitsexperiment für A simuliert. B muß also aus der eigenen Aufgabe<br />

P eine passende Aufgabe für A konstruieren. Umgekehrt muß anschließend aus einer Lösung<br />

(bzw. eines erfolgreichen Angriffs) von A eine Lösung von P konstruiert werden. B kann also als<br />

zwischen Probleminstanzen und -lösungen im Sinne von P und dem Sicherheitsexperiment<br />

des PKE-Schemas gesehen werden.<br />

”Übersetzer“<br />

Ein sehr einfaches Beispiel ist hier die OW-CPA-Sicherheit des ElGamal-Kryptosystems unter<br />

der CDH-Annahme. In diesem Fall ist eine Aufgabe P der Form (g, g x , g y ), und die gültige Lösung<br />

ist g xy . Um aus einem ElGamal-Angreifer A eine Lösung zu gewinnen kann ein Problemlöser B<br />

die Aufgabe (g, g x , g y ) wie im Beweis von Theorem 5.5 in einen öffentlichen Schlüssel pk := (g, g x )<br />

und ein Chiffrat C := (g y , Z) des ElGamal-Schemas umwandeln. Durch diese Übersetzung kann aus<br />

einem erfolgreichen OW-CPA-Angreifer A, der einen Klartext M = Z/g xy findet, die Problemlösung<br />

g xy gewonnen werden.<br />

Die zugehörige Übersetzung etwa zwischen dem Faktorisierungsproblem und der IND-CPA-<br />

Sicherheit des Blum-Goldwasser-Schemas ist zwar ungleich komplizierter, läßt sich jedoch modular<br />

aus den Beweisen von Lemma 6.7, Theorem 6.13, Lemma 6.14 und Theorem 6.1 gewinnen. In allen<br />

bisher behandelten Fällen ist diese Übersetzung dergestalt, daß eine Instanz P des Problems P<br />

in einen öffentlichen Schlüssel pk und ein Chiffrat C übersetzt wird. Den zugehörigen geheimen<br />

Schlüssel (etwa x im Falle von ElGamal, oder die Faktorisierung von N bei dem Blum-Goldwasser-<br />

Schema) kennt B dabei nicht. Man mache sich klar, daß dies auch widersinnig wäre: würde B den<br />

geheimen Schlüssel sk kennen, so bräuchte B auch A nicht, sondern könnte selbst die Sicherheit<br />

des simulierten“ PKE-Schemas brechen. B kann nur dann von A nützliche Hilfe beim Lösen von<br />

”<br />

P erwarten, wenn B selbst die konstruierte PKE-Instanz nicht brechen kann.<br />

Wollen wir nun die IND-CCA-Sicherheit eines gegebenen Schemas unter einer geeigneten Annahme<br />

P beweisen, so bietet sich wieder an, mittels eines wie oben beschriebenen B gegebene<br />

P-Instanzen P in eine Instanz des IND-CCA-Sicherheitsexperiments zu übersetzen. Hierbei stellt<br />

sich folgendes Problem: kennt B den zugehörigen geheimen Schlüssel sk, so kann B nicht hoffen,<br />

aus einem erfolgreichen Angriff durch A nützliche Informationen im Hinblick auf P zu gewinnen.<br />

(B könnte ja mittels sk selbst einen erfolgreichen Angriff konstruieren.) Kennt B andererseits sk<br />

nicht, so ist vollkommen unklar, wie B das Entschlüsselungsorakel Dec(sk, ·) für A nachbilden soll.<br />

(Man rufe sich in Erinnerung, daß A bei Ausführung erwartet, Zugriff auf ein Orakel Dec(sk, ·) zu<br />

haben, welches beliebige Chiffrate – außer dem Ziel“-Chiffrat C ∗ – entschlüsselt.)<br />

”<br />

Diese Schwierigkeit in der Konstruktion von B (bzw. der durch B durchgeführten Simulation des<br />

IND-CCA-Experiments) ist der Hauptgrund dafür, daß das erste praktikable und vollständig als<br />

IND-CCA-sicher bewiesene PKE-Schema erst 1998, mehr als 15 Jahre nach Vorstellung des ersten<br />

IND-CPA-<strong>sichere</strong>n Schemas, vorgestellt wurde.<br />

Im Verlauf der Vorlesung sollen verschiedene Strategien vorgestellt werden, das beschriebene<br />

Dilemma zu umgehen.<br />

8 Das Schema von Naor und Yung<br />

Zunächst soll eine generische Methode vorgestellt werden, IND-CCA-Sicherheit zu erreichen, und<br />

insbesondere das soeben beschriebene Dilemma der Simulation des Entschlüsselungsorakels zu umgehen.<br />

Obwohl dieses Schema nicht praktikabel (also recht ineffizient) ist, stellte es doch eine<br />

25


maßgebliche Inspiration für spätere, effizientere Schemata dar. Deshalb soll hier zumindest die<br />

Grundidee der Naor-Yung-Konstruktion erläutert werden.<br />

Nichtinteraktive Beweissysteme. Das zu beschreibende Schema benutzt ein technisches Hilfsmittel,<br />

das wir aufgrund seiner Komplexität hier nicht formal behandeln wollen. Es handelt sich<br />

um Simulation-Sound Non-Interactive Zero-Knowledge Proofs (SS-NIZKs) for NP – eine Variante<br />

von nichtinteraktiven Zero-Knowledge-Beweisen für allgemeine NP-Sprachen. NIZKs für NP<br />

sind mächtige Werkzeuge, die es erlauben – intuitiv gesprochen – Beweise für die Korrektheit von<br />

beliebigen NP-Instanzen zu zeigen (etwa dieser Graph ist drei-färbbar“), ohne dabei jedoch Information<br />

über den zugehörigen Zeugen (etwa die konkrete Drei-Färbung) zu veröffentlichen. Die<br />

”<br />

Definition von SS-NIZKs soll hier nur skizziert werden:<br />

Definition 8.1 ((SS-)NIZK, Skizze). Sei L ∈ NP eine Sprache mit PPT-Zeugenrelation R. (Das<br />

heißt: x ∈ L ⇔ ∃w ∈ {0, 1} p(|x|) : R(x, w) = 1 für ein geeignetes, festes Polynom p.) Ein<br />

Simulation-Sound Non-Interactive Zero-Knowledge Proof System (SS-NIZK) für L besteht aus drei<br />

Algorithmen:<br />

Setup. Setup(1 k ) generiert einen Common Reference String CRS.<br />

Beweis. Prove(CRS, x, w) gibt einen Beweis π aus.<br />

Verifikation. Verify(CRS, x, π) gibt 0 oder 1 aus.<br />

Wir fordern<br />

Vollständigkeit. Prove generiert im Sinne von Verify korrekte Beweise.<br />

Zero-Knowledge. Es existiert ein PPT-Algorithmus Sim, der bei Eingabe x ∈ L einen Common<br />

Reference String CRS und einen Beweis π ausgibt. Sowohl CRS als auch π sind dabei nicht<br />

von echten, mittels Prove generierten Beweisen zu unterscheiden.<br />

(Simulation-)Soundness. Es ist schwierig, einen im Sinne von Verify korrekten Beweis π für<br />

eine falsche Aussage x ∉ L zu finden. Dies gilt selbst dann, wenn CRS von Sim generiert<br />

wurde, und schon ein von Sim generierter Beweis für ein vom Angreifer gewähltes x vorliegt.<br />

Es existieren Konstruktionen von SS-NIZKs für NP-vollständige Sprachen (und damit für beliebige<br />

NP-Sprachen). Diese sind allerdings überaus ineffizient, allein schon wegen der üblicherweise<br />

nötigen (Karp-)Reduktion einer gegebenen Sprache L ∈ NP zu der ”<br />

nativen“ NP-vollständigen<br />

Sprache des SS-NIZKs.<br />

Die Konstruktion. Als Zutat benötigen wir ein IND-CPA-<strong>sichere</strong>s PKE-Schema PKE CPA =<br />

(Gen CPA , Enc CPA , Dec CPA ). Weiter definieren wir eine Sprache L NY wie folgt:<br />

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 )}<br />

Elemente von L NY beschreiben also genau Paare von Chiffraten derselben Nachricht. Zugehörige<br />

Zeugen können dabei einfach der Form (M, R 1 , R 2 ) sein. Für das Naor-Yung-Schema benötigen wir<br />

ein SS-NIZK für L NY .<br />

Nach diesen Vorbereitungen kann das PKE-Schema PKE NY = (Gen NY , Enc NY , Dec NY ) von Naor<br />

und Yung wie folgt beschrieben werden:<br />

26


Algorithmus Gen NY (1 k )<br />

(pk 1 , sk 1 ) ← Gen CPA (1 k )<br />

(pk 2 , sk 2 ) ← Gen CPA (1 k )<br />

CRS ← Setup(1 k )<br />

pk := (pk 1 , pk 2 , CRS)<br />

sk := (pk, sk 1 )<br />

return (pk, sk)<br />

Algorithmus Enc NY (pk, M)<br />

parse pk =: (pk 1 , pk 2 , CRS)<br />

C 1 ← Enc CPA (pk 1 , M; R 1 )<br />

C 2 ← Enc CPA (pk 2 , M; R 2 )<br />

x := (pk 1 , pk 2 , C 1 , C 2 )<br />

w := (M, R 1 , R 2 )<br />

π ← Prove(CRS, x, w)<br />

C := (C 1 , C 2 , π)<br />

return C<br />

Algorithmus Dec NY (sk, C)<br />

parse sk =: (pk, sk 1 )<br />

parse pk =: (pk 1 , pk 2 , CRS)<br />

parse C =: (C 1 , C 2 , π)<br />

x := (pk 1 , pk 2 , C 1 , C 2 )<br />

M := Dec CPA (sk 1 , C 1 )<br />

if Verify(CRS, x, π) = 1<br />

return M<br />

else return ⊥<br />

Intuitiv handelt es sich hierbei also einfach um eine ”<br />

Doppelverschlüsselung“: Die Nachricht<br />

M wird zwei Mal, unter verschiedenen öffentlichen Schlüsseln pk 1 und pk 2 , verschlüsselt. Weiter<br />

wird das Chiffrat mit einem Beweis versehen, daß wirklich zweimal dieselbe Nachricht verschlüsselt<br />

wurde. Der Zweck dieses auf den ersten Blick unnütz erscheinenden Vorgehens wird beim Sicherheitsbeweis<br />

deutlich, den wir hier nur skizzieren wollen.<br />

Theorem 8.2 (Sicherheit von PKE NY ). Unter der Annahme, daß das verwendete Beweissystem<br />

ein SS-NIZK ist, und daß das verwendete PKE-Schema PKE CPA IND-CPA-sicher ist, ist PKE NY<br />

IND-CCA-sicher.<br />

(Für Interessierte: Ein vollständiger Beweis einer abgeschwächten IND-CCA-Sicherheit – IND-<br />

CCA1-Sicherheit, siehe Definition 9.3 – findet sich in [6]. Erst später wurde auch die volle IND-CCA-<br />

Sicherheit des Schemas gezeigt, sofern der verwendete NIZK die Simulation-Soundness-Eigenschaft<br />

hat [7].)<br />

Beweis. (Skizze.) Sei ein beliebiger IND-CCA-Angreifer A auf PKE NY gegeben. In Abkehr von<br />

unseren bisherigen Sicherheitsbeweisen verfahren wir dabei in einer Folge von Spielen. Wir beginnen<br />

dabei damit, das IND-CCA-Experiment ExpPKE ind-cca<br />

NY ,A mit A als Spiel 1 zu definieren. Die Ausgabe<br />

out 1 von Spiel 1 ist dabei die Ausgabe von Exp ind-cca<br />

PKE NY ,A. Nach Definition gilt also<br />

[<br />

]<br />

Pr [out 1 = 1] = Pr Exp ind-cca<br />

PKE NY ,A (k) = 1 .<br />

Ziel ist es, zu zeigen, daß Pr [out 1 = 1] nahe an 1/2 liegt. Unser Plan dazu sieht wie folgt aus:<br />

Wir werden schrittweise eine Reihe von Veränderungen an Spiel 1 vornehmen, die zu Spiel 2,<br />

Spiel 3, usw. führen. Bei jeder dieser Veränderungen werden wir zeigen, daß diese Veränderung<br />

die Ausgabewahrscheinlichkeit Pr [out i = 1] nur unwesentlich ändert. Schließlich werden wir bei<br />

einem Spiel n ankommen, bei dem Pr [out n = 1] = 1/2 nach Konstruktion einfach einzusehen ist.<br />

Dies impliziert, daß Pr [out 1 = 1] − 1/2 vernachlässigbar ist, da jeder unserer Schritte out i nur in<br />

vernachlässigbarer Weise ändert.<br />

Wir bezeichnen mit C ∗ = (C ∗ 1 , C∗ 2 , π∗ ) das ”<br />

Zielchiffrat“ im IND-CCA-Experiment, also das<br />

vom Experiment konstruierte Chiffrat von M b . Der Einfachheit halber nehmen wir an, daß |M 0 | =<br />

|M 1 | = k ist. (Ist dem nicht so, so kann der Beweis entsprechend modifiziert werden.)<br />

In Spiel 2 ersetzen wir CRS im öffentlichen Schlüssel und den Beweis π ∗ in C ∗ durch die Ausgabe<br />

eines Simulators Sim (der nach Annahme über den SS-NIZK existiert). Effekt dieser Veränderung<br />

ist, daß zum Erstellen von π ∗ kein Zeuge (M b , R ∗ 1 , R∗ 2 ) mehr benötigt wird. Insbesondere wird R∗ 2<br />

27


ausschließlich zum Erstellen von C2 ∗ verwendet. Da nach Annahme Sim ununterscheidbare CRS-<br />

Werte und Beweise erzeugt, ist<br />

Pr [out 2 = 1] − Pr [out 1 = 1]<br />

vernachlässigbar.<br />

In Spiel 3 ersetzen wir das zweite Teilchiffrat C ∗ 2 von C∗ durch ein Chiffrat von 0 k . Man beachte,<br />

daß weder R ∗ 2 noch sk 2 in Spiel 2 oder Spiel 3 benutzt werden. (Entschlüsseln von PKE NY -Chiffraten<br />

geschieht nur mittels sk 1 .) Deshalb kann aus jedem Unterscheider zwischen Spiel 2 und Spiel 3 ein<br />

IND-CPA-Angreifer B auf PKE CPA konstruiert werden, und es folgt, daß<br />

Pr [out 3 = 1] − Pr [out 2 = 1]<br />

vernachlässigbar ist. Interessant an diesem Schritt ist, daß in Spiel 3 das Chiffrat inkonsistent (im<br />

Sinne x ∗ = (pk 1 , pk 2 , C ∗ 1 , C∗ 2 ) ∉ L NY) ist. Der zugehörige Konsistenzbeweis π ∗ wird dabei – wie in<br />

Spiel 2 – von Sim ohne einen Zeugen w generiert. Aufgrund der Ununterscheidbarkeit von Spiel 2<br />

und Spiel 3 bedeutet dies insbesondere, daß der Simulator Sim in der Lage ist, gültige Beweise π ∗<br />

für falsche Aussagen x ∗ ∉ L NY zu erzeugen. Dies widerspricht nicht der (Simulation-)Soundness<br />

des SS-NIZK, da Sim geeignete Common Reference Strings CRS generieren darf. (Die Soundness<br />

des SS-NIZK gilt nur gegen Angreifer, die einen ehrlich mittels Setup generierten CRS vorgesetzt<br />

bekommen.)<br />

In Spiel 4 verwenden wir sk 2 statt sk 1 in Dec NY . Es wird also nur der Beweis π des eingegebenen<br />

Chiffrats überprüft und dann (gegebenenfalls) C 2 entschlüsselt. Um einen Unterschied zwischen<br />

Spiel 3 und Spiel 4 zu entdecken, müßte ein Unterscheider ein Chiffrat C mit gültigem Beweis<br />

π, aber Chiffraten C 1 , C 2 von verschiedenen Klartexten erzeugen und entschlüsseln lassen. Genau<br />

das würde aber der Simulation-Soundness des verwendeten Beweissystems widersprechen, und wir<br />

können folgern, daß<br />

Pr [out 4 = 1] − Pr [out 3 = 1]<br />

vernachlässigbar ist. Man beachte, daß in Spiel 4 nur sk 2 , nicht aber sk 1 verwendet wird.<br />

In Spiel 5 ersetzen wir das erste Teilchiffrat C ∗ 1 von C∗ durch ein Chiffrat von 0 k . Analog zu<br />

Spiel 3 ergibt sich, daß die Vernachlässigbarkeit von<br />

Pr [out 5 = 1] − Pr [out 4 = 1]<br />

aus der IND-CPA-Sicherheit von PKE CPA folgt.<br />

Nun sind wir am Ziel: in Spiel 5 wurden beide Teilchiffrate von C ∗ durch Chiffrate von 0 k<br />

ersetzt; damit hängt C ∗ und damit die gesamte Sicht von A nicht mehr von dem vom IND-CCA-<br />

Experiment gewählten Bit b ab. Anders gesagt: A erhält keine Information darüber, ob M 0 oder<br />

M 1 verschlüsselt werden sollte. Gehen wir ohne Beschränkung der Allgemeinheit davon aus, daß A<br />

immer ein Bit ausgibt, so folgt damit<br />

Zusammenfügen der Teilschritte ergibt, daß<br />

Pr [out 5 = 1] = 1/2.<br />

Adv ind-cca<br />

PKE NY ,A (k) = Pr [<br />

Exp ind-cca<br />

PKE NY ,A (k) = 1 ]<br />

− 1/2 = Pr [out 1 = 1] − Pr [out 5 = 1]<br />

vernachlässigbar ist, woraus (weil A beliebig gewählt war) die IND-CCA-Sicherheit von PKE NY<br />

folgt.<br />

28


Interpretation. Zurückkehrend zum vorigen Abschnitt könnte man sich nun fragen, wie genau<br />

eigentlich das beschriebene Dilemma ohne sk kein Dec(sk, ·)-Orakel, mit sk Angriff nutzlos“ im<br />

”<br />

Falle des Naor-Yung-Schemas aufgelöst wird. Nennen wir dazu ein PKE NY -Chiffrat C = (C 1 , C 2 , π)<br />

konsistent, wenn C 1 und C 2 tatsächlich Chiffrate derselben Nachricht M sind und π gültig im Sinne<br />

von Verify ist. Dann besitzen wir im Beweis von Theorem 8.2 (also in jedem Spiel) einen geheimen<br />

Schlüssel, mit dem konsistente Chiffrate entschlüsselt werden können. In den Spielen Spiel 1 bis Spiel<br />

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<br />

und Spiel 4 das Zielchiffrat C ∗ selbst inkonsistent. (Denn hier ist C 1 eine Chiffrat von M b und C 2 ein<br />

Chiffrat von 0 k .) Kern des Sicherheitsarguments ist also, dem Angreifer A ein inkonsistentes Chiffrat<br />

vorzusetzen, bei dem der geheime Schlüssel des Spiels zu diesem Zeitpunkt nicht funktionieren<br />

würde. Auf diese Weise können wir auf der einen Seite A dazu benutzen, ein zugrundeliegendes<br />

Problem zu lösen (hier: die IND-CPA-Sicherheit von PKE CPA zu brechen), ohne jedoch in der<br />

Simulation selbst das Problem lösen zu können. Beispielsweise kann jeder Unterscheider zwischen<br />

Spiel 2 und Spiel 3 dazu benutzt werden, um die zweite PKE CPA -Instanz (mit öffentlichem Schlüssel<br />

pk 2 ) zu brechen. (Man beachte, daß in diesen Spielen das Experiment selbst nicht in der Lage ist,<br />

pk 2 -Chiffrate zu entschlüsseln.)<br />

9 Das Schema von Cramer und Shoup<br />

Motivation. Das Schema von Naor und Yung ist durch die Verwendung von generischen Zero-<br />

Knowledge-Beweisen recht ineffizient. Um diesem Hauptnachteil entgegenzuwirken soll nun ein<br />

PKE-Schema mit einem ähnlichen Grundkonzept vorgestellt werden, das jedoch eine sehr effiziente<br />

Art von Konsistenzbeweis“ verwendet.<br />

”<br />

Um die Konsistenz von Chiffraten zu beweisen wurden von Cramer und Shoup Hash Proof<br />

Systems (HPSs) eingeführt. Hierbei handelt es sich strenggenommen um eine Variante von (SS-<br />

)NIZKs, bei denen der Verifier (also derjenige, der den Beweis überprüft) einen geheimen Schlüssel<br />

besitzt. (Man rufe sich in Erinnerung, daß im Falle des Naor-Yung-Schemas der Verifier letztlich<br />

der Empfänger war, der ohnehin über einen geheimen Schlüssel verfügt.)<br />

Subset-Membership-Probleme. Im folgenden betrachten wir eine Sprache L ⊆ X mit endlichem<br />

X, wobei L und X vom Sicherheitsparameter k abhängen dürfen. Man fixiere weiter eine<br />

PPT-Zeugenrelation R für L, so daß wie üblich x ∈ L ⇔ ∃w ∈ {0, 1} p(|x|) : R(x, w) = 1 gilt. Wir<br />

werden im folgenden implizit voraussetzen, daß es effizient möglich ist, gleichverteilt ein Element<br />

x ∈ L zusammen mit einem passenden Zeugen w mit R(x, w) = 1 zu ziehen. Außerdem soll es effizient<br />

möglich sein, gleichverteilt aus der Menge X \ L zu ziehen. Das Subset-Membership-Problem<br />

(SMP) L ⊆ X bezeichnet das Problem, die Gleichverteilung auf L von der Gleichverteilung auf<br />

X \ L zu unterscheiden. Genauer:<br />

Definition 9.1 (Subset-Membership-Problem). Wir sagen, daß das Subset-Membership-Problem<br />

L ⊆ X hart ist (geschrieben L ≈ c X \ L), falls für jeden PPT-Algorithmus D<br />

[<br />

] [<br />

]<br />

Pr D(1 k , x) = 1 | x ← L − Pr D(1 k , x) = 1 | x ← X \ L<br />

vernachlässigbar ist.<br />

29


Beispiel: die Diffie-Hellman-Sprache. Für ein einfaches und überaus ergiebiges SMP fixiere<br />

man eine Familie von zyklischen Gruppen G primer Ordnung q und wähle zufällig zwei Generatoren<br />

g, h ∈ Gens G . (Wir gehen davon aus, daß G und g, h öffentlich bekannt sind, also als zusätzliche<br />

Eingabe eines etwaigen SMP-Unterscheiders angesehen werden können.) Man setze<br />

L g,h := {(g r , h r ) | r ∈ N} .<br />

Unter der DDH-Annahme ist das SMP L g,h ⊆ G × G (für zufällige g, h) hart: Die DDH-Annahme<br />

besagt<br />

(g, g x , g y , g xy ) c ≈ (g, g x , g y , g z )<br />

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 ) =<br />

(g, h, G, H) mit gleichverteiltem (G, H) ∈ G × G. Weil die Gleichverteilung auf X = G × G (sogar<br />

statistisch) ununterscheidbar von der Gleichverteilung auf X\L g,h ist, 2 existiert deshalb eine direkte<br />

Korrespondenz zwischen DDH- und SMP-Unterscheidern.<br />

Hash Proof Systems. Intuitiv ist ein Hash Proof System (für eine Sprache L ⊆ X mit Zeugenrelation<br />

R) ein Beweissystem für L, d.h. für Aussagen der Form x ∈ L. Genauer:<br />

Definition 9.2 (Hash Proof System). Ein Hash Proof System HPS für L ⊆ X und mit Schlüsselmenge<br />

K besteht aus den folgenden Algorithmen:<br />

Schlüsselgenerierung. HGen(1 k ) gibt einen öffentlichen Schlüssel pk HPS und einen geheimen Verifikationsschlüssel<br />

vk HPS aus.<br />

Öffentliche Evaluierung. PubEval(pk HPS , x, w) gibt einen eindeutigen Schlüssel K ∈ K aus.<br />

Geheime Evaluierung. PrivEval(vk HPS , x) gibt einen eindeutigen Schlüssel K ∈ K aus.<br />

Wir fordern für alle k ∈ N das folgende:<br />

Vollständigkeit. Für alle möglichen (pk HPS , vk HPS ) ← HGen(1 k ) und alle (x, w) ∈ {0, 1} k ×<br />

{0, 1} p(k) mit R(x, w) = 1 gilt immer:<br />

PubEval(pk HPS , x, w) = PrivEval(vk HPS , x).<br />

Special Soundness. Für alle pk HPS im Bild von HGen(1 k ), alle x ∉ L und alle K ∈ K gilt:<br />

Pr [PrivEval(vk HPS , x) = K | pk HPS ] = 1<br />

|K| ,<br />

wobei hier die Wahrscheinlichkeit über alle vk HPS mit (pk HPS , vk HPS ) ← HGen(1 k ) gemeint<br />

ist. (Es wird also auf pk HPS , nicht aber auf vk HPS konditioniert.)<br />

Die Namensgebung Hash Proof System ist wie folgt zu erklären. Es handelt sich zunächst bei<br />

einem Hash Proof System um ein Beweissystem für L, da ein Schlüssel K als Beweis für eine Aussage<br />

x ∈ L interpretiert werden kann. Mit dem öffentlichen Schlüssel pk HPS ist nämlich aus einem<br />

Zeugen w für x ∈ L leicht ein passender Schlüssel K = PubEval(pk HPS , x, w) berechenbar. Dieser<br />

Schlüssel kann vom Beweisempfänger mittels K ? = PrivEval(vk HPS , x) auf Gültigkeit überprüft<br />

werden. Andererseits läßt sich für eine falsche Aussage x ∉ L nicht erraten, welches der einzige<br />

gültige Schlüssel K = PrivEval(vk HPS , x) ist, der den Empfänger von der Korrektheit der Aussage<br />

überzeugen würde.<br />

2 Genauer: Es ist leicht einzusehen, daß der statistische Abstand zwischen den Zufallsvariablen ”<br />

Gleichverteilung<br />

auf G × G“ und ”<br />

Gleichverteilung auf X \ L g,h “ 1/q ist. Andererseits muß 1/q schon für die Gültigkeit der DDH-<br />

Annahme vernachlässigbar (als Funktion im Sicherheitsparameter) sein.<br />

30


Beispiel: ein HPS für die Diffie-Hellman-Sprache. Sei G mit g, h ∈ Gens G und L g,h ⊆ G×G<br />

wie oben definiert. Man betrachte die folgenden Algorithmen:<br />

Schlüsselgenerierung. HGen(1 k ) wählt a, b ← [q] und gibt pk HPS := u := g a h b und vk HPS = (a, b)<br />

aus.<br />

Öffentliche Evaluierung. PubEval(pk HPS , (g r , h r ), r) gibt K := u r aus.<br />

Geheime Evaluierung. PrivEval(vk HPS , (G, H)) gibt K := G a H b aus.<br />

Die Menge der Schlüssel ist hierbei K = G. Vollständigkeit gilt wegen<br />

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 )).<br />

Special Soundness andererseits folgt aus folgender Überlegung: für jedes gegebene pk HPS = u existieren<br />

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 .)<br />

Anders gesagt: ein gegebenes u legt nur a + ωb mod q (für h = g ω ) fest, nicht aber a und b. Sei nun<br />

(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<br />

gilt:<br />

[<br />

]<br />

Pr (g rg ) a (h r h<br />

) b = K | a + ωb mod q = 1 q . (11)<br />

Nun gilt<br />

(g rg ) a (h r h<br />

) b = g rga+ωr hb = g rg(a+ωb)+ω(r h−r g)b = u rg ( h r h−r g<br />

) b<br />

Durch u und (G, H) = (g rg , h r h) liegen u rg und h r h−r g<br />

fest. Überdies ist h r h−r g<br />

∈ Gens G , da r h ≠ r g<br />

ist und G prime Ordnung hat (also Gens G = G\{1} gilt). b ist aber für sich genommen immer noch<br />

gleichverteilt; deshalb ist selbst bei festen u und (G, H) der Schlüssel (g rg ) a (h r h) b gleichverteilt, und<br />

(11) folgt.<br />

Wir definieren zunächst eine Ab-<br />

Ein simples, fast“ IND-CCA-<strong>sichere</strong>s PKE-Schema.<br />

”<br />

schwächung von IND-CCA-Sicherheit:<br />

Definition 9.3 (IND-CCA1). Ein PKE-Schema ist IND-CCA1-sicher, wenn es IND-CCA-sicher<br />

ist, sofern in der Sicherheitsdefinition nur über gültige Angreifer A quantifiziert wird, die keine<br />

Dec-Anfragen nach Erhalt des Zielchiffrats C ∗ stellen.<br />

Es ist übrigens ein interessantes offenes Problem, ob (bzw. unter welchen Annahmen) das<br />

ElGamal-Schema IND-CCA1-sicher ist.<br />

Betrachten wir nun das folgende einfache PKE-Schema PKE CSL = (Gen CSL , Enc CSL , Dec CSL ),<br />

welches eine Vereinfachung des Schemas von Cramer und Shoup darstellt. Hierbei nehmen wir ein<br />

HPS HPS für eine Sprache L ⊆ X an. Der Einfachheit halber sei der zugehörige Schlüsselraum<br />

K = {0, 1} 2k . (Für andere Schlüsselräume kann eine geeignete Abbildung K → {0, 1} 2k benutzt<br />

werden.) Nachrichtenraum von PKE CSL ist {0, 1} k .<br />

31


Algorithmus Gen CSL (1 k )<br />

(pk HPS , vk HPS ) ← HGen(1 k )<br />

pk := pk HPS<br />

sk := vk HPS<br />

return (pk, sk)<br />

Algorithmus Enc CSL (pk, M)<br />

parse pk =: pk HPS<br />

wähle (x, w) mit R(x, w) = 1<br />

K := PubEval(pk HPS , x, w)<br />

K =: (K 1 , K 2 ) ∈ ( {0, 1} k) 2<br />

C := (x, K 1 , K 2 ⊕ M)<br />

return C<br />

Algorithmus Dec CSL (sk, C)<br />

parse sk =: vk HPS<br />

parse C =: (x, C 1 , C 2 )<br />

K := PrivEval(vk HPS , x)<br />

K =: (K 1 , K 2 ) ∈ ( {0, 1} k) 2<br />

M := C 2 ⊕ K 2<br />

if C 1 = K 1<br />

return M<br />

else return ⊥<br />

Theorem 9.4 (Sicherheit von PKE CSL ). Falls das SMP L ⊆ X hart ist und HPS ein HPS für<br />

L ⊆ X ist, dann ist das wie oben beschriebene PKE-Schema PKE CSL IND-CCA1-sicher.<br />

Beweis. Wir verfahren wieder in Spielen, wobei Spiel 1 das IND-CCA-Experiment mit einem<br />

beliebigen gegebenen Angreifer A ist. Da wir nur IND-CCA1-Sicherheit beweisen wollen, dürfen<br />

wir annehmen, daß A nur vor Erhalt des Zielchiffrats C ∗ Dec-Anfragen stellt. Wie üblich bezeichnet<br />

out i die Ausgabe von Spiel i, so daß nach Konstruktion gilt:<br />

Pr [out 1 = 1] − 1/2 = Adv ind-cca<br />

PKE CSL ,A (k).<br />

In Spiel 2 ändern wir die Art und Weise, wie C ∗ generiert wird. In Spiel 1 wird bei der Berechnung<br />

von C ∗ der Schlüssel K ∗ = PubEval(pk HPS , x ∗ , w ∗ ) für gleichverteiltes x ∗ ∈ L generiert.<br />

In Spiel 2 hingegen wählen wir x ∗ ∈ L gleichverteilt und setzen K ∗ := PrivEval(vk HPS , x ∗ ). Man<br />

beachte, daß dies bedeutet, daß der Zeuge w ∗ für x ∗ ∈ L in Spiel 2 nicht mehr benötigt wird. Andererseits<br />

gilt wegen der Vollständigkeit von HPS, daß PubEval(pk HPS , x ∗ , w ∗ ) = PrivEval(vk HPS , x ∗ )<br />

ist, und damit<br />

Pr [out 2 = 1] = Pr [out 1 = 1] .<br />

In Spiel 3 wählen wir x ∗ gleichverteilt aus X \ L (anstatt aus L). Da L c ≈ X \ L ist, folgt mit<br />

einer einfachen Reduktion, daß<br />

Pr [out 3 = 1] − Pr [out 2 = 1]<br />

vernachlässigbar ist.<br />

In Spiel 4 verändern wir Dec. Genauer lehnt Dec nun alle inkonsistenten (im Sinne von x ∉ L)<br />

Dec-Anfragen mit ⊥-Ausgabe ab. (Abgelehnt werden nun also alle Anfragen (x, C 1 , C 2 ) mit x ∉ L<br />

oder C 1 ≠ K 1 für (K 1 , K 2 ) = K = PrivEval(vk HPS , x).) Hier ist zu beachten, daß nach Annahme<br />

A nur Dec-Anfragen vor Erhalt von C ∗ stellt. Das bedeutet, daß alle Dec-Anfragen von A nur<br />

von pk HPS , nicht aber von vk HPS abhängen. Andererseits ist wegen der Special Soundness von<br />

HPS der ”<br />

richtige“ Schlüssel K = PrivEval(vk HPS , x) für x ∉ L aus Sicht von A gleichverteilt.<br />

Insbesondere ist auch K 1 ∈ {0, 1} k , das zur Überprüfung der Konsistenz eines Chiffrats benutzt<br />

wird, unabhängig gleichverteilt und für A nicht vorhersagbar. Ein Hybridargument (ähnlich wie im<br />

Beweis von Lemma 6.14) zeigt<br />

|Pr [out 4 = 1] − Pr [out 3 = 1]| ≤ Q 2 k , (12)<br />

wobei Q = Q(k) eine (notwendig polynomielle) Schranke für die Anzahl von As Dec-Anfragen ist.<br />

32


Hier gilt es, eine Subtilität zu beachten: prinzipiell kann A mit jedem abgelehnten inkonsistenten<br />

Chiffrat einen 1/2 k -Anteil der möglichen Wert von vk HPS ausschließen. So kann A nach Q Dec-<br />

Anfragen mit geeigneten inkonsistenten C einen Q/2 k -Anteil von vk HPS ausschließen. Dem tragen<br />

wir Rechnung durch den Faktor Q in (12). Ein genauer Beweis von (12) würde wie im Beweis von<br />

Lemma 6.14 hybride Spiele H i (für i = 0, . . . , Q) definieren, wobei in H i nur die Ablehnung der<br />

ersten i inkonsistenten Dec-Anfragen erzwungen wird. (Die verbleibenden Anfragen werden wie in<br />

Dec vorgeschrieben behandelt.) Beim Übergang von H i nach H i+1 wird hierbei nur eine einzelne<br />

Dec-Anfrage verändert, und somit ein potentieller Fehler von 1/2 k in der Ausgabewahrscheinlichkeit<br />

des Experiments erzeugt.<br />

In Spiel 5 ersetzen wir die vom Experiment verschlüsselte Nachricht M b durch 0 k . Hier ist<br />

zu beobachten, daß in Spiel 4 die gesamte Sicht von A nur von pk HPS und C ∗ abhängt. Anders<br />

gesagt: Ein unbeschränktes A könnte sich alle Dec-Anfragen selbst beantworten. (Für konsistente<br />

C folgt die Entschlüsselung wegen der Vollständigkeit von HPS informationstheoretisch aus pk HPS ,<br />

und inkonsistente C werden abgelehnt.) Deshalb garantiert die Special-Soundness-Eigenschaft von<br />

HPS, daß K ∗ aus Sicht von A gleichverteilt ist. Insbesondere ist aus Sicht von A das Chiffrat C ∗<br />

unabhängig von M b . Es gilt also<br />

Pr [out 5 = 1] = Pr [out 4 = 1] .<br />

Andererseits ist Pr [out 5 = 1] = 1/2, da A in Spiel 5 keine Informationen über b erhält. Insgesamt<br />

folgt also, daß<br />

Adv ind-cca<br />

PKE CSL ,A (k) = Pr [out 1 = 1] − 1/2 = Pr [out 1 = 1] − Pr [out 5 = 1]<br />

vernachlässigbar ist, was die IND-CCA1-Sicherheit von PKE CSL zeigt.<br />

Von IND-CCA1- zu IND-CCA-Sicherheit. Es ist einfach einzusehen, daß PKE CSL nicht<br />

IND-CCA-sicher ist. (Man überlege sich hierzu, auf welche Weise ein Zielchiffrat C ∗ verändert<br />

werden kann, und wie sich der zugehörige Klartext hierbei ändert.) Das Problem, das im einem<br />

Sicherheitsbeweis wie dem für PKE CSL auftritt ist, daß nach Veröffentlichung eines inkonsistenten<br />

Zielchiffrats C ∗ keine Eigenschaften des verwendeten HPS mehr genutzt werden können. Dem wirkt<br />

das eigentliche Schema von Cramer und Shoup folgendermaßen entgegen:<br />

1. Es wird ein HPS verwendet, das selbst nach Veröffentlichung eines inkonsistenten Chiffrats<br />

(bzw. Schlüssels K ∗ = PrivEval(vk HPS , x) für x ∈ X \ L) für ein zweites inkonsistentes x ′ ≠<br />

x immer noch garantiert, daß K ′ = PrivEval(vk HPS , x ′ ) gleichverteilt ist. Diese Eigenschaft<br />

wurde von Cramer und Shoup universal ” 2 “ genannt und stellt sicher, daß auch inkonsistente<br />

Chiffrate nach Veröffentlichung von C ∗ ohne Verlust abgelehnt werden können.<br />

2. Es werden zwei HPSs verwendet. Eines dient dazu, einen Schlüssel zu generieren, der die<br />

Nachricht versteckt (wie der Schlüssel K 2 im Falle von PKE CSL ). Das zweite HPS dient dazu,<br />

die Konsistenz des Chiffrats zu beweisen (wie K 1 aus PKE CSL ) und damit das Chiffrat zu<br />

authentifizieren“. Dieser Übergang zu zwei HPSs erlaubt eine modulare Darstellung, kann<br />

”<br />

aber mittels geschicketem Einsatz einer kollisionsresistenten Hashfunktion vermieden werden.<br />

Das vollständige Cramer-Shoup-Schema soll hier nicht näher besprochen werden, da das Schema<br />

und dessen Beweis konzeptionell sehr ähnlich zu PKE CSL sind. Bemerkt sei hier nur, daß Optimierungen<br />

des Cramer-Shoup-Schemas zu den effizientesten bekannten beweisbar <strong>sichere</strong>n PKE-Schemata<br />

gehören.<br />

33


10 Einige Betrachtungen zur Implementierung<br />

Es soll noch angerissen werden, wie konkret einige der vorgestellten PKE-Verfahren implementiert<br />

werden können. Insbesondere soll besprochen werden, wie geeignete mathematische Plattformen<br />

algorithmisch behandelt werden können. Wir gliedern deshalb diese – recht oberflächlichen – Betrachtungen<br />

nach der zugrundeliegenden mathematischen Plattform.<br />

Faktorisierungsbasierte Verfahren. Faktorisierungsbasierte Verfahren finden in Ringen Z N<br />

statt, die durch eine zusammengesetzte Zahl N = P Q mit Primzahlen P und Q definiert sind. Es<br />

stellen sich vor allem zwei Fragen:<br />

• In welcher Größenordnung sollten diese Primzahlen bzw. N sein, damit das Faktorisierungsproblem<br />

(oder verwandte Probleme) nach gängigem Kenntnisstand hart sind?<br />

• Mit welchen Algorithmen kann man Primzahlen einer grob festgelegten Größe finden?<br />

Die erste Frage ist im Augenblick nicht ganz einfach zu beantworten. Derzeit (2011) ist der effizienteste<br />

Algorithmus zur Faktorisierung großer zusammengesetzter Zahlen das Zahlkörpersieb.<br />

Dessen asymptotische Laufzeit ist leider momentan noch nicht ganz geklärt und hängt auch von einigen<br />

variablen Parametern des Algorithmus ab. Etwas spekulative Resultate legen allerdings nahe,<br />

daß es mit Implementierungen auf Spezialhardware mit größerem Geldaufwand eventuell möglich<br />

sein könnte, eine 1024-Bit-Zahl innerhalb eines Jahres zu faktorisieren. (Im Bereich öffentlicher<br />

Forschung wurde eine solche Implementierung allerdings noch nicht unternommen.) Deshalb sollte<br />

gegenwärtig eine Implementierung von faktorisierungsbasierter Verschlüsselung nach Möglichkeit<br />

Zahlen N substantiell größerer Länge als 1024 Bit wählen. (Der Einfachheit halber könnte hier<br />

etwa ein N der Länge 2048 Bit gewählt werden.) Die Faktoren P und Q sollten balanciert, also<br />

etwa von der halben Bitlänge von N gewählt werden.<br />

Die zweite Frage wird derzeit wie folgt behandelt: Soll eine Primzahl P der (Bit-)Länge l gewählt<br />

werden, so wird einfach eine gleichverteilt zufällige ungerade Zahl P der Länge l gewählt und auf<br />

Primalität getestet. Ist P nicht prim, wird das Vorgehen mit einer neuen Zahl P wiederholt. Für<br />

den Test auf Primalität gibt es effiziente Algorithmen, etwa den Primtest von Rabin und Miller. 3<br />

Der Primtest von Rabin und Miller. Grundidee des Miller-Rabin-Tests ist der folgende:<br />

Ist P prim, so ist Z P ein Körper, und insbesondere hat das Polynom X 2 − 1 ∈ Z p [X] nur die<br />

Nullstellen −1 und 1. Anders gesagt: 1 ∈ Z P hat nur die Quadratwurzeln −1 und 1. Überdies gilt<br />

x P −1 = 1 mod P für primes P und x ≠ 0 mod P . Ist P andererseits zusammengesetzt, so hat 1 ∈ Z P<br />

mindestens 4 Quadratwurzeln. Diese Beobachtung kann wie folgt ausgenutzt werden. Schreiben wir<br />

zunächst P − 1 = 2 n P ′ für ungerades P . Wir untersuchen nun für zufälliges x ≠ 0 mod P die<br />

” Quadratwurzelfolge“ xP ′ , x 2P ′ , . . . , x P −1 mod P ; tritt in dieser Folge ein Übergang z, 1 mit z ∉<br />

{−1, 1} auf, oder ist womöglich x P −1 ≠ 1 mod P , so wissen wir sicher, daß P zusammengesetzt sein<br />

muß. Tritt andererseits für mehrere solcher x nie ein verdächtiger“ Übergang z, 1 mit z ∉ {−1, 1}<br />

”<br />

auf, so darf vermutet werden, daß P prim ist.<br />

3 Der Primtest von Rabin und Miller hat eine positive Fehlerwahrscheinlichkeit (die allerdings durch Mehrfachausführung<br />

exponentiell klein gehalten werden kann). Aber obwohl es mittlerweile einen deterministischen Algorithmus<br />

ohne Fehler zum Test auf Primalität gibt, ist der Miller-Rabin-Test aufgrund seiner Effizienz für die Praxis<br />

momentan der attraktivste Primtest.<br />

34


Verfahren in zyklischen Gruppen. Für Verfahren, die auf der DLog-Annahme (oder verwandten<br />

Annahmen) in einer zyklische Gruppe G basieren, stellen sich gleich mehrere Fragen:<br />

• Welche Typen von Gruppen sind zu verwenden?<br />

• Welche Größe sollten diese Gruppen haben?<br />

• Wie kann in diesen Gruppen effizient gerechnet werden?<br />

Wie schon in Abschnitt 5 angedeutet, sind als zyklische Gruppen vor allem elliptische Kurven<br />

und Untergruppen der multiplikativen Gruppe eines endlichen Körpers Z ∗ p (bzw. F p e) interessant.<br />

Für das DLog-Problem in (der multiplikativen Gruppe von) endlichen Körpern existiert ein subexponentieller<br />

Algorithmus, der Index-Calculus-Algorithmus. Die Laufzeit dieses Algorithmus hängt<br />

dabei in hohem Maße von der Laufzeit intern benötigter Faktorisierungen ganzer Zahlen in der<br />

Größenordnung von p ab. Damit sollte p von einer Bitlänge gewählt werden, die eine Faktorisierung<br />

Zahlen in der Größenordnung von p nicht zuläßt. Insbesondere sollte p eine Bitlänge von mehr<br />

als 1024 Bit haben.<br />

Ein Analogon des Index-Calculus-Algorithmus existiert nicht für elliptische Kurven, weshalb<br />

elliptische Kurven verhältnismäßig kleiner Größe (bzw. Bitlänge ihrer Elemente) gewählt werden<br />

können. Eine elliptische Kurve besteht aus allen Lösungen (x, y) einer Gleichung y 2 = x 3 + ax + b<br />

über einem geeigneten endlichen Körper und mit geeigneten Konstanten a, b. Die besten derzeit<br />

bekannten Algorithmen zum Lösen des DLog-Problems in elliptischen Kurven sind generisch (funktionieren<br />

also in beliebigen endlichen zyklischen Gruppen) und haben eine Komplexität in der<br />

Größenordnung √ |G|. Es ist deshalb üblich, elliptische Kurven der Größe etwa 2 200 bis 2 400 zu<br />

benutzen, was wiederum eine Rechnung in einem zugrundeliegenden Körper etwa derselben Größe<br />

nach sich zieht. Die entstehenden Gruppenelemente sind – bei platzsparender Speicherung – von der<br />

Größe etwa 200 bis 400 Bits. Rechnung in einer elliptischen Kurve ist dabei effizient mit elementarer<br />

Arithmetik im zugrundeliegenden Körper möglich.<br />

Insgesamt führen damit elliptische Kurven nach derzeitigem Stand zu den effizientesten (sowohl<br />

bezüglich Zeit- als auch bezüglich Speicherkomplexität) derzeitigen Public-Key-Kryptosystemen.<br />

(Natürlich könnte sich dies ändern, sobald algorithmische Fortschritte beispielsweise effizientere<br />

DLog-Algorithmen in elliptischen Kurven hervorbringen.)<br />

11 Secret-Key-Verschlüsselung<br />

Bis jetzt haben wir aufgrund ihrer Flexibilität und vielfältigen Anwendungsmöglichkeiten PKE-<br />

Schemata betrachtet. Im Gegensatz dazu wurden SKE-Schemata nur angedeutet. Bei einem SKE-<br />

Schema verfügen sowohl Sender als auch Empfänger über einen gemeinsamen geheimen Schlüssel.<br />

(Anders gesagt: Ver- und Entschlüsselungsalgorithmus erhalten denselben Schlüssel K als Eingabe.)<br />

Der große Nachteil von SKE-Schemata gegenüber PKE-Schemata ist damit vor allem mangelnde<br />

Flexibilität: Um ein SKE-Schema zwischen zwei Parteien zu betreiben muß zunächst eine<br />

Schlüsselverteilung (bzw. ein Schlüsselaustausch) stattfinden. Andererseits sind derzeit konstruierte<br />

SKE-Schemata wesentlich effizienter als PKE-Schemata.<br />

Wir werden im folgenden daran interessiert sein, die Vorteile von PKE- und SKE-Schemata zu<br />

kombinieren. Hierzu ist allerdings – wie üblich – etwas Vorbereitung nötig. Insbesondere werden<br />

wir SKE-Schemata formal definieren und genauer betrachten, was in diesem Abschnitt geschehen<br />

soll. Glücklicherweise sind dabei die (Sicherheits-)Definitionen von SKE-Schemata denen von PKE-<br />

Schemata sehr ähnlich.<br />

35


Definition. Wir beginnen mit der Definition einen SKE-Schemas (unterstrichen sind hierbei die<br />

Unterschiede zur PKE-Definition):<br />

Definition 11.1 (SKE-Schema). Ein SKE-Schema SKE mit Nachrichtenraum M k ⊆ {0, 1} ∗<br />

besteht aus drei PPT-Algorithmen (G, E, D):<br />

Schlüsselgenerierung. G(1 k ) gibt bei Eingabe 1 k einen Schlüssel K aus.<br />

Verschlüsselung. E(K, M) gibt bei Eingabe eines Schlüssels K und einer Nachricht M ∈ M k ein<br />

Chiffrat C aus.<br />

Entschlüsselung. D(K, C) gibt bei Eingabe eines Schlüssels K und eines Chiffrats C eine Nachricht<br />

M ∈ M k aus.<br />

Wir fordern Korrektheit in dem Sinne, daß für alle k ∈ N, alle M ∈ M k , alle K im Bild von<br />

G(1 k ), und alle C im Bild von E(K, M) immer D(K, C) = M gilt.<br />

Da bei den meisten bekannten SKE-Schemata die Schlüsselgenerierung extrem einfach ist –<br />

ziehe K gleichverteilt aus einer Menge K möglicher Schlüssel – lassen manche SKE-Definitionen<br />

den Algorithmus G ganz weg und nehmen K ← K für alles weitere an.<br />

SKE-Schemata mit State.<br />

Schemata mit State:<br />

Eine für die Praxis wichtige Variante von SKE-Schemata sind SKE-<br />

Definition 11.2. Ein SKE-Schema mit State ist wie ein SKE-Schema definiert, jedoch haben die<br />

Algorithmen E und D eine zusätzliche Ausgabe K ′ (die im Bild von G liegt). Für Korrektheit fordern<br />

wir zusätzlich, daß die ausgegebenen aktualisierten Schlüssel K ′ beim Aufruf von (C, K ′ ) ← E(K, M)<br />

und (M, K ′ ) ← D(K, C) immer übereinstimmen.<br />

Die Intuition hierbei ist wie folgt: K ′ stellt einen aktualisierten Schlüssel (bzw. internen Zustand)<br />

dar, der beim nächsten Aufruf von E bzw. D verwendet wird. Man beachte, daß für die Korrektheit<br />

des Schemas implizit angenommen wird, daß bei Generierung und Entschlüsselung eines Chiffrats<br />

(durch E bzw. D) jeweils derselbe Schlüssel K verwendet wird. Diese Annahme kann im Falle<br />

von SKE-Schemata gerechtfertigt werden, denn anders als bei einem PKE-Schema wird bei der<br />

Benutzung eines SKE-Schemas oft nur jeweils eine Partei ver- bzw. entschlüsseln. Insbesondere<br />

werden die Algorithmen E und D nur von jeweils einer Partei lokal ausgeführt. Es kann überdies oft<br />

angenommen werden, daß Ver- und Entschlüsselungen synchronisiert stattfinden, in dem Sinne, daß<br />

Chiffrate in derselben Reihenfolge mit D entschlüsselt werden, wie sie mit E generiert wurden. Unter<br />

solchen Voraussetzungen kann durch eine geschickte Wahl der Algorithmen E und D sichergestellt<br />

werden, daß auch die Schlüssel K bei Generierung und Entschlüsselung eines Chiffrats dieselben<br />

sind. (Für ein solches Schema werden wir noch ein konkretes Beispiele sehen.)<br />

Man mache sich anhand der obigen Überlegungen klar, warum ein PKE-Schema mit State nicht<br />

sehr sinnvoll wäre.<br />

Sicherheitsdefinition (passive Angriffe). Um zu einer nützlichen Definition von SKE-Sicherheit<br />

zu gelangen, wird es schon ausreichen, die Sicherheitsdefinition von PKE-Schemata anzupassen.<br />

Als naheliegende Anpassung der PKE-Definition wird dabei der Angreifer A mit einem Verschlüsselungsorakel<br />

ausgestattet. Diese Anpassung kann wie folgt legitimiert werden: A kann im<br />

Falle eines SKE-Schemas keine Chiffrate mittels eines öffentlichen Schlüssels (wie im Falle eines<br />

PKE-Schemas) selbst erzeugen; andererseits wird selbst ein passiver Angreifer bei einem Angriff<br />

36


auf ein konkretes größeres Protokoll Chiffrate beobachten können. Durch Zugriff auf ein Verschlüsselungsorakel<br />

wird A deshalb die Möglichkeit gegeben, Chiffrate selbst zu generieren.<br />

Definition 11.3 (SKE-IND-CPA). Sei SKE = (G, E, D) ein SKE-Schema. Sei A ein PPT-Algorithmus.<br />

Sei<br />

[<br />

]<br />

Adv ske-ind-cpa<br />

SKE,A<br />

(k) := Pr Exp ske-ind-cpa<br />

SKE,A<br />

(k) = 1 − 1 2 ,<br />

wobei das Experiment Exp ske-ind-cpa<br />

SKE,A<br />

wie folgt definiert ist:<br />

Experiment Exp ske-ind-cpa<br />

SKE,A<br />

(k)<br />

K ← G(1 k )<br />

(M 0 , M 1 , state A ) ← A E(K,·) (1 k , find)<br />

b ← {0, 1}<br />

C ∗ ← E(K, M b )<br />

b ′ ← A E(K,·) (1 k , attack, state A , C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

A heißt gültig, T ist und in Exp ske-ind-cpa<br />

SKE,A<br />

immer |M 0 | = |M 1 | garantiert. PKE ist IND-CPAsicher<br />

(für indistinguishable under chosen-plaintext attacks“), falls für jedes gültige A die Funktion<br />

”<br />

(k) vernachlässigbar ist.<br />

Adv ske-ind-cpa<br />

SKE,A<br />

Für SKE-Schema SKE mit State ist Definition 11.3 wie folgt anzupassen:<br />

• A erhält bei einer E-Anfrage nur den Chiffratteil C der E-Auswertung, nicht aber den aktualisierten<br />

Schlüssel K ′ .<br />

• Im i-ten Aufruf des E-Orakels von A wird ein Schlüssel K i−1 benutzt, wobei wir K 0 := K<br />

setzen, und K i als Schlüssel-Ausgabe von E im i-ten Aufruf definiert wird.<br />

• Die Generierung des Zielchiffrats C ∗ wird bezüglich des Schlüssels so behandelt wie ein E-<br />

Orakelaufruf. (Insbesondere wird der momentane Schlüssel K i benutzt.)<br />

Ein PKE-Schema als SKE-Schema.<br />

SKE-Schema (ohne State) auffassen läßt:<br />

Zunächst sei bemerkt, daß sich jedes PKE-Schema als<br />

Lemma 11.4 (PKE-Schema als SKE-Schema). Sei PKE ein PKE-Schema. Sei SKE das SKE-<br />

Schema, das aus PKE entsteht, wenn wir K := (pk, sk) setzen und die Algorithmen von PKE in<br />

naheliegender Weise anpassen. Dann impliziert die IND-CPA-Sicherheit von PKE die IND-CPA-<br />

Sicherheit von SKE.<br />

Beweis. Sei A ein beliebiger gültiger Angreifer auf SKE. Wir müssen zeigen, daß Adv ske-ind-cpa<br />

SKE,A<br />

vernachlässigbar ist. Dazu konstruieren wir aus A einen (gültigen) Angreifer B auf PKE mit<br />

Adv ind-cpa<br />

PKE,B<br />

(k) = Advske-ind-cpa<br />

SKE,A<br />

(k). (13)<br />

Damit folgt das Lemma: Nach Annahme über PKE muß die linke Seite von (13) vernachlässigbar<br />

sein.<br />

37


Die Konstruktion von B aus A ist denkbar einfach: B führt intern A aus und nutzt den im<br />

IND-CPA-Experiment mit PKE erhaltenen öffentlichen Schlüssel pk, um für A ein E-Orakel (wie<br />

in As IND-CPA-Experiment mit SKE) zu implementieren. Offensichtlich gilt hiermit<br />

[<br />

] [<br />

]<br />

Pr Exp ind-cpa<br />

PKE,B (k) = 1 = Pr Exp ske-ind-cpa<br />

SKE,A<br />

(k) = 1<br />

und damit (13).<br />

Nach unseren Ergebnissen über PKE-Schemata fällt uns damit in den Schoß:<br />

Korollar 11.5. Unter der DDH- oder der Faktorisierungsannahme existieren IND-CPA-<strong>sichere</strong><br />

SKE-Schemata.<br />

Beispiel: ein einfaches IND-CPA-<strong>sichere</strong>s SKE-Schema mit State. Für ein etwas interessanteres<br />

Beispiel eines SKE-Schemas benötigen wir ein einfaches technisches Hilfsmittel:<br />

Definition 11.6 (PRG). Ein Pseudozufallsgenerator (PRG) PRG ist eine in Polynomialzeit berechenbare<br />

Funktion PRG : {0, 1} ∗ → {0, 1} ∗ mit |PRG(s)| = 2|s| für alle s ∈ {0, 1} ∗ und<br />

PRG(U {0,1} k)<br />

c<br />

≈ U {0,1} 2k,<br />

wobei U {0,1} k ← {0, 1} k und U {0,1} 2k ← {0, 1} 2k gleichverteilte Zufallsstrings sind.<br />

Intuitiv streckt PRG einen kurzen, echt zufälligen Eingabestring s auf einen Bitstring doppelter<br />

Länge, der nicht effizient von echtem Zufall unterschieden werden kann. Wir haben in Lemma 6.14<br />

mit BBS N schon einen PRG (in etwas komplizierterer Form und unter der Faktorisierungsannahme)<br />

kennengelernt. Wir halten ein allgemeineres Resultat ohne Beweis fest:<br />

Theorem 11.7. Wenn Einwegfunktionen existieren, dann existieren auch PRGs, und umgekehrt.<br />

(Für Interessierte: In [2] wurde bewiesen, daß Einwegpermutationen mit Hardcoreprädikaten<br />

PRGs implizieren. In [4] wurde gezeigt, daß jede Einwegfunktion – und jede Einwegpermutation<br />

– so verändert werden kann, daß sie ein Hardcoreprädikat hat. Schließlich wurde in [5] gezeigt,<br />

daß schon Einwegfunktionen mit Hardcoreprädikat PRGs implizieren. Die Rückrichtung – PRGs<br />

implizieren Einwegfunktionen – ist recht einfach einzusehen: PRGs sind bereits Einwegfunktionen.)<br />

Aus einem gegebenen PRG PRG kann nun denkbar einfach ein Verschlüsselungsverfahren SKE PRG =<br />

(G PRG , E PRG , D PRG ) mit State und Nachrichtenraum M k = {0, 1} k konstruiert werden:<br />

Algorithmus G PRG (1 k )<br />

K ← {0, 1} k<br />

return K<br />

Algorithmus E PRG (K, M)<br />

parse (ρ, K ′ ) := PRG(K)<br />

(with ρ, K ′ ∈ {0, 1} k )<br />

C := M ⊕ ρ<br />

return (C, K ′ )<br />

Algorithmus D PRG (K, C)<br />

parse (ρ, K ′ ) := PRG(K)<br />

(with ρ, K ′ ∈ {0, 1} k )<br />

M := C ⊕ ρ<br />

return (M, K ′ )<br />

Die Korrektheit von SKE PRG ist einfach einzusehen. Interessanter gestaltet sich der Beweis der<br />

IND-CPA-Sicherheit von SKE PRG :<br />

Theorem 11.8 (Sicherheit von SKE PRG ). Ist PRG ein PRG, so ist SKE PRG IND-CPA-sicher.<br />

38


Beweis. Geben wir uns einen gültigen Angreifer A vor. Wir müssen zeigen, daß Adv ske-ind-cpa<br />

SKE PRG ,A<br />

vernachlässigbar<br />

ist. Wieder verfahren wir in Spielen, wobei Spiel 1 das IND-CPA-Experiment mit<br />

SKE und A ist. Da A PPT ist, dürfen wir ohne Beschränkung der Allgemeinheit annehmen, daß<br />

ein Polynom Q = Q(k) existiert, so daß A vor dem Erhalt des Zielchiffrats C ∗ genau Q − 1 E-<br />

Orakelaufrufe tätigt. Wir können deshalb die Generierung des Zielchiffrats C ∗ einfach als Q-ten<br />

E-Aufruf betrachten. Nach Konstruktion ist<br />

[<br />

]<br />

Pr [out 1 = 1] = Pr Exp ske-ind-cpa<br />

SKE PRG ,A (k) = 1<br />

für die Ausgabe out 1 von Spiel 1.<br />

Wir definieren nun eine Reihe von Spielen, in denen wir schrittweise die von E PRG benutzten<br />

Schlüssel und PRG-Funktionswerte durch unabhängig zufällige Bitstrings ersetzen. Genauer sei für<br />

i ∈ {0, . . . , Q} Spiel 2.i wie folgt definiert:<br />

• Für alle j mit 1 ≤ j ≤ i: Im j-ten E-Aufruf wird die PRG-Ausgabe PRG(K j−1 ) durch einen<br />

unabhängigen gleichverteilten Zufallsstring R j ← {0, 1} 2k ersetzt. Das bedeutet, daß die durch<br />

R j definierten ρ und K ′ unabhängig gleichverteilte k-Bitstrings sind.<br />

Trivialerweise ist Spiel 2.0 identisch mit Spiel 1, wohingegen in Spiel 2.Q in allen E-Aufrufen bis<br />

einschließlich der Generierung von C ∗ ” frische“, unabhängig gleichverteilte Schlüssel K j und Pads<br />

ρ benutzt werden. Der Unterschied zwischen Spiel 2.i und Spiel 2.i + 1 hingegen besteht lediglich<br />

darin, daß in einem einzelnen (dem (i + 1)-ten) E-Aufruf der Wert PRG(K i ) durch unabhängigen<br />

Zufall ersetzt wird. An dieser Stelle ist zu beachten, daß K i schon im i-ten E-Aufruf (bzw. für i = 1<br />

während der Initialisierung von K 0 ) frisch“ und unabhängig gleichverteilt gewählt wurde. Es liegt<br />

”<br />

nahe, die PRG-Eigenschaft von PRG zu nutzen, um zu zeigen, daß Spiel 2.0 und Spiel 2.Q nicht zu<br />

unterscheiden sind.<br />

Konkret können wir wie im Beweis von Lemma 6.14 einen PRG-Unterscheider D(1 k , Z) (mit<br />

Eingabe Z = PRG(U {0,1} k) oder Z = U {0,1} 2k) konstruieren, der Spiel 1 mit A simuliert, jedoch<br />

• anfangs i ∈ [Q] gleichverteilt wählt,<br />

• in den ersten i − 1 E-Aufrufen die Ausgabe von PRG(K j ) durch unabhängigen Zufall ersetzt,<br />

und<br />

• im i-ten E-Aufruf PRG(K i−1 ) durch Z ersetzt.<br />

Es ist einfach einzusehen, daß D Spiel 2.i − 1 simuliert, falls Z = PRG(U {0,1} k) ist, und Spiel 2.i,<br />

falls Z = U {0,1} 2k ist. Eine einfache Rechnung wie im Beweis von Lemma 6.14 zeigt, daß<br />

( [<br />

] [<br />

])<br />

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<br />

ist. Da die rechte Seite dieser Gleichung nach Annahme über PRG vernachlässigbar ist, ist es auch<br />

die linke Seite. Nun gilt<br />

Pr [out 2.Q = 1] = 1/2,<br />

da in Spiel 2.Q gilt, daß C ∗ = M b ⊕ ρ unabhängig von b ist, da ρ unabhängig gleichverteilt ist.<br />

Insgesamt folgt, daß<br />

[<br />

]<br />

Adv ske-ind-cpa<br />

SKE PRG ,A (k) = Pr Exp ske-ind-cpa<br />

SKE PRG ,A (k) = 1 − 1/2 = Pr [out 1 = 1] − Pr [out 2.Q = 1]<br />

vernachlässigbar ist, was wie gewünscht die IND-CPA-Sicherheit von SKE PRG zeigt.<br />

39


Vergrößerung des Nachrichtenraums. Es ist recht einfach, den Nachrichtenraum eines SKE-<br />

Schemas unter Erhalt von SKE-IND-CPA-Sicherheit zu vergrößern:<br />

Theorem 11.9. Sei SKE ein SKE-Schema mit Nachrichtenraum {0, 1} k . Sei weiter SKE ′ das SKE-<br />

Schema mit Nachrichtenraum {0, 1} ∗ , das Nachrichten blockweise mittels SKE verschlüsselt. Eine<br />

Nachricht Nachricht M ∈ {0, 1} ∗ wird dazu in Blöcke zu je höchstens k Bits unterteilt, jeder Block<br />

wird mittels SKE verschlüsselt, und die Chiffrate konkateniert. Ist dann SKE SKE-IND-CPA-sicher,<br />

so ist auch SKE ′ SKE-IND-CPA-sicher<br />

Der Beweis soll hier nur skizziert werden: In einem spielbasierten Beweis werden zunächst alle<br />

Nachrichtenblöcke des Zielchiffrats durch Verschlüsselungen von Zufallsnachrichten ersetzt. Dies<br />

kann mit einem Hybridargument geschehen; in jedem Schritt wird ein weiterer Block durch eine<br />

Zufallsverschlüsselung ersetzt. (Ein jeder solcher Schritt kann durch die SKE-IND-CPA-Sicherheit<br />

des zugrundeliegenden SKE-Schemas SKE legitimiert werden.) Anschließend ist zu beobachten, daß<br />

in einem derartig veränderten Spiel der Angreifer keine Information mehr über die verschlüsselte<br />

Nachricht erhält; die Erfolgswahrscheinlichkeit des Angreifers in diesem veränderten Spiel beträgt<br />

demnach genau 1/2, und Sicherheit folgt wie gewohnt.<br />

Aktive Sicherheit. In Analogie zur entsprechenden PKE-Sicherheitsdefinition können wir auch<br />

die Sicherheit von SKE-Schemata gegen aktive Angriffe untersuchen. Wir geben nur die Unterschiede<br />

zur IND-CPA-Definition an:<br />

Definition 11.10 (SKE-IND-CCA). Ein SKE-Schema SKE ist IND-CCA-sicher, falls es IND-<br />

CPA-sicher ist, wobei im IND-CPA-Experiment der Angreifer A zusätzlich über ein Entschlüsselungsorakel<br />

D(K, ·) verfügt, das jedoch nicht mit dem Zielchiffrat C ∗ aufgerufen werden darf. Für SKE-Schemata<br />

mit State ergeben sich die für E bzw. D verwendeten Schlüssel aus dem jeweils vorigen Aufruf von<br />

E bzw. D. (Anders gesagt: Die Schlüssel für Ver- und Entschlüsselung entwickeln sich unabhängig<br />

voneinander.)<br />

Interessanterweise ist aktive Sicherheit für SKE-Schemata verhältnismäßig einfach zu erreichen:<br />

Eine einfache Konstruktion eines aktiv <strong>sichere</strong>n SKE-Schemas.<br />

wieder ein technisches Hilfsmittel vor.<br />

Wir geben uns zunächst<br />

Definition 11.11 (PRF). Eine Pseudozufallsfunktion (PRF) PRF ist eine in Polynomialzeit berechenbare<br />

Funktion PRF : {0, 1} ∗ × {0, 1} ∗ → {0, 1} ∗ mit |y| = k für y := PRF(K, x) und alle<br />

K, x ∈ {0, 1} k . Weiter fordern wir, daß für jeden PPT-Algorithmus D die Funktion<br />

]<br />

Adv prf<br />

PRF,D<br />

[D (k) := Pr PRF(K,·) (1 k ) = 1<br />

− Pr<br />

[<br />

]<br />

D R(·) (1 k ) = 1<br />

vernachlässigbar ist, wobei K ← {0, 1} k und R : {0, 1} k → {0, 1} k eine echt zufällige Funktion ist<br />

und D nur Orakelanfragen x der Bitlänge k stellen darf. (Kein effizienter Algorithmus kann also<br />

per Orakelzugriff PRF(K, ·) von einer echt zufälligen Funktion unterscheiden.)<br />

Wir geben wieder ohne Beweis an:<br />

Theorem 11.12. Wenn Einwegfunktionen existieren, dann existieren auch PRFs, und umgekehrt.<br />

40


(Für Interessierte: Zunächst reicht es wegen Theorem 11.7 aus, die Äquivalenz von PRFs<br />

und PRGs zu zeigen. In [3] wird bewiesen, daß aus PRGs PRFs konstruiert werden können. Die<br />

Rückrichtung ist trivial.)<br />

Mit einer PRF PRF und einem IND-CPA-<strong>sichere</strong>n SKE-Schema SKE CPA = (G CPA , E CPA , D CPA )<br />

ausgestattet können wir nun ein IND-CCA-<strong>sichere</strong>s SKE-Schema SKE AE = (G AE , E AE , D AE ) vorstellen.<br />

Der Einfachheit halber nehmen wir an, daß SKE CPA -Chiffrate als k-Bitstrings interpretiert<br />

werden können.<br />

Algorithmus G AE (1 k )<br />

K E ← G CPA (1 k )<br />

K A ← {0, 1} k<br />

K := (K E , K A )<br />

return K<br />

Algorithmus E AE (K, M)<br />

parse K =: (K E , K A )<br />

C E ← E(K E , M)<br />

C A ← PRF(K A , C E )<br />

C := (C E , C A )<br />

return C<br />

Algorithmus D AE (K, C)<br />

parse K =: (K E , K A )<br />

parse C =: (C E , C A )<br />

M ← D(K E , C)<br />

if C A = PRF(K A , C E )<br />

return M<br />

else return ⊥<br />

Ähnlich wie bei den im den vorigen Abschnitten betrachteten IND-CCA-<strong>sichere</strong>n PKE-Verfahren<br />

kann hier von konsistenten und inkonsistenten Chiffraten geredet werden: Ein Chiffrat C = (C E , C A )<br />

ist konsistent, wenn C A = PRF(K A , C E ) gilt. Inkonsistente Chiffrate werden bei der Entschlüsselung<br />

mit ⊥ abgelehnt. Im Sicherheitsbeweis von E AE werden wir ausnutzen, daß ein Angreifer selbst kein<br />

konsistentes Chiffrat generieren kann. Anders gesagt: Das Entschlüsselungsorakel ist für A unnütz,<br />

da es alle Chiffrate ablehnt. (Wir dürfen ohne Beschränkung der Allgemeinheit annehmen, daß A<br />

nie ein Chiffrat in sein Entschlüsselungsorakel eingibt, das von As Verschlüsselungsorakel generiert<br />

wurde; für ein solches Chiffrat kennt A den zugehörigen Klartext schon.)<br />

Theorem 11.13 (Sicherheit von SKE AE ). Ist SKE CPA IND-CPA-sicher und PRF eine PRF, so ist<br />

SKE AE IND-CCA-sicher.<br />

Beweis. Geben wir uns einen gültigen Angreifer A vor. Wir müssen zeigen, daß As Angriffserfolg<br />

Adv ske-ind-cca<br />

SKE AE ,A im (in Definition 11.10 implizit definierten) IND-CCA-Experiment Expske-ind-cca SKE AE ,A vernachlässigbar<br />

ist. Wir dürfen ohne Beschränkung der Allgemeinheit davon ausgehen, daß A nur<br />

D-Anfragen für Chiffrate C macht, die nicht von As E-Orakel erzeugt wurden. (Macht A solche<br />

Anfragen, kann A so modifiziert werden, daß es über alle E-Anfragen Buch führt und sich wie oben<br />

beschriebene D-Anfragen intern selbst mit dem passenden, bei E eingegebenen, Klartext beantwortet.)<br />

Weiter nehmen wir ohne Einschränkung an, daß A höchstens Q = Q(k) D-Aufrufe macht,<br />

wobei Q ein geeignetes Polynom ist.<br />

Wie üblich verfahren wir in Spielen, wobei Spiel 1 das IND-CCA-Experiment mit SKE und A<br />

ist. Es ist<br />

[<br />

]<br />

Pr [out 1 = 1] = Pr ExpSKE ske-ind-cca<br />

AE ,A (k) = 1<br />

für die Ausgabe out 1 von Spiel 1.<br />

In Spiel 2 ersetzen wir alle PRF(K A , ·)-Aufrufe durch Aufrufe einer echt zufälligen gewählten<br />

Funktion 4 R : {0, 1} k → {0, 1} k . Dies betrifft PRF-Aufrufe in E- und D-Orakelaufrufen von A,<br />

4 Man beachte, daß R-Aufrufe mittels einer ”<br />

lazy sampling“ genannten Technik effizient gemacht werden können.<br />

Genauer muß nicht die volle Funktionsbeschreibung von R sofort festgelegt werden; es reicht aus, bei jedem R(x)-<br />

Aufruf für noch nicht angefragtes x ∈ {0, 1} k einen ”<br />

frischen“ Funktionswert y ← {0, 1} k gleichverteilt zu ziehen und<br />

für weitere Funktionsaufrufe zu speichern.<br />

41


sowie den PRF-Aufruf während der Generierung des Zielchiffrats C ∗ . Man beachte, daß in Spiel 1<br />

die Funktion PRF(K A , ·) als black box“ benutzt wird, und insbesondere der Schlüssel K ” A nur zur<br />

Auswertung von PRF genutzt wird. Somit können wir einen Algorithmus D O(·) mit Orakelzugriff<br />

auf ein Orakel O definieren, so daß D intern Spiel 1 simuliert, aber alle PRF(K A , ·)-Funktionswerte<br />

durch Orakelaufrufe an O(·) ersetzt. Damit gilt<br />

• Ist O = PRF(K A , ·), so simuliert D O(·) Spiel 1.<br />

• Ist O = R(·) eine echt zufällige Funktion, so simuliert D O(·) Spiel 2.<br />

Damit ist<br />

[<br />

] [<br />

]<br />

Pr [out 1 = 1] − Pr [out 2 = 1] = Pr D PRF(KA,·) (1 k ) = 1 − Pr D R(·) (1 k ) = 1 = Adv prf<br />

PRF,D (k)<br />

(mit unabhängig gleichverteiltem K A ) vernachlässigbar nach Annahme über PRF.<br />

In Spiel 3.i (für i ∈ {0, . . . , Q}) lehnt As D-Orakel die ersten i eingegebenen Chiffrate mit<br />

⊥-Ausgabe ab. Offenbar ist Spiel 3.0 identisch mit Spiel 2, und in Spiel 3.Q ist As D-Orakel völlig<br />

nutzlos, da alle Aufrufe abgelehnt werden.<br />

Betrachten wir zur Analyse einen einzelnen D-Aufruf von A, wobei das eingegebene Chiffrat<br />

C = (C E , C A ) sei. Wir wollen zeigen, daß C schon nach den Regeln von Spiel 2 mit hoher Wahrscheinlichkeit<br />

abgelehnt wird. Man rufe sich hierzu in Erinnerung, daß C in Spiel 2 mit ⊥-Ausgabe<br />

abgelehnt wird, wenn C A ≠ R(C E ) ist. Wir unterscheiden zwei Fälle:<br />

1. Es wurde zu diesem Zeitpunkt bereits ein Chiffrat C ′ = (C ′ E , C′ A ) mit C′ E = C E von E erzeugt<br />

(also durch einen E-Orakelaufruf von A oder bei der Generierung von C ∗ ).<br />

2. Es wurde zu diesem Zeitpunkt noch kein Chiffrat C ′ = (C ′ E , C′ A ) mit C′ E = C E von E erzeugt.<br />

Im ersten Fall dürfen wir nach den eingangs gemachten Bemerkungen annehmen, daß C ′ ≠ C und<br />

damit C ′ A ≠ C A gilt. Insbesondere ist also<br />

R(C E ) = R(C ′ E) = C ′ A ≠ C A ,<br />

weshalb C von D schon nach den Regeln von Spiel 2 abgelehnt werden würde.<br />

Im zweiten Fall wird R(C E ) ∈ {0, 1} k aus Sicht von A unabhängig gleichverteilt sein. 5 Es gilt<br />

also C A = R(C E ) nur mit Wahrscheinlichkeit 1/2 k .<br />

Fassen wir den betrachteten D-Aufruf C in Spiel 3.i als den (i + 1)-ten D-Aufruf auf, so folgt<br />

|Pr [out 3.i = 1] − Pr [out 3.i+1 = 1]| ≤ 1 2 k<br />

und damit<br />

|Pr [out 3.0 = 1] − Pr [out 3.Q = 1]| ≤ Q 2 k .<br />

In Spiel 3.Q schließlich werden alle D-Aufrufe abgelehnt; A spielt also in Spiel 3.Q im wesentlichen<br />

ein IND-CPA-Spiel gegen SKE CPA . Formal können wir einen Angreifer B auf SKE CPA s<br />

IND-CPA-Sicherheit konstruieren, der intern A simuliert und dabei alle<br />

• alle D-Anfragen von A mit ⊥ ablehnt,<br />

• alle E-Antworten bzw. das Zielchiffrat C ∗ in Bs eigenem IND-CPA-Experiment mit SKE CPA<br />

um einen zufällig gewähltes C A ∈ {0, 1} k ergänzt.<br />

5 Wir nehmen hier implizit an, daß dies der erste ”<br />

echte“, nicht automatisch abgelehnte D-Aufruf mit C E ist.<br />

42


Für dieses B gilt<br />

Nach Annahme über SKE CPA ist deshalb<br />

[<br />

]<br />

Pr [out 3.Q = 1] = Pr Exp ske-ind-cpa<br />

SKE CPA ,B (k) = 1 .<br />

Pr [out 3.Q = 1] − 1/2 = Adv ske-ind-cpa<br />

SKE CPA ,B (k)<br />

vernachlässigbar, weshalb auch<br />

∣<br />

∣<br />

∣∣ (k) = |Pr [out 1 = 1] − 1/2| ≤<br />

∣Adv ske-ind-cca<br />

SKE AE ,A<br />

vernachlässigbar ist.<br />

∣<br />

∣Adv prf<br />

PRF,D (k) ∣ ∣∣ +<br />

Q<br />

2 k + ∣ ∣∣Adv ske-ind-cpa<br />

SKE CPA ,B (k) ∣ ∣∣<br />

Man beachte, daß sich die Konstruktion und der Sicherheitsbeweis von SKE AE auch auf SKE-<br />

Schemata mit State übertragen.<br />

Zusammenspiel der besprochenen Bausteine. Diese überraschend einfache generische Konstruktion<br />

von IND-CCA-<strong>sichere</strong>n SKE-Schemata kann zu folgendem Vorgehen genutzt werden:<br />

1. Man starte mit einem IND-CPA-<strong>sichere</strong>n SKE-Schema SKE mit festem Nachrichtenraum<br />

(etwa SKE PRG mit Nachrichtenraum {0, 1} k ).<br />

2. Man erweitere den Nachrichtenraum von SKE auf {0, 1} ∗ durch Konkatenation von Chiffraten.<br />

(M = (M 1 , M 2 ) ∈ {0, 1} 2k etwa wird verschlüsselt durch Konkatenation der Chiffrate von<br />

M 1 und M 2 .) Das entstehende SKE-Schema ist immer noch IND-CPA-sicher. (Dies ist etwa<br />

mittels eines Hybridarguments einfach einzusehen.)<br />

3. Durch Einsetzen in die Konstruktion SKE AE entsteht ein IND-CCA-<strong>sichere</strong>s SKE-Schema mit<br />

Nachrichtenraum {0, 1} ∗ .<br />

Man beachte, daß ein solches Vorgehen für PKE-Verfahren mit den besprochenen Techniken zwar<br />

prinzipiell möglich ist (beispielsweise mittels des NY-Verfahrens), aber im allgemeinen zu recht<br />

ineffizienten Verfahren führt.<br />

Weitergehende Überlegungen. Die bislang besprochenen SKE-Konstruktionen und -Techniken<br />

stellen nur die Spitze des Eisbergs dar. Zwar sind die vorgestellten Verfahren – im Vergleich zu PKE-<br />

Verfahren – schon recht effizient; allerdings sind real benutzte Verfahren (wie etwa der Advanced<br />

Encryption Standard) noch bedeutend effizienter, oftmals um den Preis jeglicher beweisbarer Sicherheitseigenschaften.<br />

Ein hierbei besonders wichtiges und hier nicht besprochenes technisches<br />

Instrument stellen hier die Betriebsarten für Blockchiffren dar. Eine Betriebsart einer Blockchiffre<br />

dient dazu, ein SKE-Verfahren (ohne State) in ein SKE-Verfahren mit State umzuwandeln, wobei<br />

hierbei zusätzliche Sicherheitseigenschaften ohne nennenswerten Effizienzverlust erreicht werden.<br />

Etwa existieren Betriebsarten, die eine bloße Pseudozufallspermutation in ein IND-CCA-<strong>sichere</strong>s<br />

SKE-Verfahren mit State umwandeln.<br />

Aus theoretischer Sicht ist folgende Beobachtung interessant: im Vergleich zu PKE-Verfahren<br />

lassen sich <strong>sichere</strong> SKE-Verfahren schon aus Einwegfunktionen konstruieren. (Informell könnte man<br />

sagen, daß die Existenz <strong>sichere</strong>r Secret-Key-Verfahren äquivalent zur Existenz von Einwegfunktionen<br />

ist.) Andererseits sind Einwegfunktionen nach heutigem Kenntnisstand nicht hinreichend, um<br />

Public-Key-<strong>Kryptographie</strong> (etwa PKE-Verfahren oder Schlüsselaustauschprotokolle) zu konstruieren.<br />

Dies läßt sich sogar formalisieren: Man kann beispielsweise zeigen, daß keine Black-Box-<br />

”<br />

Konstruktion“ von PKE-Verfahren aus Einwegfunktionen existiert.<br />

43


12 Hybride Verschlüsselung<br />

Fassen wir noch einmal die Vor- und Nachteile von PKE- und SKE-Schemata zusammen:<br />

• PKE-Schemata sind flexibler (und erfordern insbesondere keinen Austausch eines gemeinsamen<br />

geheimen Schlüssels), sind aber ineffizienter als SKE-Schemata;<br />

• SKE-Schemata sind effizienter, erfordern aber einen gemeinsamen geheimen Schlüssel.<br />

Ein hybrides Verschlüsselungssystem sucht danach, die Vorteile beider Systeme zu vereinen. Technisch<br />

betrachtet sind hybride Verschlüsselungen deshalb zunächst gewöhnliche PKE-Verfahren;<br />

allerdings werden in einem Hybridverfahren in einer generischen Weise SKE-Verfahren genutzt, um<br />

eine höhere Effizienz zu erzielen.<br />

Definition. Sei PKE = (Gen, Enc, Dec) ein PKE-Schema und SKE = (G, E, D) ein SKE-Schema,<br />

so daß der Nachrichtenraum von PKE den Schlüsselraum von SKE umfaßt. (Mit anderen Worten:<br />

PKE kann genutzt werden, um SKE-Schlüssel zu verschlüsseln.) Dann definieren wir das hybride<br />

PKE-Schema PKE Hyb = (Gen Hyb , Enc Hyb , Dec Hyb ) wie folgt:<br />

Algorithmus Gen Hyb (1 k )<br />

(pk, sk) ← Gen(1 k )<br />

return (pk, sk)<br />

Algorithmus Enc Hyb (pk, M)<br />

K ← G(1 k )<br />

C PKE ← Enc(pk, K)<br />

C SKE ← E(K, M)<br />

C := (C PKE , C SKE )<br />

return C<br />

Algorithmus Dec Hyb (sk, C)<br />

parse C =: (C PKE , C SKE )<br />

K ← Dec(sk, C PKE )<br />

M ← D(K, C SKE )<br />

return M<br />

Vorteile hybrider Verschlüsselung. PKE Hyb verschlüsselt zunächst einen Sitzungsschlüssel“<br />

”<br />

K mit PKE, um dann die eigentliche Nachricht mit SKE (und Schlüssel K) zu verschlüsseln. Es ergibt<br />

sich die Sinnfrage: Warum überhaupt derartig verschachtelt verschlüsseln? Dies scheint zunächst<br />

die (In-)Effizienz der beiden verwendeten Verfahren zu vereinen. Es scheint, als hätte man genauso<br />

gut gleich die Nachricht mit PKE verschlüsseln können.<br />

Um dieser Überlegung zu entgegnen sei zunächst bemerkt, daß der Nachrichtenraum von PKE Hyb<br />

gleich dem Nachrichtenraum von SKE ist. Dies ist von großem Vorteil, haben wir doch im vorigen<br />

Abschnitt gesehen, daß wir auf einfache Weise effiziente und sogar IND-CCA-<strong>sichere</strong> SKE-Schemata<br />

mit Nachrichtenraum {0, 1} ∗ konstruieren können. Umgekehrt sind die Nachrichtenräume der bislang<br />

betrachteten PKE-Verfahren endlich (etwa {0, 1} k , Z N , oder G).<br />

Stellt man sich nun vor, extrem lange Nachrichten (etwa den gesamten Datenstrom einer SSL-<br />

Verbindung) verschlüsseln zu wollen, fällt der Aufwand für die PKE-Verschlüsselung Enc(pk, K)<br />

bei PKE Hyb kaum noch ins Gewicht; die Hauptarbeit wird vom Secret-Key-Verfahren SKE geleistet,<br />

das M verschlüsselt. In diesem Sinne vereint PKE Hyb die Vorteile von Public-Key- und Secret-Key-<br />

Verfahren insbesondere dann, wenn lange Nachrichten verschlüsselt werden sollen.<br />

Sicherheit. Intuitiv ist zu erwarten, daß PKE Hyb unsicher ist, sobald einer der Teilbausteine (also<br />

PKE oder SKE) unsicher ist. Interessanter ist natürlich der Fall, daß sowohl PKE als auch SKE sicher<br />

sind:<br />

Theorem 12.1 ((Aktive) Sicherheit hybrider Verschlüsselung). Sind die in PKE Hyb verwendeten<br />

Verfahren PKE und SKE beide IND-CCA-sicher, so ist auch PKE Hyb IND-CCA-sicher.<br />

44


Beweis. Geben wir uns einen gültigen Angreifer A auf die IND-CCA-Sicherheit von PKE Hyb vor.<br />

Wir müssen zeigen, daß Adv ind-cca<br />

PKE Hyb ,A vernachlässigbar ist.<br />

Sei Spiel 1 das IND-CCA-Experiment mit PKE Hyb und A, so daß<br />

[<br />

]<br />

Pr [out 1 = 1] = Pr ExpPKE ind-cca<br />

Hyb ,A (k) = 1<br />

für die Ausgabe out 1 von Spiel 1 ist.<br />

Für die Beschreibung von Spiel 2 bezeichne K ∗ den in Spiel 1 bei der Erstellung des Zielchiffrats<br />

C ∗ = (CPKE ∗ , C∗ SKE ) erzeugten, in C∗ PKE ← Enc(pk, K∗ ) verschlüsselten, und in CSKE ∗ ← E(K∗ , M b )<br />

benutzten Sitzungsschlüssel. In Spiel 2 erzeugen wir stattdessen CPKE ∗ ← Enc(pk, K′ ) für einen<br />

zusätzlichen, unabhängig gezogenen Schlüssel K ′ ← G(1 k ). Weiter werden in Spiel 2 Dec Hyb -<br />

Anfragen für C = (C PKE , C SKE ) mit C PKE = CPKE ∗ behandelt, als ob K∗ ← Dec(sk, CPKE ∗ ) gelten<br />

würde. (Mit anderen Worten: Es ist CPKE ∗ tatsächlich ein Chiffrat von K′ , das aber wie ein Chiffrat<br />

von K ∗ behandelt wird.)<br />

Wir konstruieren einen IND-CCA-Angreifer A PKE auf PKE, der den Übergang von Spiel 1<br />

nach Spiel 2 legitimiert. A PKE simuliert intern Spiel 1, bettet aber den im IND-CCA-Spiel mit PKE<br />

erhaltenen öffentlichen Schlüssel pk als öffentlichen Schlüssel von PKE Hyb in das simulierte Spiel ein.<br />

Dec Hyb -Anfragen von A beantwortet A PKE unter Benutzung des eigenen Dec(sk, ·)-Orakels. Für das<br />

Zielchiffrat im simulierten Spiel wird CPKE ∗ gesetzt als Zielchiffrat in A PKEs eigenem IND-CCA-Spiel,<br />

wobei K ∗ und K ′ die von A PKE gewählten Nachrichten sind. Tritt CPKE ∗ in einer Dec Hyb-Anfrage<br />

von A auf, so kann A PKE diese Anfrage natürlich nicht mittels des Dec(sk, ·)-Orakels entschlüsseln<br />

lassen, da es sich hierbei um A PKE s eigenes Zielchiffrat handelt. In diesem Fall behandelt A PKE das<br />

Chiffrat CPKE ∗ als Chiffrat von K∗ . Schließlich gibt A PKE die Ausgabe des simulierten Spiels aus.<br />

Auf diese Weise simuliert A PKE exakt Spiel 1, sofern A PKE als eigenes Zielchiffrat CPKE ∗ ←<br />

Enc(pk, K ∗ ) erhält. Erhält A PKE aber CPKE ∗ ← Enc(pk, K′ ) als Zielchiffrat, so simuliert A PKE genau<br />

Spiel 2. Damit ist die Ausgabe von A PKE entweder out 1 oder out 2 , je nachdem, ob K ∗ oder K ′ für<br />

A PKE verschlüsselt wird. Intuitiv gesprochen heißt dies: Läge die Verteilungen von out 1 und out 2<br />

nicht-vernachlässigbar auseinander, so wäre A PKE ein erfolgreicher IND-CCA-Angreifer gegen PKE.<br />

Formal:<br />

Pr [out 1 = 1] − Pr [out 2 = 1] = 2Adv ind-cca<br />

PKE,A PKE<br />

(k).<br />

Aus Spiel 2 kann weiter direkt ein IND-CCA-Angreifer A SKE auf SKE hergeleitet werden. Genauer<br />

simuliert A PKE Spiel 2, leitet aber As Zielnachrichten M 0 , M 1 an das eigene IND-CCA-<br />

Experiment mit SKE. Das erhaltene Chiffrat CSKE ∗ wird in das Zielchiffrat C∗ des simulierten Spiels<br />

eingebettet. Man beachte, daß demnach A SKE den bei der Generierung von CSKE ∗ genutzten Schlüssel<br />

K ′ nicht kennt, also Dec-Anfragen der Form C = (CPKE ∗ , C SKE unter Benutzung des eigenen IND-<br />

CCA-Orakels für SKE (mit implizitem Schlüssel K ′ ) beantworten muß. Hiermit gilt<br />

so daß insgesamt<br />

Pr [out 2 = 1] = Adv ske-ind-cca<br />

SKE,A SKE<br />

(k) + 1/2,<br />

Pr [out 1 = 1] − 1/2 = 2Adv ind-cca<br />

PKE,A PKE<br />

(k) + Adv ske-ind-cca<br />

SKE,A SKE<br />

(k)<br />

nach Annahme über PKE und SKE vernachlässigbar ist, was die Sicherheit von PKE Hyb zeigt.<br />

Analog erhält man:<br />

Theorem 12.2 ((Passive) Sicherheit hybrider Verschlüsselung). Sind die in PKE Hyb verwendeten<br />

Verfahren PKE und SKE beide IND-CPA-sicher, so ist auch PKE Hyb IND-CPA-sicher.<br />

45


13 Identitätsbasierte Verschlüsselung<br />

Motivation. Ein PKE-Schema hat gegenüber einem SKE-Schema den erheblichen Vorteil, daß<br />

kein initialer Schlüsselaustausch nötig ist. Es reicht aus, den öffentlichen Schlüssel des Empfängers<br />

zu kennen, um verschlüsselte Nachrichten an ihn zu erzeugen. Es muß allerdings immer noch ein<br />

Weg gefunden werden, an den öffentlichen Schlüssel des Empfängers zu gelangen. In einem System<br />

mit vielen Benutzern kann hierzu etwa ein zentraler Schlüsselserver diese Schlüssel aller Benutzer<br />

bereithalten.<br />

Ein anderer Weg kann mit identitätsbasierter Verschlüsselung beschritten werden: hier reicht es<br />

aus, die Identität (etwa die E-Mail-Adresse) des Empfängers zu kennen, um verschlüsselte Nachrichten<br />

an diesen zu generieren. Natürlich muß sichergestellt werden, daß nur der designierte Empfänger<br />

eine derart verschlüsselte Nachrichte auch wieder entschlüsseln kann. Deshalb erhält jeder Benutzer<br />

einen speziellen geheimen Schlüssel, den user secret key für seine Identität. Dieser muß von einer<br />

speziellen Entität bereitgestellt werden, die einen master secret key besitzt, mit dem alle user secret<br />

keys generiert werden können. Aus diesem Grund muß es im System auch einen master public key<br />

geben, der bei der Verschlüsselung genutzt wird. (Man beachte allerdings, daß dieser master public<br />

key von allen Benutzern genutzt wird und insbesondere nicht von einer Identität abhängt.)<br />

Definition.<br />

Man gelangt zu folgender Definition:<br />

Definition 13.1 (IBE-Schema). Ein IBE-Schema IBE mit Nachrichtenraum M k ⊆ {0, 1} ∗ und<br />

Identitätsraum ID k ⊆ {0, 1} ∗ besteht aus vier PPT-Algorithmen (Gen, Ext, Enc, Dec):<br />

Schlüsselgenerierung. Gen(1 k ) gibt bei Eingabe 1 k ein Schlüsselpaar (mpk, msk) aus.<br />

Extraktion (Generierung von Benutzerschlüsseln). Ext(msk, id) gibt bei Eingabe eines master<br />

secret keys msk und einer Identität id ∈ ID k einen user secret key usk id aus.<br />

Verschlüsselung. Enc(mpk, id, M) gibt bei Eingabe eines master public keys mpk, einer Identität<br />

id ∈ ID k und einer Nachricht M ∈ M k ein Chiffrat C aus.<br />

Entschlüsselung. Dec(usk id , C) gibt bei Eingabe eines user secret keys usk id und eines Chiffrats<br />

C eine Nachricht M ∈ M k ∪ {⊥} aus.<br />

Wir fordern Korrektheit in dem Sinne, daß für alle k ∈ N, alle Nachrichten M ∈ M k und Identitäten<br />

id ∈ ID k , alle (mpk, msk) ← Gen(1 k ), usk id ← Ext(msk, id) und C ← Enc(mpk, id, M)<br />

immer Dec(usk id , C) = M gilt.<br />

Motivation zur Sicherheitsdefinition. Bevor wir ein konkretes IBE-Schema vorstellen, sollten<br />

wir einen Augenblick über eine mögliche Sicherheitsdefinition nachdenken. Grundsätzlich soll<br />

wieder eine IND-CPA-artige (bzw. IND-CCA-artige) Definition behandelt werden. Es soll also für<br />

einen Angreifer wieder darum gehen, ein ehrlich generiertes Chiffrat einer von zwei selbstgewählten<br />

Nachrichten zuzuordnen. Wie im Falle von IND-CPA- und IND-CCA-Sicherheit wird eine derartig<br />

<strong>sichere</strong>s Verfahren <strong>sichere</strong> Kanäle realisieren. Man beachte allerdings, daß ein IBE-Schema<br />

grundsätzlich ein System für viele Benutzer bereitstellt. Einige dieser Benutzer könnten hierbei<br />

korrumpiert sein. Es muß deshalb garantiert sein, daß etwa Wissen um einen user secret key usk id<br />

nicht ermöglicht, für id ′ ≠ id verschlüsselte Nachrichten zu entschlüsseln. (Man überlege sich, wieviel<br />

Nutzen ein Verschlüsselungssystem hätte, bei dem ein Benutzer die an einen anderen Benutzer<br />

gerichteten Nachrichten lesen kann.)<br />

46


Sicherheitsdefinition.<br />

Wir gelangen zu folgender Definition:<br />

Definition 13.2 (IBE-IND-CPA). Sei IBE = (Gen, Ext, Enc, Dec) ein IBE-Schema, und sei A ein<br />

PPT-Algorithmus. Sei<br />

[<br />

]<br />

Adv ibe-ind-cpa<br />

IBE,A<br />

(k) := Pr Exp ibe-ind-cpa<br />

IBE,A<br />

(k) = 1 − 1 2 ,<br />

wobei das Experiment Exp ibe-ind-cpa<br />

IBE,A<br />

wie folgt definiert ist:<br />

Experiment Exp ibe-ind-cpa<br />

IBE,A<br />

(k)<br />

(mpk, msk) ← Gen(1 k )<br />

(id ∗ , M 0 , M 1 , state) ← A Ext(msk,·) (1 k , find, mpk)<br />

b ← {0, 1}<br />

C ∗ ← Enc(mpk, id ∗ , M b )<br />

b ′ ← A Ext(msk,·) (1 k , attack, state, C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

A heißt gültig, wenn es in Exp ibe-ind-cpa<br />

IBE,A<br />

immer |M 0 | = |M 1 | garantiert und sein Ext-Orakel nie nach<br />

einem Schlüssel für id ∗ befragt. IBE ist IBE-IND-CPA-sicher, falls für jedes gültige A die Funktion<br />

(k) vernachlässigbar ist.<br />

Adv ibe-ind-cpa<br />

IBE,A<br />

Diese Definition heißt IBE-IND-CPA (und nicht etwa IBE-IND-CCA), da A kein Entschlüsselungsorakel<br />

(für Chiffrate für die Zielidentität C ∗ ) erhält. Tatsächlich kann man Definition 13.2<br />

leicht zu einer derartigen IBE-IND-CCA-Definition erweitern. Hierfür gibt man A Zugriff auf<br />

ein Dec-Orakel, welches bei Eingabe (id, C) zunächst usk id ← Ext(msk, id) ausführt und dann<br />

Dec(usk id , C) zurückgibt. Die entstehende Definition wird für uns allerdings nicht weiter interessant<br />

sein, da wir kein IBE-IND-CCA-<strong>sichere</strong>s Schema vorstellen werden.<br />

Eine abgeschwächte Sicherheitsdefinition. Leider ist es nicht einfach, Definition 13.2 zu<br />

erfüllen. Wir werden deshalb zunächst eine technische Abschwächung von IBE-IND-CPA-Sicherheit<br />

angeben und zeigen, wie diese erfüllt werden kann. Einziger Unterschied zu Definition 13.2 ist<br />

hierbei, daß sich der Angreifer A auf die Zielidentität id ∗ festlegen muß, bevor er auch nur den<br />

master public key mpk gesehen hat.<br />

Definition 13.3 (IBE-sID-IND-CPA). Betrachte Definition 13.2 mit folgendem abgewandeltem<br />

Experiment Exp ibe-sid-ind-cpa<br />

IBE,A<br />

:<br />

Experiment Exp ibe-sid-ind-cpa<br />

IBE,A<br />

(k)<br />

(id ∗ , state) ← A(1 k , select)<br />

(mpk, msk) ← Gen(1 k )<br />

(M 0 , M 1 , state ′ ) ← A Ext(msk,·) (1 k , find, mpk, state)<br />

b ← {0, 1}<br />

C ∗ ← Enc(mpk, id ∗ , M b )<br />

b ′ ← A Ext(msk,·) (1 k , attack, state ′ , C ∗ )<br />

if b = b ′ then return 1<br />

else return 0<br />

47


Genügt IBE der sich ergebenden Sicherheitsdefinition, so heißt IBE IBE-sID-IND-CPA-sicher (für<br />

IBE-IND-CPA-sicher unter selective-ID-Angriffen“).<br />

”<br />

Offenbar impliziert IBE-IND-CPA-Sicherheit schon IBE-sID-IND-CPA-Sicherheit. Umgekehrt<br />

läßt sich aus einem IBE-sID-IND-CPA-<strong>sichere</strong>n IBE-Schema leicht eines konstruieren, welches immer<br />

noch IBE-sID-IND-CPA-sicher, aber nicht IBE-IND-CPA-sicher ist. (Wie?)<br />

Technische Hilfsmittel. Schon IBE-sID-IND-CPA-Sicherheit hat sich als recht schwer zu erfüllen<br />

entpuppt. Wir werden uns deshalb eines mittlerweile sehr populären technischen Hilfsmittels bedienen,<br />

nämlich dem eines pairings. Genauer werden wir zwei zyklische Gruppe G, G T von primer<br />

Ordnung |G| = |G T | = q annehmen, zusammen mit einer Abbildung e : G × G → G T (dem<br />

pairing“), die folgende Eigenschaften hat:<br />

”<br />

nicht-ausgeartet: für g ∈ G mit g ≠ 1 gilt e(g, g) ≠ 1 ∈ G T .<br />

bilinear: für g ∈ G und a, b ∈ N gilt e(g a , g b ) = e(g, g) ab .<br />

Insbesondere gilt e(g, h) = e(h, g) und e(g, h · u) = e(g, h) · e(g, u). Solche Gruppen und pairings<br />

existieren trivialerweise für beliebige q: man betrachte etwa G = G T = Z + q und e(g, h) = g + h.<br />

Diese Gruppen sind für uns nicht besonders interessant; für unsere Zwecke setzen wir voraus, daß<br />

gewisse Probleme in G, G T hart sind.<br />

Wir können allerdings nicht erwarten, daß zum Beispiel die DDH-Annahme in G gilt: man<br />

überlege sich, daß das pairing e erlaubt, effizient DDH-Tupel (g, g a , g b , g ab ) ∈ G 4 von zufälligen<br />

G 4 -Tupeln zu unterscheiden. Es gibt andererseits Kandidaten für pairing-Gruppen G, G T , für die<br />

die DDH-Annahme in G T gilt. Da hier allerdings keine Aussage über G-Elemente gemacht wird,<br />

ist auch die DDH-Annahme in G T für unsere Zwecke nicht weiter nützlich. Wir werden deshalb<br />

folgende, auf unser Szenario zugeschnittene DDH-Variante betrachten:<br />

Bilinear-Decisional-Diffie-Hellman-(BDDH-)Annahme. Es ist schwierig, gegeben g, g a , g b ,<br />

g c ∈ G, das Element e(g, g) abc ∈ G T von einem zufälligen G T -Element zu unterscheiden. Genauer<br />

nehmen wir an, daß für jeden PPT-Algorithmus A die Funktion<br />

Adv bddh<br />

G,G T ,A(k) := Pr<br />

[<br />

Exp bddh<br />

G,G T ,A(k) = 1<br />

]<br />

− 1 2<br />

vernachlässigbar ist, wobei das Experiment Exp bddh<br />

G,G T ,A wie folgt definiert ist:<br />

Experiment Exp bddh<br />

G,G T ,A (k)<br />

g ← Gens G<br />

a, b, c, d ← [q]<br />

b ← {0, 1}<br />

(g 0 , g 1 ) := (e(g, g) abc , e(g, g) d )<br />

b ′ ← A(1 k , g, g a , g b , g c , g b )<br />

if b = b ′ then return 1<br />

else return 0<br />

14 Das IBE-Schema von Boneh und Boyen<br />

Wir sind nun bereit, das Boneh-Boyen-Schema vorzustellen. Wie schon angedeutet wurde, wird dieses<br />

Schema nur selective-ID-Sicherheit erzielen. Wir nehmen zyklische Gruppen G, G T der (primen)<br />

48


Ordnung q mit pairing e : G × G → G T an, so daß die BDDH-Annahme gilt.<br />

Das Schema. Man betrachte das folgende IBE-Schema IBE BB mit Identitätsraum [q] und Nachrichtenraum<br />

G T :<br />

Algorithmus Gen BB (1 k )<br />

Algorithmus Enc BB (mpk, id, M)<br />

wähle α, β ← [q] und g, h ← G<br />

parse mpk =: (g, h, u, v)<br />

mpk := (g, h, u, v) := (g, h, g α , e(g, g) αβ ) wähle s ← [q]<br />

msk := (g, h, u, α, β)<br />

C := (c 0 , c 1 , c 2 ) := (M · v s , g s , ( u id h ) s )<br />

return (mpk, msk)<br />

return C<br />

Algorithmus Ext BB (msk, id)<br />

Algorithmus Dec BB (usk id , C)<br />

parse msk =: (g, h, u, α, β)<br />

parse usk id =: (d 1 , d 2 ) und C =: (c 0 , c 1 , c 2 )<br />

wähle r ← [q]<br />

usk id := (d 1 , d 2 ) := (g αβ · (u id h ) M := c 0 · e(c 1 , d 1 ) −1 · e(c 2 , d 2 )<br />

r , g r ) return M<br />

return usk id<br />

Korrektheit.<br />

Korrektheit folgt wegen<br />

Dec BB (usk id , C) = c 0 · e(c 2, d 2 )<br />

e(c 1 , d 1 ) = M · (<br />

e(g, g) αβ) s<br />

·<br />

= M · e(g, g) αβs e( ( u id h ) s , g r )<br />

·<br />

e(g s , g αβ ) · e(g s , (u id h) r )<br />

e( ( u id h ) s , g r )<br />

e(g s , g αβ · (u id h) r )<br />

e(g, g)αβs<br />

= M ·<br />

e(g, g) αβs · e(( u id h ) , g) rs<br />

e(g, (u id h)) rs<br />

Vorbemerkungen zur Sicherheit. Beim Beweis der IBE-sID-IND-CPA-Sicherheit eines IBE-<br />

Schemas sind wir in einer ähnlichen Lage wie bei einem IND-CCA-Beweis. Während einer Reduktion<br />

müssen wir in der Lage sein, für einen Angreifer ein Ext-Orakel zu implementieren, dürfen dabei<br />

aber nicht den vollständigen (master) secret key kennen. Unsere Lösung im IND-CCA-Fall bestand<br />

darin, das Zielchiffrat während des Beweises inkonsistent zu machen (wobei hierbei vom Schema<br />

abhängig ist, was inkonsistent“ genau bedeutet).<br />

”<br />

Im Falle des IBE-Schemas IBE BB werden wir allerdings einen anderen Weg einschlagen. Genauer<br />

werden wir während der Reduktion auf die BDDH-Annahme eine Simulation des IBE-sID-<br />

IND-CPA-Experiments mit einem punktierten“ master secret key entwerfen. Hierbei bedeutet<br />

”<br />

punktiert“, daß dieser master secret key genutzt werden kann, um alle Ext-Anfragen perfekt zu<br />

”<br />

beantworten, außer denen für die vorher vom Angreifer festgelegte Zielidentität id ∗ . Auf diese Weise<br />

kann die Reduktion von einer Vorhersage des Angreifers für das id ∗ -Chiffrat C ∗ profitieren, dabei<br />

aber alle Ext-Anfragen beantworten.<br />

Der Sicherheitsbeweis.<br />

Wir zeigen:<br />

Theorem 14.1 (Sicherheit von IBE BB ). Gilt die BDDH-Annahme für die Gruppen G, G T , dann<br />

ist das IBE-Schema IBE BB IBE-sID-IND-CPA-sicher.<br />

Beweis. Da der Beweis nur aus einer einzigen Reduktion besteht, werden wir den Beweis diesmal<br />

nicht spielbasiert führen. Stattdessen geben wir für einen angenommenen IBE-Angreifer A direkt<br />

einen BDDH-Unterscheider D (mit demselben Erfolg wie A) an.<br />

49<br />

= M


Sei also A ein gültiger IBE-sID-IND-CPA-Angreifer auf IBE BB . Wir beschreiben nun einen<br />

BDDH-Angreifer D, den wir aus A konstruieren. Angenommen, D erhält als Eingabe G-Elemente<br />

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<br />

ob z ← G T zufällig gezogen wurde.<br />

Generierung des punktierten“ master secret keys. Als erstes ruft D den IBE-Angreifer<br />

”<br />

A mit select-Eingabe auf und erhält eine Zielidentität id ∗ . Hierauf wählt D einen zufälligen<br />

Exponenten x ∈ [q] und legt sich folgende Variablen zurecht:<br />

u := g a , v := e(g a , g b ), h := u −id ∗ · g x .<br />

Man beachte, daß u id h = g a(id−id ∗ )+x ist und der entstehende master public key<br />

mpk := (g, h, u, v)<br />

exakt so wie in einem IBE-sID-IND-CPA-Experiment mit IBE BB verteilt ist.<br />

Simulation von A. Anschließend führt D das IBE-sID-IND-CPA-Experiment mit A (weiter)<br />

aus. Hierbei wird mpk als master public key an A übergeben, A wählt zwei Nachrichten M 0 , M 1 ,<br />

dann wählt D ein Bit b ← {0, 1}, und verschlüsselt schließlich M b für A. Beachtenswert sind hier<br />

zwei Besonderheiten. Zum einen kennt D nicht den zugehörigen master secret key (der insbesondere<br />

die geheimen Exponenten α = a und β = b enthalten würde). Wir müssen also beschreiben, wie<br />

D für A das Ext-Orakel implementiert. Zum anderen wird D natürlich versuchen, A zum Lösen<br />

seiner eigenen BDDH-Aufgabe zu nutzen. Dafür wird D in das Zielchiffrat C ∗ die zu D’s eigenem<br />

Problem gehörige Eingabe z ∈ G T einbauen. Wir werden auch hier beschreiben, wie das genau zu<br />

geschehen hat.<br />

Implementierung des Ext-Orakels. Nehmen wir an, A stellt eine Anfrage id an das Ext-Orakel.<br />

Wir dürfen dabei annehmen, daß id ≠ id ∗ ist. Da für den zurechtgelegten master public key ein<br />

zugehöriger (D nicht vollständig bekannter) master secret key die Form (g, h, u, α, β) mit α = a<br />

und β = b hat, hat ein korrekt generierter user secret key für id die Form<br />

( r (<br />

usk id = (d 1 , d 2 ) = (g ab · u h) )<br />

id , g r ) = (g ab · g a(id−id ∗ r<br />

)+x , g r ).<br />

Ziehen wir r ′ ← [q] zufällig und setzen<br />

−1<br />

d 2 := g r′ ·<br />

(g<br />

b) id−id ∗ ,<br />

so ist implizit r := r ′ − b/(id − id ∗ ), weshalb auch das zugehörige d 1 von D mittels<br />

d 1 = g ab+(a(id−id ∗ )+x)(r ′ − id−id ∗ ) = g<br />

b<br />

id−id∗<br />

ab(1− id−id ∗ )+a·(id−id ∗ )·r ′ x<br />

−b· id−id ∗ +x·r ′<br />

= (g a ) (id−id ∗ )·r ′ ·<br />

(g b) − x<br />

id−id ∗<br />

· g x·r′<br />

berechnet werden kann. Auf diese Weise kann D perfekt verteilte user secret keys für alle Identitäten<br />

id ≠ id ∗ generieren. Man beachte aber, daß diese Rechnung für id = id ∗ fehlschlägt.<br />

50


Einbettung des BDDH-Problems. Das Zielchiffrat C ∗ = (c 0 , c 1 , c 2 ) für A wird nicht mittels<br />

Enc generiert, sondern aus D’s BDDH-Aufgabe z. Man rufe sich in Erinnerung, daß Enc(mpk, id ∗ , M b )<br />

Chiffrate der Form<br />

( s)<br />

(c 0 , c 1 , c 2 ) = (M b · v s , g s , u h) id ∗<br />

generiert. Setzen wir nun c 1 := g c (für D’s Eingabe g c ) an, so ergibt sich<br />

( )<br />

c 2 = u id ∗ c (<br />

h = u id ∗ −id ∗ g x) c<br />

= (g c ) x ,<br />

was wiederum von D aus g c und x berechnet werden kann. Weiter ist<br />

c 0 = M b · v c = M b · e(g, g) abc .<br />

In dieser Situation übergibt D dem Angreifer A als Zielchiffrat<br />

C ∗ := (c ∗ 0, c ∗ 1, c ∗ 2) := (M b · z, g c , (g c ) x ).<br />

Ist z = e(g, g) abc , so liefert dies ein perfekt verteiltes Chiffrat von M b . Ist aber z ← G T<br />

(und unabhängig) gewählt, so ist auch C ∗ unabhängig von b.<br />

zufällig<br />

Ausgabe und Analyse. Gibt A schließlich Ausgabe b ′ , so gibt D die Ausgabe des Experiments<br />

aus. (D gibt also 1 aus genau dann wenn b = b ′ ist.) Nach dem oben Gesagten ist<br />

[<br />

]<br />

Pr D(1 k , g, g a , g b , g c , e(g, g) abc ) = 1 = Adv ibe-sid-ind-cpa<br />

IBE,A<br />

(k).<br />

Andererseits ist<br />

[<br />

]<br />

Pr D(1 k , g, g a , g b , g c , z) = 1 = 1/2<br />

(für zufälliges z ← G T ), da in diesem Fall As Ausgabe b ′ unabhängig vom in der Simulation<br />

verwendeten b ist. Zusammenfügen ergibt<br />

G,G T ,D(k) = Advibe-sid-ind-cpa<br />

IBE,A<br />

(k)<br />

,<br />

2<br />

Adv bddh<br />

woraus die IBE-sID-IND-CPA-Sicherheit von IBE BB folgt.<br />

Von selective-ID- zu voller IBE-IND-CPA-Sicherheit. Der vorgestellte Beweis nutzt wesentlich<br />

aus, daß die Zielidentität id ∗ von vornherein bekannt ist. Insbesondere wird in der Simulation<br />

der master public key in Abhängigkeit von id ∗ konstruiert. Genauer wird die Simulation in<br />

der Lage sein, alle Ext-Anfragen bis auf id ∗ zu beantworten. Wählt ein Angreifer id ∗ aber adaptiv,<br />

in Abhängigkeit von mpk (oder womöglich sogar Ext-Antworten), dann versagt diese Strategie. Im<br />

folgenden soll eine Idee skizziert werden, die zu voller Sicherheit führt.<br />

Stellen wir uns nun eine Simulation vor, in der es viele Identitäten gibt, für die Ext-Anfragen<br />

nicht beantwortet werden können; jede dieser Identitäten sei für die Einbettung eines BDDH-<br />

Problems geeignet. Genauer sei die Wahrscheinlichkeit für jede Identität P , daß die Simulation<br />

eine Ext-Anfrage für diese Identität beantworten kann. Stellen wir uns idealisierend diese Wahrscheinlichkeiten<br />

als unabhängig vor, dann könnte eine solche Simulation mit Wahrscheinlichkeit<br />

51


P Q (1 − P ) eine Anzahl von Q Ext-Anfragen beantworten, und dann ein BDDH-Problem in die Zielidentität<br />

id ∗ einbetten. Wählen wir P = 1/(2Q), so gelingt die Simulation mit Wahrscheinlichkeit<br />

1/O(Q). Da der simulierte Angreifer PPT ist, wird Q polynomiell sein, weshalb 1/O(Q) signifikant<br />

sein wird, was ausreicht, um IBE-IND-CPA-Sicherheit zu zeigen.<br />

Ein IBE-Schema, das IBE BB in dieser Weise abwandelt und als sicher beweist, wird in [8] vorgestellt.<br />

Literatur<br />

[1] Werner Alexi, Benny Chor, Oded Goldreich, and Claus-Peter Schnorr. RSA and Rabin functions:<br />

Certain parts are as hard as the whole. SIAM Journal on Computing, 17(2):194–209,<br />

1988.<br />

[2] Manuel Blum and Silvio Micali. How to generate cryptographically strong sequences of pseudorandom<br />

bits. SIAM Journal on Computing, 13(4):850–864, 1984.<br />

[3] Oded Goldreich, Shafi Goldwasser, and Silvio Micali. How to construct random functions.<br />

In 25th FOCS, pages 464–479, Singer Island, Florida, October 24–26, 1984. IEEE Computer<br />

Society Press.<br />

[4] Oded Goldreich and Leonid A. Levin. A hard-core predicate for all one-way functions. In 21st<br />

ACM STOC, pages 25–32, Seattle, Washington, USA, May 15–17, 1989. ACM Press.<br />

[5] Johan Håstad, Russell Impagliazzo, Leonid A. Levin, and Michael Luby. A pseudorandom<br />

generator from any one-way function. SIAM Journal on Computing, 28(4):1364–1396, 1999.<br />

[6] Moni Naor and Moti Yung. Public-key cryptosystems provably secure against chosen ciphertext<br />

attacks. In 22nd ACM STOC, Baltimore, Maryland, USA, May 14–16, 1990. ACM Press.<br />

[7] Amit Sahai. Non-malleable non-interactive zero knowledge and adaptive chosen-ciphertext<br />

security. In 40th FOCS, pages 543–553, New York, New York, USA, October 17–19, 1999.<br />

IEEE Computer Society Press.<br />

[8] Brent R. Waters. Efficient identity-based encryption without random oracles. In Ronald Cramer,<br />

editor, EUROCRYPT 2005, volume 3494 of LNCS, pages 114–127, Aarhus, Denmark, May 22–<br />

26, 2005. Springer, Berlin, Germany.<br />

52

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!