Christian Karpfinger | Hubert Kiechle Kryptologie
Christian Karpfinger | Hubert Kiechle
Kryptologie Algebraische Methoden und Algorithmen STUDIUM
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.
Privatdozent Dr. Christian Karpfinger Technische Universität München Zentrum Mathematik Boltzmannstraße 3 85747 Garching E-Mail:
[email protected] Privatdozent Dr. Hubert Kiechle Universität Hamburg Department Mathematik Bundesstraße 55 20146 Hamburg E-Mail:
[email protected] 1. Auflage 2010 Alle Rechte vorbehalten © Vieweg +Teubner | GWV Fachverlage GmbH, Wiesbaden 2010 Lektorat: Ulrike Schmickler-Hirzebruch | Nastassja Vanselow Vieweg +Teubner ist Teil der Fachverlagsgruppe Springer Science+Business Media. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: KünkelLopka Medienentwicklung, Heidelberg Druck und buchbinderische Verarbeitung: Ten Brink, Meppel Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Printed in the Netherlands ISBN 978-3-8348-0884-4
Vorwort Das vorliegende Buch entstand aus wiederholten Vorlesungen zur Kryptologie, die wir Autoren an der Technischen Universität München bzw. an der Universität Hamburg für Mathematik- und Informatikstudenten gehalten haben. Wir konzentrierten uns in den Vorlesungen (und damit auch im vorliegenden Buch) auf die mathematischen Grundlagen kryptografischer und kryptoanalytischer Verfahren. Solche Verfahren werden heutzutage im Internet und im elektronischen Datenaustausch angewendet und bilden damit eine Schlüsseltechnologie. Die moderne Kryptologie benutzt vor allem Methoden der Algebra, der Zahlentheorie und der algebraischen Geometrie. Wir entwickeln diese Theorien im vorliegenden Buch, soweit sie benötigt werden. Dabei stellen wir die mathematischen Grundlagen so weit möglich vollständig und mit der gebotenen Präzision dar. Wir halten es nämlich für wichtig, dass auch ein Anwender ein tieferes, über das algorithmische hinausgehende Verständnis für dieses interessante, höchstaktuelle Gebiet hat. Eine korrekte Anwendung der Mathematik ist Grundlage für die Sicherheit im modernen Datenverkehr. Die mathematischen Grundlagen werden im vorliegenden Buch stets an der Stelle entwickelt, an der sie benötigt werden. Dabei setzen wir Grundkenntnisse aus der linearen Algebra und etwas Analysis voraus, wie sie im ersten Studienjahr in den einschlägigen Vorlesung für Mathematik- und Informatikstudenten vermittelt werden. Der vorliegende Text kann als Grundlage für eine vierstündige Vorlesung genutzt werden. Lässt man die mit einem Stern∗ versehenen Kapitel und Abschnitte (und die dazugehörigen Unterabschnitte) weg, so bleibt ein Themenkreis für eine zweistündige Vorlesung erhalten. Für das Lesen von Teilen des Skriptes, für die zahlreichen Hinweise, Anregungen, Verbesserungsvorschläge, Aufgaben und Beispiele danken wir Susanne Apel, Matthias Bargmann, Jana Bretschneider, Dominik Fischer, Frank Himstedt, Frank Hofmaier, Lisa Kehrer, Andreas Kreisel, Bertram Poettinger, Fabian Reimers und Annika Vernbro. Nicht zuletzt danken wir Frau Schmickler-Hirzebruch und Frau Vanselow vom Vieweg+Teubner Verlag für die erfreuliche Zusammenarbeit. Trotz sorgfältigem und mehrfachen Lesen des Skriptes sind sicherlich einige Fehler im Text verblieben. Hinweise darauf sind jederzeit herzlich willkommen. München, Hamburg, im August 2009
Christian Karpfinger, Hubert Kiechle
Inhalt Vorwort
v
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7
Klassische Verfahren Worum geht’s? . . . . . . . . . . . . . . . . . . . . . Monoalphabetische Chiffrierung . . . . . . . . . . Das Kerckhoffs’sche Prinzip und die Angriffsarten Die Halbgruppe der Strings . . . . . . . . . . . . . Kryptosysteme . . . . . . . . . . . . . . . . . . . . . Polyalphabetische Chiffrierung . . . . . . . . . . . Affine Chiffren und ihre Kryptoanalyse * . . . . .
. . . . . . .
1 1 2 6 8 9 10 18
2 2.1 2.2 2.3
Das One-Time-Pad und perfekte Sicherheit Das One-Time-Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Elementare Wahrscheinlichkeitsrechnung . . . . . . . . . . . . . . . . . Der Satz von Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 23 25 28
3 3.1 3.2 3.3 3.4 3.5
Block-Chiffren – AES und DES Endliche Körper . . . . . . . . . . . . . . . AES . . . . . . . . . . . . . . . . . . . . . . Feistel-Chiffren * . . . . . . . . . . . . . . Betriebsmodi * . . . . . . . . . . . . . . . Differentielle und lineare Kryptoanalyse *
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
33 34 44 50 53 56
4 4.1 4.2 4.3 4.4
Komplexität und Einwegfunktionen Komplexität . . . . . . . . . . . . . . . . Der erweiterte euklidische Algorithmus Die primen Restklassengruppen . . . . . Einwegfunktionen und Hashfunktionen
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
57 57 65 71 76
5 5.1 5.2 5.3 5.4
Symmetrische Authentifikation Message Authentication Code . . . . . . . Der Satz von Gilbert-MacWilliams-Sloane Beweisbar perfekte Systeme * . . . . . . . Ausblick: Mehrfach perfekte Systeme * .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
81 81 84 87 92
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
viii
Inhalt
6 Exponentiationschiffren 93 6.1 Algebraische Grundlagen der Exponentiationschiffren . . . . . . . . . . 93 6.2 Das Pohlig-Hellman-Verfahren * . . . . . . . . . . . . . . . . . . . . . . 102 6.3 Schnelle Exponentiation . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7 7.1 7.2 7.3 7.4 7.5 7.6
Das RSA-Verfahren Das Verfahren von Rivest, Shamir und Adleman Der chinesische Restsatz . . . . . . . . . . . . . . RSA und das Faktorisierungsproblem * . . . . . Wahl der Parameter p, q, e und d bei RSA . . . . Kettenbrüche * . . . . . . . . . . . . . . . . . . . Der Wiener-Angriff * . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
111 111 117 122 126 128 137
8 8.1 8.2 8.3 8.4 8.5
Primzahltests Probedivision . . . . . . . . Der Fermat-Test . . . . . . . Der Miller-Rabin-Test . . . . Der AKS-Test * . . . . . . . Vergleich der Primzahltests
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
141 142 144 147 152 164
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin 167 9.1 Der Diffie-Hellman-Schlüsselaustausch . . . . . . . . . . . . . . . . . . 167 9.2 Das ElGamal-Verschlüsselungsverfahren . . . . . . . . . . . . . . . . . 171 9.3 Das Rabin-Verschlüsselungsverfahren * . . . . . . . . . . . . . . . . . . 173 10 10.1 10.2 10.3 10.4
Diskrete Logarithmen Das diskrete Logarithmenproblem . . . . . . . . . . Der Baby-Step-Giant-Step-Algorithmus von Shanks Pollards -Methode * . . . . . . . . . . . . . . . . . . Die Reduktion nach Silver-Pohlig-Hellman . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
179 179 180 181 186
11 11.1 11.2 11.3 11.4 11.5 11.6
Faktorisierung Prinzipielles Vorgehen . . . . . . . . . . . . . . . . Pollards -Methode * . . . . . . . . . . . . . . . . . Pollards p − 1-Methode . . . . . . . . . . . . . . . . Faktorisierung mit Differenzen von Quadraten . . Die Kettenbruchmethode von Morrison-Brillhardt Das quadratische Sieb . . . . . . . . . . . . . . . .
. . . . * .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
191 191 193 194 197 201 204
12 12.1 12.2 12.3 12.4
Signaturverfahren Allgemeines zu Signaturverfahren Das RSA-Signaturverfahren . . . . Das ElGamal-Signaturverfahren . . Digital Signature Standard – DSS .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
209 209 209 212 216
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Inhalt
ix
13 13.1 13.2 13.3 13.4 13.5
Elliptische Kurven * Projektive Ebenen . . . . . . . Definition elliptischer Kurven Tangenten . . . . . . . . . . . Die Gruppe E . . . . . . . . . Die Gruppe ( E, +) . . . . . . .
14 14.1 14.2 14.3 14.4
Anwendungen elliptischer Kurven in der Kryptologie Das ElGamal-Verfahren auf elliptischen Kurven . . . . Das Signaturverfahren ECDSA . . . . . . . . . . . . . . Faktorisierung mit elliptischen Kurven . . . . . . . . . . Zur Anzahl der Punkte einer Kurve . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
* . . . . . . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
219 219 224 228 232 237
. . . .
241 241 242 244 247
Literaturverzeichnis
255
Index
257
1 Klassische Verfahren Unter Kryptografie versteht man im ursprünglichen Sinne die Wissenschaft vom Verschlüsseln von Informationen, um deren Geheimhaltung zu sichern. Im Zeitalter des Internet werden neben dieser Gewährleistung von Vertraulichkeit weitere Ziele durch kryptografische Methoden verwirklicht. Integrität, Authentizität, digitale Unterschrift und Authorisierung sind moderne Schlagworte. Das, was sich dahinter verbirgt, kann mit neueren kryptografischen Methoden erreicht werden. Die Kryptoanalyse, manchmal auch als Kryptanalyse bezeichnet, ist die Wissenschaft, die Methoden und Techniken entwickelt, um Informationen aus den verschlüsselten Texten zu gewinnen – etwa den ursprünglichen Text, Teile davon, oder gar den Schlüssel, der zur Verschlüsselung benutzt wurde. In gewisser Weise dient die Kryptoanalyse einem möglichen Angreifer. Tatsächlich ist die Kryptoanalyse zur Überprüfung der Sicherheit kryptografischer Methoden unerlässlich. Sie schützt den Nutzer vor unliebsamen Überraschungen. Die Kryptologie fasst die beiden Wissenschaften Kryptografie und Kryptoanalyse zusammen. Häufig wird der Begriff Kryptografie für Kryptologie verwendet.
1.1 Worum geht’s? Die Kryptografie beschäftigt sich mit der Sicherung von Nachrichten gegen einen unbefugten Zugriff. Im Gegensatz dazu steht die Codierungstheorie, die Daten gegen zufällig auftretende Fehler bei ihrer Übertragung schützen soll, und die nicht Gegenstand dieses Buches ist. Ein bewusster unbefugter Zugriff auf Daten wird in der Kryptologie Angriff genannt. Dagegen sollen die kryptografischen Verfahren schützen. Die klassische Kryptografie hatte primär die Aufgabe, •
Vertraulichkeit zu gewährleisten. D. h., Unbefugte sollten eine Nachricht nicht lesen können.
Daneben schützt die moderne Kryptografie •
Integrität von Daten: Es wird sichergestellt, dass der Empfänger der Daten eine eventuelle Veränderung der Daten, die ein Angreifer verursachte, erkennt.
•
Authentizität des Absenders: Der Empfänger merkt, wenn ein Unbefugter sich für einen anderen Teilnehmer ausgibt.
•
Unterschriften, mit allen rechtlichen Folgen.
•
Authorisierung: Nur Befugte erhalten Zugang.
2
1 Klassische Verfahren
Es gibt ein Reihe weiterer Problemstellungen, zu denen die moderne Kryptografie Lösungen anbietet (siehe [19]). Natürlich gibt es für alle diese Probleme schon klassische Lösungen, wie etwa der versiegelte Brief, die (händische) Unterschrift, das Postgeheimnis mit Androhung von Strafe bei Verstößen usw. Die Mathematik hat aber mehr zu bieten: Der elektronische Austausch von Daten erfordert neue Methoden, und die Methoden der Mathematik sind prinzipiell unabhängig vom Medium. Außerdem bietet die Mathematik Methoden an, die wirklich nur das schützen, was zu schützen ist – nämlich die Information. Schließlich ist es – zumindest im Prinzip – möglich, die Sicherheit kryptografischer Methoden zu beweisen. Dadurch ist man vor bösen Überraschungen (wie etwa vor einer neuen Technologie) besser geschützt. Bemerkung Tatsächlich gibt es nur wenige Verfahren, bei denen die Sicherheit beweisbar ist. Für praktische Zwecke sind diese Verfahren eher von untergeordneter Bedeutung, weil sie wenig effizient sind. Wir werden sie in den Kapiteln 2 und 5 vorstellen. Wir behandeln in diesem ersten Kapitel einige klassische kryptografische Verfahren. Obwohl eine Verwendung dieser Verfahren heutzutage längst nicht mehr empfehlenswert ist, lässt sich an ihnen das Wesen der Kryptologie verständlich schildern. Zugleich zeigen uns diese Verfahren, warum die Mathematik die richtige Sprache ist, in der sichere Verschlüsselungsmethoden zu formulieren sind. Die gegen Ende des 16. Jahrhunderts entwickelte Vigenère-Chiffre macht als Paradebeispiel einer klassischen Verschlüsselungsmethode einen Großteil dieses ersten Kapitels aus. Sie galt fast 300 Jahre als sicher. Erst zur Mitte des 19. Jahrhunderts gelang es, Vigenère-Chiffren mit der damals neuen statistischen Analyse zu brechen. Die statistische Analyse ist demnach ein kryptoanalytisches Konzept. Einen möglichen Angreifer darf man niemals unterschätzen, man muss ihm nicht nur höchste Intelligenz unterstellen, man sollte sogar stets davon ausgehen, dass er auch die Methode der Verschlüsselung kennt. Dies ist der Inhalt des Kerckhoffs’schen Prinzips, das Grundlage jeder Verschlüsselungsmethode sein sollte. Das erste Kapitel ist neben seinem einführenden Charakter von zwei Thesen geleitet. Zum einen erfordert moderne Kryptologie einen tieferen Einblick in die Mathematik, insbesondere in die Algebra. Zum anderen ist die Kenntnis der kryptografischen und kryptoanalytischen Methoden der klassischen Verfahren zur Entwicklung neuer und sicherer Verfahren unabdingbar.
1.2
Monoalphabetische Chiffrierung
Hinter dem folgenden Geheimtext verbirgt sich eine der naheliegendsten Verschlüsselungsmethoden: HMIWIV XIBX MWX PIMGLX DY IRXWGLPYIWWIPR Wie wurde verschlüsselt? Welcher Schlüssel wurde verwendet?
1.2 Monoalphabetische Chiffrierung
3
1.2.1 Die Caesar-Chiffre Die Caesar-Chiffre, auch Verschiebe-Chiffre genannt, zählt zu den ältesten Verfahren überhaupt. Wir beschreiben das Verfahren an einem Beispiel. Ist der Buchstabe K der Schlüssel, so wird der Text mathe ist schoen wie folgt verschlüsselt: WKDRO SCD CMRYOX Da K der 11-te Buchstabe des Alphabets ist, wird jeder Buchstabe um 10 Schritte im Alphabet weitergezählt. Dabei geht es nach Z mit A weiter. Die Buchstaben des Alphabets werden also zyklisch vertauscht: a K
b L
c M
··· ···
p Z
q A
r B
s C
t D
u E
v F
w G
x H
y I
z J
Wie man bereits an diesem einfachen Beispiel sieht, ist die Caesar-Chiffre leicht zu brechen. Das liegt daran, dass es nur sehr wenige Schlüssel – nämlich 26 – gibt, die man alle durchprobieren kann. Man kann die Suche sogar noch verkürzen, indem man im Geheimtext die häufigsten Buchstaben ausfindig macht. Die häufigsten Buchstaben deutscher Texte sind e bzw. n mit einer Häufigkeit von rund 17 bzw. 10 Prozent. Aufgrund dieser Tatsache hat man den Schlüssel im Allgemeinen nach wenigen Versuchen gefunden. In dem sehr kurzen einführenden Beispiel ist das I im Geheimtext der häufigste Buchstabe, sodass I wahrscheinlich für den Klartextbuchstaben e steht, was auch korrekt ist. Bemerkung Wie in der klassischen Kryptografie üblich, haben wir nur Großbuchstaben und keine Sonderzeichen, Umlaute o. Ä. verwendet. Tatsächlich wurden in der Praxis nicht einmal Leerzeichen gesetzt, die wir hier der Übersichtlichkeit halber stehen ließen.
1.2.2 Mathematische Modellierung Um eine präzisere und auch einfachere Beschreibung des von Caesar benutzten Verfahrens zu erhalten, fassen wir die 26 Buchstaben des lateinischen Alphabets als Zahlen, genauer als Elemente der additiven Restklassengruppe Z26 = {0, 1, . . . , 25}, auf. Wie üblich ist dabei a = a + 26 Z = {. . . , a − 26, a, a + 26, a + 52, . . . } . Wir erinnern vorab an die Definition der Addition in der Restklassengruppe (Z n , +), n ∈ N. Es gilt
( a + n Z ) + (b + n Z ) = ( a + b) + n Z , d. h. a + b = a + b für a, b ∈ Z .
4
1 Klassische Verfahren
Beispiel Die Verknüpfungstafel für (Z7 , +) lautet ausführlich:
+
0
1
2
3
4
5
6
0 1 2 3 4 5 6
0 1 2 3 4 5 6
1 2 3 4 5 6 0
2 3 4 5 6 0 1
3 4 5 6 0 1 2
4 5 6 0 1 2 3
5 6 0 1 2 3 4
6 0 1 2 3 4 5
Nun definieren wir eine bijektive Abbildung Φ : { A, B, C, . . . , Z } → Z26
durch
Φ( A) = 0, Φ( B) = 1, . . . , Φ( Z ) = 25 .
Wir numerieren also die Buchstaben – beginnend mit 0 – durch. Manchmal lassen wir auch den Querstrich bei a ∈ Z26 weg, wählen dann aber stets den kleinsten positiven Repräsentanten, wir schreiben also z. B. 3 = 3 = 29 in Z26 . Der Klartext, das ist der Text, der verschlüsselt werden soll, kann nun als Zeilenvektor oder Wort über Z26 aufgefasst werden. Der Schlüssel wird ebenfalls als Zahl, genauer als Restklasse k ∈ Z26 , aufgefasst, und die Verschlüsselung erfolgt durch Addieren von k zu jeder einzelnen Komponente des Wortes:
N = ( a1 , . . . , a n )
Verschlüsselung
−→
C = ( a1 + k, . . . , an + k) .
Klartext
Geheimtext
Die Bijektion Φ wird als Codierung bezeichnet und trägt nichts zur Geheimhaltung bei. Wir werden im Folgenden häufig nur die Verschlüsselung von Zahlen (genauer gesagt von Elementen einer Halbgruppe) beschreiben, ohne auf die Codierung einzugehen: Buchstaben bzw. Texte sind für uns also nur noch Zahlen bzw. aneinandergereihte Zahlen. Um uns die Wahl des Alphabets frei zu halten, werden wir im Folgenden anstelle von 26 häufig schlicht q ∈ N schreiben. Die Caesar-Chiffre lässt sich mit etwas Mathematik leicht verallgemeinern und dadurch auch erheblich verbessern. Dennoch wird sich herausstellen, dass sie in dieser allgemeineren Form heutigen Anforderungen nicht genügt. 1.2.3
Substitutions-Chiffren
Das Problem der zu geringen Anzahl von Schlüsseln bei der Caesar-Chiffre lässt sich leicht lösen, indem man anstelle der 26 Verschiebungen jede beliebige Permutation der 26 Buchstaben des Alphabets zulässt, z. B. a L
b A
c H
··· ···
p M
q X
r D
s R
t U
u E
v J
w B
x O
y I
z Z
.
1.2 Monoalphabetische Chiffrierung
5
Es gibt dann 26! ≈ 4 · 1026 Schlüssel. Das sind bereits zu viele, um selbst mit einem sehr schnellen Rechner alle Möglichkeiten durchzuprobieren. 26! = 403 291 461 126 605 635 584 000 000 Das Sicherheitsproblem einer solchen Substitutions-Chiffre ist die jedem Angreifer bekannte Häufigkeitsverteilung der Buchstaben in einem durchschnittlichen deutschsprachigen Text – wir geben diese Häufigkeitsverteilung in der folgenden Grafik wieder:
Durch Zählen der gleichen Buchstaben des Geheimtextes findet man die häufigsten Buchstaben e und n und dann durch weiteres Kombinieren, etwa das Bestimmen häufiger Buchstabenpaare wie ch, st, usw., weitere Buchstaben und dann die restlichen Substitutionen. Beispiel Gegeben ist der Geheimtext: ZHV KHI TC VJNKI STJNKI, HGTU STJNKI KHI TC TJVTV, XVD MTVV TC TJVTV KHI, DHVV KHI TU TC VJNKI STJNKI. Zählt man die Buchstaben durch, so findet man vierzehn Mal den häufigsten Buchstaben T, am zweithäufigsten zwölf Mal den Buchstaben V und schließlich je sieben Mal die Buchstaben J und H. Nach der oben angegebenen Häufigkeitsverteilung der Buchstaben in einem durchschnittlichen deutschen Text entspricht wohl dem Geheimtextbuchstaben T der Klartextbuchstabe e und dem Geheimtextbuchstaben V der Klartextbuchstabe n. Wir vermuten zudem, dass der Geheimtextbuchstabe J den Klartextbuchstaben i wiedergibt und setzen diese ein. So erhalten wir den teilweisen Klartext:
6
1 Klassische Verfahren
ZHn KHI eC niNKI SeiNKI, HGeU SeiNKI KHI eC einen, XnD Menn eC einen KHI, DHnn KHI eU eC niNKI SeiNKI. Wer den Geheimtext noch nicht errät, erkennt, dass das Buchstabenpaar NK mit fünf Mal am häufigsten auftritt. Setzt man dafür ch ein, so ergibt sich leicht der Klartext man hat es nicht leicht, aber leicht hat es einen, und wenn es einen hat, dann hat er es nicht leicht. Auch das Paar KH tritt mit vier Mal häufig auf. Man erkennt aber sofort, dass es nicht für ch stehen kann. Substitutions-Chiffren sind monoalphabetisch: Jeder Klartextbuchstabe wird immer in denselben Geheimtextbuchstaben chiffriert. Durch eine statistische Analyse sind monoalphabetische Verfahren leicht zu brechen. Bemerkung In Zeitungen findet man manchmal Denksportaufgaben, die auch dieses Verfahren benutzen. Dabei wird häufig jedem Buchstaben ein Zeichen – das kein Buchstabe ist – zugeordnet und die Aufgabe besteht darin, diese Zuordnung zu be stimmen und den geheimen Text zu entschlüsseln.
1.3
Das Kerckhoffs’sche Prinzip und die Angriffsarten
Monoalphabetische Verfahren sind leicht zu brechen – vorausgesetzt, der Angreifer weiß, dass monoalphabetisch verschlüsselt wurde. In der Tat sollte man davon ausgehen, dass ein Angreifer dies weiß. Das ist der Inhalt des Kerckhoffs’schen Prinzips, das wir in diesem Abschnitt erläutern. Anhand des Geheimtextes lässt sich auch feststellen, ob monoalphabetisch verschlüsselt wurde. Wie das funktioniert, beschreiben wir in Abschnitt 1.6.2. Man unterscheidet verschiedene Angriffsarten, die nachfolgend erläutert werden. Ein Verschlüsselungsverfahren wird man nur dann als sicher bezeichnen, wenn es gegen diese Angriffe gefeit ist. 1.3.1
Das Kerckhoffs’sche Prinzip
Das Verfahren, mit dem verschlüsselt wird, ist in der Praxis meist nicht geheim zu halten. Tatsächlich sollte es gar nicht geheim gehalten werden; zumindest darf die Sicherheit des Verfahrens nicht auf einer solchen Geheimhaltung beruhen. Das Kerckhoffs’sche Prinzip. Die Sicherheit eines Verschlüsselungssystems darf nicht von der Geheimhaltung des Algorithmus abhängen. Die Sicherheit gründet einzig auf der Geheimhaltung des Schlüssels.
1.3 Das Kerckhoffs’sche Prinzip und die Angriffsarten
7
Wird dieses Prinzip beherzigt, können sowohl die Codierung als auch die verwendeten Verfahren und auch die Implementierung offengelegt werden. Das bietet eine Reihe von Vorteilen: •
Was geheim zu halten ist, ist klar umrissen und so wenig als nur möglich.
•
Im Prinzip kann jeder Benutzer selbst die Sicherheit prüfen.
•
Insbesondere Experten werden häufig verwendete Verfahren genau untersuchen und eventuelle Schwachstellen aufdecken. Das geschieht auch regelmäßig.
•
Man kann relativ sicher sein, dass keine geheimen Tricks – etwa von Geheimdiensten – die Geheimtexte für bestimmte Kreise lesbar machen.
Bemerkung Alle Systeme, die das Kerchhoffs’sche Prinzip nicht beachtet haben, sind gebrochen worden. So wurden oft auch Maschinen gebaut, die die Chiffrierung übernahmen. Hier ist eine physische Trennung zwischen Algorithmus (= Maschine) und Schlüssel gegeben. Selbst wenn die Maschine in die Hände der Feinde fällt, ist bei strikter Anwendung des Kerckhoffs’schen Prinzips die Sicherheit noch ge währleistet. 1.3.2 Angriffsarten Natürlich darf der Klartext N aus einem Geheimtext C nicht ersichtlich sein. Das bloße Abfangen eines verschlüsselten Textes C darf die Sicherheit nicht kompromittieren, wie es etwa bei der Caesar-Chiffre der Fall ist. Das ist aber nur das Minimum an Sicherheit, das von einem Verschlüsselungsverfahren gefordert werden muss. Die Ansprüche an Sicherheit sollten deutlich höher gesetzt sein. Ein Angreifer könnte auch zu einem früheren Geheimtext C den dazugehörigen Klartext N kennen oder gar einen selbst gewählten Klartext chiffrieren lassen und so den zugehörigen Geheimtext erhalten. Eventuell kann der Angreifer bei wiederholten Angriffen seinen Klartext stets anpassen, um weitere Informationen aus den Geheimtexten zu erhalten. Man unterscheidet die folgenden Angriffsarten. •
Cipher-Text-Only: Der Angreifer kennt nur den verschlüsselten Text C .
•
Known-Plain-Text: Der Angreifer kennt einen Klartext N und den dazugehörigen verschlüsselten Text C .
•
Chosen-Plain-Text: Der Angreifer kann einen Klartext N auswählen und den dazugehörigen Geheimtext C erzeugen (lassen).
•
Adaptive-Chosen-Plain-Text: Wie beim Chosen-Plain-Text-Angriff, aber mit mehreren Runden, in denen der Angreifer seine Wahl anpassen kann.
8
1 Klassische Verfahren
•
Chosen-Cipher-Text: Der Angreifer kann einen selbst bestimmten Geheimtext C entschlüsseln lassen.
Ein Angreifer kann seine Attacke im Allgemeinen auch wiederholen, zumindest sollte man als Sender oder Empfänger von verschlüsselten Nachrichten davon stets ausgehen. Wenn wir im Laufe der nächsten Kapitel Verschlüsselungsverfahren vorstellen, werden wir immer wieder zeigen, welche Angriffstypen eventuelle Schwachstellen der Verfahren ausnutzen können und welche Erfolge ein Angreifer bei seinen Attacken erzielen kann. Bevor wir nun aber weitere (immer noch klassische) Verschlüsselungsverfahren ansprechen, werden wir etwas mathematischer, um die Darstellung zu präzisieren und kompakter zu gestalten.
1.4
Die Halbgruppe der Strings
Ein String ist eine endliche Folge von Buchstaben eines vorgegebenen Alphabets. Strings kann man verknüpfen, indem man sie aneinanderhängt. Jeder Text, jedes Buch ist in diesem Sinne ein String. Für eine nichtleere Menge A, genannt Alphabet, setzen wir A∗ :=
An .
n ∈N 0
Die Menge A∗ heißt die Menge der Wörter oder Strings über dem Alphabet A. Es ist A0 = {ε} mit dem leeren Wort ε. Weil die Vereinigung n∈N0 An disjunkt ist, gibt es zu jedem w ∈ A∗ genau ein n ∈ N0 mit w ∈ An . Wir schreiben (w) = n und nennen n die Länge von w. Zu v = v1 · · · v(v) , w = w1 · · · w(w) ∈ A∗ setzen wir v · w := v1 · · · v(v) w1 · · · w(w) und ε · v = v = v · ε . Diese Verknüpfung · auf A∗ wird auch Konkatenation genannt. Wir schreiben kurz v w anstelle von v · w, wir benutzen also kein spezielles Symbol für diese Verknüpfung, sondern schreiben die zu verknüpfenden Wörter einfach hintereinander. Wir erhalten unmittelbar: Lemma 1.1 Es sei A ein Alphabet. (a)
( A∗ , · ) ist eine Halbgruppe mit neutralem Element ε.
(b)
Für v, w ∈ A∗ gilt (v w) = (v) + (w).
Im Computerzeitalter ist oft A = Z2 . In der Praxis liegen somit die Nachrichten als String über Z2 vor. Für die Länge eines Strings über Z2 wird die Einheit Bit benutzt.
1.5 Kryptosysteme
9
1.5 Kryptosysteme Unter einem kryptografischen System, kurz Kryptosystem, verstehen wir ein Tupel ( P, C, K, f , g) mit nichtleeren Mengen P, C, K und Abbildungen f : P × K → C und g : C × K → P mit der Eigenschaft:
(∗) ∀ k ∈ K ∃ k ∈ K : g( f ( x, k), k ) = x für alle x ∈ P . Setzt man für k ∈ K bzw. k ∈ K f k := f ( . , k) : P → C bzw. gk := g( . , k ) : C → P , so können wir die Eigenschaft (∗) auch schreiben als:
(∗) ∀ k ∈ K ∃ k ∈ K : gk ◦ f k = idP . Es heißen •
P die Klartextmenge (P wie plain text),
•
C die Geheimtextmenge (C wie cipher text),
•
K die Schlüsselmenge (K wie key),
•
f Verschlüsselungsfunktion,
•
g Entschlüsselungsfunktion.
Die Bedingung (∗) besagt, dass jeder durch einen Schlüssel k verschlüsselte Klartext durch einen Schlüssel k entschlüsselt werden kann. Außerdem ist die Bedingung gk ◦ f k = idP in (∗) bekanntlich gleichwertig zur Injektivität der Abbildung f k bzw. zur Surjektivität der Abbildung gk (vgl. Aufgabe 1.2). Folglich gilt | P | ≤ | C |. Bemerkung Manchmal lassen wir die Abbildung g weg und nennen ein Viertupel ( P, C, K, f ) ein Kryptosystem, wenn die Abbildungen f k für alle k ∈ K injektiv sind. Die Injektivität von f k gewährleistet nämlich die Existenz einer surjektiven Abbildung gk : C → P mit gk ◦ f k = idP . Beispiel Die Caesar-Chiffre über dem Alphabet Z q mit q Buchstaben ist ein Kryptosystem. Es ist P = Z ∗q = C die Klartext- und Geheimtextmenge, Z q die Schlüsselmenge, und für jedes k ∈ Z q ist durch f k : Z ∗q → Z ∗q , w1 w2 · · · w(w) → (w1 + k) (w2 + k) · · · (w(w) + k) eine Verschlüsselungsfunktion gegeben. Die Entschlüsselungsfunktion gk ist gegeben durch die Abbildung gk = f −k = f q−k .
10
1 Klassische Verfahren
Die Bezeichnung f k bzw. gk werden wir stets in der obigen Bedeutung benutzen. Mit jedem Kryptosystem ( P, C, K, f , g) sind die Familien von Abbildungen f k und gk gegeben.
1.5.1
Symmetrisch versus asymmetrisch
Die Tatsache, dass der zum Dechiffrieren benötigte Schlüssel k wie in (∗) angegeben nicht mit dem Schlüssel zum Verschlüsseln k übereinstimmen muss, ist die Basis für die asymmetrische Kryptografie. Wenn es möglich ist, ein Kryptosystem ( P, C, K, f , g) zu finden, bei dem aus der Kenntnis von f k nicht auf k ∈ K bzw. gk mit gk ◦ f k = idP geschlossen werden kann, dann muss man den Schlüssel k gar nicht geheim halten. Jeder kann einem Empfänger Nachrichten zukommen lassen, die mit demselben öffentlich bekannten Schlüssel verschlüsselt sind, und nur der Empfänger kann entschlüsseln. Verfahren, die diese Bedingungen erfüllen, nennt man asymmetrisch. Im Gegensatz dazu heißt ein Kryptosystem ( P, C, K, f , g) symmetrisch, wenn für alle k ∈ K gilt gk ◦ f k = idP . Die in (∗) angegebenen Schlüssel k und k sind also gleich. Ein Beispiel ist die Caesar-Chiffre. Man könnte den Begriff des symmetrischen Kryptosystems etwas allgemeiner fassen, indem man verlangt, dass aus der Kenntnis von k ∈ K das Element k ∈ K, bzw. gk leicht bestimmt werden kann. Das bedeutet aber nur, dass es eine Abbildung k → k gibt. Dann kann man auch setzen gk := gk und erhält die oben beschriebene Situation. Bemerkung Der eben für symmetrische Verfahren beschriebene Vorgang ist prinzipiell auch für asymmetrische Verfahren möglich. Natürlich hängt gk von k ab. Entscheidend ist die Tatsache, dass man keinen effizienten Algorithmus kennt, der gk aus k berechnet. Die Details sind etwas komplizierter und werden uns in Kapitel 4 beschäftigen. Leider erfasst der Begriff Kryptosystem diesen feinen Unterschied nicht. Daher meiden ihn manche Autoren. Wir meinen, dass er dennoch nützlich ist und die algorithmischen Eigenschaften aus dem Kontext klar werden. Für symmetrische Verfahren ist er allemal adäquat.
1.6
Polyalphabetische Chiffrierung
Durch statistische Analysen ist es leicht, monoalphabetische Chiffren zu brechen. Dieser Angriff kann umgangen werden: Häufige Buchstaben, wie etwa e und n, können durch verschiedene Zeichen dargestellt werden, sodass letztlich im Geheimtext jeder Buchstabe gleich häufig vorkommt. Dennoch scheitert auch dieses
1.6 Polyalphabetische Chiffrierung
11
Vorgehen an der Statistik. Die Häufigkeit von Buchstaben-Paaren, -Tripeln usw. wird nicht verändert und erlaubt eine erfolgreiche Analyse. Polyalphabetische Chiffren erreichen eine bessere Verteilung der Häufigkeiten von Buchstaben. Außerdem kann die Anzahl der Schlüssel beliebig groß gewählt werden. Eine wichtige Eigenschaft, die es im Prinzip erlaubt, die Systeme an sich wandelnde Anforderungen anzupassen. Leider sind sie – wie wir sehen werden – nicht gegen eine statistische Analyse gefeit, solange der Schlüssel deutlich kürzer als der Klartext ist. In diesem Abschnitt wird als Beispiel für eine polyalphabetische Chiffre die Vigenère-Chiffre diskutiert. In der klassischen Kryptografie wurden viele Varianten dieses Systems vorgeschlagen. Sie können (fast) alle mit Varianten der vorgestellten Angriffe gebrochen werden.
1.6.1 Die Vigenère-Chiffre Gegeben sei das Alphabet Z q und ein String k = k1 · · · k ∈ Z q der Länge – der Schlüssel bzw. das Schlüsselwort. Wir verschlüsseln nun den Klartext N = x1 · · · xn ∈ Z nq . Dazu wird dieser in Blöcke der Länge eingeteilt,
N = ( x1 · · · x ) ( x+1 · · · x2 ) ( x2+1 · · · x3 ) · · · ( xr+1 · · · xn ) . Falls n nicht durch teilbar ist, verbleibt ein Block xr+1 · · · xn einer Länge kleiner als . Nun wird jeder Block xs+1 · · · x(s+1) mit der Verschlüsselungsfunktion f k wie folgt verschlüsselt: f k ( xs+1 · · · x(s+1) ) = ( xs+1 + k1 ) · · · ( x(s+1) + k ) . Der eventuell verbleibende Block einer Länge kleiner als wird mit entsprechend verkürztem Schlüssel chiffriert. Bei dieser Verschlüsselung wird jede Komponente mit einer Caesar-Chiffre verschlüsselt: xs+i
Verschlüsselung
−→
xs+i + k i .
Beispiel Erneut in Z26 erhält man für = 4 und k = 2 6 3 4 beispielsweise: Klartext N :
15 ↓+2
2 ↓+6
14 ↓+3
0 ↓+4
21 ↓+2
6 ↓+6
18 ↓+ 3
2 ↓+4
6 ↓+2
··· ···
Geheimtext C :
17
8
17
4
23
12
21
6
8
···
Die Entschlüsselung erfolgt mit f −k . Aus dem Klartextbuchstaben 6 werden beim Verschlüsseln die verschiedenen Geheimtextbuchstaben 12 und 8.
12
1 Klassische Verfahren
Die Vigenère-Chiffre ist ein polyalphabetisches Verfahren: Ein Klartextbuchstabe wird an verschiedenen Stellen des Textes im Allgemeinen zu verschiedenen Geheimtextbuchstaben chiffriert. Allein durch das Zählen der verschiedenen Buchstaben des Geheimtextes erhält man kaum Hinweise auf den Klartext. Jedoch versagt die Vigenère-Chiffre offensichtlich bei einem Known-Plain-Text-Angriff. Ein solcher liefert direkt den Schlüssel oder Teile davon. In der frühen Neuzeit wurde die Vigenére-Chiffre natürlich nicht als Chiffre über dem Restklassenring Z26 aufgefasst, sondern über dem üblichen Alphabet A = { a, b, c, . . . , z} mit 26 Buchstaben. Die Addition des Schlüsselwortes aus A erfolgt mit dem sogenannten Vigenére-Quadrat, mit dessen Hilfe VigenéreChiffren für beliebige Schlüsselworte gebildet werden können. A B C D E
B C D E F
C D E F G
D E F G H
E F G H I
F G H I J
G H I J K
H I J K L .. .
I J K L M
J K L M N
K L M N O
L M N O P
M N O P Q
N O P Q R
O P Q R S
P Q R S T
Q R S T U
R S T U V
.. .
S T U V W .. .
T U V W X
U V W X Y
V W X Y Z
W X Y Z A
X Y Z A B
Y Z A B C
Z A B C E
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Für die konkrete Anwendung mit einem bestimmten Schlüsselwort ist ein Ausschnitt des Vigenére-Quadrats aber bequemer zu benutzen. Wir zeigen dies an einem Beispiel. Beispiel Wir verschlüsseln das Gedicht „Die Ameisen“ von Joachim Ringelnatz mit dem Schlüsselwort „LYRIK“, sodass wir die Zeilen des Vigenére-Quadrats notieren, deren erste Buchstaben das Schlüsselwort ergeben, außerdem notieren wir das Alphabet für den Klartext darüber: L Y R I K
a L Y R I K
b M Z S J L
c N A T K M
d O B U L N
e P C V M O
f Q D W N P
g R E X O Q
h S F Y P R
i T G Z Q S
j U H A R T
k V I B S U
l W J C T V
m X K D U W
n Y L E V X
o Z M F W Y
p A N G X Z
q B O H Y A
r C P I Z B
s D Q J A C
t E R K B D
u F S L C E
v G T M D F
w H U N E G
x I V O F H
y J W P G I
z K X Q H J
Der Anschaulichkeit halber erfolgt die Verschlüsselung in einer dreizeiligen Darstellung, in deren erster Zeile der Klartext, also das Gedicht, steht, in deren zweiter Zeile das wiederholte Schlüsselwort und ganz unten der daraus resultierende Geheimtext. Dieser entsteht, indem die Klartextbuchstaben durch die Geheimtextbuchstaben ersetzt werden, die in den entsprechenden Zeilen der Schlüsselwortbuchstaben des Vigenére-Quadrats stehen, so geht der Klartextbuchstabe i über dem Schlüsselwortbuchstaben L über in den Geheimtextbuchstaben T usw.:
1.6 Polyalphabetische Chiffrierung
13
In Hamburg lebten zwei Ameisen, Die wollten nach Australien reisen. LY RIKLYRI KLYRIK LYRI KLYRIKL, YRI KLYRIKL YRIK LYRIKLYRIK LYRIKL. TL YIWMSIO VPZKMX KUVQ KXCZAOY BZM GZJCBOY LRKR LSJBBLJZMX CCZAOY Bei Altona auf der Chaussee, Da taten ihnen die Beine weh, YRI KLYRIK LYR IKL YRIKLYRI, KL YRIKL YRIKL YRI KLYRI KLY, ZVQ KWRFVK LSW LOC AYIEDQVM NL RRBOY GYVOY BZM LPGEM GPF und da verzichteten sie weise, Dann auf den letzten Teil der Reise. RIK LY RIKLYRIKLYRI KLY RIKLY, RIKL YRI KLY RIKLYRI KLYR IKL YRIKL. LVN OY MMBKGTPDPRVV CTC NMSDC UIXY YLN NPL CMDKRVV DPGC LOC PVQCP Der Geheimtext lautet: TLYIWMSIOVPZKMXKUVQKXCZAOYBZMGZJCBOYLRKRLSJBBLJZMXCCZAOYZVQKWRFVKLS WLOCAYIEDQVMNLRRBOYGYVOYBZMLPGEMGPFLVNOYMMBKGTPDPRVVCTCNMSDCUIXYYLN NPLCMDKRVVDPGCLOCPVQCP Wir zeigen nun, wie man durch eine verfeinerte statistische Analyse die VigenèreChiffre sogar durch einen Cipher-Text-Only-Angriff brechen kann.
1.6.2 Die Kryptoanalyse der Vigenère-Chiffre Die Vigenère-Chiffre kann selbst bei sehr großen Schlüssellängen noch gebrochen werden, wenn man nur ausreichend Geheimtext zur Verfügung hat. Die folgenden beiden Tests führen das Problem auf das (sehr einfache) Brechen einer Caesar-Chiffre zurück. In der Tat liefern sie sehr zuverlässige Schätzungen für die Länge des benutzen Schlüssels k = k1 · · · k . Der Kasiski-Test. Wiederholen sich in einem Klartext Buchstabenfolgen (wie z. B. ein), so werden sie im Allgemeinen in verschiedene Folgen verschlüsselt – es sei denn, ihr Abstand ist ein Vielfaches der Schlüssellänge . Dann entstehen zwei identische Folgen von Buchstaben im Geheimtext. Hier setzt der Kasiski-Test an. Es werden sich wiederholende Buchstabenfolgen gesucht und deren Abstände d1 , . . . , dn bestimmt. Im Allgemeinen ist ein Teiler von d1 , . . . , dn . Bildet man den größten gemeinsamen Teiler über alle diese Abstände, so ist also ein Teiler von t = ggT(d1 , . . . , dn ). Nun kann es aber auch sein, dass sich zufällig Buchstabenfolgen wiederholen. Diese kann man meistens leicht entlarven. Diese Buchstabenfolgen liefern Abstände d j , die zu den meisten Abständen di = d j teilerfremd sind. Beispiel Auf obiges Beispiel soll nun der Kasiski-Test angewandt werden. Dazu suchen
14
1 Klassische Verfahren
wir Wiederholungen im Geheimtext, denen Wiederholungen des Klartextes entsprechen. In Hamburg lebten zwei Ameisen, Die wollten nach Australien reisen. TL YIWMSIO VPZKMX KUVQ KXCZA OY, LRKR LSJBBLJZMX CCZAOY. . . .BZM . . GZJCBOY ::: Bei Altona auf der Chaussee, Da taten ihnen die Beine weh, ZVQ KWRFVK LSW LOC AYIEDQVM, NL RR::: BOY GYVOY . .BZM . . LPGEM GPF, und da verzichteten sie weise, Dann auf den letzten Teil der Reise. LVN OY MMBKGTPDPRVV CTC NMSDC UIXY YLN NPL CMDKRVV DPGC LOC PVQCP Sich wiederholende Passagen haben wir im Text hervorgehoben. Wir bestimmen ihre Abstände und berechnen deren größten gemeinsamen Teiler t. Die tatsächliche Schlüssellänge sollte ein Teiler von t sein. Die faktorisierten Abstände der oben zu findenden Wiederholungen sind in der folgenden Tabelle dargestellt. VQK: OYBZM: LOC:
40 = 5 · 2 · 2 · 2 65 = 13 · 5 80 = 5 · 2 · 2 · 2 · 2
CZAOY: BOY: RVV:
30 = 5 · 3 · 2 50 = 5 · 5 · 2 25 = 5 · 5
Für t erhalten wir t = ggT(40, 30, 65, 50, 80, 25) = 5. Wie wir wissen, ist dies die tatsächliche Schlüssellänge. Der Kasiski-Test liefert eine kleine Menge möglicher Schlüssellängen, nämlich die Teiler von t. Der folgende Friedman-Test liefert eine Schätzung der Größenordnung der Schlüssellänge . Kombiniert man die beiden Tests, so erhält man in den meisten Fällen den genauen Wert von . Und hat man erst einmal die Schlüssellänge , so ist es leicht, den Geheimtext zu entschlüsseln, weil man damit die Verschlüsselung auf Caesar-Chiffrierungen zurückgeführt hat. Der Friedman-Test. Dieser Test basiert auf der Häufigkeitsverteilung (hi )i∈Zq aller Buchstaben eines Geheimtextes C = x1 · · · xn ∈ Z nq über dem Alphabet Z q . Wir gehen vorab davon aus, dass wir irgendeinen Text (sprich einen String) x = x1 · · · xn ∈ Z nq vorliegen haben, und erklären zu diesem Text eine Größe I ( x ) ∈ Q – den Friedman’schen Koinzidenzindex. Die Zahl h a := |{k ; xk = a}|, a ∈ Z q , gibt an, wie oft der Buchstabe a im Text x = x1 · · · xn vorkommt. Die rationale Zahl I ( x ) :=
1 n ( n − 1)
∑
a ∈Z q
h a ( h a − 1)
heißt der (Friedman’sche) Koinzidenzindex des Wortes x. Wir begründen:
1.6 Polyalphabetische Chiffrierung
15
Lemma 1.2 Der Friedman’sche Koinzidenzindex I ( x ) für einen String x = x1 · · · xn gibt die Wahrscheinlichkeit dafür an, dass bei zufälliger Wahl zweier Buchstaben xi , x j , i = j, aus dem String x diese beiden Buchstaben gleich sind. Beweis. Die Anzahl der ungeordneten Paare xi , x j mit i = j und xi = x j = a ist gleich h a ( h a − 1) ha , = 2 2 und die Anzahl aller ungeordneten Paare xi , x j mit i = j ist n n ( n − 1) . = 2 2 Damit ergibt sich wegen I (x) =
∑
a ∈Z q
(h2a ) 1 = n ( n − 1) (n2 )
∑
a ∈Z q
h a ( h a − 1)
die Behauptung. Wir bestimmen nun den Koinzidenzindex für einen deutschen Durchschnittstext und für einen Text, bei dem alle Buchstaben gleich oft vorkommen. Dazu stellen wir vorab fest: Es sei x = x1 · · · xn ein String über dem Alphabet Z q . Angenommen, wir kennen die Wahrscheinlichkeit p a , mit der wir den Buchstaben a in x bei zufälliger Wahl ziehen. Dann ist die Zahl ∑ a∈Zq p2a in etwa die Wahrscheinlichkeit dafür, dass wir bei zufälliger Wahl von zwei Buchstaben im Text x zwei gleiche Buchstaben ziehen, d. h. I (x) ≈
∑
i ∈Z26
p2i .
Da man bei einem deutschen Durchschnittstext natürlich die Wahrscheinlichkeiten p a , pb , pc , . . . für die 26 Buchstaben des Alphabets kennt (vgl. die Grafik auf Seite 5), erhält man so leicht den Koinzidenzindex ID für einen solchen Text. Es gilt ID ≈ 0.0762 . Und nun nehmen wir an, dass die Buchstaben in dem Text x = x1 · · · xn alle gleichverteilt sind, d. h. p a = 1q für alle a ∈ Z q . Im Fall q = 26 erhalten wir für einen solchen Text mit gleichverteilten Buchstaben den Index IG ≈ 0.0385 . Man bedenke, dass man bei der (polyalphabetischen) Vigenère-Chiffre eine solche Gleichverteilung aller Buchstaben im Geheimtext als idealisiertes Ziel hat.
16
1 Klassische Verfahren
Bemerkung Wie in Aufgabe 1.5 gezeigt werden soll, gilt ∑ a∈Zq p2a ≥ 1q ; und Gleichheit gilt hierbei genau dann, wenn p a = pb für alle a, b ∈ Z q , d. h. wenn eine Gleichverteilung der Buchstaben herrscht. Bei monoalphabetischer Chiffrierung bleibt der Index I vor und nach der Verschlüsselung offenbar unverändert. Daher ist I ( x ) ein Indikator dafür, ob monoalphabetisch oder polyalphabetisch verschlüsselt wurde. Bei polyalphabetischer Verschlüsselung wird I ( x ) nämlich kleiner, sofern die Schlüsselbuchstaben gleichverteilt gewählt wurden. Für die folgende Betrachtung nehmen wir an, dass x ein mit der Vigenère-Chiffre verschlüsselter deutscher Text sei. Die Schlüssellänge, die wir näherungsweise bestimmen wollen, sei . Den Friedman’schen Koinzidenzindex I ( x ) können wir mit der oben angegebenen Formel bestimmen, es sind hierbei nur die Häufigkeiten der einzelnen Buchstaben zu ermitteln. Nun ermitteln wir den Friedman’schen Koinzidenzindex I ( x ) zu dem Geheimtext C = x1 · · · xn erneut, aber näherungsweise und in Abhängigkeit von der Länge des Schlüsselworts. Die näherungsweise Formel für I ( x ), die wir erhalten, können wir nach auflösen. Daraus gewinnen wir eine Näherung für . Der Übersicht wegen stellen wir uns vor, der Text sei in ein -spaltiges Schema eingetragen. x1 x+1 .. .
x2 x+2 .. .
... ... .. .
xr+1
...
xn
x x2 .. .
Es liegt dann in jeder Spalte eine Caesar-Chiffrierung vor. Damit ist der Koinzidenzindex in jeder Spalte in etwa der Index eines (durchschnittlichen) deutschsprachigen Textes: I ( xk , xk+ , xk+2 , . . . ) ≈ ID . Die Wahrscheinlichkeit, in zwei verschiedenen Spalten ein Paar aus gleichen Buchstaben zu wählen, ist in etwa IG (hierbei nehmen wir an, dass das Schlüsselwort hinreichend zufällig und groß genug ist, sodass also über die Spalten verteilt in etwa eine Gleichverteilung der Buchstaben besteht). Wir bestimmen nun den Koinzidenzindex. Dazu ist die Wahrscheinlichkeit zu bestimmen, dass man bei zufälliger Wahl von zwei Buchstaben xi , x j , i = j, aus dem Geheimtext C = x1 · · · xn zwei gleiche Buchstaben xi = x j auswählt. Um diese Wahrscheinlichkeit zu bestimmen, ermitteln wir zunächst, wie viele Buchstabenpaare es im Geheimtext bei der obigen Anordnung gibt. Wenn wir zwei Buchstaben xi und x j zufällig wählen, dann liegen beide Buchstaben xi und x j entweder in ein und derselben Spalte oder sie liegen in zwei verschiedenen Spalten.
1.6 Polyalphabetische Chiffrierung
17
n n −1 n ( ) Es gibt in etwa ( 2 ) = 2 Buchstabenpaare in einer Spalte (dieses etwa bezieht sich darauf, dass die hinteren Spalten evtl. um ein Element kürzer sind, n bei den vorderen Spalten ist die Angabe ( 2 ) natürlich exakt). Für die Spalten erhalten wir also
•
Die Anzahl der ungeordneten Buchstabenpaare aus gleichen Spalten ist in n ( n −1) = n (2n−) etwa 2 .
Wir ermitteln nun, wie viele Möglichkeiten es gibt, zwei Buchstaben aus verschien ( n −1) Möglichkeiten, zwei denen Spalten zu wählen: Es gibt insgesamt (n2 ) = 2 Buchstaben zu wählen. Davon subtrahieren wir nun die oben geschätzte Anzahl der Möglichkeiten, zwei Buchstaben in einer Spalte zu wählen, und erhalten in etwa die Anzahl der Möglichkeiten, zwei Buchstaben in verschiedenen Spalten zu wählen:
n (n − n ) n (n − 1) n n − 1 . − = 2 2 2 Wir halten fest: •
Die Anzahl der ungeordneten Buchstabenpaare aus verschiedenen Spalten n (n− n ) 1 ist in etwa = n2 − 2 2 .
Wegen Lemma 1.2 ist die relative Häufigkeit von Paaren gleicher Buchstaben in den Spalten durch ID gegeben, die von Paaren in verschiedenen Spalten durch IG . Damit erhalten wir die erwartete Anzahl A von Paaren gleicher Buchstaben im gesamten Geheimtext C = x1 · · · xn : A=
n (n − ) −1 ID + n2 I . 2 2 G
Wenn wir diese Anzahl A durch die Anzahl (n2 ) aller möglichen Paare teilen, erhalten wir eine Näherung für den Friedman’schen Koinzidenzindex: I (x)
≈ =
n− n −1 I + I ( n − 1) D n − 1 G 1 n 1 n I − ID . ( I − IG ) + n−1 D n−1 G n−1 A
n ( n −1) 2
=
Daraus ergibt sich folgender Schätzwert für die Schlüssellänge:
≈
n ( I D − IG ) . ( n − 1 ) I ( x ) + I D − n IG
Beispiel Wir wenden den Friedman-Test auf den Geheimtext aus dem Beispiel auf Seite 12 an. Um den Friedman-Test durchführen zu können, muss man erst den Friedmanschen Koinzidenzindex I (C) des Geheimtextes C berechnen. Dazu bestimmt
18
1 Klassische Verfahren
man die Häufigkeiten hα der Buchstaben α des benutzten Alphabets, in diesem Fall des 26-buchstabigen lateinischen Alphabets. Diese sind in folgender Tabelle aufgelistet. 3 3 4
A J S
B K T
7 8 3
C L U
12 12 2
D M V
5 11 12
E N W
2 5 3
F O X
2 9 4
G P Y
6 9 11
H Q Z
0 4 8
I R
4 7
Daraus errechnet sich der Koinzidenzindex dann wie folgt: I (C) =
1 3·2+7·6+···+8·7 h α · ( h α − 1) = ≈ 0.0457 . · n · (n − 1) α∈∑ 156 · 155 A 26
Mit diesem Koinzidenzindex I (C) erhalten wir für die Schlüssellänge die Schätzung:
≈
n · ( I D − IG ) 156 · (0.0762 − 0.0385) ≈ ≈ 5.10 . (n − 1) · I (C) + ID − n · IG 155 · 0.0457 + 0.0762 − 156 · 0.0385
Dieses Ergebnis ist konsistent mit dem Ergebnis des Kasiski-Tests, der oben durchgeführt wurde. Ein Angreifer, der mithilfe der beiden Tests die Schlüssellänge = 5 ermittelt hat, kann den Geheimtext entschlüsseln, indem er ihn in fünf Teilchiffren zerlegt und diese durch Häufigkeitsanalyse knackt. Ist im Extremfall der Schlüssel länger als der zur Verfügung stehende Geheimtext, und sind die Schlüsselbuchstaben gleichverteilt gewählt, so ergibt sich I (C) = IG . Dann läuft der Friedman-Test (und jeder andere Angriff) ins Leere. Unsere Formel liefert für diesen Fall ≈ n. Das wird im folgenden Kapitel genauer diskutiert. Bemerkung Wie schon erwähnt, sind viele Varianten der klassischen Vigenère-Chiffrierung möglich. So kann etwa eine Substitutions-Chiffre anstelle einer einfachen Verschiebe-Chiffre benutzt werden. Alle Varianten wurden gebrochen. Die statisti sche Analyse spielte dabei stets eine Schlüsselrolle.
1.7
Affine Chiffren und ihre Kryptoanalyse *
Affine Chiffren verallgemeinern die Vigenère-Chiffre. Sie nutzen die Tatsache aus, dass Z q nicht nur eine abelsche Gruppe, sondern sogar ein Ring ist. Wir formulieren affine Chiffren nachfolgend noch etwas allgemeiner. Anstelle von Z q sei ein kommutativer Ring R mit Einselement 1 gegeben.
1.7 Affine Chiffren und ihre Kryptoanalyse *
19
1.7.1 Der Matrizenring über R Ein Element u des Ringes R heißt Einheit, wenn es v ∈ R gibt mit u v = 1. Man sagt auch, u sei invertierbar. Die Menge aller Einheiten bildet eine Gruppe R× , genannt die Einheitengruppe. Die Einheitengruppe von Z ist z. B. Z × = {±1}. Aus der linearen Algebra sind Matrizen über einem Körper K bekannt. Es wurden Addition, Multiplikation und auch die Determinante von quadratischen Matrizen eingeführt. Für jedes ∈ N ist (K × , +, ·) ein Ring mit Einselement I – die × -Einheitsmatrix. Und eine × -Matrix M über dem Körper K ist bekanntlich genau dann invertierbar, wenn die Determinante det M ungleich 0, d. h. eine Einheit in K ist. Für die Definitionen war es nicht entscheidend, dass K ein Körper ist, diese Definitionen sind auch für einen Ring R möglich. Und man erhält dasselbe Resultat. Wir bezeichnen den Ring der × -Matrizen über R mit der bekannten Addition und Multiplikation von Matrizen mit R× . Und eine Matrix M ∈ R× ist genau dann invertierbar, wenn die Determinante det M in R× liegt, d. h. eine Einheit in R ist. Das zeigt man wie in der linearen Algebra mithilfe der Adjunkten. Auch die meisten Sätze zu Matrizen über einem Körper K bleiben im Falle eines Ringes R richtig. So gelten etwa •
der Laplace’sche Entwicklungssatz für die Determinante und
•
das Invertierbarkeitskriterium für Matrizen: Eine Matrix ist genau dann invertierbar, wenn ihre Spalten linear unabhängig sind.
Beispiel Wir betrachten zwei Matrizen über dem Ring (Z8 , +, ·); es gilt Z8× = {1, 3, 5, 7}. Wegen ⎛ ⎞ 2 3 0 2 3 det = −1 = 7 und det ⎝0 1 1⎠ = 4 1 1 0 2 0 ist die erste Matrix invertierbar, die zweite jedoch nicht. Es gilt: ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ 3 0 2 0 2 ⎝0⎠ + 4 ⎝1⎠ + 4 ⎝1⎠ = ⎝0⎠ . 0 0 2 0 Daher sind die Spalten der Matrix linear abhängig.
1.7.2 Affine Abbildungen Für eine Matrix M ∈ R× und einen Vektor v ∈ R erklären wir die affine Abbildung R → R . f ( M, v) : x → M x + v
20
1 Klassische Verfahren
Lemma 1.3 Es seien M ∈ R× eine invertierbare Matrix und v ∈ R ein Vektor. Dann ist die affine Abbildung f ( M, v) invertierbar. Das Inverse von f ( M, v) ist f ( M−1 , − M−1 v) . Beweis. Es sei x ∈ R . Dann gilt: f ( M−1 , − M−1 v) ◦ f ( M, v) ( x ) = f ( M−1 , − M−1 v) ( f ( M,v) ( x ))
= f ( M −1 , − M −1 v ) ( M x + v ) = M −1 ( M x + v ) − M −1 v = x Analog zeigt man f ( M, v) ◦ f ( M−1 , − M−1 v) ( x ) = x. Folglich ist f ( M, v) invertierbar, und es ist f ( M−1 , − M−1 v) das Inverse von f ( M, v) .
1.7.3
Affine und lineare Chiffren
Lemma 1.3 liefert ein Verschlüsselungsverfahren. Ein Klartext N ∈ Rn wird in Blöcke der Länge unterteilt
N = ( x1 · · · x ) ( x+1 · · · x2 ) · · · ( xr +1 · · · x(r+1) ) (falls n, wird der letzte Block durch Buchstaben aus R zu einem Block der Länge ergänzt) und dann jeder Block x = xs +1 · · · x(s+1) ∈ R mit einer invertierbaren affinen Abbildung f ( M, v) verschlüsselt: x
Verschlüsselung
−→
f ( M, v) ( x ) .
Mit der Umkehrabbildung g( M, v) := f ( M−1 , − M−1 v) wird dann jeder Block y = f ( M, v) ( x ) ∈ R entschlüsselt: y
Entschlüsselung
−→
f ( M −1 , − M −1 v ) ( y ) = x .
Bei einer solchen affinen Chiffre besteht der Schlüssel ( M, v) aus einer invertierbaren Matrix M ∈ R× und einem Vektor v ∈ R . Im Fall v = 0 spricht man von einer linearen Chiffre. Beispiel Die Vigenère-Chiffre ist eine affine Chiffre über R = Z q mit M = I , der × Einheitsmatrix, und v = k1 · · · k , dem Schlüsselwort.
1.7 Affine Chiffren und ihre Kryptoanalyse *
21
1.7.4 Die Kryptoanalyse affiner Chiffren Wir behandeln die Kryptoanalyse einer affinen Chiffre bei einem Known-PlainText-Angriff. Gegeben sind + 1 Klartext-Geheimtext-Paare ( xi , yi ) ∈ R × R , i = 0, . . . , , einer affinen Chiffre mit der Verschlüsselungsfunktion f ( M,v) , also yi = f ( M,v) ( xi ) für i = 0, . . . , , wobei M ∈ R× invertierbar und v ∈ R ist. Dann lässt sich der geheime Schlüssel, das ist das Paar ( M, v), leicht ermitteln, falls die Vektoren x1 − x0 , x2 − x0 , . . . , x − x0 ∈ R linear unabhängig sind. Es gilt nämlich: Lemma 1.4 Bilden die Vektoren x1 − x0 , x2 − x0 , . . . , x − x0 eine Basis des R , so erhält man mit den Matrizen X = ( x1 − x0 , x2 − x0 , . . . , x − x0 ) und Y = (y1 − y0 , y2 − y0 , . . . , y − y0 ) den geheimen Schlüssel ( M, v) durch: M = Y X −1 und v = y0 − M x0 . Beweis. Es sei i ∈ {1, . . . , }. Für die i-te Spalte der Matrix Y gilt: y i − y0 = ( M x i + v ) − ( M x0 + v ) = M ( x i − x0 ) . Damit erhalten wir M X = Y. Da die Vektoren x1 − x0 , x2 − x0 , . . . , x − x0 eine Basis des R bilden, ist die Matrix X invertierbar. Daher gilt M = Y X −1 . Wegen y0 = M x0 + v erhält man mit der Kenntnis von M dann auch v. Ist das Paar ( M, v) erst einmal bekannt, so ist natürlich auch der Dechiffrierschlüssel ( M−1 , − M−1 v) leicht zu ermitteln. Im Fall R = Z q , q ∈ N, bestimmt man M vorteilhaft durch einen Ansatz mit unbekannten Koeffizienten und löst das entstehende inhomogene lineare Gleichungssystem über Z q mit einem modifizierten Gauß-Verfahren. Ist die Blocklänge zuerst nicht bekannt, so kann man diese mit den Tests von Kasiski und Friedman wie für die Vigenère-Chiffre ermitteln. Die Kryptoanalyse wird bei einem Chosen-Plain-Text-Angriff trivial. Lässt man nämlich die + 1 Klartexte 0, e1 , . . . , e mit dem Nullvektor 0 ∈ R und den Einheitsvektoren e1 , . . . , e ∈ R der kanonischen Basis verschlüsseln, so erhält man der Reihe nach den Vektor v und die Spalten der Matrix M. Daher spielen lineare Chiffren in der modernen Kryptologie keine Rolle mehr. Bei der Konstruktion moderner Verfahren wird vielmehr darauf geachtet, sie so nichtlinear wie möglich zu gestalten. Nicht-Linearität ist ein wichtiges Qualitätskriterium.
22
1 Klassische Verfahren
Aufgaben 1.1 Die Skytale ist die älteste bekannte Verschlüsselungsmethode, die für militärische Zwecke eingesetzt wurde. Sie wurde vor über 2500 Jahren von den Spartanern verwendet: Ein schmaler Streifen Pergament oder Leder wird spiralförmig um einen zylindrischen Stab gewickelt und in Längsrichtung des Stabes beschrieben. Wird der Streifen abgewickelt, bleibt ein unverständlicher Buchstabensalat. Der (legitime) Empfänger wickelt den Streifen um einen Stab gleichen Durchmessers und kann die Nachricht lesen. Zeigen Sie, dass die Skytale unter geeigneten Annahmen eine lineare Chiffre ist. Welches ist der Schlüssel? 1.2 Es sei S = ( P, C, K, f , g) ein Kryptosystem. Zeigen Sie, dass für jedes k ∈ K die Abbildungen f k := f ( . , k) : P → C injektiv und gk := g( . , k ) surjektiv sind. 1.3
Bei welchen Angriffsarten versagen monoalphabetische Chiffren?
1.4
Gegeben ist der folgende Geheimtext:
KOZYVSQMFJKYDAFUXEQYPYZVVSFQGTOHQSSLXQQBAXUSXYOQBVMFGF RSMQWEDUSSESUZUJHGNZZATQGTOHQZCLOYRZLLGBULYOYVMOTF UYCZBVUMMGJLHEHVOYZRCLOFSJJBISZNYZRZUMSSJWLMSTOPQFKPYRH RSMQWEAIFUVZWTCJZYZSIOUESRBZPSIZUZRSHHWGTOFUHKZWTIYSCQT (a) Wenden Sie (i) den Kasiski-Test, (ii) den Friedman-Test an, und bestimmen Sie die (vermutliche) Länge des Schlüsselwortes. (b) Bestimmen Sie den zugehörigen Klartext. Welches Schlüsselwort wurde benutzt? m
1.5 Es seien m ∈ N und p1 , . . . pm nichtnegative reelle Zahlen mit ∑ pi = 1. i =1
Zeigen Sie: m
(a) ∑ p2i = i =1 m
1 m
m
+ ∑
i =1
pi −
(b) ∑ p2i ist nie kleiner als i =1
1 m
2
1 m.
.
Wann liegt Gleichheit vor?
1.6 Folgendes Klartext-Geheimtext-Paar wurde mit einer affinen Chiffre über Z12 mit Blocklänge 2 erzeugt: 1 3 6 2 N : x0 = , x1 = , x2 = , x3 = . 0 4 7 2 6 10 1 2 , c1 = , c2 = , c3 = . C : c0 = 3 1 1 2 Bestimmen Sie alle Schlüssel ( M, v) ∈ GL2 (Z12 ) × Z212 , sodass M xi + v = ci für i = 0, 1, 2, 3 gilt.
2 Das One-Time-Pad und perfekte Sicherheit Etwas salopp ausgedrückt ist ein Kryptosystem perfekt sicher, wenn ein Angreifer einen Geheimtext zu jedem möglichen Klartext der gleichen Länge mit der gleichen Wahrscheinlichkeit entziffert. So vermutet ein Angreifer bei einem perfekt sicheren Verfahren hinter dem Geheimtext ODLHOWBPDOCP die Klartexte ich liebe dich
oder
heute passt es
mit der gleichen Wahrscheinlichkeit, aber auch jeden anderen sinnigen oder unsinnigen Klartext, der 12 Buchstaben enthält. Perfekt sichere Kryptosysteme finden in der Praxis nur selten Anwendung, da der Schlüsselaustausch sehr umständlich ist. Soll ein Verfahren perfekt sicher sein, so muss der Schlüssel mindestens so lang wie die Nachricht selbst sein, d. h., um eine Nachricht mit n Buchstaben vertraulich austauschen zu können, muss vorher ein Schlüssel mit mindestens derselben Länge ausgetauscht werden. Das sogenannte One-Time-Pad ist ein perfekt sicheres Verfahren. Und wie die Bezeichnung schon verrät, darf bei diesem Verfahren ein Schlüssel nur einmal benutzt werden. Das One-Time-Pad ist im Wesentlichen eine Vigenère-Chiffre, bei der der Schlüssel die Länge des Klartextes hat und jeder Buchstabe des SchlüsselStrings gemäß einer Gleichverteilung gewählt wird.
2.1 Das One-Time-Pad Bevor wir erläutern, was man unter perfekter Sicherheit versteht, schildern wir das One-Time-Pad – eine perfekt sichere Strom-Chiffre. 2.1.1 Strom-Chiffren Bei einer Strom-Chiffre wird, im Gegensatz zu einer Block-Chiffre, jeder Buchstabe xi des Klartextes N = x1 · · · xn ∈ A∗ , A ein Alphabet, sofort mithilfe eines Schlüssels in einen Buchstaben des Geheimtextes verschlüsselt: Klartext N :
x1 ↓
x2 ↓
· · · xn ··· ↓
Geheimtext C :
c1
c2
···
cn
24
2 Das One-Time-Pad und perfekte Sicherheit
Bei einer Block-Chiffre hingegen wird die Nachricht
N = x1 · · · xn = ( x1 · · · x ) ( x+1 · · · x2 ) · · · ( xr +1 · · · xn ) ∈ An blockweise chiffriert; dazu wird zunächst ein eventuell verbleibender letzter unvollständiger Block ( xr +1 · · · xn ) durch weitere Buchstaben zu einem vollständigen Block ( xr +1 · · · x(r+1) ) aufgefüllt: Klartext N : Geheimtext C :
( x1 · · · x ) ( x+1 · · · x2 ) · · · ( xr +1 · · · x(r+1) ) ↓ ↓ ··· ↓ ( c1 · · · c )
(c+1 · · · c2 )
···
(cr +1 · · · c(r+1) )
Beispiel Die Vigenère-Chiffre ist eine Strom-Chiffre. Jede affine Chiffre mit M = I (siehe Abschnitt 1.7.3) ist eine Block-Chiffre. Wie bereits erwähnt, sind affine Chiffren unsicher. Es gibt aber auch sichere Block-Chiffren, wir werden solche in Kapitel 3 behandeln.
2.1.2
Das Verfahren
Das One-Time-Pad, zu deutsch Einmal-Block, ist eine Strom-Chiffre, die schon im Jahre 1917 von den AT&T Mitarbeitern Gilbert Vernam und Joseph O. Mauborgne für den Einsatz in der Telegrafie vorgeschlagen wurde. Vernam hat diese Chiffre ein Jahr später patentieren lassen. Daher spricht man auch von der VernamChiffre. Kennzeichnend für das One-Time-Pad ist, dass •
der benutzte Schlüssel nur einmal verwendet werden darf (One-time),
•
der Schlüssel genauso lang wie die Nachricht ist,
•
der Schlüssel-String zufällig gewählt werden muss.
Einfach ausgedrückt ist ein One-Time-Pad eine Vigenère-Chiffre mit einem Schlüssel-String, der mindestens die Länge des Klartextes N hat; genauer: Das One-Time-Pad ist ein Kryptosystem mit Klartext-, Geheimtext- und Schlüsselmenge P = C = K = Z2∗ – die Menge der Strings über dem Alphabet Z2 . Es seien N = x1 · · · xn ∈ Z2∗ ein Klartext der Länge n und k1 · · · kr ∈ Z2∗ ein Schlüssel der Länge r ≥ n, wobei jede Ziffer k i ∈ Z2 des Schlüssel-Strings zufällig (genauer gleichverteilt) gewählt wird. Wir wählen die ersten n Bits des Schlüssel-Strings k := k1 k2 · · · k n und verschlüsseln: C = f (N , k) := N + k = ( x1 + k1 , . . . , xn + k n ) .
2.2 Elementare Wahrscheinlichkeitsrechnung
25
Die Entschlüsselung des Geheimtextes C = (y1 · · · yn ) ∈ Z2∗ erfolgt genauso:
N = f (C , k) := C + k = (y1 + k1 , . . . , yn + k n ) . Die Sicherheit des One-Time-Pad ist fast offensichtlich. Da die Ziffern des Schlüssels k gemäß einer Gleichverteilung zufällig aus Z2 gewählt werden, ist der Geheimtext C = N + k gleichverteilt in Z2n . Beobachtet man C , so ist jede mögliche Nachricht N gleichwahrscheinlich. Es gibt also keinen Hinweis auf den Inhalt der Nachricht. Wir werden dieses Argument im nächsten Abschnitt präzisieren, wenn wir eine Definition für den Begriff der perfekten Sicherheit haben werden. Bemerkung
Der Schlüssel k darf nur einmal benutzt werden, da man ihn bei einem KnownPlain-Text-Angriff als k = C + N ermitteln kann.
Das Verfahren kann man auf das Alphabet Z q , q > 1, verallgemeinern.
Ein großes Problem in der Praxis ist der Schlüsselaustausch. Dafür muss man genauso viele Daten übertragen wie später für die eigentliche Nachricht. Daher werden One-Time-Pads nur für sehr spezielle Anwendungen eingesetzt.
Auch die Schlüsselerzeugung ist schwierig. Das Problem ist die Erzeugung von Zufallsfolgen. Mathematische Methoden sind deterministisch, die erzeugten Folgen sind also nicht zufällig. Eine physikalische Erzeugung, etwa über den radioaktiven Zerfall, ist hingegen sehr aufwändig und langsam. In der Praxis begnügt man sich meist mit Pseudozufallsfolgen. Das sind deterministisch konstruierte Folgen, die wie zufällig aussehen und deren Bildungsgesetz schwer zu finden ist.
TAN-Listen, wie sie etwa beim Online-Banking verwendet werden, stellen eine Variante der Vernam-Chiffre dar. Sie dienen aber nicht der Verschlüsselung, sondern der Authentifizierung und der Rechtsverbindlichkeit.
2.2 Elementare Wahrscheinlichkeitsrechnung Wir führen einige Begriffe der Wahrscheinlichkeitstheorie ein und leiten schließlich den Satz von Bayes her. In diesem Abschnitt seien durchweg P eine endliche Menge und Pot( P) = { A ; A ⊆ P} die Potenzmenge von P.
26
2 Das One-Time-Pad und perfekte Sicherheit
2.2.1
Wahrscheinlichkeitsverteilung und Wahrscheinlichkeitsfunktion
Wir nennen eine Abbildung p : Pot( P) → [0, 1] mit den beiden Eigenschaften p( P) = 1 und p( A ∪ B) = p( A) + p( B) , falls A ∩ B = ∅ eine Wahrscheinlichkeitsverteilung auf der Menge P. Für jedes Element A ∈ Pot( P) bezeichnen wir die Zahl p( A) ∈ [0, 1] als die Wahrscheinlichkeit, mit der das Ereignis A ∈ Pot( P) eintritt. Man beachte, dass p(∅) = 0 gilt. Dies folgt aus: p( A) = p( A ∪ ∅) = p( A) + p(∅) . Eine Wahrscheinlichkeitsfunktion auf der (endlichen) Menge P ist eine Abbildung p˜ : P → [0, 1] mit der Eigenschaft
∑
x∈P
p˜ ( x ) = 1 .
Aus einer Wahrscheinlichkeitsverteilung p : Pot( P) → [0, 1] gewinnt man eine Wahrscheinlichkeitsfunktion p˜ : P → [0, 1], indem man setzt p˜ ( x ) := p({ x }) für alle x ∈ P . Es gilt dann nämlich:
∑
x∈P
p˜ ( x ) =
∑
x∈P
p({ x }) = p
{x}
= p( P) = 1 .
x∈P
Ist umgekehrt eine Wahrscheinlichkeitsfunktion p˜ : P → [0, 1] gegeben, dann wird durch p : Pot( P) → [0, 1], wobei p( A) :=
∑
x∈ A
p˜ ( x )
für alle A ∈ Pot( P)
eine Wahrscheinlichkeitsverteilung definiert. Wir unterscheiden im Weiteren die beiden Abbildungen p und p˜ nicht typografisch, d. h., wir setzen p˜ = p. Wir werden stets mit einer der beiden Abbildungen die andere als gegeben annehmen. Beispiel
Es sei | P| = q = 0. Wir erklären eine Abbildung p : P → [0, 1] durch p( x ) :=
1 für jedes x ∈ P . q
Offenbar ist p eine Wahrscheinlichkeitsfunktion auf der Menge P. Die daraus resultierende Wahrscheinlichkeitsverteilung nennt man Gleichverteilung.
2.2 Elementare Wahrscheinlichkeitsrechnung
27
Wir betrachten die Grafik auf Seite 5 zur Häufigkeitsverteilung der Buchstaben a, b, c, . . . , z des deutschen Alphabets A in einem durchschnittlichen deutschen Text. Ist hα die relative Häufigkeit des Buchstabens α ∈ A, so ist p : A → [0, 1] mit p(α) := hα für jedes α ∈ A
eine Wahrscheinlichkeitsfunktion auf der Menge A.
2.2.2 Bedingte Wahrscheinlichkeit Es sei p eine Wahrscheinlichkeitsverteilung auf der Menge P. Sind A, B ∈ Pot( P) Ereignisse mit p( B) = 0, so nennt man p( A | B) :=
p( A ∩ B) p( B)
die bedingte Wahrscheinlichkeit für das Eintreffen von A, wenn man B schon beobachtet hat. Man sagt, die Ereignisse A und B sind unabhängig, falls p( A ∩ B) = p( A) · p( B) . Gilt p( B) = 0, so ist das gleichbedeutend mit p( A | B) = p( A). Das Eintreten des Ereignisses B hat dann keinen Einfluss auf die Wahrscheinlichkeit, mit der das Ereignis A eintritt. Entsprechend ist die Unabhängigkeit der Ereignisse A und B mit p( A) = 0 gleichbedeutend mit p( B | A) = p( B). Beispiel Wir werfen einen fairen Würfel. Die Menge P = {1, 2, 3, 4, 5, 6} der möglichen Ergebnisse versehen wir mit der Wahrscheinlichkeitsfunktion p, die eine Gleichverteilung liefert, d. h. 1 für alle x ∈ P . p( x ) = 6 Nun untersuchen wir die Ereignisse A, eine Augenzahl ≥ 5, B, eine gerade Zahl und C, eine Augenzahl ≤ 3, zu werfen, d. h. A = {5, 6} , B = {2, 4, 6} und C = {1, 2, 3} . Für die Wahrscheinlichkeiten dieser Ereignisse sowie der Ereignisse A ∩ B und C ∩ B erhalten wir p( A) =
1 1 1 1 1 , p ( B ) = , p (C ) = , p ( A ∩ B) = , p (C ∩ B) = . 3 2 2 6 6
Nun rechnen wir nach: p( A | B) :=
1/6 1 = = p( A) 1/2 3
und
p(C | B) :=
1/6 1 = = p(C ) . 1/2 3
28
2 Das One-Time-Pad und perfekte Sicherheit
Somit sind die Ereignisse A und B unabhängig, die Ereignisse C und B aber nicht. Dieses Ergebnis erscheint auch plausibel, da das Eintreten des Ereignisses B, also das Würfeln einer geraden Zahl, keine Konsequenz auf die Wahrscheinlichkeit hat, mit der das Ereignis A = {5, 6} eintritt, sehr wohl aber auf die Wahrschein lichkeit des Ereignisses C = {1, 2, 3}. Für das Weitere benötigen wir: Satz 2.1 (Bayes) Für Ereignisse A, B ⊆ P mit p( A), p( B) > 0 gilt p( A) · p( B | A) = p( B) · p( A | B) . Beweis. Die Behauptung folgt unmittelbar, indem man in die angegebene Gleip( B∩ A) p( A∩ B) chung p( B | A) = p( A) und p( A | B) = p( B) einsetzt.
2.3
Der Satz von Shannon
Der Satz von Shannon kennzeichnet perfekt sichere Kryptosysteme. 2.3.1
Perfekt sichere Kryptosysteme
Gegeben sei ein Kryptosystem S = ( P, C, K, f , g) mit endlichen Mengen P, C, K. Wir nehmen an, dass auf den Mengen P und K je eine Wahrscheinlichkeitsfunktion p P und pK gegeben ist. Mithilfe von p P und pK definieren wir eine Wahrscheinlichkeitsfunktion p auf dem kartesischen Produkt P × K = {( x, k) ; x ∈ P, k ∈ K } durch p : P × K → [0, 1] , ( x, k) → p P ( x ) · pK (k) . Dass p tatsächlich eine Wahrscheinlichkeitsfunktion ist, zeigt die folgende Rechnung: ∑ p(x, k) = ∑ ∑ pP (x) · pK (k) = ∑ pK (k) = 1 . ( x,k)∈ P×K
k∈K x ∈ P
k∈K
Bemerkung In der Definition der Wahrscheinlichkeitsfunktion p drückt sich die Annahme aus, dass x ∈ P und k ∈ K unabhängig voneinander gewählt werden. Die Verschlüsselungsfunktion f : P × K → C unseres gegebenen Kryptosystems S ordnet einem Klartext-Schlüssel-Paar ( x, k) ∈ P × K den Geheimtext f ( x, k) = c zu. Für fest gewählte x ∈ P, k ∈ K und c ∈ C betrachten wir die folgenden Teilmengen, d. h. Ereignisse von P × K: x × K , P × k , Dc : = f −1 ( c ) .
2.3 Der Satz von Shannon
29
Dabei haben wir abkürzend x × K := { x } × K = {( x, j) ∈ P × K ; j ∈ K } und P × k := P × {k} = {(y, k) ∈ P × K ; y ∈ P} gesetzt. Man beachte, dass Dc = {(y, j) ∈ P × K ; f (y, j) = c} die Menge aller Klartext-Schlüssel-Paare ist, die durch die Verschlüsselungsfunktion f in den gegebenen Geheimtext c chiffriert werden. Wir nennen das Kryptosystem S = ( P, C, K, f , g) perfekt sicher, wenn die Ereignisse x × K und Dc für alle x ∈ P und c ∈ C unabhängig sind, d. h. wenn gilt p(( x × K ) ∩ Dc ) = p( x × K ) · p( Dc ) für alle x ∈ P , c ∈ C . Mithilfe der bedingten Wahrscheinlichkeit können wir dies im Fall p( Dc ) = 0 auch ausdrücken als p( x × K | Dc ) = p( x × K ) für alle x ∈ P , c ∈ C . Die Gleichheit dieser Wahrscheinlichkeiten bedeutet, dass ein Angreifer nichts über den Klartext x lernt, wenn er den Geheimtext c beobachtet hat. Man beachte, dass gilt p( x × K ) = p P ( x )
und
p ( P × k ) = p K ( k ).
Wir betrachten ein Beispiel. Beispiel Es seien P = {0, 1} , K = {u, v, w, z} , C = {U, V, W, Z } . Durch die folgende Tabelle wird ein Kryptosystem S = ( P, C, K, f ) definiert. f (. , . ) 0 1
u U V
v V U
w W Z
z Z W
Es ist etwa f (1, v) = U. Weiter seien Wahrscheinlichkeitsfunktionen p P auf P und pK auf K gegeben durch: p P (0) = α,
p P (1) = β
und
pK (u) = pK (v) = σ,
pK (w) = pK (z) = τ,
wobei α, β, σ, τ ∈]0, 1[ mit α + β = 1 und σ + τ = 12 . Mithilfe der Funktionen p P und pK bilden wir die Wahrscheinlichkeitsfunktion p auf P × K durch p( x, k) = p P ( x ) · pK (k) . Es gilt etwa DZ = {(0, z), (1, w)} und daher p( DZ ) = p P (0) · pK (z) + p P (1) · pK (w) = ατ + βτ = τ .
30
2 Das One-Time-Pad und perfekte Sicherheit
Durch analoge Rechnungen findet man p( DU ) = p( DV ) = σ und p( DW ) = τ. Es gilt (0 × K ) ∩ DZ = {(0, z)}, also p ((0 × K ) ∩ DZ ) = ατ = p(0 × K ) · p( DZ ). Daher sind die Ereignisse 0 × K und DZ unabhängig. In gleicher Weise zeigt man die Unabhängigkeit der verbleibenden Ereignisse 1 × K und DZ ,
0 × K und DW ,
1 × K und DW ,
1 × K und DV ,
0 × K und DU ,
1 × K und DU .
0 × K und DV ,
Somit ist das Kryptosystem S = ( P, C, K, f ) perfekt sicher. 2.3.2
Kennzeichnung perfekt sicherer Systeme
Wir nehmen ab jetzt an, dass alle definierten Ereignisse = ∅ eine Wahrscheinlichkeit > 0 haben. Andernfalls kann man die Mengen P bzw. K verkleinern, d. h., man entfernt Elemente aus den Mengen P und K, die mit Wahrscheinlichkeit 0 ausgewählt werden. Als Konsequenz sind die Ereignisse Dc und x × K genau dann unabhängig, wenn p ( Dc ∩ x × K ) = p ( Dc ) · p ( x × K ) ⇔ p ( Dc | x × K ) = p ( Dc )
⇔ p ( x × K | Dc ) = p ( x × K ) . Wir stellen nun fest, dass bei einem perfekt sicheren Kryptosystem zu jedem Klartext N und jedem Geheimtext C ein Schlüssel existiert, durch den der Klartext N in den Geheimtext C chiffriert wird. Lemma 2.2 Es sei S = ( P, C, K, f , g) ein perfekt sicheres Kryptosystem. Dann gibt es zu jedem x ∈ P und c ∈ C stets ein k ∈ K mit f ( x, k) = c. Kurz: Die Abbildung f ( x, . ) : K → C ist für jedes x ∈ P surjektiv. Insbesondere gilt |K | ≥ |C | ≥ | P|. Beweis. Es seien x ∈ P und c ∈ C. Da S perfekt sicher ist, sind die Ereignisse x × K und Dc unabhängig, das bedeutet p(( x × K ) ∩ Dc ) = p( x × K ) · p( Dc ) > 0 . Folglich gilt ( x × K ) ∩ Dc = ∅. Ist also k ∈ K mit ( x, k) ∈ ( x × K ) ∩ Dc , so gilt f ( x, k) = c. Daher ist die Abbildung f ( x, . ) : K → C surjektiv, d. h. |K | ≥ |C |. Die Ungleichung |C | ≥ | P| gilt nach der Definition eines Kryptosystems (vgl. Seite 9). Aus diesem Lemma ergibt sich für einen Angreifer auf ein perfekt sicheres System, dass hinter einem Geheimtext C jeder mögliche Klartext N verborgen sein kann. Wir beweisen den Hauptsatz dieses Kapitels. Nach ihm muss in einem perfekt sicheren Kryptosystem die Wahrscheinlichkeitsverteilung auf dem Schlüsselraum die Gleichverteilung sein.
2.3 Der Satz von Shannon
31
Satz 2.3 (Shannon) Es sei S = ( P, C, K, f , g) ein Kryptosystem mit den Wahrscheinlichkeitsfunktionen p P auf P, pK auf K und p auf P × K mit p( x, k) = p P ( x ) · pK (k ). Weiter gelte
|K | = |C | = | P| . Das Kryptosystem S ist genau dann perfekt sicher, wenn:
(i)
Für jedes k ∈ K gilt pK (k) = p( P × k) =
(ii)
für jedes x ∈ P ist die Abbildung f ( x, . ) : K → C bijektiv.
1 |K |
und
Beweis. ⇒: Das System S sei perfekt sicher. Nach Lemma 2.2 ist die Abbildung f ( x, . ) : K → C für jedes x ∈ P surjektiv und wegen |K | = |C | auch bijektiv, somit gilt (ii). Wir zeigen nun (i). Es sei c ∈ C fest gewählt. Da die Abbildung f ( x, . ) : K → C bijektiv ist, existiert zu jedem x ∈ P genau ein α( x ) ∈ K mit f ( x, α( x )) = c. Damit ist eine Abbildung α : P → K, x → α( x ) definiert, und es gilt Dc ∩ ( x × K ) = {( x, α( x ))} . Wir zeigen α( P) = K: Angenommen, α ist nicht surjektiv. Dann ist α wegen |K | = | P| auch nicht injektiv. Es seien x, x ∈ P, x = x , mit k := α( x ) = α( x ) gewählt. Es folgt f ( x, k) = f ( x , k), im Widerspruch zur Voraussetzung, wonach S ein Kryptosystem ist (man beachte, dass nach Definition eines Kryptosystems die Abbildung f ( . , k ) : P → C injektiv ist, siehe Seite 9). Somit gilt α( P) = K. Wir nutzen nun aus, dass die Ereignisse x × K und Dc , x ∈ P, unabhängig sind und beachten die Definition der bedingten Wahrscheinlichkeit: p ( Dc )
=
p ( Dc | x × K ) =
=
pK (α( x )) .
p( Dc ∩ ( x × K )) p( x, α( x )) p ( x ) · pK (α( x )) = = P p( x × K ) p( x × K ) pP (x)
Für jedes x ∈ P gilt somit pK (α( x )) = p( Dc ), wobei c unser festgewähltes Element aus C ist. Der Wert pK (α( x )), das ist die Wahrscheinlichkeit, den Schlüssel α( x ) ∈ K zu wählen, ist also nicht von x abhängig. Da α surjektiv ist, α( P) = K, haben wir gezeigt, dass jeder Schlüssel mit derselben Wahrscheinlichkeit auftritt. Es folgt die Behauptung (i): pK (k ) = p( P × k ) =
1 für alle k ∈ K . |K |
⇐: Wegen der Bijektivität der Abbildung f ( x, . ) : K → C können wir die Schreibweise α( x ) aus dem ersten Teil des Beweises mit derselben Bedeutung benutzen. Für ein x ∈ P ergibt sich wie eben p ( Dc | x × K ) =
p( x, α( x )) 1 . = pK (α( x )) = p( x × K ) |K |
32
2 Das One-Time-Pad und perfekte Sicherheit
Außerdem erhalten wir wegen Dc = {( x, α( x )) ; x ∈ P}: p ( Dc ) =
∑
x∈P
p( x, α( x )) =
∑
x∈P
p P ( x ) · pK (α( x )) =
1 |K |
∑
x∈P
pP (x) =
1 . |K |
Damit ist p( Dc | x × K ) = p( Dc ) gezeigt, und Dc und x × K sind für jedes c ∈ C und x ∈ K unabhängig. Daher ist das System S perfekt sicher. Beispiel Das One-Time-Pad, das wir zum Beginn des Kapitels beschrieben haben, ist ein perfekt sicheres Kryptosystem. Und die Vigenère-Chiffre ist genau dann perfekt sicher, wenn (k) = ( x ) gilt und die Schlüssel gleichverteilt gewählt werden. Bemerkung Das Beispiel auf Seite 29 zeigt, dass die Voraussetzung |C | = | P| nicht weggelas sen werden kann, sie kann aber abgeschwächt werden (siehe Aufgabe 2.4). Aufgaben 2.1 Ein Palindrom ist ein String, der von vorn und von hinten gelesen gleich bleibt, z. B. otto, stets. Wie groß ist die Wahrscheinlichkeit bei zufälliger Wahl ein Palindrom unter den Strings der Länge n über einem Alphabet A zu ziehen? 2.2
Das Geburtstagsparadoxon
(a) Wählt man aus einer m-elementigen Menge M mit Zurücklegen k ≤ m Elemente, so ist die Wahrscheinlichkeit pm,k dafür, dass die k Elemente alle voneinander verschieden sind, gleich k −1 i pm,k = ∏ 1 − . m i =0 (b) Zeigen Sie:
k ( k − 1) , pm,k ≈ exp − 2m falls k viel kleiner ist als m (Hinweis: Benutzen Sie log(1 − x ) ≈ − x.) √ (c) Zeigen Sie, dass k ≈ 1.2 m, falls pm,k = 12 gilt. (d) Wie viele Personen sollten sich in einem Raum aufhalten, damit die Wahrscheinlichkeit, dass zwei am selben Tag Geburtstag haben, etwa 12 ist. Diese überraschend kleine Zahl ist für den Namen verantwortlich. 2.3 Folgern Sie, unter Verwendung der Bezeichnungen aus Abschnitt 2.3, direkt aus der Definition, dass p( x × K ) = p P ( x ) und p( P × k) = pK (k) gilt. 2.4 Zeigen Sie, dass im Satz von Shannon die Voraussetzung |C | = | P| abgeschwächt werden kann zu |C | < 2 | P|. 2.5 Zeigen Sie, dass in einem perfekt sicheren Kryptosystem ( P, C, K, f , g) jeder Geheimtext mit derselben Wahrscheinlichkeit auftritt.
3 Block-Chiffren – AES und DES Wie schon im Abschnitt 2.1.1 dargestellt, wird bei einer Block-Chiffre der Klartext N in Wörter, sogenannte Blöcke, einer festen Länge eingeteilt
N = ( x1 · · · x ) ( x+1 · · · x2 ) · · · ( xr +1 · · · x(r+1) ) . Die Zahl heißt Blocklänge. Ein evtl. verbleibender letzter Block einer Länge < wird durch weitere Buchstaben zu einem Block der Länge aufgefüllt – man spricht von Padding. Ist die Nachricht N in Blöcke aufgeteilt, so wird jeder Block mit einem Algorithmus und stets demselben Schlüssel k chiffriert:
( x1 · · · x ) ↓ k ( c1 · · · c )
( x+1 · · · x2 ) · · · ( xr +1 · · · x(r+1) ) ↓ k ··· ↓ k (c+1 · · · c2 ) · · · (cr +1 · · · c(r+1) )
Wir haben solche Chiffren bereits kennengelernt, etwa die affine Chiffre bei den klassischen Verfahren in Kapitel 1. Die affine Chiffre jedoch ist unsicher, man kann sie mit wiederholten Known-Plain-Text-Angriffen brechen. Im vorliegenden Kapitel behandeln wir sichere Block-Chiffren, die heutzutage auch benutzt werden. Weil bei einer Block-Chiffre jeder Block der Länge mit dem gleichen Algorithmus und Schlüssel chiffriert wird, können wir im Folgenden davon ausgehen, dass der Klartext N die Länge hat – wir betrachten also stets nur einen Block der Länge . Wir beschreiben allgemein das Kryptosystem ( P, C, K, f , g) einer Block-Chiffre (siehe Abschnitt 1.5): Die Klartextmenge P und Geheimtextmenge C stimmen überein, es gilt P = C = A mit einem endlichen Alphabet A. Bei der Schlüsselmenge K legen wir uns noch nicht fest. Die Verschlüsselungsfunktionen f k : P → C und Entschlüsselungsfunktionen gk : C → P, k ∈ K, sind wegen | P| = |C | ∈ N Bijektionen – man beachte, dass f k bzw. gk nach der Definition eines Kryptosystems (siehe Abschnitt 1.5) injektiv bzw. surjektiv ist. Bei der Block-Chiffre AES, die wir in diesem Kapitel ausführlich behandeln, gilt etwa | A| = 28 und | P| = (28 )16 = 2128 und 2128 ≤ |K | ≤ 2256 , wobei die Schlüsselmenge K je nach Sicherheitsansprüchen variiert werden kann. Bei den bisher behandelten Kryptosystemen waren die Buchstaben Elemente aus Gruppen oder Ringen. Beim Kryptosystem AES wird als Alphabet ein Körper F28 mit 28 Elementen gewählt. Wir werden in einem ersten Abschnitt endliche Körper, also Körper mit endlich vielen Elementen, näher untersuchen, insbesondere zeigen wir, dass es zu jeder Primzahlpotenz q = pn einen Körper mit q Elementen gibt.
34
3.1
3 Block-Chiffren – AES und DES
Endliche Körper
Aus der linearen Algebra sind die endlichen Körper Z p , p prim, mit p Elementen bekannt. Es gibt viele weitere endliche Körper, genauer weiß man: Zu jeder Primzahlpotenz pn , p prim, n ∈ N, existiert bis auf Isomorphie genau ein Körper mit pn Elementen. Dieser Satz wird üblicherweise in einer Vorlesung zur Algebra bewiesen. Wir zeigen hier nur die Existenz von Körpern mit pn Elementen. 3.1.1
Die Restklassenringe Z n
Es sei eine natürliche Zahl n > 1 fest gewählt. In der Menge Z n der Restklassen modulo n wird bekanntlich durch
( a + n Z ) · (b + n Z ) := a b + n Z , d. h. a · b = a b eine Multiplikation · eingeführt. Es ist (Z n , ·) eine Halbgruppe mit neutralem Element 1 + n Z = 1, und (Z n , +, ·) ist ein Ring. Diese Konstruktion des Restklassenringes Z n := Z/(n) aus dem Ring Z wiederholen wir nun: Anstelle des Ringes Z betrachten wir den Polynomring K [ X ] über einem Körper K und konstruieren aus diesem Ring den Restklassenring K [ X ]/(h) für ein Polynom h. Aus der linearen Algebra ist bekannt, dass der Ring Z n genau dann ein Körper ist, wenn n eine Primzahl ist (vgl. auch Korollar 4.17). Ein analoges Ergebnis erhalten wir auch für den Restklassenring K [ X ]/(h) für ein Polynom h: Der Restklassenring K [ X ]/(h) ist genau dann ein Körper, wenn das Polynom h irreduzibel ist, d. h., h ist kein Produkt von Polynomen mit einem Grad ≥ 1. Mit diesem Ergebnis können wir weitere endliche Körper konstruieren. Etwas allgemeiner nehmen wir zunächst an, dass K ein Ring ist. 3.1.2
Polynome
Polynome werden oftmals als formale Ausdrücke der Form an X n + · · · + a1 X + a0 in der Unbestimmten X eingeführt. Wir sind genauer: Es sei K [ X ] die Menge aller Folgen f = ( f 0 , f 1 , . . . , f n , . . .) über K, die nur endlich viele Folgenglieder = 0 besitzen. Ist f nicht die Nullfolge (0, 0, . . .), so existiert ein Folgenindex n ∈ N0 mit f n = 0 und f k = 0 für alle k > n: f = ( f 0 , f 1 , . . . , f n , 0, . . .) . Diese Zahl n nennen wir den Grad von f = (0, 0, . . .), in Zeichen deg f := max {i ∈ N0 ; f i = 0} ; ergänzend setzen wir deg(0, 0, . . . ) = −∞ und halten uns an die üblichen Regeln
−∞ < n und − ∞ + n = −∞ für alle n ∈ N0 .
3.1 Endliche Körper
35
Wir nennen die Elemente f ∈ K [ X ] Polynome, die Folgenglieder f 0 , f 1 , . . . eines Polynoms f nennen wir die Koeffizienten von f , und ist f = (0, 0, . . .), so nennen wir den Koeffizienten f deg f den höchsten Koeffzienten oder den Leitkoeffizienten von f . Wir definieren eine Addition und eine Multiplikation für Polynome f , g ∈ K [ X ]:
( f + g)i := f i + gi und ( f g)i :=
i
∑ f j gi − j
j =0
für alle i ∈ N0 .
Eine einfache Rechnung zeigt, dass K [ X ] dadurch zu einem Ring wird, genannt der Polynomring über K. Beispiel Für die Polynome f = (2, 0, 3, 0, . . .) und g = (1, −1, 0, 1, 0, . . .) aus Z [ X ] gilt: f + g = (3, −1, 3, 1, 0, . . .) und f g = (2, −2, 3, −1, 0, 3, 0, . . .).
Um zur gewohnten Schreibweise f = ∑in=0 f i X i zu kommen, setzen wir X := (0, 1, 0, . . .) und identifizieren jedes Element a aus dem zugrunde liegenden Ring K mit dem Polynom ( a, 0, 0, . . .) ∈ K [ X ]. Damit erhält man aus der obigen Definition für die Multiplikation von Polynomen für alle n ∈ N0 und a ∈ K X n = (0, . . . , 0, 1, 0, . . .) und a X n = (0, . . . , 0, a, 0, . . .) , wobei die 1 bzw. a an (n + 1)-ter Stelle steht und sonst nur Nullen vorkommen. Daraus ergibt sich für f = ( f 0 , f 1 , f 2 , . . . , f deg f , 0, . . .) = (0, 0, . . .) aus der Definition für die Addition von Polynomen die Darstellung: f = f 0 + f 1 X + f 2 X 2 + · · · + f deg f X deg f . Für das Nullpolynom f = (0, 0, . . .) schreiben wir kurz 0. Wir erhalten für den Polynomring K [ X ] die Darstellung: K[X] =
n
∑ ak X k ;
k =0
n ∈ N 0 , a0 , . . . , a n ∈ K
.
Lemma 3.1 Ist K ein Körper oder K = Z, so gilt für alle f , g ∈ K [ X ]: deg( f + g) ≤ max{deg f , deg g} und deg( f g) = deg f + deg g . Beweis. Offenbar stimmen die Regeln für f = 0 oder g = 0. Sind f und g beide ungleich 0, so gilt natürlich deg( f + g) ≤ max{deg f , deg g}. Die Aussage deg( f g) = deg f + deg g folgt durch Berechnen des höchsten Koeffizienten von f g. Wegen ( f g)n+m = f n gm und ( f g) j = 0 für alle j > n + m ist dieser f n gm = 0.
36
3.1.3
3 Block-Chiffren – AES und DES
Division mit Rest
Bei der Konstruktion von Z n aus Z spielt Division mit Rest die zentrale Rolle. Division mit Rest kann man auch in K [ X ] durchführen, wenn K ein Körper ist. Satz 3.2 (Division mit Rest) Es sei K ein Körper. Zu je zwei Polynomen f , g ∈ K [ X ], wobei g = 0, existieren eindeutig bestimmte Polynome q, r ∈ K [ X ] mit f = g q + r und deg r < deg g . Beweis. Die Menge M := { f − g h ; h ∈ K [ X ]} ist nicht leer. Daher existiert ein Polynom r ∈ M mit minimalem Grad. Es gilt somit r = f − g q für ein q ∈ K [ X ]. Wäre n := deg r ≥ m := deg g, so bilde −1 n − m X ∈ M. r : = r − g r n gm Dieses Polynom r liegt in M, da es die Form f − g h hat. Wir berechnen nun: −1 g m −1 X n −1 + · · · r = r n X n + r n −1 X n −1 + · · · + r 0 − r n X n + r n g m −1 r n −1 − r n g m = gm−1 X n−1 + (· · · ) X n−2 + · · · . Es ist also deg r < deg r im Widerspruch zur Wahl von r. Das zeigt die Existenz von q und r mit den geforderten Eigenschaften. Gäbe es ein weiteres Paar q , r ∈ K [ X ], q = q , mit f = g q + r = g q + r mit deg r, deg r < deg g , so folgte für r − r = g (q − q ) aus Lemma 3.1 der Widerspruch deg(r − r ) < deg g ≤ deg g + deg(q − q ) . Daher gilt q = q und damit auch r = r . Wir ziehen eine Folgerung: Korollar 3.3 Ist a Nullstelle eines Polynoms f ∈ K [ X ], d. h. f ( a) = 0, so gibt es ein q ∈ K [ X ] mit f = ( X − a) q . Beweis. Nach dem Satz zur Division mit Rest existieren zu den Polynomen f und X − a Polynome q, r ∈ K [ X ] mit deg r < 1 = deg( X − a), also r ∈ K, und f = ( X − a) q + r . Wir setzen a ein und erhalten 0 = f ( a) = ( a − a) q( a) + r, somit gilt r = 0.
3.1 Endliche Körper
37
3.1.4 Restklassen in Polynomringen Aus der linearen Algebra sind die Restklassen modulo n ∈ N in Z bekannt und auch die Schreibweise a ≡ r (mod n), falls die Zahl a − r durch n teilbar ist. Im Fall f = g · q + r für Polynome f , g, q, r ∈ K [ X ] schreiben wir in Analogie zu den ganzen Zahlen: f ≡ r (mod g) :⇔ f = g q + r für ein q ∈ K [ X ] . Wie bei den ganzen Zahlen ist auch dies eine Äquivalenzrelation auf K [ X ]. Satz 3.2 besagt gerade, dass in jeder Äquivalenzklasse ein Polynom mit Grad kleiner als deg g liegt. Für ein h ∈ K [ X ], h = 0, ist die Menge K [ X ]/(h) := { f ∈ K [ X ] ; deg f < deg h} nach Lemma 3.1 eine Untergruppe von (K [ X ], +). Wir definieren eine Multiplikation auf der Menge K [ X ]/(h): f ·h g ≡ f g (mod h) und deg( f ·h g) < deg h . Wir multiplizieren also die zwei Polynome f und g mittels der oben erklärten Multiplikation für Polynome und führen dann evtl. eine Division mit Rest durch. Wir wählen als f ·h g das nach Satz 3.2 zur Division mit Rest eindeutig bestimmte Polynom r ∈ K [ X ]/(h) mit f g = h q + r und deg r < deg h . Nun können wir ohne große Mühe nachweisen, dass K [ X ]/(h) mit den erklärten Verknüpfungen + und ·h einen Ring bildet. Lemma 3.4 Für jedes Polynom h = 0 aus K [ X ] ist (K [ X ]/(h), +, ·h ) ein Ring mit Einselement 1. Beweis. Es sind nur das Assoziativgesetz für die Multiplikation und das Distributivgesetz zu zeigen. Wir betrachten exemplarisch das Letztere. Es seien f , g, g ∈ K [ X ]/(h). Es gilt: f ·h ( g + g ) − f ·h g − f ·h g = q h für ein q ∈ K [ X ]. Aus Gradgründen folgt q = 0, d. h. f ·h ( g + g ) = f ·h g + f ·h g . Wir betrachten ein wohlbekanntes Beispiel.
38
3 Block-Chiffren – AES und DES
Beispiel Es sei K = R und h = X 2 + 1. Es ist dann C := R [ X ]/(h) = { a + bX ; a, b ∈ R }, und es gilt
( a + bX ) ·h (c + dX ) = ac + ( ad + bc) X + bdX 2 − bd( X 2 + 1) = ac − bd + ( ad + bc) X . Das ist die übliche Multiplikation komplexer Zahlen, wobei X 2 = −1. Es ist somit C der Körper der komplexen Zahlen. Bemerkung In der Algebra wird der Ring K [ X ]/(h) als Restklassenring nach dem von h erzeugten Ideal (h) definiert. Diese Konstruktion abstrahiert auch die Bildung von Z n und ist eine wichtige Methode der Ringtheorie (siehe [14, § 14]). Wir greifen das Thema in Abschnitt 8.4.1 noch einmal auf. 3.1.5
Der ggT von Polynomen
Ein Polynom f ∈ K [ X ] heißt normiert, wenn der höchste Koeffizient f deg f gleich 1 ist, f deg f = 1. Wir sagen f teilt g, in Zeichen f | g, wenn es ein Polynom q ∈ K [ X ] gibt mit g = f q. Das ist gleichbedeutend mit g ≡ 0 (mod f ). Wir schreiben dann auch q = g/ f . Beispiel In Z [ X ] gilt etwa X 2 + 1 | X 3 − X 2 + X − 1 und 3 | 9 X 2 − 3 X.
Wir formulieren einige Regeln für die Relation | als Übungsaufgabe. Lemma 3.5 Es sei K ein Körper oder K = Z. Für Polynome f , g, h ∈ K [ X ] gilt: (a) Die Relation | ist reflexiv und transitiv, d. h. f | f und aus f | g und g | h folgt f | h. (b) Aus f | g und f | h folgt f | ( g a + h b) für alle a, b ∈ K [ X ]. (c) Falls f | g und g | f , so existiert ein a ∈ K mit f = a g. Wir zeigen nun, dass es zu je zwei Polynomen f und g = 0 ein eindeutig bestimmtes Polynom maximalen Grades gibt, das beide Polynome teilt und normiert ist. Dieses eindeutig bestimmte Polynom werden wir den größten gemeinsamen Teiler von f und g nennen. Satz 3.6 Es seien f , g ∈ K [ X ], f = 0 oder g = 0, zwei Polynome über einem Körper K. In der Menge ( f , g) := { f a + g b ; a, b ∈ K [ X ]} existiert ein eindeutig bestimmtes, normiertes Polynom d minimalen Grades. Es gilt
3.1 Endliche Körper
39
(a) d | f und d | g. (b) Für jedes t ∈ K [ X ] mit t | f und t | g gilt t | d. Beweis. Es ist klar, dass es in der Menge von Polynomen ( f , g) ein normiertes Polynom d mit minimalem Grad gibt. Es sei d = f a + g b ∈ ( f , g). (a) Wir teilen das Polynom f durch d mit Rest (vgl. Satz 3.2 zur Division mit Rest): f = d q + r und deg r < deg d. Es gilt dann r = f − ( f a + g b ) q ∈ ( f , g ). Das ist nur für r = 0 möglich, weil sonst ein Widerspruch zur Minimalität des Grades von d entstünde. Folglich gilt d | f . Analog zeigt man d | g. (b) ist wegen der Darstellung von d = f a + g b und Lemma 3.5 (b) klar. Mit dem Teil (b) folgt aus Lemma 3.5 (c) nun die Eindeutigkeit von d. Sind nämlich d, d zwei normierte Polynome minimalen Grades aus ( f , g), so gilt d = a d mit einem a ∈ K. Da d und d normiert sind, gilt a = 1. Das zu f und g eindeutig bestimmte Polynom d aus Lemma 3.6 heißt größter gemeinsamer Teiler von f und g und wird als d = ggT( f , g) notiert. Zu dem setzen wir ggT(0, 0) := 0. Bemerkung Wir haben im Satz 3.6 gezeigt, dass das Ideal ( f , g) im Ring K [ X ] von einem Element, nämlich von d = ggT( f , g), erzeugt wird. Tatsächlich kann man zeigen, dass jedes Ideal in K [ X ] von einem Element erzeugt wird (siehe [14, § 17]).
3.1.6 Irreduzible Polynome Ein Polynom h ∈ K [ X ] \ K (also deg h ≥ 1) heißt irreduzibel, wenn für jede Zerlegung h = f g mit Polynomen f , g ∈ K [ X ] gilt f ∈ K oder g ∈ K. Anders ausgedrückt: Ein Polynom vom Grad ≥ 1 ist irreduzibel, falls es nicht Produkt zweier Polynome ist, deren Grade ≥ 1 sind. Beispiel
Jedes Polynom vom Grad 1 ist wegen Lemma 3.1 irreduzibel.
Das Polynom X 2 + 1 ∈ R [ X ] ist irreduzibel.
Das Polynom X 2 + 1 ∈ Z2 [ X ] ist nicht irreduzibel. Über dem Körper Z2 gilt nämlich X 2 + 1 = ( X + 1)2 . In der Tat ist X 2 + X + 1 das einzige irreduzible Polynom vom Grad 2 über Z2 (vgl. auch die Aufgaben).
Das Polynom m( X ) = X 8 + X 4 + X 3 + X + 1 ∈ Z2 [ X ] wird auch AESPolynom genannt. Es ist irreduzibel (vgl. Aufgabe 3.6).
40
3 Block-Chiffren – AES und DES
Wir halten für spätere Zwecke noch ein wichtiges Ergebnis fest. Lemma 3.7 Es sei h ∈ K [ X ] ein irreduzibles Polynom über dem Körper K. Dann gilt für alle Polynome f , g ∈ K [ X ]: h | f g ⇒ h | f oder h | g . Beweis. Wir müssen nur den Fall h f genauer untersuchen. Da h irreduzibel ist, hat man dann ggT( f , h) = 1. Nach Satz 3.6 gibt es a, b ∈ K [ X ] mit 1 = a f +bh. Wir multiplizieren diese Gleichung mit g und erhalten g = a f g+bhg. Beide Summanden auf der rechten Seite der Gleichung sind durch h teilbar, also gilt das mit Lemma 3.5 (b) auch für die linke Seite: h | g. 3.1.7
Körper
Nach Lemma 3.4 ist K [ X ]/(h) für jedes Polynom h = 0 aus K [ X ] ein Ring mit Einselement. Wir zeigen nun, dass K [ X ]/(h) sogar ein Körper ist, falls das Polynom h irreduzibel ist. Satz 3.8 Es sei K ein Körper und h ∈ K [ X ] \ {0}. Betrachte den Ring R := K [ X ]/(h). (a) Das Polynom f ∈ R ist genau dann invertierbar, wenn ggT( f , h) = 1. (b) Der Ring R ist genau dann ein Körper, wenn h irreduzibel ist. (c) Im Fall |K | = q gilt | R| = qdeg h . Beweis. (a) Gilt ggT( f , h) = 1, so existieren g, b ∈ K [ X ] mit f g + h b = 1. Es folgt f ·h g = 1, sodass f invertierbar ist. Es sei nun f invertierbar mit dem Inversen g, also gilt f ·h g = 1. Dann gibt es ein b ∈ K [ X ] mit f g = h b + 1. Für jeden gemeinsamen Teiler d von f und h gilt d | f g − h b = 1, also gilt ggT( f , h) = 1 nach Satz 3.6 (a). (b) Ist h irreduzibel, so gilt wegen Satz 3.6 (a) ggT( f , h) = 1 für alle f ∈ K [ X ] \ {0} mit deg f < deg h. Also ist R nach (a) ein Körper. Ist h nicht irreduzibel, so ist ggT(d, h) = d = 1 für jeden echten, normierten Teiler d von h. Dieser ist nach (a) nicht invertierbar, und R kann kein Körper sein. (c) ergibt sich direkt aus der Definition. Beispiel
h = X − a ∈ K [ X ] führt auf K = K [ X ]/(h).
3.1 Endliche Körper
41
K = R und h = X 2 + 1 führt auf den Körper R [ X ]/(h) = C.
Über K = Z2 ist h = X 3 + X + 1 irreduzibel. Daher ist K [ X ]/(h) ein Körper mit 8 Elementen.
K = Z2 und das Polynom m( X ) = X 8 + X 4 + X 3 + X + 1 führen wegen des Beispiels auf Seite 39 auf den Körper F28 := Z2 [ X ]/(m) mit 28 Elementen.
Um das Körperelement X ∈ K [ X ]/(h) vom Polynom X ∈ K [ X ] zu unterscheiden, schreiben wir α anstelle X ∈ K [ X ]/(h). Es gilt dann h(α) = 0, d. h., das Körperelement α ∈ K [ X ]/(h) ist eine Nullstelle des (über K irreduziblen) Polynoms h. Man sagt, der Körper K [ X ]/(h) entstehe aus K durch Adjunktion der Nullstelle α des Polynoms h. Mit dieser Vereinbarung erhalten wir im Fall n = deg h, h irreduzibel: K ( α ) : = K [ X ] / ( h ) = a n −1 α n −1 + · · · + a1 α + a0 ; a0 , . . . , a n −1 ∈ K . Dadurch können wir den Körper K auch als einen Teilkörper von K (α) auffassen. Außerdem ist K (α) ein K-Vektorraum der Dimension deg h. 3.1.8 Konstruktion endlicher Körper Die Bemerkungen am Ende des vorigen Abschnitts zeigen, dass man zu jedem irreduziblen Polynom h über einem Körper K einen Erweiterungskörper L von K, d. h. K ⊆ L, finden kann, in dem h eine Nullstelle α1 hat. Wegen Korollar 3.3 können wir h über L zerlegen zu h = ( X − α1 ) h1 mit h1 ∈ L[ X ]. Hat h1 selbst irreduzible Teiler, so können wir diesen Prozess iterieren. Wir formulieren etwas allgemeiner: Satz 3.9 Zu jedem Polynom f ∈ K [ X ] existiert ein Erweiterungskörper L von K über dem das Polynom f in Linearfaktoren zerfällt, d. h., es gibt α1 , . . . , αn ∈ L mit f = ( X − α1 ) · · · ( X − α n ) . Dabei ist n = deg f . Insbesondere hat f höchstens n Nullstellen. Beweis. Man startet mit einem irreduziblen Teiler von f und konstruiert den Körper L1 := K (α1 ). Dort zerlegt man f = ( X − α1 ) f 1 und setzt den Prozess mit f 1 ∈ L1 [ X ] fort. Weil deg f 1 < deg f endet das Verfahren nach endlich vielen Schritten. Daraus können wir folgern: Satz 3.10 Zu jeder Primzahlpotenz q = pn , p prim, n ∈ N, existiert ein Körper K mit genau q Elementen, der Z p enthält.
42
3 Block-Chiffren – AES und DES
Beweis. Wir betrachten das Polynom f = X q − X ∈ Z p [ X ]. Nach Satz 3.9 existiert ein Körper L, über dem f in Linearfaktoren zerfällt: f = ( X − α1 ) · · · ( X − αq ) mit α1 , . . . , αq ∈ L. Wir zeigen, dass die Menge K = {α1 , . . . , αq } einen Körper mit q Elementen bildet, der den Körper Z p umfasst. Wegen p a = ( p 1) a = 0 a = 0 für alle a ∈ L folgt mit der binomischen Formel aus p p p−k p p p (∗) ( αi − α j ) = ∑ αi αkj = αi − α j für alle i, j = 1, . . . , q k k =0 q
q
induktiv (αi − α j )q = αi − α j = αi − α j , sodass also mit αi und α j auch αi − α j in 1 q −1 = α α−1 für alle i, j = 1, . . . , q liegt mit K liegt. Und wegen (αi α− i j j ) = αi ( α j ) q
q
1 αi und α j = 0 auch αi α− j in K. Somit ist bereits begründet, dass K ein Körper ist. Der Körper K umfasst den Körper Z p , da 0 und 1 und damit auch alle Vielfachen von 1 in K liegen. Es bleibt zu zeigen, dass die Elemente α1 , . . . , αq verschieden sind. Wie in der Analysis kann man Polynome (formal) ableiten, und es gilt die Produktregel. Ein Polynom f hat genau dann eine mehrfache Nullstelle α, d. h. f = ( X − α)r g mit einem r ≥ 2 und g ∈ L[ X ], wenn f (α) = f (α) = 0 gilt (siehe Aufgabe 3.7). Nun ist f = q X q−1 − 1 = −1, somit hat f = X q − X nur einfache Nullstellen, d. h. |K | = q.
Aus der Gleichung (∗) des Beweises folgt, dass die Abbildung
φ:
K x
→ →
K xp
ein Automorphismus von K ist. Man nennt φ Frobenius-Automorphismus. Wie bereits erwähnt, kann man zeigen, dass zu jeder Primzahl p und jedem n ∈ N bis auf Isomorphie genau ein Körper K mit |K | = pn existiert. Für diesen Körper schreibt man auch K = GF( pn ) oder K = F pn . Bemerkung Ist K ein endlicher Körper, so gilt |K | = pn mit n ∈ N und einer Primzahl p. Es ist dann K ein Vektorraum über Z p , und K kann wie oben beschrieben mit einem geeigneten Polynom h ∈ Z p [ X ] konstruiert werden. 3.1.9
Der AES-Körper
Der im Beispiel auf Seite 40 konstruierte Körper F = F28 wird im AES-Verfahren benutzt. Wie oben ausgeführt, schreiben wir α für die adjungierte Nullstelle des Polynoms m. Dann haben die Elemente aus F die Gestalt a7 α7 + a6 α6 + · · · + a1 α + a0 mit ai ∈ Z2 = {0, 1} .
3.1 Endliche Körper
43
Jedes solche Element wird dann durch das Byte a7 a6 a5 a4 a3 a2 a1 a0 abgekürzt. Bei Rechnungen ist nur zu beachten, dass α8 = α4 + α3 + α + 1 = 00011011. Um eine kompaktere Schreibweise zu erhalten, werden Bytes häufig im Hexadezimalsystem dargestellt. Das Byte wird dabei als Dualzahl aufgefasst und in das Sechzehner-System umgerechnet (mit A = 10, B = 11, C = 12, D = 13, E = 14, F = 15; die rechte Seite ist jeweils im Dezimalsystem dargestellt). Dann gilt: 1 = 01 ,
α = 02 ,
α + 1 = 03 ,
α2 = 04 ,
...
α8 = 1B .
Hexadezimalzahlen werden stets, wie hier, typografisch abgesetzt. Um zu demonstrieren, wie man in F rechnet, bringen wir einige Rechenbeispiele. 10 · 09
= α4 (α3 + 1) = α7 + α4 = 90 .
α16
= ( α8 )2 = ( α4 + α3 + α + 1)2 = α8 + α6 + α2 + 1 = α4 + α3 + α + 1 + α6 + α2 + 1 = α6 + α4 + α3 + α2 + α = 5E .
α32
= (5E)2 = (α6 + α4 + α3 + α2 + α)2 = α12 + α8 + α6 + α4 + α2 = α8 + α7 + α5 + α4 + α8 + α6 + α4 + α2 = α7 + α6 + α5 + α2 = E4 .
9A · 0C
= = = = =
(α7 + α4 + α3 + α)(α3 + α2 ) α10 + α7 + α6 + α3 + α9 + α6 + α5 + α2 α2 ( α4 + α3 + α + 1) + α ( α4 + α3 + α + 1) + α7 + α5 + α3 + α2 α7 + α6 + α5 + α4 + α2 F4 .
Wir betrachten noch ein für das AES-Verfahren wichtiges Beispiel. Beispiel Über dem Körper F = F28 ist das Polynom h = X 4 + 1 = ( X + 1)4 nicht irreduzibel. Wir betrachten den Ring R = F [ X ]/( X 4 + 1).
Das Element X + 1 ∈ R ist nicht invertierbar, denn ggT( X + 1, h) = X + 1 = 1. Außerdem gilt ( X + 1) ·h ( X + 1)3 = 0; auch das zeigt, dass X + 1 nicht invertierbar ist.
Das Element c = 03X 3 + X 2 + X + 02 ist invertierbar in R. Wäre nämlich ggT(c, h) = 1, dann müsste X + 1 ein Teiler von c sein. Es ist aber 1 keine Nullstelle von c, wie man sich leicht überzeugt. In der Tat ist c−1 = 0BX 3 + 0DX 2 + 09X + 0E das Inverse zu c. Der Nachweis ist nicht schwierig, aber langwierig.
44
3.2
3 Block-Chiffren – AES und DES
AES
In diesem Abschnitt behandeln wir das AES-Verfahren. Es handelt sich hierbei um eine Block-Chiffre über dem Alphabet F28 mit einer Blocklänge = 16. Die Klartextmenge P und Geheimtextmenge C sind also jeweils F16 . Damit hat jeder 28 8 )16 = 2128 eine Länge von 128 Bit. Als Schlüsselmenge K | = ( 2 Block wegen |F16 28 , F24 oder F32 , wählt man je nach Sicherheitsanforderungen eine der Mengen F16 28 28 28 man hat also Schlüssel der Länge 128 oder 192 oder 256 Bit. Mit diesen Zahlen unterscheidet man auch die Varianten des AES-Verfahrens in AES-128, AES-192 und AES-256. Das AES-Verfahren spielt heute eine zentrale Rolle in der Internet-Kommunikation. Mit ihm lassen sich große Datenmengen effizient und sicher ver- und entschlüsseln. 3.2.1
Zur Geschichte des DES- und AES-Verfahrens *
Im Jahr 1973 veröffentlichte das National Bureau of Standards (NBS; ab 1988 in National Institut of Standards and Technology – NIST umbenannt) in den USA eine Ausschreibung für ein standardisiertes und dann auch zertifiziertes symmetrisches Verschlüsselungsverfahren, das den stetig zunehmenden Bedarf an Verschlüsselungen im zivilen Bereich decken sollte. Da zu diesem Zeitpunkt die Expertise fast ausschließlich bei militärischen und diplomatischen Einrichtungen angesiedelt war, verlief diese Ausschreibung enttäuschend. Auf eine erneute Ausschreibung im Jahre 1974 reichte die Firma IBM einen Vorschlag ein, der nach Modifikationen zum DES-Algorithmus wurde. Der vorgeschlagene Algorithmus wurde im Jahre 1975 in allen Details veröffentlicht und zur Diskussion gestellt. Nach kontroverser Debatte wurde DES schließlich im Jahre 1977 in [21] als Standard publiziert. Damit wurde – vielleicht zum ersten Mal in der Geschichte – das Kerchhoffs’sche Prinzip umgesetzt. Von Anfang an wurden zwei Dinge kritisiert. Zum einen war zwar die genaue Funktionsweise offengelegt worden, aber es wurden keine Begründungen geliefert. Das betraf vor allem die sogennannten S-Boxen. Die Bedeutung der S-Boxen wird im Abschnitt 3.3.2 erläutert. Dieser Umstand nährte Spekulationen über geheime Hintertürchen und Manipulationsmöglichkeiten. Aus heutiger Sicht kann wohl gesagt werden, dass sich diese Spekulationen nicht bestätigt haben. Der zweite Kritikpunkt war substanzieller. Die Schlüssellänge des DES beträgt nur 56 Bit. Im Jahre 1998 wurde erstmals ein DES-Geheimtext gebrochen. Das gelang, indem ein Spezialrechner in 56 Stunden den gesamten Schlüsselraum durchsuchte. Der Preis für diesen Rechner betrug 250 000 US-Dollar. Damit war klar, dass große Organisationen, wie etwa staatliche, DES-Kryptogramme auf Wunsch mitlesen konnten. In der Folgezeit wurde die benötigte Hardware billiger und schneller. Im Jahre 2005 zog das NIST DES als Standard zurück.
3.2 AES
45
Im Jahre 1997 eröffnete das NIST die Suche nach einer Alternative zum DES. Es wurde ein Wettbewerb ausgeschrieben, der sehr viel internationale Resonanz erhielt. Fünfzehn der eingereichten Vorschläge erfüllten die umfangreichen formalen Kriterien des NIST. Bei fünf davon konnten keine Sicherheitsmängel festgestellt werden; sie erreichten die Endrunde. In der Endrunde wurde schließlich aufgrund von Effizienz-Betrachtungen der Algorithmus Rijndael [8] zum Advanced Encryption Standard, kurz AES, erklärt. Ausführliche Informationen zur Geschichte findet man in [20].
3.2.2 Design-Kriterien Bei den bisherigen Betrachtungen zu Block-Chiffren haben wir der Einfachheit halber immer vorausgesetzt, dass die zu verschlüsselnde Nachricht N nur aus einem Block besteht. Aber natürlich besteht in der Praxis eine Nachricht N im Allgemeinen aus zahlreichen Blöcken, die bei einer Block-Chiffre alle mit ein und demselben Schlüssel k verschlüsselt werden. Daher ist der Schlüssel k im Allgemeinen viel kürzer als die Nachricht N . Nach dem Satz 2.3 von Shannon kann es daher keine beweisbar sicheren Block-Chiffren geben; der Schlüssel muss nämlich nach dem Satz von Shannon die Länge der Nachricht haben. In der Praxis gelingt es unseres Wissens nach nicht einmal, die Betrugswahrscheinlichkeit zuverlässig abzuschätzen. Das Design symmetrischer Verschlüsselungs-Algorithmen, wie AES, wird von Kriterien geleitet, die zur Abwehr bekannter Angriffe angelegt sind. Dabei ist viel Erfahrungswissen im Spiel. Ob ein System die Kriterien erfüllt, wird weitgehend experimentell verifiziert. Wir formulieren hier nur die wichtigsten Kriterien, ohne auf Details einzugehen. Insbesondere bleiben die Beschreibungen anschaulich und verzichten auf eine präzise Ausformulierung. Für weitere Informationen verweisen wir auf die sehr ausführliche und gut lesbare Darstellung in [8]. Wesentliche Grundprinzipien der Chiffrierung sind Konfusion, Diffusion und Nichtlinearität: •
Konfusion verschleiert den Zusammenhang zwischen Schlüssel und Geheimtext.
•
Diffusion verteilt die Information des Klartextes über den Geheimtext. Im Idealfall bewirkt das Ändern eines beliebigen einzelnen Bits des Klartextes, dass sich jedes Bit des Geheimtextes mit Wahrscheinlichkeit 1/2 ändert.
•
Nichtlinearität bedeutet, dass die Verschlüsselungs-Abbildung möglichst weit von einer linearen (eigentlich von einer affinen) Abbildung entfernt sein soll. Eine einfache Form von Nichtlinearität erhält man durch Invertieren in einem Körper: a → a −1 .
46
3 Block-Chiffren – AES und DES
Die beiden ersten Forderungen sind ziemlich naheliegende Antworten auf statistische Verfahren der Kryptoanalyse, wie sie exemplarisch in Kapitel 1 beschrieben wurden. Die letzte Forderung ist zum einen eine Antwort auf die Kryptoanalyse der affinen Chiffren in Abschnitt 1.7.4, zum anderen dient sie zur Abwehr der differentiellen Kryptoanalyse und der linearen Kryptoanalyse. Moderne Verfahren sollten allen in Abschnitt 1.3.2 dargestellten Angriffsarten standhalten.
3.2.3
Das Kryptosystem AES
Wir bezeichnen den Körper F28 mit 28 Elementen aus dem Beispiel auf Seite 40 kurz mit F. Man beachte, dass der Körper F wirklich mit dem dort angegebenen Polynom konstruiert werden muss, obwohl ein anderes irrduzibles Polynom vom Grad 8 auf einen isomorphen Körper führen würde. Die Block-Chiffre AES ist ein Kryptosystem ( P, C, K, f , g) mit: •
P = C = F16 ,
•
K = F16 oder K = F24 oder K = F32 (die Festlegung erfolgt je nach Sicherheitsanfordung durch den Benutzer),
•
f : P × K → C, wobei f aus N + 1 sogenannten Rundenfunktionen zusammengesetzt ist, die wir nachfolgend näher beschreiben werden (die Zahl N hängt von der Wahl der Schlüsselmenge ab),
•
g : C × K → P ergibt sich direkt aus f , weil gk das Inverse von f k ist.
Man beachte, dass wir wieder nur einen Block betrachten, d. h., wir fassen jede Nachricht N als eine Nachricht von der Länge 128 Bit auf. Längere Nachrichten werden in Blöcke der Länge 128 Bit aufgeteilt, und jeder Block wird gleich behandelt. 3.2.4
Die Rundenschlüssel
Um die Verschlüsselungsfunktion f k zu gewinnen, werden aus dem Schlüssel k ∈ K zunächst N + 1 Rundenschlüssel erzeugt. Dazu dient eine injektive Abbildung
K → ( F16 ) N +1 Φ: . k → (k0 , . . . , k N ) Der Schlüssel k i ∈ F16 heißt der i-te Rundenschlüssel. Die Konstruktion der Rundenschlüssel ist essenziell für die Sicherheit moderner symmetrischer Verfahren. Daher sind für die Gestaltung des Algorithmus zur Auswahl der Rundenschlüssel – sprich für die Definition der Abbildung Φ – gewisse Kriterien zu berücksichtigen. Diese Kriterien sind eher empirischer Natur, daher gehen wir nicht näher auf sie ein und verweisen auf [8].
3.2 AES
47
Beim AES gibt es drei verschiedene, standardisierte Schlüssellängen. Wir fassen die Schlüssellängen und den Zusammenhang mit der Anzahl der Runden N in einer Tabelle zusammen: Schlüssellänge (in Bit)
124
192
256
Schlüsselraum K Anzahl N der Runden
F16
F24
10
12
F32 14
3.2.5 Aufbau der Verschlüsselungsfunktion Wir beschreiben nun, wie die Verschlüsselungsfunktion f k aus den Rundenfunktionen : F16 × F16 → F16 und ˜ : F16 × F16 → F16 zusammengesetzt ist. Dabei benutzen wir die Abkürzung ki ( x ) = ( x, k i ) bzw. ˜ k N ( x ) = ˜ ( x, k N ) und setzen f k ( x ) = ˜ k N ◦ k N −1 ◦ · · · ◦ k2 ◦ k1 ( x + k0 ) . Die nullte Rundenfunktion ist dabei die Addition des nullten Rundenschlüssels k0 auf x. Diese Abbildung bezeichnen wir nicht näher mit einem Symbol. Dann werden die regulären Rundenfunktionen ki mit den Rundenschlüsseln k1 , . . . , k N −1 angewendet und schließlich die modifizierte Abschlussrunde ˜k N mit dem Rundenschlüssel k N . Jede Runde wiederum ist aus vier (bei ˜ drei) Abbildungen zusammengesetzt – auf diese Zusammensetzung gehen wir im nächsten Abschnitt ein, vorab halten wir fest: Die Verschlüsselungsfunktion f k ist das Produkt von N + 1 Rundenfunktionen
C P×K → . f : ( x, k) → ˜k N ◦ k N −1 ◦ · · · ◦ k2 ◦ k1 ( x + k0 ) Bemerkung Diese Struktur ist typisch für moderne symmetrische Verfahren. Eine einfach strukturierte Routine – die Rundenfunktion – wird mehrfach mit variierenden Rundenschlüsseln wiederholt. Durch geeignete Maßnahmen wird sichergestellt, dass mit jeder Runde Diffusion und Konfusion zunehmen.
3.2.6 Die Rundenfunktionen Bei vielen symmetrischen Verfahren weichen die erste und/oder die letzte Runde von den anderen ab. In der Tat muss die erste und die letzte Aktion das Addieren eines Rundenschlüssels sein. Aktionen vor der ersten bzw. nach der letzten Addition des Rundenschlüssels, die nicht vom Schlüssel abhängen, könnte ein
48
3 Block-Chiffren – AES und DES
Angreifer, der das System kennt, rückgängig machen. Sie würden also nicht zur Sicherheit beitragen. Aber natürlich können solche Komponenten aus anderen Gründen eingesetzt werden. Bei DES wurde etwa eine initiale Permutation eingesetzt, die nichts zur Geheimhaltung beitrug – wir kommen darauf noch zu sprechen. Nun wenden wir uns den Runden ki , i = 1, . . . , N − 1 und ˜ k N zu. Jede Runde ki besteht aus vier Abbildungen, die modifizierte Abschlussrunde ˜ k N nur aus drei: Die regulären Rundenfunktionen haben die Form: ( x, k i )
= Add-Round-Key Mix-Columns Shift-Rows(subByte( x )) , k i ,
und die Abschlussrunde hat das Aussehen: ˜ ( x, k N ) = Add-Round-Key Shift-Rows subByte( x ) , k N . In der letzten Runde wird also schlicht die Abbildung Mix-Columns weggelassen. Wir erläutern nun die einzelnen Abbildungen, aus denen die Rundenfunktionen zusammengesetzt sind. subByte (auch S-Box genannt) ist die folgende Abbildung: subByte : F16 → F16 , ( x1 , . . . , x16 ) → (SRD ( x1 ), . . . , SRD ( x16 )) mit
SRD : F → F , x →
Ax −1 + t
für x = 0
t
für x = 0
,
wobei ⎛
1 ⎜0 ⎜ ⎜0 ⎜ ⎜0 A=⎜ ⎜1 ⎜ ⎜1 ⎜ ⎝1 1
1 1 0 0 0 1 1 1
1 1 1 0 0 0 1 1
1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0
⎞ 0 0⎟ ⎟ 0⎟ ⎟ 1⎟ ⎟ ∈ GL(8, Z2 ), 1⎟ ⎟ 1⎟ ⎟ 1⎠ 1
⎛ ⎜ ⎜ ⎜ ⎜ ⎜ t=⎜ ⎜ ⎜ ⎜ ⎜ ⎝
0 1 1 0 0 0 1 1
⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ∈ F. ⎟ ⎟ ⎟ ⎟ ⎠
Dabei wird das Element x = a7 α7 + a6 α6 + · · · + a1 α + a0 ∈ F als Spaltenvektor ( a7 , . . . , a1 , a0 )T aufgefasst. Die Abbildung subByte ist die einzige nicht-lineare Abbildung in jeder Runde. Die affine Transformation x → Ax + t dient der Verkomplizierung der algebraischen Struktur der sehr einfachen Abbildung x → x −1 . Sie trägt nichts zur Nichtlinearität bei. Aber sie bewirkt z. B., dass subByte keine Fixpunkte hat.
3.2 AES
49
Shift-Rows ist eine Abbildung ⎛
F 4×4
x1 ⎜ 4×4 ⎜ x 2 →F , ⎝ x3 x4
x5 x6 x7 x8
x9 x10 x11 x12
⎞ x13 x14 ⎟ ⎟ → x15 ⎠ x16
⎛
x1 ⎜ x6 ⎜ ⎝ x11 x16
x5 x10 x15 x4
x9 x14 x3 x8
⎞ x13 x2 ⎟ ⎟. x7 ⎠ x12
Das Wort x1 , . . . , x16 wird spaltenweise in eine 4 × 4 Matrix eingetragen. Die Abbildung besteht darin, die Zeilen zyklisch zu verschieben (daher der Begriff shift). Man beachte, dass auch diese Abbildung komplette Bytes verschiebt. Es wird also nur Diffusion auf Byte-Ebene erreicht, das allerdings sehr wirkungsvoll. Wirkliche Diffusion wird nur in Kombination mit dem folgenden Schritt erzielt. Mix-Columns benutzt den Ring R = F [ X ]/( X 4 + 1) aus dem Beispiel von Seite 43. Wir fassen je vier Bytes – genauer jede Spalte der eben beschriebenen Matrix – zu einem Element in R zusammen, z. B. die erste Spalte:
( x1 , x2 , x3 , x4 )T → y1 = x1 X 3 + x2 X 2 + x3 X + x4 ∈ R . ⎞ ⎛ x1 x5 x9 x13 ⎜ x2 x6 x10 x14 ⎟ 4 ⎟ Die Matrix ⎜ ⎝ x3 x7 x11 x15 ⎠ hat dann die Form (y1 , y2 , y3 , y4 ) ∈ R . x4 x8 x12 x16 Mit dem aus dem Beispiel auf Seite 43 bekannten Polynom c( X ) = 03X 3 + X 2 + X + 02 ∈ R setzt man Mix-Columns : R4 → R4 ; (y1 , y2 , y3 , y4 ) → (c · y1 , c · y2 , c · y3 , c · y4 ) . Das Element c ist invertierbar in R mit Inversem c−1 = 0BX 3 + 0DX 2 + 09X + 0E wie schon im Beispiel auf Seite 43 erwähnt. Die Abbildung Mix-Columns sorgt in Kombination mit Shift-Rows für Diffusion auf Bit-Ebene. In der Tat werden nach [8, 3.5] nur wenige Runden benötigt, um eine sehr gute Diffusion zu erzielen. Add-Round-Key addiert schließlich den Rundenschlüssel k i in der i-ten Runde Add-Round-Key : F16 × F16 → F16 , ( x, k i ) → x + k i . Insgesamt gilt also ( x, k i )
= Add-Round-Key Mix-Columns Shift-Rows(subByte( x )) , k i = Mix-Columns Shift-Rows(subByte( x )) + k i .
50
3 Block-Chiffren – AES und DES
Für die Endrunde gilt ˜ ( x, k N )
= Add-Round-Key Shift-Rows subByte( x ) , k N . = Shift-Rows subByte( x ) + k N .
Der Schritt Mix-Columns wird in der letzten Runde weggelassen, weil er ohne Kenntnis des Schlüssels rückgängig gemacht werden kann. Man beachte, dass jede einzelne Funktion in jeder Runde invertierbar ist, sodass also letztlich die Verschlüsselungsfunktion f k : P → C eine Bijektion ist und die Entschlüsselungsfunktion gk existiert. Das Entschlüsseln erfolgt, indem die Runden mit den jeweiligen Inversen der oben definierten Abbildungen rückwärts durchlaufen werden. In [8, 3.7] wird darüber hinaus eine Alternative beschrieben, die etwas leichter implementiert werden kann.
3.2.7
Rijndael
Das AES-Verfahren wurde von J. Daemen und V. Rijmen entwickelt und unter dem Namen Rijndael veröffentlicht. Das ursprüngliche Rijndael-Verfahren ist allgemeiner als das AES-Verfahren. Für das Rijndael-Verfahren wurden mehrere mögliche Blocklängen, nämlich alle Vielfachen von 16 zwischen 128 und 256 Bit vorgeschlagen. Da aber die Vorgaben bei der Auswahl von AES sehr strikt waren, wurde nur die Rijndael-Varianten mit den oben angegebenen Parametern ins Rennen geschickt; und es wurden auch nur diese von der Kommission beurteilt. Ausschlaggebend für die Wahl von AES waren am Ende die enorme Performance und Flexibilität des Rijndael-Verfahrens, so wurde AES etwa auch gegenüber dem System Serpent bevorzugt, obwohl dessen Sicherheitsniveau höher eingeschätzt wurde. Rijndael, und damit AES, bietet effiziente Ver- und Entschlüsselung auf 8 Bit Architekturen, wie sie z. B. in Smartcards zum Einsatz kommen bis hin zu schnellen 64 Bit Parallelrechnern. In dieser Hinsicht war es allen anderen Vorschlägen überlegen.
3.3
Feistel-Chiffren *
Bereits Mitte der sechziger Jahre wurde deutlich, dass beim Einsatz elektronischer Rechenanlagen Sicherheitsprobleme bezüglich der Vertraulichkeit und Authentizität auftreten. Bald wurde klar, dass man diese Probleme am besten mit den Methoden der Kryptografie lösen kann. Andererseits wusste man, dass die klassischen Verfahren selbst bei sehr großen Schlüssellängen keine ausreichende Sicherheit erzielen konnten. Außerdem scheitern sie bereits bei Known-Plain-Text-Angriffen. Bereits Shannon hatte wichtige Kriterien aufgestellt, wie wir sie in Abschnitt 3.2.2 dargestellt haben.
3.3 Feistel-Chiffren *
51
Ende der sechziger Jahre wurde im Rahmen des Lucifer-Programms der Firma IBM unter der Leitung von Horst Feistel und Walter Tuchman nach Alternativen gesucht. Ein Ergebnis dieses Programms sind die Feistel-Chiffren. Wir werden die Struktur der Feistel-Chiffren am Beispiel des DES vorstellen. Viele bekannte Block-Chiffren haben diese Grundstruktur. Drei der fünf Vorschläge, die es in die Endrunde für AES geschafft haben, sind Feistel-Chiffren. 3.3.1 Die Struktur der Feistel-Chiffren Den Ausgangspunkt für eine Feistel-Chiffre bilden: •
eine Block-Chiffre B = (Z2n , Z2n , K, f , g), n ∈ N, mit einer geeigneten Schlüsselmenge K,
•
N ∈ N,
•
und eine Schlüsselmenge K
•
→ KN. eine injektive Abbildung Φ : K
Die N-Runden Feistel-Chiffre F über B ist dann definiert durch 2n ˜ F = (Z2n 2 , Z 2 , K, f , g˜ ) ,
setzen wir Φ(k) := (k1 , . . . , k N ) wobei f˜ im Folgenden definiert wird: Zu k ∈ K und erhalten wie schon beim AES die Rundenschlüssel k1 , . . . , k N ∈ K. n Jeden Block x ∈ Z2n 2 schreiben wir als x = ( L0 , R0 ) mit L0 , R0 ∈ Z 2 . Es ist also L0 die linke Hälfte und R0 die rechte Hälfte, des Wortes x. Wir setzen jetzt rekursiv
( Li , Ri ) := ( Ri−1 , Li−1 + f ( Ri−1 , k i )), und schließlich
i ∈ {1, . . . , N },
2n f˜ : Z2n 2 × K → Z 2 , ( x, k ) → ( R N , L N ) .
Aus der Definition ist unmittelbar klar, dass gilt
( Ri−1 , Li−1 ) = ( Li , Ri + f ( Li , k i )),
i ∈ {1, . . . , N } .
Daher ist die Abbildung f˜k umkehrbar. Um die Umkehrung für ein y auszurechnen, benutzt man dieselbe Rekursion, aber mit dem Schlüsseltupel (k N , . . . , k1 ). Man benutzt also die Rundenschlüssel in umgekehrter Reihenfolge. Die der Feistel-Chiffre zugrunde liegende Block-Chiffre B nennt man die interne Block-Chiffre. Die Sicherheit von F hängt entscheidend von der Wahl von B ab.
3.3.2 DES Der Data Encryption Standard (kurz DES) ist eine 16 Runden Feistel-Chiffre auf 56 Z64 2 mit K = Z 2 . Eine Besonderheit ist die initiale Permutation IP. Sie wird vor
52
3 Block-Chiffren – AES und DES
Beginn der ersten Runde auf das Klartextwort angewendet. Am Schluss, nachdem alle Runden durchlaufen sind, wird die inverse Permutation IP−1 angewendet und das Ergebnis ausgegeben. Da IP fest gewählt ist und vor der ersten Schlüsseladditon angewendet wird, hat IP keine kryptografische Bedeutung. Die Permutation IP verlangsamt Software-Implementierungen von DES im Vergleich zu Hardware-Implementierungen. Dadurch werden die Kosten für möglicherweise erfolgreiche Angriffe erhöht. Das ist wohl der eigentliche Grund für diese Besonderheit. Mit heutigen Rechnern spielt das keine große Rolle mehr. Als interne Block-Chiffre wählt man beim DES das Kryptosystem 32 48 B = (Z32 . 2 , Z 2 , Z 2 , f , g ) mit f ( x, k ) = π S E ( x ) + k Dabei sind die Abbildungen E, S und π wie folgt definiert: 48 Expansion ist eine Abbildung E : Z32 2 → Z 2 . Die Vorschrift wird oft durch eine Tabelle beschrieben. Die Tabelle wird zeilenweise ausgelesen, zuerst wird das 32te Bit, dann das erste, das zweite usw. ausgegeben:
32 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
4 8 12 16 20 24 28 32
5 9 13 17 21 25 29 1
Die Bits 4 und 4 + 1 werden also doppelt eingetragen, sodass aus 32 Eingangsbits dann 48 Ausgangsbits werden. S-Box ist eine nicht-lineare Abbildung S : (Z62 )8 → (Z42 )8 ; ( x1 , . . . , x8 ) → (S1 ( x1 ), . . . , S8 ( x8 )). Dabei gilt natürlich xi ∈ Z62 . Die Abbildungen Si : Z62 → Z42 wurden ursprünglich als S-Boxen bezeichnet. Sie sind durch Tabellen beschrieben. Bei der Veröffentlichung wurden sie zwar angegeben, aber nicht motiviert. Experimente zeigten später, dass sich bei Veränderungen der S-Boxen die Anfälligkeit des Verfahrens für die differentielle Kryptoanalyse erhöhte. So stellte sich zwar heraus, dass die S-Boxen gut gewählt waren, aber es wurde nicht klar, warum man sie so gewählt hat und auch nicht, wie man sie gefunden hat. Wir geben exemplarisch die übliche Beschreibung der ersten S-Box S1 als Tabelle an. Wenn b1 b2 b3 b4 b5 b6 das Eingangwort ist, so findet man das Ausgangswort als Binärdarstellung der Zahl aus der Zeile b1 b6 und der Spalte b2 b3 b4 b5 als Binärzahl gelesen.
3.4 Betriebsmodi *
00 01 10 11
0 14 0 4 15
1 4 15 1 12
2 13 7 14 8
53 3 1 4 8 2
4 2 14 13 4
5 15 2 6 9
6 11 13 2 1
7 8 1 11 7
8 3 10 15 5
9 10 6 12 11
10 6 12 9 3
11 12 11 7 14
12 5 9 3 10
13 9 5 10 0
14 0 3 5 6
15 7 8 0 13
Beispiel Es sei b1 b2 b3 b4 b5 b6 = 011011. Wegen b1 b6 ist die Zeile 01 und wegen b2 b3 b4 b5 = 1101 die Spalte 13 = (1101)2 (im Dualsystem) zu betrachten. Am Schnittpunkt dieser Zeile und Spalte steht die Zahl 5. Wegen 5 = (0101)2 gilt somit x = 011011 → S1 ( x ) = 0101 .
Permutation vertauscht die Reihenfolge der Bits eines Wortes 32 π : Z32 2 → Z 2 , ( x1 , . . . , x32 ) → ( xπ (1) , . . . , xπ (32) )
mit einer Permutation π auf der Menge {1, . . . , 32}, die ebenfalls durch eine Tabelle gegeben ist. 16 2
7 8
20 24
21 14
29 32
12 27
28 3
17 9
1 19
15 13
23 30
26 6
5 22
18 11
31 4
10 25
Die Permutation π lautet in der aus der linearen Algebra vertrauten ZyklenDarstellung π
= (1, 16, 10, 15, 31, 4, 21, 32, 25, 19, 24, 9) (2, 7, 28, 6, 12, 26, 13, 5, 29, 22, 27, 30, 11, 23, 3, 20, 14, 18, 8, 17) .
Es gilt also π ( x1 · · · x32 ) = x16 x7 x20 x21 · · · x4 x25 . Das bedeutet, dass das 16. Bit an die 1. Stelle wandert, das 10. an die 16. Stelle usw., bis schließlich das 25. an die letzte Stelle geht. Diese Abbildung soll die Output-Bits einer S-Box in der folgenden Runde auf mehrere S-Boxen verteilen.
3.4 Betriebsmodi * In vielen Anwendungen ist der Klartext sehr lang, im Allgemeinen sehr viel länger als die Blocklänge n der Chiffre. Es müssen somit viele Blöcke mit demselben Schlüssel chiffriert werden. In diesem kurzen Abschnitt beschreiben wir die vier gebräuchlichsten Verfahren. Sie wurden kurz nach der Einführung von DES standardisiert. Es sei eine Block-Chiffre ( P, C, K, f , g) der Blocklänge n gegeben. Für alle Unterabschnitte wird der Klartext N in Blöcke xi der Länge n eingeteilt, also N = ( x1 , . . . , xr ) mit r ∈ N und xi ∈ P. Da die Länge von x im Allgemeinen kein Vielfaches von n ist, muss der letzte Block xr evtl. durch Padding aufgefüllt werden.
54
3.4.1
3 Block-Chiffren – AES und DES
Electronic Codebook Mode – ECB
Beim ECB-Modus wird einfach jeder Block für sich verschlüsselt. Es gilt also
C = (c1 , . . . , cr ) := ( f ( x1 , k), . . . , f ( xr , k)) . Dieses Verfahren kann man als eine Substitutions-Chiffre mit riesigem Alphabet P auffassen. Daher werden Strukturen aus dem Klartext im Geheimtext sichtbar und erleichtern unter Umständen die Kryptoanalyse. Die übliche statistische Analyse, wie sie in Kapitel 1 beschrieben wurde, wird einzig durch die Größe des Alphabets – durchaus erheblich – erschwert. Der ECB-Modus eröffnet einem Angreifer weitere Manipulationsmöglichkeiten, auch wenn er den Geheimtext nicht entschlüsseln kann. Durch die Veränderung einzelner Blöcke des Geheimtexts kann ein Angreifer etwa gezielt einen Block des Geheimtexts verändern, obwohl er nicht genau weiß, was er tut. Statt einer blinden Änderung kann er versuchen, einen ihm bekannten Geheimtextblock einzufügen oder vorhandene Blöcke durch solche zu ersetzen – im Sinne eines Known-Plain-Text-Angriffs. Schließlich ist es möglich, Blöcke zu vertauschen. All dies ist nur dann eine Bedrohung, wenn es unbemerkt bleibt. Zwei der anderen Betriebsmodi haben zum Ziel, genau das zu verhindern, nämlich, dass eine Manipulation nicht wahrgenommen wird. Bemerkung Der ECB-Modus kann auch bei Verfahren angewendet werden, bei denen der Geheimtext eine andere Blocklänge hat als der Klartext. 3.4.2
Cipher Block Chaining Mode – CBC
Der CBC-Modus enthält eine Art Rückkopplung bei der Verschlüsselung, die Manipulationen an Blöcken im Geheimtext aufdeckt. Vor der Verschlüsselung eines Blocks wird der eben verschlüsselte Block addiert. Beim ersten Block wird ein beliebiger Initialisierungsblock c0 ∈ C benutzt. Formal sieht das wie folgt aus: ci := f ( xi + ci−1 , k) für i ∈ {1, . . . , r } . Bei der Entschlüsselung rechnet man mi := ci−1 + g(ci , k) für i ∈ {1, . . . , r } . Man verifiziert mühelos, dass dadurch der Geheimtext entschlüsselt wird, d. h., es gilt mi = xi . Verschiedene Initialisierungsblöcke liefern verschiedene Geheimtexte. Wichtiger ist, dass im Allgemeinen gleiche Klartextblöcke verschieden verschlüsselt werden, sodass statistische Angriffe erschwert werden. Veränderungen im Geheimtext, wie das Einfügen oder Ersetzen von Geheimtextblöcken, zerstören im Allgemeinen den folgenden Block und können dadurch entdeckt werden. Andererseits zerstören Übertragungsfehler höchsten den folgenden Block, der Rest kann fehlerfrei entschlüsselt werden.
3.4 Betriebsmodi *
55
Wenn es nicht auf jeden Block ankommt, können sogar verschiedene Initialisierungsblöcke beim Ver- und beim Entschlüsseln verwendet werden. Nur der erste Geheimtextblock c1 wird evtl. falsch entschlüsselt. 3.4.3 Cipher Feedback Mode – CFB Beim CFB-Modus wird ein sogenannter Bit-Strom, das ist ein Element t ∈ Z2∗ , erzeugt, mit dem wie bei einer Vernam-Chiffre verschlüsselt wird. Der Bit-Strom t wird blockweise aus dem schon bestimmten Chiffrat erzeugt. Insbesondere kann die Blocklänge m für t von n abweichen. Es muss nur m ≤ n gelten. Der Klartext N wird hier in Blöcke N = ( x1 , . . . , xr ) der Länge m eingeteilt. Wie beim CBC-Modus brauchen wir einen Initialisierungsblock I1 ∈ Z2n . Um eine kompakte Schreibweise zu ermöglichen, definieren wir die Abschneidefunktion α : Z2n → Z2m , x1 x2 . . . xn → x1 x2 . . . xm . Diese Abbildung gibt also nur die ersten m Bit des Inputs aus und schneidet den Rest ab. Es gilt dann im i-ten Schritt ti
:=
α( f ( Ii , k))
ci
:=
xi + ti
Ii+1
:=
Ii,m+1 Ii,m+2 . . . Ii,n ci,1 ci,2 . . . ci,m
Im letzten Schritt werden die ersten m Bit von Ii abgeschnitten und ci angehängt. Die Entschlüsselung unterscheidet sich nur im zweiten Schritt. Dort wird xi := ci + ti gesetzt. Der Vorteil dieses Modus besteht darin, dass der teure (zeitaufwändige) erste Schritt von Sender und Empfänger simultan durchgeführt werden kann. Durch eine verkürzte Blocklänge m < n wird die Übertragung einzelner Blöcke beschleunigt. Andererseits muss bei kleinem m der Verschlüsselungsalgorithmus f häufiger angewendet werden. Hier muss ein Ausgleich geschaffen werden, der stark von der benutzten Blockchiffre und von praktischen Erwägungen abhängt. Bemerkung Dieses Verfahren kann nicht mit asymmetrischen Verfahren angewendet werden, weil Sender und Empfänger verschlüsseln können müssen. 3.4.4 Output Feedback Mode – OFB Der OFB-Modus ist dem CFB-Modus sehr ähnlich. Wir nutzen dieselben Voraussetzungen und eine Initialisierung I1 und setzen Ii+1
:=
f ( Ii , k)
ci
:=
xi + α( Ii+1 ) .
Da die Ii unabhängig von schon vorher übertragenen Daten berechnet werden kann, ist das Verfahren sehr schnell. Es hat aber ähnliche Nachteile wie der ECBModus, weil keine Rückkopplung zwischen den einzelnen Blöcken stattfindet.
56
3.5
3 Block-Chiffren – AES und DES
Differentielle und lineare Kryptoanalyse *
Die differentielle Kryptoanalyse wurde 1990 in [3] erstmals veröffentlicht. Sie stellte damals einen großen Fortschritt in der Kryptoanalyse dar. Natürlich wurde sie insbesondere am DES getestet und es stellte sich bald heraus, dass DES bestens dagegen gerüstet war. Das war kein Zufall. Tatsächlich war die differentielle Kryptoanalyse beim Design von DES einbezogen worden. Später wurde argumentiert, dass eine Offenlegung der Design-Kriterien des DES auch die differentielle Kryptoanalyse offengelegt hätte. Genau das wollten die zuständigen US-Behörden nicht, um ihren Vorsprung in der Kryptoanalyse zu sichern. Die lineare Kryptoanalyse wurde von Mitsuru Matsui in [16] vorgeschlagen und am Beispiel des DES untersucht. Die Grundidee besteht darin, in einer rundenbasierten Block-Chiffre die Rundenfunktion oder Bausteine davon wie z. B. S-Boxen durch affine Abbildungen zu approximieren. Aufgaben 3.1
Zeigen Sie, dass die Multiplikation von Polynomen assoziativ ist.
3.2
Zeigen Sie, dass für alle a, b ∈ K [ X ] mit ab = 1 gilt a, b ∈ K.
3.3 Führen Sie den Beweis von Lemma 3.4 zu Ende. 3.4 Beweisen Sie Lemma 3.5. 3.5 Bestimmen Sie alle irreduziblen Polynome der Grade 2, 3, 4 über Z2 und Z3 . 3.6 Nutzen Sie die Ergebnisse aus der vorigen Aufgabe, um zu zeigen, dass das AES-Polynom m aus dem Beispiel auf Seite 39 irreduzibel ist. 3.7 Es sei f ein Polynom, das im Körper L eine Nullstelle α hat. Zeigen Sie: α ist genau dann eine mehrfache Nullstelle von f , wenn f ( a) = f ( a) = 0. Dabei bedeutet f die Ableitung des Polynoms, die wie in der Analysis definiert ist. Es gilt die Produktregel. 3.8 Verifizieren Sie 5E · 08 = C6 und E4 · C6 = 01. Folgern Sie, dass α51 = 1 in F28 . Dabei kann man die Tatsache, 51 = 32 + 16 + 3 zusammen mit den Rechnungen auf Seite 43 nutzen, um die Rechnung erheblich zu vereinfachen. (Vgl. auch das Lemma 6.15.) 3.9 Zeigen Sie, dass die Abbildungen Shift-Rows und Mix-Columns aus dem AES (siehe Seite 49) F28 -linear sind. 3.10 Zeigen Sie, dass die Abbildung Expansion aus dem DES (Abschnitt 3.3.2) linear ist, indem Sie eine Matrix-Darstellung dafür angeben. 3.11 Zeigen Sie, dass die S-Box S1 aus dem DES nicht linear und auch nicht affin ist.
4 Komplexität und Einwegfunktionen Für die Sicherheit mancher moderner kryptografischer Systeme ist es entscheidend, dass das Faktorisieren großer natürlicher Zahlen als schwierig anzusehen ist. Wir werden im vorliegenden Kapitel ein Maß für diesen etwas schwammigen Begriff schwierig erläutern. Dazu betrachten wir die Komplexität von algorithmisch behandelbaren Problemen. Die Komplexität eines Algorithmus schätzt die Laufzeit des Algorithmus für große Eingabewerte asymptotisch unter Verwendung des Landau-Symbols O ab. So wird ein Vergleich der Schwierigkeitsgrade von mathematischen Problemen möglich. Weil wir aber nur Aussagen über die Laufzeiten im Unendlichen gewinnen, sind damit keine Aussagen über den praktischen Nutzen verbunden. Für solche Aussagen müssen genauere Untersuchungen durchgeführt werden. Für die Kryptologie besonders interessant ist die Frage, ob es Probleme mit gewissen Zusatzeigenschaften gibt, die beweisbar nur in nicht-polynomialer Zeit gelöst werden können und daher als schwierig einzustufen sind. Diese Frage ist eng mit einer weiteren, bisher ungelösten Frage verbunden: Sind die Komplexitätsklassen P und NP gleich? Sehr vereinfacht ausgedrückt gibt es in der Klasse NP vermutlich mathematische Probleme, die viel schwieriger zu lösen sind als die Probleme der Klasse P . Wir bestimmen explizit die Laufzeiten der Addition und Multiplikation ganzer Zahlen und Polynome, der Divison mit Rest für ganze Zahlen und Polynome wie auch die Laufzeiten des euklidischen Algorithmus und der Bestimmung von Inversen von Elementen aus der primen Restklassengruppe Z × n – es sind dies die grundlegenden Operationen, die in der Kryptologie durchgeführt werden. Einwegfunktionen sind Funktionen, die im Sinne der Komplexität leicht berechnet, aber nur schwer invertiert werden können. Solche Funktionen sind die Basis für alle asymmetrischen kryptografischen Systeme.
4.1 Komplexität Wir werden die Laufzeit von Algorithmen mit dem asymptotischen Verhalten von Funktionen vergleichen. Dazu betrachten wir vorab reellwertige Funktionen und fragen nach ihrem Verhalten im Unendlichen. Wir erinnern zunächst an einige Begriffe aus der Analysis.
58
4 Komplexität und Einwegfunktionen
4.1.1
Die Ordnung von Funktionen
Es sei X eine unbeschränkte Teilmenge des R k , k ∈ N, z. B. X = N k . Für zwei Funktionen f , g : X → R schreiben wir f = O( g), wenn es Zahlen C, r ∈ R >0 gibt, sodass | f ( x )| ≤ C | g( x )| für alle x ∈ X mit | x | > r . Da wir nur Aussagen über große x machen, sprechen wir vom asymptotischen Verhalten. Das O soll an das Wort Ordnung erinnern. Es werden aber eher Sprechweisen wie f ist O( g), in Worten f ist Groß-O von g, benutzt. Streng genommen ist O( g) eine Menge von Funktionen und die Schreibweise f = O( g) eine etwas unpräzise, aber nützliche Abkürzung für f ∈ O( g). In der Praxis verwendet man oft Funktionen zum Vergleich, die besonders einfach sind. So lässt man beispielsweise alle Koeffizienten weg. Vor den ersten Beispielen führen wir noch eine übliche Notation ein. Für jede reelle Zahl x bezeichne
x := max {z ∈ Z ; z ≤ x } das größte Ganze von x. Beispiel
Konstante Funktionen X → R , x → c sind in O(1).
Jede Polynomfunktion f ∈ R [ x ] mit n = deg f ist in O( x n ). Für die Funktion f mit f ( x ) = 1 + x2 gilt 1 . f ( x ) = O( x ) und f ( x ) = x + O x
Dabei ist die letzte Gleichung wie folgt zu verstehen: 1 2 f (x) − x = 1 + x − x ∈ O . x Zum Nachweis untersuche man die Grenzwerte lim
x →∞
f (x) x
bzw.
lim x ( f ( x ) − x ) .
x →∞
Für die Logarithmusfunktion loga zur Basis a gilt loga x =
log x = O (log x ) . log a
In der O-Notation ist also die Basis des Logarithmus irrelevant.
4.1 Komplexität
59
Die Anzahl der Bits einer natürlichen Zahl N ist O(log N ). Genauer: Die Anzahl f ( N ) der Stellen in g-adischer Darstellung, g ∈ N ≥2 , beträgt f ( N ) = logg N + 1 = O(log N ) . Der Wert von g spielt asymptotisch keine Rolle.
Bemerkung Für den logarithmus naturalis verwenden wir die Bezeichnung log = loge ohne Angabe der Basis. Sollte es einmal (wie etwa bei den obigen asymptotischen Betrachtungen) nicht auf die Basis ankommen, so bevorzugen wir auch im Fall g = e die einfache Schreibweise log anstelle logg .
4.1.2 Die Laufzeit von Algorithmen Das Ziel dieses Abschnitts ist es, die Laufzeit von Algorithmen abzuschätzen und zu vergleichen. Dabei nutzen wir ein sehr grobes Maß: Wir zählen die nötigen Iterationen in Abhängigkeit von der Größe der Eingabe bezogen auf eine einfache Grundoperation. Wir abstrahieren dadurch von der Hardware, die natürlich die tatsächlich benötigte Zeit entscheidend mitbestimmt. Insbesondere kann die Grundoperation durchaus eine größere Anzahl von Prozessorzyklen in Anspruch nehmen und selbst zeitaufwändig sein. Sie muss aber O(1) sein, darf also nicht von der Größe der Eingabe abhängen. Unsere Angaben werden immer asymptotisch sein, dabei ignorieren wir die Details der Implementierung, also die konkrete Umsetzung eines Algorithmus in eine Programmiersprache. Auch diese beeinflusst durchaus erheblich die tatsächlich benötigte Zeit. Asymptotische Aussagen sagen insbesondere nichts über die Laufzeit für kleine Eingangsgrößen aus. Um darüber Ergebnisse zu erzielen, muss man die Konstanten genau studieren. Ist n die Größe der Eingabe (etwa die Anzahl der Bits) in einen Algorithmus, so heißt der Algorithmus •
polynomial, wenn die Laufzeit O(nα ), α ∈ R >0 , ist,
•
linear, falls er polynomial mit α = 1 ist,
•
quadratisch, falls er polynomial mit α = 2 ist,
•
exponentiell, wenn die Laufzeit O(eα n ), α ∈ R >0 , beträgt.
In diesem Sinne ist die Laufzeit des Einlesens der Daten linear. Insbesondere hat das Einlesen einer natürlichen Zahl N nach dem letzten Beispiel die Laufzeit O(log N ). Wir werden im nächsten Abschnitt sehen, dass der übliche Algorithmus für die Addition natürlicher Zahlen linear, der für die Multiplikation quadratisch ist.
60
4 Komplexität und Einwegfunktionen
Bemerkung Moderne Faktorisierungs-Algorithmen für natürliche Zahlen haben Laufzeiten der Form √ O(ec log N log log N ), c > 0 . Das ist zwar nicht polynomial, aber besser als exponentiell. Man nennt sie deshalb subexponentiell.
4.1.3
Multiplikation von Polynomen
Wir betrachten als erstes Beispiel die Laufzeit für die Multiplikation von Polynomen f , g ∈ Z [ X ] mit beschränkten Koeffizienten. Das soll bedeuten, dass die Asymptotik nur von m = deg f und n = deg g abhängt. Das ist insbesondere für Polynome über den Restklassenringen Z erfüllt. Hier liegen alle Koeffizienten zwischen 0 und − 1, weil sie in jedem Schritt modulo reduziert werden. Die Formel auf Seite 35 zeigt, dass man zur Berechnung des i-ten Koeffizienten ( f g)i von f g genau i + 1 Multiplikationen von Koeffizienten durchführen muss. Die Multiplikation der Koeffizienten kann als Grundoperation gewählt werden, weil die Koeffizienten unabhängig von m und n beschränkt sind. Da die Kosten für die Addition wesentlich geringer sind, wird diese hier vernachlässigt. Man beachte auch, dass die Anzahl der Additionen ungefähr so groß wie diejenige der Multiplikationen ist, sodass sich eine Berücksichtigung asymptotisch nicht auswirken würde. Diese Überlegungen führen auf eine erste Abschätzung für die Laufzeit: m+n
∑ (i + 1) =
i =0
(m + n + 1)(m + n + 2) = O ( m + n )2 . 2
Es geht aber besser: Wir nehmen ohne Einschränkung m ≥ n an, dann sind für i > n gewisse Produkte zwingend = 0. Lässt man diese Produkte unberücksichtigt, so ergibt sich für die Gesamtzahl aller Multiplikationen:
(m + 1) (n + 1) = O(mn) . Dabei wird einfach jeder Koeffizient von f mit jedem von g kombiniert. Dieselben Überlegungen greifen auch bei Polynomen über endlichen Ringen, wenn man wieder die Ringmultiplikation als Grundoperation wählt. Wir halten fest: Lemma 4.1 Sind f und g Polynome über einem endlichen Ring oder über Z mit beschränkten Koeffizienten, so beträgt die Laufzeit der Multiplikation dieser Polynome asymptotisch O(deg f · deg g). Bemerkung Die Laufzeit des zuerst betrachteten naiven Algorithmus und die Aussage von
4.1 Komplexität
61
Lemma 4.1 unterscheiden sich nicht sehr. Sind m und n ungefähr gleich groß, dann sind beide quadratisch. Ist aber n beschränkt, so ist der naive Algorithmus immer noch quadratisch, während das Lemma eine lineare Laufzeit liefert. Im Folgenden untersuchen wir die Komplexität einiger weiterer für kryptografische Anwendungen wichtiger Algorithmen. Wie geschehen unterstellen wir bei allen Betrachtungen, dass gewisse Grundoperationen in O(1) (also in konstanter Zeit) durchgeführt werden können.
4.1.4 Addition und Multiplikation ganzer Zahlen Wir wählen für zwei natürliche Zahlen a, b und g ∈ N ≥2 die g-adische Darstellung. Das bedeutet: a=
m
∑ ai gi
i =0
und b =
n
∑ bj g j
j =0
mit 0 ≤ ai , b j < g .
In der Praxis ist vor allem die Binärdarstellung, d. h. der Fall g = 2 wichtig. Der übliche (schon in der Grundschule gelehrte) Algorithmus zur Addition der Zahlen a und b ist gegeben durch: u0 := 0 und c := a + b + u − u+1 · g für ∈ {0, . . . , max{n, m} + 1} . Dabei wird u+1 so gewählt, dass 0 ≤ c < g. In jedem Schritt wird also modulo g addiert. Man sieht leicht, dass u+1 ∈ {0, 1}. Man nennt u+1 den Übertrag an der -ten Stelle. Es gilt dann a+b =
max{n,m}+1
∑
=0
c g .
Mit gutem Recht kann man annehmen, dass die Bestimmung von c und u+1 in jedem Schritt die Laufzeit O(1) hat. Das ist die Grundoperation in diesem Beispiel. Es folgt: Lemma 4.2 Die Laufzeit der Addition zweier Zahlen a und b aus N beträgt O(max{log a, log b}). Der gezeigte Algorithmus ist also auf jeden Fall linear. Für die Multiplikation natürlicher Zahlen geht man ganz analog vor. Die Grundoperation hierbei ist die Multiplikation modulo g mit Übertrag, und man erhält für die Laufzeit: Lemma 4.3 Die Laufzeit der Multiplikation zweier Zahlen a und b aus N beträgt O(log a log b).
62
4 Komplexität und Einwegfunktionen
Hierzu vergleiche man auch die Aussage in Lemma 4.1. Man kann nämlich den üblichen Multiplikations-Algorithmus als Polynom-Multiplikation mit Übertrag deuten. Selbst bei diesen einfachen Operationen ist möglicherweise nicht das letzte Wort gesprochen, wie zum Beispiel Aufgabe 4.3 zeigt. Bemerkung Der Multiplikations-Algorithmus von Schönhage und Strassen [24] hat die Komplexität O(n log n log log n), wobei n = log a ≈ log b. Das ist zwar besser als unsere Laufzeitangabe in Lemma 4.3, wirkt sich aber erst ab n ≈ 10 000 in einer tatsächlichen Beschleunigung aus.
4.1.5
Division mit Rest
In Satz 3.2 wurde die Division mit Rest für Polynome über einem Körper eingeführt. Sicher schon aus der Schule bekannt ist die für die Kryptologie fundamentale Division mit Rest für ganze Zahlen. Der Vollständigkeit halber wiederholen wir den Satz. Der Beweis kann fast wörtlich aus dem Beweis zu Satz 3.2 übernommen werden. An die Stelle der Abbildung deg tritt dabei die Betragsfunktion | · |, wie man schon an der Formulierung sehen kann. Satz 4.4 (Division mit Rest) Zu ganzen Zahlen a, b, wobei b = 0, existieren eindeutig bestimmte q, r ∈ Z mit a = b q + r und 0 ≤ r < |b| . Bemerkung Wir erinnern an eine Schreibweise, die aus der linearen Algebra bekannt ist. Man sagt, zwei ganze Zahlen a und r sind kongruent modulo b, falls es ein q ∈ Z gibt mit a = b q + r. Man schreibt dafür auch a ≡ r (mod b) . Der Satz zur Division mit Rest besagt, dass, im Falle b = 0, jede ganze Zahl a zu einer Zahl r ∈ {0, . . . , |b| − 1} kongruent modulo b ist. Offenbar ist ≡ (mod b) eine Äquivalenzrelation, die Anzahl der Äquivalenzklassen ist |b|. Legt man den aus der Schule bekannten Algorithmus zur Division mit Rest zugrunde, so erhalten wir für die Laufzeit: Lemma 4.5 Die Division mit Rest bei ganzen Zahlen a, b, wobei b = 0, d. h. die Bestimmung von q, r ∈ Z mit a = b q + r und 0 ≤ r < |b|, hat die Laufzeit a . O(log b log q) = O log b log b
4.1 Komplexität
63
Eine typische Anwendung ist z. B. die Multiplikation zweier Zahlen a und b modulo m mit Faktoren 0 ≤ a, b < m: Die Division mit Rest wird auf a b angewendet, um den kleinsten positiven Vertreter von a b ∈ Z m zu bestimmen. Man beachte, dass a, b und a b ungefähr so groß wie m sind. Beide Teilschritte des Algorithmus, nämlich die Multiplikation und die Division mit Rest, sind quadratisch, also kann man zusammenfassen: Lemma 4.6 Die Multiplikation modulo m hat die Laufzeit O((log m)2 ), ist also quadratisch. Mit einem Beweis, der sich nicht wesentlich von dem für ganze Zahlen unterscheidet, ergibt sich für die Laufzeit für die Division von Polynomen mit Rest: Lemma 4.7 Es seien a, b Polynome über einem Körper K, und es gelte b = 0. Die Division mit Rest, also die Bestimmung von q, r ∈ K [ X ] mit a = b q + r und deg r < deg b, hat die Laufzeit O(deg b deg q).
4.1.6 Komplexitätsklassen Wir sagen: Ein mathematisches Problem Π gehört zur •
Komplexitätsklasse P , falls es einen polynomialen Algorithmus zur Lösung dieses Problems gibt, und zur
•
Komplexitätsklasse NP , falls es einen polynomialen Algorithmus gibt, der prüfen kann, ob eine erratene Lösung korrekt ist oder nicht.
Das Symbol NP steht dabei für nondeterministic polynomial time. Gehört ein Problem zu P , so gehört es offensichtlich auch zu NP . Beispiel
Alle bisher in diesem Kapitel untersuchten Probleme, zu denen wir Algorithmen angegeben haben, gehören zu P . Darunter sind Addition und Multiplikation von ganzen Zahlen und von Polynomen, Divison mit Rest, Bestimmung des ggT, usw.
Die Faktorisierung natürlicher Zahlen ist in NP , denn ein zu testender Teiler kann mittels Division mit Rest überprüft werden. Es wird vermutet, ist aber nicht bekannt, dass die Faktorisierung natürlicher Zahlen nicht zu P gehört.
Jedes Problem Π aus der Komplexitätsklasse NP kann durch Ausprobieren aller Kandidaten für Lösungen gelöst werden. Diese Herangehensweise zur Lösung des Problems Π hat aber im Allgemeinen eine exponentielle Laufzeit. Hat nämlich der Eingabewert die Größe n, so hat die Menge, die durchsucht werden muss,
64
4 Komplexität und Einwegfunktionen
im Allgemeinen O (2n ) Elemente. Es müssen also auch O (2n ) Tests durchgeführt werden. Da die Tests polynomial sind, ist der naive Algorithmus alles Durchprobieren somit exponentiell. Übrigens gibt es durchaus Probleme mit exponentiellen Lösungs-Algorithmen, die nicht in NP liegen. Bemerkung Der Begriff mathematisches Problem bleibt vage. Wie beim Begriff des Algorithmus und der Komplexität würde eine präzisere Fassung den Rahmen dieses Buches sprengen. Anhand der Beispiele sollte aber ein Grundverständnis möglich sein. Um diese Begriffe genauer fassen zu können, müssten wir den Begriff der TuringMaschine einführen und diskutieren. Das würde den Rahmen einer Einführung in die algebraischen Methoden der Kryptologie verlassen. Daher verweisen wir auf die Literatur. Wie oben bereits festgehalten, liegt P in NP . Es ist eine offene Frage, ob die beiden Klassen evtl. gleich sind, ob es also zu jedem Problem aus NP einen polynomialen Algorithmus zur Lösung gibt. Auf die Beantwortung dieser Frage ist ein Preis von einer Million US-Dollar ausgesetzt. Es ist eines der Millenium-Probleme1 , die vom privaten Clay Mathematics Institute zusammengestellt wurden.
4.1.7
Algorithmische Äquivalenz
In der Klasse NP gibt es eine reflexive und transitive Relation ≺. Man schreibt Π1 ≺ Π2 , wenn es einen polynomialen Algorithmus gibt, mit dem man das mathematische Problem Π1 auf das Problem Π2 zurückführen kann. Genauer: Besitzt man ein Orakel zur Lösung von Π2 , so kann man Π1 in polynomialer Zeit lösen. Ein Orakel ist dabei eine (fiktive) Maschine, die auf Anfrage eine Lösung eines gewissen mathematischen Problems ausgibt. Bei uns ist das Π2 . Die Befragung eines Orakels wird bei der Ermittlung von Laufzeiten vernachlässigt. Beispiel Für die Probleme prim( N ) „prüfe, ob eine gegebene natürliche Zahl N eine Primzahl ist“ und Fak( N ) „faktorisiere die natürliche Zahl N“ gilt prim( N ) ≺ Fak( N ), da man prim auf das Problem der Faktorisierung zurückführen kann. Dass das keine gute Strategie ist, soll uns hier nicht stören. Zwei mathematische Probleme Π1 und Π2 mit Π1 ≺ Π2 und Π2 ≺ Π1 nennt man algorithmisch äquivalent. Den Nachweis dafür, dass hierdurch auf NP eine Äquivalenzrelation definiert wird, haben wir als Übungsaufgabe formuliert. 1 http://www.claymath.org/millennium/P_vs_NP/
4.2 Der erweiterte euklidische Algorithmus
65
Bemerkung Es ist überaus bemerkenswert, dass es Probleme Π in NP gibt, die maximal bezüglich der Relation „≺“ sind, d. h. dass für alle Probleme Π ∈ NP gilt Π ≺ Π. Man nennt solche maximalen Probleme NP -vollständig. Die Frage nach der Gleichheit der Komplexitätsklassen P und NP lässt sich somit auf das Studium von NP -vollständigen Problemen zurückführen. Statt der Zeitkomplexität, die wir bisher ausschließlich betrachtet haben, kann man auch die Speicherkomplexität betrachten. Es geht hierbei um die Frage, wie viel Speicherplatz man braucht, um einen Algorithmus durchzuführen. Wir gehen dieser Problematik nicht weiter nach und unterstellen stets unendliche Speicherkapazität. Aber natürlich ist die Frage nach der Speicherkomplexität zum Beispiel beim Design von Smartcards durchaus relevant. Ebenfalls wichtig ist die Frage, welche Laufzeit ein Algorithmus im Durchschnitt (engl. avarage case) hat. Es gibt Beipiele von Algorithmen, die zwar im schlechtesten Fall (engl. worst case) exponentiell, aber im Durchschnitt sehr schnell sind.
4.2 Der erweiterte euklidische Algorithmus Wir halten einige einfache Aussagen zur Teilbarkeit in Z fest. Die Aussagen sind bekannt bzw. leicht zu zeigen, daher verzichten wir auf die Beweise.
4.2.1 Teilbarkeit in den ganzen Zahlen Wir sagen: Eine ganze Zahl b teilt eine ganze Zahl a, in Zeichen b | a, wenn es ein q ∈ Z gibt mit a = b q. In der Kongruenzschreibweise (vgl. die Bemerkung auf Seite 62) lautet das wie folgt: b | a ⇔ a ≡ 0 (mod b) . Lemma 4.8 Für ganze Zahlen a, b, c gilt: (a) Die Relation | ist reflexiv und transitiv, d. h. a | a und aus a | b und b | c folgt a | c. (b) Aus a | b und b | a folgt | a| = |b|. (c) 0 | a impliziert a = 0, und a | 0. (d) Aus b | a und b | c folgt b | a x + c y für alle x, y ∈ Z. Wir werden diese Aussagen im Folgenden häufig ohne explizites Zitat verwenden.
66
4 Komplexität und Einwegfunktionen
4.2.2
Der erweiterte euklidische Algorithmus
Der erweiterte euklidische Algorithmus bestimmt den größten gemeinsamen Teiler, in Zeichen ggT, zweier (oder mehrerer) ganzer Zahlen. Sind a1 , . . . , ak ganze Zahlen, so heißt eine Zahl t ∈ Z gemeinsamer Teiler von a1 , . . . , ak , wenn t | ai für alle i ∈ {1, . . . , k }. Die natürliche Zahl 1 ist immer ein gemeinsamer Teiler. Ist eines der ai , etwa a1 , ungleich 0, so gilt |t| ≤ | a1 |. Daher gibt es in diesem Fall ein größtes t ∈ N, das alle a1 , . . . , ak teilt, genannt der größte gemeinsame Teiler der ai . Wir schreiben dafür t = ggT( a1 , . . . , ak ). Falls alle a1 , . . . , ak gleich 0 sind, so setzt man ggT( a1 , . . . , ak ) := 0. Der ggT von endlich vielen Zahlen liegt stets in N0 . Lemma 4.9 Für alle a, b, q ∈ Z gilt ggT( a, b) = ggT( a + bq, b). Beweis. Wir benutzen Lemma 4.8 (d) zweimal: ggT( a, b) | ggT( a + bq, b) | ggT( a + bq − bq, b) = ggT( a, b) . Nun folgt die Aussage aus dem Teil (b) in Lemma 4.8. Aus dieser einfachen Beobachtung ergibt sich der erweiterte euklidische Algorithmus zur Berechnung des ggT von zwei ganzen Zahlen a und b. Er bestimmt außerdem zwei ganze Zahlen x und y mit a x + b y = ggT( a, b) . Ohne Einschränkung dürfen wir annehmen, dass a ≥ b > 0 gilt. Wir bestimmen durch sukzessive Division mit Rest im i-ten Schritt ganze Zahlen ri , qi , xi , yi mit r0 = b, 0 ≤ ri < ri−1 und: i
Division mit Rest
Darstellung
wobei
1
a = q0 b + r1
r1 = ax1 + by1
2
b = q1 r1 + r2
r2 = ax2 + by2
3
r1 = q2 r2 + r3
r3 = ax3 + by3
x1 y1 x2 y2 x3 y3
.. . k
r k −1 = q k r k + r k +1 .. .
n n+1
.. . rk = axk + byk
r n −2 = q n −1 r n −1 + r n
.. . rn = axn + byn
r n −1 = q n r n + r n +1
r n +1 = 0
=1 = − q0 = − q1 x1 = 1 − q1 y1 = x1 − q2 x2 = y1 − q2 y2 .. .
x k = x k −2 − q k −1 x k −1 y k = y k −2 − q k −1 y k −1 .. . x n = x n −2 − q n −1 x n −1 y n = y n −2 − q n −1 y n −1 Stop!
4.2 Der erweiterte euklidische Algorithmus
67
Der Algorithmus bricht ab, weil die ri ∈ N0 streng monoton fallen. Wegen Lemma 4.9 gilt in jedem Schritt ggT(rk , rk−1 ) = ggT(rk+1 , rk ). Daher erhalten wir per Induktion nach k (mit den Bezeichnungen aus obiger Tabelle): Satz 4.10 (Der euklidische Algorithmus) Der euklidische Algorithmus bricht nach n + 1 Schritten ab. Sind a, b ganze Zahlen, b = 0, so ist der Rest rn der ggT von a und b: rn = ggT( a, b) . Weiter liefert der Alorithmus ganze Zahlen x := xn und y := yn mit ggT( a, b) = a x + b y . Beispiel 4.11 Wir bestimmen mit dem erweiterten euklidischen Algorithmus ganze Zahlen x und y mit ggT(840, 455) = x · 840 + y · 455: i
Division mit Rest
Darstellung
wobei
1
840 = 1 · 455 + 385
r1 = 840 x1 + 455 y1
2
455 = 1 · 385 + 70
r2 = 840 x2 + 455 y2
3
385 = 5 · 70 + 35
r3 = 840 x3 + 455 y3
4
70 = 2 · 35 + 0
r4 = 0
x1 = 1 y1 = −1 x2 = −1 · 1 y2 = 1 − 1 · (−1) x3 = 1 − 5 · (−1) y3 = −1 − 5 · 2 Stop!
Wir erhalten ggT(840, 455) = 35 = 6 · 840 + (−11) · 455 .
Eine einfache, aber wichtige Folgerung ist die fast offensichtliche Kennzeichnung für den ggT. Lemma 4.12 Für a, b ∈ Z und d ∈ N0 gilt d = ggT( a, b) genau dann, wenn (i)
d | a und d | b, und
(ii)
für jedes t ∈ Z mit t | a und t | b gilt t | d.
Beweis. ⇒: (i) gilt nach Voraussetzung. (ii) Es gelte t | a und t | b, etwa a = a t und b = b t, für ein t ∈ Z. Ist d = ggT( a, b), so existieren nach dem euklidischen Algorithmus Zahlen x, y ∈ Z mit d = a x + b y = a t x + b t y = ( a x + b y) t ,
68
4 Komplexität und Einwegfunktionen
sodass also t ein Teiler von d ist. ⇐: Nach (i) ist d ein gemeinsamer Teiler von a und b. Wegen (ii) ist jeder gemeinsame Teiler t von a und b ein Teiler von d. Daher gilt t ≤ d. Es ist also ggT( a, b) auch maximal bezüglich der Relation | und nicht nur bezüglich ≤. Eine weitere wichtige Folgerung ist: Lemma 4.13 Teilt eine Primzahl p ein Produkt a b ganzer Zahlen a und b, so teilt p bereits einen der Faktoren a oder b, d. h.: p | ab ⇒ p | a oder p | b . Beweis. Ist p ein Teiler von b, so sind wir fertig. Ist p kein Teiler von b, so gilt ggT( p, b) = 1, und nach dem Satz 4.10 zum euklidischen Algorithmus existieren ganze Zahlen x und y mit p x + b y = 1. Es folgt a p x + a b y = a. Nach Voraussetzung teilt p beide Summanden der linken Seite. Nach Lemma 4.8 also auch die rechte Seite a. Aus dieser Aussage kann man die Eindeutigkeitsaussage des Fundamentalsatzes der Arithmetik ohne viel Mühe herleiten. Wir haben das als Aufgabe formuliert. Satz 4.14 (Fundamentalsatz der Arithmetik) Jede natürliche Zahl N > 1 lässt sich – bis auf die Reihenfolge der Faktoren – auf genau eine Art und Weise als ein Produkt von Primzahlpotenzen schreiben, d. h., es gibt Primzahlen p1 , . . . , pr und natürliche Zahlen ν1 , . . . , νr ∈ N mit: N=
r
ν
∏ pi i .
i =1
Sortiert man die Primzahlen der Reihe nach, d. h. setzt man p1 < · · · < pr , so spricht man von der kanonischen Primfaktorzerlegung der natürlichen Zahl N > 1. 4.2.3
Komplexitätsanalyse des euklidische Algorithmus *
Im folgenden Satz benutzen wir die Zahl
√ 1+ 5 γ := ≈ 1.618 . . . < 2 , 2 die auch goldener Schnitt genannt wird. Es ist γ eine Nullstelle des Polynoms x2 − x − 1, daher gilt γ = 1 + γ −1 . Das werden wir im Folgenden benutzen. Wir verwenden die im vorigen Abschnitt eingeführten Bezeichnungen.
4.2 Der erweiterte euklidische Algorithmus
69
Satz 4.15 Für die im euklidischen Algorithmus auftretenden Variablen gilt: (a) n ≤
log b . log γ
(b) | xk | ≤
b 2d ,
|yk | ≤
a 2d
für alle k ∈ {1, . . . , n}.
(c) Die Laufzeit des erweiterten euklidischen Algorithmus beträgt O(log a log b). Beweis. Wir setzen ohne Einschränkung a ≥ b > 0 voraus. Dies impliziert, dass alle qk > 0 sind. Das werden wir mehrfach verwenden. (a) Unter Nutzung der Beziehung 1 + γ−1 = γ zeigen wir zunächst rk ≥ γn−k d für alle 0 ≤ k ≤ n mit absteigender Induktion nach k. Der Induktionsanfang für k = n und k = n − 1 ist einfach: rn = d ≥ γ0 d und rn−1 ≥ 2 d > γ d . Für den Induktionsschluss rechnen wir: r k −1 = q k r k + r k +1 ≥ r k + r k +1 ≥ γ n − k d + γ n − k −1 d = γn−k 1 + γ−1 d = γn−k+1 d. Insbesondere gilt b = r0 ≥ γn und somit n ≤
log b log γ .
−qk 1 (b) Für k ∈ {1, . . . , n} und die Matrizen Qk := gilt 1 0 xk x k +1 yk y k +1 = = Qk und Qk . x k −1 xk y k −1 yk x1 1 y1 − q0 erhält man = = Mit und 0 x0 y0 1 1 x n +1 y n +1 − q0 (∗) Qn · · · Q1 = = , Q n · · · Q1 . 0 xn 1 yn Der Knackpunkt des Beweises ist die Untersuchung der Matrizen u k u k +1 (∗∗) : = Q n Q n −1 · · · Q k +1 . v k v k +1 Es gilt
uk vk
u k +1 v k +1
−qk 1
1 0
=
− q k u k + u k +1 − q k v k + v k +1
uk vk
=
u k −1 v k −1
uk . vk
70
4 Komplexität und Einwegfunktionen
Daher ist die Darstellung in (∗∗) wohldefiniert, und es gilt vk−1 = −qk vk + vk+1 . Wir zeigen mit absteigender Induktion nach k die Aussage: r (i) |vk | ≤ k für alle k ∈ {0, . . . , n}. 2d rn Für k = n ist die Behauptung vn = 0 ≤ 2d klar; für k = n − 1 hat man vn−1 = 1 ≤ r n −1 2d , denn rn−1 > rn = d und d | rn−1 . Beim Induktionsschluss gehen wir von k nach k − 1 und beachten die Dreiecksungleichung:
| v k −1 | ≤ q k | v k | + | v k +1 | ≤ q k
rk r q r + r k +1 r + k +1 = k k = k −1 . 2d 2d 2d 2d
Damit gilt die Behauptung in (i). Wir zeigen weiter: (ii) xk = (−1)k | xk |, yk = (−1)k+1 |yk |, und | xk | und |yk | sind monoton wachsend für alle k ∈ {0, . . . , n}. Für k = 0 und k = 1 stimmen die Behauptungen offenbar. Wir führen den Induktionschritt nur für xk aus (für yk geht man entsprechend vor): xk+1 = −qk xk + xk−1 = −qk (−1)k | xk | + (−1)k−1 | xk−1 |
= (−1)k+1 qk | xk | + | xk−1 | . Nach Induktionsvoraussetzung und wegen qk > 0 haben die Terme −qk xk und xk−1 dasselbe Vorzeichen. Daher gilt:
(−1)k+1 qk | xk | + | xk−1 | = (−1)k+1 | xk+1 | , und die Induktion ist komplett. Außerdem folgt | xk+1 | ≥ qk | xk | ≥ | xk |. Damit ist (ii) gezeigt. Das Produkt Qn Qn−1 . . . Q1 hat wegen (∗∗) die Form Q n Q n −1 . . . Q 1 = , v0 v1 also gilt nach (∗) die Gleichung xn = v0 . Nun zeigen (ii) und (i):
| x k | ≤ | x n | = | v0 | ≤
b . 2d
Entsprechend ergibt sich aus (∗) die Gleichung yn = −q0 v0 + v1 und
|yk | ≤ |yn | ≤
q0 r0 + r1 a . = 2d 2d
(c) Die k-te Division mit Rest hat nach Lemma 4.5 die Laufzeit O(log qk log rk ). Insgesamt ergibt sich die Laufzeit: n
n
k =0
k =0
∑ log qk log rk ≤ log b log ∏ qk ≤ log b log a ,
4.3 Die primen Restklassengruppen
71
denn a ≥ q 0 r 0 + r1 ≥ q 0 ( q 1 r 1 + r 2 ) ≥ · · · ≥ q n q n −1 . . . q 0 . Um die Laufzeit für die Berechnung der xk abzuschätzen, rechnen wir n −1
n −1
k =1
k =1
∑ log qk log xk ≤ log b log ∏ qk ≤ log b log b .
Analog ergibt sich für die yk n −1
∑
k =1
n −1
log qk log yk ≤ log a log ∏ qk ≤ log a log b . k =1
Da alle Teilaufgaben in O(log a log b) Schritten erledigt werden können, folgt die Behauptung. Bemerkung Es ist von größter Bedeutung, dass der euklidische Algorithmus ohne eine Faktorisierung von a und b auskommt. Er ist sehr effizient (nicht nur asymptotisch) und spielt eine fundamentale Rolle in der Zahlentheorie und der Kryptologie.
Der Beweis zeigt auch, dass die Werte für x und y (und alle Zwischenergebnisse) beschränkt sind. Das impliziert polynomiale Speicherkomplexität. Diese Aussage gilt nicht nur asymptotisch und trägt zur praktischen Effizienz bei.
Es gibt einen analogen Algorithmus für Polynome, mit ähnlicher Komplexität (vgl. auch Lemma 4.7).
4.3 Die primen Restklassengruppen In diesem Abschnitt sei eine natürliche Zahl n > 1 fest gewählt. 4.3.1 Einheiten in Z n Die Einheitengruppe des Restklassenringes (Z n , +, ·), das ist die multiplikative Gruppe (Z × n , ·) mit Z× n = { a ∈ Z n ; a ist invertierbar} = a ∈ Z n ; ∃ b ∈ Z n mit a b = 1 , wird auch prime Restklassengruppe modulo n genannt. Satz 4.16 Für a ∈ Z gilt: a ∈ Z × n ⇔ ggT( a, n ) = 1. Beweis. Es sei a = a + n Z invertierbar. Folglich existiert ein b ∈ Z mit 1 + n Z = ( a + n Z ) · (b + n Z ) = a b + n Z .
72
4 Komplexität und Einwegfunktionen
Somit gibt es ein y ∈ Z mit a b − 1 = n y ∈ n Z. Jeder gemeinsame Teiler von a und n ist ein Teiler von 1, daher folgt ggT( a, n) = 1. Ist ggT( a, n) = 1, so existieren nach dem Satz 4.10 zum euklidischen Algorithmus ganze Zahlen b und y mit a b + n y = 1, und es gilt
( a + n Z ) · (b + n Z ) = a b + n Z = 1 + n Z . Somit ist a = a + n Z ∈ Z n invertierbar. Nach diesem Satz gilt Z× n = { a ∈ Z n ; ggT( a, n ) = 1} . Beispiel Wir geben die primen Restklassengruppen für einige kleine n an: Z2× = {1} , Z3× = {1, 2} , Z4× = {1, 3} , Z5× = {1, 2, 3, 4} , Z6× = {1, 5} , Z7× = {1, 2, 3, 4, 5, 6} , Z8× = {1, 3, 5, 7} .
In Z8× ist jedes Element zu sich selbst invers und es gilt etwa 3 · 5 = 7.
Wir ziehen einige wichtige Folgerungen. Die erste sollte aus der linearen Algebra bekannt sein, sie wurde auch schon in Abschnitt 3.1 verwendet. Korollar 4.17 Der Ring (Z n , +, ·) ist genau dann ein Körper, wenn n eine Primzahl ist. Beweis. Der Ring Z n ist genau dann ein Körper, wenn alle Elemente = 0 invertierbar sind. Das ist nach Satz 4.16 gleichwertig dazu, dass alle Zahlen 1, . . . , n − 1 zu n teilerfremd sind; und das ist genau dann erfüllt, wenn n eine Primzahl ist. 4.3.2
Lineare Kongruenzgleichungen
In Satz 4.10 zum euklidischen Algorithmus wurde die Existenz einer Darstellung des ggT zweier ganzer Zahlen a und b gezeigt: Es gibt x, y ∈ Z mit ggT( a, b) = a x + b y . Wir können nun die Frage nach der Eindeutigkeit einer solchen Darstellung klären. Lemma 4.18 Es seien a und b ganze Zahlen und d = ggT( a, b). Sind x, y ∈ Z mit d = a x + b y gewählt, so gilt: d = a x + b y für x , y ∈ Z ⇔ ∃ k ∈ Z mit x = x + k
b a und y = y − k . d d
4.3 Die primen Restklassengruppen
73
Beweis. Die Richtung ⇐ erhält man durch Einsetzen von x = x + k y − k da in a x + b y :
ax +by = a
b x+k d
b d
und y =
a +b y−k = ax+by = d. d
Wir zeigen nun die Richtung ⇒: Aus a x + b y = d = a x + b y folgt: a b a b x + y = 1 = x + y . d d d d Wir erhalten aus dieser Gleichung, indem wir modulo a a x ≡ x d d
mod
b d
x≡x
b mod d
rechnen, die Kongruenz
a d
kürzen, und es folgt
.
Da ggT( da , db ) = 1 kann man nach Satz 4.16 den Faktor
b d
,
wie behauptet. Die Darstellung von y ergibt sich, indem man die resultierende Gleichung b + b y ax+by = a x+k d nach y auflöst. Eine Gleichung der Form a X ≡ c (mod n) mit a, c ∈ Z und n ∈ N nennt man eine (lineare) Kongruenzgleichung. Die Lösungsmenge L der Kongruenzgleichung a X ≡ c (mod n) ist die Menge aller Zahlen x ∈ Z mit n | a x − c, anders ausgedrückt: L = { x ∈ Z ; ∃ y ∈ Z mit a x + n y = c} . Wir erhalten folglich aus Lemma 4.18: Korollar 4.19 Es seien a, c ∈ Z und n ∈ N. Die Kongruenzgleichung
(∗)
a X ≡ c (mod n)
hat genau dann eine Lösung in Z, wenn d := ggT( a, n) | c. Ist x ∈ Z eine Lösung der Kongruenzgleichung (∗), so ist x + nd Z die Menge aller Lösungen von (∗).
74
4 Komplexität und Einwegfunktionen
Bemerkung Gilt d := ggT( a, n) | c, etwa c = d t, t ∈ Z, so erhält man eine Lösung der Kongruenzgleichung a X ≡ c (mod n) mit dem euklidischen Algorithmus. Man bestimme k, l ∈ Z mit ak+nl = d. Multipliziert man diese Gleichung mit t, so sieht man, dass x := k t eine Lösung der Kongruenzgleichung ist, da a x ≡ c (mod n). 4.3.3
Invertieren modulo n
Wie der Beweis von Satz 4.16 zeigt, erlaubt es der erweiterte euklidische Algorithmus nicht nur zu klären, ob a ∈ Z modulo n invertierbar ist, sondern gegebenenfalls das Inverse auch zu bestimmen. Weil diese Tatsache gerade in der Kryptologie von so fundamentaler Bedeutung ist, halten wir sie ausdrücklich fest. Satz 4.20 Es sei a ∈ Z, −n < a < n, mit ggT( a, n) = 1 gegeben. Der erweiterte euklidische Algorithmus 4.10 liefert b, y ∈ Z mit a b + n y = 1 in der Laufzeit O((log n)2 ). Es ist b das Inverse von a im Ring Z n . Beweis. Die Aussagen sind eine Zusammenfassung der Sätze 4.10, 4.15 (c) und 4.16. Dabei ist zu berücksichtigen, dass a ungefähr so groß wie n ist. Wir erlauben uns, an dieser Stelle nochmals auf die Bemerkung auf Seite 71 zu verweisen. Sie zeigt, dass die Berechnung von Inversen im Ring Z n sehr effizient möglich ist. Es sei darauf hingewiesen, dass man mit dem Versuch, das Inverse eines Elements in Z n zu bestimmen, zugleich prüft, ob es existiert. Anders ausgedrückt: Man muss nicht vorher testen, ob ein Inverses existiert. Beispiel Wir bestimmen mit dem erweiterten euklidischen Algorithmus das Inverse von 351 in Z770 : i
Division mit Rest
Darstellung
wobei
1
770 = 2 · 351 + 68
r1 = 770 x1 + 351 y1
2
351 = 5 · 68 + 11
r2 = 770 x2 + 351 y2
3
68 = 6 · 11 + 2
r3 = 770 x3 + 351 y3
4
11 = 5 · 2 + 1
r4 = 770 x4 + 351 y4
5
2 = 2·1+0
r5 = 0
x1 = 1 y1 = −2 x2 = −5 · 1 = −5 y2 = 1 − 5 · (−2) = 11 x3 = 1 − 6 · (−5) = 31 y3 = −2 − 6 · 11 = −68 x4 = −5 − 5 · 31 = −160 y4 = 11 − 5 · (−68) = 351 Stop!
4.3 Die primen Restklassengruppen
75
Wir erhalten 1 = 770 · (−160) + 351 · 351 , d. h. 1 = 351 · 351 , somit ist 351 das Inverse zu 351 in Z770 .
4.3.4 Eulers ϕ-Funktion Bisher hatten wir n > 1 angenommen. Aber natürlich ist auch Z1 = {0} ein Ring. Das Nullelement 0 ist gleichzeitig Einselement und damit invertierbar. Es gilt also Z1× = Z1 = {0}. Für jede natürliche Zahl n bezeichnet man mit ϕ(n) die Mächtigkeit von Z × n:
× ϕ ( n ) = Z n . Damit ist eine Abbildung ϕ : N → N erklärt – die Euler’sche ϕ-Funktion. Die Zahl ϕ(n) gibt wegen Z× n = { a ∈ Z n ; ggT( a, n ) = 1} . die Anzahl der natürlichen Zahlen aus {1, . . . , n} an, die zu n teilerfremd sind. Beispiel ϕ (1) = 1 , ϕ (2) = 1 , ϕ (3) = 2 , ϕ (4) = 2 , ϕ (5) = 4 , ϕ (6) = 2 , ϕ (7) = 6.
ϕ( p) = p − 1 für jede Primzahl p (man vergleiche das mit Satz 4.17).
Für jede Primzahlpotenz pk , k ∈ N, findet man: 1 k k k −1 k = p 1− ϕ( p ) = p − p , p da unter den pk Zahlen 1, 2, . . . , pk genau die pk−1 Zahlen p, 2 p, . . . , pk−1 p einen gemeinsamen Teiler mit pk haben. Alle anderen Zahlen zwischen 1 und pk , das sind pk − pk−1 Zahlen, sind zu pk teilerfremd.
ϕ( p q) = ( p − 1) (q − 1) für verschiedene Primzahlen p und q, da unter den Zahlen 1, . . . , p, . . . , 2 p, . . . , q p genau q Zahlen einen gemeinsamen Teiler mit p haben und analog genau p Zahlen unter 1, . . . , q, . . . , 2 q, . . . , p q einen gemeinsamen Teiler mit q haben. Folglich sind genau p q − p − q + 1 = ( p − 1) ( q − 1) Zahlen unter 1, . . . , p q zu p q teilerfremd. Der Summand 1 rührt daher, dass wir die Zahl p q nur einmal berücksichtigen dürfen.
Auf weitere interessante Eigenschaften der Euler’schen ϕ-Funktion gehen wir in Kapitel 7 ein.
76
4.4
4 Komplexität und Einwegfunktionen
Einwegfunktionen und Hashfunktionen
Etwas salopp ausgedrückt, werden wir eine Funktion f , für die b = f ( a) einfach auszuwerten ist, aber für die a ∈ f −1 ({b}) schwer zu bestimmen ist, eine Einwegfunktion nennen. Die Existenz von echten Einwegfunktionen hängt eng mit der Frage zusammen, ob die Komplexitätsklassen P und NP verschieden sind. Da diese Frage offen ist, werden wir zur Existenz von Einwegfunktionen nur Vermutungen anstellen können. Im Folgenden werden wir gelegentlich feststellen, eine Funktion sei in P oder NP . Das soll bedeuten, dass es einen Algorithmus zur Auswertung von f gibt, der in der entsprechenden Klasse liegt. In vielen – gerade für diesen Abschnitt wichtigen – Fällen, hängt das von der Art ab, wie f beschrieben ist.
4.4.1
Einwegfunktionen
Es seien A und B Mengen. Eine Abbildung f : A → B heißt Einwegfunktion, wenn gilt: (E1) f ∈ P und f lässt sich tatsächlich effizient berechnen; (E2) Das Problem Π „zu b ∈ B bestimme a ∈ A mit f ( a) = b“, d. h. finde ein Element in f −1 (b), ist für die meisten b ∈ B nicht effizient lösbar. Im besten Fall ist Π nicht in P . Man beachte, dass das Problem Π wegen der ersten Bedingung in NP liegt. Beispiel Wir betrachten die Menge Ik = [2k−1 , 2k − 1] ∩ N der k-Bit Zahlen. Die Multiplikationsabbildung Ik × Ik → N ( a, b) → a b kann effizient ausgeführt werden (siehe Lemma 4.3). Daher ist (E1) erfüllt. Es scheitert aber (E2) an der Formulierung für die meisten. Für kryptografische Anwendungen sind die Ergebnisse zu häufig faktorisierbar. Schränken wir diese Abbildung aber ein, indem wir nur k-Bit Primzahlen zulassen, also Elemente der Menge P k := { p ∈ Ik ; p prim}, so erhalten wir: Pk × Pk → N ( a, b) → a b Diese Abbildung ist nach allem, was wir heute wissen, vermutlich eine Einwegfunktion. Auf dieser Einwegfunktion basiert das bekannte RSA-Verfahren. Bemerkung Die Sicherheit von AES besagt im Wesentlichen, dass AES eine Einwegfunktion in beiden Argumenten ist.
4.4 Einwegfunktionen und Hashfunktionen
77
Anwendung: Schlüsselaustausch. Gegeben sei ein Kryptosystem ( P, P, K, f , g) bei dem f (y, . ) : K → P für jedes y ∈ P eine Einwegfunktion ist. Außerdem setzen wir voraus, dass f k1 und f k2 für alle k1 , k2 ∈ K vertauschbar sind, dass also gilt f k1 ◦ f k2 = f k2 ◦ f k1 . Wir wählen ein festes x ∈ P, das öffentlich zugänglich ist. Zwei Teilnehmer T1 und T2 bestimmen einen gemeinsamen geheimen Schlüssel κ wie folgt:
T1 wählt k1 ∈ K und publiziert y1 := f ( x, k1 ). T2 wählt k2 ∈ K und publiziert y2 := f ( x, k2 ). Es ist κ := f (y2 , k1 ) = f (y1 , k2 ) der gemeinsame geheime Schlüssel, wobei T1 die erste, T2 die zweite Rechnung ausführen kann. Unsere Voraussetzung stellt sicher, dass es nicht möglich ist, κ aus y1 oder y2 zu berechnen. Diese Idee geht auf Diffie und Hellman [9] zurück. Sie haben auch ein konkretes Verfahren beschrieben, das in Kapitel 9 zu finden ist. Dort werden einige Feinheiten diskutiert, die wir hier der Einfachheit halber unterschlagen haben.
4.4.2 Hashfunktionen Hashfunktionen – im Deutschen auch Streuwertfunktionen genannt – sollen evtl. sehr große Datenmengen auf einen kleinen, aber typischen Datensatz komprimieren. Sie werden in der Kryptologie häufig eingesetzt, etwa bei Signaturschemata und auch bei symmetrischen Authentifikationssystemen, wie sie im folgenden Kapitel beschrieben werden. Es seien P, C Mengen mit | P| > |C |. Dabei darf P unendlich sein, C wird endlich vorausgesetzt. Wir nennen eine Einwegfunktion h : P → C eine Hashfunktion. Genauer müsste man Einweg-Hashfunktion sagen, aber wir sind nur an Einwegfunktionen interessiert. Bemerkung Für andere Anwendungen, wie etwa die Indizierung in Datenbanken, werden durchaus auch Hashfunktionen ohne Einwegeigenschaft benutzt. Eine Hashfunktion h heißt kollisionsresistent, wenn es keinen effizienten Algorithmus gibt, mit dem x, y ∈ P gefunden werden können, für die h( x ) = h(y) gilt. Häufig wird die Kollisionsresistenz in die Definition der Hashfunktion mit aufgenommen. Es gibt noch eine schwächere Form der Kollisionsresistenz: Zu vorgegebenem x ∈ P gibt es keinen effizienten Algorithmus, der y ∈ P findet mit h(y) = h( x ). Wegen | P| > |C | ∈ N kann die Abbildung h nicht injektiv sein. Daher gibt es x, y mit h( x ) = h(y) – im Allgemeinen sogar sehr viele! Verlangt ist nur, dass es schwer sein muss, solche zu finden.
78
4 Komplexität und Einwegfunktionen
In vielen kryptografischen Anwendungen sind die Mengen P und C speziell gewählt: Wir erinnern an die Menge aller Wörter über dem Alphabet A (in der Praxis ist A oft gleich Z2 ) aus Abschnitt 1.4, die wir mit A∗ bezeichnet haben. Mit n ∈ N werden dann häufig Hashfunktionen h : A∗ → An benutzt. Bei solchen Hashfunktionen wird also ein Datensatz beliebiger Länge auf einen Datensatz der festen Länge n komprimiert. Ein typischer Wert für n aus der Praxis ist n = 160, oder größer. Die Kollisionsresistenz stellt sicher, dass der sogenannte Hashwert h( x ) unfälschbar mit x verbunden ist. Man spricht manchmal auch von einem (kryptografischen) Fingerabdruck. Wie der Fingerabdruck eines Menschen diesen fast sicher identifizieren kann, soll der Hashwert den Datensatz x identifizieren.
4.4.3
Einwegfunktionen mit Hintertürchen
Auch die Idee, Einwegfunktionen mit Hintertürchen zu definieren, stammt von Diffie und Hellman [9]. Sie haben damit die moderne Kryptologie begründet. Es seien A und B Mengen. Eine Abbildung f : A → B heißt TrapdoorEinwegfunktion oder Einwegfunktion mit Hintertürchen, wenn gilt: (H1) f ist invertierbar. (H2) Das Paar ( f , f −1 ) ist leicht zu erzeugen. (H3) Es gibt eine Beschreibung von f , in der f eine Einwegfunktion ist. (H4) f −1 ∈ P , genauer: Es gibt einen Algorithmus, mit dem f −1 effizient berechnet werden kann. Beispiele werden wir hierzu nicht geben. In Kapitel 7 wird gezeigt, dass das RSAVerfahren auf einer Einwegfunktion mit Hintertürchen basiert, die algorithmisch äquivalent zur Faktorisierung ist (siehe auch das Beispiel auf Seite 76). Weitere Kandidaten für Einwegfunktionen mit Hintertürchen ergeben sich aus dem diskreten Logarithumsproblem, wie es in Kapitel 10 beschrieben ist.
4.4.4
Anwendungen
Die Beobachtung von Diffie und Hellman [9] war, dass aus Einwegfunktionen mit Hintertürchen asymmetrische Verschlüsselungs- und Signaturschemata konstruiert werden können: Jeder Teilnehmer T eines Netzwerks erzeugt sich ein Paar ( f T , f T−1 ) von Trapdoor-Einwegfunktionen und veröffentlicht f T in der Beschreibung gemäß (H3).
4.4 Einwegfunktionen und Hashfunktionen
79
Anwendung: Verschlüsselung. Die Nachricht N soll an den Teilnehmer T verschickt werden. Dazu wird f T (N ) verschickt. Nur T kennt f T−1 und kann daher f T−1 ( f T (N )) berechnen. Nicht einmal der Absender kann N aus f T (N ) zurückgewinnen (wenn er etwa N vergessen hat), weil f T eine Einwegfunktion ist. Anwendung: Signatur. Teilnehmer T will die Nachricht N signieren. Dazu berechnet T den Ausdruck f T−1 (N ) und verschickt (N , f T−1 (N )). Jeder kann durch Anwenden von f T die Unterschrift verifizieren. In der Praxis wird nicht die Nachricht N , die sehr groß sein kann, signiert, sondern ein Hashwert h(N ). Dabei ist h eine geeignete, kollisionsresistente Hashfunktion. Der Vorteil des Einsatzes von Hashfunktionen besteht darin, dass die Signatur eine feste Länge hat, unabhängig von der signierten Datenmenge. An dieser Stelle wird auch klar, warum die Hashfunktion kollisionsresistent sein muss. Könnte ein Angreifer eine Kollision erzeugen, also x, y mit h( x ) = h(y), so könnte er versuchen, den arglosen Teilnehmer T dazu zu bewegen, die harmlos aussehende Nachricht x zu signieren, und hätte dann eine gültige Unterschrift für die Nachricht y, von der T nichts weiß. Bemerkung
Ein Signaturschema liefert Integrität und Authentizität, wie sie im nächsten Kapitel beschrieben werden. Darüber hinaus können auch juristische Kategorien wie •
Willenserklärung,
•
Unwiderruflichkeit,
•
Rechtsverbindlichkeit
realisiert werden.
Wichtig ist dabei, eine unlösliche Verknüpfung zwischen den Teilnehmern T und der zugehörigen öffentlichen Abbildung f T herzustellen. Beispielsweise muss verhindert werden, dass ein Angreifer eine gefälschte Abbildung f T – etwa auf eine Webseite – plaziert, die für T’s Abbildung gehalten wird (man vgl. hierzu auch das Problem mit dem Mann in der Mitte auf Seite 169). Das ist ein nichttriviales, technisches Problem, das unter dem Stichwort Public-KeyInfrastruktur behandelt wird.
Aufgaben 4.1
Führen Sie den Beweis des Satzes 4.4 in allen Details aus.
4.2 Bestimmen Sie die Laufzeit des üblichen Algorithmus für die Division mit Rest.
80
4.3
4 Komplexität und Einwegfunktionen
Komplexität der Multiplikation
(a) Beschreiben Sie die Multiplikation zweier Binär-Zahlen nach der bekannten Methode aus der Grundschule. (b) Bestimmen Sie die Komplexität des Algorithmus in (a). (c) Berechnen Sie 1100100 · 1010101 mit dem Algorithmus in (a). (d) Es seien a, b ∈ N in der g-adischen Darstellung a=
n −1
∑ ai gi ,
b=
i =0
n −1
∑ bi g i
i =0
mit n = 2ν
gegeben. Wir setzen a L :=
n −1 2
∑
i =0
ai g und a H := i
n
n −1 2
∑
i =0
n
a n +i gi , sodass a = a L + a H g 2 2
n
und entsprechend b = bL + b H g 2 . Nun gilt a · b = u + vg 2 + wgn mit u = a L bL ,
v = a L b H + a H b L = u + w − ( a L − a H )(bL − b H ),
w = a H bH .
Zeigen Sie, dass diese Methode von Karatsuba-Ofman eine Komplexität von O(nlog2 3 ) hat. 4.4 Beweisen Sie den Fundamentalsatz der Arithmetik 4.14. 4.5 Zeigen Sie, dass die Relation algorithmisch äquivalent von Seite 64 eine Äquivalenzrelation ist. 4.6 Zeigen Sie, dass Kollisionsresistenz die im Text so genannte schwächere Form der Kollisionsresistenz impliziert. 4.7 Für eine Hashfunktion h : P → Z2n soll eine Kollision mithilfe des Geburtstagsparadoxons (siehe Aufgabe 2.2) konstruiert werden. Man spricht von der Geburtstags-Attacke. Wie viele Versuche braucht man, um mit Wahrscheinlichkeit ≈ 1/2 eine Kollision zu finden, wenn n = 64, n = 128 und n = 160 ist?
5 Symmetrische Authentifikation Bei den bisher behandelten kryptografischen Verfahren lag das Augenmerk auf der Vertraulichkeit. Es werden Texte zwischen Sender und Empfänger ausgetauscht, deren Inhalt für Dritte nicht erkennbar sein soll. Aber wie schon in Abschnitt 3.4.1 bemerkt, ist schlichte Verschlüsselung kein Garant für Authentizität und schon gar nicht für Integrität. Als anschauliches Beispiel dient ein Formular: Durch Verschlüsselung kann zwar der Inhalt verschleiert werden, aber die Stelle, an der eine wichtige Information (etwa ein Geldbetrag oder eine Kontonummer) steht, ist einem Angreifer bekannt. Er kann also versuchen zu manipulieren, evtl. ohne genau zu wissen, welchen Effekt der Eingriff hat. Authentifikation stellt zweierlei sicher: •
Zum einen soll eine Nachricht nicht auf dem Weg vom Sender zum Empfänger unbemerkt verändert werden können – Stichwort Integrität.
•
Zum anderen soll es gewiss sein, dass eine erhaltene Nachricht wirklich vom vorgeblichen Sender stammt – Stichwort Authentizität.
Wir besprechen in diesem Kapitel symmetrische Authentifikationssysteme. Hierbei ist zwischen den Teilnehmern ein vorheriger Schlüsselaustausch nötig. In Kapitel 12 werden wir asymmetrische Systeme kennenlernen – ein vorheriger Schlüsselaustausch erübrigt sich dann. Beim sogenannten MAC, das ein sehr weit verbreitetes symmetrisches Authentifikationssystem ist, wird zu einem Text N eine Prüfsumme S erzeugt. Der Sender schickt das Paar (N , S) an den Empfänger, und dieser prüft mithilfe des geheimen Schlüssels k, ob die Nachricht N auf dem Weg verfälscht worden ist und ob sie tatsächlich vom vorgeblichen Sender stammt. Der Satz von Gilbert-Williams-Sloane besagt, dass bei jedem Authentifikationssystem die Betrugswahrscheinlichkeit p größer gleich 1/ |K | ist, wobei K die Schlüsselmenge des Systems ist. Wir werden ein Authentifikationssystem perfekt nennen, falls die Betrugswahrscheinlichkeit p so klein wie möglich ist. Um schließlich perfekte Authentifikationssysteme angeben zu können, machen wir einen kleinen Ausflug in die Geometrie. Die perfekten Authentifikationssysteme lassen sich nämlich geometrisch als sogenannte Netze charakterisieren.
5.1 Message Authentication Code Symmetrische Authentifikation wird in der Praxis fast ausschließlich mit Message Authentication Codes, kurz MAC, durchgeführt.
82
5 Symmetrische Authentifikation
5.1.1
Das Prinzip des MAC
Die Idee ist einfach: Gegeben seien Mengen P, K und S und eine Abbildung α : P×K → S. Dann ist
( P, P × S, K, f ) mit f ( x, k) := ( x, α( x, k)) ein Kryptosystem, da die Abbildung f k = f ( . , k ) : P → P × S offenbar injektiv ist – vgl. die Definition auf Seite 9. Von der Abbildung α verlangen wir noch zweierlei: •
Für k = k aus K gelte stets αk = αk .
•
Für jedes k ∈ K sei αk eine kollisionsresistente Hashfunktion (hier ist implizit vorausgesetzt, dass |S| < | P|).
Sender und Empfänger gehen nun wie folgt vor:
Vor der Kommunikation einigen sie sich auf den gemeinsamen, geheimen Schlüssel k ∈ K. Um den Klartext N ∈ P zu authentifizieren, berechnet der Sender den Wert S := α(N , k), den eigentlichen MAC, und verschickt f (N , k) = (N , S). Der Empfänger erhält (N , S ) und überprüft mit seinem Schlüssel k, ob die Bedingung α(N , k) = S
erfüllt ist.
(N , S )
Ist diese Bedingung erfüllt, so nennt man die Nachricht gültig, sonst ungültig – unabhängig davon, ob (N , S ) gleich (N , S) ist oder nicht. Folglich kann (N , S) auf dem Weg zum Empfänger manipuliert worden sein und dennoch erkennt der Empfänger das erhaltene (N , S ) als gültig an. Bei einer gültigen Nachricht sind im folgenden Sinne Integrität und Authentizität sichergestellt: Die Authentizität wird dadurch gewährleistet, dass außer dem Empfänger nur der Sender den vereinbarten Schlüssel kennt. Die Integrität beruht wesentlich auf der Kollisionsresistenz der Hashfunktion αk ; diese stellt sicher, dass es nicht möglich ist, zu einem gültigen S eine weitere Nachricht N zu finden, für die (N , S) als gültig akzeptiert wird. Man erkennt, dass das geschilderte Verfahren so keinerlei Geheimhaltung bietet. Der Klartext N wird unverschlüsselt vom Sender an den Empfänger übermittelt. Wir werden daher in diesem Kapitel nicht vom Geheimtext, sondern von der Nachricht sprechen. Beim MAC ist die Nachricht f (N , k) = (N , S). Wir können aber auch Geheimhaltung erreichen. Dazu verschlüssele man den Klartext N vor oder nach der Anwendung von α mit einem symmetrischen Verfahren. Folglich können wir N als Klartext oder auch als verschlüsselten Text
5.1 Message Authentication Code
83
auffassen, je nachdem, ob eine Verschlüsselung stattgefunden hat oder nicht. Um Verwirrung zu vermeiden, sprechen wir in diesem Kapitel bei N nicht von einem Klartext, sondern von einem Datensatz. Bemerkung Nicht nur das System wird MAC genannt, auch der Wert S = α(N , k) wird oft als MAC bezeichnet. 5.1.2 Ein Beispiel und Varianten Der vom NIST standardisierte CMAC ist von der Bauart wie im folgenden Beispiel beschrieben. Beispiel Es sei ( An , An , K, f ) eine symmetrische Blockchiffre über dem Alphabet A der Blocklänge n wie etwa AES. Die Kommunikationspartner wählen einen gemeinsamen, geheimen Schlüssel k ∈ K. Auf einen Datensatz N ∈ A∗ , wobei A∗ die Halbgruppe der Strings über dem Alphabet A bezeichnet, beliebiger Länge wenden sie den CBC-Modus aus Abschnitt 3.4.2 mit Initialisierungsblock C0 an. Sie zerlegen also N in Wörter Ni ∈ An , i ∈ {1, . . . , r }, der Länge n, sodass gilt N = N1 N2 · · · Nr . Das letzte Wort muss evtl. durch Padding aufgefüllt werden. Dann wird rekursiv gerechnet:
Ci := f (Ni + Ci−1 , k) für i ∈ {1, . . . , r } . Die Abbildung α ist durch α(N , k) := Cr definiert. Soll der MAC eine Länge kleiner als n haben, wird einfach abgeschnitten. In der Praxis wird häufig C0 = 0 gewählt und das letzte Wort Nr des Datensatzes maskiert, d. h., es gibt einen weiteren geheimen Schlüssel (der oft aus k gewonnen wird), mit dem Nr vor der Anwendung von f verschlüsselt wird. Benutzt man AES als unterliegende Blockchiffre, so beträgt die maximale Länge eines MAC 128 Bit. Das scheint den Angaben aus Abschnitt 4.4.2 auf S. 78 zu widersprechen. Dort hatten wir festgehalten, dass ein Hashwert mindestens die Länge 160 haben sollte, um Kollisionsresistenz sicherzustellen. Im gegebenen Kontext können wir aber mit kleineren Werten auskommen, weil die Kommunikationspartner ja den Schlüssel wechseln können. In der Praxis legen die Kommunikationspartner fest, welche Anzahl von ungültigen Nachrichten sie tolerieren wollen, bis sie einen neuen Schlüssel austauschen. Der Erhalt einer ungültigen Nachricht wird dabei als Betrugsversuch ausgelegt. Bemerkung Das NIST hat neben CMAC noch zwei weitere Betriebsmodi zur Authentifikation standardisiert – CCM und GCM. Diese beiden Verfahren gewährleisten außer Authentifikation auch noch Geheimhaltung.
84
5 Symmetrische Authentifikation
5.2
Der Satz von Gilbert-MacWilliams-Sloane
Wie im obigen Beispiel gezeigt wurde, kann jedes Kryptosystem auch zur Authentifikation eingesetzt werden. Wir nennen ein Kryptosystem ( P, C, K, f ), das zu diesem Zweck eingesetzt wird, ein Authentifikationssystem. Bemerkung Bei einem Kryptosystem muss es schwierig sein, x aus f ( x, k) zu bestimmen. Bei einem Authentifikationssystem hingegen muss es schwierig sein, f ( x, k) zu bestimmen. Immer vorausgesetzt, dass man den Schlüssel k nicht kennt. Ist ( P, C, K, f ) ein Authentifikationssystem, so betrachten wir für einen Geheimtext c ∈ C die Menge K (c) aller Schlüssel, für die es einen Klartext x ∈ P gibt, sodass x mit k verschlüsselt gerade c ergibt: K (c) := {k ∈ K ; ∃ x ∈ P : f ( x, k) = c} . Ein Authentifikationssystem ( P, C, K, f ) heißt kartesisch, wenn für jedes c ∈ C gilt f −1 (c) = { x } × K (c) mit x ∈ P . Das bedeutet, dass es zu jedem c ∈ C genau ein x ∈ P gibt mit f ( x, k) = c für eine Auswahl von k ∈ K. Das definiert eine Abbildung: fˆ : C → P , c → x , wobei x das eben zu c erklärte, eindeutig bestimmte Element ist. Beispiel
Bei einem MAC gilt c = f ( x, k) = ( x, α( x, k)) , sodass jeder MAC kartesisch ist. Die Abbildung fˆ ist einfach die Projektion auf die erste Koordinate.
Es seien P := { a, b}, K := {1, . . . , 6} und C := {m1 , m2 , m3 }. Untenstehende Tabelle beschreibt f : P × K → C. Ist der benutzte Schlüssel k und soll x ∈ P gesendet werden, so muss in der Spalte k nach x gesucht werden. Die Zeilennummer m j ist die zu sendende Nachricht, f ( x, k) = m j . Die Tabelle 1 2 3 4 5 6 zeigt sofort, dass ein Authentifikationssysm1 a b a b - tem vorliegt, denn für jedes k ∈ K ist die m2 b a - - a b Abbildung f k := f ( . , k) : P → C injekm3 - - b a b a tiv. Dieses System ist nicht kartesisch. Vgl. dazu Aufgabe 5.1.
5.2 Der Satz von Gilbert-MacWilliams-Sloane
85
5.2.1 Möglichkeiten zum Betrug Gegeben ist ein Authentifikationssystem ( P, K, C, f ). Die Betrugswahrscheinlichkeit p ist die Wahrscheinlichkeit, mit der ein Angreifer eine als gültig anzuerkennende Nachricht einspielen kann. Wir unterscheiden zwei Typen von Betrugsversuchen, die einem Angreifer zur Verfügung stehen. •
Substitution: Eine Nachricht wird abgefangen und durch eine eigene ersetzt.
•
Impersonation: Eine eigene Nachricht wird eingespielt.
Natürlich gilt für die Betrugswahrscheinlichkeit p ≥ |K1 | , weil ein Angreifer versuchen kann, den Schlüssel zu erraten. Tatsächlich ist die Situation viel schlechter. Das ist der Inhalt des folgenden Satzes. Satz 5.1 (Gilbert, MacWilliams, Sloane) Es sei ( P, C, K, f ) ein (nicht notwendig kartesisches) Anthentifikationssystem mit gleichverteilter Schlüsselwahl. Für die Betrugswahrscheinlichkeit p gilt 1 . p≥ |K | Beweis. Bei der Impersonation hat der Angreifer mit der Nachricht c ∈ C Erfolg, wenn der benutzte Schlüssel in K (c) liegt. Für die Betrugswahrscheinlichkeit gilt demnach für jedes c ∈ C: |K (c)| p≥ . |K | Bei der Substitution sei c ∈ C die beobachtete gültige Nachricht. Daher muss der Schlüssel in K (c) liegen, und wir erhalten die Abschätzung p≥
1 . |K (c)|
Wir kombinieren die beiden Resultate zu p2 ≥
1 1 |K (c)| , · = |K | |K (c)| |K |
und der Satz ist bewiesen. Ein Authentifikationssystem ( P, K, C, f ) heißt perfekt, wenn die Betrugswahrscheinlichkeit p minimal ist, d. h. wenn p = 1/ |K |. Bevor wir Beispiele von perfekten Authentifikationssystemen angeben, ziehen wir aus dem Beweis des Satzes von Gilbert, MacWilliams und Sloane einige Folgerungen. Korollar 5.2 In einem perfekten, kartesischen Authentifikationssystem ( P, C, K, f ) gilt:
86
5 Symmetrische Authentifikation
(a) Für alle c ∈ C ist |K (c)| =
| K |.
(b) Für alle x ∈ P gilt | f ({ x } × K )| =
(c) Für c, c ∈ C mit c = c gilt K (c) ∩ K (c ) = Beweis. (a) Es sei c ∈ C. Wäre |K (c)| >
| K |.
0, 1,
falls fˆ(c) = fˆ(c ) falls fˆ(c) = fˆ(c ).
|K |, so folgte
1 |K (c)| = p, > |K | |K | und eine Impersonation mit c wäre mit größerer Wahrscheinlichkeit erfolgreich, als vorausgesetzt. Wäre |K (c)| < |K |, so folgte 1 1 = p, > |K (c)| |K | und eine Substitution bei beobachtetem c wäre mit größerer Wahrscheinlichkeit erfolgreich, als angenommen. Daher muss Gleichheit gelten. (b) Mit (a) gilt |K | = |K | für alle c ∈ C mit fˆ(c) = x , | f ({ x } × K )| = |K (c)| denn je |K (c)| Elemente von K werden auf ein c abgebildet. (c) Es seien x = fˆ(c) und x = fˆ(c ). Im Fall x = x erhält man wegen f −1 (c) ∩ f −1 (c ) = ∅ und weil das System kartesisch ist sofort die Behauptung. Es sei nun x = x . Der Fall m := |K (c) ∩ K (c )| > 1 würde einen Substitutionsangriff mit m 1 p≥ > |K (c)| |K | ermöglichen – ein Widerspruch zur Voraussetzung. Daher gilt m ≤ 1. Die Abbildung K (c) → C , k → f ( x , k) ist injektiv. Ansonsten gäbe es zwei k1 , k2 ∈ K (c) mit c := f ( x , k1 ) = f ( x , k2 ), und es würde k i ∈ K (c) ∩ K (c ) folgen, mit einem Widerspruch wie eben. Mit (b) folgt: f ({ x } × K (c)) = |K (c)| = |K | = f ({ x } × K ) , und somit f ({ x } × K (c)) = f ({ x } × K ). Das bedeutet K (c) ∩ K (c ) = ∅, also m = 1. Bemerkung Die Vereinfachungen der Beweise in diesem Abschnitt verdanken wir Herrn Bertram Poettering.
5.3 Beweisbar perfekte Systeme *
87
5.3 Beweisbar perfekte Systeme * Um Beispiele für perfekte Authentikationssysteme angeben zu können, holen wir etwas aus. Wir führen den Begriff der affinen Ebene eine, den wir auch in Kapitel 13 noch brauchen werden. 5.3.1 Definition affiner Ebenen Es sei A eine Menge, und G sei eine Menge von Teilmengen von A, d. h. G ⊆ Pot(A). Das Paar (A, G) heißt affine Ebene, falls | G | ≥ 2 für alle G ∈ G und die folgenden drei Bedingungen erfüllt sind: (A1) Zu je zwei Elementen a, b ∈ A mit a = b existiert genau ein G ∈ G mit a, b ∈ G; wir schreiben a, b für dieses G. (A2) (Parallelenaxiom) Zu G ∈ G und a ∈ A \ G existiert genau ein G ∈ G mit a ∈ G und G ∩ G = ∅. (A3) Es gibt drei Punkte a, b, c ∈ A mit c ∈ a, b. Die Menge A nennt man die Punktmenge und die Menge G die Geradenmenge der affinen Ebene (A, G). Wir benutzen für a ∈ G für ein G ∈ G geometrische Sprechweisen wie der Punkt a liegt auf der Geraden G oder die Gerade G geht durch den Punkt a usw. 5.3.2 Die affine Ebene AG(2, F ) Es sei F2 der (gewöhnliche) zweidimensionale F-Vektorraum über dem Körper F. Wir setzen A := F2 und G := a + F b ; a, b ∈ F2 , b = 0 . Dabei ist F b := {λ b ; λ ∈ F } der von b erzeugte Untervektorraum von F2 . Für F = R ist (A, G) schlicht die Anschauungsebene mit Punkten und Geraden in der üblichen Interpretation. Man beachte, dass auch in (A, G) die Geraden Nebenklassen von Untervektorräumen in F2 sind, wie man das von der Anschauungsebene kennt. Für F = R scheint es klar zu sein, dass (A, G) eine affine Ebene ist, wir zeigen dass dies für ein beliebiges F erfüllt ist – mit den bisherigen Bezeichnungen gilt: Lemma 5.3 Es ist (A, G) eine affine Ebene. Beweis. (A1) Es seien a, b ∈ A mit a = b gegeben. Dann ist G = a + F (b − a) ∈ G , und wegen 0, 1 ∈ F gilt a, b ∈ G. Es sei H = c + F d eine weitere Gerade, die a und b enthält, etwa a = c + λ d, b = c + μ d mit λ, μ ∈ F. Dann gilt zum einen b − a ∈ F d, also F (b − a) = F d, und zum anderen a + F d = c + F d. Wir fassen zusammen: H = a + F (b − a) = G = a, b.
88
5 Symmetrische Authentifikation
(A2) Es seien G = c + F b ∈ G und a ∈ A \ G. Wir setzen G := a + F b. Wegen a ∈ G sind die Nebenklassen G und G des Untervektorraums F b disjunkt, folglich gilt G ∩ G = ∅. Ist nun G eine weitere Gerade mit G ∩ G = ∅ durch a, so können wir G = a + F d mit einem d = 0 setzen. Die Gleichung a + λ d = c + μ b hat dann keine Lösung (λ, μ) ∈ F2 . Daher können die Vektoren b, d ∈ F2 nicht linear unabhängig sein. Es folgt F b = F d und damit G = G . (A3) Die drei Punkte a := (0, 0), b := (1, 0), c := (0, 1) erfüllen die gewünschte Bedingung. Es heißt AG(2, F ) := (A, G) die affine Ebene über F. Es ist AG(2, F ) die wichtigste Klasse von Beispielen für affinen Ebene. Wir geben ein weiteres interessantes Beispiel. Beispiel Es ist A = { a, b, c, d} mit G = {{ a, b} , { a, c} , { a, d} , {b, c} , {b, d} , {c, d}} eine affine Ebene, genannt das Minimalmodell einer affinen Ebene. Es ist die affine Ebene mit der geringsten Anzahl von Punkten. Nach Aufgabe 5.2 hat nämlich jede affine Ebene mindestens vier Punkte. Die Geraden sind die zweielementigen Teilmengen von A. 5.3.3
Netze
Es sei K eine Menge und G ⊆ Pot(K ) mit | G | ≥ 2 für alle G ∈ G . Das Paar (K, G) heißt Netz, wenn gilt: (A1)’ Zu a, b ∈ K, a = b, gibt es höchstens ein G ∈ G mit a, b ∈ G; im Fall der Existenz schreiben wir a, b für dieses G. (A2) (Parallelenaxiom) Zu G ∈ G und a ∈ K \ G existiert genau eine Gerade G ∈ G mit a ∈ G und G ∩ G = ∅. (A3)’ Es gibt mindestens drei Geraden, die paarweise Schnittpunkte besitzen. Weil aus (A3) leicht (A3)’ folgt, ist klar, dass jede affine Ebene ein Netz ist. Zwei Geraden G, H eines Netzes heißen parallel, wenn G = H oder G ∩ H = ∅. Für die zur Geraden G durch den Punkt a ∈ K eindeutig bestimmte Parallele schreiben wir { a G }. Es gilt also a ∈ { a G } G. Ein Netz (K, G) heißt endlich, falls |K | ∈ N. Lemma 5.4 Es sei (K, G) ein endliches Netz, dann gilt:
5.3 Beweisbar perfekte Systeme *
89
(a) ist eine Äquivalenzrelation. (b) Es existiert q mit | G | = q für alle G ∈ G . (c) Für alle G ∈ G sei [ G ] = { H ∈ G ; G H } die Parallelklasse von G, dann ist |[ G ]| = q. (d) |K | = q2 . (e) Zu a ∈ K ist r = |{ G ∈ G ; a ∈ G }| = |G / | ≤ q + 1 unabhängig von a. (f) Ist (K, G) eine affine Ebene, so gilt r = q + 1. Beweis. (a) Offenbar ist reflexiv und symmetrisch. Es seien G, H, L ∈ G , G H, H L und G ∩ L = ∅. Für a ∈ G ∩ L erhalten wir G = { a H } = L. Daher ist transitiv. (b) Es seien G, H ∈ G . Im Fall G = H gilt natürlich | G | = | H |. Wir werden also ab jetzt G = H annehmen. Dann gibt es a ∈ G und b ∈ H \ G, und für L = a, b gilt L ∦ G, H. Die Abbildung π : G → H , a → { a L} ∩ H ist bijektiv. In der Tat ist die Inverse durch b → {b L} ∩ G gegeben. Daher gilt | G | = | H | =: q, und alle Geraden haben dieselbe Anzahl von Elementen. (c) Es sei H ∈ G mit G ∦ H. Die Existenz ergibt sich aus (A3)’. Die Abbildung H → [ G ] , x → { x G } ist offenbar wohldefiniert und besitzt die Umkehrabbildung [ G ] → H , L → L ∩ H, denn jede Gerade aus [ G ] besitzt genau einen Schnittpunkt mit H. Daher sind die beiden Abbildungen bijektiv und mit (b) folgt die Behauptung. (d) Das Parallelenaxiom besagt, dass K=
H.
H ∈[ G ]
Wegen (a) ist diese Vereinigung disjunkt. Daher folgt mit (b), (c) wie behauptet:
|K | = | H | · |[ G ]| = q2 . (e) Wegen (A2) gilt r := |{ G ∈ G ; a ∈ G }| = |G / |, denn in jeder Äquivalenzklasse paralleler Geraden gibt es genau ein Element durch a. Daher ist diese Zahl auch unabhängig von a. Es seien nun a ∈ K, H ∈ G , a ∈ H. Für jede Gerade G durch a gilt G H oder G ∩ H = ∅. Daher gibt es wegen (A1)’ höchstens | H | + 1 = q + 1 solche Geraden. (f) Im Fall einer affinen Ebene kann man jeden Punkt von H tatsächlich mit a verbinden, somit gilt r = | H | + 1. Die Zahl q aus Teil (b) des Lemmas heißt die Ordnung des Netzes (K, G). Beispiel Es sei (A, G) = AG(2, F ) die affine Ebene über einem endlichen Körper F mit q = |F | Elementen. Die Ordnung der affinen Ebene (A, G) ist q. Da es nach Satz
90
5 Symmetrische Authentifikation
3.10 zu jeder Primzahlpotenz pn einen endlichen Körper mit pn Elementen gibt, existiert auch zu jeder Primzahlpotenz pn eine affine Ebene der Ordnung pn . Bemerkung Es gibt viele affine Ebenen, die nicht zu einem AG(2, F ) isomorph sind, aber alle zur Zeit bekannten affinen Ebenen haben eine Primzahlpotenz als Ordnung. Um ein Netz zu bekommen, das keine affine Ebene ist, kann man aus der Geradenmenge G einer affinen Ebene einige Klassen paralleler Geraden entfernen. Man erhält so eine Teilmenge G von G , und es ist dann (K, G ) ein Netz. Wegen des Fehlens von Geraden gilt die Eigenschaft (A1) nicht. 5.3.4
Netze liefern perfekte kartesische Systeme
Wir sind jetzt in der Lage, beweisbar sichere, perfekte Authentifikationssysteme anzugeben. In einem später zu präzisierenden Sinn sind affine Ebenen die besten. Lemma 5.5 Es sei (K, G) ein (endliches) Netz der Ordnung q. Dann ist S = (G / , G , K, f ) mit f : G / × K → G ; ([ A], k) → {k A} ein perfektes kartesisches Authentifikationssystem mit Betrugswahrscheinlichkeit p = 1q . Beweis. Offenbar ist S ein Kryptosystem. Es ist kartesisch, denn zu jeder Nachricht G ist der Datensatz [ G ] eindeutig festgelegt, es gilt fˆ( G ) = [ G ]. Wir nehmen an, dass der Schlüssel k benutzt wird, und bestimmen die Betrugswahrscheinlichkeit p. Dazu untersuchen wir die beiden Angriffsarten. Impersonation: Um x = [ G ] einzuschleusen, muss der Angreifer H ∈ [ G ] wählen. Da es genau ein H mit k ∈ H gibt, ist p=
1 1 = q |[ G ]|
nach Lemma 5.4 (c). Substitution: Es werde die gültige Nachricht G abgefangen. Dann gilt k ∈ G. Um [ G ] mit G ∈ [ G ] einzuschleusen, kann wieder H ∈ [ G ] gewählt werden oder k ∈ G jeweils mit Betrugswahrscheinlichkeit p = |G1 | = 1q . Man beachte, dass H ∈ [ G ] bzw. k ∈ G äquivalent sind, denn H ∩ G = k ⇔ H = {k G } . Sowohl bei der Impersonation als auch bei der Substitution gilt also p= Folglich ist das System S perfekt.
1 1 = . q |K |
5.3 Beweisbar perfekte Systeme *
91
Die aus Netzen bzw. affinen Ebenen abgeleiteten Authentifikationssystem haben nicht nur beweisbare Sicherheit, das Sicherheitsniveau ist einstellbar. Soll eine bestimmte Betrugswahrscheinlichkeit unterschritten werden, muss man nur den Körper groß genug wählen. Dabei sind affine Ebenen insofern optimal, als bei vorgegebener Größe der Schlüsselmenge K = q2 die Anzahl der Datensätze mit q + 1 maximal ist. Die aus einer affinen Ebene der Form AG(2, Z p ) abgeleiteten Authentifikationssysteme können auch effizient implementiert werden. 5.3.5 Perfekte kartesische Systeme liefern Netze Interessanterweise gilt auch die Umkehrung: Jedes perfekte kartesische Authentifikationssystem liefert ein Netz. Wir benutzen für solche Authentifikationssysteme die in der Definition auf Seite 84 eingeführten Bezeichnungen K (c) und fˆ. Lemma 5.6 Es sei ( P, C, K, f ) ein kartesisches Authentifikationssystem mit | P| ≥ 3. Setze G := {K (c) ; c ∈ C }. Dann ist (K, G) ein Netz der Ordnung q = |K |, und es gilt | P| ≤ q + 1. Im Fall | P| = q + 1 ist (K, G) eine affine Ebene. Beweis. Es seien c, c ∈ C, c = c . Lemma 5.2 (c) besagt |K (c) ∩ K (c )| ≤ 1. Das ist (A1)’. Für x = fˆ(c) und k ∈ K gilt G := K ( f ( x, k)) ∩ K (c) = ∅ oder G = K (c) (falls k ∈ K (c)), also gibt es eine Parallele zu K (c) durch k. Falls K (c ) eine weitere Parallele zu K (c) durch k ist, so gilt K (c) ∩ K (c ) = ∅, also fˆ(c ) = fˆ(c). Daraus folgt K (c ) = G und (A2) ist gezeigt. (A3)’. Damit ist gezeigt, dass Da jedes x ∈ P eine Parallelklasse definiert, gilt (K, G) ein Netz ist. Aus Lemma 5.4 (d) folgt q = |K |, und mit Lemma 5.4 (e) ergibt sich | P| ≤ q + 1. Es gelte nun | P| = q + 1. Es seien k, k ∈ K, k = k und G ∈ G eine Gerade durch k . Wir zeigen die Existenz von k, k . Falls k ∈ G, sind wir fertig. Andernfalls gibt es in jeder Parallelklasse eine Gerade Gi durch k. Diese können nach Lemma 5.4 (c) mit i = 0, . . . , q durchnummeriert werden. Ohne Einschränkung gilt G0 G und Gi ∩ G = k i . Wegen | G | = q gilt daher G = {k1 , . . . , k q }. Somit gibt es i0 mit k = k i0 , und Gi0 ist die Verbindungsgerade von k und k . Das zeigt (A1). Und wie schon erwähnt folgt (A3) aus (A3)’. Es soll nicht verschwiegen werden, dass diese Systeme auch gravierende Nachteile haben. So kann ein Schlüssel nur einmal verwendet werden. In der Tat: Es seien zu einem Schlüssel k ∈ K zwei Nachrichten G und H bekannt, die mit k authentifiziert wurden. In der geometrischen Deutung sind k ein Punkt und G, H Geraden mit k ∈ G, H. Wegen (A1)’ muss also k = G ∩ H gelten, und der Schlüssel kann von jedem bestimmt werden. Man beachte die Ähnlichkeit dieser Systeme zum One-Time-Pad: Für jeden neuen Datensatz muss ein neuer Schlüssel gewählt werden.
92
5 Symmetrische Authentifikation
Bemerkung In der Literatur werden Netze gelegentlich in einer ganz anderen Form als orthogonale Arrays beschrieben. Die Darstellungen sind aber äquivalent.
5.4
Ausblick: Mehrfach perfekte Systeme *
Eine entsprechende Theorie wurde für Authentikationssysteme entwickelt, bei denen der Angreifer mehrere Nachrichten beobachten kann, bevor er seine gefälschte einspielt. Positiv formuliert, können die Benutzer n ∈ N Datensätze mit demselben Schlüssel authentifizieren. Der Satz von Fåk [11] besagt, dass die Schlüsselmenge sehr groß sein muss. Satz 5.7 (Fåk) Es sei ( P, C, K, f ) ein Authentifikationssystem, bei dem man mindestens n Datensätze mit demselben Schlüssel verschlüsseln kann. Dann gilt für die Betrugswahrscheinlichkeit: 1 p ≥ | K | − n +1 . In dieser allgemeinen Form wurde der Satz in der Arbeit [23] von Rosenbaum bewiesen. 1 Gilt im Satz von Fåk p = |K |− n+1 , so spricht man von n-fach perfekten Authentifikationssystemen. Auch zu solchen Systemen gibt es Beispiele, die auf geometrischen Strukturen basieren. Aufgaben 5.1 Wir untersuchen das zweite Beispiel auf S. 84. (a) Bestimme die Betrugswahrscheinlichkeit p und vergleiche das Ergebnis mit der Schranke im Satz 5.1 von Gilbert, MacWilliams und Sloane. (b) Ist das System perfekt? (c) Bestimme K (m1 ) und f −1 (m1 ). (d) Ist das System kartesisch? 5.2 Zeigen Sie, dass jede affine Ebene mindestens vier Punkte besitzt. Zeigen Sie weiter, dass eine affine Ebene mit genau vier Punkten, das Minimalmodell (präziser: isomorph dazu) sein muss. Ist das Minimalmodell ein AG(2, F ) mit geeignetem Körper F ? 5.3 Es seien G, H ∈ G mit G ∦ H. Zeigen Sie, dass die Abbildung G × H → K, (u, v) → {u H } ∩ {v G } bijektiv ist. Folgern Sie erneut |K | = q2 . 5.4 Zeigen Sie, dass die Umkehrung von Lemma 5.4 (f) gilt, dass also im Fall r = q + 1 das Netz eine affine Ebene ist.
6 Exponentiationschiffren Das Pohlig-Hellman-Verfahren ist eine sogenannte Exponentiationschiffre. Ein Klartext N , aufgefasst als Element einer Gruppe G, wird verschlüsselt, indem eine Potenz von N gebildet wird: N → N e . Die Zahl e ist dabei der geheime Schlüssel des Senders. Der Geheimtext C = N e wird dann durch den Empfänger entschlüsselt, indem die Umkehrabbildung dieser Potenzfunktion f e : a → ae angewandt wird. Im Fall einer endlichen Gruppe ist dies wieder eine Potenzfunktion f d : a → ad . Der Exponent d ist dabei so zu wählen, dass C d = (N e )d = N gilt. Es ist d der geheime Schlüssel des Empfängers. Wir werden sehen, dass ein solches d unter geeigneten Voraussetzungen immer existiert und effizient bestimmt werden kann. Das Ver- und Entschlüsseln erfolgt beim Pohlig-Hellman-Verfahren durch Potenzbildung, daher der Begriff Exponentiationschiffre. Im Allgemeinen sind bei einer Exponentiationschiffre hohe Potenzen von Gruppenelementen zu bilden. Wir zeigen, wie diese Potenzbildung effizient mit der sogenannten schnellen Exponentiation durchgeführt werden kann. Die algebraische Grundlage des Pohlig-Hellman-Verfahrens wie auch aller weiteren Exponentiationschiffren, die wir in den folgenden Kapiteln vorstellen, bildet der Satz von Lagrange mit seinen wichtigen Folgerungen, die auch als Sätze von Euler und Fermat bekannt sind. Diese Sätze bilden das Fundament jeder Exponentiationschiffre und damit den algebraischen Schwerpunkt dieses Kapitels. Wir werden in einem ersten Abschnitt diese Sätze wie auch zahlreiche weitere Ergebnisse, die wir im Folgenden benötigen werden, herleiten.
6.1 Algebraische Grundlagen der Exponentiationschiffren Wir leiten in diesem Abschnitt viele wichtige Aussagen für (endliche, abelsche) Gruppen her, wobei einige Aussagen aus der Vorlesung zur linearen Algebra bekannt sind. Dieser Abschnitt ist grundlegend für alle modernen Verfahren der Kryptologie. Das neutrale Element einer Gruppe G bezeichnen wir im Allgemeinen mit 1. Die Mächtigkeit | G | nennen wir die Gruppenordnung. 6.1.1 Ordnungen von Gruppenelementen Für jedes Element a einer Gruppe ( G, ·) ist die Menge
a := { an ; n ∈ Z } ⊆ G eine Untergruppe von G – man nennt sie die von a erzeugte Untergruppe von G. Eine Gruppe G heißt zyklisch, wenn es ein a ∈ G mit a = G gibt.
94
6 Exponentiationschiffren
Dabei heißt eine nichtleere Teilmenge U von G bekanntlich Untergruppe, wenn für alle a, b ∈ U gilt ab−1 ∈ U. Beispiel
Die additiven Gruppen (Z, +) und (Z n , +) sind zyklisch, es gilt Z = 1 und Z n = 1. Beachte, dass hier 0 und 0 die neutralen Elemente sind. Die multiplikative Gruppe Z8× = {1, 3, 5, 7} ist nicht zyklisch, da a2 = 1 für jedes Element a ∈ Z8× gilt. Für jede Primzahl p ist die multiplikative Gruppe Z × p zyklisch (das wird in Satz 6.12 bewiesen). Diese Tatsache ist für viele Kryptosysteme grundlegend. Für jede ungerade Primzahl und jedes ν ∈ N ist Z × pν zyklisch (das wird in Satz 6.14 bewiesen).
Für jedes Element a einer Gruppe ( G, ·) wird die Mächtigkeit der von a erzeugten Untergruppe die Ordnung von a in G genannt, in Zeichen: o ( a) := | a| , wobei o ( a) := ∞ gesetzt wird, falls a unendlich ist. Das folgende Ergebnis ist aus der linearen Algebra bekannt. Man vgl. auch die Aufgabe 6.1. Lemma 6.1 Es sei a ein Element einer Gruppe G. (a)
Wenn a unendliche Ordnung hat, so folgt aus i = j stets ai = a j .
(b)
Wenn a endliche Ordnung n hat, d. h. o ( a) = n ∈ N, so ist n die kleinste natürliche Zahl mit an = 1, und es gilt für s, t ∈ Z:
(i)
a = {1, a, a2 , . . . , an−1 },
(ii) as = at ⇔ o ( a) | s − t, (iii) as = 1 ⇔ o ( a) | s. Wir werden diese Tatsachen im Folgenden häufig benutzen. Vor allem die Aussage in (iii) sollte man sich gut einprägen. Ist die Ordnung eines Gruppenelements a ∈ G endlich, so kann man die Ordnungen der Potenzen von a nach einer einfachen Formel bestimmen, es gilt nämlich: Lemma 6.2 Ist a ein Element der endlichen Ordnung n einer Gruppe G, so gilt für jedes k ∈ Z o ( ak ) =
n . ggT(n, k )
6.1 Algebraische Grundlagen der Exponentiationschiffren
95
Beweis. Wir setzen d := ggT(n, k) und t := o ( ak ) und zeigen t = nd . Es gilt: n
k
( ak ) d = ( an ) d = 1 , man beachte, dass dk und nd natürliche Zahlen sind. Wegen der Aussage (iii) in Lemma 6.1 (b) folgt hieraus t | nd . Zu d gibt es nach dem euklidischen Algorithmus, siehe Satz 4.10, Zahlen r, s ∈ Z mit d = r n + s k, d. h. 1 = r nd + s dk . Damit erhalten wir für t die Darstellung: t = tr
n k +ts . d d
Wenn wir zeigen können, dass nd ein Teiler des zweiten Summanden t s dk ist, so können wir aus obiger Darstellung von t folgern, dass nd die Zahl t teilt. Es gilt ak t = ( ak )t = 1. Mit der Aussage (iii) in Lemma 6.1 (b) folgt o ( a) = n | t k, also gilt nd | t dk , woraus die Behauptung folgt: nd | t. Beispiel × ist zyklisch, es gilt: Die multiplikative Gruppe Z18 × = 5 = {1, 5, 7, 11, 13, 17} . Z18
Wegen 0
1
2
3
4
5
5 = 1 , 5 = 5 , 5 = 7 , 5 = 17 , 5 = 13 , 5 = 11 × erhalten wir für die Ordnungen der Elemente von Z18 aus o (5) = 6:
6 6 6 = 1 , o (5) = = 6 , o (7) = = 3, ggT(6, 0) ggT(6, 1) ggT(6, 2) 6 6 6 = 6 , o (13) = = 3 , o (17) = = 2. o (11) = ggT(6, 5) ggT(6, 4) ggT(6, 3) o (1) =
× Insbesondere sind 5 und 11 die einzigen erzeugenden Elemente von Z18 .
Für unsere Zwecke ist eine unmittelbare Folgerung aus Lemma 6.2 für die erzeugenden Elemente einer zyklischen Gruppe wesentlich: Korollar 6.3 Ist G = a eine zyklische Gruppe der endlichen Ordnung n, so gilt: (a) Für k ∈ Z gilt G = ak ⇔ ggT(n, k) = 1. (b) Die Gruppe G besitzt genau ϕ(n) erzeugende Elemente – dabei bezeichnet ϕ die Euler’sche ϕ-Funktion (siehe Abschnitt 4.3.4).
96
6 Exponentiationschiffren
Beispiel × Ist Z × n zyklisch, so gibt es genau ϕ ( ϕ ( n )) erzeugende Elemente, z. B. hat Z 18 genau ϕ( ϕ(18)) = ϕ(6) = 2 erzeugende Elemente (vgl. obiges Beispiel). Und in der additiven Gruppe (Z p , +) für eine Primzahl p ist jedes von 0 verschiedene Element ein erzeugendes Element, da ϕ( p) = p − 1 gilt. Bemerkung Wir haben in diesem Kapitel Untergruppen einer Gruppe ( G, ·) betrachtet, die von einem Element a ∈ G erzeugt werden: a = { an ∈ G ; n ∈ Z }. Wir können allgemeiner auch Untergruppen betrachten, die von endlich vielen a1 , . . . , an ∈ G erzeugt werden. Wir beschränken uns auf den Fall, dass G kommutativ ist. Dann ist a1 , . . . , an := a1ν1 · · · aνnn ; ν1 , . . . , νn ∈ Z ebenso eine Untergruppe von G – die von a1 , . . . , an erzeugte Untergruppe von G. Man beachte, dass a1 , . . . , an die Menge aller Produkte aller Potenzen der Elemente a1 , . . . , an ∈ G ist.
6.1.2
Der Satz von Lagrange
Lemma 6.2 legt den Verdacht nahe, dass die Ordnungen von Gruppenelementen endlicher Gruppen Teiler der Gruppenordnung sind (vgl. auch das Beispiel auf Seite 95). Tatsächlich gilt dies allgemeiner für jede Untergruppe einer endlichen Gruppe. Das ist Inhalt des Satzes von Lagrange: Satz 6.4 (Lagrange) Ist U Untergruppe einer endlichen Gruppe G, so ist |U | ein Teiler von | G |, kurz
|U | | | G | ; insbesondere gilt o ( a) | | G | für jedes a ∈ G. Beweis. Wir begründen vorab, dass { a U ; a ∈ G } eine Partition der (endlichen) Menge G ist: Für jedes a ∈ G ist a U = ∅, und wegen 1 ∈ U gilt G = a∈G a U. Es sei a u = b v mit u, v ∈ U ein Element aus dem Durchschnitt a U ∩ b U zweier Elemente a U und b U aus { a U ; a ∈ G }. Dann liegen die Elemente b−1 a und a−1 b in U, folglich gilt a U ⊆ b U und b U ⊆ a U, d. h. a U = b U. Es ist { a U ; a ∈ G } eine Partition der endlichen Menge G. Somit ist G disjunkte Vereinigung endlich vieler Nebenklassen: G = a1 U ∪ · · · ∪ ar U . Da für jedes i ∈ {1, . . . , r } gilt | ai U | = |U | – es ist nämlich ι : U → ai U, u → ai u eine Bijektion –, folgt | G | = r |U |.
6.1 Algebraische Grundlagen der Exponentiationschiffren
97
Beispiel Die Gruppe (Z16 , +) kann wegen |Z16 | = 16 höchstens Untergruppen der Ordnungen 1, 2, 4, 8 und 16 haben. Wir listen alle Untergruppen von Z16 auf, es gibt zu jeder möglichen Ordnung genau eine Untergruppe:
0 = {0}, 8 = {0, 8}, 4 = {0, 4, 8, 12}, 2 = {0, 2, 4, 6, 8, 10, 12, 14}, 1 = Z16 .
6.1.3 Untergruppen zyklischer Gruppen Das letzte Beispiel zeigt, dass sämtliche Untergruppen der zyklischen Gruppe (Z16 , +) zyklisch sind. Das ist kein Zufall. Lemma 6.5 Es sei G = a eine zyklische Gruppe. Dann ist auch jede Untergruppe U von G zyklisch. Und zwar gilt U = {1} oder U = at , wobei t die kleinste natürliche Zahl mit der Eigenschaft at ∈ U ist. Beweis. Es sei U eine Untergruppe von G = { ak ; k ∈ Z }, U = {1}, und t sei die kleinste natürliche Zahl mit at ∈ U. Ein solches t existiert auch in der Tat: Ist nämlich ak ∈ U für ein k ∈ Z, so ist auch a−k ∈ U. Es gilt at ⊆ U. Und aus ak ∈ U mit k = q t + r ∈ Z und 0 ≤ r < t (Division mit Rest) folgt andererseits ar = a k −q t = a k ( a t ) −q ∈ U , sodass r = 0 gilt wegen der Minimalität von t; d. h. ak = aq t = ( at )q ∈ at . Das beweist U ⊆ at und schließlich die Gleichheit U = at . Wir halten noch ein Ergebnis zu endlichen zyklischen Gruppen fest, das wir gelegentlich benutzen werden: Wir betrachten eine zyklische Gruppe G = a der n endlichen Ordnung n, d. h. | G | = o ( a) = n. Ist d ein Teiler von n, so ist a d eine Untergruppe von G, die nach Lemma 6.2 die Ordnung d hat. Lemma 6.6 Ist G = a eine zyklische Gruppe mit | G | = n, so existiert zu jedem Teiler d von n eine n Untergruppe U von G mit |U | = d, nämlich U = a d . Die Untergruppe U ist sogar eindeutig bestimmt, siehe Aufgabe 6.3.
98
6.1.4
6 Exponentiationschiffren
Faktorgruppen
Ist U eine Untergruppe einer abelschen Gruppe ( G, ·), so kann man auf der Menge G/U := { a U ; a ∈ G } der Nebenklassen a U eine neue Multiplikation erklären. Wir definieren für a U, b U ∈ G/U:
( a U ) · (b U ) := a b U . Diese Verknüpfung ist wohldefiniert, und es gilt: Lemma 6.7 Es ist ( G/U, ·) eine (abelsche) Gruppe mit neutralem Element U, die sogenannte Faktorgruppe modulo U. Ist G endlich, so gilt | G/U | = | G |/|U |. Beweis. Der erste Teil ist aus der linearen Algebra bekannt, der zweite Teil steht im Beweis zum Satz 6.4 von Lagrange. Einfache und wohlbekannte Beispiele liefern die Untergruppen n Z, n ∈ N, der additiven Gruppe Z. Es ist Z/nZ = Z n (siehe auch Seite 3). Beispiel × (vgl. das Beispiel auf Seite Ist U = 17 die zweielementige Untergruppe von Z18 95), so gilt wegen 13 ∈ 5 U und 11 ∈ 7 U: × Z18 /U = {U , 5 U , 7 U } = 5 U = 7 U . × × Man beachte: |Z18 /U | = |Z18 |/|U | = 6/2 = 3.
6.1.5
Der Satz von Cauchy
Es muss keineswegs zu jedem Teiler t der Gruppenordnung einer endlichen Gruppe G auch eine Untergruppe der Ordnung t existieren. Ist jedoch t eine Primzahl, so ist die Existenz gesichert. Satz 6.8 (Cauchy) Es sei G eine endliche abelsche Gruppe der Ordnung n. Zu jedem Primteiler p von n existiert ein Element a ∈ G mit o ( a) = p. Beweis. Wir setzen n = p m mit m ∈ N und beweisen die Behauptung per Induktion nach m. Für m = 1 folgt die Behauptung aus dem Satz 6.4 von Lagrange. Es sei nun m ∈ N. 1. Fall: Es existiert ein a ∈ G mit p | o ( a). Dann ist a Ordnung p.
o ( a) p
∈ G ein Element der
6.1 Algebraische Grundlagen der Exponentiationschiffren
99
2. Fall: Es existiert kein a ∈ G mit p | o ( a). Mit dem Satz von Lagrange folgt dann für jedes a ∈ G \ {1} wegen ggT( p, o ( a)) = 1:
| G/ a| = p
m < pm. o ( a) ∈N
Nach Induktionsvoraussetzung existiert ein b a ∈ G/ a mit o (b a) = p. Das Element b a ist das Bild von b ∈ G unter dem (kanonischen) Epimorphismus π : G → G/ a, g → g a. Wegen der Homomorphie von π gilt:
(π (b))o(b) = π bo(b) = π (1) = a . Da a das neutrale Element in G/ a ist, folgt mit (iii) in Lemma 6.1 (b) wegen o (π (b)) = p: p | o (b) , sodass dieser 2. Fall tatsächlich gar nicht eintreffen kann. Beispiel Wegen ϕ(8) = 4 gilt |Z8× | = 4. Es ist 2 der einzige Primteiler von |Z8× |, und es sind 3, 5, 7 Elemente der Ordnung 2. Obwohl 4 ein Teiler von |Z8× | ist, existiert kein Element in Z8× der Ordnung 4; 4 ist keine Primzahl. 6.1.6 Die Sätze von Euler und Fermat Wir ziehen aus dem Satz von Lagrange eine Reihe von wichtigen Schlüssen, die fundamental für die Kryptologie sind. Korollar 6.9 Ist G eine endliche Gruppe, so gilt für jedes a ∈ G: (a)
a|G| = 1 (Satz von Euler).
(b)
Für m ≡ 1 (mod | G |) gilt am = a.
Beweis. (a) Nach dem Satz von Lagrange ist die Ordnung von a ∈ G ein Teiler der Gruppenordnung | G |. Nach Lemma 6.1 (b) gilt ao(a) = 1, damit folgt die Behauptung aus (iii) in Lemma 6.1 (b). (b) Es sei n := | G |. Gilt m ≡ 1 (mod n), so existiert ein q ∈ Z mit m − 1 = n q. Es folgt a m = a1+ n q = a ( a n ) q = a denn an = 1, wie in Teil (a) gezeigt. Ein wichtiger Spezialfall der Aussage in (b) ist der (kleine) Satz von Fermat:
100
6 Exponentiationschiffren
Korollar 6.10 (Kleiner Satz von Fermat) Es sei p eine Primzahl. Für alle a ∈ Z gilt a p ≡ a (mod p). Beweis. Ist a = 0, so liegt a in der multiplikativen Gruppe Z × p der Ordnung p − 1. Die Behauptung folgt dann aus Korollar 6.9 (b) wegen p ≡ 1 (mod p − 1). Für a = 0 ist die Aussage unmittelbar klar.
Die Gruppen Z × p sind zyklisch
6.1.7
Die Gruppen Z × pν , p eine Primzahl und ν ∈ N, sind in der Kryptologie wichtig,
× besonderes im Fall ν = 1. Ist ν = 1, d. h. Z × pν = Z p , so handelt es sich um die multiplikative Gruppe des endlichen Körpers Z p . Wir zeigen nun, dass Z × p für jede Primzahl p eine zyklische Gruppe ist. Wir betrachten vorab eine beliebige endliche abelsche Gruppe G und nennen
ε( G ) := kgV {o ( a) ; a ∈ G } den Exponenten von G. Nach dem Satz 6.4 von Lagrange gilt ε( G ) | | G |. Wir können sogar zeigen: Lemma 6.11 In einer endlichen abelschen Gruppe G gibt es ein Element b mit o (b) = ε( G ). Beweis. Es sei ε( G ) = m1 · · · mr eine Zerlegung in teilerfremde Primzahlpotenzen m1 , . . . , mr . Da ε( G ) das kleinste gemeinsame Vielfache aller Elementordnungen ist, existiert zu jedem mi ein ai ∈ G mit o ( ai ) = mi k i für ein k i ∈ N. Nach k Lemma 6.2 gilt dann o ( ai i ) = mi . Wegen Aufgabe 6.2 gilt somit für das Element k
k
b = a11 · · · arkr ∈ G wegen der Teilerfremdheit der Ordnungen der Elemente ai i : o (b) =
r
∏ o ( a i i ) = m1 · · · mr . k
i =1
Für das Element b gilt daher o (b) = ε( G ). Mit diesem Lemma folgt, dass eine endliche abelsche Gruppe genau dann zyklisch ist, wenn ε( G ) = | G | erfüllt ist. Damit können wir nun den folgenden wichtigen Satz begründen: Satz 6.12 Jede endliche Untergruppe G der multiplikativen Gruppe K × eines Körpers K ist zyklisch. Insbesondere ist für jede Primzahl p die Gruppe Z × p zyklisch.
6.1 Algebraische Grundlagen der Exponentiationschiffren
101
Beweis. Wir wählen in G ein Element mit o (b) = ε( G ) und zeigen ε( G ) = | G |. Nach dem Satz von Euler (Korollar 6.9 (a)) gilt ε( G ) ≤ | G |. Jedes Element a ∈ G ist Nullstelle des Polynoms f = X ε(G) − 1 ∈ K [ X ]. Da dieses Polynom nach Satz 3.9 höchstens ε( G ) = deg f Nullstellen haben kann, gilt andererseits auch | G | ≤ ε( G ), d. h. | G | = ε( G ). 6.1.8 Die Gruppen Z × pν , p = 2, sind zyklisch ν Wir zeigen nun, dass Z × n für jede ungerade Primzahlpotenz n = p , p = 2, zyklisch ist. Den Beweis bereiten wir mit einer Hilfsaussage vor.
Lemma 6.13 Für jede ungerade Primzahlpotenz pν , ν ≥ 1, gilt:
(1 + p ) p
ν −1
≡ 1 (mod pν ) , (1 + p) p
ν −1
≡ 1 (mod pν+1 ) .
Beweis. Wir zeigen die Behauptung mit vollständiger Induktion nach ν. ν −1 = Die Behauptung stimmt für ν = 1 und sei richtig für ein ν ≥ 1, d. h. (1 + p) p 1 + k pν mit p k. Es folgt p ν p (1 + p ) p = (1 + k p ν ) p = ∑ (k pν ) j j j =0
= 1 + k p ν +1 +
p − 1 2 2ν+1 k p + · · · ≡ 1 + k pν+1 (mod pν+2 ) . 2
Die Aussage gilt also auch für ν + 1. Damit können wir nun zeigen: Satz 6.14 (Gauß) Für jede ungerade Primzahlpotenz pν ist die multiplikative Gruppe Z × pν eine zyklische
Gruppe der Ordnung ( p − 1) pν−1 .
Beweis. Wir kürzen a := a + pν Z ab. Wegen Satz 6.12 existiert ein a ∈ Z derart, o ( a) ≡ 1 (mod pν ) folgt ao ( a) ≡ dass a + p Z ∈ Z × p die Ordnung p − 1 hat. Aus a 1 (mod p), und damit gilt p − 1 | o ( a) nach (iii) in Lemma 6.1. Es gelte etwa o ( a) = r ( p − 1). Dann gilt o ( ar ) = p − 1. Damit ist ein Element der Ordnung × ν−1 an. p − 1 in Z × pν gefunden. Wir geben nun in Z pν ein Element der Ordnung p Wegen der Kongruenz in Lemma 6.13 gilt 1 + p p ν −2
p ν −1
= 1, wegen der Inkongruenz
= 1. Damit folgt o (1 + p) = pν−1 nach (iii) in Lemma in Lemma 6.13 gilt 1 + p ν − 6.1 (b). Wegen ggT( p − 1, p 1 ) = 1 ergibt sich mit Aufgabe 6.2 o ( a · 1 + p ) = ( p − 1 ) p ν −1 . ν ν−1 , also Z × = a · 1 + p . Daher ist Z × Nun ist |Z × p ν | = ϕ ( p ) = ( p − 1) p pν pν zyklisch.
102
6 Exponentiationschiffren
Wir haben begründet, dass die Gruppen Z × pν für jede Primzahl p = 2 und jede natürliche Zahl ν zyklisch sind. In jeder solchen Gruppe existiert damit ein a ∈ Z× pν mit ν ν −1 Z× . pν = a , es gilt o ( a ) = ϕ ( p ) = ( p − 1) p
Dies ist eine reine Existenzaussage, wie man konkret ein solches erzeugendes Element a zu einer Primzahlpotenz pν berechnet, ist dabei noch völlig offen. Das Problem ist, Erzeuger von Z × p zu finden, dann zeigt der Beweis, wie man Erzeu× ger von Z pν gewinnen kann. Es ist keine Formel bekannt, nach der ein erzeugendes Element a von Z × p bestimmt werden kann. Im Allgemeinen ist es sehr mühsam, ein passendes a zu ermitteln. Für unsere (eher theoretischen) Zwecke ist das Wissen über die Existenz eines solchen Elements aber meistens völlig ausreichend. × Ist Z × n zyklisch, so nennt man jedes Z n erzeugende Element a, d. h., es gilt a = × Z n , eine Primitivwurzel modulo n. Bemerkung Nach C. F. Gauß ist bekannt, für welche Zahlen n die Gruppe Z × n zyklisch sind: ist genau dann zyklisch, wenn n = 2 oder n = 4 oder n = pν oder Die Gruppe Z × n ν n = 2 p mit einer ungeraden Primzahl p und natürlichen Zahl ν (vgl. Korollar 13.12 in [14]).
6.2
Das Pohlig-Hellman-Verfahren *
In den Sätzen von Euler und Fermat steckt die Idee für ein Verschlüsselungsverfahren, bei dem das Verschlüsseln wie auch das Entschlüsseln durch Potenzbildung erfolgt.
6.2.1
Das Pohlig-Hellman-Verfahren in Z × p
Wir erläutern das Pohlig-Hellman-Verfahren in der multiplikativen Gruppe Z × p des endlichen Körpers Z p . Gegeben ist eine Primzahl p. Der zu verschlüsselnde Klartext N sei als ein Element von Z × p dargestellt. Das ist eine (zyklische) multiplikative Gruppe mit p − 1 Elementen (siehe Satz 6.12). Nun erzeugen wir die beiden Schlüssel e (zum Verschlüsseln) und d (zum Entschlüsseln): Für die Zahl e wählt man eine zu p − 1 teilerfremde natürliche Zahl. Nach Satz 4.20 existiert eine natürliche Zahl d mit e d ≡ 1 (mod p − 1) , die man mithilfe des euklidischen Algorithmus (siehe Satz 4.10) berechnen kann.
6.2 Das Pohlig-Hellman-Verfahren *
103
Nun dem Korollar 6.9 (b) zum Satz von Euler gilt (N e )d = N . Damit können wir den Klartext N durch Potenzbildung verschlüsseln. Der Geheimtext C entsteht aus dem Klartext N durch C = Ne. Wir erhalten den Klartext durch erneute Potenzbildung zurück, d. h., wir entschlüsseln: C d = (N e )d = N e d = N .
6.2.2 Das Kryptosystem Wir beschreiben nun das Verfahren etwas allgemeiner. Anstelle von Z × p kann eine beliebige endliche abelsche Gruppe G gewählt werden. Es sei G eine endliche abelsche Gruppe der Ordnung n. Die Pohlig-HellmanChiffre ist ein symmetrisches Kryptosystem mit •
Klartextmenge P = G;
•
Geheimtextmenge C = G;
•
Schlüsselmenge K = { a ∈ N ; ggT( a, n) = 1} mit n = | G |;
•
Verschlüsselungsfunktion f : P × K → C definiert durch f (N , e) = f e (N ) = N e für N ∈ P, e ∈ K;
•
Entschlüsselungsfunktion g : C × K → P definiert durch g(C , d) = gd (C) = C d für C ∈ C, wobei für den Schlüssel d ∈ K gilt d e ≡ 1 (mod n) .
Dabei wird d mit dem euklidischen Algorithmus zu e ∈ K gemäß Satz 4.20 bestimmt. Es gilt dann für jedes N ∈ G nach Korollar 6.9 (b): f d ( f e (N )) = f d (N e ) = N e d = N .
6.2.3 Zur Sicherheit des Pohlig-Hellman-Verfahrens Angenommen, einem Angreifer fällt ein Geheimtext C ∈ G in die Hände, wobei das Pohlig-Hellman-Verfahren zur Erzeugung des Geheimtextes C = N e verwendet wurde. Der Angreifer kennt zwar die Gruppe G und deren Ordnung | G |, aber allein mit diesen Informationen kann er nicht auf den Klartext N zurückschließen. Ist dem Angreifer nicht nur ein Geheimtext, sondern auch ein zugehöriger Klartext bekannt, die Rede ist also von einem Known-Plain-Text-Angriff, so
104
6 Exponentiationschiffren
ist das Finden des geheimen Schlüssels e zum Lösen des diskreten Logarithmenproblems äquivalent: Bestimme aus der Kenntnis von C und N eine Zahl e mit
C = Ne. Sind a und c Elemente einer Gruppe ( G, ·), so nennt man die kleinste nichtnegative Zahl e mit c = ae den diskreten Logarithmus (von c zur Basis a). Man schreibt dann e = Loga (c). Bemerkung Ist G = a zyklisch, so hat wegen G = { ak ; k ∈ Z } jedes Element von G einen diskreten Logarithmus zur Basis a; in nicht zyklischen Gruppen ist das nicht für alle Elemente der Fall. Da die Bildung von Potenzen in der Komplexitätsklasse P liegt (vgl. Abschnitt 6.3), ist das diskrete Logarithmusproblem in NP . Die naive Herangehensweise zur Lösung des diskreten Logarithmenproblems, also die sukzessive Bestimmung der Potenzen a1 , a2 , a3 , . . . und Vergleich von ai mit c in jedem Schritt, ist daher exponentiell in log e und bei großem e nicht effizient. Man kennt aber effizientere Methoden zur Bestimmung eines solchen diskreten Logarithmus e. Wir werden solche Methoden in Kapitel 10 ausführlich besprechen. Dennoch sind alle diese Methoden nicht polynomial. Wir halten fest: Mit allen bekannten, allgemeinen Methoden ist es schwierig, die Zahl e aus der Kenntnis von a und c zu bestimmen, wenn die Gruppenordnung | G | einen hinreichend großen Primteiler besitzt (siehe Kapitel 10). Wählt man beim Pohlig-Hellman-Verfahren in Gruppen der Form Z × p Primzahlen von der Größenordnung p ≥ 21024 , so ist man gegen die in Kapitel 10 zuammengestellten Angriffe gefeit. Dabei muss sichergestellt sein, dass p − 1 einen großen Primteiler besitzt. p −1 In der Praxis wählt man die Primzahl p oft so, dass 2 selbst eine Primzahl ist. Primzahlen mit dieser Eigenschaft nennt man auch sichere Primzahlen; kleine sichere Primzahlen sind 5, 7, 11, 23, 47. Große (sichere) Primzahlen zu findet ist schwierig, mehr dazu in Kapitel 8.
6.2.4
Zur Wahl der Gruppe
Für praktische Zwecke bieten sich zwei mögliche Typen von Gruppen an, in denen das Verfahren implementiert werden kann. •
Für eine Primzahl p wähle man die multiplikative Gruppe G = Z × p.
Die Ordnung dieser Gruppe ist p − 1. Weil Klartexte und Geheimtexte Gruppenelemente, also letztlich natürliche Zahlen kleiner p sind, kann die Primzahl p
6.2 Das Pohlig-Hellman-Verfahren *
105
nach Known-Plain-Text-Angriffen eventuell erraten werden. Daher sollte p nicht als Teil des geheimen Schlüssels aufgefasst werden. •
Für einen endlichen Körper wähle man als G eine elliptische Kurve – siehe Kapitel 13.
Die Ordnung dieser Gruppe lässt sich mit den bekannten Darstellungsformen nicht verheimlichen. Geheim zu halten sind also auch hier nur die Schlüssel e und d. Nicht zu empfehlen ist •
die additive Gruppe (Z n , +) der Ordnung n.
Bei einem Known-Plain-Text-Angriff ist dem Angreifer ein Paar (N , C) ∈ Z n × Z n mit C = e N bekannt. Durch Lösen der Kongruenzgleichung (siehe Korollar 4.19) a X ≡ c mod n , wobei a = N und c = C kann der Schlüssel e und hieraus dann d bestimmt werden. Das äquivalente Problem in Z × p ist deutlich schwieriger zu lösen. Bemerkung Tatsächlich liegt es nur am euklidischen Algorithmus, der zur Lösung von Kongruenzgleichungen benutzt wird, weshalb das diskrete Logarithmenproblem in der additiven Gruppe (Z n , +) nicht schwierig ist. Für diese spezielle Gruppe existiert ein effizienter Algorithmus. Bemerkenswert ist die Tatsache, dass es von der Beschreibung der Gruppe und nicht von der algebraischen Struktur abhängt, ob ein spezieller Algorithmus greift. So sind die Gruppen Z × p und Z p−1 isomorph, aber der euklidische Algorithmus kann nur in Z p−1 zur Lösung des diskreten Logarithmenproblems genutzt werden.
6.2.5 Zusammenfassung und ein Beispiel Der Sender P will an den Empfänger H eine verschlüsselte Nachricht C = N e senden, die H entschlüsselt. C=N e
P Schlüsselerzeugung.
P und H einigen sich auf eine Primzahl p.
"
H
106
6 Exponentiationschiffren
P wählt eine Zahl e ∈ {2, . . . , p − 2} mit ggT(e, p − 1) = 1. Es ist e der gemeinsame, geheime Schlüssel von P und H. H bestimmt d ∈ {2, . . . , p − 2} mit e d ≡ 1 (mod p − 1) mit dem euklidischen Algorithmus. Chiffrierung und Dechiffrierung einer Nachricht. Der Sender P verschlüsselt seine Nachricht mit dem geheimen Schlüssel e und sendet diese an den Empfänger H; H entschlüsselt die Nachricht mithilfe der Zahl d:
P stellt seine Nachricht als Element N ∈ Z × p dar. P bildet die Potenz C := N e mit dem geheimen Schlüssel e. P sendet den Geheimtext C an H. H erhält C , berechnet die Potenz C d = N e d = N in Z × p und erhält so den Klartext N . Beispiel Gegeben ist die Primzahl p = 257. Wegen ggT(29, 256) = 1 können wir e = 29 wählen. Wir bestimmen d mit dem euklidischen Algorithmus: 256 = 8 · 29 + 24
1 = 5−4
29 = 1 · 24 + 5
= 5 · 5 − 24 = −6 · 24 + 5 · 29
24 = 4 · 5 + 4 5 = 1·4+1.
= 53 · 29 − 6 · 256 .
Damit ist d = 53. Die Schlüsselerzeugung ist hiermit abgeschlossen. P hat den geheimen Schlüssel × e = 29 zum Verschlüsseln eines Klartextes N ∈ Z257 und H hat die (geheime) Zahl d = 53 zum Entschlüsseln eines erhaltenen Geheimtextes. Der Sender P verschlüsselt etwa den Klartext N = 3: 29
C=3
= 69 .
Der Empfänger H entschlüsselt den erhaltenen Geheimtext C = 69:
C d = 69
53
= 3.
Bereits dieses einfache Beispiel mit der kleinen Primzahl p = 257 verdeutlicht ein Problem des Verfahrens – die rechenaufwändige Exponentiation. Im folgenden Abschnitt zeigen wir, wie diese Aufgabe effizient gelöst werden kann. Bemerkung Das RSA-Verschlüsselungsverfahren, das wir in Kapitel 7 ausführlich beschreiben werden, ist eine Chiffre vom hier beschriebenen Exponentiationstyp. Dabei
6.3 Schnelle Exponentiation
107
kann die Gruppenordnung | G | der zugrunde liegenden Gruppe G geheim gehalten werden. Man kann dann den Schlüssel e zum Verschlüsseln einer Nachricht sogar öffentlich machen, ohne den (geheimen) Schlüssel d zum Entschlüsseln preiszugeben. Damit ist eines der großen Probleme beim Pohlig-HellmanVerfahren und allen anderen symmetrischen Verfahren ausgeräumt: der Schlüsselaustausch.
6.3 Schnelle Exponentiation Beim Verfahren von Pohlig-Hellman (und bei vielen anderen kryptografischen Verfahren) muss man Potenzen in einer Gruppe G berechnen. Die Aufgabe lautet: Für a ∈ G und n ∈ N bestimme an . Der naheliegendste Ansatz der sukzessiven Multiplikation basiert auf der üblichen Rekursion für Potenzen: a n = a a n −1 . Dieser Ansatz benötigt n − 1 Gruppenoperationen, um an zu berechnen. Diese Methode ist also exponentiell in der Anzahl log n der Bits von n. Die schnelle Exponentiation basiert auf folgender Rekursion für Potenzen: ⎧
2 ⎪ ⎨ a n2 , falls n gerade, n a = n −1 2 ⎪ ⎩ a 2 a , falls n ungerade. Ein dazu äquivalenter, iterativer Algorithmus benutzt die Binärdarstellung von n. In der englischsprachigen Literatur wird der Algorithmus aus naheliegenden Gründen oft als square and multiply bezeichnet. Der Algorithmus benötigt nur die Assoziativität der Verknüpfung. Da der Algorithmus häufig in der multiplikativen Halbgruppe von Ringen angewendet wird, formulieren wir ihn gleich für diesen allgemeinen Fall. Lemma 6.15 Es sei a ein Element einer Halbgruppe G, und eine Zahl n ∈ N sei in Binärdarstellung gegeben: n=
k
∑ b 2
=0
mit
k = log2 n , b ∈ {0, 1}.
Setze a0 := abk = a und ai := abk−i a2i−1 , 1 ≤ i ≤ k. Dann gilt: (i)
ak = an .
(ii)
Zur Berechnung von an braucht man höchstens 2 k Multiplikationen. Der Algorithmus ist also linear (bezogen auf die Verknüpfung in G).
108
6 Exponentiationschiffren
Beweis. Wir begründen mit Induktion
(∗) 0
i
ai = a∑=0 bk− 2
i −
für i = 0, . . . , k .
0−
Wegen a0 = a = a∑=0 bk 2 ist der Induktionsanfang klar. Die Behauptung gelte für i − 1. Wir erhalten dann: ai = abk−i a2i−1 = abk−i
i −1
a∑=0 bk− 2
i −1−
2
i
= a∑=0 bk− 2
i −
,
sodass die Gleichung (∗) gezeigt ist. Setzt man in der Gleichung (∗) i = k, so folgt sofort die Behauptung in (i). Die Behauptung in (ii) folgt ebenfalls, da bei der schrittweisen Berechnung von a1 , . . . , ak = an jeweils höchstens zwei Gruppenoperationen durchgeführt werden, eine Quadrierung und möglicherweise eine Multiplikation. Im Mittel braucht man sogar nur 1.5 log2 (n) Gruppenoperationen. Der Algorithmus ist also linear mit kleinen Konstanten. Beispiel 29 × Der Sender P berechnet mit der schnellen Exponentiation 3 in Z257 wegen e = 29 = 24 + 23 + 22 + 20 , also b4 = 1, b3 = 1, b2 = 1, b1 = 0, b0 = 1 vorteilhaft durch Quadrieren und Multiplizieren. Es ist a = 3: 1
a0 = ab4 = 3 = 3 , 1
2
a1 = ab3 · a20 = 3 · 3 = 27 , 1
2
a2 = ab2 · a21 = 3 · 27 = 131 , 0
a3 = ab1 · a22 = 3 · 131 = 199 , 1
2
a4 = ab0 · a23 = 3 · 199 = 69 . Es werden dabei 7 Gruppenoperationen durchgeführt, wir fassen diese zusammen: ⎛ ⎞2 2
2 2 29 1 1 1 0 1 3 =⎝ 3 ·3 ·3 ·3 ⎠ ·3 . 0
Man beachte, dass die Operation ·3 , dies entspricht einer Multiplikation mit 1, nicht ausgeführt wird.
6.3 Schnelle Exponentiation
109
Ein Angreifer kann durch Beobachtung des Stromverbrauchs (oder anderer physikalischer Größen) einer Maschine evtl. auf die Binärdarstellung der Zahl e 29 schließen. Das ist an der hervorgehobenen Formel für 3 gut zu erkennen. Liegt eine 0 vor braucht es eine Operation, liegt eine 1 vor, braucht es zwei. Einen solchen Angriff nennt man Seitenkanalangriff. Man sollte dies bei der Implementierung des Algorithmus beachten. Bemerkung
Ist a invertierbar, so kann man auch an für n ∈ Z, n < 0, bestimmen. Man rechnet ( a−1 )−n , benötigt also einen Algorithmus zur Bestimmung von Inversen. Dieser Algorithmus kann – wenn n nicht zu groß ist – teurer sein als die schnelle Exponentiation.
Man beachte, dass es bei einer Implementation vorteilhaft sein kann, eine Quadrierfunktion zu benutzen. Quadrieren ist oft effizienter möglich, als einfach ein Element mit sich selbst zu multiplizieren. Bei der Implementierung dieses Algorithmus sind eine Reihe von Varianten und Optimierungen möglich (siehe z. B. [7]).
Aufgaben 6.1
Begründen Sie Lemma 6.1.
6.2 Es seien a und b Elemente einer endlichen abelschen Gruppe G = ( G, ·) mit teilerfremden Ordnungen. Zeigen Sie o ( a b) = o ( a) o (b) . 6.3 Zeigen Sie, dass zu jedem Teiler d der Ordnung einer endlichen zyklischen Gruppe genau eine Untergruppe der Ordnung d existiert (vgl. Lemma 6.6). 6.4 In einer Implementierung des Pohlig-Hellman-Verfahrens sei die Primzahl p = 263 und e = 17 gegeben. (a) Bestimmen Sie d mit e d ≡ 1 (mod p). (b) Verschlüsseln Sie die Nachrichten a1 = 5 und a2 = 11. (c) Entschlüsseln Sie die erhaltenen Geheimtexte. (d) Versuchen Sie aus den Klartexten, den Geheimtexten und der Kenntnis von p, auf e zu schließen (sehr rechenaufwändig, benutzen Sie ein ComputeralgebraSystem). Das gelingt bei a1 eindeutig, nicht aber bei a2 – warum? (e) Warum ist die Wahl der Primzahl dieser Aufgabe besser als die Wahl im Text?
110
6 Exponentiationschiffren
6.5 In einer Variante des Pohlig-Hellman-Verfahrens könnte man die Gruppe G = (Z n , +) wählen. (a) Beschreiben Sie genau, wie Verschlüsselung und Entschlüsselung funktionieren. (b) Erläutern Sie, warum dieses Verfahren nicht sicher ist. Genauer: Zeigen Sie, wie man aus einem bekannten Klartext-Geheimtext-Paar den Schlüssel bestimmen kann. Unter welchen Umständen gelingt das eindeutig? 6.6 Implementieren Sie die naive und die schnelle Exponentiation und stellen Sie Laufzeitvergleiche an. Ab wann treten spürbare Effekte auf? 6.7 Entschlüsseln Sie mit der schnellen Exponentiation den Geheimtext 69 aus dem Beispiel auf Seite 106.
7 Das RSA-Verfahren Durch eine Modifikation des Pohlig-Hellman-Verfahrens gelangen wir zum RSAVerfahren, benannt nach R. L. Rivest, A. Shamir und L. Adleman. Dieses Verschlüsselungsverfahren wurde 1977 vorgestellt. Es ist ein asymmetrisches oder Public-Key-Verfahren (vgl. Abschnitt 4.4). Zum Verschlüsseln einer Nachricht ist kein vorheriger Schlüsselaustausch nötig, der Schlüssel zum Verschlüsseln eines Klartextes ist öffentlich zugänglich. Will der Sender S an den Empfänger R eine Nachricht N senden, so sucht S in einem öffentlichen Verzeichnis den öffentlichen Schlüssel e von R, wendet ihn auf seinen Klartext N an und sendet dann R den so erhaltenen Geheimtext C = e(N ). Der Empfänger R hat einen geheimen Schlüssel d. Mit ihm kann er aus dem Geheimtext C den Klartext N wiederherstellen: N = d(e(N )). Die Sicherheit des Verfahrens beruht darauf, dass aus dem Geheimtext C = e(N ) und dem öffentlichen Schlüssel e – der jedem zugänglich ist – in vertretbarer Zeit nicht auf den Klartext N und auch nicht auf den geheimen Schlüssel d geschlossen werden kann. Dieses geniale Prinzip hat einen wesentlichen Vorteil: Die Schlüsselverwaltung wird deutlich vereinfacht. Während bei einem symmetrischen Verfahren, d. h., es ist ein vorheriger Schlüsselaustausch zwischen je zwei Teilnehmern nötig, für n Teilnehmer n (n − 1)/2 geheime Schlüssel ausgetauscht werden müssen, ist bei einem Public-Key-Verfahren ein Verzeichnis aus nur n Schlüsseln nötig. Aber es gibt auch einen Nachteil: Der Rechenaufwand bei allen bekannten asymmetrischen Verfahren ist deutlich höher als der bei einem symmetrischen Verfahren. Für die Sicherheit des RSA-Verfahrens ist es wichtig, dass es im Allgemeinen sehr schwer ist, eine (beim Verfahren benutzte und öffentlich bekannte) große natürliche Zahl n in ihre Primfaktoren zu zerlegen. Wir gehen auf diese und weitere Fragen zur Sicherheit des RSA-Verfahrens ein und behandeln auch den WienerAngriff, mit dem das RSA-Verfahren in einigen Spezialfällen gebrochen werden kann, ohne die große natürliche Zahl n in ihre Primfaktoren zerlegen zu können. Dieser Angriff erfordert einen etwas aufwändigen Einblick in die Theorie der (endlichen) Kettenbrüche. Dieser Aufwand lohnt sich aber, weil wir beim Faktorisierungsproblem in Kapitel 11 diese Theorie erneut aufgreifen werden.
7.1 Das Verfahren von Rivest, Shamir und Adleman Das Prinzip ist einfach: In einem öffentlich zugänglichen Verzeichnis liegen die offenen Schlösser aller Teilnehmer. Sie wollen an R eine geheime Nachricht schi-
112
7 Das RSA-Verfahren
cken? Packen Sie Ihre Nachricht in eine Kiste, befestigen Sie das öffentlich zugängliche Schloss von R an Ihre Kiste und schicken Sie die Kiste an R. Nur R hat den Schlüssel, um das Schloss zu öffnen. 7.1.1
Das Kryptosystem
Das RSA-Verfahren ist wie das Pohlig-Hellman-Verfahren eine Exponentiationschiffre. Der Klartext N , aufgefasst als Element von Z n , n ∈ N, wird durch den Sender S verschlüsselt, indem mit dem öffentlichen Schlüssel e des Empfängers R eine Potenz von N gebildet wird: C=N e ∈Z n
!
S
(n,e)
R
Der Empfänger R hat d als geheimen Schlüssel so bestimmt, dass
C d = (N e )d = N erfüllt ist. Man beachte, dass beide Schlüssel, also e zum Verschlüsseln und d zum Entschlüsseln, vom Empfänger R stammen. Der Schlüssel e ist öffentlich zugänglich, sodass jeder eine Nachricht mit e verschlüsseln kann. Aber nur R kennt den geheimen Schlüssel d, und daher kann auch nur R den Geheimtext entschlüsseln. Nicht einmal der Sender selbst kann seine eigene Nachricht entschlüsseln. Wir werden genauer und erinnern an die Euler’sche ϕ-Funktion (siehe Seite 75). Für n ∈ N gilt ϕ ( n ) = |Z × n | = | { a ∈ N ; 1 ≤ a ≤ n , ggT( a, n ) = 1} | . Gegeben sind zwei verschiedene Primzahlen p und q. Wir setzen n = p q und betrachten die (multiplikative) Halbgruppe (Z n , ·) der Ordnung n. Das RSAVerfahren ist ein asymmetrisches Kryptosystem mit: •
Klartextmenge P = Z n .
•
Geheimtextmenge C = Z n .
•
Schlüsselmenge K = {e ∈ N ; ggT(e, ϕ(n)) = 1} (oft erwähnt man auch n in der Schlüsselmenge, d. h. K = {(n, e) ∈ N × N ; ggT(e, ϕ(n)) = 1}).
•
Verschlüsselungsfunktionen f e mit e ∈ K definiert durch f e (N ) = N e für N ∈ P.
•
Entschlüsselungsfunktionen f d mit d ∈ K definiert durch f d (C) = C d für C ∈ C, wobei e d ≡ 1 (mod ϕ(n)) .
7.1 Das Verfahren von Rivest, Shamir und Adleman
113
Dabei wird d mit dem euklidischen Algorithmus (siehe Satz 4.10) zu e ∈ K bestimmt. In Lemma 7.1 zeigen wir, dass das Verfahren funktioniert, d. h. dass das Entschlüsseln eines verschlüsselten Klartextes N wieder den Klartext N liefert: f d ( f e (N )) = f d (N e ) = N e d = N .
Bemerkung Die Zahlen n = p q und e sind öffentlich bekannt. Einem Angreifer darf die Zahl ϕ(n) = ( p − 1) (q − 1) (siehe das Beispiel auf Seite 75) nicht bekannt sein, er kann sonst ebenso wie der Empfänger mithilfe des euklidischen Algorithmus den geheimen Schlüssel d ermitteln. Wählt man für die Zahlen p und q große Primzahlen, so ist es im Allgemeinen schwierig, aus der Kenntnis von n = p q die Primfaktoren p und q und damit ϕ(n) = ( p − 1) (q − 1) zu ermitteln. In der Praxis werden die Primzahlen p und q von der Größenordnung 512 Bit gewählt. Bei der Wahl der Primzahlen p und q sind noch weitere Aspekte zu berücksichtigen, auf die wir in Abschnitt 7.4.1 eingehen werden. Man beachte, dass die Voraussetzungen des folgenden Lemmas genau die Situation im RSA-Kryptosystem wiedergeben: Lemma 7.1 Es seien p = q Primzahlen, n = p q, d, e ∈ N mit ggT(e, ϕ(n)) = 1, e d ≡ 1 (mod ϕ(n)) und a ∈ Z. Dann gilt aed ≡ a (mod n). Beweis. Wegen e d ≡ 1 (mod ϕ(n)) existiert ein r ∈ Z mit e d = 1 + r ϕ(n) = 1 + r ( p − 1) (q − 1). Nach dem Satz 6.10 von Fermat gelten die folgenden Kongruenzen: aed ≡ a1+r( p−1)(q−1) ≡ a ( a p−1 )r(q−1) ≡ a (mod p) , aed ≡ a1+r( p−1)(q−1) ≡ a ( aq−1 )r( p−1) ≡ a (mod q) . Die erste Kongruenz besagt p | aed − a, die zweite q | aed − a. Da p und q verschiedene Primzahlen sind, gilt somit auch p q | aed − a, d. h. aed ≡ a (mod n). Die Kongruenz aed ≡ a (mod n) bedeutet aber nichts anders als die Gleichheit aed = a in Z n . Damit folgt aus Lemma 7.1 die Korrektheit des RSA-Verfahrens: Der Empfänger R erhält den Geheimtext C = N e ∈ Z n und berechnet mit seinem geheimen Schlüssel d durch Potenzieren den Klartext:
C d = N ed = N ∈ Z n .
114
7.1.2
7 Das RSA-Verfahren
Die Schlüsselerzeugung
Beim RSA-Verfahren sind die beiden Zahlen n und e öffentlich bekannt. Wir fassen von nun an die beiden Zahlen zum öffentlichen Schlüssel (n, e) zusammen. Wir schildern die Schlüsselerzeugung, also die Erzeugung des öffentlichen Schlüssels (n, e) und des geheimen Schlüssels d durch den Empfänger R:
R wählt zwei Primzahlen p = q. R berechnet n := p q, ϕ(n) = ( p − 1) (q − 1) (siehe das Beispiel auf Seite 75). R wählt ein e ∈ N mit 1 < e < ϕ(n) und ggT(e, ϕ(n)) = 1. R berechnet d ∈ N mit e d ≡ 1 (mod ϕ(n)).
Es sind dann (n, e) der öffentliche Schlüssel von R und d der geheime Schlüssel von R. Es sind auch die Größen p, q, ϕ(n) geheim zu halten. Ist nämlich einem Angreifer eine dieser drei Größen bekannt, so kann er d berechnen. 7.1.3
Die Verschlüsselung
Die Erzeugung des Geheimtextes C aus dem Klartext N ist einfach: Der Sender S besorgt sich den öffentlichen Schlüssel (n, e) des Empfängers R und geht wie folgt vor:
S codiert seine Nachricht in den Klartext N ∈ Z n . S berechnet den Geheimtext C := N e ∈ Z n . S sendet den Geheimtext C an R. 7.1.4
Die Entschlüsselung
Die Entschlüsselung
C → Cd = N mit dem geheimen Schlüssel d klappt wegen Lemma 7.1. Beispiel Es seien p = 7 und q = 11. Dann gilt n = 77, ϕ(n) = 6 · 10 = 60. Die Wahl e = 13 erfüllt ggT(e, 60) = 1. Damit hat R den öffentlichen Schlüssel (n, e) = (77, 13). Mit dem euklidischen Algorithmus berechnet R seinen geheimen Schlüssel d: 1 ≡ 37 · 13 (mod 60) , sodass d = 37. Nun will S an R die Nachricht N = 7 ∈ Z77 senden. Dazu besorgt sich S den öffentlichen Schlüssel (n, e) = (77, 13) und verschlüsselt N = 7 zu 13
C = Ne = 7
= 35 .
7.1 Das Verfahren von Rivest, Shamir und Adleman
115
Der Geheimtext C = 35 ∈ Z77 wird an R gesandt. Dieser entschlüsselt den Geheimtext mit seinem geheimen Schlüssel d = 37:
C d = 35
37
=7
und erhält so den Klartext N = 7 ∈ Z77 zurück. Es ist bemerkenswert, dass das funktioniert, obwohl N = 7 in Z77 nicht invertierbar ist.
7.1.5 Hybridverfahren Der Rechenaufwand beim RSA-Verfahren ist im Allgemeinen um ein Vielfaches höher als der bei einem symmetrischen Verfahren. Wir werden weitere PublicKey-Verfahren kennenlernen, aber auch diese sind erheblich teurer als die symmetrischen Verfahren. Mithilfe eines einfachen Tricks kann durch ein Public-KeyVerfahren ein effizienteres symmetrisches Verfahren genutzt werden. Wir gehen von folgender Situation aus. S will an R eine Nachricht N senden. Der öffentliche Schlüssel von R sei (n, e).
S verschlüsselt einen Klartext N mit einem symmetrischen Verfahren zu einem Geheimtext C . Den Schlüssel k zum Entschlüsseln dieser Nachricht C verschlüsselt S (nach einer passenden Codierung) mit dem öffentlichen Schlüssel (n, e) des Empfängers R zu k . S sendet das Paar (C , k ) an den Empfänger R. R entschlüsselt k mit seinem geheimen Schlüssel des Public-Key-Verfahrens und erhält den Schlüssel k. R benutzt dann k, um aus C den Klartext N zu erhalten.
Solche Verfahren werden Hybridverfahren genannt, weil sie die Vorteile der symmetrischen mit den Vorteilen der asymmetrischen Kryptografie verbinden. Bemerkung Der im Allgemeinen höhere Rechenaufwand eines Public-Key-Verfahrens ist hier auf das Ver- und Entschlüsseln eines Schlüssels, also einer meist sehr kurzen Sequenz, beschränkt. Bei AES etwa, das häufig mit RSA gekoppelt wird, liegt die Schlüssellänge zwischen 128 und 256 Bit. Eine andere Methode, einen Schlüssel über einen unsicheren Kanal auszutauschen, um dann mit einem symmetrischen Verfahren kommunizieren zu können, ist der Diffie-Hellman-Schlüsselaustausch. Darauf gehen wir in Kapitel 9 ein.
116
7.1.6
7 Das RSA-Verfahren
Zur Sicherheit von RSA
Wir versetzen uns nun die Lage eines Angreifers A: C=N e
S
(n,e)
↑ A
!
R
Ein Angreifer A, dem ein Geheimtext C ∈ Z n des Senders S an den Empfänger R in die Hände gerät, erhält den Klartext N durch Lösen eines der folgenden Probleme: •
Bestimme den geheimen Schlüssel d, d. h. die Lösungsmenge der Kongruenzgleichung: e X ≡ 1 (mod ϕ(n)) . Dazu muss der Angreifer ϕ(n) kennen.
•
Bestimme die e-te Wurzel aus C in Z n , d. h. die Lösung N ∈ Z n der Gleichung Xe = C .
Die Lösung der Gleichung X e = C ist auch tatsächlich eindeutig bestimmt, da der Homomorphismus ι e : Z n → Z n , a → ae wegen Lemma 7.1 bijektiv ist, die Potenzabbildung ι d ist das Inverse zu ι e . Damit ist das Ziehen der e-ten Wurzel das Potenzieren mit d. Folglich sind die beiden geschilderten Probleme, vor denen der Angreifer steht, ein und dasselbe Problem. Beim RSA-Verfahren sind, wie bereits erwähnt, neben dem geheimen Schlüssel d auch die Größen p, q und ϕ(n) geheim zu halten, da ein Angreifer mit einer dieser drei Größen aus dem öffentlichen Schlüssel (n, e) den geheimen Schlüssel d ermitteln kann. Wir zeigen nun, dass man mit der Kenntnis von ϕ(n) die Primteiler p und q von n ermitteln kann. Es sind nämlich p und q die zwei Nullstellen eines Polynoms vom Grad 2 mit Koeffizienten, die von n und ϕ(n) abhängen, und die Nullstellen eines Polynoms vom Grad 2 sind einfach zu bestimmen. Lemma 7.2 Aus n und ϕ(n) können p und q als Nullstellen des Polynoms f = X 2 − ( n − ϕ ( n ) + 1) X + n bestimmt werden. Beweis. Sind n und ϕ(n) bekannt, so kann das Polynom f = X 2 − ( n − ϕ ( n ) + 1) X + n ∈ Z [ X ]
7.2 Der chinesische Restsatz
117
aufgestellt werden. Und wegen n − ϕ(n) = p q − ( p − 1) (q − 1) = p + q − 1 gilt:
( X − p ) ( X − q ) = X 2 − ( p + q ) X + p q = X 2 − ( n − ϕ ( n ) + 1) X + n . Damit sind die Nullstellen von f die Primzahlen p und q. Bemerkung Kann man n in seine Primfaktoren n = p q zerlegen, so kann man ϕ(n) = ( p − 1) (q − 1) berechnen. Und kann man umgekehrt ϕ(n) aus n berechnen, so kann man nach Lemma 7.2 die Zahl n in ihre Primfaktoren zerlegen. Die beiden Probleme, n zu faktorisieren und ϕ(n) zu bestimmen, sind also algorithmisch äquivalent.
7.2 Der chinesische Restsatz Um weitere Fragen zur Sicherheit des RSA-Verfahrens klären zu können, brauchen wir den sogenannten chinesischen Restsatz aus der Zahlentheorie. Dieser Satz liefert ein Verfahren, effizient Systeme von Kongruenzgleichungen zu lösen. Damit können durch RSA verschlüsselte Geheimtexte unter gewissen Voraussetzungen gebrochen werden. Wir leiten in einem ersten Abschnitt den chinesischen Restsatz her und ziehen dann wichtige Folgerungen für die Euler’sche ϕ-Funktion.
7.2.1 Der chinesische Restsatz Es ist klar, dass das kartesische Produkt R = R1 × · · · × Rn von Ringen R1 , . . . , Rn mit den komponentenweisen Verknüpfungen
( a1 , . . . , an ) + (b1 , . . . , bn ) = ( a1 + b1 , . . . , an + bn ) und ( a1 , . . . , an ) · (b1 , . . . , bn ) = ( a1 b1 , . . . , an bn ) für ( a1 , . . . , an ) , (b1 , . . . , bn ) ∈ R wieder einen Ring bildet. Wir beschäftigen uns mit der umgekehrten Aufgabenstellung. Man gebe in dem Ring ( R, +, ·) Unterringe U1 , . . . , Un an, sodass R ∼ = U1 × · · · × Un gilt. Wir führen eine solche Zerlegung in ein direktes Produkt für den Ring (Z m , +, ·), m ∈ N, durch. Lemma 7.3 Für paarweise teilerfremde r1 , . . . , rn ∈ Z ist Zr1 ···rn → Z r1 × · · · × Z r n ψ: k + r1 · · · rn Z → (k + r1 Z, . . . , k + rn Z ) ein Ringisomorphismus (d. h. bijektiv und ein additiver und multiplikativer Homomorphismus).
118
7 Das RSA-Verfahren
Beweis. Die Abbildung ψ ist wohldefiniert und injektiv, da für r := r1 · · · rn gilt: k + rZ = l + r Z ⇔ r | l − k ⇔ ri | l − k für alle i = 1, . . . , n
⇔ k + ri Z = l + ri Z für alle i = 1, . . . , n ⇔ ψ(k + r Z ) = ψ(l + r Z ) . Wegen n
n
i =1
i =1
|Z r | = r = ∏ r i = ∏ |Z r i | = | Z r1 × · · · × Z r n | ist ψ auch surjektiv. Nach Definition der Verknüpfungen ist ψ additiv und multiplikativ. Bemerkung Die Wohldefiniertheit ist die Umkehrung der Injektivität.
Wir machen uns klar, was die Surjektivität der Abbildung ψ in Lemma 7.3 besagt: Zu beliebigen a1 , . . . , an ∈ Z gibt es ein x ∈ Z mit x + r1 Z = a1 + r1 Z , . . . , x + r n Z = a n + r n Z oder anders geschrieben x ≡ a1 (mod r1 ) , . . . , x ≡ an (mod rn ) . Dies besagt, dass man ein System von Kongruenzgleichungen zu teilerfremden Moduln simultan lösen kann. Das war bereits Sun-Tsu im 1. Jahrhundert unserer Zeitrechnung bekannt. Satz 7.4 (Chinesischer Restsatz) Sind r1 , . . . , rn ∈ Z paarweise teilerfremd, so existiert zu beliebigen a1 , . . . , an ∈ Z ein x ∈ Z mit x ≡ ai (mod ri ) für alle i = 1, . . . , n . Man beachte, dass dies eine Existenzaussage ist. Es gibt ein solches x. Wir zeigen nun, wie wir die Menge aller solchen x explizit bestimmen können.
7.2.2
Lösen eines Systems von Kongruenzgleichungen
Für das konstruktive Lösen eines Systems von Kongruenzgleichungen der Form X ≡ a1 (mod r1 ) , . . . , X ≡ an (mod rn ) mit paarweise teilerfremden r1 , . . . , rn ∈ Z und beliebigen a1 , . . . , an ∈ Z beachte man die folgenden Schritte:
7.2 Der chinesische Restsatz
119
Setze m := r1 · · · rn und si :=
m ri
für i = 1, . . . , n.
Bestimme xi ∈ Z mit xi si ≡ 1 (mod ri ) für i = 1, . . . , n. Es ist dann
x = x1 s1 a1 + · · · + x n s n a n
eine Lösung des obigen Systems von Kongruenzengleichungen, und die Lösungsmenge ist x + m Z. Die Begründung ist einfach: Satz 4.20 garantiert, dass solche xi existieren, da ri und si für alle i = 1, . . . , n teilerfremd sind – man kann also x1 , . . . , xn mit dem euklidischen Algorithmus bestimmen. Weil für i = j das Element ri ein Teiler von s j ist, ist das angegebene x tatsächlich eine Lösung der n Kongruenzgleichungen. Für jedes i = 1, . . . , n gilt nämlich x=
n
∑ x j s j a j ≡ xi si ai ≡ ai (mod ri ) .
j =1
Ist y neben x eine weitere Lösung des Systems, so gilt x ≡ y ≡ ai (mod ri ) für alle i = 1, . . . , n ⇒ ri | x − y für alle i = 1, . . . , n
⇒ m | x − y , d. h. x ≡ y (mod m) , folglich gilt y ∈ x + m Z. Andererseits ist jedes Element aus x + m Z Lösung des Systems, sodass x + m Z die Lösungsmenge ist. Beispiel Gesucht ist die Lösungsmenge des Kongruenzensystems X ≡ 2 (mod 5) , X ≡ 3 (mod 7) , X ≡ 2 (mod 4) . Es ist also m = 140, s1 = 28, s2 = 20, s3 = 35. Wir bestimmen nun x1 , x2 , x3 ∈ Z mit 28 x1 ≡ 1 (mod 5) , 20 x2 ≡ 1 (mod 7) , 35 x3 ≡ 1 (mod 4) . Offenbar kann man x1 = 2, x2 = −1, x3 = −1 wählen. Wenn dies nicht so offensichtlich ist, wende man den euklidischen Algorithmus an. Damit haben wir die Lösung: x = 2 · 28 · 2 + (−1) · 20 · 3 + (−1) · 35 · 2 = −18 . Die Lösungsmenge lautet −18 + 140 Z.
Bemerkung Man erkennt, dass man nicht immer den kleinsten positiven Vertreter der Restklasse findet. Ist das gewünscht, muss man noch eine Division mit Rest durchführen: −18 + 140 Z = 122 + 140 Z.
120
7 Das RSA-Verfahren
7.2.3
Produktdarstellung der primen Restklassengruppen
Für die Abbildung ψ aus Lemma 7.3 und r := r1 · · · rn gilt ψ(k + r Z ) ∈ Zr×1 × · · · × Zr×n ⇔ ggT(k, ri ) = 1 für i = 1, . . . , n
⇔ ggT(k, r ) = 1 ⇔ k + r Z ∈ Zr× .
Somit ist die Einschränkung ψ|Zr× auf die (multiplikative) Gruppe Zr× der invertierbaren Elemente von Zr wegen Lemma 7.3 ein Gruppenisomorphismus von Zr× auf Zr×1 × · · · × Zr×n : Lemma 7.5 (a) Für paarweise teilerfremde r1 , . . . , rn und r := r1 · · · rn ist ψ|Zr× : k + r1 · · · rn Z → (k + r1 Z, . . . , k + rn Z ) ein (multiplikativer) Isomorphismus von Zr×1 ···rn auf Zr×1 × · · · × Zr×n . ν
(b) Ist m = p11 · · · pνnn die kanonische Primfaktorzerlegung von m > 1 aus N, so gilt × ∼ × Z× m = Z ν1 × · · · × Z pνn . p1
n
Nach dem Fundamentalsatz 4.14 der Arithmetik kann jedes m ∈ N ≥2 als Produkt von Primzahlpotenzen dargestellt werden: ν
m = p11 · · · pνnn . Wegen Lemma 4.16 folgt für die Euler’sche ϕ-Funktion (siehe Seite 75): n n n n 1 1 νi νi × × = m ∏ 1− ϕ(m) = |Z m | = ∏ |Z νi | = ∏ ϕ( pi ) = ∏ pi 1− . pi pi pi i =1 i =1 i =1 i =1 Wir fassen zusammen: Lemma 7.6 (a) Für paarweise teilerfremde s1 , . . . , sn ∈ N gilt ϕ ( s1 · · · s n ) = ϕ ( s1 ) · · · ϕ ( s n ) . (b) Sind p1 , . . . , pn die verschiedenen Primteiler von m > 1 aus N, so ist 1 1 ϕ(m) = m 1 − ··· 1− . p1 pn Beispiel Es gilt etwa ϕ(33) = ϕ(3) ϕ(11) = 20 , ϕ(420) = 420 ·
1 2 4 6 · · · = 96 . 2 3 5 7
7.2 Der chinesische Restsatz
121
7.2.4 Optimierung des Entschlüsselns mit dem chinesischen Restsatz Erhält der Empfänger R den Geheimtext c = C ∈ Z n , n = p q, so entschlüsselt dieser den Geheimtext mit seinem geheimen Schlüssel d zu dem Klartext N , indem er die Potenz C d = N in Z n bildet. Dabei bestimmt R die kleinste positive Zahl a ∈ N mit a = N : cd ≡ a (mod n) . Die Zahl n ist beim RSA-Verfahren üblicherweise mindestens 1024 Bit lang, daher ist diese Rechnung sehr aufwändig. Mithilfe des chinesischen Restsatzes können wir das Entschlüsseln effizienter gestalten:
Berechne die kleinsten positiven Zahlen a p , aq mit cd ≡ a p (mod p) und cd ≡ aq (mod q) .
Bestimme mit dem Lösungsverfahren für Systeme von Kongruenzgleichungen die kleinste positive Lösung x des Systems X ≡ a p (mod p) und X ≡ aq (mod q) .
Die Lösung x liefert den Klartext, d. h. x = N .
Denn: Aus x ≡ a p (mod p) und x ≡ aq (mod q) folgt x ≡ cd (mod p) und x ≡ cd (mod q) , und daher gilt p | x − cd und q | x − cd , wegen der Teilerfremdheit von p und q folgt n = p q | x − cd , d. h. x = cd = C d = N . Bemerkung Ist n eine k-Bit-Zahl, so haben p und q etwa k/2 Bit. Modulo n kostet das Entschlüsseln (c k) (C k2 ) = c C k3 , c , C ∈ R >0 , 1.5 ≤ c ≤ 2 , Grundoperationen. Nach den Lemmata 6.15 und 4.3 sind nämlich bei der schnellen Exponentiation c k Multiplikationen, die je C k2 Grundoperationen (C eine Konstante) benötigen, durchzuführen. Die Abschätzung für c ergibt sich aus der Bemerkung gleich im Anschluss an den Beweis von Lemma 6.15. Dechiffriert man nun wie geschildert mit dem chinesischen Restsatz, so sind zwei Potenzen modulo p und q zu bilden, die Kosten dafür sind 2 k3 k k = cC , 2 c C 2 2 4 Grundoperationen. Dabei haben wir das Anwenden des chinesischen Restsatzes vernachlässigt, weil er – wie der euklidische Algorithmus – O(k2 ) Laufzeit hat. Durch diese (grobe) Analyse erhalten wir, dass das Entschlüsseln einer Nachricht mit dem chinesischen Restsatz um etwa den Faktor 4 schneller ist.
122
7.3
7 Das RSA-Verfahren
RSA und das Faktorisierungsproblem *
Es seien in diesem Abschnitt stets n = p q mit verschiedenen Primzahlen p, q und Zahlen e, d so gewählt, dass ggT(e, ϕ(n)) = 1 und e d ≡ 1 (mod ϕ(n)) erfüllt sind. Kurz: Es seien n, p, q, e, d wie beim RSA-Verfahren gegeben. Ohne Einschränkung setzen wir e = 1 voraus; es wäre sonst d = 1 der geheime Schlüssel, und das wäre auch jedem Angreifer klar. Wir begründen, dass die beiden Probleme, nämlich •
die Zahl n in seine Primfaktoren p und q zu zerlegen und
•
die Bestimmung von d aus dem öffentlichen Schlüssel (n, e),
algorithmisch äquivalent sind (siehe Seite 64). Dazu werden wir jeweils einen polynomialen Algorithmus angeben, der das eine auf das andere Problem zurückführt. Das Faktorisierungsproblem wird seit vielen Jahrhunderten als ein schwieriges Problem angesehen, d. h., man vermutet, dass es nicht in der Komplexitätsklasse P liegt. Ist das der Fall, dann ist es auch schwierig, den geheimen Schlüssel d aus dem öffentlichen Schlüssel (n, e) zu bestimmen. Man erkennt, dass die Sicherheit von RSA eng mit der Schwierigkeit der Faktorisierung ganzer Zahlen verknüpft ist. 7.3.1
Kenntnis von p und q liefert d
Bekannt ist der öffentliche Schlüssel (n, e). Wenn man die Zahl n faktorisieren kann, d. h., wenn man die Primzahlen p und q mit n = p q bestimmen kann, so erhält man hieraus den geheimen Schlüssel d wie der legitime Anwender.
Bestimme zuerst ϕ(n) = ( p − 1) (q − 1). Löse die Kongruenz e X ≡ 1 (mod ϕ(n)). Die Lösung d mit 1 ≤ d ≤ ϕ(n) ist der geheime Schlüssel.
Im nächsten Abschnitt zeigen wir die Umkehrung: Kennt man den geheimen Schlüssel d, so erhält man aus dem öffentlichen Schlüssel (n, e) die Faktorisierung n = p q von n.
7.3.2
Kenntnis von d liefert p und q
Wir schicken dem wesentlichen Ergebnis einen Hilfssatz voran. Wir schreiben für Zahlen a, m ∈ Z mit ggT( a, m) = 1 im Folgenden o ( a)mod m für die Ordnung von a = a + m Z ∈ Z× m.
7.3 RSA und das Faktorisierungsproblem *
123
Lemma 7.7 Es sei v ∈ N so gewählt, dass k := ed2−v 1 ∈ N ungerade ist. Gilt für ein a ∈ Z mit ggT( a, n) = 1: o ( ak )mod p = o ( ak )mod q , t
so existiert ein t ∈ {0, 1, . . . , v − 1} mit 1 < ggT( a2 k − 1, n) < n. Insbesondere gilt t
t
p = ggT( a2 k − 1, n) oder q = ggT( a2 k − 1, n) . Beweis. Wegen e d ≡ 1 (mod ϕ(n)) existiert ein r ∈ Z mit e d − 1 = r ϕ(n). Also gilt nach dem Satz 6.9 von Euler: v
( a k )2 ≡ a2
vk
≡ aed−1 ≡ arϕ(n) ≡ ( a ϕ(n) )r ≡ 1 (mod n) .
v
Das heißt aber n | ( ak )2 − 1, wegen n = p q folgt v
v
( ak )2 ≡ 1 (mod p) und ( ak )2 ≡ 1 (mod q) . Damit sind die Ordnungen o ( ak )mod p und o ( ak )mod q Potenzen von 2 kleiner oder gleich 2v (beachte Lemma 6.1 (b)). 1. Fall. o ( ak )mod p < o ( ak )mod q ≤ 2v : Dann existiert ein t ∈ {0, 1, . . . , v − 1} mit o ( ak )mod p = 2t . Wir erhalten: t
t
t
t
t
a2 k ≡ ( ak )2 ≡ 1 (mod p) ⇒ p | a2 k − 1 , t
a2 k ≡ ( ak )2 ≡ 1 (mod q) ⇒ q a2 k − 1 . t
Folglich gilt ggT( a2 k − 1, n) = p. t 2. Fall. o ( ak )mod q < o ( ak )mod p ≤ 2v : Man erhält analog ggT( a2 k − 1, n) = q. Das Lemma zeigt, dass die Kenntnis von n, e und d eines RSA-Systems eine Faktorisierung von n erlaubt, falls man nur ein passendes a findet. Man gehe wie folgt vor:
Bestimme v ∈ N, sodass k =
ed−1 2v
ungerade ist.
Wähle ein a ∈ Z mit 1 < a < n. Ist ggT( a, n) > 1 – Stop!, sonst: t
Bestimme ggT( a2 k − 1, n) für t ∈ {0, 1, . . . , v − 1}. Falls diese ggT alle gleich 1 oder n sind, so wähle man ein neues a. Ansonsten ist eine Faktorisierung bestimmt. Wir begründen nun, dass die Wahrscheinlichkeit, ein passendes a zu finden, sehr groß ist:
124
7 Das RSA-Verfahren
Lemma 7.8 Es seien p, q = 2 verschiedene Primzahlen, und es sei v ∈ N so gewählt, dass k := ed−1 2v ∈ N ungerade ist. Dann gilt a ∈ Z ; 1 < a < n, ggT( a, n) = 1, o ( ak )mod
p
ϕ(n) . = o ( ak )mod q ≥ 2
Beweis. Es seien g p und gq ganze Zahlen mit der Eigenschaft, dass g p ∈ Z × p eine × Primitivwurzel modulo p und gq ∈ Z q eine solche modulo q sind, d. h., es gilt × g p = Z× p und gq = Z q (zur Existenz siehe Satz 6.12). Nach dem chinesischen Restsatz 7.4 hat das Kongruenzgleichungssystem X ≡ g p (mod p) , X ≡ gq (mod q) eine Lösung g ∈ Z. Es ist damit g + p Z eine Primitivwurzel modulo p und g + q Z eine Primitivwurzel modulo q. 1. Fall: o ( gk )mod p > o ( gk )mod q . Es seien α ∈ {1, . . . , p − 1} ungerade und β ∈ {0, . . . , q − 2}. Mit dem chinesischen Restsatz 7.4 erhalten wir zu (α, β) eine Lösung a ∈ {2, . . . , n − 1} des Kongruenzgleichungssystems
(∗)
X ≡ gα (mod p) , X ≡ g β (mod q) .
β × Wegen a = gα ∈ Z × p und a = g ∈ Z q sind a und n teilerfremd. Und wegen v ( gk )2 ≡ 1 (mod p) (beachte den Satz 6.9 von Euler) ist o ( gk )mod p eine Potenz von 2. Da 2 α, gilt mit Lemma 6.2:
o ( ak )mod
p
= o (( gk )α )mod p = o ( gk )mod p .
Damit erhalten wir (man beachte erneut Lemma 6.2): o ( ak )mod q = o (( gk ) β )mod q ≤ o ( gk )mod q < o ( gk )mod
p
= o ( ak )mod p .
Aufgrund der Tatsache, dass g eine Primitivwurzel modulo p und q liefert, erhalten wir für (α , β ) = (α, β) mit α ∈ {1, . . . , p − 1} ungerade und β ∈ {0, . . . , q − 2} auch ein anderes a als Lösung zu dem Kongruenzgleichungssystem in (∗). Weil es insgesamt ( p − 1) (q − 1)/2 = ϕ(n)/2 verschiedene solche Paare (α, β) gibt, gibt es auch ϕ(n)/2 verschiedene solche Zahlen a. 2. Fall: o ( gk )mod
p
< o ( gk )mod q . Dieser Fall geht analog zum ersten Fall.
3. Fall: o ( gk )mod p = o ( gk )mod q . Es seien α ∈ {1, . . . , p − 1}, β ∈ {1, . . . , q − 1} mit α ≡ β (mod 2), d. h., α und β seien nicht beide zugleich gerade oder ungerade, und a ∈ {2, . . . , n − 1} sei eine Lösung des Systems in (∗). Wie im 1. Fall folgt: Die Zahlen a und n sind teilerfremd und es existieren ( p − 1) (q − 1)/2 = ϕ(n)/2 verschiedene solche a. Falls 2 α gilt, so folgt 2 | β und damit (beachte Lemma 6.2): o ( ak )mod q = o (( gk ) β )mod q < o ( gk )mod q = o ( gk )mod
p
= o ( ak )mod p .
7.3 RSA und das Faktorisierungsproblem *
125
Falls 2 β gilt, so folgt 2 | α und damit analog zum obigen Fall: o ( ak )mod
p
= o (( gk )α )mod p < o ( gk )mod p = o ( ak )mod q .
In jedem Fall gilt also o ( ak )mod
p
= o ( ak )mod q .
Die Wahrscheinlichkeit dafür, dass man nach r Iterationen (bei zufälliger Wahl von a) einen Faktor von n gefunden hat, ist also größer als 1 − 21r . Nach 10 Iterationen hat man mit einer Wahrscheinlichkeit von mehr als 99.9 Prozent einen Faktor von n bestimmt. Tatsächlich erhält man mit dieser Methode nur sehr wahrscheinlich eine Faktorisierung der Zahl n. Aber die Wahrscheinlichkeit ist beliebig groß, man muss nur hinreichend oft iterieren. Einen Algorithmus, der mit beliebig hoher Wahrscheinlichkeit ein richtiges Ergebnis liefert, nennen wir probabilistisch. Bemerkung Ein probabilistischer Algorithmus kann auf zwei Weisen scheitern: •
Er findet kein Ergebnis oder
•
er liefert ein falsches Ergebnis
– beides mit kleiner Wahrscheinlichkeit.
Wir halten fest: Korollar 7.9 Aus n, e und d können p und q in polynomialer Zeit ermittelt werden. Wir haben begründet, dass die beiden Probleme, •
d aus (n, e) zu bestimmen und
•
n zu faktorisieren,
gleich schwer zu lösen sind. Weil das Problem, eine Zahl n zu faktorisieren, schon seit Jahrhunderten als ein schwieriges Problem in der Mathematik erachtet wird (evtl. nicht in der Komplexitätsklasse P liegt), haben wir hiermit gezeigt, dass das Berechnen des geheimen Schlüssels d aus dem öffentlichen Schlüssel (n, e) beim RSA-Verfahren ebenfalls als schwierig anzusehen ist. Es ist aber bisher nicht gelungen zu zeigen, dass das Brechen des RSA-Verfahrens äquivalent zum Faktorisieren von n ist – man kann ja eventuell ohne Kenntnis von d entschlüsseln. Aber es wird vermutet, dass dem nicht so ist. Bemerkung Man sagt genauer, dass die beiden Probleme probabilistisch algorithmisch äquivalent sind. Nach [17] gibt es einen deterministischen, d. h. nicht probabilistischen polynomialen Algorithmus, der aus der Kenntnis von d eine Faktorisierung von n errechnet. Daher sind die beiden Probleme algorithmisch äquivalent.
126
7.4
7 Das RSA-Verfahren
Wahl der Parameter p, q, e und d bei RSA
Bereits in der Originalarbeit [22] wiesen die Autoren auf mögliche Angriffe und wie sie abzuwenden seien hin. In der Folgezeit wurden viele weitere Vorschläge gemacht, das Verfahren zu brechen. Alle diese Vorschläge resultierten letztlich in Bedingungen an die Wahl der Parameter. Um vor den bis heute bekannten Angriffen geschützt zu sein, müssen nicht nur die Primzahlen p und q speziell gewählt werden, auch die Schlüssel e und d dürfen nicht beliebig sein. Sie müssen hinreichend groß sein. Andernfalls könnte der Low-Exponent-Angriff oder der Wiener-Angriff erfolgreich sein. 7.4.1
Wahl von p und q
Wir geben ein paar Richtlinien dafür, wie man beim RSA-Verfahren die Primzahlen p und q wählen sollte: •
Größenordnung p, q mindestens 512 Bit, bei besonderes hohen Sicherheitsanforderungen bis zu 1024 Bit;
•
p − 1 sollte einen großen Primteiler r haben und q − 1 einen großen Primteiler s;
•
p + 1 und q + 1 sollten große Primteiler haben;
•
Die Zahlen r − 1 bzw. s − 1 sollten ebenfalls große Primteiler haben.
Sind diese Bedingungen für die Primzahlen p und q nicht erfüllt, so könnten bekannte Faktorisierungsalgorithmen, auf die wir im Kapitel 11 eingehen, erfolgreich sein, d. h., es könnte sein, dass ein Angreifer aus der öffentlich bekannten Zahl n die Primteiler p und q ermitteln könnte. Nähere Informationen folgen im angekündigten Kapitel. Bemerkung Mit dem Primzahlsatz (siehe Seite 142) können wir abschätzen, wie viele Primzahlen mit 512 Bit es ungefähr gibt, nämlich 2512 2511 − ≈ 1.9 · 10151 . 512 ln(2 ) ln(2511 ) Zum Vergleich: Die Anzahl der Atome im Universum wird auf weniger als 1080 geschätzt. 7.4.2
Die Wahl von e
Die Zahl e sollte nicht zu klein gewählt werden, sonst kann der Low-ExponentAngriff Anwendung finden. Wie in der Praxis üblich, stellen wir einen Klartext
7.4 Wahl der Parameter p, q, e und d bei RSA
127
als natürliche Zahl N dar, die kleiner ist als jeder im System verwendete Modul n. Bei Bedarf identifizieren wir die Zahl N mit einer Restklasse. Wir gehen beispielhaft von der folgenden Situation aus: Drei Teilnehmer des RSA-Verfahrens haben die drei öffentlichen Schlüssel (n1 , 3), (n2 , 3), (n3 , 3), d. h., jeder der drei Teilnehmer benutzt das gleiche öffentliche e = 3, mit paarweise teilerfremden n1 , n2 , n3 . Wird nun ein und dieselbe Nachricht N bezüglich der drei öffentlichen Schlüssel (n1 , 3), (n2 , 3), (n3 , 3) zu den Geheimtexten C1 , C2 , C3 verschlüsselt, d. h. C1 = N 3 ∈ Z n1 , C2 = N 3 ∈ Z n2 , C3 = N 3 ∈ Z n3 , so kann ein Angreifer aus den Geheimtexten C1 , C2 , C3 mithilfe des chinesischen Restsatzes auf die Nachricht N schließen, ohne den Schlüssel d zu kennen. Lemma 7.10 Es seien paarweise teilerfremde natürlichen Zahlen n1 , . . . , ne , e ∈ N, gegeben. Für eine natürliche Zahl a gelte 0 ≤ a < n1 , . . . , ne . Es seien c1 , . . . , ce mit c1 ≡ ae (mod n1 ), . . . , ce ≡ ae (mod ne ) bestimmt. Dann gibt es genau ein c ∈ N mit 0 ≤ c < n1 · · · ne und c ≡ ci (mod ni ) für i = 1, . . . , e. Weiter gilt c = ae . Beweis. Nach dem chinesischen Restsatz 7.4 ist das Kongruenzensystem
(∗)
X ≡ c1 (mod n1 ), . . . , X ≡ ce (mod ne )
lösbar. Ist x eine Lösung des Systems, so ist nach Abschnitt 7.2.2 die Menge x + n1 · · · ne Z die Lösungsmenge. Daher gibt es genau eine Lösung c mit 0 ≤ c < n1 · · · ne . Da außerdem ci ≡ ae (mod ni ) für i = 1, . . . , e gilt, erhalten wir c ≡ ae (mod ni ) für i = 1, . . . , e. Somit sind c und ae beides Lösungen des Systems (∗) mit 0 ≤ c, ae < n1 · · · ne . Es folgt c = ae . Man beachte, dass genau die oben geschilderte Situation vorliegt. Ein Angreifer, dem die Geheimtexte c 1 = C1 = N e ∈ Z n1 , . . . , c e = C e = N e ∈ Z n e vorliegen, die ein und dieselbe Nachricht N darstellen und die mit jeweils dem gleichen Verschlüsselungsexponenten e erhalten wurden, kann mit dem chinesischen Restsatz die natürliche Zahl c = ae bestimmen, für die gilt a = N . Entscheidend ist, dass c eine e-te Potenz in N ist. Daher kann man die e-te Wurzel in polynomialer Zeit numerisch ziehen (vgl. auch Aufgabe 8.6). So erhält der Angreifer die Zahl a und damit den Klartext N . Bemerkung Bei diesem Angriff ist es wesentlich, dass e Teilnehmer denselben Verschlüsselungsexponenten e benutzen. Das ist umso leichter möglich, als e eine kleine Zahl ist, daher der Begriff Low-Exponent-Angriff. In der Frühzeit von RSA wurde e = 3 sogar als öffentlicher Exponent für alle vorgeschlagen.
128
7 Das RSA-Verfahren
Beispiel Ein Netzwerk bestehe aus drei Teilnehmern, die zur Verschlüsselung ihrer Kommunikation das RSA-Verfahren benutzen. Die öffentlichen Schlüssel der Teilnehmer seien (n1 , 3), (n2 , 3) bzw. (n3 , 3) mit n1 = 205 , n2 = 319 , n3 = 391 . Ein Klartext wird mit dem öffentlichen Schlüssel der drei Teilnehmer zu den Geheimtexten C1 , C2 , C3 verschlüsselt und an diese gesandt. Dabei gelangen einem Angreifer A die Geheimtexte
C1 = 102 , C2 = 193 , C3 = 121 in die Hände. Der Angreifer A berechnet hieraus mithilfe des chinesischen Restsatzes die eindeutig bestimmte Lösung des Kongruenzgleichungssystems X ≡ 102 (mod n1 ) , X ≡ 193 (mod n2 ) , X ≡ 121 (mod n3 ) und erhält c = 512. Durch Ziehen der dritten Wurzel aus c erhält A die Zahl a = 8. Das ist der Klartext. Bemerkung Häufig wird e = 216 + 1 gewählt. Diese Fermat’sche Primzahl ist ziemlich sicher zu ϕ(n) teilerfremd. Für die Berechnung von ae mit der schnellen Exponentiation (siehe Abschnitt 6.3) werden nur 17 Multiplikationen benötigt.
7.4.3
Die Wahl von d
Die Zahl d ist bestimmt durch die Wahl von e. Aber man sollte beachten, dass die Zahl d nicht zu klein ausfällt. Falls doch, so sollte ein anderes e gewählt werden. Bei kleinem d ist nämlich der sogenannte Wiener-Angriff ernst zu nehmen. Wir erläutern diesen nach der hierzu notwendigen Einführung in die Theorie der Kettenbrüche.
7.5
Kettenbrüche *
Der Wiener-Angriff auf RSA basiert auf der Theorie der Kettenbrüche. Kettenbrüche liefern eigentlich ein Verfahren, reelle Zahlen durch rationale Zahlen zu approximieren. Wir konzentrieren uns darauf, rationale Zahlen durch rationale zu approximieren, daher werden wir mit meist mit endlichen Kettenbrüchen auskommen.
7.5 Kettenbrüche *
129
7.5.1 Kettenbruchdarstellungen Für a0 , . . . , an ∈ R mit a1 , . . . , an > 0 setzen wir
[ a0 ; a1 , . . . , a n ] : = a0 +
1
∈ R.
1
a1 +
a2 +
1 ..
. + a1 n
Für a0 , . . . , an ∈ Z mit a1 , . . . , an > 0 nennen wir das (n + 1)-Tupel
a0 ; a1 , . . . , an := ([ a0 ], [ a0 ; a1 ], . . . , [ a0 ; a1 , . . . , an ]) einen endlichen Kettenbruch mit dem Wert x : = [ a0 ; a1 , . . . , a n ] ∈ Q . Für jedes k = 0, . . . , n nennen wir [ a0 ; a1 , . . . , ak ] ∈ Q den k-ten Näherungsbruch von a0 ; a1 , . . . , an . Beispiel Es gilt: 62 10 1 = 4+ = 4+ = 4+ 13 13 13/10
= 4+
1 1+
3 1+ 10
= 4+
1 1 1+ 10/3
= 4+
1 1+
1 3+
1 3
.
1 3+
1
1 2+
1 1
Also gilt 62 = [4; 1, 3, 3] = [4; 1, 3, 2, 1] , 13 und es sind [4] = 4, [4; 1] = 5, [4; 1, 3] = 4.75, [4; 1, 3, 3] = 4.769... die Näherungsbrüche. Allgemein gilt für jeden k-ten Näherungsbruch eines Kettenbruchs im Fall ak ≥ 2 stets [ a0 ; a1 , . . . , ak ] = [ a0 ; a1 , . . . , ak − 1, 1] . Diese Nichteindeutigkeit können wir vermeiden, indem wir uns auf eigentliche Kettenbrüche beschränken: Wir nennen einen Kettenbruch a0 ; a1 , . . . , an eigentlich, wenn n = 0 oder an ≥ 2 gilt. Wir zeigen nun, dass sich jede rationale Zahl eindeutig als eigentlicher Kettenbruch darstellen lässt.
130
7.5.2
7 Das RSA-Verfahren
Existenz und Eindeutigkeit von Näherungsbrüchen
Wir benötigen eine Hilfsaussage. Lemma 7.11 Es sei a0 ; a1 , . . . , an ein eigentlicher Kettenbruch mit dem Wert x ∈ Q. Dann gilt:
(i)
n ≥ 1 ⇒ x = a0 +
(ii)
a0 = x .
1 . [ a1 ; a2 ,..., an ]
Beweis. Die Aussage (i) ist klar. Im Fall n = 0 gilt a0 = x = x und somit (ii). Im Fall n ≥ 1 ist x = a0 + [a ; a 1,..., a ] , und [ a1 ; a2 , . . . , an ] > 1 wegen an ≥ 2, sodass n 1 2 a0 ≤ x < a0 + 1, also a0 = x ; folglich gilt (ii) auch in diesem Fall. Satz 7.12 Jede rationale Zahl besitzt genau eine Darstellung als eigentlicher Kettenbruch. Beweis. Für x = ba ∈ Q mit a ∈ Z und b ∈ N liefert der euklidische Algorithmus ganze Zahlen a0 , a1 , . . . , an und r1 , . . . , rn mit: ⎫ ⎧ a = a + r1 , 0 ≤ rb1 < 1 0 0 ≤ r1 < b ⎪ ⎪ a = a0 b + r1 , b b ⎪ ⎪ ⎪ r b 2 ⎪ ⎪ ⎪ 0 < rr2 < 1 b = a1 r1 + r2 , 0 < r2 < r1 ⎪ r1 = a 1 + r1 , ⎪ ⎪ 1 ⎪ ⎪ r r ⎪ ⎪ 0 < rr32 < 1 r1 = a2 r2 + r3 , 0 < r3 < r2 ⎬ ⎨ r12 = a2 + r32 , ⇔ .. .. .. .. .. .. ⎪ ⎪ ⎪ ⎪ . . . . . . ⎪ ⎪ ⎪ ⎪ r rn rn ⎪ n −2 ⎪ ⎪ rn−2 = an−1 rn−1 + rn , 0 < rn < rn−1⎪ = a + , 0 < n − 1 ⎪ ⎪ r n −1 r n −1 r n −1 < 1 ⎭ ⎪ ⎩ r n − 1 r n −1 = a n r n rn = a n Falls b | a, ist x = a0 . Es ist dann a0 mit a0 ∈ Z ein eigentlicher Kettenbruch mit dem Wert x. Falls b a, folgt offenbar a1 , . . . , an ∈ N; und es ist a0 ; a1 , . . . , an ein Kettenbruch mit Wert x. Wegen rn−1 > rn ist an ≥ 2. Folglich ist der Kettenbruch eigentlich. Wir begründen die Eindeutigkeit: Es gelte x = [ a0 ; a1 , . . . , an ] = [b0 ; b1 , . . . , bm ] mit a0 , b0 ∈ Z, ai , b j ∈ N für i, j ≥ 1 und an ≥ 2, bm ≥ 2, falls n, m ≥ 1. Ohne Einschränkung sei n ≤ m. Wir schließen mit vollständiger Induktion nach n. Im Fall n = 0 gilt x = a0 = a0 ∈ Z. Lemma 7.11 liefert b0 = x = a0 = x, und es gilt m = 0. Es sei n ≥ 1, und die Behauptung sei für n − 1 richtig. Es folgt erneut mit Lemma 7.11, dass a0 = x = b0 und daher
[ a1 ; a2 , . . . , an ] = [b1 ; b2 , . . . , bm ] . Mit der Induktionsvoraussetzung folgt n = m und ai = bi für i = 1, . . . , n.
7.5 Kettenbrüche *
131
Bemerkung Der zu ba ∈ Q (existierende und eindeutig bestimmte) eigentliche Kettenbruch a0 ; a1 , . . . , an kann also mithilfe des euklidischen Algorithmus effizient berechnet werden. Das wird für den Wiener-Angriff auf das RSA-Kryptosystem wichtig sein.
7.5.3 Ermittlung der Näherungsbrüche Wir geben nun ein Verfahren an, mit dem wir die Zähler und Nenner der Näherungsbrüche [ a0 ; a1 , . . . , ak ] aus der Kettenbruchdarstellung a0 ; a1 , . . . , an bestimmen können. Dazu benutzen wir die folgende Aussage: Lemma 7.13 Es seien a0 ∈ Z und a1 , . . . , an ∈ N gegeben, und pk bzw. qk seien rekursiv erklärt durch p0 : = a0 ; q0 : = 1 ;
p1 : = a1 a0 + 1 ; q1 : = a1 ;
pk := ak pk−1 + pk−2 für k ≥ 2 ; qk := ak qk−1 + qk−2 für k ≥ 2 .
Dann gilt für alle möglichen k = 0, 1, . . .: (a)
pk , qk ∈ Z, 1 = q0 ≤ q1 ; und qk < qk+1 , falls k ≥ 1; qk ≥ k.
(b)
pk+1 qk − qk+1 pk = (−1)k ,
(c)
pk+2 qk − qk+2 pk = (−1)k ak+2 ,
(d)
Für jedes k ≥ 2 gilt [ a0 ; a1 , . . . , ak ] =
(e)
[ a0 ; a1 , . . . , a k ] =
pk qk ,
a k p k −1 + p k −2 a k q k −1 + q k −2 .
und ggT( pk , qk ) = 1.
Beweis. (a) folgt direkt aus den Definitionen. (b) stimmt für k = 0: p1 q0 − q1 p0 = ( a1 a0 + 1) · 1 − a1 a0 = 1. Wenn die Aussage für k ∈ N0 richtig ist, folgt p k +2 q k +1 − q k +2 p k +1 = ( a k +2 p k +1 + p k ) q k +1 − ( a k +2 q k +1 + q k ) p k +1
= pk qk+1 − qk pk+1 = −(−1)k = (−1)k+1 . (c) Für jedes k ≥ 0 gilt p k +2 q k − q k +2 p k = ( a k +2 p k +1 + p k ) q k − ( a k +2 q k +1 + q k ) p k
= ak+2 ( pk+1 qk − qk+1 pk ) = (−1)k ak+2 . (d) Für k = 2 gilt
[ a0 ; a1 , a2 ] = a0 +
1 a1 +
1 a2
=
a2 a0 a1 + a0 + a2 a p + p0 = 2 1 . a2 a1 + 1 a2 q1 + q0
132
7 Das RSA-Verfahren
Die Behauptung sei richtig für ein k ≥ 2. Es folgt
[ a 0 ; a 1 , . . . , a k +1 ] = [ a 0 ; a 1 , . . . , a k +
1 a k +1
( ak +
]=
( ak +
1 a k +1 ) p k −1 1 a k +1 ) q k − 1
+ p k −2 + q k −2
a k +1 ( a k p k −1 + p k −2 ) + p k −1 a p + p k −1 = k +1 k . a k +1 ( a k q k −1 + q k −2 ) + q k −1 a k +1 q k + q k −1
=
Damit ist (d) bewiesen. (e) Für k = 0 bzw. k = 1 besagt die erste Behauptung:
[ a0 ] = a0 =
a0 p 1 a a +1 p = 0 bzw. [ a0 ; a1 ] = a0 + = 0 1 = 1. 1 q0 a1 a1 q1 a p
+p
p
Im Fall k ≥ 2 erhält man mit (d): [ a0 ; a1 , . . . , ak ] = ak qk−1 +q k−2 = q k . k k −1 k −2 k Nach der Aussage in (b) existieren zu pk und qk ganze Zahlen r, s mit r qk + s pk = 1 . Nach Lemma 4.8 (d) folgt hieraus ggT( pk , qk ) = 1. Die Berechnung der Näherungszähler pk und Näherungsnenner qk führt man zweckmäßigerweise in folgendem Schema durch: ak pk qk
a0 a0 1
a1 a1 a0 + 1 a1
a2 a2 p1 + p0 a2 q1 + q0
··· ··· ···
a3 a3 p2 + p1 a3 q2 + q1
Beispiel Wir berechnen die Näherungsbrüche von 2; 1, 2, 3, 1, 2, 1, 3, 4: ak pk qk
2 2 1
1 3 1
2 8 3
3 27 10
1 35 13
2 97 36
1 132 49
3 493 183
4 2104 781
Damit sind die Näherungsbrüche der Reihe nach 2 3 8 27 35 97 132 493 2104 , , , , , , , , . 1 1 3 10 13 36 49 183 781 Der Wert des eigentlichen Kettenbruchs 2; 1, 2, 3, 1, 2, 1, 3, 4 ist 2104 = 2.69398... . 781 Für die Näherungsbrüche gilt 2 2104 3 8 2104 27 35 2104 97 132 2104 493 , , . < < , < < < < < < 1 781 1 3 781 10 13 781 36 49 781 183 Diese Abschätzungen werden immer besser. Das ist kein Zufall, wir gehen diesem Phänomen im übernächsten Abschnitt nach.
7.5 Kettenbrüche *
133
7.5.4 Unendliche Kettenbrüche Auch irrationale Zahlen sind durch Kettenbrüche darstellbar. Wir entwickeln diese Theorie nur so weit, wie wir sie benötigen. Da jeder endliche Kettenbruch eine rationale Zahl darstellt, sind Kettenbrüche irrationaler Zahlen zwangsläufig unendlich. Bei einer rationalen Zahl x = ba fanden wir die Koeffizienten a0 , . . . , an der Kettenbruchentwicklung durch sukzessive Division mit Rest (siehe den Beweis zu Satz 7.12). Bei einer irrationalen Zahl x bestimmt man die Koeffizienten wie folgt. Man setzt x0 := x und a0 := x0 ∈ Z und rekursiv für i ≥ 0:
(∗)
x i +1 : =
1 xi − ai
und
a i +1 : = x i +1 ∈ N .
Für die so erhaltene Folge ( ai ) nennt man
a0 ; a1 , a2 , . . . den unendlichen Kettenbruch von x und den k-ten Näherungsbruch von x.
pk qk
:= [ a0 ; a1 , . . . , ak ] für jedes k ∈ N
Bemerkung Berechnet man die Zahlen a0 , a1 , a2 , . . . auf die geschilderte Art für eine rationale Zahl x, so gibt es einen Index n mit xn ∈ N, es ist dann a0 ; a1 , a2 , . . . , an ein (endlicher) Kettenbruch mit Wert x. pk Man kann zeigen, dass die Folge der Näherungsbrüche qk gegen x konvergiert.
Wir benötigen in Kapitel 11 nur das folgende Ergebnis zu unendlichen Kettenbrüchen. Lemma 7.14 Ist a0 ; a1 , a2 , . . . der unendliche Kettenbruch zur irrationalen Zahl x, so gilt für jedes k ∈ N0 : x = [ a 0 ; a 1 , . . . , a k , x k +1 ] , wobei die Zahlen xk+1 durch die Rekursion (∗) gegeben sind. Beweis. Für k = 0 gilt:
[ a0 ; x1 ] = a0 +
1 = a0 + ( x0 − a0 ) = x0 = x . x1
Ist die Behauptung für k − 1 ∈ N korrekt, so folgt x = [ a 0 ; a 1 , . . . , a k −1 , x k ] = [ a 0 ; a 1 , . . . , a k −1 , a k + Damit ist die Behauptung bewiesen.
1 x k +1
] = [ a0 ; a 1 , . . . , a k , x k +1 ] .
134
7.5.5
7 Das RSA-Verfahren
Abschätzungen
Aus Lemma 7.13 gewinnen wir wichtige Abschätzungen: Korollar 7.15 Es sei a0 ; a1 , . . . , an ein Kettenbruch mit dem Wert x, und wir definieren wie in Lemma p 7.13 die Zahlen pk , qk und setzen zudem rk := q k für k = 0, . . . , n. Dann gilt: k
(−1)k q k q k +1
(a)
r k +1 − r k =
(b)
| r k +1 − r k |
qk nach Lemma 7.13 (a) für jedes k ≥ 1. (c) Aus Lemma 7.13 (c) folgt r2k − r2(k−1) = (−1)2(k−1) und
r2l +1 − r2l −1 = (−1)2l −1
a2k q 2( k −1) q 2 k
> 0 , d. h. r2 (k−1) < r2k
a2l +1 < 0 , d. h. r2l +1 < r2l −1 . q2l −1 q2l +1 ( a) (−1)2l q2l q2l +1
Im Fall k ≤ l folgt r2k ≤ r2l < r2l +1 , weil r2l +1 − r2l = k > l analog r2k+1 − r2k > 0, und r2k+1 < r2l +1 . (d) folgt aus (c).
7.5.6
> 0; und im Fall
Charakterisierung von Näherungsbrüchen
Man kann Näherungsbrüche für rationale Zahlen charakterisieren. Dazu benötigen wir einen Hilfssatz. Lemma 7.16 Es seien x ∈ Q \ Z und p ∈ Z, q ∈ N gegeben; weiter sei x = [ a0 ; a1 , . . . , an ] mit p an ≥ 2 und n ≥ 2. Mit q k sei der k-te Näherungsbruch von x bezeichnet (vgl. Lemma k
7.13). Gilt q < qk+1 für ein k ∈ {0, . . . , n − 2} und
p q
=
|qk x − pk | < |q x − p| .
pk qk ,
so folgt
7.5 Kettenbrüche *
135
p k p k +1 q k q k +1 mer’schen Regel Zahlen a, b ∈ Z existieren mit Beweis. Nach Lemma 7.13 (b) gilt det
(∗)
= ±1, sodass wegen der Cra-
p k a + p k +1 b = p , q k a + q k +1 b = q .
Wegen q < qk+1 impliziert dies a = 0. Und es gilt b = 0, weil aus (∗) andernfalls p pk q = qk folgte. Im Fall a b > 0, d. h. a, b > 0 oder a, b < 0, entstünde wegen q < qk+1 ein Widerspruch zur zweiten Gleichung in (∗). Somit gilt a b < 0. Nach Korollar 7.15 (d) haben qk x − pk = 0 und qk+1 x − pk+1 = 0 verschiedene Vorzeichen, sodass a (qk x − pk ) = 0 und b (qk+1 x − pk+1 ) = 0 gleiches Vorzeichen haben. Mit (∗) folgt
|q x − p| = | a (qk x − pk ) + b (qk+1 x − pk+1 )| = | a | | q k x − p k | + | b | | q k +1 x − p k +1 | > | q k x − p k | . Das ist die Behauptung. Mit diesem Lemma können wir nun die folgende Charakterisierung von Näherungsbrüchen beweisen: Satz 7.17 Es sei x ∈ Q. Wir bezeichnen die (gekürzten) Näherungsbrüche von x mit (a)
(b)
pk qk . Dann gilt:
Von zwei aufeinanderfolgenden Näherungsbrüchen für x erfüllt mindestens einer die Abschätzung x − pk < 1 . qk 2 q2k p p Ist q ∈ Q vollständig gekürzt und gilt x − q < bruch von x.
1 , 2 q2
so ist
p q
ein Näherungs-
Beweis. (a) Aus x − pk ≥ 1 und x − pk+1 ≥ 1 2 qk q k +1 2 qk 2 q2k+1 p
p
folgt mit Korollar 7.15 (a), da q k − x und x − q k+1 nach Korollar 7.15 (d) gleiches k k +1 Vorzeichen haben, pk pk+1 pk pk+1 1 1 1 = −x + x− = − x + x − ≥ + 2 2 q k q k +1 qk q k +1 qk q k +1 2 qk 2 q k +1
136
7 Das RSA-Verfahren
2 und damit q1 − q 1 ≤ 0, d. h. qk = qk+1 , also gelten k = 0 (vgl. Lemma 7.13 k k +1 (a)) und Gleichheit anstelle von ≥ in obigen Ungleichungen: x=
p0 1 1 + 2 = a0 + = [ a0 ; 2] , q0 2 2 q0
p im Widerspruch zur Annahme x − q 1 ≥ 2 1q2 . 1 1 p 1 (b) Es gelte x − q < 2 q2 , und es sei x = a0 ; a1 , . . . , an ein eigentlicher Kettenbruch mit Wert x. Es bezeichnen pk und qk für k = 0, . . . , n die in Lemma 7.13 definierten Größen. 1. Fall: q ≥ qn . Hier folgt sodass x =
p1 q1
pn 1 p p 1 | pn q − p qn | = − = x − ≤ , q qn qn q q 2 q2 p
p
also pn q − p qn = 0, folglich q = qnn . 2. Fall: Es gibt ein k ∈ N0 mit qk ≤ q < qk+1 . p p Es sei q = q k angenommen. Mit Lemma 7.16 folgt k
|qk x − pk | < |q x − p|
1 . 13 1 4 2 · 12 13 1 2 · 12 13 2 · 42
7.6 Der Wiener-Angriff *
137
7.6 Der Wiener-Angriff * Der Wiener-Angriff auf RSA wurde 1990 von Michael Wiener [30] vorgestellt. Ist der geheime Schlüssel d beim RSA-Verfahren nur klein genug, so erhält man eventuell den geheimen Schlüssel d als Nenner eines der Näherungsbrüche von ne – hierbei sind e und n die Zahlen des öffentlichen Schlüssels (n, e) beim RSAVerfahren. Man kann den geheimen Schlüssel in diesem Fall also einfach ermitteln. Der Angriff basiert auf dem folgenden Satz: Satz 7.18 Es seien p, q Primzahlen mit q < p < 2 q, n := p q, 1 < d, e < ϕ(n), e d ≡ 1 (mod ϕ(n)), d < 13 n1/4 . Dann ist dr ein Näherungsbruch für ne , wobei −1 ∈ N. r := ed ϕ(n) Beweis. Wegen q < p gilt q2 < p q = n, also q
0 .
Der Primzahlsatz – von A. Legendre und C. F. Gauß vermutet, aber erst um 1896 von J. S. Hadamard und C. de La Vallée Poussin bewiesen – besagt: Der Primzahlsatz.
Für x ∈ R >0 gilt:
π (x) ∼
x , log x
d. h.
lim π ( x ) ·
x →∞
log x = 1. x
8.1 Probedivision
143
Der Beweis des Primzahlsatzes ist Thema der analytischen Zahlentheorie (man vgl. etwa [5]). Beim RSA-Verfahren benutzt man üblicherweise Primzahlen, die größer als 2512 sind. Nach dem Primzahlsatz existieren also etwa 2512/2 > 1074 log 2512/2 √ Primzahlen kleiner oder gleich 2512 . Daran erkennt man, dass Probedivision allein als Primzahltest für unsere Zwecke völlig unzureichend ist. Der Primzahlsatz zeigt aber auch, dass die zufällige Wahl einer ungeraden Zahl und ein Test auf Primalität eine Erfolg versprechende Strategie ist um Primzahlen zu finden. Es gilt nämlich für die gewählte Zahl n ∈ N: 1 π (n) , ≈ n log n d.h., die Dichte der Primzahlen um die Zahl n herum ist ungefähr
1 log n ,
sodass in
einem Intervall der Länge log n um n ungefähr eine Primzahl liegt. Gilt n ≈ 2512 , so sind also etwa log n ≈ 355 Zahlen zu überprüfen – eine relativ kleine Anzahl.
8.1.3 Sichere und Mersenne’sche Primzahlen Um sichere Primzahlen p ∈ P zu finden (vgl. Seite 104), modifiziert man die in der Einleitung beschriebene Strategie wie folgt: Man ermittelt zuerst eine Primzahl q und testet dann, ob p := 2 q + 1 eine (dann sichere) Primzahl ist. Im Allgemeinen ist es sehr schwierig, sichere Primzahlen zu bestimmen. Über sichere Primzahlen ist nur wenig bekannt, man weiß nicht einmal, ob es unendlich viele solche Primzahlen gibt. Die größten bekannten Primzahlen sind die sogenannten Mersenne’schen Primzahlen. Das sind Primzahlen der Form 2n − 1 mit n ∈ N. Damit die Zahl 2n − 1 eine Primzahl sein kann, muss auch der Exponent n eine Primzahl sein; andernfalls wäre für n = a b mit a, b ∈ N >1 die Zahl 2a − 1 ein echter Teiler von 2n − 1, da gilt: 2n − 1 = 2ab − 1 = (2a )b − 1 = (2a − 1) ((2a )b−1 + · · · + 2a + 1) . Man kennt bisher 47 Mersenne’sche Primzahlen, die größte ist 243.112.609 − 1 , sie hat 12 978 189 Dezimalstellen. Für den neuesten Stand vgl. man http://www.mersenne.org/. Auch von den Mersenne’schen Primzahlen ist nicht bekannt, ob es unendlich viele gibt. Um zu testen, ob eine Zahl der Form 2n − 1 von solch riesiger Größenordnung eine Primzahl ist, stehen spezielle Methoden zur Verfügung. Die im vorliegenden Kapitel diskutierten Primzahltests versagen schon bei weit kleineren Zahlen.
144
8.2
8 Primzahltests
Der Fermat-Test
Obwohl er keine praktische Bedeutung hat, ist der Fermat-Test für das Verständnis sehr hilfreich. Alle im weiteren Text beschriebenen Tests sind vom Fermat-Test inspiriert.
8.2.1
Der Test
Es sei n eine natürliche Zahl ungleich 1. Wir wollen prüfen, ob n eine Primzahl oder zusammengesetzt ist. Man beachte den Satz 6.10 von Fermat. Falls n eine Primzahl ist, so gilt für alle a ∈ {1, . . . , n − 1} die Kongruenz an−1 ≡ 1 (mod n) . Damit können wir nun folgende Aussage formulieren: Gilt an−1 ≡ 1 (mod n) für ein a ∈ {2, . . . , n − 1}, so ist n garantiert zusammengesetzt.
Mit dieser Aussage gewinnen wir den (probabilistischen) Fermat-Test:
Wähle ein a ∈ {2, . . . , n − 1}. Bestimme an−1 modulo n (vgl. Abschnitt 6.3 zur schnellen Exponentiation). Ist an−1 ≡ 1 (mod n), so ist n keine Primzahl, gib „n ∈ P“ aus. Ist an−1 ≡ 1 (mod n), so ist n eventuell eine Primzahl, gib „n ∈ P“ aus.
Es ist durchaus möglich, dass die Kongruenz an−1 ≡ 1 (mod n) erfüllt ist, obwohl n keine Primzahl ist. Ist die Kongruenz an−1 ≡ 1 (mod n) aber für viele verschiedene a erfüllt, so ist die Wahrscheinlichkeit dafür, dass n eine Primzahl ist, groß. Beispiel Die Zahl n = 341 (= 11 · 31) ist keine Primzahl. Der Fermat-Test liefert mit a = 2 wegen 2340 ≡ 1 (mod 341) , zuerst das (falsche) Ergebnis „n ∈ P“. Mit a = 3 folgt dann aber wegen 3340 ≡ 56 ≡ 1 (mod 341) . die (richtige) Aussage „n ∈ P“.
8.2 Der Fermat-Test
145
Fällt der Fermat-Test für viele a ∈ {2, . . . , n − 1} positiv aus, d. h., es gilt an−1 ≡ 1 (mod n), so ist n wahrscheinlich eine Primzahl. Würde man alle möglichen Zahlen a testen, so wäre der Test sogar deterministisch (aber aufwändiger als die Probedivision), das folgt aus: Lemma 8.1 Für ein a ∈ {1, . . . , n − 1} gelte ggT( a, n) = 1. Dann gilt an−1 ≡ 1 (mod n) . Beweis. Angenommen, es gilt an−1 ≡ 1 (mod n). Dann gibt es ein r ∈ Z mit an−1 + r n = 1. Nach Lemma 4.8 (d) gilt dann ggT( a, n) = 1. Korollar 8.2 Ist die Kongruenzgleichung an−1 ≡ 1 (mod n) für alle a ∈ {1, . . . , n − 1} erfüllt, so ist n eine Primzahl. Beweis. Nach Lemma 8.1 sind für jedes a ∈ {1, . . . , n − 1} die Zahlen a und n teilerfremd. Folglich ist n eine Primzahl.
8.2.2 Pseudoprimzahlen und Zeugen für Zusammengesetztheit Gilt für eine zusammengesetzte Zahl n und ein a ∈ {2, . . . , n − 1} die Kongruenz an−1 ≡ 1 (mod n) , so heißt n Pseudoprimzahl zur Basis a. Man beachte, dass Pseudoprimzahlen keine Primzahlen sind. Genauer lässt sich sagen: Eine Pseudoprimzahl ist eine natürliche Zahl n, die beim Fermat-Test fälschlicherweise „n ∈ P“ liefert. Beispiel Zur Basis a = 2 gibt es zwischen 2 und 2 000 nur die sieben Pseudoprimzahlen 341, 561, 645, 1 105, 1 387, 1 729 und 1 905. Eine Zahl a, die an−1 ≡ 1 (mod n) erfüllt, nennt man auch Zeuge dafür, dass n zusammengesetzt ist. So ist z. B. a = 3 ein Zeuge der Zusammengesetztheit von 341 (vgl. das Beispiel auf Seite 144). Man beachte, dass der Zeuge in unserem Beispiel keinen Hinweis auf einen Primteiler von n gibt. Bemerkung Im Allgemeinen sind Zeugen mathematische Größen, mit denen eine Eigenschaft effizient bewiesen werden kann. Häufig sind sie nicht leicht zu finden.
146
8 Primzahltests
Es gibt ungerade zusammengesetzte natürliche Zahlen n, die für den Fermat-Test besonders ungünstig sind. Diese sogenannten Carmichael-Zahlen haben die Eigenschaft, dass der Fermat-Test für alle a ∈ {1, . . . , n − 1}, die keinen gemeinsamen Teiler mit n haben, positiv ausfällt. Carmichael-Zahlen sind also nach Lemma 8.1 die denkbar ungünstigsten Zahlen für den Fermat-Test.
8.2.3
Carmichael-Zahlen
Für eine Pseudoprimzahl n zur Basis a liefert der Fermat-Test „n ∈ P“, obwohl n keine Primzahl ist. Eine natürliche Zahl n heißt Carmichael-Zahl, wenn sie Pseudoprimzahl zu allen Basen a ∈ {2, . . . , n − 1} mit ggT( a, n) = 1 ist. Beispiel Es ist 561 = 3 · 11 · 17 eine Carmichael-Zahl. Es gilt nämlich für alle a ∈ {2, . . . , 560} mit ggT( a, 561) = 1 die Kongruenz an−1 ≡ 1 (mod 561). Gerade Carmichael-Zahlen existieren nicht. Lemma 8.3 Jede Carmichael-Zahl ist ungerade. Beweis. Angenommen, die Carmichael-Zahl n ist gerade. Die Zahl a = n − 1 ist zu n teilerfremd, ggT(n − 1, n) = 1. Weil n eine Carmichael-Zahl ist, gilt
−1 ≡ (−1)n−1 ≡ (n − 1)n−1 ≡ 1 (mod n) . Somit ist n ein Teiler von 2, d. h. n = 2. Aber n = 2 ist keine Carmichael-Zahl. Satz 8.4 Es sei n eine ungerade zusammengesetzte natürliche Zahl. Gleichwertig sind: (1)
n ist eine Carmichael-Zahl.
(2)
(i) Aus p | n (für p ∈ P) folgt p − 1 | n − 1. (ii) n ist quadratfrei (d. h., a2 | n für a ∈ N impliziert a = 1).
Beweis. (1) ⇒ (2): Es seien p ein Primteiler von n und α ∈ N so gewählt, dass × × ∼ × n = pα d mit p d. Nach Lemma 7.5 gilt Z × n = Z pα × Z d . Die Gruppe Z pα ist nach Satz 6.14 zyklisch (man beachte, dass n ungerade und somit p = 2 ist). Daher gibt α α −1 ( p − 1 ), es in Z × n ein Element a mit a ∈ {1, . . . , n − 1} und o ( a ) = ϕ ( p ) = p folglich gilt ap
α −1
( p −1)
≡ 1 (mod n) .
8.3 Der Miller-Rabin-Test
147
Da ggT( a, n) = 1, gilt nach Voraussetzung an−1 ≡ 1 (mod n) . Nach (iii) in Lemma 6.1 (b) ist pα−1 ( p − 1) ein Teiler von n − 1. Damit folgt (i) unmittelbar. Wegen pα | n gilt α = 1, sonst wäre nämlich p ein Teiler von n − 1 und von n und somit von 1. Daher gilt auch (ii). (2) ⇒ (1): Es sei a ∈ {2, . . . , n − 1} mit ggT( a, n) = 1 gegeben. Für alle Primteiler p von n gilt die Kongruenz a p−1 ≡ 1 (mod p) aufgrund des Satzes 6.10 von Fermat. Wegen p − 1 | n − 1 gilt also auch an−1 ≡ 1 (mod p), d. h. p | an−1 − 1 für alle p | n. Weil n quadratfrei ist, folgt hieraus n | an−1 − 1, d. h. an−1 ≡ 1 (mod n). Wir ziehen noch eine Folgerung, die wir später benötigen werden. Korollar 8.5 Ist n eine Carmichael-Zahl, so ist n ein Produkt von mindestens drei (verschiedenen) Primzahlen. Beweis. Wir nehmen an, dass n = p q mit Primzahlen p > q gilt. Wegen Satz 8.4 gilt p − 1 | p q − 1 = ( p − 1) q + q − 1 , woraus der Widerspruch p − 1 | q − 1 folgt. Bemerkung Es gibt unendlich viele Carmichael-Zahlen. Das wurde in [1] von W. Alford, A. Granville und C. Pomerance bewiesen. Die kleinsten Carmichael-Zahlen sind 561 = 3 · 11 · 17, 1 105 = 5 · 13 · 17, 1 729 = 7 · 13 · 19.
8.3 Der Miller-Rabin-Test Der Miller-Rabin-Test ist ein probabilistischer Primzahltest. Im Unterschied zum Fermat-Test kann man die Wahrscheinlichkeit dafür abschätzen, dass eine untersuchte Zahl n eine Primzahl ist. Nach t positiven Tests ist diese Wahrscheinlichkeit größer gleich 1 − (1/4)t .
8.3.1 Das Verfahren Gegeben ist eine ungerade natürliche Zahl n, von der wir entscheiden wollen, ob n eine Primzahl ist oder nicht. Wir legen in diesem Abschnitt zwei weitere natürliche Zahlen s und d fest, die durch die folgende Gleichung bestimmt sind: n − 1 = 2s d mit 2 d .
148
8 Primzahltests
Da n ungerade ist, gilt s ≥ 1. Beim Fermat-Test haben wir ausgenutzt, dass für eine Primzahl n und jedes a ∈ {1, , . . . , n − 1} die Kongruenz an−1 ≡ 1 (mod n) erfüllt ist. Beim Miller-RabinTest werden wir ausnutzen, dass für eine Primzahl die folgende Tatsache gilt: Lemma 8.6 Es sei n eine Primzahl. Ist a ∈ {1, . . . , n − 1}, so gilt entweder
(i)
ad ≡ 1 (mod n) oder
(ii)
a2
r
d
≡ −1 (mod n) für ein r ∈ {0, . . . , s − 1}.
s Beweis. Weil n eine Primzahl ist, gilt |Z × n | = n − 1 = 2 d. Der Satz 6.9 von Euler d 2s × liefert ( a ) = 1 in Z n . Wegen (iii) in Lemma 6.1 (b) ist o ( ad ) ein Teiler von 2s . Es gelte etwa o ( ad ) = 2l mit l ∈ {0, . . . , s}. 1.Fall: l = 0: Dann gilt ad ≡ 1 (mod n), d. h., es gilt (i). l −1 2.Fall: 0 < l ≤ s: Dann hat ( ad )2 die Ordnung 2. Da −1 das einzige Element × in Z n von der Ordnung 2 ist (das Polynom X 2 − 1 ∈ Z n [ X ] hat im Falle n ∈ P l −1 nur ±1 als Nullstellen), gilt also in diesem Fall ( ad )2 ≡ −1 (mod n). Setze nun r := l − 1. Damit gilt (ii).
Wegen dieses Lemmas können wir nun die folgende Aussage formulieren: r
Gilt ad ≡ ±1 (mod n), a2 d ≡ −1 (mod n) für alle 1 ≤ r ≤ s − 1 und ein 1 < a < n, so ist n garantiert zusammengesetzt. Hiermit gewinnen wir den (probabilistischen) Miller-Rabin-Test:
Wähle ein a ∈ {2, . . . , n − 1}. Bestimme in Z n die s Potenzen ad , a2 d , . . . , a2 Gilt
s −1
ad = ±1, a2 d = −1, . . . , a2
d
s −1
. d
= −1 ,
so ist n keine Primzahl, gib „n ∈ P“ aus.
Gilt
ad = ±1 oder a2
r
d
= −1 für ein r ∈ {1, . . . , s − 1} ,
so ist n eventuell eine Primzahl, gib „n ∈ P“ aus (oder wiederhole das Verfahren mit einem neuen a). Wie beim Fermat-Test, ist es durchaus möglich, dass der Test „n ∈ P“ ausgibt, obwohl n gar keine Primzahl ist. Gibt der Test aber „n ∈ P“ für viele verschiedene a aus, so ist die Wahrscheinlichkeit dafür, dass n eine Primzahl ist, sehr groß.
8.3 Der Miller-Rabin-Test
149
Genauere Aussagen hierzu werden wir im Satz 8.7 machen. Auch hier erhält man mit a einen Zeugen für die Zusammengesetztheit von n, falls der Test „n ∈ P“ mit a ∈ {2, . . . , n − 1} ausgibt. Die Zahl a beweist, dass n keine Primzahl ist. Bemerkung s −1 Man beachte, dass man beim Miller-Rabin-Test die Elemente a2 d , . . . , a2 d durch sukzessives Quadrieren aus dem Element ad erhält. Beispiel Die Zahl 561 = 3 · 11 · 17 ist eine Carmichael-Zahl und damit problematisch für den Fermat-Test. Wir wenden nun den Miller-Rabin-Test auf die Zahl 561 an. Es gilt 561 − 1 = 24 · 35, also s = 4 und d = 35. In Z561 gilt 35
2
= 263 ,
2·35
2
= 166 ,
22 ·35
2
= 67 ,
2
23 ·35
= 1.
Damit ist gezeigt, dass 561 keine Primzahl ist. Die Basis a = 2 ist ein Zeuge für die Zusammengesetztheit von 561. Wir kümmern uns nun um die Zahlen n, für die der Miller-Rabin-Test das Ergebnis „n ∈ P“ ausgibt. Unser Ziel ist eine Abschätzung für die Wahrscheinlichkeit, dass der Test „n ∈ P“ ausgibt, obwohl n gar keine Primzahl ist. 8.3.2 Starke Pseudoprimzahlen Eine natürliche Zahl n ∈ N heißt starke Pseudoprimzahl zur Basis a ∈ {1, . . . , n − 1}, wenn ad = ±1 oder a2
r
d
= −1 für ein r ∈ {1, . . . , s − 1}
erfüllt ist. Wir können die starken Pseudoprimzahlen auch wie folgt beschreiben: Es sind dies jene Zahlen n, für die der Rabin-Miller-Test „n ∈ P“ ausgibt (ungeachtet dessen, ob dieses Ergebnis korrekt ist oder nicht). Nach Lemma 8.6 ist jede Primzahl n eine starke Pseudoprimzahl zu jeder Basis a mit 1 ≤ a ≤ n − 1. Es folgt ein Beispiel einer starken Pseudoprimzahl, die keine Primzahl ist. Beispiel Wegen 341 − 1 = 22 · 85 und 4785 ≡ 1 (mod 341) , d. h. 47 ist 341 (= 11 · 31) eine starke Pseudoprimzahl zur Basis 47.
85
=1
Die Güte des Miller-Rabin-Tests beruht auf der Tatsache, dass es nur wenige starke Pseudoprimzahlen gibt, die keine Primzahlen sind. Bevor wir das beweisen, erinnern wir an den aus der linearen Algebra bekannten Homomorphiesatz der Gruppentheorie, den wir für den Beweis benötigen:
150
8 Primzahltests
Der Homomorphiesatz. Ist ϕ : G → H ein surjektiver Homomorphismus von der Gruppe G auf die Gruppe H, so gilt G/ ker ϕ ∼ = H. Nun zu dem angekündigten Satz: Satz 8.7 Es sei n eine ungerade zusammengesetzte natürliche Zahl. Weiter sei A := { a ∈ {1, . . . , n − 1} ; n ist starke Pseudoprimzahl zur Basis a} . Dann gilt:
| A| ≤
n−1 . 4
Beweis. In A existiert auf jeden Fall ein Element a, das eine Kongruenz der Art a2
r
d
≡ −1 (mod n) für ein r ∈ {0, . . . , s − 1}
erfüllt, da nämlich im Falle ad ≡ 1 (mod n) auch die Kongruenz (− a)d ≡ −1 (mod n) gilt – man beachte, dass d ungerade ist. k Es sei k ∈ {0, . . . , s − 1} die größte Zahl mit der Eigenschaft a2 d ≡ −1 (mod n) für ein a ∈ A. Es gilt dann für alle a ∈ A:
(∗) a2
k
d
≡ ±1 (mod n) . ν
ν
1 Wir betrachten die folgenden Untergruppen von Z × n , dabei seien n = p1 · · · p k die kanonische Primfaktorzerlegung von n und m := 2 d (beachte, dass wegen k < s die Zahl m ein echter Teiler von n − 1 = 2s d ist):
J = {a ∈ Z× n ; K = a ∈ Z× n ; L = a ∈ Z× n ; M = a ∈ Z× n ;
an−1 ≡ 1 (mod n)} ,
ν am ≡ ±1 (mod pi i ) für alle i ∈ {1, . . . , } , am ≡ ±1 (mod n) , am ≡ 1 (mod n) .
Offenbar gelten die Inklusionen A ⊆ L (vgl. (∗)) und M ⊆ L ⊆ K ⊆ J ⊆ Z × n . Im 1 Folgenden begründen wir | L| ≤ n− 4 , hieraus folgt dann die Behauptung. × × Nach Lemma 7.5 dürfen wir Z × n mit Z ν1 × · · · × Z ν identifizieren. Für die Potenzabbildung πm : a → a , m = m
2k
p1
d, in
Z ×ν1 p1
p
× · · · × Z ×ν gilt dann: p
−1 −1 ({±(1, . . . , 1)}) , K = πm ({(±1, . . . , ±1)}) . M = ker πm , L = πm
Wir begründen nun die beiden Aussagen: (1) | L| = 2 | M| und (2) |K | = 2 | M|.
8.3 Der Miller-Rabin-Test
151
Zu (1): Der Homomorphismus πm | L : L → {±(1, . . . , 1)} ist wegen der Wahl von k surjektiv. Mit dem Homomorphiesatz folgt L/M ∼ = {±(1, . . . , 1)}, insbesondere | L|/| M| = |{±(1, . . . , 1)}| = 2, und das ist die Behauptung (1). Zu (2): Wir betrachten den Homomorphismus πm |K : K → {(±1, . . . , ±1)} und zeigen, dass dieser surjektiv ist. Es folgt dann erneut mit dem Homomorphiesatz K/M ∼ = {(±1, . . . , ±1)}, insbesondere |K |/| M| = |{(±1, . . . , ±1)}| = 2 , und das ist die Behauptung (2). Es sei (c1 , . . . , c ) ∈ {(±1, . . . , ±1)} vorgegeben. Wir wählen Mengen I und I mit ci = 1 für alle i ∈ I und c j = −1 für alle j ∈ I und I ∪ I = {1, . . . , }. Nach der Wahl von m gibt es ein a ∈ A mit am ≡ −1 (mod n). Nach dem chinesischen Restsatz 7.4 hat das Kongruenzgleichungssystem νj
ν
X ≡ 1 (mod pi i ) , i ∈ I und X ≡ a (mod p j ) , j ∈ I eine Lösung c ∈ Z. Das Element c ∈ Z n liegt in K. Wir interpretieren c als Element in Z ×ν1 × · · · Z ×ν . Dann gilt πm (c) = (c1 , . . . , c ). Folglich ist πm |K surjektiv. Es p1
p
ist hiermit (2) begründet. Mit (1) und (2) erhalten wir die Abschätzung:
| A| ≤ | L| =
n−1 |K | ≤ −1 . − 1 2 2
Wir treffen Fallunterscheidungen für . 1 1. Fall: ≥ 3: Dann gilt | L| ≤ n− 4 , wie gewünscht. ν1 ν2 2. Fall: = 2: Dann gilt n = p1 p2 . Nach Korollar 8.5 ist n keine Carmichael× × Zahl, sodass J = Z × n gilt. Also gilt 2 ≤ |Z n /J | = |Z n | / | J | = ϕ ( n ) / | J |, und damit (beachte (1) und (2)): ϕ(n) = ϕ(n)
ϕ(n) | J | |K | | L| ≥ 2 · 1 · 2 · | L| . | J | |K | | L|
1 Folglich gilt | L| ≤ 4 ≤ n− 4 , wie gewünscht. ν 3. Fall: = 1: Es gilt n = p , ν ≥ 2. Wegen ϕ(n) = pν−1 ( p − 1) ist p ein Teiler von ϕ(n). Nach dem Satz 6.8 von Cauchy existiert ein a ∈ Z × n mit o ( a ) = p, d. h. a p = 1. Da p n − 1, gilt an−1 = 1, sodass a ∈ J, also { J, a J, . . . , a p−1 J } ⊆ Z × n /J. ϕ(n) × Damit gilt |Z n /J | ≥ p, also | J | ≤ p . Im Fall p > 3 erhalten wir hieraus das Gewünschte aus | L| ≤ | J | unmittelbar. Es bleibt der Fall p = 3 zu untersuchen: Es sei n = 3ν mit ν ≥ 2. Falls ν = 2 ist, ist n = 9 und damit s = 3 und d = 1. Wegen 8 ≡ −1 (mod 9) ist 9 eine starke Pseudoprimzahl zur Basis 8, d. h. {1, 8} ⊆ A. Und tatsächlich gilt {1, 8} = A, da für alle weiteren a zwischen 1 und 9 gilt a ≡ ±1 (mod 9), a2 ≡ −1 (mod 9), a4 ≡ −1 (mod 9). Es folgt | A| = 2 ≤ 9−4 1 , wie gewünscht. Nun zum letzten Fall p = 3 und ν > 2: Es gilt o (4)mod33 = 9. Daher gilt auch o (4)mod3ν ≥ 9, da aus 4r ≡ 1 (mod 3ν ) für r < 9 auch 4r ≡ 1 (mod 33 ) folgte. Wegen |Z3×ν | = ϕ(3ν ) = 2 · 3ν−1 gilt o (4)mod3ν | 2 · 3ν−1 . Da, wie bereits gezeigt
152
8 Primzahltests
o (4)mod3ν ≥ 9 gilt, können wir sagen, dass 3 ein Teiler von o (4)mod3ν ist. Und weil n − 1 = 3ν − 1 sicher nicht von 3 geteilt wird, erhalten wir für das Element n−1 ≡ 1 (mod 3ν ). 4 ∈ Z× n sogar 4 ∈ J, da 4 Wir betrachten nun die Faktorgruppe Z × n /J. Diese Gruppe enthält mindestens 8
die neun verschiedenen Elemente J, 4 J, . . . , 4 J. Damit gilt | J | ≤ | L| ≤ | J | erhalten wir wieder das Gewünschte.
ϕ(n) 9 ,
wegen
Wir interpretieren das Ergebnis aus Satz 8.7: Liefert der Miller-Rabin-Test „n ∈ P“ für eine Basis a ∈ {2, . . . , n − 1}, so ist die untersuchte ungerade natürliche Zahl n mit einer Wahrscheinlichkeit kleiner gleich 14 dennoch zusammengesetzt. Nach zehn solchen positiven Tests mit zehn verschiedenen a ist n mit einer Wahrscheinlichkeit von kleiner gleich (1/4)10 ≈ 10−6 zusammengesetzt, allgemeiner: Korollar 8.8 Die Wahrscheinlichkeit dafür, dass n zusammengesetzt ist, obwohl der Miller-Rabin-Test „n ∈ P“ mit t verschiedenen, zufällig gewählte a ausgibt, ist kleiner als (1/4)t .
Bemerkung Der Miller-Rabin-Test ist das Mittel der Wahl, um Primzahlen von der Größen ordnung 512 Bit, wie sie beim RSA-Verfahren benutzt werden, zu erzeugen.
8.4
Der AKS-Test *
Der AKS-Primzahltest wurde 2002 von Agrawal, Kayal und Saxena veröffentlicht. N. Kayal und N. Saxena waren damals Studenten. Es handelt sich um den ersten deterministischen Primzahltest mit polynomialer Laufzeit. Die Veröffentlichung war daher eine Sensation. Die Korrektheit des Algorithmus – an der unmittelbar nach der Veröffentlichung verschiedentlich gezweifelt wurde – wurde in nur wenigen Tagen von bedeutenden Mathematikern bestätigt. Das wohl Erstaunlichste am AKS-Test ist, dass er mit nur wenigen Vorbereitungen von jedem Mathematikstudenten verstanden werden kann, obwohl Fachleute schon lange erfolglos nach einem solchen Test gesucht haben. In diesem Abschnitt sei n ∈ N >1 , und := log2 n + 1 sei die Länge von n in Binärdarstellung. Diese Zahl n wollen wir auf Primalität prüfen.
8.4.1
Ideale in Ringen
Unter einem Ideal eines kommutativen Ringes R versteht man eine Untergruppe I von ( R, +) mit der Eigenschaft I R ⊆ I, d. h.: a ∈ I, r ∈ R ⇒ ar ∈ I.
8.4 Der AKS-Test *
153
Im Rahmen des AKS-Testes werden uns Ideale in Polynomringen interessieren. Dazu erinnern wir an den Polynomring K [ X ] über einem Ring K, insbesondere über Z: K [ X ] :=
f =
k
∑ ai X i ;
i =0
k ∈ N0 , ai ∈ K für alle i = 0, . . . , k
.
Polynomringe wurden im Abschnitt 3.1.2 eingeführt. Nachfolgend die für alles weitere wesentlichen Beispiele für Ideale. Beispiel Für jedes Element a eines kommutativen Ringes R ist
I = ( a) := a R = { a r ∈ R ; r ∈ R} ein Ideal.
Etwas allgemeiner: Für beliebige Elemente a1 , . . . , ak eines kommutativen Ringes R bildet I = ( a1 , . . . , a k ) : = a1 R + · · · + a k R = { a1 r1 + · · · + a k r k ; r1 , . . . , r k ∈ R } ein Ideal von R – man nennt es das von a1 , . . . , ak erzeugte Ideal von R.
{0} und R sind Ideale von R – die sogenannten trivialen Ideale des Ringes R, man nennt {0} das Nullideal und R das Einsideal von R; es gilt {0} = (0) und R = (1).
Die Ideale von Z sind genau die Mengen (k) = k Z mit k ∈ N0 . Den Nachweis dieser Aussage haben wir als Übungsaufgabe gestellt.
Für jedes f ∈ Z [ X ] ist I = ( f ) = f Z [ X ] = { f g ; g ∈ Z [ X ]} ein Ideal des Polynomrings Z [ X ] – dies ist ein Sonderfall des ersten Beispiels.
Wir treffen eine Vereinbarung: Wir schreiben für ein Ideal I eines Ringes R und Elemente r, s ∈ R r ≡ s (mod I ) :⇔ r − s ∈ I und sagen in diesem Fall, dass r und s kongruent modulo I sind. Diese Schreibweise kollidiert nicht mit der bereits vielfach benutzten Schreibweise a ≡ b (mod k) ⇔ k | a − b für ganze Zahlen a und b. Es gilt nämlich: a ≡ b (mod (k)) ⇔ a − b ∈ (k) = k Z ⇔ k | a − b ⇔ a ≡ b (mod k) . Beispiel Für den kommutativen Ring Z [ X ] und I = (k) = k Z [ X ], k ∈ N, gilt etwa X 3 − k X ≡ X 3 (mod I ) , da die Differenz ( X 3 − k X ) − X 3 in I liegt.
154
8.4.2
8 Primzahltests
Die Idee des AKS-Tests
Sowohl beim Fermat-Test wie auch beim Miller-Rabin-Test sind wir von einer Eigenschaft von Primzahlen ausgegangen: Wenn n eine Primzahl ist, dann gelten ... gewisse Kongruenzen. Der Test selbst verläuft dann dergestalt, dass man diese Kongruenzen einfach nachprüft: Sind die Kongruenzen erfüllt, so gibt der Test „n ∈ P“ aus, und das ist ein Hinweis darauf, dass die untersuchte Zahl eine Primzahl sein könnte. Sind die Kongruenzen nicht erfüllt, so gibt der Test „n ∈ P“ aus, und das ist ein Beweis, dass die untersuchte Zahl keine Primzahl ist. Beim AKS-Test werden wir dieses Prinzip wiederfinden. Wir zeigen: Wenn n eine Primzahl ist, dann gilt eine ... noch näher zu bestimmende Kongruenz. Aber es gibt einen wesentlichen Unterschied zum Fermat- und Miller-Rabin-Test: Liefert der AKS-Test das Ergebnis „n ∈ P“ oder „n ∈ P“ so ist das nicht nur ein Hinweis, es ist sogar ein Beweis für diese Aussage. Der AKS-Test ist also deterministisch. Es seien n ∈ N eine Primzahl und a ∈ Z. Mit der Binomialformel erhalten wir: n n n n ai X n −i = X n + a X n −1 + · · · + a n −1 X + a n . ( X + a)n = ∑ i 1 n − 1 i =0 Und nun rechnen wir im Polynomring Z [ X ] modulo dem Ideal I = (n), d. h., wir lassen einfach alle Summanden von ( X + a)n weg, die Vielfache von n in Z [ X ] sind, und erhalten: ( X + a)n ≡ X n + an (mod (n)) . Beachtet man jetzt noch den Satz 6.10 von Fermat, so können wir hierin an durch a ersetzen, da n eine Primzahl ist. Damit ist bereits die Richtung ⇒ des folgenden Lemmas bewiesen: Lemma 8.9 Gegeben seien zwei teilerfremde natürliche Zahlen a und n. Die Zahl n ist genau dann eine Primzahl, wenn im Ring Z [ X ] gilt
( X + a)n ≡ X n + a (mod (n)) . Beweis. Wir begründen ⇐: Angenommen, n ist keine Primzahl. Dann sei pk die maximale Potenz eines (echten) Primteilers p von n, d. h. n = pk r für eine Primzahl p und natürliche Zahlen k und r und p r. Wir betrachten den Binomialkoeffizienten n ( n − 1) · · · ( n − p + 1) n = ∈ N. p p ( p − 1) · · · 1 In dem rechten Bruch kürzt sich das p im Nenner mit einem entsprechenden Faktor von n des Zählers, da die Faktoren n − 1, . . . , n − p + 1 des Zählers zu p teilerfremd sind, es gilt nämlich n − i ≡ −i ≡ 0 (mod p) für i = 1, . . . , p − 1 .
8.4 Der AKS-Test *
155
n . Es folgt wegen p a: p n p und somit a ≡ 0 (mod (n)) . p
Damit ist aber pk kein Teiler von n p ap p k
Und hieraus folgt mit der Binomialformel ein Widerspruch: n ( X + a)n − X n − a ≡ · · · + a p X n− p + · · · ≡ 0 (mod (n)) , p n es hat nämlich das in der Mitte stehende Polynom · · · + a p X n− p + · · · wep gen p < n einen Summanden, der nicht Vielfaches von n ist. Ist für n ∈ N zu entscheiden, ob n eine Primzahl ist, so wähle man ein a ∈ Z, prüfe zunächst, ob ggT( a, n) = 1, und teste dann, ob die Kongruenz
( X + a)n ≡ X n + a (mod (n)) erfüllt ist. Falls nicht, so ist n garantiert keine Primzahl. Gilt diese Kongruenz hingegen, so ist n garantiert eine Primzahl. Aber in dieser Form ist der Test viel zu rechenaufwändig. Tatsächlich sind im Allgemeinen alle Koeffizienten von ( X + a)n modulo (n) zu bestimmen, was einen exponentiellen Aufwand bedeutet. Die Laufzeit des AKS-Tests aber ist polynomial. Diesen polynomialen Aufwand erreichen wir dadurch, dass wir nicht modulo dem Ideal (n) in Z [ X ], sondern modulo dem von n und X r − 1 in Z [ X ] erzeugten Ideal I = (n, X r − 1) rechnen. Die Zahl r ∈ N ist dabei noch näher zu bestimmen. Zuerst halten wir fest: Ist n ∈ N eine Primzahl, so gilt für jedes r ∈ N und jedes a ∈ Z auch die Kongruenz
(∗) ( X + a)n ≡ X n + a (mod I ) . Diese Kongruenz kann mit der schnellen Exponentiation ausgewertet werden. Dabei wird die Laufzeit von r und log n bestimmt. In der Tat gilt folgende grobe Abschätzung. Lemma 8.10 Die Laufzeit zur Auswertung von (∗) ist asymptotisch beschränkt durch O (r · log n)3 . Beweis. Nach Lemma 6.15 kann die n-te Potenz in O(log n) Operationen des Ringes Z n [ X ]/( X r − 1) durchgeführt werden. Dazu wird in jedem Schritt eine Division mit Rest nach X r − 1 durchgeführt, und anschließend werden alle r + 1 Koeffizienten des Ergebnisses modulo n reduziert. Mit den Lemmata 4.5 und 4.7 erhalten wir
O(log n) · O(r2 ) · (r + 1) O (log n)2 = O (r log n)3 , wie behauptet.
156
8 Primzahltests
Nun taucht ein anderes Problem auf: Während im Lemma 8.9 „genau dann, wenn“ steht, haben wir nun wieder nur eine „Wenn ..., dann ...“-Beziehung: Die Kongruenz (∗) kann auch dann für Zahlen a und r erfüllt sein, wenn n keine Primzahl ist. Ein entsprechender Test scheint also doch wieder probabilistisch zu sein. Wir werden jedoch zeigen, dass es im Fall, dass n keine Primzahl ist, stets ein a gibt, sodass die Kongruenz (∗) nicht erfüllbar ist. Der Knackpunkt des AKS-Tests besteht darin, dass es genügt, die Kongruenzgleichung (∗) für ein kleines r und einen kleinen Bereich für a zu prüfen. Die Tatsache, dass wir r und die Anzahl der Auswertungen von (∗) beschränken können, bewirkt, dass der Algorithmus polynomial ist.
8.4.3
Der AKS-Algorithmus
Wir formulieren zuerst den AKS-Algorithmus und zeigen dann, dass der Algorithmus das gewünschte Ergebnis liefert. Eingabe: n ∈ N >1 der Länge = log2 n + 1. Ausgabe: „n ∈ P“ oder „n ∈ P“. (1)
Teste, ob n eine (echte) Potenz ist (vgl. Aufgabe 8.6). Falls ja, so gib „n ∈ P“ aus, sonst fahre fort mit:
(2)
Finde r ∈ N minimal mit o (n)mod r > 2 .
(3)
Teste n auf Primteiler p ≤ 5 . Falls ein solcher existiert, so gib aus
„n ∈ P“, falls p = n, „n ∈ P“, sonst.
(4)
Andernfalls fahre fort mit: √ Für a = 1, 2, . . . , r prüfe: Falls ( X + a)n ≡ X n + a (mod (n, X r − 1)), so gib „n ∈ P“ aus, sonst:
(5)
Gib „n ∈ P“ aus.
Bevor wir die Korrektheit des Algorithmus beweisen, zeigen wir, dass im Schritt (2) des Algorithmus die Abschätzung r ≤ 5 gilt, sodass also r tatsächlich klein ist. Für die Begründung benötigen wir das folgende Lemma: Lemma 8.11 Für n ∈ N sei λ(n) := kgV(1, 2, . . . , n). Dann gilt λ(n) ≥ 2n−2 .
8.4 Der AKS-Test *
157
Beweis. Für ein N ∈ N betrachten wir das Polynom f = a2N X 2N + · · · + a1 X + a0 X 0 ∈ Z [ X ]. Es gilt 1 0
f (t) d t =
2N
1
i =0
0
∑ ai
ti d t =
2N
a
∑ i +i 1 =
i =0
m für ein m ∈ Z . λ (2 N + 1)
Nun betrachten wir das spezielle Polynom f = X N (1 − X ) N , das eine solche betrachtete Form hat. Es gilt für alle 0 < t < 1 die Ungleichungskette 0 < f (t) ≤ 41N – für die Abschätzung nach oben zeige man, dass die Polynomfunktion f ( x ) = ( x (1 − x )) N auf dem Intervall [0, 1] ein globales Maximum in x = 1/2 besitzt. Es folgt 0
1 der Länge = log2 n + 1 mit ggT(n, λ(5 )) = 1 existiert ein r ∈ N mit r ≤ 5 und o (n)mod r > 2 . Beweis. Wir nehmen an, dass kein solches r existiert. Dann gilt o (n)mod r ≤ 2 für jedes r ≤ 5 , denn r und n sind nach Voraussetzung teilerfremd. Das besagt, dass für jedes r ≤ 5 eine Kongruenz der Form ni ≡ 1 (mod r ) für ein i ∈ {1, . . . , 2 } gilt. Damit erhalten wir für jedes r ≤ 5 : r|
2
2
i =1
i =1
∏(ni − 1) und damit λ(5 ) | ∏(ni − 1) .
Wir wenden nun Lemma 8.11 an, wonach λ(5 ) ≥ 2 2
5 −2
2
2
≤ ∏ ( n − 1) < ∏ ni = n i =1
i
i =1
2
(2 +1)/2
5 −2
gilt; wir erhalten:
2 (2 +1)/2 3 2 = 2log2 (n) ≤ 2 ( +1)/2 .
158
8 Primzahltests
Ein Vergleich der Exponenten liefert 2 5 − 4 < 5 + 3 und damit 3 (2 − 1) < 4 . Wegen n > 1 ist aber > 1. Damit haben wir einen Widerspruch gefunden, es muss also ein r ≤ 5 mit o (n)mod r > 2 existieren. Aus diesen Überlegungen ergibt sich: Korollar 8.13 Der AKS-Algorithmus ist polynomial.
8.4.4
Introspektive Zahlen
Zum Beweis der Korrektheit des AKS-Algorithmus benutzen wir eine Eigenschaft sogenannter introspektiver Zahlen. Ist p eine Primzahl, so heißt eine natürliche Zahl m introspektiv für ein f ∈ Z p [ X ] und r ∈ N, falls f ( X )m ≡ f ( X m ) (mod ( X r − 1)) . Beispiel Die Zahl m = 2 ist introspektiv für f = X + 1 ∈ Z2 [ X ] und jedes r ∈ N, da gilt
( X + 1)2 ≡ X 2 + 1 (mod ( X r − 1)) .
Lemma 8.14 Es seien p ∈ P eine Primzahl und r ∈ N eine natürliche Zahl. Dann gilt: (a)
Sind m, m introspektiv für ein f ∈ Z p [ X ] und r ∈ N, so ist auch m m introspektiv für f und r ∈ N.
(b)
Ist m introspektiv für f , g ∈ Z p [ X ] und r ∈ N, so ist m auch introspektiv für f g und r ∈ N.
Beweis. (a) Es seien m, m introspektiv für f ∈ Z p [ X ] und ein r ∈ N. Wir erhalten dann: f ( X )mm ≡ f ( X m )m (mod ( X r − 1)) . Da m introspektiv für f und r ist, gilt auch
f ( X m )m ≡ f ( X mm ) (mod ( X mr − 1)) . Hieraus folgt
f ( X m )m ≡ f ( X mm ) (mod ( X r − 1)) , da X r − 1 | X mr − 1 gilt. Das besagt, dass m m introspektiv für f und r ist. (b) Es gilt
( f g)( X )m ≡ f ( X )m g( X )m ≡ f ( X m ) g( X m ) ≡ ( f g)( X m ) (mod ( X r − 1)) . Das besagt, dass m introspektiv für f g und r ist.
8.4 Der AKS-Test *
159
Um weitere Aussagen über introspektive Zahlen zu gewinnen, benötigen wir die folgende Aussage. Lemma 8.15 Es sei f ∈ K [ X ] ein Polynom über einem Körper K. Ist X r − 1 ein Teiler von f p , p ∈ N, so teilt X r − 1 bereits f , d. h. Xr − 1 | f p ⇒ Xr − 1 | f . Beweis. Angenommen, es ist g ∈ K [ X ] mit deg g > 0 ein Teiler von X r − 1, d. h. X r − 1 = gs h mit einem h ∈ K [ X ] . Wir leiten die Polynome nach X ab und erhalten mit der Produktregel für die Ableitung: r X r −1 = s g s −1 g h + g s h . Wäre s > 1, so hätten wir in g einen gemeinsamen Teiler von X r − 1 und seiner Ableitung rX r−1 gefunden. Ein solcher gemeinsamer Teiler wäre aber auch ein Teiler der Differenz −1 dieser Polynome. Folglich muss s = 1 gelten: Jeder Teiler g von X r − 1 mit deg g > 0 kommt in einfacher Potenz vor, d. h. X r − 1 = h1 · · · ht mit verschiedenen irreduziblen Polynomen h1 , . . . , ht . Für jedes dieser hi gilt hi | f , wie mehrfaches Anwenden von Lemma 3.7 zeigt. Induktiv folgt f = h1 . . . ht f t = ( X r − 1) f t für ein Polynom f t ∈ K [ X ], wie behauptet. Nun haben wir alle Zutaten, um das folgende Ergebnis über introspektiven Zahlen begründen zu können. Wir werden es benötigen, um die Korrektheit des AKSAlgorithmus zu zeigen. Lemma 8.16 Es sei k ∈ N, und p sei ein Primteiler der natürlichen Zahl n. Falls für jedes a ∈ {0, 1, . . . , k} die Kongruenz
( X + a)n ≡ X n + a (mod (n, X r − 1)) gilt, so sind alle Elemente der Menge J :=
t n ; s, t ∈ N0 p p s
introspektiv für jedes Polynom f ∈ Q := r ∈ N.
k
∏ ( X + a)ea ; e a ∈ N0
a =0
⊆ Z p [ X ] und
160
8 Primzahltests
Beweis. Wir zeigen, dass p und np introspektiv für jedes X + a ∈ Z p [ X ] und r ∈ N sind. Da nach Lemma 8.14 (a) beliebige Produkte introspektiver Zahlen wieder introspektiv sind, folgt hieraus die Behauptung für jedes Polynom der Form f = X + a, a ∈ {0, 1, . . . , k}. Mit der Aussage (b) in Lemma 8.14 folgt dann schließlich die Behauptung für alle f ∈ Q. Wegen
( X + a)n ≡ X n + a (mod (n, X r − 1)) für alle a ∈ {0, 1, . . . , k} gilt auch
( X + a)n ≡ X n + a (mod ( p, X r − 1)) für alle a ∈ {0, 1, . . . , k} . Nach Lemma 8.9 gilt ( X + a) p ≡ X p + a (mod ( p)) für alle betrachteten a (für die Richtung ⇒ in Lemma 8.9 war die Einschränkung ggT( a, n) = 1 nicht nötig), also gilt auch
( X + a) p ≡ X p + a (mod ( p, X r − 1)) für alle a ∈ {0, 1, . . . , k} . Diese Kongruenz besagt, dass es Polynome f , g ∈ Z [ X ] mit
( X + a ) p − ( X p + a ) = p f + ( X r − 1) g gibt. Wir fassen diese Kongruenz nun als Kongruenz über Z p [ X ] auf, indem wir modulo p rechnen. Wir ersetzen also a, 1, p ∈ Z der Reihe nach durch a, 1, p = 0 ∈ Z p . Es folgt
( X + a) p ≡ X p + a (mod ( X r − 1)) für alle a ∈ {0, 1, . . . , k} . Daher ist p introspektiv für X + a, a ∈ {0, 1, . . . , k}, und alle r ∈ N. Weiterhin erhalten wir für alle a ∈ {0, 1, . . . , k}: n ·p
( X + a) p
n ·p
≡ ( X + a)n ≡ ( X n + a) ≡ X p n
·p
n
+ a ≡ ( X p + a) p (mod ( p, X r − 1)) . n
Um diese letzte Kongruenz X p + a ≡ ( X p + a) p (mod ( p, X r − 1)) einzusehen, gehe man wie im Beweis von ⇒ zu Lemma 8.9 vor. Wir wenden diesen Trick n
mit der Binomialformel erneut an und erhalten aus der Kongruenz ( X + a) p n p
·p
≡
( X + a) p (mod ( p, X r − 1)) nun p
n n ( X + a) p − ( X p + a) ≡ 0 (mod ( p, X r − 1)) . r Modulo p gerechnet, besagt diese das Polynom X − 1 ∈
letzte Kongruenz, dass n
n
Z p [ X ] ein Teiler des Polynoms ( X + a) p − ( X p + a) kommt Lemma 8.15 ins Spiel, es gilt: n
p
∈ Z p [ X ] ist. Und nun
n
( X + a) p ≡ ( X p + a) (mod ( X r − 1)) . Somit ist also auch np introspektiv für alle X + a, a ∈ {0, 1, . . . , k}, und r ∈ N. Nun beachte man die Aussagen (a) und (b) in Lemma 8.14.
8.4 Der AKS-Test *
161
8.4.5 Die Korrektheit des AKS-Algorithmus Im Folgenden benutzen wir die Nummerierung (1) – (5) der Schritte im AKSAlgorithmus auf Seite 156. Wir begründen die Korrektheit des Algorithmus, indem wir zeigen: Satz 8.17 Es ist n genau dann eine Primzahl, wenn der AKS-Algorithmus „n ∈ P“ ausgibt. Beweis. ⇒: Ist n eine Primzahl, so terminiert der Algorithmus im Schritt (5). ⇐: Der Algorithmus ende bei (5). Wir führen den Beweis in mehreren Schritten. (i) Es existiert ein Primteiler p von n mit p ≡ 1 (mod r ) und p > r. Würde nämlich für jeden Primteiler p von n die Kongruenz p ≡ 1 (mod r ) gelten, so würde im Widerspruch zu (2) auch n ≡ 1 (mod r ) gelten. Aufgrund von Schritt (3) und Lemma 8.12 gilt p > r. Damit ist (i) begründet. Wir werden in den nächsten Schritten zeigen, dass n außer p keinen weiteren Primteiler besitzt. Nach Schritt (1) des Algorithmus ist dann n = p; so folgt also die Behauptung. Dazu begründen wir zunächst: (ii) Für die Gruppe G := p, np ⊆ Zr× gilt 2 < | G | < r. Man beachte zunächst, dass wegen Schritt (2) im Algorithmus die Zahlen p und n n × p beide zu r teilerfremd sind, sodass p, p ∈ Z r gilt. Da G eine Untergruppe von Zr× ist (vgl. die Bemerkung auf Seite 96), gilt natürlich | G | < r. Das Element n = p np liegt in G. Folglich liegen auch alle Potenzen von n in G, d. h. n ⊆ G. Wegen o (n)mod r > 2 (siehe Schritt (2) im AKS-Algorithmus) folgt die Ungleichung 2 < | G |. Damit ist (ii) begründet.
Nach (i) gilt p = 1 ∈ Zr× . Da Zr× eine endliche Gruppe ist, existiert nach Lemma 6.1 ein s ∈ N mit ps = 1, d. h. ps ≡ 1 (mod r ). Wir setzen q := ps und erhalten r | q −1. Wir betrachten nun den endlichen Körper F q mit genau q Elementen (siehe Satz 3.10), wegen q = ps enthält F q den Körper Z p . Die multiplikative Gruppe F × q des endlichen Körpers F q ist nach Lemma 6.12 zyklisch. Die Ordnung dieser (endlichen) zyklischen Gruppe F × q ist q − 1. Da r ein Teiler von q − 1 ist, existiert nach Lemma 6.6 ein Element ξ ∈ F × q mit der Ordnung r. Im Folgenden spielt die Gruppe √ H := {ξ + a ; a = 0, . . . , k } = ξ, ξ + 1, . . . , ξ + k ⊆ F × r q mit k : = eine entscheidende Rolle. Wir zeigen: |G| + k (iii) Es gilt | H | ≥ für G aus (ii). k+1
162
8 Primzahltests
Zur Begründung von (iii) betrachten wir die Menge P :=
k
∏ ( X + a)
f =
a =0
ea
; ea ∈ N0 , deg f < | G |
⊆ Z p [X] .
Man beachte, dass f (ξ ) ∈ H für jedes f ∈ P. Wir begründen, dass die Abbildung Φ : P → H , f → f (ξ ) injektiv ist, es folgt dann | P| ≤ | H |: Es seien f 1 , f 2 ∈ P mit f 1 (ξ ) = f 2 (ξ ) gewählt. Nach (4) des AKS-Algorithmus sind wegen Lemma 8.16 die Zahlen m = ps ( np )t mit ganzen Zahlen s, t ≥ 0 introspektiv für f i und r. Wir erhalten damit f i ( X )m ≡ f i ( X m ) (mod ( X r − 1)) , d. h. f i ( X )m − f i ( X m ) = g ( X r − 1) für ein g ∈ Z [ X ]. Wir setzen ξ in X ein und beachten o (ξ ) = r, d. h. ξ r − 1 = 0:
(∗)
f 1 (ξ m ) = f 1 (ξ )m = f 2 (ξ )m = f 2 (ξ m ) .
Somit ist ξ m eine Nullstelle des Polynoms f 1 − f 2 . Wir begründen nun, dass das Polynom f 1 − f 2 vom Grad < | G | mindestens | G | verschiedene Nullstellen im Körper F q besitzt. Damit kann f 1 − f 2 nur das Nullpolynom sein, d. h. f 1 = f 2 , und damit ist die Injektivität von Φ gezeigt. Es seien a und b verschiedene Elemente aus G: a = ps
t v n n , b = pu ∈ Zr× . p p
Ohne Einschränkung seien a und b die kleinsten positiven Repräsentanten der Nebenklassen a und b. Da a und b verschieden und kleiner als die Ordnung r von ξ sind, gilt ξ
ps ( np )t
= ξ a = ξ b = ξ
pu ( np )v
.
und verschiedene Nullstellen von f 1 − f 2 . Daher hat das PoFolglich sind lynom f 1 − f 2 mindestens | G | viele Nullstellen, sodass Φ injektiv ist. Bisher ist gezeigt | H | ≥ | P|. Nun begründen wir ξa
ξb
| P| =
|G| + k k+1
.
√ Aus k ≤ r < r < p (man beachte (i) und (ii)) folgt, dass die k + 1 Monome X + a ∈ Z p [ X ] mit a ∈ {0, 1, . . . , k } verschieden sind. Folglich sind die beiden
Mengen P und T = dass gilt
(e0 , e1 , . . . , ek ) ∈ N0k+1 ; ∑ka=0 ea < | G | gleichmächtig, so| H | ≥ | P| = | T | .
8.4 Der AKS-Test *
163
Wir zeigen nun noch
|T| =
|G| + k k+1
.
Hieraus folgt dann die Behauptung in (iii). Dazu ordnen wir jeder (k + 1)elementigen Teilmenge { x0 , x1 , . . . , xk } von {1, . . . , | G | + k} (wobei wir ohne Einschränkung x0 < x1 < · · · < xk setzen) ein Tupel (e0 , e1 , . . . , ek ) zu, indem wir die ei aus den folgenden Gleichungen gewinnen: e0 + 1 = x 0 , e0 + e1 + 2 = x 1 , . . . , e0 + e1 + · · · + e k + k + 1 = x k . Da xk ≤ | G | + k, liegt das (k + 1)-Tupel (e0 , e1 , . . . , ek ) in der Menge T. Damit haben wir eine Abbildung von der Menge aller (k + 1)-elementigen Teilmengen von {1, . . . , | G | + k} in T erklärt. Diese Abbildung ist offenbar bijektiv. Folglich sind die beiden Mengen P und T gleichmächtig und (iii) ist begründet. Als Nächstes begründen wir: √ (iv) | H | > n |G| . In der folgenden Ungleichungskette man der Reihe nach die Ungleichun beachte gen bzw. Gleichungen | G | ≥ | G | + 1 (siehe (ii)), ( a+b b ) = ( a+a b ) für alle a, b ∈ N, k ≥ | G | (siehe (ii)), ( 2aa+1 ) > 2a+1 für alle a ∈ N >1 (siehe Aufgabe 8.7) und schließlich = log2 n + 1: (iii)
|G| + 1 + k
⎛ ⎞ |G| + 1 + k ⎠ =⎝ |G|
|G| + k ≥ k+1 k+1 ⎛ ⎞ √ √ √ 2 |G| + 1 | G | +1 ≥⎝ ⎠>2 ≥ 2 | G | = (2 ) | G | |G| √ √ √ = (2log2 n+1 ) |G| ≥ (2log2 n ) |G| = n |G| .
|H| ≥
Damit ist (iv) begründet. Schließlich zeigen wir: (v) Die Zahl n besitzt außer p keine weiteren Primteiler. Angenommen, n besitzt einen weiteren Primteiler. Wir zeigen, dass dann | H | ≤ √ | G| n . Dazu betrachten wir die Menge t n J := ps ; 0 ≤ s, t ≤ . |G| p Da n keine Potenz von p ist, gilt ps
| J| =
t n p
= ps
|G| + 1
t
2
n p
, falls (s, t) = (s , t ), sodass
> |G| .
164
8 Primzahltests
Hiernach muss es verschiedene Zahlen m1 , m2 ∈ J , m1 = m2 , geben, die aber modulo r kongruent sind, m1 ≡ m2 (mod r ). Ohne Einschränkung sei m1 > m2 , und m1 − m2 = r m mit einem m ∈ Z. Es gilt nun wegen X m1 − X m2 = X m2 ( X m1 − m2 − 1 ) = X m2 ( X r m − 1 ) = X m2 ( X r − 1 ) g für das Polynom g = X r(m−1) + X r(m−2) + · · · + X r + 1 ∈ Z [ X ] die Kongruenz X m1 ≡ X m2 (mod ( X r − 1)) . Zu h ∈ H existiert ein Polynom f ∈ ∏ka=0 ( X + a)ea ; ea ∈ N0 ⊆ Z p [ X ] mit h = f (ξ ). Es folgt wie beim Beweis der Gleichung (∗)
f ( X )m1 ≡ f ( X m1 ) ≡ f ( X m2 ) ≡ f ( X )m2 (mod ( X r − 1)) , also hm1 = hm2 . Daher ist h Nullstelle des Polynoms Q := Y m1 − Y m2 ∈ F p [Y ]. Weil das für alle Elemente aus H gilt, und weil Q = 0 ist, folgt √ √|G| √ √ n |G| |G| | H | ≤ deg( Q) = m1 ≤ p ≤n ≤ n |G| . p Das ist ein Widerspruch zu (iv). Damit ist (v) begründet. Wegen (v) ist n eine Potenz von p. Und nun beachte man Schritt (1) im AKSAlgorithmus, wonach n keine echte Potenz ist. Es folgt n = p. Bemerkung Unsere krude Analyse aus Lemma 8.10 und die Abschätzung r ≤ 5 führen auf eine Laufzeitabschätzung des beschriebenen AKS-Algorithmus von O(18 ). Genauere Analysen und Modifikationen liefern wesentlich bessere Laufzeiten.
8.5
Vergleich der Primzahltests
Wir geben eine Übersicht über die behandelten Primzahltests: Test
Art
Aufwand
Bemerkung
Probedivision
deterministisch
exponentiell
nur für kleine Zahlen
Fermat
probabilistisch
polynomial
kein echter Primzahltest
Miller-Rabin
probabilistisch
polynomial
das Mittel der Wahl
AKS
deterministisch
polynomial
theoretische Bedeutung
Die Probedivison wird benutzt, um kleine Primteiler einer Zahl zu finden. Der Fermat-Test wird in der Praxis kaum benutzt, das Prinzip aber ist wesentlich für die meisten bekannten Primzahltests. Der Miller-Rabin-Test ist das Mittel der Wahl
8.5 Vergleich der Primzahltests
165
für Primzahlen, wie sie etwa beim RSA-Verfahren benutzt werden, obwohl der Test nur probabilistisch ist. Der Miller-Rabin-Test ist nämlich deutlich schneller als der AKS-Test, und die Fehlerwahrscheinlichkeit von 4−k nach k Iterationen ist nach hinreichend vielen Iterationen genügend klein. Der AKS-Test hat eine sehr wichtige theoretische Bedeutung: Es gibt einen deterministischen Primzahltest mit polynomialer Laufzeit. In der Sprache von Kapitel 4 heißt das: Das mathematische Problem „prüfe, ob n eine Primzahl ist“ liegt in der Komplexitätsklasse P .
Aufgaben 8.1 Gibt es eine natürliche Zahl a = 1, sodass n = 15 starke Pseudoprimzahl zur Basis a ist? Welche natürlichen Zahlen zwischen 2 und 14 sind Zeugen für die Zusammengesetztheit von n = 15? 8.2 Es sei n := 225593397919. Wie man beispielsweise mit Maple überprüfen kann, ist n = 2 207 · 6 619 · 15 443 die Primfaktorzerlegung von n. (a) Schreiben Sie in einer Programmiersprache/-umgebung Ihrer Wahl ein Computerprogramm, das den Fermat’schen Primzahltest für obiges n und a = 2, 3, . . . , 1 000 durchführt. Was fällt Ihnen bei den Ergebnissen der Tests auf? (b) Versuchen Sie, die Ergebnisse aus (a) zu erklären. 8.3
Bestimmen Sie die kleinste Pseudoprimzahl zur Basis 2.
8.4 Begründen Sie: Sind p1 = 6 u1 + 1, p2 = 12 u2 + 1, p3 = 18 u3 + 1 mit u1 , u2 , u3 ∈ N Primzahlen, so ist c = p1 p2 p3 eine Carmichael-Zahl. 8.5 Begründen Sie die in dem Beispiel auf Seite 153 gemachte Aussage, dass die Ideale von Z genau die Mengen (k) = k Z, k ∈ N0 , sind. 8.6 Geben Sie einen polynomialen Algorithmus an, der prüft, ob eine natürliche Zahl n der Länge = log2 (n) + 1 Potenz einer anderen natürlichen Zahl ist. Gehen Sie wie folgt vor: (a) Geben Sie ein möglichst kleines Intervall an, in dem alle möglichen Exponenten liegen. (b) Es sei e ein möglicher Exponent, d. h., n = de mit einem zu bestimmenden −1 d ∈ N. Zeigen Sie zuerst 2 e ≤ d < 2 e und wenden Sie ein modifiziertes Bisektionsverfahren an. 8.7
Zeigen Sie mit Induktion oder anders (2aa+1) > 2a+1 für alle a ∈ N >1 .
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin Symmetrische Verschlüsselungsverfahren sind im Allgemeinen effizienter als Public-Key-Verfahren. Eine Möglichkeit, dies auszunutzen, aber dennoch das Problem der Schlüsselverwaltung zu bewältigen, haben wir bereits unter dem Stichwort Hybridverfahren kennengelernt: Chiffriere eine Nachricht mit einem (effizienten) symmetrischen Verfahren und den (kurzen) Schlüssel zum Dechiffrieren dieser Nachricht mit einem Public-Key-Verfahren, und sende dann diese beiden Teile an den Empfänger (siehe Abschnitt 7.1.5). Im vorliegenden Kapitel besprechen wir eine weitere trickreiche Variante, einen Schlüssel über einen unsicheren Kanal auszutauschen, um dann die Kommunikation mit einem symmetrischen Verfahren sichern zu können. Beim Diffie-Hellman-Schlüsselaustausch wird ein geheimer Schlüssel über eine öffentliche, nicht gesicherte Leitung ausgetauscht. Obwohl ein Angreifer den Austausch von Teilen des geheimen Schlüssels beobachten kann, ist er im Allgemeinen nicht in der Lage, aus diesen Teilen den Schlüssel selbst zu erzeugen. Die Sicherheit des Verfahrens ist mit der Schwierigkeit des diskreten Logarithmenproblems verbunden. Das ElGamal-Verschlüsselungsverfahren ist ein Public-Key-Verfahren, das mit dem Schlüsselaustausch von Diffie-Hellman zusammenhängt. Daher ist auch die Sicherheit des ElGamal-Verfahrens an die Schwierigkeit des diskreten Logarithmenproblems geknüpft. Während das Public-Key-Verfahren RSA in der Halbgruppe Z n realisiert ist, lässt sich das ElGamal-Verfahren in beliebigen endlichen abelschen Gruppen implementieren. Das ElGamal-Verfahren auf einer elliptischen Kurve – das ist eine endliche abelsche Gruppe (siehe Kapitel 13) – ist die derzeit wohl bestuntersuchte Alternative zum RSA-Verfahren. Als weiteres Public-Key-Verfahren stellen wir in diesem Kapitel das Rabin-Verfahren vor. Der öffentliche Schlüssel n dieses Verfahrens ist ein Produkt zweier Primzahlen. Das Rabin-Verfahren findet kaum praktische Anwendung, aber es ist dafür von theoretischem Interesse: Es lässt sich zeigen, dass das Brechen des Rabin-Verfahrens genauso schwierig ist wie das Faktorisieren von n. Beim RSAVerfahren ist dies nicht bekannt.
9.1 Der Diffie-Hellman-Schlüsselaustausch Es sei p eine Primzahl. Wir beschreiben den Diffie-Hellman-Schlüsselaustausch in der multiplikativen zyklischen Gruppe Z × p der Ordnung p − 1 (siehe Satz 6.12).
168
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
Jedes erzeugende Element der Gruppe Z × p wird eine Primitivwurzel modulo p × genannt. Nach Korollar 6.3 (b) besitzt Z p genau ϕ( p − 1) Primitivwurzeln modulo p, dabei bezeichnet ϕ die Euler’sche ϕ-Funktion. Beispiel × Es ist 2 eine Primitivwurzel modulo 13, d. h. 2 = Z13 , da o (2) = 12: k 2
k
1
2
3
4
5
6
7
8
9
10
11
12
2
4
8
3
6
12
11
9
5
10
7
1
Wegen Korollar 6.3 (a) sind die ϕ(12) = 4 Primitivwurzeln modulo 13 die vier 1
5
7
Elemente 2 = 2, 2 = 6, 2 = 11, 2
9.1.1
11
= 7.
Der Schlüsselaustausch nach Diffie-Hellman
Beim Diffie-Hellman-Schlüsselaustausch wird ein (geheimer) Schlüssel über einen öffentlichen, nicht gesicherten Kanal ausgetauscht, um dann mit einem symmetrischen Verfahren zu kommunizieren. Eine abstrakte Version des Verfahrens wurde als Anwendung auf Seite 77 dargestellt. ga
g ab
D ~ b ~ ~ ~~ ~~~
unsichere Leitung
"
( p, g) gb
H@ @@ @@ @@ g ab
Im hiesigen Kontext funktioniert das Verfahren so:
D und H einigen sich auf eine Primzahl p und eine Primitivwurzel g modulo p : Es ist ( p, g) öffentlich bekannt. a D wählt ein a ∈ {2, . . . , p − 2}, bestimmt g a ∈ Z × p und sendet A : = g an H (der Exponent a bleibt geheim). b H wählt ein b ∈ {2 , . . . , p − 2}, bestimmt gb ∈ Z × p und sendet B : = g an D (der Exponent b bleibt geheim).
D berechnet B a = g ab , H berechnet Ab = g ab .
Es haben dann D und H beide den geheimen Schlüssel g ab , obwohl g ab selbst nicht über den unsicheren Kanal ausgetauscht wurde. Entscheidend ist die einfache Tatsache, dass g ab = gba gilt. Vergleiche auch dazu die Anwendung auf Seite 77. Der geheime Schlüssel kann nun etwa dazu dienen, um mit einem symmetrischen Verfahren zu kommunizieren.
9.1 Der Diffie-Hellman-Schlüsselaustausch
169
Beispiel Es sei p = 17. Es ist 3 eine Primitivwurzel modulo 17. 7 7 13 D wählt a = 7 → 3 = 11 Austausch 4 4 H wählt b = 4 → 3 = 13 11
=4 . =4
D und H haben beide den geheimen Schlüssel 4.
Bemerkung × Bei diesem Beispiel mit g = 3 ∈ Z17 kann ein Angreifer natürlich sofort g ab aus g a und gb ermitteln. Es sind 7 = Logg (11) und 4 = Logg (13) leicht zu bestimmen, folglich ist g28 = 4 der geheime Schlüssel. In der Praxis ist p so zu wählen, dass das diskrete Logarithmenproblem (vgl. Abschnitt 6.2.3) schwierig zu lösen ist. 9.1.2 Das Diffie-Hellman-Problem Ein Angreifer, der den Schlüsselaustausch beobachtet, kennt die Größen p , g , g a , gb , aber nicht a , b , g ab . Das Diffie-Hellman-Problem lautet wie folgt: Berechne g ab aus den Größen g, g a und gb . Kann man das diskrete Logarithmenproblem lösen, so kann man auch das DiffieHellman-Problem lösen. Man bestimme die diskreten Logarithmen a und b aus den Gleichungen c = g a und d = gb und dann g ab mittels der dann bekannten Größen g, a, b. Es ist bisher unbekannt, ob man das Diffie-Hellman-Problem lösen kann, ohne diskrete Logarithmen berechnen zu können. 9.1.3 Der Mann in der Mitte Wir beschreiben einen möglichen Angriff auf das eben geschilderte Verfahren von Diffie und Hellman – der Mann in der Mitte. Die Teilnehmer D und H haben sich über einen unsicheren Kanal auf die Größen p und g geeinigt. Ein Angreifer M kann also das Paar ( p, g) beobachten. Noch vor dem Austausch weiterer Größen zwischen D und H stellt sich M zwischen die ahnungslosen D und H und geht dann wie folgt vor:
M fängt g a von D ab und leitet ein g a mit einem nur ihm bekannten a an H weiter (H denkt, g a kommt von D).
M fängt gb von H ab und leitet ein gb mit einem nur ihm bekannten b an D weiter (D denkt, gb kommt von H).
D bildet mit seinem a den vermeintlich geheimen Schlüssel gb a .
170
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
H bildet mit seinem b den vermeintlich geheimen Schlüssel g a b . Weil M sowohl g a als auch gb als auch die Größen a , b kennt, kann M eben falls die Schlüssel gb a und g a b bilden.
M kann und muss jeden Geheimtext von D mit gb a entschlüsseln, und mit g a b wieder verschlüsselt an H weiterreichen. Analog verfährt er mit Nachrichten von H an D. Wenn dem Mann M in der Mitte ein Text entgeht, so fliegt er wahrscheinlich auf. ga
D } W } } }} ~}}
gb a
ga
MW gb
gb
HA AA AA AA
ga b
Bemerkung Varianten dieses Angriffs sind eine Bedrohung für jedes Verfahren der asymmetrischen Kryptografie. Schwachstelle ist die Übergabe des öffentlichen Schlüssels. Wenn sich hier jemand dazwischen schalten kann, ist die gesamte Kommunikation ungesichert. Für dieses Problem ist keine mathematische Lösung bekannt (vielleicht auch gar nicht möglich). Es ist nur durch besondere Sorgfalt der Benutzer einzudämmen. 9.1.4
Weitere Gruppen für das Diffie-Hellman-Verfahren
Das Diffie-Hellman-Verfahren kann offenbar in jeder endlichen zyklischen Gruppe G = g implementiert werden. Um Effizienz und Sicherheit zu gewährleisten, sind solche Gruppen zu wählen, in denen die Gruppenoperationen leicht durchführbar sind, das diskrete Logarithmenproblem (eigentlich das Diffie-HellmanProblem) aber schwer zu lösen ist. Günstige Gruppen sind die bereits benutzten zyklischen Gruppen •
Z× p mit einer Primzahl p und
•
zyklische Untergruppen von elliptischen Kurven (diese werden wir in Kapitel 13 behandeln).
Ungünstig sind die (additiven) zyklischen Gruppen •
Z n mit n ∈ N.
In der additiven zyklischen Gruppe Z n ist das Berechnen diskreter Logarithmen effizient möglich. Wir begründen das. Man beachte zuerst, dass Potenzen wegen der additiven Schreibweise zu Vielfachen werden. Nach Korollar 6.3 (a) gilt:
g = Z n ⇔ ggT( g, n) = 1 .
9.2 Das ElGamal-Verschlüsselungsverfahren
171
Aus der Kenntnis von g und c = a · g kann leicht der diskrete Logarithmus a = Logg c berechnet werden. Es ist hierzu nur die Kongruenzgleichung: X g ≡ c (mod n) zu lösen. Dies ist mit mithilfe des euklidischen Algorithmus aus Satz 4.10 effizient machbar: Man bestimme Zahlen x, y ∈ Z mit 1 = ggT( g, n) = x g + y n . Es gilt dann c = ( x c) g + y c n, also a g ≡ c (mod n) mit a := x c. Folglich ist nur die ganze Zahl x zu bestimmen, um den diskreten Logarithmus a zu erhalten. Wegen ggT( g, n) = 1 ist a + nZ nach Korollar 4.19 die Menge aller Lösungen. Bemerkung Man erkennt hier, dass es nicht die Struktur der Gruppe ist, die das DLP schwierig macht – alle zyklischen Gruppen derselben Ordnung sind isomorph. Es ist vielmehr die Art der Beschreibung, die das bewirkt.
9.2 Das ElGamal-Verschlüsselungsverfahren Das ElGamal-Verfahren ist verwandt mit dem Diffie-Hellman-Verfahren. Aber es ist ein asymmetrisches Verschlüsselungsverfahren und kein Schlüsselaustausch. Es gibt einen öffentlichen Schlüssel ( p, g, A) und einen geheimen Schlüssel a. Wir schildern die Funktionsweise. C=( B, c)
G
! ( p, g, A)
E
9.2.1 Schlüsselerzeugung Gegeben seien eine Primzahl p, eine Primitivwurzel g modulo p und ein festes a ∈ {2, . . . , p − 2}. Wir setzen A := g a . Beim ElGamal-Verschlüsselungsverfahren sind •
( p, g, A) der öffentliche Schlüssel;
•
a (das a mit A = g a ) der geheime Schlüssel des Empfängers E.
9.2.2 Verschlüsselung Der Sender G sendet an E eine verschlüsselte Nachricht. Dazu besorgt sich G den öffentlichen Schlüssel ( p, g, A) von E. Es sei N ∈ Z × p der Klartext.
G wählt zufällig eine Zahl b ∈ {2, . . . , p − 2}. b × G berechnet B := gb ∈ Z × p und c : = A N ∈ Z p .
G sendet den Geheimtext C = ( B, c) an E.
172
9.2.3
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
Entschlüsselung
Erhält der Empfänger E vom Sender G den Geheimtext C = ( B, c), so berechnet er mit seinem geheimen Schlüssel a das Element B− a c. Es gilt nämlich wegen B = gb , c = Ab N und A = g a : B− a c = g− a b Ab N = g− a b g a b N = N , und damit erhält E den Klartext N ∈ Z × p zurück. Beispiel Es sei p = 17. Das Element g = 3 ist eine Primitivwurzel modulo 17. Der Empfänger E wählt als geheimen Schlüssel a = 3 und hat somit den öffentlichen Schlüssel (17, 3, 10). × . Er wählt b = 2 und erhält den Der Sender G verschlüsselt den Klartext 5 ∈ Z17 Geheimtext ( B, c) = (9, 7), den er an E sendet. −3 × durch Berechnen von Der Empfänger E erhält nun wegen 9 = 8 in Z17 9
−3
·7 = 8·7 = 5
den Klartext 5 zurück.
Man kann das ElGamal-Verfahren auf beliebige endliche zyklische Gruppen G = g verallgemeinern. Wir werden das Verfahren in Kapitel 14 für zyklische Untergruppen von elliptischen Kurven erneut schildern. 9.2.4
Zur Sicherheit des ElGamal-Verfahrens
Wir versetzen uns in die Situation eines Angreifers: Ein Angreifer, der den Austausch einer verschlüsselten Nachricht beobachtet, kennt die Größen g , g a , gb , c = g a b N . Kann der Angreifer A das Diffie-Hellman-Problem lösen, d. h., A kann aus g, g a und gb das Element g a b bestimmen, so kann er auch das ElGamal-Verfahren brechen. Er berechnet N = g−ab c. Kann andererseits A das ElGamal-Verfahren brechen, d. h., A kann N aus der Gleichung c = g a b N bestimmen, so kann er auch das Diffie-Hellman-Problem lösen. Er berechnet g a b = N −1 c . Damit ist gezeigt: Das Brechen des ElGamal-Verfahrens ist algorithmisch äquivalent zum Lösen des Diffie-Hellman-Problems. Das Diffie-Hellman-Problem kann gelöst werden, wenn man diskrete Logarithmen berechnen kann. Um gegen die bekannten Algorithmen zum Berechnen der diskreten Logarithmen gewappnet zu sein, sollte die Primzahl, die beim ElGamal-Verfahren in Z × p benutzt wird, etwa von der Größenordnung 1 024 Bit sein. Wir werden in Kapitel 10 Algorithmen zum Berechnen diskreter Logarithmen besprechen.
9.3 Das Rabin-Verschlüsselungsverfahren *
173
Bemerkung Durch die Tatsache, dass die Primzahl p beim ElGamal-Verfahren in Z × p etwa von der Größenordnung von n beim RSA-Verfahren ist, ist das ElGamal-Verfahren in b b Z× p aufwändiger als das RSA-Verfahren, da B = g und c = A N zu berechnen e sind. Beim RSA-Verfahren ist hingegen nur N zu berechnen. Implementiert man aber das Verfahren von ElGamal auf einer elliptischen Kurve, wobei man etwa die gleichen Sicherheitsanforderungen stellt, so ist ElGamal sogar effizienter als RSA, weil man mit deutlich kleineren Parametern auskommt. 9.2.5 Ein Angriff Wird der Exponent b, den der Sender zum Chiffrieren seiner Nachricht N benutzt, mehrfach zur Verschlüsselung von Nachrichten verwendet, so kann ein Klartext durch einen Known-Plain-Text-Angriff ermittelt werden. Einem Angreifer A ist ein zusammengehöriges Klartext-Geheimtext-Paar (N , C) bekannt. Folglich kennt A auch das Element c = Ab N . Damit kann A aus einem weiteren Geheimtext C = ( B, c ), der mit demselben b erzeugt wurde, den dazugehörigen Klartext N aus c = Ab N ermitteln; er berechnet dazu: c −1 N c = A − b N −1 N A b N = N . Folglich kann N aus c, c und N ermittelt werden. Es ist also bei jedem Durchgang ein neues b aus der Menge {2, . . . , p − 2} zu wählen. Das hat einen weiteren Vorteil: Man kann zweimal denselben Klartext verschicken, ohne dass ein Angreifer das merkt. Die Geheimtexte sind verschieden.
9.3 Das Rabin-Verschlüsselungsverfahren * Das Problem, eine natürliche Zahl in ein Produkt von Primzahlen zu faktorisieren, wird als außerordentlich schwierig angesehen. Ist n ein Produkt von zwei Primzahlen p und q der Größenordnung 512 Bit, wie sie beim RSA-Verfahren verwendet werden, so braucht ein moderner Rechner unvertretbar lange Zeit, um die Primzahlen p und q zu ermitteln. Wir werden moderne und effiziente Faktorisierungsalgorithmen in Kapitel 11 vorstellen. Es ist aber offen, ob nicht bereits in nächster Zukunft ein Verfahren entdeckt wird, mittels dessen die Faktorisierung deutlich effizienter möglich ist. Das Verfahren von Rabin ist ein Public-Key-Verfahren mit einem öffentlichen Schlüssel n, der ein Produkt zweier Primzahlen ist. Das Verfahren zu brechen ist algorithmisch äquivalent zur Faktorisierung der Zahl n. 9.3.1 Quadratwurzeln modulo n Es sei n ∈ N. Ein Element b ∈ Z × n heißt eine Quadratwurzel modulo n von 2
a ∈ Z× n , falls b = a; das Element a nennt man dann ein Quadrat modulo n.
174
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
Beispiel × In Z15 = {1, 2, 4, 7, 8, 11, 13, 14} sind die Elemente 1 und 4 die Quadrate. Das Element 1 hat die Quadratwurzeln 1, 4, 11, 14 und das Element 4 die Quadratwurzeln 2, 7, 8, 13. × Es ist kein Zufall, dass jedes Quadrat in Z15 genau vier Wurzeln hat.
Lemma 9.1 Es sei n = p1 · · · pt mit verschiedenen ungeraden Primzahlen p1 , . . . , pt . Ein Element t a ∈ Z× n besitzt keine oder genau 2 Quadratwurzeln. × × Beweis. Wegen Lemma 7.5 können wir Z × n mit Z p1 × · · · × Z pt identifizieren. Ist × × b = (b1 , . . . , bt ) ∈ Z p1 × · · · × Z pt eine Quadratwurzel von a = ( a1 , . . . , at ), so ist offenbar jedes Element von W := {(±b1 , . . . , ±bt )} eine Quadratwurzel von × a. Ist nun c = (c1 , . . . , ct ) ∈ Z × p1 × · · · × Z pt eine weitere Quadratwurzel von a = ( a1 , . . . , at ), so ist ci eine Nullstelle des Polynoms X 2 − ai über dem Körper Z pi für alle i = 1, . . . , t. Somit ist ci = ±bi für alle i = 1, . . . , t (siehe Satz 3.9), d. h. c ∈ W. Damit ist W die Menge aller Quadratwurzeln, und es gilt |W | = 2t .
Bemerkung Wie der Beweis zeigt, erhält man die Quadratwurzeln b modulo n von a folgendermaßen aus den Quadratwurzeln von ai modulo pi für i = 1, . . . , t: Gegeben ist ein Element (b1 , . . . , bt ) ∈ W. Es gilt folglich bi2 ≡ ai (mod pi ) für i = 1, . . . , t. Bestimme mit dem chinesischen Restsatz 7.4 ein Element b ∈ Z mit b ≡ bi (mod pi ) für i = 1, . . . , t . Es ist dann b eine Quadratwurzel von a modulo n.
Wir halten für spätere Zwecke eine einfache Folgerung fest. Korollar 9.2 Es sei n = p1 · · · pt mit verschiedenen ungeraden Primzahlen p1 , . . . , pt . Dann existieϕ(n) ren genau 2t Quadrate in Z × n. Beweis. Wir betrachten die Abbildung × Zn q: a
→ Z× n . → a2
t Jedes Quadrat b ∈ Z × n hat nach Lemma 9.1 genau 2 Quadratwurzeln, d. h. − 1 t × |q (b)| = 2 . Da Z n die disjunkte Vereinigung von Mengen der Form q−1 (b) × mit einem Quadrat b in Z × n ist, erhalten wir für die Anzahl der Quadrate in Z n :
| q (Z × n )| = Das ist die Behauptung.
ϕ(n) |Z × n| = t . − 1 2 |q (b)|
9.3 Das Rabin-Verschlüsselungsverfahren *
175
9.3.2 Quadratwurzeln modulo p ≡ 3 (mod 4) Es sei p eine Primzahl kongruent 3 modulo 4. Ist a ein Quadrat in Z × p, a = b p +1 4
für ein b ∈ Z × p , so gilt für das Element a p +1 4
2
∈ Z× p (wegen p ≡ 3 (mod 4) ist
∈ N): a
p +1 4
=b
p +1 2
=b
p −1 2 +1
da nach dem Satz 6.9 (a) von Euler gilt o (b das Element a p := a
=b
p −1 2
p +1 4
p −1 2
b = ±b ,
) ≤ 2, d. h. b
p −1 2
= ±1. Es folgt, dass
∈ Z× p
eine Quadratwurzel des Quadrates a modulo p ist. Damit sind ± a p die beiden (einzigen) Quadratwurzeln von a modulo p. Man erhält die Wurzeln modulo einer Primzahl p ≡ 3 (mod 4) somit durch einfaches Potenzieren. Das wird das Rabin-Verfahren vereinfachen. Bemerkung Für Primzahlen p ≡ 5 (mod 8) kann man Quadratwurzeln ebenfalls relativ einfach gewinnen. Im Fall p ≡ 1 (mod 8) gibt es spezialisierte Algorithmen, wie etwa den von Tonelli und Shanks. Mehr dazu ist in [7, § 1.5] zu finden.
9.3.3 Das Verfahren Das Rabin-Verfahren ist ein Public-Key-Verfahren. Der Empfänger R gibt seinen öffentlichen Schlüssel bekannt und behält sich einen geheimen Schlüssel. Schlüsselerzeugung.
Für die Schlüsselerzeugung geht R wie folgt vor:
R wählt zwei Primzahlen p und q mit p, q ≡ 3 (mod 4) und p = q. Es ist n = p q der öffentliche Schlüssel. Es ist ( p, q) der geheime Schlüssel.
Der Teilnehmer T möchte an den Empfänger R eine Nachricht senden. C=N 2
T
! n= p q
R
176
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
Verschlüsselung. Der Teilnehmer T geht für die Chiffrierung seines Klartextes N wie folgt vor:
T besorgt sich den öffentlichen Schlüssel n von R. × T stellt seinen Klartext N als Element von Z × n dar, d. h. N ∈ Z n .
T berechnet den Geheimtext C = N 2 in Z × n. T sendet C an R.
Man beachte, dass der Geheimtext C ∈ Z × n wegen n = p q, p = q, nach Lemma hat. Der Klartext N ist eine dieser vier Wurzeln. 9.1 vier Quadratwurzeln in Z × n Die vier Quadratwurzeln b1 , . . . , b4 modulo n erhält man mit dem chinesischen Restsatz aus den Quadratwurzeln w1 , . . . , w4 modulo p und modulo q (vgl. die Bemerkung auf Seite 174). Und die Quadratwurzeln modulo p und modulo q sind einfach zu bestimmen, da p und q kongruent 3 modulo 4 sind. Entschlüsselung. Der Empfänger R geht zur Entschlüsselung des von T erhaltenen Geheimtextes C wie folgt vor: p +1
q +1
× R berechnet a p = C 4 ∈ Z × p und aq = C 4 ∈ Z q und erhält mit ± a p und ± aq die vier Quadratwurzeln von C modulo p und q.
R ermittelt mit dem chinesischen Restsatz aus den vier Quadratwurzeln ± a p modulo p und ± aq modulo q von C die vier Quadratwurzeln b1 , . . . , b4 von C modulo n (vgl. die Bemerkung zu Lemma 9.1): ( a p , aq ) → b1 , ( a p , − aq ) → b2 , (− a p , aq ) → b3 , (− a p , − aq ) → b4 . R entscheidet, welche der vier Wurzeln b1 , . . . , b4 der Klartext N ist.
Bemerkung Die Entschlüsselung liefert neben einem richtigen drei falsche Ergebnisse. Das ist ein entscheidender Nachteil des Rabin-Verfahrens. Man könnte die Entschlüsselung eindeutig machen, indem man nur Klartexte mit einer bestimmten Struktur zulässt. Aber dadurch würde dann das Rabin-Verfahren nicht mehr algorithmisch äquivalent zum Faktorisierungsproblem sein (siehe Abschnitt 9.3.4). Beispiel Es seien p = 3 und q = 7. Damit ist n = 21 der öffentliche Schlüssel von R. Der × senden und berechnet dazu Teilnehmer T will an R die Nachricht N = 10 ∈ Z21 2
C = 10 = 100 = 16 . R erhält von T den Geheimtext C = 16 und ermittelt mittels der (geheimen) Primzahlen p = 3 und q = 7 die vier Quadratwurzeln von 16 modulo 21; es gilt: 16
p +1 4
= 16 = 1 ∈ Z3× und 16
q +1 4
= 16 = 4 ∈ Z7× . 2
9.3 Das Rabin-Verschlüsselungsverfahren *
177
Es sind also •
a3 = 1 und − a3 = −1 = 2 die Quadratwurzeln modulo 3 von 16 und
•
a7 = 4 und − a7 = −4 = 3 die Quadratwurzeln modulo 7 von 16.
Mit dem chinesischen Restsatz ermittelt man zu den vier Kombinationen w1 = (1, 4) , w2 = (1, 3) , w3 = (2, 4) , w4 = (2, 3) die vier Quadratwurzeln b1 = 4 , b2 = 10 , b3 = 11 , b4 = 17 . Der Klartext N ist also unter den vier Wurzeln 4, 10, 11, 17 zu suchen.
Wir bemerken noch, dass es wegen Korollar 9.2 in Z × p q mit p = q genau Quadrate gibt, sodass die Geheimtextmenge umfangreich ist.
( p −1) ( q −1) 4
9.3.4 Zur Sicherheit des Rabin-Verfahrens Ein Angreifer, der einen Geheimtext C ∈ Z × n abgefangen hat, steht vor dem Problem, die Quadratwurzeln von C zu bestimmen. Kann er die Zahl n faktorisieren, d. h. die Primzahlen p und q bestimmen, so kann er ebenso wie der rechtmäßige Empfänger R den Geheimtext C entschlüsseln. Interessant ist, dass hiervon auch die Umkehrung gilt. Lemma 9.3 Es seien p und q verschiedene (ungerade) Primzahlen und n = p q. Kann man zu jedem Quadrat c modulo n eine Quadratwurzel a modulo n bestimmen, so kann man n faktorisieren. Beweis. Man wähle zufällig eine Zahl x ∈ {1, . . . , n − 1}. Ohne Einschränkung gelte ggT( x, n) = 1. Zu c = x2 ∈ Z × n bestimme man eine Quadratwurzel a modulo n mit a ∈ {1, . . . , n − 1}: Es ist a eine der vier Quadratwurzeln modulo n von c, und es gilt 2 2 a2 = x 2 ∈ Z × n ⇒ p q = n | (a − x ) = (a − x) (a + x) .
Nun gibt es vier Möglichkeiten (beachte, dass | a − x | ∈ {0, . . . , n − 1}): p | a − x , q | a − x ⇒ ggT( a − x, n) = n , p | a + x , q | a + x ⇒ ggT( a − x, n) = 1 , p | a − x , q | a + x ⇒ ggT( a − x, n) = p , p | a + x , q | a − x ⇒ ggT( a − x, n) = q .
178
9 Die Verfahren von Diffie und Hellman, ElGamal und Rabin
Da jeder dieser vier Fälle mit der gleichen Wahrscheinlichkeit eintritt, ist d = ggT( a − x, n) mit einer Wahrscheinlichkeit von 0.5 ein echter Teiler von n. Nach r Runden ist die Zahl n also mit der Wahrscheinlichkeit von 1 − (1/2)r in ihre Primfaktoren zerlegt. Damit ist begründet, dass die beiden Probleme, •
n zu faktorisieren und
•
Quadratwurzeln modulo n zu bestimmen,
(probabilistisch) algorithmisch äquivalent sind. Bemerkung Das Rabin-Verfahren kann durch einen Chosen-Cipher-Text-Angriff gebrochen werden. Ein Angreifer A wählt ein x ∈ {1, . . . , n − 1} und lässt den Geheimtext C = x2 von R entschlüsseln. Dabei erhält A die Quadratwurzel a modulo n von R als mutmaßlichen Klartext zurück. Wie im Beweis zu Lemma 9.3 bestimmt nun A mit einer Wahrscheinlichkeit von 0.5 einen Primteiler von n, indem er den ggT der Zahlen n und a − x bestimmt. Wiederholt A den Angriff nur oft genug, so erhält A die Primfaktoren p und q. Auch wegen dieses Angriffs ist das RabinVerfahren für die Praxis nicht relevant. Aufgaben 9.1 Der Empfänger E erhält den ElGamal-Chiffretext ( B, c) = (6, 6). Der öffentliche Schlüssel von E ist ( p, g, A) = (13, 2, 11). Bestimmen Sie den zugehörigen Klartext. 9.2 Es sei n = 589 ein öffentlicher Schlüssel beim Rabin-Verfahren. Bestimmen Sie aus dem Geheimtext C = 442 alle möglichen Klartexte. 9.3 Es ist n = 124573 der öffentliche Schlüssel beim Rabin-Verfahren. Ein An2 greifer lässt bei einem Chosen-Cipher-Text-Angriff den Text 113 entschlüsseln und erhält dabei den mutmaßlichen Klartext 110459 zurück. Bestimmen Sie hiermit die Primfaktorzerlegung von n.
10 Diskrete Logarithmen Die Sicherheit vieler kryptografischer Verfahren basiert auf der Schwierigkeit, diskrete Logarithmen zu bestimmen. Beispiele sind der Diffie-Hellman-Schlüsselaustausch und das ElGamal-Verfahren, auch in der Variante als SignaturVerfahren, das wir in Kapitel 12 besprechen werden. Das diskrete Logarithmenproblem ist daher von großer Bedeutung für die Kryptologie. Wir behandeln in diesem Kapitel die zwei wichtigsten, nicht spezialisierten Algorithmen, die zu einem Gruppenelement a einer zyklischen Gruppe g kleiner Ordnung den diskreten Logarithmus x, d. h. die Potenz x mit a = g x bestimmen – den Baby-Step-Giant-Step-Algorithmus von Shanks und Pollards -Methode. Damit erhalten wir ein grobes Maß für die Sicherheit solcher kryptografischer Verfahren. In einem letzten Abschnitt zeigen wir, dass die Wahl einer großen Gruppenordnung | G | alleine nicht vor den Algorithmen von Shanks und Pollard schützt. Entscheidend ist letztlich der größte Primteiler der Gruppenordnung | G |. Dieser muss genügend groß gewählt werden. Andernfalls greifen die Algorithmen von Shanks und Pollard zusammen mit der Reduktion der Gruppe G auf Gruppen von der Ordnung der Primteiler von | G |.
10.1 Das diskrete Logarithmenproblem Sowohl das Diffie-Hellman- als auch das ElGamal-Verfahren lassen sich in einer beliebigen endlichen zyklischen Gruppe G = g realisieren. Beide Verfahren sind unsicher, wenn diskrete Logarithmen berechnet werden können, d. h.: Aus a = g x und g kann x berechnet werden. In diesem Abschnitt bezeichne G eine zyklische Gruppe und g ∈ G ein erzeugendes Element von G, also G = g. 10.1.1 Der diskrete Logarithmus Das diskrete Logarithmenproblem, kurz DLP, lautet: Gegeben ist a ∈ G = g, gesucht ist x ∈ Z mit a = g x . Das kleinste nichtnegative solche x heißt diskreter Logarithmus von a zur Basis g; wir schreiben hierfür x = Logg a. Beispiel 6 × Es ist 2 eine Primitivwurzel modulo 13, d. h. Z13 = 2. Wegen 2 = 12 und 8
2 = 9 gilt:
Log2 (12) = 6 und Log2 (9) = 8 .
180
10.1.2
10 Diskrete Logarithmen
Enumeration
Die naive Herangehensweise, nämlich das sukzessive Berechnen von g , g2 , g3 , g4 , . . . und Vergleich mit a = g x in jedem Schritt, hat Laufzeit O(| G |), ist also nicht sehr effizient. Diese Methode nennt man auch Enumeration. Wir besprechen im Folgenden bessere Methoden zur Berechnung diskreter Logarithmen.
10.2
Der Baby-Step-Giant-Step-Algorithmus von Shanks
Der Baby-Step-Giant-Step-Algorithmus von Shanks ist eine Methode zur schnellen Berechnung diskreter Logarithmen. Die Aufgabenstellung lautet: Gegeben ist a ∈ G = g, gesucht ist x = Logg ( a). 10.2.1
Das Verfahren
Benötigt wird eine obere Schranke für die Gruppenordnung, wir setzen: | G | = min k ∈ N ; k2 ≥ | G | , n := es ist dann n2 größer oder gleich | G |. Für jedes a ∈ G gilt somit x = Logg ( a) ≤ n2 . Wir dividieren die (gesuchte) Zahl x durch die Zahl n = | G | mit Rest: x = q n + r , wobei r ∈ {0, . . . , n − 1} und q ∈ {0, . . . , n} . Der Clou ist hierbei, dass das Element q wegen der Wahl von n in der Menge {0, . . . , n} liegt. Wir erhalten a = g x = gq n+r , also a g−r = gq n . Wir ermitteln aus dieser letzten Formel nun r und q und damit den gesuchten diskreten Logaritmus x = q n + r. Für r gibt es n Möglichkeiten, für q sind es n + 1 Möglichkeiten. Wir erhalten zwei Listen von Gruppenelementen. a g −r = g q n QQQ k k QQQ kk QQQ kkk k k QQQ k k k k Q( k u − r gq n , q = 0, . . . , n a g , r = 0, . . . , n − 1 Die Baby-Step-Liste: die Giant-Step-Liste:
a g 0 , a g −1 , a g −2 , . . . , a g − n +1 g0 ,
gn ,
g2n , . . . ,
gnn .
und
10.3 Pollards -Methode *
181
Nun vergleicht man beide Listen. Ein gemeinsames Element a g−r = gq n in beiden Listen liefert die Zahlen r und q und damit den diskreten Logarithmus x = q n + r = Logg ( a) . Wir führen den Algorithmus von Shanks an einem Beispiel durch. Beispiel × = 5, also g = 5, und es sei a = 31. Wir bestimmen x = Logg ( a). Es sei G = Z97 × 2 Wegen 9 < |Z97 | = 96 ≤ 102 gilt n = | G | = 10. Wir erhalten die Baby-StepListe: r 31 · 5
−r
0
1
2
3
4
5
6
7
8
9
31
45
9
60
12
80
16
42
86
56
und die Giant-Step-Liste: q 5
q 10
0
1
2
3
4
5
6
7
8
9
10
1
53
93
79
16
72
33
3
62
85
43
Für r = 6 und q = 4 erhalten wir dasselbe Ergebnis 16. Folglich ist x = q n + r = 4 · 10 + 6 = 46 = Log5 (31) .
10.2.2 In der Praxis Auf einem Rechner wird man die Giant-Step-Liste im Voraus berechnen, sie ist unabhängig von der Größe a, dessen diskreter Logarithmus berechnet werden soll. Die Giant-Step-Liste kann also mehrfach benutzt werden. Anschließend berechnet man die Baby-Step-Liste schrittweise und vergleicht nach Berechnen jedes einzelnen Wertes diesen mit den Werten aus der GiantStep-Liste – das Suchen wird vereinfacht, wenn die Giant-Step-Liste sortiert ist. Man braucht ≤ 2 n Gruppenoperationen und muss n Gruppenelemente speichern. Wir halten fest: Lemma 10.1 Die Komplexität des Baby-Step-Giant-Step-Algorithmus zur Bestimmung des diskreten Logarithmus in einer zyklischen Gruppe G ist O( | G |). Wegen des Zeit- und Speicherbedarfs ist der Baby-Step-Giant-Step-Algorithmus bei der Größenordnung von | G | > 2160 nicht mehr einsetzbar – bei einer zyklischen Gruppe der Größenordnung 280 ist bereits ein Speicher von einem Terabyte nötig, falls man jedes Gruppenelement als ein Byte darstellen kann.
10.3 Pollards -Methode * Deutlich weniger speicheraufwendig als der Baby-Step-Giant-Step-Algorithmus ist Pollards -Methode, die wir nun schildern. Die Aufgabenstellung lautet wie oben: Gegeben ist a ∈ G = g, gesucht ist x = Logg ( a).
182
10.3.1
10 Diskrete Logarithmen
Das Verfahren
Pollards -Methode besteht aus drei Schritten: 1. Schritt. Zerlege die Menge G in drei (etwa gleich große) Teilmengen G1 , G2 , G3 mit 1 ∈ G2 . 2. Schritt. Bestimme ganze Zahlen s, t mit as = gt wie folgt: Erzeuge die Folge x0 = 1, x1 , x2 , . . . durch ⎧ ⎨ a xi , falls xi ∈ G1 x i +1 : = xi2 , falls xi ∈ G2 . ⎩ g xi , falls xi ∈ G3 Offenbar gilt x1 ∈ { a, g}, x2 ∈ { a2 , a g, g2 }, ..., d. h. xi = aαi g βi mit αi , β i ∈ N0 für alle i = 1, 2, . . . . Da G endlich ist, | G | = n ∈ N, gibt es Indizes i, j, i < j mit xi = x j , und es gilt: x i = x j ⇔ a αi g β i = a α j g β j ⇔ a αi − α j = g β j − β i . Damit haben die Zahlen s := αi − α j und t := β j − β i die gewünschte Eigenschaft.
Bemerkung Im Allgemeinen kann man für s und t betragsmäßig kleinere Zahlen wählen. Dazu reduziere man αi − α j und β j − β i modulo n, d. h. man teilt αi − α j und β j − β i durch n mit Rest und erhält: αi − α j = qs n + s und β j − β i = qt n + t . Für die so erhaltenen Zahlen s, t gilt s, t ∈ {0, . . . , n − 1}. Wegen an = 1 = gn (beachte den Satz 6.9 von Euler) gilt weiter: a s = a q s n + s = a αi − α j = g β j − β i = g q t n + t = g t . Auf diese Weise erhält man die kleinsten positiven Zahlen s und t mit as = gt . Bei dieser Form des Algorithmus sind die Größen x0 , x1 , . . . , xi , . . . , x j zu speichern. Nach dem Geburtstagsparadoxon (siehe Aufgabe 2.2) erhält man die Zah len i < j mit xi = x j etwa nach | G | Schritten. Das Geburtstagsparadoxon ist hier anwendbar, weil die Folge ( xi ) wegen der Wahl der Rekursion einer Zufallsfolge sehr ähnlich ist. Zeit- und Speicherkomplexität sind damit O( | G |). Wir werden durch eine Modifikation des zweiten Schrittes im Abschnitt 10.3.2 die Speicherkomplexität auf O(1) bringen.
10.3 Pollards -Methode *
183
3. Schritt. Bestimme den diskreten Logarithmus x = Logg ( a) wie folgt: Mit den Zahlen s und t aus dem 2. Schritt gilt wegen a = g x und (ii) in Lemma 6.1 (b): gt = as = gsx , d. h. s x ≡ t (mod n) . Folglich ist das gesuchte x eine Lösung der Kongruenzgleichung s X ≡ t (mod n) . Die Lösungsmenge dieser Kongruenzgleichung ist nach Korollar 4.19 die Menge v + nd Z, wobei d = ggT(s, n) und v die ohne Einschränkung kleinste positive Lösung der Kongruenzgleichung ist. Wir erhalten v wie in der Bemerkung nach Korollar 4.19 geschildert mit dem euklidischen Algorithmus. Da der diskrete Logarithmus x kleiner als n ist, findet man x unter den d Zahlen v, v+
n n n , v + 2 , . . . , v + ( d − 1) . d d d
Enumeration, d. h. Bestimmen von gv+k d , k = 0, . . . , d − 1, und Vergleichen des Ergebnisses mit a liefert x. n
Bemerkung Falls d groß sein sollte, so kann es durchaus effizienter sein, das Verfahren von vorne zu beginnen, um ein kleines d zu erhalten, als die Enumeration durchzuführen. Beispiel × = 2. Es ist also g = 2, und es sei Gegeben ist die zyklische Gruppe G = Z13 a = 9. Wir bestimmen x = Logg ( a) mit Pollards -Methode. 1. Schritt: Wir wählen G1 := {1, 4, 7, 10} , G2 := {2, 5, 8, 11} , G3 := {3, 6, 9, 12} . 2. Schritt: Wir bestimmen nun die Folgenglieder x1 , . . . , xi , . . . , x j , sodass xi = x j : i
0
1
2
3
4
5
6
7
xi
1
9
5
12
11
4
10
12
αi
0
1
1
2
2
4
5
6
βi
0
0
1
2
3
6
6
6
Stop!
Mit den Größen i = 3 , j = 7 , αi = 2 , α j = 6 , β i = 2 , β j = 6 erhalten wir s = −4 (bzw. s = 8) und t = 4. 3. Schritt: Als Lösungsmenge der Kongruenzgleichung
(−4) X ≡ 4 (mod 12)
184
10 Diskrete Logarithmen
erhalten wir wegen d = ggT(−4, 12) = 4 und da v = 2 eine Lösung der Kongruenzgleichung ist die Menge 2 + 12 4 Z = 2 + 3 Z. Folglich ist der diskrete Logarithmus x = Logg ( a) unter den Zahlen 2 , 5 , 8 , 11 zu suchen. Man testet: 2
5
8
2 = 4, 2 = 6, 2 = 9, sodass x = Logg ( a) = 8 gilt. 10.3.2
Modifikation des zweiten Schrittes
Bei der beschriebenen Version von Pollards -Methode sind im 2. Schritt für jedes i die Tripel ( xi , αi , β i ) zu speichern. Wir geben nun eine Modifikation dieses 2. Schrittes an, sodass fast kein Speicher benötigt wird. Dazu begründen wir vorab: Lemma 10.2 Es seien X eine endliche Menge und f : X → X eine Abbildung. Für jede Folge ( xi ) in X mit xi+1 = f ( xi ) gibt es ein i ∈ N mit xi = x2i . Beweis. Es seien x1 , x2 , . . . , xv , . . . , xv+ p−1 verschieden, aber xv+ p = xv . Dann gilt für alle a ∈ N: xv+ap = xv . Es folgt x j+ap = x j für alle j ≥ v. Wähle nun ein i ≥ v mit p | i, etwa i = d p. Dann gilt x2i = xi+i = xi+dp = xi . Damit ist ein passendes i gefunden. Bemerkung Nach dem Beweis dieses Lemmas kreisen die Folgenglieder xi nach einer evtl. Vorperiode x1 , . . . , xv mit der Periode p. Vergleiche diese Veranschaulichung mit dem griechischen Buchstaben . Wir nutzen Lemma 10.2 um Schritt 2 zu modifizieren. 2. Schritt – modifiziert. Wir bestimmen ganze Zahlen s, t mit as = gt . Dazu er zeugen wir erneut die Folgenglieder x0 = 1, x1 , x2 , . . . ∈ aαi g βi ; αi , β i ∈ N0 , die durch folgende Vorschrift gegeben sind: ⎧ ⎨ a xi , falls xi ∈ G1 x i +1 : = xi2 , falls xi ∈ G2 . ⎩ g xi , falls xi ∈ G3 Nun speichern wir aber nicht alle Tripel ( xi , αi , β i ), sondern gehen wie folgt vor: In jedem Schritt werden zwei Werte berechnet, nämlich xi+1 aus xi und x2 i+2 aus x2 i , ausführlicher:
10.3 Pollards -Methode *
185
Berechne ( x1 , α1 , β 1 ) und ( x2 , α2 , β 2 ). Falls x2 = x1 , Stop!, sonst: Berechne ( x2 , α2 , β 2 ) und ( x4 , α4 , β 4 ). Falls x4 = x2 , Stop!, sonst: Berechne ( x3 , α3 , β 3 ) und ( x6 , α6 , β 6 ). Falls x6 = x3 , Stop!, sonst: Berechne ( x4 , α4 , β 4 ) und ( x8 , α8 , β 8 ) usw.
Da G endlich ist, gibt es nach Lemma 10.2 einen Index i mit x2 i = xi , der Algorithmus bricht somit ab. Wie im obigen Schritt 2 erhalten wir hieraus die gesuchten Zahlen s und t: s := αi − α2 i und t := β 2 i − β i . Der Speicherbedarf wird durch die Modifikation sehr gering. Die gespeicherten Tripel ( xi , αi , β i ) und ( x2 i , α2 i , β 2 i ) werden im Fall x2 i = xi durch die Tripel ( xi+1 , αi+1 , β i+1 ) und ( x2 i+2 , α2 i+2 , β 2 i+2 ) überschrieben. Beispiel × Wir betrachten erneut das Beispiel von Seite 183: Es sei G = Z13 = 2. Wir berechnen den diskreten Logarithmus x von a = 9 zur Basis 2 mit dem modifizierten 2. Schritt. 1. Schritt: Wir wählen erneut G1 := {1, 4, 7, 10} , G2 := {2, 5, 8, 11} , G3 := {3, 6, 9, 12} . 2. Schritt: Wir bestimmen nun die Folgenglieder x1 , . . . , xi wie oben beschrieben: i
( xi , αi , β i )
( x2 i , α2 i , β 2 i )
1
(9, 1, 0) (5, 1, 1) (12, 2, 2) (11, 2, 3)
(5, 1, 1) (11, 2, 3) (10, 5, 6) (11, 6, 7)
2 3 4 Mit den Größen
i = 4 , j = 8 , αi = 2 , α j = 6 , β i = 3 , β j = 7 erhalten wir s = −4 (bzw. s = 8) und t = 4. Nun erhält man wie im Beispiel auf Seite 183 den diskreten Logarithmus x = 8.
186
10 Diskrete Logarithmen
Bemerkung Auch bei dieser modifizierten Version ist der Rechenaufwand bei Pollards Methode O( | G |) wegen des Geburtstagsparadoxons. Es gibt weitere Modifikationen, die in der Praxis etwas schneller laufen (siehe [7, § 8.5]). Der Vorteil von Pollards -Methode gegenüber dem Baby-Step-Giant-Step-Algorithmus von Shanks liegt im sehr geringen Speicherbedarf.
10.4
Die Reduktion nach Silver-Pohlig-Hellman
Auch wenn | G | beim ElGamal-Verfahren sehr groß ist, kann das DLP durch Pollards -Methode oder den Baby-Step-Giant-Step-Algorithmus von Shanks sehr einfach zu lösen sein. Das liegt daran, dass das DLP eventuell auf Gruppen kleiner Ordnung reduziert werden kann. Sind nämlich p1 , . . . , pn die Primteiler von | G |, so lässt sich das DLP auf Gruppen von der Ordnung p1 , . . . , pn reduzieren. Will man also etwa vor den Algorithmen von Shanks oder Pollard sicher sein, so sollte der größte Primteiler von | G | sehr groß sein. Wir behandeln diese Reduktion in diesem Abschnitt. Wir benötigen dazu ein Lemma aus der Gruppentheorie. Lemma 10.3 Ist G = g eine endliche zyklische Gruppe der Ordnung n, so ist G zur additiven Gruppe Z n isomorph. Beweis. Wir betrachten den surjektiven Homomorphismus
Z → G Φ: . k → gk Wegen o ( g) = n ist n Z der Kern von Φ. Nach dem Homomorphiesatz auf Seite 150 gilt somit Z n = Z/n Z ∼ = G. 10.4.1
Reduktion auf Primzahlpotenzordnung
Wir reduzieren das DLP in einem ersten Schritt auf Gruppen von Primzahlpotenzordnung. Dazu beachten wir, dass wir nach den Lemmata 7.3 und 10.3 jede zyklische Gruppe G mit
| G | = n = p1ν1 · · · pν
(kanonische Primfaktorzerlegung)
als ein direktes Produkt G = G1 × · · · × G mit zyklischen Gruppen G1 , . . . , G mit paarweise teilerfremden Ordnungen | G1 | = p1ν1 , . . . , | G | = pν schreiben können. Wir führen die Reduktion für den Fall = 2 durch, der allgemeine Fall folgt hieraus induktiv. Ist g1 bzw. g2 ein erzeugendes Element von G1 bzw. G2 , wobei die Gruppenordnungen | G1 | und | G2 | teilerfremd sind, so ist offenbar g = ( g1 , g2 ) ein erzeugendes Element von G1 × G2 . Es gilt:
10.4 Die Reduktion nach Silver-Pohlig-Hellman
187
Lemma 10.4 Es seien G1 = g1 und G2 = g2 endliche zyklische Gruppen mit teilerfremden Ordnungen. Weiter sei g = ( g1 , g2 ) ein erzeugendes Element der zyklischen Gruppe G1 × G2 , und es sei a := ( a1 , a2 ) ∈ G. Für x = Logg ( a) gilt: x ≡ Loggi ( ai ) (mod | Gi |) für i = 1, 2 . Beweis. Da x der diskrete Logarithmus von a zur Basis g ist, gilt g x = a, d. h. ( g1x , g2x ) = ( a1 , a2 ). Somit gilt nach (ii) in Lemma 6.1 (b): Logg ( ai )
gix = ai = gi
i
, d. h. x ≡ Loggi ( ai ) (mod | Gi |) für i = 1, 2 .
Damit ist bereits alles gezeigt. Kennt man die diskreten Logarithmen xi = Loggi ( ai ) für i = 1, 2, so kann man also den diskreten Logarithmus x = Logg ( a) wegen der Teilerfremdheit von | G1 | und | G2 | mithilfe des chinesischen Restsatzes 7.4 berechnen. Mit Lemma 10.4 ist somit das DLP in einer endlichen zyklischen Gruppe G auf das DLP in zyklischen Gruppen von Primzahlpotenzordnung zurückgeführt. Hierbei sind eigentlich die Kosten für den chinesichen Restsatz zu berücksichtigen, aber die sind bekanntlich nicht sehr hoch. Beispiel × Es ist 5 eine Primitivwurzel modulo der Primzahl p = 73, d. h. Z73 = 5. Wir bestimmen den diskreten Logarithmus von a = 58, d. h. x = Log5 (58). Es gilt ∼ Z× p = G1 × G2 = Z 8 × Z 9 , wobei 9
8
G1 = 5 = 10 mit | G1 | = 8 und G2 = 5 = 2 mit | G2 | = 9 . Für das Element a = 58 erhalten wir in G1 × G2 die Darstellung 9
8
a = 58 = (58 , 58 ) = (51, 55) . Wir bestimmen nun die einfach zu bestimmenden Logarithmen x1 = Log10 (51) und x2 = Log2 (55) in den Gruppen G1 und G2 z. B. mit Pollards -Methode und erhalten: x1 = Log10 (51) = 3 und x2 = Log2 (55) = 7 . Nun erhalten wir den gesuchten diskreten Logarithmus, indem wir mit dem chinesischen Restsatz die kleinste positive Lösung des folgenden Kongruenzgleichungssystems bestimmen: X ≡ 3 (mod 8) , X ≡ 7 (mod 9) . Wir erhalten x = 46, und tatsächlich gilt 5
43
= 58.
188
10.4.2
10 Diskrete Logarithmen
Reduktion auf Primzahlordnung
Wir reduzieren das DLP nun auf Gruppen von Primzahlordnung. Lemma 10.5 Es sei G = g eine endliche zyklische Gruppe mit | G | = pν für eine Primzahl p und ein ν ∈ N). Dann lässt sich das DLP in G auf ν -maliges Logarithmieren in Gruppen der Ordnung p reduzieren. Beweis. Wir begründen die Behauptung mit Induktion nach ν. Der Fall ν = 1 ist klar. Die Behauptung gelte für ν − 1. Es ist U := g p nach Lemma 6.2 eine Untergruppe von G mit |U | = pν−1 . Folglich ist | G/U | = p, G/U = g U . Es sei a ∈ G. Bestimme ein y ∈ N mit a U = ( g U )y = gy U. Dann gilt a g−y ∈ U = g p . Nach Induktionsvoraussetzung können wir x ∈ N durch (ν − 1) -maliges Logarithmieren bestimmen mit a g−y = g p x , und es gilt a = gy+ x p . Mit Lemma 10.5 ist das DLP in Gruppen der Ordnung pν auf ν DLPs in Gruppen der Ordnung p reduziert. In der Praxis führt man die Reduktion wie im Folgenden beschrieben durch. Gegeben ist die zyklische Gruppe G = g mit | G | = pν , p prim, ν ∈ N. Zu einem Element a ∈ G ist der diskrete Logarithmus x = Logg ( a) gesucht. Man schreibe den gesuchten diskreten Logarithmus x in der p -adischen Darstellung als x = x0 + x1 p + · · · + xν−1 pν−1 , x0 , . . . , xν−1 ∈ {0, . . . , p − 1} . Wir bestimmen nun der Reihe nach die Zahlen x0 , . . . , xν−1 aus der Gleichung
(∗)
gx = a ,
d. h.
g x0 + x1 p+···+ xν−1 p
ν −1
=a
und erhalten so die gesuchte Zahl x. Im Folgenden beachte man den Satz 6.9 von ν Euler, wonach g p = 1 gilt. Wir bestimmen x0 : Potenziere die Gleichung g x = a mit pν−1 und erhalte ν −1 x0 ν −1 ν −1 ν −1 g p x = g p x0 = g p = ap . Berechne den diskreten Logarithmus x0 = Logg pν−1 ( a p das Element g
p ν −1
ν −1
) – man beachte, dass
die Ordnung p hat. Damit ist x0 bestimmt.
Wir bestimmen x1 : Schreibe die Gleichung in (∗) um zu g x1 p+···+xν−1 p a g− x0 und potenziere diese Gleichung mit pν−2 und erhalte ν −1 x 1 p ν −2 ν −1 g p x1 = g p = a g − x0 . Berechne den diskreten Logarithmus x1 = Logg pν−1 ( a p
ν −2
g− p
ν −2
x0 ).
ν −1
=
Damit ist
x1 bestimmt.
usw.
10.4 Die Reduktion nach Silver-Pohlig-Hellman
189
Der Algorithmus bestimmt die ν diskreten Logarithmen x0 , . . . , xν−1 in der Grupν −1 pe g p der Ordnung p und damit den gesuchten diskreten Logarithmus x in der Gruppe g der Ordnung pν . Beispiel × = 6 mit 250 Elementen die zyklische UnterWir betrachten in der Gruppe Z251 2
gruppe G = 6 = 36 mit 125 = 53 Elementen und bestimmen den diskreten Logarithmus x von a = 4, d. h. x = Log36 (4). Dazu schreiben wir x in der 5 adischen Darstellung als x = x0 + x1 5 + x2 52 mit x0 , x1 , x2 ∈ {0, . . . , 4} . Wir bestimmen nun die Zahlen x0 , x1 , x2 aus der Gleichung x
36 = 36
x 0 + x 1 5 + x 2 52
= 4. x
Wir bestimmen x0 : Potenziere die Gleichung 36 = 4 mit 52 = 25 und erhalte 219
x0
25
25
= (36 ) x0 = 4
Berechne den diskreten Logarithmus x0 = Log
= 1. 25
36
(1) = 0.
x 5+ x2 52
Wir bestimmen x1 : Potenziere die Gleichung 36 1 51 = 5 und erhalte 5 25 x1 36 = 4 = 20 .
= 4 · 36
−0
= 4 mit
Berechne den diskreten Logarithmus x1 = Log 25 20 = 2. Damit ist x1 be36 stimmt.
Wir bestimmen x2 : Potenziere die Gleichung 36 50 = 1 und erhalte 25 x2 36 = 149 .
x2 52
= 4 · 36
−0−2·5
= 149 mit
Berechne den diskreten Logarithmus x2 = Log 25 149 = 4. Damit ist x2 36 bestimmt. Wir erhalten somit für x = Log36 (4) = 0 + 2 · 5 + 4 · 52 = 110. Und tatsächlich gilt 36
110
= 4.
10.4.3 Volle Reduktion Wir fassen nun die beiden Reduktionen zusammen und erhalten die volle Reduktion des diskreten Logarithmenproblems auf Gruppen von Primzahlordnung.
190
10 Diskrete Logarithmen
Korollar 10.6 ν Es sei G eine endliche zyklische Gruppe mit | G | = p11 · · · prνr (kanonische Primfaktorzerlegung). Dann lässt sich das DLP auf das DLP in Gruppen der Ordnung p1 , . . . , pr zurückführen. Hat | G | nur kleine Primteiler, so ist das DLP in G relativ leicht lösbar. Ist etwa p eine Primzahl, sodass p − 1 nur kleine Primteiler hat, so ist Z × p für die Verfahren von Diffie-Hellman und ElGamal nicht brauchbar. Man wähle besser eine sichere (große) Primzahl p, d. h. p = 2 q + 1 mit einer Primzahl q. Beispiel Die Zahl p = 2104 · 344 · 549 · 747 + 1 ist eine Primzahl mit 420 Bit. Das DLP in Z × p ist aber sehr einfach, da nur die Primteiler 2, 3, 5, 7 in p − 1 = |Z × p | stecken. Bemerkung Kombiniert man die Reduktion mit einem der beiden allgemeinen Algorithmen, √ √ so beträgt die Komplexität O(ν1 p1 + · · · + ν p ) Gruppenoperationen. Falls √ | G | einen dominanten Primteiler p enthält, beträgt die Komplexität O( p). Falls es Gruppen gibt, für die es zur Lösung des DLP keine wesentlich besseren Algorithmen als die in diesem Kapitel beschriebenen gibt, so ist für diese Gruppen die Potenzfunktion f : x → g x eine Einwegfunktion.
Aufgaben × 10.1 Bestimmen Sie den diskreten Logarithmus von 3 in Z53 zur Basis 2 mit
(a)
dem Baby-Step-Giant-Step-Algorithmus von Shanks bzw.
(b) Pollards -Methode für Gi := { a ∈ {1, . . . , 52} ; a ≡ i mod 3} für i = 1, 2, 3. 10.2 Implementieren Sie die Algorithmen von Silver-Pohlig-Hellman, Shanks und Pollard und testen Sie diese an Beispielen. 10.3 Wenn g keine Primitivwurzel modulo p ist, muss Pollards -Methode zur Berechnung diskreter Logarithmen nicht funktionieren. Geben Sie ein Beispiel dafür an. 10.4 Bestimmen Sie mit dem Silver-Pohlig-Hellman-Algorithmus den diskreten × Logarithmus von 500 zur Basis 7 in Z601 .
11 Faktorisierung Beim RSA-Verfahren werden zwei (große) Primzahlen p und q miteinander multipliziert, was sehr einfach ist. Die Zahl N = p q jedoch wieder in ihre Primteiler zu faktorisieren wird als außerordentlich schwierig angesehen. Dabei ist aber nicht bekannt, ob das Problem der Faktorisierung tatsächlich schwierig ist. Es könnte ja durchaus auch sein, daß es eine einfache Methode gibt, Zahlen in ihre Primfaktoren zu zerlegen, diese bisher nur noch nicht bekannt ist. Kurz gesagt, das Problem ist in NP , aber es ist nicht bekannt, ob es vielleicht in P liegt. Neben der (naiven) Probedivision, bei der man einfach sukzessive N durch bekannte (aber kleine) Primzahlen teilt, gibt es ausgefeilte Methoden, von denen wir einige in diesem Kapitel vorstellen. Dabei konzentrieren wir uns nicht auf Zahlen N, die Produkt von zwei Primzahlen sind, wie es beim RSA-Verfahren verwendet wird. Wir behandeln das Problem der Zerlegung, d. h. der Faktorisierung ganzer (zusammengesetzter) Zahlen allgemein. Die Methoden, die man dabei benutzt, greifen zum Teil bekannte Verfahren auf. Wir werden Pollards -Methode erneut ins Spiel bringen, mit dessen Hilfe wir bereits diskrete Logarithmen berechnet haben, und die Kettenbrüche, mit deren Hilfe wir einen Angriff auf RSA geschildert haben, werden wieder eine Rolle spielen. Weiter werden wir das Verfahren von Fermat, das quadratische Sieb wie auch die p − 1 -Methode von Pollard behandeln. Die Idee der letztgenannten Methode von Pollard lässt sich auf elliptische Kurven übertragen. Damit gewinnt man die elliptic curve method, die wir aber erst nach der Einführung von elliptischen Kurven im letzten Kapitel 14 behandeln werden.
11.1 Prinzipielles Vorgehen Gegeben ist eine natürliche Zahl N. Nach dem Fundamentalsatz 4.14 der Arithmetik besitzt N von der Reihenfolge der Faktoren abgesehen genau eine Zerlegung in Primzahlen: N = p1 · · · p n , wobei die Primzahlen p1 , . . . , pn nicht verschieden sein müssen. Um die Primzahlen p1 , . . . , pn zu bestimmen, suchen wir nach einem nichttrivialen Teiler d von N. Gegebenenfalls wird das Verfahren auf d und Nd erneut angewendet. Wir beschränken uns stets darauf zu beschreiben, wie d gefunden werden kann. Wir sagen dann, wir hätten eine Zerlegung für N gefunden oder N sei zerlegt
192
11 Faktorisierung
oder – etwas schlampig – N sei faktorisiert. Um eine Zerlegung von N zu bestimmen, hat sich das folgende Vorgehen bewährt.
Prüfe, ob N durch eine Primzahl p kleiner einer festgelegten Schranke B teilbar ist. Dazu bestimmt man (oder hat schon gespeichert) eine Liste aller Primzahlen ≤ B und berechnet sukzessive den Rest von N bei Division durch p. Ist er 0 wird p ausgegeben – Stop! Will man nur wissen, ob solche Primteiler existieren, berechnet man d = ggT( R, N ), wobei R Produkt aller Primzahlen ≤ B ist. Diese Vorgehensweise ist insbesondere dann vorteilhaft, wenn nicht damit gerechnet werden muss, dass es solche Primzahlen gibt. Falls keine solchen Primteiler gefunden werden:
Prüfe, ob N eine Primzahl ist (vgl. Kapitel 8 über Primzahltests). Falls ja – Stop!; falls nein: Prüfe, ob N Potenz einer natürlichen Zahl ist (vgl. Aufgabe 8.6). Falls ja – Stop!; falls nein: Erst jetzt bringt man die schweren Geschütze ins Spiel, die wir in den folgenden Abschnitten besprechen. Dabei empfiehlt sich im Allgemeinen die Reihenfolge (wobei nicht alle Verfahren angewendet werden müssen): p − 1 -Methode mit kleiner Schranke B, Pollards -Methode, Kettenbruchmethode, die elliptische Kurven Methode nach Lenstra (siehe Abschnitt 14.3), quadratisches Sieb, Zahlkörpersieb.
Bemerkung Das Zahlkörpersieb werden wir in diesem Buch nicht behandeln, es sind hierzu weit mehr Hilfsmittel aus der Algebra nötig als wir zur Verfügung haben. Die Schranke B, bis zu der Probedivisionen durchgeführt werden, hängt sehr von der Anwendung ab. MAPLE benutzt B = 100 000, Cohen [7] schlägt B = 500 000 vor und diskutiert größere Schranken. Für den Rest dieses Kapitels setzen wir N als zusammengesetzte natürliche Zahl voraus, d. h. N ist ungleich 1 und keine Primzahl. Unser Ziel ist es, einen nichttrivialen Teiler d von N zu finden.
11.2 Pollards -Methode *
193
11.2 Pollards -Methode * Bei der Bestimmung diskreter Logorithmen haben wir neben dem Baby-StepGiant-Step-Algorithmus Pollards -Methode in Abschnitt 10.3 beschrieben. Bei der Methode von Pollard wurde eine (unendliche) Zufallsfolge ( xi ) in einer endlichen Menge gebildet. Dass es bei einer solchen Folge Indizes i = j mit xi = x j gibt, ist klar – wir nennen ein solches Tripel ( xi = x j , i, j) einen Treffer –, der Clou an der Methode war, dass ein solcher Treffer relativ schnell bestimmt werden kann. In diesem Sinne ist Pollards -Methode ein Suchalgorithmus, der aus einer (unendlichen) Folge ( xi ) in einer endlichen Menge einen Treffer bestimmt. Wir können diesen Algorithmus auch für andere Probleme benutzen, etwa zum Bestimmen von Teilern einer natürlichen Zahl.
11.2.1 Die Idee Die zusammengesetzte natürliche Zahl N wird von einer – uns unbekannten – Primzahl p geteilt. Wir suchen zwei ganze Zahlen x und y mit x ≡ y (mod N ) und x ≡ y (mod p) . Angenommen, wir haben solche Zahlen x und y gefunden. Es ist dann d = ggT( x − y, N ) ein nichttrivialer Teiler von N, da: •
Aus p | x − y und p | N folgt p | d, sodass d = 1 gilt, und
•
aus N x − y folgt d = N.
Wie oben bemerkt ist dann eine Zerlegung von N gefunden, auf die der Algorithmus ggf. erneut angewendet werden kann.
11.2.2 Konstruktion der Zahlen x und y Die Zahlen x und y finden wir mit dem Algorithmus von Pollard. Dabei bilden wir im Wesentlichen in der endlichen Menge Z p , wobei p ein unbekannter Primteiler von N ist, eine (unendliche) Folge ( xi ). Für einen Treffer gilt dann die gewünschte Kongruenz: xi ≡ x j (mod p) , d. h. d = ggT( xi − x j , N ) > 1 . Gilt zudem die Inkongruenz xi ≡ x j (mod N ), so folgt d = N.
194
11 Faktorisierung
Wir definieren die Zahlenfolge ( xi ) rekursiv mit einer Abbildung f ( x ) = x2 + c, wobei c ∈ Z \ {0, −2} (siehe Aufgabe 11.1), und einem Startwert x0 : x i +1 = f ( x i ) . Diese spezielle Wahl von f hat sich in der Praxis bewährt, häufig wird c = 1 gewählt. Im folgenden Algorithmus benutzen wir Lemma 10.2, um einen nichttrivialen Teiler d von N zu bestimmen.
Wähle ein x0 ∈ {0, . . . , N − 1} und ein c ∈ Z \ {0, −2}. Berechne x1 = f ( x0 ) und x2 = f ( f ( x0 )) modulo N. Falls 1 < d = ggT( x2 − x1 , N ), Stop!, sonst: Berechne x2 = f ( x1 ) und x4 = f ( f ( x2 )) modulo N. Falls 1 < d = ggT( x4 − x2 , N ), Stop!, sonst: Berechne x3 = f ( x2 ) und x6 = f ( f ( x4 )) modulo N. Falls 1 < d = ggT( x6 − x3 , N ), Stop!, usw.
Der Algorithmus terminiert nach Lemma 10.2. In dem seltenen Fall d = N, in dem nichts gewonnen ist, wähle man ein neues c und starte erneut. Die Wahl eines neuen Starwertes x0 empfielt sich nicht. Der Fall d = N tritt ein, wenn für alle Primteiler von N gleichzeitig Treffer auftreten. Beispiel Wir suchen einen nichttrivialen Teiler der (zusammengesetzten) Zahl N = 1 517. Für c wählen wir 1, d. h. f ( x ) = x2 + 1, und als Startwert wählen wir x0 = 70. x1 x2 x3 x4 x5 x6 x7
= 350 = 1141 = 296 = 1148 = 1149 = 412 = 1358
x2 = 1141 x4 = 1148 x6 = 412 x8 = 1010 x10 = 196 x12 = 862 x14 = 825
Damit ist 1 517 = 37 · 41 zerlegt.
11.3
ggT(1141 − 350, 1517) = 1 ggT(1148 − 1141, 1517) = 1 ggT(412 − 296, 1517) = 1 ggT(1010 − 1148, 1517) = 1 ggT(196 − 1149, 1517) = 1 ggT(862 − 412, 1517) = 1 ggT(825 − 1358, 1517) = 41
Pollards p − 1-Methode
Mit der p − 1-Methode findet man Primteiler p von N, für die p − 1 Produkt von kleinen Primzahlen ist. Dabei spielt die Größe von p kaum eine Rolle.
11.3 Pollards p − 1-Methode
195
11.3.1 Die Methode Es sei p ein – uns unbekannter – Primteiler von N, also N = p m mit m ∈ N >1 . Ist a eine zu N teilerfremde natürliche Zahl, so ist a auch zu p teilerfremd. Nach dem Satz 6.10 von Fermat gilt a p−1 ≡ 1 (mod p) . Jedes Vielfache k von p − 1 erfüllt dann ebenfalls ak ≡ 1 (mod p) , d. h. p | ak − 1 . Wegen p | ak − 1 liefert der euklidische Algorithmus eine Zahl d mit p | d = ggT( ak − 1, N ) . Ist d = N, so ist N zerlegt. Diese p − 1 -Methode von Pollard ist dann sinnvoll, wenn p − 1 ein Produkt von kleinen Primzahlen ist. Man wählt für k das Produkt aller Primzahlpotenzen unterhalb einer vorgegebenen Schranke B und findet so ein Vielfaches k von p − 1, d. h., k = λ( B) = kgV(1, . . . , B) =
∏ qe ,
q ∈P
wobei qe ≤ B .
11.3.2 Glatte Zahlen Es sei B ∈ N. Eine Zahl m ∈ N heißt B -glatt, wenn jede Primzahl p, die m teilt, kleiner gleich B ist: p | m ⇒ p ≤ B. Die Zahl m heißt B -potenzglatt, wenn jede Primzahlpotenz pν , die m teilt, kleiner gleich B ist: pν | m ⇒ pν ≤ B . Glattheit spielt eine wichtige Rolle bei modernen Faktorisierungsverfahren. Beispiel Die Zahl N = 60 ist 5-potenzglatt, die Primzahlen 59 und 61 nicht. Übrigens ist λ(5) = 60. Die Zahl 2104 · 344 · 549 · 747 ist 7-glatt und 747 -potenzglatt (747 ≈ 5 · 1039 ). Bemerkung Eine natürliche Zahl m ∈ N ist genau dann B-potenzglatt, wenn gilt m | λ( B) .
196
11 Faktorisierung
11.3.3
Der Algorithmus
Im nachfolgenden Algorithmus wird es deutlich, wie man aλ( B) sukzessive ausrechnet. Die Eingabe ist die natürliche Zahl N, die es zu faktorisieren gilt. Die Ausgabe ist ein echter Teiler von N oder Pech gehabt.
Wähle B ∈ N und bestimme alle Primzahlen p1 , . . . , pn kleiner gleich B, am Besten beginnend mit p1 = 2 der Größe nach geordnet. Wähle νi ∈ N maximal mit piνi ≤ B für alle i ∈ {1, . . . , n}. Wähle a0 ∈ N >1 mit ggT( a0 , N ) = 1. p
νi
Berechne iterativ ai ≡ ai−i 1 (mod N ) mit 0 < ai < N für i = 1, . . . , n und bestimme d := ggT( ai − 1, N ). Falls d = 1 nächstes i. Falls d > 1 nächster Schritt. Falls d = N, gib d zurück, sonst Pech gehabt. Falls stets d = 1, d. h. ggT( an − 1, N ) = 1, dann gibt es keinen B -glatten Primteiler von N – Pech gehabt. Im sehr seltenen Fall, dass d = N ist, lohnt es sich evtl. den Algorithmus mit einem neuen Startwert a0 nochmals zu durchlaufen. Im übrigen bedeutet d = N, dass es Primteiler p von N gibt, für die p − 1 B -potenzglatt ist. Bemerkung In MAPLE wurde beispielsweise B = 2000 gewählt. Cohen [7] schlägt B zwischen 105 und 106 vor. Die Wahl von B beeinflusst stark die Laufzeit, aber auch die Wahrscheinlichkeit, eine Zerlegung zu finden. Die p − 1 -Methode von Pollard wird manchmal mit einer kleinen Schranke wie B = 2 000 angewendet, um relativ kleine Primteiler zu finden. Die Methode ist aber auch von theoretischem Interesse, weil sie •
die Idee liefert für Lenstras Elliptische Kurven Methode (siehe Kapitel 14).
•
einen Angriff auf das RSA-Verfahren darstellt. Wie schon in Abschnitt 7.4.1 erwähnt, sollte die Primzahlen p und q so gewählt werden, dass p − 1 und q − 1 jeweils einen großen Primteiler haben.
•
eine Verallgemeinerung besitzt zur sogenannten p + 1-Methode, die ebenfalls Auswirkungen auf die Wahl der Primzahlen bei RSA hat. Siehe auch dazu Abschnitt 7.4.1.
11.4 Faktorisierung mit Differenzen von Quadraten
197
11.4 Faktorisierung mit Differenzen von Quadraten Die Grundidee geht auf Fermat zurück und wurde bereits im Beweis zu Lemma 9.3 im Zusammenhang mit dem Rabin-Verfahren verallgemeinert. Viele moderne Faktorisierungsverfahren beruhen auf dieser Idee.
11.4.1 Das Verfahren von Fermat Ist die Zahl N Produkt zweier ungefähr gleich großer Faktoren, so kann folgende Strategie zum Erfolg führen: √ Prüfe, ob N ∈ N. √ Wähle w = N .
Prüfe der Reihe nach, ob für i = 1, 2, . . . die Zahl yi = (w + i )2 − N eine Quadratzahl ist. √ √ Im Erfolgsfall ist N = (w + i − yi ) (w + i + yi ) ein Zerlegung von N. Beispiel Wir die Zahl N = 3 240 809 nach der Methode von Fermat. Es ist √ Faktorisieren N = 1800 und man findet nach nur drei Schritten 18032 − N = 3 250 809 − 3 240 809 = 10 000 = 1002 . Daher gilt N = (1803 − 100) (1803 + 100) = 1703 · 1903. Die beiden Faktoren mit diesem Verfahren weiter zu faktorisieren, ist schon sehr mühsam.
11.4.2 Die gemeinsame Idee der Kettenbruchmethode, des quadratischen Siebs und weiterer Verfahren Wir schildern noch einmal die grundsätzliche Vorgehensweise aus dem Beweis von Lemma 9.3. Sie stellt eine Verallgemeinerung des Verfahrens von Fermat dar.
Prüfe, ob N Potenz einer Primzahl ist (vgl. Aufgabe 8.6), falls ja – Stop! Wähle x ∈ Z mit ggT( x, N ) = 1 und berechne x2 modulo N. Suche y ∈ Z mit x2 ≡ y2 (mod N ). Bestimme d := ggT(y − x, N ). Falls d ∈ {1, N } neues x, sonst gib d aus – Stop!
198
11 Faktorisierung
Hat man y gefunden, so folgt aus Aufgabe 11.4, dass dieser Algorithmus mit Wahrscheinlichkeit ≥ 0.5 abbricht und einen echten Teiler von N liefert. Das eigentliche Problem ist, die Zahl y zu finden. Um das zu bewerkstelligen, fehlen uns noch zwei wichtige Schritte, die wir im Anschluss beschreiben. Der erste Schritt ist allen Verfahren gemeinsam. Erst im zweiten Schritt unterscheiden sich die verschiedenen Verfahren. Das ist der Schritt, der die Laufzeit entscheidend beeinflusst.
11.4.3
Die Kongruenzen
Um y zu konstruieren, werden Kongruenzen der folgenden Form produziert: x12 x22 .. . x2s
≡ (−1)ν01 p1ν11 · · · prνr1 (mod N ) , ≡ (−1)ν02 p1ν12 .. . ≡ (−1)ν0s p1ν1s
· · · prνr2 (mod N ) , .. . · · · prνrs (mod N ) ,
wobei die pi Primzahlen aus einer sogenannten Faktorbasis sind. Zur Vereinfachung der Schreibweise setzen wir p0 = −1. Die Verfahren unterscheiden sich in der Art, wie diese Kongruenzen gewonnen werden. Gemeinsam ist allen, dass geeignete Zahlen xi quadriert werden, dann modulo N reduziert (mit Resten zwischen − N und N) und anschließend die Reste – soweit möglich – faktorisiert werden. Dabei werden nur die Primzahlen aus der gegebenen Faktorbasis getestet. Es werden dann (mit evtl. Ausnahmen) nur die Kongruenzen weiter verwendet, bei denen diese Faktorisierung vollständig möglich ist. Ist es gelungen, genügend viele solcher Kongruenzen zu erzeugen, so kann man hoffen, dass es μi ∈ {0, 1} gibt mit ⎛ ⎞ ⎛ ⎞ 0 ⎛ ⎞ μ0 ν01 ν02 . . . . . . ν0s ⎜μ ⎟ ⎜0⎟ 1⎟ ⎜ ⎟ ⎜ν11 ν12 . . . . . . ν1s ⎟ ⎜ .. ⎟ ⎜ .. ⎟ ⎜ ⎟⎜ ⎜ ⎟ ⎜ ⎟ (∗) ≡ . ⎜ . ⎟ .. .. ⎜ ⎟ ⎜ . ⎟ (mod 2) ⎝ .. . . ⎠ ⎜ . ⎟ ⎜.⎟ ⎝ .. ⎠ ⎝ .. ⎠ νr1 νr2 . . . . . . νrs 0 μs und μ j = 0 für mindestens ein j. Das System (∗) kann man als lineares Gleichungssystem über dem Körper Z2 auffassen. Hat das System mehr Spalten als Zeilen, so existiert eine nichttriviale Lösung (μ0 , . . . , μs ). Setzt man für eine nichttriviale Lösung von (∗) x :=
s
μ
∏ xi i
i =1
und
y :=
r
1 2
∏ pi
i =0
∑rj=1 νij μ j
,
11.4 Faktorisierung mit Differenzen von Quadraten
199
so gilt x2 ≡ y2 (mod N ), wie gewünscht. Dabei stellt die Wahl der μ j sicher, dass ∑rj=1 νij μ j für alle i gerade ist, also y ∈ N gilt. Beispiel Wir erzeugen ad hoc einige Kongruenzen für den Modul N = 91 über der Faktorbasis F = {−1, 2, 3, 5}:
≡ ≡ ≡ ≡ ≡ ≡
52 6
2
82 92 112 122
−1 · 2 · 3 · 11 (mod 91) −1 · 5 · 11 (mod 91) −1 · 33 (mod 91) −1 · 2 · 5 (mod 91) 2 · 3 · 5 (mod 91) −1 · 2 · 19 (mod 91) .
Die ersten beiden und die letzte Kongruenz sind zu verwerfen. Das Gleichungssystem aus der dritten bis fünften Kongruenz lautet ⎛
1 ⎜0 ⎜ ⎝3 0
1 1 0 1
⎞ 0 ⎛ ⎞ ⎛ ⎞ μ0 0 1⎟ ⎟ ⎝μ1 ⎠ ≡ ⎝0⎠ (mod 2) 1⎠ 0 μ2 1
und hat als Lösung (1, 1, 1)T . Das führt auf x = 8 · 9 · 11 = 792 , y = (−1) · 2 · 32 · 5 = −90 und x2 ≡ y2 (mod 91) . In der Tat gilt ggT( x + y, 91) = ggT(702, 91) = 13.
Bemerkung Zum Lösen des linearen Gleichungssystems über Z2 bietet sich zunächst der Gauß-Algorithmus an. Wenn die Parameter r, s sehr groß sind, geht das nicht mehr. Andererseits enthält die Koeffizientenmatrix sehr viele Nullen, sodass spezialisierte Verfahren erfolgversprechend sind.
11.4.4 Die Faktorbasis In den beiden Verfahren, die wir behandeln werden, sind diejenigen Primzahlen p2 , . . . , pr unterhalb einer gewissen Schranke B, für die N ein Quadrat modulo p ist, zu bestimmen. Dazu kommen p0 = −1 und p1 = 2. Diese Zahlen fassen wir zur Faktorbasis zusammen: F := {−1, 2 , p2 , . . . , pr } , wobei N ein Quadrat modulo pi , pi < B, für i > 1.
200
11 Faktorisierung
Die Bedingung N ist Quadrat modulo pi ist speziell für die zu betrachtenden Verfahren. Sie ist im Allgemeinen durch eine andere, oder gar keine Bedingung zu ersetzen. Die Abschätzung pi ≤ B ist allen Faktorbasen gemeinsam. Das folgende Lemma gibt Auskunft, wie man die pi für unseren Fall bestimmen kann. Lemma 11.1 Es sei p = 2 eine Primzahl. Das Element N ∈ Z × p ist genau dann ein Quadrat, wenn N
p −1 2
≡ 1 (mod p).
Beweis. Ist N = a2 ein Quadrat, so folgt die angegebene Kongruenz direkt aus dem Satz 6.9 (a) von Euler, wenn man a2 für N einsetzt. Nach dem Satz von Euler sind alle Elemente aus Z × p Nullstellen des Polynoms
p −1 p −1 X 2 −1 X 2 + 1 = X p −1 − 1 . Davon gibt es insgesamt p − 1. Nach Korollar 9.2 sind die Hälfte dieser Elemenp −1
te Quadrate. Weil die Quadrate alle Nullstellen von X 2 − 1 sind, und dieses p −1 Polynom nicht mehr als 2 Nullstellen haben kann, müssen die Nichtquadrate Nullstellen des Polynoms X
p −1 2
+ 1 sein. Das zeigt die Behauptung.
Bemerkung Mit dem Legendre-Symbol und dem quadratischen Reziprozitätsgesetz kann man ebenfalls entscheiden, ob N ein Quadrat in Z × p ist oder nicht. Bei der Erzeugung der Kongruenzen müssen gewisse Zahlen über der Faktorbasis in Primfaktoren zerlegt werden, wobei in manchen Verfahren nur Potenzen pν von Primzahlen p ∈ F mit pν ≤ B akzeptiert werden. Diese Zerlegung gelingt genau für B-glatte bzw. B-potenzglatte Zahlen. Nun kann es passieren, dass die Zerlegung nur fast gelingt. Das soll bedeuten, dass nur ein zu großer Primteiler q übrig bleibt. Eine solche Kongruenz hat die Form ν
ν
x12 ≡ (−1)ν01 p111 · · · pr r1 · q (mod N ) . Natürlich nützt das so nichts, aber wenn eine zweite solche Kongruenz ν
x22 ≡ (−1)ν02 p112 · · · prνr2 · q (mod N ) . gefunden wird, kann man die beiden Kongruenzen zu einer brauchbaren Kongruenz kombinieren:
( x1 x2 q−1 )2 ≡ (−1)ν01 +ν02 p1ν11 +ν12 · · · prνr1 +νr2 (mod N ) , wobei q−1 modulo N zu bestimmen ist. Wenn solche Primzahlen im Zerlegungsalgorithmus berücksichtigt werden, so spricht man von der Large Prime Variation.
11.5 Die Kettenbruchmethode von Morrison-Brillhardt *
201
Bemerkung Statt die beiden Kongruenzen mit dem großen Primteiler zu einer Kongruenz zu kombinieren, kann man auch die Faktorbasis erweitern bzw. das lineare Gleichungssystem um entsprechende Zeilen ergänzen. Wieder zeigt das Geburtstagsparadoxon (siehe Aufgabe 2.2), dass es gar nicht so abwegig ist, die Large Prime Variation durchzuführen. Das Auftreten von zwei solchen Kongruenzen mit demselben großen Primteiler ist keineswegs unwahrscheinlich (vgl. auch das Beispiel auf Seite 199).
11.5 Die Kettenbruchmethode von Morrison-Brillhardt * Nach wie vor sei N eine zusammengesetzte natürliche Zahl. Wir dürfen ohne Einschränkung voraussetzen, dass N nicht Potenz einer Primzahl ist. Um Kongruenzen wie im Abschnitt 11.4.3 zu bekommen, wurde vorgeschlagen, die Ket√ tenbruchentwicklung der irrationalen Zahl N zu benutzten.
11.5.1 Die Kettenbruchentwicklung von
√
N
Wir erinnern daran, wie die Kettenbruchentwicklung durch eine Rekursionsformel bestimmt wird (vgl. Abschnitt 7.5.4): x0 : =
√
N,
a0 : = x0 ,
x i +1 : =
1 , xi − ai
a i +1 : = x i +1 .
√ Es ist dann a0 ; a1 , . . . der unendliche Kettenbruch zu N und die xi sind die Restwerte. Im vorliegenden Spezialfall einer Quadratwurzel erhält man die Koeffizienten a0 , a1 , . . . der Kettenbruchentwicklung auch durch eine andere Methode. Wir definieren rekursiv die Folgen (Ui ), (Vi ), ( xi ) und ( ai ) durch U0 := 0, V0 := 1 und für i ∈ N0 : √ N − Ui2+1 N + Ui (♣) xi := , ai := xi , Ui+1 := ai Vi − Ui , Vi+1 := . Vi Vi Lemma 11.2 Für die Folgen ( xi ) und ( ai ) die aus der Rekursion √ (♣) entstehen ist a0 ; a1 , a2 , . . . die Kettenbruchentwicklung der irrationalen Zahl N, und für jedes i ∈ N0 ist xi der i-te Restwert. √ Beweis. Es gilt x0 = N, sodass die Startwerte übereinstimmen. Wir rechnen √ √ N + Ui+1 Vi 1 1 ( N + Ui+1 ) Vi = = √ = √ = . x i +1 = 2 N − a V + U Vi+1 xi − ai N − Ui+1 i i i N − Ui+1 Vi
202
11 Faktorisierung
Das ist die Rekursionsvorschrift für die Bestimmung der Koeffizienten ai der Ket√ tenbruchentwicklung von N. Die Rekursion (♣) bietet einen vorteilhaften Weg, die Kettenbruchdarstellung zu bestimmen, weil bei den Rechnungen fast nur kleine ganze Zahlen vorkommen. Satz 11.3 sind die Werte U Es sei N ∈ N kein Quadrat. Dann√ √i und Vi aus (♣) für alle i ∈ N natürliche Zahlen, und es gilt Ui < N und Vi < 2 N. Beweis. Wir beweisen die Behauptung durch Induktion nach i. Für i = 1 gilt: √ √ N ∈ Z und 0 < U1 < N , U1 = √ 2
√ 2 √ N < N− N−1 < 2 N. V1 = N − U12 ∈ Z und 0 < N − Das erledigt den Induktionsanfang. Sind nun für ein i ∈ N die Wert Ui , Vi und Vi−1 ganzzahlig, so gilt auch Ui+1 ∈ Z. Weiter ist Vi+1
=
N − Ui2+1 N − Ui2 N − ( ai Vi − Ui )2 = = − a2i Vi + 2ai Ui Vi Vi Vi
= Vi−1 − a2i Vi + 2ai Ui ∈ Z .
√ Wir nehmen nun an, dass für ein i ∈ N die Abschätzungen 0 < Ui < N und Vi > 0 gelten. Nach Konstruktion ist √ √ N + Ui Ui + Ui+1 N − Ui+1 (∗) 0 < xi − ai = − = < 1, Vi Vi Vi √ weil die xi alle irrational sind. Das ergibt zunächst Ui+1 < N. Wir zeigen nun U √i+1 > 0. Im Fall Vi > Ui folgt das √ direkt aus (♣), weil ai ∈ N. Im Fall Vi ≤ Ui < N erhält man wegen√(∗) 0 < N − Vi < Ui+1 . Das zeigt auch, dass N + Ui+1 positiv ist. Multipliziert man die Ungleichung (∗) mit diesem Ausdruck, so ergibt sich in der Mitte die Definition von Vi+1 , und √ U +U es folgt Vi+1 > 0. Schließlich hat man Vi = i a i+1 < 2 N. Damit sind alle i Behauptungen bewiesen. Aus Lemma 11.2 und Satz 11.3 ergibt sich eine einfache Folgerung, die wir als Übungsaufgabe 11.5 stellen. Korollar 11.4 Es sei√N ∈ N kein Quadrat. Die Kettenbruchentwicklung a0 ; a1 , . . . der irrationalen Zahl N ist periodisch. Das bedeutet, es gibt v, ∈ N so, dass ai+ = ai für alle i ≥ v. Die minimale Periodenlänge ist kleiner als 2N. Wir kommen nun zu der Aussage, die für die Faktorisierung entscheidend ist.
11.5 Die Kettenbruchmethode von Morrison-Brillhardt *
203
Satz 11.5 Es sei N ∈ N kein Quadrat und die Werte Ui und Vi durch die Rekursion (♣) bestimmt. √ Für Näherungsbrüche QPi = [ a0 ; a1 , . . . , ai ] aus der Kettenbruchentwicklung von N i gilt für alle i ∈ N die Beziehung Pi2 − N Q2i = (−1)i+1 Vi+1
und daher
Pi2 ≡ (−1)i+1 Vi+1 (mod N ) .
Beweis. Nach den Lemmata 7.14 und 7.13 (d) (man beachte, dass die dortige Aussage auch für ak ∈ R richtig ist) gilt für alle i ∈ N: √ x P + Pi−1 N = [ a0 ; a 1 , . . . , a i , x i +1 ] = i +1 i . x i +1 Q i + Q i −1 Setzt man xi+1 =
√
N +Ui+1 Vi+1
ein, so erhält man √ √ N Pi + Ui+1 Pi + Pi−1 Vi+1 N= √ N Qi + Ui+1 Qi + Qi−1 Vi+1
und
Weil
√
Ui+1 Pi + Pi−1 Vi+1 − N Qi −
√
N (Ui+1 Qi + Qi−1 Vi+1 − Pi ) = 0 .
N irrational ist und alle anderen Größen ganzzahlig sind, geht das nur für
Ui+1 Pi + Pi−1 Vi+1 − N Qi = 0 und Ui+1 Qi + Qi−1 Vi+1 − Pi = 0 . Elimination von Ui+1 aus diesen Gleichungen führt auf
( Pi Qi−1 − Pi−1 Qi ) Vi+1 = Pi2 − N Q2i . Mit Lemma 7.13 (b) folgt die Behauptung. Beispiel der Rekursion (♣) durch und Wir wählen N = 15, führen einige Iterationsschritte √ erhalten so die Kettenbruchdarstellung von 15. i
0
1
2
3
Ui
0
3
3
3
Vi xi
1 √ 15
ai
3
√
6 15+3 6
1
√
1 15 + 3 6
√
6 15+3 6
1
Da die Spalten für i = 1 und für i = 3 identisch sind, wiederholt sich die Rekursion bereits ab dieser Stelle, und es ist (mit der für periodische Dezimalbrüche bekannten Schreibweise)
3; 1, 6, 1, 6, 1, 6, . . . = 3; 1, 6 √ der unendliche Kettenbruch zu 15.
204
11.5.2
11 Faktorisierung
Der Algorithmus
Wir schildern nun den Algorithmus von Morrison-Brillhardt. Die Kongruenz aus Satz 11.5 zeigt, dass N modulo jeden Primteilers von Vk ein Quadrat ist. Daher werden nur solche Primzahlen in die Faktorbasis F = { p0 , . . . , pr } aufgenommen, wie im vorigen Abschnitt 11.4.4 beschrieben. √ Satz 11.5 zeigt, dass für alle k ∈ N die ganze Zahl Vk klein ist: Vk < 2 N. Wählt man die Schranke B geeignet, so darf man hoffen, dass viele der Vk ganz in Primfaktoren aus der Faktorbasis F zerfallen, um die gewünschten Kongruenzen zu erhalten. Anders ausgedrückt: Viele der Vk sind B-glatt. Für die Rechnung brauchen wir nur die Zähler Pk der Näherungsbrüche, und diese auch nur modulo N.
Bestimme die Schranke B und die zugehörige Faktorbasis F; Berechne die Folgen (Uk ), (Vk ), ( xk ), ( ak ) schrittweise mit der Rekursion (♣). Berechne iterativ Pk ≡ ak Pk−1 + Pk−2 (mod N ), 0 ≤ Pk < N, mit den Startwerten P−2 = 0, P−1 = 1. Setze ν0k ≡ k (mod 2) und V˜k := Vk . Für alle Primzahlen pi aus der Faktorbasis bestimme die höchste Potenz j mit ˜ j V˜k ≡ 0 (mod pi ); falls j > 0 ersetze V˜k durch Vkj und setze νik := j. pi
Jedes k, für das am Ende V˜k = 1 gilt, liefert eine Kongruenz gemäß Abschnitt 11.4.3. ν ν Pk2 ≡ (−1)ν0k p11k · · · pr rk (mod N ) . Evtl. liefert die Large Prime Variation noch weitere Kongruenzen, wenn V˜k eine Primzahl ist. Da der Kettenbruch nach Korollar 11.4 periodisch ist, kann es passieren, dass die Periode zu man zu wenige Kongruenzen findet. Man wählt √ klein ist, sodass √ dann statt N eine Zahl m N mit einem kleinen quadratfreien Multiplikator m und versucht es erneut. Bemerkung Die asymptotische Laufzeit des vorgestellten Algorithmus beträgt
O exp( 2 log N · log log N ) . Er war damit der erste subexponentielle Algorithmus zur Faktorisierung.
11.6
Das quadratische Sieb
Wir schildern wie beim quadratischen Sieb die Kongruenzen konstruiert werden.
11.6 Das quadratische Sieb
205
11.6.1 Das Polynom In der einfachsten Form wählt man das quadratische Polynom
√ 2 f (X) = X + N −N und versucht f ( a) für a ∈ Z über der Faktorbasis F ganz in Primfaktoren zu zerlegen. Gelingt das, so gilt
a+
√ 2 ν ( a) ν ( a) N ≡ (−1)ν0 (a) p11 · · · · · pr r (mod N ) .
Das ist eine Kongruenz der Form, wie sie in Abschnitt 11.4.3 beschrieben wurde. Das Polynom ist so gewählt, dass die Werte f ( a) relativ klein sind, und so eine gute Chance haben, über der Faktorbasis F zu zerfallen. Bemerkung Beim Multiple Polynomial Quadratic Sieve (MPQS) werden mehrere Polynome der Form g( X ) = a X 2 + 2 b X + c mit a > 0, b2 − a c > 0 und N | b2 − a c benutzt. Es gilt dann a g( X ) ≡ ( aX + b)2 (mod N ) und man kann Kongruenzen wie oben finden. Das oben benutzte Polynom f ist ein Spezialfall davon. Der eigentliche Trick besteht darin, nicht jeden Wert durch alle Primzahlen der Faktorbasis zu teilen, wie es im vorher beschriebenen Verfahren der Fall war, sondern nur diejenigen, die wirklich teilbar sind. Dazu dient das Sieb.
11.6.2 Das Sieb Zunächst wird durch geeignete Wahl einer Schranke S ∈ N das Siebintervall I := [−S, S] ∩ Z festgelegt. Das ist die Menge aller ganzen Zahlen zwischen −S und S. Nun bestimmt man f ( a) für alle a ∈ I. In der Praxis wird S so gewählt, dass − N < f ( a) < N, es muss also nicht modulo N reduziert werden. Das Vorzeichen von f ( a) ist das von a und f (0) < 0, sodass ν0 ( a) ∈ {0, 1} trivial zu bestimmen ist. Es sei a p eine Nullstelle von f modulo p. Dann ist f ( a p + k p) ≡ 0 (mod p) für alle k ∈ Z. Anders ausgedrückt p | f ( a p + k p) für die beiden Nullstellen von f in Z p und alle k ∈ Z. Weil N ein Quadrat modulo p ist, existieren diese Nullstellen. Um sie zu bestimmen muss nur eine Wurzel Np aus N modulo p berechnet werden, d. h. Np2 ≡ N (mod p) (vgl. dazu die Bemerkung auf Seite 175). Dann sind √ √ ap = − N + Np und b p = − N − Np die beiden Nullstellen von f modulo p (außer im Fall p = 2, da gibt es nur eine, nämlich N2 = 1). Wir suchen a p im Siebintervall I und wissen, dass ausgehend
206
11 Faktorisierung
von f ( a p ) jede p-te Zahl f ( a) durch p teilbar ist. Diese Divisionen – und nur diese – werden ausgeführt. Anschließend wird dasselbe mit b p wiederholt. Entsprechend kann für ungerade Primzahlen mit Potenzen von p verfahren werden. Auch hier gibt es genau zwei Lösungen der Gleichung f ( X ) ≡ 0 (mod p j ) für alle j (siehe Lemma 6.14). Von diesen Nullstellen ausgehend läuft man mit Schrittweite p j (nach links wie nach rechts) und kann abermals durch p dividieren. Man dividiert nur durch p, weil man in den j − 1 Schritten zuvor ja schon jeweils durch p dividiert hat. √ Für p1 = 2 wird a so gewählt, dass a + N ungerade ist; für p21 = 4 ebenso, falls N ≡ 1 (mod 4) (sonst gibt es keine Lösung). Im Fall j > 2 gibt es vier Lösungen, aber nur wenn N ≡ 1 (mod 8). Zusammengefasst ergibt sich:
Bestimme die Schranken S, B und die zugehörige Faktorbasis F. Für alle a ∈ Z mit −S ≤ a ≤ S berechne f ( a), notiere das Vorzeichen in ν0 ( a) und setze U ( a) := | f ( a)|. j
Für alle Primzahlpotenzen pi < B mit pi aus der Faktorbasis bestimme die j Nullstellen a j der Kongruenzgleichung f ( X ) ≡ 0 (mod pi ). p i
j
j
Ersetze für alle k ∈ Z mit | a pi + k pi | ≤ S den Eintrag U ( a pi + k pi ) durch j j U ( a pi + k pi )/pi , und erhöhe νi ( a pi + k pi ) um eins. Dieser Schritt ist der Reihe nach auszuführen: Erst für pi , dann für p2i , dann für p3i usw. Überall dort, wo am Schluss eine 1 steht, also für solche a mit U ( a) = 1, ist eine Kongruenz gemäß Abschnitt 11.4.3 gewonnen. Die zugehörigen Vektoren (ν0 ( a), . . . , νr ( a)) bilden die Spalten der dort angegebenen Matrix. Evtl. liefert die Large Prime Variation noch weitere Kongruenzen, wenn U ( a) eine Primzahl ist. Da man nur p j ≤ B prüft, werden – im Unterschied zur Kettenbruchmethode – nur B-potenzglatte Zahlen f ( a) erfasst. Der vierte Schritt unseres Faktorisierungsalgorithmus ähnelt dem Sieb des Eratosthenes, deswegen spricht man von einem Siebverfahren. Beispiel Wir wenden das quadratische Sieb auf N = 589 an. Das Polynom hat die Form f ( X ) = ( X + 24)2 − N. Mit der Schranke B = 10 ergibt sich die Faktorbasis F = {−1, 2, 3, 5, 7}. Für S wählen wir 5. Für die Nullstellen a p , b p erhält man p
4
3
5
7
N ≡ . . . (mod p)
1
1
22
1
ap, bp
1
±1
−1, −2
3, −2
11.6 Das quadratische Sieb
207
Wegen N ≡ 5 (mod 8) kommen höhere Potenzen von 2 nicht vor. Nun sieben wir beginnend mit 4 (in Zweierschritten), dann mit a3 = 1, mit b3 = −1, mit a5 = −1, mit b5 = −2 und schließlich mit a7 , b7 in einem Schritt.
−5
−4
−3
−2
−1
0
1
2
3
f (i )
−228
−189
−148
−105
−60
−13
36
87
140
195 252
:4
−57
35
63
:3
−19
i
−37
−15 −35
−63
:3
9 3
−5
:5
−9
:7
5
65 29
21
−1
:5
4
13
−7
7
−1
1
3
Das Sieben mit 9 und 27 haben wir übersprungen. Die verbleibenden Potenzen von 3 sind bei der Aufstellung der Matrix zu berücksichtigen. Wir geben exemplarisch zwei Spalten an: ν(−4) = (1, 0, 3, 0, 1) und ν(3) = (0, 2, 0, 1, 1). Insgesamt findet man sechs. Wendet man die Large Prime Variation mit der Primzahl 13 an, so erhält man eine weitere. Bemerkung
Wählt man B von der Größenordnung exp 12 log N · log log N (und S von etwa der gleichen Größenordnung), so ergibt sich die Laufzeit
O exp( log N · log log N ) . Es gibt eine Reihe von Vereinfachungen für dieses Verfahren. •
Manchmal werden die Rechnungen beschleunigt, wenn man bei Primzahlen > 2 darauf verzichtet, höhere Potenzen zu sieben.
•
Statt U ( a) durch pi zu dividieren, kann man folgendermaßen vorgehen:
Setze im zweiten Schritt U ( a) = log | f ( a)|. Ersetze U ( a) durch U ( a) − log pi .
Dabei kann der Logarithums relativ grob angenähert sein, weil wir ja wissen, dass U ( a) teilbar ist, und das delogarithmierte Ergebnis also ganzzahlig sein muss. In Abschnitt 14.3 werden wir das Faktorisierungsverfahren ECM, das auf elliptischen Kurven basiert, behandeln. Kettenbruchmethode, ECM und quadratisches Sieb haben asymptotisch die gleiche Laufzeit. Diese Laufzeit wird vom derzeitigen Rekordhalter Zahlkörpersieb, das wir im Rahmen dieses Buches nicht behandeln können, unterboten.
208
11 Faktorisierung
Aufgaben 11.1 Warum sollten bei Pollards -Methode die Koeffizienten c = 0 und c = −2 für f ( x ) = x2 + c zur rekursiven Konstruktion der Folge ( xi ) vermieden werden? 11.2 Implementieren Sie Pollards -Methode. 11.3 Bestimmen Sie alle Primzahlen p, sodass p − 1 5 -potenzglatt ist. 11.4 Es sei N eine natürliche Zahl mit mindestens zwei verschiedenen Primteiler. Dann existieren zu jedem Quadrat x2 in Z × N mindestens vier Quadratwurzeln ± x, ±y ∈ Z × , wobei 1 < ggT ( x − y, N ) < N. Hinweis: Betrachten Sie die Beweise N zu den Lemmata 9.1 und 9.3. 11.5 Beweisen Sie Korollar 11.4. 11.6 Bestimmen Sie mit den Daten aus dem Beispiel auf Seite 206 die Faktorisierung der Zahl N = 589, indem Sie das Verfahren aus Abschnitt 11.4.3 durchführen. 11.7
Zerlegen Sie 5 609 mit jedem der angegeben Verfahren.
12 Signaturverfahren Wir greifen ein Thema wieder auf, das wir am Ende von Kapitel 4 im Abschnitt 4.4.4 schon einmal auf sehr abstrakter Ebene angesprochen habe – das Signieren von Nachrichten. Da wir jetzt (mutmaßliche) Einwegfunktionen mit Hintertürchen zur Verfügung haben, können wir konkrete Verfahren beschreiben. Die Aufgabe ist es, eine digitale Unterschrift zu erzeugen, die weder gefälscht noch geleugnet werden kann. Ein digitales Dokument muss zweifellos einem Verfasser zugeordnet werden. Das gelingt mithilfe von Public-Key-Verfahren, die dazu umgekehrt werden. Um naheliegende Angriffe abzuwehren und die Verfahren effizienter gestalten zu können, ist es sinnvoll, Hashfunktionen einzusetzen. Es wird dann nicht die Nachricht selbst, sondern ein Hashwert davon signiert. Wir beschreiben das RSA- und ElGamal-Signaturverfahren, den sogenannten Digital Signature Standard sowie das Signaturverfahren nach Schnorr. Auch wenn wir im vorliegenden Kapitel digitale Signaturen als bloße Authentifikationssysteme (siehe Kapitel 5) betrachten, bieten sie eigentlich mehr. Wir haben das bereits in einer Bemerkung auf Seite 79 festgehalten.
12.1 Allgemeines zu Signaturverfahren Wie in Abschnitt 4.4.4 beschrieben, kann man mit einer Art Umkehrung eines Public-Key-Verfahrens eine digitale Signatur erzeugen. Der Verfasser V eines Dokumentes kann mit seinem geheimen, nur ihm bekannten Schlüssel d eines Public-Key-Verfahrens das Dokument N signieren. Es entsteht dabei aus N eine Signatur S = d(N ). Jeder andere Teilnehmer kann auf den öffentlichen Schlüssel e des Unterzeichners zugreifen und damit die Gleichheit N = e(d(N )) verifizieren. Weil der geheime Schlüssel d nur dem Verfasser V des Dokuments bekannt ist (oder sein sollte), ist dies ein Beweis dafür, dass die Signatur S des Dokuments N vom Verfasser V stammt. Diese schlichte Version hat noch einige Schwächen, auf die wir bei den konkreten Beispielen eingehen werden.
12.2 Das RSA-Signaturverfahren Ein Signaturverfahren ergibt sich aus der Einwegfunktion mit Hintertürchen des RSA-Verschlüsselungsverfahren. Das zunächst beschriebene Verfahren ist nicht sicher, aber es zeigt wesentliche Züge aller Signaturverfahren, daher sprechen wir es kurz an. Wir werden später geeignete Modifikationen beschreiben. Vorab erinnern wir kurz an die Situation beim RSA-Verschlüsselungsverfahren.
210
12.2.1
12 Signaturverfahren
Wie läuft RSA?
Es sind p und q Primzahlen, n = p q, ϕ(n) = ( p − 1) (q − 1), e ∈ {2, . . . , ϕ(n) − 1} mit ggT(e, ϕ(n)) = 1 und d ∈ {2, . . . , ϕ(n) − 1} mit e d ≡ 1 (mod ϕ(n)). Es sind (n, e) der öffentliche Schlüssel des Empfängers E einer Nachricht und d der geheime Schlüssel von E. Will ein Teilnehmer T an E eine Nachricht N ∈ Z n senden, so bildet er in Z n die Potenz C = N e (die Zahlen n und e sind öffentlich zugänglich) und sendet diesen Geheimtext C an E. Der Empfänger E entschlüsselt den Geheimtext C mit seinem geheimen Schlüssel d, indem er C d berechnet. Nach Lemma 7.1 gilt C d = N . 12.2.2
Das Signaturverfahren mit RSA
Gegeben ist die Situation des RSA-Verschlüsselungsverfahren. Durch eine einfache Modifikation erhalten wir das RSA-Signaturverfahren. Den geheimen Schlüssel d beim RSA-Verfahren kennt nur E. Mit diesem geheimen Schlüssel d kann nun aber E ein Dokument N signieren:
E stellt ein Dokument als N ∈ Z n dar. E berechnet die Potenz S = N d mit seinem geheimen Schlüssel d. E schickt das so signierte Dokument S an einen oder mehrere Teilnehmer T. Teilnehmer T bestimmt mit dem öffentlich zugänglichen Schlüssel (n, e) die Potenz S e = N ed = N ∈ Z n und erhält so das Dokument N . Jeder kann die Unterschrift wie T verifizieren.
Das (sinnvolle) Dokument N konnte nur von E in S verschlüsselt werden, da nur E den geheimen Schlüssel d kennt. Das wird als Beweis dafür aufgefasst, dass das Dokument N von E stammt. 12.2.3
Angriffe
Wie erwähnt, ist das beschriebene RSA-Signaturverfahren so noch nicht sicher. Wir diskutieren einige Angriffe und gehen auch der Frage nach, wie diese abgewehrt werden können. No-Message-Attacke. Ein Angreifer kann von jedem Element S ∈ Z n behaupten, dass dieses ein von E signiertes Dokument ist. Die Verifikation der Signatur mit dem öffentlichen Schlüssel e von E liefert dann ein N = S e ∈ Z n . Auch wenn zu erwarten ist, dass N keine sinnvolle Nachricht ist, so kann dies doch einen Nutzen für einen Angreifer haben. Bei einer Überweisung eines Geldbetrages, kann es durchaus vorkommen, dass man mit dem Betrag N zufrieden ist.
12.2 Das RSA-Signaturverfahren
211
Erzeugen von Signaturen aus bekannten Signaturen. Aus zwei bekannten gültigen Signaturen kann eine weitere gültige Signatur erstellt werden. Sind nämlich S1 = N1d und S2 = N2d zwei von E signierte Dokumente, dann ist
S = S1 S2 = (N1 N2 )d die (gültige) Signatur des Dokuments N1 N2 . Indem ein Angreifer A diese Tatsache ausnutzt, kann er mit einem Chosen-Plain-Text-Angriff jedes beliebige Dokument im Namen von E signieren. Ist nämlich N ∈ Z n das Dokument, das A im Namen von E signieren will, so kann er wie folgt vorgehen:
A wählt ein Dokument b ∈ Z n mit ggT(n, b) = 1. A berechnet c = N b
−1
in Z n .
A lässt die beiden Dokumente b und c von E signieren und erhält von E die d
Signaturen S1 = b und S2 = cd .
A berechnet S = S1 S2 = (c b)d = N d . A hat N mit dem geheimen Schlüssel d von E signiert: S = N d .
Dieser Angriff funktioniert, weil die Signatur-Abbildung N → N d ein GruppenHomomorphismus ist. Das ermöglicht aus schon signierten Daten gültige Signaturen für neue Daten zu erzeugen. Bei einem brauchbaren Signaturschema sollte das nicht möglich sein. 12.2.4 Wie man’s richtig macht Bei dem beschriebenen RSA-Signaturverfahren taucht ein weiteres Problem auf. Eventuell ist das Dokument, das signiert werden soll, zu groß, um es als ein Element N ∈ Z n darstellen zu können. Es müsste dann in Blöcke zerlegt werden, und jeder Block müsste einzeln signiert werden. Aber in dieser Weise ist das Verfahren wenig effizient, außerdem wäre das Verfahren anfällig für Manipulationsversuche. Den Schlüssel zur Lösung dieses Problems und auch zur Abwehr der im vorigen Abschnitt beschriebenen Angriffe sind Hashfunktionen. Bisher galt die Konvention, dass zu signierende Dokumente als N ∈ Z n codiert waren. Diese Konvention benötigen wir im Folgenden nicht. In der Praxis ist das Dokument N ein String über Z2 , d. h. N ∈ Z2∗ . Wir modifizieren das in Abschnitt 12.2.2 beschriebene Verfahren unter Einsatz einer geeigneten Hashfunktion h, die dem zu signierenden Dokument N , das evtl. auch verschlüsselt sein kann, ein Element h(N ) ∈ Z n zuordnet. Gegeben sei eine kollisionsresistente Hashfunktion h : Z2∗ → Z n , die öffentlich bekannt sein muss. Es ist zugelassen, dass verschiedene Teilnehmer dieselbe Hashfunktion verwenden. Nun kann E sein Dokument N signieren:
212
12 Signaturverfahren
E berechnet den Hashwert h(N ) ∈ Z n zum Dokument N . E berechnet die Potenz S = h(N )d mit seinem geheimen Schlüssel d. E schickt das signierte Dokument (N , S) an einen oder mehrere Teilnehmer T. T bestimmt mit der öffentlich zugänglichen Hashfunktion und dem öffentlich zugänglichen Schlüssel (n, e) die Potenz S e und prüft, ob S e = h(N ). Nur im Fall der Gleichheit akzeptiert T die Unterschrift S unter dem Dokument N . Jeder kann die Unterschrift wie T verifizieren.
Wurde das Verfahren korrekt durchgeführt, so gilt S e = h(N )ed = h(N ) und die Signatur wird als gültig akzeptiert. Nur E kann die Signatur S erzeugen, da nur E den geheimen Schlüssel d kennt. Das wird als Beweis dafür akzeptiert, dass N von E stammt und unverändert vorliegt. Die No-Message-Attacke läuft ins Leere, weil das Dokument ja explizit angegeben wird. Damit der zweite Angriff – das Erzeugen von Signaturen aus bekannten Signaturen – nicht möglich ist, darf h natürlich nicht multiplikativ sein.
12.3
Das ElGamal-Signaturverfahren
Auch das ElGamal-Verschlüsselungsverfahren lässt sich zu einem Signaturverfahren modifizieren.
12.3.1
Wie läuft ElGamal?
a Es seien p eine Primzahl, g eine Primitivwurzel modulo p, g = Z × p, A = g für ein a ∈ {2, . . . , p − 2}. Dann ist ( p, g, A) der öffentliche Schlüssel und a der geheime Schlüssel des Empfängers E beim ElGamal-Verfahren. Der Sender G stellt seine Nachricht als Element N ∈ Z × p dar, wählt ein b ∈ b b {2, . . . , p − 2} zufällig und berechnet B = g und c = A N . Der Sender schickt dann den Geheimtext ( B, c) an E. Der Empfänger berechnet B− a c = N und erhält so den Klartext zurück (siehe auch Abschnitt 9.2.3).
12.3.2
Das Signaturverfahren nach ElGamal
Wir identifizieren im Folgenden gelegentlich die Restklasse a ∈ Z × p mit dem (kleinsten positiven) Repräsentanten a ∈ Z. Das ist zwar etwas schlampig, erleichtert aber erheblich die Schreibweise. Es ist eine lehrreiche Übung, diese Ungenauigkeit zu korrigieren – man kann sich so auch davon überzeugen, dass unsere schlampige Schreibweise durchaus seinen Sinn hat.
12.3 Das ElGamal-Signaturverfahren
213
Gegeben ist die Situation des ElGamal-Verschlüsselungsverfahren, es sei ( p, g, A) der öffentliche Schlüssel und a der geheime Schlüssel. Durch eine Modifikation des Verschlüsselungsverfahrens erhalten wir das ElGamal-Signaturverfahren. Signieren eines Datensatzes.
E signiert ein Dokument N ∈ Z × p:
E wählt ein zufälliges k ∈ {2, . . . , p − 2} mit ggT(k, p − 1) = 1. E berechnet R = gk und eine Lösung s der Kongruenzgleichung k X ≡ N − a R (mod ( p − 1)) . (dass diese Kongruenzgleichung lösbar ist, folgt aus der Teilerfremdheit von k und p − 1, vgl. Korollar 4.19)
E schickt das signierte Dokument (N , R, s) an einen oder mehrere Teilnehmer T. Verifikation der Signatur. Jeder Teilnehmer T kann die Signatur von E mittels des öffentlichen Schlüssels von E verifizieren. Dazu berechnet T zum einen gN und zum anderen A R Rs . Diese beiden Größen müssen übereinstimmen, da gilt: A R Rs = g a R gk s = g a R+k s = gN . Da nur E den geheimen Schlüssel a kennt, kann man dies als einen Beweis dafür auffassen, dass das Dokument N von E stammt. Beispiel Wir wählen die Primzahl p = 19, den Erzeuger g = 2 der Gruppe Z × p und als geheimen Schlüssel a = 13. Damit ergibt sich der öffentlichen Schlüssel ( p, g, A) = (19, 2, 3). Mit der Nachricht N = 5 und der zufälligen Wahl k = 7 7 ergibt sich R = 2 = 14. Als Lösung der Kongruenzgleichung 7 X ≡ 5 − 13 · 14 ≡ 3 (mod 18) erhalten wir s = 3. Somit ist dann (N , R, s) = (5, 14, 3) das signierte Dokument, dabei ist (14, 3) die Signatur. Zur Verifikation bestimmt man: A R Rs = 3
14
· 14 = 13 und gN = 2 = 13 . 3
5
Wegen A R Rs = gN wird das signierte Dokument akzeptiert.
Die Signatur wird nicht akzeptiert, falls nicht 1 ≤ R ≤ p − 1 gilt. Es könnte Betrug vorliegen, wie wir gleich zeigen werden.
214
12.3.3
12 Signaturverfahren
Angriffe
Das Ablehnen der Signatur im Fall R > p − 1 verhindert einen naheliegenden Angriff. Im Folgenden gehen wir wieder von der Situation des ElGamalVerfahrens aus, es sei ( p, g, A) der öffentliche Schlüssel und a der geheime Schlüssel. Erzeugen von Signaturen aus bekannten Signaturen. Es ist manchmal möglich, mithilfe einer bekannten ElGamal-Signatur (N , R, s) eine gültige Signatur ( R , s ) für ein beliebiges Dokument N zu erstellen. Jedoch gilt dann fast immer R > p − 1. Wird die Größenbeschränkung 1 ≤ R ≤ p − 1 also nicht eingehalten, so kann es sein, dass aus einer bekannten Signatur eine neue Signatur konstruiert wurde. Wir schildern das Vorgehen eines Angreifers, der dies zum Ziel hat. Einem Angreifer A sei ein Dokument N mit der Signatur ( R, s) bekannt. Und es sei N ein weiteres Dokument, das A im Namen von E signieren will. Falls das Element N , aufgefasst als Element des Restklassenringes Z p−1 , invertierbar ist, d. h. N ∈ Z × p−1 oder anders ausgedrückt ggT(N , p − 1) = 1, so erreicht der Angreifer A sein Ziel, indem er wie folgt vorgeht:
A berechnet U ≡ N N −1 (mod ( p − 1)). A ermittelt s als Lösung von X ≡ s U (mod ( p − 1)). A berechnet mit dem chinesischen Restsatz (beachte ggT( p − 1, p) = 1) eine Lösung R des Systems von Kongruenzgleichungen: X ≡ R U (mod ( p − 1)) und X ≡ R (mod p) .
A kann nun ( R , s ) als gültige Signatur zum Klartext N angeben.
Ein Teilnehmer T verifiziert die gefälschte Signatur, es gilt nämlich:
A R ( R ) s = A R U R s U = gU ( a R + k s ) = gU N = g N . Nun begründen wir, dass für das R der so erhaltenen Signatur im Allgemeinen R > p − 1 gilt. Angenommen, es gilt R ≤ p − 1. Dann folgt aus R ≡ R (mod p) schon R = R , also R ≡ R U (mod ( p − 1))
⇔ R (U − 1) ≡ 0 (mod ( p − 1)) ⇔ ( p − 1 ) | R (U − 1 ) .
Im Fall ggT( R, p − 1) = 1 kann man R kürzen, es folgt U = 1 und damit N = N . Ein Angreifer hat dadurch nichts erreicht. Gilt aber ggT( R, p − 1) = 1, so muss U und damit auch N speziell gewählt werden. Dass dies eintreten kann, zeigt das folgende Beispiel.
12.3 Das ElGamal-Signaturverfahren
215
Beispiel Wir benutzen die Daten aus dem Beispiel von Seite 213. Der Angreifer wählt N = 14 und erhält U = 10 und s = 12. Dann ist (14, 12) eine gültige Signatur, wie man leicht nachrechnet. Signieren von zufälligen Datensätzen. Ein Angreifer kann einen zufälligen Datensatz signieren: Er wählt Zahlen i, j ∈ {0, . . . , p − 2} mit ggT( j, p − 1) = 1 und berechnet R ≡ gi A j (mod p) , s ≡ − R j−1 (mod ( p − 1)) ,
N ≡ − R i j−1 (mod ( p − 1)) . Es ist dann ( R, s) die gültige Signatur des Dokuments N , da gilt: A R Rs = A R ( gi A j )− R j
−1
= A R g− R i j
−1
A− R = gN .
Bemerkung Ein vorgebenes N zu signieren, erfordert das Auflösen der Gleichung: A R Rs = gN in Z × p nach ( R, s ) . Es gibt keinen Anhaltspunkt dafür, wie man das machen könnte, aber auch kein bekanntes Problem, zu dem es äquivalent ist. Kennt man k, so kennt man a; k darf also nur einmal verwendet werden. Die beim ElGamal-Signaturverfahren zufällig gewählte Zahl k mit gk = R darf nur einmal verwendet werden. Wird k nämlich zwei Mal benutzt, sind also ( R, s1 ) eine Signatur zu N1 sowie ( R, s2 ) eine Signatur zu N2 , so gilt A R Rs1 = gN1 und A R Rs2 = gN2 . Es folgt gN2 −N1 = A R Rs2 R−s1 A− R = Rs2 −s1 = gk (s2 −s1 ) Wegen o ( g) = p − 1 erhalten wir hieraus
N2 − N1 ≡ k (s2 − s1 ) (mod ( p − 1)) . Falls ggT(s2 − s1 , p − 1) = 1, so kann man k aus dieser Konguenzgleichung bestimmen. Gilt zudem ggT( R, p − 1) = 1, so erhält man aus k dann den geheimen Schlüssel a von E aus der Kongruenzgleichung
N1 − a R ≡ k s1 (mod ( p − 1)) . Bemerkung Im Beispiel oben konnte ein Angreifer selbst einen Datensatz signieren, wenn R und p − 1 nicht teilerfremd sind. Genau aus diesem Grund kompromittiert das den geheimen Schlüssel nicht, obwohl dasselbe R verwendet wird.
216
12 Signaturverfahren
12.4
Digital Signature Standard – DSS
Der Digital-Signatur-Standard DSS (auch DSA genannt) wurde 1991 von der NIST vorgeschlagen und ist seit etwa 1994 Standard. DSS ist eine etwas effizientere Variante des eben beschriebenen ElGamal-Signaturverfahrens. 12.4.1
Das Signaturverfahren DSS
Es seien p und q Primzahlen mit 2159 < q < 2160 , 2511+64 t < p < 2512+64 t , t ∈ {0, . . . , 8} und q | p − 1 . Dann gibt es wegen Satz 6.12 und Lemma 6.6 eine Untergruppe G von Z × p mit | G | = q. Wegen Lemma 6.5 ist G zyklisch, d. h. G = g mit einem g ∈ G. Schlüsselerzeugung. men Schlüssel:
Der Teilnehmer T erzeugt seinen öffentlichen und gehei-
Für ein a ∈ {2, . . . , q − 1} sei A = g a . Der öffentliche Schlüssel ist ( p, q, g, A). Der geheime Schlüssel ist a.
Wir erklären eine (wohldefinierte) Abbildung f : Z × p → Z q wie folgt: Für jedes x ∈ Z× sei r ∈ { 0, . . . , q − 1 } der Rest, der bei Division von x durch q entsteht, x p wir setzen f ( x ) := r x ∈ Z q . Erzeugung der Signatur. Es sei N ∈ Z q das von T zu signierende Dokument. In der Praxis ist N ein Hashwert des tatsächlichen Dokuments.
T wählt zufällig ein k ∈ {1, . . . , q − 1} mit ggT(k, q) = 1. T berechnet R = gk ∈ Z × p und (∗) s = (N + a f ( R)) k
−1
∈ Zq .
Falls s = 0, so wähle ein neues k. Es ist ( f ( R), s) ∈ Z q × Z q die Signatur von N .
Verifikation der Signatur. Der Empfänger E erhält das Dokument N mit der dazugehörigen Signatur ( f ( R), s) und verifiziert diese:
E berechnet u1 = N s−1 ∈ Z q und u2 = f ( R) s−1 ∈ Z q . E überprüft, ob f ( gu1 Au2 ) = f ( R).
12.4 Digital Signature Standard – DSS
217
Falls Gleichheit vorliegt, akzeptiert E die Signatur, sonst nicht.
In der Tat gilt im Falle der Echtheit der Signatur (beachte die Gleichung in (∗)): f ( g u1 A u2 ) = f ( g N s
−1 + a
f ( R ) s −1
) = f ( gk ) = f ( R) ,
wobei wir wieder die Restklassen N , f ( R) ∈ Z q mit ihren kleinsten positiven Repräsentanten identifiert haben.
12.4.2 Vorteile und andere Unterschiede Die Unterschiede zum Signaturverfahren von ElGamal sind •
das Vorzeichen in (∗),
•
f ( R) statt R in der Signatur,
•
zur Verifikation benötigt man nur zwei Exponentiationen (mit Exponenten von 2160 Bit), ElGamal benötigt drei.
Ein weiterer nicht zu unterschätzender Vorteil ist die mit 320 Bit relativ kleine Länge der Signatur. Die Angriffe beim ElGamal-Verfahren sind analog auch beim DSS-Verfahren möglich.
12.4.3 Signaturverfahren nach Schnorr * Das Signaturverfahren nach Schnorr ist auch eine Variante des ElGamal-Verfahrens. Wir verwenden die Bezeichnungen, die in Abschnitt 12.3.1 eingeführt wurden. Es sei also p eine Primzahl, g eine Primitivwurzel modulo p, g = Z × p, A = g a für ein a ∈ {2, . . . , p − 2}, ( p, g, A) der öffentliche Schlüssel und a der geheime Schlüssel des Empfängers E. Weiter sei P die Klartextmenge und h : P × Z p → Z p−1 eine Hashfunktion. Ein Teilnehmer T, der ein Dokument N ∈ P signieren will, geht wie folgt vor:
T bestimmt zufällig k ∈ {1, . . . , p − 1}. T berechnet R = gk und s = k − a h(N , R) ∈ Z p−1 . Es ist dann (s, h(N , R)) ∈ Z p−1 × Z p−1 die Signatur zu N ∈ P. Die Verifikation ist einfach. Bei Vorliegen einer korrekten Signatur gilt gs Ah(N ,R) = gk = R , also ist zu prüfen, ob h(N , R) = h(N , gs gh(N , R) ) gilt.
218
12 Signaturverfahren
Aufgaben 12.1 Wie kann man aus dem Rabin-Verfahren ein Signaturverfahren machen? 12.2 Es ist g = 3 eine Primitivwurzel modulo der Primzahl p = 2011. Der geheime Schlüssel von E ist 101. Das zu signierende Dokument ist N = 1111. Bestimmen Sie die ElGamal-Signatur mit k = 1000 und verifizieren Sie diese. 12.3 Es sei p ≡ 3 (mod 4) eine Primzahl, und G = Z × p = g mit p − 1 = g q, g, q ∈ N. Für A = g a sei ( G, g, A) der öffentliche Schlüssel eines ElGamalSignaturverfahrens. Dabei sei f : G → Z p−1 gegeben durch f (x) =
x, 0,
falls x = p − 1 falls x = p − 1
.
Zeigen Sie: (a) q
p −3 2
≡ g (mod p);
√ (b) γ ∈ Z mit gq γ ≡ aq (mod p) kann mit der Komplexität O( g) bestimmt werden.
(c) Mit s = 12.4
p −3 2 (N
− q γ) ist (q, s) eine gültige Signatur für N .
Das Protokoll von Fait-Shamir
Es sei n = p q mit Primzahlen p, q. Der Teilnehmer T wählt ein geheimes Element s ∈ Z n , berechnet v := s2 und veröffentlicht (v, n), um seine Identität etwa gegenüber C nachzuweisen. Dazu durchlaufen sie t-mal (t ∈ N) folgendes Protokoll:
T wählt zufällig r ∈ Z n , berechnet x = r2 und übermittelt x an C; C wählt zufällig b ∈ {0, 1} und schickt b an T; T schickt u = sb r an C; C prüft u2 = vb x.
Zeigen Sie: (a) Wer s kennt, kann das Protokoll erfolgreich durchlaufen. (b) Wie groß ist die Betrugswahrscheinlichkeit für jemanden, der s nicht kennt? (c) Beim Ablauf des Protokolls entsteht eine Folge ( xi , bi , ui )i=1,...,t . Diese Folge kann auch in polynomialer Zeit simuliert werden, ohne dass man s kennt. Daher kann keine Information über das Geheimnis übertragen worden sein. Man spricht von einem Zero-Knowledge-Protokoll.
13 Elliptische Kurven * Das ElGamal-Verschlüsselungsverfahren kann auf jeder zyklischen Gruppe implementiert werden. In der additiven Gruppe (Z n , +) bietet das Verfahren keine Sicherheit (vgl. Abschnitt 9.1.4), da in dieser Gruppe das diskrete Logarithmenproblem mit dem euklidischen Algorithmus leicht gelöst werden kann. In der Gruppe Z × p hingegen ist das Verfahren sehr rechenaufwändig, da die Primzahl p von der Größenordnung 1024 Bit zu wählen ist. Im vorliegenden Kapitel führen wir elliptische Kurven ein. Das sind algebraische Kurven, die eine Gruppenstruktur tragen. Soweit bisher bekannt ist, hat das ElGamal-Verschlüsselungsverfahren auf elliptischen Kurven zwei wesentliche Vorteile: •
Das diskrete Logarithmenproblem ist im Allgemeinen schwer zu lösen.
•
Man kann effizient rechnen und kommt mit kleinen Schlüssellängen aus.
Die Gruppen scheinen also gut für die Praxis geeignet. Das ElGamal-Verfahren auf elliptischen Kurven ist die bisher wohl bestuntersuchte und auch bestens funktionierende Alternative für das RSA-Verfahren. Um elliptische Kurven einführen zu können, ist ein Blick in die projektive Geometrie nötig. Wir führen die projektive Ebene PG(2, F ) über einem beliebigen Körper F ein. Dabei gehen wir vom dreidimensionalen Vektorraum F3 aus. Wir erklären die eindimensionalen Untervektorräume im F3 als Punkte und die zweidimensionalen Untervektorräume im F3 als Geraden. Die Punktmenge E einer elliptischen Kurve wird aus der Nullstellenmenge eines homogenen Polynoms vom Grad 3 gewonnen. Durch die Wahl einer unendlich fernen Geraden U in PG(2, F ) zerfällt E in einen affinen Teil und den unendlich fernen Punkt O = U ∩ E. Wir definieren auf der Punktmenge E eine Verknüpfung +, indem wir zeigen, dass jede Gerade, die E in mindestens zwei Punkten schneidet, mit E genau drei Schnittpunkte hat (wobei Vielfachheiten zu berücksichtigen sind). Die Verknüpfung ist – etwas salopp formuliert – so gemacht, dass die Summe dieser drei Schnittpunkte das neutrale Element O ergibt. Dabei ist O der unendlich ferne Punkt. In diesem Kapitel bezeichne F stets einen Körper.
13.1 Projektive Ebenen Affine Ebenen wurden bereits im Abschnitt 5.3.1 eingeführt. Im Folgenden betrachen wir projektive Ebenen und den Zusammenhang zu ihren affinen Verwandten.
220
13.1.1
13 Elliptische Kurven *
Definition projektiver Ebenen
Es sei P eine Menge, und G sei eine Menge von Teilmengen von P , d. h. G ⊆ Pot(P ). Das Paar (P , G) heißt projektive Ebene, falls die folgenden drei Bedingungen erfüllt sind: (P1) Zu je zwei Punkten P, Q ∈ P mit P = Q existiert genau eine Gerade G ∈ G mit P, Q ∈ G. (P2) Für je zwei Geraden G, H ∈ G gilt | G ∩ H | = 1 (d. h. zwei verschiedene Geraden schneiden sich in genau einem Punkt). (P3) Es gibt vier Punkte, von denen je drei nicht auf einer Geraden liegen. Für die nach (P1) eindeutig bestimmte Gerade G durch P und Q schreiben wir G = P, Q. Die Menge P nennt man die Punktmenge und die Menge G die Geradenmenge der projektiven Ebene (P , G). Der wesentliche Unterschied zu den affinen Ebenen ist offensichtlich: In einer affinen Ebene gibt es Geraden, die sich nicht schneiden, in einer projektiven Ebene nicht – es gibt keine Parallelen. Bevor wir zu den Zusammenhängen zwischen projektiven und affinen Ebene kommen, konstruieren wir die für uns wesentliche Klasse von Beispielen projektiver Ebenen – die projektive Koordinatengeometrie über einem (beliebigen) Körper F. 13.1.2
Die projektive Ebene PG(2, F )
Es sei F3 der (gewöhnliche) dreidimensionale F-Vektorraum über dem Körper F. Wir erklären auf der Menge F3 \ {0} eine Äquivalenzrelation. Für a, b ∈ F3 \ {0} setzen wir: a ∼ b : ⇔ ∃ λ ∈ F \ {0} mit λ a = b . Für die Äquivalenzklasse von a bzgl. ∼ schreibt man [ a] oder auch ( a1 : a2 : a3 ), falls a = ( a1 , a2 , a3 ) ∈ F3 \ {0}. Bemerkung Nimmt man zu der Äquivalenzklasse [ a] noch den Nullvektor (0, 0, 0) dazu, so erhält man den eindimensionalen Untervektorraum F a. Nun betrachten wir die Quotientenmenge: P := (F3 \ {0})/ ∼ = [ a] ; a ∈ F3 \ {0} . Für zwei verschiedene Punkte P = Q ∈ P , etwa P = [ a], Q = [b], setzen wir P, Q := {[λ a + μ b] ; λ, μ ∈ F, (λ, μ) = (0, 0)} . Mit der Wahl λ = 1 und μ = 0 bzw. λ = 0 und μ = 1 folgt sofort P, Q ∈ P, Q.
13.1 Projektive Ebenen
221
Die Menge P, Q heißt Verbindungsgerade von P, Q. Wir bilden nun die Menge sämtlicher Verbindungsgeraden durch jeweils zwei verschiedene Punkte: G := P, Q ; P, Q ∈ P , P = Q . Die Geraden in G können wir mithilfe zweidimensionaler Untervektorräume beschreiben. Den Punkten auf der Geraden P, Q entsprechen genau diejenigen eindimensionalen Untervektorräume, die im zweidimensionalen Untervektorraum F a + F b als Teilmengen enthalten sind. Dabei beachte man, dass die Bedingung P = Q für P = [ a] und Q = [b] gleichwertig zur linearen Unabhängigkeit der Vektoren a, b ∈ F3 ist. Etwas formaler ausgedrückt:
[c] ∈ [ a], [b] ⇔ F c ⊆ F a + F b ⇔ c ∈ F a + F b. Aus der linearen Algebra ist die Koordinatendarstellung für Hyperebenen von Vektorräumen bekannt. Auf unseren Fall angewendet, kann man jeden zweidimensionalen Untervektorraum in F3 als Lösungsmenge einer linearen Gleichung (genauer: als Nullstellenmenge einer Linearform) beschreiben. Übertragen auf Geraden in der projektiven Ebene bedeutet das für c = (c1 , c2 , c3 ):
[ c ] ∈ [ a ], [ b ] ⇔ u1 c1 + u2 c2 + u3 c3 = 0 für ein u = (u1 , u2 , u3 ) ∈ F3 \ {0}. Es wird häufig nützlich sein, Geraden auf diese Weise darzustellen. Lemma 13.1 Es ist (P , G) eine projektive Ebene. Beweis. Wir haben zu zeigen, dass die Bedingungen (P1), (P2) und (P3) gelten. (P1) Die Existenzaussage ist klar, die Eindeutigkeit folgt aus (P2). (P2) Es seien G, H ∈ G , G = H. Es gibt linear unabhängige ( a, b, c), ( a , b , c ) ∈ F3 mit: G = {( x : y : z) ∈ P ; a x + b y + c z = 0} und H = ( x : y : z ) ∈ P ; a x + b y + c z = 0 . Es folgt
G ∩ H = ( x : y : z) ∈ P ; a x + b y + c z = 0 und a x + b y + c z = 0 .
Dieses lineare Gleichungssystem hat als Lösungsmenge einen eindimensionalen Untervektorraum. Dieser definiert einen Punkt in P . Folglich gilt | G ∩ H | = 1. (P3) Die vier verschiedenen Punkte (1 : 0 : 0), (0 : 1 : 0), (0 : 0 : 1), (1 : 1 : 1) erfüllen die geforderte Bedingung. Es heißt PG(2, F ) := (P , G) die projektive Ebene über F.
222
13 Elliptische Kurven *
Bemerkung Obwohl der unterliegende Vektorraum F3 dreidimensional ist, schreiben wir PG(2, F ), weil diese Geometrie in einem präzisierbaren Sinne zweidimensional ist. Außerdem werden wir einen engen Zusammenhang mit AG(2, F ) feststellen. Für unsere Zwecke ist PG(2, F ) das wichtigste Beispiel einer projektiven Ebene. Wir zeigen ein weiteres interessantes Beispiel. Beispiel Die kleinste projektive Ebene besteht aus sieben Punkten. Eine Veranschaulichung findet man in der nebenstehenden Skizze. Die sieben Geraden enthalten je drei Punkte (auch der Kreis ist eine Gerade!).
13.1.3
Jede projektive Ebene liefert viele affine Ebenen
Wenn wir aus der Punktmenge P einer projektiven Ebene eine (beliebige) Gerade U entfernen und auch aus jeder Geraden die U zugehörigen Punkte entfernen, so erhalten wir eine affine Ebene (vgl. die Definition auf Seite 87). Das ist der Inhalt des folgenden Lemmas. Lemma 13.2 Es seien (P , G) eine projektive Ebene und U eine Gerade, d. h. U ∈ G . Wir setzen
PU : = P \ U ,
GU := { G ∩ PU ; G ∈ G \ {U }} = { G \ U ; G ∈ G \ {U }} .
Dann ist (PU , GU ) eine affine Ebene. Beweis. (A1) folgt direkt aus (P1). (A2) Es seien G ∈ GU und G ∈ G mit G = G \ U. Für P ∈ PU \ G. Setze Q := G ∩ U
und
H : = P Q \ U ∈ GU .
Es gilt dann P ∈ H, G ∩ H = ∅. Jede andere Gerade hat wegen (P2) mit G einen Schnittpunkt, der in PU liegt. Nach Aufgabe 13.1 hat jede Gerade in (P , G) mindestens drei Punkte, daher hat jede Gerade in (PU , GU ) mindestens zwei Punkte. (A3) siehe Aufgabe 13.2. Zusammengefasst und vereinfacht kann man sagen, dass jede Gerade einer projektiven Ebene durch Entfernen dieser Geraden eine affine Ebene liefert.
13.1 Projektive Ebenen
223
13.1.4 Die unendlich ferne Gerade Wir untersuchen nun speziell die projektive Koordinatengeometrie (P , G) = PG(2, F ) über dem Körper F. Dabei wählen wir unter den vielen Geraden aus G der projektiven Ebene eine Gerade U aus. Geometrisch gibt es keinen Grund, eine spezielle Gerade zu wählen, es sind alle gleichberechtigt. Aber wir wählen dennoch eine ganz bestimmte Gerade, die für unsere Zwecke praktisch ist, da damit die späteren Rechnungen vereinfacht werden. Wir wählen die Verbindungsgerade U = P, Q von den Punkten P = (1 : 0 : 0) und Q = (0 : 1 : 0), also die Menge U = {(u : v : w) ∈ P ; w = 0} . Wir bezeichnen diese Gerade U als unendlich ferne Gerade und zeichnen sie dadurch aus. Lemma 13.3 Gegeben ist die projektive Ebene (P , G) = PG(2, F ). Es sei U die unendlich ferne Gerade. Dann ist die Abbildung F2 → PU Φ: (α, β) → (α : β : 1) ein Isomorphismus von affinen Ebenen (d. h. Φ ist bijektiv und bildet Geraden auf Geraden ab). Beweis. Nach Lemma 13.2 ist (PU , GU ) eine affine Ebene. Es sei (α : β : γ) ∈ PU . Wegen (α : β : γ) ∈ U gilt γ = 0, also hat man: Φ ( α γ −1 , β γ −1 ) = ( α γ −1 : β γ −1 : 1 ) = ( α : β : γ ) , somit ist die Abbildung Φ surjektiv. Sie ist aber auch injektiv, denn mit (α, β) = (α , β ) sind die Vektoren (α, β, 1) und (α , β , 1) linear unabhängig, also folgt ( α : β : 1) = ( α : β : 1). Jede Gerade aus F2 hat die Form a, b = a + F (b − a) mit a, b ∈ F2 , a = b. Für einen Punkt a + λ(b − a) ∈ a, b und alle μ ∈ F \ {0} gilt: Φ( a + λ(b − a))
= [( a1 , a2 , 1) + λ(b1 − a1 , b2 − a2 , 0)] = [μ( a1 , a2 , 1) + μλ(b1 − a1 , b2 − a2 , 0)].
Diese Punkte liegen alle auf der Geraden G := {[μ( a1 , a2 , 1) + ν(b1 − a1 , b2 − a2 , 0)] ; μ, ν ∈ F, (μ, ν) = (0, 0)} . In der Tat wird jeder Punkt von G für einen geeigneten Wert von λ als Bildpunkt unter Φ erreicht, mit Ausnahme des Punktes R = (b1 − a1 : b2 − a2 : 0) (für diesen Punkt können die Werte μ = 0 und ν = 1 gewählt werden). Außerdem gilt G ∩ U = R. Daher folgt Φ( a, b) = G ∩ PU ∈ GU .
224
13 Elliptische Kurven *
Beispiel Jede der Geraden a + F (0, 1), a = ( a1 , a2 ) ∈ F2 , ist parallel zur y-Achse F (0, 1). Die Bilder unter Φ sind jeweils Teilmengen der Geraden G
:=
=
{[μ( a1 , a2 , 1) + ν(0, 1, 0)] ; μ, ν ∈ F, (μ, ν) = (0, 0)} ( a1 : a2 : 1), (0 : 1 : 0) .
Die im Affinen parallelen Geraden bekommen im Projektiven alle den gemeinsamen Schnittpunkt O := (0 : 1 : 0). Bemerkung Die projektive Ebene PG(2, F ) entsteht aus der affinen Ebene AG(2, F ) durch Hinzufügen einer unendlich fernen Geraden. Anders ausgedrückt besagt das, dass der im Lemma 13.2 beschriebene Vorgang des Entfernens einer Geraden auch umgekehrt werden kann.
Ist |F | = q ∈ N, so hat jede Gerade in AG(2, F ) genau q Punkte, jede Gerade in PG(2, F ) hat genau q + 1 Punkte.
13.2
Definition elliptischer Kurven
Nachdem wir nun für jeden Körper F die projektive Ebene PG(2, F ) mit der Punktmenge P = (u : v : w) ; (u, v, w) ∈ F3 \ {0} erklärt haben, führen wir nun die Punktmenge einer elliptischen Kurve ein. Dazu benötigen wir Polynome in den Unbestimmten X, Y und Z. Solche Polynome in mehreren Unbestimmten sind aber problemlos einzuführen, indem wir auf die Definition von Polynomen im Abschnitt 3.1.2 in einer Unbestimmten X zurückgreifen und sukzessive die Unbestimmten X, Y und Z adjungieren, wir setzen: F [ X, Y, Z ] := ((F [ X ])[Y ])[ Z ] . Wir erhalten mit der Darstellung des Polynomrings K [ X ] auf Seite 35 eine Darstellung für den Polynomring F [ X, Y, Z ]: F [ X, Y, Z ] =
∑
k,l,m≥0
ak,l,m X k Y l Z m ; ak,l,m ∈ F
.
Wir nennen ein Polynom F ( X, Y, Z ) = ∑k,l,m≥0 ak,l,m X k Y l Z m ∈ F [ X, Y, Z ] homogen vom Grad d ∈ N, falls für jedes Monom ak,l,m X k Y l Z m mit ak,l,m = 0 gilt k + l + m = d. Beispiel Das Polynom F ( X, Y, Z ) := Y2 Z + a1 X Y Z + a3 Y Z2 − X 3 − a2 X 2 Z − a4 X Z2 − a6 Z3 ist homogen vom Grad 3.
13.2 Definition elliptischer Kurven
225
13.2.1 Elliptische Kurven als Nullstellenmenge Wir stellen ab jetzt verschiedene Voraussetzungen, deren Bedeutungen wir im folgenden Abschnitt erklären werden. Dabei benutzen wir die Bezeichnung char F = 2 bzw. char F = 3, falls 1 + 1 = 0 bzw. 1 + 1 + 1 = 0 – man sagt, F habe eine Charakteristik ungleich 2 bzw. ungleich 3. •
Es gelte char F = 2, 3.
•
Es seien a, b ∈ F so gewählt, dass das Polynom x3 + a x + b ∈ F [ x ] keine mehrfache Nullstellen hat.
•
Wir setzen für die a, b ∈ F im letzten Punkt: F ( X, Y, Z ) := Y 2 Z − X 3 − a X Z2 − b Z3 ∈ F [ X, Y, Z ] und f ( x, y) := y2 − x3 − a x − b ∈ F [ x, y] .
Wir betrachten nun die Nullstellenmenge des homogenen Polynoms F vom Grad 3 in der Punktmenge der projektiven Ebene PG(2, F ). Wir nennen die Menge E := {(u : v : w) ∈ P ; F (u, v, w) = 0} eine elliptische Kurve über F. Da die Elemente von E Äquivalenzklassen sind, ist die Wohldefiniertheit zu begründen: Ist (u : v : w ) = (u : v : w), so existiert ein λ ∈ F mit (u , v , w ) = λ (u, v, w). Wegen der Homogenität des Polynoms F ( X, Y, Z ) gilt F (u , v , w ) = F (λ u, λ v, λ w) = λ3 F (u, v, w) . Daher gilt F (u, v, w) = 0 ⇔ F (λ u, λ v, λ w) , und die Nullstellen von F in P sind wohldefiniert. 13.2.2 Affine Darstellung elliptischer Kurven Der einzige Punkt der elliptischen Kurve E := {(u : v : w) ∈ P ; F (u, v, w) = 0} mit der Z-Koordinate 0 ist O := (0 : 1 : 0), alle anderen Punkte auf E liegen in PU , wenn man für U die unendlich ferne Gerade U = {(u : v : w) ∈ P ; w = 0} zugrunde legt. Ist nämlich die Z-Koordinate von P ∈ E nicht 0, so können wir ohne Einschränkung annehmen, dass P = (u : v : 1) mit u , v ∈ F
226
13 Elliptische Kurven *
gilt. Wegen F (u, v, 1) = 0 ⇔ f (u, v) = 0 können wir vom unendlich fernen Punkt O abgesehen, die weiteren Punkte von E als Punkte von AG(2, F ) auffassen. Da PU nach Lemma 13.2 die Punktmenge einer affine Ebene ist, sprechen wir gelegentlich von affinen Punkten. Identifiziert man PU mit F2 gemäß Lemma 13.3, so zerfällt die Menge E in einen affinen Teil und einen weiteren Punkt E = ( x, y) ∈ F2 ; y2 = x3 + a x + b ∪ {O} mit dem unendlich fernen Punkt O der Kurve E. Bemerkung Genauer müsste man schreiben E = Φ( x, y) ; y2 = x3 + a x + b ∪ {O} ,
wobei Φ der Isomorphismus aus Lemma 13.3 ist.
Die definierende Gleichung y2 = x3 + a x + b heißt affine oder nichthomogene Gleichung der Kurve E. Wir werden fast immer affine Gleichungen betrachten, müssen dann aber stets den Punkt O mit berücksichtigen. Die Menge E geben wir dann oftmals kurz in der folgenden Form an: E : y2 = x 3 + a x + b . Beispiel
Über dem Körper F = R können wir E1 : y2 = x3 − x = x ( x − 1) ( x + 1) und E2 : y2 = x3 + 1 skizzieren. Y
Y
¥
¥
¥
¥
X
X ¥
¥
13.2 Definition elliptischer Kurven
227
Über dem endlichen Körper F = Z5 ist keine aussagekräftige Skizze möglich, aber man kann alle Punkte bestimmen. Wir tun das für E : y2 = x3 + 2 x − 1. E = {(0, 2) , (0, 3) , (2, 1) , (2, 4) , (4, 1) , (4, 4)} ∪ {O} . Wir haben hierbei die Lösungen der Gleichung y2 = x3 + 2 x − 1 wie folgt effizient bestimmt: –
Bestimme die Quadrate y2 in Z5 : { 0 , 1 , 4 }. y =0
x3
y=1, 4 y=2, 3
+ 2 x − 1 in Z5 : { 4 , 2 , 1 }.
–
Bestimme die Größen
–
Man notiere die Punktepaare ( x, y) mit
y2
x =0
x =1, 3 x =2, 4
=
+ 2 x − 1.
x3
Bemerkung Bei der Berechnung
der Bogenlängen von Ellipsen treten sogenannte elliptische Integrale auf, z. B. √ 3 d x . Daher haben elliptische Kurven ihren Namen. x + a x +b
13.2.3 Beliebige Charakteristik – die Weierstraß-Gleichung – Singularitäten Wir haben in Abschnitt 13.2.1 drei Voraussetzungen getroffen. Natürlich wird man sich fragen, warum man derart spezielle Polynome F ( X, Y, Z ) betrachtet, wie sie in der Voraussetzung angegeben sind oder warum man diese Einschränkung an die Charakteristik des zugrunde liegenden Körpers macht. Wir wollen kurz erklären, woher diese doch sehr starken Einschränkungen kommen. Elliptische Kurven lassen sich über Körpern mit beliebiger Charakteristik definieren. Allgemein betrachtet man das folgende homogene kubische Polynom aus F [ X, Y, Z ] (die Numerierung der Koeffizienten wie die Vorzeichen sind üblich): F ( X, Y, Z ) := Y2 Z + a1 X Y Z + a3 Y Z2 − X 3 − a2 X 2 Z − a4 X Z2 − a6 Z3 . Die Gleichung F ( X, Y, Z ) = 0 heißt Weierstraß-Gleichung. Die Nullstellenmenge E = {(u : v : w) ∈ P ; F (u, v, w) = 0} in der Punktmenge P der projektiven Ebene PG(2, F ) definiert eine Kurve. Ein Punkt P = (u : v : w) ∈ E heißt singulär, wenn die partiellen Ableitungen des Polynoms F ( X, Y, Z ) in P verschwinden: ∂F ∂F ∂F ( P) = ( P) = ( P) = 0 , ∂X ∂Y ∂Z dabei leiten wir das Polynom F ( X, Y, Z ) formal nach den aus der Analysis bekannten Regeln ab.
228
13 Elliptische Kurven *
Die Kurve E heißt singulär, wenn es einen singulären Punkt auf E gibt, sonst heißt E nicht-singulär. Allgemeiner als wir es definiert haben, nennt man eine nicht-singuläre Kurve, die durch eine Weierstraß-Gleichung beschrieben wird, eine elliptische Kurve. Wieder ist der Punkt O = (0 : 1 : 0) der einzige unendlich ferne Punkt auf E (d. h. der einzige Punkt mit der Z-Koordinate 0); und er ist nicht-singulär, wie man einfach nachrechnen kann. Daher genügt es auch in diesem Fall die affine Gleichung zu betrachten: f ( x, y) = y2 + a1 x y + a3 y − ( x3 + a2 x2 + a4 x + a6 ) = 0 . Ist char F = 2, 3, so kann f durch eine affine Koordinatentransformation auf die Form y2 − x3 − a x − b gebracht werden, und es gilt: Lemma 13.4 Gegeben sei die Kurve E : y2 = x3 + a x + b mit a, b ∈ F . Gleichwertig sind:
(i)
Die Kurve E ist nicht-singulär.
(ii)
Das Polynom σ( x ) = x3 + a x + b ∈ F [ x ] hat keine mehrfache Nullstelle.
(iii) Die Diskriminante 4 a3 + 27 b2 von σ( x ) ist ungleich 0. Beweis. Zu (i) ⇔ (ii) vgl. Aufgabe 13.3 und zu (ii) ⇔ (iii) vgl. Aufgabe 13.4. Bemerkung Auch in den Fällen char F ∈ {2, 3} lässt sich f durch eine affine Koordiantentrans formationen vereinfachen (siehe Aufgabe 13.3). Kurven mit singulären Punkten sind für die Kryptologie von geringerem Interesse. Das ergibt sich aus der Bemerkung auf Seite 238. Wir haben uns auf Kurven, die die auf Seite 225 gemachten Voraussetzungen erfüllen beschränkt, weil die Darstellung dadurch vereinfacht wird, und weil es, außer in den Fällen der Charakteristik 2 und 3, keine Einschränkung der Allgemeinheit bedeutet.
13.3
Tangenten
Wir erinnern an unsere Voraussetzungen: •
Es gelte char F = 2, 3.
•
Es seien a, b ∈ F so gewählt, dass das Polynom x3 + a x + b ∈ F [ x ] keine mehrfache Nullstellen hat.
13.3 Tangenten
•
229
Wir setzen für die a, b ∈ F im letzten Punkt: F ( X, Y, Z ) := Y 2 Z − X 3 − a X Z2 − b Z3 ∈ F [ X, Y, Z ] und f ( x, y) := y2 − x3 − a x − b ∈ F [ x, y] .
Nachdem wir die Menge E einer elliptischen Kurve als Nullstellenmenge des Polynoms F ( X, Y, Z ) definiert haben, wollen wir uns nun daran machen, auf dieser Menge eine Verknüpfung zu erklären, d. h. wir erklären eine Abbildung
∗:
E×E → ( P, Q) →
E . P∗Q
Zwei Punkten einer elliptischen Kurve wird wieder ein Punkt dieser elliptischen Kurve zugeordnet. Dazu führen wir Tangenten ein. 13.3.1 Projektive Beschreibung der Tangente Wir beginnen mit der Definition von Tangenten. Es sei P ein Punkt der elliptischen Kurve E : y2 = x 3 + a x + b . Wir setzen: TP :=
∂F ∂F ∂F (u : v : w) ∈ P ; ( P) u + ( P) v + ( P) w = 0 ∂X ∂Y ∂Z
.
Die Menge TP heißt die Tangente an E im Punkt P. Man beachte, dass TP als Nullstellenmenge in P eines homogenen Polynoms vom Grad 1 wohldefiniert ist (vgl. die Wohldefiniertheit von E auf Seite 225). Wir zeigen nun, dass TP eine Gerade ist, die durch den Punkt P der elliptischen Kurve geht, wie man es von einer Tangenten ja auch erwartet. Wie immer bezeichne U = {(u : v : w) ∈ P ; w = 0} die unendlich ferne Gerade. Lemma 13.5 Es gilt TP ∈ G , und P ∈ TP . Speziell TO = U. Beweis. Wir bestimmen die partiellen Ableitungen von F: ∂F = −3 X 2 − a Z 2 , ∂X
∂F = 2Y Z, ∂Y
1. Fall: P = O = (0 : 1 : 0). Dann gilt
∂F ∂X (O)
∂F = Y 2 − 2 a Z X − 3 b Z2 . ∂Z
=
∂F ∂Y (O)
= 0 und
∂F ∂Z (O)
= 1, d. h.
TO = {(u : v : w) ; 0 · u + 0 · v + 1 · w = 0} = {(u : v : w) ∈ P ; w = 0} = U , die unendlich ferne Gerade, und es gilt O ∈ U.
230
13 Elliptische Kurven *
2. Fall: P = O . Wegen P ∈ U können wir ohne Einschränkung P = (α : β : 1) voraussetzen und erhalten TP = (u : v : w) ∈ P ; (−3 α2 − a) u + 2 β v + ( β2 − 2 a α − 3 b) w = 0 . Wir zeigen, dass im Fall β = 0 gilt 3 α2 + a = 0. Dann ist in jedem Fall mindestens ein Koeffizient der Gleichung
(−3 α2 − a) u + 2 β v + ( β2 − 2 a α − 3 b) w = 0 nicht Null, und der Lösungsraum dieser Gleichung ist ein zweidimensionaler Untervektorraum von F3 . Hieraus folgt, dass TP eine Gerade der projektiven Ebene PG(2, F ) ist. Wir nehmen also β = 0 an. Dann ist α Nullstelle des Polynom x3 + a x + b, weil (α : 0 : 1) auf E liegt. Dieses Polynom hat nach Voraussetzung keine mehrfachen Nullstellen. Deshalb (vgl. Aufgabe 3.7) ist α nicht Nullstelle der Ableitung 3 x2 + a dieses Polynoms, also 3 α2 + a = 0. Nun begründen wir, dass der affine Punkt P auf der Geraden TP liegt. Dazu setzen wir die Koordinaten des Punktes P in die Geradengleichung für TP ein:
(−3 α2 − a) α + 2 β β + ( β2 − 2 a α − 3 b) = −3 α3 − 3 a α + 3 β2 − 3 b = 3 ( β2 − ( α3 + a α + b ) ) = 0 .
= f (α,β)=0
Folglich gilt P ∈ TP . Beispiel Es sei F = R und E : y2 = x3 − x = x ( x − 1) ( x + 1). Wir bestimmen die Tangente im Punkt P = (0 : 0 : 1). Es ist F ( X, Y, Z ) = Y 2 Z − X 3 + X Z2 . Daraus folgt ∂F = −3 X 2 + Z 2 , ∂X also
∂F ( P) = 1 , ∂X
∂F = 2Y Z, ∂Y ∂F ( P) = 0 , ∂Y
∂F = Y2 + 2 X Z , ∂Z ∂F ( P) = 0 . ∂Z
Damit ist die Tangente T(0:0:1) = {(u : v : w) ; u = 0} . Affin gedeutet ist P der Nullpunkt und TP die y-Achse. Die Tangente entspricht genau dem, was man anschaulich als Tangente an die Kurve bezeichnen würde. Das wird auch an der linken Grafik auf Seite 226 deutlich.
13.3 Tangenten
231
13.3.2 Affine Beschreibung der Tangente Wir übersetzen jetzt die Bildung der Tangenten ins Affine. Dabei nutzen wir, dass jeder Punkt (α : β : γ) ∈ P mit γ = 0, also P ∈ U, ohne Einschränkung eine Darstellung der Form (α : β : 1) hat und durch die in Lemma 13.3 eingeführten Abbildung Φ mit dem affinen Punkt (α, β) identifiziert werden kann. Lemma 13.6 Für P = (α : β : 1) ∈ E \ {O} dürfen wir ohne Einschränkung P = (α, β) als affinen Punkt auffassen. Dann gilt ∂f ∂f TP \ U = (u, v) ; (α, β) (u − α) + (α, β) (v − β) = 0 . ∂x ∂y Beweis. Wir berechnen die partiellen Ableitungen an der Stelle P ∂f ∂F ( P ) = −3 α2 − a = (α, β) , ∂X ∂x
∂F ∂f ( P) = 2 β = (α, β) , ∂Y ∂y
∂F ( P ) = β2 − 2 a α − 3 b . ∂Z Weil P auf TP liegt, gilt daher: ∂f ∂F ∂f ( P) α + ( P) β = − ( P) . ∂x ∂y ∂Z Weiter erhalten wir für einen beliebigen Punkt Q ∈ P : Q ∈ TP \ U ⇔ Q = (u : v : 1) ∈ TP ∂F ∂F ∂F ( P) u + ( P) v + ( P) = 0 ∂X ∂Y ∂Z ∂f ∂f ∂f ∂f ⇔ ( P) u + ( P) v − ( P) α − ( P) β = 0 ∂x ∂y ∂x ∂y ∂f ∂f ⇔ ( P) (u − α) + ( P) (v − β) = 0 . ∂x ∂y
⇔
Daher hat TP \ U die behauptete Darstellung. Wir fassen zusammen: Die elliptische Kurve E zerfällt in einen affinen Teil (siehe Abschnitt 13.2.2) und den unendlich fernen Punkt O . Der affine Teil ist gegeben durch die Nullstellenmenge des Polynoms f ( x, y). Die Tangente an den unendlich fernen Punkt O ist die unendlich ferne Gerade U. Die Tangente TP an einen affinen Punkt P = (α, β) ∈ E können wir (affin) auffassen als ∂f 2 ∂f TP = (u, v) ∈ F ; (α, β) (u − α) + (α, β) (v − β) = 0 . ∂x ∂y
232
13.4
13 Elliptische Kurven *
Die Gruppe E
Gegeben sei die elliptische Kurve E : y2 = x 3 + a x + b . Wir betrachten zunächst die Menge der Schnittpunkte einer Geraden mit der Punktmenge E.
13.4.1
Schnittpunkte von Geraden mit E
Die unendlich ferne Gerade U schneidet die Punktmenge E nur im unendlich fernen Punkt O ; nach Lemma 13.5 ist U = TO . Eine Gerade der Form y = α x + β schneidet die Punktmenge E wie folgt. Wir setzen y = α x + β in die Gleichung f ( x, y) = 0 ein und erhalten:
(∗)
( α x + β )2 = x 3 + a x + b .
Das ist eine kubische Gleichung für die x -Koordinaten der Schnittpunkte. Also gibt es im Allgemeinen 3 Schnittpunkte der affinen Geraden y = α x + β mit der Punktmenge der elliptischen Kurve E, es seien dies ( x1 , y1 ), ( x2 , y2 ), ( x3 , y3 ). Diese Punkte existieren zumindest in einem Erweiterungskörper von F. Wenn zwei der Punkte über F existieren, dann auch der dritte. Die drei x -Koordinaten der Schnittpunkte müssen nicht voneinander verschieden sein. Aber falls zwei Schnittpunkte die gleiche x -Koordinate haben, d. h. xi = x j für i = j, so gilt auch yi = y j und die (affine) Gerade y = α x + β ist eine Tangente an die elliptische Kurve in dem betrachteten Punkt P = ( xi , yi ). Ist nämlich xi eine doppelte Nullstelle der Gleichung (∗), so gilt α xi + β = 0 und xi erfüllt auch die folgende Gleichung, die durch Ableiten aus (∗) entsteht: 2 (α xi + β) α = 3 xi2 + a , d. h. α =
3 xi2 + a . 2 ( α xi + β )
Nach Lemma 13.6 ist daher α die Steigung von TP . Da die beiden Geraden TP und y = α x + β den Punkt P enthalten, gilt Gleichheit – man vgl. auch Aufgabe 13.6. Die Parallele zur y-Achse x = γ hat mit E den unendlich fernen Punkt O gemeinsam (vgl. das Beispiel auf Seite 224). Falls γ3 + a γ + b ein Quadrat in F ist, so gibt es außerdem zwei affine Schnittpunkte P1,2 = (γ, ±
γ3 + aγ + b) .
Beachte dabei, dass die Verbindungsgerade von P1 und P2 den Punkt O enthält. Fallen die beiden affinen Punkte zusammen, d. h. P1 = P2 , so ist die Parallele zur y-Achse eine Tangente an E. Das folgt aus Lemma 13.6 mit dem Punkt P = (γ, 0).
13.4 Die Gruppe E
233
13.4.2 Eine Verknüpfung auf E Wir erklären nun eine Verknüpfung ∗ auf E. Durch eine kleine Modifikation der Verknüpfung ∗ wird E dann zu einer Gruppe. Etwas salopp ausgedrückt erklären wir für zwei Punkte P und Q aus E das Produkt P ∗ Q als den dritten Schnittpunkt der Geraden P, Q mit E: P ∗ Q = 3. Schnittpunkt von P, Q mit E . Aber dazu müssen wir vorab festlegen, was wir unter der Geraden P, Q im Fall P = Q verstehen wollen, und außerdem muss geklärt werden, was der dritte Schnittpunkt sein soll, wenn die Gerade P, Q mit E nur zwei Schnittpunkte hat. Wir treffen einfache und naheliegende Festlegungen: Es seien P, Q ∈ E. Ist P = Q, so sei P, P := TP . •
Hat im Fall P = Q die Tangente TP als einzigen Schnittpunkt mit E nur den Punkt P, so sei P ∗ P = P.
•
Im Fall P, Q = TP , aber P = Q sei P ∗ Q = P.
•
Im Fall P, Q = TQ , aber P = Q sei P ∗ Q = Q.
•
Ansonsten sei P ∗ Q der dritte Schnittpunkt der Geraden P, Q mit E.
Beachte, dass es nach den Überlegungen im vorigen Abschnitt keine weiteren Fälle gibt. Die folgende Abbildung zeigt eine Tangente und eine Sekante an E. y
x
Wir zeigen, dass P ∗ Q stets existiert und geben eine explizite Formel für die Koordinaten von P ∗ Q an. Bevor wir mit dem nicht ganz einfachen Beweis beginnen,
234
13 Elliptische Kurven *
stellen wir fest, dass die Verknüpfung ∗ offenbar kommutativ ist, es gilt also P ∗ Q = Q ∗ P für alle P , Q ∈ E . Das werden wir laufend ohne Hinweis benutzen. Und nun zu dem angekündigten Satz: Satz 13.7 Es seien P = (u, v), Q = (s, t) ∈ E \ {O}. Dann gilt:
O ∗ O = O , O ∗ P = (u, −v) =: − P und O, falls P = − Q , P∗Q = (w, α (w − u) + v) , sonst ,
wobei w = α − u − s und α = 2
v−t u−s , 3u2 + a 2v
,
falls P = Q, − Q , falls P = Q = − P .
Beweis. (i) Wir bestimmen zunächst O ∗ O : Nach Lemma 13.5 gilt TO = U für die unendlich ferne Gerade U. Da O der einzige Schnittpunkt von U und E ist, gilt daher O ∗ O = O . (ii) Wir bestimmen nun O ∗ P: Es gilt
O , P = {[λ (0, 1, 0) + μ (u, v, 1)] ; (λ, μ) = (0, 0)} . Ein Punkt R = O auf dieser Geraden hat eine Darstellung der Form: R = [λ (0, 1, 0) + (u, v, 1)] = (u : λ + v : 1) . Dabei haben wir μ = 1 gesetzt, denn μ = 0 würde den Punkt O liefern. Nun setzen wir R in die Gleichung der Kurve E ein und erhalten:
( λ + v )2 = u3 + a u + b = v2 , denn (u : v : 1) ∈ E. Es folgt λ + v = −v, weil der Fall λ = 0 auf den Punkt P führen würde. Im Fall v = 0 ist der dritte Schnittpunkt − P gefunden:
O ∗ P = −P . Im Fall v = 0 gibt es offenbar keinen dritten Schnittpunkt. Wir begründen:
(∗) O , P = TP , falls v = 0 . Hieraus folgt dann die Behauptung auch für diesen Fall, da dann nach Vereinbarung P = − P der dritte Schnittpunkt der Geraden O , P mit E ist, und wir erhalten auch in diesem Fall: O ∗ P = −P .
13.4 Die Gruppe E
235
Zur Begründung von (∗): Nach Lemma 13.6 gilt mit v = 0: ∂f ∂f TP \ U = ( x, y) ; ( P) ( x − u) + ( P) y = 0 , ∂x ∂y und weiter ∂f ∂f ( P) ( x − u) + ( P) y = (−3 u2 − a) ( x − u) + 2 · 0 · y = 0 ⇔ x = u , ∂x ∂y da −3 u2 − a = 0, weil das Polynom x3 + a x + b nach Voraussetzung keine mehrfachen Nullstellen hat. Somit gilt TP \ U = {( x, y) ; x = u} = O , P \ {O} , wie man auch dem Beispiel auf Seite 224 entnehmen kann. Hieraus folgt nun die Gleichung in (∗) und damit ist der Fall (ii) abgeschlossen. (iii) Wir bestimmen nun P ∗ Q, falls P = − Q: Im Fall P = Q gilt v = 0, und wir können die Gleichung (∗) anwenden: Es folgt P ∗ P = O , da der dritte Schnittpunkt von TP mit E der unendlich ferne Punkt O ist. In diesem Fall gilt folglich: P∗Q = O. Im Fall P = Q erhalten wir u = s und v = −t, und weiter gilt: P, Q = {( x : y : z) ; x = u z} und O ∈ P, Q , d. h. P ∗ Q = O . Man beachte, dass P = (u, v) und Q = (u, −v) nach Voraussetzung zwei verschiedene Punkte in P, Q ∩ E sind; O ist der dritte, es gilt daher erneut: P∗Q = O. (iv) Wir bestimmen P ∗ Q im Fall P = ± Q. Die Punkte P, Q, − Q = (s, −t) liegen t in E. Wegen P = ± Q gilt u = s. Wir setzen α := uv− −s und schneiden die Gerade P, Q mit der Punktmenge E. Für die Gerade P, Q erhalten wir die Darstellung P, Q : y = α ( x − u) + v . Nun setzen wir dies in die E definierende Gleichung ein und finden
( α ( x − u ) + v )2 = x 3 + a x + b . Dieses kubische Polynom hat nach Konstruktion u und s als Nullstellen. Ausmultiplizieren und Koeffizientenvergleich liefern daher für die x -Koordinate w des dritten Schnittpunktes von P, Q mit E: x 3 − α2 x 2 + · · · = ( x − u ) ( x − s ) ( x − w ) ⇒ α2 = u + s + w ,
236
13 Elliptische Kurven *
und somit w = α2 − u − s ∈ F . Durch Einsetzen in die Gleichung für P, Q ergibt sich daraus sofort die y-Koordinate. Damit gilt wie behauptet: P ∗ Q = (w, α (w − u) + v) . (v) Wir bestimmen P ∗ Q im Fall P = Q = − P. Es gilt u = s und v = 0. In diesem Fall ist nach Definition die Gerade P, P die Tangente TP an P. Mit Lemma 13.6 erhalten wir: ∂f ∂f ( x, y) ∈ TP \ U ⇔ ( P) ( x − u) + ( P) (y − v) = 0 ∂x ∂y
⇔ (−3 u2 − a) ( x − u) + 2 v (y − v) = 0 . Folglich gilt mit α :=
3 u2 + a 2v :
( x, y) ∈ TP \ U ⇔ y = α ( x − u) + v . Nun schneiden wir die Gerade TP mit der elliptischen Kurve E, d. h., wir setzen:
( α ( x − u ) + v )2 = x 3 + a x + b = x 3 + a ( x − u ) + b + a u . Wir bestimmen nun die Werte von x, für welche diese Gleichung erfüllt ist. Dazu multiplizieren wir die linke Seite aus und bringen alles auf eine Seite: 0 = x 3 − α2 ( x − u )2 + ( a − 2 α v ) ( x − u ) + b + a u − v2
=−u3
= ( x − u) ( x + x u + u −α ( x − u) − 3 u )
2
2
2
2
= x 3 − u3 2
= ( x − u) ( x + xu − 2u2 − α2 ( x − u)) = ( x − u )2 ( x − w ) , denn u ist Nullstelle des geklammerten Ausdrucks der vorletzten Zeile. Wie oben sei w die x-Koordinate des dritten Schnittpunktes von TP mit E. Den Wert von w erhalten wir durch einen Koeffizientenvergleich bei x2 , es gilt: x 3 − α2 x 2 + · · · = ( x − u )2 ( x − w ) = x 3 − ( w + 2 u ) x 2 + · · · . Damit erhalten wir wie behauptet w = α2 − 2 u , und P ∗ Q = P ∗ P = (w, α (w − u) + v) .
Bemerkung t 3 u2 + a (und Im Fall P = ± Q und P, Q = TP gilt die Gleichung α = uv− −s = 2v natürlich auch P ∗ Q = P). Der dritte Schnittpunkt von P, Q mit E ist P.
( x : y : 1) ∈ TP \ U ⇔ y =
3 u2 + a ( x − u) + v = α ( x − u) + v . 2v
Dabei haben wir bei der letzten Gleichheit TP = P, Q benutzt.
13.5 Die Gruppe ( E, +)
237
13.5 Die Gruppe ( E, +) Die im letzten Abschnitt erklärte Verknüpfung ∗ auf E hat noch keine guten Eigenschaften, z. B. existiert bezüglich ∗ kein neutrales Element in E. Wir führen nun eine Verknüpfung + auf der Punktmenge einer elliptischen Kurve ein, sodass ( E, +) eine Gruppe bildet. 13.5.1 Zwei mal Stern gibt Plus Mit der Verknüpfung ∗ auf E definieren wir für P, Q ∈ E: P + Q := O ∗ ( P ∗ Q) = −( P ∗ Q) . Mit dieser Verknüpfung + auf E gilt: Satz 13.8 Es ist ( E, +) eine abelsche Gruppe mit neutralem Element O . Beweis. Da die Verknüpfung ∗ kommutativ ist, ist auch + kommutativ. Für alle P ∈ E gilt O + P = O ∗ (O ∗ P) = O ∗ (− P) = P. Folglich ist O neutrales Element. Und für jedes P ∈ E gilt P + (− P) = O ∗ ( P ∗ (− P)) = O ∗ O = O . Es bleibt also noch das Assoziativgesetz nachzuweisen. Dieser Nachweis ist sehr aufwändig, wir verweisen auf [15]. Die Verknüpfung + ist so gemacht, dass die Summe dreier kollinear liegender Punkte auf der Kurve O ergibt. 13.5.2 Die Sekanten-Tangenten-Konstruktion Wir formulieren die Addition P + Q zweier Punkte O = P, Q ∈ E mit den in Satz 13.7 angegeben Formeln: Es seien P = (u, v), Q = (s, t) ∈ E \ {O}. Dann gilt O, falls P = − Q , P+Q = (w, −α (w − u) − v) , sonst , wobei
w = α −u−s 2
und
α=
v−t u−s , 3u2 + a 2v
,
falls P = Q, − Q , falls P = Q = − P .
Aus naheliegenden Gründen spricht man von der Sekanten-Tangenten-Konstruktion. Man beachte, dass diese anschauliche Darstellung der Addition natürlich nur im Fall F = R sinnvoll ist. Ist F ein endlicher Körper (und nur dieser Fall ist für die Kryptologie von Interesse), so gibt es keine grafische Darstellung der Addition, es sind dann einzig die obigen Formeln für die Addition ausschlaggebend. Es folgen Zahlenbeispiele – man vgl. auch die Beispiele auf Seite 226.
238
13 Elliptische Kurven *
Beispiel Wir betrachten die elliptische Kurve E : y2 = x 3 − x = x ( x − 1) ( x + 1) über dem Körper F = R. Offenbar sind die Punkte P = (u, v) = (−1, 0) und t 2 Q = (s, t) = (1, 0) in E. Wegen α = uv− −s = 0 und w = α − u − s = 0 erhalten wir für die Summe P + Q: P + Q = (w, −α (w − u) − v) = (0, 0) . Man vgl. dies auch mit der Skizze auf Seite 226. Etwas aufwändiger ist das folgende Zahlenbeispiel: Die Punkte P =√(u, v) = (−1, 0) und Q = (s, t) = √ t (2, 6) liegen in E. Wegen α = uv− 6/3 und w = α2 − u − s = −1/3 −s = erhalten wir für die Summe P + Q: √ 1 2 6 . P + Q = (w, −α (w − u) − v) = − , − 3 9
Wir betrachten die elliptische Kurve E : y2 = x3 + 2 x − 1 über dem endlichen Körper F = Z5 aus dem zweiten Beispiel von Seite 226f. E = {(0, 2) , (0, 3) , (2, 1) , (2, 4) , (4, 1) , (4, 4)} ∪ {O} . Wir addieren die Punkte P = (u, v) = (0, 3) und Q = (s, t) = (2, 1). Wegen −1
2
t α = uv− · 2 = 4 und w = α2 − u − s = 4 − 0 − 2 = 4 erhalten wir für −s = 3 die Summe P + Q: P + Q = (w, −α (w − u) − v) = 4, 1 .
Im Jahr 2007 gab Harold M. Edwards [10] eine neue Darstellung für elliptische Kurven an: Anstelle des Polynoms f ( x, y) = y2 − x3 − a x − b ∈ F [ x, y] betrachtet Edwards das Polynom g( x, y) = x2 + y2 − c2 − c2 d x2 y2 ∈ F [ x, y]. Sind P = (u, v) und Q = (s, t) zwei affine Punkte der zugehörigen elliptischen Kurve E, so erhält man in den Edwardskoordinaten für P + Q die symmetrische Formel: st−uv ut+sv , P+Q = . c (1 + d u v s t ) c (1 − d u v s t ) Das neutrale Element ist der Punkt (0, c), das zu (u, v) inverse Element hat die Edwardskoordinaten (−u, v). Man beachte, dass es zwei unendlich ferne Punkte gibt, nämlich (1 : 0 : 0) und (0 : 1 : 0), die gesondert betrachtet werden müssen. Bemerkung Auch bei singulären Kurven E kann man eine Addition + auf der Menge E der nichtsingulären Punkte von E erklären, sodass ( E , +) eine Gruppe ist. Man lässt also die singulären Punkte einfach weg. Diese Gruppen sind aber isomorph zu (F, +) oder (F \ {0}, ·) oder zu einer Untergruppe von K \ {0} für eine quadratische Erweiterung K von F. Der Isomorphismus kann explizit angegeben werden. Daher sind diese Kurven für die Kryptologie uninteressant.
13.5 Die Gruppe ( E, +)
239
Aufgaben 13.1 Zeigen Sie, dass in einer projektiven Ebene jede Gerade mindestens drei Punkte hat. Zeigen Sie weiter, dass alle Geraden gleich viele Punkte haben. 13.2 Zeigen Sie, dass in (PU , GU ) aus Lemma 13.1 das Axiom (A3) für affine Ebenen gilt. Beachten Sie, dass zwei der vier in (P3) postulierten Punkte auf U liegen könnten. Nur in diesem Fall ist die Aussage nicht trivial. 13.3
Es seien F ein Körper mit char F = 2 und E : y2 + a1 xy + a3 y − ( x3 + a2 x2 + a4 x + a6 )
eine Kurve. Zeigen Sie: (a) Es gibt eine Koordinatentransformation, die E auf die Form bringt E : y2 − ( x3 + cx2 + ax + b) (b) Ist char F = 3, so kann c = 0 erreicht werden. (c) E ist singulär genau dann, wenn x3 + cx2 + ax + b mehrfache Nullstellen besitzt. 13.4 Zeigen Sie: Das Polynom σ ( x ) = x3 + a x + b ∈ F [ x ] hat genau dann mehrfache Nullstellen, wenn 4 a3 + 27 b2 = 0 gilt. Hinweis: Setzen Sie x3 + a x + b = ( x − α)2 ( x − β) und führen Sie einen Koeffizientenvergleich durch. 13.5 Zeigen Sie, dass eine Kurve E : y2 = x3 + ax2 + bx + c über einem Körper der Charakteristik 2 stets singulär ist. 13.6 Es sei F ein Körper mit char F = 2, 3, und E : y2 = x3 + ax + b sei eine elliptische Kurve. Die Gerade G schneide E im Punkt P mit Vielfachheit ν. (a) Ist ν > 1, so ist G = TP . (b) ν = 3 ⇔ 3P = O . (c) Bestimmen Sie ein Polynom, dessen Nullstellen die x -Koordinaten der Punkte der Ordnung 3 von E sind (Hinweis: 3 P = O ⇒ 2 P = − P). 13.7
Es sei E : y2 = x3 + x + 3 über Z11 .
(a) Bestimmen Sie alle Punkte der Ordnung 3. (b) Bestimmen Sie alle Punkte der Ordnung 2. (c) Zeigen Sie, dass der Punkt P = (4, 4) auf E liegt. (d) Bestimmen Sie die Ordnung von P. (e) Bestimmen Sie | E|.
14 Anwendungen elliptischer Kurven in der Kryptologie * Wir stellen in diesem letzten Kapitel einige wichtige Anwendungen elliptischer Kurven vor – ein Verschlüsselungsverfahren, ein Signaturverfahren und den Faktorisierungs-Algorithmus ECM von Lenstra. Desweiteren behandeln wir Verfahren, die für den praktischen Einsatz elliptischer Kurven von Bedeutung sind. Dazu gehört insbesondere die Bestimmung der Gruppenordnung nach Schoof. Bisher haben wir großen Wert auf Vollständigkeit der Beweise gelegt. Im vorliegenden Kapitel (vor allem im Abschnitt 14.4) lässt sich dieser Anspruch nicht mehr durchhalten. Die Darstellung der Theorie, insbesondere aus der algebraischen Geometrie, würde den Rahmen dieses Buches bei Weitem sprengen.
14.1 Das ElGamal-Verfahren auf elliptischen Kurven Wir beschreiben das ElGamal-Verschlüsselungsverfahren auf einer elliptischen Kurve E (vgl. Abschnitt 9.2).
14.1.1 Schlüsselerzeugung Gegeben seien ein endlicher Körper F, eine elliptische Kurve E über F und ein Punkt P ∈ E. Der Teilnehmer T wählt eine geheime natürliche Zahl a und berechnet Q = a P = P + · · · + P, das a-Fache von P. Beim ElGamal-Verfahren sind •
(F, E, P, Q) der öffentliche Schlüssel;
•
a (das a mit Q = a P) der geheime Schlüssel des Empfängers T.
14.1.2 Verschlüsselung Der Sender G sendet an T eine verschlüsselte Nachricht. Dazu besorgt sich G den öffentlichen Schlüssel (F, E, P, Q) von T. Es sei N ∈ E der Klartext.
G wählt zufällig eine Zahl b ∈ N.
242
14 Anwendungen elliptischer Kurven in der Kryptologie *
G berechnet B := b P ∈ E und C := b Q + N ∈ E. G sendet den Geheimtext C = ( B, C ) an T.
C=( B, C )
G
14.1.3
! (F, E P, Q)
T
Entschlüsselung
Erhält der Empfänger T vom Sender G den Geheimtext C = ( B, C ), so berechnet er mit seinem geheimen Schlüssel a das Element − a B + C. Es gilt nämlich wegen B = b P, C = b Q + N und Q = a P:
−a B + C = −a b P + b Q + N = −a b P + a b P + N = N , und damit erhält T den Klartext N ∈ E zurück. Bemerkung Bei der praktischen Anwendung des ElGamal-Verfahrens in elliptischen Kurven tauchen zwei Probleme auf: •
Die Codierung eines Klartextes in ein N ∈ E ist keineswegs trivial.
•
Die Datenexpansion: Ein Klartext liefert im Geheimtext vier Elemente aus F, jeweils zwei Koordinaten von B und C.
14.2
Das Signaturverfahren ECDSA
Der Elliptic Curve Digital Signature Algorithm, kurz ECDSA, ist das Pendant zum Signaturverfahren DSS (vgl. Abschnitt 12.4). Das Verfahren ist in ANSI X9.62 standardisiert. Gegeben ist eine elliptische Kurve E : y2 = x 3 + a x + b über Z p , wobei wir vereinfachend p > 3 voraussetzen. Die Elemente a, b ∈ Z p seien so gewählt, dass x3 + a x + b keine mehrfachen Nullstellen besitzt. Es sei P = (u, v) ∈ E ein affiner Punkt der Kurve von Primzahlordnung q = o ( P). Der Teilnehmer T wählt zufällig ein α ∈ {2, . . . , q − 2} als geheimen Schlüssel, berechnet Q = α P und publiziert seinen öffentlichen Schlüssel
( p, a, b, P, Q, q) .
14.2 Das Signaturverfahren ECDSA
243
Bemerkung Von der Primzahl q verlangt man in der Praxis q > 2160 , q > 4
√
p und q pk − 1 für k = 1, . . . , 20 ,
damit das diskrete Logarithmenproblem hinreichend schwierig ist.
Signieren einer Nachricht. Der Teilnehmer T signiert ein Dokument N , das in der Praxis als String über Z2 gegeben ist, d. h. N ∈ Z2∗ :
T wählt ein zufälliges k ∈ {2, . . . , q − 1}. T berechnet k P = (u, v) und wählt den kleinsten positiven Repräsentanten r von u ∈ Z p . Falls r ≡ 0 (mod q), so wähle ein neues k. Falls r ≡ 0 (mod q), so mache im nächsten Schritt weiter. T berechnet mit seinem geheimen Schlüssel α und einer öffentlich bekannten kollisionsresistenten Hashfunktion h : Z2∗ → Z q : s=k
−1
(r α + h(N )) ∈ Z q .
Falls s = 0, so wähle ein neues k. Falls s = 0, so mache im nächsten Schritt weiter. T schickt das signierte Dokument (N , r, s) an einen Teilnehmer S.
Verifikation der Signatur. Der Teilnehmer S kann die Signatur von T mittels des öffentlichen Schlüssels von T verifizieren. Dazu berechnet S den Kurvenpunkt R = s−1 (r Q + h(N ) P) ∈ E , dabei haben wir vereinfacht s−1 für den kleinsten positiven Repräsentanten der Restklasse s−1 ∈ Z q geschrieben. Das werden wir so beibehalten. Gilt R = O , so wird die Signatur nicht akzeptiert. Ist R ein affiner Punkt in E, so wird die Signatur dann als gültig akzeptiert, falls die x -Koordinate von R gleich r ist. Falls die Signatur von T stammt, gilt nämlich R = s−1 (r Q + h(N ) P) = s−1 (r α + h(N )) P = k P . Da nur T den geheimen Schlüssel α kennt, kann man dies als einen Beweis dafür auffassen, dass das Dokument N von T stammt. Bemerkung Dieses Verfahren ist auch für elliptische Kurven über Körpern der Form F2ν , ν ∈ N, standardisiert. Dabei sind nur wenige Modifikationen vorzunehmen.
244
14.3
14 Anwendungen elliptischer Kurven in der Kryptologie *
Faktorisierung mit elliptischen Kurven
Im Jahre 1987 schlug H. W. Lenstra vor, elliptische Kurve zur Faktorisierung natürlicher Zahlen zu nutzen. Lenstras Verfahren wird meist mit ECM (Elliptic Curve Method) bezeichnet. Bei Lenstras Verfahren rechnet man in einer Menge G mit einer nicht wohldefinierten Verknüpfung. Die Menge G wäre mit dieser Verknüpfung eine Gruppe, wenn die zu faktorisierende Zahl N eine Primzahl wäre. Gerade die Tatsache, dass der Versuch, Elemente aus G zu verknüpfen scheitern kann, führt zu nichttrivialen Faktoren von N. Gegeben sei also eine natürliche Zahl N, die es zu faktorisieren gilt. Genauer suchen wir nach einem nichttrivialen Teiler d von N. Gegebenenfalls wäre das Verfahren auf d und Nd erneut anzuwenden.
14.3.1
Elliptische Kurven über dem Ring Z N
Ohne Einschränkung dürfen wir voraussetzen, dass ggT(6, N ) = 1 ist. Es sei p ein – uns unbekannter – Primteiler von N. In einer elliptischen Kurven E über dem Körper Z p können wir nicht rechnen, da uns p nicht bekannt ist. Wir werden daher in E modulo N rechnen, E also als Kurve über dem Ring Z N auffassen. Wie schon mehrfach geschehen, identifizieren wir Restklassen modulo N gelegentlich mit ihren kleinsten nichtnegativen Repräsentanten. Es sei V := ( x, y, z) ∈ Z3N ; ggT ( x, y, z, N ) = 1 . In Analogie zur Konstruktion der Punktmenge von PG(2, Z p ) definieren wir eine Äquivalenzrelation auf V durch
( x1 , y1 , z1 ) ∼ ( x2 , y2 , z2 ) : ⇔ ∃ λ ∈ Z × N : ( x1 , y1 , z1 ) = λ ( x2 , y2 , z2 ) und bezeichnen die Menge aller Äquivalenzklassen P := V/∼ als die Punktmenge der projektive Ebene über Z N . Für die Äquivalenzklasse des Punktes ( x, y, z) schreiben wir wie gehabt ( x : y : z). Weil Z N kein Körper ist, kann man nicht ohne Weiteres Geraden einführen. Wir betrachten daher nur die Punktmenge. In Analogie zu unserer Darstellung in Kapitel 13 setzen wir für a, b ∈ Z N mit 4 a3 + 27 b2 ∈ Z × N F ( X, Y, Z ) := Y 2 Z − X 3 + aXZ2 + bZ3 ∈ Z N [ X, Y, Z ] und erklären die elliptische Kurve über Z N durch E := {(u : v : w) ∈ P ; F (u, v, w) = 0} . Wie in Abschnitt 13.2.1 erkennt man, dass E wohldefiniert ist.
14.3 Faktorisierung mit elliptischen Kurven
245
Die Bedingung 4 a3 + 27 b2 ∈ Z × N stellt nach Lemma 13.4 sicher, dass die Kurve E bezüglich jedes Primteilers von N nicht singulär ist. Genauer: Für jeden Primteiler p von N ist E p : y2 = x3 + a x + b in PG(2, Z p ) eine elliptische Kurve über Z p . Desweiteren gibt es eine surjektive Abbildung η p : E → E p , ( x : y : z) → ( x : y : z) (mod p) , die einfach die Koordinaten eines jeden Punktes modulo p reduziert. Weil in Z N nicht jedes von Null verschiedene Element invertierbar ist, besteht die elliptische Kurve E nicht mehr nur aus den affinen Punkten und dem unendlich fernen Punkt. Stattdessen setzt sie sich aus drei disjunkten Mengen zusammen
{( x : y : 1) ∈ E} , := {( x : y : 0) ∈ E} , := {( x : y : d) ∈ E ; ggT (d, N ) = 1} . :=
Eaff E
∞
Es
Es gilt also E = Eaff ∪ E∞ ∪ Es – das s bei Es steht für speziell. Die affinen Punkte P = (u : v : 1), Q = (s : t : 1) ∈ Eaff bezeichnen wir wie im Körperfall mit Tupeln P := (u, v) und Q := (s, t). Außerdem ist der unendlich ferne Punkt O = (0 : 1 : 0) offensichtlich Element der Teilmenge E∞ (die aber weitere Punkte enthalten kann). Die speziellen Punkte ( x : y : d) ∈ Es werden unter η p auf O oder in Eaff abgebildet, je nachdem ob p ein Teiler von d ist oder nicht. Die Addition definieren wir nur für Punkte in Eaff . Dabei nutzen wir die expliziten Formeln aus Abschnitt 13.5.2 für elliptische Kurven über Körpern. Wir setzen für P = (u, v) und Q := (s, t) aus Eaff :
− P := (u, −v) bzw. − Q := (s, −t)
und P + Q :=
O, (w, −α (w − u) − v) ,
wobei
(∗) w = α2 − u − s und α =
v−t u−s , 3u2 + a 2v
,
falls P = − Q , sonst ,
falls P = ± Q und u − s ∈ Z × N, falls P = Q = − P und v ∈ Z × N.
Ist u − s oder v nicht invertierbar in Z N , so sind wir am Ziel. Es ist dann d := ggT(u − s, N ) bzw. d := ggT (v, N ) ein Teiler von N. Da die Addition auf E genauso wie für Kurven über endlichen Körpern definiert ist, gilt für jeden Primteiler p von N, dass die Abbildung η p additiv ist.
246
14.3.2
14 Anwendungen elliptischer Kurven in der Kryptologie *
Die Idee
Wie bei Pollards p − 1-Methode betrachten wir die Gruppenordnung von E p mit einem unbekannten Primteiler p von N. Wenn diese B-potenzglatt für ein vorher festgelegtes B ∈ N ist, so kann man wie folgt vorgehen: Setze wie schon mehrfach geschehen λ( B) := kgV(1, . . . , B) ; dann gilt für jeden Punkt P ∈ Eaff , dass η p (λ( B) P) = O in E p , aber nicht notwendig λ( B) P = O in E. Wenn dieser Fall eintritt, findet man einen nichttrivialen Teiler von N wie am Ende des letzten Abschnitts beschrieben. Falls der seltene Fall eintritt, dass λ( B) P = O in E (gewissermaßen simultan für alle Primteiler von N), könnte man mit einem anderen Punkt starten oder eine neue Kurve wählen. Leider ist es im Allgemeinen nicht leicht, Punkte auf elliptischen Kurven über Z N zu finden, wenn N keine Primzahl ist. Es sind hierzu nämlich Quadratwurzeln modulo N zu ziehen, und Lemma 9.3 besagt, dass das Ziehen von Quadratwurzeln modulo N mindestens so schwer ist wie das Faktorisieren von N. Deshalb geht man in der Praxis den zweiten Weg: Man wählt eine neue Kurve.
14.3.3
Der Algorithmus ECM
Wir dürfen ohne Einschränkung annehmen, dass ggT(6, N ) = 1 ist. Dann existieren elliptische Kurven über Z N wie im vorigen Abschnitt beschrieben, und die Formeln für die Addition können wie oben angewendet werden. Tatsächlich wählt man Kurven spezieller Gestalt, nämlich solche mit affiner Gleichung y2 = x3 + a x + 1. Man kann dann P = (0 : 1 : 1) wählen, und hat das Problem, einen Punkt auf E finden zu müssen, schon gelöst. Ein anderer Weg, eine Kurve mit einem bekannten Punkt zu finden, wird in der Aufgabe 14.3 angedeutet. Weiter muss die Schranke B gewählt werden. Die Wahl hängt davon ab, wie lange man suchen will. Wir werden später sehen, dass die Größe von B auch Einfluss auf die Größe der Teiler von N, die man finden kann, hat. Es seien p1 , . . . , pk alle Primzahlen kleiner gleich B, am Besten beginnend mit ν p1 = 2 der Größe nach geordnet. Wähle νi ∈ N maximal mit pi i ≤ B für alle i ∈ {1, . . . , k }.
Zunächst muss durch Primzahltests sichergestellt werden, dass N keine Primzahl ist; sonst – Stop! Lege die Schranke B fest.
14.4 Zur Anzahl der Punkte einer Kurve
247
Wähle a ∈ N und bestimme d := ggT(4 a3 + 27, N ). Falls d = 1 weiter mit dem nächsten Schritt; falls d = N, wähle neues a; sonst Teiler d von N gefunden – Stop! Auf der Kurve E : y2 = x3 + a x + 1, setze P0 = (0 : 1 : 1), und bestimme ν rekursiv Pi := pi i Pi−1 mit i = 1, . . . , k, soweit möglich. Falls Pk existiert, d. h. bei der Rechnung nichts schief geht, wähle ein neues a wie im vorigen Schritt und wiederhole; falls nicht, ist ein Nenner r aus der Berechung von α in (∗) nicht invertierbar modulo N; Bestimme d := ggT(r, N ) falls d = N, wähle ein neues a wie im ersten Schritt; sonst ist d der gesuchte Teiler – Stop!
Wenn wir den seltenen Fall Pk = O ausblenden, so liefert der Algorithmus immer dann einen Teiler von N, wenn es einen Primteiler p von N gibt,fürden die Kurve E p eine Mächtigkeit hat, die B -potenzglatt ist. In diesem Fall ist E p ein Teiler von λ( B) und daher gilt η p ( Pk ) = η p (λ( B) P) = O in E p . Bemerkung Die Laufzeit der ECM ist O exp log N log log N , wenn für den kleinsten Primteiler p von N gilt
1 log p log log p . B ≈ exp 2 Die Wahl der Schranke wird tatsächlich an der Größenordnung der Primteiler ausgerichtet, die man sucht. Will man bis 1020 gehen, wählt man B ≈ 12 000.
14.4 Zur Anzahl der Punkte einer Kurve Die Kenntnis der Ordnung einer elliptischen Kurve ist für viele Anwendungen von großer Bedeutung. Zum Beispiel muss sichergestellt sein, dass die Gruppenordnung einen großen Primteiler besitzt, wenn man die Kurve für ein kryptografisches Verfahren einsetzen will. Die Bestimmung der Gruppenordnung erfolgt z. B. mit dem Algorithmus von Schoof, den wir in diesem Abschnitt in seinen Grundzügen angeben. Weiterhin beschreiben wir die Struktur der Gruppe ( E, +) und formulieren Aussagen zur Existenz elliptischer Kurven mit vorgegebener Ordnung und Gruppenstruktur. In diesem letzten Abschnitt setzen wir voraus: Es seien F ein endlicher Körper mit |F | = q = pm , p = char F = 2, 3 und E : y2 = σ ( x ) eine elliptische Kurve mit σ ( x ) = x 3 + a x + b ∈ F [ x ].
248
14.4.1
14 Anwendungen elliptischer Kurven in der Kryptologie *
Der Satz von Hasse
Wir zeigen, dass für die Menge der Quadrate in F gilt: q−1 2 . x ; x ∈ F \ {0} = 2 Die Abbildung Ψ : F \ {0} → F \ {0} , x → x2 ist ein Homomorphismus mit dem Kern {±1} und dem Bild x2 ; x ∈ F \ {0} . Aus dem Homomorphiesatz von Seite 150 folgt somit die Behauptung. Zu gegebenem u ∈ F ist also σ (u) etwa in der Hälfte aller Fälle ein Quadrat und liefert in diesen Fällen zwei Punkte der elliptischen Kurve. Man erwartet daher etwa q Punkte auf E. In der Tat hat man den Satz (siehe [26]): Satz 14.1 (Hasse) Es sei E eine elliptische Kurve über F mit |F | = q. Dann gilt
| E| = q + 1 − t mit |t| ≤ 2
√
q.
Man beachte, dass t die Abweichung der Punktanzahl von E von der Anzahl der Punkte auf einer projektiven Geraden angibt. Der Algorithmus von Schoof, der in Abschnitt 14.4.5 dargestellt wird, ist eine Methode mit der t und damit | E| effizient bestimmt werden kann. Beispiel p := 2160 + 7 = 1461501637330902918203684832716283019655932542983 ist eine Primzahl. Die Anzahl der Punkte N jeder elliptischen Kurve über Z p liegt im Intervall 146150163733090291820368 2414864643790397583130631
≤ N ≤ 146150163733090291820368 7250567922248914281955335 Die Stelle an der die Zahlen zum ersten Mal voneinander abweichen ist markiert. Man erkennt, dass die Ober- und die Untergrenze sich nur relativ wenig unterscheiden. Bemerkung Um eine Kurve mit ungefähr 2160 ≈ 1.4 · 1048 Punkten zu erhalten, braucht man also q ≈ 2160 . Die Abweichung ist höchsten in der Größenordnung von 1025 . Das oben beschriebene heuristische Argument liefert eine effiziente Methode, um Punkte auf elliptischen Kurven zu gewinnen.
Wähle zufällig ein Element u ∈ F. Prüfe, ob σ(u) ein Quadrat in F ist.
14.4 Zur Anzahl der Punkte einer Kurve
249
Berechne gegebenenfalls v ∈ F mit v2 = σ(u). (u, ±v) sind zwei Punkte der Kurve.
Bemerkung Lemma 11.1 zeigt, wie der zweite Schritt durchgeführt werden kann. Dieses Lemma gilt für beliebige endliche Körper ungerader Ordnung. Der Beweis kann fast wörtlich übernommen werden. Zum dritten Schritt, speziell für die Körper Z p siehe Abschnitt 9.3.2, insbesondere die Bemerkung auf Seite 175. 14.4.2 Zur Existenz elliptischer Kurven mit vorgegebener Ordnung Wir benutzen t weiterhin in seiner Bedeutung aus dem Satz 14.1 von Hasse. Eine elliptische Kurve E über dem endlichen Körper F mit |F | = pν , p prim, heißt supersingulär, wenn p ein Teiler von t ist. Man beachte, dass die Kurve E nicht singulär ist! Insofern ist die Wahl des Begriffs etwas verwirrend. Der folgende Satz besagt insbesondere, dass es außer im supersingulären Fall (der für die Kryptologie nicht so interessant ist) zu jeder Ordnung im durch den Satz von Hasse gegebenen Intervall auch tatsächlich eine elliptische Kurve gibt. Nach [28] gilt: Satz 14.2 Über dem Körper F existiert eine elliptische Kurve mit | E| = q + 1 − t genau dann, wenn eine der folgenden Bedingungen erfüllt ist (i)
t ≡ 0 (mod p) und t2 ≤ 4 q (E ist also nicht supersingulär),
(ii)
2 m und t = 0,
(iii) 2 | m und t = 0 , p ≡ 1 (mod 4)
oder
t2 = q , p ≡ 1 (mod 3)
oder
t2 = 4q .
Bemerkung Ist q = p, also F = Z p , so gibt es für jedes
√ √ c ∈ I := [ p + 1 − 2 p, p + 1 + 2 p] ∩ N mindestens eine elliptische Kurve E mit | E| = c. Die Verteilung der Ordnungen auf das Intervall I ist nahezu gleichmäßig, mit einem leichten Abfall an den Rändern. Diese Tatsache ist für den Faktorisierungs-Algorithmus ECM von Lenstra wichtig. Wenn man die Schranke B geeignet wählt, sodass es genügend Bpotenzglatte Zahlen in I gibt, dann findet man mit hoher Wahrscheinlichkeit eine Kurve mit B-potenzglatter Ordnung. Diese Variabilität ist der große Vorteil von ECM gegenüber der p − 1-Methode von Pollard.
250
14 Anwendungen elliptischer Kurven in der Kryptologie *
14.4.3
Die Struktur der Gruppe ( E, +)
In einem gewissen Sinn sind elliptische Gruppe fast zyklisch. Satz 14.3 Es existieren n1 , n2 ∈ N mit n2 | ggT(n1 , q − 1) und E ∼ = Z n1 × Z n2 . Im Fall einer supersingulären Kurve hat man ein genaueres Ergebnis. Nach [25] gilt: Satz 14.4 Es sei E eine supersinguläre elliptische Kurve mit | E| = q + 1 − t. Im Fall (i)
t2 ∈ {q, 2 q, 3 q} ist E zyklisch;
√
q ist E ∼ = Z √ q −1 × Z √ q −1 ; √ (iii) t = −2 q ist E ∼ = Z √ q +1 × Z √ q +1 ; (ii)
t=2
(iv) t = 0 und q ≡ 3 (mod 4) ist E zyklisch; (v)
t = 0 und q ≡ 3 (mod 4) ist E zyklisch oder E ∼ = Z q +1 × Z 2 . 2
Hier liefert die Gruppenordnung (fast) die Struktur der Gruppe. Bemerkung Im nicht supersingulären Fall ist das anders. Es gilt eine Art Umkehrung des Satzes 14.3: Es sei N := q + 1 − t mit p t und t2 ≤ 4 q. Weiter seien n1 , n2 ∈ N gegeben mit n2 | ggT(n1 , q − 1) und N = n1 n2 . Dann existiert eine elliptische Kurve E über F mit E∼ = Z n1 × Z n2 . 14.4.4
Erweiterungskörper und der Frobenius
Es sei K ein Erweiterungskörper von F. Der Frobenius-Automorphismus φ:
K x
→ →
K xq
,
den wir schon auf Seite 42 betrachtet haben, ist ein Körperautomorphismus. Die Menge aller Fixpunkte von φ ist F. Die oben definierte Kurve E über F kann zu einer Kurve mit Punkten in PG(2, K ) erweitert werden. Wir setzen
E(K ) := (u, v) ∈ K2 ; v2 = σ(u) ∪ {O}
14.4 Zur Anzahl der Punkte einer Kurve
251
und sprechen von der Menge der K-rationalen Punkte von E. Offenbar gilt E ⊆ E(K ) für jeden Erweiterungskörper K von F; und E(K ) ist auch eine kommutative Gruppe mit der im vorigen Kapitel definierten Addition, die E als Untergruppe enthält. Besonderes wichtig ist der Fall, dass K der algebraische Abschluss F von F ist. In der Literatur zur algebraischen Geometrie wird meist E mit E(F ) gleichgesetzt. Was wir als E bezeichnen, würde dann mit E(F ) notiert werden. Für jedes n ∈ N setzen wir E(K )[n] := { P ∈ E(K ) ; n P = O} und E[n] := P ∈ E(F ) ; n P = O . Offenbar ist E(K )[n] für jeden Erweiterungkörper von F und für jedes n ∈ N eine Untergruppe von E(K ). Tatsächlich ist E[|k|] der Kern des Endomorphismus
[k] : E(F ) → E(F ) , P → k P mit k ∈ Z. Auch der Frobenius-Automorphismus φ induziert einen Endomorphismus von E(F ) durch ( x, y) → (φ( x ), φ(y)) = ( x q , yq ) φ : E (F ) → E (F ) , O → O . Beweis. Der Punkt ( x, y) liegt genau dann auf E(F ), wenn y2 = x3 + ax + b. Es folgt φ ( y2 ) = φ ( x 3 + a x + b ) ⇔ φ ( y )2 = φ ( x )3 + a φ ( x ) + b , denn a, b sind unter φ invariant. Das bedeutet, dass mit ( x, y) auch (φ( x ), φ(y)) auf der Kurve liegt. Daher ist φ wohldefiniert. Dass φ ein Homomorphismus ist, ergibt sich direkt aus den expliziten Formeln für die Addition auf einer elliptischen Kurve. Bemerkung Für jeden algebraischen Erweiterungskörper K von F gilt E = { P ∈ E (K ) ; φ ( P ) = P } .
Satz 14.5 Es sei E eine elliptische Kurve über F mit Frobenius-Endomorphismus φ (auf E(F )). Weiter gelte | E| = q + 1 − t. (a) E[n] ∼ = Z n × Z n , falls p n, und {O} , falls E supersingulär , E[ pe ] ∼ = Z pe , sonst . (b) Die Abbildung Z → End E(F ) , k → [k ] ist ein injektiver Ringhomomorphismus.
252
14 Anwendungen elliptischer Kurven in der Kryptologie *
(c) In End E(F ) gilt φ2 − [t] φ + [q] = [0]. Beweis. (a) und (c) siehe [26]. (b) Die Homomorphie ist klar. Es gilt [k] = [0] genau dann, wenn kP = O für alle P ∈ E(F ). Aber nach (a) gibt es Punkte mit beliebig großer Ordnung in E(F ), sodass k = 0 gelten muss. Daher ist der Kern des Homomorphismus trivial. Auf Grund dieses Satzes heißt t auch die Spur des Frobenius. 14.4.5
Der Algorithmus von Schoof
Ziel ist es, die Ordnung der Gruppe E zu finden. Wegen des Satzes 14.5 ist das gleichbedeutend mit der Bestimmung der Spur des Frobenius t. Die Zahl t ist modulo 2 bekannt. Mit unseren Voraussetzungen gilt nämlich:
Lemma 14.6 t≡
0 (mod 2),
falls σ eine Nullstelle in F besitzt,
1 (mod 2),
falls nicht.
Beweis. Die Anzahl aller Punkte mit P = − P ist gerade; sie müssen modulo 2 also nicht berücksichtigt werden. Für die verbleibenden Punkte gilt 2 P = O . Ein Punkt P der Ordnung 2 hat die Form P = (u, 0), denn nur indiesem Fall gilt O ∈ TP , vgl. Lemma 13.6. Es ist dann u eine Nullstelle von σ. Umgekehrt liefert jede Nullstelle von σ einen Punkt der Ordnung 2. Daher gibt es einen oder drei Punkte der Ordnung 2, wenn σ Nullstellen in F besitzt, sonst gibt es keine. Dazu kommt der Punkt O , der auch die Eigenschaft 2 O = O besitzt. Schließlich gilt | E| = q + 1 − t ≡ t (mod 2). Daraus folgt die Behauptung. Für eine ungerade Primzahl = p ist nach Satz 14.5 (a) E[] ∼ = Z × Z ein Z Vektorraum. Ist P ∈ E[], so gilt P = O , also auch φ( P) = O . Daher ist φ : E[] → E[] , P → φ( P) ein wohldefinierter Homomorphismus, der, wie man leicht sieht, sogar Z linear ist. Die Gleichung aus Satz 14.5 (c) gilt dann für φ . Für die Zahl t ∈ {− −2 1 , . . . , −2 1 } mit t ≡ t (mod ) ist t die Spur der linearen Abbildung φ . Bevor wir auf die Schwierigkeit des Algorithmus von Schoof eingehen, geben wir das Grundgerüst des Verfahrens an. √ Wähle max ∈ P minimal mit ∏∈P, ≤max ≥ 4 q.
Bestimme t2 ∈ {0, 1} gemäß Lemma 14.6. ♦ Für alle ∈ P mit ≤ max wähle P ∈ E[] und teste für alle τ ∈ {− −2 1 , . . . , −2 1 }, ob φ2 ( P) + q P = τ φ( P). Im Erfolgsfall setze t := τ. Bestimme die eindeutige Lösung des Systems von Kongruenzgleichungen √ √ t ≡ t (mod ) , ≤ max , die − 2 q ≤ t ≤ 2 q erfüllt. Vgl. dazu den chinesischen Restsatz 7.4 und Abschnitt 7.2.2.
14.4 Zur Anzahl der Punkte einer Kurve
253
Leider ist der mit ♦ gekennzeichnete Schritt nicht so einfach auszuführen. Es ist nämlich E[] im Allgemeinen nicht in E enthalten. Man müsste zu einem von abhängigen Erweiterungskörper K übergehen mit E[] ⊆ E(K ). Das ist kein gangbarer Weg. Hier kommen die sogenannten Divisionspolynome zu Hilfe. Das 2 sind Polynome f ∈ F [ X ] vom Grad höchstens 2−1 mit der Eigenschaft:
(∗)
Für alle P = ( x, y) ∈ E(F ) gilt P ∈ E[] ⇔ f ( x ) = 0.
Siehe dazu [4, III.4]. Wir beschreiben einen Algorithmus, der den in ♦ genannten Test durchführt. Dabei rechnen wir symbolisch mit x und y. Der Knackpunkt ist, dass an allen Stellen y2 durch σ ( x ) ersetzt werden kann (weil alle Punkte auf der Kurve liegen) und alle Polynome in x modulo f reduziert werden können (wegen (∗)). So ergibt sich etwa φ( x, y) = ( x q , yq ) = ( x q mod f , y · (σ( x )
q −1 2
mod f )) ,
sodass alle auftretenden Polynome in x einen Grad kleiner als deg f ≤ 2−1 haben. Es sei also ∈ P mit ≤ max gewählt.
Berechne iterativ für τ ∈ 0, . . . , −2 1 symbolisch die erste Koordinate der Gleichung 2 2 (∗∗) ( x q , yq ) + q ( x, y) = τ ( x q , yq ) 2
mithilfe der expliziten Formeln aus Abschnitt 13.5.2. Das Ergebnis ist eine rationale Funktion in den Variablen x und y.
Multipliziere mit dem Hauptnenner und ersetze y2 durch σ( x ), sodass ein Ausdruck der Form h( x ) = y k( x ) mit Polynomen h, k ∈ F [ X ] übrigbleibt. Durch Einsetzen in die Gleichung y2 = σ( x ) entsteht h2 ( x ) = k2 ( x ) σ( x ). Berechne d( x ) = ggT k2 ( x ) σ( x ) − h2 ( x ), f ( x ) . Ist d = 1, nächstes τ; andernfalls berechne die zweite Koordinate der Gleichung (∗∗) für dieses τ und durchlaufe den Algorithmus, um ein Polynom m( x ) wie oben zu erhalten und setze d = ggT(m( x ), f ( x )). Ist d = 1, so ist t = −τ, andernfalls t = τ – Stop! Aufgaben 14.1 Gegeben sei der endliche Körper F mit q = |F | Elementen. Zeigen Sie, dass es genau q2 − q Polynome der Form σ ( x ) = x3 + ax + b in F [ x ] gibt, die nur einfache Nullstellen in jedem Erweiterungskörper von F haben. Hinweis. Zeigen Sie zunächst: Falls σ eine mehrfache Nullstelle hat, so liegt diese in F. 14.2 Schildern Sie den Diffie-Hellman-Schlüsselaustausch auf einer elliptischen Kurve E.
254
14 Anwendungen elliptischer Kurven in der Kryptologie *
14.3 Faktorisieren Sie die Zahl N = 2 773 mit ECM. Wählen Sie den Punkt P = (1, 3) und a = 4. Bestimmen Sie die Gleichung der Kurve E so, dass P ∈ E gilt. 14.4 Bestimmen Sie alle möglichen Strukturen der Gruppe ( E, +) für elliptische Kurven E über Z5 . 14.5 Bestimmen Sie die Gruppenordnungen aller elliptischer Kurven über dem Körper Z5 .
Literaturverzeichnis [1]
A LFORD, W. ; G RANVILLE, A. ; P OMERANCE, C. : There are infinitely many Carmichael numbers. In: Ann. Math. (2) 139 (1994), S. 703–722
[2]
B EUTELSPACHER, A. ; N EUMANN, H. B. ; S CHWARZPAUL, T. : Kryptografie in Theorie und Praxis. Vieweg-Verlag, Wiesbaden, 2005
[3]
B IHAM, E. ; S HAMIR, A. : Differential cryptanalysis of DES-like cryptosystems. In: J. Cryptology 4 (1991), S. 3–72
[4]
B LAKE, I. ; S EROUSSI, G. ; S MART, N. : Elliptic curves in cryptography. Cambridge Univ. Press, Cambridge, 1999 (Lect. Notes London Math. Soc. 265)
[5]
B RÜDERN, J. : Einführung in die analytische Zahlentheorie. Springer-Verlag, BerlinHeidelberg-New York, 1995
[6]
B UCHMANN, J. : Einführung in die Kryptographie. 4. Aufl. Springer-Verlag, BerlinHeidelberg-New York, 2008
[7]
C OHEN, H. : A course in computional algebraic number theory. Springer-Verlag, BerlinHeidelberg-New York, 1993
[8]
D AEMEN, J. ; R IJMEN, V. : AES – The advanced encryption standard. Springer-Verlag, Berlin-Heidelberg-New York, 2002
[9]
D IFFIE, W. ; H ELLMAN, M. E.: New directions in crytography. In: IEEE Trans. Information Theory 22 (1976), S. 644–654
[10] E DWARDS, H. M.: A normal form for elliptic curves. In: Bull. Amer. Math. Soc. 44 (2007), S. 393–422 [11] F ÅK, V. : Repeated use of codes which detect deception. In: IEEE Trans. Information Theory 25 (1979), S. 233–234 [12] F ORSTER, O. : Algorithmische Zahlentheorie. Vieweg-Verlag, Wiesbaden, 1996 [13] K APLAN, M. : Computeralgebra. Springer-Verlag, Berlin-Heidelberg-New York, 2005 [14] K ARPFINGER, C. ; M EYBERG, K. : Algebra. Spektrum Akademischer Verlag, Heidelberg, 2008 [15] K NAPP, A. : Elliptic curves. Princeton Univ. Press, 1992 [16] M ATSUI, M. : Linear cryptanalysis method for the DES Cipher. In: H ELLESETH, T. (Hrsg.): EUROCRYPT ’93, Springer Verlag, 1993 (Lect. Notes Comput. Sci. 765), S. 386–397 [17] M AY, A. : Computing the RSA secret key is deterministic polynomial time equivalent to factoring. In: Advances in Cryptology – Crypto 2004, Springer-Verlag, BerlinHeidelberg-New York, 2005 (Lect. Notes Comput. Sci. 2729), S. 213–219 [18] M ENEZES, A. J.: Elliptic curve public key cryptosystems. Kluwer Academic Publishers, Doldrecht-Boston-London, 1993
256
Literaturverzeichnis
[19] M ENEZES, A. J. ; O ORSCHOT, P. C. ; VANSTONE, S. A.: Handbook of applied cryptography. CRC Press, Boca Raton-New York-London-Tokyo, 1997 [20] M ILLER, M. : Symmetrische Verschlüsselungsverfahren. Teubner-Verlag, Wiesbaden, 2003 [21] N ATIONAL B UREAU OF S TANDARDS (Hrsg.): Data Encryption Standard. U. S. Department of Commerce: National Bureau of Standards, Jan. 1977 [22] R IVEST, R. L. ; S HAMIR, A. ; A DLEMAN, L. : A method for obtaining digital signatures and public-key cyptosystems. In: Comm. ACM 21 (1978), S. 120–126 [23] R OSENBAUM, U. : A lower bound on authentication after having observed a sequence of messages. In: J. Cryptology 6 (1993), S. 135–156 [24] S CHÖNHAGE, A. ; S TRASSEN, V. : Schnelle Multiplikation großer Zahlen. In: Computing 7 (1973), S. 281–292 [25] S CHOOF, R. : Nonsingular plane cubic curves over finite fields. In: J. Combin. Theory Ser. A 46 (1987), S. 183–211 [26] S ILVERMAN, J. H.: The arithmetic of elliptic curves. Springer-Verlag, Berlin-HeidelbergNew York, 1986 [27] S TINSON, D. R.: Cryptography. 2. Aufl. CRC Press, Boca Raton-London, 2002 [28] WATERHOUSE, E. : Abelian varieties over finite fields. In: Ann. Sci. École Norm. Sup. 2 (1969), S. 521–560 [29] W ERNER, A. : Elliptische Kurven in der Kryptographie. Heidelberg-New York, 2001
Springer-Verlag, Berlin-
[30] W IENER, M. J.: Cryptanalysis of short RSA secret exponents. In: IEEE Trans. Information Theory (1990), S. 553–558 [31] WÄTJEN, D. : Kryptographie. Spektrum Akademischer Verlag, Heidelberg-Berlin, 2004
Index Adaptive-Chosen-Plain-Text, 7 Adjunktion, 41 Advanced Encryption Standard, 45 AES, 45 AES-Polynom, 39 affine Chiffre, 20 affine Ebene, 87 affine Ebene über F, 88 affine Gleichung, 226 AKS-Test, 152 algorithmisch äquivalent, 64 Alphabet, 8 Angriff, 1 Angriffsarten, 6 Anzahl der Atome, 126 asymmetrische Kryptografie, 10 asymmetrisches Kryptosystem, 10 asymptotisches Verhalten, 58 Authentifikationssystem, 84 mehrfach perfektes, 92 perfektes, 85 Authentizität, 1, 81 Authorisierung, 1 avarage case, 65 Baby-Step-Giant-Step-Algorithmus, 180 bedingte Wahrscheinlichkeit, 27 Betrugswahrscheinlichkeit, 85 Binärdarstellung, 61, 107 Bit, 8 Bit-Strom, 55 Block-Chiffre, 24, 33 interne, 51 Blocklänge, 33 Byte, 43 Caesar-Chiffre, 3, 9 Carmichael-Zahl, 146 CBC-Modus, 54
CCM, 83 CFB-Modus, 55 Charakteristik, 225 Chiffre affine, 20 lineare, 20 monoalphabetische, 6 polyalphabetische, 12 Chosen-Cipher-Text, 8 Chosen-Plain-Text, 7 Cipher-Text-Only, 7 CMAC, 83 Codierung, 4 Codierungstheorie, 1 Data Encryption Standard, 51 Datensatz, 83 DES, 51, 52 deterministisch, 125, 141 Dichte, 143 differentielle Kryptoanalyse, 56 Diffie-Hellman-Problem, 169 Diffie-Hellman-Schlüsselaustausch, 168 Diffusion, 45 Digital-Signatur-Standard, 216 diskreter Logarithmus, 104 diskretes Logarithmenproblem, 104, 179 Diskriminante, 228 Division mit Rest, 36, 62 Divisionspolynom, 253 DLP, 179 DSA, 216 DSS, 216 Ebene affine, 87 projektive, 220 ECB-Modus, 54 ECDSA, 242
258 ECM, 246 Edwardskoordinaten, 238 eigentlicher Kettenbruch, 129 Einheit, 19 Einheitengruppe, 19 Einsideal, 153 Einwegfunktion, 76 mit Hintertürchen, 78 ElGamal-Signaturverfahren, 213 ElGamal-Verschlüsselungsverfahren, 171 Elliptic Curve Digital Signature Algorithm, 242 elliptische Kurve, 228 über F, 225 über Z N , 244 Entschlüsselungsfunktion, 9 Enumeration, 180 Ereignis, 26 Erweiterungskörper, 41 erzeugte Untergruppe, 93, 96 Euler’sche ϕ-Funktion, 75 Exponentiation schnelle, 107 Exponentiationschiffre, 93 exponentieller Algorithmus, 59 Faktorbasis, 199 Faktorgruppe, 98 Feistel-Chiffre, 51 Fermat-Test, 144 Friedman’scher Koinzidenzindex, 14 Frobenius-Automorphismus, 42, 250 Fundamentalsatz der Arithmetik, 68 g-adische Darstellung, 61 GCM, 83 Geburtstagsparadoxon, 32 Geheimtext, 4 Geheimtextmenge, 9 gemeinsamer Teiler, 66 Geradenmenge der affinen Ebene, 87 Geradenmenge der projektiven Ebene, 220 ggT von Polynomen, 39 von Zahlen, 66 glatte Zahl, 195 Gleichung affine, 226
Index nichthomogene, 226 Gleichverteilung, 26 goldener Schnitt, 68 größter gemeinsamer Teiler von Polynomen, 39 von Zahlen, 66 größtes Ganzes, 58 Grad, 34 Gruppe zyklische, 93 Gruppenordnung, 93 Hashfunktion, 77 Hashwert, 78 Hexadezimalsystem, 43 höchster Koeffizient, 35 homogenes Polynom, 224 Homomorphiesatz, 150 Hybridverfahren, 115 Ideal, 152 erzeugtes, 153 triviales, 153 Impersonation, 85 initiale Permutation, 51 Integrität, 1, 81 interne Block-Chiffre, 51 introspektive Zahl, 158 invertierbares Element, 19 irreduzibel, 39 kanonische Primfaktorzerlegung, 68 kartesisch, 84 Kerckhoffs’sches Prinzip, 6 Kettenbruch eigentlicher, 129 endlicher, 129 unendlicher, 133 Klartext, 4 Klartextmenge, 9 Known-Plain-Text, 7 Koeffizienten, 35 Koinzidenzindex, 14 kollisionsresistent, 77 Komplexitätsklasse, 63 komprimiert, 78 Konfusion, 45 kongruent, 62, 153
Index Kongruenzgleichung, 73 Konkatenation, 8 Kryptoanalyse, 1 Kryptografie, 1 kryptografisches System, 9 Kryptologie, 1 Kryptosystem, 9 asymmetrisches, 10 symmetrisches, 10 Kurve elliptische, 228 Länge, 8 Landau-Symbol, 57 Large Prime Variation, 200 Laufzeit, 59 leeres Wort, 8 Leitkoeffizient, 35 lineare Chiffre, 20 lineare Kryptoanalyse, 56 linearer Algorithmus, 59 Logarithmus diskreter, 104, 179 logarithmus naturalis, 59 Low-Exponent-Angriff, 127 MAC, 81 Mann in der Mitte, 169 Mersenne’sche Primzahlen, 143 Message Authentication Code, 81 Millenium-Probleme, 64 Miller-Rabin-Test, 148 Minimalmodell, 88 monoalphabetische Chiffre, 6 Multiplikation nach Karatsuba-Ofman, 80 Multiplikator, 204 Nachricht, 82 gültige, 82 ungültige, 82 Näherungsbruch, 129, 133 Näherungsnenner, 132 Näherungszähler, 132 Nebenklassen, 98 Netz, 88 endlich, 88 nicht-singuläre Kurve, 228 nichthomogene Gleichung, 226
259 Nichtlinearität, 45 No-Message-Attacke, 210 normiertes Polynom, 38 NP , 63 NP -vollständig, 65 Nullideal, 153 Nullpolynom, 35 OFB-Modus, 55 One-Time-Pad, 24 Orakel, 64 Ordnung einer Gruppe, 93 eines Gruppenelements, 94 eines Netzes, 89 orthogonale Arrays, 92 P , 63 Padding, 33 parallel, 88 Parallelenaxiom, 87, 88 perfekt sicher, 29 perfektes Authentifikationssystem, 85 periodisch, 202 Pohlig-Hellman-Chiffre, 103 Pohlig-Hellman-Verfahren, 102 Pollards -Methode, 182, 193 Pollards p − 1 -Methode, 195 polyalphabetische Chiffre, 12 Polynom, 35 polynomialer Algorithmus, 59 Polynomring, 35 potenzglatte Zahl, 195 Potenzmenge, 25 prime Restklassengruppe, 71 Primfaktorzerlegung kanonische, 68 Primitivwurzel, 102 Primzahl Mersenne’sche, 143 sichere, 104, 143 Primzahlfunktion, 142 Primzahlsatz, 142 probabilistisch, 125, 141 Probedivision, 142 projektive Ebene, 220 projektive Ebene über F, 221
260 Pseudoprimzahl, 145 starke, 149 Pseudozufallsfolge, 25 Public-Key-Infrastruktur, 79 Punkt unendlich ferner, 226 Punktmenge einer affinen Ebene, 87 einer projektiven Ebene, 220 Quadrat modulo n, 173 quadratfrei, 146 quadratischer Algorithmus, 59 Quadratwurzel modulo n, 173 Rabin-Verfahren, 175 rationale Punkte, 251 Restklassengruppe, 3 Restklassenring, 34 Restwert, 201 Rijndael, 45, 50 RSA-Signaturverfahren, 210 RSA-Verfahren, 112 Rundenfunktion, 47 Rundenschlüssel, 46, 47 S-Box, 52 Satz von Cauchy, 98 Euler, 99 Fermat, 100 Gauß, 101 Lagrange, 96 Schlüsselmenge, 9 schnelle Exponentiation, 107 Seitenkanalangriff, 109 Sekanten-Tangenten-Konstruktion, 237 Serpent, 50 sichere Primzahl, 104, 143 Sieb des Eratosthenes, 206 Siebintervall, 205 Siebverfahren, 206 Signaturverfahren DSS, 216 ECDSA, 242 ElGamal, 212 Public-Key, 209 RSA, 210
Index Schnorr, 217 singuläre Kurve, 228 singulärer Punkt, 227 Skytale, 22 Speicherkomplexität, 65 spezielle Punkte, 245 Spur des Frobenius, 252 square and multiply, 107 starke Pseudoprimzahl, 149 String, 8 Strom-Chiffre, 23 subexponentieller Algorithmus, 60 Substitution, 85 Substitutions-Chiffre, 5 supersingulär, 249 symmetrisches Kryptosystem, 10 Tangente, 229 Teilbarkeit, 38, 65 Trapdoor-Einwegfunktion, 78 Treffer, 193 Turing-Maschine, 64 Übertrag, 61 unabhängige Ereignisse, 27 unendlich ferne Gerade, 223 ferner Punkt, 226 Untergruppe, 94 erzeugte, 93, 96 Unterschriften, 1 Verbindungsgerade, 221 Vernam-Chiffre, 24 Verschiebe-Chiffre, 3 Verschlüsselungsfunktion, 9 Verschlüsselungsverfahren AES, 44 Caesar, 3 DES, 51 ElGamal, 171, 241 Pohlig-Hellman, 102 Rabin, 175 RSA, 112 Vigenère, 11 Vertraulichkeit, 1 Vigenère-Chiffre, 12
Index Wahrscheinlichkeit, 26 bedingte, 27 Wahrscheinlichkeitsfunktion, 26 Wahrscheinlichkeitsverteilung, 26 Weierstraß-Gleichung, 227 Wert eines Kettenbruchs, 129 Wiener-Angriff, 137 worst case, 65 Wort, 8
261 Wurzel modulo n, 173 Zahlkörpersieb, 192 Zeitkomplexität, 65 Zerlegung, 191 Zero-Knowledge-Protokoll, 218 Zeuge, 145 zusammengesetzte Zahl, 141 zyklische Gruppe, 93