Freitag, 3. September 2010 |
Wie sicher sind die in About Security #102 und #103 vorgestellten Hashfunktionen? Zuerst stellt sich dabei die Frage: Was will ein Angreifer erreichen? Es gibt zwei Haupteinsatzgebiete für Hashfunktionen: Digitale Signaturen und Integritätsprüfungen. Im Rahmen einer digitalen Signatur wird die Hashfunktion verwendet, um den zu signierenden Text zu komprimieren: Statt des kompletten Textes wird nur dessen Hashwert signiert ('Hash-then-Sign'-Paradigma). Bei der Integritätsprüfung wird der Hashwert beliebiger Daten berechnet, gespeichert und später mit dem erneut berechneten Hashwert verglichen. Stimmen gespeicherter und berechneter Hashwert überein, wurden die Daten nicht verändert. So kann z.B. die Unversehrtheit von Dateien oder Netzwerkpaketen sichergestellt werden.
Kryptographisch gilt eine Hashfunktion als gebrochen (und damit unbrauchbar), wenn man allgemein Kollisionen berechnen kann. Für einen praktischen Angriff reicht das nicht aus: Ein Angreifer muss eine für ihn brauchbare Kollision berechnen können. Schließlich nutzt es ihm wenig, einen signierten Vertragstext durch eine signierte Buchstabenwüste oder ein ausführbares Programm durch eine nicht ausführbare Datei zu ersetzen.
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
Grundsätzlich ist immer ein Brute-Force-Angriff möglich: Ein
128-Bit-Hashwert kann 'nur'
verschiedene Werte annehmen, ein 160-Bit-Hashwert
– es muss also zwangsläufig viele
Kollisionen geben. Um zu gegebenen
Eingabedaten und zugehörigem Hashwert mit ausreichender
Wahrscheinlichkeit eine Kollision zu finden, müsste man also 'nur' die
Hashwerte für
bzw.
Eingaben berechnen. Mit heutiger Hardware
ein illusorischer Versuch.
'Schneller' geht es, wenn nur irgendeine Kollision gesucht wird, der
Hashwert also beliebig sein kann. Für Hashfunktionen mit einem
128-Bit-Hashwert werden dann
Berechnungen benötigt, bei einem
160-Bit-Hashwert
– ohne dass die
Hashfunktion irgendeine Schwachstelle enthalten muss. Mit
steigender Rechenleistung wird eine Hashfunktion also generell
unsicher(er). Aktuell ist ein Brute-Force-Angriff auf 160-Bit-Hashwerte
aber praktisch unmöglich, und das wird sich in den nächsten
Jahren auch kaum ändern.
Schlechter sieht die Sache aus, wenn die Hashfunktion eine
Schwachstelle
enthält. So können inzwischen Kollisionen in MD4 per Hand
berechnet werden, in SHA-1 wurde der Aufwand auf
Berechnungen reduziert (About Security #103).
Zwar ist auch das noch
eine sehr große Zahl, es besteht aber durchaus die Möglichkeit,
dass sich die Angriffe weiter verbessern lassen.
Beim Angriff auf eine digitale Signatur sind zwei Fälle zu unterscheiden:
Der Aufwand für einen Geburtstagsangriff ist durch die in About
Security #103
erwähnten Angriffe, vor allem dem im August 2006
veröffentlichten Angriff (PDF),
bei dem ein Teil der gefälschten Nachricht frei gewählt werden
kann, deutlich gesunken. Man sollte also sicherheitshalber keine von
Dritten vorgelegten Texte signieren – oder diese vor dem Signieren
abändern. Für bereits signierte Texte besteht noch keine Gefahr,
da die bisher vorgestellten Angriffe nur das Finden zufälliger
Kollisionen erleichtern. Für einen Preimage-Angriff sind immer noch
Berechnungen
notwendig.
Dies gilt entsprechend auch für integritätsgeschützte Daten: Ein Angreifer könnte evtl. zwei Programme mit gleichem Hashwert konstruieren, von denen eines harmlos ist und das andere Schadfunktionen enthält. Zu einem vorhandenen Programm ein Schadprogramm mit identischem Hashwert zu finden, um z.B. einen eingeschleusten Virus zu tarnen, ist dagegen praktisch unmöglich.
Die einfachste Gegenmaßnahme besteht in der Verschlüsselung der signierten bzw. integritätsgeschützten Daten: Wenn der Angreifer die Originaldaten nicht kennt, kann er auch keinen Preimage-Angriff durchführen.
Eine weitere Möglichkeit ist der Wechsel zu einer Hashfunktion mit einem längerem Hashwert, z.B. SHA-256 und längere Varianten. Allerdings steht nicht fest, ob diese nicht ähnliche Schwachstellen wie SHA-0 und SHA-1 enthalten, von denen sie abstammen. Dasselbe gilt für die europäischen RIPEMD-Algorithmen, z.B. RIPEMD-160: RIPEMD, die ursprüngliche Fassung, stammt ebenfalls von MD4 ab und wurde 2004 gebrochen.
Eine Abhandlung über die zurzeit für digitale Signaturen nach dem Signaturgesetz (SigG) als geeignet eingestuften Algorithmen veröffentlicht die Bundesnetzagentur.
Das US-amerikanische 'National Institute of Standards and Technologies' (NIST) hat inzwischen ähnlich wie bei der Entwicklung des DES-Nachfolgers AES (siehe About Security #74) einen Wettbewerb zum Finden eines Nachfolgers für SHA-1 gestartet. Die Veröffentlichung des neuen Standards ist für 2012 geplant.
Damit ist der kurze Exkurs in die Kryptographie abgeschlossen. Ab der nächsten Folge geht es um das Thema 'Mobile Security'.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Kryptographie – Hashfunktionen"