RSA-Kryptosystem

RSA-Kryptosystem

RSA ist ein asymmetrisches kryptographisches Verfahren, das sowohl zur Verschlüsselung als auch zur digitalen Signatur verwendet werden kann.[1] 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 nur mit extrem hohem Aufwand aus dem öffentlichen Schlüssel berechnet werden.

Inhaltsverzeichnis

Geschichte

RSA wurde 1977 von Ronald L. Rivest, Adi Shamir und Leonard Adleman am MIT entwickelt. Der Name RSA steht für die Anfangsbuchstaben ihrer Familiennamen. Es galt damals als das erste asymmetrische Verschlüsselungsverfahren.

Bereits Anfang der 1970er Jahre war in den Government Communications Headquarters von Ellis, Cocks und Williamson ein ähnliches asymmetrisches Verfahren entwickelt worden, welches aber keine große praktische Bedeutung erlangte und aus Geheimhaltungsgründen nicht wissenschaftlich publiziert wurde.[2]

RSA konnte daher 1983 zum Patent angemeldet werden[3], obgleich es nicht das erste Verfahren dieser Art war. Das Patent ist am 21. September 2000 ausgelaufen.

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 1977 RSA.

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

Einwegfunktionen

Hauptartikel: Einwegfunktion

Funktionen, bei denen eine Richtung leicht, die andere schwierig zu berechnen ist, bezeichnet man als Einwegfunktionen (engl. one-way function). Beispielsweise ist nach aktuellem Wissensstand die Faktorisierung einer großen Zahl, also ihre Zerlegung in ihre Primfaktoren, sehr aufwändig, während das Erzeugen einer Zahl durch Multiplikation von Primzahlen recht einfach ist. Spezielle Einwegfunktionen sind Falltürfunktionen (engl. trapdoor one-way function), die mit Hilfe einer Zusatzinformation auch rückwärts leicht zu berechnen sind.

Die Verschlüsselung und die Signatur mit RSA basiert auf einer Einwegpermutation mit Falltür (engl. trapdoor one-way permutation, kurz TOWP), einer Falltürfunktion, die gleichzeitig bijektiv, also eine Permutation, ist. Die Einwegeigenschaft begründet, warum die Entschlüsselung (bzw. das Signieren) ohne den geheimen Schlüssel (die Falltür) schwierig ist.

Erzeugung des öffentlichen und privaten Schlüssels

Der öffentliche Schlüssel (public key) ist ein Zahlenpaar (e,N) und der private Schlüssel (private key) ein Zahlenpaar (d,N), wobei N bei beiden Schlüsseln gleich ist. Man nennt N den RSA-Modul, e den Verschlüsselungsexponenten und d den Entschlüsselungsexponenten. Diese Zahlen werden durch das folgende Verfahren erzeugt:

  1. Wähle zufällig und stochastisch unabhängig zwei Primzahlen p \neq q. (In der Praxis erzeugt man dazu so lange Zahlen der gewünschten Länge und führt mit diesen anschließend einen Primzahltest durch, bis man zwei Primzahlen gefunden hat.)
  2. Berechne den RSA-Modul
    N = p \cdot q.
  3. Berechne die Eulersche φ-Funktion von N
    \varphi(N) = (p-1) \cdot (q-1)
  4. Wähle eine zu φ(N) teilerfremde Zahl e, für die gilt 1 < e < φ(N).
  5. Berechne den Entschlüsselungsexponenten d als Multiplikativ Inverses von e bezüglich des Moduls φ(N). Es soll also die folgende Kongruenz gelten
    e \cdot d \equiv 1 \pmod{\varphi(N)}

