18.11.2013 Aufrufe

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

Elementare Zahlentheorie und Kryptographie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Es wird vermutet, daß es keinen Polynomialzeit-Algorithmus zur Faktorisierung<br />

einer b-Bit-Zahl N, die Produkt zweier großer Primzahlen ist, gibt. Ein Beweis<br />

dafür wurde allerdings bisher nicht erbracht. Das sogenannte Zahlkörpersieb<br />

ist derzeit einer der besten Faktorisierungsalgorithmen; seine Laufzeit ist<br />

≤ O(exp( 3√ 8b log(b) 2 )), also nicht polynomial. Mit ihm wurde F 9 = 2 512 + 1<br />

faktorisiert.<br />

Faktorisierungsalgorithmen stehen seit jeher im Zentrum der mathematischen<br />

Forschung, <strong>und</strong> daher wird es vermutlich schnell publik, wenn jemand einen<br />

neuen, schnelleren Faktorisierungsalgorithmus findet.<br />

Die Firma RSA hat 2001 eine Liste von Zahlen in das Internet gestellt<br />

(siehe http://www.rsa.com/rsalabs/node.asp?id=2092) <strong>und</strong> für das Faktorisieren<br />

der Zahlen ein jeweiliges Preisgeld ausgesetzt. Jede Zahl in der Liste<br />

ist ein Produkt zweier Primzahlen <strong>und</strong> jede trägt einen Namen der Form RSA-b<br />

wobei b die Bitlänge der entsprechenden Zahl ist. Bis jetzt (also 6 Jahre später)<br />

sind nur 2 davon faktorisiert worden <strong>und</strong> zwar RSA-576 (2003) <strong>und</strong> RSA-640<br />

(2005). Es waren jeweils mehrere Wissenschaftler beteiligt. In beiden Fällen wurde<br />

mit dem Zahlkörpersieb gearbeitet. Bereits bei RSA-576 wurde an Rechnern<br />

verschiedener Institutionen (u.a. Uni Bonn, MPI Bonn, IEM Essen) parallel<br />

gerechnet bei einer Laufzeit von mehreren Monaten! Der Preis für das Faktorisieren<br />

von RSA-2048 wäre 200.000 US-Dollar.<br />

Einige Sicherheitsvorkehrungen:<br />

Alice sollte e nicht allzu klein wählen. Wenn nämlich die Nachricht [m] ist mit<br />

m ∈ {0, · · · , N − 1} <strong>und</strong> m e ≤ N − 1 gilt, dann kann ein Angreifer m aus m e<br />

durch Ziehen der e-ten Wurzel in dem Körper R errechnen. (In obigem Beispiel<br />

geht das nicht! Die Berechnung von 7√ 175 in R nützt dort einem Angreifer gar<br />

nichts.)<br />

Die Primzahlen p <strong>und</strong> q sollten nicht allzu nahe beisammen sein. Sonst könnte<br />

ein Angreifer einfach von s := floor( √ N) ausgehend N auf Teilbarkeit durch s,<br />

s + 1, s + 2, · · · prüfen. Theoretisch wird er dabei irgendwann einen der beiden<br />

Teiler von N finden, <strong>und</strong> dann ist auch der andere Teiler schnell gef<strong>und</strong>en; wenn<br />

aber p <strong>und</strong> q nicht sehr nahe beisammen liegen (z.B. p 1023 Bit <strong>und</strong> q 1025 Bit),<br />

dann wird dieser Angriff aus Laufzeitgründen unmöglich.<br />

Das Verschlüsseln von kurzen Texten mit RSA<br />

Sei A ein Alphabet <strong>und</strong> α := |A|. Sei n : A → {0, 1, · · · , α − 1} eine Bijektion.<br />

RSA verschlüsselt zunächst Elemente von Z/NZ. Man kann es aber in modifizierter<br />

Form auch zum Verschlüsseln von kurzen Texten über A verwenden. Z.B.<br />

könnte man vorab vereinbaren, dass dem Text (x 0 , x 1 , · · · , x k ), der so kurz sein<br />

muß, daß α k+1 < N, immer die Restklasse von m = ∑ k<br />

i=0 n(x i)α i entsprechen<br />

soll. Um aus dieser Zahl m den Text zurückzugewinnen, muß man m α-adisch<br />

entwickeln. Dadurch erhält man die n(x i ) <strong>und</strong> daraus leicht die x i .<br />

Z.B. könnte A = {A, B, · · · , Z} <strong>und</strong> n(A) = 0, n(B) = 1, n(C) = 2, · · · gelten.<br />

HALLO entspricht dann der Zahl 7 + 0 · 26 + 11 · 26 2 + 11 · 26 3 + 14 · 26 4 , denn<br />

54

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!