Sie sind auf Seite 1von 21

Die Mathematik von RSA

Eine Arbeit von

Yimin Ge
(yimin.ge@chello.at)

August 2005

Inhaltsverzeichnis
0 Vorwort 1 Prinzip der Einwegverschlu sselung 2 Zahlentheoretische Grundlagen 2.1 Teilbarkeit und Primzahlen . . . . . . . . . . . . . . . 2.2 Gr oter gemeinsamer Teiler und Euklidsches Verfahren 2.3 Kongruenzen und Restklassen . . . . . . . . . . . . . . 2.4 Multiplikative Inverse . . . . . . . . . . . . . . . . . . . 2.5 Der Schl ussel zum Erfolg: Satz von Fermat . . . . . . . 3 Ver- und Entschlu sselungsalgorithmus von 3.1 Das Verfahren . . . . . . . . . . . . . . . . 3.2 Beweis des Verfahrens . . . . . . . . . . . 3.3 Implementierungstechnische Tipps . . . . . 3.4 Die Sicherheit von RSA . . . . . . . . . . . Literatur RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 4 4 6 9 12 13 15 15 16 18 19 20

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Vorwort

Da der Mathematikunterricht an Osterreichischen Schulen im internationalen Vergleich sowohl qualitativ als auch quantitativ praktisch nicht vorhanden ist und aufgrund diverser Stundenk urzungsreformen noch weiter komprimiert wird, nimmt in Osterreich vor allem bei jungen Menschen der Trend zu, den Sinn dieser Wissenschaft generell in Frage zu stellen. Die Idee zu dieser Arbeit kam mir, als ich entsetzt feststellte, wie stark die Zweifel an dem Sinn der Mathematik selbst in meiner eigenen Schulklasse waren. Als Teilnehmer der Osterreichischen und Internationalen Mathematikolympiade war ich zutiefst schockiert dar uber, mit welcher Verachtung meine Klassenkollegen u one und vor allem essenber solch eine sch tielle Wissenschaft sprachen. Mir lag der Wunsch nahe, diesem Trend entgegenzuwirken und nachdem einige m undliche Uberzeugungsversuche nichts halfen, kam mir die Idee es mit einer schriftlichen Arbeit zu versuchen. Ich besuche eine Schule mit Schwerpunkt auf EDV, der Gedanke lag daher nahe, die Mathematik in dieser Arbeit mit einem wichtigen Thema der Informatik zu verbinden. So kam ich zu RSA, einem weit verbreiteten Verschl usselungsverfahren, welches von den drei Mathematikern Ronald Rivest, Adi Shamir und Leonard Adleman entwickelt wurde, einem Verfahren, das die gesamte Kryptologie revolutionierte. RSA ist ein Verfahren, von dem die meisten Informatiker bereits etwas geh ort haben, welches viele Informatiker bereits programmiert haben, von denen allerdings nur die Wenigsten wirklich wissen, welche mathematischen Kentnisse und Gesetze dahinterstecken. Diese Arbeit richtet sich an alle, die RSA nicht nur kennen, k onnen oder programmieren, sondern verstehen und begreifen wollen. Es wird kein tieferes mathematisches Wissen vorausgesetzt, s amtliche f ur das Verst andnis von RSA ben otigten zahlentheoretische Kenntnisse, welchen ich den Groteil dieser Arbeit widme, werden von Grund auf vermittelt. Dabei lege ich besonders viel Wert darauf, mathematische S atze nicht nur zu erkl aren, sondern auch zu beweisen, damit der Leser m oglichst wenig als gegeben hinnehmen muss. Diese Arbeit besch aftigt sich ausschlielich mit der mathematischen Seite von RSA. Bei n aherem Interesse zu den geschichtlichen und wirtschaftlichen Auswirkungen von RSA oder zu Vergleichen mit anderen Verschl usselungsverfahren sei an dieser Stelle auf zus atzliche, zahlreich vorhandene Literatur verwiesen. Zuletzt m ochte ich noch das dringende Appell aussprechen, den anfangs beschriebenen Trend auf keinen Fall fortzusetzen, sondern die Mutter der Wissenschaften, welche die Grundbausteine f ur die meisten anderen Wissenschaften liefert, auch als solche zu w urdigen.

Wien, August 2005

Yimin Ge

Prinzip der Einwegverschlu sselung

Bei herk ommlichen symmetrischen Verschl usselungsverfahren (also jene, bei denen der Schl ussel zum Verschl usseln auch gleichzeitig der Schl ussel zum Entschl usseln ist, oder der eine Schl ussel leicht aus dem anderen berechnet werden kann) war es lange Zeit ein Problem, Schl ussel bzw. Codeb ucher sicher zum Kommunikationspartner zu transportieren. Der Schl usseltransport war dabei nicht nur der kostenaufwendigste Teil der Kommunikation, sondern auch gleichzeitig die gr ote logistische Schwachstelle. Bis in die 1970er Jahre hielt man dieses Problem prinzipiell nicht f ur l osbar, bis Whiteld Die und Martin Hellmann eine Theorie ohne wirkliche L osungsans atze zur sogenannten Public-Key-Kryptographie ver oentlicht hatten. Die grundlegende Idee eines solchen Verschl usselungsverfahrens besteht darin, dass die Schl ussel zum Ver- und Entschl usseln verschieden und ohne Zusatzinformation praktisch nicht ineinander umrechenbar sind. Dabei ist allerdings zu beachten, dass beide Schl ussel auch die jeweils andere Funktion aus uben k onnen (man kann also mit irgendeinem der beiden Schl ussel eine Nachricht verschl usseln, die dann mit dem jeweils anderen Schl ussel entschl usselbar ist). Jener Schl ussel, der zum Verschl usseln verwendet wird, wird als Public Key (= oentlicher Schl ussel) bezeichnet und jener zum Entschl usseln als Private Key (=privater/geheimer Schl ussel). Die Verschl usselung ist mathematisch gesehen eine injektive Einwegfunktion mit Fallt ur f , wobei es ein ezientes Verfahren zur Bestimmung von y = f (x) gibt, bei dem nur der Public Key gebraucht wird, aber dessen Umkehrung, also die Berechnung von x = f 1 (y ) ohne Zusatzinformation, also dem Private Key, praktisch nicht m oglich ist. Es ist also nicht m oglich, aus dem Verfahren f ur f das Verfahren f ur f 1 herzuleiten. Dieses Prinzip kann man etwa mit folgender Alltagssituation vergleichen: Ein vorhandenes Schloss kann jeder schlieen, jedoch kann es nur mit dem richtigen Schl ussel wieder ge onet werden. Das Schloss entspr ache hier dabei dem Public Key und der Schl ussel dem Private Key. In der Praxis wird dann der Public Key (meistens in einer Datenbank) ver oentlicht, sodass jeder eine Botschaft verschl usseln kann, die allerdings nur vom rechtm aigen Empf anger, der den Private Key besitzt, entschl usselt und gelesen werden kann. Da aber, wie oben beschrieben, der Private Key auch zum Verschl usseln einer Nachricht dienen kann, dessen Entschl usselung nur mit dem dazugeh origen Public Key m oglich ist, kann auf diese Weise eine sogenannte Digitale Signatur geschaen werden. Diese Unterschrift wird dabei mit dem privaten Schl ussel verschl usselt und kann von jedem mit dem oentlichen Schl ussel entschl usselt und gelesen werden. Da aber nur der rechtm aige Empf anger den Private Key besitzt, kann auf diese Weise dessen Identit at veriziert werden.

Zahlentheoretische Grundlagen

Ich m ochte zuerst, wie bereits angedeutet, wichtige zahlentheoretische Grundlagen vermitteln, die f ur das Verst andnis von RSA essentiell sind. Anmerkung Ich werde des ofteren mit Nummern auf einzelne S atze referenzieren. Es w are daher empfehlenswert, die wichtigsten S atze auf einem separaten Zettel zu notieren.

2.1

Teilbarkeit und Primzahlen

Denition der Teilbarkeit Es seien a und b ganze Zahlen. Die Zahl a teilt b genau dann, wenn es eine ganze Zahl k gibt, sodass gilt: b=ka Man schreibt a | b und sagt auch: a ist ein Teiler von b. Es gelten folgende S atze zur Teilbarkeit: Satz 2.1 Sind a, b und c ganze Zahlen, so gilt: 1. a | 0 2. a | b a c | b c mit c = 0 3. aus a | b und a | c a | (b c) 4. aus (a b) | c a | c und b | c 5. aus a | b a | cb 6. aus a | (b c) und a | b a | c 7. Aus a | b und b = 0 |a| |b| (Mit |x| ist der Absolutbetrag einer reellen Zahl x gemeint, also x ohne Vorzeichen, z.B. | 3| = 3, | 1| = 1, |4| = 4)

