3 Public-Key-Kryptosysteme

Werbung
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
Herunterladen