Sie sind auf Seite 1von 21

Die Mathematik von RSA

Eine Arbeit von

Yimin Ge

(yimin.ge@chello.at)

August 2005

Inhaltsverzeichnis

0 Vorwort

2

1 Prinzip der Einwegverschlusselung¨

 

3

2 Zahlentheoretische Grundlagen

 

4

2.1 Teilbarkeit und Primzahlen

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

2.2 Gr¨oßter gemeinsamer Teiler und Euklidsches Verfahren

.

.

.

.

.

.

.

.

.

.

.

.

6

2.3 Kongruenzen und Restklassen

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

2.4 Multiplikative Inverse .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

2.5 Der Schlussel¨

zum Erfolg: Satz von Fermat

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

3 Ver- und Entschlusselungsalgorithmus¨

von RSA

 

15

3.1 Das Verfahren .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

3.2 Beweis des Verfahrens

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

3.3 Implementierungstechnische Tipps

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

3.4 Die Sicherheit von RSA .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

Literatur

20

0

Vorwort

¨

Da der Mathematikunterricht an

wohl qualitativ als auch quantitativ praktisch nicht vorhanden ist und aufgrund diverser

Stundenkurzungsreformen¨

Osterreichischen Schulen im internationalen Vergleich so-

¨

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 Oster- reichischen und Internationalen Mathematikolympiade war ich zutiefst schockiert daruber,¨ mit welcher Verachtung meine Klassenkollegen uber¨ solch eine sch¨one und vor allem essen- tielle Wissenschaft sprachen.

Mir lag der Wunsch nahe, diesem Trend entgegenzuwirken und nachdem einige mundliche¨

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 Verschlusselungsverfahren,¨ 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, wel- ches 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 voraus- gesetzt, s¨amtliche fur¨ das Verst¨andnis von RSA ben¨otigten zahlentheoretische Kenntnisse, welchen ich den Großteil 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 ausschließlich mit der mathematischen Seite von RSA. Bei n¨aherem Interesse zu den geschichtlichen und wirtschaftlichen Auswirkungen von RSA oder zu Vergleichen mit anderen Verschlusselungsverfahren¨ 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 Grund- bausteine fur¨ die meisten anderen Wissenschaften liefert, auch als solche zu wurdigen.¨

¨

Wien, August 2005

Yimin Ge

2

1

Prinzip der Einwegverschlusselung¨

Bei herk¨ommlichen symmetrischen Verschlusselungsverfahren¨ (also jene, bei denen der Schlussel¨ zum Verschlusseln¨ auch gleichzeitig der Schlussel¨ zum Entschlusseln¨ ist, oder der eine Schlussel¨ leicht aus dem anderen berechnet werden kann) war es lange Zeit ein Problem, Schlussel¨ bzw. Codebucher¨ sicher zum Kommunikationspartner zu transportieren. Der Schlusseltransport¨ war dabei nicht nur der kostenaufwendigste Teil der Kommunikation, sondern auch gleich- zeitig die gr¨oßte logistische Schwachstelle. Bis in die 1970er Jahre hielt man dieses Problem prinzipiell nicht fur¨ l¨osbar, bis Whitfield Diffie und Martin Hellmann eine Theorie ohne wirkliche L¨osungsans¨atze zur soge- nannten Public-Key-Kryptographie ver¨offentlicht hatten. Die grundlegende Idee eines solchen Verschlusselungsverfahrens¨ besteht darin, dass die Schlussel¨ zum Ver- und Entschlusseln¨ verschieden und ohne Zusatzinformation praktisch nicht ineinander umrechenbar sind. Dabei ist allerdings zu beachten, dass beide Schlussel¨ auch die jeweils andere Funktion ausuben¨ k¨onnen (man kann also mit irgendeinem der beiden Schlussel¨ eine Nachricht verschlusseln,¨ die dann mit dem jeweils anderen Schlussel¨ entschlusselbar¨ ist). Jener Schlussel,¨ der zum Verschlusseln¨ verwendet wird, wird als “Public Key“ (=¨offentlicher Schlussel)¨ bezeichnet und jener zum Entschlusseln¨ als “Private Key“ (=privater/geheimer Schlussel).¨ Die Verschlusselung¨ ist mathematisch gesehen eine injektive Einwegfunktion mit Falltur¨ f , wobei es ein effizientes 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 fur¨ f das Verfahren fur¨ f 1 herzuleiten. Dieses Prinzip kann man etwa mit folgender Alltagssituation vergleichen: Ein vorhandenes Schloss kann jeder schließen, jedoch kann es nur mit dem richtigen Schlussel¨ wieder ge¨offnet werden. Das Schloss entspr¨ache hier dabei dem Public Key und der Schlussel¨ dem Private Key. In der Praxis wird dann der Public Key (meistens in einer Datenbank) ver¨offentlicht, so- dass jeder eine Botschaft verschlusseln¨ kann, die allerdings nur vom rechtm¨aßigen Empf¨anger, der den Private Key besitzt, entschlusselt¨ und gelesen werden kann. Da aber, wie oben be- schrieben, der Private Key auch zum Verschlusseln¨ einer Nachricht dienen kann, dessen Entschlusselung¨ nur mit dem dazugeh¨origen Public Key m¨oglich ist, kann auf diese Wei- se eine sogenannte Digitale Signatur geschaffen werden. Diese Unterschrift wird dabei mit dem privaten Schlussel¨ verschlusselt¨ und kann von jedem mit dem ¨oentlichen Schlussel¨ ent- schlusselt¨ und gelesen werden. Da aber nur der rechtm¨aßige Empf¨anger den Private Key besitzt, kann auf diese Weise dessen Identit¨at verifiziert werden.

