Kryptografische Hashverfahren

kryptographischer Hash
kryptographischer Hash

Eine Hash-Funktion ist eine mathematische Funktion, welche die Daten auf einen kurzen Wert, den so genannten Hash-Wert abbildet. Die Länge des Hash-Wertes ist von der Länge der Daten unabhängig. In der Regel werden komprimierte Werte zwischen 128 und 256 Bit erzeugt, diese werden Message Digest (MD) oder Fingerprints genannt.

Der Sender erzeugt einen Hash-Wert der Nachricht und schickt diesen mit der Nachricht an den Empfänger. Dieser berechnet aus der Nachricht ebenfalls den Hash-Wert. Da eine veränderte Nachricht einen anderen Hash-Wert aufweist, kann der Empfänger eine Manipulation sofort erkennen. Wichtig für diese Eigenschaft ist die Kollisionsfreiheit bzw. Kollisionsresistenz der Hash-Funktion h, das heißt:

  • es ist praktisch unmöglich, zu einem Hash-Wert c eine Nachricht m zu finden, für die c = h(m) gilt
  • es ist praktisch unmöglich, eine andere Nachricht m’ zu finden, die den gleichen Hash-Wert wie m aufweist. h(m’) = h(m)

=

Birthday - Paradoxon

Die zweite Eigenschaft zur Kollisionsfreiheit von Hash-Funktionen kann noch schärfer formuliert werden, dass es unmöglich ist ein Nachrichtenpaar m1, m2 mit m1 != m2 zu finden, für das h(m1) = h(m2) gilt. Dies liegt am Geburtstagsparadoxon, das zwei bestimmte Personen am gleichen Tag Geburtstag haben ist recht unwahrscheinlich. Z.B um die Wahrscheinlichkeit, dass jemand aus einer Gästeschar am gleichen Tag wie der Gastgeber Geburtstag hat, auf über 50 % zu bringen benötigt man 253 Gäste. Damit ein beliebiges Paar aus einer Gästeschar am gleichen Geburtstag hat, benötigt man nur 23 Gäste, um die 50 % Wahrscheinlichkeit zu erreichen.

Grund: Die Anzahl möglicher Paare wächst quadratisch während die Anzahl der Übereinstimmungen mit dem Gastgeber nur linear wächst. Diese Erscheinung lässt sich auf Hash-Werte übertragen - die Anzahl der Tage entspricht der Anzahl möglicher Hash-Werte. Für 128 Bit lange Hash-Werte stellt dies bereits eine Möglichkeit dar, es wären "nur" 2 hoch 64 Berechnungen notwendig. Die Kollisionsresistenz steigt logischerweise mit der Bitanzahl des Hash-Wertes. 

=

Hash-Algorithmen

MDx

MD2, MD4 sowie MD5 wurden von RSA Data Security, Inc. entwickelt. Vom Einsatz von MD2 (sehr langsam, kurz) und MD4 (gebrochen) wird abgeraten. MD4 ist der Vorgänger von MD5 und SHA-1. MD5 gilt ebenfalls nicht als kollisionsfrei, ist nichtsdestotrotz weit verbreitet, wenn auch meist nur aus Gründen der Rückwärtskompatibilität. MD5 sollte nicht verwendet werden, wenn man nicht einen guten Grund dafür hat.

=

SHA

Der SHA oder SHS (Secure Hash Standard) ist ähnlich wie MD4 und MD5. Er stammt von der NSA und ist im Rahmen des DSA (Digital Signature Standard) entwickelt worden. SHA-1 erzeugt einen Hash-Wert mit 160 Bit Länge. AUch er wird nicht mehr empfohlen. Heute gebräuchlich ist der SHA-256, SHA-512.

Im Oktober 2012 wurde KECCAK als SHA-3 ausgewählt. Mehr darüber auf NIST.gov

Weitere  Algortihmen sind RIPEMD oder Tiger, der Protokollen wie IPSEC-IKE Anwendung fand.

=

Passwortverschlüsselung

Wenn Passwörter verschlüsselt gespeichert oder wenn mit Passwörtern "verschlüsselt" wird, ist zumeist ein Hash-Wert des Passwortes angelegt und dieser Wert dann als Schlüssel (und Initialisierungsvektor) verwendet. Ein Standard dafür ist PKCS#5

=

MAC - Message Authentication Code

Hash-Verfahren finden auch Anwendung in Message Authentication Codes (MACs) Kryptographische Prüfsummen von Daten werden verwendet, um die Integrität von Daten festzustellen, genannt Modification Detection Code, Integrity Check Value oder Message Integrity Code - kryptographische Hash-Werte erfüllen diesen Zweck gut. Man benötigt für einen späteren Vergleich aber die originalen Werte, oder man sichert noch die Authentizität ab - beispielsweise mittels einer digitalen Signatur, wenn man das Public Key Prinzip anwenden möchte - oder mit einem Message Authentication Code, wenn man das Secret Key Prinzip anwenden möchte.

=

Bei Message Authentication Code

wird die Authentizität sichergestellt, indem bei der Erstellung der Prüfsumme noch ein geheimer Schlüssel Eingang findet. Für die Bildung von eines MAC werden Blockchiffren oder Hash-Algorithmen herangezogen.

Bei Blockchiffren wird zumeist der letzte entstandene Chiffreblock als MAC verwendet, der Blockchiffre muss im CBC-Modus betrieben werden, z.B. CBC-Mac, DES-Mac,...

MAC auf Basis von Hash-Algorithmen nennt man keyed Hash Message Authentication Codes (HMAC). Dabei wird der geheime Schlüssel als "Initialisierungsvektor" bzw. als erster Block für die Hash-Funktion verwendet, z.B. HMAC/SHA-1, HMAC/MD5,... RFC 2104, FIPS 198

=

Cyclic Redundancy Check

CRC ist ein Verfahren um Fehler in einer Übertragung oder der Bearbeitung (Kopieren) von Daten aufgetreten sind. CRC sind kein Integritätsschutz sondern lediglich Prüfsummen zur Fehlererkennung, da beabsichtigte Modifikationen von Daten und Prüfsummen möglich sind, in Zusammenspiel mit Stromchiffren sind sogar Modifikationen im Chiffretext möglich, was bei WEP der Fall ist.

=