www.wikidata.de-de.nina.az
Eine Hashfunktion oder Streuwertfunktion ist eine Abbildung die eine grosse Eingabemenge die Schlussel auf eine kleinere Zielmenge die Hashwerte abbildet Eine Hashfunktion ist daher im Allgemeinen nicht injektiv Die Eingabemenge kann Elemente unterschiedlicher Langen enthalten die Elemente der Zielmenge haben dagegen meist eine feste Lange Eine Hashfunktion die Namen auf Ganzzahlen abbildet Fur die Namen John Smith und Sandra Dee gibt es eine Kollision Der Name Hashfunktion stammt vom englischen Verb to hash das sich mit zerhacken ubersetzen lasst 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 in Form eines Algorithmus spezifiziert werden der die Berechnung der mathematischen Funktion beschreibt Die Hash oder Streuwerte sind meist skalare Werte aus einer begrenzten Teilmenge der naturlichen Zahlen Eine gute Hashfunktion liefert dabei fur die Eingabedaten Werte derart dass zwei unterschiedliche Eingaben auch zu unterschiedlichen Ausgabewerten fuhren Eine Kollision tritt dann auf wenn unterschiedlichen Eingabedaten derselbe Hashwert zugeordnet wird Da die Menge der moglichen Hashwerte meist kleiner ist als die der moglichen Eingaben sind solche Kollisionen dann prinzipiell unvermeidlich weshalb es Verfahren zur Kollisionserkennung geben muss Eine gute Hashfunktion zeichnet sich dadurch aus dass sie fur die Eingaben fur die sie entworfen wurde moglichst wenige Kollisionen erzeugt Fur bekannte und beschrankte Eingabemengen konnen auch perfekte kollisionsfreie Hashfunktionen gefunden werden In der Datenspeicherung kann ein Hashwert verwendet werden um die Speicherstelle der angefragten Daten zu berechnen z B in einer Hashtabelle Bei Prufsummen verwendet man Hashwerte um Ubertragungsfehler zu erkennen Ein Hashwert wird deshalb auch als englisch Fingerprint bezeichnet da er eine nahezu eindeutige Kennzeichnung einer grosseren Datenmenge darstellt so wie ein Fingerabdruck einen Menschen nahezu eindeutig identifiziert In der Kryptologie werden spezielle kryptographische Hashfunktionen verwendet bei denen zusatzlich gefordert wird dass es praktisch unmoglich ist Kollisionen absichtlich zu finden Inhaltsverzeichnis 1 Definition 2 Kriterien 3 Anwendungen 3 1 Datenbanken 3 2 Prufsummen 3 2 1 Beispiele 3 3 Kryptologie 4 Hash Algorithmen 4 1 Hashing durch Division 4 2 Hashing durch Multiplikation 4 3 Bekannte Hashfunktionen 4 3 1 Gitterbasierte Hashfunktionen 4 3 2 Prufsummen 4 3 3 Kryptographische Hashfunktionen 4 3 4 Nicht kryptographische Hashfunktionen 4 3 5 Passwort Hashfunktionen 5 Literatur 6 Weblinks 7 EinzelnachweiseDefinition BearbeitenEine Abbildung h K S displaystyle h colon K rightarrow S nbsp heisst Hashfunktion wenn K S displaystyle K geq S nbsp gilt Insbesondere liefert h displaystyle h nbsp eine Hashtabelle der Grosse S displaystyle S nbsp Die Menge K displaystyle K nbsp reprasentiert die Daten die gehasht werden sollen und wird auch die Menge der Schlussel genannt die Menge S displaystyle S nbsp ist die Menge der moglichen Hashwerte Typischerweise wird die Menge der Hashwerte als Anfangsstuck der naturlichen Zahlen gewahlt S 0 m 1 displaystyle S subseteq left 0 dotsc m 1 right nbsp Diese Menge heisst dann auch Adressraum Typischerweise wird in der Praxis immer nur eine kleine Teilmenge der Schlussel K K displaystyle K subseteq K nbsp mit h displaystyle h nbsp abgebildet Die Menge S h k k K displaystyle S h k k in K nbsp sind dann die tatsachlich genutzten Hashwerte Das Verhaltnis b S S displaystyle beta frac left S right left S right nbsp liefert den Belegungsfaktor Der Fall k k h k h k displaystyle k not k land h k h k nbsp wird als Kollision bezeichnet Eine injektive Hashfunktion heisst perfekt u a weil sie keine Kollisionen erzeugt Kriterien BearbeitenGeringe Wahrscheinlichkeit von Kollisionen der Hashwerte fur den Eingabewertebereich also moglichst eine Gleichverteilung der Hashwerte auf die erwarteten Eingabewerte Surjektivitat Kein Ergebniswert Hashwert soll unmoglich sein jedes Ergebnis jeder Hashwert im definierten Wertebereich soll tatsachlich vorkommen konnen Effizienz Die Funktion muss schnell berechenbar sein ohne grossen Speicherverbrauch auskommen der Speicherbedarf des Hashwertes soll deutlich kleiner sein als jener des Schlussels Eingabewertes und sollte die Quelldaten Eingabewerte moglichst nur einmal lesen mussen Folgende Kriterien spielen je nach Anwendung eine unterschiedliche Rolle falls die Hashfunktion einen sortierten Zugriff in der Hashtabelle einer Datenbank erlauben soll ordnungserhaltend bei kryptologischen Hashfunktionen Chaos oder Lawineneffekt Die Hashfunktion soll eine gute Diffusion besitzen ahnliche Quellelemente Eingabewerte sollen zu vollig verschiedenen Hashwerten fuhren Im Idealfall verandert das Umkippen eines Bits in der Eingabe durchschnittlich die Halfte aller Bits im resultierenden Hashwert bei kryptologischen Hashfunktionen Konfusion Vom Hashwert sollen keine Ruckschlusse auf den Eingabewert gemacht werden konnen bei kryptologischen Hashfunktionen Unumkehrbarkeit Es soll kein praktisches Verfahren moglich sein das aus einem Hashwert den Eingabewert bestimmt Anwendungen BearbeitenHashfunktionen werden typischerweise angewendet um einem komplexen Objekt eine Speicheradresse zuzuweisen Zum Beispiel konnte Max Mustermann im Ordner M abgelegt werden dem ersten Buchstaben des Nachnamens eine kurze Prufsumme zu dem Objekt zu berechnen Beispiel sind die Prufsumme einer ISBN und die zyklische Redundanzprufung zur Erkennung von Ubertragungsfehlern von Dateien einen Inhalt nahezu eindeutig aber mit wenig Speicherplatz zu identifizieren ohne etwas uber den Inhalt zu verraten zum Beispiel in der Kryptographie Je nach Anwendung hat man unterschiedliche Anforderungen an die Funktion Gruppiert man beispielsweise eine Adresskartei nach dem ersten Buchstaben des Nachnamens so spart man sich offensichtlich bei der Suche viel Zeit denn man braucht nur einen von 26 Teilen zu durchsuchen Diese Hashfunktion ist fur den Menschen sehr praktisch da sie sehr einfach zu berechnen ist jedoch wurde ein Computerprogramm andere Verfahren verwenden um ein Adressbuch zu organisieren Fur das Programm ist es namlich wichtig moglichst wenige Kollisionen zu haben Es gibt aber offenbar viele Namen die mit demselben Anfangsbuchstaben beginnen und sie kommen ungleichmassig oft vor Legt man also beispielsweise Personalakten nach diesem Prinzip ab so hat man oftmals viele Akten im Ordner mit dem Buchstaben S wahrend der Ordner Q leer bleibt Die einstellige Quersumme ist eine sehr einfache Hashfunktion Sie ordnet einer beliebigen Zahl eine einstellige Zahl zu so wird beispielsweise 25 auf 2 5 7 abgebildet Als Prufsumme ist diese Quersumme aber nicht gut geeignet da die Vertauschung von Ziffern ein typischer Fall beim Abtippen von langen Zahlen nicht erkannt wird So hat auch die Zahl 52 dieselbe Quersumme 5 2 7 Prufsummen wie bei der ISBN eines Buches oder die CRC 32 Prufsumme einer Datei z B beim Prufen einer aus dem Internet heruntergeladenen Datei auf Ubertragungsfehler eignen sich besser derartige Fehler zu erkennen Bei der Identifikation von Inhalten mit kryptographischen Hashfunktionen ist es nicht nur wichtig dass sich der gesamte Hashwert mit allen Bits bei jeder kleinen Modifikation scheinbar zufallig andert und dass es fast unmoglich 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 mochte beispielsweise am Telefon die erfolgreiche Ubertragung uberprufen so reicht es am Telefon die Korrektheit des Hashwertes zu uberprufen Wird das Gesprach abgehort so wird dabei nichts uber den Inhalt der Nachricht verraten selbst falls Teile des Inhalts bereits bekannt sein sollten Datenbanken Bearbeiten Datenbankmanagementsysteme verwenden Hashfunktionen um Daten in grossen Datenbestanden mittels Hashtabellen zu suchen Daruber wird ein Datenbankindex realisiert Mittels Hashfunktionen kann zudem die Fragmentierung von Datensatzen realisiert werden Dabei wird die Hashfunktion auf den Primarschlussel des betreffenden Objektes angewandt Das Ergebnis referenziert dann seinen Speicherort Auch fur vergleichsweise kleine Datenmengen werden Hashfunktionen benutzt beispielsweise in Kompressionsalgorithmen wie LZW Prufsummen Bearbeiten Hauptartikel Prufsumme Prufsummen sind ein einfaches Mittel um die Plausibilitat zur Erkennung von Veranderungen an ubertragenen Daten zu erhohen Nur die Teilmenge der Datenvarianten die bei Berechnung der Prufsumme das gleiche Ergebnis wie das der Original Daten erzeugen kann noch als Verfalschung unerkannt bleiben Mit mehreren verschiedenen passend erzeugten Prufsummen kann die Wahrscheinlichkeit einer Kollision stark reduziert werden Ein Fehler ist immer feststellbar wenn die berechnete Prufsumme der empfangenen Daten sich von der ubertragenen Prufsumme also der der Originaldaten unterscheidet Falls ein Fehler festgestellt wird kann die Verfalschung auch ausschliesslich in der Prufsumme enthalten sein Die Eignung verschiedener Hashfunktionen zur Prufsummenberechnung hangt von deren Kollisionswahrscheinlichkeit ab Wenn die Prufsumme vor gezielten Manipulationen der Daten schutzen soll wird eine kryptographische Hashfunktion verwendet da hier nur mit sehr hohem Rechenaufwand eine Kollision gefunden werden kann Beispiele Bearbeiten Hashwerte haben unter anderem bei P2P Anwendungen aus verschiedenen Grunden eine wichtige Aufgabe Die Hashwerte werden hier sowohl zum Suchen und Identifizieren von Dateien als auch zum Erkennen und Prufen von ubertragenen Dateifragmenten verwendet So lassen sich grosse Dateien zuverlassig in kleinen Segmenten austauschen Zur Anwendung in P2P Netzen kommen vor allem gestufte Hashfunktionen bei denen fur 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 geschutzt Der Inhaber verfolgt Programme und Firmen die auf Basis dieses Systems die Suche von Dateien ermoglichen Sogar Firmen die im Auftrag der Recording Industry Association of America oder der Motion Picture Association Anbieter von unlizenzierten Inhalten ermitteln wollen sind betroffen 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 Bearbeiten Hauptartikel Kryptographische Hashfunktion Kryptographische Hashfunktionen besitzen spezielle Eigenschaften in der Praxis sind es kollisionsresistente Einwegfunktionen Sie werden verwendet um Nachrichten zu signieren bzw die Integritat von Daten sicherzustellen Zum Hashen von Passwortern mit dem Ziel sie sicher zu speichern oder daraus Schlussel zu gewinnen werden spezielle Hashfunktionen verwendet z B aus der Klasse der sicheren Hashalgorithmen Diese sind im Idealfall besonders aufwandig zu berechnen um Brute Force Angriffe zu erschweren Weiterhin mussen sie insbesondere den Eigenschaften der Konfusion und Unumkehrbarkeit genugen damit das Klartextpasswort bzw eine Menge von Kandidaten nicht ohne weiteres aus dem Schlusselwert generierbar ist Hash Algorithmen BearbeitenIn der Praxis konnen oft heuristische Techniken anwendet werden um eine gute Hashfunktion zu erstellen Qualitative Informationen uber die Verteilung der Schlussel konnen in diesem Entwurfsprozess nutzlich sein Generell sollte eine Hashfunktion von jedem einzelnen Bit des Schlussels abhangen so dass sich zwei Schlussel die sich nur in einem Bit oder einer Bitfolge unterscheiden unabhangig davon ob die Folge am Anfang am Ende oder in der Mitte des Schlussels oder vorhanden ist den gesamten Schlussel Hash auf verschiedene Werte abbildet Daher ist eine Hashfunktion die einfach einen Teil eines Schlussels extrahiert nicht geeignet Wenn zwei Schlussel einfach Permutationen voneinander sind z B 256 und 625 sollten sie ebenfalls in unterschiedliche Werte gehasht werden Heuristischen Methoden sind Hashing durch Division und Hashing durch Multiplikation 1 Hashing durch Division Bearbeiten Bei dieser Methode wird ein Schlussel einem Hashwert zugeordnet indem der Rest des Schlussels bei Division durch die Grosse der Hashtabelle berechnet wird Das heisst die Hashfunktion h displaystyle h nbsp ist definiert als h k e y k e y m o d t a b l e s i z e displaystyle h mathrm key mathrm key mathrm mod mathrm tablesize nbsp Weil nur eine einzige Divisionsoperation erforderlich ist ist das Hashing durch Division ziemlich schnell Wenn die Divisionsmethode verwendet wird sollten bestimmte Werte fur die Grosse der Hashtabelle vermieden werden Sie sollte keine Potenz einer Zahl sein Wenn t a b l e s i z e r p displaystyle mathrm tablesize r p nbsp ist dann ist der Hashwert h k e y displaystyle h mathrm key nbsp immer gleich den letzten Bits von k e y displaystyle mathrm key nbsp Wenn wir nicht wissen dass alle p displaystyle p nbsp Bit Muster niedriger Ordnung gleich wahrscheinlich sind ist es besser die Hashfunktion so zu gestalten dass sie von allen Bits des Schlussels abhangt Es hat sich gezeigt dass die besten Ergebnisse mit der Divisionsmethode erzielt werden wenn die Grosse der Hashtabelle eine Primzahl ist Eine Primzahl die nicht zu nah bei einer Zweierpotenz liegt ist oft eine gute Wahl fur die Grosse der Hashtabelle 1 Hashing durch Multiplikation Bearbeiten Bei dieser Methode wird der Schlussel k displaystyle k nbsp mit einer konstanten reellen Zahl c displaystyle c nbsp im Bereich 0 lt c lt 1 displaystyle 0 lt c lt 1 nbsp multipliziert und die Nachkommastellen von k c displaystyle k cdot c nbsp genommen Dann wird dieser Wert mit der Grosse der Hashtabelle multipliziert und mithilfe der Abrundungsfunktion der ganzzahlige Teil davon berechnet Die Hashfunktion h displaystyle h nbsp kann dargestellt werden als h k e y f l o o r t a b l e s i z e k e y c m o d 1 displaystyle h mathrm key mathrm floor mathrm tablesize cdot mathrm key cdot c mathrm mod 1 nbsp Ein Vorteil besteht darin dass die Grosse der Hashtabelle nicht kritisch ist Sie ist typischerweise eine Zweierpotenz weil die Hashfunktion dann schneller implementiert werden kann Obwohl diese Methode mit jeder reellen Zahl c displaystyle c nbsp funktioniert funktioniert sie mit einigen Werten besser als mit anderen 1 Bekannte Hashfunktionen Bearbeiten Bekannte Hashfunktionen sind zum Beispiel Brent Hashing Divisions Rest Methode Doppel Hashing Kuckucks Hashing Multiplikative Methode Mittquadratmethode Zerlegungsmethode ZiffernanalyseGitterbasierte Hashfunktionen Bearbeiten Ajtai Micciancio Peikert Rosen Schnelle Fourier Transformation FFT Hashfunktion 2 LASH 3 Prufsummen Bearbeiten Fletcher s Checksum Adler 32 CRC Zyklische Redundanzprufung Paritat QuersummeKryptographische Hashfunktionen Bearbeiten MD2 MD4 MD5 Secure Hash Algorithm SHA RIPEMD 160 Tiger HAVAL WhirlpoolNicht kryptographische Hashfunktionen Bearbeiten Hashfunktion Geschwindigkeit Entwickler JahrxxHash 5 40 GB s Yann Collet 2012MurmurHash 3a 2 70 GB s Austin Appleby 2008SBox 1 40 GB s Bret Mulvey 2007Lookup3 1 20 GB s Bob Jenkins 2006CityHash64 1 05 GB s Geoff Pike amp Jyrki Alakuijala 2011FNV 0 55 GB s Fowler Noll Vo 1991SipHash HighwayHash 4 Jan Wassenberg amp Jyrki Alakuijala 2016 2012Passwort Hashfunktionen Bearbeiten LM Hash PBKDF2 Bcrypt Scrypt Argon2Literatur BearbeitenDonald E Knuth The Art of Computer Programming 2 Auflage Volume 3 Addison Wesley 1998 ISBN 0 201 89685 0 S 513 ff Thomas H Cormen Charles E Leiserson Ronald L Rivest Clifford Stein Algorithmen Eine Einfuhrung 2 Auflage Oldenbourg Munchen Wien 2007 ISBN 978 3 486 58262 8 S 221 ff Lianhua Chi Xingquan Zhu Hashing Techniques A Survey and Taxonomy In ACM Computing Surveys CSUR Band 50 Nr 1 April 2017 11 doi 10 1145 3047307 Weblinks Bearbeiten nbsp Wiktionary Hashfunktion Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen CRC Press Handbook of Applied Cryptography Kapitel 9 PDF 471 kB Konstruktion von Hashfunktionen PDF 841 kB Online Generator fur Hashberechnungen md sha ripemd whirlpool tiger snefru gost adler cc salsa haval Einzelnachweise Bearbeiten a b c GeeksforGeeks What are Hash Functions and How to choose a good Hash Function C P Schnorr Serge Vaudenay Parallel FFT hashing In Fast Software Encryption pp 149 156 1993 K Bentahar D Page J H Silverman M J O Saarinen N P Smart LASH 2nd NIST Cryptographic Hash Workshop 2006 github com Abgerufen von https de wikipedia org w index php title Hashfunktion amp oldid 239423250