Inhaltsverzeichnis

1 Einleitung 2
2 Primzahlen 2
2.1 Definition und Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Finden von Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Das Sieb des Eratosthenes . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Das Sieb von Atkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 Verteilte Suche nach Mersenneprimzahlen . . . . . . . . . . . . . . . . . 5
2.3 Menge der Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 Endlichkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 Menge der Primzahlen in einem Intervall . . . . . . . . . . . . . . . . . 7
3 Primzahlen in der Verschlüsselung 8
3.1 Die Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Die RSA-Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Beschreibung und Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 Realisierung in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Resümee 11
1
1 Einleitung
Primzahlen beschäftigen die Mathematiker bereits seit unvorstellbar langer Zeit: Man
schätzt, dass bereits 500 v. Chr. die Pythagoräer Primzahlen untersuchten. Einerseits stie-
ßen sie bei dem Versuch, jede Zahl als Rechteck, also Produkt zweier Zahlen darzustellen,
auf Zahlen, die nur als eine Strecke darstellbar waren, zum anderen fanden sie bei der
Suche nach perfekten Zahlen (und der damit verbundenen Faktorisierung) heraus, dass
einige Zahlen neben sich selbst nur durch eins teilbar waren.
Ungefähr 300 v. Chr. beschrieb Euklid im neunten Band seiner Stoicheia (»Elemen-
te«) die Primzahlen sehr genau und lieferte auch den berühmten Beweis dafür, dass es
unendlich viele Primzahlen gibt, mit. Hierauf wird später noch eingegangen.
Doch was ist so faszinierend und wichtig als diesen seit mehr als 2500 Jahren unter-
suchten, besonderen Zahlen? Wofür benötigt man heutzutage, in der Zeit, in der Differen-
tialrechnung, Integrale und Stochastik die hohe Mathematik in der Oberstufe und im Stu-
dium bestimmen und Computer all unsere Berechnungen ausführen, noch Primzahlen?
Sind die Untersuchung von Primzahlen, das Finden immer größerer Mersenneprimzah-
len
1
und die damit verbundenen Nachrichtenmeldungen nur zwecklose Projekte, die als
Hobby betrieben werden?
Nein, Primzahlen und vor allem die Eigenschaft, dass man mit zwei Primzahlen belie-
bige zusammengesetzte Zahlen faktorisieren kann, sind von ganz elementarer Bedeutung
in der heutigen Zeit. Je mehr sich die Informatik und vor allem das Internet entwickelte,
desto stärker sind Primzahlen zur Faktorisierung, Kommunikation und Verschlüsselung
notwendig. Dieser wesentliche Aspekt soll hier mathematisch beschrieben und untersucht
werden, um dieses in der Öffentlichkeit nicht immer präsente Thema ein wenig deutlicher
zu machen.
Als »Bonus« befinden sich im Anhang zu einigen in dieser Facharbeit beschriebenen
Verfahren und/oder Algorithmen Javafunktionen, die die vorgestellten Sachverhalte zum
einen verdeutlichen sollen, zum anderen aber auch zum Ausprobieren anregen sollen.
2 Primzahlen
2.1 Definition und Eigenschaften
Die natürlichen Zahlen ohne 0 (N\{0}) kann man in verschiedenste Kategorien eintei-
len. Ein Beispiel seien die geraden und ungeraden Zahlen. Eine andere Einteilung wäre
die Einteilung in Vielfache eine Zahl und eigenständige Zahlen. Man nennt dies in der
Mathematik zusammengesetzte Zahlen und prime Zahlen (oder Primzahlen).
Zusammengesetzte Zahlen lassen sich also stets als ein Vielfaches einer anderen Zahl
1
Eine Mersenneprimzahl ist eine Primzahl in der Form 2
p
− 1, wobei p eine Primzahl ist.
2
(exklusive 1) schreiben – oder anders gesagt: Sie lassen sich in einzelne Faktoren zerlegen.
Beispielsweise kann man 6 in die Faktoren 2 und 3 zerlegen (oder als Vielfaches einer
dieser beiden Zahlen ausdrücken). Zahlen wie 2 oder 3 jedoch kann man nicht in einzelne
Faktoren zerlegen. Solche Zahlen heißen Primzahlen.
Primzahlen sind sozusagen die nichtteilbaren Zahlen unter den natürlichen Zahlen.
Weitere Beispiele für Primzahlen sind 5, 7, 11, aber auch 239 oder 2
30402457
− 1, wobei
letzteres die am 15.12.2005 gefundene 43. Mersenneprimzahl ist
2
. Es ist definiert:
Eine natürliche Zahl p ∈ N\{0; 1} heißt Primzahl, wenn p nur restlos durch
sich selbst und 1 dividiert werden kann.
Mit Hilfe der Modolufunktion aus der Zahlentheorie kann man diese Definition noch wei-
ter formalisieren. Wird die Modulofunktion mod m auf eine ganze Zahl n angewendet,
so gibt die Modulofunktion den Rest beim ganzzahligen Teilen von n durch m zurück
3
.
Für Primzahlen muss also gelten:
Ist p eine Primzahl so gilt für alle n ∈ N\{0; 1; p}: p mod n = 0.
2.2 Finden von Primzahlen
2.2.1 Das Sieb des Eratosthenes
Ist man auf der Suche nach Primzahlen, so kann man bis zu einer bestimmten Größe, zum
Beispiel 100, Primzahlen schnell und einfach im Kopf finden, in dem man die Zahlen
durchgeht und jeweils überlegt, ob diese durch andere teilbar sind. Dabei helfen einem
zum einen, dass nur ungerade Zahlen in Frage kommen und zum anderen die bekannten
Teilbarkeitsregeln, die für alle Zahlen ≤ 10 exklusive 7 existieren – oder das Auswendig-
kennen des »Ein-mal-eins’«.
Möchte man jedoch weitaus größere Primzahlen, zum Beispiel von 0 bis 1000 oder
gar 10.000 finden, so stößt man schnell an seine Grenzen. Vor mehr als 2200 Jahren be-
schäftigten sich, wie bereits in der Einleitung erwähnt, auch die Griechen mit Primzahlen.
Ein Gelehrter unter ihnen namens Eratosthenes kannte ein Verfahren zum schnellen Be-
stimmen von Primzahlen. Dabei »siebte« er all die Zahlen aus den natürlichen Zahlen
heraus, die zusammengesetzt waren und behielt nur noch die Primzahlen. Das Verfahren
ist daher nach ihm benannt und als Sieb des Eratosthenes bekannt.
Beim Sieben nach Eratosthenes sucht man sich zuerst das Intervall, in dem man die
Primzahlen bestimmen will. Für das Beispiel hier wurde das Intervall I
Sieb
= [0; 100]
gewählt, um das Beispiel in einem übersichtlichen Rahmen zu halten; das Verfahren ist
jedoch analog dazu auch für größere Intervalle anzuwenden.
2
vgl. Caldwell 1
3
Beispiel: 17mod 15 = 2, da 15 · 1 +2 = 17 bzw. 17 : 15 = 1 + Rest : 2
3
Man schreibt nun im ersten Schritt die Zahlen des Intervalls auf. Da man aus diesen
Zahlen schließlich die Primzahlen erhalten will, kann man sich hier bereits jede gerade
Zahl (außer 2) sparen, da diese schon per definition zusammengesetzt sein muss und da-
her nicht mehr prim sein kann. Außerdem wird 1 nicht aufgeschrieben, da sie auch per
Definition keine Primzahl ist:
2 3 5 7 9 11 13 15 17 19
21 23 25 27 29 31 33 35 37 39
41 43 45 47 49 51 53 55 57 59
61 63 65 67 69 71 73 75 77 79
81 83 85 87 89 91 93 95 97 99
Da aus der Definition der Primzahl (siehe 2.1) bekannt ist, dass diese keine Vielfachen
anderer Zahlen sein können, kann man folgern, dass beim Wegstreichen aller Vielfachen
nur noch Primzahlen übrig bleiben müssen. Um nicht zu viel zu arbeiten, kommt man
auf die Lösung, dass man nur bis zu der Zahl, dessen Quadratzahl kleiner oder gleich
der größten Zahl im Intervall die Vielfachen wegstreichen muss. Der zweite Schritt ist
also das Wegstreichen der Vielfachen von 3,5,...,k , wobei k =

