Passwortregeln

Wer sich schon einmal irgendwo registriert hat, kennt Passwortregeln: 8 Zeichen, Großbuchstaben, Kleinbuchstaben, Sonderzeichen, … Aber sind diese Regeln wirklich sinnvoll und was sind gute Passwortregeln?

Dafür sollten wir uns erst einmal die Frage stellen, was das Ziel von Passwortregeln ist. Anwendungen haben Passwortregeln, um Benutzer davor zu bewahren, schlechte Passwörter zu wählen. Die in den meisten Fällen mit Abstand beste Lösung wäre der Einsatz von Passwortmanagern und zufällig generierten Passwörtern. Doch da die Entwickler keinen Einfluss darauf haben, wie die Benutzer ihre Passwörter verwalten, sollen Passwortregeln die Benutzer in die richtige Richtung steuern. Doch welche Regeln sind hierfür sinnvoll und welche weniger?

Weniger ist mehr

Viele traditionelle Passwortregeln schaden mehr, als sie nützen. So führt z. B. ein Maximalalter für Passwörter dazu, dass sich Benutzer immer wieder ein Passwort neu einprägen müssen. Damit schafft diese Regel einen Anreiz Passwörter zu wählen, die einfach zu merken sind, und führt so insgesamt zu schlechteren Passwörtern. Monate, Jahreszeiten oder Jahreszahlen sind dadurch häufig Bestandteil von Passwörtern und vereinfachen Angriffe so deutlich.

Anstelle Benutzer dazu zu zwingen ihr Passwort regelmäßig zu ändern, sollte dies Situationen vorbehalten sein, in denen es einen Anfangsverdacht gibt, ein Passwort könnte kompromittiert worden sein.

Aber auch Regeln zur Zusammensetzung des Passworts führen nicht unbedingt zu besseren Passwörtern. Wer hatte noch nie ein Passwort, das auf 1! oder ähnliches endete, nur um noch die vorgeschriebene Ziffer und das Sonderzeichen unter zu bekommen?

Doch welche Regeln führen wirklich zu besseren Passwörtern?

Zum einen die Passwortlänge, denn die Anzahl der möglichen Passwörter wächst exponentiell mit der Länge des Passworts. Zum anderen, sollten Passwörter vermieden werden, die bereits kompromittiert wurden, und daher in Wörterbüchern von Angreifern auftauchen können.

Etwas Mathematik

Diese Überlegungen können wir auch mit Zahlen untermauern. Wer nur an unserer Empfehlung interessiert ist, kann diesen Abschnitt gerne überspringen.

Im folgenden betrachten wir den ASCII-Zeichensatz mit jeweils 26 Groß- und Kleinbuchstaben, 10 Ziffern und 33 Sonderzeichen. Um die Berechnungen übersichtlich zu halten betrachten wir nur Passwörter mit genau 8 Zeichen.

Mit diesen Annahmen können wir die Anzahl der möglichen Passwörter berechnen:

$$\begin{aligned}|P_{\text{no restrictions}}| = (N_{\text{upper}} + N_{\text{lower}} + N_{\text{number}} + N_{\text{special}})^8 = 6634204312890625 \approx 6.6 \cdot 10^{15} \end{aligned}$$

Wenn wir jetzt jeweils mindestens ein Zeichen aus den vier Klassen Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen haben wollten, wird die Formel etwas länger:

\begin{aligned}|P_{\text{4 character classes}}| = &(N_{\text{upper}} + N_{\text{lower}} + N_{\text{number}} + N_{\text{special}})^8 \\ - & (N_{\text{upper}} + N_{\text{number}} + N_{\text{special}})^8 - (N_{\text{lower}} + N_{\text{number}} + N_{\text{special}})^8 - (N_{\text{upper}} + N_{\text{lower}} + N_{\text{special}})^8 - (N_{\text{upper}} + N_{\text{lower}} + N_{\text{number}})^8 \\ + & (N_{\text{upper}} + N_{\text{lower}})^8 + (N_{\text{upper}} + N_{\text{number}})^8 + (N_{\text{upper}} + N_{\text{special}})^8 + (N_{\text{lower}} + N_{\text{number}})^8 + (N_{\text{lower}} + N_{\text{special}})^8 + (N_{\text{number}} + N_{\text{special}})^8 \\ - & (N_{\text{upper}})^8 - (N_{\text{lower}})^8 - (N_{\text{number}})^8 - (N_{\text{special}})^8 \\ = & 3025989069143040 \approx 3.0 \cdot 10^{15} \end{aligned}

