Einfach erklärt – So funktioneren Hashfunktionen

Inhalt


Schlüssellose kryptografische Hashfunktionen sind eine Art von kryptografischem Algorithmus, der eine Eingabe (oft als Nachricht bezeichnet) entgegennimmt und einen festen Ausgabewert, genannt Hashwert oder Digest, erzeugt. Das Hauptmerkmal einer schlüssellosen Hashfunktion besteht darin, dass sie ohne die Verwendung eines geheimen Schlüssels arbeitet.

Charakteristika

Die wichtigsten Punkte zu schlüssellosen kryptografischen Hashfunktionen:

  1. Deterministisch: Bei gleicher Eingabe wird die Hashfunktion immer denselben Ausgabewert erzeugen. Selbst eine geringfügige Änderung in der Eingabe führt zu einem signifikant unterschiedlichen Hashwert. Dies wird auch als der Avalanche-Effekt bezeichnet.
  2. Feste Ausgabelänge: Die Hashfunktion erzeugt einen Ausgabewert fester Länge, unabhängig von der Größe der Eingabe. Zum Beispiel erzeugt der weit verbreitete SHA-256-Algorithmus einen 256-Bit (32-Byte) Hashwert.
  3. Einwegfunktion: Es ist rechnerisch nicht machbar, den Prozess umzukehren und allein aus dem Hashwert die ursprüngliche Eingabe zu bestimmen. Die Hashfunktion ist als Einwegfunktion konzipiert und bietet ein hohes Maß an Kollisionsresistenz.
  4. Kollisionsresistenz: Die Wahrscheinlichkeit, dass zwei verschiedene Eingaben denselben Hashwert erzeugen (eine Kollision), sollte äußerst gering sein. Eine sichere Hashfunktion strebt danach, die Wahrscheinlichkeit von Kollisionen zu minimieren.

Schlüssellose Hashfunktionen werden häufig in verschiedenen kryptografischen Anwendungen verwendet, darunter die Überprüfung der Datenintegrität, digitale Signaturen, Passwort-Hashing und die sichere Speicherung sensibler Informationen. Sie bieten eine bequeme Möglichkeit zur Überprüfung der Datenintegrität und Sicherstellung der Authentizität von Nachrichten, ohne die Verwendung eines geheimen Schlüssels zu erfordern.

Der Unterschied zwischen keyless und keyed Hashfunktionen

Wie oben erwähnt, liegt der Hauptunterschied zwischen keyless und keyed Hashfunktionen in der Anwesenheit oder Abwesenheit eines geheimen Schlüssels.

  1. Keyed Hash Functions: In keyed Hash-Funktionen wird zusätzlich zum Eingabenachricht ein geheimer Schlüssel verwendet. Der Schlüssel ist in der Regel ein Wert fester Länge, der nur dem Sender und Empfänger bekannt ist. Der Schlüssel wird mithilfe eines bestimmten Algorithmus mit der Nachricht kombiniert, und der resultierende Hashwert hängt nicht nur von der Eingabemessage, sondern auch vom geheimen Schlüssel ab. Das bedeutet, dass dieselbe Nachricht, wenn sie mit unterschiedlichen Schlüsseln gehasht wird, unterschiedliche Hashwerte erzeugt.
  2. Unkeyed Hash Functions: Unkeyed Hashfunktionen, wie zuvor erläutert, erfordern keinen geheimen Schlüssel. Die Hashfunktion arbeitet ausschließlich mit der Eingabemessage, ohne zusätzliche Schlüsselinformationen. Der resultierende Hashwert basiert allein auf den Eigenschaften und dem Design der Hashfunktion selbst.

Die Verwendung eines geheimen Schlüssels in keyed Hashfunktionen führt eine zusätzliche Sicherheitsebene ein und ermöglicht Authentifizierung, Integritätsprüfung und die Erstellung von Message Authentication Codes (MACs). Keyed Hash-Funktionen werden oft in Szenarien eingesetzt, in denen Daten sicher übertragen oder gespeichert werden müssen und bei denen Authentizität und Integrität der Daten entscheidend sind.

Auf der anderen Seite werden unkeyed Hashfunktionen für verschiedene Zwecke weit verbreitet eingesetzt. Dazu gehören die Überprüfung der Datenintegrität, digitale Signaturen und die Speicherung von Passwörtern. Sie bieten eine schnelle und effiziente Möglichkeit, festgelegte Hashwerte zu generieren, die die Eingabedaten eindeutig repräsentieren, ohne die Notwendigkeit eines geheimen Schlüssels.

Beliebte keyless Hashfunktionen