Die Zahlen p, q und φ(N) werden nicht mehr benötigt und sollten nach der Schlüsselerstellung auf sichere Weise gelöscht werden. Aus Effizienzgründen wird e klein gewählt, üblich ist 216 + 1 = 65537. Kleinere Werte von e können zu Angriffsmöglichkeiten führen, etwa in Form des von Johan Håstad publizierten „Broadcast“-Angriffs, bei dem der Versand einer Nachricht an mehrere Empfänger zu einer Dechiffrierung über den chinesischen Restsatz führen kann.[4] Bei Wahl eines d mit weniger als einem Viertel der Bits des RSA-Moduls kann d – sofern nicht bestimmte Zusatzbedingungen erfüllt sind – mit einem auf Kettenbrüchen aufbauenden Verfahren effizient ermittelt werden.[5]

Beispiel

  1. Wir wählen p = 11 und q = 13 für die beiden Primzahlen.
  2. Der RSA-Modul ist N = p \cdot q = 143.
  3. Die eulersche φ-Funktion nimmt damit den Wert φ(N) = φ(143) = (p − 1)(q − 1) = 120 an.
  4. Die Zahl e muss zu 120 teilerfremd sein. Wir wählen e = 23. Damit bilden e = 23 und N = 143 den öffentlichen Schlüssel.
  5. Berechnung der Inversen zu e:
    Es gilt:  e \cdot d + k \cdot \varphi(N) = 1 = ggT(e,\varphi(N))
    bzw. im konkreten Beispiel: 23 \cdot d + k \cdot 120 = 1 = ggT(23,120)
    Mit dem erweiterten euklidischen Algorithmus berechnet man nun die Faktoren d = 47 und k = − 9, so dass die Gleichung aus dem Beispiel wie folgt aussieht: 23 \cdot 47 + (-9 )\cdot 120 = 1
    d ist der geheime Exponent, während k nicht weiter benötigt wird.

Verschlüsseln von Nachrichten

Verschlüsselung

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

C = K^e \mod N

und erhält so aus dem Klartext K den Geheimtext C. K muss dabei kleiner sein als der RSA-Modul N.

Beispiel

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

C = 7^{23} \mod 143 = 2

Entschlüsseln von Nachrichten

Entschlüsselung

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

K = C^d \mod N

mit dem nur ihm bekannten Wert d sowie N.

Beispiel

Für gegebenes C = 2 wird berechnet

K = 2^{47} \ \bmod\ 143 = 7

Signieren von Nachrichten

Um eine Nachricht K zu signieren, wird diese vom Sender mit dem eigenen privaten Schlüssel verschlüsselt. Zum Prüfen entschlüsselt der Empfänger die Nachricht mit dem öffentlichen Schlüssel des Senders und vergleicht diese mit der zusätzlich übermittelten unverschlüsselten Nachricht K. Wenn sie übereinstimmen, ist die Signatur gültig und der Empfänger kann 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 verarbeiten, wird in der Praxis nicht die Nachricht selbst mit dem privaten Schlüssel verschlüsselt. Stattdessen wird der Hash-Wert 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 Hash-Wert H der ursprünglichen Nachricht. Anschließend kann er selber den Hash-Wert H1 der ihm vorgelegten Nachricht bestimmen und mit dem in K * gespeicherten Hash-Wert H vergleichen. Wenn die beiden Hash-Werte übereinstimmen, kann mit hoher Wahrscheinlichkeit davon ausgegangen werden, dass die Nachricht fehlerfrei übertragen wurde und nicht gefälscht ist.

RSA mit dem Chinesischen Restsatz

Mit Hilfe des Chinesischen Restsatzes können Nachrichten effizienter entschlüsselt oder signiert werden. Weil der Modul N sehr groß ist, sind auch die im Rechner verwendeten Bitdarstellungen der Zahlen sehr lang. Der Chinesische Restsatz erlaubt es, die Berechnungen statt in einer Gruppe der Größe N gleichzeitig in den zwei kleineren Gruppen der Größe p und q auszuführen und das Ergebnis danach wieder zusammenzusetzen. Da hier die Zahlen wesentlich kleiner sind, ist diese Berechnung insgesamt schneller. Diese Variante wird nach dem englischen Namen des Chinesischen Restsatzes CRT auch CRT-RSA genannt.

