AES | ElGamal |
Bisher wurde immer vorausgesetzt, dass ein sicherer Kanal zum Austausch des geheimen Schlüssels zwischen beiden Parteien, etwa dem Sender und dem Empfänger existiert. Ein vermeintlich sicherer Kanal kann natürlich ein großer Unsicherheitsfaktor sein.
Ein weiteres Problem ist, dass bisher der geheime Schlüssel nur den beiden Teilnehmern und bekannt war. Ein Dritter, etwa , konnte keine Nachricht an verschlüsselt übermitteln, die auch von hätte korrekt entschlüsselt werden können.
Diffie und Hellman schlugen daher 1976 vor, Systeme zu suchen bzw. zu entwickeln, bei denen ein Teil des Schlüssels öffentlich ist ( kann an senden, wenn ein Teil von 's Schlüssel öffentlich ist) und der andere Teil des Schlüssels privat und geheim ist. Derartige Kryptosysteme werden Public-Key-Systeme (oder auch asymmetrische Kryptosysteme) genannt.
Ist der Schlüssel von allgemein bekannt, so kann jeder an Nachrichten (verschlüsselt) senden! In diesem Fall ist kein sicherer Kanal zur Schlüsselübergabe mehr notwendig.
Nach einer Idee von Rivest, Shamir und Adleman entstand das RSA-System, benannt nach den Anfangsbuchstaben der Namen der drei Erfinder.
Wir nehmen im Folgenden an, dass der Klartext eine Folge von Bits ist, die in Blöcke gleicher Länge unterteilt wird. Jeder Block, interpretiert als natürliche Zahl, wird einzeln verschlüsselt.
Die Funktionsweise des RSA-Kryptosystems lässt sich wie folgt beschreiben.
Sei eine Nachricht, die verschlüsselt von an gesandt werden soll. Die Nachricht ist in natürlicher Weise (etwa mit der Binärdarstellung) aus einem -Klartextblock der Länge maximal entstanden. Später werden wir sehen, dass wir beliebige Nachrichten verwenden können.
möchte an eine Nachricht senden. Dazu nimmt er den öffentlichen Schlüssel von , berechnet
und sendet das Ergebnis an .
Empfängt die Nachricht () von , so nimmt er seinen geheimen privaten Schlüssel und berechnet
und erhält die gesendete Nachricht . Dieses müssen wir natürlich noch verifizieren, zu diesem Zweck weisen wir die Korrektheit des RSA-Verfahrens nach.
Wir wollen zeigen, dass man für alle , die wie beschrieben verschlüsselt und anschließend wieder entschlüsselt werden, genau die Nachricht erhält, dass also gilt:
Mit dem Satz von Euler und Satz 41 sieht man nun für die Nachricht die Korrektheit des RSA-Verfahrens wie folgt ein:
da nach Annahme gilt.
Ein wichtiger Aspekt beim RSA-Verfahren ist das effiziente Auffinden geeigneter Primzahlen und . Dies ist mit verschiedenen probabilistischen Primzahlverfahren wie etwa der Methode von Solovay und Strassen effizient möglich.
Wir wollen kurz einige Überlegungen zur Effizienz bzw. Laufzeit des RSA-Systems durchführen.
Beim Setup des Systems benötigen wir eine effiziente Erzeugung zweier großer Primzahlen, die wir wie erwähnt beispielsweise mit dem Algorithmus von Solovay und Strassen durchführen können. Seit einiger Zeit ist sogar ein polynomieller deterministischer Algorithmus zum Primzahltest bekannt, aber der Algorithmus von Solovay und Strassen ist aufgrund von kleinen Konstanten in der Laufzeit besonders schnell.
Desweiteren entsteht im Wesentlichen Aufwand durch die Multiplikation zweier langer Zahlen sowie durch Aufrufe des Euklidischen Algorithmus zur Bestimmung des größten gemeinsamen Teilers zweier Zahlen bzw. durch Aufrufe des erweiterten Euklidischen Algorithmus zur Bestimmung des multiplikativen Inversen einer Zahl. Mit der Schulmethode kann das Produkt zweier -Bit Zahlen mit Aufwand bestimmt werden, also effizient in der Eingabelänge. Für den Euklidischen Algorithmus überlegt man sich, dass dieser aufgerufen auf Zahlen höchstens viele Iterationen mit Zeitaufwand jeweils benötigt, was einen Aufwand von , also ebenfalls polynomiell in der Eingabelänge bedeutet. Bis auf die Tatsache, dass wir beim Setup Zahlen auswürfeln und unter Umständen mehrere Versuche benötigen, bis geeignete Zahlen gefunden sind, lassen sich die Schritte des Setups also effizient ausführen.
Dass man beim "Auswürfeln von Primzahlen" nicht zu viele Versuche benötigt kann man mit einem Satz aus der Zahlentheorie zeigen, der besagt dass die Anzahl der Primzahlen der Größe höchstens ungefähr ist. Damit gibt es unter allen -stelligen Binärzahlen im wesentlichen
viele Primzahlen. Also können wir folgern, dass die Wahrscheinlichkeit, beim Auswürfeln einer -Bit Zahl eine Primzahl zu erhalten, ist. Wir benötigen daher im Erwartungswert viele Zufallsexperimente, um eine Primzahl der Länge zu erhalten.
Bei der Ver- und Entschlüsselung entsteht Aufwand durch das Potenzieren langer Zahlen. Da wir alle Rechnungen modulo durchführen, besitzen alle Zwischenergebnisse diese Maximallänge, und eine Multiplikation lässt sich polynomiell in der Eingabelänge durchführen. Die Potenzen berechnet man nun mit der Methode des fortgesetzten Quadrierens. Dazu benutzt man die Identität . Wollen wir berechnen für eine -Bit-Zahl in Binärdarstellung, , so berechnen wir und multiplizieren die Terme zu den Potenzen, für die gilt. Damit kommen wir mit höchstens vielen Multiplikationen aus und die Potenzierung lässt sich effizient durchführen.
Die Sicherheit des RSA-Systems beruht auf der (höchstwahrscheinlich korrekten) Annahme, dass die Faktorisierung einer Zahl nicht effizient durchführbar ist, also nicht in Zeit . Auch ist es schwierig, in Wurzeln, etwa die -te, , zu ziehen. In Wurzeln zu ziehen ist jedoch bei ganzzahligem Ergebnis einfach, da man die binäre Suche anwenden kann.
Wir betrachten nun einige Fälle, bei denen ein Angreifer über verschiedene Informationen verfügt und prüfen, wie diese zum Brechen des Kryptosystems verwendet werden können:
Kennt der Gegner , so kann er mit dem Euklidischen Algorithmus aus auch den geheimen Schlüssel , also , in Polynomialzeit berechnen und so die Nachricht korrekt entschlüsseln. Daher gehört der Wert zum geheimen Schlüssel .
Die Situation, dass die Zahlen paarweise teilerfremd sind, ist nicht so unwahrscheinlich, da etwa eine Folge von Primzahlen diese Eigenschaft hat! Sind die verschlüsselten Nachrichten mit
Frage: Handelt es sich statt einer Nachricht um verschiedene Nachrichten , so kann diese Technik nicht erfolgreich eingesetzt werden. Warum nicht?
Für und ist
Beim RSA-System können wir also beliebige Zahlen zum Verschlüsseln verwenden, und nicht nur Zahlen .
Frage: Gilt die Aussage "" auch, wenn Produkt von mehreren paarweise verschiedenen Primzahlen ist?
Wir wollen nun noch einmal zum ersten Gliederungspunkt zurückkommen und Möglichkeiten für einen Angriff durch Faktorisierung diskutieren. Als Beispiel eines Verfahrens zur Faktorisierung natürlicher Zahlen wird hier der -Algorithmus von Pollard (1974) vorgestellt.
Idee beim Verfahren: Ist eine Primzahl mit und für jede Primzahlpotenz mit , dann gilt . Diese Aussage ist folgendermaßen begründet: Für die Primfaktorenzerlegung und für gilt für , und somit folgt aus für auch . Speziell ist dieses Verfahren für Zahlen geeignet, bei denen kleine Primfaktoren enthält.
-Algorithmus:
Eingabe: sowie eine Schranke .
Die Korrektheit ist offensichtlich. Falls gilt, so ist , also , wobei ein Primfaktor von ist.
Laufzeit: Im ersten Schritt zur Berechnung von führt man modulare Exponentiationen jeweils aus, jede kann mit maximal modularen Multiplikationen durchgeführt werden. Das Rechnen modulo kann insgesamt in Zeit durchgeführt werden. Im zweiten Schritt kann der in Zeit mit dem Euklidischen Algorithmus berechnet werden.
Für die Gesamtzeit erhalten wir daher die obere Schranke
Für ist , also Polynomialzeit, aber die Erfolgswahrscheinlichkeit für das Finden eines Teilers ist eventuell klein.
Definition 5 (Las Vegas / Monte Carlo Algorithmus)
Sei fest. Ein Las Vegas Algorithmus ist ein probabilistisches Verfahren, welches zu jeder (zulässigen) Eingabe mit Wahrscheinlichkeit höchstens keine Antwort gibt ("weiss nicht"), aber sonst eine korrekte Antwort liefert.
Ein Monte Carlo Algorithmus liefert immer eine Antwort, die mit Wahrscheinlichkeit höchstens falsch sein kann.
Bemerkung: Wird ein Las Vegas Algorithmus mit Parameter nun -mal gestartet (Multi-Start-Ansatz), so liefert er mit Wahrscheinlichkeit höchstens jedesmal keine Antwort. Eine korrekte Antwort erfolgt also mit Wahrscheinlichkeit mindestens .
Für erhält man also schon bei 10 Starts eine Antwort mit Wahrscheinlichkeit mindestens .
Satz 6
Ein Algorithmus, der zu gegebenem öffentlichen Schlüssel im RSA-System den geheimen Schlüssel berechnet, liefert einen Las Vegas Algorithmus mit Parameter zur Faktorisierung von .
Beweis Zunächst machen wir einige Vorbemerkungen. Sei Produkt zweier ungerader Primzahlen und mit . Es gilt dann:
Sei nichttriviale Lösung von . Dann gilt
Kennt man also eine nichtriviale Lösung der Kongruenz , so erhält man mit polynomiellem Zeitaufwand die Faktorisierung von . Wir haben daher den folgenden Algorithmus:
Algorithmus Faktorisierung bei gegebenem öffentlichen Schlüssel
Gegeben: Ein Algorithmus, der zu gegebenen Werten mit für Primzahlen ein berechnet mit , wobei Produkt zweier verschiedener Primzahlen ist.
Gesucht: Faktorisierung von .
Bemerkungen:
Beweis Der Algorithmus liefert keine Antwort (schlechte Wahl von ), wenn eine der Aussagen gilt:
Wir zählen im folgenden die Anzahl der Lösungen der einzelnen Kongruenzen für für Primzahlen .
zu 1.: Gilt , so gilt auch und . Andererseits können Lösungen von und mit dem Chinesischem Restsatz zu einer Lösung kombiniert werden. Wir betrachten daher die Anzahl der Lösungen der einzelnen Kongruenzen sowie .
Zunächst betrachten wir die Kongruenz . Sei erzeugendes Element von , also ist für ein . Dann gilt , also nach dem Satz von Fermat
Mit folgt , also , da ungerade ist. Mit und folgt, dass möglich ist. Die Anzahl Lösungen von ist daher maximal . Entsprechend gilt, dass die Anzahl Lösungen von maximal ist. Die Anzahl Lösungen der Kongruenz ist daher maximal .
zu 2.: Wir bestimmen nun für die Anzahl Lösungen der Kongruenz
Für und folgt . Da erzeugendes Element in ist, gilt , also nach dem Satz von Fermat
Mit (da ungerade) haben wir
Aufgabe 1
Beim RSA-Verfahren verwendet jemand als öffentliche Schlüssel und , wobei ein Produkt zweier verschiedener Primzahlen ist. Welche Probleme treten auf?
Aufgabe 2
Eine Nachricht wird mittels RSA verschlüsselt und an Empfänger mit den öffentlichen Schlüsseln , und gesendet. Bestimmen Sie aus den Chiffraten
die ursprüngliche Nachricht .
Aufgabe 3
Sei ein öffentlicher RSA-Schlüssel und
das Chiffrat zu einem Klartext . Zeigen Sie, dass eine natürliche Zahl mit
existiert. Kann diese Aussage einem Angreifer helfen?
Aufgabe 4
Ein Klartext wird zweimal mit den öffentlichen Schlüsseln und verschlüsselt. Kann, wenn ist, ein Angreifer aus den Chiffraten
den Klartext bestimmen?
Hinweis: Zu existieren mit (vgl. Bemerkung 20 (iv)).
Aufgabe 5
Zeigen Sie, dass man mit der RSA-Dechiffrierfunktion tatsächlich den Klartext erhält.
Aufgabe 6
Zur Beschleunigung der Dechiffrierung bei einem RSA-System mit den Parametern führt der Empfänger eines Chiffrats folgendes aus:
Er berechnet sowie und berechnet mit dem Chinesischen Restsatz ein mit
Ist die gesendete Nachricht?
Aufgabe 7
Von einer natürlichen Zahl sei bekannt, dass sie das Produkt zweier verschiedener Primzahlen ist.
Aufgabe 8
Beim Setup des RSA-Systems werden versehentlich die gleichen Primzahlen und gewählt.
Aufgabe 9
Im RSA-System mit öffentlichem Schlüssel heißt eine Nachricht ein Fixpunkt, wenn gilt
Hinweis: Es gibt für Primzahlen ein erzeugendes Element mit .
Aufgabe 10
Betrachten Sie folgenden Primzahltest. In dem Intervall , wobei der Einfachheit halber durch teilbar ist, wird zufällig gemäß der Gleichverteilung eine natürliche Zahl ausgewählt. Sodann wird geprüft, ob die Zahl durch , oder teilbar ist. Ist dieses der Fall, so wird die Antwort "keine Primzahl" gegeben, ansonsten die Antwort "wahrscheinlich eine Primzahl".
Bestimmen Sie die Fehlerwahrscheinlichkeit dieses Tests.