3

2

Zahlentheoretische Grundlagen

Ich m¨ochte zuerst, wie bereits angedeutet, wichtige zahlentheoretische Grundlagen vermit-

teln, die fur¨

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

Definition 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 = k · a

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

3. aus a | b und a | c a | (b ± c)

= 0

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 = ak 1 , c = ak 2 (b ± c) = (ak 1 ± ak 2 ) = a(k 1 ± k 2 )

4. c = abk = a(bk) = b(ak)

5. b = ak bc = a(ck)

4

6.

(b ± c) = ak, b = ak 1 ak = ak 1 ± c c = a(k ± k 1 )

7.

aus ak = b ⇒ |a| · |k| = |b|, aus b

= 0 k

= 0, somit gilt |k| ≥ 1 ⇒ |a| ≤ |b|

Definition 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 definiert.

5

2.2

Gr¨oßter gemeinsamer Teiler und Euklidsches Verfahren

Definition 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;

es logischerweise auch nur endlich viele gemeinsame Teiler zweier Zahlen und daher gibt es auch einen gr¨oßten gemeinsamen Teiler zweier Zahlen.

; ±b). Da jede Zahl nur endlich viele Teiler hat, gibt

Definition des gr¨oßten gemeinsamen Teilers zweier Zahlen Die gr¨oßte Zahl, die gemeinsamer Teiler von a und b ist, nennt man den

“gr¨oßten gemeinsamen Teiler“ von a und b und schreibt dafur¨

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 Gluck¨ 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 fur¨ 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 t 1 = ggT (a, b) und t 2 = ggT (b, a kb). Wir wollen nun zeigen, dass t 1 = t 2 .

Aus t 1 | b folgt nach Satz 2.1.5

Aus t 1 | a und t 1 | kb folgt nach Satz 2.1.3 t 1 | (a kb). t 1 ist gemeinsamer Teiler von b und (a kb)

t 1 | kb und analog dazu aus t 2 | b t 2 | kb.

t 1 t 2

()

(Begrundung:¨

gr¨oßte gemeinsame Teiler sein) Aus t 2 | kb und t 2 | (a kb) folgt nach Satz 2.1.6 t 2 | a t 2 ist gemeinsamer Teiler von a und b.

t 1 ist gemeinsamer Teiler von b und (a kb), kann aber nicht gr¨oßer als der

t 2 t 1

(gleiche Begrundung¨

Aus () und (∗∗) folgt aber t 1 = t 2

wie bei ()).

(∗∗)

q.e.d. 1

fur¨ “quod erat demonstrandum“, was auf Deutsch soviel wie “was zu zeigen

