Elementare Zahlentheorie und einfache Verschlüsselungs

Werbung
Elementare
Zahlentheorie
und
einfache
Verschlüsselungsverfahren
Dieter Küntzel, 2013
Inhaltsverzeichnis
1. Einleitung ................................................................................................................ 3
2. Die Cäsar Chiffre .................................................................................................... 4
2.1 Beschreibung der Cäsar Chiffre ........................................................................ 4
2.2 Ein Beispiel ...................................................................................................... 5
3. Elemente der Zahlentheorie ................................................................................... 7
3.1 Teilbarkeit ......................................................................................................... 8
3.2 Der größter gemeinsamer Teiler (ggT) ........................................................... 10
3.3 Der Euklidische Algorithmus ........................................................................... 14
3.4 Kongruenzen ................................................................................................... 19
3.5 Restklassen .................................................................................................... 22
4. Die Cäsar Chiffre, mathematischen Modellierung ................................................ 33
4.1 Das Prinzip der Cäsar Chiffre......................................................................... 33
4.2 Schritte der Cäsar Chiffre ............................................................................... 33
4.2.1 Die Schlüsselerzeugung ........................................................................... 33
4.2.2 Die Verschlüsselung / Entschlüsselung .................................................... 34
4.3 Ein Beispiel ..................................................................................................... 34
4.4 Angriff auf die Cäsar Chiffre ........................................................................... 35
5. Das RSA Verfahren .............................................................................................. 38
5.1 Das Prinzip des öffentlichen Schlüssels.......................................................... 38
5.2 Schritte des RSA Verfahrens .......................................................................... 39
5.2.1 Die Schlüsselerzeugung ........................................................................... 39
5.2.2 Die Verschlüsselung ................................................................................. 39
5.2.3 Die Entschlüsselung ................................................................................. 40
5.3 Die Sicherheit von RSA................................................................................... 40
5.3.1 Ansätze für Angriffe .................................................................................. 40
5.3.2 Wahl von p, q, e, d.................................................................................... 41
6. Beispiele ............................................................................................................... 43
7. Zusammenfassung ............................................................................................... 46
8. Literaturverzeichnis............................................................................................... 47
2
1. Einleitung
Diese Arbeit beschäftigt sich mit Verfahren zur Sicherung von Nachrichten gegen
einen unbefugten Zugriff sowie den dazugehörigen mathematischen Grundlagen aus
der Zahlentheorie. Bereits vor 2600 Jahren wurden Nachrichten verschlüsselt um zu
verhindern, dass Feinde eine nicht für sie bestimmte Nachricht lesen konnten. So
verwandte Cäsar eine Verschlüsselungsmethode zur Übermittlung von Befehlen in
Schlachten. An diesem Verfahren werden wir unten einige Prinzipien der
Verschlüsselungstechnik kennen lernen.
Seit dem Mittelalter wurden die Verschlüsselungsverfahren stetig weiterentwickelt.
Diese Entwicklung erfuhr einen kräftigen Aufschwung im 1. und 2. Weltkrieg.
Einen riesigen Anschub der Entwicklung neuer Verschlüsselungsverfahren kam
durch die breite Nutzung des Internets. Die Notwendigkeit ist klar, da das Internet per
Definition öffentlich ist. Also muss man Verfahren entwickeln um Kommunikation
 zwischen Personen z.B. per e-mail,
 Personen und Unternehmen, z.B. Online Banking und
 Unternehmen untereinander z.B. Austausch von Angeboten,
abzusichern.
Aus dieser Kategorie wird das nach seinen Entwicklern Ronald Rivest, Adi Shamir
und Leonard Adleman benannte RSA-Verfahren erläutert, das sich prinzipiell von der
Cäsar Chiffre unterscheidet.
Zu Beginn wollen wir einige Begriffe klären.
Kryptologie ist der Oberbegriff von Kryptografie und Kryptoanalyse.
Kryptografie ist die Wissenschaft über die Sicherung von Nachrichten gegen
unbefugten/nicht legitimierten Zugriff1. Der Sicherungsmechanismus muss folgende
Punkte erfüllen:
1. Vertraulichkeit gewährleisten: Unbefugte sollten die Nachricht nicht lesen
können,
2. Integrität: erkennen der von Angreifern vorgenommenen Veränderungen,
3. Authentizität des Absenders: Empfänger merkt, wenn sich ein Unbefugter als
berechtigter Teilnehmer ausgibt,
4. Unterschrift,
5. Autorisierung: nur Befugte erhalten Zugang.
Kryptoanalyse ist die Wissenschaft die Methoden und Techniken entwickelt um
Informationen aus dem verschlüsselten Texten zu ermitteln.
Ein bewusster unbefugter Zugriff auf Daten wird Angriff genannt.
1
Anmerkung: Kryptografie ≠ Codierungstheorie: in der Codierungstheorie werden Methoden entwickelt und beschrieben um Daten gegen zufällig auftretende Fehler bei ihrer Übertragung zu
schützen.
3
Im Folgenden wird ein klassisches kryptografisches und zugehöriges
kryptoanalytisches Verfahren vorgestellt, an dem einfache Prinzipien dargestellt
werden. Dies führt auf mathematische Methoden, die auch wesentliche Bausteine für
die RSA Verschlüsselung sind.
2. Die Cäsar Chiffre
Dieses Verfahren zählt zu den ältesten Verschlüsselungsverfahren und wurde wohl
auch von Julius Cäsar (100 v. Chr. bis 44 v. Chr.) bei der Übermittlung von geheim
zuhaltenden Nachrichten und Befehlen verwendet.
Die Cäsar Chiffre ist eine Verschiebechiffre. Grob gesprochen werden dabei zur
Verschlüsselung die Buchstaben gegenüber der alphabetischen Reihenfolge
verschoben ohne die Reihenfolge selbst zu verändern. Buchstaben die am Ende
„herausfallen“, werden „vorne“ wieder eingefügt. Die Buchstaben werden also
zyklisch vertauscht.
2.1 Beschreibung der Cäsar Chiffre
Die Beschreibung des Verfahrens erfolgt am einfachsten anhand eines Beispiels:
Gegeben sei der Schlüssel: H , d.h. die Verschlüsselung erfolgt wie folgt:
Grafisch kann man die vollständige Verschlüsselungstabelle wie folgt darstellen:
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
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
H
I
J K L M N O
P Q R S T U V W X Y Z A B C D E F G
Abbildung 1: „Verschlüsselungsrad“ für den Schlüssel H
4
In der klassischen Kryptografie ist es üblich nur große Buchstaben und keine
Sonderzeichen (, . - # § * und so weiter), Umlaute (Ö, Ä , Ü), Sonderbuchstaben
(ß, €, …) und auch nicht das Leerzeichen zu verwenden.
2.2 Ein Beispiel
Führen wir die Verschlüsselung eines klassischen Textes durch. Der 1. Satz des 1.
Buches aus „Der Gallische Krieg“ von Gaius Julius Caesar lautet:
Das Gesamtgebiet Galliens zerfällt in drei Teile: in dem einen leben die Belger, in
einem zweiten die Aquitaner und im dritten die Völker, die in der Landessprache
Kelten heißen, bei uns jedoch Gallier.
Nach den oben angegebenen Vorgaben ist also folgende Buchstabenfolge zu
verschlüsseln:
dasgesam tgebietg alliensz erfaellt indreite ileindem einenleb endiebel gerinein
emzweite ndieaqui tanerund imdritte ndievoel kerdiein derlande ssprache keltenhe
issenbei unsjedoc hgallier
Dabei wurde die Folge in 8er Blöcke zerlegt um eine bessere Übersichtlichkeit zu
erhalten.
Der Schlüssel ist „H“ und damit ergibt sich mit Hilfe des Verschlüsselungsrad in
Abbildung 1:
d a s g e s a m
K H Z N L Z H T
t g e b i e t g
A N L I P L A N
a l l i e n s z
H S S P L U Z G
e r f a e l l t
L Y M H L S S A
i n d r e i t e
P U K Y L P A L
i l e i n d e m
P S L P U K L T
e i n e n l e b
L P U L U S L I
e n d i e b e l
L U K P L I L S
g e r i n e i n
N L Y P U L P U
e m z w e i t e
L T G D L P A L
n d i e a q u i
U K P L H X B P
t a n e r u n d
A H U L Y B U K
i m d r i t t e
P T K Y P A A L
n d i e v o e l
U K P L C V L S
k e r d i e i n
R L Y K P L P U
d e r l a n d e
K L Y S H U K L
s s p r a c h e
Z Z W Y H J O L
k e l t e n h e
R L S A L U O L
i s s e n b e i
P Z Z L U I L P
u n s j e d o c
B U Z Q L K V J
h g a l l i e r
O N H S S P L Y
und damit folgender verschlüsselte Text
KHZNLZHTANLIPLANHSSPLUZGLYMHLSSAPUKYLPALPSLPUKLTLPULUSLILUK
PLILSNLYPULPULTGDLPALUKPLHXBPAHULYBUKPTKYPAALUKPLCVLSRLYKP
LPUKLYSHUKLZZWYHJOLRLSALUOLPZZLUILPBUZQLKVJONHSSPLY
Scheinbar ein ziemliches Durcheinander von Buchstaben, aber wir werden später
sehen, dass darin Strukturen enthalten sind, die uns die Entschlüsselung
ermöglichen auch ohne den Schlüssel zu kennen. Nun soll aber noch die
5
Entschlüsselung der Nachricht gezeigt werden. Die Cäsar Chiffre ist ein
symmetrisches Verfahren, d. h. für Ver- und Entschlüsselung wird der gleiche
Schlüssel verwendet.
Praktisch heißt das, dass das Verschlüsselungsrad auch dabei so einzustellen ist,
dass a über H steht. Im Gegensatz zur Verschlüsselung wird aber nun auf dem
Verschlüsselungsrad von „innen nach außen“ gelesen, bzw. auf der
Verschlüsselungstabelle von unten nach oben. Es entsteht dann eine Tabelle, in der
je Block die Zeilen vertauscht sind, also beispielsweise:
K H Z N L Z H T
d a s g e s a m
A N L I P L A N
t g e b i e t g
H S S P L U Z G
a l l i e n s z
6
L Y M H L S S A
e r f a e l l t
3. Elemente der Zahlentheorie
Wir betrachten im folgenden einige Eigenschaften ganzer Zahlen. Die ganzen Zahlen
  . . . ,  4,  3,  2,  1, 0, 1, 2, 3, 4, . . .  . Die Menge der
bilden die Menge
natürlichen Zahlen
  1, 2 , 3 , 4 , ...  ist eine Teilmenge von
.
Um die Funktionsweise von Chiffren zu verstehen ist das Verständnis einiger
Eigenschaften von und Teilmengen davon sehr hilfreich. Insbesondere spielen
Primzahlen, also natürliche Zahlen, die nur durch sich selbst und 1 teilbar sind, und
deren Eigenschaften eine zentrale Rolle.
Bevor wir mit sehr einfachen Eigenschaften beginnen, wollen wir noch eine
Eigenschaft der natürlichen Zahlen vorstellen, die immer wieder genutzt wird ohne
sie ausdrücklich zu erwähnen, da es ja „offensichtlich richtig ist“. Es gilt folgender
Satz:
Satz:
Jede nicht leere Teilmenge der natürlichen Zahlen besitzt ein Minimum.
Beweis: Da jede nichtleere Teilmenge von
mindestens eine natürliche Zahl n
besitzt können wir zum Beweis des Satzes auch die Aussage
„Alle Teilmengen von , die die natürliche Zahl n enthalten, besitzen ein
Minimum“ beweisen.
Sei Ak  eine solche Teilmenge, die die natürliche Zahl k enthält
Induktionsanfang:
jede nichtleere Menge A1  , die die 1 enthält, enthält auch ein Minimum.
Das ist aber klar, da die 1 per Definition die kleinste natürliche Zahl, und
mithin das Minimum für alle A1 ist.
Induktionsvoraussetzung:
Für alle k ≤ n gelte, dass alle Ak 
das Minimum k besitzen.
Induktionsschluss:
Sei also nun B 
mit (n+1)  B
Gilt nun k  B mit k < (n+1), so gibt es nach Induktionsvoraussetzung ein
Minimum
Andernfalls besitzt die Menge B nur Zahl k für die gelten: k  B , k ≥ (n+1)
Damit ist aber (n+1) per Definition das Minimum von B, also ein A n+1 .
+++
Bemerkung: Analog beweist man, dass jede nicht leere Teilmenge der negativen
ganzen Zahlen ein Maximum besitzt.
7
3.1 Teilbarkeit
Definition 3: Eine ganze Zahl b heißt durch eine ganze Zahl a ≠ 0 teilbar, wenn
eine ganze Zahl x existiert mit
b=a*x
Abkürzend schreiben wir:
und sprechen das als:
a│b
a teilt b
Bemerkung: a teilt nicht b wird dargestellt als a ∤ b
Nun stellen wir einige Eigenschaften der Teilbarkeit zusammen:
Satz 3.1
1) aus a│b folgt a│(b c) für alle c 
2) aus a│b und b│c folgt a│c
3) aus a│b und a│c folgt a│(b x + c y) für alle x, y 
4) gelten a│b und b│a folgt a = ± b
5) für a, b 
folgt aus a│b a ≤ b
6) Ist m ≠ 0 , so folgt aus a│b (m a)│(m b)
Beweis:
1) a│b  es existiert ein x mit: b = a * x
b c = a * x * c = a * (x * c)
 b c = a * y mit y = x * c
 a│(b c)
2) a│b 
b│c 



es existiert ein x mit: b = a * x
es existiert ein y mit: c = b * y
c = b * y = (a * x) * y = a * (x * y) = a * z
c=a*z
a│c
mit
z = (x * y)
3) a│b  es existiert ein s mit: b = a * s
a│c  es existiert ein t mit: c = a * t
b x + c y a * s * x + a * t * y a * (s * x + t * y)
a│(b x + c y)
4) a│b  b = a * x
b│a  a = b * y
b = (b * y) * x = b * (y * x)
a=b
5) a, b 

1=y*x

 a, b > 0 : a│b  b = a * x
 b>a
8
x = y = 1
mit
x > 0, x 
6) m ≠ 0 gegeben
a│b  b = a * x  m * b = m * a * x
 (m * b) = (m * a) * x
 (m a)│(m b)
+++
Satz 3.2
Der Divisionsalgorithmus
Seien a, b 
mit a  0 , dann gibt es ganze Zahlen q und r mit
a = q b + r und 0 ≤ r < │b│
Bemerkung1: aus 0 ≤ r < │b│ folgt: b ≠ 0
Bemerkung2: für a, b > 0 werden q und r bestimmt, in dem folgendes Vorgehen
gewählt wird:
- berechne s = a / b, und nehme den ganzzahligen Teil
links vom Komma“ → q (b ≠ 0 gilt nach Voraussetzung, s. o.)
- berechne r = a – q b
Beweis:
Der Beweis erfolgt in 2 Schritten, denn es muss sowohl die Existenz
als auch die Eindeutigkeit gezeigt werden:
1) Existenz
betrachten wir die arithmetische Folge (r j = a - j b) mit - < j < 
. . . , r-2 = a + 2 b , r-1 = a + b , r0 = a + 0 b , r1 = a - b , r2 = a - 2 b , . . .
dann gelten:
I) b > 0: . . . > r-2 > r-1 > r0 > r1 > r2 > . . . , d. i. monoton fallend
von „ nach -“
wähle kleinstes rj = a - j b = r mit r größer oder gleich 0
 0 ≤ a - j b = r < │b│
 0 ≤ r < │b│ und q = j
 a=qb+r
II) b < 0: . . . < r-2 < r-1 < r0 < r1 < r2 < . . . , d. i. monoton steigend
von „- nach “
weiter analog I)
2) Eindeutigkeit:
Annahme: es gibt zu r = ri eine weitere Lösung rj mit:
0 ≤ rj < │b│ und ri ≠ rj i ≠ j
a) Annahme: r < rj  0 < rj – r < b
0 < rj – r = (a - j b) - ( a - i b) = (i – j) b < │b│
0 < (i – j) b < b  0 < i – j < 1  j < i < j + 1
9
Widerspruch, da zwischen zwei aufeinander folgenden ganzen
Zahlen keine ganze Zahl liegen kann.
Also ist i = j und somit auch r = ri = rj
b) Annahme: r > rj führt analog zu einem Widerspruch
+++
Bemerkung:
Die Voraussetzung a > 0 kann durch a ≠ 0 ersetzt
werden, da der Fall a < 0 in gleicher Weise wie oben
bewiesen wird.
3.2 Der größter gemeinsamer Teiler (ggT)
Definition 4: Die ganze Zahl f heißt ein gemeinsamer Teiler von den ganzen
Zahlen a,b , wenn gilt f│a und f│b.
Gilt a, b ≠ 0 und ist g der größte aller gemeinsamen Teilern f i von a
und b, so wird g als größter gemeinsamer Teiler, g = ggT(a,b)
bezeichnet.
Gilt ggT(a,b) = 1 , so nennt man a, b relativ prim zueinander.
Satz 3.3
Seien a, b 
mit a  0 gegeben und g = ggT(a,b).
Dann hat die Gleichung a x  b y  g eine Lösung mit
x  x0 , y  y0 und x0 , y0  .
Beweis:
Wir definieren die Funktion f durch:
f(x,y) = a x + b y, mit x, y 
mit:
f(0,0) = 0
f(1,0) = a
d. i.
f(-1,0) = - a
d. i.
>0,
<0,
<0,
>0,
falls
falls
falls
falls
a>0
a<0
a>0
a<0
also sind sowohl positive, negative Zahlen und 0 im Bildbereich von f
wählen wird x0, y0 so, dass f(x0, y0) die kleinste positive Zahl k im
Bildbereich ist:
k  f( x0 ,y0 )  a x0  b y0  0
10
1) Behauptung: k│a und k│b
Beweis: I) k│a
Annahme: k ∤ a
nach dem Divisionsalgorithmus gibt es q, r mit
a = q k + r und 0 < r < k,
insbesondere gilt r ≠ 0 da k ∤ a
r = a – q k = a – q (a x0 + b y0)
= a (1 – q y0) + b (- q x0)
also liegt r im Bildbereich von f und ist es gilt
0<r<k
das ist aber ein Widerspruch dazu, dass k die
kleinste Zahl dieser Art ist
also ist die Annahme k ∤ a falsch und es gilt
k│a
II) k│b wird analog bewiesen
2) Sei nun g = ggT(a,b) , dann folgt aus der Definition
g│a: a = g u und
g│b: b = g v mit u,v 
Damit gilt:
 g│k
k  a x0  b y0  g u x0  g v y0  g (u x0  v y 0 )
nach Voraussetzung ist k > 0 und per Definition ist g = ggT(a,b) > 0
dann folgt aus Satz 1.1 5)
g≤k
nun kann aber nicht g < k gelten, da g = ggT(a, b) ist, also alle
gemeinsamen Teiler kleiner sein müssen,
also gilt g = k und somit
g  a x0  b y0
+++
Wie nun konkret die Faktoren x0 , y0  berechnet werden ist im Satz 3.3 nicht
angegeben. Dafür wird die Erweiterung des Divisionsalgorithmus (s. Satz 3.2),
nämlich der Euklidische Algorithmus (siehe unten Satz 3.4), genutzt.
Zuvor notieren wir noch einige Eigenschaften des größten gemeinsamen Teilers,
ggT.
Folgerung 1 Für jedes m 
Beweis:
gilt: ggT(m a, m b) = m ggT(a, b)
Nach Satz 3.3 hat hat die Gleichung a x  b y  g genau eine Lösung
mit x  x0 , y  y0 und x0 , y0 
.
Damit ist aber a m x  b m y  g m für alle m 
11
und somit auch
(m a) x  (m b) y  m g und damit ggT(m a, m b) = m ggT(a, b)
+++
Bemerkungen:
I) Sei d > 0 gegeben: aus d│a und d│b folgt:
ggT(a/d , b/d) = 1/d ggT(a , b)
wegen:
d│a  es existiert x mit: a = d x und analog d│b  b = d y
ggT(a , b) = ggT(d x , d y) = d ggT(x , y) = d ggT(a/d , b/d)
ggT(a/d , b/d) = 1/d ggT(a , b)
II) Für g = ggT(a, b) gilt: ggT(a/g , b/g) = 1
wegen
ggT(a/g , b/g) = 1/g ggT(a , b) = 1/g g = 1
Folgerung 2 Für jedes u 
gilt
ggT(a, b) = ggT(b, a) = ggT(a, -b) = ggT(a, b + a u )
Beweis:
a) ggT(a, b) = ggT(b, a) = ggT(a, -b) folgt sofort aus der Definition des
ggT, da diese weder vom Vorzeichen noch von der Reihenfolge von
a, b abhängt, sondern nur der absoluten Größte des Teilers
(siehe Bemerkung Definition 4).
b) bleibt zu zeigen: ggT(a, b) = ggT(a, b + a u)
g = ggT(a, b) , e = ggT(a, b + a u)
I) e = ggT(a, b + a u)  e│a und e│(b + a u)
 e│a und e│b  e = gT(a,b)  e│g
II) g = ggT(a, b)  g│a und g│b
 g│a und g│(a x + b y) für alle x, y 
nach 1.1 3)
 g│a und g│(a u + b) für x = u, y = 1
 g│e
aus I) und II) folgt nach 1.1 4) g = ± e
 g = e weil g, e beide ggT sind und somit e, g > 0
12
Folgerung 3 Ist x  x0 , y  y0 eine Lösung der Gleichung a x  b y  g , dann
bilden alle x = xk, y = yk , k  mit:
ak
bk
und yk  y0 
xk  x 0 
g
g
sämtliche Lösungen der Gleichung.
Beweis:
Nach Satz 3.3 existiert eine Lösung unter den angegebenen
Voraussetzungen:
Seien a, b 
mit a  0 gegeben mit g = ggT(a,b). Dann gibt es
x0 , y0  , so dass gilt: g  a x0  b y0  .
Setzen wir nun voraus, dass x0 , y0 
eine Lösung darstellen, so
bestimmen wir nun die weitere Lösungen x, y, die die gleiche Form
haben.
Für x, y muss also gelten:
gax by
g  a x0  b y0
Subtraktion liefert
0  a (x  x0 )  b (y  y0 )
a (x  x0 )   b (y  y0 )
Division durch g  ggT(a,b)  0 liefert
a
b
(x  x0 ) 
(y  y0 ) (*)
g
g
a b
ggT( , )  1 weil ggT(a, b)  g und Folgerung 1, Bem. 1, oben
g g
a
damit kann
nur ein Teiler von (y  y0 ) sein
g
 y  y0  l
