MD5 ist keine Verschlüsselung
Immer wieder liest man in Tutorials, Blogs und Kommentaren, man solle seine Daten mit MD5 verschlüsseln. Da diese Aussage schlichtweg falsch ist, denn MD5 ist keine Verschlüsselung, soll es diesmal um das Thema Hash’es und Verschlüsselung als Einstieg gehen.
Erstmal vorweg: Wann und wozu braucht ein Entwickler einen Hash oder eine Verschlüsselung? Nun generell wollen wir unsere Daten erst einmal schützen, und einen Text – wie zum Beispiel ein Passwort – nicht im Klartext speichern. Einen Hash brauche ich dabei bevorzugt immer dann, wenn ich einfach nur prüfen möchte, ob der Benutzer den Text exakt wiederholt angegeben hat. Sobald ich aber auch etwas rückwärts Verwandeln – also Entschlüsseln – möchte, benötige ich eben eine Verschlüsselung.
Hiermit haben wir also auch schon den wesentlichen Unterschied gefunden: Aus einem Hash kann, im Gegensatz zur Verschlüsselung, der ursprüngliche Klartext nicht ermittelt werden. Klingt für Passwörter ideal und das ist es auch in der Tat. Denn erhält eine fremde Person Zugriff auf die Passwort-Hash’es, kann der Angreifer die Klartextpasswörter nicht ohne weiteres ermitteln. Letzteres stimmt nicht ganz, da Angriffsmethoden wie Rainbow-Tables und klassisches BruteForce vor allem für sehr kurze Passwörter durchaus in akzeptabler Zeit eine Klartextermittlung ermöglichen, im Regelfall gelten MD5-Hash’es aber aktuell noch als akzeptabel, entsprechende Passwortlänge vorausgesetzt.
Greifen wir nochmal das Thema Verschlüsselung auf. Die Verschlüsselung baut immer darauf auf, dass es einen Algorithmus für die Ver- und Entschlüsselung gibt. Hierbei wird zwischen asymmetrischer und symmetrischer Verfahren unterschieden, was uns aber im Moment nicht weiter interessieren soll. Entscheidend ist, dass mit einem Schlüssel unser Klartext “gesichert” wird. Um den Klartext wieder zu erhalten, wird eben genau mit diesem Schlüssel (symmetrisch) der eigentliche Klartext ermittelt. Für Passwörter klingt das erst einmal sicher, aber wenn der Angreifer Zugriff auf die verschlüsselten Passwörter hat, dann eventuell oder sehr wahrscheinlich auch auf die Webanwendung die davor geschaltet wird. Das ermöglicht dem Angreifer natürlich anhand der Implementierung abzulesen, welches Verschlüsselungsverfahren zum Einsatz kommt und auch der Schlüssel selbst kann abgelesen werden. Das ganze ist natürlich vereinfacht betrachtet, Sonderfälle lasse ich mal außen vor, auch wenn hierbei die Sicherheit verbessert ausfallen kann.
Anzeige: "Samsung Galaxy S3 mit Android 4.0" jetzt günstig bei Amazon.de kaufen:




