Freitag, 4. Juli 2008

News

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

About Security #78: Kryptographie - Hybride Verfahren

In dieser Folge soll es um die Verhinderung der in About Security #77 vorgestellten Angriffe auf RSA gehen.

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üsselungsverfahren 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 AES Asymmetrische Verschlüsselung mit RSA AES 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

Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!

Konferenzen

BASTA! 2008

BASTA! 2008

22.-26. September 2008
Rheingoldhalle, Mainz

SQLCON 2008

SQLCON 2008

22.-26. September 2008
Rheingoldhalle, Mainz

IPC 2008

IPC 2008

27.-31. Oktober 2008
Rheingoldhalle, Mainz

AJAX IN ACTION 2008

AJAX IN ACTION 2008

28.-31. Oktober 2008
Rheingoldhalle, Mainz

EKON 12

EKON 12

28.-31. Oktober 2008
Congress Centrum, Mainz

W-JAX 2008

W-JAX 2008

3.- 7. November 2008
ArabellaSheraton Hotel München

SOACON 2008

SOACON 2008

3.- 7. November 2008
Arabella Sheraton Hotel, München

Werbung
Top-Jobs

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

OLYMPUS EUROPA Holding GmbH

Web-Entwickler (m/w)

Hueber Verlag GmbH & Co. KG

Webdesigner/ Webprogrammierer (m/w)

Gebit Solutions

Java Profis gesucht (m/w)

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

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