Die erstaunliche Macht der Hash-Funktionen

Seite 2: Die erstaunliche Macht der Hash-Funktionen

Inhaltsverzeichnis

Die meisten Hash-Funktionen, die heute benutzt werden, gehen auf eine Technik zurück, die der MIT-Professor Ron Rivest in den Achtzigern entwickelt hat. (Rivest ist als das "R" im RSA-Verschlüsselungsalgorithmus bekannt geworden, einem Public-Key-Verfahren, das in fast jedem Webbrowser steckt.) Damals arbeitete Rivest zusammen mit anderen Mathematikern an den Details grundlegender kryptografischer Verfahren, die wir heute für selbstverständlich halten. Die Hash-Funktionen wurden als eine Art kryptografisches Kompressionssystem erdacht - ein Weg, eine große Datei zu nehmen und diese dann auf einen kurzen String aus Buchstaben und Zahlen herunterzurechnen.

Die Fingerabdrücke sollen ein Ersatz für die Dateien selbst sein. Anstatt die gesamte Datei digital zu signieren, ließe sich ja auch der Hash-Wert signieren, meinten Rivest und andere Forscher. Public-Key-Kryptografie benötigt sehr viel Rechenleistung. Dank der Hash-Funktionen kann eine extrem große Datei nun fast so schnell signiert werden wie eine kurze.

Eines der grundlegendsten Dinge, die man mit einer Hash-Funktion machen kann, ist es, herauszufinden, ob sich eine Datei geändert hat - man muss nur den Hash berechnen und ihn aufschreiben. Später kann man ihn dann erneut berechnen - hat er sich nicht verändert, dann ist die Wahrscheinlichkeit sehr groß, dass sich auch die Datei nicht verändert hat.

Ein Beispiel: Sie benutzen eine Buchhaltungssoftware, um die Finanzen ihrer kleinen Firma zu managen und wollen für ein paar Tage in den Urlaub. Andere Leute müssen ihren Computer benutzen, sie wollen aber nicht, dass die Finanzdaten verändert werden. Eine einfache Methode wäre es, den kryptografischen Hash der Datei vor dem Verlassen des Büros auf einen Zettel niederzuschreiben. Zurück aus dem Urlaub berechnen sie den Hash einfach neu. Wenn die beiden Werte sich unterscheiden, wissen sie, dass jemand an den Daten herumgepfuscht hat.

Natürlich muss es nicht bei einer einzelnen Datei bleiben. Sie könnten die Hash-Werte jeder einzelnen Datei auf ihrem Rechner generieren und diese dann in eine neue Datei schreiben, beispielsweise "hashes.txt". Anschließend könnten sie den Hash von "hashes.txt" berechnen und diesen wieder aufschreiben. Nach der Rückkehr wiederholen sie den Prozess und können feststellen, ob irgendeine Datei auf ihrem Rechner verändert wurde. (Welche, finden Sie so nicht heraus. Aber das ist ein anderes Problem.)

Die Idee, den Hash-Wert eines Hash-Wertes zu berechnen, ist die Basis eines Anti-Hacker-Systems namens Tripwire, einem Intrusion Dectection System (IDS), das der Informatik-Professor Gene Spafford und sein Master-Student Gene Kim in den frühen Neunzigern entwickelt haben. (Spafford und ich haben zusammen fünf Bücher über Informatik verfasst.) Heute nutzen viele verschiedene Programme den Ansatz von Tripwire, um die Integrität von Computerdateien und Datenbanken zu überprüfen.

Hash-Werte von Hash-Werten zu nehmen, ist auch die Grundlage eines sicheren Zeitstempel-Dienstes, den Stuart Haber und Scott Stornetta 1990 bei Bellcore entwickelt haben. Der Dienst namens "Surety" macht es möglich, einen kryptografisch sicheren und nicht fälschbaren Beweis zu erstellen, dass ein Dokument, eine Fotografie oder eine andere Art von Datei zu einer bestimmten Zeit an einem bestimmten Datum existierte und seitdem nicht verändert wurde.

Die Surety-Technik berechnet einen so genannten "Hash-Baum", der auf den Hash-Werten aller Dokumente beruht, die einen Zeitstempel bekommen sollen. Die Wurzel dieses Baumes wird dann an einem öffentlichen Ort publiziert, beispielsweise auf den Kleinanzeigenseiten der New York Times. Man kann dann beweisen, dass das entsprechende Dokument an jenem Tag existierte, weil der Fingerabdruck des Dokumentes notwendig war, um den Fingerabdruck des Fingerabdrucks zu generieren, der dann in der Zeitung erschien.