Skip to content

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:

RSA als Konzelationssystem (Verschlüsselungssystem)
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:

RSA als digitales Signatursystem
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.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : Verfahren der Kryptographie, Teil 11: Hybride Verschlüsselungsverfahren

Vorschau anzeigen
Ein hybrides Verschlüsselungsverfahren wurde bereits bei der Vorstellung von Anwendungen des AES-Algorithmus erwähnt. Bei einem hybriden Verfahren werden ein symmetrisches und ein asymmetrisches Verfahren kombiniert, um in den Genuss der

Dipl.-Inform. Carsten Eilers am : Kryptographie - Ein Überblick

Vorschau anzeigen
Die Kryptographie ist ein ein sehr umfangreiches Themengebiet, und obwohl ich mich jetzt seit 30 Artikeln damit befasst habe sind längst nicht alle Themen vorgestellt worden. Aber zumindest die wichtigsten habe ich beschrieben, und damit soll e