Beweis: 1. 0 = a 0 a | 0, da 0 Z 2. a | b b = a k b c = a c k 3. b = ak1 , c = ak2 (b c) = (ak1 ak2 ) = a(k1 k2 ) 4. c = abk = a(bk ) = b(ak ) 5. b = ak bc = a(ck ) 4

6. (b c) = ak, b = ak1 ak = ak1 c c = a(k k1 ) 7. aus ak = b |a| |k | = |b|, aus b = 0 k = 0, somit gilt |k | 1 |a| |b| Denition einer Primzahl Eine positive ganze Zahl p ist genau dann eine Primzahl, wenn p genau zwei positive Teiler hat, n amlich 1 und p. Die kleinste Primzahl wird als 2 deniert.

2.2

Gr oter gemeinsamer Teiler und Euklidsches Verfahren

Denition eines gemeinsamen Teilers zweier Zahlen Sind a, b und t ganze Zahlen, so ist t genau dann ein gemeinsamer Teiler von a und b, wenn gilt: t | a und t | b. Aus Satz 2.1.7 (a | b und b = 0 |a| |b|) folgt aber, dass jede ganze Zahl (= 0) nur endlich viele Teiler hat, da es zu jeder ganzen Zahl b nur endlich viele ganze Zahlen a gibt mit |a| |b| (n amlich 0; 1; 2; ...; b). Da jede Zahl nur endlich viele Teiler hat, gibt es logischerweise auch nur endlich viele gemeinsame Teiler zweier Zahlen und daher gibt es auch einen gr oten gemeinsamen Teiler zweier Zahlen. Denition des gr oten gemeinsamen Teilers zweier Zahlen Die gr ote Zahl, die gemeinsamer Teiler von a und b ist, nennt man den gr oten gemeinsamen Teiler von a und b und schreibt daf ur ggT (a, b). Da 1 aber jede Zahl teilt, ist somit 1 ein gemeinsamer Teiler von a und b. Es gilt daher: ggT (a, b) 1. Anmerkung: Ist der ggT (a, b) = 1, so sagt man auch: a und b sind teilerfremd oder relativ prim. Es gibt zum Gl uck ein einfaches Verfahren zur Bestimmung des ggT zweier ganzer Zahlen, das sogenannte Euklidsche Verfahren. Dieser ist nicht zuletzt auch wegen seiner einfachen Implementierbarkeit (siehe unten) besonders in der Informatik sehr beliebt. Grundsatz f ur dieses Verfahren liefert uns folgende Gleichung: Satz 2.2.1 ggT (a, b) = ggT (b, a kb) mit k Z (Man kann die eine Zahl von der anderen beliebig oft abziehen.) Beweis: Es sei t1 = ggT (a, b) und t2 = ggT (b, a kb). Wir wollen nun zeigen, dass t1 = t2 . Aus t1 | b folgt nach Satz 2.1.5 t1 | kb und analog dazu aus t2 | b t2 | kb. Aus t1 | a und t1 | kb folgt nach Satz 2.1.3 t1 | (a kb). t1 ist gemeinsamer Teiler von b und (a kb) t1 t2 ()

(Begr undung: t1 ist gemeinsamer Teiler von b und (a kb), kann aber nicht gr oer als der gr ote gemeinsame Teiler sein) Aus t2 | kb und t2 | (a kb) folgt nach Satz 2.1.6 t2 | a t2 ist gemeinsamer Teiler von a und b. t2 t1 (gleiche Begr undung wie bei ()). Aus () und () folgt aber t1 = t2 q.e.d.1
q.e.d. ist die Abk urzung f ur quod erat demonstrandum, was auf Deutsch soviel wie was zu zeigen war heit. Dies ist ein K urzel, welches in der Mathematik u uhrten blicherweise unter einen erfolgreich gef Beweis geschrieben wird.
1

()

