Privacy Policy Cookie Policy Terms and Conditions RSA-Kryptosystem - Wikipedia

RSA-Kryptosystem

aus Wikipedia, der freien Enzyklopädie

RSA ist ein Asymmetrisches Kryptosystem, das sowohl zur Verschlüsselung als auch zur digitalen Signatur verwendet werden kann. Es verwendet ein Schlüsselpaar bestehend aus einem privaten Schlüssel, der zum Entschlüsseln oder Signieren von Daten verwendet wird, und einem öffentlichen Schlüssel, mit dem man verschlüsselt oder Signaturen prüft. Der private Schlüssel wird geheim gehalten und kann nicht oder nur mit extrem hohen Aufwand aus dem öffentlichen Schlüssel berechnet werden. RSA ist nach seinen Erfindern Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt.

Inhaltsverzeichnis

[Bearbeiten] Schlüsselverteilung

Der Vorteil asymmetrischer Verfahren besteht in der Vereinfachung der Schlüsselverteilung. Bei symmetrischen Verfahren ist der Austausch eines geheimen Schlüssels nötig, den Sender und Empfänger gemeinsam nutzen. Der Austausch muss dabei sicher erfolgen. Dies bedeutet, der Austausch muss abhörsicher sein. Es ist jedoch auch sicher zu stellen, dass der Schlüssel tatsächlich von der Person stammt, mit der geheime Nachrichten ausgetauscht werden sollen.

Durch Public-Key-Systeme entfällt die Notwendigkeit, den Schlüsselaustausch gegen Abhören zu härten, da nur der öffentliche Schlüssel ausgetauscht werden muss. Es bleibt aber ein wesentliches Problem, da weiterhin sicherzustellen ist, dass der öffentliche Schlüssel tatsächlich von der Person stammt, mit der geheime Botschaften ausgetauscht werden sollen. In der Praxis ist dies oft nur dann möglich, wenn zugleich auch die Geheimhaltung gewährleistet werden kann.

Falls die Kommunikation zwar nicht abhörsicher ist, aber kein Zweifel über die Identität des Partners besteht und die Nachricht nicht von einem Dritten verändert werden kann, ist der Schlüsselaustausch beim Public-Key-Verfahren problemlos. Allerdings ist dies auch mit anderen Verfahren möglich.

Dazu kann der Schlüssel aus vielen Teilschlüsseln zusammengesetzt werden. Eine Hash-Funktion wie SHA-1 erlaubt es, aus vielen längeren Teilschlüsseln ein Komprimat zu errechnen, welches als Schlüssel für die symmetrische Verschlüsselung benutzt werden kann. Die Teilschlüssel können zu unterschiedlichen Zeiten und mit höchst unterschiedlichen Methoden ausgetauscht werden.

[Bearbeiten] Geschichte

Wie oben angedeutet ist der Schlüsselaustausch eine logistische Schwachstelle bei symmetrischen Verschlüsselungsverfahren. Durch den Angriff dieser Schwachstelle (z.B. durch in-Erfahrung-bringen des Schlüssels) wurde bei mehreren zwischenstaatlichen Auseinandersetzungen und Kriegen der Ausgang (mit-)entschieden, so zum Beispiel durch Aktivitäten von Alan Turing und anderen in Bletchley Park im Zweiten Weltkrieg. Daher wurde Anfang der 1970er Jahre im Government Communications Headquarters von Ellis, Cocks und Williamson ein dem späteren Verfahren von Diffie-Hellman ähnliches asymmetrisches Verfahren entwickelt, welches aber keine große praktische Bedeutung hatte und aus Geheimhaltungsgründen nicht (wissenschaftlich) publiziert wurde. RSA konnte daher zum Patent angemeldet werden, obgleich es nicht das erste Verfahren dieser Art war. Das Patent ist am 21. September 2000 ausgelaufen.

[Bearbeiten] Hybride Verfahren

