Sie sind auf Seite 1von 6
Hashfunktion

Hashfunktion

Eine Hashfunktion (auch Streuwertfunktion) ist eine Abbildung, die eine

große Eingabemenge (die Schlüssel) auf eine kleinere Zielmenge (die

Hashwerte) abbildet. Eine Hashfunktion ist daher im Allgemeinen nicht

injektiv. Die Eingabemenge kann Elemente unterschiedlicher Längen

enthalten, die Elemente der Zielmenge haben dagegen meist eine feste

Länge.

Der Name „Hashfunktion“ stammt vom englischen Verb to hash, das sich als

„zerhacken“ übersetzen lässt. Der deutsche Name lautet Streuwertfunktion.

Beide Namen deuten darauf hin, dass diese Funktionen normalerweise

darauf angelegt sind, die Daten zu „verstreuen“ und zu „zerhacken“ (siehe

auch Zerhacker in der Funktechnik). Speziell in der Informatik verwendet

man auch den Begriff Hash-Algorithmus (englisch hash algorithm), da

Hashfunktionen oftmals

mathematischen Funktion spezifiziert werden.

einer

in

Form

eines

statt

Eine Hashfunktion, die Namen auf Ganzzahlen abbildet. Für die Namen „John Smith“ und „Sandra Dee“
Eine Hashfunktion, die Namen auf
Ganzzahlen abbildet. Für die Namen
„John Smith“ und „Sandra Dee“ gibt es
eine Kollision.

Die Hash- oder Streuwerte sind meist skalare Werte aus einer begrenzten Teilmenge der natürlichen Zahlen. Eine „gute“

Hashfunktion liefert dabei für die (erwarteten) Eingabedaten Werte, sodass zwei unterschiedliche Eingaben auch zu

unterschiedlichen Ausgabewerten führen. Ein Hashwert wird deshalb auch als englisch Fingerprint bezeichnet, da er eine nahezu

eindeutige Kennzeichnung einer größeren Datenmenge darstellt, so wie ein Fingerabdruck einen Menschen nahezu eindeutig

identifiziert.

Eine sog. Kollision tritt dann auf, wenn unterschiedlichen Eingabedaten derselbe Hashwert zugeordnet wird. Da die Menge der

möglichen Hashwerte meist kleiner ist als die der möglichen Eingaben, sind solche Kollisionen dann prinzipiell unvermeidlich,

weshalb es Verfahren zur Kollisionserkennung geben muss. Eine gute Hashfunktion zeichnet sich dadurch aus, dass sie für die

Eingaben, für die sie entworfen wurde, möglichst wenige Kollisionen erzeugt.

In der Datenspeicherung kann ein Hashwert verwendet werden, um die Speicherstelle der angefragten Daten zu berechnen (z. B.

Hashtabelle). Bei Prüfsummen verwendet man Hashwerte, um Übertragungsfehler zu erkennen. In der Kryptologie werden

spezielle kryptologische Hashfunktionen verwendet, bei denen zusätzlich gefordert wird, dass es praktisch unmöglich ist,

Kollisionen absichtlich zu finden.

Für bekannte und beschränkte Eingabemengen können auch perfekte (im Sinne von kollisionsfreie) Hashfunktionen gefunden

werden.

Inhaltsverzeichnis

Erklärung

Definition einer Hashfunktion

Kriterien für eine gute Hashfunktion

Anwendungen Hashfunktionen in Datenbanken

Prüfsummen

Beispiele

Kryptologie

Hash-Algorithmen Bekannte Gitterbasierte Prüfsummen Kryptologische Hashfunktionen Nicht-kryptologische Hashfunktionen Passwort-Hashfunktionen

Literatur

Weblinks

Einzelnachweise

Erklärung

Hashfunktionen werden typischerweise angewendet, um:

einem komplexen Objekt einen Speicherort zuzuweisen Beispiel: „Max Mustermann“ wird im Ordner „m“ abgelegt – dem ersten Buchstaben des Nachnamens.Hashfunktionen werden typischerweise angewendet, um: eine (kurze) Prüfsumme zu dem Objekt zu berechnen

