RSA Kryptosystem RSA Parameter RSA Kryptosystem RSA

Werbung
RSA Kryptosystem
RSA Kryptosystem
Wurde 1977 von Rivest, Shamir und Adleman erfunden.
• Genaue Beschreibung im PKCS #1.
• RSA US-Patent 2000 ausgelaufen (aber nicht für spezielle
Techniken - multiprime RSA“).
”
• De-facto Standard für asymmetrische Kryptosysteme.
• 1973 im geheimen vom CESG (UK) erfunden.
Verschlüsselung:
• Nachricht als m ∈ Z/nZ darstellen, dann Chiffretext c = f (m) mit
öffentlichem Schlüssel e berechnen.
Schlüsselerzeugung:
Zur Beschleunigung der Entschlüsselung kann man nach dem
chinesischen Restsatz und mit der Formel von Garner statt in Z/nZ
auch in Z/pZ × Z/qZ rechnen. Dies ist 3-4 mal schneller.
Seien p, q zwei verschiedene, ungerade Primzahlen und n = pq.
Sei 1 < e < φ(n) teilerfremd zu φ(n) = (p − 1)(q − 1) und 1 < d < φ(n) mit
ed = 1 mod φ(n).
Entschlüsselung:
• m = g(c) mit dem geheimen Schlüssel d berechnen.
Der öffentliche Schlüssel ist (n, e).
Der geheimen Schlüssel ist (p, q, φ(n), d).
1
21. November 2009
3
21. November 2009
RSA Kryptosystem
RSA Parameter
n heißt RSA Modul.
Die RSA Funktion wird durch f : Z/nZ → Z/nZ, x 7→ xe mod n definiert.
Die Primzahlen p, q sollen eine ungefähr gleiche Länge von
mindestens 512 Bit haben, also n eine Bitlänge von 1024.
Thm: Die zu f inverse Funktion ist durch g : Z/nZ → Z/nZ,
y 7→ yd mod n gegeben.
Man erwartet, daß n mit 2048 Bit bis 2022 und n mit 4096 Bit bis 2050
sicher sind. Ein n mit 6800 Bit entspricht der Sicherheit von AES-128.
Bew: Wir müssen zeigen: xed = x für x ∈ Z/nZ. Es gilt ed = 1 + m(p − 1)
für ein m ∈ Z und x p−1 = 1 für x ∈ (Z/pZ)×, daher auch xed = xxm(p−1) = x
für alle x ∈ Z/pZ. Analog für q. Also gilt xeq = x für x ∈ Z/pZ × Z/qZ
und wegen Z/nZ ∼
= Z/pZ × Z/qZ auch für x ∈ Z/nZ. Für die Wahl von Schlüsselgrößen siehe zum Beispiel:
• A. Lenstra und E. Verheul: Selecting Cryptographic Key Sizes
Übliche Möglichkeiten für e sind e ∈ {3, 5, 17, 65537}.
Der Wert von d hat dann im allgemeinen eine Bitlänge ähnlich wie n.
Verschlüsseln ist daher viel schneller als entschlüsseln.
2
21. November 2009
4
21. November 2009
Primzahlerzeugung
RSA Äquivalenz der Parameter
Thm (Primzahlsatz): Sei π(x) = #{p | p Primzahl, 1 ≤ p ≤ x}.
Für x > 17 gilt x/ log(x) < π(x) < 1.25506 x/ log(x).
Für x → ∞ gilt π(x)/(x/ log(x)) → 1.
Bei beliebigem e berechnen wir p, q, φ(n) aus d wie folgt:
Strategie:
• Zufällige ganze Zahlen x der gewünschten Bitlänge b erzeugen.
• Testen, ob x prim. Erfolgswahrscheinlichkeit 1/(b log(2)).
Primzahltests:
• Miller-Rabin: Eine Antwort ist prim“ ist mit Wahrscheinlichkeit
”
≤ (1/4)r falsch, bei r Iterationen. Kann man unter 2−128 drücken.
Eine Antwort ist nicht prim“ ist immer richtig.
”
• Einige andere probabilistische Tests ...
• Agrawal-Kayal-Saxena (2002): Deterministischer, polynomieller
Primzahltest ( primes in P“).
”
5
Sei s = v2(ed − 1) und k = (ed − 1)/2s. Für a ∈ Z mit gcd{a, n} = 1 gilt
s
a + nZ ∈ (Z/nZ)× und (ak )2 = 1 mod n, daher hat ak eine Ordnung
i
i
mod p, welche 2s teilt. Gilt nun (ak)2 = 1 mod p und (ak )2 6= 1 mod q, so
i
folgt p = gcd{(ak)2 − 1, n}. Analoges gilt für q. Wir wollen die Anzahl
solcher a bestimmen.
Sei φ : Z/pZ × Z/qZ → Z/nZ der CRT Isomorphismus. OBdA gelte
v2(p − 1) ≤ v2(q − 1). Seien g, h ∈ Z Erzeuger von (Z/pZ)× bzw.
(Z/qZ)×. Wenn v2(p − 1) < v2(q − 1) so hat (gx, hy)k mit 0 ≤ x < p − 1,
0 ≤ y < q − 1 und y 6= 0 mod 2 an der ersten Koordinate Ordnung
≤ 2v2(p−1) und an der zweiten Koordinate Ordnung = 2v2(q−1). Dies
v (p−1)
liefert (p − 1)(q − 1)/2 Werte a = φ((gx, hy)) mit (ak )2 2
= 1 mod p,
v
(p−1)
(ak )2 2
6= 1 mod q.
7
21. November 2009
21. November 2009
RSA Äquivalenz der Parameter
RSA Äquivalenz der Parameter
Thm: Aus einem Teil des geheimen Schlüssels (p, q, φ(n), d) und dem
öffentlichen Schlüssel (n, e) kann man die anderen Teile des
geheimen Schlüssels effizient ausrechnen.
Wenn v2(p − 1) = v2(q − 1) so betrachten wir Paare (x, y), wo ein Wert
gerade und einer ungerade ist. Es gibt 2(p − 1)(q − 1)/4 solche Paare.
v (p−1)
Die Elemente a = φ((gx, hy)) erfüllen (ak )2 2
= 1 mod p und
v
(p−1)
(ak )2 2
6= 1 mod q oder umgekehrt.
• Gegeben p oder q ist das klar.
• Gegeben φ(n) haben wir zwei Gleichungen pq = n,
(p − 1)(q − 1) = φ(n). Man kann leicht nach p und q auflösen.
• Gegeben d ist ed − 1 bei kleinem e ein kleines Vielfaches von φ(n).
Durch Ausprobieren kann man φ(n) herausbekommen.
• Auch bei beliebigem e kann man aus d die Werte p, q, φ(n)
berechnen (nächste Folie).
Ein Algorithmus zum Berechnen von φ(n) oder d ist also polynomiell
äquivalent zu einem Algorithmus zum Faktorisieren von n.
6
21. November 2009
Zusammenfassend gehen wir wie folgt vor:
• a mod n 6= 0 zufällig wählen. s = v2(ed − 1), k = (ed − 1)/2s.
• Check gcd{a, n} =
6 1.
i
• Check gcd{(ak)2 − 1, n} 6= 1 für 0 ≤ i ≤ s − 1.
• Wenn ein ggT ungleich eins ist, haben wir p bzw. q gefunden.
Die Erfolgswahrscheinlichkeit ist ≥ 1/2, da es (p − 1)(q − 1) Elemente
a mit gcd{a, n} = 1 gibt, und mindestens die Hälfte davon zum Erfolg
führt. 8
21. November 2009
RSA Äquivalenz der Parameter
RSA Sicherheit
Wichtige Folgerung:
• Wird aus irgendeinem Grund d öffentlich, genügt es nicht, für das
alte n ein neues e und geheimes d zu bestimmen.
• Es macht keinen Sinn, daß mehrere Benutzer sich das gleiche n
bei unterschiedlichen, geheimen Schlüsseln teilen.
Die Sicherheit von RSA hängt im wesentlichen von den folgenden
Gesichtspunkten ab.
1. Können schnellere Faktorisierungsalgorithmen entdeckt werden?
• Es ist unbekannt, ob die Faktorisierung ganzer Zahlen nicht doch
ganz leicht bewerkstelligt werden kann.
2. Können schnellere Computer gebaut werden?
• Mit Quantencomputern kann die Faktorisierung ganzer Zahlen
in Polynomzeit bewerkstelligt werden.
3. Wird die RSA Funktion für kryptographische Verfahren korrekt
benutzt?
• Beispielsweise gleiches n für mehrere Benutzer“ etc.
”
9
21. November 2009
11
RSA Problem
Asymptotische Notationen
Das RSA Problem ist, zu (n, e) und c ∈ Z/nZ ein m ∈ Z/nZ mit me = c
zu berechnen (also e-te Wurzeln in Z/nZ zu ziehen, oder die RSA
Funktion zu invertieren).
Für x ∈ Rn und x0 ∈ R schreiben wir x ≥ x0, wenn dies
koordinatenweise gilt.
Dies ist das eigentliche Problem, auf dem die Chosen-Plaintext
Sicherheit von RSA beruht.
Wenn man n faktorisieren kann, dann kann man das RSA Problem
lösen (klar, d wie in der Schlüsselerzeugung berechnen).
Es ist ein offenes Problem, ob das RSA Problem polynomiell
äquivalent zum Faktorisieren von n ist.
10
21. November 2009
21. November 2009
Sei U ⊆ Rn und g : U → R>0. Wir definieren:
• O(g) = { f | (∃V ⊆ Rn : f : V → R) und
(∃ x0, c ∈ R : ∀x ∈ Rn mit x ≥ x0 : x ∈ U ∩V und | f (x)| ≤ cg(x))}.
• Omega(g) definiert wie O(g), aber mit | f (x)| ≥ cg(x).
• Theta(g) = O(g) ∩ Omega(g).
• O∼(g) = ∪i∈Z O(log(g)ig).
• o(g) = { f | (∃V ⊆ Rn : f : V → R) und
∀ε > 0 : ∃x0 ∈ R : ∀x ∈ Rn mit x ≥ x0 : x ∈ U ∩V und | f (x)| ≤ εg(x)}
12
21. November 2009
Faktorisieren ganzer Zahlen
RSA Faktorisierungsherausforderung
Dies ist ein zentrales Gebiet in der algorithmischen Zahlentheorie.
Ist ein Wettbewerb, wer ganze Zahlen am schnellsten faktorisieren
kann.
Ln(u, v) = exp((v + o(1)) log(n)u log(log(n))1−u)
Die Zahl RSA-1024 ist
Namen und Laufzeiten einiger Methoden:
1/2
∼
1/2
• Probedivision bis n : O (n ).
• Pollard p − 1 Methode: Im allgemeinen ähnliche Laufzeit wie
Probedivision.
• Pollard ρ Methode: O∼(n1/4).
• Elliptische Kurven Methode: L p(1/2, c) mit p kleinster Primteiler
von n und c kleine Konstante. Verallgemeinert p − 1 Methode.
• Klassengruppen Methode: Ln(1/2, 1) (bewiesen, aber ineffizient).
• Quadratisches Sieb: Ln(1/2, 1) (effizient).
• Zahlkörpersieb: Ln(1/3, (64/9)1/3).
13
13506641086599522334960321627880596993888147560566
70275244851438515265106048595338339402871505719094
41798207282164471551373680419703964191743046496589
27425623934102086438320211037295872576235850964311
05640735015081875106765946292055636855294752135008
52879416377328533906109750544334999811150056977236
890927563
Für die Faktorisierung von RSA-1024 sind $100.000 ausgelobt.
21. November 2009
15
21. November 2009
Faktorisieren ganzer Zahlen
RSA Faktorisierungsherausforderung
Die ersten drei Methoden haben also in log(n) exponentielle Laufzeit,
während die anderen sogenannte subexponentielle Laufzeit haben.
Bisherige Rekorde.
Die elliptische Kurven Methode (ECM) ist besonders geeignet, wenn
n einen relativ kleinen Primfaktor hat. Ansonsten ist das quadratische
Sieb (QS) im allgemeinen schneller, und am schnellsten ist das
Zahlkörpersieb (GNFS), aber erst für sehr große Zahlen.
RSA-576
RSA-640
RSA-200
Um grobe Größenangaben zu machen: Man verwendet ECM zum
Beispiel bis 40 Dezimalstellen oder für einen gewissen Bruchteil der
erwarteten Laufzeit des QS, danach QS bis 100 Dezimalstellen, und
dann das GNFS.
Stellen Preis
174
193
200
$10.000
$20.000
faktorisiert
12-2003
11-2005
5-2005
RSA-200 wurde von Wissenschaftlern an der Uni Bonn, CWI
Amsterdam und BSI faktorisiert.
Gittersiebschritt 12-2003 - 10-2004: Entsprechend 55 Jahre auf
einem 2.2GHz Opteron.
Matrixschritt 12-2004 - 5-2005: 3 Monate auf 80 2.2GHz Opteron
Cluster mit Gigabit Netzwerk.
Faktorisierungsprojekte im Netz: NFSNET und ECMNET.
14
Zahl
21. November 2009
16
21. November 2009
RSA Sichere Verwendung
RSA: Kleines e
RSA wie bisher beschrieben wird häufig plain RSA“ oder textbook
”
”
RSA“ genannt. Im Sinn strenger Sicherheitsmodelle (IND-CCA2) ist
es vollkommen unsicher.
Hastad Broadcast Angriff.
Im folgenden werden ein paar Fehler bei der Benutzung von plain
”
RSA“ diskutiert. Wir beschränken uns auf solche Fehler, welche das
Lösen des RSA Problems ermöglichen.
Kritische Punkte sind:
• die Wahl der Parameter n, e, d (kleines d, kleines e, . . . ).
• mögliche Struktur in den Nachrichten m.
• die Verwendung des Systems.
• Wegen m < ni und e ≤ k folgt me < n und c = me in Z, also m = c1/e.
Allgemeine Version:
Außerdem: Partielle Information über Klartext aus Chiffretext
erhaltbar, Homomorphieeigenschaft.
17
Vereinfachte Version: Annahme, daß Nachricht m mit Exponent e
bezüglich k ≥ e vielen RSA moduli ni verschlüsselt ist.
• Also ci = me mod ni für 1 ≤ i ≤ k.
• Sei n = ∏i ni. OBdA gcd{ni, n j } = 1.
• Chinesischer Restsatz liefert 0 ≤ c < n mit c = ci mod ni.
• Es gilt c = me mod n.
Thm (Coppersmith): Sei f ∈ Z[t] normiert und s = deg( f ). Dann
können die Lösungen f (x) = 0 mod n mit x ∈ Z und |x| < n1/s effizient
berechnet werden.
Der Beweis verwendet Gitter und LLL Reduktion.
21. November 2009
19
21. November 2009
RSA: Kleines d
RSA: Kleines e
Wenn d sehr klein ist, kann es durch Ausprobieren erraten werden.
Für kleines d gibt es den Angriff von Wiener:
Thm (Hastad): Seien ni teilerfremd und gi ∈ Z[x] normiert mit
s = maxi deg(gi), für 1 ≤ i ≤ k. Es gebe ein eindeutiges m < mini ni mit
gi(m) = 0 mod ni. Ist k > s, so kann m effizient aus den ni und gi
berechnet werden.
Thm (Wiener): Gilt q < p < 2q und d < n1/4/3, so kann d aus n, e (mit
e < φ(n)) effizient berechnet werden.
Der Beweis verwendet Kettenbrüche.
Bew: Sei n = ∏i ni und g = ∑i λixs−deg(gi)gi, wobei λi = δi, j mod n j , und
∑i λi = 1 (chinesischer Restsatz). Dann ist g normiert, deg(g) = s und
g(m) = 0 mod n. Wegen m < mini ni < n1/k < n1/s kann m mit dem Satz
von Coppersmith effizient bestimmt werden. Im Satz genügt d < n0.292 (Boneh und Durfee).
Anwenden mit gi(m) = fi(m)ei − ci mod ni.
• Speziell ei = e und lineare fi (z.B. festes Padding, fi(m) = m + bi).
• Im allgemeinen kann auf die Bedingung gi normiert verzichtet
werden.
Man vermutet, daß d < n1/2 bereits ausreicht.
Gegen Broadcast Angriff hilft randomisiertes Padding von m.
18
21. November 2009
20
21. November 2009
Herunterladen