RSA ist im Vergleich zu 3DES, AES und SHA-1 um mindestens einen Faktor 1.000 langsamer. Für die Verschlüsselung größerer Datenmengen werden daher symmetrische Verfahren eingesetzt. Es genügt jedoch, RSA zum Austausch eines Schlüssels für die symmetrische Verschlüsselung zu nutzen.

[Bearbeiten] Verfahren

Nachdem Whitfield Diffie und Martin Hellman eine Theorie zur Public-Key-Kryptografie veröffentlicht hatten, versuchten die drei Mathematiker Rivest, Shamir und Adleman, die Annahmen von Diffie und Hellman zu widerlegen. Nachdem sie den Beweis bei verschiedenen Verfahren durchführen konnten, stießen sie schließlich auf eines, bei dem sie keinerlei Angriffspunkte fanden. Hieraus entstand dann RSA.

Das Verfahren wurde 1977 entwickelt und basiert auf dem aktuellen Wissensstand, dass die Faktorisierung einer großen Zahl, also ihre Zerlegung in ihre Primfaktoren, eine sehr aufwändige Angelegenheit ist, während das Erzeugen einer Zahl durch Multiplikation zweier Primzahlen recht einfach ist. Wenn nun eine Nachricht einem Empfänger verschlüsselt zugeleitet werden soll, generiert dieser einen öffentlichen Schlüssel. Der Nachrichtenabsender verwendet diesen öffentlich bekanntgemachten Schlüssel, indem er damit seine Botschaft verschlüsselt. Nur der Empfänger kann diese „dekodieren“, da nur er die „Zusammensetzung“ des von ihm erzeugten (öffentlichen) Schlüssels kennt.

[Bearbeiten] Einwegfunktionen

Funktionen wie die Multiplikation/Faktorisierung, bei denen eine Richtung leicht, die andere schwierig zu berechnen ist, bezeichnet man als Einwegfunktionen (engl. one-way function). Um allerdings die Entschlüsselung tatsächlich möglich zu machen, muss es sich um Falltürfunktionen (engl. trap door one-way function) handeln, die mit Hilfe einer Zusatzinformation auch rückwärts leicht zu berechnen sind.

Das Verfahren ist mit dem Rabin-Verschlüsselungsverfahren verwandt.

[Bearbeiten] Algorithmus

  1. Wähle zufällig und stochastisch unabhängig zwei Primzahlen p \neq q, und berechne das Produkt N = p \cdot q.
    In der Praxis werden diese Primzahlen durch Raten einer Zahl und darauf folgendes Anwenden eines Primzahltests ermittelt.
  2. Berechne \varphi(N) = (p-1) \cdot (q-1), wobei \varphi für die Eulersche φ-Funktion steht.
  3. Wähle eine Zahl e, für die gilt 1 < e < \varphi(N), die teilerfremd zu \varphi(N) ist.
  4. Berechne die Zahl d so, dass das Produkt e \cdot d kongruent 1 bezüglich des Modulus \varphi(N) ist, dass also e \cdot d \equiv 1 \pmod{\varphi(N)} gilt.

Der öffentliche Schlüssel (public key) besteht dann aus

  • N, dem Primzahlprodukt sowie
  • e, dem öffentlichen Exponenten.

Der private Schlüssel (private key) besteht aus

  • d, dem privaten Exponenten sowie
  • N, welches allerdings bereits durch den öffentlichen Schlüssel bekannt ist.

p, q und \varphi(N) werden nicht mehr benötigt und sollten nach der Schlüsselerstellung auf sichere Weise gelöscht werden.

Ein Zahlenbeispiel:

  1. Wir wählen p = 11 und q = 13 für die beiden Primzahlen. Deren Produkt berechnet sich zu N = pq = 143.
  2. Die eulersche φ-Funktion nimmt damit den Wert \varphi(N) = \varphi(143) = (p-1)(q-1) = 120 an.
  3. Die Zahl e muss zu 120 teilerfremd sein. Wir wählen e = 23. Damit bilden e = 23 und N = 143 den öffentlichen Schlüssel.
  4. Berechnung der Inversen zu e: Es gilt ed + k\varphi(N) = 1. Mit dem erweiterten euklidischen Algorithmus berechnet man den privaten Schlüssel d = 47.

Exkurs: Alternativer privater Schlüssel

Gewöhnlich wird in der Praxis der private Schlüssel etwas ausführlicher gespeichert, da diese Form der Speicherung das Entschlüsseln von Krypttexten effizienter macht (mit Hilfe des Chinesischen Restsatzes). Der private Schlüssel besteht daher dann, im Gegensatz zu dem, was im Rest dieses Artikels angenommen wird, aus folgenden Komponenten:

  • N, der Modulos,
  • d, der sogenannte private Exponent,
  • p, die erste Primzahl,
  • q, die zweite Primzahl,
  • dmod (p − 1), häufig dmp1 genannt,
  • dmod (q − 1), häufig dmq1 genannt und
  • (1 / q)mod p, häufig iqmp genannt.

[Bearbeiten] Verschlüsseln von Nachrichten

Verschlüsselung
vergrößern
Verschlüsselung

Um eine Nachricht K zu verschlüsseln, verwendet der Absender die Formel

C \equiv K^e \mod N

und erhält so aus dem Klartext K den Geheimtext C.

[Bearbeiten] Beispiel

Es soll die Zahl 7 verschlüsselt werden.
Der Nachrichtenabsender benutzt den veröffentlichten Schlüssel N = 143, e = 23 und rechnet

C \equiv 7^{23} \mod 143

Zur Berechnung von 723mod 143 kann die Kongruenzarithmetik verwendet werden. Mit Hilfe der modularen Exponentiation berechnet man schnell:

7^{23} \ \bmod \ 143 \ = \ ((( 7^2 )^2\cdot 7)^2\cdot 7)^2\cdot 7 \ \bmod \ 143 = 2

Dabei wendet man nach jedem Rechenschritt auf die zu handhabenden Zahlen die Modulo-Operation (kurz: mod) an, um die Ergebnisse möglichst „klein“ zu halten.

Aus dem Klartext 7 ist somit der Geheimtext 2 geworden.

[Bearbeiten] Entschlüsseln von Nachrichten (Decodierung)

Entschlüsselung
vergrößern
Entschlüsselung

Der Geheimtext C kann durch modulare Exponentiation wieder zum Klartext K entschlüsselt werden. Der Empfänger benutzt die Formel

K \equiv C^d \mod N

mit dem nur ihm bekannten Wert d sowie N.

[Bearbeiten] Beispiel

K \equiv 2^{47} \ \bmod\  143 = ((((2^2)^2 \cdot 2)^2 \cdot 2)^2 \cdot 2)^2 \cdot 2 \ \bmod\  143 = 7

Aus C = 2 wird also wieder K = 7.

Siehe auch Schnelles Potenzieren

[Bearbeiten] Signieren von Nachrichten

Um eine Nachricht K zu signieren, wird diese mit dem eigenen privaten Schlüssel verschlüsselt. Zum Prüfen der Signatur entschlüsselt der Empfänger die Nachricht mit dem öffentlichen Schlüssel des Senders und vergleicht diese mit dem empfangenen K. Wenn sie nicht übereinstimmen, ist die Signatur ungültig. Ist die Signatur gültig, dann kann sich der Empfänger sicher sein, dass derjenige, der das Dokument signiert hat, auch den privaten Schlüssel besitzt und dass niemand seit der Signierung das Dokument geändert hat. Es wird also die Integrität und Authentizität garantiert, vorausgesetzt der private Schlüssel ist wirklich geheim geblieben.