eine (kurze) Prüfsumme zu dem Objekt zu berechnen Beispiel: Prüfsumme einer ISBN , Zyklische Redundanzprüfung zur Erkennung Prüfsumme zu dem Objekt zu berechnen Beispiel: Prüfsumme einer ISBN, Zyklische Redundanzprüfung zur Erkennung von Übertragungsfehlern von Dateien

einen Inhalt nahezu eindeutig (aber immer noch „kurz“) zu identifizieren, ohne etwas über den Inhalt zu verraten Beispiel: Anwendungen in der Kryptographie . Kryptographie.

Je nach Anwendung hat man unterschiedliche Anforderungen an die Funktion. Gruppiert man beispielsweise eine Adresskartei

nach dem ersten Buchstaben des Nachnamens, spart man sich offensichtlich bei der Suche viel Zeit – man braucht nur einen von

26 Teilen zu durchsuchen. Diese „Hashfunktion“ ist für den Menschen sehr praktisch (da sie sehr einfach zu „berechnen“ ist),

jedoch würde ein Computerprogramm andere Verfahren verwenden, um ein Adressbuch zu organisieren. Für das Programm ist es

nämlich wichtig, möglichst wenige Kollisionen zu haben; es gibt aber offenbar viele Namen, die mit demselben

Anfangsbuchstaben beginnen, und sie kommen ungleichmäßig oft vor. Legt man also beispielsweise Personalakten nach diesem

Prinzip ab, so hat man oftmals viele Akten im Ordner mit dem Buchstaben „S“, während der Ordner „Q“ leer bleibt.

Die einstellige Quersumme ist eine einfache Hashfunktion. Sie ordnet einer beliebigen Zahl eine einstellige Zahl zu, so wird

beispielsweise auf abgebildet. Als Prüfsumme ist diese Quersumme aber nicht gut geeignet, da die Vertauschung

dieselbe

Quersumme . Prüfsummen wie bei der ISBN eines Buches oder die CRC-32-Prüfsumme einer Datei (z. B. beim

Prüfen einer aus dem Internet heruntergeladenen Datei auf Übertragungsfehler) eignen sich besser, derartige Fehler zu erkennen.

von Ziffern – ein typischer Fall beim Abtippen von langen Zahlen – nicht erkannt wird. So hat auch die Zahl

langen Zahlen – nicht erkannt wird. So hat auch die Zahl Bei der Identifikation von Inhalten
langen Zahlen – nicht erkannt wird. So hat auch die Zahl Bei der Identifikation von Inhalten
langen Zahlen – nicht erkannt wird. So hat auch die Zahl Bei der Identifikation von Inhalten
langen Zahlen – nicht erkannt wird. So hat auch die Zahl Bei der Identifikation von Inhalten
langen Zahlen – nicht erkannt wird. So hat auch die Zahl Bei der Identifikation von Inhalten

Bei der Identifikation von Inhalten mit sogenannten kryptologischen Hashfunktionen ist es nicht nur wichtig, dass sich der

Hashwert bei jeder kleinen Modifikation scheinbar zufällig (d. h. nicht etwa mit nur wenigen Bits) ändert (hierfür würde eine

normale Prüfsumme reichen) und dass es nicht einfach ist, einen zweiten Inhalt mit demselben Hashwert zu erzeugen (um einen

Komplettaustausch des Inhaltes zu vermeiden). Ebenso wichtig ist es, dass der Inhalt nicht aus dem Hashwert rekonstruiert

werden kann. Hat man zwei Dokumente ausgetauscht und möchte beispielsweise am Telefon die erfolgreiche Übertragung

überprüfen, so reicht es, am Telefon die Korrektheit des Hashwertes zu überprüfen. Wird das Gespräch abgehört, so wird dabei

nichts über den Inhalt der Nachricht verraten, selbst falls Teile des Inhalts bereits bekannt sein sollten.

Definition einer Hashfunktion

Eine Abbildung

Die Menge