Mit Hilfe dieser Gleichung bekommt man ein einfaches Verfahren zur Bestimmung des ggT , indem (falls die kleinere Zahl die Gr oere nicht teilt, da der ggT sonst, 0 nat urlich ausgenommen, die kleinere Zahl w are) man b von a sooft abzieht, bis das neue a kleiner ist als b, pr uft, ob das neue a b teilt und falls nicht, diesen Vorgang solange wiederholt (a und b vorher vertauschen), bis dies der Fall ist.

In der Programmiersprache C w urde dieser Algorithmus so aussehen: int ggT(int a, int b) { int h; if (a < 0) a=-a; if (b < 0) b=-b; while (a % b != 0) { while (a > b) a-=b; h = a; a = b; b = h; } return b; } oder k urzer: int ggT(int a, int b) { return (a % b == 0) ? (b < 0) ? -b : b : ggT(b, a % b); }

Mit Hilfe des Euklidschen Verfahrens kann man allerdings weit mehr, als den ggT blo zu berechnen. Den wahren Wert dieses Verfahrens bringt uns folgende Uberlegung: Es seien a und b (nichtnegative) ganze Zahlen mit a b. Es gilt: I) a = 1 a + 0 b II ) b = 0 a + 1 b Nun multiplizieren wir die zweite Gleichung mit k1 und addieren beide Gleichungen. Wir erhalten III )s1 = a k1 b = 1 a + (k1 ) b Es sei nun k1 so gew ahlt, dass s1 b (wir haben b so oft von a abgezogen). Nun f uhren wir den gleichen Schritt nochmals durch, allerdings mit den Gleichungen II) und III). Wir erhalten dann IV )s2 = b k2 s1 = (k2 ) a + (k1 k2 + 1) b Diesen Schritt f uhren wir nun solange durch, bis links (also bei sn ) der ggT steht, welcher nach dem Euklidschen Verfahren irgendwann erreicht werden muss. Rechts bleibt allerdings immer eine Summe ganzzahliger Vielfachen von a und b. Wir kommen daher zu folgendem Schluss: Satz 2.2.2 Zu jedem Paar ganzer Zahlen (a, b) gibt es ganze Zahlen x und y , sodass gilt: ggT (a, b) = x a + y b Das Verfahren zur Bestimmung dieser Zahlen x und y wird auch als das Erweiterte Euklidsche Verfahren bezeichnet. Ich werde in einem sp ateren Kapitel noch auf diesen Satz zur uckkommen, bei dem sich dieser noch als auerst hilfreich erweisen wird. Er soll noch an einem Beispiel verdeutlicht werden: Beispiel: F ur a = 2100 und b = 2005 seien die ganzen Zahlen x und y gesucht, sodass ggT (2100, 2005) = x 2100 + y 2005 I) 2100 = 1 2100 + 0 2005 II ) 2005 = 0 2100 + 1 2005 | (1) I + (1) II = III ) 95 = 1 2100 + (1) 2005 | (21) II + (21) III = IV ) 10 = (21) 2100 + 22 2005 | (9) III + (9) IV = V ) 5 = 190 2100 + (199) 2005 Da 5 | 10 ist 5 = ggT (2100, 2005). Wir erhalten daher: x = 190 y = 199

2.3

Kongruenzen und Restklassen

Denition der Restklassen modulo m Sei m eine positive ganze Zahl. Die Mengen [ 0 ]m , [ 1 ]m , ... , [m 1]m seien folgendermaen deniert: [ 0 ]m = {x | x = k m + 0, k Z} [ 1 ]m = {x | x = k m + 1, k Z} ... [m 1]m = {x | x = k m + (m 1), k Z} oder allgemein: [ i ]m = {x | x = k m + i, k Z} f ur i = 0, 1, ..., m 1 Diese Mengen werden auch als die sogenannten Restklassen modulo m bezeichnet (m ist der sogenannte Modul).

Beispiel f ur m = 5: [ [ [ [ [ 0 1 2 3 4 ]5 ]5 ]5 ]5 ]5 = {..., 15, 10, 5, 0, 5, 10, 15, ...} = {..., 14, 9, 4, 1, 6, 11, 16, ...} = {..., 13, 8, 3, 2, 7, 12, 17, ...} = {..., 12, 7, 2, 3, 8, 13, 18, ...} = {..., 11, 6, 1, 4, 9, 14, 19, ...}