Da asymmetrische Verfahren nicht geeignet sind, um größere Datenmengen zu verschlüsseln, wird in der Praxis nicht die Nachricht selbst mit dem privaten Schlüssel verschlüsselt. Stattdessen wird der Hashwert H der Nachricht berechnet. Dieser bildet dann (meist zusammen mit einigen technisch notwendigen Informationen, wie zum Beispiel der Spezifizierung des verwendeten Hashverfahrens) die Eingabe K * für eine Verschlüsselung mit dem privaten Schlüssel, deren Resultat dann die eigentliche Signatur ist. Der Empfänger kann die so erhaltene Signatur mit dem öffentlichen Schlüssel entschlüsseln und erhält so K * und somit den Hashwert H der ursprünglichen Nachricht. Anschließend kann er selber den Hashwert H1 der ihm vorgelegten Nachricht bestimmen und mit dem in K * gespeicherten Hashwert H vergleichen. Wenn die beiden Hashwerte übereinstimmen, kann mit hoher Sicherheit davon ausgegangen werden, dass die Nachricht fehlerfrei übertragen wurde und nicht gefälscht ist.

Siehe auch Elektronische Unterschrift

[Bearbeiten] Sicherheit

Public-Key-Verfahren wie RSA werden in der Praxis immer als hybride Verfahren in Verbindung mit symmetrischen Verfahren verwendet. Bei der Analyse der Sicherheit muss die Sicherheit des Public-Key-Verfahrens und die praktische Sicherheit des Gesamtsystems betrachtet werden.

[Bearbeiten] Sicherheit von RSA

Bei der Kryptanalyse des RSA-Verfahrens unterscheidet man zwischen zwei Problemen:

  • RSA-Problem (RSAP): Gegeben sind der öffentliche Schlüssel (N,e) sowie der Geheimtext C. Gesucht wird der Klartext K wobei gilt: K^e\equiv C\pmod{N}
Das Problem liegt hier in der Schwierigkeit Wurzeln modulo N zu ziehen, was zur Bestimmung des Klartexts K notwendig ist.
  • RSA-Schlüsselproblem (RSAP * ): Gegeben ist der öffentliche Schlüssel (N,e). Gesucht wird der geheime Schlüssel d wobei gilt: ed\equiv 1\pmod{\varphi(N)}
Das Problem liegt hier in der Schwierigkeit die Eulersche φ-Funktion von N ohne Kenntnis der Faktoren p und q zu berechnen.

Folgende Beziehungen zwischen den RSA-Problemen und FACTORING, dem Faktorisierungsproblem, sind bekannt:

\mathrm{RSAP} \leq_p \mathrm{RSAP^*} =_p \mathrm{FACTORING}

Die Beziehung \mathrm{RSAP} \leq_p \mathrm{RSAP^*} ist trivial, denn wenn man den privaten Schlüssel hat, kann man damit wie oben jeden beliebigen Geheimtext entschlüsseln. Ob die Umkehrung gilt, ist zur Zeit unbekannt.

Auch die Beziehung \mathrm{RSAP^*} \leq_p \mathrm{FACTORING} ist trivial, denn wenn man N = pq faktorisiert hat, kann man damit leicht \varphi(N)=(p-1)(q-1) berechnen, und dann mit dem euklidischen Algorithmus zu gegebenem öffentlichen Schlüssel den zugehörigen privaten Schlüssel effizient berechnen, wie in der Schlüsselerzeugung.

Für die Beziehung \mathrm{FACTORING} \leq_p \mathrm{RSAP^*} ist schon lange ein probabilistischer Polynomialzeitalgorithmus bekannt. Vor kurzem wurde gezeigt, dass sich diese Reduktion im balancierten RSA (d.h. p und q haben gleiche Bitlänge) auch deterministisch durchführen lässt. Der Beweis verwendet das Coppersmith-Verfahren zur Bestimmung von Nullstellen eines irreduziblen bivariaten Polynoms mit ganzzahligen Koeffizienten, welches sich auf eine Gitterreduktion zurückführen lässt.

