Über die Wahl des richtigen Passworts gibt es schon unzählige Artikel. In diesem Artikel drehen wir die Frage um: Wie erkennt man schlechte Passwörter?
Meine Probleme mit den Anforderungen und gängigen Implementierungen
In unserem Artikel über Passwortregeln haben wir bereits die NIST Special Publication 800-63B erwähnt. Der Absatz, über den ich hier schreiben möchte, ist folgender:
When processing requests to establish and change memorized secrets, verifiers SHALL compare the prospective secrets against a list that contains values known to be commonly-used, expected, or compromised. For example, the list MAY include, but is not limited to:
- Passwords obtained from previous breach corpuses.
- Dictionary words.
- Repetitive or sequential characters (e.g. ‘aaaaaa’, ‘1234abcd’).
- Context-specific words, such as the name of the service, the username, and derivatives thereof.
Diese Empfehlung wurde 2017 veröffentlicht und markierte eine deutliche Kehrtwende in der Art und Weise, wie Anwendungen mit vom Benutzer bereitgestellten Geheimnissen umgehen sollten. Obwohl sie noch nicht überall umgesetzt wird, verabschieden sich immer mehr Anbieter und Anwendungen von willkürlichen Komplexitätsregeln und übernehmen die Empfehlung der NIST.
Da die Empfehlung bezüglich der Implementierungsdetails eher vage ist (die Aufzählungspunkte stellen nur einen möglichen Ansatz dar), gibt es verschiedene Ansätze. Beispiele sind zxcvbn, das von WordPress verwendet wird und ein Orakel für die Passwortstärke bereitstellt, und Microsofts eigene Liste global gesperrter Kennwörter für Azure AD, die sie aber nicht veröffentlichen.
Die meisten Implementierungen dürften jedoch mehr oder weniger dem Vorschlag des NIST folgen. Deshalb möchte ich im Folgenden auf die ersten beiden Punkte eingehen:
- Passwörter aus Datenlecks.
- Wörterbücher.
Passwörter aus Datenlecks (“breach corpus” in der NIST-Empfehlung) sind kompromittiert und Wörter aus Wörterbüchern sind vorhersehbar. Beides sind natürlich schlechte Passwörter. Aber warum genau?
Weil sie von Angreifern für ihre Angriffe verwendet werden. So einfach ist das. Angreifer können entweder alle möglichen Kombinationen von Buchstaben, Zahlen und Sonderzeichen ausprobieren (ein so genannter Brute-Force-Angriff), oder sie können eine Liste wahrscheinlicher Passwörter zusammenstellen. Zum Beispiel aus Quellen, von denen bekannt ist, dass sie als Passwörter verwendet werden: Datenlecks und Wörterbücher.
Beide Vorschläge versuchen also, Wissen über die Vorgehensweisen von Hackern zu nutzen, um bei Angriffen häufig verwendete Passwörter zu approximieren.
Dies führt zur Kernfrage dieses Artikels:
Geht es auch besser?
Im ersten Schritt versuchen wir zu verstehen, welche Passwörter die Angreifer tatsächlich verwenden. Dafür setzen wir bei Lutra Security Honeypots ein und überwachen die Passwörter aller Anmeldeversuche. Auf diese Weise sammeln wir nach und nach eine umfangreiche Liste von Passwörtern, von denen wir wissen, dass sie häufig verwendet werden1.
Ist das die Liste, nach der wir suchen? Schauen wir uns die Top 10 des letzten Jahres an:
root
1234
123456
password
admin
toor
12345
123
qwerty
1
Diese Passwörter sind zweifellos grauenhaft, aber wenn wir davon ausgehen, dass wir sowieso nur Passwörter mit einer Mindestlänge von 8 Zeichen zulassen (sonst sind wir nicht einmal vor einfachen Brute-Force-Angriffen sicher), kommen die meisten sowieso nicht in Frage. Wenn wir den Gedanken auf die Liste anwenden, können wir die Länge der Liste erheblich reduzieren und sie sieht dann folgendermaßen aus:
password
12345678
123456789
admin123
6uPF5Cofvyjcew9
1q2w3e4r
changeme
raspberry
abcd1234
q1w2e3r4
Wenn wir nun etwas weiter nach unten scrollen, sehen wir immer wieder solche Passwörter:
P@ssw0rd
p@ssw0rd
Beide Passwörter sind Variationen von password
, die durch Ersetzen von Buchstaben durch Sonderzeichen oder Zahlen und durch Änderung der Groß- und Kleinschreibung erzeugt wurden. Das sind gängige Methoden, mit denen Angreifer ihre Passwortlisten erstellen. Wenn wir diese Manipulationen rückgängig machen (und sie vor der Prüfung eines Passworts mit der Liste erneut anwenden), könnten wir die Größe der Liste weiter verringern. Dafür müssten wir jedoch Annahmen darüber treffen, welche Manipulationen gängig sind und würden die Prüfung komplizierter machen was ich vermeiden möchte.
Eine Transformation möchte ich dennoch auf die Daten anwenden: Die Groß- bzw. Kleinschreibung. Die Umwandlung aller Passwörter in Kleinbuchstaben reduziert die Größe der Liste um 10-20% und ist auch bei der Überprüfung leicht umzusetzen: einfach das Passwort in Kleinbuchstaben konvertieren, bevor es mit der Liste verglichen wird.
Jetzt haben wir eine Liste der schlechtesten möglichen Passwörter und damit genau das, was wir brauchten, um die Passwortempfehlungen des NIST umzusetzen.
Wo bekomme ich eine gute Liste mit schlechten Passwörtern?
Bei Lutra Security haben wir verschiedene Honeypots, die uns Informationen über die von Angreifern verwendeten Passwörter liefern. Daraus haben wir eine Liste mit den 20 000 am häufigsten vorkommenden Passwörtern zusammengestellt, die mindestens 8 Zeichen lang sind.
Diese Liste stellen wir den Abonnenten unseres Newsletters kostenlos zur Verfügung (auch wir müssen irgendwie Werbung machen 😉):
In der Bestätigungs-E-Mail, die Sie nach der Registrierung erhalten, finden Sie einen Link zu unserem Newsletter Dashboard mit dem Link zum Download.
Ist das alles?
Natürlich nicht. Wie bereits erwähnt, funktioniert die Liste nur in Kombination mit der Anforderung, dass Passwörter mindestens 8 Zeichen lang sein müssen. Außerdem ist die Überprüfung auf kompromittierte Passwörter immer noch eine gute Idee: Diese Passwörter sind im Umlauf und ein Angreifer kann sie verwenden. Dies gilt insbesondere dann, wenn der Angreifer feststellt, dass seine üblichen Passwörter auf Ihrer Website nicht länger akzeptiert werden.
Wenn Sie mit einer statischen Liste von 20 000 Passwörtern arbeiten, bin ich davon überzeugt, dass unsere Liste besser ist als jede Liste, die aus Datenlecks zusammengestellt wurde. HIBP enthält jedoch Hunderte von Millionen von Passwörtern. Nutzen Sie das Beste aus beiden Welten und prüfen Sie nach Möglichkeit mit beidem.
Wir veröffentlichen regelmäßig die 1000 häufigsten Passwörter. ↩︎