Wir halten folgende Tatsachen fest: Ist a [ i ]m mit a Z und m Z+ und i = 0, 1, ..., m 1, so ist i der Divisionsrest, den a bei der (ganzzahligen) Division durch m l asst. Diese Tatsache ist eigentlich nahezu trivial, wenn man sich die Denition der Restklassen genauer ansieht: k m ist durch m teilbar, l asst also Divisionsrest 0. k m + i muss daher Rest i lassen, da 0 i m 1. Da aber jede ganze Zahl genau einen der Reste 0, 1, ..., m 1 bei der ganzzahligen Division durch m l asst, folgern wir daraus, dass die Vereinigung aller Restklassen modulo m die Menge aller ganzen Zahlen Z ergibt. Man darf zu einer beliebigen ganzen Zahl a den Modul m beliebig oft addieren bzw. von a subtrahieren, ohne die Restklasse modulo m zu verlassen (so haben wir die Restklassen ja eigentlich deniert).

Denition von Kongruenz Seien a, b ganze Zahlen und m eine positive ganze Zahl. Man sagt a und b sind zueinander kongruent modulo m, genau dann, wenn a und b in derselben Restklasse modulo m sind. Man schreibt: a b mod m (h aug auch a b (m) oder a b (mod m)). Hinweis: H aug ndet man auch folgende Denition von Kongruenz: a und b sind genau dann kongruent modulo m, wenn m | (a b). Die Aquivalenz dieser Denitionen kann sehr schnell gezeigt werden (Bei Aquivalenz m ussen wir den Schluss in beide Richtungen zeigen): a b mod m a = km + i und b = lm + i a b = km lm = m(k l) m | (a b) m | (a b) a b = mk . Sei nun a = ml + i a b = ml + i b = mk b = m(l k )+ i

Es gelten folgende Rechenregeln f ur Kongruenzen: Satz 2.3 1. aus a b mod m und c d mod m a + c b + d mod m sowie a c b d mod m 2. aus a b mod m und c d mod m a c b d mod m 3. aus k a k b mod m und ggT (k, m) = 1 a b mod m 4. aus a b mod m und a b mod n und ggT (m, n) = 1 a b mod mn 5. aus a b mod m ak bk mod m mit k N

Beweis: 1. a b mod m m | (a b) c d mod m m | (c d) Aus Satz 2.1.3 folgt m | [(a b) (c d)] m | [(a c) (b d)] 2. Nach Satz 2.1.5 folgt aus m | (a b) und m | (c d), dass m | c (a b) und m | b (c d) Nach Satz 2.1.3 folgt nun m | [c (a b) + b (c d)] also m | (ac bc + bc bd) also m | (ac bd) 3. Nach Satz 2.2.2 gibt es ganze Zahlen x und y , sodass ggT (k, m) = 1 = xk + ym (a b) = (a b)xk + (a b)ym Da aber m | k (a b) k (a b) = lm (a b) = k (a b)x + (a b)ym = lmx + (a b)ym = m(lx + (a b)y )

10

4. Nach Satz 2.2.2 gibt es ganze Zahlen x und y , sodass ggT (m, n) = 1 = xm + yn (a b) = (a b)xm + (a b)yn Da m | (a b) (a b) = km und n | (a b) (a b) = ln (a b) = (a b)xm + (a b)yn = lnmx + kmyn = mn(lx + ky ) 5. Aus a b mod m folgt nach Satz 2.3.2 a a b b mod m sowie a a a b b b mod m ... a a ... a b b ... b mod m F ur k = 0 erhalten wir 1 1 mod m was selbstverst andlich richtig ist.
n n

11

2.4

Multiplikative Inverse

Wir rufen uns nochmals Satz 2.2.2 in Erinnerung: Sind a und b ganze Zahlen, so gibt es ganze Zahlen x und y , sodass ggT (a, b) = xa + yb Es sei nun m eine positive ganze Zahl und a eine zu m teilerfremde ganze Zahl. Nach Satz 2.2.2 gibt es nun ganze Zahlen x und y , sodass 1 = xa + ym Betrachten wir nun diese Gleichung modulo m. Da man beliebige ganze Vielfache von m abziehen kann, ohne die Restklasse zu verlassen, gilt: 1 = xa + ym xa Es gilt also xa1 mod m Es sei nun x [ i ]m (x muss logischerweise in irgendeiner Restklasse modulo m sein). Es gilt x i mod m Nach Satz 2.3.2 gilt daher x a i a mod m und daher ia1 mod m mod m

