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