Sichere Passwortspeicherung

Wer einigermaßen aufmerksam durch das Netz surft, hat sicherlich in letzter Zeit die Passwortdiebstähle bei linkedIn, eHarmony oder last.fm mitbekommen. Inzwischen gehen solche Meldungen fast schon in der Masse unter, aber hier gibt es wieder einmal eine Besonderheit: Die Passworte waren mit absolut veralteter Technologie gesichert, so dass die kursierenden Listen schnell geknackt sein werden, wie dieser Artikel sehr schön zeigt. Dies nahm inzwischen eine Amerikanerin zum Anlass, eine Sammelklage gegen linkedIn einzureichen.

Klar, ein Teil der Schuld liegt beim Benutzer, die am schnellsten geknackten Passworte sind triviale Konstrukte wie „asdf“ oder „Password“. Aber wie verhindere ich als Entwickler nun eine solche Katastrophe bei eigenen Anwendungen, und wie aufwändig ist eine wirklich sichere Speicherung von Passworten, so dass ich nicht sofort gehackt werde?

Die gute Nachricht: es ist recht simpel, man muss nur das Verfahren einmal verstanden haben. Der Artikel von crackstation beschreibt das Ganze extrem ausführlich, leicht verständlich und mit Beispielen garniert. Auch ich musste erst einmal nachlesen und lernen, aber genau dafür gibt es ja passende Artikel. Ich fasse hier nur noch einmal die wichtigsten Punkte auf deutsch zusammen, lest unbedingt danach noch das Original.

Regel Nummer 1:
Passworte NIEMALS im Klartext ablegen, immer one-way verschlüsselt, im Regelfall nutzt man dazu Hash-Algorithmen wie SHA256. Sollte man sich auf irgendeiner Website anmelden und in der Bestätigungsmail einmal sein Passwort erhalten, hilft nur: Account direkt löschen, hier ist garantiert kein Hashing verwendet worden.

Regel Nummer 2:
IMMER einen Salt verwenden. Dies bedeutet, das vom Nutzer eingegebene Passwort mit einem Zufallswert ergänzen, der pro Passwort neu berechnet wird. Erst dann das Passwort hashen und speichern.

Regel Nummer 3:
Aktuelle und für die Cryptographie geeignete Algorithmen verwenden. Niemals versuchen, eigene Verfahren zu implementieren, oder solch lustige Dinge wie Mehrfachverschlüsselung oder künstliche Beschränkungen einzubauen. Schon die Enigma wurde deswegen geknackt.

Regel Nummer 4:
Es auch machen und nicht nur darüber lesen!

Codebeispiele für PHP und C# finden sich im Artikel, es zählt also keine Ausrede mehr.

Waidner IT Solutions