Sicherheit symmetrischer Verschlüsselungsalgorithmen

Alles was sonst Nirgends passt
User avatar
daemotron
Administrator
Administrator
Posts: 2641
Joined: 2004-01-21 17:44
 

Sicherheit symmetrischer Verschlüsselungsalgorithmen

Post by daemotron »

Moin,

ich zerbreche mir gerade den Kopf über einer Frage bezüglich symmetrischer Verschlüsselung. Hier zunächst mal die Frage:
Gegeben sei ein beliebig großer Datenblock (der Einfachheit halber im folgenden als "Klartext" bezeichnet). Dieser Klartext wird mit einem symmetrischen Verschlüsselungsverfahren (AES, Blowfish, Twofish o. ä.) und einem Schlüssel K verschlüsselt.

Von besagtem Klartext existiert ein Hashwert, der mit einer kryptographischen Hashfunktion (z. B. SHA-256, RIPEMD-160 o. ä.) ermittelt wurde.

Frage: Wenn nun dieser Hashwert mit demselben Schlüssel K verschlüsselt wird, erhöhen sich dann für einen Angreifer die Erfolgschancen, K zu erraten, wenn ihm sowohl der verschlüsselte Datenblock als auch die verschlüsselte Checksumme in die Hände fallen? Dem Angreifer wären im Zweifel beide eingesetzten Algorithmen (Verschlüsselung, Hashfunktion) bekannt - nicht jedoch der verwendete Schlüssel K.
Bis jetzt sind mir dazu folgende Dinge eingefallen:
  • Der Hashwert hat eine bekannte Länge. Damit weiß der Angreifer schon mal, wie viele Bytes des verschlüsselten Hashwertes tatsächlich Daten und wie viele nur Padding sind.
  • Bei einem Brute Force Angriff ist es für den Angreifer verhältnismäßig einfach zu prüfen, ob der eben ausprobierte Schlüssel überhaupt in Betracht kommt - Hashwert des "entschlüsselten" Klartextes ziehen und mit dem "entschlüsselten" Hashwert vergleichen.
Der zweite genannte Punkt reduziert nicht die Komplexität (O(2^n)) für den Angreifer und damit nicht wirklich relevant - das bedeutet nur, man sollte Algorithmen mit kurzen Schlüsseln ausschließen :wink:

Mehr Sorgen macht mir der erste Punkt - hilft einem Angreifer die Kenntnis der Plaintext-Länge weiter?
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
papabaer
Userprojekt
Userprojekt
Posts: 169
Joined: 2009-05-14 17:40
Location: Halle (Saale)
 

Re: Sicherheit symmetrischer Verschlüsselungsalgorithmen

Post by papabaer »

Mal von mir ein sachter Versuch gefüllt mit gefährlichem Halbwissen:

Je mehr Informationen du hast, desto einfacher fällt die Entschlüsselung der Daten, weil du in einem etwaigen Angriff auf den Algorithmus mehr Variablen von möglichen Gleichungen mit Unbekannten füllen kannst.

In deinem Fall gibt es:

A - der verschlüsselte Klartext, bekannt
B - der verschlüsselte Hash, bekannt
K - Schlüssel, unbekannt
X - Klartext, unbekannt
Y - Hash, unbekannt

mit dem Wissen, dass es sich um einen Hash handelt führst du eine weitere Bekannte ein:

Y = f(X) - f ist bekannt

und bist damit meiner bescheidenen Meinung nach einen Schritt weiter im Knacken des Schlüssels.
User avatar
daemotron
Administrator
Administrator
Posts: 2641
Joined: 2004-01-21 17:44
 

Re: Sicherheit symmetrischer Verschlüsselungsalgorithmen

Post by daemotron »

papabaer wrote:Je mehr Informationen du hast, desto einfacher fällt die Entschlüsselung der Daten, weil du in einem etwaigen Angriff auf den Algorithmus mehr Variablen von möglichen Gleichungen mit Unbekannten füllen kannst.
Das ist halt grade die Frage. Gemäß Kerckhoffs’schen Prinzip dürfen Informationen, die das Verfahren selbst beschreiben, seine Sicherheit nicht mindern. "Erst Hash mit Funktion XY bilden, dann verschlüsseln" würde ich aber erst mal als Bestandteil des Verfahrens betrachten.
papabaer wrote:mit dem Wissen, dass es sich um einen Hash handelt führst du eine weitere Bekannte ein:

Y = f(X) - f ist bekannt

und bist damit meiner bescheidenen Meinung nach einen Schritt weiter im Knacken des Schlüssels.
Hm, ich würde die Beziehung zwischen zwei unbekannten Werten (X und Y) nicht unbedingt als Bekannte bezeichnen.

Grundsätzlich bin ich mittlerweile davon überzeugt, dass das beschriebene Verfahren keinen echten (praktikablen) Angriffsvektor öffnet. Trotzdem habe ich das Problem jetzt umgangen - allein schon das Risiko eines Implementierungsfehlers könnte zu einem erfolgreichen Angriff führen.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time