Da alle gängigen Implementierungen balanciertes RSA verwenden, ist in der Praxis das Brechen des geheimen Schlüssels nur mit der Kenntnis des öffentlichen Schlüssels genau so schwer wie das Faktorisieren von N. Wegen \mathrm{RSAP} \leq_p \mathrm{FACTORING} ist im Fall der zusätzlichen Kenntnis eines Geheimtexts die Schwierigkeit des Faktorisierungsproblems von zentralem Interesse.

Man möchte N = pq für sehr große Primzahlen p und q faktorisieren. Diese Primfaktorzerlegung ist für große Zahlen mit den heute bekannten Verfahren praktisch nicht durchführbar. Es ist aber nicht bewiesen, dass es sich bei der Primfaktorzerlegung um ein prinzipiell schwieriges Problem handelt. Im Gegenteil, mit dem Quadratischen Sieb wurde 1994 die Zahl RSA-129 mit 129 Dezimal-Stellen in 8 Monaten von ca. 600 Freiwilligen faktorisiert. Mit der Methode des Zahlkörpersiebs wurde im Jahr 2005 von Wissenschaftlern der Universität Bonn die im Rahmen der RSA Factorization Challenge von RSA Laboratories vorgegebene 200-stellige Dezimalzahl RSA-200 in ihre zwei großen Primfaktoren zerlegt. Die Faktorisierung begann Ende 2003 und dauerte bis Mai 2005. Unter anderem kam ein Rechnerverbund von 80 handelsüblichen Rechnern an der Universität Bonn zum Einsatz. Im November 2005 zahlten RSA Laboratories für die Faktorisierung von RSA-640, einer Zahl mit 640 Bits bzw. 193 Dezimalstellen, eine Prämie von 20.000 US-Dollar. Dies ist noch ein gutes Stück von den mindestens 300 Dezimalstellen heute üblicher RSA-Schlüssel entfernt. Jedoch weisen die dabei verwandten Faktorisierungsverfahren ein deutlich subexponentielles (obwohl superpolynomielles) Laufzeitverhalten auf, so dass in näherer Zukunft möglicherweise auch deutlich größere Zahlen mit diesen Methoden faktorisiert werden könnten.

Für die Faktorisierung von RSA-1024 (309 Dezimalstellen) oder gar RSA-2048 (617 Dezimalstellen) sind 100.000 $ bzw. 200.000 $ ausgelobt. Die wachsende Rechenleistung moderner Computer stellt für die kurzfristige Sicherheit von RSA im Wesentlichen kein Problem dar, zumal diese Entwicklung vorhersehbar ist: Der Nutzer kann bei der Erzeugung seines Schlüssels darauf achten, dass er während der Dauer der beabsichtigten Verwendung nicht faktorisiert werden kann. Nicht vorhersehbare Entwicklungen, wie die Entwicklung deutlich schnellerer Algorithmen oder gar eines leistungsfähigen Quantencomputers bergen zumindest für die mittel- und langfristige Sicherheit der verschlüsselten Daten gewisse Risiken.

In einigen Spezialfällen kann man das RSA-Verfahren brechen, ohne das Faktorisierungsproblem gelöst zu haben. Der Angriff von Wiener bei balanciertem RSA löst das RSA-Schlüsselproblem effizient unter der Annahme, dass der private Schlüssel nur eine geringe Bitlänge aufweist, genauer d<\frac{\sqrt[4]{N}}{3}. Wiener verwendete dabei die Tatsache, dass unter der Abschätzung für d der Bruch \frac{k}{d} (für eine ganze Zahl k) in der Kettenbruchentwicklung von \frac{e}{N} auftaucht. Die Schranke wurde mit Mitteln der Giterreduktion auf d < N0.292 verbessert.

