AESElGamal


Das RSA-System

Setup für das RSA-System   Verschlüsselung   Entschlüsselung   Korrektheit   Effizienz des RSA-Systems   Kryptoanalyse   Übungen  

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.

Setup für das RSA-System

  1. erzeugt zwei große Primzahlen und mit .
  2. berechnet die Produkte sowie .
  3. erzeugt eine natürliche Zahl mit und .
  4. berechnet die (eindeutige) Zahl mit , also ist das multiplikativ Inverse von in .
  5. veröffentlicht die Zahlen und . Dann ist das Paar der öffentliche Schlüssel und das Paar der private geheime Schlüssel von .

Verschlüsselung

möchte an eine Nachricht senden. Dazu nimmt er den öffentlichen Schlüssel von , berechnet

und sendet das Ergebnis an .

Entschlüsselung

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.

Korrektheit

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.

Effizienz des RSA-Systems

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.

Kryptoanalyse

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:

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 .

  1. Berechne . Dieses kann etwa so erfolgen:
    ; for do .
    [Statt sind auch weitere Werte möglich!]
  2. Berechne .
  3. Falls , dann ist die Ausgabe " ist Faktor von ",
    sonst ist die Ausgabe "kein Faktor von gefunden".

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:

Dieses bedeutet, dass die Kongruenz vier Lösungen hat. Also gibt es neben den trivialen Lösungen und noch zwei weitere nichttriviale Lösungen. Diese findet man mit dem Chinesischen Restsatz, durch Lösen der simultanen Kongruenzen und oder und .

Sei nichttriviale Lösung von . Dann gilt

und folglich oder und analog ist gleich oder . Die größten gemeinsamen Teiler können mit dem Euklidischen Algorithmus berechnet werden.

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 .

  1. Wähle zufällig.
  2. Bestimme .
  3. Falls , dann ist die Ausgabe "Faktoren von sind und ", STOP.
  4. Berechne mit gegebenem Algorithmus, wobei gilt.
  5. Bestimme mit , wobei ungerade ist.
  6. Berechne .
  7. Falls , dann ist die Ausgabe "keine Antwort", STOP.
  8. While do
    .
  9. Falls ist, dann ist die Ausgabe "keine Antwort", STOP;
    sonst berechne und die Ausgabe ist "Faktoren sind und ".

Bemerkungen:

Lemma 7
Der Algorithmus liefert keine Antwort mit Wahrscheinlichkeit maximal .

Beweis Der Algorithmus liefert keine Antwort (schlechte Wahl von ), wenn eine der Aussagen gilt:

  1. für ein

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
für ungerade und
folgt
Damit gilt und .

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

Wie vorher betrachten wir die Kongruenzen und .

Für und folgt . Da erzeugendes Element in ist, gilt , also nach dem Satz von Fermat

Für gibt es hier keine Lösungen. Für sind die Lösungen genau ungerade Vielfache von , da ungerade ist. Die Anzahl dieser Vielfachen ist
Analoges folgt für die Kongruenz . Damit ist die Anzahl Lösungen von maximal
Mit der Annahme ist die Anzahl der schlechten Wahlen von daher maximal

Mit (da ungerade) haben wir

Weiter gilt
also folgt
Da wir gemäß der Gleichverteilung wählen, sind mindestens gute Wahlen für dabei, also ist die Erfolgswahrscheinlichkeit mindestens .

Übungen

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.

  1. Beschreiben Sie ein Verfahren, welches die beiden Primfaktoren ermittelt.
  2. Bestimmen Sie die Laufzeit Ihres zu (1.) angegebenen Verfahrens.
  3. Ist Ihr Verfahren ein Polynomialzeitverfahren?

 

Aufgabe 8
Beim Setup des RSA-Systems werden versehentlich die gleichen Primzahlen und gewählt.

  1. Können die nachfolgenden Schritte bei Setup, Ver- und Entschlüsselung korrekt ausgeführt werden?
  2. Welche kryptographische Konsequenz hat die Wahl von ?

 

Aufgabe 9
Im RSA-System mit öffentlichem Schlüssel heißt eine Nachricht ein Fixpunkt, wenn gilt

  1. Zeigen Sie, dass für jeden Fixpunkt auch ein Fixpunkt ist.
  2. Zeigen Sie, dass die Anzahl der Fixpunkte gleich ist.

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.