und analog ist
a
,l
g
(#)
b
ein Teiler von (x  x0 )
g
 x  x0  k
13
b
,k
g
(##)
(*) liefert
x  x0  k
a
b
(x  x 0 ) 
(y  y 0 ) und mit (#) , (##) gilt
g
g
a b
b a
k

l
 k  l
g g
g g
b
g
y  y0   k
a
g

x  x0  k
b
g

y  y0  k
a
g
Umgekehrt müssen wir noch zeigen, dass das auch Lösungen sind:
b
a
a x  b y  a (x 0  k )  b (y 0  k )
g
g
 a x0  b y0  a k
b
a
 bk
g
g
 a x0  b y0
g
+++
3.3 Der Euklidische Algorithmus
Satz 3.4
Der Euklidische Algorithmus
I) Seien a, b 
mit a  b . Mit Hilfe des folgenden Algorithmus wird
ggT(a,b) in endlich vielen Schritten berechnet.
1) Sei r0 = a und r1 = b
2) Setze i = 1
3) Berechne nach 3.2 Divisionsalgorithmus:
ri-1 = ri qi + ri+1 mit 0 ≤ ri+1 < ri
4) Ist der Rest ri+1 = 0 , dann ist ri = ggT(a,b) und der Prozess ist
beendet
5) Ist ri+1 > 0 so setze i = i + 1 und gehe zu 3)
II) Das Verfahren ist nach höchstens (2 log2(b) + 1) – fachen
Durchführung des Schrittes 3) beendet.
14
Beweis:
I) Schreiben wir den oben beschriebenen Algorithmus ausführlich:
0. a = q1 b + r2
1. b = q2 r2 + r3
2. r2 = q3 r3 + r4
…
i. ri = qi+1 ri+1 + ri+2
…
t -2. r t-2 = q t-1 r t-1 + r t
t -1. r t-1 = q t r t
mit 0 < r2 < b
mit 0 < r3 < r2
mit 0 < r4 < r3
mit 0 < ri+2 < ri+1
mit 0 < rt < rt-1
Nach t Schritten ist der Prozess beendet, wenn „die Division aufgeht“,
d.h. keinen Rest mehr liefert. Daher wurde anders als in 3.2 in den
Schritten 0 bis (t -2) das Gleichheitszeichen weggelassen, da es den
letzten Schritt des Algorithmus darstellt, der durch den Schritt (t -1)
dargestellt ist.
Das der Algorithmus nach endlich vielen Schritten endet ist klar, da die
ri eine streng monoton fallende, nach unten durch 0 beschränkte Folge
bilden
b > r2 > r3 > r4 > . . . > rt-1 > rt > 0
wg. ggT(a, b) = ggT(b, a) = ggT(a, b + a x) für alle x 
Folgerung 2) folgt aus Schritt 0. , 1. , … , t-1:
ggT(a , b) = ggT(a - q1 b, b)
= ggT(r2 , b) = ggT(r2 , b - q2 r2)
= ggT(r2 , r3) = ggT(r2 - q3 r3 , r3)
= ggT(r4 , r3) = ggT(r4 , r3 - q4 r4)
= ggT(r4 , r5) = ggT(r4 - q5 r5 , r5)
=...
= ggT(ri , ri-1) = . . .
=...
= ggT(rt-1 , rt) = ggT(rt q t, rt) = rt
15

ggT(a , b) = rt
(s. Satz 3.3
Es bleibt zu zeigen:
II. Das Verfahren ist nach höchstens (2 log2(b) + 1) – fachen
Durchführung des Schrittes 3) beendet.
Die ri bilden eine streng monoton fallende Folge, d.h.
r0 = a > r1 = b > r2 > r3 > r4 > . . . > rt-1 > rt > 0
siehe oben
Damit haben wir als erste Abschäzung t ≤ b, die nun deutlich
verbessert wird.
Behauptung: ri+2 < ½ ri
Beweis:
Fall 1: ri+1 ≤ ½ ri


und ri+2 < ri+1 ,
weil die Folge der ri streng
monoton fallend ist
 ri+2 < ri+1 ≤ ½ ri  ri+2 < ½ ri



Fall 2: ri+1 > ½ ri
daraus folgt 2 ri+1 > ri bzw. - ri+1 < - ½ ri
durch den Algorithmus (s. o.) ist definiert:
ri = qi+1 ri+1 + ri+2
mit 0 < ri+2 < ri+1
damit kann aber qi+1 = 1 sein, da 2 ri+1 > ri und
somit ri+2 < 0 wäre
also gilt: ri = qi+1 ri+1 + ri+2
= ri = ri+1 + ri+2
ri+2 = ri - ri+1 < ri - ½ ri = ½ ri
Damit erhalten wir nun folgende Abschätzung (*):
1
1
1
1
1
1
1
r2k 1  2 r2k 3  3 r2k 5  4 r2k 7  . . .  k 1 r3  k r1  k b
2
2
2
2
2
2
2
k
k-1
wählen wir nun k so groß, dass 2 ≥ b > 2 dann folgt r2k+1 < 1 und da
r2k+1 eine ganze Zahl ist, muss r2k+1 = 0 sein und damit endet der
Algorithmus. Aus b > 2k-1 folgt log2(b) > log2(2k-1) = (k-1) log2(2) = k-1
r2k 1 
Mit der oben angegebenen Bezeichnung und der Ungleichung
(**) r0 = a > r1 = b > r2 > r3 > r4 > . . . > rt-1 > rt > 0
gilt rt+1 = 0 .
Somit erhalten wir aus (*) und (**) für die Indizes: t + 1 ≤ 2 k + 1 und
damit t ≤ 2 k .
Im oben angegebenen Algorithmus werden genau t Schritte /
Divisionen durchgeführt, also gilt:
Anzahl der Schritte = t ≤ 2 k = 2 (k – 1) + 2 < 2 log2(b) + 2
+++
16
Bemerkung:
Natürlich kann man den ggT(a,b) bestimmen, in dem
I) a und b in ihre Primzahlfaktoren zerlegt werden
II) das Produkts gemeinsamer Primfaktoren gebildet wird.
Allerdings ist das Verfahren für große Zahlen a, b bzw. für Zahlen
mit mehreren großen Primzahlfaktoren sehr aufwändig.
Zum Euklidischen Algorithmus nun zwei Beispiele:
1. a = 60 , b = 27
1.1 Euklidischer Algorithmus
i
0
1
2
a
60
27
6
Damit gilt:
=
=
=
2
4
2
*
*
*
b
27
6
3
+
+
+
6
3
0
ggT(60, 27) = 3
1.2 Primzahlzerlegung:
60 = 2 * 2 * 3 * 5 und 27 = 3 * 3 * 3 also ggT(60, 27) = 3
17
2. a = 2426892 , b = 948047
2.1 Euklidischer Algorithmus
i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a
2426892
948047
530798
417249
113549
76602
36947
2708
1743
965
778
187
30
7
2
Damit gilt:
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
2
1
1
3
1
2
13
1
1
1
4
6
4
3
2
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
b
948047
530798
417249
113549
76602
36947
2708
1743
965
778
187
30
7
2
1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
530798
417249
113549
76602
36947
2708
1743
965
778
187
30
7
2
1
0
ggT(2426892, 948047) = 1
2.2 Primzahlzerlegung
2426892 = 2 * 2 * 3 * 13 * 47 * 331
und
948047 = 131 * 7237
also
ggT(2426892, 948047) = 1 ,
wobei insbesondere die Zerlegung von 948047 (manuell) nicht so schnell zu
finden ist.
In diesem Fall ist sicher der Euklidische Algorithmus leichter und schneller.
18
3.4 Kongruenzen
Zur Einführung betrachten wir die „Uhren-Mathematik“. Auf einer gewöhnlichen
24-Stunden-Uhr stehen uns für das Rechnen in Stunden nur die Werte
0, 1, 2, 3, .. , 22, 23 zu Verfügung. Zu beachten ist, dass 24 Uhr = 0 Uhr ist.
Addition und Subtraktion von Stunden führt auf Gleichungen wie:
16 + 3 = 19
22 + 9 = 7
15 + 37 = 4
7 – 9 = 22
15 – 37 = 2.
Betrachten wir etwas näher wie gerechnet wird am Beispiel 15 + 37 = 4 :
15 + 37 = 52 damit wird der Definitionsbereich {0, 1, 2, 3 , … , 22, 23} ,
bestehend aus 24 Zahlen, überschritten. Nahe liegend ist, das
Ergebnis 52 durch 24 ganzzahlig zu dividieren und dann den
additiven, positiven Rest zu betrachten, d. h. die Stunden der
ganzen Tage (24 Std.) zu ermitteln und die verbleibenden
Stunden (= additiven, positiven Rest) zu ermitteln
15 + 37 = 52 = 2 * 24 + 4 und damit 15 + 37 = 4 für eine 24-Stunden-Uhr
Analog ist das Vorgehen bei der Subtraktion, wobei die Stunden der ganzen Tage
abgezogen werden, wenn das Ergebnis negativ ist:
15 - 37 = -22 = (-1) * 24 + 2 und damit 15 - 37 = 2
für eine 24-Stunden-Uhr
Beim Ergebnis kommt es also vor allem auf den Rest nach Division durch 24 an.
Mathematisch wird das in der Theorie der Kongruenzen und dem Rechnen in
Restklassen behandelt.
Untersuchen wir nun die „allgemeine Mechanik“ auf der die „Uhren-Mathematik“
fusst. Dazu beginnen wir mit der Definition der Kongruenz, die auf den Eigenschaften
der Teilbarkeit von natürlichen Zahlen aufbaut und auf die Restklassen führt.
Definition 5: Sei m ≠ 0 eine ganze Zahl. Wir sagen die ganzen Zahlen a, b sind
kongruent modulo m, geschrieben als a ≡ b mod m , falls die
Differenz a – b durch den Modul m (ohne Rest) teilbar ist, geschrieben
als:
a ≡ b mod m  m│(a – b)
Bemerkung: Da die Forderung der Teilbarkeit von a – b durch m mit der Teilbarkeit
durch -m gleichwertig ist, beschränken wir uns im Weiteren auf m  .
Unter einer Kongruenz verstehen wir also die Feststellung einer Teilbarkeit.
19
Da die Kongruenzen sowohl bei der mathematischen Beschreibung die Cäsar Chiffre
als auch demm RSA Verfahren eine wesentliche Rolle spielen, stellen wir einige
Eigenschaften zusammen.
Satz 3.5
Seien a, b, c, d, x, y  , m 
. Dann gelten
1) a ≡ b mod m, b ≡ a mod m , (a - b) ≡ 0 mod m sind äquivalent
2) aus (a ≡ b mod m und b ≡ c mod m) folgt a ≡ c mod m
3) aus (a ≡ b mod m und c ≡ d mod m) folgt
(a x + c y) ≡ (b x + d y) mod m für alle x, y 
4) aus (a ≡ b mod m und c ≡ d mod m) folgt (a c) ≡ (b d) mod m
5) aus a ≡ b mod m und d│m , d > 0 folgt a ≡ b mod d
6) sei a gegeben, dann existiert ein b mit (a b) ≡ 1 mod m genau
dann, wenn ggT(a,m) = 1 gilt
7) für p Primzahl gilt:
aus a b ≡ 0 mod p folgt a ≡ 0 mod p oder b ≡ 0 mod p
8) aus a x ≡ a y mod m und ggT(a,m) = 1 folgt x ≡ y mod m
Beweis:
1) a ≡ b mod m  m│(a - b)  m│(b - a)  b ≡ a mod m
a ≡ b mod m  m│(a - b)  m│((a – b) - 0)  a - b ≡ 0 mod m
2) a ≡ b mod m  m│(a – b)
b ≡ c mod m m│(b – c)
 m│((a–b) + (b–c)) nach Satz 1.1 3)
 m│(a – c)  a ≡ c mod m
3) a ≡ b mod m und c ≡ d mod m, x, y 
m│(a – b)  m│(x a – x b)