Auch das RSA-Problem kann unter einigen Annahmen effizient ohne Faktorisieren gelöst werden. Der Angriff von Håstad ermittelt einen Klartext, der mit kleinem Verschlüsselungsexponent (etwa e = 3) für mehrere Empfänger vor dem Verschlüsseln speziell aufbereitet wurde, etwa wenn die Nummer des Empfängers in den Klartext codiert wurde. Dieser Angriff verwendet die Coppersmith-Methode, um kleine Nullstellen eines Polynoms in einer Unbestimmten zu berechnen, welche wiederum auf Giterreduktion basiert.

[Bearbeiten] Praktische Sicherheit

RSA wird in der Regel in Hybridverfahren mit symmetrischen Verschlüsselungsverfahren kombiniert. Dabei wird zufällig ein Sitzungsschlüssel für eine symmetrische Verschlüsselung generiert, der dann per RSA verschlüsselt und zusammen mit der Nachricht übertragen wird.

Bei der Signatur wird nicht die gesamte Nachricht sondern nur ein Hashwert signiert. Der symmetrische Schlüssel bzw. der Hashwert sind dabei relativ kurz. Für den symmetrischen Schlüssel gilt also

K_{sym} < N = p\cdot q.

Daher kann der symmetrische Schlüssel mit einer einzigen RSA-Verschlüsselung verschlüsselt werden. Für die Sicherheit von RSA sind Primzahlen mit über 100 Stellen erforderlich. Daher könnte ein symmetrischer Schlüssel mit über 200 Stellen verschlüsselt werden.

Als sehr sicher eingestufte Algorithmen zur symmetrischen Verschlüsselung gelten 3DES und AES. Diese verwenden 112, 128, 168 oder maximal 256 Bit. Dies entspricht bei 256 Bit ca. 77 Dezimalstellen. Damit ist eine Brute-Force-Angriff faktisch auszuschließen. Eine sichere Hashfunktion wie SHA-256 erzeugt Funktionswerte mit einer Länge von ebenfalls 256 Bit. Damit lassen sich Signaturverfahren mittels RSA realisieren, die nur einen Verschlüsselungsschritt benötigen.

Die Sicherheit und die Performance des Gesamtsystems werden durch die Sicherheit des Public-Key-Verfahrens limitiert, sofern nur als sicher eingestufte Algorithmen verwendet werden und die Wahl des Schlüssel als hinreichend zufällig betrachtet werden kann.

[Bearbeiten] Beweis

Um die Korrektheit des RSA-Verfahrens zu zeigen, muss die folgende Kongruenz bewiesen werden:

(a^e)^d \equiv a^{ed} \equiv (a^d)^e \equiv a \mod N für alle Klartexte a \in \mathbb{Z}/n\mathbb{Z}, wobei
  • N=pq das Produkt zweier verschiedener Primzahlen,
  • e der Verschlüsselungsexponent mit ggT(e,φ(N))=1,
  • d der Entschlüsselungsexponent mit ed ≡ 1 mod φ(N) sind.

Die ersten beiden Kongruenzen können direkt aus den Potenzgesetzen abgeleitet werden. Ausgangspunkt zum Beweis der dritten bildet die Funktionalität zur Berechnung des Entschlüsselungsexponenten d.

ed ≡ 1 mod φ(N)

Die multiplikative Eigenschaft der Eulerschen φ-Funktion führt dann zu

ed ≡ 1 mod p-1

Der modulo-Operator kann umgeschrieben werden. So existiert eine ganze Zahl u mit ed = u(p-1)+1. Dies wird in den zu beweisenden Ansatz eingefügt.

aedau(p-1)+1a\cdot(a p-1)u mod p

Nach dem kleinen Satz von Fermat gilt für alle zu p teilerfremden Zahlen a der Zusammenhang ap-11 mod p. Mit Einsetzen und Umformen kommt man so zu

a\cdot(a p-1)ua\cdot1ua mod p

