Suchen

Definition SHA (Secure Hash Algorithm) Was ist SHA (Secure Hash Algorithm)?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Peter Schmitz

Der Secure Hash Algorithm existiert in verschiedenen Versionen und stellt Hashfunktionen zur Ermittlung unverwechselbarer Prüfwerte digitaler Daten zur Verfügung. Mit einem Prüfwert lässt sich die Integrität der Daten sicherstellen. SHA kommt beispielsweise für Signaturverfahren zum Einsatz. Eine wichtige Eigenschaft eines Hahsverfahrens ist die Kollisionssicherheit.

Firma zum Thema

SHA (Secure Hash Algorithm) ist eine kryptographische Hashfunktion zur Ermittlung eines Prüfwerts (Fingerabdruck) digitaler Daten.
SHA (Secure Hash Algorithm) ist eine kryptographische Hashfunktion zur Ermittlung eines Prüfwerts (Fingerabdruck) digitaler Daten.
(Bild: gemeinfrei / Pixabay )

Die Abkürzung SHA steht für Secure Hash Algorithm. Es handelt sich um kryptografische Hashfunktionen, mit denen sich die Integrität digitaler Daten sicherstellen lässt. Oft wird der Secure Hash Algorithm auch als Fingerabdruck für digitale Daten bezeichnet. Mit Hilfe der Hashfunktion kann ein Prüfwert beliebiger digitaler Daten berechnet werden. Der Vergleich der Prüfwerte erzeugter und erhaltener Nachrichten ermöglicht es, Veränderungen oder Manipulationen zu erkennen. Der Secure Hash Algorithm stellt wichtige Grundfunktionen zum Erstellen digitaler Signaturen und digitaler Zertifikate bereit. Darüber hinaus kommt der Algorithmus in zahlreichen Protokollen und Anwendungen wie SSL (Secure Sockets Layer), IPSec (Internet Protocol Security), PGP (Pretty Good Privacy) oder S/MIME (Secure / Multipurpose Internet Mail Extensions) zum Einsatz. Eine wichtige Eigenschaft des Secure Hash Algorithm ist die Kollisionssicherheit. Verschiedene digitale Daten oder Nachrichten sollten niemals den gleichen Prüfwert erzeugen. Entwickelt wurde das Verfahren im Auftrag der Standardisierungsbehörde NIST (National Institute of Standards and Technology) von der National Security Agency (NSA) der USA. Die Vorstellung des Algorithmus erfolgte im Jahr 1991. Die ursprüngliche Version SHA-0 besaß gravierende Schwächen und wurde bereits 1995 durch eine korrigierte Nachfolgeversion SHA-1 abgelöst. Weitere verbesserte Versionen SHA-2 und SHA-3 folgten. Aufgrund erkannter Schwächen in der Version 1 wird heute empfohlen, die Versionen 2 oder 3 zur Bildung von Prüfwerten zu verwenden.

Grundsätzliches zur Hashfunktion

Hashfunktionen bilden eine Art digitalen Fingerabdruck für elektronische Dokumente. Sie erstellen aus beliebig langen Nachrichten einen eindeutigen Prüfwert fester Länge. Die Hashfunktion sollte auf keinen Fall umkehrbar sein und für verschiedene Nachrichten niemals gleiche Prüfwerte liefern (Kollisionssicherheit). Wichtige weitere Anforderungen an Hashfunktionen sind eine effiziente Berechenbarkeit und möglichst kurze Prüfwerte. Zur Berechnung des Prüfwerts kommen unterschiedliche mathematische und kryptografische Verfahren zum Einsatz. Zunächst wird die Nachricht nach einer bestimmten Methode aufgeteilt. Anschließend erfolgt die Bildung des Hashwerts. Eine sehr bekannte kryptografische Hashfunktion ist der Message-Digest Algorithm 5 (MD5). MD5 erzeugt aus beliebigen Nachrichten einen 128 Bit langen Hashwert. MD5 gilt heute allerdings als nicht mehr sicher, da es mit vertretbarem rechnerischen Aufwand möglich ist, aus unterschiedlichen Daten gleiche Hashwerte zu erzeugen. Deshalb kommen in der Regel die neueren Versionen des Secure Hash Algorithm zum Einsatz. Kurz zusammengefasst sind die wichtigsten Eigenschaften der Hashfunktionen folgende:

  • Erzeugen eines Prüfwerts aus Nachrichten beliebiger Länge
  • effiziente Berechnung
  • nicht umkehrbar
  • keine gleichen Hashwerte bei unterschiedlichen Ausgangsdaten (Kollisionssicherheit)
  • möglichst kurze Hashwerte