I
max

( sind die
Gaußklammern)
4
. In unseremFall ist also k = 9. Nach demWegstreichen aller Vielfachen
von 3 bis 9 bleiben nur noch folgende Zahlen über:
2 3 5 7 9 11 13 15 17 19
21 23 25 27 29 31 33 35 37 39
41 43 45 47 49 51 53 55 57 59
61 63 65 67 69 71 73 75 77 79
81 83 85 87 89 91 93 95 97 99
Diese Zahlen sind gerade die Primzahlen in dem Intervall I
Sieb
.
Obwohl das Verfahren auf den ersten Blick nicht besonders komplex aussieht, ist es
doch ein sehr schnelles Verfahren, das auch in vielen Computerprogrammen für die Be-
stimmung Primzahlen in einem überschaubaren Bereich von einigen Einhunderttausen-
dern angewendet wird.
Um den formalen Alghoritmus zu verdeutlichen, befindet sich im Anhang eine Java-
funktion siebe(int pGrenze), die alle Primzahlen zwischen 0 und dem Wert von
pGrenze mit Hilfe des Sieb des Eratosthenes berechnet und in einer Liste speichert. Das
Testprogramm dazu ist die Klasse Sieben.
4
Die Gaußklammer a liefert die größte ganze Zahl, die kleiner als a ist zurück (vgl. Semmler).
Bsp.: 7, 89 = 7
4
2.2.2 Das Sieb von Atkin
Um ein dem Sieb des Eratosthenes ähnliches Verfahren auch für Primzahlen bis in den
Milliardenbereich zeiteffizient anwenden zu können, wurde versucht, das Verfahren so zu
ändern, dass es bei großen Zahlen effizienter, schneller und – bei Ausführung mit einem
EDV-System – speichersparender abläuft.
Im Jahre 1999 publizierten Atkin und Bernstein, zwei Mathematiker von der Univer-
sität in Illinois, ein Verfahren, mit dem sie bereits 1999 die Primzahlen bis 1.000.000 in
weniger als 20 Sekunden finden konnten
5
.
2.2.3 Verteilte Suche nach Mersenneprimzahlen
Bei dem Suchen von Primzahlen mit Hilfe von Rechnern – besonders Primzahlen mit
mehreren Millionen Stellen wie zum Beispiel die hohen Mersenneprimzahlen – benutzt
man in erster Linie Primzahltests und/oder probiert, bestimmte Zahlen zu faktorisieren.
Schlägt das Zerlegen der Zahl fehl, so muss es eine Primzahl sein.
Um eine Mersenneprimzahl – also eine Primzahl in der Form 2
p
−1 – zu finden, muss
man also im Prinzip zwei Schritt ausführen:
1. Man erhöht schrittweise den Exponenten p.
2. Man überprüft, ob die resultierende Zahl 2
p
− 1 prim ist oder faktorisierbar ist.
Da es bewiesen ist, dass der Exponent p eine Primzahl sein muss, wenn 2
p
− 1 prim ist
(Caldwell 2), hat man hierdurch eine erhebliche Arbeitserleichterung: Es sind nur noch
prime Exponenten p zu betrachten, respektive erhöht man schrittweise den Exponenten p
in Primzahlabständen.
Die 43. Mersenneprimzahl (gleichzeitig größte bislang gefundene Primzahl) ist 2
30402457