war“ heißt. Dies ist ein Kurzel,¨ welches in der Mathematik ublicherweise¨ unter einen erfolgreich gefuhrten¨ Beweis geschrieben wird.

1 q.e.d. ist die Abkurzung¨

6

Mit Hilfe dieser Gleichung bekommt man ein einfaches Verfahren zur Bestimmung des ggT , indem (falls die kleinere Zahl die Gr¨oßere nicht teilt, da der ggT sonst, 0 naturlich¨ ausgenommen, die kleinere Zahl w¨are) man b von a sooft abzieht, bis das neue a kleiner ist als b, pruft,¨ 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 wurde¨

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 kurzer:¨

int ggT(int a, int b)

{

dieser Algorithmus so aussehen:

return (a % b == 0) ? (b < 0) ? -b : b : ggT(b, a % b);

}

7

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 k 1 und addieren beide Gleichungen. Wir erhalten

III)s 1 =

a k 1 · b = 1 · a + (k 1 ) · b

Es sei nun k 1 so gew¨ahlt, dass s 1 b (wir haben b so oft von a abgezogen).

Nun fuhren¨

II) und III). Wir erhalten dann

wir den gleichen Schritt nochmals durch, allerdings mit den Gleichungen

IV )s 2 = b k 2 · s 1 = (k 2 ) · a + (k 1 k 2 + 1) · b

Diesen Schritt fuhren¨ wir nun solange durch, bis links (also bei s n ) 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.

bei dem sich

dieser noch als ¨außerst hilfreich erweisen wird. Er soll noch an einem Beispiel verdeutlicht werden:

Beispiel: Fur¨

Ich werde in einem sp¨ateren Kapitel noch auf diesen Satz zuruckkommen,¨

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

8

2.3

Kongruenzen und Restklassen

Definition der Restklassen modulo m Sei m eine positive ganze Zahl. Die Mengen

[ 0 ] m , [ 1 ] m ,

seien folgendermaßen definiert:

, [m 1] m

[

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}

fur¨

i = 0, 1,

,

m 1

Diese Mengen werden auch als die sogenannten “Restklassen modulo m“ bezeichnet (m ist der sogenannte “Modul“).

Beispiel fur¨

m = 5:

 

[

0 ] 5

=

{

, 15, 10, 5, 0, 5, 10, 15,

}

[

1 ] 5

=

{

, 14, 9, 4, 1, 6, 11, 16,

}

[

2 ] 5

=

{

, 13, 8, 3, 2, 7, 12, 17,

}

[

3 ] 5

=

{

, 12, 7, 2, 3, 8, 13, 18,

}

[

4 ] 5 = {

, 11, 6, 1, 4, 9, 14, 19,

}

Wir halten folgende Tatsachen fest:

, 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 Definition der Restklas- sen 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.

, 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 definiert).

Da aber jede ganze Zahl genau einen der Reste 0, 1,

Ist a [ i ] m mit a Z und m Z + und i = 0, 1,

9

Definition 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¨aufig auch a b (m) oder a b (mod m)).

Hinweis:

H¨aufig findet man auch folgende Definition von Kongruenz:

a und b sind genau dann kongruent modulo m, wenn m | (a b).

¨

¨