Der private Schlüssel besteht dann im Gegensatz zu dem, was im Rest dieses Artikels angenommen wird, aus folgenden Komponenten:

  • N, der RSA-Modul,
  • d, der Entschlüsselungsexponent,
  • p, die erste Primzahl,
  • q, die zweite Primzahl,
  • d_p = d \mod (p-1), häufig dmp1 genannt,
  • d_q = d \mod (q-1), häufig dmq1 genannt und
  • q_{Inv} = q^{-1}  \mod p, häufig iqmp genannt.

Eine Signatur einer Nachricht m wird dann wie folgt durchgeführt.

  • m_1 = m^{d_p} \mod p
  • m_2 = m^{d_q} \mod q
  • s = (q_{Inv}(m_1-m_2) \mod p)q + m_2

Aus der letzten Gleichung sieht man sofort, dass s \mod q = m_2 und s \mod p = q_{Inv}q(m_1-m_2) + m_2 \mod p = m_1. Die Signatur s stimmt also sowohl \mod p als auch \mod q mit md überein, daher ist nach dem Chinesischen Restsatz s = m^d \mod N.

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 der Modul N aus zwei Primzahlen p und q zusammengesetzt ist, denn bei Carmichael-Zahlen funktioniert das Verfahren, obwohl Carmichael-Zahlen nicht der Standardform entsprechen.

Sicherheit

Public-Key-Verschlüsselungs-Verfahren wie RSA werden in der Praxis immer als hybride Verfahren in Verbindung mit symmetrischen Verfahren verwendet. Bei der Analyse der Sicherheit im praktischen Einsatz müssen die Sicherheit des Public-Key-Verfahrens und die praktische Sicherheit des Gesamtsystems betrachtet werden. Angriffe auf das RSA-Verfahren erfolgen oft über Seitenkanäle. Das Gesamtsystem kann unsicher sein, wenn nur eine Komponente, beispielsweise ein Computer, kompromittiert wurde.

Beziehung zwischen RSA und dem Faktorisierungsproblem

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 zurzeit unbekannt.

