Definition
Hashing bezeichnet einen Prozess, bei dem beliebige Daten durch eine mathematische Funktion in einen sogenannten Hashwert umgewandelt werden. Dieser Hashwert ist eine Zeichenkette fester Länge, die als digitaler Fingerabdruck der ursprünglichen Daten dient. Dabei ist die Transformation einseitig, das heißt, es ist praktisch unmöglich, aus dem Hashwert die Originaldaten zu rekonstruieren.
Die erzeugten Hashwerte sind eindeutig für die jeweiligen Eingabedaten, wobei kleine Änderungen in den Eingabedaten zu einem komplett anderen Hashwert führen. Hashing wird in der Informatik vor allem zur schnellen Datenverarbeitung, Integritätsprüfung und Verschlüsselung verwendet.
Was bedeutet das für Ihr Unternehmen?
Hashing begegnet Ihnen vor allem bei Passwörtern: Seriöse Software speichert keine Passwörter, sondern nur deren Hash, damit bei einem Datenleck die Zugangsdaten nicht direkt lesbar sind. Entscheidend ist das Verfahren, denn veraltete Funktionen wie MD5 oder SHA-1 ohne Salt lassen sich mit heutiger Rechenleistung leicht knacken, geeignet sind spezielle Verfahren wie bcrypt oder Argon2. Bei einem Sicherheitsaudit oder der Übernahme einer bestehenden Anwendung gehört diese Prüfung zu den ersten Punkten.
Geschichte und Hintergrund
Die Idee des Hashings geht auf die Entwicklung von Datenstrukturen und Algorithmen in den 1950er und 1960er Jahren zurück. Hashfunktionen wurden zunächst für schnelle Datenzugriffe in Tabellen verwendet, um Suchzeiten zu reduzieren. In den 1970er Jahren wurden kryptografische Hashfunktionen entwickelt, die neben der Geschwindigkeit auch Sicherheitsanforderungen erfüllen sollten.
Bekannte kryptografische Hashfunktionen sind MD5, 1991 von Ronald Rivest entwickelt, und SHA-1, das 1995 vom National Institute of Standards and Technology (NIST) standardisiert wurde. Aufgrund von Sicherheitslücken wurden sie später durch sicherere Varianten wie SHA-256 ersetzt.
Funktionsweise
Eine Hashfunktion verarbeitet Eingabedaten beliebiger Länge und gibt einen Hashwert mit konstanter Länge aus. Die Funktion ist deterministisch, das heißt, dieselben Eingabedaten erzeugen immer denselben Hashwert. Zudem ist die Funktion einseitig, sodass eine Umkehrung des Prozesses praktisch unmöglich ist.
Wichtige Eigenschaften von Hashfunktionen sind Kollisionsresistenz (es ist unwahrscheinlich, dass zwei unterschiedliche Eingaben denselben Hashwert erzeugen), Determinismus und Effizienz. Kryptografische Hashfunktionen sind speziell darauf ausgelegt, diese Eigenschaften zu gewährleisten, um Sicherheit in Anwendungen zu bieten.
Einsatzgebiete
Hashing wird in vielen Bereichen der Informationstechnologie eingesetzt. Ein häufiges Anwendungsgebiet ist die Speicherung von Passwörtern in Datenbanken, wobei nur der Hashwert gespeichert wird, um die Sicherheit bei Datenlecks zu erhöhen. Bei der Datenintegritätsprüfung wird Hashing verwendet, um sicherzustellen, dass Dateien oder Nachrichten nicht verändert wurden.
Weiterhin kommen Hashfunktionen in digitalen Signaturen, Blockchain-Technologien und bei der schnellen Suche in Datenbanken zum Einsatz. In der Blockchain etwa wird Hashing genutzt, um Blöcke zu verknüpfen und Manipulationen zu erschweren.
Abgrenzung zu verwandten Begriffen
Hashing unterscheidet sich von Verschlüsselung dadurch, dass es eine Einwegfunktion ist und keine Entschlüsselung möglich ist. Verschlüsselung ist darauf ausgelegt, Daten zu schützen und bei Bedarf wiederherzustellen, während Hashing vor allem der Integritätsprüfung und Identifikation dient.
Im Vergleich zu Prüfsummen wie CRC (Cyclic Redundancy Check) sind kryptografische Hashfunktionen sicherer, da sie Kollisionsresistenz bieten und nicht einfach manipuliert werden können. Prüfsummen dienen hauptsächlich der Fehlererkennung bei Übertragungen, während Hashing auch sicherheitsrelevante Funktionen erfüllt.