1; eine Zahl mit mehr als 9 Milliarden Ziffern und einem Exponenten größer als 30 Mil-
lionen. Solche riesigen Zahlen auf ihre Eigenschaft prim zu sein zu überprüfen bezie-
hungsweise diese gar zu faktorisieren dauert selbst auf den schnellsten Rechnern der Welt
geraume Zeit. Um solche großen numerischen Probleme zu lösen gibt es sogenannte Su-
percomputer, die teilweise bis zu 70.000 mal so schnell wie ein gewöhnlicher HighEnd-
PC sind
6
. Solche Rechnersystem kosten natürlich zum einen verhältnismäßig viel Geld,
andererseits haben sie auch hohe laufende Kosten.
Als schnelle Netzwerkverbindungen aufkamen, begann man damit, eine große Zahl
von Computern über Netzwerkleitungen zu einem virtuellen Großcomputer zusammen-
zuschließen. Eine solche Infrastruktur besitzt auch das Projekt PrimeNet
7
. PrimeNet ist
5
vgl. Atkin
6
Dieser Vergleich beruht auf dem Highend-Prozessor Itanium 2 von Intel, der laut Hersteller zwischen
4 und 5 Milliarden Gleitkommaoperationen pro Sekunde, so genannte GigaFlops (GFLOPS; Giga für Mil-
liarden und FLOPS für Floating Point Operations per Second), leistet (vgl. Itanium2) und dem IBM Super-
computer BlueGene, der eine Spitzenleistung von 367 TerraFlops leistet (vgl. BlueGene).
7
URL: http://www.mersenne.org/primenet/
5
ein weltweit verteiltes System von Servern und Clients, das das Finden neuer Mersenne-
primzahlen ermöglicht. Es hat eine Rechenleistung, die der von ca. 5500 Desktopcompu-
tern entspricht
8
, und war damit in der Lage neun der weltgrößten Primzahlen zu finden.
Die bereits genannte 43. Mersenneprimzahl war ein Resultat aus dem Dezember dieses
Projekts. Bei diesem Projekt lädt sich jeder, der einen Bruchteil seiner Rechenleistung
dem Projekt zur Verfügung stellen möchte, ein kleines Programm (Client) herunter und
nimmt somit an den Primzahltests teil, die so umfangreich sind, dass sie teilweise für die
Untersuchung einer großen Zahl mehr als einen Monat Zeit benötigen.
2.3 Menge der Primzahlen
2.3.1 Endlichkeit
Damit die oben beschriebenen Methoden zum Finden von (großen) Primzahlen auch sinn-
und aussichtsvoll sind, ist es wichtig zu wissen, ob man überhaupt unendlich viele Prim-
zahlen finden kann oder die Menge der Primzahlen endlich ist. Schon ca. 300 v. Chr.
bewies Euklid in dem neunten Band seiner Elemente im Satz 20 in einem berühmt gewor-
denen Widerspruchsbeweis, dass »[e]s (...) mehr Primzahlen als jede vorgelegte Anzahl
von Primzahlen [gibt]« (Euclid 9, 20). Obwohl auch andere Mathematiker wie Stieltje,
Goldbach oder Schorn
9
die Unendlichkeit bewiesen haben, möchte ich hier den klassi-
schen Beweis von Euklid darstellen, der sich in seiner (ins Englische übersetzten) Ur-
sprungsform auch im Anhang findet.
1. Um den Beweis zu führen, nimmt man zuerst an, dass es eine endliche Menge von
Primzahlen P = {p
1
, p
2
, p
3
, ...p
k
} gibt.
2. Multipliziert man alle diese Zahlen miteinander und addiert 1, so erhält man eine
Zahl
n =
k
¸
i=1
p
i
+ 1 = p
1
· p
2
· p
3
· ... · p
k
+ 1
3. Da jede zusammengesetzte Primzahl durch mindestens eine Primzahl teilbar ist,
müsste dann die Zahl n, die ja nicht aus der Menge der begrenzen Primzahlen aus
(1.) ist, durch eine der Primzahlen ohne Rest teilbar sein. Da jedoch die Zahl n
durch die Multiplikation in (2.) bereits alle Zahlen der begrenzren Primzahlmen-
ge besitzt, kann sie nicht mehr durch eine der übriggebliebenen Primzahlen teilbar
sein, da durch das Addieren von 1 stets auch 1 als Rest übrig bleiben wird.
Für alle q ∈ P gilt also: n mod q = 0, was jedoch Bedingung für eine zusammen-
gesetzte Zahl wäre
8
21864 TerraFlops, vgl. PrimeNet
9
vgl. PrimBeweise
6
4. Somit ist die Zahl n eine neue Primzahl und war vorher nicht in der Menge P ent-
halten. Fügt man n nun P hinzu und wiederholt die Schritte 1-3, so wird man zu
dem gleichen Schluss kommen.
5. Die Menge der Primzahlen kann also nicht endlich sein (→ist unendlich groß).
q.e.d.
2.3.2 Menge der Primzahlen in einem Intervall
Zusätzlich zu dem Faktum, dass es unendlich viele Primzahlen gibt, ist es z. B. für das
Erstellen von lückenloser Primzahltabellen, also Primzahltabellen, die nicht nur große
Primzahlen enthalten, sondern auch keine Primzahlen ausgelassen haben, wichtig, einen
Anhaltswert zu haben, wie viele Primzahlen es in einem bestimmten Intervall gibt. Diese
Anzahl soll arithmetisch berechnet werden können und nicht durch einfaches Auszählen
der bekannten Primzahlen.
Eine Möglichkeit, die Anzahl der Primzahlen in einem Intervall zwischen 1 und x
zu errechnen, wäre das Abziehen der Anzahl der zusammengesetzten Zahlen im Intervall
von der Anzahl aller Zahlen im Intervall.
Ein Mathematiker namens Legendre entwickelte eine Formel, mit der man genau diesen
Zusammenhang berechnen kann. Die von ihm eingeführte Funktion π(x) berchnet die
Anzahl der Primzahlen zwischen 1 und x:
10
π(x) = x − 1 +π(

x) −
¸
p
i