ist die Menge der möglichen Hashwerte. Typischerweise wird die Menge der Hashwerte als Anfangsstück der natürlichen Zahlen

gewählt:

als Anfangsstück der natürlichen Zahlen gewählt: heißt Hashfunktion , wenn gilt. Insbesondere liefert eine

heißt Hashfunktion, wenn

natürlichen Zahlen gewählt: heißt Hashfunktion , wenn gilt. Insbesondere liefert eine Hashtabelle der Größe .

gilt. Insbesondere liefert

heißt Hashfunktion , wenn gilt. Insbesondere liefert eine Hashtabelle der Größe . repräsentiert die Daten,

eine Hashtabelle der Größe

.
.
gilt. Insbesondere liefert eine Hashtabelle der Größe . repräsentiert die Daten, die gehasht werden sollen ,

repräsentiert die Daten, die gehasht werden sollen, und wird auch die Menge der Schlüssel genannt; die Menge

. Diese Menge heißt dann auch Adressraum.

die Menge . Diese Menge heißt dann auch Adressraum . Typischerweise wird in der Praxis immer

Typischerweise wird in der Praxis immer nur eine kleine Teilmenge der Schlüssel

in der Praxis immer nur eine kleine Teilmenge der Schlüssel mit sind dann die tatsächlich genutzten

mit

Praxis immer nur eine kleine Teilmenge der Schlüssel mit sind dann die tatsächlich genutzten Hashwerte. Das
sind dann die tatsächlich genutzten Hashwerte. Das Verhältnis liefert den Belegungsfaktor.
sind dann die tatsächlich genutzten Hashwerte.
Das Verhältnis
liefert den Belegungsfaktor.

abgebildet. Die Menge

Der Fall Kollisionen erzeugt.
Der Fall
Kollisionen erzeugt.

wird als Kollision bezeichnet. Eine injektive Hashfunktion heißt perfekt, u. a. weil sie keine

Kriterien für eine gute Hashfunktion

Geringe Wahrscheinlichkeit von Kollisionen der Hashwerte für den Eingabewertebereich, also möglichst eine Gleichverteilung der Hashwerte auf die erwarteten Eingabewerte. Gleichverteilung der Hashwerte auf die erwarteten Eingabewerte.

Der Speicherbedarf des Hashwertes soll deutlich kleiner sein als jener des Schlüssels (Eingabewert).der Hashwerte auf die erwarteten Eingabewerte. Chaos oder Lawineneffekt – Die Hashfunktion soll eine

Chaos oder Lawineneffekt – Die Hashfunktion soll eine gute Diffusion besitzen; ähnliche Quellelemente (Eingabewerte) Chaos oder Lawineneffekt – Die Hashfunktion soll eine gute Diffusion besitzen; ähnliche Quellelemente (Eingabewerte) sollen zu völlig verschiedenen Hashwerten führen. Im Idealfall verändert das Umkippen eines Bits in der Eingabe durchschnittlich die Hälfte aller Bits im resultierenden Hashwert.

Konfusion – Vom Hashwert sollen keine Rückschlüsse auf den Eingabewert gemacht werden können. Konfusion – Vom Hashwert sollen keine Rückschlüsse auf den Eingabewert gemacht werden können.

Unumkehrbarkeit – Es soll kein praktisches Verfahren möglich sein, das aus einem Hashwert den Eingabewert bestimmt.Rückschlüsse auf den Eingabewert gemacht werden können. Surjektivität – Kein Ergebniswert (Hashwert) soll

