Skript als PDF

Werbung
Kryptographie
F. Fontein, A.-L. Trautmann, U. Wagner
24. November 2012
Inhaltsverzeichnis
1 Einführung in die Kryptographie
1
2 Caesar-Chiffre
2
3 Substitutions-Chiffre
4
4 Vigenere-Verschlüsselung
6
5 Verschlüsseln ohne Schlüsselaustausch?
7
6 Modulorechnung
8
7 Modulorechnung etwas allgemeiner
9
8 Die Sätze von Fermat und Euler
10
9 Das RSA-Verfahren
12
10 Der Euklidische Algorithmus
16
11 Schnelles Potenzieren
20
1
Einführung in die Kryptographie
Seitdem Menschen schreiben können, gibt es auch das Problem, dass Menschen
Nachrichten verschicken wollen, ohne dass jemand anderes als der Empfänger die
Nachricht lesen kann. Aber wie kann man sicher sein, dass z. B. der Postbote den
verschickten Brief nicht lesen kann? Eine Möglichkeit ist, sich eine Geheimsprache
auszudenken, die nur der Sender und der Empfänger kennen.
1
Die Wissenschaft, die sich damit befasst, nennt man Kryptographie. Dieses
Wort ist aus den griechischen Wörtern
krypto = geheim und graphie = Schreiben
zusammengesetzt; es geht also um die Kunst des geheimen Schreibens. Das Prinzip eines Kryptosystems ist folgendermassen: Der Schreiber nimmt seine Nachricht
(wir nennen das den Klartext“) und schreibt sie in einer Geheimsprache auf.
”
Das nennt man auch eine Nachricht verschlüsseln oder chiffrieren. Der Empfänger
erhält nun diesen Geheimtext und wendet einen Schlüssel an, um aus dem Geheimtext wieder den Klartext zu erhalten. Nehmen wir z. B. folgenden Schlüssel
zum Chiffrieren:
Klar
A
B
C
D
E
F
G
H
I
J
Geheim 1
2
3
4
5
6
7
8
9
10 11 12 13
Klar
O
P
Q
R
S
T
U
V
W X
N
K L
Y
M
Z
Geheim 14 15 16 17 18 19 20 21 22 23 24 25 26
Wenn also der Schreiber den Klartext Treffen um eins“ schicken will, schreibt er
”
20 18 5 6 6 5 14 — 21 13 — 5 9 14 19“. Ein —“ steht hierbei für ein Leerzeichen,
”
”
um die einzelnen Wörter abzutrennen. Der Empfänger hat den gleichen Schlüssel
und kann damit die Nachricht entschlüsseln.
Aufgabe 1.
Entschlüssle den Geheimtext 2 9 14 — 7 12 5 9 3 8 — 4 1“.
”
Nun ist dieses Kryptosystem ziemlich leicht für andere Leute zu durchschauen,
deshalb wollen wir uns nun mit etwas komplexeren Systemen beschäftigen.
2
Caesar-Chiffre
Schon Kaiser Caesar benutzte ein Kryptosystem um seine Nachrichten für den
Feind unleserlich zu machen. Es basierte auf einer Verschiebung des Alphabets
um eine gewisse Anzahl Stellen. Wird das Alphabet zum Beispiel um 5 Stellen
verschoben, werden die Buchstaben wie folgt ersetzt:
a b c de f g h i j k l mn o p q r s t u v w x y z
FGH I JKLMNOPQRSTUVWXYZABCDE
Die Kleinbuchstaben stehen dabei für den Klartext, die Grossbuchstaben für den
verschlüsselten Text. So verschlüsselt man zum Beispiel:
d i e s o nn e s c h e i n t
I NJ XTSSJ XHMJNSY
Dabei ist natürlich wichtig, dass der Empfänger weiss, um wieviel Stellen das
Alphabet verschoben wurde, damit er richtig entschlüsseln kann. Genauso wichtig
ist aber auch, dass alle anderen den Schlüssel nicht kennen, damit niemand sonst
den Klartext lesen kann.
2
Aufgabe 2.
Schreibe den Schlüssel für eine Caesar-Chiffre, die das Alphabet um
8 Stellen verschiebt, auf. Entschlüssle dann den Geheimtext ACXMZ
”
AIKPM“.
Eine spezielle Art der Caesar-Chiffre ist die Verschiebung um 13 Stellen (dies
wird auch Rot13“ genannt). Das Schöne an dieser speziellen Verschlüsselung ist,
”
dass wenn man den Text zweimal verschlüsselt, wieder der originale Text hervorkommt. Es ist klar, dass diese Verschlüsselung nicht sicher ist, trotzdem wird sie
manchmal benutzt, um zum Beispiel in Quizheften die Lösung zu verschlüsseln.
Der Leser kann die Lösung dann ohne grossen Aufwand anschauen, sobald er glaubt
das Quiz gelöst zu haben. Im Folgenden werden wir die Lösung zu einigen Aufgaben auch jeweils mit Rot13 verschlüsselt angeben. Damit du das nicht von Hand
machen musst, kannst du Rot13 auf
http://www.math.uzh.ch/aa/schule/
benutzen. Geh auf die Seite und spiele ein bisschen mit Rot13. Wie du siehst
werden Zeichen, die nicht im 26 Buchstaben langen Standardalphabet vorkommen,
ein zu eins verschlüsselt. Es ist klar, dass dieses System einfach um weitere Zeichen
erweitert werden könnte. In unserem Fall ist das aber nicht wichtig. Da in den
Lösungen auch Zahlen vorkommen können, verschlüsseln wir diese separat. Dazu
verschieben wir jede Ziffer um fünf:
Klar
0 1 2 3 4 5 6 7 8 9
Geheim 5 6 7 8 9 0 1 2 3 4
Wir nehmen hier die Verschiebung um fünf, damit auch bei den Zahlen zweimal
in die gleiche Richtung verschieben das Original ergibt.
Wir geben nun die Lösung zu obiger Aufgabe in Rot13:
Lösung 2.
Qn rf ahe 70 Zbrtyvpuxrvgra tvog qnf Nycunorg mh irefpuvrora, xnaa
rva Natervsre nyyr 70 Zbrtyvpuxrvgra cebovrera ovf rva fvaaibyyre Grkg
ragfgrug.
Aufgabe 3.
Überlege dir, wie man, selbst wenn man die Anzahl der Stellen, um
die verschoben wird, nicht kennt, trotzdem die Geheimnachricht entschlüsseln kann. Finde den Klartext zum Geheimtext RCCV DVZEV
”
VEKTYVE JTYNZDDVE RLW UVD JVV“.
Lösung 3.
Dre bree vzewrty rccv 71 Döxcztybvzkve ulitygifszvive.
3
Ein Kryptosystem zu knacken indem man alle Schlüssel durchprobiert, nennt
man eine brute-force“-Attacke. Wir wissen jetzt also, dass die Caesar-Chiffre nicht
”
sicher ist und wir noch bessere Verschlüsselungstechniken finden müssen, die gegen
eine brute-force-Attacke sicher sind.
3
Substitutions-Chiffre
Eine Verallgemeinerung der Caesar-Chiffre ist die Substitutions-Chiffre. Anstelle
das Alphabet einfach um eine feste Anzahl Stellen zu verschieben, wird jedem
Buchstaben ein anderer zugeordnet. Also zum Beispiel:
a b c d e f g h i j k l m n o p q r s t u v w x y z
XLM I AZWSJGBOVYCHTDQFNEURKP
Damit wird unser Beispielsatz wie folgt verschlüsselt:
di e s o n n e s c he i n t
I JA QCYYA QMSAJYF
Wiederum kannst du auf der Seite http://www.math.uzh.ch/aa/schule/ damit
rumspielen.
Aufgabe 4.
Wieviele verschiedene Schlüssel sind möglich wenn wir nur die 26 Buchstaben des Standardalphabets durch Substitution verschlüsseln?
Lösung 4.
Jve unora 71 Ohpufgnora. Jve trura qre Ervur anpu. Shre ’n’ unora jve 71
Zbrtyvpuxrvgra, shre ’o’ qnaa ahe abpu 70 hfj. Nyfb fvaq rf nz Fpuyhff
71!-6, qn wrqre Ohpufgnor zvg fvpu fryore mh refrgmra nhftrfpuybffra
jveq.
Wie du siehst, gibt es viele verschiedene Schlüssel. Wir wollen nun berechnen
ob die Anzahl Schlüssel ausreicht um gegen eine brute-force-Attacke resistent zu
sein. Dazu machen wir zuerst ein paar Überlegungen, zu was heutige Computer
fähig sind. Nehmen wir an, dass ein Computer einen 1-GHz-Pozessor hat. Das
bedeutet dass der Prozessor 1’000’000’000 = 109 Zyklen pro Sekunde durchläuft.
Nehmen wir weiter an, dass der Computer nur einen einzigen Zyklus braucht um
einen Schlüssel zu überprüfen.
Aufgabe 5.
Berechne, wieviele Schlüssel dieser Computer ungefähr in einem Jahr
probieren kann.
Aufgabe 6.
Berechne, wie lange der Computer ungefähr braucht um alle Schlüssel für
N
den Substitution Cipher durchzuprobieren. Benutze dabei dass N ! ≈ Ne
wobei e ≈ 2.7.
4
Damit haben wir also gezeigt, dass ein brute-force-Angriff auf die SubstitutionsChiffre unmöglich ist. Trotzdem kann man auch diese Chiffre leicht knacken, wie
wir jetzt sehen werden.
Aufgabe 7.
Nimm dir ein bisschen Zeit und überlege dir, wieso das sein könnte. Als
kleiner Tipp: Was wir schreiben ist nicht zufällig!
Wie du vielleicht herausgefunden hast, kommen in einem deutschen Text nicht
alle Buchstaben gleich häufig vor. Hier eine Tabelle mit der Häufigkeit der Buchstaben in einem durchschnittlichen deutschsprachigen Text:
Buchstabe Häufigkeit Buchstabe Häufigkeit
a
6,51%
n
9,78%
b
1,89%
o
2,51%
c
3,06%
p
0,29%
d
5,08%
q
0,02%
e
17,40%
r
7,00%
f
1,66%
s
7,27%
g
3,01%
t
6,15%
h
4,76%
u
4,35%
i
7,55%
v
0,67%
j
0,27%
w
1,89%
k
1,21%
x
0,03%
l
3,44%
y
0,04%
m
2,53%
z
1,13%
Aufgabe 8.
Geh auf http://www.math.uzh.ch/aa/schule/ und kopiere einen Text
(z. B. einen Text aus einer Online-Zeitung) in das entsprechende Feld.
Sind die Buchstabenhäufigkeiten so verteilt, wie in der obigen Tabelle
angegeben? Probiere verschiedene Texte aus.
Daraus kann man schliessen, dass der Buchstabe, der in einem Geheimtext am
häufigsten vorkommt, mit grosser Wahrscheinlichkeit den Klartextbuchstaben e“
”
darstellt usw. Ausserdem kann man noch folgende Tricks gebrauchen:
• Nach einem c“ kommt wahrscheinlich ein h“ oder ein k“.
”
”
”
• Nach sc“ kommt wahrscheinlich ein h“.
”
”
• Es gibt nur wenige Wörter, die zwei Buchstaben haben, z. B. in, im, an, am,
”
um“.
5
• Jedes Wort hat mindestens einen Vokal.
Schwieriger wird es dabei, wenn alle Leer- und Sonderzeichen aus dem Text entfernt wurden. Dann kann man z. B. die beiden letzten Punkte nicht mehr benutzen.
In folgender Aufgabe werden die Sonderzeichen ignoriert, die Leerzeichen zur Vereinfachung der Aufgabe aber beibehalten.
Aufgabe 9.
Probiere nun folgenden Text zu entschlüsseln:
CID JGKJGX CID LZGNIDRIZN ZBN ZG CID BHOLIZR
QWG BHOGIIKJFF MIXFIZNIN LWDCIG CZIBID OZIFN
JSK CID JFYIGGWDCBIZNI LJIODIGC CID XJGRIG GJHON
JSK OISNI MZB ZG CZI GZICIDSGXIG JG LZI PINIWGILB
OISNI PWDXIG PZNNIZFNI
Kopiere den Text dazu in das Feld http://www.math.uzh.ch/aa/schule/
und versuche, mit der Häufigkeitsanalyse und anderen Tricks den Klarext
zu finden.
Tipp: Das Wort Schnee“ kommt im Text vor.
”
Lösung 9.
QRE NASNAT QRE JVAGREMRVG VFG VA QRE FPUJRVM IBA
FPUARRSNYY ORTYRVGRG JBEQRA QVRFRE UVRYG NHS QRE
NYCRAABEQFRVGR JNRUERAQ QRE TNAMRA ANPUG NHS URHGR OVF VA QVR AVRQREHATRA NA JVR ZRGRBARJF URHGR
ZBETRA ZVGGRVYGR.
4
Vigenere-Verschlüsselung
Der Hauptgrund für die Schwäche der Substitution-Chiffre ist, dass derselbe Buchstabe im Klartext auch immer derselbe Buchstabe im verschlüsselten Text ist.
Es handelt sich um eine sogenannt ’mono-alphabetische Substitution’. Eine polyalphabetische Substitution umgeht dieses Problem.
Aufgabe 10.
Lies den entsprechenden Artikel auf Wikipedia durch:
http://de.wikipedia.org/wiki/Polyalphabetische_Substitution.
Aufgabe 11.
Dechiffriere die Geheimnachricht Fuabeey iol wss Hhhsnnss“ mit dem
”
Schlüssel Autobahn“ in der normalen Vigenere-Verschlüsselung.
”
Lösung 11.
Snuaqre ibe qre Unhfghre.
6
5
Verschlüsseln ohne Schlüsselaustausch?
Stell dir vor, du hast einen Brieffreund in Australien. Du möchtest ihm nun etwas
Geheimes schreiben, was niemand anders wissen soll – weder deine Eltern, die den
Brief zur Post bringen, noch der Postbote, noch die Eltern von deinem Brieffreund,
die den Brief entgegennehmen und deinem Brieffreund geben. Wir haben bereits
gesehen, wie man das machen kann wenn man vorher einen geheimen Schlüssel“
”
austauscht.
Aber was, wenn ihr das nicht einfach machen könnt? Da Australien nicht gerade um die Ecke liegt, hattet ihr vielleicht nie eine Gelegenheit, eurem Brieffreund
etwas zukommen zu lassen mit der Gewissheit, dass wirklich niemand zwischendurch – seien es Eltern oder Postboten – diese Information abfangen konnte.
Es gibt jedoch eine Möglichkeit, wie man trotzdem etwas geheimes austauschen
kann:
1. Du nimmst ein Schloss, zu welchem nur du einen Schlüssel hast. Du legst die
geheime Nachricht in eine Kiste und verschliesst diese mit deinem Schloss
so, dass niemand sie öffnen kann ohne sie zu zerstören.
2. Dann schickst du die Kiste per Post an deinen Brieffreund.
3. Dein Brieffreund kann die Kiste nicht öffnen – dein Schloss ist ja dran –,
aber er kann die Kiste nochmal abschliessen mit seinem eigenen Schloss, zu
dem nur er einen Schlüssel hat.
4. Die nun doppelt abgeschlossene Kiste schickt er per Post an dich zurück.
5. Du schliesst nun dein Schloss mit deinem Schlüssel auf. Sein Schloss ist immer
noch an der Kiste, womit diese weiterhin verschlossen ist.
6. Nun schickst du die Kiste per Post zurück an den Brieffreund.
7. Dieser öffnet nun sein Schloss mit seinem Schlüssel und kann die Kiste
schliesslich öffnen.
Aufgabe 12.
Überlege dir, warum dies funktioniert.
Aufgabe 13.
Überlege dir, wie der neugierige Postbote trotzdem den Inhalt der Kiste
sehen kann, ohne dass ihr etwas bemerkt.
Wir wollen später das RSA-Verfahren vorstellen. Es war das erste Verfahren,
welches eine Verschlüsselung ohne vorherigen Austausch eines geheimen Schlüssels
ermöglicht. Um das Verfahren zu beschreiben, benötigen wir jedoch etwas mehr
Mathematik. Wir werden im Folgenden Modulo-Rechnung beschreiben (Abschnitte 6 und 7) und anschliessend zwei Sätze aus der Zahlentheorie (Abschnitt 8). Damit können wir dann das RSA-Verfahren beschreiben und erklären (Abschnitt 9).
Um das RSA-Verfahren besser anwenden zu können, werden wir danach in zwei
weiteren Abschnitten (10 und 11) zwei weitere mathematische Tricks“ untersu”
chen.
7
6
Modulorechnung
Wenn es 15 Uhr ist und man drei Stunden wartet, so ist es 15 + 3 = 18 Uhr. Wenn
es jedoch 23 Uhr ist und man drei Stunden wartet, sagt man zur Uhrzeit nicht
23 + 3 = 26 Uhr, sondern 2 Uhr: man zieht 24 ab, um eine Stundenzahl zwischen
0 und 23 zu bekommen.
Wenn es wieder 15 Uhr ist und man wartet zehn mal 13 Stunden, wie spät ist
es dann? Dazu rechnet man 15 + 10 · 13 = 145; wieder ist 145 viel zu gross. Um
die Uhrzeit zu bestimmen, zieht man solange 24 von 145 ab, bis man eine Zahl
zwischen 0 und 23 erhält: 145−24 = 121, 121−24 = 97, 97−24 = 73, 73−24 = 49,
49 − 24 = 25, 25 − 24 = 1. Die gesuchte Uhrzeit ist also 1 Uhr morgens. Da wir
sechsmal 24 subtrahiert haben, sind also 6 Tage vergangen. Man kann dies auch
so ausdrücken:
145 = 6 · 24 + 1.
Aufgabe 14.
Wenn ich acht mal 15 Stunden warte und es vorher 13 Uhr ist, wie spät
ist es dann?
Wenn man mit Stunden rechnet, so kann man zu zwei Stundenzahlen x und y
testen ob sie die gleiche Uhrzeit beschreiben (eventuell an verschiedenen Tagen),
indem man schaut, ob ihre Differenz ein Vielfaches von 24 ist. Falls sie die gleiche
Uhrzeit beschreiben, so schreiben wir x ≡ y (mod 24).
Dieses Symbol ≡“ verhält sich nun ähnlich wie das Gleichheitszeichen. Wie
”
oben haben wir 26 ≡ 2 (mod 24). Wenn man nun elf mal 26 Stunden wartet,
sind das 286 Stunden. Wartet man dagegen elf mal zwei Stunden, so sind dies
22 Stunden. Nun gilt 286−22 = 264 = 24·11. Ob man also elf mal 2 Stunden wartet
oder elf mal 26 Stunden, die Uhrzeit zum Zielpunkt ist beide Male identisch, nur
das man bei elf mal 26 Stunden noch elf weitere Tage wartet. Formal ausgedrückt:
es ist 11 · 26 ≡ 11 · 2 (mod 24). Anstelle 11 hätten wir jede andere ganze Zahl
verwenden können.
Dies kann man allerdings auch noch weiter treiben. Etwa gilt 11 ≡ 35 (mod 24),
und wenn man 11 · 26 = 286 und 35 · 2 = 70 berechnet, so sieht man, dass deren
Differenz 286 − 70 = 216 = 9 · 24 ebenfalls durch 24 teilbar ist. Es gilt also auch
11 · 26 ≡ 35 · 2 (mod 24).
Aufgabe 15.
Versuche formal zu zeigen: gilt x ≡ y (mod 24) und a ≡ b (mod 24), so
gilt auch xa ≡ yb (mod 24).
Hinweis: schreibe yb − xa als Vielfaches von 24. Hierbei kannst du
verwenden, dass y −x und b−a Vielfache von 24 sind, etwa y −x = 24·C
und b − a = 24 · D mit ganzen Zahlen C und D.
Dies gilt allgemeiner und kann sehr praktisch sein: möchte man z. B. wissen, wie
spät es ist, wenn man 123 mal 49 Stunden wartet, und es jetzt gerade 15 Uhr ist, so
kann man wie folgt vorgehen. Es ist 123 − 5 · 24 = 123 − 120 = 3 und 49 = 2 · 24 + 1,
womit 123 ≡ 3 (mod 24) und 49 ≡ 1 (mod 24) ist. Nun wissen wir 123 · 49 ≡ 3 · 1
8
(mod 24), womit die Stundenzahl bei 123 × 49 Stunden sich um genau 3 Stunden
vorschiebt. Nach 123 mal 49 Stunden warten ist es also 15 + 3 = 18 Uhr.
Hätten wir direkter gerechnet, also zuerst 123 · 49 ausgerechnet und dann eine
Division mit Rest durch 24 gemacht, um die Anzahl der Tage und Stunden zu
bestimmen, hätten wir mit grösseren Zahlen rechnen müssen. Was ohne Taschenrechner etwas mühsam ist.
Aufgabe 16.
Wenn es jetzt 13 Uhr ist und wir 24005 mal 35 Stunden warten, wie spät
ist es dann?
7
Modulorechnung etwas allgemeiner
Wenn n eine positive natürliche Zahl ist, haben wir folgende Rechenregeln für
unser Symbol ≡ (mod n):
Seien a, b, c, d ganze Zahlen mit a ≡ b (mod n) und c ≡ d (mod n), so ist auch
1. a + c ≡ b + d (mod n) und
2. a · c ≡ b · d (mod n).
Weiterhin gilt ac ≡ bc (mod n). Allerdings gilt nicht unbedingt ac ≡ bd (mod n)!
Aufgabe 17.
Finde ein Gegenbeispiel: Sei n = 3. Dann gilt 1 ≡ 4 (mod 3). Suche nun
eine ganze Zahl a mit a1 6≡ a4 (mod 3).
Wir werden später noch eine wichtige Eigenschaft der Modulorechnung benötigen:
wenn wir zwei ganze Zahlen a, b haben mit 0 ≤ a, b < n und a ≡ b (mod n), dann
muss bereits a = b sein.
Aufgabe 18.
Begründe, warum dies so ist.
Abschliessend noch ein kleiner Hinweis: die Verfahren aus den ersten Abschnitten, nämlich der Caesar-Cipher und die Vigenere-Verschlüsselung, lassen sich am
einfachsten mit der Modulo-Rechnung darstellen:
• Bei der Caesar-Verschlüsselung interpretiert man die Buchstaben von A bis
Z als Zahlen 0 bis 25, und addiert beim Verschlüsseln zu jedem Buchstaben
einen Wert und rechnet modulo 26. Beim Entschlüsseln wird dieser Wert
abgezogen und wieder modulo 26 gerechnet.
• Bei der Vigenere-Verschlüsselung fasst man den Klartext sowie das Passwort
Zeichen für Zeichen als Zahl modulo 26 auf und addiert diese modulo 26
zusammen.
9
8
Die Sätze von Fermat und Euler
Der französische Mathematiker Pierre de Fermat1 hat folgendes herausgefunden:
Satz (von Fermat).
Ist p eine Primzahl und a eine ganze Zahl, so ist p immer ein Teiler von
ap − a.
Mit unserer Modulo-Schreibweise kann man dies als ap ≡ a (mod p) schreiben.
Aufgabe 19.
Begründe im Fall p = 2, warum dies so ist.
Dies hat eine interessante Konsequenz. Erinnert ihr euch noch, dass für ganze
Zahlen a, b, c, d mit a ≡ b (mod n) und c ≡ d (mod n) nicht umbedingt ac ≡ bd
(mod n) gilt?
Ist nun n = p eine Primzahl und gilt a ≡ b (mod p) und c ≡ d (mod p − 1),
so gilt ac ≡ bd (mod p)!
Aber was, wenn n keine Primzahl ist? Eine allgemeine Lösung dieses Problems
geht auf den schweizerischen Mathematiker Leonhard Euler2 zurück. Wir wollen
die Lösung hier nur in einem Spezialfall anschauen, und zwar wenn n das Produkt
zweier verschiedener Primzahlen ist, etwa n = 3 · 5 = 15. Dann gilt nämlich
a(3−1)·(5−1)+1 ≡ a (mod 3 · 5).
Weiterhin gilt: aus a ≡ b (mod 15) und c ≡ d (mod (3 − 1) · (5 − 1)), also c ≡ d
(mod 8), folgt ac ≡ bd (mod 15).
Es ist kein Zufall, dass wir a(3−1)·(5−1)+1 geschrieben haben bzw. c ≡ d (mod (3−
1) · (5 − 1)), und nicht direkt a8+1 , c ≡ d (mod 8) oder a9 . Die Zahl (3 − 1) · (5 − 1)
hat eine spezielle Bedeutung in Bezug auf 15 = 3 · 5:
Aufgabe 20.
Prüfe nach, dass es genau 8 = (3 − 1) · (5 − 1) ganze Zahlen x mit
0 ≤ x < 15 gibt, die zu 15 teilerfremd sind.
Um diesen Zusammenhang zu verstehen, muss man etwas in die Gruppentheorie
gehen. Wir wollen dies heute nicht weiter vertiefen.
1
Fermat lebte Anfang des 17. Jahrhunderts und war Mathematiker und Jurist. Er hat durch
Korrespondenz mit anderen Mathematikern diesen öfter Probleme vorgestellt, die er bereits
angeblich gelöst hätte und diese dazu angetrieben, die Probleme selber zu lösen. In einigen Fällen
kannte Fermat die Lösung selber nicht. Das beste Beispiel ist der sogenannte letzte/grosse Satz
”
von Fermat“: für n ≥ 3 hat die Gleichung xn + y n = z n keine ganzzahligen Lösungen mit
x · y · z 6= 0. Der erste korrekte Beweis wurde 1994 vom englischen Mathematiker Andrew
Wiles vorgestellt und ist extrem kompliziert. Fermat selber hatte die Behauptung an den Rand
in einem Buch gekritzelt mit der Bemerkung Ich habe hierfür einen wahrhaft wunderbaren
”
Beweis gefunden, doch ist der Rand hier zu schmal, um ihn zu fassen.“ Vermutlich hatte Fermat
entweder einen fehlerhaften Beweis oder höchstens einen Beweis für spezielle Werte von n. Der
hier vorgestellte Satz von Fermat ist auch als kleiner Satz von Fermat“ bekannt.
”
2
Euler lebte Anfang des 18. Jahrhunderts und gehörte neben Carl Friedrich Gauß zu den bedeutesten Mathematikern überhaupt. Der erste überlieferte Beweis des obigen Satzes von Fermat
stammt von Euler.
10
Für das Produkt zweier verschiedener Zahlen gilt der Satz von Euler:
Satz (von Euler).
Sind p und q zwei verschiedene Primzahlen, und ist a eine beliebige ganze
Zahl, so gilt
a1+(p−1)·(q−1) ≡ a (mod p · q).
Auch die Aussage aus der letzten Aufgabe kann man verallgemeinern:
Aufgabe 21.
Versuche dies allgemein zu zeigen: sind p und q zwei verschiedene Primzahlen, so gibt es genau (p − 1) · (q − 1) Zahlen x mit 0 ≤ x < p · q, die
teilerfremd zu p · q sind.
Hinweis: Du kannst folgendes verwenden: ist eine Zahl n durch zwei
andere Zahlen a und b teilbar, die beide teilerfremd zueinander sind, so
ist n auch durch das Produkt a · b teilbar. (Vergewissere dich, dass es
ohne die Teilerfremdheit nicht funktioniert.)
Hinweis: Zähle die Zahlen x mit 0 ≤ x < p·q, welche (a) durch p teilbar
sind, (b) durch q teilbar sind, und (c) durch p und q teilbar sind. Damit
kannst du die Anzahl der solchigen Zahlen bestimmen, die weder durch
p noch durch q teilbar sind.
Damit es zu einer Zahl N so ein n > 1 gibt mit an ≡ a (mod N ) für alle
ganzen Zahlen a benötigt man, dass N quadratfrei ist. Dies bedeutet, dass in der
Primfaktorzerlegung von N keine Primzahl mehr als einmal vorkommt. Die Zahlen
3, 6, 10, 15 sind etwa quadratfrei, während 4, 12 und 16 nicht quadratfrei sind: es
ist 4 = 22 , 12 = 22 · 3 und 16 = 24 . In jeder dieser Primfaktorzerlegungen kommt
der Faktor 2 mehr als einmal vor.
Man kann nun zeigen, dass es zu jedem quadratfreien N immer so ein n > 1
gibt, und zu jedem nicht quadratfreien N es nie so ein n > 1 gibt. Im einfachsen
Fall N = 4 könnt ihr selber versuchen zu zeigen, dass es kein solches n > 1 gibt:
Aufgabe 22.
Sei p = q = 2. Finde eine Zahl a, so dass an ≡ a (mod 4) für kein n > 1
gilt.
Wir wollen nun den Satz von Euler von oben für Produkte zweier verschiedener
Primzahlen etwas verallgemeinern. Seien p und q zwei verschiedene Primzahlen.
Der Satz von Euler besagt, dass dann für jede ganze Zahl a gilt
a1+(p−1)·(q−1) ≡ a (mod p · q).
Da
a1+(p−1)·(q−1) = a · a(p−1)·(q−1)
11
ist, bedeutet dies also, dass man a mit a(p−1)·(q−1) multiplizieren kann, ohne etwas
an dem Rest von a bei Division durch p · q zu ändern. Wir können es also auch
mehrmals multiplizieren: so gilt
a1+2·(p−1)·(q−1) = (a · a(p−1)·(q−1) ) · a(p−1)·(q−1)
≡ a · a(p−1)·(q−1) ≡ a (mod p · q)
und genauso
a ≡ a1+3·(p−1)·(q−1) ≡ a1+4·(p−1)·(q−1) ≡ · · · ≡ a1+k·(p−1)·(q−1)
(mod p · q)
für jede ganze Zahl k > 0.
Wir werden später (in Abschnitt 11) sehen, wie man hohe Potenzen von einer
Zahl modulo einer anderen schnell ausrechnen kann.
Nun haben wir das Rüstzeug um eines der bekanntesten modernen Kryptosystemen zu besprechen. Es handelt sich dabei um das RSA-Verfahren.
9
Das RSA-Verfahren
Ein sehr bedeutenes Verfahren aus der Kryptographie ist das RSA-Verfahren. Es
wurde 1977 von den drei Mathematikern Ronald L. Rivest, Adi Shamir und Leonard Adleman entdeckt und beschrieben.3 Es ist eins der Systeme, die wir unbewusst im täglichen Leben verwenden, wenn wir im Internet unterwegs sind.
Wir können nun erklären, wie das RSA-Verfahren funktioniert. Eine schematische Darstellung findet sich weiter unten in einem Kasten.
Dazu nimmt man sich zwei verschiedene Primzahlen, nennen wir sie p und q.
Mit N sei das Produkt p · q bezeichnet. Die Daten, die verschlüsselt werden, sowie
die verschlüsselten Daten sind jeweils ganze Zahlen x mit 0 ≤ x < N .
Neben N = p · q benötigen wir noch zwei weitere positive ganze Zahlen e und
d. Diese sollen
e · d ≡ 1 (mod (p − 1) · (q − 1))
erfüllen. Dies bedeutet, dass e · d − 1 ein Vielfaches von (p − 1) · (q − 1) ist; sei etwa
e · d − 1 = k · (p − 1) · (q − 1). Wenn ihr weiter oben beim Ende von Abschnitt 8
nachschaut seht ihr, dass dann a1+k·(p−1)·(q−1) ≡ a (mod N ) für alle ganzen Zahlen
a und alle ganzen positiven Zahlen k gilt. Daraus folgt
(ae )d = aed = a1+k·(p−1)·(q−1) ≡ a (mod N ).
Wir skizzieren das Verfahren anhand zweier Personen, genannt Alice und Bob.
Alice findet solche Primzahlen p und q sowie die dazugehörigen Zahlen e und
d. Sie berechnet N = p · q und veröffentlicht das Produkt N sowie die Zahl e. Die
Zahlen p, q und d behält sie für sich.
Als Beispiel nehmen wir p = 3 und q = 5; dann ist N = 15.
Wenn p und q grosse Zahlen sind ist N ebenfalls gross, und es ist sehr schwer,
die Primfaktorzerlegung (und damit p, q, oder auch (p − 1) · (q − 1)) zu bestimmen.
3
Erst später wurde bekannt, dass das Verfahren bereits 1973 dem britischen Geheimdienst
GCHQ bekannt war. Es wurde dort von Clifford Cocks entdeckt. Jedoch durfte er es nicht
veröffentlichen, und bis 1998 galt diese Entdeckung als top secret“. Erst dann wurde dies
”
Veröffentlicht.
12
Damit weiss niemand ausser Alice, wie p und q und (p − 1) · (q − 1) aussehen, und
welche Bedingung die geheime Zahl d, die Alice kennt, überhaupt erfüllen soll.
Um das Beispiel fortzuführen, können wir e = d = 3 nehmen. Dann ist e · d =
9 ≡ 1 (mod (3 − 2) · (5 − 1)), da (3 − 2) · (5 − 1) = 8 ist.
Aufgabe 23.
Überlege dir, warum man p und q einfach direkt bestimmen kann, wenn
man das Produkt N = p · q sowie das Produkt P := (p − 1) · (q − 1)
kennt.
Hier bedeutet einfach“, dass man dies mit einem Taschenrechner ma”
chen kann, ohne eine Zahl in Primfaktoren zu zerlegen.
Wenn Bob Alice nun eine Nachricht schicken möchte, stellt er die Nachricht
zuerst als ganze Zahl x mit 0 ≤ x < N dar. Da er N kennt (die Zahlen N und e
können in einem öffentlichen Verzeichnis stehen, ähnlich den weissen Seiten), kann
er dies problemlos machen. Dann berechnet er xe (mod N ). Dies ist wieder eine
Zahl, nennen wir sie y, mit 0 ≤ y < N . Diese Zahl schreibt er nun z. B. auf eine
Postkarte und schickt diese an Alice.
Hat Bob etwa x = 7 gewählt, so ist xe = 73 = 7 · 7 · 7 = 49 · 7 ≡ 4 · 7 = 28 ≡ 13
(mod 15). Damit verschickt Bob die Nachricht y = 13 per Postkarte.
Aufgabe 24.
Wenn x = 3 ist, was ist dann y?
Alice nimmt diese Zahl y und berechnet y d (mod N ). Diese Zahl, nennen wir
sie m, erfüllt wieder 0 ≤ m < N . Weiterhin ist
m ≡ y d ≡ (xe )d ≡ x (mod N ),
wobei (xe )d ≡ x (mod N ) wie oben gilt – dort stand a anstelle x. Damit gilt m ≡ x
(mod N ). Da m und x beide Zahlen zwischen 0 und N sind, und bei Division durch
N den gleichen Rest lassen, müssen sie aber gleich sein (vergleiche Aufgabe 18):
es ist also m = x und somit kennt Alice den Wert x von Bob!
In unserem Beispiel ist
m ≡ y d = 133 = 13 · 13 · 13 = 169 · 13 ≡ 4 · 13 = 52 ≡ 7
(mod 15),
womit m = 7 = x ist.
Aufgabe 25.
Sei y der Wert aus der letzten Aufgabe (mit x = 3). Zeige, dass m = 3
ist.
Das RSA-Verfahren
Schlüsselerzeugung:
13
1. Alice wählt zwei verschiedene grosse Primzahlen p und q.
2. Alice wählt eine zufällige ganze Zahl e mit 0 < e < (p − 1) · (q − 1),
die teilerfremd zu (p − 1) · (q − 1) ist.
3. Alice findet eine ganze Zahl d mit 0 < d < (p − 1) · (q − 1), welche
d · e ≡ 1 (mod (p − 1) · (q − 1)) erfüllt.
4. Alice veröffentlicht das Paar (N, e) mit N = p · q, und behält die
Zahlen p, q und d für sich.
Verschlüsseln:
1. Bob will eine ganze Zahl x mit 0 ≤ x < N verschlüsseln.
2. Er berechnet xe modulo N .
3. Das Ergebnis, eine Zahl y mit 0 ≤ y < N , schickt er an Alice.
Entschlüsseln:
1. Alice nimmt die Zahl y von Bob.
2. Alice berechnet y d modulo N .
3. Das Ergebnis, eine Zahl m mit 0 ≤ x < N , ist dann gleich der Zahl
x von Bob.
Wenn irgendwer – etwa der Postbote – die Zahl y von der Postkarte abliest,
so kennt er zwar N , e und y, aber nicht d und kann somit nicht m (und damit x)
berechnen. Er kann die Nachricht von Bob also nicht lesen. Alice ist die einzige,
die dies kann.
In unseren Beispiel kann jeder schnell 15 in Primfaktoren zerlegen: da 15 = 3 · 5
ist, ist (3 − 1) · (5 − 1) = 8 und somit kann man zu e = 3 schnell d = 3 finden
mit e · d ≡ 1 (mod 8). Wenn man jedoch grössere Zahlen verwendet, ist dies nicht
mehr so einfach möglich.
In der Praxis verwendet man für p und q Primzahlen mit 2512 < p, q < 2513 ,
womit 21024 < N < 21025 gilt. Die Zahl 21024 ist ausgeschrieben 309 Dezimalstellen
lang:
179’769’313’486’231’590’772’930’519’078’902’473’361’797’697’894’230’657’
273’430’081’157’732’675’805’500’963’132’708’477’322’407’536’021’120’113’
879’871’393’357’658’789’768’814’416’622’492’847’430’639’474’124’377’767’
893’424’865’485’276’302’219’601’246’094’119’453’082’952’085’005’768’838’
150’682’342’462’881’473’913’110’540’827’237’163’350’510’684’586’298’239’
947’245’938’479’716’304’835’356’329’624’224’137’216.
(Dies ist eine Zahl, die wir auf sechs Zeilen aufteilen mussten, um sie nicht unlesbar klein zu schreiben.) Mit solch grossen Zahlen hat man als Mensch ziemliche
Mühe, und auch mit den meisten Taschenrechnern kommt man nicht sehr weit,
da Taschenrechner meist nur mit einer festen und vergleichsweise kleinen Anzahl
Dezimalziffern arbeiten können. Computer jedoch können mit solchen Zahlen recht
mühelos umgehen, sprich sie multiplizieren, addieren, subtrahieren und mit Rest
dividieren. Wir werden in Abschnitt 11 ein Verfahren kennenlernen, mit dem ein
14
Computer damit auch schnell hohe Potenzen einer Zahl modulo einer anderen
ausrechnen kann.
Um das Verfahren nun in der Praxis umzusetzen, fehlen nur noch zwei Schritte:
• Wie findet man grosse Primzahlen p und q?
• Wenn man p und q hat, wie findet man dann entsprechende e und d?
Das finden von so grossen Primzahlen ist recht einfach: man nimmt einfach eine
passend grosse ungerade Zahl und schaut, ob sie eine Primzahl ist. Wenn nicht,
addiert man zwei hinzu und schaut nochmal nach. Man wiederholt dies so lange,
bis man eine Primzahl gefunden hat.
Dies hört sich recht umständlich an. Jedoch ist es so, dass man meist nicht
lange probieren muss. Ein wichtiges Resultat aus der Zahlentheorie ist, dass es
zwischen 1 und n ungefähr logn n viele Primzahlen gibt (dies besagt der sogenannte
Primzahlsatz). Dies bedeutet, dass man von einer Zahl n im Durchschnitt nur log n
Zahlen der Reihe nach durchprobieren muss, um eine Primzahl zu finden. Da der
Logarithmus einer grossen Zahl recht klein ist, muss man meist nicht oft probieren:
es ist zum Beispiel
log 2512 = 512 · log 2 ≈ 355,
womit man nur ein paar hundert Zahlen probieren muss. Das ist von Hand sehr
mühsam (wie überhaupt das Behandeln von so grossen Zahlen), jedoch für einen
Computer kein grosses Problem.
Dann muss man natürlich auch noch wissen, wie man bei einer solchen grossen
Zahl schnell überprüfen kann, ob es sich wirklich um eine Primzahl handelt. Wir
wollen das hier nicht vertiefen sondern nur erwähnen, dass dies tatsächlich sehr
schnell geht. Testen, ob eine Zahl eine Primzahl ist, ist viel einfacher als eine
Zahl in seine Primfaktoren zu zerlegen! Auch wenn es bei kleinen Zahlen ähnlich
schwer (oder leicht, bei sehr kleinen Zahlen) erscheint, so ist es bei grossen Zahlen
tatsächlich viel leichter.
Aufgabe 26.
Wieviele Primzahlen gibt es in etwa zwischen 1000 und 2000?
Hinweis: log 1000 ≈ 6.9 und log 2000 ≈ 7.6
Nun angenommen wir haben p und q und somit N = p·q bestimmt. Wie finden
wir nun e und d?
Hierfür wählen wir eine der Zahlen zufällig – etwa e – und bestimmen ein
passendes d. Man kann zeigen, dass es ein solches d genau dann gibt, wenn e und
(p − 1) · (q − 1) teilerfremd sind. Dies testen und d berechnen, falls sie teilerfremd
sind, kann man mit dem Euklidischen Algorithmus sehr effizient. Wir werden dies
in Abschnitt 10 genauer untersuchen. Bei kleinen Zahlenbeispielen wie N = 3 · 5 =
15 und somit (p − 1) · (q − 1) = 8 kann man einfach alle Zahlen d = 0, 1, 2, . . . , 7
durchprobieren.
Aufgabe 27.
Versuche zu p = 7 und q = 13 ein passendes Paar (e, d) zu finden.
15
10
Der Euklidische Algorithmus
Hat man zwei ganze Zahlen, zum Beispiel 18 und 60, so kann man den grössten
gemeinsamen Teiler (ggT) von 18 und 60 etwa durch die Primfaktorzerlegung
bestimmen:
18 = 21 · 32 · 50 , 60 = 22 · 31 · 51
und damit ist der grösste gemeinsame Teiler gleich 21 ·31 ·50 : der Exponent von 2 ist
das Minimum aus 1 und 2, der Exponent von 3 ist das Minimum aus 2 und 1, und
der Exponent von 5 ist das Minimum aus 0 und 1. Damit ist ggT(12, 18) = 2·3 = 6.
Aber was jetzt, wenn wir den grössten gemeinsamen Teiler
ggT(123456789, 543212345)
bestimmen wollen? Wir können natürlich versuchen, zuerst eine Primfaktorzerlegung zu bestimmen. Man kann noch recht einfach
123456789 = 3 · 41152263 = 32 · 13717421
bestimmen, aber wie kann man 13717421 weiter zerlegen? Und es ist
543212345 = 5 · 108642469 = 5 · 13 · 8357113,
aber weiter kommt man auch nicht so einfach.
Nun hat der Mathematiker Euklid vor langer Zeit herausgefunden, wie man
ganz einfach den grössten gemeinsamen Teiler von zwei solch grossen Zahlen bestimmen kann, ohne ihre Primfaktorzerlegung zu kennen. Ihm ist nämlich aufgefallen, dass ggT(a, b) = ggT(a − b, b) = ggT(a, b − a) ist. Wenn man immer die grössere Zahl von der kleineren abzieht, werden die Zahlen irgendwann
so klein, dass man den grössten gemeinsamen Teiler ablesen kann. Damit ist
ggT(a, b) = ggT(a, b − a) = ggT(a, b − 2 · a) = · · · = ggT(a, b − c · a) für jede
natürliche Zahl c. Jetzt kann man wieder mit Divison mit Rest arbeiten: damit
b − c · a möglichst klein werden soll, sollte b − c · a der Rest von b bei Division durch
16
a sein.
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
ggT(123456789, 543212345)
ggT(123456789, 543212345 − 4 · 123456789) = ggT(123456789, 49385189)
ggT(123456789 − 2 · 49385189, 49385189) = ggT(24686411, 49385189)
ggT(24686411, 49385189 − 2 · 24686411) = ggT(24686411, 12367)
ggT(24686411 − 1996 · 12367, 12367) = ggT(1879, 12367)
ggT(1879, 12367 − 6 · 1879) = ggT(1879, 1093)
ggT(1879 − 1 · 1093, 1093) = ggT(786, 1093)
ggT(786, 1093 − 1 · 786) = ggT(786, 307)
ggT(786 − 2 · 307, 307) = ggT(172, 307)
ggT(172, 307 − 1 · 172) = ggT(172, 135)
ggT(172 − 1 · 135, 135) = ggT(37, 135)
ggT(37, 135 − 3 · 37) = ggT(37, 24)
ggT(37 − 1 · 24, 24) = ggT(13, 24)
ggT(13, 24 − 1 · 13) = ggT(13, 11)
ggT(13 − 1 · 11, 11) = ggT(2, 11)
ggT(2, 11 − 5 · 2) = ggT(2, 1)
ggT(2 − 2 · 1, 1) = ggT(0, 1).
Nun ist der grösste gemeinsame Teiler von 0 und 1 gleich 1, womit
ggT(123456789, 543212345) = 1
ist. Wir kennen zwar immer noch nicht die Primfaktorzerlegung der beiden Zahlen,
aber wir wissen, dass sie teilerfremd sind, also dass von keiner Zahl > 1 beide
Zahlen geteilt werden.
Um den Schreibaufwand etwas zu reduzieren, schreibt man meist nur die Divi-
17
sionen mit Rest auf:
Dividend Quotient
↓
↓
543212345 = 4
123456789 = 2
49385189 = 2
24686411 = 1996
12367 = 6
1879 = 1
1093 = 1
786 = 2
307 = 1
172 = 1
135 = 3
37 = 1
24 = 1
13 = 1
11 = 5
2=2
Divisor
↓
· 123456789
· 49385189
· 24686411
· 12367
· 1879
· 1093
· 786
· 307
· 172
· 135
· 37
· 24
· 13
· 11
·2
·1
Rest
↓
+ 49385189
+ 24686411
+ 12367
+ 1879
+ 1093
+ 786
+ 307
+ 172
+ 135
+ 37
+ 24
+ 13
+ 11
+2
+ 1 ← ggT
+ 0 ← Null
In diesem Schema kann man gut erkennen, wie sich die Zahlen verschieben: aus
Divisor wird Dividend und aus Rest Divisor. Der letzte Rest, der nicht 0 ist, ist
der grösste gemeinsame Teiler des ersten Dividenden und Divisors. Die Quotienten
die zwischendurch auftreten werden hier nicht gebraucht.
Aufgabe 28.
Bestimme ggT(123, 321) mit dieser Methode.
Man kann allerdings die Quotienten aus dem euklidischen Algorithmus verwenden, um eine interessante Gleichung aufzustellen. Die vorletzten Gleichung,
die letzte Division mit echtem Rest, hier 11 = 5 · 2 + 1, können wir nach dem
grössten gemeinsamen Teiler, hier 1, umstellen:
1 = 11 − 5 · 2.
In diese Gleichung können wir nun die vorvorletzte Gleichung, umgestellt nach 2,
einsetzen:
1 = 11 − 5 · (13 − 1 · 11).
Dies kann man zu
1 = 11 − 5 · 13 + 5 · 1 · 11 = 6 · 11 + (−1) · 13
vereinfachen. Hier kann man nun 24 = 1 · 13 + 11 aufgelöst nach 11 einsetzen, und
schon hat man 1 in der Form x · 24 + y · 13 mit ganzen Zahlen x und y geschrieben.
18
Hiermit kann man immer weiter fortfahren, bis man schliesslich
ggT(543212345, 123456789) = 1 = x̂ · 543212345 + ŷ · 123456789
herausbekommt. Eine solche Gleichung nennt man Bézout-Gleichung von 543212345
und 123456789.
Mit dem euklidischen Algorithmus kann man also nicht nur den grössten gemeinsamen Teiler zweier ganzer Zahlen bestimmen, sondern ebenfalls eine BézoutGleichung.
Aufgabe 29.
Finde eine Bézout-Gleichung für ggT(123, 321).
Nun zurück zum RSA-Verfahren. Dort haben wir für gegebenes (p − 1) · (q − 1)
zwei ganze Zahlen d und e gesucht mit d · e ≡ 1 (mod (p − 1) · (q − 1)). Dies
bedeutet gerade, dass es eine ganze Zahl c gibt mit
d · e + c · (p − 1) · (q − 1) = 1.
Dies sieht nach einer Bézout-Gleichung für e und (p − 1) · (q − 1) aus.
Aufgabe 30.
Angenommen, es gibt ein solches c. Zeige dann, dass e und (p−1)·(q −1)
teilerfremd sind, und genauso dass d und (p − 1) · (q − 1) teilerfremd sind.
Wenn man nun irgendeine ganze Zahl e wählt, die teilerfremd zu (p − 1) · (q − 1)
ist, so kann man d wie folgt bestimmen. Mit dem euklidischen Algorithmus können
wir Zahlen b und c finden mit
1 = ggT(e, (p − 1) · (q − 1)) = b · e + c · (p − 1) · (q − 1).
Dies bedeutet aber wiederum
1≡b·e
(mod (p − 1) · (q − 1)).
Wir können nun d als die kleinste positive Zahl mit d ≡ b (mod (p − 1) · (q − 1))
wählen; in dem Fall gilt dann
d·e≡b·e≡1
(mod (p − 1) · (q − 1)).
In dem Beispiel aus dem letzten Abschnitt haben wir (p − 1) · (q − 1) = 8 und
e = 3, also berechnen wir ggT(3, 8). Es ist
8 = 2 · 3 + 2,
3 = 1 · 2 + 1,
2 = 2 · 1 + 0.
Damit ist
ggT(3, 8) = 1 = 3 − 1 · 2 = 3 − 1 · (8 − 2 · 3) = 3 · 3 − 1 · 8
und somit
3·3≡1
(mod 8).
19
Aufgabe 31.
Versuche zu p = 13, q = 17 und e = 31 ein passendes d zu finden.
11
Schnelles Potenzieren
Möchte man 213 ausrechnen, so muss man 2·2·2·2·2·2·2·2·2·2·2·2·2 ausrechnen.
Hat man nun einen Taschenrechner zur Verfügung, der zwar Multiplizieren kann,
aber nicht exponentieren, so muss man zehn mal multiplizieren.
Jedoch kann man 213 auch schneller ausrechnen. Es ist nämlich 213 = 212+1 =
212 · 2 = 26·2 · 2 = (26 )2 · 2 = (23·2 )2 · 2 = ((23 )2 )2 · 2 = ((2 · 2 · 2)2 )2 · 2. Man kann
dies mit fünf Multiplikationen ausrechnen:
2 · 2 = 4 = 22 ;
4 · 2 = 8 = 23 ;
82 = 8 · 8 = 64 = (23 )2 = 26 ;
642 = 64 · 64 = 4096 = (26 )2 = 212 ;
4096 · 2 = 8192 = 212 · 2 = 213 .
Der Grund ist hier, dass
13 = 1 + 12 = 1 + 2 · 2 · 3 = 1 + 2 · 2 · (1 + 1 + 1)
ist. Aus dieser Darstellung kann man sofort ablesen, dass man fünf Multiplikationen benötigt: jede Addition und Verdoppelung (Multiplikation mit 2) im Exponenten entspricht einer Multiplikation.
Ähnlich kann man vorgehen, wenn man 12344321 ausrechnen möchte. Da
4321 = 1 + 4320
= 1 + 2 · 2 · 2 · 2 · 2 · 135
= 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · 67)
= 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · 33))
= 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · (1 + 2 · 2 · 2 · 2 · 2)))
= 1 + 2 · 2 · 2 · 2 · 2 · (1 + 2 · (1 + 2 · (1 + 2 · 2 · 2 · 2 · (1 + 1))))
ist, benötigt man 16 Multiplikationen, um dies auszurechnen. Das ist sehr wenig
im Vergleich zu den 4320 Multiplikationen, die man mit der naiven“ Methode
”
benötigt. Aus der Darstellung kann man auch direkt ablesen, wie man multiplizieren und quadrieren muss:
12344321
= (((((((((((1234 · 1234)2 )2 )2 )2 · 1234)2 · 1234)2 · 1234)2 )2 )2 )2 )2 · 1234
Nun ist die Zahl 12344321 jedoch sehr gross: genauer gesagt hat sie 13358 Dezimalstellen! Wenn ihr 100 Ziffern in einer Zeile schreibt, braucht ihr 134 Zeilen, um
das Ergebnis vollständig aufschreiben zu können. Und die meisten Taschenrechner helfen hier auch nicht weiter, da sie nur mit ein paar Dezimalstellen arbeiten
können.
20
Was ist, wenn wir nur an den letzten vier Dezimalstellen interessiert sind? Das
bedeutet gerade, das wir 12344321 modulo 10000 wissen wollen. Dies können wir
recht schnell mit einem normalen Taschenrechner bestimmen.
Hierfür beachten wir die Rechenregeln für die Modulorechnung: sie besagen,
dass man jede in der Rechnung auftretende Zahl um beliebige Vielfache von 10000
ändern kann, ohne die letzten vier Dezimalstellen des Ergebnisses zu ändern.
Wenn wir nun 1234 · 1234 schriftlich von Hand ausrechnen, so haben wir
1234 · 1000 + 1234 · 200 + 1234 · 30 + 1234 · 4
= 1234000 + 246800 + 37020 + 4936.
Da wir nur an den letzten vier Dezimalstellen interessiert sind, können wir
1234000 + 246800 + 37020 + 4936
≡ 4000 + 6800 + 7020 + 4936 (mod 10000)
verwenden: das Ergebnis ist 10800 + 11956 = 22756. Da wir wieder nur die letzten
vier Dezimalstellen brauchen, bekommen wir
1234 · 1234 ≡ 2756
(mod 10000).
(Das vollständige Ergebnis wäre 1522756.)
Nun ist 2756 · 2756 ≡ 5536 (mod 10000), wie man mit dem Taschenrechner
schnell herausfinden kann. Damit gilt (1234 · 1234)2 ≡ 5536 (mod 10000). Wir
müssen noch drei mal quadrieren: 55362 ≡ 7296 (mod 10000), 72962 ≡ 1616
(mod 10000), 16162 ≡ 1456 (mod 10000). Damit haben wir
((((1234 · 1234)2 )2 )2 )2 ≡ 1456
(mod 10000).
Hätten wir dieses Zwischenergebnis exakt ausgerechnet, also nicht modulo 10000,
hätten wir
835’766’790’521’608’489’470’804’150’221’650’637’655’651’650’245’824’
748’876’026’021’952’966’731’428’198’479’058’415’057’639’571’456
herausbekommen. (Da die Zahl zu lang für eine Zeile war, haben wir sie in der
Mitte getrennt.) Wie man sehen kann, haben wir die letzten vier Dezimalstellen
korrekt bestimmt, ohne mit solch riesigen Zahlen zu arbeiten!
Bei den folgenden Aufgaben solltet ihr einen Taschenrechner verwenden:
Aufgabe 32.
Führe die Rechnung fort und bestimme die letzten vier Dezimalstellen
von 12344321 .
Aufgabe 33.
Es sei der öffentliche RSA-Schlüssel N = 713 und e = 35 gegeben.
Verschlüssle die Nachricht x = 42.
21
Herunterladen