Mit der Einschränkung auf mindestens vier Zeichenklassen haben wir die Anzahl der möglichen Passwörter mehr als halbiert.

Wenn wir weitere Beschränkungen einführen, wie z. B. keine aufsteigenden oder absteigenden Zahlenfolgen, reduzieren wir die Möglichkeiten weiter. Diese Reduzierung kann im Ausgleich für bessere Passwörter durchaus vertretbar sein. Aber führen die Regeln wirklich zu besseren Passwörter?

Für die nächste Überlegung nehmen wir den Mensch mit auf: Was passiert, wenn wir davon ausgehen, dass der User einer einfachen Strategie folgt, um die Anforderungen zu erfüllen? Wir gehen davon aus, dass der User ein Passwort gewählt hat, das mit einem Großbuchstaben beginnt, ansonsten nur aus Kleinbuchstaben besteht und am Ende eine Ziffer und ein Sonderzeichen enthält:

$$|P_{\text{strategy}}| = N_{\text{upper}} \cdot (N_{\text{lower}})^5 \cdot N_{\text{number}} \cdot N_{\text{special}} = 101942206080 \approx 1.0 \cdot 10^{11} $$

Mit dieser Strategie stehen nur noch etwas mehr als ein \( \frac{1}{30.000} \) der möglichen Passwörter zur Verfügung. Dies ist vergleichbar mit einem Passwort, dass nur aus Kleinbuchstaben besteht (\( 2.1 \cdot 10^{11}\) Möglichkeiten) und deutlich schlechter als z. B. ein Passwort, das aus 10 Kleinbuchstaben besteht (\( 1.4 \cdot 10^{14}\) Möglichkeiten). Der Sicherheitsgewinn durch die Regelung ist vernachlässigbar im Vergleich zur allgemeinen Passwortlänge.

Passwortlänge

Wenn die Passwortlänge das ausschlaggebende Kriterium ist, führt das natürlich zu Frage, was die richtige Passwortlänge ist. Hier treffen Sicherheitsüberlegungen und Praktikabilität aufeinander: Während 8 Zeichen auch bei einem vollständig zufällig gewählten Passwort bereits anfällig für offline-Angriffe sind, wird es mit zunehmender Länge immer schwieriger sich das Passwort zu merken.

Während eine Mindestlänge von 10 oder 12 Zeichen die Sicherheitsmarge natürlich verbessern würde, wird es bei der Länge für die Benutzer bereits schwierig sich eine Vielzahl an Passwörtern zu merken. Für Benutzer ist hier die Lösung ein Passwortmanager, der ohne Mehraufwand auch Passwörter von 20 oder mehr Zeichen handhabbar macht. Als Entwickler kann man sich darauf aber leider nicht verlassen.

Um offline-Angriffe zu erschweren, ist es essentiell geeignete Passwort-Hashing-Verfahren, wie Argon2 oder PBKDF2, und einen Salt zu verwenden. Gleichzeitig sollten Passwörter, insbesondere für Anwendungen mit erhöhtem Schutzbedarf, nicht als einziger Faktor zur Authentifizierung eingesetzt werden. Eine Zwei-Faktor-Authentisierung (2FA) reduziert das Risiko eines erfolgreichen Angriffs auf die Authentifizierung deutlich und sollte damit standardmäßig von allen Anwendungen unterstützt werden.

Best Practice

Eine gute Grundlage für Passwortregeln sind die Empfehlungen der NIST Special Publication 800-63B, die sich grob folgendermaßen zusammen fassen lassen:

  • Passwörter müssen mindestens 8 Zeichen enthalten.
  • Keine Beschränkung der maximalen Länge (oder mindestens 64 Zeichen).
  • Alle druckbaren ASCII-Zeichen müssen zulässig sein.
  • Unicode-Zeichen sollen zulässig sein.
  • Bekannte schwache Passwörter sollten nicht zulässig sein.

Bekannte schwache Passwörter sind z. B.:

Allgemein bieten Passwörter langfristig alleine keine ausreichende Sicherheit. Daher sollte jedes System, dass Authentifizierung mittels Passwort anbietet, den Benutzern die Möglichkeit für Zwei-Faktor-Authentisierung anbieten.