Stand: 05.11.2013 Vorlesung Grundlagen und Methoden der Kryptographie Dietzfelbinger 3 Public-Key-Kryptosysteme 3.1 Verschlüsselung von Nachrichten Wir betrachten ganz einfache Kommunikationsszenarien. Die Teilnehmer: Alice und Bob. Sie wollen sich über einnen oen zugänglichen Kanal (E-Mail, ein Webportal) Nachrichten schicken. Dieser Kanal wird von Eve mitgelesen. Alice und Bob wollen vermeiden, dass Eve den Inhalt der Nachricht erfährt. Alice möchte an Bob eine Nachricht schicken. Durch geeignete Transformation kann man annehmen, dass die Nachricht die Gestalt (m1 , . . . , m` ) hat, für Zahlen m1 , . . . , m` ∈ {0, . . . , n − 1}. (Der Nachrichtentext ist ein Binärstring. Alice teilt diesen in Blöcke mit höchstens blog nc Bits, jeder der Blöcke liefert eine Zahl in {0, . . . , n − 1}. Der Empfänger Bob muss dann am Ende diese Transformation rückgängig machen.) Symmetrische Verschlüsselungsverfahren verwenden einen Schlüssel Bob bekannt ist, aber nicht Eve. Alice verschlüsselt (m1 , . . . , m` ) k. k, der Alice und mit Hilfe von k, sendet das Ergebnis an Bob, dieser entschlüsselt mit Hilfe von n = 2z und k = (k1 , . . . , k` ) ist eine zufällig gewählte {0, . . . , n − 1}, äquivalent ist k ein zufälliger String aus kz Bits. Beispiel 1: One-time-pad: Folge von Zahlen in Verschlüsselung: (Alternativ: yi = (mi + ki ) mod n, yi = (mi ⊕ ki ) mod n, wobei Gesendet wird (y1 , . . . , y` ). Bob berechnet zi = (yi − ki ) mod n, (Bzw. Weil für für i = 1, . . . , `. ⊕ für das bitweise XOR steht.) i = 1, . . . , `. zi = (yi ⊕ ki ) mod n.) xi = zi gilt, erhält Bob die ursprüngliche Nachricht. Eve hat keine Chance, auf den Inhalt der Nachricht zu schlieÿen, da unabhängig von (m1 , . . . , m` ) die übermittelte Sequenz (y1 , . . . , y` ) rein zufällig ist. Was man nicht machen darf, ist, für die verschiedenen Blöcke den gleichen Schlüssel zu benutzen. Vorteil: Vollständige Sicherheit. Nachteil: Alice und Bob müssen vor der eigentlichen Kommunikation den Schlüs- 1 sel festgelegt und sich darüber verständigt haben (ohne dass Eve den Schlüssel in Erfahrung bringen kann). mi ): 128 Bits. Länge des Schlüssels k : 128, demselben Schlüssel k verschlüsselt, ebenso Beispiel 2: AES. Blocklänge (Bitlänge von 192 oder 256 Bits. Jeder Block wird mit entschlüsselt, nach einem komplexen, aber ezienten Rechenverfahren. Auch hier müssen sich Alice und Bob vorab über den zu verwendenden Schlüssel einigen. In den beiden folgenden Abschnitten besprechen wir asymmetrische Verfahren, bei denen Bob einen öentlichen Schlüssel besorgt und bereitstellt, zum Beispiel in einem öentlich zugänglichen Schlüsselbuch oder auf seiner Webseite. Alice benutzt diesen Schlüssel zum Verschlüsseln. Bob besitzt auÿerdem einen geheimen EntschlüsselungsSchlüssel, der zum Entschlüsseln benutzt wird. Eine Vorab-Einigung über den Schlüssel ist überüssig. 3.2 3.2.1 Das RSA-Kryptosystem Schlüsselerzeugung Dieser Vorgang wird oft (im Geheimen) von einem Trust Center durchgeführt. (Es ist aber auch möglich, dass Bob dies selber vornimmt.) Die Schlüssellänge ist festzulegen, etwa 1024 oder 2048 Bits. Danach werden zwei (zufällige) Primzahlen p und q mit der Hälfte dieser Bitlänge bestimmt. Hierzu kann man im Prinzip wie in Abschnitt 2.2 beschrieben vorgehen. Nun wird das Produkt n = pq ϕ(n) = (p−1)(q−1) berechnet. Es wird eine Zahl e aus {2, . . . , ϕ(n)−1} gewählt. Mittels des erweiterten Euklidischen Algorithmus werden Zahlen d und s mit ggt(e, ϕ(n)) = ed+sϕ(n) ermittelt. Wurde e zufällig gewählt, gilt mit überwältigender Wahrscheinlichkeit ggt(e, ϕ(n)) = 1, also d das multiplikative Inverse zu e modulo ϕ(n). (Sollte dies nicht so sein, wird ein neues e gewählt und erneut gerechnet.) sowie die Zahl Bob erhält (vom Trust Center oder aus seiner Rechnung): Der öentliche Schlüssel ist das Paar (n, e) n, e und d. (encryption key). Dieser wird bekannt- gegeben. Der geheime Schlüssel ist d (decryption key). Der Berechnungsaufwand für die Schlüsselerzeugung ist Kosten der Primzahlerzeugung sind, siehe Abschnitt 2.2. 2 O((log n)4 ), weil dies die 3.2.2 Verschlüsselung Alice besorgt sich den öentlichen Schlüssel richt in Blöcke (m1 , . . . , m` ), (n, e). Sie zerlegt die zu sendende Nach- {0, . . . , n − 1} m = mi ver- und wobei jede Komponente eine Zahl in ist. Wir beschreiben im folgenden, wie eine solche Komponente entschlüsselt wird. Klartext: m ∈ {0, . . . , n − 1}. Chiretext: y := me mod n. (Zu berechnen mit schneller Exponentiation, Rechenzeit O((log n)3 ).) Der Chiretext wird über den öentlichen Kanal an Bob geschickt. 3.2.3 Entschlüsselung Bob erhält ein Chirat y ∈ {0, . . . , n − 1}. Er möchte den Ursprungstext x wieder herstellen. Er berechnet (ebenfalls mit schneller Exponentiation): z := y d mod n. Diese Rechnung kann er ausführen, da er den geheimen Schlüssel ständlich auch den öentlichen Schlüssel (n, e) d und selbstver- kennt. Nach den Potenzrechenregeln, die auch für die modulare Arithmetik gelten, ist (me mod n)d mod n = med mod n. z= Die Korrektheit der Entschlüsselung beruht auf folgendem Satz. Satz 3.1 ed m Korrektheit von RSA mod n = m, für alle m ∈ {0, 1, . . . , n − 1}. m und med mod n beide in {0, 1, . . . , n − 1} ≡ m (mod n) gilt, d. h. med − m ≡ 0 (mod n). Beweis : Weil dass ed m liegen, genügt es zu zeigen, p und q von n. Da ed ≡ 1 (mod ϕ(n)) und ϕ(n) = (p − 1)(q − 1) gilt, haben wir ed = k(p − 1)(q − 1) + 1 für eine Zahl k ∈ Z. Dies weisen wir im Folgenden nach. Betrachte die Primfaktoren med − m = (mk(p−1)(q−1) − 1) · m. Wenn m durch p teilbar ist, ist dies klar. Wir können also annehmen, dass p kein Teiler von m ist. Nach dem kleinen Satz p−1 von Fermat (Fakt 1.25) gilt m mod p = 1, also auch Beh.: p teilt mk(p−1)(q−1) mod p = (m(p−1) )k(q−1) mod p = 1. 3 mk(p−1)(q−1) − 1 Dies bedeutet, dass p ein Teiler von med − m = (mk(p−1)(q−1) − 1) · m. q: Die Behauptung gilt natürlich genauso für p und q ist, also auch ein Teiler von q ist ein Teiler von med − m. Da n = pq Teiler von med − m ist, das auch teilerfremd sind, folgt aus Fakt 1.8, dass med ≡ m (mod n) gilt, wie gewünscht. heiÿt, dass RSA, insgesamt Bob erwirbt von einem Trust Center einen Schlüsselsatz (n, e) Er veröentlicht Wenn Alice und hält (m1 , . . . , m` ) d geheim. an Bob schicken will, verschlüsselt sie yi := mei mod n, und sendet (y1 , . . . , ym ) i = 1, . . . , `, für an Bob. Dieser entschlüsselt zi := yid mod n, und erhält (n, e, d). für i = 1, . . . , `, (z1 , . . . , z` ) = (m1 , . . . , m` ). Man kann zeigen, dass die Gegenspielerin Eve den Entschlüsselungsschlüssel ezient ermitteln kann, wenn sie n d nur ezient in Faktoren zerlegen kann. Dieses Pro- blem gilt bislang als im Allgemeinen schwierig und für das Produkt n von zufälligen Primzahlen mit 512 Bits (oder 1024 Bits) als nicht lösbar. Natürlich kann es andere Möglichkeiten geben, aus n, e formation über diesen Klartext und m y den Klartext m oder zumindest partielle In- zu gewinnen. Es gibt sogar einige oensichtliche Informationen, die man berechnen kann. Dem wird zum Beispiel dadurch ausgewichen, dass man die echten Klartexte m kürzer als 0 fälligen String einer festen Länge zu einer Zahl m log n anlegt und durch einen zu- mit der passenden Länge ergänzt. (Unterschied zwischen Textbook-RSA und RSA-Versionen, die für die industrielle Anwendung geeignet sind.) Beispiel : n = 55 = 5 · 11. ϕ(n) = 4 · 10 = 40. e = 3, ggt(3, 40) = 1, d = e−1 mod 40 = 27, Sei die Botschaft 3 m durch m=9 weil 3 · 27 = 81 ≡ 1 (mod 40) gegeben. y = 9 mod 55 = 729 mod 55 = 14. Wir rechnen modulo 55: y 27 ≡ (143 )9 ≡ 499 ≡ ((−6)3 )3 ≡ 43 ≡ 64 mod 55 ≡ 9. 4 gilt. Passt! 3.3 Das Rabin-Kryptosystem Es ist nicht bekannt, ob die Schwierigkeit, RSA-verschlüsselte Botschaften unberechtigterweise zu entschlüsseln, äquivalent zum Faktorisierungsproblem ist. Wir betrachten hier noch das Rabin-Verschlüsselungsverfahren, bei dem dies so ist. 3.3.1 Schlüsselerzeugung Bob wählt zwei zufällige groÿe Primzahlen p und q mit p ≡ q ≡ 3 (mod 4), also Prim4 sind. (Das Verfahren aus Abschnitt zahlen, die um 1 kleiner als ein Vielfaches von 2.2. funktioniert genauso schnell, wenn man nur Zahlen testet, deren Binärdarstellung mit 11 endet.) Sie berechnet Schlüssel ist 3.3.2 n = pq . Der öentliche Schlüssel ist n; der geheime (p, q). Verschlüsselung n von Bob. Wir beschreiben nur die Verschlüs< n ist. Alice berechnet Alice ndet den öentlichen Schlüssel selung eines Blocks m, der eine Zahl y := m2 mod n und sendet 3.3.3 y an Bob. Entschlüsselung Bob hat nun das Problem, Quadratwurzeln von y modulo n zu berechnen, das sind b mit b2 mod n = y . Er hat aber den Vorteil, die Faktoren p und q zu kennen. Zahlen Er berechnet: r := y (p+1)/4 mod p und s := y (q+1)/4 mod q. r2 mod p = ((m2 mod n)(p+1)/4 )2 mod p = mp+1 mod p = (mp · m) mod p = m mod p (wir haben den kleinen Satz von Fermat in der Version mp ≡ m (mod p) 2 2 für alle m benutzt), gilt r − m ≡ (r − m)(r + m) ≡ 0 (mod p). Das heiÿt, dass entweder r ≡ m (mod p) oder p − r ≡ m (mod p) gilt. Weil 2 Genauso sieht man, dass s ≡ m (mod q) oder 5 q − s ≡ m (mod q) gilt. Mit der konstruktiven Variante des chinesischen Restsatzes (Bemerkung nach Fakt 1.26) kann Bob nun vier Zahlen z1 , . . . , z4 ∈ {0, . . . , n−1} berechnen, die die folgenden Kongruenzen erfüllen: z1 ≡ r z2 ≡ r z3 ≡ p − r z4 ≡ p − r (mod (mod (mod (mod Wegen der obigen Überlegung ist p) p) p) p) und und und und z1 z2 z3 z4 ≡ s (mod q); ≡ q − s (mod q); ≡ s (mod q); ≡ q − s (mod q). m ∈ {z1 , . . . , z4 }. Bob kann nun eine dieser vier Möglichkeiten wählen. (Man kann Vorkehrungen treen, dass sinnvolle Blöcke leicht zu erkennen sind. Beispielsweise könnte man den Block folge wie m mit einer bestimmten Bit- 10000 abschlieÿen. Es ist dann nicht anzunehmen, dass die Binärdarstellung einer der anderen Möglichkeiten ebenso endet.) Welcher Rechenaufwand ist nötig? Für die Verschlüsselung muss nur eine Quadrierung 2 durchgeführt werden; sie kostet nur Zeit O((log n) ). Die Entschlüsselung erfordert eine Exponentiation modulo p und eine modulo q und mehrere Anwendungen des 3 erweiterten Euklidischen Algorithmus insgesamt Zeit O((log n) ). 6