Identitätsbasierte Kryptographie zum Proseminar Public-Key Kryptographie im WS 05/06 eine Veranstaltung der AG Codes und Kryptographie Universität Paderborn Jonas Schrieb jonas@upb.de 6. April 2006 Identitätsbasierte Kryptographie ist eine spezielle Form der Public-Key Kryptographie, bei der die Identität (z.b. die Emailadresse) eines Benutzers zugleich sein öffentlicher Schlüssel ist. Zertifikate, welche die Zugehörigkeit eines öffentlichen Schlüssels zu einer Identität bestätigen, werden dadurch überflüssig. Inhalt dieser Ausarbeitung ist ein solches Kryptosystem von Dan Boneh und Matthew Franklin. Es ist eine Modifikation von ElGamal und basiert im Wesentlichen auf einer bilinearen Abbildung zwischen zwei Gruppen. Inhaltsverzeichnis 1 Einführung 2 2 Definitionen 2 3 Das Boneh-Franklin Kryptosystem 7 3.1 Definition: BasicIdent............................. 7 3.2 Korrektheit................................... 8 3.3 IND-ID-CPA Sicherheit............................ 8 3.3.1 Definition: BasicPub.......................... 10 3.3.2 BDHP BasicPub........................... 10 3.4 IND-ID-CCA2 Sicherheit und konkrete Umsetzung............. 13 4 Zusammenfassung 14 Literatur 14 1
1 Einführung In Public-Key Kryptosystemen wird festgelegt, wie Alice mit Hilfe des öffentlichen Schlüssels von Bob eine Nachricht an Bob verschlüsseln kann. Die Frage, woher Alice diesen öffentlichen Schlüssel bezieht und wie Alice sicherstellt, dass dieser Schlüssel auch wirklich Bob gehört, wird nicht geklärt. Für gewöhnlich ist der öffentliche Schlüssel auf einem Schlüsselserver hinterlegt und die Authentizität wird durch das Zertifikat einer vertrauenswürdigen Stelle bestätigt. Schon 1984 äußerte Shamir in [Sha85] die Idee, diese Verfahrensweise zu vereinfachen. Alice soll nicht aufwändig den öffentlichen Schlüssel von Bob ermitteln müssen, statt dessen soll eine eindeutige Identität von Bob (z.b. die Email-Adresse oder Telefonnummer) gleichzeitig auch sein öffentlicher Schlüssel sein. Der private Schlüssel von Bob muss dann aus seiner Identität berechenbar sein. Damit Eve nicht die privaten Schlüssel von Alice und Bob berechnen kann, muss der private Schüssel zusätzlich von einem geheimen masterkey abhängen. Dieser masterkey ist nur einer zentralen Stelle bekannt, welche die privaten Schlüssel nach erfolgreicher Authentifizierung an die Benutzer des Systems verteilt. Lange Zeit gab es keine oder nicht-zufriedenstellende Umsetzungen von Shamirs Idee. Auf der CRYPTO 2001 stellten Dan Boneh und Matthew Franklin das erste voll funktionsfähige Verfahren vor. In dieser Ausarbeitung wird das Boneh-Franklin Kryptosystem vorgestellt. Der Beweis der Sicherheit orientiert sich allerdings nicht an der ursprünglichen Darstellung in [BF01], sondern an einer überarbeiteten Version [BF03]. In dieser wird die Sicherheit in einem strengen Sicherheitsmodell bewiesen. Zuerst werden in Abschnitt 2 die notwendigen Definitionen von identitätsbasierter Kryptographie, des Sicherheitsmodells und des der Sicherheit zugrundeliegenden Problems gegeben. In Abschnitt 3 wird dann das Verfahren definiert (3.1) sowie die Korrektheit (3.2) und Sicherheit (3.3) bewiesen. 2 Definitionen Notation: Im folgenden bezeichne G (G 1, G 2,...) eine beliebige Gruppe mit Gruppenverknüpfung G und neutralem Element n G. G bezeichne die Menge G \ {n G } für eine Gruppe mit Primordnung ist dies gerade die Menge der erzeugenden Elemente. Weiterhin ist für x G und a N mit x (a) die a-fache Hintereinanderausführung von G auf x gemeint. Soll ein Element e zufällig und gleichverteilt aus einer Menge M ausgewählt werden, so wird dies verkürzt als e R M geschrieben. 2
Alice M encrypt C decrypt M Bob Bob setup - params - masterkey params Zentrale Stelle extract d Bob Bob d Bob Abbildung 1: Aufbau eines identitätsbasierten Kryptosystems Identitätsbasiertes Kryptosystem: Definition 1: Ein identitätsbasiertes Kryptosystem wird durch vier randomisierte Algorithmen definiert: Setup, Extract, Encrypt, Decrypt (siehe Abbildung 1). Setup bekommt als Eingabe einen Sicherheitsparameter k N \ {0}. Es werden die Systemparameter params (u.a. der Klartextraum P und der Chiffretextraum C) sowie ein masterkey festgelegt. Die params werden veröffentlicht, während der masterkey nur der zentralen Stelle bekannt sein darf. Extract bekommt als Eingabe die Identität ID {0, 1} (und damit den öffentlichen Schlüssel) eines Benutzers, sowie params und masterkey. Es wird der zu dieser ID gehörige private Schlüssel d ID ausgegeben. Encrypt bekommt als Eingabe eine Nachricht M P, die Identität ID des Empfängers, sowie params. Es wird der für ID verschlüsselte Chiffretext C C ausgegeben. Decrypt bekommt als Eingabe den Chiffretext C, den privaten Schlüssel d ID des Empfängers, sowie params. Es wird die zuvor verschlüsselte Nachricht M ausgegeben. Als erstes muss mit Setup das Kryptosystem eingerichtet werden, da alle anderen Algorithmen die durch Setup festgelegten params benötigen. Dann kann allerdings eine Nachricht verschlüsselt werden, ohne dass der Empfänger zuvor agieren muss, da alle benötigten Parameter für Encrypt schon bekannt sind. Dies ist bei herkömmlicher Public-Key Kryptographie anders, da hier der Empfänger zuerst ein Schlüsselpaar erzeugen muss. Definition 2: Das Kryptosystem wird als korrekt bezeichnet, wenn für beliebige gültige Kombinationen von params und masterkey, für eine beliebige ID mit zugehörigem privaten Schlüssel d ID und jede Nachricht M die übliche Konsistenzgleichung gilt: M = Decrypt(Encrypt(M, ID, params), d ID, params) 3
Semantische Sicherheit: Die zu erzielende Sicherheit von Kryptosystemen wird häufig mit Spielen zwischen einem Herausforderer und einem Angreifer definiert. Der Herausforderer benutzt ein Kryptosystem, welches der Angreifer in diesem Spiel zu brechen versucht. Die Sicherheit des Verfahrens hängt mit der Erfolgswahrscheinlichkeit des Angreifers zusammen. Für randomisierte Public-Key Kryptosysteme modelliert das Spiel IND-CPA das Sicherheitsziel, dass kein Angreifer in der Lage sein soll, zu einem gegebenen Chiffretext irgendetwas über die ursprüngliche Nachricht herauszufinden. Es soll nicht einmal möglich sein, Chiffretexte zu zwei Nachrichten voneinander zu unterscheiden (IND steht für indistinguishable ). Dabei kann der Angreifer zu Klartexten seiner Wahl Chiffretexte erzeugen (CPA steht für chosen-plaintext attack ). Das Spiel ist wie folgt definiert: Setup Der Herausforderer erzeugt zufällig ein Schlüsselpaar (e, d) K in Abhängigkeit vom Sicherheitsparameter k N \ {0} (z.b. Bit-Länge der Gruppengröße). Er gibt seinen öffentlichen Schlüssel e an den Angreifer weiter, während sein privater Schlüssel d geheim bleibt. Phase 1 Der Angreifer führt beliebige Operationen durch. Insbesondere kann er mit Hilfe des öffentlichen Schlüssels e Chiffretexte zu Klartexten seiner Wahl erzeugen. Challenge Der Angreifer erklärt Phase 1 zu einem Zeitpunkt seiner Wahl für beendet und übergibt dem Herausforderer zwei verschiedene Nachrichten M 0, M 1 P gleicher Länge. Dieser gibt dem Angreifer den Chiffretext einer dieser beiden Nachrichten zurück. Dazu wählt er b R {0, 1} und setzt C = Encrypt(M b, e). Phase 2 Wie Phase 1. Guess Der Angreifer äußert seine Vermutung b {0, 1} welche der beiden Nachrichten verschlüsselt wurde. Er gewinnt das Spiel, falls b = b gilt. Das Zufallsereignis win tritt ein, wenn der Angreifer das Spiel gewinnt, also b = b ist. Der Angreifer hat den Vorteil ɛ(k), wenn gilt P r[win] 1 2 ɛ(k) (die Wahrscheinlichkeit geht über die zufälligen Bits von Angreifer und Herausforderer) Definition 3: Das Kryptosystem ist semantisch sicher gegenüber chosen-plaintext Angriffen (CPA), wenn für jeden in k polynomiell beschränkten Angreifer die Vorteilsfunktion in diesem IND-CPA-Spiel unbedeutend klein ist (d.h. in O( 1 k n ) für alle n N). Rät der Angreifer, wählt also b R {0, 1}, so hat er die Erfolgswahrscheinlichkeit P r[win] = 1 2. Der oben definierte Vorteil ist also die Abweichung der Erfolgswahrscheinlichkeit vom Raten. Dass eine Abweichung nach oben ein Vorteil ist, sollte intuitiv 4
klar sein. Dass auch eine Abweichung nach unten ein Vorteil ist, lässt sich daran erkennen, dass man durch Umkehren der Vermutung eine Erfolgswahrscheinlichkeit von 1 P r[win] > 1 2 erhält. Es fällt auf, dass das Kryptosystem randomisiert sein muss. Wäre der Chiffretext einer Nachricht bei jedem Verschlüsselungsvorgang der selbe, so könnte der Angreifer einfach Encrypt(M 0, e) und Encrypt(M 1, e) mit C vergleichen und somit immer die richtige Antwort geben. Es gibt noch schärfere Definitionen von Sicherheit. In einem (adaptiven) chosen-ciphertext Angriff (IND-CCA bzw. IND-CCA2) darf der Angreifer sich in den Phasen 1 (und 2) zusätzlich beliebige Chiffretexte C entschlüsseln lassen. Bei identitätsbasierten Kryptosystemen basieren die privaten Schlüssel verschiedener IDs alle auf dem gemeinsamen masterkey, sie stehen also in einem engen mathematischen Zusammenhang. Ein Angreifer kann bereits mehrere private Schlüssel kennen, wenn er eine weitere ID attackiert. Ein identitätsbasiertes Kryptosystem soll solch einem Angriff stand halten. Daher werden die zuvor genannten Spiele dahingehend erweitert (zu IND-ID-CPA bzw. IND-ID-CCA), dass A die attackierte ID a auswählen und sich zu allen IDs ID a die privaten Schlüssel generieren lassen darf. Eine Übersicht und Vergleich zu verschiedenen Sicherheitsmodellen zu Public-Key Kryptosystemen liefert [BDPR98]. Entsprechendes für identitätsbasierte Kryptosysteme findet sich in [GH05]. Zufällige Orakel: Kryptographische Hashfunktionen können die Analyse von Kryptosystemen erschweren. Daher ersetzt man sie in der Sicherheitsanalyse teilweise durch ein so genanntes zufälliges Orakel. Definition 4: Ein zufälliges Orakel ist eine Funktion H : D W mit gleichem Definitionsbereich D und Wertebereich W wie die Hashfunktion, die sie ersetzt. Sie wird zufällig und gleichverteilt aus der Menge aller Funktionen {f f : D W } ausgewählt. Somit sind die einzelnen Funktionswerte zufällig, gleichverteilt und unabhängig voneinander. Ein zufälliges Orakel stellt also das Ideal einer Hashfunktion dar. Beweist man die Sicherheit eines Systems mit zufälligen Orakeln, so bedeutet dies aber nicht automatisch, dass es auch mit kryptographischen Hashfunktionen sicher sein muss. Zulässige bilineare Abbildungen: Zu zwei Gruppen G 1, G 2 nennt man eine Abbildung ê : G 1 G 1 G 2 bilinear, wenn für alle x, y, z G 1 gilt: ê(x G1 y, z) = ê(x, z) G2 ê(y, z) ê(x, y G1 z) = ê(x, y) G2 ê(x, z) 5
Da im folgenden G 1 und G 2 immer Primordnung q haben und somit zyklisch sind, wird eine in diesem Fall äquivalente Definition verwendet. ê ist bilinear, wenn für alle x, y G 1 und a, b N gilt: ê(x (a), y (b) ) = ê(x, y) (ab) Damit eine bilineare Abbildung auch praktisch verwendbar ist, sind noch zusätzliche Forderungen an die Funktion zu stellen. Definition 5: ê : G 1 G 1 G 2 ist eine zulässige bilineare Abbildung, wenn gilt: ê ist eine bilineare Abbildung ê ist nicht entartet, d.h. Bild(ê) {n G2 } es existiert ein effizienter Algorithmus für die Berechnung der Bildwerte von ê Bilineares Diffie-Hellman Problem: Die Sicherheit des zu definierenden Systems basiert auf dem bilinearen Diffie-Hellman Problem (BDHP). Dies ist eng verwandt mit dem computational Diffie-Hellman Problem (in etwa: berechne x (ab) zu gegebenen x, x (a), x (b) ). Definition 6: Seien G 1, G 2 zwei Gruppen mit Primordnung q sowie ê : G 1 G 1 G 2 eine zulässige bilineare Abbildung. Das BDHP zu G 1, G 2, ê ist wie folgt definiert: Zu gegebenen x, x (a), x (b), x (c) mit x G 1 und a, b, c {1,..., G 1 1} soll der Wert ê(x, x) (abc) berechnet werden. Ein Algorithmus A löst das BDHP zu G 1, G 2, ê mit Vorteil ɛ, wenn gilt P r[a(g 1, G 2, ê, x, x (a), x (b), x (c) ) = ê(x, x) (abc) ] ɛ (die Wahrscheinlichkeit geht über die Wahl von x, a, b, c und die zufälligen Bits in A). In dem zu definierenden Verfahren wird die Größe der Gruppen G 1, G 2 durch einen Sicherheitsparameter k N \ {0} bestimmt. Im Folgenden seien G 1 (k), G 2 (k), ê(k) die im Verfahren verwendeten und durch k bestimmten Parameter, so hat A den Vorteil ɛ(k), wenn gilt P r[a(g 1 (k), G 2 (k), ê(k), x, x (a), x (b), x (c) ) = ê(x, x) (abc) ] ɛ(k) (die Wahrscheinlichkeit geht über die Wahl von x, a, b, c und die zufälligen Bits in A). Definition 7: Das BDHP ist in den jeweils verwendeten Gruppen mit der bilinearen Abbildung schwer, wenn für jeden in k polynomiell beschränkten Angreifer die Vorteilsfunktion unbedeutend klein ist. Das BDHP ist reduzierbar auf das computational Diffie-Hellman Problem in einer der beiden Gruppen, welches wiederum reduzierbar auf das diskrete Logarithmus Problem in diesen Gruppen ist. In die entgegengesetzte Richtung ist weniger bekannt. Für nähere Erläuterungen sei an dieser Stelle auf [BF03] und die dort angegebene Literatur verwiesen. 6
3 Das Boneh-Franklin Kryptosystem Boneh und Franklin definieren ihr Verfahren in zwei Stufen. Zuerst wird ein IND-ID- CPA sicheres Verfahren BasicIdent definiert. Anschließend wird dieses zu einem IND- ID-CCA2 sicherem Verfahren FullIdent erweitert. Im Rahmen dieser Ausarbeitung soll nur das grundlegende Verfahren BasicIdent ausführlich vorgestellt werden. Abschnitt 3.4 erklärt kurz, welche weiteren Schritte zur IND-ID-CCA2 Sicherheit notwendig sind. 3.1 Definition: BasicIdent Das Verfahren wird zunächst für allgemeine Gruppen mit bestimmten Eigenschaften beschrieben. Das Finden von Gruppen mit diesen Eigenschaften (genauer: mit einer zulässigen bilinearen Abbildung) ist nicht trivial. In Abschnitt 3.4 wird kurz darauf eingegangen, wie solche konkreten Gruppen aussehen können. Die vier Algorithmen Setup, Extract, Encrypt und Decrypt sind im Folgenden beschrieben: Setup(k) Es werden Gruppen G 1, G 2 mit Primordnung q (in Abhängigkeit des Sicherheitsparameters k), eine zulässige bilineare Abbildung ê : G 1 G 1 G 2 und kryptographische Hashfunktionen H 1 : {0, 1} G 1 und H 2 : G 2 {0, 1} n festgelegt. Anschließend wird ein erzeugendes Element g R G 1 und ein geheimer Exponent s R {1,..., G 1 1} gewählt. Hiermit wird zuletzt ein weiteres erzeugendes Element g s := g (s) G 1 berechnet. Die Systemparameter params := (G 1, G 2, q, ê, H 1, H 2, n, g, g s ) werden veröffentlicht, während der masterkey := s geheim bleibt. Implizit wird durch das Setup auch der Klartextraum P = {0, 1} n, der Chiffretextraum C = G 1 {0, 1}n, für die Benutzer des Systems der Schlüsselraum K = {0, 1} G 1 definiert, dabei ist die erste Komponente die öffentliche Identität und die zweite Komponente der private Schlüssel. Extract(ID, masterkey, params) Zuerst muss der zur ID gehörende öffentliche Erzeuger e ID := H 1 (ID) G 1 berechnet werden. Der zur ID gehörende private Schlüssel wird dann durch d ID := e (s) ID G 1 bestimmt. Encrypt(M, ID, params) Um eine Nachricht an ID zu verschlüsseln, muss auch hier zuerst der zur ID gehörende öffentliche Erzeuger e ID := H 1 (ID) G 1 berechnet werden. Weiterhin muss ein nur für diese Verschlüsselung gültiger zufälliger Exponent r R {1,..., G 1 1} gewählt werden. Der Chiffretext berechnet sich dann durch C := ( g (r), M H 2 (ê(e ID, g s ) (r) ) ). Decrypt(C, d ID, params) Sei der übermittelte Chiffretext C = (g r, C ). Die an ID verschlüsselte Nachricht lässt sich mit Hilfe des privaten Schlüssel d ID dann wie folgt berechnen: M = C H 2 (ê(d ID, g r )). 7
3.2 Korrektheit Satz 1: Das Verfahren BasicIdent ist korrekt. Beweis. Für die Korrektheit muss M = M gezeigt werden. Schreibt man die Operationen, die auf M während der Ver- und Entschlüsselung durchgeführt werden, nacheinander auf, so erhält man: M = M H 2 (ê(e ID, g s ) (r) ) }{{} encrypt H 2 (ê(d ID, g r )) }{{} decrypt! = M M wird also durch eine XOR-Verknüpfung mit H 2 (ê(e ID, g s ) (r) ) {0, 1} n maskiert und durch die XOR-Verknüpfung mit H 2 (ê(d ID, x)) {0, 1} n demaskiert. Da bezüglich der XOR-Verknüpfung jedes Element in {0, 1} n selbstinvers ist, reicht es zu zeigen, dass bei Ver- und Entschlüsselung die jeweiligen Bildwerte gleich sind. Dies ist insbesondere der Fall, wenn die Funktionsparameter gleich sind: ê(e ID, g s ) (r) = ê(e ID, g (s) ) (r) (nach Definition von g s ) = ê(e ID, g) (s r) (aufgrund der Bilinearität von ê) = ê(e (s) ID, g(r) ) (aufgrund der Bilinearität von ê) = ê(d ID, g r ) (nach Definition von d ID und g r ) 3.3 IND-ID-CPA Sicherheit Unter der Annahme, dass das BDHP in den von BasicIdent verwendeten Gruppen mit der bilinearen Abbildung schwer ist, lässt sich beweisen, dass BasicIdent semantisch sicher gegenüber chosen-plaintext Angriffen ist. Dies wird per Reduktion gezeigt: Satz 2: Sei A ein Algorithmus, der in einem IND-ID-CPA-Angriff auf BasicIdent den Vorteil ɛ(k) hat. Dabei seien die Hashfunktionen H 1 und H 2 durch zufällige Orakel ersetzt. Weiterhin sei q E (k) > 0 die Anzahl der privaten Schlüssel, die A sich generieren lässt, und q H2 (k) > 0 die Anzahl der Anfragen an das Orakel H 2. Dann lässt sich ein Algorithmus C konstruieren, der das BDHP mit den von BasicIdent verwendeten G 1, G 2, ê lösen kann mit Vorteil mindestens 2ɛ(k) e(1 + q E (k)) q H2 (k) 8
Beweisstrategie. Zu BasicIdent wird ein Public-Key Kryptosystem BasicPub eingeführt, welches in der Verfahrensweise weitgehend identisch ist, allerdings keine Identitäten verwendet. Es wird gezeigt, wie ein IND-ID-CPA Angreifer A gegen BasicIdent einem IND- CPA Angreifer B gegen BasicPub helfen kann. Dabei simuliert B im IND-ID-CPA Spiel den Herausforderer und die zufälligen Orakel für A. Dadurch erhält B Informationen, die ihm beim Angriff von BasicPub helfen können. Ist der Vorteil von A nicht unbedeutend, so wird auch der Vorteil von B nicht unbedeutend sein. Anschließend wird in gleicher Weise gezeigt, wie ein IND-CPA Angreifer B gegen BasicPub einem Algorithmus C bei der Lösung des BDHP in G 1 (k), G 2 (k) und ê(k) helfen kann. Insgesamt wird also gezeigt: BDHP BasicP ub }{{} IND CP A BasicIdent }{{}. IND ID CP A Formal bedeutet dies, dass folgende Lemmata bewiesen werden müssen: Lemma 2.1: Sei A ein Algorithmus, der in einem IND-ID-CPA-Angriff auf BasicIdent den Vorteil ɛ(k) hat. Dabei seien die Hashfunktionen H 1 und H 2 durch zufällige Orakel ersetzt. Weiterhin sei q E (k) > 0 die Anzahl der privaten Schlüssel, die A sich generieren lässt. Dann lässt sich ein Algorithmus B konstruieren, der in einem IND-CPA-Angriff auf BasicPub mindestens folgenden Vorteil hat: ɛ(k) e(1 + q E (k)) Lemma 2.2: Sei B ein Algorithmus, der in einem IND-CPA-Angriff auf BasicPub den Vorteil ɛ(k) hat. Dabei sei die Hashfunktion H 2 durch ein zufälliges Orakel ersetzt. Weiterhin sei q H2 (k) > 0 die Anzahl der Anfragen an das Orakel H 2. Dann lässt sich ein Algorithmus C konstruieren, der das BDHP mit den von BasicPub verwendeten G 1, G 2, ê lösen kann mit Vorteil mindestens 2ɛ(k) q H2 (k) In dieser Ausarbeitung wird nur Lemma 2.2 gezeigt. Der Beweis für Lemma 2.1 kann in [BF03] nachgelesen werden. Folgerung 3: Falls das BDHP mit den von BasicIdent verwendeten G 1, G 2, ê schwer ist, so ist BasicIdent semantisch sicher gegenüber chosen-plaintext Angriffen (IND-ID-CPA). Beweis. Angenommen BasicIdent wäre nicht semantisch sicher gegenüber chosen-plaintext Angriffen. Dann gäbe es also einen IND-ID-CPA Angreifer A mit nicht unbedeutendem Vorteil. Nach Satz 2 lässt sich hiermit ein Algorithmus C konstruieren, welcher nicht unbedeutenden Vorteil beim Lösen des BDHP hat. Dies widerspricht aber der Annahme, dass das BDHP in den verwendeten Gruppen mit der verwendeten bilinearen Abbildung schwer ist. 9
3.3.1 Definition: BasicPub An Stelle der Algorithmen Setup und Extract tritt der Algorithmus Keygen, welcher für eine einzige Person ein zufälliges Schlüsselpaar erzeugt. Die ID des Benutzers wird in BasicIdent nur an einer Stelle verwendet, nämlich bei der Bestimmung von e ID. Die wesentliche Veränderung besteht darin, diesen Wert nicht in Abhängigkeit der ID zu berechnen, sondern frei zu wählen. Damit ergibt sich folgendes Verfahren: Keygen(k) Die Gruppen G 1, G 2, die zulässige bilineare Abbildung ê, die kryptographische Hashfunktion H 2, das erzeugende Element g, der geheime Exponent s und das weitere erzeugende Element g s werden genau wie bei BasicIdent bestimmt. Zusätzlich wird e R G 1 gewählt und damit d := e(s) G 1 berechnet. Dies ist der Ersatz für für e ID und d ID in BasicIdent. Der geheime Exponent s kann verworfen werden. Der öffentliche Schlüssel ist nun (G 1, G 2, q, ê, H 2, n, g, g s, e), während d als privater Schlüssel geheim bleibt. Encrypt(M, e) Zuerst muss ein nur für diese Verschlüsselung gültiger zufälliger Exponent r R {1,..., G 1 1} gewählt werden. Der Chiffretext berechnet sich dann durch C := ( g (r), M H 2 (ê(e, g s ) (r) ) ). Decrypt(C, d) Sei der übermittelte Chiffretext C = (g r, C ). Die verschlüsselte Nachricht lässt dann wie folgt berechnen: M = C H 2 (ê(d, g r )). Die Korrektheit des Verfahrens folgt direkt aus der Korrektheit von BasicIdent. 3.3.2 BDHP BasicPub Beweis von Lemma 2.2. Sei B ein IND-CPA Angreifer von BasicPub mit Vorteil ɛ(k). Es soll ein Algorithmus C konstruiert werden, welcher mit Hilfe von B das BDHP in G 1 (k), G 2 (k) und ê(k) löst. Zur Eingabe x, x (a), x (b), x (c) G 1 (k) soll ê(x, x)(abc) G 2 (k) berechnet werden. C nimmt gegenüber B die Rolle des Herausforderers ein und arbeitet wie folgt: Setup Der öffentliche Schüssel ist (G 1 (k), G 2 (k), q, ê(k), H 2, n, g, g s, e), wobei g := x, g s := x (a) und e := x (b) ist. Man beachte, dass dies s = a und d = e (a) = x (ab) impliziert. Anfragen an H 2 Wird ein Wert x zum ersten mal angefragt, so wird H 2 (x) R {0, 1} n zurückgegeben und die Anfrage zusammen mit der Antwort gespeichert. Bei allen folgenden Anfragen von x wird der zuvor gespeicherte Wert zurückgegeben. Challenge C ignoriert die von B erhaltenen Nachrichten M 0 und M 1. Der Chiffretext ist C := (g r, R) mit g r := x (c) und R R {0, 1} n. Man beachte, dass Decrypt(C, d) = R H 2 (ê(d, x (c) )). Dies impliziert, dass der Hashwert von ê(d, x (c) ) = ê(x (ab), x (c) ) = ê(x, x) (abc) =: D die verwendete Maskierung ist. Guess C ignoriert die Ausgabe von B und wählt statt dessen ein beliebiges von B bei H 2 angefragtes x. Dieses x wird von C als Lösung des BDHP ausgegeben. 10
Die Erwartung ist, dass B ohne Kenntnis der Maskierung keinerlei Informationen über b erhalten kann. Die Maskierung hängt aber einzig vom Hashwert von D = ê(x, x) (abc), also von der Lösung des BDHP, ab. B muss diesen Wert also beim zufälligen Orakel anfragen. Die Wahrscheinlichkeit, dass C die richtige Lösung des BDHP liefert, setzt sich aus den Wahrscheinlichkeiten zusammen, dass der Wert D angefragt wurde, sowie dass C dann den richtigen Wert aus allen angefragten auswählt: P r[a(g 1 (k), G 2 (k), ê(k), x, x (a), x (b), x (c) ) = D = ê(x, x) (abc) ] = P r[mask] q H2 (k) wobei das Zufallsereignis mask meint, dass der zur Bestimmung der Maskierung notwendige Wert (hier: D) beim zufälligen Orakel H 2 angefragt wurde. Doch bevor dieser Wert bestimmt werden kann, muss zunächst ein anderes Problem betrachtet werden. Über B ist bekannt, dass es in einem IND-CPA Spiel, welches korrekt abläuft, einen gewissen Vorteil hat. Allerdings verhält C sich an einigen Stellen anders, als es für den Herausforderer im IND-CPA Spiel zuvor festgelegt wurde. Daher kann von Wahrscheinlichkeiten, die in einem realen (also korrekt ablaufenden) Angriff gelten (im folgenden mit P r [...] bezeichnet) nicht ohne weiteres auf Wahrscheinlichkeiten in diesem von C simulierten Angriff (im folgenden mit P r[...] bezeichnet) gefolgert werden. Behauptung: P r[mask] = P r [mask] Die Stellen, an denen sich C anders als erwartet verhält, sind in Tabelle 1 aufgeführt. Die Wert C korrekt g x R G 1 g s x (a) g (s), s R {1,..., G 1 1} e x (b) R G 1 g r x (c) g (r), r R {1,..., G 1 1} C R {0, 1} n M 0/1... Tabelle 1: abweichendes Verhalten von C gegenüber der Definition ersten vier Abweichungen sind dabei unproblematisch. g, g s und g r sind genau so gewählt, wie es gefordert ist, nur dass die (zufällige) Wahl nicht durch C getroffen wurde. Weiterhin soll e R G 1 gewählt werden. In diesem Fall wird allerdings (wieder nicht von C) zuerst c R {1,... G 1 1} gewählt und dann e := x (c) gesetzt. Da x G 1 ein erzeugendes Element ist, existiert zu jedem Element e G 1 genau ein c R {1,... G 1 1}, so dass e = x (c). Da c zufällig und gleichverteilt gewählt ist, ist somit auch e zwar auf andere Art und Weise aber trotzdem zufällig und gleichverteilt aus G 1 gewählt. In allen vier Fällen liegen für die Werte also die gleichen Verteilungen zu Grunde, so dass die unterschiedliche Vorgehensweise aus der Sicht von B keinen Unterschied macht. Problematischer ist die Abweichung bei C. Durch die Festlegung von C auf R erwartet B nach Definition des IND-CPA Spiels, dass R = C = M 0 H 2 (D) oder R = C = M 1 H 2 (D) gilt. Dies impliziert für den Wert von H 2 (D) dass er gleich R M 0 oder 11
R M 1 sein muss. Fragt B den Hashwert von D beim zufälligen Orakel an, so bekommt es eine Antwort, die mit großer Wahrscheinlichkeit ungleich dem erwarteten Wert R M 0 oder R M 1 ist. In diesem Fall verhält sich C aus der Sicht von B nicht mehr korrekt und somit ist das Verhalten B unbestimmt. Solange B allerdings den Hashwert von D nicht nachfragt, ist die Sicht von B wie in einem korrekt ablaufenden IND-CPA Spiel. Sei mask i das Zufallsereignis, dass D innerhalb der ersten i Anfragen mindestens einmal beim zufälligen Orakel H 2 angefragt wurde. Es soll per vollständiger Induktion gezeigt werden, dass P r[mask n ] = P r [mask n ]. Die Wahrscheinlichkeit, dass D in keiner Anfrage mindestens einmal angefragt wird, ist in beiden Fällen offensichtlich gleich 0. Somit gilt P r[mask 0 ] = 0 = P r [mask 0 ] ist. Es folgt der Induktionsschritt: P r[mask n+1 ] = P r[mask n+1 mask n ] P r[ mask n ] + P r[mask n+1 mask n ] P r[mask n ] = P r [mask n+1 mask n ] P r [ mask n ] + P r [mask n+1 mask n ] P r [mask n ] = P r [mask n+1 ] Dabei gilt P r[ mask n ] = P r [ mask n ] und P r[mask n ] = P r [mask n ] nach Induktionsvoraussetzung. Weiterhin gilt P r[mask n+1 mask n ] = 1 = P r [mask n+1 mask n ], da mask n mask n+1. Mehr Beachtung benötigt der letzte Punkt: P r[mask n+1 mask n ] = P r [mask n+1 mask n ]. B hat bei den ersten n Anfragen den Hashwert von D noch nicht nachgefragt. Nach obigen Überlegungen ist die Sicht von B in Simulation und realem Angriff also noch gleich. Damit ist aber auch das Verhalten von B und somit die Wahrscheinlichkeit bei der n + 1-ten Anfrage in beiden Fällen gleich. Insgesamt folgt also für alle n, dass P r[mask n ] = P r [mask n ] ist. Dann muss wegen mask = mask qh2 aber auch P r[mask] = P r [mask] gelten. Nun kann man P r [mask] abschätzen. Da es sich hier um einen realen Angriff unter Einhaltung aller Regeln des IND-CPA Spiels handelt, kann Wissen über P r [win] benutzt werden. Behauptung: P r [mask] 2ɛ(k) P r [win] = P r [win mask] P r [mask] + P r [win mask] P r [ mask] = P r [win mask] P r [mask] + 1 }{{} 2 P r [ mask] ( ) 1 P r [mask] + 1 2 P r [ mask] = P r [mask] + 1 2 (1 P r [mask]) = 1 2 + 1 2 P r [mask] 12
sowie P r [win] = P r [win mask] P r [mask] + P r [win mask] P r [ mask] = P r [win mask] P r [mask] + 1 }{{}}{{} 2 P r [ mask] ( ) 0 0 1 2 P r [ mask] = 1 2 (1 P r [mask]) = 1 2 1 2 P r [mask] In ( ) wurde jeweils angewandt, dass P r [win mask] = 1 2 ist. Dies bedarf noch einer Erklärung. Wenn B H 2 (D) niemals nachfragt, so kennt B den genauen Wert nicht. B weiß nur, dass gilt H 2 (D) = C M 0 oder H 2 (D) = C M 1. Beide Werte sind mit Wahrscheinlichkeit 1 2 möglich. Somit gilt P r [win mask] = 1 2. Aus beiden Abschätzungen zusammen folgt: P r [mask] 2(P r [win] 1 2 ) P r [mask] und somit P r [mask] 2 P r [win] 1 2 2ɛ(k). Insgesamt ergibt sich, dass C das BDHP mit Wahrscheinlichkeit P r[mask] q H2 (k) = P r [mask] q H2 (k) 2ɛ(k) q H2 (k) löst. 3.4 IND-ID-CCA2 Sicherheit und konkrete Umsetzung IND-CCA2 ist ein gemeinhin anerkanntes Kriterium für sichere Public-Key Kryptosysteme. Daher ist es für identitätsbasierte Verfahren wünschenswert, dass diese das analog definierte Kriterium IND-ID-CCA2 erfüllen. Mit einem Verfahren, das auf Fujisaki- Okamoto [FO99] zurückgeht, wird BasicIdent zu FO(BasicIdent) erweitert. FO(BasicPub) sei das Ergebnis, wenn man die selbe Transformation auf BasicPub anwendet. Dann erfolgt der Sicherheitsbeweis durch folgende Kette von Reduktionen: BDHP (1) BasicP }{{ ub } F O(BasicP ub) (2) }{{} (3) IND CP A IND CCA2 F O(BasicIdent) = F ullident }{{} IND ID CCA2 Dabei ist (1) das hier vorgestellte und (3) ein hier nicht vorgestelltes Ergebnis aus [BF03], während (2) ein Ergebnis aus [FO99] ist. Weiterhin wird in [BF03] eine konkrete Umsetzung des allgemein auf Gruppen definierten Verfahrens vorgestellt. Mit Hilfe der Weil-Paarung wird eine zulässige bilineare Abbildung konstruiert, die zwei Elemente aus der Gruppe von Punkten einer bestimmten elliptischen Kurve in die kommutative Gruppe des Körpers F p 2 abbildet. Die Laufzeit dieser Umsetzung ist laut den Autoren vergleichbar mit der des Verfahrens von ElGamal in vergleichbaren Gruppen. 13
4 Zusammenfassung Boneh und Franklin haben durch Einführen einer bilinearen Abbildung das ElGamal Kryptosystem so abgeändert, dass für die Entschlüsselung der geheime Exponent s nicht mehr direkt bekannt sein muss. Statt dessen reicht es zur Entschlüsselung, wenn dieser Exponent nur versteckt in der Potenz e (s) ID bekannt ist. So ist es möglich, ein identitätsbasiertes Kryptosystem mit einem gemeinsamen geheimen Exponenten zu konstruieren, ohne dass die Sicherheit durch einen (oder sogar mehrere) nicht-vertrauenswürdigen Mitbenutzer beeinträchtigt wird. Unter der Annahme, dass das bilineare Diffie-Hellman Problem in den verwendeten Gruppen schwer ist, ist das System sicher gegen IND-ID- CCA2 Angreifer. Dies ist das identitätsbasierte Analogon zum Standardsicherheitsmodell IND-CCA2 von Public-Key Systemen. Die vorgestellte Arbeit hat die Forschung zu identitätsbasierter Verschlüsselung sehr belebt. Die Zahl der Veröffentlichungen ist seit [BF01] stark angestiegen 1. Literatur [BDPR98] Mihir Bellare, Anand Desai, David Pointcheval, and Phillip Rogaway. Relations among notions of security for public-key encryption schemes. In Advances in Cryptology CRYPTO 98, volume 1462 of Lecture Notes in Computer Science, pages 26 45. Springer-Verlag, 1998. [BF01] [BF03] [FO99] [GH05] [Sha85] Dan Boneh and Matthew Franklin. Identity-based encryption from the weil pairing. In Advances in Cryptology CRYPTO 2001, volume 2139 of Lecture Notes in Computer Science, pages 213 229. Springer-Verlag, 2001. Dan Boneh and Matthew Franklin. Identity-based encryption from the weil pairing. SIAM Journal of Computing, 32(3):586 615, 2003. Eiichiro Fujisaki and Tatsuaki Okamoto. Secure integration of asymmetric and symmetric encryption schemes. In Advances in Cryptology CRYPTO 99, volume 1666 of Lecture Notes in Computer Science, pages 537 554. Springer-Verlag, 1999. David Galindo and Ichiro Hasuo. Security notions for identity based encryption. Cryptology eprint Archive, Report 2005/253, 2005. http://eprint. iacr.org/2005/253. Adi Shamir. Identity-based cryptosystems and signature schemes. In Advances in Cryptology: Proceedings of CRYPTO 84, volume 196 of Lecture Notes in Computer Science, pages 47 53. Springer-Verlag, 1985. 1 Es wurde angenommen, dass eine Arbeit auf diesem Gebiet [Sha85] zitiert. Ausgehend von dieser Vermutung wurden zur identitätsbasierten Kryptographie mit Hilfe von http://scholar.google.com weniger als 50 Arbeiten vor 2001 und mehr als 300 Arbeiten seit 2001 gezählt 14