Auch die Beziehung \mathrm{RSAP^*} \leq_p \mathrm{FACTORING} ist trivial, denn wenn man N = pq faktorisiert hat, kann man damit leicht φ(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 Gitterbasenreduktion 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.

Schwierigkeit des Faktorisierungsproblems

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.

Mit dem Quadratischen Sieb wurde 1994 die Zahl RSA-129 mit 129 Dezimalstellen in 8 Monaten von ca. 600 Freiwilligen faktorisiert. Mit der Methode des Zahlkörpersiebs wurde im Jahr 2005 von Wissenschaftlern der Friedrich-Wilhelms-Universität Bonn die im Rahmen der RSA Factoring Challenge von RSA Laboratories vorgegebene 200-stellige Dezimalzahl RSA-200 in ihre zwei großen Primfaktoren zerlegt[6]. 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.[7] Obwohl mittlerweile für das Faktorisieren der RSA-Challenge-Zahlen keine Prämien mehr gezahlt werden, wurde im Dezember 2009 die Zahl RSA-768 faktorisiert.[8]

Für die Faktorisierung von RSA-1024 (309 Dezimalstellen) oder gar RSA-2048 (617 Dezimalstellen) waren 100.000 $ bzw. 200.000 $ ausgelobt; die RSA Laboratories haben im Mai 2007 das RSA Factoring Challenge beendet, nachdem die o. g. Wissenschaftler der Universität Bonn im selben Monat eine 1039-Bit Mersennezahl (312 Dezimalstellen) faktorisiert haben.[9] Aufgrund der ungleichen Stellenzahl der Faktoren war das aber wesentlich leichter, als eine RSA-Zahl gleicher Länge zu faktorisieren. 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, der die Faktorisierung von Zahlen durch Verwendung des Shor-Algorithmus effizient durchführen könnte, bergen zumindest für die mittel- und langfristige Sicherheit der verschlüsselten Daten gewisse Risiken.

Schwierigkeit des RSA-Problems

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<\tfrac13\sqrt[4]{N}. Wiener verwendete dabei die Tatsache, dass unter der Abschätzung für d der Bruch \tfrac{k}{d} (für eine ganze Zahl k) in der Kettenbruchentwicklung von \tfrac{e}{N} auftaucht. Die Schranke wurde mit Mitteln der Gitterbasenreduktion 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 Gitterbasenreduktion beruht.

Angriffe gegen das unmodifizierte RSA-Verfahren

In der Praxis wird das RSA-Verfahren wie oben beschrieben nicht eingesetzt, da es mehrere Schwächen hat.

Die RSA-Verschlüsselung ist deterministisch. Das erlaubt es einem Angreifer, einen Klartext zu raten, ihn mit dem öffentlichen Schlüssel zu verschlüsseln und dann mit einem Chiffrat zu vergleichen. Da der Angreifer eine große Tabelle solcher Klartext-Chiffratpaare anlegen kann, darf der Klartext nicht leicht zu raten sein. Das bedeutet, dass unmodifiziertes RSA nicht IND-CPA sicher ist, heute eine Mindestanforderung an public-key Verschlüsselungsverfahren.

Wenn der Klartext m und der Verschlüsselungsexponent e so klein sind, dass c = me < n ist, dann kann ein Angreifer die e-te Wurzel von c ziehen und das Chiffrat auf diese Weise entschlüsseln. Wurzelziehen ist nur modulo einer großen Zahl schwierig, in diesem Fall kann c aber als in den ganzen Zahlen liegend betrachtet werden.

Wenn dieselbe Nachricht m zu mehreren Empfängern geschickt wird, die zwar alle unterschiedliche (und teilerfremde) Moduli ni benutzen, aber als öffentlichen Schlüssel den gleichen Exponenten e, dann kann aus e Nachrichten m^e \mod n_1, \ldots, m^e \mod n_l mit dem Chinesischen Restsatz m^e \mod \prod n_i berechnet werden. Weil m^e < \prod n_i (nach Voraussetzung ist m < ni für alle i), kann diese Zahl wieder als in den ganzen Zahlen liegend aufgefasst werden und Wurzelziehen ist dort einfach. Dieser Angriff wird nach seinem Entdecker Johan Håstad als „Håstads Angriff“ bezeichnet.[10]

Da die RSA-Funktion x \mapsto x^d \mod n multiplikativ ist (d. h. (xy)^d =x^dy^d \mod n gilt), kann man aus jedem Chiffrat me ein weiteres gültiges Chiffrat mere = (mr)e erzeugen. Wenn man den Besitzer des zugehörigen geheimen Schlüssels davon überzeugen kann, diese Zahl zu entschlüsseln oder zu signieren, kann man aus dem Ergebnis mr leicht m gewinnen.

Dieselbe Eigenschaft erlaubt auch einen Angriff auf das Signaturverfahren. Aus bekannten Klartext-Signaturpaaren  s_1, = m_1^d \ldots,s_k = m_k^d lassen sich weitere gültige Signaturen

s=\prod s_i\mod n zu Nachrichten m=\prod m_i\mod n

berechnen.

Padding

Um solche Angriffe zu verhindern, werden bei RSA-Verschlüsselung und RSA-Signatur so genannte Padding-Verfahren eingesetzt. Standards für Padding-Verfahren für RSA werden z. B. in PKCS#1 oder ISO 9796 definiert. Diese nutzen aus, dass die Länge des Klartextes bzw. Hash-Wertes deutlich kleiner als die Länge von n ist, und fügen dem Klartext bzw. dem Hash-Wert vor der Verschlüsselung oder Signatur eine Zeichenfolge R mit vorgegebener Struktur an, der unter mehreren möglichen zufällig gewählt wird und dadurch das Chiffrat randomisiert. Es wird also die RSA-Funktion nicht auf die Nachricht M oder auf den Hash-Wert h(M) angewendet, sondern auf den Klartext (bzw. seinem Hashwert) mit angehängtem R. In der Regel enthält R eine Angabe über die Länge der Nachricht oder des Hash-Wertes oder eine eindeutige Zeichenfolge, die den Beginn von R kennzeichnet. Dies erleichtert nicht nur die Dekodierung, sondern erschwert auch Angriffe. Padding-Verfahren können für die Berechnung von R auch Zufallszahlen und Hashfunktionen verwenden. Einige moderne Paddingverfahren – beispielsweise das Optimal Asymmetric Encryption Padding (OAEP) oder das Probabilistic Signature Scheme (PSS) – verwenden kryptographische Hashfunktionen um den Klartext vor der Verschlüsselung weiter zu randomisieren und sind unter idealisierenden Annahmen an die verwendete Hashfunktion beweisbar sicher unter der RSA-Annahme.[11][12]

Chosen-Ciphertext-Angriff

Daniel Bleichenbacher stellte 1998 einen Angriff auf die in PKCS#1 v1 spezifizierte RSA-Verschlüsselung vor. Dabei nutzte er aus, dass PKCS#1 v1 ein Nachrichtenformat vorgibt und einige Implementierungen nach dem Entschlüsseln Fehlermeldungen ausgeben, falls dieses Format nicht eingehalten wurde. Um den Angriff gegen ein Chiffrat c durchzuführen, wählt man eine Zahl s und berechnet daraus ein neues Chiffrat sec. Bei dem Nachrichtenformat sind die ersten zwei Bytes 00 und 02, wenn also keine Fehlermeldung kommt, weiß man, dass sowohl bei der ursprünglichen Nachricht m als auch bei der neuen Nachricht sm die ersten beiden Bytes 00 02 sind. Mehrfache Wiederholung mit geschickt gewählten s erlauben es, nach und nach den gesamten Klartext aufzudecken.[13] RSA nach PKCS#1 ab Version 2 ist immun gegen diesen Angriff.

Sicherheit der symmetrischen Verfahren

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 Hash-Wert signiert.

Der Hash-Wert bzw. der symmetrische Schlüssel ist dabei relativ kurz, auf jeden Fall kürzer als der RSA-Modulus N. Daher kann der symmetrische Schlüssel mit einer einzigen RSA-Verschlüsselung verschlüsselt werden. Für die Sicherheit von RSA sind Primzahlen mit mehreren hundert Dezimalstellen (mindestens 1024 Bit) erforderlich. Daher können symmetrische Schlüssel jeder üblichen Länge 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 etwa 77 Dezimalstellen. Damit ist ein 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üssels als hinreichend zufällig betrachtet werden kann.

Vollständiges Beispiel

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über hinaus 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 als 262626 sein.

Klartext:  W  I  K  I  P  E  D  I  A
Kodierung: 23 09 11 09 16 05 04 09 01

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 φ(N))

