7 min read

Mathematik

Mathematik
Photo by Thomas T / Unsplash

Wieso brauche ich eigentlich Mathematik, um ein gutes Paßwort zu wählen? Geht das nicht auch ohne Mathe? Mathe ist ein A...

Stimmt. Die Mathematik hier richtet sich auch mehr an Menschen, die Richtlinien zu Paßworten schreiben (und das BSI, das mich initial zu dieser Seite hier motiviert hat). Diese Menschen sollten verstehen, worüber sie Vorgaben machen und die Implikationen ableiten können - nur so entsteht sinnvolles Risikomanagement.

tl;dr

Paßworte sollen resistent gegen Brute Force-Angriffe werden. Dafür ist wichtig, die Anzahl der möglichen Kombinationen von Buchstaben und Zahlen in einem Paßwort möglichst hoch anzusetzen. Dies kann durch 2 verschiedene Möglichkeiten geschehen:

  • viele Zeichen als Kombinationsgrundlage (z.B. Kleinbuchstaben, Großbuchstaben, Zahlen, Sonderzeichen, UTF-8, ...)
  • hohe Länge des Paßworts, mindestens 16 Zeichen

Insgesamt ist die Länge eines Paßworts wichtiger als die möglichen verschiedenen Zeichen. Oder, wie es ein Freund von mir ausdrückte:

length >> complexity

Daher folgende einfache Ratschläge:

  • nutzt einen Paßwortmanager
  • erstellt Paßworte mit mindestens 32 Zeichen
  • nutzt MFA, wo immer möglich (optimalerweise nicht im Paßwortmanager integriert, aber das wäre immer noch besser als kein MFA)
  • schützt euer E-Mail-Konto so stark es nur geht - wird das geknackt, können normalerweise alle anderen Accounts darüber ebenfalls zurückgesetzt werden

Hintergründe

Warum also werden überall lange Paßwörter gefordert, was ist der Sinn davon? In Schutz von Paßwörtern ist erklärt, wie diejenigen, die Paßwörter speichern, diese schützen können. Angreifer wollen aber trotzdem wissen, was euer Paßwort ist. Und hier kommt dann mein Liebling ins Spiel:

Statistik

Wichtig an dieser Stelle ist, daß ich ausschließlich von statistischen Wahrscheinlichkeiten rede, ein Paßwort erfolgreich zu knacken. Selbst, wenn mein Paßwort aus 200 Zeichen aus dem (trad.) Chinesischen, dem Kyrillischen, den Klingonischen und aus Tengwar besteht, kann es immer noch durch einen saudummen Zufall passieren, daß genau dieses Kennwort als erstes ausprobiert wird. Da helfen dann alle Regeln, Längen, etc. nicht, dann ist das Paßwort geknackt, da helfen dann alle Sonderzeichen nicht.

Wenn ich in den nächsten Zeilen Berechnungen anstelle, berechne ich immer die Gesamtzahl der möglichen unterschiedlichen Paßwörter, die ein Angreifer maximal ausprobieren muß, um erfolgreich zu sein. Daß die Wahrscheinlichkeit, daß das nächste Paßwort nun endlich das richtige ist, mit jedem Fehlversuch steigt, sollte offensichtlich sein. Wie viele Möglichkeiten gibt es nun also?

Kombinatorik

Aus der Kombinatorik wissen wir:

upload in progress, 0
Anzahl Kombinationen = Möglichkeiten hoch Stellen

Das bedeutet, wenn wir eine PIN mit 4 Stellen haben und nur die Ziffern 0-9 nutzen können, haben wir

upload in progress, 0
Anzahl Kombinationen = 10⁴ = 10 x 10 x 10 x 10 = 10000

Um im folgenden Text ein paar Berechnungen anstellen und Beispiele vergleichen zu können, definieren wir ein paar verschiedene Gruppen von Buchstaben, Ziffern, Sonderzeichen:

Abkürzung Bezeichnung genutzte Zeichen Möglichkeiten
\d Ziffern 0-9 10
\l Kleinbuchstaben a-zäöüß 30
\u Großbuchstaben A-ZÄÖÜ 29
\s Sonderzeichen «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 33

Die Abkürzungen habe ich zugegebenermaßen geklaut, allerdings dabei auch minimal angepaßt. Wenn euch das also einerseits irgendwoher vertraut vorkommt, andererseits aber falsch vorkommt, könntet ihr mit beidem richtig liegen. Dabei sind Umlaute so ein Sonderdings, die von internationalen Angreifern möglicherweise übersehen werden. :)

Diese Gruppen können nun noch beliebig kombiniert werden:

Abkürzung Bezeichnung Möglichkeiten
\d\l Ziffern+Kleinbuchstaben 40
\d\u Ziffern+Großbuchstaben 39
\d\s Ziffern+Sonderzeichen 43
\l\u Kleinbuchstaben+Großbuchstaben 59
\l\s Kleinbuchstaben+Sonderzeichen 63
\u\s Großbuchstaben+Sonderzeichen 62
\d\l\u Ziffern+Kleinbuchstaben+Großbuchstaben 69
\d\l\s Ziffern+Kleinbuchstaben+Sonderzeichen 73
\d\u\s Ziffern+Großbuchstaben+Sonderzeichen 72
\l\u\s Kleinbuchstaben+Großbuchstaben+Sonderzeichen 92
\d\l\u\s Alle zusammen 102

Die klassischen Paßwortregeln (Großbuchstabe, Sonderzeichen, Ziffer) sollen nun sicherstellen, daß das Paßwort aus Gruppe \d\l\u\s landet. Diese Gruppe hat bei 8 Stellen 11.716.593.810.022.656 verschiedene Kombinationenmöglichkeiten. Dafür hat die Gruppe \l (Kleinbuchstaben) bei 11 Stellen 17.714.700.000.000.000 bereits mehr Kombinationen. Und 16 Ziffern haben 10.000.000.000.000.000 Kombinationen, was auch nah dran ist. Hier zeichnet sich bereits ein Muster ab:

length >> complexity

Heutzutage stolpere ich häufig über Vorgaben, mindestens 12 Zeichen zu nutzen. Auch wenn ich persönlich das für zu kurz halte und dringend längere Paßwörter empfehle, möchte ich hier einmal darstellen, wie viele verschiedene Kombinationsmöglichkeiten die einzelnen Gruppen bei 12 Zeichen haben:

Gruppe Möglichkeiten anders bezeichnet
\d 1.000.000.000.000 1 Billion
\l 531.441.000.000.000.000 531 Billiarden
\u 353.814.783.205.469.041 353 Billiarden
\s 1.667.889.514.952.984.961 1,7 Trillionen
\d\l 16.777.216.000.000.000.000 16 Trillionen
\d\u 12.381.557.655.576.425.121 12 Trillionen
\d\s 39.959.630.797.262.576.401 40 Trillionen
\l\u 1.779.197.418.239.532.716.881 1,8 Quadrillionen
\l\s 3.909.188.328.478.827.879.681 3,9 Quadrillionen
\u\s 3.226.266.762.397.899.821.056 3,2 Quadrillionen
\d\l\u 11.646.329.922.777.311.412.561 11 Quadrillionen
\d\l\s 22.902.048.046.490.258.711.521 22 Quadrillionen
\d\u\s 19.408.409.961.765.342.806.016 19 Quadrillionen
\l\u\s 367.666.387.654.882.241.806.336 367 Quadrillionen
\d\l\u\s 1.268.241.794.562.545.318.301.696 1,3 Quadrilliarden

In der größten Gruppe \d\l\u\s sind das 1,268 Quadrilliarden Kombinationen, die ein Angreifer ausprobieren muß, um garantiert ein Ergebnis zu haben. Reminder: In dem Moment, wo der Angreifer das richtige Paßwort testet, brauchen alle anderen Paßwörter nicht mehr getestet werden. Es geht hier also rein um Wahrscheinlichkeiten - und die sollen für den Angreifer minimiert werden bei gleichzeitiger Maximierung der Rechenaufwandes.

Äquivalente Paßwörter

Wenn es nun also Mathe ist, mit der man hier arbeiten muß, dann gibt es natürlich auch obskure Wege, mit denen man ausrechnen kann, wie viele Zeichen eine der Gruppen in einem Paßwort haben muß, damit es genau so viele Kombinationsmöglichkeiten gibt wie in einem Paßwort, das einer anderen Gruppe angehört und eine vorgegebene Länge hat, oder?

Jap, und dafür reicht Oberstufenmathematik zur Bestimmung. Dafür seien M1, M2 Anzahl der Möglichkeiten in Paßwort 1 bzw. 2, S1, S2 Anzahl der Stellen in den jeweiligen Paßworten und F der Faktor, mit dem man S2 multiplizieren muß, um auf die gleiche Anzahl an Kombinationen zu kommen.

upload in progress, 0
Herleitung der Formel F gleich log M1 durch log M2

Wenn ich nun also wissen möchte, wie lang ein Paßwort aus einer bestimmten Gruppe sein muß, um gleich viele Kombinationsmöglichkeiten zu haben wie ein Paßwort aus einer anderen Gruppe, kann ich das einfach einsetzen. Was an dieser Formel spannend zu sehen ist, ist, daß der Unterschied einzig und alleine von den Möglichkeiten innerhalb der verschidenen Gruppen abhängig ist, nicht aber von der Länge des Paßwortes selbst.

