Sensation

- vermeintlich sicherer NIST-Standard SHA-1 nach über 20 Jahren geknackt.

Challenge

Der erste Finder einer 128-Byte Kollision der Hashfunktion MD7, wie hier beschrieben, gewinnt tausend Euro!

MD7

Tipp: Mobile Verschlüsselung

MD7 - Prüfwert

Der perfekte Prüfwert, sicher und einfach! Kein anderes Verfahren ist zugleich sicher und derart einfach zu verwenden und mit geringem Aufwand in eine Webanwendung zu integrieren.

Quellcode in Javascript




Beliebigen Text eingeben und MD7 berechnen!
MD7 (28.09.2016)

Sicherheit

MD7 basiert auf der Spritz-Chiffre. Es werden aber 9 statt nur 4 Zeiger verwendet, mit jeweils 9 Bits (29 = 512). Die Zeichen (Bytes) der Nachricht haben dagegen nur 8 Bits. Die Zeichen der Nachricht werden in vier Runden mehrfach benutzt. Eine gezielte Veränderung der Zeigerstellungen und 512 s-Werte durch eine manipulierte Nachricht ist daher nicht möglich.

Es ist daher praktisch unmöglich unterschiedlichen Daten mit identischem MD7-Prüfwert zu finden. Mit anderen Worten MD7 ist kollisionssicher oder kollisionsresistent. Die Sicherheit wurde in dieser Javascript-Variante noch verbessert. Dazu wird die Länge der Nachricht (lx) sowie das erste und letzte Zeichen zur Initialisierung benutzt. Daher muss die Nachricht mindestens ein Zeichen enthalten. Zum Auffinden zufälliger Kollisionen sind bei MD7 mit 256 Bits Output etwa 2128 Prüfwert-Berechnungen erforderlich, was praktisch nicht möglich ist.

Zweck

Die Hashfunktion MD7 ist als Ersatz für die Hashfunktionen MD5 von Ron Rivest gedacht, da MD5 nach heutigem Stand nicht mehr kollisionssicher ist. Wird von selbst erstellten Daten ein Prüfwert erstellt, kann MD5 weiterhin verwendet werden, da es praktisch unmöglich ist, die Daten derart zu verändern, dass der MD5-Prüfwert unverändert bleibt. Es können aber unterschiedliche Daten derart präpariert werden, dass der MD5-Prüfwert identisch ist. Bei MD7 ist auch dies praktisch ausgeschlossen. Neben MD7 können auch SHA-1, SHA-2 sowie RIPEMD mit mindestens 160 Bits und einige weitere Hashfunktionen wie Spritz-Hash mit über 128 Bits benutzt werden.
SHA-1 wird oft als nicht mehr sicher eingestuft. 2017 wurden tatsächlich Kollisionen entdeckt. SHA-256 aus der SHA-2-Familie benutzt wie MD5 nur 64 Runden, statt 80 wie SHA-1. SHA-512 ist mit 80 Runden sicherer, aber auf den meisten Rechnern auch deutlich langsamer als SHA-1. Die Implementierung von SHA-512 mit 64-Bit-Operationen ist sehr komplex, in Javascript nur sehr schwer zu implementieren. Aber nichts ist unmöglich.


Vorteil - einfache Programmierung

MD7 ist besonders einfach mit Skriptsprachen wie Javascript, siehe rot markierten Quellcode oben, oder Python zu realisieren. Ebenso einfach ist die Realisierung in der C-Programmiersprache, die in besonders effiziente Maschinensprache übersetzt (compiliert) wird.

Weitere Programmiersprachen

Weitere Informationen (Links)