Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
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