m│(c – d)  m│(y c – y d)
 m│((x a – x b)+ (y c – y d))
nach Satz 3.1. 3)
 m│((x a + y c) – (x b + y d))  (a x + c y) ≡ (b x + d y) mod m
4) a ≡ b mod m und c ≡ d mod m
a ≡ b mod m  m│(a – b)  m│(c (a – b))  m│(c a – c b)
c ≡ d mod m m│(d – c)  m│(b (d – c))  m│(b d – c b)
 c a ≡ c b mod m und b d ≡ c b mod m
 a c ≡ b c mod m und b c ≡ d b mod m
 a c ≡ d b mod m nach 2)
 a c ≡ b d mod m
5) a ≡ b mod m und d│m , d > 0
also existiert ein x, so dass d x = m
a ≡ b mod m  m│(a - b)  (d x)│(a – b)  d│(a – b)
 a ≡ b mod d
20
6) I. „“: zu zeigen: (a b) ≡ 1 mod m  ggT(a,m) = 1
(a b) ≡ 1 mod m  a b – 1 = x m
 a b – x m = 1
Multiplikation mit 1 = ggT(a,m) / ggT(a,m) liefert


a
m
 ggT  a,m  * 
* b – x *
  1
 ggT  a,m 
ggT
a,m




 ggT(a,m) teilt 1  ggT(a,m) = 1
II. „“: zu zeigen: ggT(a,m) = 1  es ex. ein b mit (a b) ≡ 1 mod m
ggT(a,m) = 1
 nach Satz 3.3 existieren x0 , y0 
mit
ggT(a,m) = a x0 + m y0 = 1  a x0 - 1 = m (- y0 )
a x0 ≡ 1 mod m  b = x0 ist eine Lösung
7) p Primzahl: a b ≡ 0 mod p  p│(a b – 0)  p│a b
 p│a oder p│b weil die Primzahlzerlegung von a b eindeutig ist
 a ≡ 0 mod p oder b ≡ 0 mod p
8) a x ≡ a y mod m  es existiert ein z 
mit a y - a x = m z
 a (y – x) = m z  m│a (y – x)  m│(y – x) , da ggT(a,m) = 1
 x ≡ y mod m
+++
Bemerkung: zu 3): x = y = 1 liefert:
aus (a ≡ b mod m und c ≡ d mod m) folgt
(a + c) ≡ (b + d) mod m
zu 6): einige Anmerkungen:
I) a hat dann und nur dann einen „Kehrwert“ (oder multiplikatives
inverses Element) bezüglich modulo m, wenn a und m teilerfremd
sind.
II) Alle Lösungen sind gegeben durch: bi = b + i m, für alle i   , d. h.
alle Lösungen sind kongruent modulo m
21
3.5 Restklassen
Grob gesprochen führt das Rechnen mit ganzen Zahlen modulo m zu den gleichen
Regeln wie bei den ganzen Zahlen, wobei wir die Vielfachen von m nicht
berücksichtigen, d.h. es wird nicht zwischen den Zahlen a und (a + j m)
unterschieden, wobei j  ist.
Genau gesagt ist a ein Repräsentant aller Zahlen der Form a + m j , d.h. a steht für
die Menge aller Zahlen der Form a + m j , j  . Darum wird a als Restklasse2
bezeichnet, denn es kommt nur auf den Rest bei Division durch m an.
Um Verwechselungen zu vermeiden schreibt man daher auch am statt am und damit
gilt: die Restklasse a bezüglich der Division durch m ist definiert durch die Menge:
am = {z  │ z = a + m j mit j   } = {z  │ z ≡ a mod m }
Beispiel: Restklassen bezüglich der Division durch 7:
07 = {z  │ z ≡ 0 mod 7 } = {… , -14 , -7 , 0 , 7 , 14 , …}
17 = {z  │ z ≡ 1 mod 7 } = {… , -13 , -6 , 1 , 8 , 15 , …}
27 = {z  │ z ≡ 2 mod 7 } = {… , -12 , -5 , 2 , 9 , 16 , …}
37 = {z  │ z ≡ 3 mod 7 } = {… , -11 , -4 , 3 , 10 , 17 , …}
47 = {z  │ z ≡ 4 mod 7 } = {… , -10 , -3 , 4 , 11 , 18 , …}
57 = {z  │ z ≡ 5 mod 7 } = {… , -9 , -2 , 5 , 12 , 19 , …}
67 = {z  │ z ≡ 6 mod 7 } = {… , -8 , -1 , 6 , 13 , 20 , …}
Hier wird aber weiterhin die Bezeichnung a m statt am verwendet, da es nicht zu
Verwechselungen kommen kann.
Nach dem Divisionsalgorithmus, Satz 3.2, kann jede gegebene Zahl a bei Division
durch m ≠ 0 dargestellt werden als
a = q m + r mit 0 ≤ r < │m│.
Aus der Ungleichung folgt, dass jede ganze Zahl a hinsichtlich der Division durch m
genau einem der Werte 0, 1, 2, 3, ... , m-1 kongruent ist. Deswegen können wir nun
die Menge der Restklassen definieren.
2
Die Menge wird als Restklasse und nicht als Restmenge bezeichnet, da Restmenge bereits in der
Mengenlehre verwendet wird: Die Restmenge (Differenzmenge) von den Mengen A und B ist die
Menge der Elemente, die in A, aber nicht in B enthalten sind.
22
Definition 6 1) Gilt x ≡ y mod m , so nennt man y einen Rest von x modulo m
2) Eine Menge von Zahlen y1 , y2 , … ym heißt ein vollständiges
Restsystem modulo m, / m wenn für jedes ganzzahlige x
genau ein yj existiert mit x ≡ yj mod m.3
3) Ein primes Restsystem modulo m ( / m )x ist eine Teilmenge
eines vollständigen Restsystems modulo m , wobei für alle Elemente
ri  {r1 , r2 , r3 , . . . , rk }  {y1 , y2 , y3 , . . . , ym } mit k ≤ m
folgende Bedingungen gelten:
I) ggT( ri , m) = 1
II) ( / m )x = {r1 , r2 , r3 , . . . , rk } enthält alle yi 
der Eigenschaft I).
/m
mit
4) Die Eulersche Funktion Φ(m) ist definiert als die Anzahl der
Elemente eines primen Restsystems modulo m. 4
Bemerkung: 1) die Mengen { 0, 1, 2, … , m – 2, m – 1 } , { 1, 2, … , m – 1, m } , … ,
{ j, j + 1, j +2, … , j + (m – 1) } , j 
bilden jeweils ein vollständiges
Restsystem modulo m
2) aus einem vollständigen Restsystem erhält man ein primes
Restsystem, indem die yi gestrichen werden, für die
ggT(yi ,m) ≠ 1 gilt.
Beispiele von primen Restsystemen:
1) m = 6: (
/ 6 )x = { 1, 2, 3, 4, 5 }= { 1, 5 }  Φ(m) = 2
2) m = 9: ( / 9 )x = {1, 2, 3, 4, 5, 6, 7, 8} = {1, 2, 4, 5, 7, 8}
 Φ(m) = 6
3) m = 24: (
/ 24 )x = { 1, 5, 7, 11 , 13 , 17, 19, 23 }  Φ(m) = 8
und es gilt, dass das Quadrat jedes Elements kongruent zu 1 ist:
r
r2
r2 ≡ x mod 24 : x
1
1
1
5
25
1
7
49
1
11
121
1
13
169
1
17
289
1
19
361
1
23
529
1
Jedes Element ist hinsichtlich der Multiplikation also zu sich selbst
invers.
3
4
daraus folgt insbesondere yk ≢ yl mod m für k ≠ l
anders ausgedrückt: Φ(m) ist die Anzahl der natürlichen Zahlen ≤ m, die zu m relativ prim sind.
23
/ 11 )x = {1, 2, 3, 4 , 5 , 6, 7 , 8 , 9 , 10} Φ(m) = 10
4) m = 11: (
1
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
2
2
4
6
8
10
1
3
5
7
9
3
3
6
9
1
4
7
10
2
5
8
4
4
8
1
5
9
2
6
10
3
7
5
5
10
4
9
3
8
2
7
1
6
6
6
1
7
2
8
3
9
4
10
5
Multiplikationstabelle von (
7
7
3
10
6
2
9
5
1
8
4
8
8
5
2
10
7
4
1
9
6
3
9
9
7
5
3
1
10
8
6
4
2
10
10
9
8
7
6
5
4
3
2
1
/ 11 )x
Außer 1 und 10 ist kein Element zu sich selbst invers:
1
2
3
4
5
*
*
*
*
*
1
6
4
3
9
=
=
=
=
=
1
1
1
1
1
6
7
8
9
10
*
*
*
*
*
2
8
7
5
10
6-1
7-1
8-1
9-1
-1
10
=
2
=
8
=
7
=
5
= 10
=
=
=
=
=
1
1
1
1
1
und somit gilt:
1-1
2-1
3-1
4-1
-1
5
=
=
=
=
=
1
6
4
3
9
5) für p Primzahl gilt: ( / p )x = { 1 , 2, 3, …, p-2 , p-1 }
( / p )x hat mithin (p - 1) Elemente
 Φ(m) = p - 1
6) für p, q Primzahlen mit p ≠ q gilt:
( / (p * q) )x = {1, 2, 3, …, (p-1)*(q-1) }
/ (p * q) )x hat mithin
(p - 1) * (q - 1) Elemente
 Φ(m) = (p – 1) (q – 1)
(




etwas ausführlicher:
1 , .. , p , .. , 2p , .. , 3p , .. , q p enthält q Zahlen, die durch p
teilbar sind, also gibt es q Zahlen r i mit ggT( ri , p q) = p ≠ 1
24
1 , .. , q , .. , 2q , .. , 3q , .. , p q enthält p Zahlen, die durch q
teilbar sind, also gibt es p Zahlen ri mit ggT( ri , p q) = q ≠ 1
Damit ergibt sich für die Anzahl der Elemente von (
p q – q – p + 1 = (p – 1) (q – 1)
/ (p * q) )x :
1 muss addiert werden, da das Produkt (p q) zweimal abgezogen
wurde (jeweils größtes Element der o. a. Folgen 1 , … , p q).
Folgerung
Das prime Restsystems modulo m ( / m ) x ist unter der
Multiplikation abgeschlossen, d.h.
ri , rj  (
Beweis:
/ m )x
 ri * rj  (
/ m )x
ri , rj  ( / m )x
 ggT( ri , m) = 1 und ggT( rj , m) = 1
 wg. Satz 3.5 6) gilt: es existieren b1 , b2 mit
(ri b1) ≡ 1 mod m und (rj b2) ≡ 1 mod m
 ((ri b1) (rj b2)) ≡ 1 mod m wg. Satz 3.5 4)
 ((ri rj) (b1 b2)) ≡ 1 mod m
 ggT( ri rj , m) = 1 wg. Satz 3.5 6)
Bemerkung: Das gilt natürlich für ein vollständiges Restsystem modulo m, / m
aber es ist nicht selbstverständlich das das auch für eine Teilmenge
davon gilt.
Satz 3.6
1) Seien a  , m Primzahl mit m ∤ a )5 , dann folgt Φ(m) = m – 1
und weiter
{a , 2 a , 3 a , . . . , (m - 1) a } ist primes Restsystems modulo m
2) Ist das prime Restsystems modulo m gegeben durch
( / m )x = {r1 , r2 , r3 , . . . , rΦ(m) } .
Dann folgt aus a 
und ggT(a, m) = 1 :
{a r1 , a r2 , a r3 , . . . , a rΦ(m) } ist primes Restsystems modulo m
Beweis:
1) r 
, m Primzahl , mj = j r
damit hat {r , 2 r , 3 r , . . . , (m - 1) r } m – 1 Elemente und es
bleibt zu zeigen, dass alle Elemente verschieden sind, also:
für alle i ≠ j gilt mi  mj mod m
5
Da m Primzahl ist folgt aus m ∤ a auch ggT(m, a) = 1
25
,
Annahme: es existieren i ≠ j mit für mi ≡ mj mod m
nehmen wir an, dass i < j gilt, sonst vertausche i mit j
nach Definition der mi gilt
mj - mi = (j – i) r mit 1 ≤ i < j ≤ (m – 1)

