Euler-Fermat

Werbung
Praktisch modulo n rechnen
Addition und Multiplikation modulo n sind auch dann
algorithmisch kein großes Problem, wenn mit großen
Zahlen gerechnet wird (z.B. 1000-stellig).
Das Verwalten sehr großer Zwischenergebnisse kann
vermieden werden, wenn auch Zwischenergebnisse
modulo n reduziert werden.
Mit Hilfe des Euklidischen Algorithmus kann auch schnell
dividiert werden (wo möglich).
Selbst das Potenzieren ist einfach:
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 1
Square and multiply
Wie berechnet man
3471327233 mod 41633?
Man stellt zuerst den Exponenten als Binärzahl dar:
27233 = 214 + 213 + 211 + 29 + 26 + 25 + 20 = %110101001100001.
Sukzessives Ausklammern ergibt
27233 = ((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 2
Square and multiply
Man hat also
a27233 = a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 3
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 4
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 5
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 6
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2+1)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 7
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2+1)2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 8
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2+1)2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2 · a)2 · a)2 )2 )2 )2 )2 · a
= (((((((((a((2+1)·2·2+1)·2·2+1)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 9
Square and multiply
Man hat also
((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2+1
a27233 = a
= a((((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)·2·2·2·2·2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2+1)2 )2 )2 )2 )2 · a
= (((((a(((2+1)·2·2+1)·2·2+1)·2·2·2+1)·2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2+1)2 · a)2 )2 )2 )2 )2 · a
= ((((((a((2+1)·2·2+1)·2·2+1)·2·2·2 · a)2 · a)2 )2 )2 )2 )2 · a
= (((((((((a((2+1)·2·2+1)·2·2+1)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
= (((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 10
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 11
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2+1)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 12
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2+1)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 13
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2+1)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((((a2+1)2 )2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 14
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2+1)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((((a2+1)2 )2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((((a2 · a)2 )2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 15
Square and multiply
Man hat also
a27233
=
(((((((((a((2+1)·2·2+1)·2·2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2+1)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((a(2+1)·2·2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((((a2+1)2 )2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
=
(((((((((((((a2 · a)2 )2 · a)2 )2 · a)2 )2 )2 · a)2 · a)2 )2 )2 )2 )2 · a
Die Exponentiation mit 27233 kann also durchgeführt
werden, indem vierzehn mal quadriert und fünf mal
multipliziert wird.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 16
Potenzieren modulo n
Das Potenzieren mit dem Exponenten e ∈ N kann mit
(log2 e)-maligem Quadrieren und Multiplizieren durchgeführt
werden.
Beim Rechnen modulo n kann dabei bei jedem
Rechenschritt modn reduziert werden.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 17
Potenzieren modulo n
Das Potenzieren mit dem Exponenten e ∈ N kann mit
(log2 e)-maligem Quadrieren und Multiplizieren durchgeführt
werden.
Beim Rechnen modulo n kann dabei bei jedem
Rechenschritt modn reduziert werden.
Kein auch nur halbwegs schnelles Verfahren ist bekannt,
um aus der Angabe von 2e mod n den Exponenten e zu
bestimmen („binary log“).
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 18
Öffentlich ein Geheimnis vereinbaren
Problemstellung: Zwei Teilnehmer möchten abhörsicher
miteinander kommunizieren und dazu ein
Verschlüsselungsverfahren benutzen.
Dazu müssen sie einen gemeinsamen geheimen Schlüssel
verwenden.
Wie können sie sich über eine nicht abhörsichere
Verbindung auf ein gemeinsames Geheimnis einigen?
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 19
Öffentlich ein Geheimnis vereinbaren
Lösung: Die beiden Teilnehmer A und B einigen sich
öffentlich auf eine grosse Zahl n.
Jeder Teilnehmer erzeugt eine große Zahl:
Teilnehmer A erzeugt die Zahl a und berechnet 2a mod n
Teilnehmer B erzeugt die Zahl b und berechnet 2b mod n
Die Zahlen a und b behalten die Teilnehmer geheim für sich.
Die Zahlen 2a mod n und 2b mod n teilen sie sich mit.
Danach
kennt Teilnehmer A die Zahlen a und 2b mod n,
kennt Teilnehmer B die Zahlen b und 2a mod n,
kennt ein Angreifer die Zahlen 2a mod n und 2b mod n.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 20
Das gemeinsame Geheimnis
Die beiden Teilnehmer berechnen
2a·b ≡ (2a )b ≡ (2b )a
(mod n).
Dieses Ergebnis verwenden sie als gemeinsamen
Schlüssel für das Verschlüsselungsverfahren.
Der Angreifer kennt lediglich 2a mod n und 2b mod n.
Es ist kein brauchbares Verfahren bekannt, daraus
2a·b mod n
auszurechnen.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 21
Der Satz von Lagrange
Die Ordnung eines Elementes a einer Gruppe (G, ·,−1 , 1)
ist
die kleinste natürliche Zahl n mit an = 1, falls es
überhaupt eine solche natürliche Zahl gibt, und
∞ sonst.
Satz 1 Für jedes Element a einer endlichen Gruppe
(G, ·,−1 , 1) gilt: Die Ordnung von a ist ein Teiler der Anzahl
|G| der Gruppenelemente.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 22
Das Lemma von Euler-Fermat
Satz 2 Ist a zu n teilerfremd, dann gilt
aϕ(n) mod n = 1.
Mathematik I für Informatiker – Das Lemma von Euler-Fermat – p. 23
Herunterladen