Wir kommen daher zu folgendem Schluss: Satz 2.4.1 Ist m eine positive ganze Zahl und a eine zu m teilerfremde ganze Zahl, so gibt es eine ganze Zahl i mit 0 i m 1, sodass ia1 mod m

i wird auch als die sogenannte Multiplikative Inverse zu a modulo m (oft auch mit a1 ) bezeichnet. Sie kann leicht mit dem Erweiterten Euklidschen Verfahren berechnet werden (Siehe Kapitel 2.2). Man kann sogar (recht kurz) zeigen, dass es nur eine Zahl i mit 0 i m 1 gibt, sodass ia 1 mod m Beweis: Seien 0 i, j m 1 ganze Zahlen, sodass ia ja mod m. Da ggT (a, m) = 1 folgt nach Satz 2.3.3 i j mod m und da 0 i, j m 1 i = j .

12

2.5

Der Schlu ssel zum Erfolg: Satz von Fermat

Der Satz von Pierre de Fermat lautet wie folgt: Satz 2.5.1 Ist p eine Primzahl und a eine ganze Zahl mit p a, so gilt: ap1 1 Beweis: Es seien die Zahlen x1 , x2 , ..., xp1 wie folgt deniert: x1 = 1 a x2 = 2 a ... xp1 = (p 1) a mod p

Es gilt nun: je zwei xr und xs mit 1 r, s p 1 und r = s sind nicht kongruent modulo p. Beweis durch Widerspruch: Annahme: xr xs mod p also: rasa mod p Da a kein Vielfaches von p und somit zu p teilerfremd ist (p ist Primzahl) folgt nach Satz 2.3.3 r s mod p was allerdings ein Widerspruch zu r = s ist, da 1 r, s p 1 Da nun alle xi paarweise inkongruent sind und mit Sicherheit keine der Zahlen x1 , ..., xp1 durch p teilbar ist, m ussen unter den p 1 Zahlen x1 , ..., xp1 alle Restklassen von [ 1 ]p bis [p 1]p vorkommen (wenn auch wahrscheinlich in einer anderen Reihenfolge) Nach Satz 2.3.2 folgt aber nun: x1 x2 ... xp1 1 2 ... (p 1) mod p also 1a 2a ... (p 1)a 1 2 ... (p 1) mod p also ap1 1 2 ... (p 1) 1 2 ... (p 1) mod p Da aber die Faktoren 1, 2, ..., p 1 alle nicht durch p teilbar und somit zu p teilerfremd sind, folgt nach Satz 2.3.3 ap1 1 mod p q.e.d.

13

Wir wissen jetzt also, dass f ur jede Primzahl p und jede ganze Zahl a mit p a gilt: ap1 1 Nach Satz 2.3.5 gilt nun (ap1 )k 1k Da (ap1 )k = a(p1)k und 1k = 1 a(p1)k 1 mod p mod p fu r k Z mod p

Es seien nun p und q zwei (verschiedene) Primzahlen und a eine ganze Zahl mit p a und q a. Nach obiger Feststellung gilt nun (wenn man q 1 f ur k einsetzt) a(p1)(q1) 1 mod p

Da aber auch a(p1)(q1) 1 mod q gilt, folgt nach Satz 2.3.4 Satz 2.5.2 a(p1)(q1) 1 mod p q

f ur p, q Primzahlen und a Z mit p a und q a. Anmerkung Der Satz von Fermat l asst sich noch folgendermaen verallgemeinern (Satz von Euler-Fermat): Ist m eine positive ganze Zahl und a eine zu m teilerfremde ganze Zahl, so gilt: a(m) 1 mod m wobei (m) die sogenannte Eulersche -Funktion ist, welche die Anzahl der ganzen Zahlen x mit 1 x m 1 liefert, die zu m teilerfremd sind. Sowohl Satz 2.5.1 als auch Satz 2.5.2 sind Spezialf alle dieses Satzes. Der Satz von Euler-Fermat l asst sich im Grunde genommen genauso beweisen, wie der Satz von Fermat.

14

Ver- und Entschlu sselungsalgorithmus von RSA

Bevor es nun endg ultig zum RSA-Verfahren geht, m ussen wir noch folgende Operation denieren: Denition des mod-Operators F ur eine positive ganze Zahl m und eine ganze Zahl a sei a mod m