Die Aquivalenz dieser Definitionen kann sehr schnell gezeigt werden (Bei Aquivalenz mussen¨

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 | (ab) ⇐⇒ ab = mk. Sei nun a = ml+i ab = ml+ib = mk ⇐⇒ b = m(lk)+i

Es gelten folgende Rechenregeln fur¨

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. mod m und a b

aus a b

mod n und ggT (m, n) = 1 a b

mod mn

5.

aus a b

mod m a k b k

mod m mit k N

Beweis:

1. mod m ⇐⇒ m | (a b)

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 Da m | (a b)

(a b) = (a b)xm + (a b)yn = lnmx + kmyn = mn(lx + ky)

= xm + yn (a b) = (a b)xm + (a b)yn ⇐⇒ (a b) = km und n | (a b) ⇐⇒ (a b) = ln

5. Aus a b

mod m folgt nach Satz 2.3.2

a · a b · b

a · a · a b · b · b

mod m

sowie

mod m

a · a ·

· a b · b ·

· b

mod m

Fur¨

n

n

k = 0 erhalten wir 1 1

mod m was selbstverst¨andlich richtig ist.

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

mod m

Es gilt also

x · a 1

mod m

Es sei nun x [ i ] m (x muss logischerweise in irgendeiner Restklasse modulo m sein).

Es gilt x i

Nach Satz 2.3.2 gilt daher

mod m

x · a i · a

mod m

und daher

i · a 1

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

i · a 1

mod m

i wird auch als die sogenannte “Multiplikative Inverse zu a modulo m“ (oft auch mit a 1 ) 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 sodass ia 1 mod m

Beweis: Seien 0 i, j m 1 ganze Zahlen, sodass ia ja

folgt nach Satz 2.3.3 i j

Zahl i mit 0 i m 1 gibt,

mod m. Da ggT (a, m) = 1

mod m und da 0 i, j m 1 i = j.

12

2.5

Der Schlussel¨

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:

a p1 1

mod p

Beweis:

Es seien die Zahlen x 1 , x 2 ,

, x p1 wie folgt definiert:

x

x

1

2

x p1

=

=

=

1 · a 2 · a

(p 1) · a

Es gilt nun: je zwei x r und x s mit 1 r, s p 1 und r

modulo p. Beweis durch Widerspruch:

Annahme:

= s sind nicht kongruent

x r x s

mod p

also:

r · a s · a

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 x i paarweise inkongruent sind und mit Sicherheit keine der Zahlen

, klassen von [ 1 ] p bis [p 1] p vorkommen (wenn auch wahrscheinlich in einer anderen Reihenfolge)

x 1 ,

, x p1 alle Rest-

x p1 durch p teilbar ist, mussen¨

unter den p 1 Zahlen x 1 ,

Nach Satz 2.3.2 folgt aber nun:

x 1 · x 2 · also also

1 ·

· x p1 1 · 2 ·

· (p 1) mod p

2 ·

1a · 2a · a p1 · 1 · 2 ·

· (p 1)a

· (p 1) · (p 1)

mod p

· (p 1) 1 · 2 ·

mod p

Da aber die Faktoren 1, 2, sind, folgt nach Satz 2.3.3

, p1 alle nicht durch p teilbar und somit zu p teilerfremd

a p1 1

mod p

q.e.d.

13

Wir wissen jetzt also, dass fur¨

jede Primzahl p und jede ganze Zahl a mit p a gilt:

a p1 1

mod p

Nach Satz 2.3.5 gilt nun

(a p1 ) k 1 k

mod p

Da (a p1 ) k = a (p1)·k und 1 k = 1

a (p1)·k 1

f ur¨

mod p

k Z

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 fur¨

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

fur¨

a (p1)(q1) 1

p, q Primzahlen und a Z mit p a und q a.

mod p · q

Anmerkung

Der Satz von Fermat l¨asst sich noch folgendermaßen 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 be- weisen, wie der Satz von Fermat.

14

3

Ver- und Entschlusselungsalgorithmus¨

von RSA

Bevor es nun endgultig¨ nieren:

zum RSA-Verfahren geht, mussen¨

wir noch folgende Operation defi-

Definition des mod-Operators

Fur¨

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

(bzw, was gleichbedeutend ist: a [ i ] m ). Anmerkung: In vielen Programmiersprachen ist dieser mod-Operator auch als der % -Operator bekannt.

mod m gilt

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 := e 1 diese Zahl.

Es gilt nun:

Es sei nun M die zu verschlusselnde¨ Nachricht, wobei folgende Bedingung fur¨ M gelten muss:

e · d 1

mod (p 1)(q 1)

M ist eine ganze Zahl mit 0 M n 1

C sei die verschlusselte¨

Nachricht.

Das Verfahren lautet nun wie folgt:

Das RSA-Verfahren Verschlusseln¨

C

= M e

Entschlusseln¨

M

= C d

mod n

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 ursprungliche¨

Sowohl M als auch C sind ganze Zahlen mit 0 M, C n 1.

Es genugt¨

daher zu zeigen, dass

C d M

mod n

Nachricht M ergibt.

Wir wissen aber, dass C M e

mod n. Daher ist C d M

(M e ) d = M e·d M

mod n

mod n ¨aquivalent zu

Um diese Gultigkeit¨

zu beweisen unterscheiden wir folgende 2 F¨alle:

Fall 1: ggT (M, n) = 1 Wir wissen, dass e · d 1

der Kongruenz gleichbedeutend mit e · d = k · (p 1) · (q 1) + 1. Einsetzen in unsere zu zeigende Kongruenzgleichung ergibt:

wegen unserer Definition

mod (p 1)(q 1). Dies ist naturlich¨

M k·(p1)·(q1)+1 M

mod n

Es gilt aber:

M k·(p1)·(q1)+1

=

M k·(p1)·(q1) · M

= (M (p1)(q1) ) k · M

Wegen Satz 2.5.2 wissen wir, dass

M (p1)(q1) 1 mod pq = n

Es gilt daher:

womit unsere Aussage fur¨

(M (p1)(q1) ) k · M

Fall 1 bewiesen w¨are.

1 k · M

M

mod n

16

Den Schwierigen Fall, der auf die meisten M zutrifft, ist damit bewiesen. Es bleiben daher die Spezialf¨alle zu zeigen, in denen M durch mindestens einen der Prim- zahlen p, q teilbar ist. Unser zweiter Fall lautet daher logischerweise:

Fall 2: ggT (M, n)

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.

= 1

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 trivial, da somit

und daher C d 0 d 0 M

M ja (betragsm¨aßig) n sein) Damit ist die Aussage aber