I) 0 < j – i < m – 1 < m
 m ∤ (j – i)
II) nach Voraussetzung gilt: m ∤ r und r ≠ 0 (sonst m│r)

m ∤ r (j – i)  m ∤ (mi – mj)
Widerspruch zu mi ≡ mj mod m
damit gilt 1)
2) Es gelten a 
und ggT(a, m) = 1 :
{a r1 , a r2 , a r3 , . . . , a rm-1 } hat m – 1 Elemente und es bleibt zu
zeigen, dass alle Elemente verschieden sind, also:
für alle i ≠ j gilt a ri  a rj mod m
Annahme: es existieren i ≠ j mit für a ri ≡ a rj mod m
nehmen wir an, dass i < j gilt, sonst vertausche i mit j
dann gilt
a rj - a ri = (rj - ri) a mit 1 ≤ i < j ≤ (m – 1)

 m ∤ (rj - ri )
1) 0 < rj - ri < m
2) nach Voraussetzung gilt: m ∤ a da ggT(a, m) = 1 und a ≠ 0
m ∤ a (rj - ri)  m ∤ (mi – mj)
Widerspruch zu mi ≡ mj mod m
damit gilt 2)

+++
Satz 3.7
Beweis:
Kleiner Fermatscher Satz
Sei p eine Primzahl und a 
Dann folgt aus p ∤ a:
ap - 1 ≡ 1 mod p
oder äquivalent: p ∤ a:
ap ≡ a mod p
Sei p ∤ a , dann definieren wir Vielfache von a mit
(*): m1 = a, m2 = 2 a, m3 = 3 a, … , mp - 1 = (p – 1) a
nach 3.6 1) gilt für alle i ≠ j : mi  mj mod p
damit ist jedes mi genau einem k  {1, 2, 3, . . . , (p  1)} kongruent
mod p und damit gilt:
26
mi ≡ k mod p  i a ≡ k mod p (**)
 (*) m1 m2 m3 ... mp - 1 = 1 a * 2 a * 3 a * … * (p – 1) a

m1 m2 m3 ... mp - 1 = 1 * 2 * 3 * … * (p – 1) ap-1
nach 3.5 4) und (**) gilt:
(m1 m2 m3 ... mp – 1) ≡ (1 * 2 * 3 * … * (p – 1)) mod p


(**) 1 * 2 * 3 * … * (p – 1) ap-1 ≡ 1 * 2 * 3 * … * (p – 1) mod p
1 * 2 * 3 * … * (p – 1) (ap-1 - 1) ≡ 0 mod p
nach 3.5 1)
nun teilt p als Primzahl keinen der Faktoren 1, 2, .. , (p – 1)
also auch nicht das gesamte Produkt 1 * 2 * 3 * … * (p – 1)


(ap-1 - 1) ≡ 0 mod p
ap-1 ≡ 1 mod p
aus 3.5 4) gilt damit auch
nach 3.5 7)
nach 3.5 1)
ap ≡ a mod p
+++
Zum Satz 3.7 gibt es eine Verallgemeinerung:
Satz 3.8
Eulersche Verallgemeinerung des kleiner Fermatscher Satz
Aus a, m  und ggT(a,m) = 1 folgt
aΦ(m) ≡ 1 mod m
Beweis:
( / m )x hat Φ(m) Elemente des primen Restsystems modulo m:
r1 , r2 , r3 , . . . , rΦ(m)
Wir definieren die a-fachen von den ri mit
und ggT(a, m) = 1: {a r1 , a r2 , a r3 , . . . , a rΦ(m)}
a
nach 3.6 2) (
/m
)x = {a r1 , a r2 , a r3 , . . . , a r Φ(m)}
also existiert für jedes ri genau ein a rk mit ri ≡ a rk mod m und
weiter gilt, dass den verschiedene r i , rj auch verschiedene a rk , a rm
zugeordnet sind. Damit ist klar, dass gilt:
{a r1 , a r2 , a r3 , . . . , a rΦ(m) } = {r1 , r2 , r3 , . . . , rΦ(m)}
wobei die Reihenfolge der Elemente unterschiedlich ist.
27
Weiter gilt mithin:
a r1 a r2 a r3 . . . a r Φ(m) ≡ r1 r2 r3 . . . r Φ(m) mod m
wg. 3.5 4)
 aΦ(m) r1 r2 r3 . . . r Φ(m) ≡ r1 r2 r3 . . . r Φ(m) mod m
wegen ggT(ri , m) = 1 und 3.5 8) folgt somit
 aΦ(m) ≡ 1 mod m
+++
Damit sind alle Voraussetzungen geschaffen um die beiden Sätze 3.9, 3.10 zu
beweisen, die die Grundlage des RSA Verfahrens bilden. Während die Cäsar Chiffre
über die Addition in Restsystemen definiert ist, beruht das RSA Verfahren auf dem
Potenzieren in Restsystemen, d.h. der Schlüssel steht im Exponenten der zu
verschlüsselnden / entschlüsselnden Nachricht.
Satz 3.9
Es seien p, q Primzahlen mit p ≠ q , n  p q, d, e 
ggT(e, Φ(n)) = 1, (e d ) ≡ 1 mod Φ(n) und a 
mit
Dann gilt ae d ≡ a mod n
Bemerkung: Der Satz sagt aus, dass unter den gegebenen Bedingungen in der
Menge
/ n  {0 , 1, 2 , . . . , (n  1)} gilt: ae d = a .
Beweis:
Aus (e d ) ≡ 1 mod Φ(n) folgt per Definition:
es existiert eine ganze Zahl r mit
e d = 1 + r Φ(n)
mit Φ(n) = (p – 1) (q – 1)
= 1 + r (p – 1) (q – 1)
s. Definition 6, Bem. 6
a(p – 1) ( q – 1) ≡ 1 mod (p q)
(a(p – 1) ( q – 1) ) r ≡ (1) r mod (p q)
a (a(p – 1) ( q – 1) ) r ≡ a (1) r mod (p q)
a1 + (p – 1) ( q – 1) r ≡ a 1 mod (p q)
a1 + Φ(n) r ≡ a mod (p q)
wg.
wg.
wg.
wg.
wg.
ae d ≡ a mod (p q)
ae d ≡ a mod (n)
wg. e d = 1 + r Φ(n)
wg. n = p q
+++
28
3.8: aΦ(m) ≡ 1 mod m
3.5 4) r-mal angewendet
3.5 4)
(1) r = 1
Φ(n) = (p – 1) (q – 1)
Satz 3.10
Beweis:
Lösung von Kongruenzen 1. Grades6 (Satz 3.5.6)
Es seien p, q Primzahlen mit p ≠ q , n  p q, e  mit
ggT(e, Φ(n)) = 1,
Dann hat die Kongruenz (e * d) ≡ 1 mod Φ(n) eine Lösung d 
.
Als abkürzende Schreibweise verwenden wir: m := Φ(n),
zu zeigen:
ggT(e,m) = 1  es ex. ein d mit (e d) ≡ 1 mod m
ggT(e,m) = 1
 nach Satz 3.3 existieren x0 , y0 
