Beim RSA-Algorithmus handelt es sich um das bekannteste asymmetrische Kryptoverfahren, benannt nach seinen Erfindern RIVEST-SHAMIR-ADLEMAN [RSA78, AR78].20 Die mathematische Grundlage bilden Restklassenkörper, verbunden mit der Schwierigkeit große Zahlen zu faktorisieren.
Betrachten wir in der Voraussetzung zuerst die Schlüsselerzeugung, welche im Wesen folgendermaßen abläuft:21
Zahlentheoretische Erläuterungen:
Zahlentheoretische Erläuterungen:
Zahlentheoretische Erläuterungen:
kann man auch als Inverse des öffentlichen Exponents im Körper ansehen.
Für die Verschlüsselung wird folgende Operation auf dem Plaintext-Block ausgeführt, wobei dieser als Zahl interpretiert wird:
Die inverse Operation der Entschlüsselung wird in gleicher Art und Weise vorgenommen:
Für den Beweis wendet man zuerst Gleichung 3.2 an und bezieht dann die Restklassendarstellung () ein.
Die weitere Argumentation beruht darauf, daß gilt und so:
Besitzen und keinen gemeinsamen Teiler (, ), dann kann man auf einfach EULER’s Satz (nach Formel ??) anwenden und ist fertig.
Hat allerdings gemeinsame Teiler mit , dann gilt und deshalb . Betrachtet man aber die Faktorisierung von , dann muß ein Vielfaches von oder sein (wegen jedoch nicht von ). Unter dieser Voraussetzung wäre die Zerlegung oder möglich, wobei jeweils gilt. Im Fall (für ganz genauso) läßt sich die Modulo-Division durch Kürzen von und unter Berücksichtigung von folgendermaßen vereinfachen:
Wegen kann nun wieder der Satz von EULER zur Anwendung kommen, was den Beweis vervollständigt.
Eine Beschleunigung des Verfahrens läßt sich (algorithmisch) vor allem beim Entschlüsseln erzielen.24 Geht man dazu von
aus, dann lassen sich (durch Modulo-Division nach und ) die folgenden zwei Kongruenzen formulieren:
Diese legen eine Anwendung des Chinesischen Restsatzes entsprechend Anhang ?? nahe [Gro00, Wel01].25
Als Voraussetzung benötigt man die Koeffizienten und in der BéZOUT-Darstellung des größten gemeinsamen Teilers (vgl. Formel ?? in Anhang ??)
welche z. B. mit Hilfe des erweiterten euklidischen Algorithmus berechnet werden können.26 Sie stellen, wenn man vorangegangene Gleichung nach und modulo-dividiert, gleichzeitig die Inversen
im Körper und dar. Durch Anwendung des Chinesischen Restsatzes für zwei Kongruenzen kann man nun berechnen:
Der Vorteil liegt darin, daß die modulare Exponentiation modulo , welche die Komplexität hat,27 auf zwei Operationen gleicher Art, aber mit verringerter Anzahl von Stellen verteilt.
Die weitere Optimierung kann in drei Schritten erfolgen:
läßt sich eine lineare diophantische Gleichung ableiten (siehe auch Anhang ??):
welche die Lösungsmenge
besitzt. Üblicherweise benutzt man zur Berechnung von die Lösungen für und erhält in geschlossener Darstellung:28
Unter der Voraussetzung kann man vorangegangene Gleichung noch weiter reduzieren, wenn die allgemeingültige Beziehung berücksichtigt wird.
Die Vorteile dieser Darstellung liegen vor allem darin, daß
Zu der privaten Schlüsseldarstellung gibt es deshalb zwei Optionen:
Wegen der signifikanten Geschwindigkeitsvorteile wird fast immer die Quintupel-Variante verwendet [IEE00, ISO06a, PKC02].29
Um den RSA-Algorithmus praktisch auf die Verschlüsselung von Daten anzuwenden, müssen diese zuerst geeignet aufbereitet werden. Der Prozeß dieser Formatierung wird in [IEE00, PKC02] als Message Encoding Operation bezeichnet, in [PKC93a] hingegen als Encryption Block Formatting.
PKCS #1 v1.5 Mit der Methode nach [PKC93a, Kal98] gestaltet sich die Formatierung noch relativ einfach.30 Der Datenblock D wird entsprechend Abbildung 3.1 in die Struktur des sogenannten Encryption Block EB eingebunden. Auf den Encryption Block EB wird letztlich der RSA-Algorithmus nach Formel 3.2 angewendet.31
Die weiteren Elemente im Encryption Block haben folgende Bedeutung:
Der Inhalt von PS ist beim Entschlüsseln (Byte für Byte) auf konforme Kodierung zu prüfen [PKC93a, 9.4]. Für die Blocktypen und kann der Anfang (und damit auch die Länge) des Datenblocks D ermittelt werden, indem das -Byte zwischen PS und D gesucht wird. Für den Blocktyp ist dieses Verfahren nur geeignet, wenn das erste Byte in D immer ungleich ist. Kann dies nicht vorausgesetzt werden, dann muß die Länge a priori bekannt sein.32
PKCS #1 v2.1 Nicht zuletzt wegen des sehr erfolgreiche Angriffs nach [Ble98] wird die PKCS #1 v1.5 Formatierung heute nicht mehr empfohlen. Statt dessen sollte grundsätzlich Version 2.1 nach [PKC02, JK03, IEE00, ISO06a] zum Einsatz kommen, welche Optimal Asymmetric Encryption Padding (OAEP) verwendet [BR95].33
Den Kern der Blockformatierung nach Abbildung 3.2 macht eine sogenannte Mask Generation Function (MGF, in Abbildung 3.2 mit F bezeichnet) aus, welche selbst wiederum eine Hash-Funktion H verwendet. Die MGF kann dasselbe leisten wie die Hash-Funktion, nämlich eine große Eingangsmenge auf eine kleine Ausgangsmenge abbilden (mit soll im folgenden die Breite eines Hash-Wertes bezeichnet sein). Sie kann aber auch das Umgekehrte – eine kleine Eingangsmenge auf eine größere Ausgangsmenge „zerstreuen”. PKCS #1 v2.1 legt sich zwar in der Hash-Funktion nicht fest, definiert aber in [PKC02, B.2.1] eine konkrete Mask Generation Function, genannt MGF1.34
Die einzelnen Kodierungsschritte können folgendermaßen beschrieben werden:
Im Gegensatz zu PKCS #1 v1.5 geht in die RSA-Verschlüsselung hier nun ein Wert EM ein, der keinerlei Rückschlüsse auf den Datenblock DB zuläßt.37