d = 1373 (das multiplikative Inverse zu emod φ(N) mit Hilfe des erweiterten euklidischen Algorithmus)

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

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

Verschlüsselung

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

Entschlüsselung

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

Signatur (Verschlüsselung mit dem geheimen Schlüssel)

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

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

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

Die Berechnung der modularen Exponentiation kann durch binäre Exponentiation (Square-and-multiply) beschleunigt werden.

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

Dabei wendet man nach jedem Rechenschritt auf die zu handhabenden Zahlen die Modulo-Operation „mod“ an, um die Zwischenergebnisse möglichst klein zu halten. Aus dem Klartext „7“ erhalten wir somit den Geheimtext „2“.

Anwendung

Hybride Verfahren

Hauptartikel: Hybride Verschlüsselung

RSA ist im Vergleich zu Verfahren wie 3DES und AES mindestens um den Faktor 1000 langsamer. In der Praxis wird RSA daher meist nur zum Austausch eines Schlüssels für die symmetrische Verschlüsselung benutzt. Für die Verschlüsselung der Daten werden dann symmetrische Verfahren eingesetzt. Damit sind die Vorteile beider Systeme vereint: einfacher Schlüsselaustausch und effiziente Verschlüsselung.

Anwendungsgebiete

Literatur

  • "Einführung in die Kryptographie" von Johannes Buchmann Springer-Verlag Berlin Heidelberg 1999 ISBN 3-540-66059-3
  • Der Dialog der Schwestern. In: c’t. Nr. 25, 1999 (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. Band 3152, Springer Verlag, 2004, S. 213–219.
  • Dan Boneh: Twenty Years of Attacks on the RSA Cryptosystem. In: Notices of the American Mathematical Society (AMS). Band 46, Nr. 2, 1999, S. 203–213.

Weblinks

Einzelnachweise

  1. R.L. Rivest, A. Shamir, and L. Adleman: A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. (http://people.csail.mit.edu/rivest/Rsapaper.pdf).
  2. C. C. Cocks: A note on 'non-secret encryption'. 1973
  3. Patent US4405829: Cryptographic communications system and method. Veröffentlicht am 20. September 1983, Anmelder: Massachusetts Institute of Technology, Erfinder: Ronald L. Rivest, Adi Shamir, Leonard Adleman.
  4. D. Boneh: Twenty Years of Attacks on the RSA Cryptosystem. In: Notes of the AMS. 46, Nr. 2, Februar 1999, S. 203–213 (PDF).
  5. MJ Wiener: Cryptanalysis of short RSA secret exponents. In: IEEE Transactions on information theory. 36, Nr. 3, Mai 1990, S. 553–558, doi:10.1109/18.54902.
  6. RSA Labs: RSA-200 is factored!
  7. MathWorld: RSA-640 Factored
  8. RSA Labs: RSA-768 is factored!
  9. http://www.crypto-world.com/announcements/m1039.txt
  10. Johan Håstad: Solving Simultaneous Modular Equations of Low Degree. In: SIAM Journal on Computing. 17, Nr. 2, 1988, S. 336–341 ([1]).
  11. What is OAEP? (englisch)
  12. What is PSS/PSS-R? (englisch)
  13. Daniel Bleichenbacher: Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS #1. In: CRYPTO '98. 1998, S. 1–12.

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • RSA — steht für: Radio Session Allgäu, ein Allgäuer Lokalradiosender Radio RSA, ein ehemaliger Radiosender in Südafrika Random sequential adsorption, ein stochastischer Prozess, siehe Hard core Prozess Rational Software Architect, ein modellgetriebenes …   Deutsch Wikipedia

  • RSA Security — Inc. Rechtsform Corporation Gründung 1986 Sitz B …   Deutsch Wikipedia

  • RSA-576 — Das RSA Factoring Challenge war ein am 18. März 1991 von der Firma RSA Security ausgerufener Wettbewerb, welcher die Sicherheit des RSA Kryptosystems aufzeigen sollte. Insbesondere Mathematiker und Informatiker wurden aufgefordert die… …   Deutsch Wikipedia

  • RSA-640 — Das RSA Factoring Challenge war ein am 18. März 1991 von der Firma RSA Security ausgerufener Wettbewerb, welcher die Sicherheit des RSA Kryptosystems aufzeigen sollte. Insbesondere Mathematiker und Informatiker wurden aufgefordert die… …   Deutsch Wikipedia

  • Kryptosystem — Ein Kryptosystem ist allgemein ein System, das mit Kryptographie zu tun hat. Als feststehender Ausdruck findet der Begriff im Namen RSA Kryptosystem Verwendung. Unter dem Begriff Kryptosystem werden allerdings in unterschiedlichen Kontexten… …   Deutsch Wikipedia

  • RSA-Algorithmus — 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… …   Deutsch Wikipedia

  • RSA-Kryptologiesystem — 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… …   Deutsch Wikipedia

  • RSA-Schema — 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… …   Deutsch Wikipedia

  • RSA-Verfahren — 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… …   Deutsch Wikipedia

  • RSA-Verschlüsselung — 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… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”