Was ist ein Hashwert?

Ein Hashwert ist ein Wert fester Länge (z.B. 128 Bit, 160 Bit), typischerweise codiert als hexadezimale Zeichenkette, der aus beliebigen Eingabedaten gewonnen wird. Beispiele:

Der erste Hashwert (es handelt sich um die Hashfunktion MD5 (128 Bit)) gehört zu einem Linux-Kernel, einer etwa 1,5 MiB großen Datei; der zweite zum Buchstaben a, der dritte zum Buchstaben b. Sie sehen, dass man beliebige Daten auf einen Hashwert komprimieren kann, ohne dass man diesem seine Herkunft auch nur ansatzweise ansieht (was kein Problem der begrenzten menschlichen Intuition ist; auch mathematisch ist das nicht möglich).

Die Länge der Zeichenkette gibt dabei die Häufigkeit an, mit der sich Hashwerte für unterschiedliche Eingabewerte zwangsläfig wiederholen (mit den 128 Bit/ 16 Byte von MD5 kann man ca. 3,4×1038 unterschiedliche Hashwerte darstellen!). Diese Längen sind daher so gewählt, dass ein Hashwert für praktische Zwecke die zugehörigen Eingabedaten eindeutig identifiziert (beispielsweise PGP-Schlüssel, X.509-Zertifikate und Dateien in Tauschbörsen). Insbesondere ist es faktisch unmöglich, zu einem gegebenen Hash passende Eingabedaten zu erzeugen (insbesondere dann, wenn die auch noch sinnvoll sein sollen). Aus diesen Gründen nutzt man Hashes, um Dateien zu identifizieren. Auch bei der Erzeugung digitaler Signaturen (z.B. für signierte Installationsprogramme und Treiber unter Windows oder signierte Softwarepakete unter Linux) wird ein Hashwert benötigt. Auch wenn es für den Laien unverständlich erscheinen mag: Hashwerte sind aus der Softwarewelt nicht mehr wegzudenken.

Siehe auch den Artikel über Hashes bei Wikipedia und meine Webseite zur IT-Sicherheit.

Wenn Sie nachweisen wollen, dass Sie ein bestimmtes Dokument zu einem gegebenen Zeitpunkt schon hatten, reicht es, wenn Sie nachweisen, dass Sie dessen Hashwert schon hatten, weil es Ihnen unmöglich ist, zu einem zufälligen Wert später passende Daten zu erzeugen.

Hashtypen

Es gibt unterschiedliche Hashfunktionen. Eine der verbreitetsten ist MD5 (Message Digest 5). Dieser Dienst speichert nur MD5-Hashwerte (bzw. Zeichenketten mit derselben Länge (32 Byte)). Hashfunktionen unterscheiden sich in der Länge ihrer Ausgabe und ihrer mathematischen Qualität. Je länger die Ausgabe, desto seltener kommt es zu Kollisionen (unterschiedliche Eingabedaten haben denselben Hashwert) und desto schwieriger ist es, Kollisionen bewusst zu erzeugen. Die Qualität der Hashfunktion liegt in der Gleichverteilung der Hashwerte und ihrer Angreifbarkeit. Wenn es eine bessere (:=weniger aufwendige) Methode als Ausprobieren gibt, um Eingabedaten zu einem gegebenen Hashwert zu finden, ist die Funktion angreifbar.

Für "richtige" Kryptografie ist MD5 nicht mehr gut genug, für den Anspruch dieses Angebots aber noch ohne jede Einschränkung. Leute, die in der Lage sind, MD5-Hashwerte zu kompromittieren, werden wohl kaum erfolgreich auf meinen Dienste verweisen können, um Zeitstempel zu dokumentieren. Kein normaler Mensch hat die Möglichkeit, MD5-Kollisionen zu erzeugen (schon gar nicht mit sinnvollen Dokumenten).

Wie kommt man an diesen Wert?

Es gibt für jedes verbreitete Betriebssystem Programme, die einem den Hashwert einer Datei ermitteln. siehe hier