Die verschiedenen SHA-Versionen

Die Secure Hash Algorithm Version 0 (SHA-0)

Die erste Version des Secure Hash Algorithm wird auch als SHA-0 bezeichnet. Sie bildet aus Daten einer maximalen Länge von circa zwei Exbibyte Hashwerte mit einer Länge von 160 Bit. Im Vergleich zu MD5 mit einer Hashwertlänge von 128 Bit ist der Hashwert mit 160 Bit länger und weniger anfällig gegen Brute-Force-Methoden zur Erzeugung von Kollisionen.

Die initiale Version des Secure Hash Algorithm SHA-0 war aufgrund eines methodischen Fehlers und der daraus entstehenden Sicherheitsmängel schnell hinfällig und erlangte kaum praktische Bedeutung. Bereits 1995 folgte mit der Version SHA-1 eine korrigierte Nachfolgeversion, die die Sicherheitsprobleme behob. Mittlerweile gilt auch SHA-1 als nicht mehr hinreichend sicher. Deshalb erschienen die Versionen SHA-2 und SHA-3. Im Folgenden ein kurzer Überblick über die verschiedenen Secure Hash Algorithm Versionen SHA-1, SHA-2 und SHA-3.

Die Secure Hash Algorithm Version 1 (SHA-1)

SHA-1 ist die korrigierte Version von SHA-0. Korrigiert wurde nur ein relativ kleines Detail des Algorithmus. Das grundsätzliche Verfahren und die Anzahl der zur Prüfwertbildung zu durchlaufenden Runden veränderten sich nicht. Die Erzeugung von Kollisionen ist bei SHA-1 im Vergleich zu SHA-0 mit wesentlich mehr Aufwand verbunden. Seit etwa 2004 gilt SHA-1 ebenfalls als nicht mehr ausreichend sicher. Diese Version ist ebenfalls anfällig gegen Kollisionsangriffe, auch wenn erheblicher rechnerische Aufwand dafür notwendig ist. Trotz der erkannten Schwächen findet SHA-1 in zahlreichen Verfahren und Protokollen noch immer Verwendung. Sicherheitsexperten empfehlen dringend die Verwendung der Hashverfahren SHA-2 oder SHA-3.

Die Secure Hash Algorithm Version 2 (SHA-2)

Die Secure Hash Algorithm Version 2 (SHA-2) unterscheidet sich in mehreren Merkmalen und Funktionen von SHA-1. So sind die Hashwerte nicht mehr 160 Bit, sondern 224, 256, 384 oder 512 Bit lang. Analog zu SHA-2 werden Bezeichnungen wie SHA-224, SHA-256, SHA-384 oder SHA-512 verwendet, die die Längen der Hashwerte benennen. Wie die Vorgängerversion nutzt SHA-2 eine Merkle-Damgård-Konstruktionmit Davies-Meyer-Kompressionsfunktion. Die Schlüssel und Datenworte sind 32 oder 64 Bit lang, die Nachrichtenblöcke 512 oder 1024 Bit. Zur Erzeugung des Hashwerts werden 64 oder 80 Runden mit mehreren unterschiedlichen logischen Funktionen durchlaufen. Heutzutage unterstützen fast alle gängigen Betriebssysteme den Secure Hash Algorithm in der Version 2 (SHA-2).

Die Secure Hash Algorithm Version 3 (SHA-3)

Die für SHA-1 und SHA-2 genutzte Merkle-Damgård-Konstruktion besitzt einige bereits 2004 erkannte Schwächen. Um diese Schwächen zu beseitigen und eine sichere SHA-Hashfunktion zu realisieren, suchte das National Institute of Standards and Technology (NIST) im Rahmen eines Wettbewerbs eine Alternative. Im Jahr 2012 entschied man sich für das von Guido Bertoni, Joan Daemen, Michaël Peeters und Gilles Van Assche entwickelte Keccak. Die Standardisierung von SHA-3 unter Verwendung von Keccak erfolgte schließlich im Jahr 2015. Grundsätzlich ist SHA-3 anders aufgebaut als SHA-2 und SHA-1. Es wurden mehrere Varianten standardisiert. Diese Varianten sind SHA-3-224, SHA-3-256, SHA-3-384 und SHA-3-512. Die letzte Zahl bezeichnet die Länge des Hashwerts. Zusätzlich existieren die Varianten SHAKE128 und SHAKE256. Mit SHAKE128 und SHAKE256 ist die Länge der Hashwerte nicht festgelegt. Die Hashwerte können in unterschiedlicher Länge erzeugt werden.

(ID:46053503)

Über den Autor