Kapitel 2: Zahlentheoretische Algorithmen Gliederung 1. 2. 3. 4. 5. 2/2, Folie 1 Asymptotische Notationen Zahlentheoretische Algorithmen Sortierverfahren String Matching Ausgewählte Datenstrukturen © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Gliederung des Abschnitts Grundlagen aus der Zahlentheorie Fahrplan • • • elementare Grundbegriffe eine Folgerung aus dem chinesischen Restesatz der kleine Satz von Fermat ... wir wollen nur soviel Zahlentheorie einführen, damit wir die Korrektheit des Ansatzes zur Realisierung der Entschlüsselung beim Kryptosystem von Rabin nachweisen können • 2/2, Folie 2 Korrektheit des Kryptosystems von Rabin © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Elementare Grundbegriffe aus der Zahlenthorie zentrale Begriffe und Bezeichnungen • es seien a,b, ... ganze Zahlen • • • • a teilt b, falls es ein k mit b = a*k gibt jede Zahl a ≥ 2, die nur die trivialen Teiler 1 und a hat, heißt Primzahl jede Zahl a ≥ 2, die keine Primzahl ist, heißt zusammengesetzte Zahl für jedes a und jedes n ≥ 0 existieren eindeutig bestimmte ganze Zahlen q und r mit 0 ≤ r < n, so daß a = q*n + r gilt ... r nennt man den Rest von a bei Teilung durch n (/* wir schreiben r = a mod n */) ... wenn a und b bei Teilung durch n denselben Rest lassen, so schreiben wir a ≡ b mod n 2/2, Folie 3 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Grundbegriffe aus der Zahlentheorie Grundlegende Eigenschaften • es seien a,b und n ganze Zahlen mit n ≥ 0 • dann gilt: (1) (2) 2/2, Folie 4 © 2009 Prof. Steffen Lange (a + b) mod n ≡ (a mod n) + (b mod n) (a * b) mod n ≡ (a mod n) * (b mod n) - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Grundbegriffe aus der Zahlentheorie Quadratische Reste • es seien a und n ganze Zahlen mit n ≥ 0 • a ist ein quadratischer Rest bzgl. n, falls es eine Zahl b mit 0 < b < n gibt, so daß gilt: b2 ≡ a mod n ... b nennt man auch eine Quadratwurzel von a Beispiel: n = 7 2/2, Folie 5 © 2009 Prof. Steffen Lange - HDa/FbI - 1 2 3 4 5 6 1 1 2 3 4 5 6 2 2 4 6 1 3 5 3 3 6 2 5 1 4 4 4 1 5 2 6 3 5 5 3 1 6 4 2 6 6 5 4 3 2 1 Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Grundbegriffe aus der Zahlentheorie Eigenschaften Quadratischer Reste • es seien a und n ganze Zahlen mit n ≥ 0 • • nicht jedes a ist ein quadratischer Rest wenn n eine Primzahl und a ein quadratischer Rest bzgl. n ist, dann hat a genau zwei Quadratwurzeln b und b‘ mit 0 < b,b‘ < n, wobei b‘ ≡ n - b mod n gilt Beispiel: n = 7 2/2, Folie 6 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen a b b‘ 1 1 6 2 2 5 4 3 4 Kapitel 2: Zahlentheoretische Algorithmen Grundbegriffe aus der Zahlentheorie Eigenschaften Quadratischer Reste (cont.) • es seien a eine ganze Zahlen, p und q Primzahlen und n = pq • wenn a ein quadratischer Rest bzgl. n ist, so ist a auch ein quadratischer Rest bzgl. p und q wenn a ein quadratischer Rest bzgl. n ist, dann hat a höchstens vier Quadratwurzeln • Beispiel: p = 3 und q = 5 2/2, Folie 7 • es gilt 22 ≡ 72 ≡ 82 ≡ 132 ≡ 4 mod pq • • es gilt 22 ≡ 72 ≡ 82 ≡ 132 ≡ 1 mod p und 12 ≡ 22 ≡ 1 mod p es gilt 22 ≡ 72 ≡ 82 ≡ 132 ≡ 4 mod q und 22 ≡ 32 ≡ 4 mod q © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Eine Folgerung aus dem chinesischen Restesatz Einordnung • beim chinesischen Restesatz geht es darum, simultan Kongruenzen zu lösen • beispielsweise könnte man daran interessiert sein, ein Zahl x zu finden, die bei Teilung durch p = 5 den Rest 2 und bei Teilung durch q = 13 den Rest 3 läßt (/* x = 42 hat diese Eigenschaft */) ... der chinesische Restesatz sagt, daß man - wenn p und q keinen gemeinsamen Teiler haben - es eine eindeutig bestimmte Zahl x < pq mit den gewünschten Eigenschaften gibt (/* außerdem zeigt er noch einen Weg, wie man x bestimmen kann */) 2/2, Folie 8 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Eine Folgerung aus dem chinesischen Restesatz Interessierender Zusammenhang 2/2, Folie 9 • • • es seien p und q Primzahlen und x eine ganze Zahl mit 0 < x < p*q es seien mp = x mod p und mq = x mod q ferner seien zp und zq ganze Zahlen, so daß zpp + zqq = 1 gilt • Dann gilt: © 2009 Prof. Steffen Lange x ≡ (zpp*mq + zqq*mp) mod pq - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Eine Folgerung aus dem chinesischen Restesatz Nachweis der Eigenschaft • es seien c1 und c2 so gewählt, daß x = c1p + mp und x = c2q + mq • offenbar gilt: zppmq + zqqmp = zpp*(x - c2q) + zqq*(x - c1p) = - zpp*c2q - zqq*c1p + x*(zpp + zqq) = - zpp*c2q - zqq*c1p + x • außerdem gilt: zpp*c2q ≡ 0 mod pq und zqq*c1p ≡ 0 mod pq • also erhalten wir: (zpp*mq + zqq*mp) mod pq = (-zpp*c2q - zqq*c1p + x) mod pq ≡ (-zpp*c2q mod pq) + (-zqq*c1p mod pq) + (x mod pq) ≡ 0 + 0 + (x mod pq) ≡ x mod pq 2/2, Folie 10 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Der kleine Satz von Fermat Grundaussage • es seien p eine Primzahl und a eine ganze Zahl mit 0 < a < p • Dann gilt: a(p-1) ≡ 1 mod p a x6 1 1 2 64 =7*9 + 1 3 729 = 7*14 + 1 4 4096 = 7*585 + 1 5 15625 = 7*2232 +1 6 46656 = 7*6665 + 1 Beispiel: p = 7 2/2, Folie 11 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Korrektheit des Kryptosystems von Rabin Zur Erinnerung • es seien p und q Primzahlen mit p ≡ 3 mod 4 und q ≡ 3 mod 4 • • es sei m die Nachricht, die Lucie an Charly B. schicken will es sei k die von Lucie verschickte verschlüsselte Nachricht, d.h. k ist so gewählt, daß k ≡ m2 mod pq gilt Entschlüsselung (/* Schritt 1 */) 2/2, Folie 12 • Charly B. bestimmt zunächst natürliche Zahlen mp < p und mq < q mit mp ≡ k(p+1)/4 mod p und mq ≡ k(q+1)/4 mod q • Dann gilt: © 2009 Prof. Steffen Lange mp2 ≡ k mod p und mq2 ≡ k mod q - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Korrektheit des Kryptosystems von Rabin Korrektheit der Eigenschaft (/* Schritt 1 */) • offenbar gilt: (k(p+1)/4)2 = k(p+1)/2 = k(p-1)/2 * k • außerdem folgt aus m2 ≡ k mod p*q auch m2 ≡ k mod p • also gilt: k(p-1)/2 ≡ (m2)(p-1)/2 mod p ≡ m(p-1) mod p ≡ 1 mod p • zusammen ergibt sich: mp2 ≡ (k(p-1)/2 * k) mod p ≡ (k mod p) * (k(p-1)/2 mod p) ≡ (k mod p) * (1 mod p) ≡ k mod p 2/2, Folie 13 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Korrektheit des Kryptosystems von Rabin Entschlüsselung (/* Schritt 2 */) • • Charly B. bestimmt ganze Zahlen zp und zq mit zpp + zqq = 1 Charly B. bestimmt die natürlichen Zahlen s1,t1 < pq mit s1 ≡ (zpp*mq + zqq*mp) mod pq und t1 ≡ (zpp*mq - zqq*mp) mod pq sowie die Zahlen s2 = pq - s1 und t2 = pq - t1 • Dann gilt: s12 ≡ k mod pq, s22 ≡ k mod pq t12 ≡ k mod pq und t22 ≡ k mod pq ... da k ein quadratischer Rest ist und p und q Primzahlen sind, gibt es keine anderen Quadratwurzeln von k bzgl. p außer s1, s2, t1 und t2 ... also muß eine dieser Zahlen gleich der von Lucie verschlüsselten Nachricht m sein 2/2, Folie 14 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Korrektheit des Kryptosystems von Rabin Korrektheit der Eigenschaft (/* Schritt 2 */) • es sei x derart gewählt, daß mp ≡ x mod p und mq ≡ x mod q gilt (/* also gilt natürlich auch mp2 ≡ x2 mod p und mq2 ≡ x2 mod q */) • zusammen mit der Folgerung aus dem chinesischen Restesatz ergibt sich: (zpp*mq + zqq*mp) ≡ x mod pq • also gilt auch (zpp*mq + zqq*mp)2 ≡ x2 mod pq • indem wir x durch k ersetzen, erhalten wir wie gewünscht: s12 = (zpp*mq + zqq*mp)2 ≡ k mod pq 2/2, Folie 15 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Korrektheit des Kryptosystems von Rabin Korrektheit der Eigenschaft (/* Schritt 2, cont. */) • um zu zeigen, daß t1 die gewünschte Eigenschaft hat, kann man wie folgt argumentieren • aus (zpp*mq + zqq*mp)2 ≡ k mod pq folgt durch einfaches Umformen (/* binomische Formel anwenden */), daß außerdem gilt: (zpp*mq)2 + (zqq*mp)2 ≡ k mod pq • außerdem gilt: (zpp*mq)2 + (zqq*mp)2 = (zpp*mq - zqq*mp)2 + 2*zpp*mq*zqq*mp • also muß auch gelten: t1 = (zpp*mq - zqq*mp)2 ≡ k mod pq • für s2 und t2 folgt die gewünschte Eigenschaft aus dem folgenden Zusammenhang Wenn x2 ≡ y mod z, so gilt auch (z - x)2 ≡ y mod z. 2/2, Folie 16 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen