RSA ist ein Verfahren oder Algorithmus zur Verschlüsselung elektronischer Daten, der verschiedene Schlüssel zum Ver- und Entschlüsseln verwendet, wobei der Schlüssel zum Entschlüsseln nicht oder nur mit hohem Aufwand aus dem Schlüssel zum Verschlüsseln berechenbar ist. Der Schlüssel zur Verschlüsselung kann daher veröffentlicht werden. Solche Verfahren werden als asymmetrische oder Public-Key-Verfahren bezeichnet. Er ist nach seinen Erfindern Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt.
test
Schlüsselverteilung
Der Vorteil asymmetrischer Verfahren besteht in der Vereinfachung der Schlüsselverteilung. Bei symmetrischen Verfahren ist der Austausch eines geheimen Schlüssels erforderlich, 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 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 Hashfunktion 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.
Geschichte
Der Schlüsselaustausch ist eine logistische Schwachstelle und hat bei mehreren zwischenstaatlichen Auseinandersetzungen und Kriegen den 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.
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. Entsprechend genügt es, beim Signaturverfahren einen SHA-1-Wert statt der gesamten Nachricht zu signieren. Es werden daher praktisch immer hybride Verfahren eingesetzt.
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 Hellmann 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.
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 function) handeln, die mit Hilfe einer Zusatzinformation auch rückwärts leicht zu berechnen sind.
Das Verfahren ist mit dem Rabin-Verschlüsselungsverfahren verwandt.
Algorithmus
- Wähle zufällig und stochastisch unabhängig zwei Primzahlen , und berechne das Produkt .
In der Praxis werden diese Primzahlen durch Raten einer Zahl und darauf folgendes Anwenden eines Primzahltests bestimmt. - Berechne , wobei für die Eulersche φ-Funktion steht.
- Wähle eine Zahl , für die gilt , die teilerfremd zu ist.
- Berechne die Zahl Fehler beim Parsen (SVG (MathML kann über ein Browser-Plugin aktiviert werden): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „http://localhost:6011/de.wikipedia.org/v1/“:): {\displaystyle d}
so, dass das Produkt kongruent 1 bezüglich des Modulus ist, dass also gilt.
Der öffentliche Schlüssel (public key) besteht dann aus- , dem Primzahlprodukt sowie
- , dem öffentlichen Exponenten.
Der private Schlüssel (private key) besteht aus- , dem privaten Exponenten sowie
- , welches allerdings bereits durch den öffentlichen Schlüssel bekannt ist.
, und werden nicht mehr benötigt und sollten nach der Schlüsselerstellung auf sichere Weise gelöscht werden.
Ein Zahlenbeispiel:
- Für die beiden Primzahlen und wählt man und . Damit wird .
- Die eulersche φ-Funktion nimmt damit den Wert an.
- Für die zu teilerfremde neue Zahl wählt man .
- Mit dem erweiterten euklidischen Algorithmus berechnet man nun die Zahl mit . Damit wird der private Schlüssel, und der öffentliche Schlüssel.
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:
- , der Modulos,
- , der sogenannte private Exponent,
- , die erste Primzahl,
- , die zweite Primzahl,
- , häufig dmp1 genannt,
- , häufig dmq1 genannt und
- , häufig iqmp genannt.
Verschlüsseln von Nachrichten
Um eine Nachricht zu verschlüsseln, verwendet der Absender die Formel
und erhält so aus dem Klartext den Geheimtext .
Beispiel
Es soll die Zahl 7 verschlüsselt werden.
Der Nachrichtenabsender benutzt den veröffentlichten Schlüssel , und rechnet
Zur Berechnung von kann die Kongruenzarithmetik verwendet werden. Mit Hilfe der modularen Exponentiation berechnet man schnell:
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.
Entschlüsseln von Nachrichten (Decodierung)
Der Geheimtext kann durch modulare Exponentiation wieder zum Klartext entschlüsselt werden. Der Empfänger benutzt die Formel
mit dem nur ihm bekannten Wert sowie .
Beispiel
Aus wird also wieder .
Siehe auch Schnelles Potenzieren
Signieren von Nachrichten
Um eine Nachricht 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 . 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 der Nachricht berechnet. Dieser bildet, meist zusammen mit einigen technisch notwendigen Informationen, wie zum Beispiel das verwendete Hashverfahren, die Eingabe der Verschlüsselung mit dem privaten Schlüssel. Diese liefert die eigentliche Signatur. Der Empfänger kann nun mit dem öffentlichen Schlüssel und der Signatur bestimmen. Anschließend kann er selber den Hashwert der Nachricht bestimmen und mit dem in gespeicherten vergleichen. Wenn die beiden Werte übereinstimmen, kann mit hoher Sicherheit davon ausgegangen werden, dass die Nachricht fehlerfrei übertragen wurde und nicht gefälscht ist.
Siehe auch Elektronische Unterschrift
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.
Sicherheit von RSA
Angenommen, der Angreifer kennt lediglich den öffentlichen Schlüssel, also die Werte und . Um den Geheimtext zu entschlüsseln, benötigt er zusätzlich oder einen zu modulo kongruenten Wert.
Wenn der Angreifer kennen würde, könnte er leicht berechnen. Eine Möglichkeit dazu ist die Zerlegung von in seine beiden Primfaktoren und . 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 wurden bereits Zahlen mit über 100 Stellen faktorisiert. So gelang es zum Beispiel Mathematikern der Universität Bonn 2005, im Rahmen eines Wettbewerbs eine einzelne von den RSA Laboratories vorgegebene 200-stellige Dezimalzahl zu faktorisieren. 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. Dies ist noch ein gutes Stück von den mindestens 300 Dezimalstellen heute üblicher Schlüssel entfernt. 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. 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 Sicherheit von RSA kein Problem dar, zumal diese Entwicklung vorhersehbar ist: Der Nutzer kann bei der Erzeugung seines Schlüsselpaares darauf achten, dass die zu zerlegende Zahl groß genug ist, um während der Dauer der beabsichtigten Verwendung nicht berechnet werden zu können. Nicht vorhersehbare Entwicklungen wie zum Beispiel die Fertigstellung eines leistungsfähigen Quantencomputers oder die Entdeckung eines wirklich neuen hocheffizienten Algorithmus sind dabei unerheblich. Beides ist kurzfristig gesehen sehr unwahrscheinlich.
Wir haben bereits gesehen, dass es nicht zwingend notwendig ist das Faktorisierungsproblem zu lösen, um eine Nachricht zu entschlüsseln. Tatsächlich genügt es oder genauer ein Vielfaches des kgV von p-1 und q-1 zu kennen. Daraus lässt sich völlig analog wie bei der Schlüsselgenerierung ein passender Exponent d berechnen, da bei dieser Berechnung mittels des erweiterten Euklidischen Algorithmus die Primfaktorzerlegung nicht benötigt wird.
Angenommen zu einem N würden mehrere Paare von Exponenten (e,d) bzw. (e',d') verwendet. Dann könnte ein solches Vielfaches leicht aus irgendeinem Paar (e',d') berechnet werden.
In diesem Spezialfall wäre die Entschlüsselung weit weniger schwierig als das Faktorisierungsproblem. Es ist offen, ob dies auch im allgemeinen Fall gilt. Das System von Rabin ist im Gegensatz zu RSA ein Public-Key-System, für das bewiesen ist, dass es mindestens so schwierig ist wie das Faktorisierungsproblem.
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
- .
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 oder maximal 168 Bit oder etwa 40 Dezimalstellen. Damit ist eine Brute-Force-Angriff faktisch auszuschließen. Eine sichere Hashfunktion wie SHA-1 erzeugt Funktionswerte mit lediglich 160 Bit entsprechend etwa 50 Dezimalstellen bzw. 40 Hexadezimalziffern. 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.
Beweis
Um die Korrektheit des RSA-Verfahrens zu zeigen, muss folgende Kongruenz bewiesen werden:
- für alle mit
Dabei ist
- der Klartext, der ver- und danach wieder entschlüsselt wird,
- das Produkt zweier Primzahlen ,
- der Verschlüsselungsexponent mit ,
- der eindeutige Entschlüsselungsexponent mit .
Die Aussage, dass gilt, ist gleichbedeutend mit der Existenz einer ganzen Zahl mit . Außerdem ist wegen der Multiplikativität von .
Nach Wahl von und ist nun , denn für ist nichts zu zeigen.
Im Fall gilt
- ,
da nach dem Satz von Euler.
Im Fall dürfen wir ohne Einschränkung annehmen, dass .
Wir erhalten folgende zwei Kongruenzen:
- , da wegen
- , da nach dem kleinen Satz von Fermat
Mit dem chinesischem Restsatz folgt nun .
Optimierung
Es ist nicht notwendig derart zu bestimmen, dass die Kongruenz erfüllt wird.
Vielmehr reicht es aus derart zu bestimmen, dass die Kongruenz erfüllt wird. Der Vorteil bei diesem Verfahren liegt in der Größe des Modulus für die Berechnung von , weil dieser nun kleiner geworden ist und dadurch die Berechnung von schneller durchgeführt werden kann.
Für die Zahlen und ergibt 120. Das kleinste gemeinsame Vielfache von und ist lediglich 60 (es muss ja ein Teiler von 120 sein) und somit maximal halb so groß wie das Ergebnis der φ-Funktion, da und 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 und ist, gelten folgende zwei Regeln:
Wir unterscheiden drei Fälle.
Fall 1:
Hierbei erhalten wir zwei Kongruenzen:
- , nach dem kleinen Satz von Fermat
- , nach dem kleinen Satz von Fermat
Nach dem chinesischem Restsatz folgt nun .
Fall 2:
- , da von geteilt wird.
- , nach dem kleinen Satz von Fermat
Nach dem Chinesischen Restsatz folgt wiederum .
Fall 3:
analog zu Fall 2
RSA ist kein Primzahltest
Wenn und Primzahlen sind, funktioniert das RSA-Verfahren. Umgekehrt kann aber aus dem funktionierenden RSA-Verfahren nicht geschlossen werden, dass und Primzahlen sind, denn bei Carmichael-Zahlen funktioniert das Verfahren, obwohl Carmichael-Zahlen keine Primzahlen sind.
Beweis
Gegeben:
- , wobei eine Carmichael-Zahl ist
- , Eigenschaft von Carmichael-Zahlen
- , fälschliche Annahme, da angenommen wird, dass eine Primzahl ist
- , weil von geteilt wird
Zu zeigen:
Betrachten wir nun den Primteiler
Fall 1:
Fall 2:
Betrachten wir nun die Primteiler von
Fall 1:
Fall 2:
Unabhängig von der Zahl folgt aus dem dem chinesischem Restsatz, dass .
Dieser Beweis hält offensichtlich auch dann stand, wenn das Produkt von zwei Carmichael-Zahlen ist.
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ü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 muss also größer 262626 sein.
Klartext: W I K I P E D I A Kodierung: 230911 091605 040901
Schlüsselerzeugung
Zunächst werden geheim zwei Primzahlen gewählt, beispielsweise und . Damit ergibt sich:
(zufällig, teilerfremd zu )
(das multiplikative Inverse zu mit Hilfe des Erweiterten euklidischen Algorithmus)
Öffentlicher Schlüssel: und
Geheimer Schlüssel: und
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
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
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
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
Anwendungsgebiete
- Internet- und Telefonie-Infrastruktur: X.509-Zertifikate
- Übertragungs-Protokolle: IPSec, TLS, SSH, WASTE
- E-Mail-Verschlüsselung: PGP, S/MIME
- Authentifizierung französischer Telefonkarten
- Kartenzahlung: EMV
Siehe auch
Weblinks
- Übersicht über erfolgreiche Faktorisierungen im RSA-Wettbewerb
- Erklärung von RSA vom Fachbereich Mathematik der Universität Wuppertal
- Skript zu Zahlentheorie bis RSA
- Bekannte Attacken auf RSA-Verfahren (in englischer Sprache)
- Zahlentheoretische Arbeit über RSA
==
Ebene 2 Überschrift
==