Um die Sicherheit von Passwörtern zu erhöhen ist es sinnvoll diese zu verschlüsseln. Einwegverschlüsselungsverfahren [I] sind dazu gut geeignet. In diesem Abschnitt werden zwei der wichtigsten Vertreter beschrieben. In PHP sind diese über die Funktionen "md5()" beziehungsweise "crypt()" implementiert.
Das DES-Verfahren [II] war viele Jahre lang das Standard-Verschlüsselungsverfahren in den Vereinigten Staaten. Mit der Steigerung der Rechenleistung, welche in den letzten Jahren zu beobachten war, gilt das einfache DES-Verfahren inzwischen jedoch nicht mehr als sicher. Als sichere Modifikation gilt die dreifach Verschlüsselungsvariante "Triple-DES". Als Nachfolgeverfahren für DES wurde vom US-amerikanischen National Institute of Standards das so genannte RIJNDAEL-Verfahren AES [III] gewählt.
DES ist ein Verfahren welches auf der Binärdarstellung des Klartextes arbeitet. Es erzeugt zunächst eine initiale Permutation dieser Binärdarstellung. Anschließend wird eine Blockchiffre zur Verschlüsselung angewendet. Das DES-Verfahren ist eine Feistel-Chiffre. Feistel-Chiffren wenden mehrmals nacheinander eine interne Blockchiffre auf Teile der Nachricht an um eine Folge von Rundenschlüsseln zu erzeugen.
Für die Sicherheit von Feistel-Chiffren ist die Sicherheit der verwendeten internen Blockchiffre von entscheidender Bedeutung. Zurzeit wird DES immer noch als sicher genug für die meisten Alltagsanwendungen betrachtet und das Verfahren wird in vielen Umgebungen weiterhin verwendet. Beispielsweise findet DES Anwendung auf Unix-Systemen zur Authentifizierung von Nutzern.
Der MD5-Algorithmus [IV] gehört zur Gruppe der Hashverfahren. Wichtig für die Sicherheit eines Hashverfahrens ist die Eigenschaft der Kollisionsfreiheit. Eine Kollision besteht immer dann, wenn für zwei verschiedene Klartexte der gleiche Chiffretext erzeugt wird. Falls eine Kollision gefunden wird, so ist es möglich mit Hilfe geeigneter Verfahren den Klartext zu berechnen. Es ist bekannt, dass MD5 nicht kollisionsfrei ist. Jedoch ist unbekannt, ob es überhaupt irgendeine Kompressionsfunktion gibt, welche gar keine Kollisionen aufweist. Daher gilt es für die Praxis als ausreichend, wenn es hinreichend schwierig ist eine Kollision zu finden. Derartige Verfahren werden als "kollisionsresistent" bezeichnet. Ebenso wichtig ist die Geschwindigkeit des Algorithmus, denn die Verschlüsselung selbst sollte – um für die Authentifizierung geeignet zu sein – möglichst effizient arbeiten.
Name des Verfahrens | Blocklänge in Bit | Geschwindigkeit in Prozent |
---|---|---|
MD4 | 128 | 100 |
MD5 | 128 | 68 |
RIPEMD-128 | 128 | 39 |
RIPEMD-160 | 160 | 24 |
Vergleich der Performance verschiedener Authentifizierungsverfahren
Die Sicherheit von MD5 ist inzwischen jedoch am Wanken [V]. Der Heise-Verlag berichtete zunächst Anfang 2005 darüber, dass es Forschern offensichtlich gelungen ist ein schnelleres Verfahren zur Berechnung von MD5-Hashs zu finden, [VI] wodurch das Auffinden von Kollisionen erleichtert würde. Kurze Zeit später, erschien die Meldung, dass es gelungen sei, unterschiedliche Zertifikate mit gleichem MD5-Hash [VII] zu erzeugen. Nur etwas mehr als ein halbes Jahr danach zeigte sich die vorläufige Spitze der Entwicklung [VIII], als eine Firma erstmals offiziell gegen Bezahlung die Dienstleistung anbot, MD5 und SHA1 Hashes mithilfe im Voraus berechneter Tabellen zu knacken, solange das Honorar stimmt. Es ist somit nur eine Frage der Zeit, wann das MD5-Verfahren für sensible Anwendungen nicht mehr genügend Sicherheit bieten wird.
Auch der eigentlich als sicherer geltende Algorithmus SHA-1 [IX], der mit einer Bitlänge von 160-Bit im Gegensatz zu MD5 mit 128-Bit aufwartet, ist jedoch bereits gebrochen. Wie Schneier berichtete [X], ist es einer Gruppe chinesischer Kryptoanalytiker (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) von der Universität Shandong gelungen, eine Kollision in SHA-0 beziehungsweise SHA-1 zu finden. Für SHA-0 in 2 39 Operationsschritten, sowie für SHA-1 in 2 69 Schritten. Deutlich schneller also als der Brute-Force Ansatz mit etwa 2 80 erforderlichen Operationsschritten.
Das Framework verwendet ebenfalls MD5 zur Verschlüsselung von Passwörtern. Zusätzlich wird SHA-1 zum Erzeugen eindeutiger Session-Ids verwendet. Eine Umstellung der Passwortverschlüsselung von MD5 auf SHA-1 wird zu gegebener Zeit erfolgen.
Thomas Meyer, www.yanaframework.net