Im Laufe der Jahre haben mehrere schlüssellose Hashfunktionen aufgrund ihrer Sicherheit, Effizienz und weit verbreiteten Anwendung an Beliebtheit gewonnen. Die am häufigsten verwendeten ungekoppelten Hashfunktionen sind:

  1. MD5 (Message Digest Algorithm 5): Obwohl MD5 weit verbreitet war, gilt es heute als unsicher für kryptografische Anwendungen aufgrund von Kollisionsschwächen.
  2. SHA-1 (Secure Hash Algorithm 1): Ähnlich wie MD5 hat auch SHA-1 Schwächen in Bezug auf Kollisionen und wird nicht mehr für kritische Sicherheitsanwendungen empfohlen.
  3. SHA-2 (Secure Hash Algorithm 2): Die Familie der SHA-2 Hashfunktionen beinhaltet unter anderem die Funktionen SHA-224, SHA-256, SHA-384 und SHA-512. SHA-256 ist besonders weit verbreitet und wird in vielen Anwendungen verwendet. Sie erzeugen Hashwerte unterschiedlicher Länge (224, 256, 384 und 512 bits).
  4. SHA-3 (Secure Hash Algorithm 3): SHA-3 ist das neueste Mitglied der Secure Hash Algorithm-Familie. Es wurde als Nachfolger von SHA-2 entworfen und bietet verbesserte Sicherheit. Es umfasst Hashfunktionen wie SHA3-224, SHA3-256, SHA3-384 und SHA3-512, die Hashwerte unterschiedlicher Länge erzeugen.
  5. BLAKE2: BLAKE2 ist eine kryptografische Hashfunktion, die schneller ist als die meisten anderen Hashfunktionen und dabei eine starke Sicherheit bietet. Es gibt Varianten mit unterschiedlichen Ausgabegrößen, wie zum Beispiel BLAKE2b (bis zu 512 Bits) und BLAKE2s (bis zu 256 Bits).

Beliebte keyed Hashfunktionen

Hier sind einige Beispiele für häufig verwendete keyed Hashfunktionen:

  1. HMAC (Hash-based Message Authentication Code): HMAC ist eine weit verbreitete Funktion, die eine kryptografische Hash-Funktion (wie SHA-256 oder SHA-3) mit einem geheimen Schlüssel kombiniert. Sie bietet eine sichere Möglichkeit zur Generierung einer keyed Hashfunktion. HMAC kann Integrität und Authentizität einer Nachricht gewährleisten, indem es dem Empfänger ermöglicht zu überprüfen, dass die Nachricht nicht manipuliert wurde und von dem erwarteten Absender stammt.
  2. CMAC (Cipher-based Message Authentication Code): CMAC ist ein auf Blockchiffren basierender Authentifizierungscode, der einen symmetrischen Schlüssel verwendet. Er leitet sich von der CBC-MAC-Konstruktion ab und bietet Sicherheit gegenüber Angriffen mit gewähltem Klartext und gewähltem Geheimtext. AES-CMAC ist eine beliebte Variante, die den AES-Blockchiffre verwendet.
  3. SipHash: SipHash ist eine Familie von keyed Hash-Funktionen, die darauf ausgelegt sind, effizient und sicher zu sein. Sie verwendet einen 128-Bit-geheimen Schlüssel und arbeitet mit 64-Bit-Datenblöcken. SipHash zeichnet sich durch seine Resistenz gegenüber sogenannten Hash-Flooding-Angriffen aus und wird häufig in Anwendungen eingesetzt, in denen die Sicherheit von Hashtabellen wichtig ist.
  4. GMAC (Galois Message Authentication Code): GMAC ist ein Betriebsmodus für Blockchiffren, der sowohl Vertraulichkeit als auch Authentizität bietet. Er verwendet einen geheimen Schlüssel und wird häufig in authentifizierten Verschlüsselungsschemata wie AES-GCM (Galois/Counter Mode) eingesetzt.

Dies sind nur einige Beispiele für keyed Hash-Funktionen. Jede dieser Konstruktionen kombiniert eine kryptografische Hash-Funktion mit einem geheimen Schlüssel, um Authentifizierung und Integrität für Nachrichten oder Daten bereitzustellen. Die konkrete Wahl einer gekoppelten Hash-Funktion hängt von den Sicherheitsanforderungen, Leistungserwägungen und der Kompatibilität mit der verwendeten Anwendung oder dem Protokoll ab.

Weitere Informationsquellen

Cryptographic hash function, https://en.wikipedia.org/w/index.php?title=Cryptographic_hash_function&oldid=1163954720