Elementare Kryptographie
|
|
|
- Henriette Grosse
- vor 10 Jahren
- Abrufe
Transkript
1 Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Institut für Mathematik Elementare Kryptographie Kai Gehrs Paderborn, 9. Juli 2007
2
3 Inhaltsverzeichnis Grundlagen: (Computer)Algebra 3. Addition und Multiplikation Repeated Squaring (Effizientes Potenzieren) Division mit Rest Der Euklidische Algorithmus Berechnung modularer Inverser Der Chinesische Restsatz Die Eulersche ϕ-funktion Die durchschnittliche Ordnung von ϕ(n) Kettenbrüche Einige gruppentheoretische Resultate Der Satz von Lagrange Der Satz von Euler und der kleine Satz von Fermat Grundlagen aus der Zahlentheorie Finden von Primzahlen und Primzahltest Faktorisierung ganzer Zahlen Die Pollard ρ-methode zur Faktorisierung ganzer Zahlen Dixon s Zufallsquadrate Diskrete Logarithmen Grundlegende Definitionen Der Baby-Schritt-Riesen-Schritt Algorithmus Der Geburtstagsangriff auf den diskreten Logarithmus Die Pollard ρ-methode Der Chinese-Remaindering Algorithmus Der Algorithmus von Pohlig & Hellman Zusammenfassung Index-Kalkül für den diskreten Logarithmus in Z p Arithmetische Schaltkreise (Deterministische) arithmetische Schaltkreise
4 3.9.2 Probabilistische arthmetische Schaltkreise Einige Kryptosysteme Vorbemerkungen Symmetrische und Asymmetrische Kryptosysteme Alice, Bob und Eve Block Ciphers und Stream Ciphers Rijndael Algebraische Grundlagen Einiges zur Spezifikation Verschlüsselung von Nachrichten mit Rijndael Das RSA-Verfahren Der Angriff von Wiener auf RSA Diffie und Hellman Schlüsselaustauschverfahren Woman-in-the-Middle Angriff Das Kryptosystem von El Gamal Secret Sharing Unterschriften (Signaturen) Zum Konzept von Unterschriftenverfahren Das Unterschriftenverfahren von ElGamal Fälschungssicherheit Die Angriffe von Mitchell auf ElGamal Unterschriften Zur unvorsichtigen Benutzung des Unterschriftenverfahrens von El- Gamal Schnorr Unterschriften Hash-Funktionen Eine spezielle Hash-Funktion Hashing von Blocknachrichten Kryptosysteme und Hash-Funktionen Zeitstempel Identifikation und Authentifikation Das Identifikationsverfahren von Schnorr Das Identifikationsverfahren von Okamoto Ein RSA-basiertes Identifikationsschema Ein sicheres Schlüsselaustauschverfahren Literaturverzeichnis 83 2
5 Kapitel Grundlagen aus Algebra und Computeralgebra In diesem Kapitel werden die grundlegenden theoretischen Hilfsmittel aus der Computeralgebra diskutiert, die nötig sind, um die Korrektheit des RSA Verfahrens 4. beweisen zu können. Ferner werden wir Algorithmen zitieren und ihre Laufzeiten analysieren, um begründen zu können, dass die vorgestellten Kryptosysteme für ihre berechtigten Benutzer effizient verwendet werden können. Laufzeiten werden wie üblich in der O-Notation angegeben: Definition.. Seien f,g : Z R Funktionen mit f (n),g(n) 0 für alle n 0. Dann gilt g O( f ), falls g(n) c f (n) für alle n N mit N N und c R. Damit bedeutet g O( f ) im wesentlichen nichts anderes, als dass g bis auf Multiplikation mit einer Konstanten c R höchstens so schnell wächst wie f.. Addition und Multiplikation Wir werden uns in der Regel auf die Addition und Multiplikation von ganzen Zahlen oder Polynomen über einem kommutativen Ring beschränken. Zur Addition zweier Polynome f,g R[x] mit f = n i=0 a i x i und g = m i=0 b i x i über einem kommutativen Ring R mit Einselement werden O(max{m, n}) Operationen in R benötigt. Für die Multiplikation von f und g benötigen wir mittels bloßem Ausmultiplizieren der Summendarstellungen O(m n) Ringoperationen in R. Jede ganze Zahl x Z können wir in Binärdarstellung in der Form x = n i=0 x i 2 i mit x i {0,} für i = 0,...,n schreiben. Die Zahl n heißt dann die Binärlänge von x. Lemma.2. Addition zweier n-bit Zahlen x, y Z ist mit O(n) Bit-Operationen durchführbar. Beweis. Wir schreiben x = n i=0 x i 2 i sowie y = n i=0 y i 2 i mit x i,y i {0,} für alle i = 0,...,n. Addition von x und y wird komponentenweise auf den Bits durchgeführt. Daraus folgt die Behauptung. 3
6 4 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Lemma.3. Multiplikation zweier n-bit Zahlen x,y Z ist mit O(n 2 ) Bit-Operationen durchführbar. Beweis. Wir schreiben x = n i=0 x i 2 i sowie y = n i=0 y i 2 i mit x i,y i {0,} für alle i = 0,...,n. Analog zur Multiplikation von Polynomen benötigt man O(n n) = O(n 2 ) Bit- Operationen. Bemerkung.4. Es sind schnellere Methoden zur Multiplikation zweier n-bit Zahlen bekannt. So benötigt z.b. ein Algorithmus, der auf Schönhage und Strassen zurückgeht, nur O(n log n log log n) Bit-Operationen..2 Repeated Squaring (Effizientes Potenzieren) In einer Reihe kryptographischer Verfahren ist es von essentieller Wichtigkeit, dass man effizient auch große Potenzen von Gruppenelementen berechnen kann. Das in diesem Abschnitt kurz vorgestellte Verfahren kann universell in einer beliebigen Gruppe G verwendet werden, um x k für ein Element x G und k N zu berechnen. Aus diesem Grund geben wir den Algorithmus zur Berechnung solcher Potenzen auch zunächst in sehr allgemeiner Form an. Algorithmus.5. ( Repeated Squaring ) Sei G eine Gruppe, x G und k N. Ferner sei k = n i=0 k i 2 i die Binärdarstellung der Zahl k mit k n =. () Setze y := x. (2) Für i = n 2,...,0 berechne: y := y 2 Ist k i =, so berechne zusätzlich y := y x. (3) Gebe y = x k aus. Anstatt eines Korrektheitsbeweises, bei dem man die Gültigkeit einer entsprechend geschickt gewählten Invariante nachweist, betrachten wir ein kleines Beispiel: Beispiel.6. Sei G eine Gruppe und x G. Wir wollen x 20 mit Hilfe von Algorithmus.5 berechnen. Es ist k 4 k 3 k 2 k k 0 = 000 die Binärdarstellung der Zahl 20. Zuerst setzen wir y := x. Wegen k 3 = 0 setzen wir y := y 2 = x 2 und verzichten auf eine zusätzliche Multiplikation mit x. Im nächsten Schritt ist k 2 = zu betrachten. Wir berechnen also zuerst y := y 2 = x 4 und dann zusätzlich y := y x = x 5. Wegen k = k 0 = 0 sind die nächsten beiden auszuführenden Schritte y := y 2 = x 0 und zuletzt ist der Wert von y ein weiteres Mal zu quadrieren: y := y 2 = x 20. In der Notation von.5 erhalten wir für die Laufzeit des Algorithmus: Korollar.7. Algorithmus.5 berechnet in Schritt (2) O(n)-mal das Quadrat des Elementes y und O(n)-mal das Produkt von y mit x. Insgesamt ergibt sich damit eine Laufzeit von O(n M G ), wobei M G die Laufzeit für eine Multiplikation zweier Elemente in G beschreibt.
7 .3. DIVISION MIT REST 5.3 Division mit Rest Sowohl im Ring der ganzen Zahlen als auch im Polynomring über einem Körper können wir stets Division mit Rest durchführen. Division mit Rest ist essentieller Bestandteil des Euklidischen Algorithmus und von modularer Arithmetik. Es soll an dieser Stelle weniger auf algorithmische Details eingegangen werden. Als Beispiel betrachten wir hier nur die Division mit Rest für Polynome über einem Körper. Auf ähnliche, aber ein wenig kompliziertere Weise, lassen sich auch Algorithmen zur Division mit Rest von ganzen Zahlen angeben, die auf ihren Binärdarstellungen operieren. Algorithmus.8. (Division mit Rest) Seien f = n i=0 a i x i und g = m i=0 b i x i Polynome aus F[x], F ein Körper. () Setze r := f. (2) Für i = n m,...,0 wiederhole: Wenn degr = m + i, so setze q i := lc(r) b m und r := r q i x i g. Andernfalls setze q i := 0. (3) Gebe q = n m i=0 q i x i aus. Dann gilt f = q g + r mit degr < degg. Algorithmus.8 benötigt im wesentlichen (n m+) (2m) Additionen und Multiplikationen in F. Damit folgt: Lemma.9. Division mit Rest eines Polynoms f vom Grad n durch ein Polynom g vom Grad m mit n > m benötigt O(n 2 ) Operationen im zugrundeliegenden Koeffizientenring. Ähnliche Resultate lassen sich auch für ganze Zahlen angeben. Ohne Beweis geben wir an: Lemma.0. Sind a,b Z mit Binärlängen n bzw. m, so ist Division mit Rest a = q b + r mit q,r Z und 0 r < b mit O(m (n m)) Bit-Operationen durchführbar, wobei n m im wesentlichen die Binärlänge des Quotienten q beschreibt..4 Der Euklidische Algorithmus Zur Erinnerung stellen wir diesem Abschnitt die folgenden beiden elementaren Definitionen voran: Definition.. Sei R ein Ring. Dann heißt a ein Teiler von b, a b, falls es ein r R gibt mit b = r a. Definition.2. Sei R ein euklidischer Ring (d.h. ein Ring, in dem man zwei Elemente per Division mit Rest durcheinander dividieren kann).
8 6 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA (i) Dann heißt d R ein größter gemeinsamer Teiler von a,b R, d = ggt(a,b), falls d a und d b und für alle s R mit s a und s b stets s d folgt. (ii) Ein Element k R heißt kleinstes gemeinsames Vielfaches von a und b, k = kgv(a,b), falls a k und b k und für alle l R mit a l und b l stets k l folgt. Für R = Z sprechen wir häufig von dem größten gemeinsamen Teiler und meinen damit den eindeutig bestimmten positiven größten gemeinsamen Teiler zweier ganzer Zahlen. Gleiches gilt für das kleinste gemeinsame Vielfache zweier ganzer Zahlen. Im folgenden Lemma fassen wir ohne Beweis einige der wesentlichen Eigenschaften des größten gemeinsamen Teilers ganzer Zahlen zusammen: Lemma.3. Seien a, b, c Z. Dann gilt: (i) ggt(a, b) = a genau dann, wenn a b. (ii) ggt(a,a) = ggt(a,0) = a und ggt(a,) =. (iii) Kommutativität: ggt(a, b) = ggt(b, a). (iv) Assoziativität: ggt(a, ggt(b, c)) = ggt(ggt(a, b), c). (v) Distributivität: ggt(c a,c b) = c ggt(a,b). (vi) Gilt a = b, so folgt stets ggt(a, c) = ggt(b, c). (vii) Ist g = ggt(a,b), g > 0, so existieren s,t Z mit g = s a +t b. Die Darstellung Lemma.3 (vii) liefert der Erweiterte Euklidische Algorithmus, der in einem beliebigen euklidischen Ring durchgeführt werden kann. Wir geben ihn der Einfachheit halber nur für ganze Zahlen an. Die hier vorgestellte Version kann aber leicht in eine Version für Polynome umgeschrieben werden, wenn man die entsprechenden Ungleichungen als Ungleichungen über den Grad der betrachteten Polynome interpretiert. Vorab aber noch ein kleines Lemma, das uns beim Beweis der Korrektheit des Algorithmus sehr nützlich sein wird: Lemma.4. Seien a, b Z. Dann gilt: ggt(a, b) = ggt(a mod b, b). Beweis. Division mit Rest liefert a = q b + (amodb). Es gilt: ggt(a,b) teilt sowohl a als auch b, also auch amodb = a q b und damit ggt(amodb,b). Umgekehrt teilt ggt(a mod b, b) sowohl a mod b als auch b und damit auch a = q b + (a mod b). Wir erhalten also ggt(a,b) ggt(amodb,b) und ggt(amodb,b) ggt(a,b). Daraus folgt die Behauptung. Algorithmus.5. (Erweiterter Euklidischer Algorithmus (EEA)) Seien a, b Z mit a b.
9 .4. DER EUKLIDISCHE ALGORITHMUS 7 () Setze r 0 := a, r := b, s 0 :=, s := 0, t 0 := 0, t := und i :=. (2) Wiederhole den folgenden Schritt, bis r l+ = 0 gilt für ein l N 0 : Berechne q i := r i divr i als ganzzahligen Quotienten von r i und r i. r i+ := r i q i r i (d.h. r i+ = r i modr i ) s i+ := s i q i s i t i+ := t i q i t i i := i + (3) Gebe r l, s l und t l aus. Dann ist r l ein größter gemeinsamer Teiler von a und b und es gilt r l = s l a +t l b. Beweis. (Korrektheit) Der Erweiterte Euklidische Algorithmus.5 terminiert, denn es gilt für r i mit i 2 die Ungleichung 0 r i = r i 2 modr i < r i a. Damit bilden die Reste r i eine streng monoton fallende Folge ganzer Zahlen, die nach unten durch 0 beschränkt ist, d.h. der Algorithmus muss terminieren. Wir zeigen nun, dass für alle i gilt: s i a +t i b = r i. Für i = 0 und i = ist die Behauptung klar per Definition von r 0,r,s 0,s,t 0,t. Sei nun i 2. Dann folgt per Induktion: s i a +t i b = (s i 2 q i s i ) a + (t i 2 q i t i ) b = (s i 2 a +t i 2 b) (q i s i a + q i t i b) = r i 2 q i (s i a +t i b) = r i 2 q i r i = r i Damit folgt für i = l mit s l a + t l b = r l die behauptete Darstellung. Es bleibt zu zeigen, dass r l in der Tat ein größter gemeinsamer Teiler von a und b ist. Mit Lemma.4 und a = (adivb) b + (amodb) = q b + r 2 folgt ggt(a,b) = ggt(amodb,b) = ggt(r 2,b) = ggt(r 2,r ). Wegen r i+ = r i modr i folgt ggt(r i,r i ) = ggt(r i modr i,r i ) = ggt(r i+,r i ). Wegen r l+ = 0 und r l = ggt(r l+,r l ) folgt per Rekursion r l = ggt(r 2,r ) = ggt(a,b). Wir betrachten ein Beispiel: Beispiel.6. Seien a = 26 und b = 35. zunächst definieren wir r 0 := 26, r := 35, s 0 :=,
10 8 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA s := 0, t 0 := 0 und t :=. Dann folgen wir der Vorschrift aus.5: i = q = r 0 divr = 26div35 = 3 r 2 = r 0 q r = = 2 s 2 = s 0 q s = 3 0 = t 2 = t 0 q t = 0 3 = 3 i = 2 q 2 = r divr 2 = 35div2 = r 3 = r q 2 r 2 = 35 2 = 4 s 3 = s q 2 s 2 = 0 = t 3 = t q 2 t 2 = ( 3) = 4 i = 3 q 3 = r 2 divr 3 = 2div6 = r 4 = r 2 q 3 r 3 = 2 4 = 7 s 4 = s 2 q 3 s 3 = ( ) = 2 t 4 = t 2 q 3 t 3 = 3 4 = 7 i = 4 q 4 = r 3 divr 4 = 4div7 = 2 r 5 = r 3 q 4 r 4 = = 0 Damit folgt: ggt(26,35) = r 4 = 7 und 7 = ( 7) 35. Nun wollen wir uns überlegen, welche Kosten der Erweiterte Euklidische Algorithmus für zwei ganze Zahlen a und b beansprucht. Theorem.7. Der Erweiterte Euklidische Algorithmus.5 für zwei Zahlen a, b Z mit a b und n := log 2 a + benötigt O(n) Wiederholungen von Schritt (2) und insgesamt eine Laufzeit von O(n 2 ) Bit-Operationen. Beweis. Im folgenden setzen wir o.e. a,b 0 voraus. Es sei l die Anzahl der Schritte, die der Erweiterte Euklidische Algorithmus bei Eingabe a und b benötigt, bis er s l,t l,r l ausgibt mit r l = ggt(a,b) und r l = s l a +t l b. Dann erhalten wir in der Notation von.5 r i = q i r i + r i+ r i + r i+ > 2 r i+, da die Folge der Reste eine streng monoton fallende Folge nichtnegativer ganzer Zahlen bildet. Also folgt r i > 2 l 2 l r i+. l i=2 i=2
11 .5. BERECHNUNG MODULARER INVERSER 9 Mit Hilfe dieser Abschätzung gewinnen wir aber eine Abschätzung für die Anzahl l der vom Erweiterten Euklidischen Algorithmus benötigten Schritte: 2 l 2 < l i=2 r i l i=2 r = r r 2 < r2 i+ r l r l 2 = 2l < 2 r 2 Anwendung von log 2 auf die letzte Ungleichung liefert l < log 2 (2 r 2 ) = +2 log 2 r. Wegen r = b a ergibt sich das zentrale Resultat l + 2 log 2 a und somit l O(log 2 a) = O(n). Den wesentlichen Aufwand in.5 machen die Multiplikationen in Schritt (2) aus. Der Aufwand zur Berechnung von r i+ = r i q i r i ist also im wesentlichen durch log 2 q i log 2 r i gegeben. Der Gesamtaufwand zur Berechnung aller solcher Werte beläuft sich damit im wesentlichen auf l i= log 2 q i log 2 r i l i= = log 2 a log 2 q i log 2 a l i= = log 2 a log 2 l log 2 q i q i i= log 2 a O(log 2 a) O((log 2 a) 2 ) = O(n 2 ) Man kann zeigen, dass stets gilt s i a r i und t i b r i. Es folgt s i a und t i a falls a > 0 mit a > b. Da für die Werte s i und t i also ähnliche Abschätzungen gelten ergibt sich damit eine Gesamtlaufzeit von O(n 2 ), denn wir können uns in der obigen Abschätzung für r i einfach s i oder auch t i denken. Analoge Betrachtungen liefern im Fall des Erweiterten Euklidischen Algorithmus für Polynome: Theorem.8. Seien F ein Körper und f,g F[x] Polynome mit deg f = n, degg = m sowie n m. Dann benötigt der Erweiterte Euklidische Algorithmus bei Eingabe f und g O(n 2 ) Additionen und Multiplikationen in F. Beweis. Siehe [8], Seite 38, Theorem Berechnung modularer Inverser Restklassenringe ganzer Zahlen sind für uns die algebraische Struktur, in der wir später in kryptographischen Verfahren rechnen wollen. Grundlegend ist die folgende Definition.
12 0 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Bemerkung und Definition.9. Sei N N, N 2. Auf dem Ring der ganzen Zahlen Z definieren wir die Relation N vermöge a N b : N a b. Die Relation N ist eine Äquivalenzrelation, so dass wir die Äquivalenzklassen nach N betrachten können. Die Klasse von a Z modulo N definieren wir als amodn := [a] N := {b Z b N a}. Als Repräsentanten für a mod N wählen wir immer die kleinste nicht-negative ganze Zahl z mit 0 z N aus der Menge {b Z : N (b a)}. Die Menge der Äquivalenzklassen nach der Äquivalenzrelation N bezeichnen wir mit Z N. Wir definieren für a modn,a 2 modn Z N eine Addition und eine Multiplikation wie folgt: a modn + a 2 modn = (a + a 2 )modn, a modn a 2 modn = (a a 2 )modn. Mit der so definierten Addition und Multiplikation wird Z N zu einem kommutativen Ring mit Nullelement 0modN und Einselement modn, der als Restklassenring von Z modulo N bezeichnet wird. Z N hat N Elemente. Ein bezüglich der Multiplikation invertierbares Element amodn bezeichnen wir als Einheit modulo N. Die Menge aller Einheiten von Z N wird mit Z N bezeichnet. Beispiel.20. Sei N = 6. Dann besteht Z N = Z 6 aus den Restklassen 0mod6, mod6, 2mod6, 3mod6, 4mod6 und 5mod6. Es gilt: 2mod6 + 3mod6 = (2 + 3)mod6 = 5mod6, 4mod6 + 5mod6 = (4 + 5)mod6 = 9mod6 = 3mod6, 2mod6 2mod6 = (2 2)mod6 = 4mod6, 2mod6 3mod6 = (2 3)mod6 = 6mod6 = 0mod6, 5mod6 5mod6 = (5 5)mod6 = 25mod6 = mod6. Wir wollen uns nun ein wenig genauer mit dem Ring Z N = {k modn k {0,...,N }} für ein N N beschäftigen. Unter anderem im Rahmen des RSA Verfahrens 4. sind wir an den Einheiten Z N modulo einer Zahl N interessiert. Es gilt: Lemma.2. Für N N gilt Z N = {k modn ggt(k,n) = }. Mit anderen Worten erhalten wir: k ist invertierbar modulo N genau dann, wenn ggt(k, N) =.
13 .5. BERECHNUNG MODULARER INVERSER Beweis. Es sei r Z N. Dann gibt es ein l Z N mit r l modn, d.h. r l = m N + für ein m N. Folglich ist r l m N = und ggt(r,n). Es folgt ggt(r,n) =. Umgekehrt liefert für r mod N {k mod N ggt(k, N) = } der Erweiterte Euklidische Algorithmus.5 die Darstellung = s r +t N mit s,t Z. Reduktion modulo N liefert smodn als Inverses von r modn. Bevor wir den Algorithmus explizit angeben, betrachten wir noch ein kleines Beispiel: Beispiel.22. Gesucht sei das modulare Inverse von 23 mod 0. Der Erweiterte Euklidische Algorithmus.5 liefert uns die Darstellung Reduktion modulo 0 liefert also = mod0 ( 43mod0) (23mod0) + (9mod0) (0mod0) } {{ } =0mod0 ( 43mod0) (23mod0) (67mod0) (23mod0), also gilt (23mod0) (67mod0). Der Beweis des obigen Lemmas ist konstruktiv und liefert uns unmittelbar den folgenden Algorithmus zur Berechnung modularer Inverser. In Wirklichkeit ist der folgende Algorithmus ein wenig allgemeiner formuliert. Als Eingabe werden k, N N erwartet. Ausgabe ist dann entweder das modulare Inverse von k modulo N, falls k invertierbar modulo N ist, oder k ist nicht invertierbar modulo N. Algorithmus.23. (Berechnung des modularen Inversen) Sei N N und k Z N. () Berechne mit Hilfe des Erweiterten Euklidischen Algorithmus.5 die Darstellung g = ggt(k,n) = s k +t N. (2) Ist g =, so gebe smodn aus. Andernfalls gebe k ist nicht invertierbar modulo N aus. Die Korrektheit des Algorithmus folgt aus Lemma.2. Setzen wir k N voraus, so folgt nach Theorem.7, dass das modulare Inverse von k modn mit O(n 2 ) Bit-Operationen berechnet werden kann, wobei n = log 2 N +. Damit erhalten wir die folgenden Laufzeiten für modulare Arithmetik: Korollar.24. Sei N N und n := log 2 N + die Bit-Länge der Zahl N. Die Summe zweier Elemente aus Z N läßt sich mit O(n) Bit-Operationen berechnen. Für die Multiplikation zweier Elemente (nach der klassischen Methode) erhalten wir eine Laufzeit von O(n 2 ) Bit- Operationen. Berechnung des Inversen eines Elementes aus Z N ist mit O(n2 ) Bit-Operationen durchführbar. Ferner hat Algorithmus.5 zum effizienten Potenzieren eine Laufzeit von O(n 3 ) (wenn man zur Multiplikation die klassische Methode verwendet und voraussetzt, dass der Exponent N ist).
14 2 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Beweis. Die Aussagen über die Laufzeit von Multiplikation und Division sind klar. Nicht so offensichtlich ist die Tatsache, dass die Summe zweier Elemente k modn und l modn tatsächlich nur lineare Laufzeit benötigt, denn wir berechnen zunächst k + l (was sicherlich nur Zeit O(n) benötigt) und müssen anschließend k + l unter Umständen modulo N reduzieren. Zur Reduktion von k + l modulo N müssen wir aber nicht wirklich Division mit Rest ausführen, denn es gilt k + l < 2 N. Ist also k + l > N, so wählen wir schlicht k + l N als Repräsentanten von k + l modn. Dies erfordert nur eine weitere Addition. Die Aussage über die Laufzeit von Algorithmus.5 zum effizienten Potenzieren ergibt sich wie folgt: Zur Berechnung von x k modn können wir (wie wir später sehen werden) ohne Einschränkung 0 k N voraussetzen. Damit hat k höchstens eine so große Binärlänge wie die Zahl N selbst. Algorithmus.5 führt nun O(log 2 k) = O(log 2 N) = O(n) Schleifendurchläufe durch. In jedem Schleifendurchlauf werden entweder eine oder zwei Multiplikationen ausgeführt, die jeweils nach der klassischen Methode eine Laufzeit von O(n 2 ) haben. Insgesamt ergibt sich damit die behauptete Laufzeit. Als weitere Folgerung aus den bisherigen Ergebnissen erhalten wir: Korollar.25. Der Ring Z N ist ein Körper genau dann, wenn N eine Primzahl ist. Später widmen wir uns auch der Frage, wie groß die Wahrscheinlichkeit ist, dass zwei zufällig gewählte Zahlen k,l R {0,...,N} teilerfremd sind. Es gilt im wesentlichen: #{ x,y N ggt(x,y) = } N 2 6 ( ) ( ) lnn lnn π 2 + O O N N Wir kommen auf diese Aussage in Abschnitt.7. auf Seite 5 zurück..6 Der Chinesische Restsatz Wir betrachten wieder den Ring Z N. Ist N = p e... pe r r die Zerlegung von N in paarweise teilerfremde Primpotenzen, so ist es unser Ziel zu beweisen, dass Z N isomorph zu Z e p... Z p er ist. Eine solche Zerlegung von Z r N ist nützlich, da man Berechnungen modulo N auf Berechnungen modulo der teilerfremden Primpotenzen von N reduzieren kann. In Wirklichkeit gilt der Chinesische Restsatz sogar allgemeiner. Man muss nur verlangen, dass N in paarweise teilerfremde Faktoren zerfällt und kann entsprechende Berechnungen dann auf Berechnungen modulo dieser paarweise teilerfemden Faktoren reduzieren. Bevor wir den Chinesischen Restsatz jedoch beweisen können, zunächst ein vorbereitendes Lemma: Lemma.26. Seien m,n N mit n > m. Gilt m n, so ist die Abbildung f : Z n Z m, k mod n k mod m ein Ringhomomorphismus. Beweis. Es gelte m n. Dann folgt unmittelbar f (0modn) = 0modm und f (modn) = modm. Wir müssen zeigen, dass für a,b {0,...,n } die Bedingungen f (a + b) = f (a) + f (b) und f (a b) = f (a) f (b) gelten. Wir zeigen nur die erste Gleichung. Die
15 .6. DER CHINESISCHE RESTSATZ 3 zweite folgt ganz analog. Es gilt f (a + b) = ((a + b) mod n)modm und f (a) + f (b) = (amodm + bmodm)modm. Setze r := (a + b) mod n, s := amodm und t := bmodm. Dann müssen wir zeigen, dass gilt: r s + t modm. Schreibe a + b = q n + r, a = q 2 m + s und b = q 3 m+t. Dann gilt: r s t = a+b q n a+q 2 m b+q 3 m = q n+(q 2 +q 3 ) m. Wegen m n und m m folgt m r s t, also r s +t modm. Theorem.27. (Chinesischer Restsatz) Sei N N und N = q... q r die Zerlegung in paarweise teilerfremde Faktoren q,...,q r. Dann gilt: Z N = Zq... Z qr. Mit anderen Worten: Zu a,...,a r Z existiert stets ein x Z mit x a i modq i für i =,...,r und jedes solche x ist modulo N eindeutig bestimmt. Beweis. Mit Hilfe von Lemma.26 folgt, dass xmodn (xmodq,...,xmodq r ) ein Homomorphismus ist ( komponentenweise Anwendung von.26 liefert hier die Behauptung). Dass diese Abbildung tatsächlich ein Isomorphismus ist, folgt, wenn wir die Behauptung über die Kongruenzen des Theorems nachweisen. Setze zunächst l i := j i q j. Dann gilt l i mod q j = 0 für alle j i und l i ist invertierbar modulo q i, da q,...,q r als paarweise teilerfremd vorausgesetzt sind. Sei k i := li modq i. Dann folgt k i l i = 0modq j für alle j i und k i l i = modq i. Setze nun x := r i= a i k i l i. Dann folgt xmodq j = r i= a i k i l i modq j = a j k j l j modq j = a j modq j. Damit erfüllt also der gewählte Wert x die gewünschten Kongruenzen. Zur Eindeutigkeit modulo N sei x mit x a i modq i für i =,...,r. Dann gilt x x modq i für i =,...,r. Mit anderen Worten: q i x x für i =,...,r. Da q,...,q r paarweise teilerfremd sind, folgt N x x, also die Behauptung. Der Beweis des Chinesischen Restsatzes liefert den folgenden effizienten Algorithmus. Algorithmus.28. ( Chinese Remaindering ) Seien q,...,q r N paarweise teilerfremd und a,...,a r Z. Dann können wir wie folgt eine Lösung der Gleichungen x a i modq i für i =,...,r bestimmen: () Berechne l i := j i q j für i =,...,r. (2) Berechne k i := li modq i für i =,...,r. (3) Gebe x = r i= a i k i l i mod r j= q j aus. Die Korrektheit des Algorithmus folgt sofort aus dem Beweis des Chinesischen Restsatzes.27. Für die Laufzeit des Algorithmus erhalten wir: Korollar.29. In der Notation von.28 sei N = q... q r und n = log 2 N + die Binärlänge der Zahl N. Dann kann x mit O(r n 2 ) Bit-Operationen berechnet werden. Beweis. Die Berechnung des Wertes l = j q j = q 2 q 3... q r benötigt im wesentlichen Zeit log 2 N r i=3 log 2 q i = log 2 N log 2 r i=3 q i O(log 2 N log 2 N) = O(n 2 ) Operationen. Die Berechnung der Werte l 2,...,l r benötigt dann nur noch jeweils ein weitere Multiplikation und eine Division. Damit beläuft sich der Gesamtaufwand für Schritt () auf O(r n 2 ). Die Berechnung von k i als Inverses von l i modulo q i benötigt nach Korollar.24 etwa (log 2 q i ) 2
16 4 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Bit-Operationen. Die Berechnung aller Inverser k i für i =,...,r benötigt daher im wesentlichen Laufzeit r i= (log 2 q i) 2 ( r i= log 2 q i) 2 = (log 2 r i= q i) 2 = (log 2 N) 2 O(n 2 ). Analoge Schlüsse zeigen, dass auch die Berechnungen in Schritt (3) diese Laufzeit nicht überschreiten, weshalb sich insgesamt die Behauptung ergibt. Eine nützliche Folgerung aus dem Chinesischen Restsatz.27 ist die folgende: Korollar.30. Sei N N und N = q... q r die Zerlegung in paarweise teilerfremde Faktoren q,...,q r. Dann gilt auch Z N = Z q... Z q r. Die Behauptung folgt mit der Beobachtung, dass eine Zahl x genau dann teilerfremd zu N = q... q r ist, wenn sie zu jedem der paarweise teilerfremden Faktoren q,...,q r teilerfremd ist..7 Die Eulersche ϕ-funktion und einige ihrer Eigenschaften Wir wollen in diesem Abschnitt die Eulersche ϕ-funktion einführen und einige der Eigenschaften dieser Funktion beweisen, die für uns im kryptographischen Anwednungskontext von Nutzen sein werden. Definition.3. Sei N N. Dann ist die Eulersche ϕ-funktion definiert durch ϕ(n) := #{ x N ggt(x,n) = }. Lemma.32. Für jede Primzahl p N gilt: ϕ(p) = p. Beweis. Es gilt { x p ggt(x, p) = } = {,..., p }. Dies zeigt die Behauptung. Lemma.33. Sei p N eine Primzahl und e N. Dann gilt: ϕ(p e ) = (p ) p e. Beweis. In der Menge {,..., p e } sind genau p e Zahlen Vielfache von p. Folglich gilt ϕ(p e ) = p e p e = (p ) p e. Satz.34. Sei N = p e... pe r r die Zerlegung von N in paarweise teilerfremde Primpotenzen. Dann gilt: ϕ(n) = (p ) p e... (p r ) p e r r Beweis. Nach Lemma.33 gilt: ϕ(p e i i ) = (p i ) p e i i für i r. Da die zu N teilerfremden Elemente aus {,...,N} gerade den invertierbaren Elementen modulo N entsprechen, liefert uns der Chinesische Restsatz wegen Z N = Z p e... Z p er die Behauptung, r denn ϕ(n) = #Z N = r i= #Z p e i i = r i= ϕ(pe i i ). Wir erhalten nun auch eine Formel für die Wahrscheinlichkeit, dass eine zufällig aus {,...,N} gewählte Zahl teilerfremd zu N (d.h. modulo N invertierbar):
17 .7. DIE EULERSCHE ϕ-funktion 5 Satz.35. Sei N N. Dann gilt für x R {,...,N}: P(ggT(x,N) = ) = p N p prim ( ). p Beweis. Sei N = r i= pe i i die Zerlegung von N in paarweise teilerfremde Primpotenzen. Dann gilt nach Satz.34 gerade ϕ(n) = r i= (p i ) p e i i. Es folgt: also die Behauptung. P(ggT(x,N) = ) = ϕ(n) N = r i= (p i ) p e i i = = r i= r i= r i= pe i i (p i ) p ( pi ) Satz.35 gibt einen exakten Wert für die Wahrscheinlichkeit an, dass ein zufällig gewähltes xmodn ein Element von Z N ist. Ist N also eine Zahl mit großen Primteilern p, so sind die Faktoren p sehr nah bei dem Wert. Die Chance durch zufällige Wahl eines Elementes xmodn eine Einheit zu erhalten, ist also sehr groß. Der folgende Satz findet sich z.b. in [0] und macht eine stärkere Aussage: Satz.36. (Durchschnittliche Ordnung von ϕ(n)) Die durchschnittliche Größenordnung von ϕ(n) für ein n N ist 6 n. Die Wahrscheinlichkeit, dass zwei zufällig gewählte Zahlen π 2 n teilerfremd sind, ist damit näherungsweise 6 Der folgende Abschnitt ist dem Beweis dieses Resultates gewidmet. π Die durchschnittliche Ordnung von ϕ(n) Ziel dieses Abschnitts soll der Beweis der Aussage n ϕ(k) n k= k = 6 π 2 + O ( logn n i ) (.7.) sein. Daraus folgt dann die Aussage von Satz.36. Diese Aussage ist u.a. im Kontext des RSA-Verfahrens von Bedeutung, denn sie liefert eine Abschätzung für die Wahrscheinlichkeit, dass man durch zufällige Wahl aus der Menge {,2,...,n } eine Einheit modulo n, also ein Element von Z n, findet. Für großes n besagt (.7.), dass diese Wahrscheinlichkeit π % beträgt. Man kann also guten Gewissens zum Auffinden von Einheiten modulo n wie folgt vorgehen:
18 6 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Algorithmus.37. (Finden von Einheiten in Z n ) Gegeben n N. () Wähle e {,2,...,n } zufällig. (2) Wende den Euklidischen Algorithmus zur Berechnung von g := ggt(e,n) an. Ist g =, so gebe e aus. Ist g >, so gehe zurück zu Schritt (). Mit e ist im letzten Schritt des Algorithmus eine Einheit modulo n gefunden. Der zufälligen Wahl in Schritt () liegt also erwartungsgemäß eine Trefferwahrscheinlichkeit von etwa 60% zugrunde, d.h. der Algorithmus liefert erwartungsgemäß bereits nach 2 Durchläufen ein Ergebnis. Da der Euklidische Algorithmus effizient ist (Laufzeit im wesentlichen O(log 2 n)), kann auch Schritt (2) bedenkenlos mehrfach hintereinander ausgeführt werden. Zum Beweis von (.7.) sind einige Vorbereitungen zu treffen. Einen Eindruck von den zu erbringen Vorleistungen erhalten wir, wenn wir die rechte Seite von (.7.) wie folgt verkomplifizieren : 6 π 2 + O ( ) logn n = = n= +O n } {{ 2 } Euler s Basel Problem +O ζ (2) } {{ } Riemann sche ζ -Funktion ( ) logn n ( logn n ). Es gibt also Zusammehänge zwischen (.7.), der Riemann schen ζ -Funktion sowie Euler s Basel Problem. Wir beginnen mit den grundlegenden Definitionen, die im Rahmen des Bweises vom (.7.) von Relevanz sind. Definition.38. (Möbius Funktion, Riemannsche ζ -Funktion) Es seien n N und s R, s >. (i) Die Möbius Funktion µ ist definiert durch falls n =, µ(n) := ( ) r falls n quadratfrei mit r verschiedenen Primfaktoren ist, 0 falls n nicht quadratfrei ist. (ii) Die Riemannsche ζ -Funktion ist für s R, s > definiert durch ζ (s) := n= n s.
19 .7. DIE EULERSCHE ϕ-funktion 7 Zwischen der Möbius-Funktion und der Riemann schen ζ -Funktion gibt es folgenden für uns später relevanten Zusammenhang: Lemma.39. (Darstellungen für ζ (s) und ) Sei s R, s >. Dann gilt: ζ (s) (i) Bezeichnet p k für jedes k N die k-te Primzahl, so gilt: ζ (s) = k= p s k (ii) Einen Zusammenhang zwischen Möbius-Funktion und der Riemann schen ζ -Funktion liefert: ζ (s) = µ(n) n= n s. Beweis. (i) Mit Hilfe geometrischer Reihenentwicklung gilt:, k= p s k = = p s p s 2 p s 3 ( ( ( k=0 ( = + p s = + i>0 p s i p s ) k) ( k=0 + p 2s + j>i>0 + p 3s + p s i ps j p s 2 ) k) ( k=0 ) ( + p s 2 + k> j>i>0 = + 2 s + 3 s + 4 s +... = n= n s = ζ (s). ( ) ) k p s 3 + p 2s 2 p s i ps j +... ps k + ) p 3s + 2 (ii) Wir verwenden direkt die unter (i) bewiesene Darstellung für ζ (s). Dies liefert: ) (i) = ζ (s) l= ( p s l ( = p s + p s 2 = i>0 p s i µ(p i ) = + i>0 p s i = µ(n) n= n s. + j>i>0 ) ( p s ps 2 p s ps 3 p s i ps j p s i ps j +... ps k k> j>i>0 + ) p s ps 3 µ(p i p j ) µ(p i p j p k ) + j>i>0 p s i + ps j k> j>i>0 p s i ps j +... ps k
20 8 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Ferner benötigen wir das folgende als Basel Problem bekanntes und erstmals von Leonard Euler gelöste Resultat: Lemma.40. (Basel Problem) Der Grenzwert lim m m n= n 2 n= = π2 π2 n 2 6. Mit anderen Worten: ζ (2) = 6. existiert und es gilt Auf einen strikt formalen Beweis verzichten wir und geben stattdessen die intuitve Herleitung des Resultats an so wie sie schon von Euler durchgeführt wurde: Beweis. Die Taylorentwicklung der Sinus-Funktion liefert sin(x) x = x2 3! + x4 5! x6 7! +. Alle Nullstellen von sin(x) x sind gegeben durch x = l π für l = ±,±2,±3,... Schreiben wir also formal sin(x) x als Produkt von Linearfaktoren wie im endlichen Fall bei Polynomen üblich, so erhalten wir sin(x) x Die Koeffizienten von x 2 sind also gegeben durch = = ( x ) ( + x ) ( 2 x ) ( 2 + x ) π π π π ) ) ( ( x2 π 2 x2 4π 2 π 2 4π 2 9π 2 = π 2 n= Der Koeffizient von x 2 in der Taylorreihentwicklung von sin(x) x n= = π2 n 2 6. n 2. ist 3!. Gleichsetzen ergibt Mit den oben zusammengefassten Definitionen und Resultaten können wir nun den folgenden Satz beweisen: Satz.4. (Durchschnittliche Ordnung von ϕ(n)) Die durchschnittliche Ordnung von ϕ(n) ist gegeben durch n ϕ(k) n = 6 ( ) logn k= k π 2 + O. n Beweis. Der Beweis wird in 4 Schritten geführt. Schritt. Zeige, dass gilt: n ϕ(k) k= k = n µ(k) n. (.7.2) k= k k
21 .7. DIE EULERSCHE ϕ-funktion 9 Beweis per Induktion. Für n = gilt ϕ() = = µ(). Für den Induktionsschritt gelte (.7.2). Wir zeigen: n ( ϕ(n + ) µ(k) n + n ) µ(n + ) = n + + k= k k k n +, (.7.3) wobei die Induktionsvoraussetzung (.7.2) bereits in die rechte Seite eingegangen ist. Wegen { n + n falls k (n + ), = k k 0 sonst, folgt, dass die rechte Seite von (.7.3) gegeben ist durch Es bleibt also zu zeigen, dass µ(k) µ(n + ) µ(k) + = k (n+) k n + k. k (n+) k<n+ µ(k) ϕ(n + ) = k n +. k (n+) Sei dazu n + = p e... pe r r mit paarweise verschiedenen Primzahlen p,..., p r und e,...,e r N die Faktorisierung von n +. Dann gilt: ϕ(n + ) n + = (p ) p e... (p r ) p e r r p e... pe r r = r l= ( pl ) ( = + ) ( p p 2 = + i>0 p i j>i>0 p i p j µ(k) = k. k (n+) p p p p 3 + p 2 p k> j>i>0 p i p j p k +... )... Dies zeigt (.7.2). Schritt 2. Untere und obere Schranken für n n k= ϕ(k) k n k n k n k finden. Wegen
22 20 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA folgt mit Hilfe von (.7.2) gerade n µ(k) ( n ) n k= k k n n ϕ(k) k= k n n µ(k) n k= k k. Damit ist eine obere Schranke für n n k= Es gilt weiter U n := n µ(k) ( n ) n k= k k wobei im letzten Schritt die Abschätzung verwendet wurde. Damit ist eine untere Schranke für n n k= ϕ(k) k n k= = gegeben durch µ(k) k 2. n µ(k) k= k 2 = U n n > U n n n n k= n k= n µ(k) k= k µ(k) k k > U n (log(n) + ), n n n k= k < logn dx = lnn < x loge < logn + n L n := U n (log(n) + ) n ϕ(k) k. Wir haben also gezeigt: ( logn n ϕ(k) = U n + O k= k Schritt 3. Der Grenzwert lim n U n existiert. Diese Aussage folgt mit Hilfe der Dreiecksungleichung aus n U n µ(k) n k 2 k= k 2, k= da insbesondere die Konvergenz von k= nach Lemma.40 sichergestellt ist. Damit k 2 ist k= konvergente Majorante zu k 2 k= µ(k) k und aus absoluter Konvergenz folgt 2 Konvergenz. n ).
23 .8. KETTENBRÜCHE 2 Schritt 4. Zeige, dass U n von der Ordnung π2 6 ist. Es gilt: Damit ist das Theorem bewiesen. lim U µ(k) Lemma.39 (ii) n = n k k 2 = Lemma.40 = ζ (2) 6 π 2..8 Kettenbrüche Ein bekannter Angriff auf das RSA-Verfahren, wenn der private Schlüssel sehr klein gewählt wird, basiert auf der sogenannten Kettenbruchentwicklung einer rationalen Zahl. Die Grundlagen zum Verständnis des Angriffs von Wiener sollen hier bereitgestellt werden. Die hier gewählte Darstellung der Theorie ist [2] entnommen (siehe Kapitel 2). Definition.42. Ein Kettenbruch ist ein Ausdruck der Form [a 0,a,...,a n ] = a 0 + a + a an + a n mit a 0 Q und a,...,a n Q \ {0}. Das folgende Lemma faßt einige offensichtliche Rechenregeln für Kettenbrüche zusammen: Lemma.43. Seien a 0 Q und a,...,a n Q\{0}. Dann gelten die folgenden Rechenregeln für Kettenbrüche: (i) [a 0,a,...,a n,a n ] = [a 0,a,...,a n,a n,] (ii) [a 0,a,...,a n,a n ] = [a 0,a,...,a n + a n ] (iii) [a 0,a,...,a n,a n ] = a 0 + [a,...,a n,a n ] Im folgenden werden wir nur Kettenbrüche betrachten, für die a i N gilt für alle i = 0,...,n. Auch wenn Lemma.43 (i) besagt, dass verschiedene Kettenbrüche die gleiche Zahl darstellen können, so ist diese eine Mehrdeutigkeit auch die einzige Möglichkeit zwei verschiedene Kettenbrüche für ein- und dieselbe rationale Zahl anzugeben vorausgesetzt alle a i sind natürliche Zahlen. Im folgenden wird diese Mehrdeutigkeit ignoriert. Die im folgenden Satz über die Existenz einer Kettenbruchentwicklung für rationale Zahlen vorgenommene Einschränkung auf positive rationale Zahlen, ist keine wirkliche Einschränkung. Man muss nur a 0 Z erlauben und es lassen sich auch negative rationale Zahlen
24 22 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA als Kettenbrüche darstellen (soll die Kettenbruchentwicklung von q für eine positive rationale Zahl q berechnet werden, so betrachte q +( q q), setze a 0 := q und bestimme die Kettenbruchentwicklung der positiven rationalen Zahl q q). Satz.44. Jede positive rationale Zahl m 0 m besitzt eine Kettenbruchentwicklung, d.h. es gibt Elemente a 0,...,a n N mit [a 0,...,a n ] = m 0 m. Der Beweis ist konstruktiv und liefert uns zugleich einen Algorithmus zur Berechnung der Kettenbruchentwicklung einer positiven rationalen Zahl mit Hilfe des Euklidischen Algorithmus.5. Wir benötigen in diesem Fall allerdings nicht einmal die Werte s i und t i die in.5 automatisch mitberechnet werden. Sie müssen für die Korrektheit des folgenden Algorithmus nicht mitberechnet werden. Algorithmus.45. (Kettenbruchentwicklung einer rationalen Zahl) Sei m 0 m rationale Zahl. eine positive () Wende den Euklidischen Algorithmus.5 auf die Eingabe a = m 0 und b = m an. (2) In der Notation von.5 wähle a 0,...,a n als Folge der auftretenden (nichtnegativen ganzzahligen) Quotienten q,...,q n,q n+. (3) Gebe [a 0,...,a n ] aus. Beweis. (Korrektheit) Der Euklidische Algorithmus liefert uns mit a i := q i+ die Darstellungen m 0 = a 0 m + m 2 0 < m 2 < m,a 0 0 m = a m 2 + m 3 0 < m 3 < m 2,a > 0.. m i = a i m i + m i+ 0 < m i+ < m i,a i > 0.. m n = a n m n+ a n > 0 Wir führen den Korrektheitsbeweis per Induktion über n (Anzahl der vom Euklidischen Algorithmus benötigten Schritte). Ist n =, so gilt m 0 = a 0 m + m 2 und m = a m 2. Damit erhalten wir a 0 + = m 0 m 2 + m a m = m 0 m 2 + m 2 = m 0, m 2 m m m also die Behauptung. Wegen m 0 = a 0 m + m 2 folgt m 0 = a 0 + m 2 = a 0 + m m m = a 0 + m 2 [a,...,a n ] = [a 0,a,...,a n ], wobei wir bei der letzten Identität die Induktionsvoraussetzung auf m m 2 anwenden konnten...
25 .8. KETTENBRÜCHE 23 Mit Hilfe der Laufzeitabschätzung für den Erweiterten Euklidischen Algorithmus in Theorem.7 folgt sofort: Korollar.46. Ist m 0 m eine positive rationale Zahl, so berechnet Algorithmus.45 mit einem Aufwand von O(n 2 ) Bit-Operationen die Kettenbruchentwicklung von m 0 m, wobei n das Maximum der Binärlängen von m 0 und m ist. Definition.47. Sei [a 0,...,a n ] die Kettenbruchentwicklung der positiven rationalen Zahl m 0 m. Dann heißen die rationalen Zahlen p l q l = [a 0,...,a l ], l = 0,...,n die Konvergenten der Kettenbruchentwicklung von m 0 m. Für die Konvergenten der Kettenbruchentwicklung einer positiven rationalen Zahl können wir die folgenden Rekursionsformeln angeben, die ihre Berechnung effizient möglich machen: = [a 0,...,a l ], l = 0,...,n einer Kettenbruchentwick- Lemma.48. Für die Konvergenten p l q l lung von m 0 m gelten: p 0 = a 0 q 0 = p = + a p 0 q = a p l = p l 2 + a l p l q l = q l 2 + a l q l, l 2. Beweis. Wir führen den Beweis per Induktion nach l. Für l = 0 und l = rechnen wir die Formeln explizit nach. Für l = 0 erhalten wir p 0 q 0 = [a 0 ] = a 0, also p 0 = a 0 und q 0 =. Für l = gilt p q = [a 0,a ] = a 0 + a = a a 0 + a, also p = a a 0 + = a p 0 + sowie q = a. Nach Lemma.43 (ii) gilt p l+ q l+ = [a 0,...,a l,a l+ ] = [a 0,...,a l + a l+ ]. Nach Induktionsvoraussetzung erhalten wir Damit folgt dann: p l+ [ a 0,...,a l + ] = a l+ ( ) a l + a l+ ( a l + a l+ ) p l + p l 2 ( ). a l + a l+ q l + q l 2 [ a 0,...,a l + ] a l+ = [a 0,...,a l,a l+ ] = q l+ ( ) a l + a l+ p l + p l 2 = = a l+ ( q l + q a l 2 l+ (a l q l + q l 2 = a l+ p l + p l a l+ q l + q l =p l { }} { a l p l + p l 2 ) + p l } {{ } =q l ) + q l Das folgende Lemma geben wir ohne Beweis an:
26 24 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Lemma.49. Werden die natürlichen Zahlen p l und q l wie in Lemma.48 berechnet, so sind sie teilerfremd. Auf dem folgenden Theorem beruht der Angriff von Wiener auf RSA für kleine private Schlüssel. Wir geben ihn hier ohne Beweis an. Ein Beweis findet sich in [6], Lemma 5.7.6, Seite 275. Theorem.50. Sind m 0 m und p q rationale Zahlen mit m 0 p m q < 2 q 2, so ist p q eine Konvergente der Kettenbruchentwicklung von m 0 m..9 Einige gruppentheoretische Resultate Wir wollen in diesem Abschnitt die für uns wichtigsten gruppentheoretischen Resultate zusammenfassen. Zur Erinnerung: Definition.5. Die Anzahl der Elemente einer Gruppe G bezeichnen wir stets mit #G und nennen #G die Ordnung von G. G heißt eine endliche Gruppe, wenn #G <. Sie heißt zyklisch, wenn es ein z G mit G = z. Dabei bezeichnet z die Menge {z j j Z} aller Potenzen von z mit ganzzahligen Exponenten. Für ein beliebiges x G ist x zumindest stets immer eine Untergruppe von G. Diese Untergruppe ist dann im Sinne der obigen Definition eine zyklische Untergruppe von G. Die Ordnung eines Elementes x G, geschrieben ord(x), ist die Ordnung der von x erzeugten zyklischen Untergruppe x von G..9. Der Satz von Lagrange Der Satz von Lagrange macht eine wichtige Aussage über die möglichen Ordnungen von Untergruppen einer gegebenen endlichen Gruppe. Theorem.52. (Satz von Lagrange) Sei G eine endliche Gruppe. Dann gilt: (i) Die Ordnung jeder Untergruppe H von G teilt die Ordnung von G, d.h. #H #G. (ii) Für jedes Element x G gilt: x #G =. Dabei bezeichnet in (ii) das neutrale Element bezüglich der Verknüpfung auf G. Beweis. (i) Betrachte die Nebenklassen xh := {x y y H} G von H für ein beliebiges x G. Es gilt #(xh) = #H, denn die Abbildung ψ : H xh, ψ(y) := x y ist bijektiv, denn ψ ist sicherlich surjektiv (per Definition von xh) und aus ψ(y) = ψ(z) folgt x y = x z, also y = z
27 .9. EINIGE GRUPPENTHEORETISCHE RESULTATE 25 und damit die Injektivität von ψ. Sind außerdem x,x 2 G, so gilt entweder x H = x 2 H oder x H x 2 H =. Gilt nämlich x y = x 2 z x H x 2 H, so folgt wegen x = x 2 (z y ) gerade x x 2 H. Aus x x 2 H folgt für jedes x H gerade x x = x 2 (z y x) x 2 H. Dies zeigt x H x 2 H. Aus Symmetriegründen folgt daraus aber bereits x H = x 2 H. Insgesamt bilden damit die Nebenklassen xh eine Partition von G, denn ein Element x G ist stets in der Nebenklasse xh enthalten (da H als Untergruppe von G insbesondere das neutrale Element von G enthalten muss) und G läßt sich damit als disjunkte Vereinigung der Nebenklassen schreiben. Gibt es k solcher verschiedener Nebenklassen, so folgt: #G = k #H. (ii) Betrachte H := x. Wegen x H und x xh folgt nach Teil (i) bereits H = xh. Wir erhalten also wegen y H y = y xh y gerade x #H y H y = y H x y = y = x #H = y H und da #G ein Vielfaches von #H ist, folgt daraus die Behauptung. Korollar.53. Sei G eine Gruppe und x G mit x ist endlich. Dann gilt: (i) {i Z x i = } ist das von ord(x) in Z erzeugte Hauptideal. (ii) ord(x) = min{i > 0 x i = } (iii) ord(x) #G Beweis. Sei k der kleinste positive Wert mit x k =. Ein solches k existiert, da x endlich ist. Sei i Z. Schreibe i = q k+r mit 0 r < k. Dann gilt: x i = x q k+r = (x k ) q x r = x r. Dies zeigt x {,x,x 2,...,x k }. Die umgekehrte Inklusion ist klar, d.h. x = {,x,x 2,...,x k }. Alle Elemente,x,x 2,...,x k sind verschieden, da aus x i = x j mit i > j sofort x i j = und damit ein Widerspruch zur Minimalität von k folgt. Insgesamt erhalten wir also ord(x) = # x = k. Für alle i Z folgt damit x i = x (idivk) k+imodk = x imodk = imodk = 0 k i. Daraus folgen (i) und (ii). Teil (iii) folgt aus dem Satz von Lagrange Der Satz von Euler und der kleine Satz von Fermat Wir erinnern uns, dass für N N der Wert der Eulerschen ϕ-funktion an der Stelle N gerade die Anzahl der zu N teilerfremden Zahlen aus {,...,N} ist. Die in Z N bezüglich der Multiplikation invertierbaren Elemente sind genau durch diejenigen Restklassen gegeben, deren Repräsentanten teilerfremd zu N sind. Folglich besteht die Gruppe Z N aus genau ϕ(n) Elementen. Mit anderen Worten: Lemma.54. Für N N gilt: #Z N = ϕ(n).
28 26 KAPITEL. GRUNDLAGEN: (COMPUTER)ALGEBRA Unmittelbar aus diesem Resultat und dem Satz von Lagrange.52 folgt das nächste Theorem, das auf Leonard Euler zurückgeht: Theorem.55. (Satz von Euler) Für jedes x Z N gilt xϕ(n) =. Beweis. Die Behautpung folgt sofort aus #Z N = ϕ(n) und dem Satz von Lagrange.52 (ii). Aus dem Satz von Euler wiederum ergibt sich unmittelbar das nächste Resultat: Theorem.56. (Kleiner Satz von Fermat) Sei p eine Primzahl. Dann gilt für alle x Z p \ {0}: x p =. Beweis. Es ist ϕ(p) = p nach.32. Da p prim ist, gilt Z p = Z p \ {0}. Nach dem Satz von Euler.55 erhalten wir daher für alle x 0: = x ϕ(p) = x p. Fassen wir die Resultate von.52,.55 und.56 zusammen, so erhalten wir: Satz.57. Sei G eine endliche Gruppe und x G. Dann gilt: (i) ord(x) teilt #G und für jedes Vielfache m von #G gilt x m =. (ii) Sei N N und x Z N. Dann ist ord(x) ein Teiler von ϕ(n) und für jedes Vielfache m von ϕ(n) gilt x m =. (iii) Sei p eine Primzahl und x Z p. Dann ist ord(x) ein Teiler von p und für jedes Vielfache m von p gilt x m =. Ferner gilt in dieser Situation x m+ = x. Insbesondere folgt also x p = x für alle x Z p. Äußerst nützlich ist das folgende Korollar, dass es erlaubt von einem Gruppenelement die Ordnung zu bestimmen: Korollar.58. Sei G eine endliche Gruppe und x G. Ist n N mit x n =, so gilt ord(x) = n genau dann, wenn x n p für alle Primteiler p von n. Beweis. Ist ord(x) = n, so folgt x n p, da ord(x) nach Korollar.53 (ii) die minimale positive Zahl i ist mit x i = und < n p < n = ord(x). Umgekehrt gelte xn = und x n p für alle Primteiler p von n. Wegen x n = folgt ord(x) n, also gibt es ein k N mit n = k ord(x). Angenommen k wäre echt größer. Dann besitzt k einen Primteiler p, der zugleich ein Primteiler von n ist und x n p = (x ord(x) ) k p = k p =. Widerspruch! Korollar.59. Sei G eine Gruppe und x G sowie a N. Dann gilt: ord(x a ) = ord(x) ggt(ord(x),a). Beweis. Es gilt: (x a ) ord(x)/ggt(ord(x),a) = (x ord(x) ) a/ggt(ord(x),a) = a/ggt(ord(x),a) =. Seien s,t Z mit s a + t ord(x) = g = ggt(ord(x),a). Sei p ein Primteiler von ord(x) g. Setze y := (x a ) (ord(x)/g)/p. Wäre y =, so folgte aber = y s = (x s a/g ) ord(x)/p = (x (g t ord(x))/g ) ord(x)/p = x ord(x)/p x t ord(x)2 /g p = x ord(x)/p (x ord(x) ) t ord(x)/g p = x ord(x)/p, was im Widerspruch zur Aussage des obigen Korollars steht.
29 Kapitel 2 Grundlagen aus der Zahlentheorie In diesem Kapitel wollen wir die Grundlagen aus der Zahlentheorie erarbeiten, die im Anwendungskontext elementarer Kryptographie von Interesse sind. Wie auch schon im Kapitel Grundlagen aus Algebra und Computeralgebra werden wir uns auch hier immer wieder für Algorithmen bzw. ihre Komplexität interessieren. Die wesentlichen hier betrachteten Algorithmen sind einerseits Algorithmen zum Auffinden von Primzahlen und andererseits Algorithmen zur Faktorisierung ganzer Zahlen. 2. Finden von Primzahlen und Primzahltest Folgendes grundlegendes Problem wollen wir uns stellen: Finde einen Algorithmus, der bei Eingabe eines Intervalls [B,2 B ] eine Primzahl aus diesem Intervall liefert. Wir werden keinen deterministischen Algorithmus angeben, sondern lediglich ein Verfahren, das im wesentlichen einfach zufällig eine Zahl aus dem Intervall [B,2 B ] wählt und anschließend prüft, ob die gewählte Zahl prim ist. Zunächst müssen wir sicherstellen, dass es genügend Primzahlen in [B,2 B ] für B 0 gibt. Die notwendige Aussage, die wir benötigen, liefert der sogenannte Primzahlsatz: Theorem 2.. (Primzahlsatz) Sei x N und es bezeichne π(x) die Anzahl aller Primzahlen in [0,x]. Dann gilt: π(x) x lnx bzw. genauer ( x lnx + ) π(x) x ( 2 lnx lnx + 3 ) 2 lnx für x 59. Der Primzahlsatz garantiert uns für hinreichend großes B die Existenz von mindestens vielen Primzahlen im Intervall [B,2 B ] (siehe [8], Seite 64). B 2 lnb 27
30 28 KAPITEL 2. GRUNDLAGEN AUS DER ZAHLENTHEORIE Wir haben oben bereits erwähnt, dass der Algorithmus zum Auffinden von Primzahlen von einer zufällig gewählten Zahl testen soll, ob sie prim ist. Ein möglicher Primzahltest ist der Fermat-Test: Algorithmus 2.2. (Fermat-Test) Sei M Z und t N ein Konfidenzparameter (t ist im wesentlichen nichts anderes als die Anzahl der Runden, die der Algorithmus durchführt). () Setze i :=. (2) Solange i t und die Berechnung nicht abgebrochen wurde, wiederhole die folgenden Schritte: (i) Wähle a R Z M \ {0}. (ii) Berechne g := ggt(a,m). Falls g, so breche die Berechnung ab und gebe M ist zusammengesetzt aus. (iii) Berechne k := a M modm. Falls k modm, so breche die Berechnung ab und gebe M ist zusammengesetzt aus. Setze i := i +. (3) Gebe M ist wahrscheinlich prim aus. Beweis. (Korrektheit) Ist M prim, so ist jedes a Z M, a 0 teilerfremd zu M. Ferner gilt dann stets a M modm, denn dies ist gerade die Aussage von Fermat s Kleinem Satz.56. Damit wird der Algorithmus bei Eingabe eine Primzahl stets die Ausgabe M ist wahrscheinlich prim liefern. Wir wollen uns nun über die Situationen Gedanken machen, in denen Algorithmus 2.2 versagt. Dann waren alle Zahlen a teilerfremd zu M und es galt stets a M modm. Definition 2.3. Ist M eine zusammengesetzte Zahl und a Z M mit a M modm, so heißt a ein Fermat-Lügner (a erfüllt Fermat s Kleinen Satz.56, aber M ist nicht prim). Gilt dagegen a M modm, so heißt a ein Fermat-Zeuge. Lemma 2.4. Sei M eine zusammengesetzte Zahl und a Z M ein Fermat-Zeuge. Dann besteht höchstens die Hälfte aller Elemente von Z M aus Fermat-Lügnern. Beweis. Die Menge der Fermat-Lügner ist eine Untergruppe von Z M. Als Untergruppe muss ihre Ordnung die Ordnung von Z M teilen. Gibt es mindestens einen Fermat-Zeugen, so kann die Anzahl der Fermat-Lügner nicht gleicher der Ordnung von Z M, und damit nur halb so groß, sein. Es gilt also: Die Wahrscheinlichkeit dafür, dass eine Zahl M zusammengesetzt ist unter der Voraussetzung, dass Algorithmus 2.2 die Ausgabe M ist wahrscheinlich prim liefert, ist, sofern es für M mindestens einen Fermat-Zeugen gibt, höchstens 2. Im allgemeinen beläuft sich die bedingte Wahrscheinlichkeit für einen allgemeinen Wert von t auf höchstens 2 t. Somit ist die Wahrscheinlichkeit dafür, dass eine Zahl M tatsächlich prim ist unter der Voraussetzung, dass Algorithmus 2.2 die Ausgabe M ist wahrscheinlich prim liefert, mindestens 2 t.
31 2.. FINDEN VON PRIMZAHLEN UND PRIMZAHLTEST 29 Zahlen M, für die es keinen Fermat-Zeugen gibt, heißen Carmichaelzahlen. Es gibt unendlich viele solcher Carmichaelzahlen. Die kleinste Carmichaelzahl ist 56. Würde man also Algorithmus 2.2 mit Eingabe M = 56 starten, so würde die Ausgabe unabhängig von der Anzahl der durchgeführten Runden t stets M ist wahrscheinlich prim lauten. Zugleich gibt es aber Modifikationen des Fermat-Tests, die dieses Dilemma beseitigen. Ein möglicher Ersatz für den Fermat-Test ist der sogenannte Miller-Rabin Test. Er basiert auf einer etwas allgemeineren Version des Kleinen Satzes von Fermat.56: Sei n eine positive, ungerade ganze Zahl. Definiere s := max{r N 0 2 r ist ein Teiler von n } und schreibe n = d 2 s, ggt(d,2) =. Dann ist auch d wieder eine ungerade Zahl und es gilt: Theorem 2.5. Ist n eine Primzahl und ist a Z teilerfremd zu n, so gilt a d modn oder es gibt es ein r {0,...,s } mit a 2r d modn. Beweis. Sei a teilerfremd zu n, n eine Primzahl. Es gilt in der Notation von oben #Z n = n = 2 s d. Betrachte nun a d modn. Gilt ord(a) d, so folgt a d modn. Anderenfalls ist ord(a d ) eine Zweierpotenz, d.h. ord(a d ) = 2 l für ein l {,...,s}. Es folgt: ord(a 2l d ) = ord(a d ) ggt(ord(a d ),2 l ) = 2l = 2. Nun können wir den folgenden Hilfssatz verwenden: 2 l Hilfssatz. Ist F q ein endlicher Körper, so gibt es für jeden Teiler d von q = #F q genau ϕ(d) Elemente in F q der Ordnung d. Übertragen auf unsere Situation erhalten wir: Da n prim ist, ist Z n ein endlicher Körper. Folglich gibt es in Z n wegen 2 n genau ϕ(2) Elemente der Ordnung 2. Das Element modn = n modn hat Ordnung 2, denn (n ) 2 n 2 2 n+ modn. Folglich gilt: a 2l d modn, was die Behauptung zeigt. Die Negation der Aussage des Theorem liefert uns einen möglichen Primzahltest: Wenn weder a d modn noch a 2r d modn für alle r {0,...,s }, so ist n zusammengesetzt. Eine Zahl a, die keine dieser Bedingungen erfüllt, heißt ein Zeuge für n. Es gilt das folgende Theorem, dass wir ohne Beweis angeben und dass eine Abschätzung für die Anzahl der Zeugen für n in der Menge {,...,n } liefert: Theorem 2.6. Sei n 3 eine ungerade zusammengesetzte Zahl. Dann gibt es höchstens n 4 Zahlen in {,...,n }, die keine Zeugen für n sind. Damit ist die Wahrscheinlichkeit bei zufälliger Wahl aus {,...,n } ein a zu finden, dass kein Zeuge für die zusammengesetzte Zahl n ist, höchstens 4. Der Miller-Rabin Test geht dann ähnlich wie der Fermat-Test 2.2 vor: Auch er erhält neben einer auf Primheit zu testenden Zahl n einen Konfidenzparameter t als Eingabe. Dann wird der folgende Primzahltest t-mal durchgeführt: Zunächst wird getestet, ob n ungerade ist. Ist dieses nicht der Fall, so ist n zusammengesetzt. Dann werden d,s bestimmt, mit n = d 2 s und ggt(d,s) =. Nun werden die Bedingungen a d modn und a 2r d modn für alle r {0,...,s } überprüft. Sind alle Bedingungen verletzt, so lautet die Ausgabe n ist eine zusammengesetzte
32 30 KAPITEL 2. GRUNDLAGEN AUS DER ZAHLENTHEORIE Zahl. Ist stets mindestens eine der Bedingungen erfüllt, so lautet die Ausgabe n ist wahrscheinlich prim. Der Miller-Rabin Test ist in der Lage, die Zusammengesetztheit einer jeden zusammengesetzten Zahl zu beweisen, d.h. es gibt kein Äquivalent zu den Carmichaelzahlen, die den Fermat-Test überlisten, für den Miller-Rabin Test. In jedem Fall erhalten wir: Theorem 2.7. Es gibt einen probabilistischen Primzahltest mit den folgenden beiden Eigenschaften: Wenn er die Ausgabe M ist zusammengesetzt liefert, so ist M eine zusammengesetzte Zahl. Wenn er M ist wahrscheinlich prim ausgibt, so ist M mit Wahrscheinlichkeit 2 t in der Tat eine Primzahl. Das Theorem garantiert uns also die Existenz eines Primzahltests, der die gleiche Erfolgswahrscheinlichkeit hat wie der Fermat-Test in dem Fall, dass es für die Zahl M mindestens einen Fermat-Zeugen gibt. Algorithmus 2.8. (Auffinden einer Primzahl) Seien B 2 und t N ein Konfidenzparameter. () Wähle M R [B,2 B ], M ungerade. (2) Rufe einen geeigneten Primzahltest mit Eingabe M und t auf. (3) Falls der Primzahltest M als wahrscheinlich prim identifiziert, so gebe M aus, sonst gehe zurück zu Schritt (). Theorem 2.9. Die Ausgabe von Algorithmus 2.8 ist mit Wahrscheinlichkeit mindestens 2 t+ lnb eine Primzahl. Die erwartete Laufzeit von Algorithmus 2.8 ist O(t (log 2 B) 4 ). Die behauptete Wahrscheinlichkeit ergibt sich nach einigen Abschätzungen (siehe [8], Seite 64). Setzt man voraus, dass der verwendete Algorithmus eine Laufzeit hat, die mit der Laufzeit des Fermat-Tests 2.2 vergleichbar ist, so ergibt sich die zweite Behauptung: Schritt (2)(ii) benötigt Laufzeit O((log 2 M) 2 ) (Laufzeit des Euklidischen Algorithmus). Schritt (2)(iii) kann mittels Repeated Squaring in Zeit O((log 2 M) 3 ) durchgeführt werden. Weil die Wahrscheinlichkeit durch zufällige Wahl eine Primzahl zu finden näherungsweise durch B/(2 lnb) B = 2 lnb gegeben ist, erwarten wir etwa O(log 2 B) Wiederholungen der Schritte (2) und (3) von 2.8. Damit ergibt sich eine Gesamtlaufzeit von O((t (log 2 B) 3 ) log 2 B). Dies zeigt die Behauptung. Ein interessanter und wichtiger Satz, der uns im folgenden auch immer wieder begegnen wird, ist der folgende, der auf Dirichlet zurückgeht, und eine Aussage über Primzahlen in gewissen arithmetischen Progressionen macht: Satz 2.0. (Dirichlet) Sind a,b Z mit a > 0 und ggt(a,b) =, so gibt es unendlich viele Primzahlen der Form a n + b, n N.
33 2.2. FAKTORISIERUNG GANZER ZAHLEN 3 Wir werden den Satz in der Regel für den Spezialfall a = q für eine Primzahl q und b = verwenden. Dann sind die Voraussetzungen des Satzes erfüllt und er garantiert uns die Existenz unendlich vieler Primzahlen der Form q n +. Die Existenz solcher Primzahlen ist wichtig, da wir auf diese Weise ein p finden können, derart dass die Ordnung von Z p in von uns steuerbare Primfaktoren zerfällt. Der Satz und weitere ähnliche Sätze über Primzahlen in arithmetischen Progressionen können in [0] nachgelesen werden. In manchen Algorithmen ist es nicht nur wichtig eine Primzahl zu finden, sondern z.b. alle Primzahlen p,..., p h bis zu einer vorgegebenen oberen Grenze B 2 zu bestimmen. Ein möglicher Algorithmus, der diese Aufgabe bewältigt, ist das Sieb des Erathostenes: Algorithmus 2.. (Sieb des Erathostenes) Sei B 2 gegeben. () Erstelle eine B-elementige Liste L mit L[i] := i für i =,..., B. (2) Finde noch nicht markierte Werte L[i] 0 mit i > minimal. Markiere L[i]. Falls kein solches existiert, so gehe zu Schritt (4). (3) Setze L[k i] := 0 für alle k 2 mit k i B. (4) Gebe alle j mit L[ j] 0 aus. Die Korrektheit des Algorithmus ist klar. Seine Laufzeit ergibt sich im wesentlichen zu: B p B p prim p = B p B p prim p O(B log 2 (log 2 B)). Bei der Laufzeitanalyse haben wir nicht ganz korrekter Weise den Aufwand für das Setzen der Listeneinträge auf den Wert Null nicht mitberechnet. Er macht etwa einen Faktor log 2 B aus. 2.2 Faktorisierung ganzer Zahlen In diesem Abschnitt werden wir im wesentlichen zwei Algorithmen zur Faktorisierung ganzer Zahlen besprechen: Pollard s ρ-methode und Dixon s Zufallsquadrate Die Pollard ρ-methode zur Faktorisierung ganzer Zahlen Gegeben sei eine Zahl N N, die weder eine Primzahl, noch eine reine Primpotenz sei. Wir betrachten eine Funktion f : Z N Z N und einen Startwert x 0 Z N. Dann berechnen wir die Sequenz der (x i ) i N mit x i := f (x i ). Wir nehmen an, dass f Werte liefert, die (x i ) i N wie eine zufällige Sequenz erscheinen lassen. Sind nun p und q verschiedene Primfaktoren von N, so sagt uns der Chinesische Restsatz.27, dass eine modulo N zufällig verteilte Sequenz (x i ) i N auch modulo p und modulo q zufällig verteilt ist. Betrachten wir nun die Sequenz
34 32 KAPITEL 2. GRUNDLAGEN AUS DER ZAHLENTHEORIE (x i ) i N modulo p, so erhalten wir nach spätestens p-schritten (und in Wirklichkeit erwartungsgemäß um einiges schneller) eine Kollision, d.h. wir finden k,l mit x k x k+l mod p. Da aber (x i ) i N modulo N, p und q zufällig verteilt ist, ist es recht unwahrscheinlich, dass zu den gleichen Indizes k,l auch eine Kollision modulo q auftritt. Es gilt also mit hoher Wahrscheinlichkeit x k x k+l modq und damit auch x k x k+l modn. Letzteres bedeutet aber gerade, dass ggt(x k x k+l,n) nichttrivial ist, womit wir einen Teiler von N gefunden hätten. Es stellen sich zwei Probleme: Als erstes müssen wir die erwartete Laufzeit bis zum Auftauchen einer Kollision abschätzen. Als zweites müssen wir uns überlegen, wie wir den erhöhten Speicherbedarf des obigen Algorithmus minimieren können, denn wir möchten natürlich nach Möglichkeit nicht alle Werte (x i ) i N speichern müssen, bis schließlich eine Kollision auftritt. Proposition 2.2. (Das Geburtstagsproblem ) In einer Urne befinden sich p gleichartige Kugeln mit den Nummern,..., p. Dann muss man erwartungsgemäß O( p) Ziehungen mit Zurücklegen durchführen, bis das erste Mal eine Kollision auftritt (d.h. bis das erste Mal eine Kugel gezogen wird, die schon bei einem der vorhergehenden Züge zum Vorschein gekommen war). Beweis. Es sei s die Zufallsgröße, die die Anzahl der benötigten Ziehungen bis zur ersten Kollision beschreibt. Gesucht ist der Erwartungswert E (s). Es gilt: E (s) = = j= j P(s = j) = j= j (P(s j) P(s j + )) j P(s j) j P(s j + ) j= j= = P(s ) + = P(s ) + j=2 j P(s j) j=2 P(s j) = P(s j) j=2 j= ( j ) P(s j) Die Wahrscheinlichkeit in den ersten j Ziehungen keine Kollision zu erhalten lässt sich wie folgt berechnen und weiter abschätzen: p (p ) (p 2)... (p j + 2) P(s j) = = i< j p (i ) p p j ( = i ) i< j p e (i )/p = e ( j 2) ( j )/(2 p) e ( j 2)2 /(2 p), i< j wobei wir x e x benutzt haben. Damit ergibt sich für den Erwartungswert die
35 2.2. FAKTORISIERUNG GANZER ZAHLEN 33 Abschätzung: E (s) e ( j 2)2 /(2 p) + j= p O( p) 0 e j2 /(2 p) 2 + e x2 /(2 p) dx j=0 0 π p e x2 dx = p π 2 = Damit haben wir das erste der beiden Probleme gelöst: Ist p der kleinste Primfaktor der Zahl N, so können wir nach O( p)-schritten mit einer Kollision rechnen. Ein möglicher Ansatz, die Zahl N zu faktorisieren, könnte also darin bestehen, die Werte (x i ) i N zufällig zu wählen und auf eine Kollision zu warten. Die Laufzeit dieses Algorithmus entspricht dann im wesentlichen der Anzahl der zu erwartenden Züge bis zur ersten Kollision. Nun zum zweiten Problem: Anstatt alle Werte x i für i mit x i = f (x i ) bis zur ersten Kollision zu speichern, benutzen wir den sogenannten Zykel-Trick von Floyd: Algorithmus 2.3. (Floyd s Zykel Trick) Sei x 0 {0,..., p } und f : {0,..., p } {0,..., p } eine Funktion. () Setze i := 0 und y 0 := x 0. (2) Wiederhole die folgenden Berechnungen bis x i = y i für i > 0 gilt: (3) Gebe i aus. Setze i := i +, x i := f (x i ) und y i := f ( f (y i )). Das folgende Lemma zeigt uns, dass eine Kollision nach Floyd s Methode hinreichend schnell auftritt: Lemma 2.4. Es sei k der kleinste Wert, für den eine Kollision auftritt, d.h. x k = x k+l. Dann findet Algorithmus 2.3 nach höchstens (k + l)-schritten eine Kollision. Beweis. Es gilt y i = x i genau dann, wenn x 2 i = x i genau dann, wenn l (dies ist die Länge des Zykels) ein Teiler von 2 i i = i. Der kleinste Wert von i, für den diese Teilbarkeitsbedingung erfüllt ist, ist i = k +( k modl) < k +l gilt. Letzteres sieht man wie folgt: Es ist k = (k divl) l + (k modl), also k modl = (k divl) l k und damit i = k + (k divl) l k = (k divl) l. Nun zu unserem eigentlichen Ziel, dem Faktorisierungsalgorithmus von Pollard: Algorithmus 2.5. (Pollard s ρ-methode) Sei N N keine Primzahl. () Wähle x 0 R {0,...,N } und setze y 0 := x 0 sowie i := 0. (2) Wiederhole die folgenden Schritte:
36 34 KAPITEL 2. GRUNDLAGEN AUS DER ZAHLENTHEORIE (i) Setze i := i +, x i := x 2 i + modn, y i := (y 2 i + )2 + modn. (ii) Berechne g := ggt(x i y i,n). Falls < g < N, so gebe g aus. Falls g = N, so breche das Verfahren ab. Als Laufzeit für den Algorithmus erhalten wir Theorem 2.6. In der Notation von Algorithmus 2.5 hat Pollard s ρ-methode eine Laufzeit von O( p (log 2 N) 2 ) Bit-Operationen, wobei p der kleinste Primteiler der Zahl N sei. Wegen p < N = N /2 läßt sich die Laufzeit auch ausschließlich in Abhängigkeit von N angeben. Die Laufzeit ist dann O(N /4 (log 2 N) 2 ). Beweis. Die Behauptung folgt sofort mit den Laufzeitabschätzungen für Floyd s Zykel Trick, der Laufzeit für den Erweiterten Euklidischen Algorithmus.7 sowie dem Aufwand für modulare Multiplikationen. Beachte, dass wir nach O( p) Schritten mit einer Kollision rechnen können, d.h. der Zykel, in den die berechneten Werte eintreten, kann höchstens Länge O( p) haben. Damit liefert Floyd s Zykel Trick erwartungsgemäß nach 2 p Schritten eine Kollision, also in erwarteter Zeit O( p) Dixon s Zufallsquadrate Der in diesem Abschnitt diskutierte Algorithmus von Dixon basiert auf der folgenden Idee: Für eine gegebene, zusammengesetzte, zu faktorisierende Zahl N, versucht man Werte x,y Z N zu finden mit x 2 y 2 modn. Wegen x 2 y 2 (x y) (x + y) 0modN folgt dann N (x y) (x + y). Wenn nun N nicht gerade ein Teiler von x y oder x + y selbst ist, so sind ggt(x y,n) und ggt(x + y,n) nichttrivial und man kann auf diese Weise einen Teiler der Zahl N finden. Es stellt sich jedoch das Problem, wie man solche Werte x,y überhaupt finden kann. Bemerkung 2.7. (Ein Exkurs über B-Zahlen) Seien B,N > 0 gegeben und sei {p,..., p h } die Menge aller Primzahlen B. Dann nennen wir {p,..., p h } eine B-Faktor-Basis. Eine Zahl b {0,...,N } heißt B-glatt, falls ihre Primfaktoren sämtlich in {p,..., p h } enthalten sind. Sie heißt eine B-Zahl, falls b 2 modn gerade B-glatt ist. Es gilt der folgende wichtige Satz: Satz (Canfield, Erdös, Pomerance) Es sei ψ(n, B) die Anzahl der B-glatten Zahlen N. Dann gilt: ψ(n,b) = N u u (+o()), wobei u := lnn lnb (siehe [6], Theorem 0.2., Seite 48). Damit erhalten wir die folgende wichtige Abschätzung: P( b R {,...,N} ist B-glatt ) N u u N = u u, u := lnn lnb.
37 2.2. FAKTORISIERUNG GANZER ZAHLEN 35 Bevor wir zum Algorithmus von Dixon kommen noch eine weitere kleine Vorbereitung: Proposition 2.8. Tritt ein Ereignis in einem Zufallsexperiment mit Wahrscheinlichkeit p ein und lässt sich das Experiment unabhängiger Weise wiederholen, so tritt es erwartungsgemäß nach p Wiederholungen des Experimentes zum ersten Mal auf. Beweis. Wir haben es mit einem diskreten Warte-Zeit-Phänomen zu tun und können das betrachtete Ereignis aus hypergeometrisch verteilt voraussetzen. Der gesuchte Erwartungswert E := E ( Ereignis tritt zum ersten Mal ein ) berechnet sich dann zu E = k= k p ( p) k. Für x < gilt x = k=0 x k und somit ( x) 2 = k x k k= per Differenziation nach x. Wenden wir diese Identitäten auf unsere Situation an (x = p), so folgt E = p k= k ( p)k = p ( ( p)) 2 = p. Algorithmus 2.9. (Dixon s Zufallsquadrate) Seien N,B > 0 gegeben. () Berechne (z.b. mit dem Sieb des Erathostenes 2.) alle Primzahlen p,..., p h aus {0,...,B}. (2) Setze A := und wiederhole die folgenden Schritte bis #A = h +. (i) Wähle b R {0,...,N 2}. Falls g := ggt(b,n) >, so gebe g aus. (ii) Setze a := b 2 modn und faktorisiere a über der Faktorbasis {p,..., p h }. Falls a nicht B-glatt ist, verwerfe a und gehe zurück zu (i). (iii) Ist a = p α... pα h h, so setze α := (α,...,α h ) und A := A {(b,α)}. (3) Sei A = {(b,α () ),...,(b h+,α (h+) )}. Dann gilt: b 2 p α()... p α() h Löse nun das lineare Gleichungssystem. h modn b 2 h+ p α(h+)... p α(h+) h α () α (2)... α (h+)... α () h α (2) h... α (h+) h h modn x. x h+ 0 =. 0 über Z 2. Sei (x,...,x h+ ) eine nichttriviale Lösung des obigen Gleichungssystems (beachte, dass es eine solche nach Wahl der Koeffizientenmatrix geben muss, denn diese
38 36 KAPITEL 2. GRUNDLAGEN AUS DER ZAHLENTHEORIE hat höchstens Rang h). Sind dann x i,...,x ik die von Null verschiedenen Komponenten des Vektors (x,...,x h+ ), so gilt α (i) α (ik) 0mod2. Setze x := b i... b ik und y := p γ... pγ h h, wobei γ = 2 (α(i) α (ik) ). j) (4) Wegen b 2 i j p α(i... p ggt(x y,n) aus. j) α(i h h modn gilt nun x 2 y 2 modn. Gebe ggt(x + y,n) und Um eine akzeptable Abschätzung für die Laufzeit zu erhalten, muss B geschickt gewählt werden. Bei geschickter Wahl von B, d.h. für B exp( lnn lnlnn) erhält man eine Laufzeit von O(exp(3 lnn lnlnn)). Diese Abschätzung erhält man im wesentlichen aus den folgenden Überlegungen: Algorithmus 2.9 benötigt etwa B log 2 log 2 B Operationen zur Berechnung der Faktorbasis mit dem Sieb des Erasthostenes in Schritt (). ein Durchlauf von Schritt (2) benötigt höchstens h (log 2 a) 3 B (log 2 N) 3 Operationen um a entweder über der Faktorbasis zu faktorisieren oder festzustellen, dass sich a über der Faktorbasis nicht faktorisieren lässt (Die Laufzeit ergibt sich, wenn man schlicht eine Primzahl nach der anderen durchgeht und per Division mit Rest feststellt, ob die betrachtete Primzahl ein Teiler der gewählten Zahl ist. Die Zahl a kann höchstens log 2 a verschiedene Primfaktoren haben und wir müssen höchstens h B Zahlen ausprobieren. Für jede Division mit Rest veranschlagen wir (log 2 a) 2 Operationen). Die Wahrscheinlichkeit, dass a in der Tat B-glatt ist, beläuft sich auf etwa u u mit u = lnn lnb. Damit müssen wir Schritt (2) erwartungsgemäß uu -mal wiederholen, bis wir eine B-Zahl gefunden haben. Um h + B solcher Zahlen zu finden, müssen wir also etwa B Wiederholungen von Schritt (2) einkalkulieren. Damit beläuft sich die Gesamtlaufzeit für Schritt (2) auf etwa B (log 2 N) 3 u u B erwartete Operationen. Weitere (h + ) 3 B 3 Operationen zur Lösung des Gleichungssystems in Schritt (3). Alle weiteren Operation verbuchen wir unter dem Motto Peanuts, d.h. diese fallen nicht wirklich ins Gewicht und wirken sich nicht dramatisch auf die tatsächliche erwartete Laufzeit des Algorithmus aus. Insgesamt erhalten wir also im wesentlichen eine erwartete Laufzeit von B log 2 log 2 B + B (log 2 N) 3 u u B + B 3 Operationen. Bedenkt man, dass u u durchaus in N wächst, so überlegt man sich, dass die Laufzeit genau dann optimal ist, wenn man B ungefähr so wählt, dass B (log 2 N) 3 u u B und B 3 im wesentlichen gleich groß sind. Dies führt dann auf die oben angegebene Wahl von B als exp( lnn lnlnn) und liefert dann die behauptete Laufzeit von O(exp(3 lnn lnlnn)).
39 Kapitel 3 Diskrete Logarithmen In diesem Kapitel wollen wir uns mit diskreten Logarithmen und ihrer Bedeutung in der Kryptographie auseinandersetzen. Wir werden einige Verfahren diskutieren, wie man diskrete Logarithmen von Elementen einer zyklischen (Unter-)Gruppe berechnen kann und ihre Laufzeit analysieren. 3. Grundlegende Definitionen Wir betrachten stets eine zyklische Gruppe G = g mit erzeugendem Element g G. Im allgemeinen muss man sich nicht von vorneherein auf zyklische Gruppen einschränken, sondern kann ganz beliebige Gruppen wie z.b. elliptische Kurven betrachten und dann die Berechnungen in einer geeigneten zyklischen Untergruppe der betreffenden Gruppe ausführen. Definition 3.. Sei x G = g und #G = d. Dann heißt die eindeutig bestimmte Zahl k {0,...,d } mit x = g k der diskrete Logarithmus von x in Basis g. Wir schreiben k = dlog g x. Gilt x = g k und ist d = #G, so ist für jedes i Z auch k +i d ein diskreter Logarithmus von x in Basis g, denn g k+i d = g k (g d ) i = g k i = g k = x. Verlangen wir jedoch k {0,...,d } wie in der obigen Definition, so können wir von dem diskreten Logarithmus sprechen: Sind k,l {0,...,d } mit g k = x = g l, so folgt g k l =, also d k l. Wegen k,l {0,...,d } folgt k l < d, also wegen d k l bereits k l = 0, d.h. k = l. Das diskrete Logarithmus Problem besteht nun darin, zu einem gegeben x G dasjenige k {0,...,d } zu finden, für das x = g k gilt. Beim allgemeinen diskreten Logarithmus Problem setzt man nicht zusätzlich voraus, dass x g, d.h. bei der allgemeinen Version des Problems ist zusätzlich zu entscheiden, ob das gegebene Element überhaupt ein Element der betrachteten zyklischen Gruppe ist (was die Angelegenheit zusätzlich verkompliziert). Wir werden uns hier fast ausschließlich mit der spezielleren Variante beschäftigen, bei der wir davon ausgehen können, dass ein gegebenes Element bereits in der zugrundeliegenden 37
40 38 KAPITEL 3. DISKRETE LOGARITHMEN zyklischen Gruppe enthalten ist. Das diskrete Logarithmus Problem wird als schwer zu lösen angesehen. Was genau mit dem Adjektiv schwer gemeint ist, werden wir sehen, wenn wir die Komplexität von Algorithmen zur Berechnung des diskreten Logarithmus untersuchen. Ist n := log 2 d + die Binärlänge der Gruppenordnung, so gilt d 2 n. Die Gruppe G hat also 2 n Elemente. Damit liefert der naive Ansatz über ausprobieren aller möglichen Exponenten für g bis man schließlich den Wert x erhält den diskreten Logathmus von x in Basis g nach erwartungsgemäß 2n 2 = 2n Schritten, was für großes n einen völlig utopischen Rechenaufwand bedeutet. 3.2 Der Baby-Schritt-Riesen-Schritt Algorithmus Sei wieder G = g eine zyklische Gruppe der Ordnung d. Der folgende Algorithmus berechnet den diskreten Logarithmus eines Elementes x G. Algorithmus 3.2. (Der Baby-Schritt-Riesen-Schritt Algorithmus) Sei x G. () Setze m := d. (2) Baby-Schritte : Berechne und speichere x,x g,x g 2,...,x g m. (3) Riesen-Schritte : Berechne g m,g 2 m,g 3 m,... bis ein g i m gefunden wird mit g i m = x g j. (4) Gebe (i m j)modd aus. Beweis. (Korrektheit) Wir müssen zunächst zeigen, dass es in der Tat überhaupt zu einer Kollision kommt. Im Falle einer Kollision liefert der Algorithmus sicherlich den diskreten Logarithmus von x in Basis g. Es gelte x = g a für a {0,...,d }, d = #G, d.h. a = dlog g x. Division mit Rest liefert a = b m+c für ein c mit 0 c m. Für j = m c und i = b+ gilt i m j = (b + ) m (m c) = b m + c. Ist c = 0, so folgt a = b m und x = g a = g b m. Das Element g b m wird aber vom Algorithmus berechnet und löst eine Kollision mit x aus. Ist c > 0, so folgt j = m c m. Folglich wird x g j bei den Baby-Schritten berechnet und löst eine Kollision mit dem Element g i m für i = b + aus, das bei den Riesen-Schritten in jedem Fall berechnet wird. Damit erhalten wir stets die gewünschte Kollision, was die Korrektheit des Algorithmus beweist. Theorem 3.3. Sei G = g und d = #G. Dann berechnet Algorithmus 3.2 den diskreten Logarithmus in einer erwarteten Anzahl von O( d) Gruppenoperationen. Beweis. In der Notation des obigen Beweises erhalten wir: b = a c m a m < d m m. Die Baby-Schritte benötigen m Gruppenoperationen. Bis zu einer Kollision werden nun wegen i = b + höchstens m Riesen-Schritt Berechnungen ausgeführt. Dies liefert einen Gesamtaufwand von O(m) Gruppenoperationen, woraus wegen m = d die Behauptung folgt.
41 3.3. DER GEBURTSTAGSANGRIFF AUF DEN DISKRETEN LOGARITHMUS 39 Bemerkung 3.4. Das Speichern aller in den Baby-Schritten berechneten Werte macht Algorithmus 3.2 zu einem sehr speicherintensiven Verfahren. Wir werden in einem der nächsten Abschnitte ein Verfahren mit ähnlicher Laufzeit aber konstantem Speicherplatz (unabhängig von der Gruppenordnung) kennenlernen. 3.3 Der Geburtstagsangriff auf den diskreten Logarithmus Der folgende Algorithmus ist im wesentlichen eine probabilistische Alternative zum Baby- Schritt-Riesen-Schritt Algorithmus 3.2: Algorithmus 3.5. (Geburtstagsangriff auf DLP) Sei wieder G = g, d = #G und x G. () Setze X :=, Y :=. (2) Wiederhole den folgenden Schritt solange, bis eine Kollision zwischen X und Y auftaucht: Wähle i R {0,...,d } und setze X := X {x g i } sowie Y := Y {g i }. (3) Gilt x g i = g j, so gebe ( j i)modd aus. Beweis. (Korrektheit) Da G endlich ist, muss nach endlich vielen Schritten eine Kollision auftreten. Im Falle einer solchen Kollision ist ( j i) mod d der gesuchte diskrete Logarithmus. Theorem 3.6. Algorithmus 3.5 berechnet mit einer erwarteten Anzahl von O( d) Gruppenoperationen den diskreten Logarithmus, d = #G. Beweis. Wegen 2.2 können wir nach O( d) Durchführungen von Schritt (2) mit der ersten Kollision rechnen. Dies zeigt die Behauptung. 3.4 Die Pollard ρ-methode für den diskreten Logarithmus Auch Pollard s ρ-methode zur Berechnung des diskreten Logarithmus basiert darauf, explizit Kollision zu produzieren und mit ihrer Hilfe den diskreten Logarithmus zu berechnen. Ziel ist es, den enormen Speicherbedarf der Algorithmen 3.2 und 3.5 auf ein konstantes Minimum zu beschränken. Wie in den vorherigen Abschnitten sei wieder G = g eine zyklische Gruppe der Ordnung d. Bemerkung 3.7. Sei x G mit g a = x. Unser Ziel ist es a = dlog g x zu berechnen. Wir betrachten eine zufällige Folge von Elementen b 0,b,b 2,... R {0,,2} und wählen u 0,v 0 R
42 40 KAPITEL 3. DISKRETE LOGARITHMEN Z d. Dann setzen wir y 0 := g u 0 x v 0 und berechnen y k+ für k 0 über die folgende Iterationsvorschrift g y k falls b k = 0 y k+ := y 2 k falls b k = x y k falls b k = 2 bis wir eine Kollision y i = y j mit i j gefunden haben. Die Exponenten von x und g in y k können wir in Form von Polynomen speichern. Dazu setzen wir τ 0 := u 0 + v 0 t und τ k + falls b k = 0 τ k+ := 2 τ k falls b k = τ k +t falls b k = 2 Dann gilt τ k = v k t +u k und y k = g τ k(a) für alle k, denn y k = g u k x v k = g u k (g a ) v k = g u k+a v k = g τ k(a). Im Fall der Kollision y i = y j für i j erhalten wir g u i+a v i = g ui x v i = y i = y j = g u j x v j = g u j+a v j = u i + a v i u j + a v j modd Gilt also ggt(v i v j,d) =, so können wir v i v j modulo d invertieren und erhalten a = (u j u i ) (v i v j ) modd. Wir müssen uns nun die Frage stellen, wie wahrscheinlich der Fall ist, dass wir v i v j in der obigen Situation modulo d tatsächlich invertieren können, und wie wir verfahren, wenn v i v j eben nicht invertierbar ist. Bemerkung 3.8. Wir möchten eine Gleichung der Form m m 2 k (b b 2 )modd nach k auflösen. Falls = e := ggt(b b 2,d) gilt, so können wir wie oben bereits schlicht mit dem Inversen von b b 2 multiplizieren. Gilt jedoch e >, so verfahren wir wie folgt: Weil e ein Teiler von b b 2 ist, ist auch m m 2 durch e teilbar und wir können ersatzweise die Gleichung m m 2 k b b 2 mod d e e e betrachten. Wegen e = ggt(b b 2,d) sind b b 2 e und d e teilerfremd, so dass wir b b 2 e modulo d e invertieren können. Dies liefert uns k mit k m ( ) m 2 b b 2 mod d e e e. Es gilt also k k mod d e, d.h. k k = i d e für ein i Z und folglich k k + i d e modd
43 3.4. DIE POLLARD ρ-methode 4 für ein i mit 0 i e. Eine Möglichkeit den richtigen Wert für k herauszufinden ist nun, alle möglichen Werte von i auszuprobieren und zu vergleichen, ob sich das gewünschte Ergebnis ergibt. Für kleine Werte von e ist dieses Verfahren durchaus praktikabel. Insbesondere in dem Spezialfall, dass die Gruppenordnung d eine Primzahl ist, kann e nur die Werte oder d annehmen. Bemerkung 3.9. Die Wahrscheinlichkeit, dass eine zufällige Zahl aus {,...,d } teilerfremd zu d ist, berechnet sich exakterweise zu p d ( p ) nach Satz.35. Hat d p prim nur sehr große Primfaktoren, so ist die Wahrscheinlichkeit dafür, durch zufällige Wahl aus {,...,d } ein zu d teilerfremdes Element zu erhalten, relativ groß. Diese etwas schwammige Aussage soll jedoch nur an die Intuition appellieren. Genauer gilt: Satz. Die Anzahl der zu d teilerfremden Zahlen ist ϕ(d), wobei ϕ die Eulersche ϕ-funktion bezeichnet. Es gilt ϕ(d) 6 π 2 d d und damit ist die Wahrscheinlichkeit durch zufällige Wahl aus {,...,d } eine zu d teilerfremde Zahl zu erhalten näherungsweise 6%. Eine Wahrscheinlichkeit deutlich größer als 50% soll uns genügen. Die Aussage dieses Satzes entspricht der Aussage von Satz.36. Bemerkung 3.0. Zurück zur algorithmischen Idee zur Bestimmung des diskreten Logarithmus, die wir in der ersten Bemerkung dieses Abschnitts skizziert hatten. Auch wenn die Sequenz der (y i ) i N keinesfalls zufällig ist, so zeigt jedoch die Praxis, dass sie sich wie zufällig verhält. Wir werden sie im folgenden wie eine Sequenz von Zufallszahlen behandeln. Der Satz über das Geburtstagsproblem sagt uns, dass wir nach O( d) Schritten, d = #G, mit einer Kollision rechnen können. Die bisherige algorithmische Idee verlangt allerdings noch immer das Speichern aller Werte b i, i = 0,,2,..., mit deren Hilfe sich dann die entsprechenden Polynome τ i berechnen lassen und mit deren Hilfe dann wiederum der diskrete Logarithmus ermittelt werden kann. Als erste Verbesserung werden wir Floyd s Zykel Trick 2.3 in den Algorithmus einfügen. Dann partitionieren wir G in drei ungefähr gleich große Teilmengen S 0,S und S 2 und ändern die Iterationsvorschriften wie folgt ab: g y k falls y k S 0 τ k + falls y k S 0 y k+ := y 2 k falls y k S τ k+ := 2 τ k falls y k S x y k falls y k S 2 τ k +t falls y k S 2 Nun muss die Sequenz der b i nicht mehr gespeichert werden, denn wir haben die zufällige Wahl durch eine deterministische ersetzt, die in der Praxis ebenso gute Resultate liefert, wie eine zufällige Wahl. Nun kommen wir endlich zu dem eigentlichen Algorithmus:
44 42 KAPITEL 3. DISKRETE LOGARITHMEN Algorithmus 3.. (Die Pollard ρ-methode für DLP) Sei G = g, d = #G und x G. Ferner sei G = S 0 S S 2 eine Partition von G mit S 0 S S 2. () Wähle u 0,v 0 R Z d und setze x 0 := g u 0 x v 0, y 0 := g u 0 x v 0, τ 0 := u 0 + t v 0, σ 0 := u 0 +t v 0, k := 0. (2) Wiederhole die folgenden Schritte, bis eine Kollision x k = y k, k > 0, auftritt: (i) Berechne (ii) Berechne und g x k falls x k S 0 x k+ := xk 2 falls x k S, x x k falls x k S 2 τ k + falls x k S 0 τ k+ := 2 τ k falls x k S τ k +t falls x k S 2 y tmp k+ := σ tmp k+ := g y k falls y k S 0 y 2 k falls y k S, x y k falls y k S 2 σ k + falls y k S 0 2 σ k falls y k S σ k +t falls y k S 2 g y tmp k+ falls y tmp k+ S 0 y k+ := (y tmp k+ )2 falls y tmp k+ S, x y tmp k+ falls y tmp k+ S 2 σ tmp k+ + falls ytmp k+ S 0 σ k+ := 2 σ tmp k+ falls y tmp k+ S +t falls ytmp k+ S 2 σ tmp k+ (iii) Setze k := k +. (3) Gilt x k = g u k x v k = g s k x t k = y k und ggt(v k t k,d) =, so gebe (s k u k ) (v k t k ) modd aus. Anderenfalls gebe FAIL zurück. Die Polynome können während der Berechnung ruhig modulo d reduziert werden, um die Koeffizienten möglichst klein zu halten. Insgesamt erhalten wir also:
45 3.5. DER CHINESE-REMAINDERING ALGORITHMUS 43 Theorem 3.2. Die Pollard ρ-methode für den diskreten Logarithmus 3. berechnet mit einer erwarteten Anzahl von O( d) Gruppenoperationen, d = #G, und konstantem Speicherbedarf den diskreten Logarithmus. Beweis. Folgt aus dem Satz über die erwartete Anzahl von Wahlen bis zur ersten Kollision unter der Annahme, dass sich die Sequenzen der x i und y i wie zufällig verhalten. 3.5 Der Chinese-Remaindering Algorithmus Sei G = g eine zyklische Gruppe der Ordnung d und d = q... q r die Faktorisierung von d in paarweise teilerfremde Zahlen q,...,q r. Wir wollen in diesem Abschnitt ein Verfahren kennenlernen, wie man mit Hilfe des Chinesischen Restsatzes.27 die Berechung von diskreten Logarithmen in G auf die Berechnung von diskreten Logarithmen in zyklischen Untergruppen der Ordnung q,...,q r reduzieren kann. Zunächst benötigen wir einige theoretische Hilfsmittel: Definition 3.3. Sei G = g und e N. Dann setzen wir π e (G) := {x e x G}. Offensichtlich ist π e (G) stets eine Untergruppe von G. Sind e und d = #G teilerfremd, so gilt stets π e (G) = G, denn als Untergruppe von G folgt einerseits #π e (G) d. Andererseits enthält π e (G) jedoch ein Element der Ordnung d, denn ist x ein erzeugendes Element von G, so gilt ord(x) = d und es folgt ord(x e ) = ord(x) ggt(ord(x),e) = d. Somit folgt #π e(g) d, also π e (G) = G. Sind e und d jedoch nicht teilerfremd, so erhalten wir die folgenden interessanten Resultate: Lemma 3.4. In der Notation von oben erhalten wir für einen Teiler e von d gerade π e (G) = {x G x d e = }. Beweis. Sei x π e (G). Dann gilt x = x e 0 für ein x 0 G und x d e = x d 0 =. Somit folgt π e(g) H := {x G x d e = }. Bleibt zu zeigen H π e (G). Die Elemente von H sind gerade gegeben durch = g 0,g e,g 2 e,...,g ( d e ) e und diese sind paarweise verschieden, da ord(g) = d. Wäre nämlich g i = g j für i, j {e,2 e,...( d e ) e}, i < j, so folgt g j i = und j i < ( d e ) e = d e. Widerspruch! Da alle Elemente = g 0,g e,g 2 e,...,g ( d e ) e insbesondere in π e (G) enthalten sind, folgt H π e (G) und damit die Behauptung. Der folgende Satz liefert uns die theoretische Grundlage für den Algorithmus zur Berechnung des diskreten Logarithmus in zyklischen Untergruppen von G kleinerer Ordnung: Satz 3.5. Sei G = g eine zyklische Gruppe der Ordnung d und d = q... q r die Faktorisierung von d in paarweise teilerfremde Zahlen q,...,q r. Seien x G und Dann gilt: S i := {x d/q i x G} T i := {x G x q i = }.
46 44 KAPITEL 3. DISKRETE LOGARITHMEN (i) S i = T i, #S i = q i und S i wird von g d/q i erzeugt für i =,...,r. (ii) G = S S 2... S r vermöge y (y d/q,...,y d/q r ). (iii) Es gilt a = dlog g x genau dann, wenn a i = dlog g d/q i x d/q i mit a a i modq i für i =,...,r. Beweis. Die Behauptung folgt im wesentlichen aus dem vorhergehenden Lemma und dem Chinesischen Restsatz.27, da die Abbildung Z d G, i g i ein Gruppenisomorphismus ist und Z d = Zq... Z qr. Es gilt dann nämlich G = Z d = Zq... Z qr = S... S r. Algorithmus 3.6. ( Chinese Remaindering für DLP) Sei G = g eine zyklische Gruppe der Ordnung d sowie d = q... q r die Faktorisierung von d in paarweise teilerfremde Zahlen q,...,q r und x G. () Wiederhole die folgenden Schritte für i =,..., r: (i) Berechne g i := g d q i und x i := x d q i mit Hilfe von Reapeted Squaring.5. (ii) Berechne a i = dlog gi x i in S i = {x d/q i x G}. (2) Berechne mit Hilfe des Chinesischen Restsatz Algorithmus.28 a {0,..., d } mit a a i modq i für i =,...,r und gebe a aus. Beweis. (Korrektheit) Die Korrektheit folgt unmittelbar aus dem vorhergehenden Theorem. Theorem 3.7. Sei G = g, d := #G und n = log 2 d + die Binärlänge der Gruppenordnung von G. Algorithmus 3.6 berechnet den diskreten Logarithmus in G mit folgendem Aufwand: (i) Faktorisierung von d, d.h. O(2 n 4 n 2 ) Operationen, wenn wir Pollard s ρ-methode 2.5 zur Faktorisierung verwenden. (ii) Berechnung je eines diskreten Logarithmus in den Untergruppen S,...,S r. Wegen #S i = q i ergibt sich bei Verwendung von Pollard s ρ-methode für DLP 3. eine Laufzeit von O( q i ) für jede solche Berechnung. (iii) Repeated Squaring, d.h. im wesentlichen Aufwand O(n 3 ). Beweis. Die Behauptungen über die Laufzeit ergeben sich aus den Laufzeit-Angaben für die verwendeten (Teil-)Algorithmen.
47 3.6. DER ALGORITHMUS VON POHLIG & HELLMAN Der Algorithmus von Pohlig & Hellman In diesem Abschnitt werden wir einen Algorithmus kennenlernen, mit dem wir die Berechnung von diskreten Logarithmen in zyklischen Gruppen der Ordnung p e, p prim, e 2, auf die Berechnung von diskreten Logarithmen in Gruppen der Ordnung p reduzieren können. Bemerkung 3.8. Sei G = g eine zyklische Gruppe der Ordnung d = p e für eine Primzahl p und e 2 sowie x G mit x = g a. Wir stellen uns vor, wir kennen den Wert von a bereits und berechnen die p-adische Darstellung von a, die wegen a < p e durch a = a e p e + a e 2 p e a p + a 0 mit a 0,...,a e {0,..., p } gegeben ist. Potenzieren wir nun x = g a mit p e, so erhalten wir x pe = (g a ) pe = g a e p 2 e 2 +a e 2 p 2 e a p e +a 0 p e = g a 0 p e. Setzen wir g 0 := g pe, so erhalten wir a 0 = dlog g0 x pe. Diesen Verfahren können wir nun fortsetzen: Wir setzen x := x g a 0 und berechnen x pe 2 = g a p e. Dann gilt a = dlog g0 x pe 2 usw. Auf diese Weise können wir sukzessive die Werte a 0,...,a e berechnen und erhalten somit a = dlog g x. Algorithmus 3.9. (Pohlig & Hellman Algorithmus für DLP) Sei G = g eine zyklische Gruppe der Ordnung d = p e für eine Primzahl p und e 2 sowie x G. () Berechne g p,g p2,...,g pe mit Repeated Squaring.5 und setze y := G, g 0 := g pe. (2) Wiederhole die folgenden Schritte für i = 0,...,e : (i) Berechne x i := (x y i ) pe i. (ii) Berechne a i = dlog g0 x i mit Hilfe des Algorithmus von Pollard 3.. (iii) Berechne y i = y i g a i p i. (3) Gebe a = a e p e + a e 2 p e a p + a 0 aus. Beweis. (Korrektheit) Die Korrektheit sollte nach der vorhergehenden Bemerkung klar sein. Theorem Sei G = g eine zyklische Gruppe der Ordnung d = p e für eine Primzahl p und e 2. Sei ferner n = log 2 p + die Binärlänge der Primzahl p. Algorithmus 3.9 berechnet den diskreten Logarithmus in G mit folgenden Aufwand: (i) O(e (e n) 3 ) Operationen für Schritt (). (ii) O(e p) für die Berechnung der diskreten Logarithmen. (iii) Weitere O(e (e n) 3 ) Operationen für die Berechnung der Potenzen.
48 46 KAPITEL 3. DISKRETE LOGARITHMEN Beweis. In Schritt () werden e Potenzen berechnet. Wegen n log 2 p folgt log 2 p e = e log 2 p = e n. Setzt man voraus, dass alle Gruppenelemente eine Codierungslänge e n haben, so liefert die Abschätzung der Laufzeit des Repeated Squarings zusammen mit der klassischen Methode zur Multiplikation die behauptete Laufzeit O(e (e n) 3 ) für Schritt (). Analog folgt die Laufzeit unter (iii). Die unter (ii) behauptete Laufzeit folgt sofort aus der Laufzeitangabe des Algorithmus von Pollard zur Berechnung des diskreten Logarithmus. 3.7 Zusammenfassung Die vorhergehenden Abschnitte liefern uns: Ist G eine zyklische Gruppe der Ordnung d und ist d eine Primzahl, so lassen sich diskrete Logarithmen mit Hilfe des Pollard ρ-algorithmus 3. in G berechnen. Ist dagegen d keine Primzahl, so erlaubt es die Faktorisierung von d, die Berechnung des diskreten Logarithmus von G in entsprechende Berechnungen diskreter Logarithmen in Untergruppen von G zu verlagern. Ist d = p e... pe r r die Primfaktorzerlegung von d, so können wir die Berechnung des diskreten Logarithmus eines Elementes in G effizient zunächst mit Hilfe des Chinese Remaindering Algorithmus 3.6 auf die Berechnung diskreter Logarithmen in zyklischen Untergruppen der Ordnung p e,..., pe r r von G reduzieren. Die diskreten Logarithmen in diesen kleineren Gruppen können dann zusätzlich noch mit Hilfe des Algorithmus von Pohlig-Hellman 3.9 auf die Berechnung der diskreten Logarithmen in zyklischen Untergruppen der Ordnung p,..., p r von G reduziert werden. Hat also d sehr viele kleine Primfaktoren, so können wir d nicht nur effizient faktorisieren (auch bei der Laufzeit des Faktorisierungsalgorithmus von Pollard ist der wesentliche Anteil durch die Wurzel aus dem kleinsten Primteiler der zu faktorisierenden Zahl gegeben), sondern wir können auch den diskreten Logarithmus innerhalb einer zyklischen Gruppe der Ordnung d recht effizient berechnen. Insgesamt erhalten wir also den folgenden Algorithmus zur Berechnung diskreter Logarithmen in zyklischen Gruppen: Algorithmus 3.2. (Berechnung des diskreten Logarithmus) Sei G = g eine zyklische Gruppe der Ordnung d und x G. () Faktorisiere d, d.h. berechne paarweise teilerfremde Primpotenzen p e,..., pe r r mit d = p e... pe r r. (2) Wiederhole die folgenden Schritte für i =,..., r: (i) Setze q i := p e i i. (ii) Berechne x i := x d/q i und g i := g d/q i. (iii) Nun ist x i ein Element der von g i erzeugten zyklischen Gruppe der Ordnung q i = p e i i. Berechne nun a i = dlog gi x i mit Hilfe des Algorithmus von Pohlig & Hellman 3.9 (der wiederum seinerseits des Algorithmus von Pollard 3. verwendet). (3) Berechne mit Hilfe des Chinese Remaindering Algorithmus 3.6 aus a,...,a r den diskreten Logarithmus von x in Basis g.
49 3.8. INDEX-KALKÜL FÜR DEN DISKRETEN LOGARITHMUS IN Z P 47 Algorithmus 3.2 benötigt O(n p + n 2 ) Gruppenoperationen zur Berechnung des diskreten Logarithmus, wobei n := log 2 #G + die Binärlänge der Gruppenordnung ist und p der größte Primteiler von #G. Die Laufzeitabschätzung ergibt sich im wesentlichen aus der Tatsache, dass wir wegen d = p e... pe r r genau e e r log 2 d + = n diskrete Logarithmen in den entsprechenden zyklischen Untergruppen von G mit Primzahlordnung über den Algorithmus von Pollard berechnen müssen. Jede solche Berechnung benötigt wenn p der größte Primteiler von d ist erwartungsgemäß O( p) Gruppenoperation. Damit ergibt sich der Anteil von O(n p) Gruppenoperationen. 3.8 Index-Kalkül für den diskreten Logarithmus in Z p In diesem Abschnitt lernen wir einen alternativen Algorithmus zur Bestimmung des diskreten Logarithmus kennen: den Index-Kalkül. Wir werden sehen, dass dieser Algorithmus weniger generisch ist als diejenigen Algorithmen, die wir bisher kennengelernt haben. Jedoch kann Index-Kalkül auch nicht in einer beliebigen zyklischen Gruppe angewandt werden. Wir werden ihn hier am Beispiel der zyklischen Gruppe Z p kennenlernen. Wir verzichten in diesem Abschnitt auf eine formelle Beschreibung des Algorithmus und formulieren die wesentlichen algorithmischen Ideen innerhalb der folgenden Bemerkung: Bemerkung Wie schon bei Dixon s Zufallsquadraten betrachten wir eine Faktorbasis {p,..., p h } von Primzahlen kleiner-gleich einer vorgegebenen Zahl B. Sei G := Z p = z und x G. In einem ersten, von x unabhängigen Schritt, wählen wir zufällige Exponenten e {0,..., p 2} und prüfen, ob z e mod p sich über der Faktorbasis {p,..., p h } faktorisieren lässt. Ist dies nicht der Fall, so verwerfen wir z e. Anderenfalls erhalten wir z e p α... pα h h mod p e α dlog z p α h dlog z p h mod p. Von diesen Relationen sammeln wir so viele, dass wir das entsprechende Gleichungssystem modulo p in den Unbestimmten dlog z p,...,dlog z p h eindeutig lösen können. Dafür genügen in der Regel ein wenig mehr als h solcher Relationen, z.b. h + 0. Wir wollen das zu lösende Gleichungssystem im folgenden mit A x bmod p bezeichnen. Wir müssen die Koeffizientenmatrix A für das Gleichungssystems aus h Gleichungen in den Unbestimmten dlog z p,...,dlog z p h aufbauen derart, dass das Gleichungssystem eine eindeutig bestimmte Lösung besitzt. Wir wählen dazu jeweils h der berechneten Gleichungen in dlog z p,...,dlog z p h aus und prüfen, ob deta invertierbar modulo p ist, d.h. ob ggt(deta, p ) =. Ist letztere Bedingung erfüllt, so besitzt A x bmod p eine eindeutig bestimmte Lösung x, deren Komponenten dann gerade die Werte für dlog z p,...,dlog z p h liefern. Ist nun ein passendes (h h)-gleichungssystem der Form A x bmod p gefunden, so versuchen wir die Lösung schlicht mit Gauß-Elimination zu berechnen. Dann gibt es zwei Möglichkeiten: Entweder, wir können alle erforderlichen Divisionen modulo p durchführen und das Gleichungssystem erfolgreich lösen, oder wir stoßen auf ein Element amod p, dass wir invertieren müssten, es aber nicht können, da es nicht teilerfremd zu p ist. Dann berechnen wir d := ggt(a, p ) und schreiben p in der Form
50 48 KAPITEL 3. DISKRETE LOGARITHMEN p = m d k, wobei wir o.e. ggt(m,d) = annehmen wollen (sind m und d nicht teilerfremd aber d m, so haben wir wiederum einen echten d Teiler von d und m gefunden, der sich durch sukzessive Division in beiden Faktoren abseparieren lässt, so dass wir letztendlich eine Darstellung von p der Form m d n... dn m m mit paarweise teilerfremden Faktoren erhalten). Dann betrachten wir das Gleichungssystem einmal modulo m und einmal modulo d k und versuchen zu jedem dieser Teilsysteme wieder eine Lösung über Gauß-Elimination zu finden. Gelingt dieser Ansatz, so können wir anschließend aus den Lösungen für die Teilsysteme wegen ggt(m, d) = mit Hilfe des Chinesischen Restsatzes.27 die Lösung modulo p berechnen. Wir diskutieren nun zunächst den Fall, dass d k eine Primpotenz ist, d.h. wie wir die Lösung des Gleichungssystems A x bmod p e i für eine Primpotenz p e i mit p e i p berechnen können. Dazu geht man für j =,...,e wie folgt vor: Man berechnet zunächst eine Lösung x 0 von A x bmod p j i, d.h. A x 0 = b + p j i y 0 für einen ganzzahligen Vektor y 0 über Gauß-Elimination (beachte, dass dies im Fall j = möglich ist, da p i prim ist für j > können wir, wie wir unten sehen werden, diese Lösung als bereits gegeben ansehen). Dann berechnet man eine Lösung x von A x y 0 mod p i, d.h. A x = y 0 + p i y (dies ist immer möglich, da p i prim ist). Dann gilt A (x 0 p j i x ) = b + p j i y 0 p j i y 0 p j+ i y =. Starten wir also mit j =, so finden wir i = p 2 i. Iteration des Verfahrens liefert schließlich die gesuchte Lösung modulo p e i. Ist d k keine Primpotenz, so gehen wir ganz analog vor. Der störende Eintrag amod p, den wir zuvor wegen ggt(a, p ) = d nicht invertieren konnten, verschwindet modulo d, so dass wir uns einfach ein neues Pivot-Element bei der Elimination suchen (ein solches muss es geben, da die Matrix A wegen ggt(deta, p ) = und d p insbesondere auch modulo d invertierbar sein muss). Generell lässt sich zeigen, dass man ein (h h)-gleichungssystem über Z N für N 2 mit O(h 3 (log 2 N) 3 ) Bit-Operationen lösen kann. Sind schließlich die Werte für dlog z p,...,dlog z p h bekannt, so berechnet man dlog z x für ein beliebiges x wie folgt: Man wählt wiederum zufällige Exponenten e {0,..., p 2} bis x z e mod p sich über der Faktorbasis {p,..., p h } faktorisieren lässt. Ist x z e p β... p β h h mod p, so folgt dlog z x = e + β dlog z p β h dlog z p h. b p j+ i y, d.h. A (x 0 p j i x ) bmod p j+ i auf die beschriebene Weise die Lösung modulo p j+ Die Laufzeit des Algorithmus beläuft sich bei geschickter Wahl von B auf O(exp(( + o()) log2 p log 2 log 2 p)) Bitoperationen. Beachte, dass die Laufzeit des Algorithmus von Pollard 3. zur Berechnung des diskreten Logarithmus in Z p durch O( p) Gruppenoperationen gegeben ist. Da es sich bei den Gruppenoperationen im wesentlichen um Multiplikationen handelt, ergibt sich ein Aufwand von etwa O( p (log 2 p) 2 ) Bitoperationen (sofern man die klassische Methode zur Multiplikation zugrundelegt). Wegen #Z p = p können wir nur dann wirklich von den Algorithmen Chinese Remaindering 3.6 und Pohlig & Hellman 3.9 profitieren, wenn p nur sehr viele kleine Primfaktoren besitzt. Wählt man nun z.b. p mit p = 2 q für eine Primzahl q, so können wir im wesentlichen nur den Algorithmus von Pollard 3. verwenden, so dass sich in der Tat wegen q p 2 O(p) eine Laufzeit von etwa O( p) Gruppenoperationen, d.h. in Z p etwa O( p (log 2 p) 2 ) Bitoperationen, ergibt. Die Funktion exp( log 2 p log 2 log 2 p)) wächst jedoch deutlich langsamer als
51 3.9. ARITHMETISCHE SCHALTKREISE 49 p (log2 p) 2, weshalb der Index-Kalkül im Spezialfall Z p eine deutlich effizientere Methode zur Berechnung des diskreten Logarithmus ist als die generischen Algorithmen, die wir in den vorhergehenden Abschnitten kennengelernt haben. 3.9 Arithmetische Schaltkreise In diesem Abschnitt wollen wir zeigen, dass die Laufzeit von Algorithmus 3.2 im Fall einer allgemeinen zyklischen Gruppe G = g, in der wir keinen Index-Kalkül 3.22 anwenden können, im wesentlichen optimal ist (Deterministische) arithmetische Schaltkreise Wir verwenden wieder die übliche Notation: G = g bezeichnet eine zyklische Gruppe der Ordnung d und p den größten Primteiler von d (er bestimmt im wesentlichen die benötigte Anzahl von Gruppenoperationen der generischen Algorithmen zur Berechnung des diskreten Logarithmus in G). Der Baby-Schritt-Riesen-Schritt Algorithmus 3.2 berechnet den diskreten Logarithmus, indem er eine Sequenz (y i ) i N von Gruppenelementen berechnet, bis eine Kollision auftritt (und berechnet mit deren Hilfe dann den diskreten Logarithmus). Alle in diesem Algorithmus ausgeführten Rechenschritte lassen sich in der Form y k := y i y ± j für i, j < k schreiben, wobei man in der Regel y 2 :=, y := g und y 0 := x setzt und x dasjenige Gruppenelement ist, dessen diskreter Logarithmus zu bestimmen ist. Eine Formalisierung dieses auf elementaren Gruppenoperationen (Multiplikation und Inversion in G) beruhenden Algorithmen-Modells ist der (deterministische) arithmetische Schaltkreis: Definition Ein (deterministischer) arithmetischer Schaltkreis ist eine endliche Sequenz C = (I,...,I l ) von Instruktionen I k = (i, j,ε) mit 2 i, j < k und ε {,}. Wir nennen l die Länge des Schaltkreises. Für eine zyklische Gruppe G = g und x G ist die Spur von C bei Eingabe (g,x) gegeben durch eine Sequenz von Elementen z 2,z,z 0,z,...,z l G, wobei z 2 :=, z := g, z 0 := x und z k := z i z ε j für k und I k = (i, j,ε). Die Spur- Exponenten sind eine Sequenz linearer Polynome τ 2,τ,τ 0,τ,...,τ l Z[t] mit τ 2 = 0, τ :=, τ 0 := t und τ k := τ i + ε τ j. Wir sagen, dass C erfolgreich ist, wenn eine Kollision z i = z j bei Eingabe (g,x) auftritt. Mit den Bezeichnungen der obigen Definition gilt: Ist x = g a und τ k = c t +b, so gilt z k (x) = g b x c = g b g a c = g c a+b = g τ k(a). Die Polynome τ j sind uns schon bei dem Algorithmus von Pollard 3. für den diskreten Logarithmus begegnet. Dort hatten wir auch diskutiert, dass manche Kollisionen nicht hilfreich sind und sich mit ihrer Hilfe der diskrete Logarithmus u.u. nicht berechnen lässt. Diese trivialen Kollisionen wollen wir ausschließen. Angenommen, der arithmetische Schaltkreis C produziert bei Eingabe (g,x = g a ) die Kollision z i (x) = z j (x). Dann gilt für die Spur-Exponenten τ i (a) τ j (a)modd, d = #G. Gilt nun aber unabhängig von x generell immer τ i τ j modd mit τ i = c t +c 0, τ j = d t +d 0, so folgt
52 50 KAPITEL 3. DISKRETE LOGARITHMEN (c d ) t + (c 0 d 0 ) 0modd. Wenn d aber das lineare Polynom (c d ) t + (c 0 d 0 ) teilt, so muss es jeden Koeffizienten teilen, insbesondere also c d. Wenn wir den diskreten Logarithmus mit Hilfe einer Kollision berechnen wollen (so wie wir es im Algorithmus von Pollard 3. tun), so müssen wir c d modulo d invertieren können. Ist jedoch d ein Teiler von c d, so kann das Vorgehen nicht zum Erfolg führen: Wir können den diskreten Logarithmus nicht berechnen. Gleiches gilt, falls q ein beliebiger Teiler der Gruppenordnung d ist: Denn erhalten wir auch in diesem Fall τ i τ j modq, so ist q ein Teiler von c d. Folglich sind c d und d nicht teilerfremd, weshalb sich c d auch in diesem Fall nicht modulo d invertieren lässt und wir den diskreten Logarithmus auf die beschriebene Weise nicht berechnen können. Wir fassen die Beobachtungen zu einer Definition zusammen: Definition Sei C ein arithmetischer Schaltkreis der Länge l, G = g, q ein beliebiger Teiler der Gruppenordnung d = #G und i, j l. Wir sagen, dass das Paar (i, j) den Teiler q respektiert, wenn τ i τ j 0modq gilt. Tritt bei Eingabe (g,x) eine Kollision y i = y j auf, so sagen wir dass diese q respektiert, wenn (i, j) q respektiert. Erhalten wir also eine Kollision z i (x) = z j (x) bei Eingabe (g,x), die q respektiert, so folgt z i (x) = g τ i(a) = g τ j(a) = z j (x), aber τ i τ j 0modq, so dass wir zumindest eine Chance haben, a über Inversion modulo d zu berechnen. Es gilt stets für q q 2 d: Falls (i, j) q respektiert, so respektiert (i, j) auch q 2. Bevor wir endlich zu interessanten theoretischen Resultaten kommen, noch eine weitere Definition: Definition Sei C ein arithmetischer Schaltkreis der Länge l, G = g, q ein beliebiger Teiler der Gruppenordnung d = #G. Die Erfolgsrate von C über G, die q respektiert, ist gegeben durch σ C,q := #{x G bei Eingabe x tritt eine Kollision auf, die q respektiert}. d Es gilt stets 0 σ C,q und für q q 2 d folgt σ C,q σ C,q2. Der Baby-Schritt-Riesen- Schritt Algorithmus 3.2 hat die Erfolgsrate σ C,d =, denn er findet immer eine (nichttriviale) Kollision, mit deren Hilfe sich der diskrete Logarithmus berechnen lässt. Lemma Sei d 2 und p e eine Primpotenz mit p e d sowie τ = c t + c 0 Z[t] mit τ 0 mod p e. Dann gilt: #{a Z d τ(a) 0mod p e } d p, d.h. das Polynom hat höchstens d p Nullstellen in Z d. Wir verzichten auf den nicht sonderlich erhellenden Beweis. Das folgende Theorem werden wir ebenfalls nicht beweisen, da sein Beweis eher technischer Natur ist. Es zeigt uns die gewünschten unteren Laufzeitschranken für generische Algorithmen zur Berechnung des diskreten Logarithmus:
53 3.9. ARITHMETISCHE SCHALTKREISE 5 Theorem Sei G = g eine zyklische Gruppe der Ordnung d und q := p e eine Primpotenz mit q d. Sei ferner C ein arithmetischer Schaltkreis über G der Länge l und σ C,q seine Erfolgsrate über G, die q respektiert. Dann gilt: (i) l 2 σ C,q p 3 (ii) Ist n := log 2 d + die Binärlänge der Gruppenordnung von G und σ C,d =, so gilt für d 3: l n 2 2. (iii) Aus (i) und (ii) erhalten wir: Ist p der größte Primteiler von d, e die Vielfachheit von p in d, d.h. p e d aber p e+ d, so hat jeder arithmetische Schaltkreis C über G mit σ C,p e = eine Länge l max{ 2 p 3,n/2 2}. Sind wir jedoch genau, so müssen zugeben, dass auch der Algorithmus von Pollard 3. nicht in das Algorithmen-Modell des arithmetischen Schaltkreises passt, denn es werden Zufallswahlen im Algorithmus gemacht. Die zufällige Wahl von Werten ist im Modell des (deterministischen) arithmetischen Schaltkreises nicht vorgesehen. Wir werden im nächsten Abschnitt sehen, dass wir ruhig zufällige Wahlen in unserem Rechenmodell zulassen können: Die untere Schranke für die generischen Algorithmen zur Berechnung des diskreten Logarithmus bleibt weiterhin gültig Probabilistische arthmetische Schaltkreise Wir werden nun eine weitere Operation innerhalb eines Schalkreises erlauben: Unsere Schaltkreise dürfen von nun an auch einen Bit-Sring der Form b = (b,...,b r ) {0,} r benutzen, um Rechenoperationen der Form y k := y b j i für ein i < k und j r auszuführen. Dieser Rechenschritt erlaubt im wesentlichen die Simulation der Wahl eines zufälligen Exponenten e für ein Gruppenelement x G zur Berechnung von x e (durch geschickte Kombination solcher Rechenschritte lassen sich derartige Zufallselemente berechnen). Für die entsprechenden Spur-Exponenten gilt dann τ k = b j τ i. Definition Ein probabilistischer arithmetischer Schaltkreis ist ein Paar der Form C = (C r,u), wobei u eine Wahrscheinlichkeitsverteilung auf {0,} r ist und C r ein arithmetischer Schaltkreis ist, in dem zusätzlich die Operation y k := y b j i für ein i < k und j r erlaubt ist. Die Länge von C ist die Anzahl der ausgeführten Gruppenoperationen. Operationen der Form y k := y b j i (also die zufälligen Operationen) werden dabei nicht mitgezählt. Ist b {0,} r gegeben, so erhalten wir einen (festen) arithmetischen Schaltkreis C (b) der Länge l, indem wir für alle Operationen y k = y b j i den speziellen Wert b j {0,} einsetzen. Für einen Teiler q von d = #G, G = g eine zyklische Gruppe, ist die Erfolgsrate von C, die q respektiert, gegeben durch σ C,q := u(b) σ C (b),q, b {0,} r d.h. σ C,q ist die durchschnittliche Erfolgsrate von C (b).
54 52 KAPITEL 3. DISKRETE LOGARITHMEN Mit dieser neuen Bezeichnungsweise erhalten wir: Theorem Sei G = g eine zyklische Gruppe der Ordnung d, q := p e eine Primpotenz mit q d, d = #G. Sei ferner C ein probabilistischer arithmetischer Schaltkreis über G der Länge l und σ C,q seine Erfolgsrate, die q respektiert. Dann gilt: l 2 σ C,q p 3.
55 Kapitel 4 Einige Kryptosysteme 4. Vorbemerkungen In diesem Kapitel werden einige der bekanntesten Kryptosysteme vorgestellt, darunter: Rijndael, RSA, das sogenannte Diffie-Hellman-Schlüsselaustauschverfahren und das darauf beruhende Kryptosystem von ElGamal. 4.. Symmetrische und Asymmetrische Kryptosysteme Man unterscheidet grob sogenannte symmetrische und asymmetrische Kryptosysteme. Symmetrische Kryptosysteme zeichnen sich dadurch aus, dass Sender und Empfänger den gleichen privaten (d.h. geheimen) Schlüssel benutzen, um Nachrichten zu ver- bzw. zu entschlüsseln. Im Gegensatz dazu benötigt in sogenannten asymmetrischen Kryptosystemen (oder auch Public Key Kryptosystemen) nur der Empfänger einen geheimen Schlüssel. Ein offensichtlicher Nachteil symmetrischer Kryptosysteme ist damit die Tatsache, dass sich die Parteien, die miteinander kommunizieren möchten, auf einen gemeinsamen (geheimen) Schlüssel zum Ver- und Entschlüsseln von Nachrichten einigen müssen. Es muss eine sichere Möglichkeit gefunden werden, einen solchen Schlüssel auszutauschen. Einer der Vorteile symmetrischer Kryptosysteme ist dagegen i.a. ihre hohe Effizienz. So kann z.b. das symmetrische Kryptosystem Rijndael (siehe Seite 55) effizient in Hardware implementiert werden (und wurde von seinen Erfindern auch unter diesem Aspekt entwickelt). Ein weiterer Vorteil von symmetrischen Kryptosystemen ist die Tatsache, dass sich der Empfänger einer verschlüsselten Nachricht, wenn er diese mit seinem geheimen Schlüssel entschlüsseln konnte, über die Identität des Absenders weitestgehend im Klaren sein kann (es sei denn, der geheime Schlüssel ist unbemerkt in die Hände böswilliger Dritter gelangt, die ihn nun dazu verwenden, Falschmeldungen oder Fehlinformationen etc. an den Empfänger zu senden). Bei asymmetrischen Kryptosystemen, in denen jede beliebige Person mit einem öffentlichen Schlüssel Nachrichten an den Empfänger verschlüsseln und an ihn versenden kann, ist der Aspekt der Authentifizierung des Absenders in der Regel nicht gegeben. Ein Beispiel für ein 53
56 54 KAPITEL 4. EINIGE KRYPTOSYSTEME solches asymmetrisches Kryptosystem, in dem eine zusätzliche Authentifizierung notwendig wird, ist das RSA-Verfahren (siehe Seite 60). Sowohl symmetrische als auch asymmetrische Kryptosysteme werden in der Praxis verwendet. Häufig geht man so vor, dass man ein asymmetrisches Kryptosystem dazu verwendet, einen gemeinsamen geheimen Schlüssel für ein symmetrisches Kryptosystem sicher unter den kommuzierenden Parteien auszutauschen. Anschließend wird dann die Kommunikation über (effizientere) symmetrische Kryptosysteme geführt Alice, Bob und Eve Sender und Empfänger werden traditioneller Weise stets mit den Namen Alice und Bob versehen. Alice und Bob kommunizieren über einen offenen Kanal (z.b. das Internet) und Bob möchte Alice eine Nachricht übersenden derart, dass eine dritte, böswillige Person Eve, die den Kanal abhört, die Nachricht nicht verstehen kann. Die bezeichnende Vorgehensweise ist dann die folgende: Bob möchte Alice eine Nachricht x schicken. Dazu benutzt Bob eine Verschlüsselungsfunktion enc K (Encryption), mit deren Hilfe er ein y := enc K (x) erzeugt. K bezeichne dabei den Schlüssel, den Bob zum Verschlüsseln der Nachricht benutzt. Dann schickt Bob y an Alice und (vorausgesetzt die Nachricht y wird bei der bloßen Übermittlung nicht verfälscht) Alice kann dann mit Hilfe einer Funktion dec S (Decryption) aus y den Klartext x = dec S (y) berechnen, wobei S ihren privaten Schlüssel zum Entschlüsseln von Nachrichten bezeichnet. Schematisch ergibt sich also der folgende Ablauf: Bob berechnet y = enc K (x) Bob sendet y Eve hört mit Alice berechnet x = dec S (y) Folgende Voraussetzungen sollte man vernünftigerweise verlangen:. Bob kann die Nachricht effizient (d.h. in polynomieller Zeit in der Codierungslänge der Eingabe für seine Verschlüsselungsfunktion dec K ) verschlüsseln 2. Eve kann den Wert von y = enc K (x) zwar abhören, sollte jedoch nicht in der Lage sein, ohne Kenntnis der Funktion dec S (die von Alice geheim gehalten werden muss genauer gesagt muss Alice ihren privaten Schlüssel S geheim halten) x aus y in polynomieller Zeit berechnen zu können 3. Alice kann mit Hilfe von dec S effizient aus y den Wert x berechnen Was genau unter effizient zu verstehen ist, was es bedeutet, dass Eve die Nachricht nicht in polynomieller Zeit entschlüsseln können sollte und vieles mehr wird später genauer formalisiert werden Block Ciphers und Stream Ciphers Neben dem großen Unterschied symmetrische versus asymmetrische Kryptosysteme unterscheidet man zwischen sogenannten Block Ciphers und Stream Ciphers. Wir werden im folgenden nur Block Ciphers betrachten, d.h. wir gehen davon aus, dass eine zu verschlüsselnde
57 4.2. RIJNDAEL 55 Nachricht x bereits in Blöcke x = x,x 2,...,x i,x i,x i+,...,x l einer festen Länge n unterteilt wurde und beschäftigen uns nur damit, wie man einen festen Block x i der Länge n verschlüsseln kann. Als Stream Ciphers werden Kryptosysteme bezeichnet, die sozusagen on the fly und ohne Kenntnis der Länge der zu verschlüsselnden Nachricht den Datenstrom verarbeiten. Bei Block Ciphers gibt es verschiedene Möglichkeiten, die verschlüsselten Daten zu erzeugen: Electronic Codebook (ECB): Die Nachricht wird schlicht blockweise verschlüsselt: x = x,x 2,...,x i,x i,x i+,...,x l enc K (x) = enc K (x ),...,enc K (x i ),enc K (x i ),enc K (x i+ ),...,enc K (x l ) Diese Vorgehensweise ist gefährlich, wenn standardisierte Datenformate übertragen werden und Eve z.b. den Block mit den für sie relevanten Informationen explizit ausmachen und angreifen kann. Cipher Block Chaining (CBC): Es wird ein Startblock z 0 der Länge n vorgewählt und der i-te Block wird vermöge der Vorschrift z i := enc K (x i z i ) verschlüsselt. Hier ist die Gefahr der Fehlerfortpflanzung jedoch gegeben ebenso wie bei den folgenden beiden Methoden. Output Feedback (OFB): Es wird ein Startblock x 0 der Länge n vorgewählt und der i-te Block wird vermöge der Vorschrift verschlüsselt. z i := x i enc K (x i ) Auto-Key (AU): Man verwendet den Klartext selbst als Schlüssel, d.h. für alle i Rijndael z := enc K (x ) und z i := enc xi (x i ) Das Kryptosystem Rijndael ist nach seinen Erfindern Vincent Rijmen und Joan Daemen benannt bzw. sein Name ist eine Fusion aus den Namen der beiden Erfinder. Es wurde im Oktober 2000 zum sogenannten Advanced Encryption Standard erklärt. Rijndael ist ein symmetrisches Kryptosystem, d.h. Ver- und Entschlüsselung von Nachrichten wird mit dem gleichen Schlüssel erledigt. Mit anderen Worten im Rahmen unseres Modells: Wir haben enc K = dec S mit K = S und K = S wird sowohl von Alice als auch von Bob geheimgehalten. Um die eigentliche Verschlüsselungsroutine beschreiben zu können, bedarf es einiger algebraischer Vorbereitungen.
58 56 KAPITEL 4. EINIGE KRYPTOSYSTEME 4.2. Algebraische Grundlagen Der Klartext, den es mit Rijndael zu verschlüsseln gilt, wird zunächst in Vierer-Blöcke [a 00,a 0,a 20,a 30 ], [a 0,a,a 2,a 3 ],... unterteilt, wobei jedes der a i j ein 8-Bit Byte der Form (i j) (i j) a i j = (b 7,...,b 0 ) {0,} 8 codiert. Um die Notation nicht unnötig zu verkomplizieren, schreiben wir im folgenden einzelne Bytes in der Form a = (a 7,...,a 0 ),b = (b 7,...,b 0 ) {0,} 8. Die grundlegenden Operationen, die auf solchen Bytes durchgeführt werden, sind Addition und Multiplikation. Die Addition zweier Bytes beschränkt sich auf das komponentenweise exklusive Oder xor. Zur Multiplikation zweier solcher Elemente werden diese als Polynome über dem Körper F 2 8 = F 256 = F 2 [x]/(m) für das irreduzible Polynom m := x 8 + x 4 + x 3 + x + F 2 [x] vom Grad 8 interpretiert: Das Byte a = (a 7,...,a 0 ) repräsentiert das Polynom a 7 x a x + a 0 F 2 [x]. Zur Multiplikation zweier Bytes a und b multipliziert man schlicht die durch a und b beschriebenen Polynome in F 2 [x] und erhält auf diese Weise ein Polynom vom Grad höchstens 4, welches sich dann mit Hilfe von Division mit Rest durch das irreduzible Polynom m vom Grad 8 auf ein Polynom in F 2 [x]/(m) reduzieren lässt. Letzteres Polynom kann dann wieder problemlos als Element von {0,} 8 aufgefasst werden. Das multiplikative Inverse eines Bytes a erhält man, indem man das zu a gehörige Polynom in F 256 invertiert. Hierzu verwendet man den Erweiterten Euklidischen Algorithmus. Zusätzlich wird die Inversenbildung auf alle Elemente von F 256 fortgesetzt, indem man schlicht das Inverse des 0-Bytes als das 0-Byte selbst definiert. Neben dem Körper mit 256 Elementen betrachtet man als weitere algebraische Struktur den Ring R := F 2 [x]/(x 8 + ). R ist kein Körper, da (x + ) 8 = x 8 + in F 2 [x] und damit x 8 + kein irreduzibles Polynom über F 2 [x] ist. Ein Byte a wird wieder als Polynom der Form a 7 x a x + a 0 modx 8 + R aufgefasst. Multiplikation und Addition von Polynomen in R sind in der üblichen Weise definiert (nur dass eben nicht jedes Element ein multiplikatives Inverses besitzt, sondern nur diejenigen Elemente von R, deren Repräsentanten teilerfremd zu x 8 + sind). R zeichnet sich jedoch dadurch aus, dass die Multiplikation zweier Elemente a,b R sehr effizient durchgeführt werden kann. Man berechnet das Produkt von a und b interpretiert als Polynome in F 2 [x] und reduziert das Ergebnis wie üblich modulo x 8 +. Die Reduktion modulo x 8 + ist denkbar einfach: Es gilt x i = x q 8+r = (x 8 ) q x r mit q N, 0 r < 8 und damit x i x r = x r ((x 8 ) q ) = x r (x 8 + ) q in F 2 [x]. Wir erhalten also: x i x imod8 modx 8 +. Schreibt man nun das Produkt zweier Polynome a b = c in der Form c = c x 8 + c 0, wobei c 0,c Polynome vom Grad höchstens 7 sind, so beschränkt sich die Reduktion modulo x 8 + auf die Addition der beiden Polynome c 0 und c. In Rijndael beschränken sich Multiplikationen im wesentlichen auf Multiplikationen mit fest vorgegebenen Polynomen, die dann so gewählt werden, dass sie sowohl in F 256 als auch in R invertierbar sind (andernfalls wäre die Entschlüsselung einer Botschaft anschließend u.u. problematisch). Zu Beginn hatten wir bemerkt, dass der zu verschlüsselnde Klartext zunächst in eine Folge von Blöcken der Form [a 00,a 0,a 20,a 30 ], [a 0,a,a 2,a 3 ],... unterteilt wird. Desweiteren
59 4.2. RIJNDAEL 57 haben wir mit dem Körper F 256 und dem Ring R diejenigen algebraischen Strukturen kennengelernt, in denen in Rijndael Operationen auf 8-Bit Bytes der Form a i j = (b (i j) (i j) 7,...,b 0 ) {0,} 8 realisiert werden. Neben der Tatsache, dass man einzelne Bytes als Polynome interpretiert, werden auch die oben angedeuteten 4er-Blöcke der Form [a 0 j,a j,a 2 j,a 3 j ], j N als Polynome a 3 j y 3 + a 2 j y 2 + a j y + a 0 j S := F 256 [y]/(y 4 + ) aufgefasst. Multiplikation und Addition von Polynomen in S sind wiederum wie üblich definiert und wir erhalten wieder y i y imod4 mody 4 +, was die Multiplikation wie schon im Fall des Rings R denkbar einfach macht Einiges zur Spezifikation Bevor wir zu einigen Details der Verschlüsselung von Nachrichten mit Rijndael kommen noch einige Bemerkungen zur Spezifikation: Der zu verschlüsselnde Klartext wird wie oben bereits erwähnt in Teilstücke der Form [a 00,a 0,a 20,a 30 ], [a 0,a,a 2,a 3 ],... zerlegt. Diese Teilstücke werden nun in Blöcken der Form a 00 a 0 a 02 a 0 a a 2 a 20 a 2 a 22 a 30 a 3 a 32 verarbeitet, wobei die Spalten eines Blocks der obigen Form gerade aus den bereits im vorherigen Abschnitt betrachten Teilstücken von jeweils 4 8-Bit-Bytes bestehen. Rijndael erlaubt dabei, dass die obigen Blöcke 4, 6 oder 8 Spalten (die sogenannten Blocklänge) enthalten. Zu jedem solchen Block wird ein entsprechender Schlüssel k 00 k 0 k 02 k 0 k k 2 k 20 k 2 k 22 k 30 k 3 k 32 gleicher Gestalt erzeugt (für Details zur zugelassenen Wahl von Blocklängen verweisen wir auf [7] oder [8]). Im folgenden wollen wir als eine der möglichen zugelassenen Blocklängen den Wert 4 zugrundelegen, d.h. wir haben es mit Blöcken der Form zu tun. a 00 a 0 a 02 a 03 a 0 a a 2 a 3 a 20 a 2 a 22 a 23 a 30 a 3 a 32 a Verschlüsselung von Nachrichten mit Rijndael Die Verschlüsselung eines Klartextes mit Rijndael erstreckt sich über mehrere Runden (für Details zu empfohlenen Anzahlen von Runden verweisen wir auf [7] oder [8]). Jede Runde
60 58 KAPITEL 4. EINIGE KRYPTOSYSTEME besteht aus vier grundlegenden Operationen, die nacheinander in der folgenden Reihenfolge abgearbeitet werden:. ByteSub (nichtlineare Operation auf einzelnen Bytes) 2. ShiftRow (zyklischer Shift der Zeilen eines Blocks) 3. MixColumn (Operation auf den Spalten eines Blocks) 4. AddRoundKey (Addition des Rundenschlüssels mittels exklusivem Oder) Zu. Die Operation ByteSub wird auf einzelnen 8-Bit-Bytes a = (a 7,...,a 0 ) {0,} 8 durchgeführt: a :=a in F 256 a :=t a in R für ein invertierbares Polynom t vom Grad 7 a :=a +t 0 in F 2 [x] für ein Polynom t 0 vom Grad 7 Die letzten beiden Operationen können als affine lineare Transformation interpretiert werden, wenn man die Koeffizientenvektoren der betrachteten Bytes zugrundelegt: Die Operation a := t a + t 0 wird in der Form c := A a + b für eine 8 8 Matrix A und einen 8 Vektor b über F 2 implementiert. ByteSub überführt insgesamt Blöcke der Form a 00 a 0 a 02 a 03 a 0 a a 2 a 3 a 20 a 2 a 22 a 23 a 30 a 3 a 32 a 33 in Blöcke der Form c 00 c 0 c 02 c 03 c 0 c c 2 c 3 c 20 c 2 c 22 c 23 c 30 c 3 c 32 c 33 wobei die Operationen selbst auf jedes einzelne Byte a i j angewandt werden und dieses in das entsprechende Byte c i j überführen. Damit ist ByteSub eine hochgradig nichtlineare Operation auf den jeweils zu betrachtenden Blöcken dar. Zu 2. Die Operation ShiftRow shiftet die Zeilen eines jeden Blocks (man stelle sich vor, dass zuvor auf den angegebenen Block die Operation ByteSub angewandt wurde) a 00 a 0 a 02 a 03 a 0 a a 2 a 3 a 20 a 2 a 22 a 23 a 30 a 3 a 32 a 33 zyklisch. Die erste Zeile wird nicht verschoben, für die zweite, dritte und vierte Zeile werden spezielle Werte s 2,s 3,s 4 empfohlen (siehe [7]). Im Fall s 2 =, s 3 = 2 und s 4 = 3 ergibt sich der Block a 00 a 0 a 02 a 03 a 3 a 0 a a 2 a 22 a 23 a 20 a 2 a 3 a 32 a 33 a 30
61 4.2. RIJNDAEL 59 Damit bewirkt die Operation ShiftRow bei einer hohen Anzahl von insgesamt durchgeführten Runden eine hohe Permutation der Komponenten eines Blockes, die durch die anschließende Anwendung der Operation MixColumn noch weiter verstärkt wird. Zu 3. Die Operation MixColumn wird nun auf den Spalten eines Blocks (auf den zuvor die Operationen ByteSub und ShiftRow angewandt wurden) a 00 a 0 a 02 a 03 a 0 a a 2 a 3 a 20 a 2 a 22 a 23 a 30 a 3 a 32 a 33 durchführt. Technisch wird MixColumn realisiert, indem jede Spalte als entsprechendes Polynom a 3 j y 3 + a 2 j y 2 + a j y + a 0 j S = F 256 [y]/(y 4 + ) aufgefasst wird und mit einem in S invertierbaren Polynom c multipliziert wird. Auch diese Operation kann mit Hilfe einer speziellen Matrixmultiplikation realisiert werden. Zusammen mit ShiftRow bewirkt MixColumn eine wilde Permutation der Blöcke auf Zeilen und Spalten. Zu 4. Im Rahmen der Operation AddRoundKey wird nun zu jedem Block ein Schlüsselblock (der sogenannte Rundenschlüssel) gleichen Formats mit Hilfe des exklusiven Oders auf allen Komponenten addiert: a 00 k 00 a 0 k 0 a 02 k 02 a 03 k 03 a 0 k 0 a k a 2 k 2 a 3 k 3 a 20 k 20 a 2 k 2 a 22 k 22 a 23 k 23 a 30 k 30 a 3 k 3 a 32 k 32 a 33 k 33 Damit ist die Operation AddRoundKey zu sich selbst invers. Die Rundenschlüssel werden aus dem privaten Schlüssel generiert, der von den Benutzern des Systems geheim gehalten wird. Der geheime Schlüssel S besteht aus einem Block der Form S = s 00 s 0 s 02 s 03 s 0 s s 2 s 3 s 20 s 2 s 22 s 23 s 30 s 3 s 32 s 33 Dieser Schlüssel ist frei wählbar, dagegen die Rundenschlüssel nicht: Sie werden auf der Grundlage von S mit ähnlichen Operationen wie den in der Verschlüsselung verwendeten Operationen erzeugt. Für jedes s i j F 256 gibt es 256 verschiedene Wahlmöglichkeiten. Damit beläuft sich die Anzahl der möglichen privaten Schlüssel auf = In der letzten Runde wird die Operation MixColumn nicht durchgeführt. Rijndael gilt zum jetzigen Zeitpunkt als resistent gegen alle derzeitig bekannten Angriffe.
62 60 KAPITEL 4. EINIGE KRYPTOSYSTEME 4.3 Das RSA-Verfahren Das RSA-Kryptosystem ist nach seinen Erfindern R. L. Rivest, A. Shamir und L. M. Adleman benannt. Es handelt sich bei diesem Verfahren um ein asymmetrisches oder Public-Key- Kryptosystem. Der Ablauf des RSA-Verfahrens wird wieder in unserem Model als Kommunikation zwischen Alice und Bob formuliert. Wenn Bob an Alice eine mit RSA verschlüsselte Nachricht, die wir uns als natürliche Zahl vorstellen, schicken möchte gehen beide nach dem folgenden Protokoll vor: Protokoll 4.. (Das RSA-Verfahren) Gegeben sei ein Sicherheitsparameter n N. Bevor Alice und Bob miteinander kommunizieren können, trifft Alice die folgenden Vorbereitungen: () Alice wählt zufällig zwei verschiedene Primzahlen p und q im Intervall [ 2 n 2, 2 n 2 ]. (2) Sie berechnet N := p q und ϕ(n) = (p ) (q ). (3) Dann wählt sie e R {2,...,ϕ(N) 2} mit ggt(e,ϕ(n)) =. (4) Alice bestimmt d mit e d modϕ(n). (5) Schließlich veröffentlicht sie K := (N, e) als ihren öffentlichen Schlüssel und hält das Paar S := (N, d) geheim. (6) Die Werte p, q und ϕ(n) löscht Alice. Angenommen Bob möchte an Alice die Nachricht x mit x {0,...,N } schicken: (7) Bob berechnet y := x e modn und schickt y an Alice. Alice kann dann die Nachricht y wie folgt entschlüsseln: (8) Alice berechnet x := y d modn. Dann gilt x = x. Beweis. (Korrektheit) Wir müssen x = x zeigen. Ist x Z N, so folgt die Behauptung unmittelbar aus dem Satz von Euler.55 und e d modϕ(n), denn ist e d = k ϕ(n) für ein k N, so folgt: x x e d x e d x (x ϕ(n) ) k x x xmodn. Für ein allgemeines x Z N gilt ebenso x e d x e d x x k ϕ(n) x x k (p ) (q ) xmodn. Wir erhalten also x e d (x (p ) ) k (q ) x xmod p und x e d (x (q ) ) k (p ) x xmodq, wobei die Identitäten für x 0mod p und x 0modq trivialerweise richtig sind und für x 0mod p und x 0modq aus dem kleinen Satz von Fermat.56 folgen. Da p und q teilerfremd sind und beide x e d x teilen, folgt auch N x e d x, also x e d x 0modN und damit die Behauptung.
63 4.3. DAS RSA-VERFAHREN Der Angriff von Wiener auf RSA In Protokoll 4. zum RSA-Verfahren ist Alice in Schritt (3) so vorgegangen, dass sie zunächst den öffentlichen Exponenten e R {2,...,ϕ(N) 2} gewählt und dann in Schritt (4) den privaten Exponent d als modulares Inverses von e modulo ϕ(n) bestimmt hat. Bei einer zufälligen Wahl von e auf diese Weise, werden sowohl e als auch d erwartungsgemäß sehr große Zahlen sein. Bob, der Nachrichten verschlüsseln und an Alice verschicken möchte, benutzt dann den öffentlichen Schlüssel e, während Alice die empfangenen Nachrichten mit Hilfe von d entschlüsselt. Stellen wir uns vor, Alice wäre nichts weiter als eine personifizierte Smart-Card mit sehr geringer Rechenkapazität. Dann könnte Alice auf die Idee kommen, zuerst ein sehr kleines d zu wählen und dann den Wert von e entsprechend als modulares Inverses von d modulo ϕ(n). Auf diese Weise hätte sich Bob mit einem potentiell sehr großen Exponenten e zum Verschlüsseln einer Nachricht abzuquälen und Alice hätte mit einem kleinen Wert für d nur vergleichsweise wenige Operationen zum Entschlüsseln einer Nachricht auszuführen. Geht Alice jedoch auf die beschriebene Weise vor und wählt sie d < 3 N 4, so werden wir im folgenden zeigen, dass Eve mit Hilfe der im Abschnitt über Kettenbrüche (siehe Seite 2) erarbeiteten Theorie den privaten Schlüssel d von Alice in polynomieller Zeit berechnen kann. Lemma 4.2. Es sei N = p q, wobei p,q Primzahlen seien mit q < p < 2 q. Weiter seien e,d Z ϕ(n) mit e d modϕ(n) und k N mit e d = k ϕ(n). Schließlich sei d < 3 N 4. Dann gilt: e < N k d 2 d 2. Beweis. Es gilt N ϕ(n) = p q (p ) (q ) = p + q. Es gilt q 2 < p q = N, also q < N und p < 2 q < 2 N. Damit folgt: N ϕ(n) < 3 N. Nun gilt { }} { e N k = e d k N e d k ϕ(n) k N + k ϕ(n) = d N d N d k (N ϕ(n)) = < 3 k N = 3 k N d N d d N Wegen k ϕ(n) = e d < e d und e < ϕ(n) folgt k < d, also k < 3 N 4. Wir erhalten: = e N k < N 4 d d N = d N 4 und wegen N 4 > 3 d gerade d N 4 womit die Behauptung bewiesen ist. < 3 d 2 < 2 d 2,
64 62 KAPITEL 4. EINIGE KRYPTOSYSTEME Wegen e d k ϕ(n) = folgt, dass ggt(k,d) =. Theorem.50 liefert nun in der Situation des obigen Satzes, dass k d eine Konvergente der Kettenbruchentwicklung von e N ist. Da die Konvergenten sowohl effizient berechnet werden können und es nur O(log 2 (N)) viele solcher Konvergenten von e N gibt (letzteres folgt aus der Tatsache, dass der Erweiterte Euklidische Algorithmus.5 bei Eingabe e,n nach Theorem.7 nur O(log 2 N) Wiederholungen von Schritt (2) benötigt), kann Eve damit durch Ausprobieren aller Konvergenten in polynomieller Zeit den privaten Schlüssel d von Alice berechnen. Eve kann sogar noch mehr als nur d zu berechnen: Sie kann die Zahl N in polynomieller Zeit faktorisieren. Betrachte dazu das Polynom f (x) := x 2 (p + q) x + p q. Dieses Polynom besitzt genau zwei Nullstellen, nämlich x = p und x 2 = q. Mit Hilfe der aus der Schule bekannten Formel findet sich eine geschlossene Darstellung dieser beiden Lösungen über x /2 = p + q 2 ± (p + q) 2 4 p q = p + q 2 (p + q) 2 ± N 4 Mit anderen Worten: Kennt Eve den Wert p+q, so kann sie in polynomieller Zeit die Nullstellen von f (x), d.h. p und q, berechnen und die Zahl N faktorisieren. Eine Darstellung für die Summe p + q findet sie jedoch in der obigen Situation sehr leicht: Wegen e d = k ϕ(n) kennt sie ϕ(n) = e d k. Wegen ϕ(n) = (p ) (q ) = p q p q+ = N (p+q)+ erhält sie p + q = N ϕ(n) +. Eve ist N ϕ(n) + in der Situation von oben sehr wohl bekannt, weshalb sie durch Einsetzen des Wertes in ( ) die Primfaktoren p und q von N leicht bestimmen kann. 4.4 Das Schlüsselaustauschverfahren von Diffie und Hellman Um einen Schlüsselaustausch für ein symmetrisches Kryptosystem wie z.b. Rijndael (siehe Seite 55) zu ermöglichen, kann man sich z.b. des hier diskutierten Protokolls von W. Diffie und M. E. Hellman bedienen. Für die im folgenden ganz allgemein gehaltene endliche zyklische Gruppe G = g der Ordnung d = #G sind diverse Kandidaten denkbar: Die zyklische multiplikative Gruppe Z p der Einheiten modulo einer Primzahl p, die zyklische multiplikative Gruppe eines beliebigen Körpers F q oder etwa zyklische Untergruppen elliptischer Kurven. Protokoll 4.3. (Das Schlüsselaustauschverfahren von Diffie & Hellman) Sei G = g ein endliche zyklische Gruppe der Ordnung d = #G. Alice und Bob erhalten dann wie folgt einen gemeinsamen Schlüssel: () Alice wählt ein s A R {2,...,d } und sendet x := g s A an Bob. (2) Bob wählt ebenfalls ein s B R {2,...,d } und sendet y := g s B an Alice. (3) Bei Erhalt von y berechnet Alice den gemeinsamen Schlüssel K A := y s A. ( )
65 4.4. DIFFIE UND HELLMAN SCHLÜSSELAUSTAUSCHVERFAHREN 63 (4) Bei Erhalt von x berechnet Bob den gemeinsamen Schlüssel K B := x s B. Dann teilen sich Alice und Bob den gemeinsamen geheimen Schlüssel K A = K B. Beweis. (Korrektheit) Es gilt K A = y s A = (g s B ) s A = g s A s B = (g s A) s B = x s B = K B. Die Effizienz des Verfahrens ist offensichtlich: Potenzieren erledigen Alice und Bob mit Hilfe von Repeated Squaring.5. Damit sind alle Operationen in polynomieller Zeit und damit hinreichend effizient durchführbar. Bemerkung 4.4. Angenommen Eve würde den Kanal, auf dem Alice und Bob Nachrichten austauschen, abhören. Dann sind ihr neben der öffentlich bekannten Gruppe G = g auch die Werte x = g s A und y = g s B bekannt. Für Eve genügt es offensichtlich einen der beiden Werte s A oder s B ausfindig zu machen. Um aus x und g den Wert s A berechnen zu können, muss Eve dlog g x = dlog g g s A = s A berechnen, d.h. sie muss den diskreten Logarithmus von x in Basis g bestimmen. Kann Eve also das Diskrete Logarithmus Problem in G lösen, so kann sie das Diffie-Hellman-Protokoll brechen. Das Diffie-Hellman-Problem (DHP) 4.5. Eve kann das Diffie-Hellman-Problem lösen, wenn sie bei Kenntnis von G = g mit d = #G, x = g s A und y = g s B mit s A,s B {2,...,d } das Element g s A s B berechnen kann. Das diskrete Logarithmus Problem (DLP) 4.6. Eve kann das diskrete Logarithmus Problem lösen, wenn sie bei Kenntnis von G = g mit d = #G und x = g k für ein k {2,...,d } den Wert k = dlog g x berechnen kann. Die obige Bemerkung besagt also nun: DHP p DLP d.h. DHP lässt sich in Polynomialzeit auf DLP reduzieren (oder mit anderen Worten: Das Problem DHP ist nicht schwerer als das Problem DLP). Beide Probleme werden jedoch in der Regel als gleich schwer angesehen Woman-in-the-Middle Angriff Wir stellen uns nun vor, dass Eve keinesfalls nur passiv den Nachrichtenaustausch zwischen Alice und Bob abhört, sondern dass sie selbst aktiv wird. Angenommen, Alice und Bob wollen über das Diffie-Hellman-Protokoll 4.3 einen gemeinsamen geheimen Schlüssel für ein symmetrisches Kryptosystem austauschen. Eve geht nun wie folgt vor: Gegenüber Alice gibt sich Eve als Bob aus. Auf diese Weise kann sie in der Notation von 4.3 mit Alice den gemeinsamen Schlüssel g s A s E (s E bezeichne Eve s gewählten Exponenten) austauschen.
66 64 KAPITEL 4. EINIGE KRYPTOSYSTEME Gegenüber Bob gibt sich Eve als Alice aus. Auf diese Weise kann sie in der Notation von 4.3 mit Bob den gemeinsamen Schlüssel g s B s E (hier kann Eve statt s E natürlich auch einen anderen zufällig gewählten Exponenten benutzen) austauschen. Will nun Alice eine Nachricht an Bob senden, so fängt Eve die Nachricht ab. Sie entschlüsselt sie mit Hilfe des geheimen Schlüssels g s A s E und gibt die Nachricht anschließend in unter Umständen modifizierter oder verfälschter Form an Bob weiter, indem sie sie mit dem geheimen Schlüssel g s B s E verschlüsselt und an Bob weitergibt. Eve s gelungener Angriff gelangt jedoch unmittelbar ans Tageslicht, wenn es Alice gelingt, eine Nachricht direkt an Bob zu versenden, ohne dass Eve sie abfangen konnte. In diesem Fall wird Bob in der Regel nicht in der Lage sein, die von Alice erhaltene Nachricht korrekt zu entschlüsseln. Die Übertragung offensichtlich sinnloser Daten seitens Alice an Bob sollte ihn skeptisch machen. Eve ist also gezwungen, als eine Art Übersetzer zwischen Alice und Bob Synchronübersetzungen durchzuführen. Schützen können sich Alice und Bob unter anderem dadurch, dass sie vor Benutzung des Schlüssels, auf den sie sich geeinigt zu haben glauben, überprüfen, ob sie auch wirklich beide den gleichen Schlüssel erhalten haben. Sicherlich können sie ihn aber nicht frei über den Kanal kommunizieren. Ein Ausweg, der den Angriff Woman-in-the-middle unmöglich macht, ist, wenn Alice und Bob in der Lage sind, sich gegenseitig zu authentifieren (siehe Abschnitt über Identifikation und Authentifikation, Seite 8). 4.5 Das Kryptosystem von El Gamal Das von El Gamal 985 entwickelte Kryptosystem, das wir in diesem Abschnitt kennenlernen werden, basiert im wesentlichen auf dem Schlüsselaustauschverfahren von Diffie & Hellman. El Gamal schlug eine Erweiterung des Protokolls vor, die es nicht nur ermöglicht, einen geheimen gemeinsamen Schlüssel auszutauschen, sondern zusätzlich auch Nachrichten zu verbzw. entschlüsseln: Protokoll 4.7. (Das Kryptosystem von El Gamal) Sei G eine zyklische Gruppe mit erzeugendem Element g, d.h. G = g, sowie d = #G. () Alice wählt ein s A R {2,...,d } und sendet x := g s A an Bob. (2) Bob wählt ebenfalls ein s T R {2,...,d } und berechnet y := g s T (temporärer Schlüssel für einen Nachrichtenaustausch). (3) Bob möchte Alice die Nachricht m G übersenden. Er berechnet m := m x s T und sendet ( m,y) an Alice. (4) Bei Erhalt von ( m,y) berechnet Alice y s A und m = m (y s A). Beweis. (Korrektheit) Die Korrektheit folgt aus der Korrektheit des Schlüsselaustauschverfahrens von Diffie & Hellman.
67 4.6. SECRET SHARING 65 Zur Effizienz ist zu sagen, dass das Kryptosystem von El Gamal im wesentlichen die gleiche Laufzeit wie das Schlüsselaustauschverfahren von Diffie & Hellman hat. Dazu kommen eine weitere Multiplikation für Bob zum Verschlüsseln und eine Multiplikation sowie eine Inversion für Alice. All diese Operation sind in einer entsprechend gewählten Gruppe (z.b. Z p ) hinreichend effizient durchführbar. Wir werden nun zeigen, dass das Brechen von Protokoll 4.7 sich polynomiell auf das Diffie- Hellman-Problem (DHP) reduzieren lässt und umgekehrt: Satz 4.8. Unter den obigen Voraussetzungen erhalten wir: (i) Das Brechen von Protokoll 4.7 lässt sich polynomiell auf DHP reduzieren. (ii) DHP lässt sich polynomiell auf das Berechen von Protokoll 4.7 reduzieren. Beweis. Angenommen, wir können DHP in Polynomialzeit lösen. Dann können wir in der Notation von Protokoll 4.7 aus der Kenntnis von x = g s A und y = g s T den Wert g s A s T = y s A berechnen. Da die Inversion von y s A in Polynomialzeit durchführbar ist, können wir den Klartext m aus m ebenso wie Alice berechnen und damit das Protkoll brechen. Können wir umgekehrt bei Kenntnis von x = g s A, y = g s T und m = m x s T = m g s A s T den Wert m in Polynomialzeit ermitteln, so erhalten wir den gemeinsamen Schlüssel g s A s T von Alice und Bob, indem wir schlicht m mit dem Inversen von m multiplizieren. Damit haben wir aber DHP gelöst. 4.6 Secret Sharing Angenommen, n Personen {,..., n} möchten ein Geheimnis s untereinander aufteilen derart, dass sie nur alle gemeinsam das Geheimnis enthüllen können, aber keine echte Teilmenge der Gruppe. Eine Möglichkeit, ein Geheimnis auf diese Weise auf n Personen zu verteilen, ist die folgende: Wir fassen s als Element des Körpers Z p für eine große Primzahl p (z.b Bit) auf. Dann gehen wir wie folgt vor: () Wir berechnen n Zufallswerte x,...,x n R Z p mit x i 0 und x i x j für alle i j (falls zwei Werte übereinstimmen, verwerfen wir einen der beiden und wählen erneut dieses Verfahren führt rasch zum Ziel, denn eine Kollision ist erst nach O( p) Zufallswahlen zu erwarten). (2) Wir berechnen weitere n Zufallswerte a,...,a n R Z p mit a i 0. (3) Wir berechnen für i n die Funktionswerte y i := p(x i ) durch Einsetzen der Werte x i in das Polynom p(x) := a n x n a x + s (s ist das zu teilende Geheimnis). (4) Wir übergeben der i-ten Person das Teilgeheimnis (x i,y i ) für i n.
68 66 KAPITEL 4. EINIGE KRYPTOSYSTEME Mit Hilfe der üblichen Langrangeschen-Interpolationsformel können in der Tat alle n Personen zusammen das Polynom p(x) rekonstruieren: p(x) = n i= x x j y i j i x i x j Finden sich nun z.b. die Personen,...,n zusammen, um gemeinsam ohne die n-te Person das Geheimnis zu lüften, so können sie dasjenige eindeutig bestimmte Interpolationspolynom q(x) mit q(x i ) = y i für i =,...,n bestimmen. Ferner erhalten sie damit eine Darstellung für p(x) der Form p(x) = q(x) + r(x) n i= (x x i). Wegen deg p(x) = n und degq(x) = n 2 sowie deg n i= (x x i) = n können sie degr(x) = 0, also r(x) = c Z p folgern. Da aber jeder Wert in Z p gewählt werden kann, ohne dass die Bedingungen p(x i ) = y i für i =,...,n verletzt werden, können sie keinerlei Rückschlüsse auf das tatsächliche Geheimnis s ziehen. Trifft sich dagegen eine Koalition von noch weniger als n Teilnehmern, so wächst mit dem Grad des Polynoms r(x) in p(x) = q(x) + r(x) i (x x i ) auch die Anzahl der Freiheitsgrade für seine Koeffizienten. Die Chance, das Geheimnis zu enthüllen, wird noch weitaus geringer. Das beschriebene Verfahren kann so modifiziert werden, dass ein Geheimnis auf n Personen verteilt wird, von denen dann eine Teilgruppe von genau k n Personen in der Lage ist, es zu enthüllen: Statt das Polynom p(x) vom Grad n zu wählen, berechnet man ein Polynom vom Grad k und verteilt die entsprechenden Argumente und Funktionswerte wie oben beschrieben. Ein Polynom (k )-ten Grades kann dann von k Personen mit Hilfe der Argumente und der Funktionswerte über die Lagrangesche Interpolationsformel bestimmt werden.
69 Kapitel 5 Unterschriften (Signaturen) In diesem Kapitel wollen wir uns mit Unterschriftenverfahren in der Kryptographie beschäftigen. Wir werden Verfahren kennenlernen, die es ermöglichen, dass elektronische Dokumente fälschungssicher unterschrieben werden können. Die Sicherheit beruht je nach Verfahren auf der Schwierigkeit große Zahlen zu faktorisieren oder den diskreten Logarithmus eines Elementes einer zyklischen Gruppe zu bestimmen. Da die Unterschrift auf einem Dokument fest an das Dokument und seinen Inhalt gebunden sein muss (anderenfalls könnte man eine einmalige Unterschrift als Unterschrift für beliebige andere Dokumente mißbrauchen), wird man in der Regel ein Unterschriftenverfahren auf den gesamten zu unterschreibenden Text anwenden. Auf diese Weise entstehen bei der Unterschrift langer Dokumente ebenfalls lange Unterschriften (oft sind die Unterschriften sogar länger als der zu unterschreibende Text). Um diesem Problem aus dem Weg zu gehen, kann man sogenannte Hashing -Verfahren verwenden, mit denen sich zunächst das zu unterschreibende Dokument verkleinern lässt. Anschließend wird dann die Unterschrift auf dem gehashten Dokument ausgeführt. Wie man Nachrichten mit Hilfe von Hashing verkleinert, werden wir im nächsten Kapitel sehen. Ein anderes Problem ist die Identifikation: Es muss sichergestellt werden, dass die Person, die eine Unterschrift geleistet hat, auch tatsächlich eindeutig identifizierbar ist. 5. Zum Konzept von Unterschriftenverfahren Von einem Unterschriftenverfahren erwarten wir die folgenden Eigenschaften:. Die Unterschrift auf einem Dokument muss fest an das Dokument angebunden sein. 2. Unterschriften zu vollziehen und zu verifizieren sollte leicht sein (d.h. effizient durchführbar). 3. Es sollte schwer sein (d.h. man kennt keinen effizienten Algorithmus), Unterschriften zu fälschen. 67
70 68 KAPITEL 5. UNTERSCHRIFTEN (SIGNATUREN) 4. Derjenige, der eine Unterschrift leistet, sollte nicht in der Lage sein, anschließend seine Unterschrift zu verleugnen. Um eine Nachricht x zu unterschreiben, haben wir allgemein ein Schlüsselpaar (S,K), wobei S geheim gehalten wird und zur Unterschrift von Nachrichten mit einer Funktion sig S verwendet wird. Der Schlüssel K wird benutzt, um Unterschriften mit Hilfe einer Funktion ver K zu verifizieren. Allgemein kann man jedes Public-Key-Kryptosystem mit einer Verschlüsselungsfunktion dec K und einer Entschlüsselungsfunktion enc S, wobei K öffentlich ist und S geheim gehalten wird, als Unterschriftenverfahren mißbrauchen. Man dreht dazu die übliche, zur Kommunikation verwendete Vorgehensweise einfach um: Angenommen Alice soll die Nachricht x unterschreiben. Dann verschlüsselt Alice die Nachricht x mit ihrem geheimen Schlüssel, d.h. sie berechnet y := dec S (x). Dann sendet sie (x,y) an Bob. Bob wendet nun die Funktion enc K auf y an und erhält x = enc K (y). Stimmt x mit dem Wert x überein, so akzeptiert Bob die Unterschrift. Falls x x, so kann Bob davon ausgehen, dass Alice entweder keine korrekte Unterschrift geleistet hat, oder jemand anders versucht hat, Alice s Unterschrift zu fälschen. Für die beschriebene Vorgehensweise eignet sich z.b. das RSA-Verfahren 4.. Symmetrische Kryptosysteme wie Rijndael (siehe Seite 55 und folgende) eignen sich nicht als Unterschriftenverfahren, denn K = S, d.h. es gibt im eigentlichen Sinne keinen öffentlichen Schlüssel. 5.2 Das Unterschriftenverfahren von ElGamal In diesem Abschnitt werden wir ein Unterschriftenverfahren kennenlernen, dass von ElGamal entwickelt wurde. Protokoll 5.. (ElGamal Unterschriftenverfahren) Sei G = g eine zyklische Gruppe der Ordnung d. Ferner sei eine Codierungsfunktion G Z d, x x gegeben, die die Elemente von G auf Zahlen aus {0,...,d } abbildet. () Die zu unterschreibende Nachricht m ist Alice und Bob bekannt. Alice wählt einen geheimen Schlüssel a Z d und veröffentlicht y := g a G. (2) Alice wählt ein geheimes k R Z d und berechnet x := gk G. Dann berechnet sie b := k (m a x )modd und sendet sig g,a,k (m) := (x,b) an Bob. (3) Bob berechnet g m und y x x b. Bob akzeptiert die Unterschrift genau dann, wenn gilt: g m = y x x b. Beweis. (Korrektheit) Angenommen, Alice und Bob gehen beide genau nach den Anweisungen des Protkolls vor. Dann gilt: y x x b = y x g k b = y x g k (k (m a x ) = y x g m a x = y x g m g a x = y x g m y x = g m, also die Korrektheit des Verfahren. Die Effizienz des Verfahrens ist gewährleistet, denn Alice und Bob führen nur die üblichen Gruppenoperationen aus. Addition, Multiplikation und Inversion in Z d sind effizient
71 5.3. FÄLSCHUNGSSICHERHEIT 69 durchführbar, d.h. die Laufzeit für die Operationen ist höchstens quadratisch in der Kodierungslänge der Elemente aus Z d, also logarithmisch in d. Potenzieren wird wie immer über Repeated-Squaring.5 erledigt. Die zufällige Wahl von k Z d zeigt uns, dass es viele mögliche Unterschriften auf m gibt, was sicherlich zur Fälschungssicherheit des Verfahrens beiträgt. Die Fälschungssicherheit diskutieren wir im nächsten Abschnitt. Ein deutlicher Nachteil des Verfahrens ist jedoch der folgende: Setzt man voraus, dass die Elemente der Gruppe G = g mit d = #G die gleiche Codierungslänge haben wie die korrespondierenden Elemente von Z d, so ist die Unterschrift (x,b) auf der Nachricht m etwa doppelt so lang wie die Nachricht m. Handelt es sich bei d um eine 024-Bit-Zahl, so hat die Unterschrift auf einer Nachricht der Länge 024-Bit die Länge 2048-Bit. Dies ist aus Effizienzgründen wenig wünschenswert und es scheint auch nicht einsichtig, dass die Unterschrift auf einer Nachricht eine derartige Länge haben muss. Wir werden im letzten Abschnitt dieses Kapitels eine Modifikation des Verfahrens von ElGamal diskutieren, die auf Schnorr zurückgeht. Sie erlaubt es im wesentlichen unter Wahrung der Sicherheit des Verfahrens deutlich kürzere Unterschriften zu erzeugen. 5.3 Fälschungssicherheit von ElGamal Unterschriften In diesem Abschnitt wollen wir Angriffe auf das Unterschriftenverfahren von ElGamal 5. diskutieren. Nehmen wir an, Eve möchte eine Nachricht m unterschreiben (und sich dabei Bob gegenüber als Alice ausgeben). Eve kennt a nicht. Wegen a = dlog g y und weil wir davon ausgehen können, dass der diskrete Logarithmus sehr schwer zu berechnen ist, ist der Versuch, a zu berechnen und dadurch das System zu brechen, hoffnungslos. Eine andere Möglichkeit für Eve besteht darin, den Wert x einfach selbst zu wählen. Dann muss sie jedoch den passenden Wert b berechnen und es gilt b = dlog x (g m y x ). Sie stößt also wieder auf das Problem, einen diskreten Logarithmus berechnen zu müssen. Eine weitere Möglichkeit besteht für Eve darin, x und b vorzuwählen und dann m zu berechnen mit m = dlog g (y x x b ). In diesem Fall hat Eve allerdings keine Kontrolle über m und wird mit hoher Wahrscheinlichkeit eine völlig blödsinnige Nachricht unterschreiben. Will Eve eine ganz spezielle Nachricht m unterschreiben, so muss sie stets x und b finden mit g m = y x x b. Auf die letztere Gleichung lässt sich keine bis dato bekannte Theorie anwenden, die etwas über die Komplexität des Problems aussagt. Man geht jedoch allgemein davon aus, dass auch dieses Problem schwer zu lösen ist Die Angriffe von Mitchell auf ElGamal Unterschriften Mitchel et al. fanden 992 Möglichkeiten, ElGamal zu brechen. Wir werden zwei ihrer Angriffe hier kurz skizzieren und dann sehen, dass ElGamal als Unterschriftensystem durch diese Angriffe jedoch nicht wirklich gefährdet ist. Die erste Möglichkeit besteht für Eve darin, i, j mit 0 i, j < d und ggt( j,d) = zu wählen und dann x := g i y j, b := x j modd und m := x i j modd zu berechnen. Dann ist
72 70 KAPITEL 5. UNTERSCHRIFTEN (SIGNATUREN) (x,b) eine gültige Unterschrift auf m, denn y x x b = y x (g i y j ) x j = y x y x g x i j = g x i j = g m. Der Nachteil dieses Verfahrens besteht darin, dass man keinerlei Kontrolle über die Nachricht m hat: Man kann sich m nicht wirklich aussuchen und dann eine gültige Unterschrift auf m produzieren. Mitchel schlug u.a. noch eine weitere Möglichkeit vor, gültige ElGamal-Unterschriften auf Nachrichten zu erzeugen. Diese beruht auf der Tatsache, dass Eve eine Nachricht m sowie eine gültige Unterschrift (x,b) auf m aufgeschnappt hat. Mit Hilfe der Werte m, x und b kann Eve dann wieder geschickt andere Werte berechnen, die eine korrekte Unterschrift auf einer Nachricht darstellen. Bei der Wahl der Werte geht Eve ähnlich wie in dem oben beschriebenen Verfahren vor. Jedoch sind die Formeln etwas komplizierter und auch aufwendiger zu verifizieren, weshalb wir an dieser Stelle darauf verzichten, sie explizit anzugeben. Wichtig ist, dass keiner der Angriffe es erlaubt, zu einer frei gewählten Nachricht m eine gültige Unterschrift auf m zu erzeugen Zur unvorsichtigen Benutzung des Unterschriftenverfahrens von ElGamal Zwei Dinge sind bei der Verwendung von Protokoll 5. von entscheidender Wichtigkeit: Die zufällig gewählte Zahl k darf keinesfalls bekanntgegeben werden, denn es gilt a (m k b) (x ) (vorausgesetzt, x ist invertierbar modulo d). Sobald Eve den Wert a kennt, kann sie beliebige Nachrichten in Alice s Namen unterschreiben, denn sie kann alle Schritte des Protokolls 5. ebenso effizient ausführen, wie Alice selbst. Der zweite große Fehler, der weniger fatal wirkt, als das Bekanntgeben des Wertes k, ist die Tatsache, dass man den Wert k aus Bequemlichkeit zur Unterschrift zweier verschiedener Nachrichten m und m 2 verwenden könnte. Dann erhalten wir eine Kollision der Form y x = g m x b = g m 2 x b 2 und es folgt wegen x = g k gerade m m 2 = k (b b 2 )modd. Ist b b 2 invertierbar modulo d, so kann Eve k (und damit auch a, s.o.) berechnen. Sind b b 2 und d nicht teilerfremd, so kann Eve immer noch versuchen, über Reduktion modulo dem größten gemeinsamen Teiler t von b b 2 und d einen Wert k zu berechnen mit k k + i d t modd mit 0 i < t und dann (falls t nicht zu groß ist), alle Werte von i durchprobieren, bis sie dasjenige i mit k = k +i d t gefunden hat. Diese Vorgehensweise haben wir in Bemerkung 3.8 bereits erörtert. Ein weiterer Angriff auf Protokoll 5. besteht wieder in dem Woman-in-the-middle - Angriff, den wir schon als Angriff auf das Diffie & Hellman Protokoll 4.3 auf Seite 63 diskutiert haben: Eve gibt sich gegenüber Alice als Bob und gegenüber Bob als Alice aus. 5.4 Schnorr Unterschriften Smart Cards erledigen oft Aufgaben, in denen Unterschriften eine wichtige Rolle spielen. Da sie nur sehr begrenzte Rechenkapazität haben, müssen Unterschriften möglichst kurz sein.
73 5.4. SCHNORR UNTERSCHRIFTEN 7 Wir wollen in diesem Abschnitt eine Variante des Unterschriften-Protokolls 5. von ElGamal kennenlernen, die deutlich kürzere Unterschriften erlaubt. Schnorr s Idee besteht nun im wesentlichen darin, die zyklische Gruppe Z p als Rechenbereich zu wählen, wobei p eine sehr große Primzahl (z.b. 024-Bit) ist. Anstatt nun Protokoll 5. in Z p selbst auszuführen (was bei einer Nachricht der Länge 024-Bit eine Unterschrift der Länge 2048-Bit bedeuten würde), schlägt Schnorr vor, eine zyklische Untergruppe G von Z p der Ordnung q zu wählen, wobei q ein Primteiler von p ist. Für q ist eine Primzahl von 60-Bit denkbar, also viel kleiner als p selbst. In G wird dann das Unterschriftenverfahren von ElGamal 5. ausgeführt, was dazu führt, dass eine Unterschrift der Form (x,b) nur noch 2 60 = 320-Bit groß ist. Es stellen sich zwei grundsätzliche Probleme: Als erstes möchte man nichts von der Sicherheit von ElGamal einbüßen. Als zweites sollte die Konstruktion leicht durchführbar sein, d.h. zu einer 60-Bit-Primzahl q sollte es leicht sein, eine 024-Bit-Primzahl zu finden, mit q p, und es sollte außerdem leicht sein, ein erzeugendes Element g der Gruppe G angeben zu können. Zunächst zum zweiten Problem: Der Satz von Dirichlet 2.0 über Primzahlen in arithmetischen Progressionen garantiert uns die Existenz unendlich vieler solcher Primzahlen p. In der Praxis wählt man zufällige Vielfache von q, addiert und testet auf Primheit. Dieses Vorgehen führt in akzeptabler Zeit zum Erfolg. Haben nun q und p die gewünschten Eigenschaften, so erhalten wir ein erzeugendes Element von G mit dem folgenden Trick: Wir wählen ein zufälliges Element y Z p und setzen g := y p q. Dann gilt g q =, also ord(g) q. Da q aber eine Primzahl ist, kann nur ord(g) = q oder ord(g) = gelten. Im Fall ord(g) = folgt g = und wir wählen einfach einen neuen zufälligen Wert y. Im Fall ord(g) = q haben wir das gewünschte Element g mit G = g gefunden. Nun zum ersten Problem: Wir hatten gesehen, dass die Sicherheit des Unterschriftenverfahrens von ElGamal im wesentlichen auf der Tatsache beruht, dass der diskrete Logarithmus schwer zu berechnen ist. Führen wir nun Potokoll 5. in der Untergruppe G = g von Z p aus, so haben wir zwei Möglichkeiten, den diskreten Logarithmus eines Elementes x G, x = g a zu berechnen: Die erste Möglichkeit besteht darin, das Element x in Z p zu betrachten und den diskreten Logarithmus a dort mit Hilfe des Index-Kalküls 3.22 zu berechnen: Sei dazu x = g a in G, a der gesuchte diskrete Logarithmus, sowie Z p = z. Dann berechnen wir mit Hilfe von Index-Kalkül zunächst l mit g = z l und k mit x = z k. Auf diese Weise erhalten wir z k = x = g a = z a l, d.h. k a l mod p. Wegen x G und #G = q, ist amodq der gesuchte diskrete Logarithmus von x in Basis g, d.h. wir betrachten statt k a l mod p schlicht k a l modq, wobei wir in diesem Fall, da q prim ist, a über Inversion von l berechnen können. Wir hatten gesehen, dass Index-Kalkül effizienter ist als die generischen Algorithmen zur Berechnung des diskreten Logarithmus. Allerdings ist p eine 024-Bit-Primzahl, weshalb auch Index-Kalkül in diesem Fall nicht praktikabel ist. Die zweite Möglichkeit besteht darin, dass wir x in G betrachten und versuchen, den diskreten Logarithmus a von x in Basis g in G zu berechnen. In G haben wir jedoch keinen Index-Kalkül
74 72 KAPITEL 5. UNTERSCHRIFTEN (SIGNATUREN) zur Verfügung, um a zu berechnen (G ist sozusagen nicht speziell genug man weiß bis dato nicht, wie man Index-Kalkül in einer Gruppe dieser Art anwenden könnte). Wir müssen also auf die generischen Algorithmen zurückgreifen, deren Laufzeit erwartungsgemäß q Gruppenoperationen beträgt (bedenke, dass q prim ist und die Laufzeit der generischen Algorithmen immer durch den größten Primteiler der Gruppenordnung, also in unserem Fall durch q selbst, bestimmt ist). Da q eine Primzahl ist, können wir nicht von den Algorithmen Chinese Remaindering 3.6 und Pohlig-Hellman 3.9 profitieren und es bleibt uns nur der generische Algorithmus von Pollard 3.. Ist q eine 60-Bit-Primzahl, so ist auch dieser Ansatz nicht praktikabel. Das von Schnorr vorgeschlagene Verfahren bietet also die Sicherheit des ursprünglich von ElGamal vorgeschlagenen Unterschriftenverfahrens, aber deutlich kürzere Unterschriften. Im wesentlichen stimmt das Unterschriftenverfahren von Schnorr in der Tat mit dem von El- Gamal vorgeschlagenen Unterschriftenverfahren überein. Da einige kleinere Modifikationen dennoch nötig sind, geben wir das Unterschriftenverfahren im folgenden an. Das Protokoll verwendet eine Hash-Funktion h : {0,} Z q. Wir werden Hash-Funktionen im nächsten Abschnitt genauer besprechen. Für das Verständnis des Protokolls genügt es, sich h als eine Funktion vorzustellen, für die es schwer ist, aus einem gegebenen Bild eines Elementes unter h ein passendes Urbild zu berechnen. Protokoll 5.2. (Schnorr-Unterschriftenverfahren) Sei G = g eine zyklische Untergruppe von Z p, p prim, mit #G = q, wobei q eine Primzahl ist mit q p. () Die zu unterschreibende Nachricht m ist Alice und Bob bekannt. Alice wählt einen geheimen Exponenten a R Z q und veröffentlicht y := g a mod p. (2) Zur Unterschrift auf m wählt Alice zunächst ein zufälliges k R Z q und berechnet x := g k mod p. Dann berechnet sie r := h(m,x) als Hash-Wert von m und x. Schließlich berechnet sie b := k + a r modq und sendet (r,b) als Unterschrift auf m an Bob. (3) Bob bestimmt v := g b y r mod p und prüft, ob r = h(m,v) gilt. Ist letztere Gleichung erfüllt, so akzeptiert er Alice s Unterschrift. Beweis. (Korrektheit) Es gilt v g b y r g k+a r g a r g k xmod p. Damit folgt aus x vmod p auch h(m,x) = h(m,v).
75 Kapitel 6 Hash-Funktionen Dieses Kapitel beschäftigt sich mit Hash-Funktionen (oder auch Hackfunktionen ) die dazu dienen sollen, lange Nachrichten in handlichere, kürzere zu überführen: Gegeben x und eine Funktion h, so nennen wir h eine Hash-Funktion, wenn h(x) hinreichend kleine Codierungslänge besitzt. Diese etwas schwammige Definition werden wir noch formalisieren. Eine Anforderung, die speziell die Kryptographie an Hash-Funktionen stellt, ist die Tatsache, dass es schwer sein sollte, zu einem Hash-Wert z := h(x) den Wert x oder einen anderen gültigen Wert y zu finden mit h(y) = z. Vor allem im Zusammenhang von Unterschriftverfahren spielen Hash-Funktionen eine wichtige Rolle: Stellen wir uns vor, Alice würde eine Unterschrift auf einer Nachricht m leisten, indem sie zunächst h(m) berechnet und dann z.b. auf h(m) das Unterschriftenverfahren von ElGamal 5. anwendet. Könnte nun Eve leicht zu dem Wert h(m) einen andere Nachricht x finden mit h(x) = h(m), so könnte sie x gegen m austauschen und hätte eine gültige Unterschrift von Alice auf einer ganz anderen Nachricht (nämlich auf x). Definition 6.. Sei h : X Z eine Abbildung zwischen den endlichen Mengen X und Z. Sind x,y X, x y, mit h(x) = h(y), so sagen wir, dass x und y kollidieren. Wir nennen h ein Hash- Funktion, falls #X > #Z. Die (Hash-)Funktion h heißt Kollisions-resistent, wenn es schwer ist, für h eine Kollision zu finden. Sie heißt second-preimage-resistent, wenn es schwer ist, zu gegebenem x X ein y X, y x, zu finden mit h(x) = h(y). Sie heißt eine Einwegfunktion, wenn es schwer ist, zu einem z h(x) ein x X zu finden mit h(x) = z. Da Hash-Funktionen große Mengen auf kleinere Mengen abbilden sollen, ist es unausweichlich, dass Kollisionen auftreten. Es gilt: Lemma 6.2. Sei h : X Z eine Hash-Funktion. Ist h Kollisions-resistent, so ist h auch second-preimage-resistent. Ist h second-preimage-resistent, so ist h eine Einwegfunktion. Beweis. Es ist klar, dass wenn es generell schwer ist, Kollisionen für h zu finden, dass es dann auch schwer ist, zu einem gegebenen x X ein y X zu finden mit h(x) = h(y). Dies zeigt die erste Behauptung. Die zweite Behauptung beweisen wir durch Widerspruch: Angenommen, 73
76 74 KAPITEL 6. HASH-FUNKTIONEN es gibt einen probabilistischen Polynomialzeitalgorithmus A, der in Polynomialzeit zu einem gegebenen z h(x) ein x X findet mit h(x) = z. Es bezeichne π(x) die Wahrscheinlichkeit, dass A bei Eingabe h(x) den Wert x liefert. Ferner sei X(z) := {x X h(x) = z}. Dann gilt für jedes z Z: x X(z) π(x) =, denn einen der Werte aus X(z) muss A bei Eingabe h(x) = z liefern. Sei nun B derjenige probabilistische Polynomzeitalgorithmus, der bei Eingabe x X schlicht A mit Eingabe h(x) aufruft. Falls A dann ein y x mit h(x) = h(y) liefert, so gibt B den Wert y und anderenfalls FAIL aus. Dann ist B ein probabilistischer Polynomialzeitalgorithmus, mit dessen Hilfe wir zu einem gegebenen x X ein y X mit x y und h(x) = h(y) finden können. Die Erfolgswahrscheinlichkeit von B ist für ein festes x X gegeben durch π(x) (nämlich die Wahrscheinlichkeit eben nicht den Wert x auszugeben). Da die Mengen X(z), z Z eine Partition von X bilden, ergibt sich insgesamt seine Erfolgswahrscheinlichkeit zu P( B ist erfolgreich ) = #X ( π(x)) = ( #X #X x X = #X z Z = #Z #X, also kann h nicht second-preimage-resistent sein. Widerspruch! z Z x X(z) ) π(x) Ein möglicher Weg, zu einem gegebenen Hash-Wert z Z einen Wert x X mit h(x) = z zu finden, besteht darin, solange zufällige Werte x X zu wählen, bis h(x) = z gilt. Das Geburtstagproblem zeigt uns, dass wir davon ausgehen können, nach etwa #Z Schritten einen passenden Wert x X zu finden. Daher darf #Z auch nicht zu klein sein. Für #Z 2 60 ist ein Geburtstagsangriff undenkbar. 6. Eine spezielle Hash-Funktion Wir wollen eine konkrete Hash-Funktion kennenlernen, deren Kollisionsresistenz auf der Schwierigkeit der Berechnung des diskreten Logarithmus beruht. Sei G = g eine zyklische Gruppe der Ordnung d = 2 q für eine Primzahl q. Sei z G, z g ein weiteres erzeugendes Element von G. Setze Q := {0,...,q }. Dann ist die Funktion h mit h : Q Q G, h(x,y) := g x z y eine Hash-Funktion, denn gehen wir davon aus, dass die Elemente von G eine Codierungslänge von höchstens log 2 (2 q) = + log 2 q haben, so werden Elemente (x,y) der Länge 2 log 2 q auf Elemente der Länge log 2 q abgebildet, d.h. ihre Codierungslänge wird im wesentlichen halbiert. Es gilt nun: Theorem 6.3. Ist es leicht für h eine Kollision zu finden, so ist es leicht dlog g z zu berechnen. Beweis. Angenommen wir haben eine Kollision g x z y = g x 2 z y 2 mit (x,y ) (x 2,y 2 ) und x,x 2,y,y 2 Q = {0,...,q }. Dann gilt g x x 2 = z y 2 y. Ist a = dlog g z, so gilt x x 2 a (y 2 y )modd. Ist y 2 y invertierbar modulo d, so erhalten wir a = (y 2 y ) (x x 2 ). Ist t := ggt(y 2 y,d) >, so folgt t {2,q,2 q}. Für t = 2 können wir mit dem
77 6.2. HASHING VON BLOCKNACHRICHTEN 75 üblichen Verfahren aus Bemerkung 3.8 vermöge Reduktion der Gleichung für a modulo d 2 ein a bestimmen mit a a + i d 2 modd und i {0,}. Durch ausprobieren finden wir dann leicht den korrekten Wert für a heraus. Wegen (q ) y 2 y q folgt aus t {q,2 q} wegen t y 2 y bereits y = y 2 und somit g x = g x 2. Letzteres bedeutet aber x x 2 modd. Wegen d x x 2 gilt auch q x x 2, also nach dem gleichen Argument wie oben x = x 2. Widerspruch zu (x,y ) (x 2,y 2 ). Durch Umkehrung der Aussage erhalten wir: Korollar 6.4. Wenn der diskrete Logarithmus in G schwer zu berechnen ist, so ist h Kollisions-resistent. Eine Möglichkeit für G ist Z p mit p = 2 q +, wobei q eine Primzahl ist. Eine Primzahl der Form p heißt eine Germainsche Primzahl (nach Sophie Germain). Leider ist nicht bekannt, ob es unendlich viele solcher Primzahlen gibt. 6.2 Hashing von Blocknachrichten Sei h : Z m 2 Zt 2 eine Hash-Funktion, m t +2. Wir wollen einen Algorithmus kennenlernen, n wie wir Nachrichten x einer Länge n > m hashen können. Setze k := m t. Dann können wir die Nachricht x in k Blöcke der Länge m t zerlegen, wobei der letzte Block am Ende d = k (m t ) n < m t freie Stellen hat. Diesen füllen wir mit d Nullen auf, so dass wir eine Zerlegung x = x x 2...x k von x erhalten, wobei jedes x i ein Block der Länge m t ist. Dann fügen wir am Ende einen weiteren Block x k+ an, der die Binärdarstellung der Zahl d enthält. Wegen d < m t und da x k+ ebenfalls Länge m t haben soll, ist dies möglich. Auf diese Weise speichern wir also im letzten Block die Information, mit wie vielen Nullen wir x k am Ende aufgefüllt haben. Das Hashing-Verfahren führen wir nun wie folgt durch: Im ersten Schritt setzen wir g := 0 t 0x. Dann hat g die Blocklänge m und wir können h darauf anwenden. In allen folgenden Schritten berechnen wir stets g i+ := h(g i )x i+ und wenden h darauf an. Der letzte Block, den wir auf diese Weise erhalten, ist g k+ = h(g k )x k+ und wir setzen h (x) := h(g k+ ). Es lässt sich nun zeigen, dass gilt: Theorem 6.5. Ist h Kollisions-resistent, so auch h, d.h. es ist nicht möglich in probabilistischer Polynomialzeit eine Kollision für h zu finden. Der Beweis wird per Widerspruch geführt: Man nimmt an, dass h nicht Kollisions-resistent ist und zeigt dann, dass man aus einer Kollision für h stets eine Kollision für h konstruieren kann. Der Beweis ist aber sehr technisch und wir geben ihn hier nicht an (siehe [8], Theorem 6.6, Seite 30). Abschließend bemerken wir noch, dass wir die Funktion h auf einer Nachricht x der Länge n n genau + m t -mal auswerten müssen, um h (x) zu berechnen.
78 76 KAPITEL 6. HASH-FUNKTIONEN 6.2. Kryptosysteme und Hash-Funktionen Man kann auch Kryptosysteme, in denen die Länge der Nachrichten, die Länge der Verschlüsselungen und die Länge der Schlüssel übereinstimmen, zur Berechnung von Hash- Werten verwenden (z.b. Rijndael bietet sich als Kandidat für eine solche Vorgehensweise an, denn die Blocklängen von Klartext, verschlüsseltem Text und Schlüssel können alle samt gleich gewählt werden). Eine Nachricht x wird dazu in Blöcke der Länge n unterteilt, x = x x 2...x k mit x i Z n 2. Ist enc K : Z n 2 Zn 2 die Verschlüsselungsfunktion, so wählen wir einen Startwert, z.b. g 0 = 0 n und eine Funktion f : Z n 2 Zn 2 Zn 2, z.b. g i := f (g i,x i ) := enc gi (x i ) x i. Dann berechnen wir wieder g := f (g 0,x ), g 2 := f (g,x 2 ) usw. bis hin zum eigentlichen Hash-Wert f (g k,x k ) = g k =: h(x). Für die Funktion f oder den Startwert g 0 sind durchaus auch andere Kandidaten denkbar. Ein Bestandteil der Definition von f ist in der Regel immer durch die Verschlüsselungsfunktion enc K des jeweiligen Kryptosystems gegeben. 6.3 Zeitstempel Angenommen, Eve gelangt auf irgendeine Weise an Alice s geheimen Schlüssel (z.b. im Rahmen des ElGamal Unterschriftenverfahrens 5.). Dann kann sie Alice s Unterschriften auf beliebigen Dokumenten fälschen. Es kann daher passieren, dass alle bisher von Alice getätigten Unterschriften als ungültig erklärt werden müssen. Eine andere Möglichkeit besteht darin, dass Alice selbst ihren geheimen Schlüssel veröffentlichen könnte. Dann kann jeder Alice s Unterschriften fälschen und Alice selbst könnte von Unterschriften, die sie in der Vergangenheit geleistet hat, behaupten, sie hätte sie nicht selbst vollzogen. Um diesem Dilemma zu entgehen, kann man sogenannte Zeitstempel einführen. Soll nun Alice eine Nachricht x mit Hilfe der Funktion sig S unterschreiben, so kann sie verpflichtet werden, das Datum der Unterschrift in der Unterschrift selbst festzuhalten. Dazu wählt Alice eine speziell auf das jeweilige Datum zugeschnittene Information pub, die niemand vorher wissen kann (z.b. tagesbezogene Wetterdaten, Zeitungsüberschriften von Tageszeitungen des Tages der Unterschrift etc.). Dann berechnet sie z := h(x) und z := h(z,pub) und unterschreibt auf z, d.h. y := sig S (z ). Dann veröffentlicht sie (z,pub,y) z.b. in der Tageszeitung des auf die Unterschrift folgenden Tages.
79 Kapitel 7 Identifikations- und Authentifikationsverfahren Identifikations- und Authentifikationsverfahren spielen z.b. beim sogenannten Remote Login auf Computern über ein Netzwerk oder bei der Verwendung von Credit-Karten etc. eine wichtige Rolle. In unserer Situation stellen wir uns vor, dass Alice sich gegenüber Bob eindeutig identifizieren möchte. Verwenden die beiden ein Identifikationsverfahren, so dass Bob sicher sein kann, dass er tatsächlich mit Alice kommuniziert (und natürlich auch umgekehrt), so können Alice und Bob anschließend beruhigt z.b. das Schlüsselaustauschverfahren von Diffie & Hellman 4.3 verwenden, denn der Woman-in-the-middle -Angriff (siehe Seite 63) sollte nun nicht mehr möglich sein. Wir stellen die folgenden wichtigen Anforderungen an ein Identifikationsverfahren: Auch wenn Eve die Leitung zwischen Alice und Bob abhört, so kann sie keine Informationen aus deren Kommunikation ableiten, die ihr helfen, sich gegenüber Bob als Alice auszugeben. Selbst Bob sollte nicht in der Lage sein, sich gegenüber anderen als Alice auszugeben. Das grundlegende Schema für ein Identifikationsprotokoll ist in der Regel das folgende:. Alice sendet Informationen an Bob. 2. Bob schickt Alice eine Herausforderung. 3. Alice reagiert auf die Herausforderung. Bei der Herausforderung handelt es sich in der Regel um eine Aufgabe, die Bob Alice stellt und die nur Alice (effizient) bewältigen kann. Kann Alice also wie von Bob gewünscht auf die Herausforderung reagieren, so kann sich Bob sicher sein, dass er tatsächlich mit Alice kommuniziert. Ein mögliches Identifikationsverfahren ist das folgende, welches voraussetzt, dass Alice und Bob sich zuvor über einen gemeinsamen geheimen Schlüssel K für ein symmetrisches Kryptosystem (z.b. Rijndael) geeinigt haben: Bob schickt Alice eine zufällig gewählte Nachricht 77
80 78 KAPITEL 7. IDENTIFIKATION UND AUTHENTIFIKATION x. Dann verschlüsselt Alice die Nachricht x zu y := enc K (x) und sendet y an Bob. Bob überprüft dann, ob x = dec K (y) gilt. Ist dies der Fall, so kann Bob davon ausgehen, dass er es mit Alice zu tun hat. 7. Das Identifikationsverfahren von Schnorr In diesem Abschnitt lernen wir ein Identifikationsverfahren kennen, das auf Schnorr zurückgeht. Neben Alice, Bob und Eve gibt es bei vielen Identifikationsverfahren noch die Instanz der Trusted Authority (Vertrauenswürdige Instanz), die wir mit TA abkürzen wollen. Bevor Alice sich gegenüber Bob identifizieren kann leistet die TA Vorarbeit für das generelle Setting der Identifikation: Die TA benutzt einen Sicherheitsparameter t (t = 40 genügt in der Regel). Dann wählt die TA eine zyklische Gruppe G = α und eine Primzahl q 2 40, so dass q die Ordnung d von G teilt. Dann ist α := (α ) d q ein Element der Ordnung q. Alle Berechnungen werden nun im wesentlichen wieder in der von α erzeugten zyklischen Untergruppe von G durchgeführt (ähnlich wie wir es schon bei dem Unterschriftenverfahren von Schnorr auf Seite 70 gesehen haben). Die TA hat einen geheimen Unterschriftenalgorithmus sig TA und einen öffentlichen Algorithmus ver TA zur Verifikation von Unterschriften. Kommunikation von Alice mit der TA: Bevor nun Alice an Bob herantritt, um sich ihm gegenüber als Alice zu identifizieren, führt sie die folgenden Schritte aus: Sie wählt einen zufälligen Exponent e A Z q und sendet β A := α e A und ID(A) (ihre persönlichen Identifikationsdaten) an die TA. Die TA berechnet s := sig TA (ID(A),β A ) und schickt Alice ihr persönliches Zertifikat C(A) := (ID(A),β A,s). Nachdem Alice nun diese Schritte ausgeführt hat, kann sie sich mit dem folgenden Identifikationsschema gegenüber Bob identifizieren: Schnorr s Identifikationsprotokoll:. Alice wählt ein zufälliges k R Z q und sendet C(A) und γ := α k an Bob. 2. Bob prüft, ob ver TA ((ID(A),β A ),s) = TRUE und schickt Alice ein r mit r 2 t (t der Sicherheitsparameter der TA) als Herausforderung. 3. Alice berechnet y := k + e A r modq und schickt y an Bob. 4. Bob prüft, ob γ β r A = αy. Ist dies der Fall, so sieht er Alice als identifiziert an. Anderenfalls geht er davon aus, dass jemand anderes sich als Alice ausgibt. Die Korrektheit ist leicht nachzurechnen: γ β r A = αk α e A r = α k+e A r = α y. Die Effizienz des Verfahrens ist ebenfalls klar, denn alle Operationen sind in polynomieller Zeit in der Codierungslänge der Eingaben durchführbar. Als nächstes diskutieren wir die Sicherheit des Verfahrens: Eve hört die Kommunikation zwischen Alice und Bob ab. Sie kennt daher die Werte C(A), γ und r. Dabei ist die Reihenfolge
81 7.2. DAS IDENTIFIKATIONSVERFAHREN VON OKAMOTO 79 wichtig: Eve sieht zuerst γ und danach r. Könnte sie den Wert von r erraten bevor Bob r an Alice schickt, so könnte sie einen alten, schon verwendeten Wert von y wählen und selbst γ := α y βa r an Bob senden und Bob würde, nachdem er eben dieses r unwissender Weise an Eve geschickt hat, Eve für Alice halten. Daher darf der Wert für t auch nicht zu klein sein, denn sonst könnte Eve den Wert für r einfach zufällig wählen und hätte für kleines t eine akzeptable Trefferwahrscheinlichkeit, den richtigen Wert für r zu erraten. Der Wert k, den Alice wählt, hat die gleiche Funktion wie im Unterschriftenverfahren von ElGamal 5.: Er schützt den privaten Schlüssel e A von Alice. Da sie k aber nicht direkt an Bob sendet, sondern lediglich γ = α k, so kann Eve k nur als diskreten Logarithmus von γ in Basis α berechnen, was nach Voraussetzung in G schwer sein sollte. Ebenso kann Eve den geheimen Schlüssel e A nicht aus β A = α e A berechnen. Das folgende Theorem macht eine starke Aussage über die Sicherheit des Identifikationsprotokolls von Schnorr: Theorem 7.. Wenn Eve einen Wert γ kennt, für den sie sich für mindestens zwei Werte von r gegenüber Bob als Alice ausgeben kann, so kann Eve Alice s geheimen Schlüssel e A = dlog α β A leicht berechnen. Beweis. Angenommen, Eve kann sich für die Werte (r,y ) (r 2,y 2 ) mit r,r 2,y,y 2 {0,...,q } als Alice ausgeben. Dann gilt γ β r A = αy und γ β r 2 A = αy 2. Wäre r r 2 modq, so folgte aus den beiden Gleichungen y y 2 modq. Widerspruch zu (r,y ) (r 2,y 2 ). Wegen r r 2 modq und da q prim ist, ist folglich r r 2 invertierbar modulo q, d.h. wir erhalten aus β r r 2 A = α y y 2 durch Potenzieren mit (r r 2 ) modq gerade β A = α (y y 2 ) (r r 2 ), also (y y 2 ) (r r 2 ) = dlog α β A = e A. 7.2 Das Identifikationsverfahren von Okamoto In diesem Abschnitt werden wir eine Modifikation des im vorherigen Abschnitt vorgestellten Identifikationsverfahrens von Schnorr kennenlernen, das eine stärkere Aussage über seine Sicherheit zulässt: Sogar wenn Eve und Alice zusammenarbeiten, können sie keinen Schaden anrichten, es sei denn sie können den diskreten Logarithmus eines Elementes der zugrundeliegenden Gruppe berechnen. Würde Alice ihren geheimen Schlüssel e A einfach an Eve weitergeben, so ist die Aussage von Theorem 7. wertlos. Wir verwenden hier die gleiche Notation wie schon im letzten Abschnitt abgesehen von einer Kleinigkeit: Die TA verwendet statt eines erzeugenden Elementes α der zyklischen Untergruppe der Ordnung q von G zwei erzeugende Elemente α und α 2. Kommunikation von Alice mit der TA: Alice wählt zuerst zwei geheime Exponenten e,e 2 Z q und sendet ID(A) und β A := α e αe 2 2 an TA. Die TA berechnet s := sig TA (ID(A),β A ) und sendet C(A) := (ID(A),β A,s) als Alice s persönliches Zertifikat zurück. Okamoto s Identifikationsprotokoll:
82 80 KAPITEL 7. IDENTIFIKATION UND AUTHENTIFIKATION. Alice wählt k,k 2 R Z q zufällig und sendet C(A) und γ = α k αk 2 2 an Bob. 2. Bob prüft, ob ver TA ((ID(A),β A ),s) = TRUE und sendet ein zufälliges r mit r 2 t (t wieder der Sicherheitsparameter der TA) an Alice. 3. Alice berechnet y := k + e r modq und y 2 := k 2 + e 2 r modq und sendet y,y 2 an Bob. 4. Bob prüft, ob γ βa r = αy αy 2 2 gilt. Falls die Gleichung erfüllt ist, so sieht er Alice als identifiziert an. Anderenfalls geht er davon aus, dass jemand anderer sich als Alice ausgeben will. Die Korrektheit ist wieder leicht nachzurechnen: γ βa r = αk αk 2 2 (αe αe 2 2 )r = α k +e r α k 2+e 2 r 2 = α y αy 2 2. Auch bei diesem Protokoll sind alle Operationen effizient durchführbar: Intuitiv gesprochen führen wir das Identifikationsprotokoll von Schnorr lediglich zweimal parallel aus. Nun zur Sicherheit des Protokolls: Lemma 7.2. Wenn Eve einen Wert γ kennt, für den sie sich für mindestens zwei Werte von r als Alice ausgeben kann, so kann sie b,b 2 Z q berechnen mit β A = α b αb 2 2. Beweis. Eve kennt y,y 2,y,y 2,r,r mit r r und γ βa r = αy αy 2 2 sowie γ βa r = αy α y 2 r r 2. Es folgt also βa = α y y α y 2 y 2 2. Wegen r r folgt r r modq und da q prim ist, ist r r invertierbar modulo q. Potenzieren der Gleichung βa r r = α y y α y 2 y 2 2 mit (r r ) modq liefert mit b := (y y ) (r r ) modq und b 2 := (y 2 y 2 ) (r r ) modq die gewünschten Werte. Theorem 7.3. Wenn Eve einen Wert γ kennt, für den sie sich für mindestens zwei Werte von r als Alice ausgeben kann, so kann sie zusammen mit Alice dlog α2 α mit Wahrscheinlichkeit q leicht berechnen. Beweis. Nach dem obigen Lemma kennt Eve Werte b,b 2 Z q mit β A = α b αb 2 2. Von Alice erfährt sie die Werte e,e 2 mit β A = α e αe 2 2. Es folgt αb e = α e 2 b 2 2. Gilt nun (e,e 2 ) (b,b 2 ), z.b. e b, so ist wieder b e invertierbar modulo q und wir erhalten α = α (e 2 b 2 ) (b e ) 2, also dlog α2 α = (e 2 b 2 ) (b e ) modq. Ohne Beweis geben wir an, dass die Wahrscheinlichkeit für (e,e 2 ) (b,b 2 ) gerade q ist, woraus dann die Behauptung folgt. 7.3 Ein RSA-basiertes Identifikationsschema Wir wollen das Identifikationsverfahren von Schnorr mit Hilfe von RSA realisieren. Die TA wählt zwei verschiedene Primzahlen p,q, veröffentlicht N := p q und wählt einen
83 7.4. EIN SICHERES SCHLÜSSELAUSTAUSCHVERFAHREN 8 öffentlichen Exponenten e, e prim. Den geheimen RSA-Exponenten d mit der Eigenschaft e d modϕ(n) hält sie geheim. Kommunikation von Alice mit der TA: Alice wählt β A R Z N zufällig und schickt δ A := β e A sowie ID(A) an die TA. Die TA berechnet wie üblich s := sig TA (ID(A),δ A ) und sendet C(A) = (ID(A),δ A,s) an Alice zurück. RSA-basiertes Schnorr Identifikationsprotokoll:. Alice wählt k R Z N und sendet C(A) und γ := ke an Bob. 2. Bob prüft, ob ver TA ((ID(A),δ A ),s) = TRUE und sendet ein zufälliges r mit 0 r < e an Alice. 3. Alice berechnet y := k β r A 4. Bob prüft, ob γ = δ r A ye. und sendet y an Bob. Die Korrektheit folgt sofort aus δa r ye = βa e r ke βa e r = k e = γ. Die Effizienz des Verfahrens ist klar, da Exponentiation mit Hilfe von Repeated Squearing.5 und modulare Multiplikation bzw. Inversion effizient möglich sind. Für die Sicherheit des Verfahrens erhalten wir: Theorem 7.4. Wenn Eve einen Wert für γ kennt, für den sie sich für mindestens zwei Werte von r gegenüber Bob als Alice ausgeben kann, so kann sie β A berechnen, d.h. sie kann das RSA-Verfahren der TA brechen. Beweis. Angenommen Eve hat Werte y,y 2,r,r 2 mit r r 2 und γ = δ r A ye = δ r 2 A ye 2. O.B.d.A. setzen wir r > r 2 voraus. Dann gilt δ r r 2 A = ( y 2 y ) e. Wegen 0 < r r 2 < e und da e nach Wahl prim ist, gilt ggt(r r 2,e) =. Nun kann Eve t (r r 2 ) mode berechnen. Dann berechnet sie mit Hilfe von Division mit Rest f N mit (r r 2 ) t = f e +. Damit erhält sie δ f e+ A = δ (r r 2 ) t A = ( y 2 y ) e t, also δ A = ( y 2 y ) e t δ f e A. Potenzieren wir die Gleichung mit Hilfe des geheimen Exponenten d der TA, so erhalten wir β A = βa e d = δa d = ( y 2 y ) e t d δ f e d A = ( y 2 y ) t δ f A, d.h. Eve kann auch ohne Kenntnis von d den Wert β A berechnen. 7.4 Ein sicheres Schlüsselaustauschverfahren Wir hatten gesehen, dass das Schlüsselaustauschverfahren von Diffie & Hellman 4.3 nicht sicher gegen einen Woman-in-the-middle -Angriff ist. In diesem Abschnitt werden wir eine Modifikation bzw. Erweiterung von 4.3 kennenlernen, die einen solchen Angriff ausschließt. Der Woman-in-the-middle -Angriff funktionierte dann und nur dann, wenn es Eve gelingt sich gegenüber Bob als Alice und gegenüber Alice als Bob auszugeben und dann als Übersetzer zwischen beiden zu fungieren.
84 82 KAPITEL 7. IDENTIFIKATION UND AUTHENTIFIKATION Sei nun wieder G = α eine zyklische Gruppe (bzw. eine zyklische Untergruppe einer größeren zyklischen Gruppe) und e A sowie e B die geheimen Exponenten von Alice bzw. Bob, β A := α e A, β B := α e B sowie C(A) = (ID(A),β A,s A ) und C(B) = (ID(B),β B,s B ) die von der TA auf dem üblichen Wege erzeugten Zertifikate von Alice bzw. Bob. Dann können sich Alice und Bob gemäß dem folgenden Protokoll auf einen gemeinsamen geheimen Schlüssel K für ein symmetrisches Kryptosystem (z.b. für Rijndael) einigen: Authentifiziertes Schlüsselaustauschverfahren:. Alice sendet β A := α e A an Bob. 2. Bob berechnet β B := α e B, K := β e B A sowie y B := sig B (β B,β A ), wobei sig B sein geheimes Unterschriftenverfahren ist. Dann sendet er (C(B),β B,y B ) an Alice. 3. Alice berechnet K := β e A B, verifiziert mit Hilfe der öffentlichen Methode ver B, dass y B tatsächlich die Unterschrift von Bob auf (β B,β A ) ist. Dann überprüft sie mit Hilfe von ver TA, dass das Zertifikat C(B) von Bob stammt. Schließlich berechnet sie y A := sig A (β A,β B ) mit Hilfe ihres geheimen Unterschriftenverfahrens sig A und sendet (C(A),y A ) an Bob. 4. Bob überprüft mit Hilfe von ver A, ob y A Alice s Unterschrift auf (β A,β B ) ist und überprüft C(A) mit Hilfe von ver TA. Sind alle Überprüfungen positiv verlaufen, so können Alice und Bob sich der Identität des jeweiligen Gegenübers sicher sein und verfügen über den gemeinsamen Schlüssel K = α e A e B. Eve sieht nämlich nun wiederum nur die Werte β A,β B,y A,y B. Sie kann selbst den Wert y A nicht erzeugen, da sie sig A nicht kennt und sie kann y B nicht erzeugen, da sie sig B nicht kennt. Gäbe sich Eve gegenüber Bob als Alice aus, so müsste sie eine Unterschrift y E auf (β A,β B ) leisten. Da Bob jedoch die an ihn gesandte Unterschrift y E mit Hilfe von ver A überprüft, wird er erkennen, dass y E nicht von Alice erstellt wurde. Den gemeinsamen Schlüssel K kann sie ebenfalls nicht berechnen, da das Diffie & Hellman Problem DHP als ebenso schwer wie DLP angesehen werden kann.
85 Literaturverzeichnis [] J. A. Buchmann, Introduction to Cryptography, Undergraduate Texts in Mathematics, second edition, Springer-Verlag, 200 [2] J. Blömer, Vorlesungen zum RSA-Verfahren, Universität Paderborn, 2002 [3] J. Blömer, Vorlesungen zu Algorithmen in der Zahlentheorie, Universität Paderborn, 2002 [4] S. Bosch, Algebra, Springer Lehrbuch, 3. Auflage, Springer-Verlag, 999 [5] P. Bundschuh, Zahlentheorie, Springer Lehrbuch, 2. Auflage, Springer-Verlag, 992 [6] H. Cohen, A Course in Computational Algebraic Number Theory, Graduate Texts in Mathematics 38, Springer-Verlag, 993 [7] J. Daemen, V. Rijmen, AES Proposal: The Rijndael Block Cipher, Document version 2 vom , erhältlich im Web [8] J. von zur Gathen, Cryptography I, Skript zu den Vorlesungen zur Kryptographie, Universität Paderborn, Version vom März 2002 [9] J. von zur Gathen & J. Gerhard, Modern Computer Algebra, Cambridge University Press 999 [0] G. Hardy, E. Wright, Zahlentheorie, R. Oldenbourg, München, 958, Übersetzung ins Deutsche des Orginaltitels An Introduction to the Theory of Numbers erschienen bei Cambridge University Press [] K. Ireland, M. Rosen, A Classical Introduction to Modern Number Theorie, Graduate Texts in Mathematics 84, Second Edition, Springer-Verlag, 990 [2] K.-H. Kiyek, F. Schwarz, Lineare Algebra, Teubner Studienbücher Mathematik, B. G. Teubner, 999 [3] N. Koblitz, A Course in Number Theory and Cryptograpy, Graduate Texts in Mathematics 4, Second Edition, Springer-Verlag,
86 84 LITERATURVERZEICHNIS [4] U. Krengel, Einführung in die Wahrscheinlichkeitstheorie und Statistik, Vieweg Studium Aufbaukurs Mathematik, 5. Auflage, Vieweg Verlag, 2000 [5] H. Kurzweil, B. Stellmacher, Theorie der endlichen Gruppen Eine Einführung, Springer Lehrbuch,. Auflage, Springer-Verlag, 998 [6] A. J. Menezes, P. C. van Oorschot, S. A. Vanstone, Handbook of Applied Cryptography, CRC Press, Boca Raton, Florida, 997 [7] G. Scheja, U. Storch, Lehrbuch der Algebra (Unter Einschluß der Linearen Algebra) Teil, Mathematische Leitfäden, B. G. Teubner, 994 [8] G. Scheja, U. Storch, Lehrbuch der Algebra Teil 2, Mathematische Leitfäden, B. G. Teubner, 994 [9] A. Weil, Basic Number Theory, Die Grundlehren der Mathematischen Wissenschaften in Einzeldarstellungen Vol. 44, Springer-Verlag, 973
Primzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
Einführung in die Algebra
Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv
Lenstras Algorithmus für Faktorisierung
Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit
Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens
Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................
7 Rechnen mit Polynomen
7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn
Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema
Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema 2x 4 + x 3 + x + 3 div x 2 + x 1 = 2x 2 x + 3 (2x 4 + 2x 3 2x 2 ) x 3 + 2x 2 + x + 3 ( x
11. Das RSA Verfahren und andere Verfahren
Chr.Nelius: Kryptographie (SS 2011) 31 11. Das RSA Verfahren und andere Verfahren Eine konkrete Realisierung eines Public Key Kryptosystems ist das sog. RSA Verfahren, das im Jahre 1978 von den drei Wissenschaftlern
Modul Diskrete Mathematik WiSe 2011/12
1 Modul Diskrete Mathematik WiSe 2011/12 Ergänzungsskript zum Kapitel 4.2. Hinweis: Dieses Manuskript ist nur verständlich und von Nutzen für Personen, die regelmäßig und aktiv die zugehörige Vorlesung
50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte
50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien
8. Quadratische Reste. Reziprozitätsgesetz
O Forster: Prizahlen 8 Quadratische Reste Rezirozitätsgesetz 81 Definition Sei eine natürliche Zahl 2 Eine ganze Zahl a heißt uadratischer Rest odulo (Abkürzung QR, falls die Kongruenz x 2 a od eine Lösung
Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.
Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr. Kurzweil Florian Franzmann André Diehl Kompiliert am 10. April 2006 um 18:33
3.3 Eigenwerte und Eigenräume, Diagonalisierung
3.3 Eigenwerte und Eigenräume, Diagonalisierung Definition und Lemma 3.3.1. Sei V ein K-Vektorraum, φ End K (V ), λ K. Wir defnieren den zu λ gehörigen Eigenraum von φ als Dies ist ein Unterraum von V.
Der Zwei-Quadrate-Satz von Fermat
Der Zwei-Quadrate-Satz von Fermat Proseminar: Das BUCH der Beweise Fridtjof Schulte Steinberg Institut für Informatik Humboldt-Universität zu Berlin 29.November 2012 1 / 20 Allgemeines Pierre de Fermat
a n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:
Beispiel: Wir untersuchen die rekursiv definierte Folge a 0 + auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: ( ) (,, 7, 5,...) Wir können also vermuten, dass die Folge monoton fallend
11. Primfaktorzerlegungen
78 Andreas Gathmann 11 Primfaktorzerlegungen Euch ist sicher aus der Schule bekannt, dass sich jede positive ganze Zahl a als Produkt a = p 1 p n von Primzahlen schreiben lässt, und dass diese Darstellung
9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83
9.. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 Die Grundfrage bei der Anwendung des Satzes über implizite Funktionen betrifft immer die folgende Situation: Wir haben eine Funktion f : V W und eine Stelle x
ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN
ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN CHRISTIAN HARTFELDT. Zweiter Mittelwertsatz Der Mittelwertsatz Satz VI.3.4) lässt sich verallgemeinern zu Satz.. Seien f, g : [a, b] R auf [a,
RSA Verfahren. Kapitel 7 p. 103
RSA Verfahren RSA benannt nach den Erfindern Ron Rivest, Adi Shamir und Leonard Adleman war das erste Public-Key Verschlüsselungsverfahren. Sicherheit hängt eng mit der Schwierigkeit zusammen, große Zahlen
Computeralgebra in der Lehre am Beispiel Kryptografie
Kryptografie Grundlagen RSA KASH Computeralgebra in der Lehre am Beispiel Kryptografie Institut für Mathematik Technische Universität Berlin Kryptografie Grundlagen RSA KASH Überblick Kryptografie mit
7. Ringe und Körper. 7. Ringe und Körper 49
7. Ringe und Körper 49 7. Ringe und Körper In den bisherigen Kapiteln haben wir nur Gruppen, also insbesondere nur Mengen mit lediglich einer Verknüpfung, untersucht. In der Praxis gibt es aber natürlich
Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009
Das RSA-Verfahren Armin Litzel Proseminar Kryptographische Protokolle SS 2009 1 Einleitung RSA steht für die drei Namen Ronald L. Rivest, Adi Shamir und Leonard Adleman und bezeichnet ein von diesen Personen
Numerische Verfahren und Grundlagen der Analysis
Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)
Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester 2015. gehalten von Harald Baum
Fachschaft Mathematik und Informatik (FIM) LA I VORKURS Herbstsemester 2015 gehalten von Harald Baum 2. September 2015 Inhaltsverzeichnis 1. Stichpunkte zur Linearen Algebra I 2. Körper 3. Vektorräume
1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:
Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:
Kap. 8: Speziell gewählte Kurven
Stefan Lucks 8: Spezielle Kurven 82 Verschl. mit Elliptischen Kurven Kap. 8: Speziell gewählte Kurven Zur Erinnerung: Für beliebige El. Kurven kann man den Algorithmus von Schoof benutzen, um die Anzahl
Zeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
Absolute Stetigkeit von Maßen
Absolute Stetigkeit von Maßen Definition. Seien µ und ν Maße auf (X, Ω). Dann heißt ν absolut stetig bezüglich µ (kurz ν µ ), wenn für alle A Ω mit µ(a) = 0 auch gilt dass ν(a) = 0. Lemma. Sei ν ein endliches
Algebra. Patrik Hubschmid. 8. Oktober 2013
Algebra Patrik Hubschmid 8. Oktober 2013 Inhaltsverzeichnis 1 Fortführung der Gruppentheorie 7 1.1 Sylowsätze.................................... 7 3 Vorwort Dieses Skript zur Vorlesung Algebra im Wintersemester
10. Public-Key Kryptographie
Stefan Lucks 10. PK-Krypto 274 orlesung Kryptographie (SS06) 10. Public-Key Kryptographie Analyse der Sicherheit von PK Kryptosystemen: Angreifer kennt öffentlichen Schlüssel Chosen Plaintext Angriffe
Rekursionen. Georg Anegg 25. November 2009. Methoden und Techniken an Beispielen erklärt
Methoden und Techniken an Beispielen erklärt Georg Anegg 5. November 009 Beispiel. Die Folge {a n } sei wie folgt definiert (a, d, q R, q ): a 0 a, a n+ a n q + d (n 0) Man bestimme eine explizite Darstellung
Mathematischer Vorbereitungskurs für Ökonomen
Mathematischer Vorbereitungskurs für Ökonomen Dr. Thomas Zehrt Wirtschaftswissenschaftliches Zentrum Universität Basel Gleichungen Inhalt: 1. Grundlegendes 2. Lineare Gleichungen 3. Gleichungen mit Brüchen
Mathematik für Informatiker II. Beispiellösungen zur Probeklausur. Aufgabe 1. Aufgabe 2 (5+5 Punkte) Christoph Eisinger Sommersemester 2011
Mathematik für Informatiker II Christoph Eisinger Sommersemester 211 Beispiellösungen zur Probeklausur Aufgabe 1 Gegeben sind die Polynome f, g, h K[x]. Zu zeigen: Es gibt genau dann Polynome h 1 und h
11.3 Komplexe Potenzreihen und weitere komplexe Funktionen
.3 Komplexe Potenzreihen und weitere komplexe Funktionen Definition.) komplexe Folgen: z n = x n + j. y n mit zwei reellen Folgen x n und y n.) Konvergenz: Eine komplexe Folge z n = x n + j. y n heißt
Primzahlzertifikat von Pratt
Primzahlzertifikat von Pratt Daniela Steidl TU München 17. 04. 2008 Primzahltests in der Informatik "Dass das Problem, die Primzahlen von den Zusammengesetzten zu unterscheiden und letztere in ihre Primfaktoren
Probabilistische Primzahltests
Probabilistische Primzahltests Daniel Tanke 11. Dezember 2007 In dieser Arbeit wird ein Verfahren vorgestellt, mit welchem man relativ schnell testen kann, ob eine ganze Zahl eine Primzahl ist. Für einen
Informationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
Einführung in die Informatik I
Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen
Kapitel 4. Euklidische Ringe und die Jordansche Normalform. 4.1 Euklidische Ringe
Kapitel 4 Euklidische Ringe und die Jordansche Normalform 4.1 Euklidische Ringe Die Ringe der ganzen Zahlen, Z, sowie Polynomringe über Körpern, K[X], wobei K ein Körper ist, haben die folgenden Gemeinsamheiten:
2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik
Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,
5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)
Technische Universität München Zentrum Mathematik PD Dr. hristian Karpfinger http://www.ma.tum.de/mathematik/g8vorkurs 5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12) Aufgabe 5.1: In einer Implementierung
Zusatztutorium, 25.01.2013
Zusatztutorium, 25.01.2013 David Müßig muessig[at]mi.fu-berlin.de http://page.mi.fu-berlin.de/def/tutorium/ WiSe 12/13 1 Der Homomorphiesatz Der Homomorphiesatz scheint für viele eine Art rotes Tuch zu
Codierungstheorie Rudolf Scharlau, SoSe 2006 9
Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets
Mengensysteme, Wahrscheinlichkeitsmaße
Kapitel 1 Mengensysteme, Wahrscheinlichkeitsmaße Der Großteil der folgenden fundamentalen Begriffe sind schon aus der Vorlesung Stochastische Modellbildung bekannt: Definition 1.1 Eine Familie A von Teilmengen
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Lineare Gleichungssysteme
Brückenkurs Mathematik TU Dresden 2015 Lineare Gleichungssysteme Schwerpunkte: Modellbildung geometrische Interpretation Lösungsmethoden Prof. Dr. F. Schuricht TU Dresden, Fachbereich Mathematik auf der
Frohe Weihnachten und ein gutes neues Jahr!
Frohe Weihnachten und ein gutes neues Jahr! Die mit dem Stern * gekennzeichneten Übungen sind nicht verpflichtend, aber sie liefern zusätzliche Punkte. Unten wird immer mit I das reelle Intervall [0, 1]
3. Zusammenhang. 22 Andreas Gathmann
22 Andreas Gathmann 3. Zusammenhang Eine der anschaulichsten Eigenschaften eines topologischen Raumes ist wahrscheinlich, ob er zusammenhängend ist oder aus mehreren Teilen besteht. Wir wollen dieses Konzept
WS 2008/09. Diskrete Strukturen
WS 2008/09 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0809
Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
Minimale Darstellungen, Kommutator- und Fixräume, projektive Geometrie
Notation Die in dieser Arbeit verwendete Notation ist im Wesentlichen Standard, so wie sie beispielsweise in [As] zu nden ist. Einige Abweichungen hiervon, Klarstellungen und zusätzliche Notationen (sofern
3.1. Die komplexen Zahlen
3.1. Die komplexen Zahlen Es gibt viele Wege, um komplexe Zahlen einzuführen. Wir gehen hier den wohl einfachsten, indem wir C R als komplexe Zahlenebene und die Punkte dieser Ebene als komplexe Zahlen
6.2 Perfekte Sicherheit
04 6.2 Perfekte Sicherheit Beweis. H(B AC) + H(A C) = H(ABC) H(AC) + H(AC) H(C) Wegen gilt Einsetzen in die Definition gibt = H(AB C). H(A BC) = H(AB C) H(B C). I(A; B C) = H(A C) H(AB C) + H(B C). Da
Algebraische Kurven. Vorlesung 26. Die Schnittmultiplizität
Prof. Dr. H. Brenner Osnabrück SS 2012 Algebraische Kurven Vorlesung 26 Die Schnittmultiplizität Es seien zwei ebene algebraische Kurven C,D A 2 K gegeben, die keine Komponente gemeinsam haben. Dann besteht
Also kann nur A ist roter Südler und B ist grüner Nordler gelten.
Aufgabe 1.1: (4 Punkte) Der Planet Og wird von zwei verschiedenen Rassen bewohnt - dem grünen und dem roten Volk. Desweiteren sind die Leute, die auf der nördlichen Halbkugel geboren wurden von denen auf
Elementare Kryptographie
Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Institut AutoMATH MuPAD-Forschungsgruppe Elementare Kryptographie Kai Gehrs [email protected] Paderborn, 10. Mai 2006 2 Kryptographie
Was können Schüler anhand von Primzahltests über Mathematik lernen?
Was können Schüler anhand von Primzahltests über Mathematik lernen? Innermathematisches Vernetzen von Zahlentheorie und Wahrscheinlichkeitsrechnung Katharina Klembalski Humboldt-Universität Berlin 20.
Faktorisierung ganzer Zahlen mittels Pollards ρ-methode (1975)
Dass das Problem, die Primzahlen von den zusammengesetzten zu unterscheiden und letztere in ihre Primfaktoren zu zerlegen zu den wichtigsten und nützlichsten der ganzen Arithmetik gehört und den Fleiss
Praktikum Diskrete Optimierung (Teil 11) 17.07.2006 1
Praktikum Diskrete Optimierung (Teil 11) 17.07.2006 1 1 Primzahltest 1.1 Motivation Primzahlen spielen bei zahlreichen Algorithmen, die Methoden aus der Zahlen-Theorie verwenden, eine zentrale Rolle. Hierzu
RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:
RSA-Verschlüsselung Das RSA-Verfahren ist ein asymmetrisches Verschlüsselungsverfahren, das nach seinen Erfindern Ronald Linn Rivest, Adi Shamir und Leonard Adlemann benannt ist. RSA verwendet ein Schlüsselpaar
Die reellen Lösungen der kubischen Gleichung
Die reellen Lösungen der kubischen Gleichung Klaus-R. Löffler Inhaltsverzeichnis 1 Einfach zu behandelnde Sonderfälle 1 2 Die ganzrationale Funktion dritten Grades 2 2.1 Reduktion...........................................
Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.
Basis und Dimension Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren. Definition. Sei V ein K-Vektorraum und (v i ) i I eine Familie von Vektoren
Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer
Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der
Analysis I für Studierende der Ingenieurwissenschaften
Fachbereich Mathematik der Universität Hamburg WiSe 2015/16 Prof. Dr. M. Hinze Dr. P. Kiani Analysis I für Studierende der Ingenieurwissenschaften Lösungshinweise zu Blatt 2 Aufgabe 1: (12 Punkte) a) Beweisen
1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.
Matrizennorm Es seien r,s N Mit M r,s (R bezeichnen wir die Menge der reellen r s- Matrizen (also der linearen Abbildungen R s R r, und setze M s (R := M s,s (R (also die Menge der linearen Abbildungen
Euklidischer Algorithmus, Restklassenring und seine Struktur, Chinesischer Restklassensatz
Tobias Kraushaar Kaiserstr. 178 44143 Dortmund Matr.- Nr.: 122964 Euklidischer Algorithmus, Restklassenring und seine Struktur, Chinesischer Restklassensatz 1. EINLEITUNG... 2 2. HAUPTTEIL... 3 2.1. Der
Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)
Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff
Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen
Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in
Technische Informatik - Eine Einführung
Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine
Anhang I zur Vorlesung Kryptologie: Elementare Zahlentheorie
Anhang I zur Vorlesung Kryptologie: Elementare Zahlentheorie von Peter Hellekalek Fakultät für Mathematik, Universität Wien, und Fachbereich Mathematik, Universität Salzburg Tel: +43-(0)662-8044-5310 Fax:
Public-Key-Algorithmen WS2015/2016
Public-Key-Algorithmen WS2015/2016 Lernkontrollfragen Michael Braun Was bedeuten die kryptographischen Schutzziele Vertraulichkeit, Integrität, Nachrichtenauthentizität, Teilnehmerauthentizität, Verbindlichkeit?
Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)
Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR) Eine Firma stellt USB-Sticks her. Sie werden in der Fabrik ungeprüft in Packungen zu je 20 Stück verpackt und an Händler ausgeliefert. 1 Ein Händler
Bsp: Die kleinsten Carmichael-Zahlen sind 561, 1105, 1729, Es gibt unendlich viele Carmichael-Zahlen (Beweis 1994).
Primzahltest Wir wollen testen, ob eine gegebene Zahl n eine Primzahl ist Effizienter Algorithmus zum Faktorisieren ist unbekannt Kontraposition des Kleinen Satzes von Fermat liefert: Falls a n 1 1 mod
Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)
Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009) Probleme unseres Alltags E-Mails lesen: Niemand außer mir soll meine Mails lesen! Geld abheben mit der EC-Karte: Niemand außer mir soll
Codierungsverfahren SS 2011. Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur
Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur Wie die zyklischen BCH-Codes zur Mehrbitfehler-Korrektur eignen sich auch die sehr verwandten Reed-Solomon-Codes (= RS-Codes) zur Mehrbitfehler-Korrektur.
Musterlösungen zur Linearen Algebra II Blatt 5
Musterlösungen zur Linearen Algebra II Blatt 5 Aufgabe. Man betrachte die Matrix A := über dem Körper R und über dem Körper F und bestimme jeweils die Jordan- Normalform. Beweis. Das charakteristische
1 Ordnung muß sein. 1.1 Angeordnete Körper. 1.2 Folgerungen aus den Anordnungsaxiomen. ( c) (b a) > 0. Somit a c b c > 0.
1 Ordnung uß sein 1.1 Angeordnete Körper Wir nehen einal an, daß es in eine Körper Eleente gibt, die wir positiv nennen. Welche Eigenschaften sollen diese haben? O1) Wenn x und y positiv sind, dann auch
Binärdarstellung von Fliesskommazahlen
Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M
Mathematik für Studierende der Biologie und des Lehramtes Chemie Wintersemester 2013/14. Auswahl vorausgesetzter Vorkenntnisse
UNIVERSITÄT DES SAARLANDES FACHRICHTUNG 6.1 MATHEMATIK Dipl.-Math. Kevin Everard Mathematik für Studierende der Biologie und des Lehramtes Chemie Wintersemester 2013/14 Auswahl vorausgesetzter Vorkenntnisse
Definition:Eine meromorphe Modulform vom Gewicht k Z ist eine meromorphe. f : H C. (ii) C > 0, so daß f(z) im Bereich Im z > C keine Singularität hat.
Die k/2 - Formel von Renate Vistorin Zentrales Thema dieses Vortrages ist die k/2 - Formel für meromorphe Modulformen als eine Konsequenz des Residuensatzes. Als Folgerungen werden danach einige Eigenschaften
2 3 x3 17. x k dx = x k x k+1 k +1. Mit jeder weiteren partiellen Integration reduziert sich der Grad des Faktors x n, induktiv erhalten wir also
Universität Konstanz Fachbereich Mathematik und Statistik Repetitorium Analysis 0 Dr DK Huynh Blatt 8 Aufgabe 6 Bestimmen Sie (a) (x + x 7x+)dx (c) (f) x n exp(x)dx (n N fest) sin (x)dx (g) (b) (d) ln(x)dx
Wie kann man beweisen, dass (H, ) eine Gruppe ist?
Wie kann man beweisen, dass (H, ) eine Gruppe ist? Wie kann man beweisen, dass (H, ) eine Gruppe ist? (zb wenn die Multiplikation mit Hilfe einer Tabelle gegeben ist) Wie kann man beweisen, dass (H, )
Rekursionen (Teschl/Teschl 8.1-8.2)
Rekursionen (Teschl/Teschl 8.1-8.2) Eine Rekursion kter Ordnung für k N ist eine Folge x 1, x 2, x 3,... deniert durch eine Rekursionsvorschrift x n = f n (x n 1,..., x n k ) für n > k, d. h. jedes Folgenglied
RSA-Verschlüsselung. von Johannes Becker Gießen 2006/2008
RSA-Verschlüsselung von Johannes Becker Gießen 2006/2008 Zusammenfassung Es wird gezeigt, wieso das nach Ronald L. Rivest, Adi Shamir und Leonard Adleman genannte RSA-Krptosstem funktioniert, das mittlerweile
194 Beweis eines Satzes von Tschebyschef. Von P. E RDŐS in Budapest. Für den zuerst von T SCHEBYSCHEF bewiesenen Satz, laut dessen es zwischen einer natürlichen Zahl und ihrer zweifachen stets wenigstens
Mathematik 1. Lösungsvorschläge zum 2. Übungsblatt
Hochschule Regensburg Fakultät Informatik/Mathematik Christoph Böhm Wintersemester 0/0 Wirtschaftsinformatik Bachelor IW Informatik Bachelor IN Vorlesung Mathematik Mathematik Lösungsvorschläge zum Übungsblatt
Beispiel 48. 4.3.2 Zusammengesetzte Zufallsvariablen
4.3.2 Zusammengesetzte Zufallsvariablen Beispiel 48 Ein Würfel werde zweimal geworfen. X bzw. Y bezeichne die Augenzahl im ersten bzw. zweiten Wurf. Sei Z := X + Y die Summe der gewürfelten Augenzahlen.
Kapitel 15. Lösung linearer Gleichungssysteme
Kapitel 15. Lösung linearer Gleichungssysteme Lineare Gleichungssysteme Wir befassen uns nun mit der Lösung im allgemeinen nichthomogener linearer Gleichungssysteme in zweifacher Hinsicht. Wir studieren
x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt
- 17 - Die Frage ist hier also: Für welche x R gilt x = x + 1? Das ist eine quadratische Gleichung für x. Es gilt x = x + 1 x x 3 = 0, und man kann quadratische Ergänzung machen:... ( ) ( ) x x + = 3 +
Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!
Mathefritz 5 Terme und Gleichungen Meine Mathe-Seite im Internet kostenlose Matheaufgaben, Skripte, Mathebücher Lernspiele, Lerntipps, Quiz und noch viel mehr http:// www.mathefritz.de Seite 1 Copyright
Kryptographische Verfahren auf Basis des Diskreten Logarithmus
Kryptographische Verfahren auf Basis des Diskreten Logarithmus -Vorlesung Public-Key-Kryptographie SS2010- Sascha Grau ITI, TU Ilmenau, Germany Seite 1 / 18 Unser Fahrplan heute 1 Der Diskrete Logarithmus
Beispiellösungen zu Blatt 111
µ κ Mathematisches Institut Georg-August-Universität Göttingen Beispiellösungen zu Blatt 111 Aufgabe 1 Ludwigshafen hat einen Bahnhof in Dreiecksform. Markus, Sabine und Wilhelm beobachten den Zugverkehr
Statistische Untersuchungen zu endlichen Funktionsgraphen
C# Projekt 1 Name: Statistische Untersuchungen zu endlichen Funktionsgraphen Aufgabe: Basierend auf dem Abschnitt 2.1.6. Random mappings, Kap.2, S 54-55, in [1] sollen zunächst für eine beliebige Funktion
Kongruenzrechnung. 2 Kongruenzrechnung 7 2.1 Rechnenregeln Addition und Multiplikation... 7 2.2 Rechenregeln bzgl. verschiedener Moduln...
Kongruenzrechnung Inhaltsverzeichnis 1 Einführung und Definitionen 2 1.1 Einige Beispiele aus dem Alltag..................... 2 1.2 Kongruenzrechnung im Alltag und Rechenproben........... 3 1.3 Kongruenzen
Approximation durch Taylorpolynome
TU Berlin Fakultät II - Mathematik und Naturwissenschaften Sekretariat MA 4-1 Straße des 17. Juni 10623 Berlin Hochschultag Approximation durch Taylorpolynome Im Rahmen der Schülerinnen- und Schüler-Uni
10. Kryptographie. Was ist Kryptographie?
Chr.Nelius: Zahlentheorie (SoSe 2015) 39 10. Kryptographie Was ist Kryptographie? Die Kryptographie handelt von der Verschlüsselung (Chiffrierung) von Nachrichten zum Zwecke der Geheimhaltung und von dem
WS 2013/14. Diskrete Strukturen
WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314
Theoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme [email protected] Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A
Ferienakademie 2001: Kryptographie und Sicherheit offener Systeme. Faktorisierung. Stefan Büttcher [email protected]
Ferienakademie 2001: Kryptographie und Sicherheit offener Systeme Faktorisierung Stefan Büttcher [email protected] 1 Definition. (RSA-Problem) Gegeben: Ò ÔÕ, ein RSA-Modul mit unbekannten Primfaktoren
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
