Kapitel 2: Zahlentheoretische Algorithmen Gliederung 1. 2. 3. 4. 5. 2/1, 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 dieses Kapitels Fahrplan • • • • 2/1, Folie 2 Motivation • Kryptosysteme • Kryptosysteme mit öffentlichen Schlüsseln Ein Beispiel (/* Kryptosystem nach Rabin */) Grundlagen aus der Zahlentheorie Abgeleitete algorithmische Fragestellungen • Berechnung von modularen Potenzen • Berechnung von modularen Inversen © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Motivation Problemstellung • • 2/1, Folie 3 zwei Personen: Lucy und Charly B. Lucy will an Charly B. eine geheime Nachricht m über einen unsicheren Kanal schicken © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme Illustration Nachricht Verschlüsselung Kryptotext unsicherer Kanal mit Hilfe eines Schlüssels e 2/1, Folie 4 © 2009 Prof. Steffen Lange - HDa/FbI - Entschlüsselung mit Hilfe eines Schüssels d Effiziente Algorithmen Nachricht Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme Modellierung • • • Menge M der zulässigen Nachrichten Menge K der zulässigen Kryptotexte Menge S der zulässigen Schlüssel • • Familie der zulässigen Verschlüsselungsfunktionen Es: M → K mit s ∈ S Familie der zulässigen Entschlüsselungsfunktionen Ds: K → M mit s ∈ S • zugrunde liegende Randbedingung • 2/1, Folie 5 für jeden Schlüssel e ∈ S gibt es einen passenden Schlüssel d ∈ S, so daß für alle Nachrichten m ∈ M gilt: Dd(Ee(m)) = m © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme Ein einfaches Beispiel • • • M ist die Menge aller Texte in deutscher Sprache K ist die Menge aller endlicher Folgen von geordneten Paaren (x,y) natürlicher Zahlen S ist die Menge aller Bücher deutscher Sprache • (zeichenweise) Verschlüsselung mit einem Buch s • • (paarweise) Entschlüsselung mit einem Buch s • 2/1, Folie 6 um einen Buchstaben z zu verschlüsseln, wird eine Seite x des Buchs s aufgeschlagen und ein Position y auf Seite x bestimmt, an der z vorkommt (/* im Klartext wird z durch das Paar (x,y) ersetzt */) um Paar (x,y) zu entschlüsseln, wird der Buchstabe z bestimmt, der auf Seite x an Position y steht (/* im Kryptotext wird das Paar (x,y) durch den Buchstaben z ersetzt */) © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme Ein einfaches Beispiel (/* cont. */) • Lucie und Charly B. einigen sich vorab über das Buch s, welches sie aktuell zum Verschlüsseln und Entschlüsseln verwenden wollen • wenn beide dasselbe Buch s verwenden (/* d.h. es gilt e = d = s */), so gilt offenbar für alle m ∈ M gilt: Dd(Ee(m)) = m ... typisch: • • 2/1, Folie 7 © 2009 Prof. Steffen Lange Lucie und Charly benutzen denselben Schlüssel (/* Stichwort: symmetrische Kryptosysteme */) die verwendeten Schlüssel sind nur für die Kommunikation zwischen Lucie und Charly B. geeignet (/* Stichwort: klassische Kryptosysteme */) - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Klassische Kryptosysteme Eigenschaften • die beteiligten Personen müssen sich vorab über das verwendete Kryptosystem und die verwendeten Schlüssel e und d zum Ver- und Entschlüsseln einigen (/* in vielen Fällen gilt e = d */) • ein Schlüsselpaar (e,d) wird einem Paar von kommunizierenden Personen (/* und in vielen Fällen - aus Gründen der Sicherheit - auch nur für eine Kommunikation */) zugeordnet Anforderungen: • • 2/1, Folie 8 © 2009 Prof. Steffen Lange Sicherheit des verwendeten Kryptosystems sichere Verteilung der Schlüssel - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Grundidee • • jeder beteiligten Person P wird ein Schlüsselpaar (ep,dp) zugeordnet, wobei der Schlüssel ep zum Verschlüsseln öffentlich bekannt gemacht wird und der Schlüssel dp zum Entschlüsseln von P geheim gehalten wird will irgendeine andere Person P‘ mit der Person P kommunizieren, so verwendet sie zum Verschlüsseln einer Nachricht an P den öffentlich bekannten Schlüssel ep von P Anforderungen: • 2/1, Folie 9 © 2009 Prof. Steffen Lange - Sicherheit des verwendeten Kryptosystems HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Illustration Nachricht Kryptotext Verschlüsselung unsicherer Kanal mit Hilfe des öffentlichen Schlüssels ecb von Charly B. Nachricht Verschlüsselung 2/1, Folie 10 © 2009 Prof. Steffen Lange - HDa/FbI Nachricht mit Hilfe des privaten Schüssels dcb von Charly B. Kryptotext unsicherer Kanal mit Hilfe des öffentlichen Schlüssels ecb von Charly B. Entschlüsselung Entschlüsselung Nachricht mit Hilfe des privaten Schüssels dcb von Charly B. - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Anmerkungen • damit der gesamte Ansatz funktioniert, müssen allen teilnehmenden Personen die öffentlichen Schlüssel der anderen Personen und die verwendeten Verschlüsselungsverfahren bekannt sein ... das Mehr an Sicherheit, daß man sich dadurch verspricht, daß neben der verwendeten Schlüsseln auch das verwendete Kryptosystem „geheim“ gehalten wird, gibt es nicht mehr ... es werden so genannte „chosen-plaintext“ Angriffe möglich 2/1, Folie 11 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Konsequenzen - Anforderungen Nachricht Verschlüsselung Kryptotext unsicherer Kanal mit Hilfe des öffentlichen Schlüssels ecb von Charly B. Entschlüsselung Nachricht mit Hilfe des privaten Schüssels dcb von Charly B. • ... für alle Nachrichten m ∈ M gilt: Ddcb(Eecb(m)) = m • offenbar ist die Entschlüsselungsfunktion Ddcb(.) äquivalent zur Umkehrfunktion E-1ecb(.) der Verschlüsselungsfunktion Eecb(.) ... das Kryptosystem ist sicher, wenn die verwendete Verschlüsselungsfunktion Eecb(.) ganz bestimmte Eigenschaften hat (/* Stichwort: Einwegfunktion */) 2/1, Folie 12 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Idee hinter dem Begriff Einwegfunktion • • es seien M die Menge der zulässigen Nacrichten und K die Menge der zulässigen Kryptotexte es sei E: M → K eine umkehrbar eindeutige Funktion von M nach K • wenn E(.) als Verschlüsselungsfunktion verwendet werden will, so muß • • • 2/1, Folie 13 es „leicht“ sein, die Funktion E(.) zu berechnen (/* das ist der Job von Lucie, wenn sie Charly B. eine Nachricht schicken will */) es „schwierig“ sein, die zugehörige Umkehrfunktion E-1(.) zu berechnen (/* das ist der Job eines Angreifers, der die verschlüsselte Nachricht „knacken“ will */) es „leicht“ sein, die zugehörige Umkehrfunktion E-1(.) zu berechnen, wenn man über zusätzliche Informationen verfügt (/* das ist der Job von Charly B., wenn er die empfangene Nachricht entschlüsselt */) © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln Anmerkungen • • in jedem guten Buch zur Komplexitätstheorie/Kryptographie findet man exakte Definitionen der verwendeten Begriffe „leicht“ und „schwierig“ dahinter stecken folgende Vorstellungen • • „leicht“ bedeutet, daß es einen Algorithmus gibt, der die jeweilige Funktion in polynomieller Zeit berechnet (/* die Komplexität ist also O(nr) für ein r ∈ N */) „schwierig“ bedeutet, daß es nicht einmal einen randomisierten Algorithmus gibt, der die jeweilige Funktion in polynomieller Zeit berechnet (/* randomisiert heißt, daß der Algorithmus mit hoher Wahrscheinlichkeit das richtige Ergebnis berechnet */) ... bisher ist für keine Funktion nachgewiesen worden, daß sie eine Einwegfunktion ist ... aber es gibt einige Kandidaten, die man auch in der Praxis verwendet 2/1, Folie 14 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Grundidee • • es sei n ∈ N mit n > 0 es seien M und K jeweils gleich der Menge aller natürlicher Zahlen z mit z < n ... jeder Text kann als natürliche Zahl kodiert werden ... falls die einem Text zugeordnete Zahl zu groß ist, zerlegt man sie in Blöcke kleinerer Zahlen, die separat verschlüsselt werden • es wird die folgende Verschlüsselungsfunktion En: M → K verwendet En(m) = k mit k < n und k ≡ m2 mod n 2/1, Folie 15 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Anmerkungen zur verwendeten Verschlüsselungsfunktion • die Verschlüsselungsfunktion En(.) ist leicht zu berechnen • aber, die Verschlüsselungsfunktion En(.) ist nicht umkehrbar eindeutig, d.h. es zu einem gegebenen k ∈ K mehrere m ∈ M mit En(m) = k gibt ... die Anzahl hängt von der Wahl von n ab (/* im besten Fall gibt es genau zwei m mit En(m) = k */) • es wird davon ausgegangen, daß es im allgemeinen schwierig ist, die Umkehrfunktion E-1n(.) zu berechnen ... das hängt von der Wahl von n ab (/* falls n eine Primzahl ist bzw. die Primfaktoren von n bekannt sind, geht es „leicht“, wenn die benutzen Primzahlen bestimmte Eigenschaften haben */) 2/1, Folie 16 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Details (/* Festlegung des Schlüsselpaars */) • • ... Lucie, Linus und andere wollen geheime Nachrichten an Charly B. schicken das Charly B. zugeordnete Schlüsselpaar (ecb,dcb) wird wie folgt gebildet • • • Charly B. wählt zwei große Primzahlen p und q mit p ≡ 3 mod 4 und q ≡ 3 mod 4 aus Charly B. wählt als seinen öffentlichen Schlüssel ecb die Zahl ecb = n = p*q Charly B. wählt als seinen privaten Schlüssel dcb das Paar dcb = (p,q) ... große Primzahlen (/* Sicherheit des Kryptosystems */) ... Rest 3 bei Teilung durch 4 (/* macht das Entschlüsseln für Charly B. „leicht“ */) 2/1, Folie 17 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Details (/* Verschlüsselung */) 2/1, Folie 18 • es sei m ∈ M die geheime Nachricht, welche Lucie an Charly B. • verschicken will Lucie verwendet den öffentlichen Schlüssel ecb = n von Charly B. • Lucie bestimmt die Zahl k < n mit k ≡ m2 mod n, • d.h. es gilt Eecb(m) = k Lucie schickt k an Charly B © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Details (/* Entschlüsselung */) • es sei k ∈ K die verschlüsselte Nachricht, welche Charly B. von Lucie • erhalten hat Charly B. verwendet seinen privaten Schlüssel dcb = (p,q) • Charly B. bestimmt die natürlichen Zahl mp < p und mq < q mp ≡ k(p+1)/4 mod p und mq ≡ k(q+1)/4 mod q • Charly B. bestimmt ganze Zahlen zp und zq mit zpp + zqq = 1 • Charly B. bestimmt die natürlichen Zahlen s1,t1 < n mit s1 ≡ (zpp*mq + zqq*mp) mod n und t1 ≡ (zpp*mq - zqq*mp) mod n • Charly B. bestimmt unter den Zahlen s1,s2 = n - s1, t1 und t2 = n - t1 diejenige Zahl z, die eine sinnvolle Nachricht darstellt, d.h. es gilt z = Ddcb(k) = E-1ecb(k) 2/1, Folie 19 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Ein Beispiel (/* Festlegung des Schlüsselpaars */) • • • 2/1, Folie 20 Charly B. wählt die Primzahlen p = 43 und q = 47 der öffentliche Schlüssel ecb von Charly B. ist dann die Zahl n = 43*47 = 2021 der private Schlüssel dcb von Charly B. ist dann das Paar (43,47) © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Ein Beispiel (/* Verschlüsselung */) • 2/1, Folie 21 • es sei m = 741 die geheime Nachricht, die Lucie an Charly B. verschicken will offenbar gilt 7412 = 549081 ≡ 1390 mod 2021 • also schickt Lucy die Zahl k = 1390 an Charly B. © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Ein Beispiel (/* Entschlüsselung */) 2/1, Folie 22 • • es gilt mp = 1390(43+1)/4 = 139011 ≡ 10 mod 43 es gilt mq = 1390(47+1)/4 = 139012 ≡ 36 mod 47 • für zp = -12 und zq = 11 gilt zpp + zqq = -12*43 + 36*11 = 1 • • es gilt s1 ≡ (zpp*mq + zqq*mp) = -12*43*36 + 11*47*10 ≡ 741 mod 2021 es gilt t1 ≡ (zpp*mq - zqq*mp) = -12*43*36 - 11*47*10 ≡ 506 mod 2021 • also ist eine der Nachrichten s1 = 741, s2 = n - s1 = 1280, t1 = 506 und t2 = n - t1 = 1515 diejenige Nachricht, die Lucie an Charly B. verschickt hat © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Anmerkungen (/* Überblick */) • Korrektheit Weshalb gilt z = Ddcb(k) = E-1ecb(k), d.h. z2 ≡ k ≡ m2 mod n? (/* siehe nächster Foliensatz */) • Sicherheit Weshalb glaubt man, daß sich ohne Kenntnis des privaten Schlüssels dcb die Umkehrfunktion E-1ecb(.) nur „schwer“ berechnen läßt? • Verwendbarkeit ... Mehrdeutigkeit ... algorithmische Fragestellungen (/* Schwerpunkt */) 2/1, Folie 23 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Anmerkungen (/* Sicherheit */) • es gelten „im Prinzip“ die folgenden Zusammenhänge Jeden Algorithmus, mit dem man die Primfaktoren des verwendeten öffentlichen Schlüssels ecb von Charly B. bestimmen kann, kann man verwenden, um das Kryptosystem von Rabin zu brechen. Jeden Algorithmus, mit dem man das Kryptosystem von Rabin brechen kann, kann man verwenden, um die Primfaktoren des verwendeten öffentlichen Schlüssels ecb von Charly B. zu bestimmen. ... beide Probleme (/* das Kryptosystem von Rabin zu brechen; die Primfaktoren zu bestimmen */) sind „äquivalent“ ... es wird allgemein angenommen, daß das Problem, die Primfaktoren einer zusammengesetzten Zahl n = pq zu bestimmen, ein „schwieriges“ Problem ist 2/1, Folie 24 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen Kapitel 2: Zahlentheoretische Algorithmen Kryptosysteme mit öffentlichen Schlüsseln - Das Rabin Kryptosystem Anmerkungen (/* Mehrdeutigkeit */) • • es ist zu erwarten, daß unter den vier Nachrichten, die Charly B. beim Entschlüsseln als mögliche Kandidaten für die an ihn geschickte Nachricht bestimmt, nur eine Nachricht eine „sinnvolle“ Nachricht darstellt wenn einem das zu wenig ist, kann man fordern, daß die an Charly B. zu schickenden Nachrichten eine spezielle Struktur haben (/* bestimmte Blöcke wiederholen, ... */) ... damit würde man aber „Sicherheit“ verlieren (/* das Problem, das Kryptosystem von Rabin zu brechen, ist nicht mehr länger „äquivalent“ zum Problem, die Primfaktoren einer zusammengesetzten Zahl n = pq zu bestimmen */) 2/1, Folie 25 © 2009 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen