Sonntag, 5. Juli 2009

News

präsentiert von: entwickler.com
Donnerstag, 26. Oktober 2006

About Security #78: Kryptographie — Hybride Verfahren

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
BASTA! 2009

Konferenzen

SQLCON 2009

SQLCON 2009

21.-25. September 2009
Rheingoldhalle Mainz

BASTA! 2009

BASTA! 2009

21.-25. September 2009
Rheingoldhalle, Mainz

ShareConnect 2009

ShareConnect 2009

21.-25. September 2009
Rheingoldhalle Mainz

EKON13

EKON13

28.- 2. Oktober 2009
Maritim Rhein-Main Hotel Darmstadt

 W-JAX 2009

W-JAX 2009

9.-13. November 2009
ArabellaSheraton Hotel, München

SOACon 2009

SOACon 2009

9.-13. November 2009
Arabella Sheraton Hotel, München

IPC 2009

IPC 2009

15.-18. November 2009
Kongresszentrum Karlsruhe

WebTech Conference 2009

WebTech Conference 2009

16.-18. November 2009
Kongresszentrum Karlsruhe

Werbung
Top-Jobs

Microsoft Architects Connection

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

Ruby on Rails

RailsWay Magazin

Ruby on Rails

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

Bücher




hosted by HostEurope