mit
ggT(e,m) = e x0 + m y0 = 1  e x0 - 1 = m (- y0 )
e x0 ≡ 1 mod m  d = x0 ist eine Lösung
+++
Satz 3.10 sagt nur aus, dass eine Lösung existiert, aber wie sie errechnet wird ist
nicht angegeben. Dazu haben wir aber schon eine Lösung in Satz 3.4 erarbeitet:
Die Kongruenz 1. Grades wird mit Hilfe des Euklidischen Algorithmus gelöst indem er
„vorwärts“ und dann „rückwärts“ angewendet wird
Machen wir das Verfahren der „vorwärts“ und „rückwärts“ Anwendung des
Euklidischen Algorithmus an einem Beispiel klar, in dem eine Kongruenz 1. Grades
konkret gelöst wird.
Dazu geben wir folgende Daten vor:
p = 1223
q = 1987
n = p * q = 1223 * 1987 = 2.430.101
Φ(n) = Φ(p * q)) = (p – 1) (q - 1) = 1222 * 1986 = 2.426.892
e = 948047
Die Kongruenzgleichung:
(948047 * d ) ≡ 1 mod 2426892
ist zu lösen.
6
Satz 3.5.6 sagt mehr aus: ggT(e, Φ(n)) = 1  es ex. ein d mit (e d) ≡ 1 mod m,
hier wird nur die Richtung „“ bewiesen und im weiteren benutzt
29
Schritt 1: Vorwärtsanwendung
Zu zeigen ist, dass ggT(e, Φ(n)) = 1 gilt (s. auch Satz 3.4, Beispiel 2)
Mit Hilfe des in Satz 3.4 beschriebenen Euklidischen Algorithmus
bestimmen wir den
ggT(e, Φ(n)) = ggT(948047, 2426892)
Auf der übernächsten Seite sind die Schritte in einer Tabelle dargestellt
(linker Tabellenteil, rechts vom schwarzen Pfeil). Dabei wird ausgehend
von
0.
Φ(n)
= q1 *
e
+
r2
(siehe Satz 3.4, Bemerkung 1))
2426892 = 2 * 948047 + 530798
der ggT ermittelt und man erhält aus Zeile i = 14: r 15 = 1 = ggT(e, Φ(n))
Schritt 2: Rückwärtsanwendung
Nach Satz 3.3 müssen d, a 
existieren, so dass gilt:
ggT(e, Φ(n)) = (e * d) - a Φ(n) .
Weiter gilt nach dem Ergebnis von Schritt 1 ggT(e, Φ(n)) = 1, also ist die
Gleichung
e
* d – a *
Φ(n) = 1, d, a 
948047 * d – a * 2426892 = 1
zu lösen, hier also konkret:
Nach Satz 3.4 liefern die letzten beiden Zeilen des Euklidischen
Algorithmus:
….
t -2. r t-2 = qt-1 r t-1 + r t mit 0 ≤ rt < rt-1
t -1. r t-1 = qt r t
und rt = ggT(a,b)
und im Beispiel die letzten 4 Zeilen:
.…
11. 187 = 6 * 30 + 7
12. 30 = 4 * 7 + 2
13.
7=3* 2+1
14.
2=2* 1
I)
und r15 = 1 = ggT(e, Φ(n))
Zeile 13 wird nach r15 = 1 umgeformt und liefert damit:
1 = 7 * 1 – 3 * 2 (#)
30
II)
aus Zeile 12 ergibt sich der Rest r14 = 2 nach umformen
2 = 30 – 4 * 7
und einsetzen in (#) liefert:
1 = 7 * 1 – 3 * (30 – 4 * 7) = 7 * 1 – 3 * 30 - 3 * (- 4 * 7)
= 7 * (1 + 3 * 4) – 3 * 30
und somit:
1 = 7 * 13 – 3 * 30 = 13 * 7 – 3 * 30 (*)
III)
aus Zeile 11 ergibt sich der Rest r13 = 7 nach umformen
7 = 187 – 6 * 30
und einsetzen in vorherige errechnete Zeile (*) liefert:
1 = 13 * (187 – 6 * 30) – 3 * 30 = 13 * 187 – 13 * 6 * 30 – 3 * 30
= 13 * 187 – (13 * 6 + 3) * 30
und somit:
1 = 13 * 187 – 81 * 30
So wird nun weiter verfahren, bis man die oberste Zeile (0) erreicht
(Details auf der nächsten Seite), und es ergibt sich dann schließlich
aus XIV) als Lösung von:
948047 * d – a * 2426892 = 1
1 = 1051235 * 948047 – 410657 * 2426892
31
d = 1051235
a = 410657
(e d ) ≡ 1 mod Φ(n)
mit
p
1223
q
1987
i
Φ(p*q)
0
2426892
=
2
*
948047
+
530798
XIV
=
229921
*
948047 -
1
948047
=
1
*
530798
+
417249
XIII
=
229921
* (
2
530798
=
1
*
417249
+
113549
XII
=
49185
*
3
417249
=
3
*
113549
+
76602
XI
=
49185
4
113549
=
1
*
76602
+
36947
X
=
5
76602
=
2
*
36947
+
2708
IX
6
36947
=
13 *
2708
+
1743
7
2708
=
1
*
1743
+
8
1743
=
1
*
965
9
965
=
1
*
10
778
=
4
11
187
=
12
30
13
14
Φ(n) = Φ(p * q) = (p – 1) (q - 1)
(p-1) (q-1)
2426892
e
948047
e
d
410657
*
948047 -
1
*
417249 -
180736
*
* (
417249 -
3
*
16004
*
76602
-
33181
*
=
16004
* (
76602
-
2
*
VIII
=
755
*
2708
-
1173
*
965
VII
=
755
* (
2708
-
1
*
+
778
VI
=
337
*
965
-
418
*
778
+
187
V
=
337
* (
965
-
1
*
*
187
+
30
IV
=
13
*
187
-
81
*
6
*
30
+
7
III
=
13
* (
187
-
6
*
=
4
*
7
+
2
II
=
7
*
1
-
3
*
7
=
3
*
2
+
1
I
1 =
7
*
1
-
3
*
2
=
2
*
1
+
0
(
(
(
(
(
(
(
2426892
-
530798
) -
530798
-
113549
) -
113549
-
36947
) -
36947
2
180736
1
33181
e
Φ(p*q)
a
* 948047 ) =
1051235 *
948047
-
410657 *
2426892
* 530798
=
229921
*
948047
-
410657 *
530798
* 417249 ) =
229921
*
417249
-
180736 *
530798
* 113549
=
49185
*
417249
-
180736 *
113549
1
*
76602
) =
49185
*
76602
-
33181
*
113549
1173
*
36947
=
16004
*
76602
-
33181
*
36947
-
13
*
2708
) =
16004
*
2708
-
1173
*
36947
1743
) -
418
*
1743
=
755
*
2708
-
1173
*
1743
1743
-
1
*
965
) =
755
*
965
-
418
*
1743
778
) -
81
*
778
=
337
*
965
-
418
*
778
778
-
4
*
187
) =
337
*
187
-
81
*
778
30
) -
3
*
30
=
13
*
187
-
81
*
30
30
-
4
*
7
) =
13
*
7
-
3
*
30
2
Vorwärts (rechts vom schwarzen Pfeil): Aus der vorletzten Zeile des linken Blocks ergibt sich der Rest 1 und damit gilt: ggT(e, Φ(n)) = 1
Rückwärts (rechts vom blauen Pfeil):
Aus der Rechnung im rechten Block ergibt sich aus der obersten Zeile dann d = 1051235
32
4. Die Cäsar Chiffre, mathematischen Modellierung
Die Cäsar Chiffre ist ein symmetrisches Verfahren, d.h. zum Ver- und Entschlüsseln
wird der gleiche Schlüssel benutzt. Als Konsequenz daraus muss zwischen Sender
und Empfänger der Schlüssel ausgetauscht werden. Dies ist aber eine kritische
Aktion und muss daher wieder verschlüsselt erfolgen also ist wieder ein
Schlüsselaustausch notwendig etc.
4.1 Das Prinzip der Cäsar Chiffre
Das Verschlüsselungsrad mit 26 Buchstaben legt schon die Betrachtung des
entsprechenden vollständigen Restsystems modulo 26, / 26 , nahe.
Dazu ordnen wir jedem der 26 Buchstaben des Alphabets eineindeutig eine ganze
Zahl zu ( 0, 1, 2, 3, 4, 5, … , 24, 25 ) ↔ ( A, B, C, D, E, … , Y, Z ) (#)
1. I.
2.
3.
4.
5.
6.
Der Empfänger R wählt einen Schlüssel, wobei der Schlüssel ein
Buchstabe zwischen B und Z ist, und das entspricht einer natürliche
Zahl zwischen 1 und 25. A ist ausgeschlossen, da damit nicht
verschlüsselt wird, sondern der Text gleich bleibt.
II. Der Empfänger sendet den Schlüssel an den Sender. Das muss natürlich
über ein sicheren Kanal erfolgen, wie immer der auch realisiert wird.
Der Sender S empfängt den Schlüssel.
S verfasst die Nachricht P = (p1 , p2 , p3 , … , pm) entsprechend der obigen
Zuordnung (#)
S verschlüsselt mit dem Schlüssel und erhält die verschlüsselte Nachricht
C = (c1 , c2 , c3 , … , cm)
S sendet C an R.
R entschlüsselt C mit Hilfe des geheimen Schlüssels und erhält P
Der Nachteil des symmetrischen Verfahren ist klar:
Es ist ein Austausch des Geheimschlüssels erforderlich.
4.2 Schritte der Cäsar Chiffre
4.2.1 Die Schlüsselerzeugung
Wie oben beschrieben ist der Schlüssel ein Buchstabe zwischen B und Z, und das
entspricht einer natürliche Zahl zwischen 1 und 25. A ist ausgeschlossen, da damit
nicht verschlüsselt wird, sondern der Text gleich bleibt.
33
4.2.2 Die Verschlüsselung / Entschlüsselung
Mit dem „Textbuchstaben“ t, „verschlüsselten Buchstaben“ v, Schlüssel s, wobei
t, v, s  / 26 sind, wird
verschlüsselt: (Textbuchstabe) + (Schlüssel) ≡ (verschlüsselter Buchstabe) mod 26
entschlüsselt: (verschlüsselter Buchstabe) - (Schlüssel) ≡ (Textbuchstabe) mod 26
(t + s) ≡ v mod 26
(v – s) ≡ t mod 26
Verschlüsselung:
Entschlüsselung:
4.3 Ein Beispiel
Führen wir die Verschlüsselung nach dieser Methodik nun am Beispiel von 2.2 durch.
Dazu verwenden wir die folgende Zuordnungstabelle:
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
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0
1
2 3 4 5 6
7
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
und damit ergibt sich folgende Verschlüsselung mit H: s = 7 und (t + s) ≡ v mod 26:
Text
t
t+s
v
verschlüsselt
d
3
10
10
K
a s g e s
0 18 6 4 18
7 25 13 11 25
7 25 13 11 25
H Z N L Z
Text
t
t+s
v
verschlüsselt
a l
l
i e
0 11 11 8 4
7 18 18 15 11
7 18 18 15 11
H S S P L
n
13
20
20
U
a m
0 12
7 19
7 19
H T
t
19
26
0
A
g
6
13
13
N
e
4
11
11
L
b i e t
1 8 4 19
8 15 11 26
8 15 11 0
I P L A
g
6
13
13
N
s
18
25
25
Z
e
4
11
11
L
r
17
24
24
Y
f
5
12
12
M
a
0
7
7
H
t
19
26
0
A
z
25
32
6
G
e
4
11
11
L
l
11
18
18
S
l
11
18
18
S
Zum Vergleich das Ergebnis von Kapitel 2.2 :
K H Z N L Z H T
A N L I P L A N
H S S P L U Z G
34
L Y M H L S S A
Nun zur Entschlüsselung mit H: s = 7 und (v – s) ≡ t mod 26 :
verschlüsselt
v
v-s
t
entschlüsselt
K
10
3
3
d
H Z N
7 25 13
0 18 6
0 18 6
a s g
L
11
4
4
e
Z
25
18
18
s
H T
7 19
0 12
0 12
a m
A
0
-7
19
t
N
13
6
6
g
L
11
4
4
e
I P L A N
8 15 11 0 13
1 8 4 -7 6
1 8 4 19 6
b i e t g
verschlüsselt
v
v-s
t
entschlüsselt
H S S P
7 18 18 15
0 11 11 8
0 11 11 8
a l
l
i
L
11
4
4
e
U
20
13
13
n
Z
25
18
18
s
L
11
4
4
e
Y
24
17
17
r
M
12
5
5
f
H
7
0
0
a
G
6
-1
25
z
L
11
4
4
e
S
18
11
11
l
S A
18 0
11 -7
11 19
l
t
Vergleichen wir das Ergebnis in den Zeilen „entschlüsselt“ mit den Zeilen „Text“ in
der oberen Tabelle, so erkennen wir, dass sie beide gleich sind.
Die Berechnung der Reste ist nur für die blau markierten Elemente notwendig, da sie
/ 26 = { 0, 1, 2, 3, 4, 5, … , 24, 25 } enthalten sind, z.B.:
nicht in der Menge
(19 + 7) ≡ 0 mod 26
(0 - 7) ≡ 19 mod 26
da 19 + 7 = 26 = 1 * 26 + 0
da 0 - 7 = -7 = (-1) 26 + 19
also den Rest 0 ergibt,
also den Rest 19 ergibt.
4.4 Angriff auf die Cäsar Chiffre
Wie gleich gezeigt wird ist dieses Verfahren leicht zu brechen. Dazu muss allerdings
der Angreifer erst einmal wissen, dass es sich hier um die Cäsar Chiffre handelt.
Ganz allgemein gilt, dass das Verfahren mit dem verschlüsselt wird meist nicht
geheim zu halten ist. Daher sollte stets die Gültigkeit des Kerckhoffs'schen Prinzips
voraussetzen werden. Es sagt aus, dass die Sicherheit eines Verschlüsselungsverfahrens nicht von der Geheimhaltung des Verfahrens selbst abhängt. Die
Sicherheit gründet sich ausschließlich auf die Geheimhaltung des Schlüssels.
Gehen wir also davon aus, dass die Cäsar Chiffre verwendet wurde. Es gibt maximal
26 verschiedene Schlüssel, da das Alphabet aus 26 Buchstaben besteht. Also
könnten wir einfach alle durchprobieren. Aber es gibt einen effizienteren Ansatz, der
sich der statistischen Verteilung der Buchstaben in einem Text bedient.
Tatsächlich kommen in langen Texten die verschiedenen Buchstaben nicht gleich
häufig, sondern unterschiedlich oft vor.
35
a
b
c
d
e
f
g
h
i
6,51%
1,89%
3,06%
5,08%
17,40%
1,66%
3,01%
4,76%
7,55%
j
k
l
m
n
o
p
q
r
0,27%
1,21%
3,44%
2,53%
9,78%
2,51%
0,67%
0,02%
7,00%
s
t
u
v
w
x
y
z
ß
7,27%
6,15%
4,35%
0,67%
1,89%
0,03%
0,04%
1,13%
0,31%
Tabelle: Häufigkeit der Buchstaben in Texten, alphabetisch sortiert7
e
n
i
s
r
a
t
d
h
17,40%
9,78%
7,55%
7,27%
7,00%
6,51%
6,15%
5,08%
4,76%
u
l
c
g
m
o
b
w
f
4,35%
3,44%
3,06%
3,01%
2,53%
2,51%
1,89%
1,89%
1,66%
k
z
p
v
j
y
x
q
ß
1,21%
1,13%
0,79%
0,67%
0,27%
0,04%
0,03%
0,02%
0,31%
Tabelle: Häufigkeit der Buchstaben in Texten, nach Häufigkeit sortiert
Dies ist übrigens von der Sprache abhängig. So haben etwa deutsche, englische,
französische, spanische, italienische und schwedische Texte - mit Berücksichtigung
der sprachspezifischen Buchstaben (z.B. ö, ü, é, è, ê) - unterschiedliche
Verteilungen. Details dazu findet man z.B. in
http://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit
Kommen wir nun auf unser Beispiel zurück und untersuchen den Text:
KHZNLZHT
LPULUSLI
PTKYPAAL
PZZLUILP
ANLIPLAN
LUKPLILS
UKPLCVLS
BUZQLKVJ
HSSPLUZG LYMHLSSA PUKYLPAL PSLPUKLT
NLYPULPU LTGDLPAL UKPLHXBP AHULYBUK
RLYKPLPU KLYSHUKL ZZWYHJOL RLSALUOL
ONHSSPLY
Gehen wir davon aus, dass wir wissen, dass die Cäsar Chiffre verwendet wurde.
Eine Analyse der Häufigkeiten der Buchstaben im Text (168 Buchstaben) liefert:
7
Quelle: http://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit
36
L
P
U
K
S
A
H
Y
Z
38
21
17
12
12
9
9
9
8
22,62%
12,50%
10,12%
7,14%
7,14%
5,36%
5,36%
5,36%
4,76%
N
I
T
B
O
G
J
R
V
5
4
4
3
3
2
2
2
2
2,98%
2,38%
2,38%
1,79%
1,79%
1,19%
1,19%
1,19%
1,19%
C
D
M
Q
W
X
E
F
1
1
1
1
1
1
0
0
0,60%
0,60%
0,60%
0,60%
0,60%
0,60%
0,00%
0,00%
Tabelle der Häufigkeiten der Buchstaben im Beispiel, nach Häufigkeit sortiert
Vergleichen wir nun die allgemeine Verteilung (s. o.) mit der Verteilung im
verschlüsselten Text, so ergibt sich folgende Tabelle:
Verschlüsselter Text
L
22,62%
P
12,50%
U
10,12%
K
7,14%
S
7,14%
allgemeine Verteilung
17,40%
e
9,78%
n
7,55%
i
7,27%
s
7,00%
r
Schlüssel basierend auf
allgemeiner statistischer
Verteilung
H
C
M
S
B
Tabelle zur Schlüsselermittlung
Das legt auf jeden Fall den Schlüssel „H“ nahe. Da die Häufigkeiten der 2. - 5.
meisten Buchstaben dicht beieinander liegen, vertauschen wir für die 2. und 3.
meisten Buchstaben die Zuordnung zur allgemeinen Verteilung, also P → i und
U → n, so erhalten wir ebenfalls den Schlüssel „H“.
Verschlüsselter Text
L
22,62%
U
10,12%
P
12,50%
K
7,14%
S
7,14%
allgemeine Verteilung
17,40%
e
9,78%
n
7,55%
i
7,27%
s
7,00%
r
Schlüssel basierend auf
allgemeiner statistischer
Verteilung
H
H
H
S
B
Tabelle zur Schlüsselermittlung, 2. Ansatz
Damit lohnt es sich zur Entschlüsselung mit „H“ zu beginnen. Die Entschlüsselung
erfolgt analog zur Verschlüsselung, nur von „innen nach außen“, d.h. die Zuordnung
erfolgt in umgekehrter Pfeilrichtung auf dem Verschlüsselungsrad in Abb. 1.
Tatsächlich ergibt sich wieder der ursprüngliche Text.
Man erkennt, dass durchaus ganz unterschiedliche Methoden zur Kryptografie und
zur Kryptoanalyse (hier Statistik) verwendet werden.
37
5. Das RSA Verfahren
Die in Kapitel 2 betrachtete Cäsar Chiffre ist ein symmetrisches Verfahren, d.h. zum
Ver- und Entschlüsseln wird der gleiche Schlüssel benutzt. Als Konsequenz daraus
muss zwischen Sender und Empfänger der Schlüssel ausgetauscht werden. Dies ist
aber eine kritische Aktion und muss daher wieder verschlüsselt erfolgen also ist
wieder ein Schlüsselaustausch notwendig etc.
Eine deutliche Verbesserung liefert ein Verfahren, das ähnliche abläuft wie die
Versendung einer Nachricht in einem verschlossenen Kästchen:
Im Prinzip wird wie folgt verfahren:
1. Der Empfänger R bestimmt (I) die Sprache in der kommuniziert wird und
beschafft (II) ein offenes Schnappschloss, zu dem nur er die Schlüssel besitzt.
(III) Information über die zu verwendenden Sprache und das Schloss
hinterlegt er an einem öffentlich zugänglichen Platz.
2. Der Sender S nimmt das offene Schnappschloss aus einem Regal.
3. S schreibt seine Nachricht an R in der vorgegebenen Sprache.
4. S legt einen Brief mit der nur für R bestimmten Information in eine Schachtel
und verschließt sie mit dem Schnappschloss.
5. S sendet die verschlossene Schachtel an R.
6. R öffnet die Schachtel mit dem zum Schloss passenden Schlüssel, R
entnimmt die Nachricht und liest sie.
5.1 Das Prinzip des öffentlichen Schlüssels
Die Implementierung des oben grob beschriebenen Verfahrens ist das
asymmetrische oder Public-Key-Verfahren. Der Schlüssel (oben das Schloss) – eine
natürliche Zahl - zum Verschlüsseln eines Textes ist öffentlich zugänglich. Allerdings
kann mit dem Schlüssel wiederum nicht entschlüsselt werden. Grob läuft das
Verfahren zwischen Sender S(ender) und Empfänger R(eceiver) wie folgt ab:
1. I)
R erzeugt eine große natürliche Zahl n. Die Nachrichten und die verschlüsselten Nachrichten sind als Element aus n  / n
darzustellen
II) R erzeugt eine große natürliche Zahl e zum Verschlüsseln und einen
geheimen Schlüssel d - ebenfalls eine natürliche Zahl - zum Entschlüsseln
III) R legt in einem öffentlichen Verzeichnis den öffentliche Schlüssel (n, e) ab
2. S möchte R eine geheime Nachricht senden und holt dazu aus dem oben
angegebenen öffentlichen Verzeichnis den Schlüssel (n, e) ab
3. S verfasst die Nachricht P  n  / n
4. S verschlüsselt mit dem Schlüssel e und erhält die verschlüsselte Nachricht
C
n