x
¸
x
p
i
¸
+
¸
p
i
<p
j


x
¸
x
p
i
p
j
¸

¸
p
i
<p
j
<p
k


x
¸
x
p
i
p
j
p
k
¸
+...
Um diese Funktion, die schwieriger aussieht als sie ist, zu verstehen, werde ich zuerst die
einzelnen Terme erläutern und mit Hilfe eines Beispiels die Anwendung verdeutlichen.
Ales erstes wird die Anzahl aller natürlichen Zahlen durch x hinzugefügt und so-
gleich von diesem die 1, die später als Primzahl erkannt würde, abgezogen. Nun werden
alle anderen zusammengesetzte Zahlen zwischen 1 und x errechnet und abgezogen:
Jeder der Terme in der Form

x
pn
¸
dient der Berechnung all der Zahlen aus dem Inter-
vall, die durch p
n
(die n-te Primzahl) teilbar sind. Diese müssen nun aufsummiert werden,
wobei man – wie auch schon beim Sieb des Eratosthenes – nur die Primzahlen betrachten
muss, die kleiner sind als das Quadrat von x; daher rührt die Angabe p
i


x in der
Summenfunktion. Hierbei werden jedoch auch die Vielfachen 1 · p
n
mitgezählt, welche
ja per Definition prim bleiben und keine zusammengesetzten Zahlen sind. Da diese ja
bereits von der Gesamtzahl der Zahlen im Intervall [1; x] abgezogen wurden, wird durch
den Term π(

x) genau diese Anzahl von Primzahlen wieder hinzugefügt – der Fehler
ist also ausgeglichen. Der Term
¸