Somit wurde gezeigt, dass aeda mod p gilt. Analog dieser Ableitung kommt man zu aeda mod q. Mithilfe eines Spezialfalles des chinesischen Restsatzes können nun beide Kongruenzen unter der Bedingung N=pq kombiniert werden.

aeda mod N

[Bearbeiten] Optimierung

Es ist nicht notwendig e derart zu bestimmen, dass die Kongruenz \operatorname{ggT}(e,\varphi(n)) = 1 erfüllt wird.

Vielmehr reicht es aus e derart zu bestimmen, dass die Kongruenz \operatorname{ggT}(e, \operatorname{kgV}(p-1, q-1)) = 1 erfüllt wird. Der Vorteil bei diesem Verfahren liegt in der Größe des Modulus für die Berechnung von d, weil dieser nun kleiner geworden ist und dadurch die Berechnung von d schneller durchgeführt werden kann.

Für die Zahlen p = 11 und q = 13 ergibt \varphi(p \cdot q) 120. Das kleinste gemeinsame Vielfache von p − 1 und q − 1 ist lediglich 60 (es muss ja ein Teiler von 120 sein) und somit maximal halb so groß wie das Ergebnis der φ-Funktion, da p − 1 und q − 1 zumindest den Faktor 2 gemeinsam haben. In Binärdarstellung ist somit das kgV zumindest um ein Bit kürzer.

Beweis

Der Beweis läuft großteils analog zum Beweis für das originale RSA-System. Es existiert lediglich folgender Unterschied.

Da das kgV ein Vielfaches von p − 1 und q − 1 ist, gelten folgende zwei Regeln:

  • \operatorname{kgV}(p-1,q-1)= r \cdot (p-1)
  • \operatorname{kgV}(p-1,q-1)= s \cdot (q-1)

Wir unterscheiden drei Fälle.

Fall 1: \operatorname{ggT}(a,n)=1

Hierbei erhalten wir zwei Kongruenzen:

Nach dem Chinesischen Restsatz folgt nun a^{e \cdot d} \equiv a \mod n.

Fall 2: p | a

Nach dem Chinesischen Restsatz folgt wiederum a^{e \cdot d} \equiv a \mod n.

Fall 3: q | a

analog zu Fall 2

\Rightarrow q.e.d

[Bearbeiten] RSA ist kein Primzahltest

Wenn p und q Primzahlen sind, funktioniert das RSA-Verfahren. Umgekehrt kann aber aus dem funktionierenden RSA-Verfahren nicht geschlossen werden, dass p und q Primzahlen sind, denn bei Carmichael-Zahlen funktioniert das Verfahren, obwohl Carmichael-Zahlen keine Primzahlen sind.

Beweis

Gegeben:

  • n=p \cdot c, wobei c=\prod q_i eine Carmichael-Zahl ist
  • qi − 1 | c − 1, Eigenschaft von Carmichael-Zahlen
  • \varphi(n)=(p-1)(c-1), fälschliche Annahme, da angenommen wird, dass c eine Primzahl ist
  • (p-1)(c-1)=(q_i-1)\cdot b_i, weil c − 1 von qi − 1 geteilt wird
  • \operatorname{ggT}(e,(p-1)(c-1))=1
  • d\cdot e \equiv 1 \mod{(p-1)(c-1)}

Zu zeigen:

a^{d\cdot e} \equiv a \mod n

Betrachten wir nun den Primteiler p

Fall 1: p | a

a^{d\cdot e} \equiv 0 \equiv a \mod p

Fall 2: p \nmid a

a^{d\cdot e} \equiv a^{(p-1)(c-1)} \cdot a \equiv a \mod p

Betrachten wir nun die Primteiler qi von ci

Fall 1: qi | a

a^{d\cdot e} \equiv 0 \equiv a \mod{q_i}

Fall 2: q_i \nmid a

a^{d\cdot e} \equiv a^{(q_i-1)(b_i)} \cdot a \equiv a \mod{q_i}