/n
5. S sendet C an R
6. R entschlüsselt C mit Hilfe des geheimen Schlüssels d und erhält P
38
Im Wesentlichen muss das Verfahren natürlich sicherstellen, dass ohne großen
Rechenaufwand – gemeint ist in vertretbarer Zeit - weder auf den Ursprungstext
noch auf den geheimen Schlüssel geschlossen werden kann. Nicht einmal S kann
seine eigene verschlüsselte Nachricht wieder entschlüsseln!
Der Vorteil der asymmetrischen Verfahren ist klar:
Es ist kein Geheimschlüssel Austausch erforderlich.
Wie wir später sehen werden hat das Verfahren auch einen Nachteil, denn der
Rechenaufwand für asymmetrische Verfahren ist deutlich höher als für symmetrische
Verfahren.
5.2 Schritte des RSA Verfahrens
Zur Beschreibung und Rechtfertigung des RSA Verfahrens werden wir nun die
mathematischen Vorbereitungen benötigen.
5.2.1 Die Schlüsselerzeugung
1. R wählt zwei Primzahlen p, q mit p ≠ q
2. R berechnet:
n=p*q
Φ (n) = (p – 1) (q – 1)
3. R wählt ein e  mit 1 < e < Φ (n) mit ggT(e, Φ (n)) = 1
4. R berechnet d 
mit e * d ≡ 1 mod(Φ (n))
siehe oben Beispiel zu Satz 3.10 und Euklidischen Algorithmus
Es sind dann (n, e) der öffentliche Schlüssel und d der geheime Schlüssel von R.
ACHTUNG:
Die Größen p, q, Φ(n) sind geheim zu halten. Ist einem Angreifer eine
dieser Größen zusätzlich zum öffentlichen Schlüssel (n, e) bekannt, so
kann er den Geheimschlüssel d berechnen!
5.2.2 Die Verschlüsselung
Aus dem öffentlichen Schlüssel (n, e) kann nun S die Nachricht einfach
verschlüsseln:
1. S schreibt den Klartext und codiert ihn zu N  / n
2. S berechnet den Geheimtext C ≡ Ne mod n , C  / n
3. S sendet den Geheimtext C an R
39
5.2.3 Die Entschlüsselung
R entschlüsselt durch die Berechnung von Cd  / n , denn nach Satz 3.9
gilt für N  / n
gilt Ne d ≡ N mod n , und damit folgt Cd ≡ N mod n,
N /n .
5.3 Die Sicherheit von RSA
Die Sicherheit des RSA Verfahrens hängt vor allem daran, dass es schwierig ist ein
gegebenes Produkt von Primzahlen wieder in die Primzahlen zu zerlegen. Eine
andere Möglichkeit ist, dass ein Angreifer die Kongruenz C ≡ xe mod n löst, also
die unverschlüsselte Nachricht x aus den bekannten Werten (n, e) und der
verschlüsselten Nachricht C bestimmt. Bis heute ist nicht bekannt, ob ein „einfaches“
und „schnelles“ Rechenverfahren existiert, dass die oben angegebene Kongruenz
löst. Dabei ist noch nicht einmal klar, ob das Lösen der oben angegebenen
Kongruenz einfacher, gleich schwierig oder schwieriger ist als die Zerlegung von n in
die Primfaktoren p, q.
Gehen wir nun davon aus, dass ein Angreifer, der die verschlüsselten Nachrichten
entschlüsseln möchte, mindestens den öffentlichen Schlüssel (e, n) mit n = p q und
natürlich die verschlüsselte Nachricht C kennt. Dann untersuchen wir was möglich
ist, wenn er weitere Informationen besitzt.
5.3.1 Ansätze für Angriffe
 p, q bekannt
Damit kann ein Angreifer nach dem oben gesagten Φ(n) = (p – 1) (q – 1)
bestimmen und d berechnen. Also sind alle Parameter bekannt und der
Angreifer kann alle Nachrichten Nk, die mit (n, ek) verschlüsselt wurden,
entschlüsseln.
 (p + q) bekannt
Auch damit kann ein Angreifer Φ (n) = (p – 1) (q – 1) bestimmen und d
berechnen. Dazu geht man wie folgt vor:
Φ (n) = (p – 1) (q – 1)
= p q – (p + q) + 1
durch aus multiplizieren
= n – (p + q) + 1
weil n = p q öffentlich ist
40
Zusätzlich lassen sich auch p und q direkt aus der Lösung einer quadratischen
Gleichung direkt ermitteln:
(x – p) (x – q) = x2 – x (p + q) + p q
= x2 – x (p + q) + n
= (x – x1) (x – x2)
mit x1,2
pq


2
2
pq
 2  n


und
p = x1 und q = x2
Also sind auch in diesem Fall alle Parameter bekannt und der Angreifer kann
alle Nachrichten Nk, die mit (n, ek) verschlüsselt wurden, entschlüsseln.
 p, q aus n ermitteln
