Hashes
Hashes sind Prüfsummen. Aus einem langen Klartext wird eine kurze Prüfsumme errechnet. Der Hash kann dabei 4 Bytes oder auch 256 Bytes lang sein, ganz nach Anwendungsfall. Da ein Hash fast immer kürzer ist als der Klartext, muss ein Hash unweigerlich Ergebnis mehrerer Klartexte sein. Aus einem Hash kann man also keinen eindeutigen Klartext berechnen. Man kann höchstens überprüfen, ob ein bestimmter Klartext einen bestimmten Hash erzeugt. Hash-Verfahren wenden besondere mathematische Verfahren an, um Unterschiede zwischen Klartexten möglichst schnell mit einem unterschiedlichen Ergebnis sichtbar zu machen. Sie verhindern so, dass zum Beispiel in einem Dokument ein Betrag von 1.000 auf 10.000 geändert werden kann, ohne dass sich der Hash verändert. Auch versuchen Sie, es möglichst schwierig zu machen, z. B. durch Ergänzung mit weiteren Sätzen die anvisierte, ursprüngliche Hash-Summe zu erreichen.Praktische Anwendung ist z. B. der Hash einer großen Datei nach dem Download. Der Vergleich des Hashes der lokalen, heruntergeladenen Datei mit dem Hash der entfernten würde bei fehlender Übereinstimmung einen Fehler in der Übertragung erkennbar machen. Da Hash-Algorithmen wie in diesem Beispiel große Datenmengen verarbeiten sollen, müssen sie performant arbeiten.
Hash-Algorithmen sind sogenannte Einbahnfunktionen: aus einem Klartext kann man einen Hashwert errechnen, aber aus einem Hashwert keinen Klartext mehr. Man müsste alle in Frage kommenden Zeichenfolgen der Reihe nach ausprobieren (sogenanntes Brute Force, bis man auf den Klartext trifft, der den gewünschten Hash ergibt, was recht zeitaufwendig ist.
Das macht man sich zur Nutze, wenn man Passwörter zu Anwendungen speichert. Man speichert nicht das Passwort direkt, sondern nur den Hash zu einem Passwort. So können Personen, die Zugriff auf die Passwort-Datenbank haben, nicht das Passwort direkt lesen. Bei der Anmeldung wird dann jedesmal der Hashwert des Passwort errechnet und mit dem Hashwert in der Datenbank verglichen. Stimmen die Werte überein, wird der Zugriff gewährt, ansonsten abgelehnt.
Findige Angreifer haben sich unter Umständen aber sogenannte Rainbow Tables angelegt, das sind Datenbanktabellen, die für - sagen wir mal alle bis zu 8-stelligen Passwörter den Hash bereits errechnet haben und in einer Datenbank gespeichert haben - immerhin über 200 Milliarden Einträge, wenn diese Buchstaben von A bis Z enthalten. So können sie schnell einen Hash in den Tabellen nachschlagen und bekommen ein Klartext-Äquivalent. Da normalerweise keine Passwörter direkt in Datenbanken von Anwendungen gespeichert sind, sondern nur deren Hashwert, wird auch das Äquivalent akzeptiert. Um Rainbow Tables vorzubeugen, wird mit dem Hashwert ein jeweils neu generierter Zufallswert (man spricht hier von einem Salt, zu deutsch Salz) zu jedem Hash (hier dann Pepper genannt (dt. Pfeffer)) gespeichert und mit in die Berechnung einbezogen. Das Ergebnis ist ein salted Hash (gesalzener Hash).
Weiterhin werden Hashes gerne zur Schlüsselgenerierung aus Passwörtern für moderne kryptografische Verfahren verwendet.
Index der Hashes der Kategorie Moderne Kryptografie / Hashes