x
p
i
¸
zählt außerdem alle zusammengesetzten Zah-
len, die als Produkt zweier Primzahlen geschrieben werden können mit, da sowohl alle
10
vgl. Riesel, Seite 10
7
a · p
i
, als auch alle a · p
i
· p
j
Vielfache von p
i
oder p
j
sind. Es ist also schon wieder
eine zu große Anzahl an zusammengesetzten Zahlen abgezogen worden, was wiederum
korrigiert werden muss. Der Term in der Form
¸

x
p
i
p
j
¸
addiert gerade die Anzahl jener
Zahlen wieder hinzu, die als Produkt zweier Primzahlen p
i
und p
j
geschrieben werden
können. Hierdurch werden jedoch – analog zum oberen Fehler – alle zusammengesetzten
Zahlen, die als Produkt dreier Primzahlen p
i
, p
j
, p
k
geschrieben werden können, gar nicht
mehr berücksichtigt. Daher werden nun explizit alle durch die drei Primzahlen teilbare
Zahlen von der Gesamtanzahl der Zahlen durch den Term
¸

x
p
i
p
j
p
k
¸
abgezogen. Dieses
Wechselspiel von Addieren und Subtrahieren geht – je nach der Größe von x – noch viel
weiter. Um die Formel jedoch anschaulich zu machen und ihre Richtigkeit zu überprüfen,
werden wir kurz π(100) ausrechnen und überprüfen, ob wir – wie oben beim Sieb des
Eratosthenes – 25 Primzahlen herausbekommen:
π(100) = 100 − 1 + π(10) −
¸
100
2
¸

¸
100
3
¸

¸
100
5
¸

¸
100
7
¸
+
¸
100
2 · 3
¸
+
¸
100
2 · 5
¸
+
¸
100
2 · 7
¸
+
¸
100
3 · 5
¸
+
¸
100
3 · 7
¸
+
¸
100
5 · 7
¸

¸
100
2 · 3 · 5
¸

¸
100
2 · 3 · 7
¸

