Samstag, 31. Juli 2010


Topthema

Donnerstag, 26. Oktober 2006 | Topthema

About Security #78: Kryptographie — Hybride Verfahren

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/032043)

Wie man den in About Security #77 vorgestellten Angriff auf RSA als Konzelationssystem verhindern kann und wie hybride Verfahren funktionieren, erfahren Sie in dieser Folge von About Security.

Angriff 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 z.B. 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.
RSA als Konzelationssystem

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Um beim Einsatz von RSA als digitales 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 digitales 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.

RSA als digitales Signatursystem

Ein hybrides Verschlüsselungsverfahren

Dass bei einem hybriden Verschlüsselungsverfahren ein symmetrisches und ein asymmetrisches Verfahren kombiniert werden, wurde bereits in About Security #75 kurz erwähnt. Im Folgenden soll das Vorgehen eines hybriden Verschlüsselungsverfahrens beschrieben werden.

About Security: Die komplette Serie

Als Algorithmen sollen AES als symmetrisches und RSA als asymmetrisches System verwendet werden. Die folgenden Aussagen gelten natürlich auch für alle anderen Systeme.

Die verschiedenen Funktionen werden folgendermaßen bezeichnet:

AESver(k, m)
ist die AES-Verschlüsselung des Blocks m mit dem Schlüssel k,
AESent(k, m')
entsprechend die AES-Entschlüsselung eines verschlüsselten Blocks m'.
RSAver(c, m)
ist die RSA-Verschlüsselung des Blocks m mit dem öffentlichen Schlüssel c,
RSAent(d, m')
entsprechend die RSA-Entschlüsselung eines verschlüsselten Blocks m'.

Das hybride Verfahren (Gesamtbild) läuft dann folgendermaßen ab:

  • Verschlüsselung:
    • Erzeugung eines zufälligen Schlüssels k für die AES-Verschlüsselung
    • AES-Verschlüsselung des Klartexts m mit Schlüssel k:
      AESver(k, m) =: m'
    • RSA-Verschlüsselung des (geheimzuhaltenden) Schlüssels k mit dem öffentlichen Schlüssel c des Empfängers:
      RSAver(c, k) =: k'
    • Verbinden von m' und k' und Übertragung an den Empfänger:
      (m', k')
  • Entschlüsselung:
    • RSA-Entschlüsselung der 2. Komponente (= der Schlüssel für AES) der empfangenen Nachricht mit dem privaten Schlüssel des Empfängers:
      RSAent(d, k') =: k
    • AES-Entschlüsselung der 1. Komponente mit dem soeben entschlüsselten Schlüssel k:
      AESent(k, m') =: m
Symmetrische Verschlüsselung mit AESAsymmetrische Verschlüsselung mit RSAAES und RSA als Hybrides Verfahren

Soll zusätzlich die Integrität des Klartexts sichergestellt werden, muss der Sender ihn vor dem Verschlüsseln mit seinem geheimem Schlüssel signieren. Danach werden Klartext und Signatur gemeinsam verschlüsselt. Der Empfänger prüft nach dem Entschlüsseln die Signatur mit dem öffentlichen Schlüssel des Senders. Zum Ablauf siehe hier.

Nach der Beschreibung asymmetrischer Verfahren stellt sich die Frage, wie Sender und Empfänger an die benötigten öffentlichen Schlüssel ihrer jeweiligen Kommunikationspartner gelangen und dabei sicherstellen, ob wirklich die richtigen Schlüssel verwendet werden. Dies ist das Thema der nächsten Folge.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Kryptographie – RSA"

Kommentare

Gravatar mostefa 18.06.2008
um 14:20 Uhr
takes #zitieren

Folgende Links könnten Sie auch interessieren