Muss man einen Secure Hash Algorithm manuell eingeben?

... komplette Frage anzeigen

1 Antwort

Die Frage macht so keinen Sinn. Ich fange mal mit den Grundlagen an. Eine Hashfunktion ordnet jeder Bitfolge beliebiger Länge eine Bitfolge fester Länge (den so genannten Hashwert) zu.

Im Bereich der Kryptographie unterscheidet man verschiedene Eigenschaften und verschiedene Angriffsmodelle mit klar definierten Eigenschaften.

Verschlüsselungsverfahren (z. B. Blockchiffren) sollen pseudozufällig sein. Insbesondere ist eine Blockchiffre eine pseudozufällige Permutation, das heißt der Ausgaberaum ist der Eingaberaum, pseudozufällig permutiert. Pseudozufällig bedeutet, dass man keinen so genannten "distinguisher" (etwa "Unterscheider") konstruieren kann, der ohne Kenntnis über den verwendeten Schlüssels, aber mit der Möglichkeit, Klartexte durch die Permutation jagen ("verschlüsseln") zu können, die Permutation nicht mit mehr als vernachlässigbar kleiner Wahrscheinlichkeit (widerum vernachlässigbar im Sicherheitsparameter) von einer echt zufällig gewählten Permutation unterscheiden kann. Man bezeichnet das als so genanntes "distinguishing experiment" und es ist im Prinzip die schärfste Sicherheitsforderung, die man an eine Blockchiffre stellen kann.

Kryptographische Hashfunktionen hingegen haben ein anderes Ziel. Sie sollen kollisionsresistent sein. Zu diesem Zweck geht man in der Regel von einer schlüsselbehafteten Hashfunktion aus, weil der Angreifer sonst nur ein Paar Nachrichten kennen muss, das den selben Hashwert erzeugt und dann sofort "gewonnen" hat. Ohne Randomisierung kann man keine Wahrscheinlichkeit definieren. Also konstruiert man aus der Hashfunktion zunächst in geeigneter Weise eine "keyed hash function". Dann wählt man widerum einen Schlüssel zufällig, hält ihn geheim, gibt aber einem Angreifer die Möglichkeit, zu beliebigen Nachrichten Hashwerte berechnen zu lassen. Die Hashfunktion ist sicher, wenn es dem Angreifer bei zufällig gewähltem Schlüssel nicht möglich ist, mit mehr als vernachlässigbarer Wahrscheinlichkeit ein paar Nachrichten zu finden, die den gleichen Hashwert erzeugen. Man bezeichnet die Hashfunktion dann als kollisionsresistent. Sichere MACs (diese sind Hashfunktionen sehr ähnlich, siehe unten) sind sicher gegen einen so genannten "adaptive chosen message attack". Hier kann ein Angreifer, der selbst widerum keine Kenntnis über den verwendeten Schlüssel hat, Nachrichten MAC-en lassen und den MAC-Wert erhalten. Ziel des Angreifers ist es, zwei Nachrichten zu generieren, die den selben MAC-Wert aufweisen. Gelingt dem Angreifer dies, so ist das MAC-Verfahren gebrochen.

Wichtig ist, zu erkennen, dass dass die Eigenschaften Pseudozufälligkeit ("kann man nicht effizient von Zufall unterscheiden") und Kollisionsresistenz ("man kann nicht effizient zwei Eingaben finden, die die selbe Ausgabe erzeugen") nichts, aber auch gar nichts miteinander zu tun haben. Eine Hashfunktion "verschlüsselt" somit nicht und wurde auch nicht dafür designed. Eine Blockchiffre muss Vertraulichkeit gewährleisten, eine Hashfunktion hingegen nicht. Aus diesem Grund sollte man bei der Kombination von MAC-Verfahren (im Grunde gleich "keyed hash") und Verschlüsselungsverfahren den MAC auch immer über den Ciphertext berechnen (Encrypt-then-MAC) und nicht über den Klartext (MAC-and-Encrypt). Eine Hashfunktion und auch eine MAC muss nur kollisionsresistent sein, sonst nichts. Das heißt sie muss keinerlei "Geheimhaltung" oder "Vertraulichkeit" gewährleisten. Deswegen immer nur Inhalte MAC-en, die nicht geheim sind, d. h. nicht den Klartext MAC-en, sondern das Chiffrat MAC-en. Dann kann die MAC an Information "preisgeben", was sie möchte. Das Chiffrat kennt der Angreifer ja ohnehin bereits.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Crysali
14.01.2016, 18:55

Vielen Dank für die ausführliche Antwort!

Verstehe ich das richtig: Wenn ich etwas eingebe in einem Feld, das mit SHA1 gekennzeichnet ist, dann wird, was ich in das Feld eingebe, zufällig verschlüsselt, um Kollisionen zu verhindern.

Sozusagen wie eine Postmarke an einem Brief. Kein anderer Brief kann diese Postmarke dann haben. Falls jedoch jemand Böswilliges diese Postmarke kennt, dann kann er Sachen in den Brief hineinlegen.

Wenn der SHA1 immer ("") wäre, wäre es dann immer dieselbe Verschlüsselung oder findet dann die pseudozufällige Permutation statt, die einen Bereich aufspannt, um zu vermeiden, dass ein Angreifer zufällig oder durch extremes Versuchen den Eingabebereich herausfindet ? Falls letzteres stimmt wäre es doch egal, was und wie lange etwas ist, das im Eingabebereich steht, oder nicht ?

1

Was möchtest Du wissen?