Surjektivität – Kein Ergebniswert (Hashwert) soll unmöglich sein, jedes Ergebnis (jeder Hashwert im definierten Surjektivität – Kein Ergebniswert (Hashwert) soll unmöglich sein, jedes Ergebnis (jeder Hashwert im definierten Wertebereich) soll tatsächlich vorkommen können.

Effizienz – Die Funktion muss schnell berechenbar sein, ohne großen Speicherverbrauch auskommen und sollte die Effizienz – Die Funktion muss schnell berechenbar sein, ohne großen Speicherverbrauch auskommen und sollte die Quelldaten (Eingabewerte) möglichst nur einmal lesen müssen.

ordnungs erhaltend – Falls die Hashfunktion einen sortierten Zugriff in einer Hashtabelle erlauben soll. ordnungserhaltend – Falls die Hashfunktion einen sortierten Zugriff in einer Hashtabelle erlauben soll.

Je nach Anwendung spielen diese Kriterien eine unterschiedliche Rolle. So sind Chaos und Ordnungserhaltung offenbar im

Widerspruch zueinander. In der Kryptographie ist letztere tabu, für bestimmte Datenbankanwendungen ist sie jedoch erwünscht.

Anwendungen

Hashfunktionen haben verschiedene Anwendungsfelder. Dabei lassen sich drei große Gebiete unterteilen:

1. Datenbanken

2. Prüfsummen

3. Kryptologie

Hashfunktionen in Datenbanken

Datenbankmanagementsysteme verwenden Hashfunktionen, um Daten in großen Datenbeständen mittels Hashtabellen zu suchen.

In diesem Fall spricht man von einem Datenbankindex.

Auch für vergleichsweise kleine Datenmengen werden Hashfunktionen benutzt, beispielsweise in Kompressionsalgorithmen wie

LZW.

Prüfsummen

Hauptartikel: Prüfsumme

Prüfsummen sind ein einfaches Mittel, um die Plausibilität zur Erkennung von Veränderungen an übertragenen Daten zu erhöhen.

Nur die Teilmenge der Datenvarianten, die bei Berechnung der Prüfsumme das gleiche Ergebnis wie das der Original-Daten

erzeugen, kann noch als Verfälschung unerkannt bleiben. Mit mehreren verschiedenen passend erzeugten Prüfsummen kann die

Wahrscheinlichkeit einer Kollision stark reduziert werden.

Ein Fehler ist immer feststellbar, wenn die berechnete Prüfsumme der empfangenen Daten sich von der übertragenen Prüfsumme,

also der der Originaldaten, unterscheidet. Falls ein Fehler festgestellt wird, kann die Verfälschung auch ausschließlich in der

Prüfsumme enthalten sein. Die Eignung verschiedener Hashfunktionen zur Prüfsummenberechnung hängt von deren

Kollisionswahrscheinlichkeit ab.

Wenn die Prüfsumme vor gezielten Manipulationen der Daten schützen soll, wird eine kryptologische Hashfunktion verwendet,

da hier nur mit sehr hohem Rechenaufwand eine Kollision gefunden werden kann.

Beispiele

Hashwerte haben unter anderem bei P2P-Anwendungen aus verschiedenen Gründen eine wichtige Aufgabe. Die Hashwerte

werden hier sowohl zum Suchen und Identifizieren von Dateien als auch zum Erkennen und Prüfen von übertragenen

Dateifragmenten verwendet. So lassen sich große Dateien zuverlässig in kleinen Segmenten austauschen.

Zur Anwendung in P2P-Netzen kommen vor allem gestufte Hashfunktionen, bei denen für kleinere Teile einer Datei der

Hashwert und dann aus diesen Werten ein Gesamtwert berechnet wird. Bei den Netzwerken Gnutella G2, Shareaza und Direct

Connect sind dies zum Beispiel Tiger-Tree-Hash-Funktionen.

Das Auffinden von Dateien anhand des Hashwertes ihres Inhaltes ist zumindest in den USA als Softwarepatent geschützt. Der

Inhaber verfolgt Programme und Firmen, die auf Basis dieses Systems die Suche von Dateien ermöglichen, einschließlich

Firmen, die im Auftrag von RIAA oder MPAA Anbieter von unlizenzierten Inhalten ermitteln wollen.

Bei der Programmierung von Internet-Anwendungen werden Hashfunktionen zum Erzeugen von Session-IDs genutzt, indem

unter Verwendung von wechselnden Zustandswerten (wie Zeit, IP-Adresse) ein Hashwert berechnet wird.

Kryptologie

Hauptartikel: Kryptologische Hashfunktion

Kryptologische Hashfunktionen besitzen spezielle Eigenschaften, in der Praxis sind es kollisionsresistente Einwegfunktionen. Sie

werden verwendet, um Nachrichten zu signieren bzw. die Integrität von Daten sicherzustellen. Zum Hashen von Passwörtern, mit

dem Ziel, sie sicher zu speichern oder daraus Schlüssel zu gewinnen, werden spezielle Hashfunktionen verwendet. Diese sind

besonders aufwändig zu berechnen, um Brute-Force-Angriffe zu erschweren.

Hash-Algorithmen

Bekannte

Gitterbasierte

Schnelle Fourier-Transformation (FFT Hashfunktion [ 1 ] ) Schnelle Fourier-Transformation (FFT Hashfunktion [1] )

LASH [ 2 ] LASH [2]

Prüfsummen

Kryptologische Hashfunktionen

MD2 , MD4 , MD5 MD2, MD4, MD5

Nicht-kryptologische Hashfunktionen

Hashfunktion

Geschwindigkeit

Entwickler

Jahr

xxHash

5,4

GB/s

Yann Collet

2012

MurmurHash 3a

2,7

GB/s

Austin Appleby

2008

SBox

1,4

GB/s

Bret Mulvey

2007?

Lookup3

1,2

GB/s

Bob Jenkins

2006

CityHash64

1,05 GB/s

Geoff Pike & Jyrki Alakuijala

2011

FNV

0,55 GB/s

Fowler, Noll, Vo

1991

SipHash/HighwayHash [3]

 

Jan Wassenberg & Jyrki Alakuijala

2016 / 2012

Passwort-Hashfunktionen

Literatur

Thomas H. Cormen, Charles E. Leiserson , Ronald L. Rivest & Clifford Stein: Algorithmen. Eine Einführung . 2. Charles E. Leiserson, Ronald L. Rivest & Clifford Stein: Algorithmen. Eine Einführung. 2. Auflage. Oldenbourg, München/Wien 2007, ISBN 978-3-486-58262-8, S. 221 ff.

CHI, Lianhua; ZHU, Xingquan: Hashing Techniques: A Survey and Taxonomy . In: ACM Computing Surveys (CSUR) . Band 50, Hashing Techniques: A Survey and Taxonomy. In: ACM Computing Surveys (CSUR). Band 50, Nr. 1, April 2017, 11, doi:10.1145/3047307 (https://doi.org/10.1145/3047307).

Weblinks

(https://doi.org/10.1145/3047307) . Weblinks Wiktionary: Hashfunktion – Bedeutungserklärungen,

Wiktionary: Hashfunktion – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Online Generator (http://multidec.web-lab.at/hash.php) für Hashberechnungen (md, sha, ripemd, whirlpool, tiger, snefru, Online Generator (http://multidec.web-lab.at/hash.php) für Hashberechnungen (md, sha, ripemd, whirlpool, tiger, snefru, gost, adler, cc, salsa, haval)

Einzelnachweise

1. C. P. Schnorr, Serge Vaudenay: Parallel FFT-hashing. In: Fast Software Encryption, pp 149–156, 1993

2. K. Bentahar, D. Page, J. H. Silverman, M.-J. O. Saarinen, N.P. Smart: LASH. 2nd NIST Cryptographic Hash Workshop, 2006

Workshop, 2006 3. https://github.com/google/highwayhash Abgerufen von „

Diese Seite wurde zuletzt am 28. April 2019 um 21:57 Uhr bearbeitet.

Der Text ist unter der Lizenz „Creative Commons Attribution/Share Alike“ verfügbar; Informationen zu den Urhebern und zum Lizenzstatus eingebundener Mediendateien (etwa Bilder oder Videos) können im Regelfall durch Anklicken dieser abgerufen werden. Möglicherweise unterliegen die Inhalte jeweils zusätzlichen Bedingungen. Durch die Nutzung dieser Website erklären Sie sich mit den Nutzungsbedingungen und der Datenschutzrichtlinie einverstanden. Wikipedia® ist eine eingetragene Marke der Wikimedia Foundation Inc.