jene Zahl i mit 0 i m 1, sodass a i mod m gilt (bzw, was gleichbedeutend ist: a [ i ]m ). Anmerkung: In vielen Programmiersprachen ist dieser mod-Operator auch als der % -Operator bekannt.

3.1

Das Verfahren

Es seien p, q zwei verschiedene Primzahlen und n := p q deren Produkt. e sei eine ganze Zahl (> 1), die zu (p 1)(q 1) teilerfremd ist. Da e und (p 1)(q 1) teilerfremd sind, gibt es laut Satz 2.4.1 eine multiplikative Inverse zu e modulo (p 1)(q 1). Sei d := e1 diese Zahl. Es gilt nun: e d 1 mod (p 1)(q 1) Es sei nun M die zu verschl usselnde Nachricht, wobei folgende Bedingung f ur M gelten muss: M ist eine ganze Zahl mit 0 M n 1 C sei die verschl usselte Nachricht. Das Verfahren lautet nun wie folgt: Das RSA-Verfahren Verschl usseln C = M e mod n Entschl usseln M = C d mod n e und n sind daher logischerweise der Public Key und d der Private Key.

15

3.2

Beweis des Verfahrens

Wir wollen nun zeigen, dass (C d mod n) wieder die urspr ungliche Nachricht M ergibt. Sowohl M als auch C sind ganze Zahlen mit 0 M, C n 1. Es gen ugt daher zu zeigen, dass Cd M mod n

Wir wissen aber, dass C M e mod n. Daher ist C d M mod n aquivalent zu (M e )d = M ed M mod n

Um diese G ultigkeit zu beweisen unterscheiden wir folgende 2 F alle: Fall 1: ggT (M, n) = 1 Wir wissen, dass e d 1 mod (p 1)(q 1). Dies ist nat urlich wegen unserer Denition der Kongruenz gleichbedeutend mit e d = k (p 1) (q 1) + 1. Einsetzen in unsere zu zeigende Kongruenzgleichung ergibt: M k(p1)(q1)+1 M Es gilt aber: M k(p1)(q1)+1 = M k(p1)(q1) M = (M (p1)(q1) )k M mod n

Wegen Satz 2.5.2 wissen wir, dass M (p1)(q1) 1 Es gilt daher: (M (p1)(q1) )k M 1k M M mod n womit unsere Aussage f ur Fall 1 bewiesen w are. mod pq = n

16

Den Schwierigen Fall, der auf die meisten M zutrit, ist damit bewiesen. Es bleiben daher die Spezialf alle zu zeigen, in denen M durch mindestens einen der Primzahlen p, q teilbar ist. Unser zweiter Fall lautet daher logischerweise: Fall 2: ggT (M, n) = 1 Wir unterschieden an dieser Stelle wieder 2 Unterf alle. Im ersten nehmen wir an, dass M durch beide der Zahlen p, q teilbar ist (also n | M gilt) und im zweiten Fall nehmen wir an, dass M nur durch einen dieser Zahlen teilbar ist. Fall 2.a: n | M Da wir aber von Anfang an vorausgesetzt haben, dass 0 M n 1 gilt, folgt daher nach Satz 2.1.7 M =0 (sonst m usste M ja (betragsm aig) n sein) Damit ist die Aussage aber e trivial, da somit C 0 0 mod n und daher C d 0d 0 M mod n gilt. Dieser Fall ist somit erledigt. Es bleibt daher folgender Fall: Fall 2.b: p | M und q M (Der Fall p M und q | M ist analog) Aus q M folgt M q1 1 mod q (Satz 2.5.1) Nach Satz 2.3.5 folgt daraus M k(p1)(q1) 1 mod q Nach Satz 2.3.2 k onnen wir diese Kongruenzgleichung mit M multiplizieren. M k(p1)(q1) M M k(p1)(q1)+1 M M mod q mod q

Da aber M 0 mod p, gilt aber auch M k(p1)(q1)+1 M mod p

und da p und q verschiedene Primzahlen sind, folgt nach Satz 2.3.4 M k(p1)(q1)+1 M mod pq = n

womit unsere Behauptung auch f ur den letzten Fall bewiesen ist. q.e.d.

17

3.3

Implementierungstechnische Tipps

