Umrechnung (Einweg) einer beliebig langen Bit-Kette in eine (kurze) von vorgegebener Länge, also eine Funktion
h: S* ® Sn
(wobei S das Alphabet der Bits 0 und 1 ist) mit folgenden Eigenschaften:
Zum folgenden siehe den Abschnitt Das Geburtstagsphänomen in der Kryptologie-Vorlesung.
Zeile 1 _ . . . Zeile i _ . . . Zeile n _ |
Durch Anfügen von Leerzeichen (durch _ symbolisiert) an einige Zeilen lassen sich aus einem n-zeiligen Text 2n verschiedene Hash-Werte herstellen (verschieden bis auf zufällige Kollisionen). |
Um mit Wahrscheinlichkeit ³ ½ einen vorgegebenen Hash-Wert der Länge l zu treffen, sind
» 0.7 × 2l » 2(l-0.5)Versuche nötig.
Resistenz gegen vollständige Suche nach einem Urbild erfordert also eine Hash-Länge von mindestens 90 Bit.
Zeile 1 _ . . . Zeile i _ . . . Zeile n _ |
Durch Anfügen von Leerzeichen an einige Zeilen lassen sich aus einem n-zeiligen Text 2n verschiedene Hash-Werte herstellen (verschieden bis auf zufällige Kollisionen). | Zeile 1 _ . . . Zeile i _ . . . Zeile n _ |
Um mit Wahrscheinlichkeit ³ ½ eine Kollision zwischen zwei Hash-Werten der Länge l zu finden, sind
» 1.2 × 2l/2 » 20.3+l/2Versuche nötig.
Kollisionsfreiheit erfordert also eine Hash-Länge von mindestens 2×90 = 180 Bit.
Die Länge der Hash-Werte wird in Bit angegeben. Wegen des »Geburtstagsphänomens« ist die Sicherheitsgrenze knapp 2× der nötigen Schlüssellänge für starke symmetrische Verfahren.
Folgende Aussagen über die Existenz von kryptographischen Basisfunktionen sind im komplexitätstheoretischen Sinne im wesentlichen äquivalent:
Die Äquivalenz von D und E ist ein Satz von Yao.
Von D nach A kommt man durch die Bitstrom-Verschlüsselung. Umgekehrt erzeugt man aus der symmetrischen Chiffre F eine Zufallsfolge xi = F(xi-1, k), wobei der Schlüssel k als interner Parameter des Zufallsgenerators geheimgehalten wird.
Der Weg von A nach B wurde schon hier gezeigt. Von B nach A (MDC = Message Digest Cryptography) kommt man z. B. nach E. Bachus so:
F(m, k) = f(m) XOR f(k).Ist nämlich der Klartext m zum Geheimtext c = F(m, k) bekannt, so ist f(k) = c XOR f(m) bekannt, die Kryptoanalyse also auf die Umkehrung von f reduziert.
Von A nach C kommt man, wie oben erwähnt, durch Cipher Block Chaining (CBC) (wobei die Kollisionsfreiheit evtl. nur mit Zusatzbedingungen erfüllbar ist).
Von C nach B braucht man nur die Hash-Funktion auf Zeichenketten der Länge des Hash-Wertes einzuschränken. (Auch hier ist eigentlich eine genauere Betrachtung nötig, wenn man die Bijektivität der Einweg-Funktion haben will.)