Unabhängig von der Zahl a folgt aus dem Chinesischen Restsatz, dass a^{e \cdot d} \equiv a \mod n.

\Rightarrow q.e.d

Dieser Beweis hält offensichtlich auch dann stand, wenn n das Produkt von zwei Carmichael-Zahlen ist.

[Bearbeiten] Vollständiges Beispiel

[Bearbeiten] Vorarbeiten

Die oben genannten Schritte sollen nun an einem vollständigen Beispiel erläutert werden. Um einen Text zu verschlüsseln, müssen zunächst Buchstaben in Zahlen umgewandelt werden. Dazu verwendet man in der Praxis zum Beispiel den ASCII-Code. Hier sei willkürlich die folgende Zuordnung gewählt:

A=01 B=02 C=03 usw. (00 = Leerzeichen)

Darüberhinaus sei angenommen, dass jeweils drei Zeichen zu einer Zahl zusammengefasst werden. Die Buchstabenfolge AXT wird also zu 012420. Die kleinste zu verschlüsselnde Zahl ist dann 000000 (drei Leerzeichen), die größte 262626 (ZZZ). Der Modulus N = p \cdot q muss also größer 262626 sein.

Klartext:  W I K  I P E  D I A
Kodierung: 230911 091605 040901

[Bearbeiten] Schlüsselerzeugung

Zunächst werden geheim zwei Primzahlen gewählt, beispielsweise p = 307 und q = 859. Damit ergibt sich:

N = p \cdot q = 263713

\varphi(N) = (p-1) \cdot (q-1) = 262548

e = 1721 (zufällig, teilerfremd zu \varphi(N))

d = 1373 (das multiplikative Inverse zu e \bmod \varphi(N) mit Hilfe des Erweiterten euklidischen Algorithmus)

Öffentlicher Schlüssel: e = 1721 und N = 263713

Geheimer Schlüssel: d = 1373 und N = 263713

[Bearbeiten] Verschlüsselung

Cn = Kne mod N   für n=1,2,3(,...)
C1 = 2309111721 mod 263713
C1 = 001715
C2 = 0916051721 mod 263713
C2 = 184304
C3 = 0409011721 mod 263713
C3 = 219983

[Bearbeiten] Entschlüsselung

Kn = Cnd mod N   für n=1,2,3(,...)
K1 = 0017151373 mod 263713
K1 = 230911
K2 = 1843041373 mod 263713
K2 = 091605
K3 = 2199831373 mod 263713
K3 = 040901

[Bearbeiten] Signatur (Verschlüsselung mit dem geheimen Schlüssel)

Cn = Knd mod N
C1 = 2309111373 mod 263713
C1 = 219611
C2 = 0916051373 mod 263713
C2 = 121243
C3 = 0409011373 mod 263713
C3 = 138570

[Bearbeiten] Verifikation (Entschlüsselung mit dem öffentlichen Schlüssel)

Kn = Cne mod N
K1 = 2196111721 mod 263713
K1 = 230911
K2 = 1212431721 mod 263713
K2 = 091605
K3 = 1385701721 mod 263713
K3 = 040901

[Bearbeiten] Anwendungsgebiete

[Bearbeiten] Siehe auch

[Bearbeiten] Literatur

  • c't 25/99, Story „Der Dialog der Schwestern“ Liegt auch dem E-Learning-Programm CrypTool bei.
  • Alexander May: Computing the RSA Secret Key is Deterministic Polynomial Time Equivalent to Factoring, in Advances in Cryptology (Crypto 2004), Lecture Notes in Computer Science Volume 3152, pages 213-219, Springer Verlag, 2004.
  • Dan Boneh: Twenty Years of Attacks on the RSA Cryptosystem, in Notices of the American Mathematical Society (AMS), Vol. 46, No. 2, pp. 203--213, 1999.

[Bearbeiten] Weblinks

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -