Collata Opera Mathematica Friburgensia

Werbung
Collata Opera
Mathematica Friburgensia
! "$# %'&)(+*-,/. 013254
Vol. 1 (2001), no. 2
Geheime Nachrichten per Postkarte verschicken?
Burchard Kaup, Fribourg
Department
of
Mathematics ,
Editor :
Norbert
University
of
Hungerbühler
Fribourg
I
mpreum
Issuer Department of Mathematics, University of Fribourg (Switzerland)
Managing editor Norbert Hungerbühler
Department of Mathematics
University of Fribourg, Pérolles
CH-1700 Fribourg (Switzerland)
[email protected]
Founded January 2001
Title abbreviations COMF
Collata opera math. fribg. (ISO 4)
ISSN 1424-8662
Published in electronic form on
http://www.unifr.ch/math/COMF
Appears several times a year
The copyright remains with the author
E
ditori Praefatio
Ziel der Reihe Collata Opera Mathematica Friburgensia ist die Förderung des mathematischen
Unterrichts an den Schweizerischen Gymnasien. Sie erscheint in lockerer Folge, normalerweise
anläßlich von Vorträgen an der Universität Fribourg im Rahmen des Kolloquiums über Mathematik
und Unterricht. Angesprochen sind in erster Linie die Mathematiklehrerinnen und -lehrer an den
Gymnasien, denen mit dieser Reihe Ressourcen und Anregungen zum Unterricht, insbesondere für
das Schwerpunktfach Physik und Anwendungen der Mathematik , zur Verfügung gestellt werden
sollen. Gleichzeitig werden auch Schülerinnen und Schüler zur Lektüre und zur Beschäftigung mit
Themen und Anwendungen der Mathematik ermuntert.
Mathematik ist eine Schlüsselwissenschaft für die Technologien der Zukunft. Bereits jetzt durchdringt die Mathematik als Werkzeug und als Sprache die Natur- und Ingenieurwissenschaften,
aber auch die Ökonomie und in zunehmendem Maße auch die ‘Life sciences’. Die Bedeutung der
Mathematik wird daher noch weiter zunehmen. Um Schülerinnen und Schülern den Einstieg in
eine der genannten Studienrichtung nicht von vornherein zu verunmöglichen, ist es wichtig, sie
frühzeitig und fundiert mit den Grundlagen der Mathematik vertraut zu machen und durch guten
und interessanten Unterricht zu motivieren. Die vorliegende Schriftenreihe möchte einen Beitrag
dazu leisten.
Fribourg, Februar 2001
Geheime Nachrichten per Postkarte verschicken?
Burchard Kaup1
Alice ist im Urlaub auf einer entlegenen Insel und möchte, dass ihre Bank einen grösseren Geldbetrag von ihrem Konto auf ein anderes Konto überweist. Wie kann sie das der Bank mitteilen? Sie
möchte, dass möglichst niemand erfährt, dass sie so viel Geld hat; sie möchte nicht, dass jemand
ihre Nachricht abfängt und so abändert, dass das Geld auf ein anderes Konto überwiesen wird;
ferner muss sie die Bank davon überzeugen, dass der Auftrag von der Inhaberin des zu belastenden
Kontos stammt (Problem der Unterschrift). So erstaunlich es klingen mag: alle diese Forderungen
sind erfüllbar, und zwar so, dass Alice ihren Auftrag per Postkarte an die Bank schickt (oder sogar
per Inserat in einer Zeitung). Die hier vorgestellte Methode stammt wohl ursprünglich von Diffie
(vgl. [2]) und wurde dann von Rivest, Shamir und Adleman weiterentwickelt (vgl. [1]) und
wird daher jetzt als RSA-System bezeichnet. Mathematische Details zum RSA-System findet
man in [4, §15]. Bei Norbert Hungerbühler bedanke ich mich für wertvolle Hinweise und die schöne
Graphik.
Das Übermitteln geheimer Nachrichten geschieht etwa nach folgendem Muster:
Nachricht
C
→ verschlüsselte Nachricht
T
→ verschlüsselte Nachricht
D
→ Nachricht
Dabei bedeutet
• C : Verschlüsseln mit einem Schlüssel c (Codieren)
• T : Transmission vom Absender zum Empfänger
• D : Entschlüsseln mit einem Schlüssel d (Decodieren)
Zum Verschlüsseln und zum Entschlüsseln werden verschiedene Schlüssel benötigt. Um beim Bild
mit dem Schlüssel und der Tür zu bleiben: der Schlüssel ist für das Verschliessen und Aufschliessen
einer Tür der Gleiche, der Vorgang jedoch ist verschieden: man wechselt die Drehrichtung.
1
Ziel
Unser Ziel ist es, eine Methode vorzustellen, wie man Nachrichten so verschlüsseln und entschlüsseln
kann, dass die Verschlüsselungsvorschrift C zum Verschlüsseln öffentlich bekannt ist, dass aber die
Vorschrift D zum Entschlüsseln nur dem rechtmässigen Empfänger der Nachricht bekannt ist. In
dem Fall kann der Transport von streng geheimen Nachrichten z.B. auf einer Postkarte oder per
Fax oder Internet erfolgen.
Genauer: Jede Person P , die geheime Nachrichten empfangen möchte, veröffentlicht in einem
Buch (ähnlich wie dem Telephonbuch) ihre persönliche Verschlüsselungsvorschrift CP , mit der
man Nachrichten verschlüsseln muss, die an P geschickt werden. Niemand ist in der Lage, daraus
die Entschlüsselungsvorschrift DP zum Entschlüsseln zu konstruieren; nur der Person P ist DP
bekannt.
1 Département
de Mathématiques
Université de Fribourg, Pérolles
CH-1700 Fribourg
[email protected]
1
2
Die Kinder-Methode
Wir schreiben die 28 Zeichen A,B,...,Y,Z, . , , (das 27-te Zeichen ist ein Punkt, das 28-te ein LeerRaum) auf zwei konzentrische Kreisscheiben (wie die Ziffern einer Uhr); durch gegenseitiges Verdrehen bekommen wir eine Verschlüsselung: auf der kleineren Scheibe stehen am Rand die zu
verschlüsselnden Buchstaben, neben jedem Zeichen steht auf dem grösseren Kreis das Zeichen,
welches das zu verschlüsselnde Zeichen ersetzt.
Beispiel (dabei werde A durch F ersetzt, B durch G, . . . , V durch einen Punkt, W durch einen
Leer-Raum, X durch A, Y durch B, Z durch C, der Punkt durch D, ein Leer-Raum durch E; man
erhält diese Verschlüsselung, indem man die grosse Scheibe um 5 Buchstaben nach links dreht,
siehe Figur):
ICH WILL.
NHME NQQD
!
576 8
" 34
#
21
$
0
% &
/
'( . , + * ) Figur: Verschlüsselung mit der ‘Kinder-Methode’.
Die Entschlüsselung geschieht genauso: man dreht die grosse Scheibe entsprechend nach rechts.
Wie kann man das mathematisieren? Statt mit Buchstaben arbeiten wir mit den 28 Zahlen 0,. . . ,27,
und zwar 0 für A, 1 für B, . . . , 25 für Z, 26 für den Punkt, 27 für den Leer-Raum.
Unsere Verschlüsselung im obigen Beispiel wird gegeben durch
28
C(x) = x ⊕ 5
28
(da man immer 5 Buchstaben weiterzählt). Dabei ist ⊕ eine neue “Kreis-Addition”: die Addition
auf dem 28-er Kreis. Man addiert zwei Zahlen zwischen 0 und 27 auf dem 28-Kreis, indem man
von der üblichen Summe 28 abzieht, wenn diese Summe grösser als 27 ist. So ist z.B.
28
15 ⊕ 10 = 25,
28
15 ⊕ 20 = 7 (da 15 + 20 = 35 = 28 + 7),
28
15 ⊕ 13 = 0.
Dieses Verfahren ist uns bestens vertraut auf dem 12-Kreis (Uhr): so ist z.B.
12
7 ⊕ 8 = 3 (denn 7 + 8 = 15 = 12 + 3, 15 Uhr = 3 Uhr)
2
Besonders einfach ist die Addition auf dem 10-Kreis: von der “üblichen” Summe zweier Zahlen
nimmt man nur die letzte Ziffer (auf dem 100-Kreis nimmt man die zwei letzten Ziffern), so ist
10
100
zum Beispiel 7 ⊕ 8 = 5, 50 ⊕ 88 = 38.
Entschlüsseln: Wird etwa durch
28
C(x) = x ⊕ 5
verschlüsselt (d.h. Drehen des äusseren Kreises um 5 nach links), dann wird entschlüsselt durch
Drehen des äusseren Kreises um 5 nach rechts, d.h. um Drehen des äusseren Kreises um 28−5 = 23
nach links. Die zu C gehörende Entschlüsselungsvorschrift D ist also
28
D(x) = x ⊕ 23
Man kann also das Entschlüsseln genauso durchführen wie das Verschlüsseln, nur mit einem anderen
Schlüssel.
In der Regel wird man sich nicht mit nur 28 verschiedenen Zeichen zufrieden geben, man wird
also einen grösseren Kreis benutzen, etwa mit m verschiedenen Zeichen, d.h. man rechnet mit den
Zahlen 0, 1, 2, . . . , m − 1.
m
m
Satz 1 Wenn c ⊕ d = 0, dann ist D(x) = x ⊕ d die Entschlüsselungsvorschrift zur Verschlüssem
lungsvorschrift C(x) = x ⊕ c.
m
m
m
m
Beweis: D C(x) = (x ⊕ c) ⊕ d = x ⊕ (c ⊕ d) = x.
|
{z
}
↑
=0
(*)
Dabei haben wir die folgende Rechenregel benutzt (die sog. Assoziativität unserer Addition)
m
m
m
m
(a ⊕ c) ⊕ d = a ⊕ (c ⊕ d).
(∗)
m
Zu gegebenen m und c mit 1 ≤ c ≤ m − 1 kann man d mit c ⊕ d = 0 natürlich ganz einfach
bestimmen: es ist d = m − c.
3
Multiplikation statt Addition
Der äussere Kreis wird nicht einfach verdreht, sondern gedehnt, genauer: wir ersetzen die KreisAddition mit c durch die Kreis-Multiplikation mit c. Dabei definieren wir die Kreis-Multiplikation
mit c so:
m
m
m
m
x c = x ⊕ x ⊕ ··· ⊕ x
|
{z
}
c
m
Das Kreis-Produkt x c kann auch so berechnet werden: man berechnet erst x · c wie üblich und
subtrahiert dann so oft wie möglich die Zahl m. So ist z.B.
10
8 6 = 8,
denn 8 · 6 = 48 = 4 · 10 + 8;
12
8 6 = 0.
Als Verschlüsselung (durch Kreis-Multiplikation mit c) wählen wir also
m
Cc (x) = x c.
3
Beispiele für m = 10:
x
C2 (x)
C3 (x)
C7 (x)
0
0
0
0
1
2
3
7
2
4
6
4
3
6
9
1
4
8
2
8
5
0
5
5
6
2
8
2
7
4
1
9
8
6
4
6
9
8
7
3
unbrauchbar
Verschlüsselung
Verschlüsselung
c = 2 ist unbrauchbar: verschiedene “Nachrichten” (hier ist eine Nachricht einfach eine der Zahlen
0, 1, . . . , 9) bekommen den gleichen Code. Brauchbar
sind c = 3 und c = 7. Man sieht leicht, dass
C7 die Entschlüsselung zu C3 ist, denn C7 C3 (x) = x.
Wenn ein Text Buchstabe für Buchstabe nach einer festen Ersetzungsliste verschlüsselt wird, dann
ist es sehr leicht, den codierten Text zu entschlüsseln (man weiss z.B. dass das “e” ein sehr oft
vorkommender Buchstabe ist; so kann man bei längeren Texten aus der Häufigkeit, wie oft ein
Buchstabe vorkommt, schon fast erkennen, wie welcher Buchstabe kodiert wurde). Man muss also
grössere Buchstabengruppen zusammenfassen und dann jeweils eine ganze Gruppe verschlüsseln.
Wenn diese Gruppen zu klein sind (z.B. jeweils 2 Buchstaben), dann kann ein Computer immer
noch durch Ausprobieren die Entschlüsselung finden. Deshalb müssen die Buchstabengruppen, die
als Ganzes verschlüsselt werden, sehr viel grösser sein, z.B. 50 oder 100 Buchstaben. Dann kann
man die Verschlüsselungsvorschrift aber nicht mehr in einer Tabelle festhalten (die wäre viel zu
umfangreich), sondern die Verschlüsselung muss jeweils berechnet werden. Da man mit Buchstaben
nicht so leicht rechnen kann, verwandeln wir den Text zuerst wieder in Zahlen, mit denen man
dann leicht rechnen kann:
Wir wählen die folgende Übersetzungstabelle (das ist der in der Informatik übliche ASCII-Code):
Buchstabe/Zeichen
Zahl
A
65
B
66
C
67
...
...
Z
90
32
.
46
Über der 32 steht ein leerer Platz (Space).
Durch Zusammensetzen von Buchstaben/Zeichen erhalten wir längere Zahlen, z.B.
dem Text “ABER NEIN.” entspricht die Zahl 65666982327869737846
Aus der Zahl kann man den Text leicht rekonstruieren.
Eine Verschlüsselung C der m Zahlen 0, 1, . . . , m − 1 ist eine Permutation (Umordnung, Mischung) dieser Zahlen. Die zugehörige Entschlüsselung
D ist diejenige Permutation, welche die
Permutation C rückgängig macht, d.h. D C(x) = x = C D(x) für alle x.
m
Satz 2 Die Zuordnung C(x) = x c ist eine Verschlüsselung, wenn c und m teilerfremd sind.
m
m
Wenn c d = 1 ist, dann ist D(x) = x d die Entschlüsselung von C.
Ähnlich wie oben zeigen wir, dass D tatsächlich die Entschlüsselung zu C ist:
m
m
m
m
D C(x) = (x c) d = x (c d) = x.
| {z }
↑
=1
(**)
Dabei haben wir die folgende Rechenregel benutzt:
m
m
m
m
(a c) d = a (c d)
4
(∗∗)
Beispiele:
10
10
Es ist 3 7 = 1, deshalb ist (wie wir schon oben gesehen haben) D(x) = x 7 Entschlüsselung
10
zur Verschlüsselung C(x) = x 3.
Für m = 1010 und c = 17 ist z.B. d = 4705882353; dieses d kann man wohl kaum noch durch
Probieren finden! Es gibt aber eine einfache Methode, um d zu berechnen: mit dem Euklidischen
Algorithmus findet man leicht (auch für sehr grosse teilerfremde Zahlen m und c) Zahlen α und d
für die gilt α · m + d · c = 1; dieses d hat die geforderte Eigenschaft. Darum ist diese Methode des
Verschlüsselns unbrauchbar, da man D aus C berechnen kann.
4
Methode des Potenzierens
Statt mit der Kreis-Multiplikation versuchen wir es mit dem Kreis-Potenzieren. Oft schreibt man
x ∧ c anstelle von xc = x
. . · x}
| · .{z
für c ≥ 1.
c
m
Unser “Kreis-Potenzieren” schreiben wir mit dem Symbol x ∧ c, dabei definieren wir
m
m
m
m
x
∧ c := x x · · · x .
|
{z
}
c
m
Wiederum kann man x ∧ c so berechnen: man berechnet die übliche Potenz xc und subtrahiert
10
dann so oft wie möglich die Zahl m. Man erhält z.B. die “10-Kreis-Potenz” x ∧ c indem man von
der üblichen Potenz xc nur die letzte Ziffer nimmt.
10
Wie sieht es nun mit dem Potenzieren aus? Wir wählen m = 10 und versuchen Cc (x) = x ∧ c für
verschiedene c.
x
C2 (x)
C3 (x)
0
0
0
1
1
1
2
4
8
3
9
7
4
6
4
5
5
5
6
6
6
7
9
3
8
4
2
9
1
9
unbrauchbar
Verschlüsselung
Offenbar ist C3 theoretisch
als Verschlüsselung brauchbar; C3 ist jedoch invers zu sich selber da
C3 C3 (x) = x für alle x . In diesem Fall sind also Verschlüsselung und Enstschlüsselung identisch.
Allgemein gilt:
Satz 3 Es sei m = p · q das Produkt zweier Primzahlen p < q. Ferner sei c teilerfremd zu der Zahl
m
φ(m) = (p − 1) · (q − 1). Dann ist C(x) = x ∧ c eine Verschlüsselung der Zahlen 0, 1, . . . , m − 1.
Um eine Entschlüsselung zu finden, benötigen wir offensichtlich wieder eine Formel ähnlich wie
oben.
10
10
10
10
Bekannt ist (ac )d = a(c·d) . Leider ist nun im Allgemeinen (x ∧ c) ∧ d 6= x ∧ (c d), z.B. ist
10
10
10
10
(2 ∧ 3) ∧ 5 6= 2 ∧ (3 5). Das Leben ist also komplizierter.
Satz 4 Es seien m und φ(m) wie in Satz 3. Dann gilt die folgende Formel:
m
m
m
φ(m)
(x ∧ c) ∧d=x
∧ (c d)
5
φ(m)
falls c d 6= 0
(∗ ∗ ∗)
m
φ(m)
Satz 5 Wenn d so gewählt wird, dass c d = 1 ist, dann ist D(x) = x ∧ d die Entschlüsselung
m
von C(x) = x ∧ c.
Beweis:
m
m
m
φ(m)
D C(x) = (x ∧ c) ∧ d=x ∧ (c d) = x.
| {z }
↑
(***)
=1
Einen Beweis von Satz 4 findet der interessierte Leser im Anhang.
Konstruktion einer solchen Verschlüsselung:
Wähle erst grosse Primzahlen p < q (in [5] wird beschrieben, wie man das machen kann), setze
φ(m)
m = p · q, wähle c teilerfremd zu φ(m) = (p − 1)(q − 1) und d so dass c d = 1 ist. Veröffentliche
Deine persönlichen Zahlen m und c; die Zahl d wird zum Entschlüsseln geheim gehalten, die Zahlen
p und q dürfen nicht veröffentlicht werden (am besten vergisst man sie).
Wenn p und q grösser als 10100 sind, dann ist m > 10200 , dann kann man mit C alle Zahlen von 1
bis 10200 − 1 verschlüsseln, d.h. Texte aus 100 Zeichen. Einen längeren Text zerlegt man in Teile
von maximal 100 Zeichen und verschlüsselt jedes Teil einzeln.
Bemerkungen:
1. Es ist nicht schwer, effektiv grosse Primzahlen p < q zu konstruieren (z.B. mit mehr als 100
Stellen) und dazu c und d mit den oben angegebenen Eigenschaften.
m
2. Es ist nicht schwer, den Wert x ∧ c effektiv zu berechnen, auch dann nicht, wenn m mehr
als 200 Stellen hat.
3. Es ist nach dem heutigen Stand des Wissens nicht möglich (ausser in Ausnahmefällen),
innerhalb von vernünftiger Zeit zu gegebenem m und c das d zu bestimmen, wenn m mehr
als 400 Stellen hat, da man (um d zu bestimmen) die Zahl φ(m) kennen müsste.
Geschicktes Potenzieren:
Es ist
x1000 = x8 · x32 · x64 · x128 · x256 · x512
Alle vorkommenden Potenzen bekommt man mit 9 Multiplikationen durch 9-maliges Quadrieren;
hinzu kommen die obenstehenden 5 weiteren Multiplikationen. Man kann also x1000 mit 14 Multim
plikationen berechnen. Analog kann man x ∧ 1000 mit 14 Kreis-Multiplikationen berechnen. Um
m
z.B. x ∧ 10200 zu berechnen, benötigt man nur 887 Kreis-Multiplikationen!
5
Das Problem der Unterschrift
Wir haben gesehen: wenn Alice nach dem obigen Verfahren vorgeht, dann kann sie ihre Nachricht
auf einer Postkarte versenden.
Wie kann Alice der Bank beweisen, dass der Auftrag wirklich von ihr stammt?
Alice sendet
der Bank als Unterschrift z.B. die verschlüsselte Nachricht U = CB DA (Z) (dabei sei Z die Zahl,
welche den Text “31. Mai 2002, Viele Grüsse von Alice” darstellt, DA die Entschlüsselungsfunktion
von Alice und CB die Verschlüsselungsfunktion der Bank). Aus U kann die Bank die ursprüngliche
6
Zahl Z (und damit die Botschaft “31. Mai 2002, Viele Grüsse von Alice”) rekonstruieren, es ist
nämlich
CA DB (U ) = CA DB (CB (DA (Z))) = CA DA (Z) = Z.
| {z }
=id
Dabei haben wir angenommen, dass der BankCA bekannt ist. Alice ist die einzige Person, die
eine Zahl U herstellen kann für die CA DB (U ) eine sinnvolle Zahl ist (die einem sinnvollen Text
entspricht): sie muss zu Z die Zahl DA (Z) berechnen können, und das kann eben nur Alice, da nur
sie die Umkehrfunktion von CA kennt. Die Unterschrift U kann auch nur die Bank entschlüsseln,
denn dazu benötigt man DB . Jetzt muss mit der Bank nur noch vereinbart werden, dass die
Unterschrift das aktuelle Datum enthält, und dass pro Tag von einer bestimmten Person nur eine
Unterschrift akzeptiert wird (sonst könnte jemand die Unterschrift einfach kopieren und sich damit
ausweisen).
6
Anhang
Zum Beweis von Satz 4 rechnen wir im Restklassenring Zm := Z/mZ. Die Klasse von x ∈ IIN in
Zm bezeichnen wir wieder mit x. Offenbar genügt es, folgende Formel zu beweisen (dabei wähle
man f := c · d)
xf = xg in Zm falls g > 0 und f ≡ g modulo φ(m).
Zum Beweis dieser Formel benutzen wir den Ringisomorphismus (“Chinesischer Restsatz”)
Zm ∼
= Zp × Zq ,
x ∼ (x1 , x2 ) ⇐⇒ x ≡ x1 (mod p), x ≡ x2 (mod q).
Insbesondere ist xn = (xn1 , xn2 ) falls n > 0 und x ∼ (x1 , x2 ). Nach Voraussetzung hat f die Form
f = g + h · φ(m), also ist
xf = (xf1 , xf2 ) = (xg1 , xg2 ) = xg
denn für x1 gilt
φ(m) h
xf1 = xg1 · x1
= xg1 · xp−1
1
(q−1)h
;
nun ist aber (“kleiner Fermatscher Satz”) xp−1
= 1 ∈ Zp falls x1 6= 0 ∈ Zp ; also ist in jedem Fall
1
(auch wenn x1 = 0 ∈ Zp ) xf1 = xg1 ∈ Zp . Ganz analog folgt xf2 = xg2 ∈ Zq .
An dieser Stelle mag sich der interessierte Leser fragen, wo wir g 6= 0 gebraucht haben.
φ(m)
Ohne die Voraussetzung c d 6= 0 wird die Aussage (∗ ∗ ∗) falsch:
φ(m)
Wähle z.B. p = 2, q = 3, x = 2, c = d = 2, dann ist m = 6, φ(m) = 2 und c d = 0, aber in Z6
gilt (xc )d = 42 = 4 6= 1 = 40 .
Mit Satz 4 ist wegen Satz 5 natürlich auch Satz 3 bewiesen, da c ∈ Zφ(m) ein multiplikatives
Inverses d ∈ Zφ(m) besitzt.
Literatur
[1] L.M. Adleman, R.L. Rivest, A. Shamir: A method for obtaining digital signatures and
public-key cryptosystems. Communications of the ACM 21 (1978), 120–126. 1
[2] W. Diffie: The first ten years of public-key cryptography. Proceedings of the IEEE 76
(1988), 560–577. 1
[3] W. Diffie and M.E. Hellman: New directions in cryptography. IEEE Transactions on
Information Theory 22 (1976), 644–654.
7
[4] O. Forster: Algorithmische Zahlentheorie. Verlag Vieweg 1997. 1
[5] B. Kaup: Einfache Primtests. Elemente der Mathematik 48 (1993), 143–156. 6
[6] N. Koblitz: A Course in Number Theory and Cryptography. Verlag Springer 1987.
[7] D. Welsh: Codes and Cryptography. Oxford Science publications 1988.
8
Herunterladen