Euklidischer Algorithmus und RSA

Werbung
Kapitel 4
Euklidischer Algorithmus und
RSA-Schema
Der nun zu besprechende euklidische Algorithmus“ hat seine historische Wurzel in dem Be”
streben in der Antike, die Verhältnisrechnung mit geometrischen Größen zu begründen (Kommensurabilitätsbetrachtungen). Bei Euklid sollen zwei Strecken mit einem Maßstab ausgemessen
werden; dies gelingt gerade mit einem Maßstab, der die Länge des größten gemeinsamen Teilers
besitzt. Der euklidische Algorithmus gestattet es, den größten gemeinsamen Teiler (siehe unten)
zweier Zahlen effizient zu berechnen.
Kryptographie ist als Lehre von der Verschlüsselung von Nachrichten in Zeiten der elektronischen Kommuniukation von überragender Bedeutung. Die modulare Arithmetik gestattet
es, solche Techniquen sehr durchschaubar anzubieten. Durch die Quantenkryptographie ist ein
ernstzunehmender (physikalischer) Konkurrent für die algebraische Kryptographie entstanden.
4.1
Euklidischer Algorithmus
Wir beschreiben nun den euklidischen Algorithmus. Er basiert auf folgender Beobachtung:
Lemma 4.1.1 Sei a ∈ Z und b ∈ N. Dann folgt aus der Darstellung a = qb + r , q ∈ Z, die
Aussage ggT(a, b) = ggT(b, r) .
Beweis:
Ist d ein Teiler von a, b, dann ist d ein Teiler von b und r und umgekehrt (siehe Folgerung 3.2.2).
Die Interpretation von Lemma 4.1.1 ist, dass durch fortschreitende Division mit Rest aus dem
Ausgangspaar (a, b) Paare (a′ , b′ ) gebildet werden können, die denselben größten gemeinsamen
Teiler besitzen.
Algorithm 1 Der euklidische Algorithmus
EIN a, b ∈ Z ; o.E. a ≥ b > 0 .
Schritt 0 a′ := a, b′ := b .
Schritt 1 (a′ , b′ ) := (b′ , r), wobei a′ = qb′ + r mit 0 ≤ r < b′ ist.
Schritt 2 Ist r = 0, gehe zu AUS. Ist r 6= 0, setze a′ := b′ , b′ := r, gehe zu Schritt 1.
AUS d := b′ = ggT(a, b) .
Die Aussage, dass d der größte gemeinsame Teiler von a, b ist, falls die Situation r = 0
erreicht wird, folgt aus dem Lemma 4.1.1 unter der Beobachtung, dass ggT(b′ , 0) = b′ ist. Bleibt
35
noch zu klären, dass die Situation r = 0 in endlich vielen Schritten wirklich erreicht wird. Dies
folgt aber aus der Tatsache, dass für zwei aufeinanderfolgende Durchläufe von Schritt 1 mit
(a′ , b′ ) , (a′′ , b′′ ) sicherlich 0 ≤ b′′ < b′ , b′ , b′′ ∈ N0 gilt. Also muss schließlich das Verfahren bei
r = 0 abbrechen.
Wir geben dem euklidischen Algorithmus, wohlwissend, dass der Schritt 1 nur endlich oft
durchlaufen wird, eine explizite Fassung:
Euklidischer Algorithmus
Kettenbruchentwicklung
a
b
r0
r1
r1
r2
r0 := a , r1 := b,
r0
=
q1 r1 + r2 , 0 < r2 < r1 ,
r1
=
q2 r2 + r3 , 0 < r3 < r2 ,
..
.
..
.
rk−1
=
qk rk + rk+1 , 0 < rk+1 < rk ,
rk
=
qk+1 rk+1 ,
=
r0
r1
= q1 + rr12
= q2 + rr23
..
.
..
.
rk−2
rk−1
rk
rk+1
= qk + r rk
k−1
= qk+1
In dieser Darstellung ist rk+1 = rk−1 ⊓ rk = · · · = r0 ⊓ r1 = a⊓b = ggT(a, b) , nach Lemma 4.1.1.
Beispiel 4.1.2 Sei a = 48 , b = 18 . Wir erhalten
48
48 = 2 · 18 + 12
18 = 1 · 12 + 6
18
18
12
12 = 2 · 6
Also gilt: ggT(48, 18) = 6 . Die geometrische
Interpretation als wechselseitige Wegnahme“,
”
wie sie schon bei Euklid bei Kommensurabilitätsbetrachtungen zu finden ist, findet sich in
Abbildung 4.1: kleinere Strecken werden mehrfach auf einer größeren Strecke abgetragen. Da
das Vorgehen im obigen Beispiel abbricht, sagt
man, dass a = 48 und b = 18 ein gemeinsames
Maß haben, nämlich 6. (Bricht ein solches Verfahren nicht ab, dann heißen a, b inkommensurabel, wie dies etwa bei der Diagonalen√und Seite
im Einheitsquadrat der Fall ist, da ja 2 irrational ist.)
12
6
6
6
6
Abbildung 4.1: Wechselwegnahme
Aus der obigen Darstellung des euklidischen Algorithmus lesen wir
a
r0
r2
1
1
1
=
= q1 +
= q1 + r1 = q1 +
= q1 +
= ...
(4.1)
r
3
1
b
r1
r1
q 2 + r2
q2 +
r2
r4
q3 +
r3
rk+1
ab; wir wissen dabei, dass stets 0 < r < 1 gilt und dass das Schema nach k Schritten abk
bricht, denn in formaler Interpretation haben wir rk+2 = 0 . Die berechneten Größen q1 , . . . , qk+1
schreiben wir als
a
[q1 , . . . , qk+1 ] oder = [q1 , . . . , qk+1 ]
b
36
auf und bezeichnen dies als Kettenbruch. Der Kettenbruch kann mitunter auch sehr lang“
”
sein. In vielen Fällen ist man schon mit einer Näherung [q1 , . . . , ql ] , 1 ≤ l < k + 1 , zufrieden,
d.h. mit der Näherung, die entsteht, wenn man
rl
rl+1
=0
setzt.
Bemerkung 4.1.3 C. Huygens (1629–1695) entwickelte Kettenbruchentwicklungen, als er ein
Zahnradmodell (siehe Abbildung 4.4) des Sonnensystems bauen wollte. Gesucht wurden möglichst
“einfache Brüche“ für die gelten sollte:
Umlaufzeit von Planet 1
Zahnzahl von Zahnrad 1
=
.
Zahnzahl von Zahnrad 2
Umlaufzeit von Planet 2
Werden die Umlaufzeiten der Planeten sehr genau gemessen, dann kann rechts ein Bruch mit
sehr großem Zähler und Nenner entstehen. Die Beispiele 4.1.7, 4.1.9 illustrieren dies.
Beispiel 4.1.4 Die Zahlen
a = 77708431
b = 2640858
beschreiben das Verhältnis der Umlaufzeiten des Saturn in Bezug auf die Erde. Huygens wählte
dafür den Näherungsbruch 206
7 . Er ergibt sich, wenn man den Kettenbruch geeignet abbricht.
Der exakte Kettenbruch ist
a
= [29; 2, 2, 1, 5, 1, 4, 1, 1, 2, 1, 6, 1, 10, 2, 2, 3]
b
und wir erhalten
a
∼ 29 +
b
1
= 29 +
1
2+
2+
1
1
1
7
3
=
206
.
7
Beispiel 4.1.5 Die Zahlen
a = 71755875
b = 61735500
kommen in Berechnungen des Astronomen Aristarchus von Samos vor. Für ab verwendet er die
43 . Sie ergibt sich, wenn man den Kettenbruch geeignet abbricht:
Näherung 37
a
1
.
∼1+
b
6 + 61
Beispiel 4.1.6 Die Umlaufzeit der Erde um die Sonne beträgt ziemlich genau
365 +
104629
Tage .
432000
Aus der Kettenbruchentwicklung
104629
= [0; 4, 7, 1, 3, 6, 2, 1, 170]
432000
ergeben sich Ansätze für Kalender:
37
[0] = 0
[0; 4] =
Keine Schaltjahre
(Anpassung von Zeit zur Zeit durch Hinzufügen eines Tages)
1
4
[0; 4, 7, 3, 6] =
Alle vier Jahre ein Schalttag
194
801
In 800 Jahren lässt man sechs Schaltjahre ausfallen
(und zwar in den Jahren, deren Jahreszahlen durch 400 teilbar ist.)
Beispiel 4.1.7 Kettenbrüche kann man auch für irrationale Zahlen konstruieren;
sie sind dann
√
natürlich unendliche Kettenbrüche. Wir zeigen dies am Beispiel x = 2 durch einen Trick“
”
(es ließe sich auch anders vorgehen): wir haben die Identitäten
x=
√
2, x = 1 +
1
1
, x−1=
.
1+x
2 + (x − 1)
Aus der letzteren lesen wir den Kettenbruch für x − 1 ab und durch Addition mit 1 erhalten wir
√
2 = [1; 2, 2, 2, . . . ] .
Beachte:
Da a1 ⊓ a2 ⊓ · · · ⊓ an = a1 ⊓ (a2 ⊓ · · · ⊓ an )
gilt, ist klar, dass wir nun auch ein Verfahren
haben, das den größten gemeinsamen Teiler von
a1 , . . . , an bereitstellt: Man hat es nur mehrmals
anzuwenden.
Eine wichtige Konsequenz aus dem euklidischen Algorithmus ist
Satz 4.1.8 (Lemma von Bezout) Seien a, b ∈
Z . Dann gibt es Zahlen s, t ∈ Z mit ggT(a, b) =
sa + tb .
Abbildung 4.2: Zahnräder
Beweis:
O.E. a ≥ b > 0 .
Die Aussage folgt dadurch, dass wir den euklidischen Algorithmus in der expliziten Fassung
rückwärts lesen. Wir strukturieren dies, indem wir nachrechnen, dass für 0 ≤ i ≤ k + 1 gilt
ri = si a + ti b , mit si , ti ∈ Z.
(4.2)
Dies ergibt sich so: Für i = 0 setze s0 := 1, t0 := 0 und für i = 1 setzte s1 := 0, t1 := 1 . Nun
setzen wir
si+1 := si−1 − qi si , ti+1 := ti−1 − qi ti , 1 ≤ i ≤ k.
(4.3)
Dann gilt offenbar die obige Aussage.
Beispiel 4.1.9 Wir betrachten wieder Beispiel 4.1.2. Für das Tupel (ri , qi , si , ti ) haben wir dann
nach (4.2) und (4.3) die folgende Sequenz (× bedeutet uninteressant oder nicht definiert):
(36667, ×, 1, 0), (12247, 2, 0, 1), (12173, 1, 1, −2), (74, 164, −1, 3), (37, ×, 165, −494).
Also haben wir
37 = 36667 ⊓ 12247 = 165 · 36667 − 494 · 12247
38
Korollar 4.1.10 Seien a, m ∈ Z, die nicht beide Null sind, mit ggT(a, m) = 1 . Dann gibt es
b ∈ Z mit m|(ab − 1) .
Beweis:
Wir wissen aus dem Lemma von Bezout 1 = ax + my mit x, y ∈ Z . Setze b := x . Dann ist
ab − 1 = −my = m(−y) .
Die obige Folgerung können wir so lesen, dass bei Teilerfremdheit von a und m zu a eine Zahl
b existiert, die die Gleichung
a · b ≡ 1 mod m
löst, d.h. die Restklasse [a] hat modulo m das Inverse [b] .
4.2
Komplexität
Der euklidische Algorithmus gilt als Musterbeispiel“ eines effizienten Algorithmus mit vielfältigen
”
Anwendungen. Eigentlich müssten wir nun eine Analyse der Komplexität des euklidischen Algorithmus durchführen, wenn wir die Behauptung, dass dieser Algorithmus sehr effizient ist,
belegen wollten. Wir verzichten darauf, ohne zu vergessen, auf ein Beispiel hinzuweisen, dass
den worst case des Algorithmus beschreibt: die Berechnung des größten gemeinsamen Teiler
zweier aufeinanderfolgender Fibbonacci-Zahlen.
Nach Fibonacci1 wird die Vermehrung eines Kaninchenpaares in folgender Weise in Abhängigkeit von der Zeit beschrieben:
Ein zur Zeit t = 0 geborenes Kaninchenpaar wirft vom 2. Monat an in jedem Monat ein weiteres
Paar. Die Nachkommen folgen dem Vorbild der Eltern. Alle Kaninchen überleben. Damit ergibt
sich rekursiv folgende Vorschrift
f0 := f1 := 1 , fn+1 := fn + fn−1 , n ∈ N .
Die Zahlen fn , n ∈ N, nennt man Fibonacci–Zahlen. Sie haben viele schöne, interessante
Eigenschaften, hier sind sie von Interesse bei der Untersuchung der Schnelligkeit des euklidischen
Algorithmus.
Im euklidischen Algorithmus werden die Reste rk+1 umso schneller klein, je größer die Quotienten qk sind. Betrachten wir den euklidischen Algorithmus für das Paar zweier aufeinanderfolgenden Fibonacci–Zahlen, also a = fn+1 , b = fn . Aus der Rekursionsgleichung der Fibonacci–
Zahlen folgt unmittelbar
fn+1 = 1 · fn + fn−1
fn = 1 · fn−1 + fn−2
..
.
f3 = 1 · f2 + f1
f2 = 1 · f1
Da f1 = 1 gilt, folgt: je zwei aufeinanderfolgende Fibonacci-Zahlen sind teilerfremd und jeder Quotient qk ist gleich 1. Dies ist der ungünstigste Fall, was die Anzahl der Schritte in
Abhängigkeit von der Größe der Ausgangszahlen betrifft. Beim euklidischen Algorithmus für
fn+1 , fn sind wie gesehen n Schritte nötig. Da fn in Abhängigkeit von n exponentiell wächst
(siehe folgendes Beispiel 4.2.1), folgt, dass die Anzahl der Schritte beim euklidischen Algorithmus zur Berechnung eines größten gemeinsamen Teilers ggT(a, b) höchstens logarithmisch in der
Stellenanzahl der Eingabedaten a, b, d.h. linear mit der Stellenzahl von a, b wächst: der Aufwand ist also vergleichbar mit dem Aufwand, der bei der Multiplikation von a und b anfällt.
Der euklidische Algorithmus ist damit eine sehr effiziente Methode zur Berechnung des größten
gemeinsamen Teilers großer Zahlen. Er benötigt nicht die Primfaktorzerlegung der Zahlen a, b .
1
Im Buch liber abacci“ von Leonardo von Pisa (Fibonacci, Leonardo (1180? — 1250?))
”
39
Beispiel 4.2.1 Sieht man ein Stück der Fibonacci-Folge an, so stellt man fest, dass sie schnell
wächst: 1,1,2,3,5,8,13,21,34,. . . . Es ist offensichtlich, dass die Folge monoton wachsend ist, und
man überzeugt sich leicht, dass sie exponentiell wächst, denn durch die Monotonie ergibt sich:
fn = fn−1 + fn−2 ≤ 2fn−1 und folglich fn ≤ 2n .
√
fn = fn−1 + fn−2 ≥ 2fn−2 und folglich f2n ≥ 2n−1 , fn ≥ ( 2)n−1 .
√
Also liegt das Wachstum zwischen 2 und 2 . Man kann dies noch viel genauer analysieren, für
den Zweck der Analyse des euklidischen Algorithmus reicht dies aus.
Die Fibonacci-Zahlen sind eng mit dem goldenen Schnitt verknüpft. Aus der Darstellung
fn + fn−1
fn−1
1
fn+1
=
=1+
=1+
fn
fn
fn
fn
fn−1
folgt, die Existenz von Φ := limn
fn+1
vorausgesetzt, die Identität
fn
Φ=1+
1
.
Φ
Daraus lesen wir den unendlichen Kettenbruch für die goldene Schnittzahl Φ ab:
Φ = [1; 1, 1, 1, 1, . . . ] .
Betrachtet man davon nur endliche Abschnitte als Näherung für Φ, dann erhält man schlechte“
”
Approximationen von Φ ; man nennt Φ deshalb die irrationalste Zahl“ 2 . Der Grund dafür
”
ist, dass jeder Eintrag im Kettenbruch die kleinste Einheit ist, die gerade ein Abbrechen noch
verhindert, nämlich 1. Es deckt sich mit der Tatsache, dass der euklidische Algorithmus für die
Brüche der Fibonacci-Zahlen besonders langsam ist. Dies steht im Gegensatz zu einer anderen
irrationalen Zahl, der Kreiszahl π . Ihre Kettenbruchentwicklung ist
π = [3; 7, 15, 1, . . . ] .
Schon der endliche Kettenbruch [3; 7] = 22
7 ist eine sehr gute Approximation von π . Der Grund
ist, dass der nächste Eintrag im Kettenbruch von π die Zahl 15 ist.
4.3
Kryptographie
Zum Verbergen von Nachrichten wird der vorliegende Klartext (Quellencode) üblicherweise in
sogenannten Nachrichteneinheiten (Buchstaben, Buchstabengruppen, Blocks, Zifferngruppen)
codiert. Solche Codiersysteme bezeichnen wir nun entsprechend ihrer Zielsetzung Kryptosysteme.3 Wir unterscheiden im folgenden nun nicht mehr Nachricht und Nachrichteneinheit.
Durch eine Übermittlung von Nachrichteneinheiten durch einen Sender A an einen Empfänger
B, codiert durch ein Kryptosystem, entsteht ein Geheimtext. Es ist das Ziel, das Kryptosystem
so zu entwerfen und zwischen A und B abzusprechen, dass zwar B den Text decodieren kann,
ein Unbefugter jedoch nicht. Gelingt dies einem Unbefugten, so spricht man vom Brechen des
Kryptosystems.
Die prinzipielle Lösung, Nachrichten geheim zu übermitteln, sieht so aus:
2
3
Diese Tatsache spielt sogar eine Rolle in der so genannten Chaostheorie.
κρvπτ óς (griech.)= geheim
40
• A codiert (verschlüsselt) dazu die Nachricht mittels einer Schlüsselabbildung K, die
auf der Menge M der Nachrichten injektiv operiert, also:
K : M −→ M injektiv.
• Dann sendet A an B die verschlüsselte Nachricht K(a) (anstelle von a). Der Empfänger B
decodiert (entschlüsselt) mittels einer Schlüsselabbildung D, die ebenso auf der Menge
der Nachrichten operiert, also:
D : M −→ M injektiv.
• Die Schlüssel sollten so zusammenpassen, daß
D(K(a)) = a
gilt, und zwar für alle möglichen Nachrichten a. Dies bedeutet D = K −1 .
In der Behandlung der Schlüssel K, D – privat oder öffentlich – unterscheiden sich die
Kryptosysteme. Sie sollten sich aber nicht im Grundsatz der Kryptographie unterscheiden,
der da lautet: Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algo”
rithmus“, d.h. vom Verfahren zur Ermittlung von K(m) oder D(m) abhängen. Die Sicherheit
gründet sich nur auf die Geheimhaltung des Schlüssels.
Private key – Kryptosysteme, sie werden auch klassische Kryptosysteme genannt,
zeichnen sich dadurch aus, dass A, B geheim die Schlüssel K, D austauschen. Hierin liegt ihre
Schwäche: Wenn die Schlüssel öffentlich werden, können die Nachrichten, die A und B austauschen, mitgelesen werden. Beide Beteiligte können codieren und decodieren; es liegt also eine
symmetrische Situation vor. Man spricht daher auch von symmetrischen Kryptosystemen.
Public key – Kryptosysteme zeichnen sich dadurch aus, dass A die Nachricht, die er an
B senden will, mit dem öffentlichen Schlüssel von B codiert und so an B sendet. B entschlüsselt
diese Nachricht mit seinem geheimen Schlüssel D . Es liegt also eine asymmetrische Situation
vor: A kann nur codieren, aber nicht decodieren. Man spricht daher auch von asymmetrischen
Kryptosystemen.
Da der Schlüssel K öffentlich ist, kann man sich doch wohl auch die Inverse D von K verschaffen
und Geheimhaltung wäre nicht möglich. Hier setzen die (algebraischen) Methoden zur Erzeugung
von Schlüsseln K an, die in der Praxis die Ermittlung von D (nahezu) unmöglich machen.
Viele Verfahren der Verschlüsselung machen sich eine Abbildung f : D −→ W zu Nutze,
die folgende Eigenschaften hat:
1. Die Auswertung der Abbildung ist einfach, oder anders ausgedrückt die Vorwärtsabbildung
ist einfach.
2. Die Bestimmung von Lösungen von f (u) = w ist schwierig, oder anders ausgedrückt, die
Rückwärtsabbildung ist schwierig zu bestimmen.
3. Die Bestimmung der Lösungen von f (u) = w wird leicht unter einer Zusatzinformation
(trapdoor-Information).
Dafür gibt es viele Beispiele. Hier sind einige prominente Realisierungen.
• Primfaktorzerlegung: man kann schnell zwei große Zahlen multiplizieren, es ist schwer eine
sehr große Zahl in zwei Teiler zu zerlegen. Trapdoor–Information: beide Teiler sind etwa
gleich groß.
41
• Diskreter Logarithmus
• Diskrete Quadratwurzeln; siehe Übungen.
• Integration/Differentiation; lernen wir noch kennen.
• Wärmeleitungsgleichung vorwärts und rückwärts in der Zeit: die Vorwärtsdiffusion glättet
die Information in einem Wärmesignal“ sehr stark. Trapdoor–Information: Stärke und
”
Qualität des Wärmesignals.
Im Folgenden wird gerade die Potenzierung modulo eines Moduls gebraucht:
w := ax
mod m .
w = ax
mod m
Ein schnelles Verfahren, das
nach x auflöst ( Diskreter Logarithmus“), kennt man nicht.
”
4.4
RSA–Schema
Öffentliche Schlüsselsysteme/Kryptosysteme wurden 1976 von Diffie und Hellman vorgeschlagen.
Das RSA-Schema ist ein Kryptosystem, das mit öffentlichen Schlüsseln arbeitet. Es wurde 1977
von Ronald Rivest, Adi Shamir, Leonard Adleman vorgelegt. Es stellt sich so dar:
• Jede Nachricht wird dargestellt in Form einer oder mehrerer natürlicher Zahlen
a ∈ {0, . . . , m−1} =: N . (In der Praxis hat man die konkreten Nachrichten in die zulässigen
Nachrichten aus N durch Codes (etwa den ASCII–Code, wobei die Wörter als natürliche
Zahlen zu interpretieren sind) umzuwandeln.
• Wähle s ∈ N und codiere mit Ks : N ∋ a 7−→ as mod m ∈ N
• Wähle t ∈ N und decodiere gemäß Dt : N ∋ b 7−→ bt mod m ∈ N
Man beachte, dass die Auswertung von Ks bzw. Dt (Potenzierung) im allgemeinen sehr
effizient realisiert werden kann, während das Auffinden der t–ten Wurzel mod n, die benötigt
wird, um Dt aus Ks zu finden, schwierig ist; siehe oben.
Voraussetzungen, die sicherstellen, dass die Schlüssel zusammenpassen, sind:
m = p · q , p, q Primzahlen , 1 < s < ϕ(m), ggT(s, ϕ(m)) = 1, ts ≡ 1 mod ϕ(m).
(4.4)
Hier ist ϕ(m) der Wert, den die Eulersche Phi–funktion ϕ für m annimmt. Sie Zählt damit die
Anzahl der Elemente in Zm , die ein Inverses in Zm bezüglich der Multiplikation besitzen; siehe
Lemma 4.1.10. Da p, q Primzahlen sind, folgt sehr einfach, dass ϕ(m) = ϕ(pq) = (p − 1)(q − 1)
gilt.
Aus dem folgenden Lemma geht hervor, dass die Schlüssel zusammenpassen.
Lemma 4.4.1 Seien die Voraussetzungen (4.4) erfüllt. Dann gilt Dt ◦ Ks = id.
Beweis:
Wir wissen st = 1 + kϕ(m mit k ∈ Z. Wir zeigen zunächst
ast − a ≡ 0
mod p
42
für alle a ∈ N .
(4.5)
Sei a ∈ N .
1. Fall: ggT(a, p) 6= 1.
Hier ist, da p Primzahl ist, p ein Teiler von a; also a ≡ 0 mod p. Wenn p ein Teiler von a ist,
dann ist p sicherlich ein Teiler von ast , d.h.
ast ≡ 0 mod p und ast ≡ a mod p.
2. Fall: ggT(a, p) = 1.
Wir zeigen die Behauptung (4.5) mit dem Satz von Fermat; siehe Satz 4.5.1:
ast ≡ a1+kϕ(n) ≡ aakϕ(n) ≡ a(a(p−1) )k·(q−1) ≡ a 1k·(q−1) ≡ a
mod p .
Analog folgt
p|(ast −a)
ast − a ≡ 0
mod q
, q|(ast −a),
Daraus ergibt sich mit
da p, q verschiedene Primzahlen sind, dass pq|(ast −
a) gilt. Dies bedeutet aber mit m = pq, dass ast ≡ a mod m gilt.
Beispiel 4.4.2 Wir geben ein illustrierendes Beispiel, für kryptographische Zwecke sind die
Zahlen viel zu klein. Wir wählen p = 7, q = 11 . Dann ist m = 77, ϕ(m) = 6 · 10 = 60, und s = 23
kann als öffentlicher Schlüssel Verwendung finden. Wegen
1 = 5 · 60 + (−13) · 23
ist der geheime Schlüssel t = 47 .
Die verschlüsselte Nachricht von a = 7 ist b := a23 mod 60 und wegen 74 = 1 mod 60 erhält
man sehr schnell als verschlüsselte Nachricht b = 47 . Die entschlüsselte Nachricht ist a′ := b47 .
Wegen 47 = −73 mod 60 errechnet mann schnell a′ = 7, also a′ = a .
Nachdem wir nun gezeigt haben, dass das RSA-Schema korrekt arbeitet, bleibt zu fragen, ob
es auch brauchbar im Sinne der Geheimhaltung ist. Halten wir fest:
• Öffentliche Schlüsselzahlen: (m, s) .
• Private Schlüsselzahlen: (m, t) .
Jedermann kennt die öffentlichen Schlüsselzahlen, die Zahlen p, q und ϕ(m) spielen keine Rolle
mehr und werden vernichtet“.
”
Um den Geheimtext entschlüsseln zu
können, müsste jemand die Zahl t berechnen. Dazu reicht es auch, die Zahl
Public domain
ϕ(m) zu kennen, denn mit Hilfe des euklidischen Algorithmus kann man dann
eine Zahl t berechnen; siehe Folgerung
m, s
m,s
4.1.10. Die Zahl ϕ(m) kennt man, wenn
man die Primfaktorzerlegung von m
kennt. Denn dann ist m = pq und
ϕ(m) = (p − 1)(q − 1). Umgekehrt,
Sender/m,s
Empfänger/m,s,t
Nachricht
wenn man m und ϕ(m) kennt, dann
kennt man sogar die Primfaktorzerlegung von m, denn aus
Abbildung 4.3: RSA-Schema
pq = m , (p − 1)(q − 1) = ϕ(m) ,
errechnet man
p + q = m − ϕ(m) + 1 , p − q = ±
43
p
(m − ϕ(m) + 1)2 − 4m.
Es ist also ganz einfach mit dem Auffinden des geheimen Schlüssels Dt , wenn man m faktorisieren
kann. Und hier liegt die Stärke des RSA-Schemas: Es ist ein schwieriges Problem, eine große
Zahl zu faktorisieren; Probiermethoden helfen hier nicht weiter, wenn m groß ist. Die schnellsten
Faktorisierungsalgorithmen sind exponentiell in der Größe von m .
Beispiel 4.4.3 Im Jahre 1990 wurde eine der meistgesuchten Faktorisierungen gefunden: Die
9
neunte Fermatzahl F9 = 22 + 1 = 2512 + 1 wurde in Primfaktoren zerlegt:
F9 = 2424833 · k mit einem k ∈ Z .
Die Lösung gelang, indem man das Problem in kleine Portionen aufteilte und häppchenweise
löste.
Es ist festzuhalten: Bisher hat niemand einen guten/schnellen Faktorisierungsalgorithmus gefunden und
man hofft (im Interesse der Geheimhaltung), dass auch in Zukunft kein
schneller Algorithmus gefunden wird.
Wie soll man den Schlüssel wählen?
In der heutigen Rechnertechnologie ist
es möglich, m ∼ 10200 , p2 ∼ m , q 2 ∼
m zu realisieren. Die Wahl von s darf
nicht zu klein ausfallen, da sonst ein
verschlüsselter Text identisch mit dem
Text selbst sein kann, d.h. dass ms =
m für eine Nachricht m sein kann. Solche Fixpunkte“ von Ks haben zu tun
”
mit kleinen Primteilern von p − 1 bzw.
q − 1.
Eine Anwendung des RSA–Schemas
ist die elektronische Unterschrift.
Ein Nachrichtengeber A beglaubigt
seine öffentliche Mitteilung a an einen
Empfänger B durch Hinzufügen der kodierten Nachricht Ks (a) ; Ks ist ein nur
A bekannter Schlüssel. Ein Empfänger
kann mit dem öffentlichen Dekodierer
Dt von A die Gleichung
a = Dt (Ks (a))
Abbildung 4.4: Patent in der Kryptographie
überprüfen. Ist sie erfüllt, hat der
Empfänger die Sicherheit, dass die
Nachricht von A stammt.
4.5
Kleiner Satz von Fermat
Satz 4.5.1 Sei a ∈ Z und sei p eine Primzahl. dann gilt
ap ≡ a mod p
44
(4.6)
Beweis:
Wir beweisen das Resultat mit vollständiger Induktion, wobei wir o.E. annehmen dürfen: a ≥ 0 .
a = 0: 0p − 0 = 0 ist durch p teilbar.
Induktionsschluss:
p p−1
p
p
p
(a + 1) − (a + 1) = a +
a
+ ··· +
a + 1 − (a + 1)
1
p−1
Die Binomialkoeffizienten sind alle durch p teilbar, denn in der Darstellung
p
p(p − 1) · · · (p − k + 1)
=
1 · 2···k
k
taucht p für 1 ≤ k ≤ p − 1 nur im Zähler auf. Damit folgt
(a + 1)p − (a + 1) ≡ ap + 1 − (a + 1) ≡ ap − a mod p,
was mit der Induktionsvoraussetzung (a + 1)p ≡ a + 1 mod p ergibt.
Korollar 4.5.2 Ist a ∈ Z und p eine Primzahl mit ggT(a, p) = 1, dann gilt
ap−1 ≡ 1 mod p
(4.7)
Beweis:
Den Beweis überlassen wir dem Leser. Man muss das Kürzen in Kongruenzen rechtfertigen. 4.6
Anhang: Klassische Kryptosysteme
Eines der ältesten symmetrischen Kryptosysteme ist das Verfahren von Cäsar4 . Er operiert mit
dem lateinischen Alphabet M := {A, B, . . . , Y, Z} mit 26 Buchstaben, und nimmt als Schlüsselabbildung K die Verschiebung um drei Buchstaben:
Klartext
Geheimtext
A
D
B
E
C
F
...
...
I
M
J
N
...
...
W
Z
X
A
Y
B
Z
C
Der Klartext AFFE wird also als DIIH übermittelt. Wenn wir die Menge M mit den Zahlen
0, . . . , 25 identifizieren, können wir die Schlüsselabbildung K so aufschreiben:
K : {0, . . . , 25} ∋ x 7−→ x + 3 mod 26 ∈ {0, . . . , 25}
Damit gelingt die Algebraisierung dieser Codierung; wir kommen darauf zurück.
Kann der Cäsar–Code gebrochen werden? Ja, er kann mit der Statistikmethode gebrochen
werden, wenn der zur Verfügung stehende Geheimtext nicht allzu kurz ist. Denn ein Geheimtext
spiegelt die Häufigkeiten der Buchstaben in einem Text einer natürlichen Sprache wieder. Dazu
reicht es für Texte, die mit dem deutschen Alphabet verfasst sind, meist aus, folgende Tabelle
zu kennen:
E : Häufigkeit ca. 17, 3%
R : Häufigkeit ca. 8, 1%
N : Häufigkeit ca. 10, 4%
X : Häufigkeit ca. 0, 02%
Diese unterschiedlichen Häufigkeiten bieten nun Angriffspunkte:5 Suche im Geheimtext nach dem
häufigsten Buchstaben: Er wird wohl dem Buchstaben E entsprechen; suche im Geheimtext nach
4
G. Julius Cäsar, ∼ 60 v. Chr.
Dieser Sachverhalt wird in der Erzählung “Der Goldkäfer“ von E.A. Poe sehr illustrativ beschrieben: Ein
Geheimtext wird entschlüsselt durch Analyse der Buchstabenhäufigkeit (im Englischen).
5
45
dem zweithäufigsten Buchstaben: er wird wohl dem Buchstaben N entsprechen; suche nach . . . .
Schließe eventuell verbliebene Lücken aus dem Sinnzusammenhang.
Selbst, wenn der zur Verfügung stehende Geheimtext kurz ist, lässt sich der Cäsar–Code im
allgemeinen dadurch brechen, dass man alle 26 Fälle durchprobiert: Hat die Nachricht einen
Sinn, dann findet man sehr schnell einen Ansatzpunkt.
Eine Verallgemeinerung ist, die Schlüsselabbildung K, erklärt auf der Menge {0, . . . , 25},
folgendermaßen zu definieren:
K : {0, . . . , 25} ∋ x 7−→ ax + b
mod 25 ∈ {0, . . . , 25} (a, b ∈ Z)
Diese Schar von Schlüsselabbildungen – die Parameter a, b sind die Scharparameter – nennt man
affine Schlüssel. Wählt man a = 3, b = 2, erhält man folgende Tabelle:
Klartext
Geheimtext
A
F
B
I
C
K
...
...
I
A
J
D
...
...
W
M
X
W
Y
Z
Z
C
Allerdings führt dieser Vorschlag nicht immer zu einer brauchbaren Verschlüsselung. Etwa ergibt
a = 2, b = 2 folgende Tabelle:
Klartext
Geheimtext
A
C
B
E
C
G
...
...
I
S
J
U
...
...
W
U
X
W
Y
Y
Z
Z
Man stellt schnell fest, dass man für a nur Zahlen in {0, . . . , 25} nehmen darf, die sogenannte
Einheiten in Z26 sind, d.h. solche Zahlen, für die es a′ ∈ Z gibt mit aa′ ≡ 1 mod 26 . Dies sind
gerade die zu 26 teilerfremden Zahlen 1, 3, 5, 7, 11, 15, 17, 19, 21, 23, 25 . Dies zeigt uns, dass es
insgesamt 312 = 12 · 26 solche Schlüsselabbildungen gibt.
Wer hindert uns, die Schlüsselabbildung mit einem fairen Würfel“ mit 26 Seiten auszuwür”
feln? Dies bedeutete, eine der 26! Permutation der 26 Buchstaben willkürlich herauszugreifen.
Als Schlüssel müssten wir uns also die Permutation merken, eine Aufgabe, die ohne Merkzettel
– wer verstekt ihn gut genug! – nicht zu leisten ist.
Einen Kompromiß stellt folgender Vorschlag dar, mit Merkwort und einem Merkbuchstaben zu arbeiten: Wähle ein Merkwort und einen Merkbuchstaben, schreibe das Merkwort ohne
Buchstabenwiederholung beginnend beim Merkbuchstaben unter das Alphabet und ergänze anschließend alphabetisch die noch fehlenden Buchstaben: Etwa mit dem Merkwort AFFENHAUS
und dem Merkbuchstaben D:
Klartext
Geheimtext
A
X
B
Y
C
Z
D
A
E
F
F
E
G
N
H
H
I
U
J
S
K
B
L
C
M
D
...
...
Y
V
Z
W
Der Klartext AFFE wird zum Geheimtext XEEF. Verzichtet man darauf, dass das Merkwort
einen Sinn ergibt, kann man so wieder alle Permutationen erzielen.
Die Schwäche der obigen Vorgehensweisen hat immer damit zu tun, dass wir mit einem
Alphabet einer natürlichen Sprache arbeiten. Die Häufigkeitsindizien können zwar verschleiert
werden, indem man den häufigen Buchstaben mehrere Kryptobuchstaben zuordnet, aber prinzipiell beseitigen kann man sie nicht.
Von B. Vigenère stammt die Idee, die Cäsar–Verschiebung im Wechsel zu benutzen. Der
Wechsel der Cäsar–Verschiebung wird durch ein Merkwort gesteuert, das nicht länger als der
Klartext sein soll. Wir schreiben das Merkwort Buchstabe für Buchstabe über den Klartext,
und zwar wiederholt solange, bis über jedem Buchstaben des Klartextes ein Buchstabe des
Merkwortes zu stehen kommt. Bei der Verschlüsselung eines Klartextbuchstabens bestimmt
nun der darüberstehende Buchstabe des Merkwortes die Cäsar–Verschiebung: Das verschobene
Alphabet beginnt mit dem betreffenden Buchstaben des Merkwortes. Wir demonstrieren das
Vorgehen mit dem Merkwort RODGAU und dem Klartext NIEDERRODEN.
46
Merkwort
Klartext
Geheimtext
R
N
E
O
I
W
D
E
H
G
D
J
A
E
E
U
R
L
R
R
I
O
O
C
D
D
G
G
E
K
A
N
N
(Der 1. Geheimtextbuchstabe E etwa kommt so zustande: Betrachte die Verschiebung des
Alphabets, die mit R beginnt, ermittle dort, wie N verschlüsselt wird; man sieht mit E.)
Der Angriffspunkt, den Schlüssel zu brechen, ist folgender: Gibt es im Klartext Textstücke mit
gleicher Buchstabenfolge mit einem Abstand, der ein Vielfaches der Länge des Merkwortes ist,
so entsprechen diesen Textstücken im Geheimtext Textstücke mit gleicher Buchstabenfolge. Die
Idee, diese Beobachtung auszuschlachten, geht auf C. Babbage und F. W. Kasiski zurück. Wenn
sich im Geheimtext zwei Textstücke mit gleicher Buchstabenfolge finden, so ist ihr Abstand
vermutlich ein Vielfaches der Merkwortlänge. Bei Textstücken, die in einer Buchstabenfolge mit
mehr als zwei Buchstaben übereinstimmen, kann man hier schon ziemlich sicher sein. Was ist das
Ergebnis? Wir können zumindest die Merkwortlänge herausfinden. Hat man die Merkwortlänge l
gefunden, weiß man dass die Klartextstaben 1, l+1, 2l+1, . . . mit derselben Cäsar–Verschiebung
zustandegekommen sind. Nun schlägt die statistische Methode, einen Code zu brechen, wieder
zu.
Nun gehen wir mehr algebraisch an die Vorgehensweisen heran. Dazu greifen wir auf das
zahlenmäßige Äquivalent {0, . . . , 26} des Alphabets {A,. . . ,Z} zurück. Zur Cäsar–Verschiebung
gehört eine Schlüsselabbildung
K : Z26 ∋ [x] 7−→ [ax + b] ∈ Z26 oder kurz K : Z26 ∋ x 7−→ ax + b
mod 26 ∈ Z26 ,
Eine solche Abbildung enthält zwei Parameter a, b . b kann beliebig in {0, . . . , 25} gewählt werden,
a muss, um die Injektivität der Schlüsselabbildung zu sichern, eine Einheit sein, d.h. es muss
die Gleichung
aa′ ≡ 1 mod 26
in Z26 lösbar sein mit einem a′ . Dann kann man auch die Umkehrabbildung D von K definieren:
D : Z26 ∋ x 7−→ a′ x + b′
mod 26 ∈ Z26 ;
dabei ist a′ := a−1 , b′ := −a−1 b . Wir sehen, dass für Verschlüsselung und Entschlüsselung
derselbe Algorithmus nötig ist.
Die statistische Codeanalyse drückt sich nun so aus: Es sind etwa von u, v ∈ Z26 die Urbilder
x, y von K (x könnte E, y könnte N entsprechen). Den Code zu brechen reicht es nun aus, aus
den Kongruenzen
a′ u + b′ ≡ x mod 26 , a′ v + b′ ≡ y mod 26
die Parameter a′ , b′ zu berechnen. Im Rahmen der Betrachtungen der Kongruenzrechnung haben
wir dazu Hilfsmittel kennengelernt. Hier bietet sich sofort an, die Kongruenzen zu subtrahieren:
a′ (u − v) ≡ x − y
mod 26 .
Daraus erhalten wir a′ sofort, falls u − v eine Einheit ist, d.h. falls (u − v)z = 1 für ein z gilt:
a′ ≡ z(x − y) mod 26 .
Einsetzen von a′ ergibt b′ und schließlich insgesamt a, b . Damit ist D, K bekannt und der Code
gebrochen.
Wir skizzieren nun kurz die algebraische Seite, wenn wir als Nachrichteneinheiten im Klartext
2–Buchstaben–Blocks ansehen. (Wir sehen von der Tatsache ab, dass es nun eventuell geraten
ist, den Zwischenraum ⊔ zum Alphabet hinzuzunehmen; wir hätten dann Z26 durch Z27 zu
47
ersetzen.) Es ist klar, dass es 26 · 26 Paare gibt. Um Anschluß an das oben schon Diskutierte zu
finden, wollen wir diese Paare als Elemente von Z26·26 auffassen. Dies gelingt durch die Abbildung
R : Z26 × Z26 ∋ ([x], [y]) 7−→ [26x + y] ∈ Z26·26 .
Damit können wir die Frage der Verschlüsselung auf Z26·26 betrachten. Es gibt daher in Sachen affine Verschlüsselungsabbildungen nichts Neues zu erarbeiten. Allerdings benötigen wir
zusätzliche Informationen, wenn wir einen affinen Code mit der Statistikmethode brechen wollen, nämlich eine Statistik über die Häufigkeit des Auftretens von Paaren. Hier ist eine Tabelle
dazu:
EN : Häufigkeit ca. 3, 8%
CH : Häufigkeit ca. 2, 7%
ER : Häufigkeit ca. 3, 7%
DE : Häufigkeit ca. 2, 0%
Beispiel 4.6.1 Der Klartext laute MATHE. Um Paare bilden zu können, bräuchten wir ein
gerade Anzahl von Buchstaben. Dies erzwingen wir durch Anhängen eines Buchstabens, der den
Sinngehalt der Nachricht nicht wesentlich stören sollte; wir ändern hier ab zu MATHEQ. Für
eine affine Verschlüsselung wählen wir a = 3, b = 3 .
MA
TH
MA
:
:
:
∧
3 · (26 · 12 + 0) + 3
3 · (26 · 19 + 7) + 3
3 · (26 · 9 + 0) + 3
=
∧
=
∧
=
KD
FY
NZ
Der Geheimtext lautet also KDFYNZ.
Wir können mit Paaren auch anders umgehen: Wir lassen affine Abbildungen direkt auf den
Paaren wirken. Dies erreichen wir, indem wir Paare als Vektoren in Z26 ×Z26 auffassen und affine
Abbildungen auf solchen Vektoren wirken lassen. Ohne genauer auf Hintergründe einzugehen,
schreiben wir die Schlüsselabbildung so auf:
K : Z26 × Z26 ∋ z = (x, y) 7−→ Az + B ∈ Z26 × Z26
Dabei ist A eine Matrix mit Einträgen in Z26 und B ein Vektor mit Einträgen in Z26 ; die Größe
Az entsteht als Produkt von A mit z in der üblichen Weise.
Beispiel 4.6.2 Wir wählen:
A :=
2 3
7 8
, B :=
1
2
.
Wie sieht die Verschlüsselung von MATHEQ aus?
2 3
12
1
25
MA :
+
=
7 8 0 2 8 2 3
19
1
9
TH :
+
=
7
8
16
2
3 2 3
4
1
5
EQ :
+
=
7 8
16
2
2
=
∧
ZI
=
∧
JD
∧
FC
=
Der Geheimtext lautet also ZIJDFC.
Wie sieht nun in diesem Fall die Entschlüsselungsabbildung D aus? Halten wir uns an die
Analogie zum Fall der affinen Abbildungen auf Z26 .
D : Z26 × Z26 ∋ z = (x, y) 7−→ A′ z + B ′ ∈ Z26 × Z26
48
Dabei wählen wir die Matrix A′ mit Einträgen in Z26 so, daß
AA′ = I wobei I die Einheitsmatrix ist,
gilt. Ist dies möglich? Ja, es ist möglich, wenn die Determinante der Matrix A eine Einheit in
Z26 ist. Damit berechnet sich dann A′ wie die Inverse von A im Fall R2,2 und B ′ ist gleich −A′ B .
Etwa ist die Inverse von A aus dem obigen Beispiel gegeben durch
14 11
A′ =
,
17 10
wobei die Determinante von A als 2 · 8 − 3 · 7 = −5 = 21 gegeben ist. (Beachte, 21 und 26 sind
teilerfremd.)
4.7
1.)
Übungen
Sei p ein Modul und a ∈ N0 . Die Lösungen der Gleichung
x2 ≡ a mod p
heißen Quadratwurzeln. Bestimme die Quadratwurzeln zu p = 11 .
2.)
Sei p ∈ N ein Modul. Zeige: (p − x)2 ≡ x2 mod p .
3.)
Gesucht ist eine ganze Zahl x mit
x ≡ 2 mod 3 , x ≡ 3
4.)
Gesucht ist eine ganze Zahl x mit
x≡1
5.)
mod 4 , x ≡ 2 mod 5 .
mod 2 , x ≡ 1
mod 3 , x ≡ 1 mod 4 , x ≡ 1 mod 5 , x ≡ 1
mod 6 , x ≡ 0
mod 7 .
Sei s = s1 · · · sn ∈ {0, 1}n gewählt. Dieses binäre Wort beschreibt nun die folgende
Verschlüsselungsmethode auf den binären Wörtern a = a1 · · · an der Länge n in folgender
Weise:
K(a) := a ⊕ s , wobei (a ⊕ s)i = ai + si mod 2, i = 1, . . . , n,
Zeige:
(a)
K : {0, 1}n −→ {0, 1}n bijektiv.
(b) s ⊕ s = 0 .
(c)
a ⊕ K(a) = s für alle a ∈ {0, 1}n .
(Man nennt die Verschlüsselungsmethode mittels K eine one-time-pad–Verschlüsselung,
da man sie wegen (c) in der Praxis nur einmal mit einem zufälligen Vektor“ s verwen”
det.)
6.)
Wie sieht der Graph der Abbildung
f : Z5 ∋ [x] 7−→ [x3 + x2 + 1] ∈ Z5
aus? Veranschauliche ihn im Gitter “ Z × Z .
”
49
Herunterladen