¸
100
2 · 5 · 7
¸

¸
100
3 · 5 · 7
¸
+
¸
100
2 · 3 · 5 · 7
¸
= 99 + 4 − 50 − 33 − 20 − 14 + 16 + 10 + 7 + 6 + 4 + 2 − 3 − 2 − 1 − 0 + 0 = 25
Unser errechnetes Ergebnis stimmt mit dem Ergebnis des Sieb des Eratosthenes über-
ein.
Legendres Formel ist jedoch für sehr große x schwer und langwierig zu berechnen,
selbst mit Computern. Daher werden heutzutage auf EDV-Systemen hauptsächlich die
Algorithmen von Lehmer, Mapes oder Lagarias verwendet
11
.
3 Primzahlen in der Verschlüsselung
3.1 Die Idee
Seitdem es Computer und damit auch dauerhafte Speichermöglichkeiten gibt, versuch-
te man, persönliche Daten durch Passwörter und Verschlüsselung vor der Einsicht Un-
berechtigter zu schützen. Bei der Übertragung von verschlüsselten Daten benutzte man
festgelegte Schlüssel aus Codebüchern, die Empfänger und Sender von Nachrichten be-
saßen. Aus diesem Buch wurde dann die Nachricht beim Sender mit dem festgelegten
Schlüssel kodiert und beim Empfänger mit diesem dann entschlüsselt. Dieses einfache
Verfahren hat jedoch den bedeutenden Nachteil, dass der Transport der Codebücher ein
11
vgl. Riesel 12
8
großes Sicherheitsproblem darstellte und außerdem logistisch aufwendig war.
ImJahr 1976 veröffentlichten Diffie und Hellmann die Theorie der Public-Key-Verschlüsselung
– eine Verschlüsselung, die nicht mehr auf einem gemeinsamen Schlüssel basierte, son-
dern auf privaten und öffentlichen. Drei Mathematiker namens Rivest, Shamir und Adle-
man versuchten, zu belegen, dass es ein solches Verschlüsselungsverfahren funktioniere
– und stießen 1977 auf ein Verfahren, was nicht die Diffie-Hellmann-Theorie widerlegte,
sondern sie sogar in einer praktischen Anwendung bestätigte. Das entstandene Verfahren
nannten sie »RSA«, wobei jeder Buchstabe für den Anfangsbuchstabe ihrer Nachnamen
steht.
12
Die RSA-Verschlüsselung hat als Grundidee, dass das Multiplizieren großer Primzah-
len (z. B. mit 200 Stellen) von Computern sehr einfach ausgeführt werden kann, jedoch
nicht das Faktorisieren des entstandenen Produkts (400 Stellen). Das Faktorisieren von
solchen Zahlen würde selbst bei den heutigen Rechnersystemen viele Generationen, ja
sogar Weltzeitalter dauern:
»The lifetime of the universe is approximately 10
18
seconds - an 18 di-
git number. Assuming a computer could test one million factorizations per
second, in the lifetime of the universe it could check 10
24
possibilities. But
for a 400 digit product, there are 10
200
possibilities. This means the computer
would have to run for 10
176
times the life of the universe to factor the large
number.« (Stankova)
Das Generieren ist also möglich, das Erlangen des Generators (also den zwei großen Prim-
zahlen) jedoch ist nahezu unmöglich. Eine solche Funktion nennt man in der Verschlüs-
selungswissenschaft one way function (Einwegfunktion), um mit ihr jedoch auch sinnvoll
arbeiten zu können, muss man aus ihr eine trap door function (Falltürfunktion) machen.
Eine Falltürfunktion ist eine Einwegfunktion jedoch mit einer Möglichkeit – durch ei-
ne Zusatzinformation zum Beispiel – die Funktion wieder zu einer Zweiwegfunktion zu
machen. RSA nutzt genau dies.
3.2 Die RSA-Kodierung
3.2.1 Beschreibung und Beispiel
Der erste Schritt bei der RSA-Kodierung ist das Generieren eines öffentlichen Schlüssels
N. Dieser ist das Produkt zweier großen Primzahlen p und q. Für den öffentlichen Schlüs-
sel gilt also N = pq. Das Erstellen von N war sehr schnell und einfach, bei gegebenem
N jedoch auf p und q zu schließen ist nahezu unmöglich, wie wir oben gesehen haben.
Daher kann N ruhig öffentlich sein. Wir haben jetzt einen öffentlichen Schlüssel N, und p
12
vgl. WikiRSA
9
und q als geheime Zahlen. Wie RSA nun zum Kodieren und Dekodieren verwendet wird,
soll ein Beispiel mit vergleichweise kleinen Zahlen zeigen. In den Beispiel will Person B
eine veschlüsselte Nachricht an A senden:
1. Person A muss, wie vereinbart einen öffentlichen Schlüssel N aus zwei Primzahlen
p, q erstellen. In dem Beispiel sei p = 23 und q = 41, womit N = pq = 943. Dieser
Schlüssel wird öffentlich zur Verfügung gestellt.
2. Person A muss zusätzlich eine Zahl e definieren, die teilerfremd zu (p −1) · (q −1)
ist. In dem Beispiel, ist (p − 1) · (q − 1) = 22 · 40 = 880. Als e können wir nun
eine willkürliche Zahl festlegen, sofern sie außer der 1 keinen gemeinsamen Faktor
mit 880 hat. Wir entscheiden uns für e = 7. Diese Zahl e wird zusätzlich zu N
öffentlich verfügbar gemacht.
3. Die beiden öffentlichen Informationen N und e reichen nun für Person B aus, um
seine Nachricht nach RSA zu kodieren. Die Vorschrift der RSA-Verschlüsselung C
lautet C = M
e
(mod N), wobei M die zu verschlüsselnde Nachricht darstellt, die
in unserem Beispiel eine einfache Zahl ist.
13
Für M = 35 lautet die verschlüsselte
Form C also:
C = M
e
(mod N) = 35
7
(mod 943) = 64339296875(mod 943) = 545
4. Person B übermittelt C = 545 an Person A.
Es soll darauf hingewiesen werden, dass Person B zur Verschlüsselung nur die bei-
den öffentlichen Schküsselteile N und e benötigte.
5. Nachdem Person A die Nachricht C = 545 empfangen hat, möchte sie diese ent-
schlüsseln. Nach RSA lautet die Entschlüsselung M = C
d
(mod N), wobei man d
durch die Gleichung de (mod (p−1)(q−1)) = 1 gegeben ist. In unserem Fall müs-
sen wir also d für 7d (mod 880) = 1 finden. Dieses Problem ist informatisch durch
»ausprobieren« schnell lösbar und man kommt auf d = 503, da 7 · 503 = 3521 und
3521 (mod 880) = 1.
Dechiffriert ist M also M = 545
503
(mod 943) = 35.
Trotz des hohen Exponenten ist die Gleichung zum einen durch Computeralgebra-
system und Programmieralgorithmen lösbar und zum anderen dadurch, dass man
immer nur den Rest bei der Division durch 943 betrachten muss und die Gleichung
dementsprechend umformen kann.
13
Bei Texten beispielsweise würde M eine Zahl aus der Codetabelle des Alphabets, zum Beispiel der
ASCII-Tabelle sein.
10
3.2.2 Realisierung in Java
Bei der Realisierung des RSA-Algorithmus’ in Java ergab sich das Problem der großen
Zahlen: Anweisungen wie % für modulo, aber auch Potenzen, sind nur für double oder
int definiert. Diese Datentypen reichen jedoch nicht aus und mit ihnen ist RSA außer-
dem unnötig schwer zu realisieren. Nach zeitaufwendigem Herumprobieren ohne Erfolg
musste ein neuer Ansatz her: Diese wurde in der Klasse java.math.BigInteger
gefunden
14
. Dieser Datentyp kann einerseits Zahlen, die sehr groß sind, speichern – ande-
rerseits sind in der BigInteger-Klasse bereits benötigte Funktionen, wie zum Beispiel
das Potenzieren oder das Potenzieren zu einem Modulus, vorhanden. Im Anhang befindet
sich eine Klasse RSA und eine Klasse Verschluesseln zum Testen.
4 Resümee
Wie oben gesehen, sind Primzahlen nicht nur ein spannendes und interessantes Gebiet
der Mathematik, sondern werden auch heuzutage noch aktiv erforscht. Projekte wie das
PrimNet zeigen, wie aktuell das Entdecken neuer Primzahlen ist.
Das RSA-Verfahren bildet den Kern des uns bekannten SSL-Vefahrens, eine Ver-
schlüsselung des Webprotokolls HTTP. Ohne SSL wären Anwendungen wie Onlineban-
king oder sicheres Onlineshopping gar nicht möglich. Und SSL mit dem zu Grunde lie-
gendem RSA wäre ohne Primzahlen niemals möglich. Die Primzahlen sind also nicht
einfach nur bestimmte Phänomene der Mathematik, vielmehr gibt es verschiedenste An-
wendungen für sie und mit ihnen; das hier vorgestellte RSA-Verfahren soll nur eine der
wichtigen und unverzichtbaren Möglichkeit aufzeigen.
14
vgl. Wayne
11
Literatur
[Caldwell 1] Website: Dr. Chris K. Caldwell. The Largest Known Primes – A Sum-
mary. Martin: University of Tennessee at Martin. URL: http://
primes.utm.edu/largest.html (Abgerufen: 26. Februar 2006,
18:41)
[Semmler] Manuskript: Gunter Semmler. Funktionen in der Zahlentheorie.
Freiburg: Technische Universität Freiburg. URL: http://lsgm.
uni-leipzig.de/KoSemNet/pdf/semmler-05-3.pdf (Ab-
gerufen: 02. März 2006, 15:43)
[Atkin] Website: A. Atkin und D. Bernstein. Prime sieves using binary quadratic
forms. Illinois: Dept. of Mathematics, Statistics, and Computer Science,
University of Illinois at Chicago, 1999. URL: http://citeseer.
ist.psu.edu/atkin99prime.html (Abgerufen: 02. März 2006,
17:27)
[Caldwell 2] Website: Dr. Chris K. Caldwell. A proof that if 2
n
− 1 is prime,
then so is n. Martin: University of Tennessee at Martin. URL: http:
//primes.utm.edu/notes/proofs/Theorem2.html (Abge-
rufen: 04. März 2006, 18:03)
[Itanium2] Website: Intel Corporation: Intel prognostiziert klaren Leistungssprung
des Intel(R) Itanium(R) 2 Prozessors. URL: http://www.intel.
com/cd/corporate/pressroom/emea/deu/102184.htm
(Abgerufen: 05. März 2006, 20:10)
[BlueGene] Website: International Business Machines Corporation: IBM eServer
Blue Gene solution. URL: http://www-03.ibm.com/servers/
deepcomputing/bluegene.html (Abgerufen: 05. März 2006,
20:19)
[PrimeNet] Website: Entropia: Internet PrimeNet Server – Parallel Technology
for the Great Internet Mersenne Prime Search. URL: http://www.
mersenne.org/primenet/ (Abgerufen: 05. März 2006, 20:36)
[Euclid] Buch in Websiteform: David E. Joyce: Euclid’s Elements. Worces-
ter: Department of Mathematics and Computer Science, Clark Uni-
versity. URL: http://aleph0.clarku.edu/~djoyce/java/
elements/elements.html (Abgerufen: 05. März 2006, 22:21)
12
[PrimBeweise] Website: Wikipedia - Die freie Enzyklopädie: Primzahl (Beweise).
URL: http://de.wikipedia.org/w/index.php?title=
Primzahl_%28Beweise%29&oldid=11614201 (Abgerufen: 05.
März 2006, 22:15)
[Riesel] Buch: Hans Riesel: Prime numbers and computer methods for factoriza-
tion. Boston: Birkhäuser.
2
1994.
[WikiRSA] Website: Wikipedia - Die freie Enzyklopädie: RSA-Kryptosystem.
URL: http://de.wikipedia.org/w/index.php?title=
RSA-Kryptosystem&oldid=14407804 (Abgerufen: 09. März
2006, 20:11)
[Stankova] Website: Zvezdelina Stankova-Frenkel: RSA Encryption. Berkeley:
University of California, Berkeley. URL: http://mathcircle.
berkeley.edu/BMC3/rsa/node4.html(Abgerufen: 17. Februar
2006, 18:40)
[Wayne] Website: Robert Sedgewick and Kevin Wayne: 7.9. CRYPTOGRA-
PHY. New Jersey: Department of Computer Science, Princeton
University. URL: http://www.cs.princeton.edu/introcs/
79crypto/ (Abgerufen: 09. März 2006, 21:36)
13

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.