Nachfolgendes d urfte besonders f ur Informatiker interessant sein, welche die Programmierung von RSA beabsichtigen. Da sowohl d als auch e in realistischen RSA-Systemen mehrere 100 Dezimalstellen haben k onnen, dauert es sehr lange, M so oft mit sich selbst zu multiplizieren (lineare Ordnung). Es ist allerdings auch fast unm oglich, diese Zahl ezient genau auszurechnen. Es ist daher essentiell, dass nach jeder einzelnen Multiplikation ein mod n des neuen Produkts folgt. Ein ezienterer Algorithmus dieses Modulo-Potenzierens wird erreicht, indem der Exponent in eine Summe von Zweierpotenzen (=Bin ardarstellung) aufgeteilt wird. Auf diese Weise wird das Gesamtprodukt in Teilprodukte mit Zweierpotenzen im Exponenten aufgespalten, welche nachher wieder miteinander multipliziert werden. Um auf die n achsth ohere Zweierpotenz zu kommen muss selbstverst andlich nur quadriert werden. Auf diese Weise erh alt man einen Algorithmus logarithmischer Ordnung. Beispiel: M = 8, e = 27 = 1 + 2 + 8 + 16, n = 55 81 8 mod 55 82 64 9 mod 55 84 82 82 9 9 81 26 mod 55 88 84 84 26 26 676 16 mod 55 816 88 88 16 16 256 36 mod 55 827 81 82 88 816 8 9 16 36 41472 2 mod 55

18

3.4

Die Sicherheit von RSA

Nehmen wir an, eine Person ohne den privaten Schl ussel d m ochte eine mit dem dazugeh origen oentlichen Schl ussel verschl usselte Nachricht lesen. Er m usste dazu aus dem oentlichen Schl ussel (bestehend aus e und n) den privaten Schl ussel d berechnen. Das einzige bis heute bekannte Verfahren daf ur (es ist allerdings nicht bewiesen, dass es keine ezientere gibt) besteht darin, n wieder in ihre Primfaktoren p und q zu faktorisieren. Hat man die Primzahlen gefunden, so kann mit e und (p 1)(q 1) der private Schl ussel d nat urlich leicht berechnet werden. Die Faktorisierung von n ist heute allerdings praktisch (!) nicht m oglich, wenn man bei der Wahl von p und q folgendes beachtet: p und q sind riesig (Milit arstandard sind 1024 Bit, was mehr als 300 Dezimalstellen entspricht) p und q liegen weit auseinander. Der erste Punkt d urfte klar sein, der zweite Punkt ist deshalb wichtig, da die systematische (sequentielle) Suche nach den Primzahlen nicht unbedingt bei kleinen Zahlen beginnen muss, sondern auch bei groen Zahlen starten kann und r uckw arts gesucht wird. Ausgangspunkt w are dabei nat urlich die Quadratwurzel von n. Je enger p und q beieinander liegen, desto urzer w are die Suche. n aher liegen sie bei n und desto k Beachtet man die obigen Punkte, so ist es sehr wahrscheinlich, dass die Sonne ausbrennt, bevor ein Computer mit heutiger Rechenleistung und den heute bekannten Algorithmen n faktorisiert h atte. Die wachsende Rechenleistung der Computer stellt kein Problem dar, da diese Entwicklung vorauszusehen ist sodass der Nutzer bei der Wahl seiner Schl ussel darauf achten kann, dass sein n gro genug ist, sodass es w ahrend der Zeit der beabsichtigten Verwendung nicht faktorisierbar ist. Problematisch wird es bei unvorhersagbaren Ereignissen wie z.B. die Fertigstellung eines Quantencomputers (f ur den das Faktorisierungsproblem m oglicherweise kein prinzipiell so schwieriges Problem ist) oder die Entwicklung eines ezienten Algorithmus zur Faktorisierung einer groen Zahl. Es ist allerdings, wie bereits erw ahnt, nicht bewiesen, dass das Faktorisierungsproblem u ost werden muss, um den privaten Schl ussel zu beberhaupt gel stimmen. Solche Entwicklungen sind zwar h ochst unwahrscheinlich, k onnen theoretisch aber jederzeit eintreten.

19

Literatur
[1] Clemens Heuberger, Zahlentheorie, http://www.oemo.at/intern/formel/zahlentheorie.pdf [2] Simon Singh, Geheime Botschaften

20

Das könnte Ihnen auch gefallen