(sonst musste¨ C 0 e 0

mod n 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 fur¨

den letzten Fall bewiesen ist.

17

q.e.d.

3.3

Implementierungstechnische Tipps

Nachfolgendes durfte¨ besonders fur¨ 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 effizient genau auszurechnen. Es ist daher essentiell, dass nach jeder einzelnen Multiplikation ein mod n des neuen Produkts folgt. Ein effizienterer Algorithmus dieses “Modulo-Potenzierens“ wird erreicht, indem der Ex- ponent in eine Summe von Zweierpotenzen (=Bin¨ardarstellung) aufgeteilt wird. Auf diese Weise wird das Gesamtprodukt in Teilprodukte mit Zweierpotenzen im Exponenten aufge- spalten, 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

8 1 8

8 2 64 9

8 4 8 2 · 8 2 9 · 9 81 26

8 8 8 4 · 8 4 26 · 26 676 16 8 16 8 8 · 8 8 16 · 16 256 36

mod 55

mod 55

mod 55

mod 55

mod 55

8 27 8 1 · 8 2 · 8 8 · 8 16 8 · 9 · 16 · 36 41472 2

18

mod 55

3.4

Die Sicherheit von RSA

Nehmen wir an, eine Person ohne den privaten Schlussel¨ d m¨ochte eine mit dem dazugeh¨ori- gen ¨oentlichen Schlussel¨ verschlusselte¨ Nachricht lesen. Er musste¨ dazu aus dem ¨oentlichen Schlussel¨ (bestehend aus e und n) den privaten Schlussel¨ d berechnen. Das einzige bis heute bekannte Verfahren dafur¨ (es ist allerdings nicht bewiesen, dass es keine effizientere 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 Schlussel¨ d naturlich¨ 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 durfte¨ 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 großen Zahlen starten kann und ruckw¨ ¨arts gesucht wird. Ausgangspunkt w¨are dabei naturlich¨ die Quadratwurzel von n. Je enger p und q beieinander liegen, desto

n¨aher liegen sie bei n und desto kurzer¨ w¨are die Suche. 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 Entwick- lung vorauszusehen ist sodass der Nutzer bei der Wahl seiner Schlussel¨ 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 ei- nes Quantencomputers (fur¨ den das Faktorisierungsproblem m¨oglicherweise kein prinzipiell so schwieriges Problem ist) oder die Entwicklung eines effizienten Algorithmus zur Faktori- sierung einer großen Zahl. Es ist allerdings, wie bereits erw¨ahnt, nicht bewiesen, dass das Faktorisierungsproblem uberhaupt¨ gel¨ost werden muss, um den privaten Schlussel¨ zu be- 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