Was ist SHA256?
Bei SHA256 handelt es sich um eine Variante der kryptologischen Hashfunktion Secure Hash Algorithm, in der Version 2. Hashfunktionen werden in der Informationstechnik vorrangig dazu benutzt, die Integrität von Daten zu garantieren. Sie eignen sich hierzu besonders, da der Ausgabewert beliebig langer Datensätze immer die gleiche, kompakte Größe hat. Die Änderung an nur einem Bit hingegen führt dazu, dass ein komplett anderer Hashwert entsteht. Dies hat zur Folge, dass kein Rückschluss auf Länge und Inhalte der übertragenen Daten möglich ist.
Ein paar Details zu Hashfunktionen wie SHA256
Eine Hashfunktion führt eine Berechnung mit den Bestandteilen des Inhalts durch. Ähnlich einer Prüfsumme. In der einfachsten Form könnte dies eine Quersummenberechnung sein. Diese könnte solange durchgeführt werden, bis das Ergebnis immer eine bestimmte Anzahl Stellen hat. Hierbei würde es, trotz unterschiedlicher Ausgangszahlen, massenhaft Überschneidungen beim Ergebnis geben. Diese nennt man Hash-Kollisionen. Daher ist eine derart simple Rechenoperation für diesen Zweck ungeeignet. Vielmehr verwendet man stattdessen komplexe Algorithmen. Neben der Anforderung, dass es zu keinen Kollisionen kommen darf, muss ein guter Hash-Algorithmus weitere Voraussetzungen erfüllen. Eine ist die Effizienz der Berechnung, eine weitere der Lawineneffekt. Hiermit ist gemeint, dass kleinste Veränderungen am Eingabewert größtmögliche Veränderungen am Ausgangswert verursachen sollen. Besonders wichtig ist die Unumkehrbarkeit. Es muss unmöglich sein, den Eingabewert anhand des Ausgabewerts zu errechnen. Man spricht hier von einem Einweg-Hash. Wesentlich ist zudem die Unkenntlichkeit der zugrunde liegenden Daten. Diese sind, nimmt man die Übersetzung des englischen Begriffs „to hash“ wörtlich, nach Durchführung der Berechnungen „zerhackt“.
Die Geschichte
Der SHA wurde in seiner ersten Fassung (SHA-0) vom National Institute of Standards and Technology (NIST) sowie der National Security Agency (NSA) entwickelt und 1993 vorgestellt. Aufgrund einer Schwäche im Algorithmus, wurde bereits 1995 der Nachfolger SHA-1 vorgestellt. Dieser wiederum gilt seit 2005 als nicht mehr sicher. Forschern war es gelungen, den Rechenaufwand zur Erzeugung von Kollisionen soweit zu reduzieren, dass eine Berechnung in einem endlichen Zeitraum möglich schien. Aus diesem Grund wurde SHA-2 entwickelt. Ihn gibt es in den Varianten SHA224, SHA256, SHA384 und SHA512. Die Ziffer beschreibt die Länge der Bitfolge in der Ausgabe. Die Darstellung erfolgt in der Regel allerdings in hexadezimaler Schreibweise. Dies ist kompakter und Veränderungen an der Ausgabe sind für den Menschen leichter erkennbar.
SHA-3 ist seit 2015 veröffentlicht, aber bislang noch nicht sehr verbreitet. Diesem liegt ein komplett anderer Algorithmus zur Berechnung zugrunde. SHA-2, mit ausreichender Ausgabelänge, kann allerdings nach wie vor als sicher angesehen werden.
Wie funktioniert SHA-2?
Der Eingangswert wird in gleichlange Elemente unterteilt. Diese nennt man Blöcke. Da ein Vielfaches der Blocklänge benötigt wird, ist es in der Regel notwendig, die Daten aufzufüllen, also zu expandieren. Der aufgefüllte Wert ist das Padding. Die Verarbeitung erfolgt danach blockweise. Es werden die Blöcke durchlaufen und dabei jeweils als Schlüssel für Zwischenberechnungen an den nachfolgend zu kodierenden Daten verwendet. Der Datensatz wird in 64 Runden (SHA224 und SHA-256) oder 80 Runden (SHA384 und SHA512) durchlaufen. Das Ergebnis der letzten Berechnung ist der Ausgabewert, also der Hash.
Anwendungszwecke von SHA256
Der Hashwert einer Datei wird oftmals im Zusammenhang mit deren Download bereitgestellt. Hier ist SHA256 inzwischen eine der häufigsten Varianten. Der Nutzer kann nach dem vollständigen Download den Hashwert seiner Datei lokal berechnen und mit dem Wert auf der Anbieterseite abgleichen. Stimmt er überein, besteht eine absolute Sicherheit, dass die korrekte Datei fehlerfrei übertragen wurde. Man spricht in diesem Zusammenhang auch vom digitalen Fingerabdruck einer Datei. Zur Berechnung des Hashwertes können kostenlose Programme wie HashCalc verwendet werden.
Anwendung von Suchalgorithmen
Den im Vergleich zum Inhalt um ein Vielfaches kürzeren Fingerabdruck kann man auch zur Indexierung von Dateien, beispielsweise in Datenbanken, nutzen. Hier ist es oft üblich, dass Metadaten wie Dateinamen und Pfad, getrennt vom eigentlichen Inhalt gespeichert werden. Zum einen muss dann nicht nach dem gesamten Inhalt gesucht werden. Zum anderen können die entstandenen Hashwerte der Dateien sortiert werden, was die Anwendung von Suchalgorithmen erleichtert.
In ähnlicher Weise kann SHA256 bei digitalen Zertifikaten zur Anwendung kommen. So findet das Verfahren bei der Erstellung von TLS/SSL-Zertifikaten Anwendung. Weiterhin wird es für die Signaturerstellung bei den Verschlüsselungsverfahren S/MIME und PGP genutzt. Auch IPSec, das Protokoll zum Aufbau einer sicheren Internetverbindung, nutzt SHA 256 zur Authentifizierung im Zusammenhang mit dem Verfahren HMAC (Keyed-Hash Message Authentication Code).
SHA256 bei der Erstellung von Blockchains
Zudem kann SHA256 Bestandteil der Erstellung von Blockchains sein. Dieses Prinzip ist vor allem im Zuge der Verbreitung von Bitcoins bekannt geworden. Es ist aber auch auf andere Bereiche übertragbar. Verwendet man einen sicheren Hash-Algorithmus, ist es möglich, Transaktionen dezentral zu verwalten. Jede Transaktion besteht aus einer Kopfzeile (Header) und einem Datenteil und wird in einem Block festgehalten. Diese Blöcke werden nun untrennbar miteinander verbunden. Im Header einer Transaktion werden der SHA256-Hashwert des vorhergehenden Headers und des eigenen Datenteils festgehalten. Nach Beendigung der Transaktion wird die Blockchain wieder auf mehrere redundante Speicherorte (Knoten) hochgeladen. Eine Manipulation ist somit ausgeschlossen. Wird eine Transaktion entfernt oder verändert, stimmen die Hashwerte der folgenden Transaktionen nicht mehr. Zudem ist jedes beteiligte System in der Lage, die Integrität der Blockchain anhand der Hashwerte zu berechnen.
- Über den Autor
- Aktuelle Beiträge
Daniel Faust ist Redakteur im Content-Team der Biteno und betreut den Blog der Biteno GmbH.