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