Mathematik I für Informatiker Das Lemma von Euler-Fermat p. 1 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. 2 Wie berechnet man 34713 27233 mod 41633? Man stellt zuerst den Exponenten als Binärzahl dar: 27233 = 2 14 + 2 13 + 2 11 + 2 9 + 2 6 + 2 5 + 2 0 = %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. 3 a 27233 = 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. 4 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 6 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 7 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 8 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 9 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 10 a 27233 = a ( ((((2+1) 2 2+1) 2 2+1) 2 2 2+1) 2+1) 2 2 2 2 2+1 = 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. 11 a 27233 = (((((((((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 a 27233 = (((((((((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. 13 a 27233 = (((((((((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. 14 a 27233 = (((((((((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 = (((((((((((((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. 15 a 27233 = (((((((((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 = (((((((((((((a 2+1 ) 2 ) 2 a) 2 ) 2 a) 2 ) 2 ) 2 a) 2 a) 2 ) 2 ) 2 ) 2 ) 2 a = (((((((((((((a 2 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. 16 a 27233 = (((((((((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 = (((((((((((((a 2+1 ) 2 ) 2 a) 2 ) 2 a) 2 ) 2 ) 2 a) 2 a) 2 ) 2 ) 2 ) 2 ) 2 a = (((((((((((((a 2 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. 17 Potenzieren modulo n Das Potenzieren mit dem Exponenten e N kann mit (log 2 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. 18 Potenzieren modulo n Das Potenzieren mit dem Exponenten e N kann mit (log 2 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 2 e mod n den Exponenten e zu bestimmen ( binary log ).
Mathematik I für Informatiker Das Lemma von Euler-Fermat p. 19 Ö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. 20 Ö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 2 a mod n Teilnehmer B erzeugt die Zahl b und berechnet 2 b mod n Die Zahlen a und b behalten die Teilnehmer geheim für sich. Die Zahlen 2 a mod n und 2 b mod n teilen sie sich mit. Danach kennt Teilnehmer A die Zahlen a und 2 b mod n, kennt Teilnehmer B die Zahlen b und 2 a mod n, kennt ein Angreifer die Zahlen 2 a mod n und 2 b mod n.
Mathematik I für Informatiker Das Lemma von Euler-Fermat p. 21 Das gemeinsame Geheimnis Die beiden Teilnehmer berechnen 2 a b (2 a ) b (2 b ) a (mod n). Dieses Ergebnis verwenden sie als gemeinsamen Schlüssel für das Verschlüsselungsverfahren. Der Angreifer kennt lediglich 2 a mod n und 2 b mod n. Es ist kein brauchbares Verfahren bekannt, daraus auszurechnen. 2 a b mod n
Mathematik I für Informatiker Das Lemma von Euler-Fermat p. 22 Der Satz von Lagrange Die Ordnung eines Elementes a einer Gruppe (G,, 1, 1) ist die kleinste natürliche Zahl n mit a n = 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. 23 Das Lemma von Euler-Fermat Satz 2 Ist a zu n teilerfremd, dann gilt a ϕ(n) mod n = 1.