Kryptographie in der IT - Empfehlungen zu Verschlüsselung und Verfahren

Seite 2: Hashes und MACs

Inhaltsverzeichnis

Kurz: Nimm SHA-256.

Ein zentraler Krypto-Baustein sind kryptografische Hash-Funktionen. Sie kommen zum Einsatz, um sicherzustellen, dass Daten etwa bei einer Übertragung nicht verändert wurden; gelegentlich finden sich auch Hash-Werte als Kontrollangabe bei Download-Angeboten. Außerdem speichern moderne Systeme statt Passwörtern nur deren Hashes.

Eine Hash-Funktion erzeugt aus einem beliebig großen Datensatz eine Art Fingerabdruck von beispielsweise 256 Bit, der als hochsichere Prüfsumme fungieren kann. Denn jede noch so kleine Änderung an den Daten ändert den Hash-Wert. Man kann außerdem für einen vorgegebenen Hash-Wert (mit endlichem Aufwand) keinen Datensatz finden, der diesen Hash-Wert ergibt.

Noch schwerer zu erfüllen, aber wünschenswert ist die Kollisionsresistenz: Es ist praktisch nicht durchführbar, zwei Nachrichten zu finden, die den gleichen Hash-Wert erzeugen. Diese Eigenschaften sind erforderlich, damit ein Hash-Wert nicht nur gegen versehentliche Veränderungen, sondern auch vor absichtlichen Fälschungen schützt.

Konkret nutzt man häufig Message Authentication Codes (MACs beziehungsweise Hashed MACs, HMACs), bei denen zusätzlich zu den Daten noch ein Geheimnis in den Hash-Vorgang mit eingeht. Dieses Geheimnis kennen nur Absender und Empfänger. Stimmt beim Check des Empfängers der selbst berechnete MAC mit dem mitgeschickten MAC überein, stammen die Daten tatsächlich vom erwünschten Absender und wurden unterwegs nicht verändert.

MD5, lange Zeit eine der am weitesten verbreitete Hash-Funktion, ist geknackt und sollte nicht mehr zum Einsatz kommen. SHA-1 ist wegen mangelhafter Kollisionsresistenz ebenfalls problematisch und sollte insbesondere bei neuen Projekten vermieden werden. Dafür hat sich das durch die erfolgreichen Angriffe auf SHA-1 angeschlagene Vertrauen in dessen eng verwandten Nachfolger SHA-2 gefestigt. Dessen Varianten SHA-256, SHA-384 und SHA-512 gelten als sicher.

Sollten sich doch Schwächen in SHA-2 finden, steht mit SHA-3 aka Keccak auch bereits ein Nachfolger mit einem komplett anderen Aufbau bereit. Die Hauptkritik an SHA-3 gilt dem recht hohen Ressourcenbedarf; in diesem Bereich punktet Blake2, dessen Vorgänger erst im Finale des SHA-3-Shootouts gegen Keccak den Kürzeren zog. Ein Exot ist der ebenfalls standardisierte MAC Poly1305; er setzt statt einer Hash-Funktion das symmetrische Verschlüsselungsverfahren AES ein, um seine Prüfcodes zu erstellen.

Für das Speichern von Passwörtern sollte man keine Hash-Funktionen direkt verwenden, sondern stattdessen Verfahren wie PBKDF2, bcrypt oder scrypt einsetzen. Die sind absichtlich so konzipiert, dass ein Passwort-Test möglichst viel Ressourcen benötigt. Sie erreichen dies unter anderem, indem sie viele Iterationen über Hash-Operationen durchführen. Auch für das Erzeugen von geheimen (AES-)Schlüsseln aus Passwörtern sind diese PBKDF2, bcrypt und scrypt das Mittel der Wahl.

Fazit: Bei den Hash-Funktionen und MACs ist alles im grünen Bereich. Es sind ausreichend Reserven vorhanden, um auch auf Überraschungen angemessen zu reagieren.