Cryptography Reference
In-Depth Information
Hashfunktionen werden auch dazu benutzt, um Dateien bei der Speicherung oder Übertragung
gegen Veränderung zu schützen (Integrität z.B. von Programmdateien). Dazu wird ein Hash-
wert der Datei gebildet und als Message Digest oder digitaler Fingerabdruck ( finger-print )
gespeichert oder mit übertragen. Bei einer unveränderten Datei müssen der ursprüngliche und
ein neu berechneter Hashwert übereinstimmen.
Schließlich werden Hashfunktionen im Rahmen von digitalen Signaturen angewendet (vgl.
Kap. 1.3.4, 4.2.1, 4.4.2). Für lange Nachrichten wäre es zu aufwändig, die Nachricht m direkt
zu signieren. Stattdessen wird der Hashwert der Nachricht h(m) digital signiert. Dabei muss an
die Hashfunktion die Anforderung gestellt werden, dass es praktisch nicht möglich ist, zu
einem bekannten Hashwert h(m) eine andere Nachricht m* zu konstruieren, die den gleichen
Hashwert h(m*) = h(m) aufweist. Andernfalls würde eine digitale Signatur der Nachricht m
ebenfalls für die Nachricht m* gelten, und man könnte einer Signatur eine andere Nachricht
unterschieben. Für digitale Signaturen muss als Hashfunktion also eine Einweg-Hashfunktion
bzw. kryptographische Hashfunktion benutzt werden. Im Folgenden werden, ohne es jeweils
zu nennen, nur noch Einweg-Hashfunktionen bzw. kryptographische Hashfunktionen betrach-
tet.
Vollständigkeitshalber sei noch erwähnt, dass außerhalb der Kryptographie Hashfunktionen
eine wichtige Rolle bei der Suche in Datenbanken spielen. Dabei wird über jedes Objekt der
Datenbank ein Hashwert berechnet. Diese Hashwerte werden dann in einer kompakten Hash-
Tabelle abgelegt. Bei der Suche braucht jetzt nur der aus der Suchanfrage berechnete Hashwert
mit den Einträgen aus der Hash-Tabelle verglichen zu werden. Die Datenbanksuche wird
durch diese Verkleinerung des Suchraums über Hash-Tabellen deutlich beschleunigt.
Das Wort „Hash“ kommt von Haschee bzw. Hackfleisch (engl. hash). Eine Hashfunktion ist
einem Fleischwolf vergleichbar in dem Sinn, dass dem Hackfleisch seine ursprüngliche Form
nicht mehr anzusehen ist.
3.1.1 Arten von Hash-Funktionen
Es wurden bereits Einweg-Hashfunktionen bzw. kryptographische Hashfunktionen angespro-
chen, bei denen es praktisch nicht durchführbar ist, zu einem gegebenen Hashwert h(m) eine
andere Nachricht m* mit dem gleichen Hashwert h(m*) = h(m) zu konstruieren.
Falls zwei Nachrichten m 1 und m 2 auf einen gleichen Hashwert führen, h(m 1 ) = h(m 2 ), dann
wird dies als Kollision bezeichnet. Der gelegentlich zu findende Begriff kollisionsfrei ist un-
sinnig und irreführend. Wenn z.B. von beliebigen Nachrichten mit der Länge von 1 MBit
Hashwerte von 160 Bit gebildet werden, dann fallen offensichtlich auf jeden der 2 160 mögli-
chen Hashwerte im Mittel 2 1.000.000 / 2 160 = 2 999.840 unterschiedliche Nachrichten. Bei dieser
riesigen Zahl von Kollisionen kann von Kollisionsfreiheit keine Rede sein.
Eine gute Hashfunktion soll kollisionsresistent sein, das heißt das Finden einer Kollision soll
praktisch undurchführbar sein. Es klingt zunächst paradox, dass in dem obigen Beispiel eine
riesige Zahl von Kollisionen existiert, aber keine der im Mittel 2 999.840 -1 anderen Nachrichten
mit dem gleichen Hashwert gefunden werden kann. Die Erklärung ist: Eine gute Hashfunktion
erzeugt von den Nachrichten Hashwerte, die einem Zufallsmuster gleichen. Ein Bit Änderung
in der Nachricht ergibt einen völlig anderen Hashwert. Wenn ein Angreifer unterschiedliche
Search WWH ::




Custom Search