Dieses Problem wird allgemein als “schwierig” eingeschätzt, d.h. dass man im
allgemeinen sehr, sehr lange rechnen muss, um für “große” Zahlen n die
Primzahlzerlegung zu ermitteln (siehe oben). Man nennt dies das
Faktorisierungsproblem. Wie schon oben gesagt hängt die Sicherheit des
RSA Verfahrens direkt vom Schwierigkeitsgrad der Primzahlzerlegung ab.
Allerdings müssen p und q mit Bedacht gewählt werden, denn sonst wird aus
dem “schwierigen” ein relativ schnell lösbares Problem. Dazu siehe unten
5.3.2, Abschnitt 1. p, q.
Zusammenfassend bleibt zu sagen, dass nur der öffentliche Schlüssel (n, e) bekannt
sein darf. Jeder weitere bekannte Parameter, sei es p, q oder d zerstört sofort die
Sicherheit des Verfahrens, d.h. man könnte die Nachricht auch gleich im Klartext
senden.
RSA wurde 1977 veröffentlicht, ist also mehr als 30 Jahre alt, und sicher eines der
am meisten angegriffenen Public-Key-Verfahren. Jedoch konnte kein Angriff bei
„vernünftiger“ Wahl der Parameter (siehe unten 4.3.2), RSA brechen.
Nichtsdestotrotz gab es 2011 einen erfolgreichen Angriff auf die IT-SicherheitsAbteilung der Firma EMC, RSA Security, siehe „Erfolgreicher Cyber-Angriff auf RSA“,
[ 7 ] wobei ein Angriff auf die Firma die das RSA Verfahren vermarktet erfolgreich
war - das RSA System selbst aber nicht angegriffen wurde.
5.3.2 Wahl von p, q, e, d
 p, q
 p, q sollten mindestens 2512 für sehr hohe Sicherheit 22048 groß sein,
 p – 1, q – 1, p + 1, q + 1 sollten jeweils mindestens einen großen Primteiler
r, s, t, u haben
41
 r – 1, s – 1 sollten jeweils große Primteiler besitzen
 p und q sollten nicht sehr dicht beieinander liegen, da sie sonst einfacher
ermittelt werden können (Wiener Angriff8). Konkret sollte bei gewähltem p
für q nicht gelten: p < q < 2 p und ½ q < p < q
An dieser Stelle noch ein Hinweis darauf, wie viele Primzahlen es von der
Größenordnung 2512 gibt:
Der Primzahlsatz sagt aus, dass es etwa n/ln(n) Primzahlen kleiner oder
gleich n gibt.
Damit können wir wie folgt abschätzen:
2512
2511
2512
2511
2511  2
1 







512
511
ln(2 ) ln(2 ) 512 ln(2) 511 ln(2)
ln(2)  512 511 
2511

 0,003906  0,001957 
0,69315

2511
0,001949  0,002812 2511
0,69315
 2,812 10 3 2511  2,812 10 3 10153,83
 1,88531 10151
Angesicht von 1077 [ 8 ] Atomen im Weltall also eine riesige Anzahl von derart
großen Primzahlen.
 e
Es muss e > 2 sein, da ggT(e, Φ (n)) = 1 gelten muss und da Φ (n) als
Produkt zweier gerader Zahlen (Primzahl – 1) gerade ist, muss e ungerade
sein. e sollte nicht zu klein gewählt werde, da es ein Verfahren gibt, das für
kleine Zahlen e (z.B. e = 3) und mehreren gleichen Nachrichten die mit den
öffentlichen Schlüsseln (nk, e) verschlüsselt wurden, direkt den Klartext
ermittelt – ohne Kenntnis von p, q, d. e = 216 + 1 scheint ein häufig
verwendete Wert zu sein.
 d
d ist durch e bestimmt und auch dieser Parameter sollte nicht zu klein gewählt
werden, da sonst der oben erwähnte Wiener - Angriff angewendet werden
kann. Konkret heißt das, dass gelten sollte d  4 n
8
Wiener Angriff benannt nach seinem Entdecker dem Mathematiker Michael J. Wiener
42
6. Beispiele
Es soll nun ein Text mit der RSA Methode verschlüsselt werden.
Dazu ordnen wir den Buchstaben in alphabetischer Reihenfolge ihre Stelle im
Alphabet zu:
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
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Dazu stellen wir den zu verschlüsselnden Text „Christoph“ ohne Leerzeichen und
ohne Unterscheidung von Groß- / Kleinschreibung dar und erhalten die zu
übermittelnde Nachricht, die dann buchstabenweise verschlüsselt wird:
christoph
Die Schlüsselerzeugung erfolgt wie oben beschrieben:
1. wähle zwei Primzahlen p, q mit p ≠ q:
p = 5, q = 7
2. berechne n = p * q und Φ (n) = (p – 1) (q – 1):
n = p * q = 35, Φ(n) = (p – 1) * (q – 1) = 4 * 6 = 24
3. wähle ein e 
mit 1 < e < Φ (n) mit ggT(e, Φ (n)) = 1
e = 11 weil 1 < 11 < 24 mit ggT(11, 24) = 1
4. berechne d 
mit e * d ≡ 1 mod (Φ (n)):
d = 11 weil aus e * d = 121 und Φ (n) = 24
und somit gilt: 121 ≡ 1 mod (24)
folgt: 121 = 5 * 24 + 1
Der öffentliche Schlüssel ist damit (n, e) = (35, 11) und der geheime Schlüssel
d = 11
Hinsichtlich der Vorgaben für eine hohe Sicherheit sind die Parameter völlig falsch
gewählt, da p und q viel zu klein sind und aus n sofort errechnet werden können,
denn die Primzahlzerlegung von 35 ist sehr leicht und sofort zu sehen. Außerdem
sind beide Schlüssel e und d gleich.
Als Beispiel sind die Parameter geeignet, da die Zwischenergebnisse noch mit einem
Taschenrechner ermittelt werden können. Weiter gilt auch, dass die buchstabenweise Verschlüsselung nicht sinnvoll ist (siehe Kapitel 1, verallgemeinert im Sinne
von einer Vertauschung der Buchstaben). Vielmehr soll das Wort blockweise
verschlüsselt werden. Aber auch hier gilt, dass ansonsten die Verschlüsselung nicht
mit Hilfe eines Taschenrechners erfolgen könnte.
43
Der Prozess liefert folgende Ergebnisse:
Nachricht
c
h
r
i
s
t
o
p
h
Stelle im
Alphabet a
3
8
18
9
19
20
15
16
8
177.147
8.589.934.592
12
22
e
a
Rest
c=
e
a
d
c 743.008.370.688 584.318.301.411.328
64.268.410.079.232 31.381.059.609
2
4
2.048
4.194.304
116.490.258.898.219 204.800.000.000.000 8.649.755.859.375 17.592.186.044.416
24
20
15
1.521.681.143.169.020 204.800.000.000.000 8.649.755.859.375
8.589.934.592
11
22
285.311.670.611
584.318.301.411.328
d
3
8
18
9
19
20
15
16
8
Entschlüsselte
Nachricht
c
h
r
i
s
t
0
p
h
Rest
c
Die unverschlüsselte Nachricht lautet: 030818091920151608
Die gesendete Nachricht lautet:
122202042420151122
Die entschlüsselte Nachricht lautet:
030818091920151608
44
Eine deutlich besseres Beispiel findet man in Wikipedia: RSA-Kryptosystem [14] mit:
p = 307, q = 859 und damit n = 263713 und Φ(n) = 262548
öffentlicher Schlüssel (n, e) = (263713,1721),
geheimer Schlüssel d = 1373
Der Text wird in 3-Zeichen Blöcken ver- und entschlüsselt (wie auch oben) mit
A – 01
B – 02
…
Z – 26
und damit ergibt sich:
Klartext
W I K
I
P E
D I
A
unverschlüsselte Nachricht
23 09 11
09 16 05
04 09 01
verschlüsselte Nachricht
00 17 15
18 43 04
21 99 83
Hier kommt man mit Mitteln der statistischen Auswertung der Zahlen als
Repräsentanten der Buchstaben nicht weiter, denn in diesem Beispiel sind dem
verschlüsselten Buchstaben „I“ unterschiedliche Zahlen zugeordnet.
45
7. Zusammenfassung
Wie zu Beginn angekündigt wurden in dieser Arbeit zwei kryptologische Verfahren
vorgestellt, die sich sehr wesentlich unterscheiden.
Generell bleibt zu sagen, dass offensichtlich zwar das asymmetrische Verfahren
deutlich sicherer ist, aber der Zuwachs an Sicherheit geht zu Lasten von einem
wesentlich höheren Rechenaufwand und damit ist ihre Anwendung auch sehr viel
teurer.
Aus den verwendeten Quellen ist deutlich zu erkennen, dass moderne symmetrische
Verfahren ebenfalls deutlich sicherer sind als die Cäsar Chiffre und dass heute eine
Kombination von asymmetrischen und symmetrischen Verfahren verwendet wird. So
erfolgt beispielsweise der Nachrichtenaustausch über ein symmetrisches Verfahren,
wobei der Schlüssel selbst vorher über ein asymmetrisches Verfahren ausgetauscht
wird.
Für die Zukunft bleibt es interessant zu verfolgen wie Internet Anwendungen neue
Herausforderungen für die Kryptologie und damit auch für die Mathematik bringen
werden – sowohl aus Richtung der Kryptografie als auch der Kryptoanalyse und dies
unter Berücksichtigung immer leistungsfähigeren Rechnern.
46
8. Literaturverzeichnis
1. Christian Karpfinger, Hubert Kiechle: Kryptologie, Vieweg+Teubner, 2009
2. Kryptografie: Informatikmaterialien von Tino Hempel
http://www.tinohempel.de/info/info/kryptografie/
3. Gymnasium am Thie, Website des Blankenburg Gymnasiums
http://www.gat-blankenburg.de/pages/fach/info/krypto.htm
4. Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman: An introduction to
Mathematical Cryptography, Springer Verlag, 2008
5. Gaius Iulius Caesar: Der Gallische Krieg, Reclam Verlag, 2000
6. I. Niven, H. S. Zuckermann: Einführung in die Zahlentheorie, BI
Hochschultaschenbücher, Band 46, 1976
7. Computerworld.ch, Jens Stark,: Erfolgreicher Cyber-Angriff auf RSA Security
http://www.computerworld.ch/news/security/artikel/erfolgreicher-cyber-angriffauf-rsa-security-56055/ , 18.03.2011
8. Prof. Dr. C. Bessenrodt, Universität Hannover: Verblüffendes
http://fma2.math.uni-magdeburg.de/~bessen/krypto/krypto8.htm
9. Kryptologie, Allgemeiner Überblick, Geschichte
http://www-user.tu-chemnitz.de/~uste/krypto/sources/gesch.htm
10. Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman: An introduction to
Mathematical Cryptography, Springer Verlag, 2008
11. Einführung in die algebraische Zahlentheorie , A. Schmidt, Springer Verlag
2007, ISBN: 978-3-540-45973-6
Kapitel 1 Rechnen mit Restklassen
12. Jan Stellet: FACHARBEIT „Lineare diophantische Gleichungen“, 22.03.2006
http://jstc.de/blog/uploads/Lineare_diophantische_Gleichungen.pdf
13. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,
R.L. Rivest, A. Shamir, and L. Adleman
http://securespeech.cs.cmu.edu/reports/RSA.pdf
14. Wikipedia: RSA-Kryptosystem
http://de.wikipedia.org/wiki/RSA-Kryptosystem
Dokument erstellt mit MS Word, MS Excel, MS Powerpoint und
MathType (http://www.dessci.com/en/products/mathtype/)
47
Herunterladen