Im Folgenden wird Gruppe \d\l\u\s als Referenzgruppe genutzt. Die Paßwortlänge in den anderen Gruppen muß um den angegebenen Faktor verlängert werden, um ein Paßwort zu haben, das identisch viele Kombinationsmöglichkeiten hat.

Gruppe Möglichkeiten Faktor
\d 10 2.009
\l 30 1.360
\u 29 1.373
\s 33 1.323
\d\l 40 1.254
\d\u 39 1.262
\d\s 43 1.230
\l\u 59 1.134
\l\s 63 1.116
\u\s 62 1.121
\d\l\u 69 1.092
\d\l\s 73 1.078
\d\u\s 72 1.081
\l\u\s 92 1.023
\d\l\u\s 102 1

Brute Force-Resistenz

Was bringt mir das nun alles? Jetzt kann ich realistische Aussagen machen, welche Gruppen von erlaubten Zeichen einen vergleichbaren Schutz bringen wie Paßwörter aus anderen Gruppen, wenn ich die Länge entsprechend anpasse. Wenn ich also ein Paßwort mit 12 Zeichen aus Gruppe \d\l\u\s habe, muss ich 12*2.009 ≈24 Zeichen nutzen, wenn ich nur Ziffern verwende, um einen gleichwertigen Schutz (aus Sicht der Statistik!) zu haben.

Durch den Einsatz Brute-Force resistenter Hashing-Algorithmen (z.B. Argon2id, PBKDF2, siehe OWASP) ist es hochgradig aufwendig geworden, Angriffe gegen Hashes zu fahren, so daß neben Geheimhaltung von Paßwörtern nur ein Punkt wichtig bleibt: Hochdrehen der Möglichkeiten, die ein Paßwort haben kann. Dafür gibt es die o.g. 2 Möglichkeiten:

  • Länge
  • Komplexität

Wie dieser Artikel insgesamt aufzeigt, ist die Erhöhung der Komplexität nicht annähernd so effektiv wie die Erhöhung der Länge. Daher sei wiederholt:

length >> complexity

Die NIST schreibt dazu übrigens auch:

The most important part of a good password is its length.

An dieser Stelle sei mir noch ein ganz allgemeiner Hinweis zu Exponentialfunktionen gestattet: Funktionen wachsen einfach schneller, wenn man den Exponenten erhöht, nicht wenn man die Basis modifiziert. So hätte man das alles sehr kurz zusammenfassen können. :o)

Regelmäßige Änderung von Paßwörtern

Studien haben gezeigt, daß bei erzwungener Änderung von Paßwörtern nach Ablauf einer gewissen Zeit, wie es immer noch in vielen Unternehmen Vorgabe ist, Menschen zu einfachen Mustern tendieren ("Passwort2025Q3!", "Herbst#2025", ...) und damit die Sicherheit aktiv gefährden. Daher raten Cybersicherheitsinstitutionen seit ca. 2015 davon ab, Paßwortänderun per Vorgabe nach Zeit regelmäßig zu erzwingen:

Das ändert natürlich nichts daran, daß bei Verdacht auf Kompromittierung ein Paßwort unverzüglich geändert werden muß!

Paßphrasen

Eine vollkommen andere Möglichkeit ist, schlicht zufällige Begriffe aus einem Wörterbuch zu nutzen und diese vielleicht der Lesbarkeit halber mit Bindestrich oder Leerstelle zu trennen.

Je nachdem, welches Wörterbuch ich heranziehe, gibt es unterschiedlich viele Einträge, die zu einem unterschiedlichen Faktor führen, wenn man erneut auf die Gruppe \d\l\u\s bezieht. Die letzte Spalte in der Tabelle ist erneut auf ein 12 Zeichen langes Paßwort bezogen.

Lexikon Einträge Faktor Anzahl Wörter
Brockhaus 300.000 0,367 4,401 ≈ 5
Wikipedia (deutsch) 3.061.812 0,310 3,716 ≈ 4
Wikipedia (englisch) 5.000.811 0,300 3,598 ≈ 4

(Quelle: https://de.wikipedia.org/wiki/Wikipedia:Gr%C3%B6%C3%9Fenvergleich)

Wenn ich also 4 Mal auf "Zufälliger Artikel" klicke und diese Begriffe hintereinander schreibe (und diese Begriffe insgesamt mit Trennzeichen mindestens ca. 16 Zeichen lang sind), ist das von vergleichbarer Sicherheit wie 12 Zeichen Zufallspaßwort aus allen o.g. Charaktergruppen. Vergleiche hierzu auch XKCD.

Fazit

Macht Paßwörter lang, mindestens 16 Zeichen (und gerne mehr als nur Ziffern), lieber 24 Zeichen oder länger. Oder wechselt auf Paßphrasen. Oder auf Passkeys, die aber nicht Teil dieser Webseite sind.