Verfahren der Kryptographie, Teil 10: RSA absichern
Der bisher beschriebene Einsatz von RSA als Konzelationssystem und Authentifikationssystem oder digitalem Signatursystem weist einige Schwachpunkte auf. Aber die lassen sich beheben.
Angriffe auf RSA-Konzelationssystem verhindern
Um den Angriff auf RSA als Konzelationssystem zu verhindern, wird es zuerst zu einem indeterministischen Konzelationssystem gemacht, indem bei der Verschlüsselung mit jedem Klartextblock eine neue Zufallszahl verschlüsselt wird. Dadurch ergeben gleiche Klartextblöcke unterschiedliche Schlüsseltextblöcke.
Um aktive Angriffe zu verhindern, wird jedem Klartextblock vor der Verschlüsselung Redundanz hinzugefügt, die beim Entschlüsseln geprüft wird. Dabei darf die modulare Multiplikation zweier Klartextblöcke mit Redundanz keinen dritten Klartextblock mit passender Redundanz ergeben.
Die Redundanz kann beispielsweise erzeugt werden, indem auf den Klartextblock eine kollisionsfreie Hashfunktion (dazu demnächst mehr) angewendet und das Ergebnis an den Klartextblock angehängt wird. Um die multiplikative Struktur von RSA aufzuheben, muss die multiplikative Struktur der Hashfunktion (sofern vorhanden) eine andere als die von RSA sein.
Der Einsatz von RSA als Konzelationssystem erfolgt dann folgendermaßen:
Verschlüsselung:
- Vor den Klartextblock m wird eine Zufallszahl z
geschrieben:
z, m - Eine kollisionsfreie Hashfunktion h wird auf Zufallszahl und
Klartextblock angewendet und das Ergebnis hinter den Klartextblock
geschrieben:
z, m, h(z,m) - Alle drei Komponenten werden gemeinsam modular mit c
exponentiert:
(z, m, h(z,m)) c mod n
Entschlüsselung:
- Der Schlüsseltextblock wird modular mit d
exponentiert:
((z, m, y) c) d mod n =: z, m, y - Es wird geprüft, ob sich bei der Anwendung der Hashfunktion
h auf die ersten beiden Komponenten die dritte Komponente
ergibt:
h(z, m) = y ? - Nur wenn dies zutrifft, wird die zweite Komponente ausgegeben.
Das sichere RSA-Konzelationssystem sieht damit wie in Abbildung 1 aus:
Abb. 1: RSA als Konzelationssystem (Verschlüsselungssystem)
Angriffe auf RSA-Signatursystem verhindern
Um beim Einsatz von RSA als digitalem Signatursystem ein Rückwärtsrechnen zu verhindern und die multiplikative Struktur von RSA aufzuheben, wird vor der Berechnung der Signatur eine kollisionsfreie Hashfunktion auf den zu signierenden Textblock angewandt. Arbeitet die Hashfunktion mit Argumenten beliebiger Länge hat dies zusätzlich den Vorteil, dass dadurch unbeschränkt lange Texte ohne vorherige Aufteilung in passende Blöcke signiert werden können. Ist die Hashfunktion außerdem noch schneller zu berechnen als RSA, beschleunigt dies auch das Gesamtsystem gegenüber einem alleinigen Einsatz von RSA.
Der Einsatz von RSA als digitalem Signatursystem erfolgt dann folgendermaßen:
Signieren:
- Auf den zu signierenden Textblock m wird eine kollisionsfreie
Hashfunktion h angewendet:
h(m) - Das Ergebnis wird modular mit s exponentiert:
h(m) s mod n
Testen:
- Die empfangene Signatur wird mit t modular exponentiert:
(h(m) s) t mod n =: y - Es wird geprüft, ob die Anwendung der Hashfunktion h auf
den Textblock das gleiche Ergebnis wie der übertragene Wert y
ergibt:
h(m) = y ? - Nur wenn dies zutrifft, wird "richtig" ausgegeben.
Das sichere RSA-Signatursystem sieht damit wie in Abbildung 2 aus:
Abb. 2: RSA als digitales Signatursystem
Nachdem nun sichere Varianten des RSA-Verfahrens zur Verfügung stehen, können wir die RSA-Verschlüsselung und -Signatur ja anwenden. Das geschieht meist im Rahmen eines sog. Hybriden Verfahrens. Dabei werden ein symmetrisches und ein asymmetrisches Verfahren kombiniert, um in den Genuss der Vorteile beider Verfahren zu kommen: Während symmetrische Verfahren meist deutlich schneller zu berechnen sind als ihre asymmetrischen Kollegen, haben die den Vorteil des einfacheren Schlüsselaustauschs.
Statt die gesamte, lange Nachricht mit einem langsamen, asymmetrischen Verfahren wie RSA zu verschlüsseln, kann man sie auch mit einem deutlich schnelleren symmetrischen Verfahren wie AES verschlüsseln und dafür einen zufällig erzeugten Schlüssel verwenden. Den verschlüsselt man dann mit dem öffentlichen RSA-Schüssel des Empfängers und schickt ihm die AES-verschlüsselte Nachricht und den RSA-verschlüsselten AES-Schlüssel. Der Empfänger entschlüsselt mit seinem geheimen RSA-Schlüssel den AES-Schlüssel und damit dann die Nachricht.
Eigentlich ganz einfach, oder? Wie ein Hybrides Verfahren genau funktioniert, erkläre ich trotzdem in der nächsten Folge noch genauer.
Trackbacks
Dipl.-Inform. Carsten Eilers am : Verfahren der Kryptographie, Teil 11: Hybride Verschlüsselungsverfahren
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : Kryptographie - Ein Überblick
Vorschau anzeigen