Hashwerte, kurz Hash, spielen in der Informatik eine große Rolle und begegnen nicht nur Softwareentwicklern bei der täglichen Arbeit. Sie können z.B. zur Verschlüsselung von Daten oder zur eindeutigen Identifizierung von Datensätzen eingesetzt werden. Um Technologien wie beispielsweise Blockchains besser zu verstehen, ist ein grundsätzliches Wissen über Hashes sehr hilfreich.
Kurz erklärt
Ein Hash (engl. für ‚zerhacken‘) ist ein, aus einem beliebig großen Datenwert, generierter Wert. Dieser Wert sieht auf dem ersten Blick aus wie eine Ansammlung zufälliger Zahlen und Buchstaben. Es existieren viele Berechnungsmethoden (Algorithmen), wie Hash berechnet werden können. Bekannte Beispiele sind MD5, SHA-1 oder SHA-256. Der Datenwert ‚ABC‘ ergibt beispielsweise, berechnet mittels des MD5-Algorithmus, den Hashwert ‚902fbdd2b1df0c4f70b4a5d23525e932‘. Hashwerte eines bestimmten Algorithmus besitzen immer exakt die gleiche länge. So haben alle über MD5 berechneten Hash eine Länge von 32-Zeichen. Egal ob der Datenwert aus einem oder 1000 Zeichen besteht.
Anforderungen an kryptografische Hashes
- Ein identischer Datenwert muss immer zum selben Hashwert führen
- Der Hashwert darf nicht in die ursprüngliche Datenwert zurückberechnet werden können
- Zwei unterschiedliche Datenwerte dürfen nicht den gleichen Hashwert ergeben
Nicht alle Hashes erfüllen alle diese Anforderungen. Deshalb eignen sich nicht alle Hash-Algorithmen für kryptografische Anwendungen.
Beispiel
Folgende Abbildung zeigt ein Beispiel zur Funktionsweise von Hashes. Hier werden Daten in einem Eingabeformular aufgenommen und über eine Software zu einem Datenpaket gebündelt. Anschließend wird aus dem Datenpaket ein Hashwert generiert. Da Hashes generell eindeutig sind, d.h. unterschiedliche Datenpakete können niemals denselben Hash haben, kann der Hash eindeutig dem Inhalt des Datenpakets zugeordnet werden. Man kann sagen, ein Hash ist eine Art digitaler Fingerabdruck von Daten. Wenn sich in dem Beispiel auch nur ein Buchstabe im Eingabeformular ändern würde, würde ein komplett anderer Hash daraus entstehen. So könnte man überprüfen, ob ein Datenpaket unwissentlich manipuliert wurde.
Andersherum funktioniert das Ganze jedoch nicht. Ein generierter Hash kann nicht wieder zurückgerechnet werden, d.h. es kann kein Rückschluss vom Hash auf die Daten gezogen werden.
Verwendung von Hashes in einer Blockchain
Aus dem Inhalt (beliebige Daten) eines Blocks in einer Blockchain wird ein Hash erzeugt, der die eindeutige Referenz des Blocks darstellt. Der nächste Block verweist dann jeweils auf den Hashwert des vorherigen Blocks. Würden nun die Daten irgendeines Blocks verändert werden, so wäre die ganze Blockkette ungültig. Dieses Vorgehen liefert einen wesentlichen Beitrag zur Manipulationssicherheit einer Blockchain.