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
, mit
, welche das öffentliche
Modul
bestimmen.
Zahlentheoretische Erläuterungen:
handelt es sich um einen Ring, nicht um
einen Körper.22
und
jeweils einen Primzahlenkörper.
nur solche Elemente zu, die keinen gemeinsamen Teiler mit dem
Modul
haben, wird ein Körper konstruierbar. Die Anzahl der Elemente
in
dessen multiplikativer Gruppe
ergibt sich
mit Hilfe von EULER’s Totient-Funktion zu
.
erzeugt, die keinen gemeinsamen Faktor mit
hat. Diese
(auch als öffentlicher Exponent bezeichnete) Zahl bildet die Basis des öffentlichen Schlüssels
.
Zahlentheoretische Erläuterungen:
gehört
zum endlichen Körper
.
läßt sich als notwendige Voraussetzungen
und
ableiten.
und
gerade Zahlen sind, muß
wegen des vorangegangenen
Punktes auf jeden Fall ungerade sein.
wird jetzt eine weitere Zahl
so
berechnet,23
daß
ohne Rest durch
teilbar ist.
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ß
nicht mehr nötig ist;
die Speicherplatzanforderungen reduziert
sind.
und
vereinfacht wird.
Eine wesentliche Zeitersparnis kommt zustande, wenn man
vor dessen Potenzierung in der
Länge reduziert.

, welcher ebenfalls reduziert werden
kann. Dazu muß man sich nur klarmachen, daß durch die Reduktion von
in Punkt 2 das
Ergebnis der Potenzierung jeweils in
oder
und insbesondere in der zugehörigen
multiplikativen Gruppe liegt. Da diese zyklisch ist, wiederholen sich beim Potenzieren die Werte
mit der Gruppenordnung
bzw.
. Aus diesem Grund kann man
auf
die Gruppenordnung reduzieren (vgl. auch Anhang ??).

Zu der privaten Schlüsseldarstellung
gibt es deshalb zwei Optionen:
, was wegen
trivial erscheint;
, mit
,
und
.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:
Signieren (Verwendung des privaten Schlüssels);
genauso wie
(der Unterschied liegt im Element PS);
Verschlüsseln (Verwendung des öffentlichen Schlüssels).
so, daß
gewährleistet ist. Die Länge von PS soll mindestens 8 Byte sein, was im
Umkehrschluß die von D auf
Bytes beschränkt. Das Padding selbst hängt vom Typ des
Blocks (BT) ab:
alle Bytes sind
;
alle Bytes sind
;
alle Bytes sind zufällig, aber ungleich
.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:
.
-Byte’s hinzu (Padding), so daß ein Datenblock DB der Länge
entsteht.35
und stelle das Ergebnis als
an den Anfang des Datenblocks.36
.
als Teil der Encoded Message (EM).
, als höherwertigen Teil von EM.
-Byte an den Anfang von EM (gewährleistet auch hier wieder
).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