Martins key.matiq-Blog
>> Zurück zum Artikelverzeichnis >>
Die Mathematik der Passwortstärke
Geschrieben: 11.01.2024
Letzte Überarbeitung: 31.01.2024
Stichwörter: Kennwörter, Sicherheit
Man sollte niemand über die Schulter schauen, wenn er*sie das Passwort erstellt oder eingibt. Damit dann aber nicht Kennwörter wie "123456789" oder "Passw0rd." herauskommen, können Regeln helfen. Es gibt aber widersprüchliche Regeln. Manche sind direkt kontraproduktiv. Ein bisschen Mathematik hilft hier, die Spreu vom Weizen zu trennen. Keine Angst, alles wird allgemeinverständlich erklärt.
Im Blog-Artikel Fehlinformation habe ich gezeigt, dass selbst jene, die es genau wissen müssten, eine nicht haltbare Empfehlung für die Kennwortwahl verbreiten und dabei die zugrunde liegende Annahme nicht etwa als diskutable Meinung, sondern als Faktum ansehen. Solcher schädlicher Dogmatik möchte ich in der Tradition der Aufklärung nun mit Mathematik begegnen.
Warum Mathematik?
"2 + 2 = 4", das lässt sich doch schlecht bezweifeln, oder? Auch höhere Mathematik, wie z. B. die über das exponentielles Wachstum bei der Ausbreitung von Epidemien in der Anfangsphase kann für die Allgemeinheit hilfreich sein, um zu verstehen, warum man handeln sollte, bevor es zu spät ist. Auch bei der Erkenntnis, dass die Erde eine Kugel ist, half die Mathematik.
Wenn wir die Mathematik der Passwortstärke verstehen, können wir uns selbst ausrechnen, ob unsere Kennwörter stark oder schwach sind. Wir bleiben nicht im Ungewissen und sind auch nicht darauf angewiesen, sie jemand oder einem Dienst zu zeigen.1 Wir müssen dafür niemand unnötig vertrauen.2
Es ist nicht einfach, Mathematik für ein breites Publikum darzustellen. Daher bitte ich die geneigte Leser*in um etwas Geduld: Wem das Folgende zu trival oder langatmig vorkommt, möge solche Passagen bitte einfach überfliegen (für andere könnten sie in dieser Ausführlichkeit nötig sein). Wem es zu schwierig vorkommt, sollte versuchen, es sich über die weiterführende Anmerkungen oder aber durch zusätzliche Internetrecherchen zu erschließen (oder, wenn dies sich als zu schwierig erweisen sollte, mir ein bitte Feedback zu geben).
Mathematiker*innen mögen mir bitte verzeihen, dass ich nicht die unter ihnen übliche Schreibweise verwende (ich denke, dass der Anteil der Leser*innen weit mehr Informatiker*innen als Mathematiker*innen umfassen wird), dass ich versuche, Bedingungen eher im Fließtext unterzubringen, oder dass, wo immer ich denke, dass sich Voraussetzungen oder Schlussfolgerungen intuitiv erfassen lassen, ich auf formale Definitionen und Beweise verzichte und/oder sie abgekürzt und möglichst allgemein verständlich darstelle. Dass ich also die Mathematik, soweit es geht, nur in groben Zügen darstelle, aber dafür auf den Praxisbezug Wert lege. (Sollte ich aber irgendwo schief liegen, oder es eine bessere Herleitung geben, so bitte ich dringend um ein Feedback.)
Fangen wir also an:
Was ist Passwortstärke? Wie kann man sie messen?
Ein starkes Kennwort benötigt sehr viele (in der Praxis: unmöglich viele) Versuche einer Hacker*in, es zu erraten.
Die Zahl der nötigen Versuche wäre also ein Maß für die Stärke. Doch besser (weil einfacher) ist es, nicht die absolute Zahl, sondern den Logarithmus zu berechnen. Wir bevorzugen (wiederum der Einfachheit halber) den binären Logarithmus:
Wenn 1000 Versuche zum Erraten erforderlich sind, ist der binäre Logarithmus ungefähr 10, denn 2 hoch 10 sind etwa 1000 (genau genommen 1024). Sind eine Mio. Versuche nötig, ist der Logarithmus etwa 20. Bei einer Mrd. liegt der Logarithmus bei 30.
Der Logarithmus spiegelt also die Größenordnung der Versuchszahl wider. Und genau das ist es, was wir brauchen. Es geht nicht um Details oder Kleinkram, sondern darum, dass ein Kennwort so stark ist, dass wir keine Sorgen haben müssen.
Wir sprechen bei dem Logarithmus dann von Stärke "in Bits". (Oder auch von Entropie in Bits.3) D. h. ein Kennwort, dass maximal 2 hoch x Versuche zum Erraten benötigt (N_max), hat eine Stärke von x Bits.4
Stärken in Bits addieren sich bei Kombinationen
Wenn wir ein Kennwort aus mehreren Komponenten zusammensetzen, dann addieren sich die in Bits gemessenen Stärken zu einer Gesamtstärke.
Beispiel: Wir nehmen mal als Zeichensatz nur Ziffern (nur der Einfachheit halber, in der Praxis werder wir wohl eher alphanumerische Zeichen nehmen). Dann dürfte jedes Zeichen 10 Möglichkeiten erfordern und hat für sich genommen eine Stärke von etwa 3,32 Bits.
Ein Kennwort aus 3 Ziffern hat also dreimal 3,32 Bits, weil sich diese aufaddieren. Also insgesamt knapp 10 Bits, wie es ja auch bei drei Ziffern, für die es 1000 Möglichkeiten ("000" bis "999") gibt, zu erwarten ist.
Das entspricht der aus der Schule vom früheren Rechenschieber bekannten Regel, dass sich die Logarithmen (bei uns die Stärken in Bits) addieren, wenn sich die ursprünglichen Werte (hier die Anzahlen der auszuprobierenden Kombinationen) multiplizieren.
Konsequenz für die Stärke von generierten Kennwörtern
Ein Kennwort, das nur aus 8 Ziffern besteht und zufällig generiert wurde, hat die Stärke 8 mal 3,32 Bits, was knapp 27 Bits entspricht.
Nehmen wir als Zeichensatz Kleinbuchstaben und Ziffern, so ist die Größe dieses Satzes 36, der binäre Logarithmus (log2) davon etwa 5,17. Acht Zeichen hätten dann eine Stärke von etwa 41,36 Bits. Die Zeichensatzerweiterung hat sich also deutlich gelohnt.
Erweitern wir den Zeichensatz um Großbuchstaben, so haben wir pro Zeichen 5,95 Bits (= log2( 10 + 26 + 26 )) und insgesamt rund 47,6 Bits für ein 8-Zeichen-Kennwort. Wir sehen, dass die neuerliche Zeichensatzerweiterung sich gar nicht mehr so stark auswirkt. Bei einer neuerlichen Erweiterung um 32 Sonderzeichen würden wir gerade mal 52,4 Bits für das Gesamtkennwort erreichen.
Bleiben wir wir dagegen bei den Ziffern, Klein- und Großbuchstaben und verlängern statt dem Zeichsatz das Kennwort nur um ein Zeichen (auf neun Zeichen), so erhalten wir eine Stärke von 53,6 Bits.
Eine starke Erweiterung des Zeichensatzes bringt also nicht einmal soviel mehr an Stärke wie die Verlängerung des Kennwort um nur ein Zeichen. Gleichzeitig würde die Erweiterung auf Sonderzeichen den Aufwand beim Eintippen deutlich mehr erhöhen (häufigeres Umschalten) als die Eingabe eines zusätzlichen alphanumerischen Zeichens.
Wir stellen fest: Wenn der Zeichensatz schon eine gute Größe erreicht hat (wie es bereits bei Kleinbuchstaben und Ziffern der Fall ist), ist es für eine Verstärkung des Kennworts in der Regel effektiver, auf mehr Länge statt auf mehr Komplexität (Vergrößerung des Zeichensatzes) zu setzen.
Der Einzug der Vorhersagbarkeit in die Passwortstärke
Bislang sind wir davon ausgegangen, dass Kennwörter zufällig generiert werden. Doch da bei Kennwörtern, die manuell eingegeben werden müssen, neben der Stärke eines Kennworts auch dessen Merkbarkeit wichtig ist, dürften diese eher selbst kreativ erdacht worden sein.
Hacker*innen haben nun aber eine Ahnung davon, wie die Ersteller*innen von Kennwörtern vorgehen. Immerhin kennen sie bereits viele von den erdachten Passwörtern. Sie probieren also bereits kompromitterte Kennwörter aus, aber auch leicht abgeänderte Varianten oder Zusammensetzungen, aber auch z. B. Kennwörter, die als Beispiele in Artikeln über Passwortsicherheit auftauchen.
Ferner entdecken Hacker*innen auch so manche Regel in den Listen kompromittierter Kennwörter. Z. B. dass viele Kennwörter aussprechbar sind (also Konsonanten und Vokale keineswegs zufällig verteilt sind). Oder dass manche Buchstaben systematisch durch bestimmte Ziffern ersetzt wurden (z. B. "S" durch 5 oder "A" durch "4", oder "E" durch "3", jeweils wegen der ähnlichen Schreibung). Oder dass vulgäre Ausdrücke gerne in Passwörtern verwendet werden oder Schlagwörter, bei denen die Passwort-Autor*innen wohl denken, sie seien besonders schlau, solch offensichtliche Wörter zu benutzen.5
All diese Erfahrungen führen dazu, dass Hacker*innen die Versuche nicht willkürlich reihen, sondern entlang von Wörterbüchern.
Die Hacker*innen nehmen aber auch durchaus die Vorschläge zur Kenntnis, lieber eine Reihe von Wörtern aus einer Liste von allgemeinen Wörtern zu nehmen, die dann zu einer Passphrase kombiniert werden.6
Die allgemeine Formel für die Passwortstärke
Die Formel lautet:7
s_pw = s_c * n - p // (1)
Dabei ist
-
s_pw
: die Gesamtstärke des Kennworts (in Bits), -
n
: die Anzahl der Komponenten, -
s_c
: die (durchschnittliche) Stärke der Komponenten (in Bits), wenn sie denn rein zufällig gewählt worden (sind oder) wären, und -
p
: der Teil der (sonst möglichen) Stärke, der durch Vorhersagbarkeit verloren geht.
Die Formel leitet sich aus allgemeinen Überlegungen über die Stärke von Kennworten und aus statistischen Überlegungen her.8
Wenn die Komponenten alle gleicher Art sind, kann man die gleiche Stärke
(bei zufälliger Wahl) ansetzen. Sind sie unterschiedlicher Art, kann man
statt s_c * n
auch einfach die Summe aller
Einzelstärken ansetzen.
Der Wert p
ist dabei natürlich am unsichersten abzuschätzen. Aber
wir werden ihm schon noch auf die Spur kommen.
Wenn ein Kennwort rein zufällig gewählt wurde, so ist
p == 0
und die Gesamtzahl der Kennwörter mit gleicher Komponentenstärke und Länge
2 ** s_pw
Die benötigte Anzahl der Hackversuche bis zum Erraten des Kennworts beträgt dann im Mittel9
N = 2 ** ( s_pw ) / 2
Umgekehrt ist dann
s_pw = log2( N ) + 1 // (2)
wobei N
die mittlere nötige Versuchszahl ist.
Die Stärke von Passphrasen
Bei Passphrasen wird z. B. vorgeschlagen, eine Liste von 2000 Wörtern zu nehmen, aus diesen vier Wörter zufällig zu wählen und diese vier Wörter dann zu einer Passphrase zu verbinden.10
Wird es genauso gemacht, so ergibt
log2( 2000 )
(etwa) den Wert 11
und wir haben
für die gesamte Phrase eine Stärke von 44 Bits. Das ist allerdings nur etwa
ein Drittel von dem, was wir für ein wirklich starkes Kennwort benötigen.
Will man auf diese Weise eine Passphrase erzeugen, die in der Stärke einem kryptografischen Schlüssel entspricht, so kommt man leicht auf mehr als 80 Zeichen. Keine so praktikable Idee, oder?
Die Alternative "Pseudozufällige Kennwörter"
Wenn man Kennwörter entwickelt,
- die von einer Aussprechbarkeit weit entfernt sind und auch
- von in Wörterbüchern oder irgend im Internet bereits zitierten Namen, Wörtern oder gar Kennwortvorschlägen weit entfernt sind, und
- die in ihrer Entwicklung zahlreiche tatsächlich zufällige Entscheidungen aufweisen,
also eine Hacker*in quasi in ein Labyrinth verweisen, in dem nur noch bleibt, alle möglichen Kennwörter auszuprobieren, bis sie dann irgendwann aufgeben muss, dann verwende ich hierfür die Bezeichnung "Pseudozufällige Kennwörter".11
Ich werde auf die Stärke pseudozufälliger Kennwörter später noch vertieft eingehen. Aber zunächst müssen wir den Begriff der Passwortstärke noch verallgemeinern, wobei die Betrachtung von Wörterbüchern in Brute-Force-Angriffen erforderlich ist.
Die Vorhersehbarkeit von Kennwörtern und die Reihung von Hackversuchen.
Zunächst einmal können Hacker*innen im Internet Listen von bereits kompromittierten Kennwörtern kaufen, die von gehackten Servern erbeutet12 wurden. Je häufiger ein Kennwort in solchen Listen auftaucht, desto wahrscheinlicher ist, dass es auch auf anderen Servern zu finden ist. D. h. diese Häufigkeit der Entdeckung in Datenlecks ist das primäre Kriterium für die Reihung von Hackversuchen.
Gleich nach bereits durch Datenlecks kompromittierten Kennwörtern kommen Beispiele von Kennwörtern, die irgendwo im Internet genannt wurden. Tatsächlich wurden viele von diesen auch schon bei Datenlecks gefunden. Man kann also davon ausgehen, dass die anderen Kennwortbeispiele ebenfalls von Hacker*innen ausprobiert werden, nur wurden sie noch nicht in erwerbbaren Listen angeboten.13
Nennen wir die kompromittierten (in der Folge ihrer Häufigkeit) oder durch Nennung im Internet verbrannten Kennwörter (in der Folge ihrer Länge) das "primäre Wörterbuch" der Hacker*in.
An dritter Stelle stehen nun
- Mögliche Kennwörter, die zwar noch nicht kompromittiert wurden, aber wegen ihrer Verwandtschaft zu kompromittierten als "wahrscheinlich benutzt" betrachtet werden.14
- Varianten von Kennwörtern des primären Wörterbuchs (vorrangig solche mit geringer Levenshtein-Distanz15) und
- das systematische Ausprobieren anderer mögliche Kennwörter, wobei die Länge entscheidend für die Reihung ist.
Die and dritter Stelle aufgeführten Kennwortklassen dürften in der Reihung wohl gemischt auftreten.16
Beim systematischen Ausprobieren (sowohl von Varianten als auch von allen Kennwörtern einer bestimmten Länge) dürften bekannte Regeln, Vorschläge und Tipps eine Rolle spielen und eine Unterreihung bewirken.
Nennen wir die gesamte Reihung von Wörtern das "potenzielle Wörterbuch" der Hacker*in. Potenziell deshalb, weil dieses Wörterbuch unendlich viele Wörter umfasst17. Dieses Wörterbuch wird also in der Praxis nicht ausgeschöpft werden.
Ich habe versucht, Kriterien für eine optimale Reihung (im Sinne der Hacker*in) zu finden, aber es kann natürlich sein, dass diese Kriterien nicht ganz so leicht zu implementieren sind und daher eine einfachere Reihung stattfindet. (Die Konsequenzen solcher Vereinfachungen auf die folgenden Überlegungen dürften sich aber in Grenzen halten.18)
Welchen Einfluss hat die Reihung von Hackversuchen auf die Stärke von Kennwörtern?
Bei zufällig generierten Kennwörtern hatten wir bereits in der Formel (2) einen Zusammenhang mit der mittleren Versuchszahl N und der Stärke in Bits gefunden. Ähnlich können wir auch bei einer Reihung der Versuche vorgehen: Angenommen in der Reihung kommt das eigene Kennwort an N-ter Stelle dran, dann hat das eigene Kennwort analog eine Stärke von
log2( N ) + 1 // (3)
(mit N
als Position in Hackreihung, also: 1, 2, ...)
Bits, wobei N wiederum als mittlere Zahl der benötigten Versuche bis zum Erraten des Kennworts betrachtet wird. Achtung: Wir haben jetzt den Begriff der Passwortstärke etwas verallgemeinert. Er setzt nicht mehr rein zufällig gewählte Kennwörter (wie in Formel (2)) voraus, sondern geht allgemein von der mittleren Anzahl der benötigten Hackversuche aus.
Zu beachten ist, dass in Formel (3) N
größer ist als in Formel
(2). Bei letzterer wurden ja nur Kennwörter gleicher Länge und gleicher
Komponentenstärke betrachtet. Aber dieser Unterschied macht, wie bereits
erwähnt, gar nicht viel aus, und wir können für zufällig gewählte Kennwörter
durchaus weiterhin in guter Näherung die Formeln (1) und (2) verwenden. (Für
die Passwortstärke sollten wir ohnehin nicht eine bestimmte Strategie der
Hacker*in voraussetzen, sondern das Minimum der Stärke bei beliebigen
Hack-Strategien annehmen.)
Die durch Vorhersagbarkeit verloren gegangene Stärke
Ich hatte versprochen, dem Wert p
, der uns Passwortstärke raubt,
auf die Spur zu kommen.
Inhaltlich ist diese Aufgabe aber schon durch die Berücksichtigung der
Hackreihung gelöst. Denn in der Formel (3) ist p
implizit
berücksichtigt, da Kennwörter mit größerer Erratbarkeit (bekannte, zu
bekannten ähnliche, ausprechbare Kennwörter, minimale Befolgung von bekannten
Regeln19) zu einem niedrigeren Wert von
N
in Formel (3) führen.
Brauchen wir eigentlich mehr? Nein20, wir müssen
einfach all die eben genannten Entropiekiller in Kennwörtern meiden, um
N
zu maximieren und damit p
zu minimieren. Das
reicht, denn die halbwegs vorhersagbaren Kennwörter können immer nur einen
Bruchteil der möglichen Kennwörter ausmachen. (Sonst würden sie der Hacker*in
auch kaum Vorteile bieten, weil sie dann ja doch die Mehrheit der möglichen
Kennwörter ausprobieren müsste.)
Gibt es eine Mathematik von Pseudozufälligkeit?
Zumindest gibt es Anforderungen, die wir an pseudozufällige Kennwörter stellen sollten:
- Für die Eigentümer*in des Kennworts soll dieses alles andere als zufällig sein: Es soll gut merkbar und von Hand eingebbar sein. In der Regel steckt hinter dem Kennwort eine Geschichte, ein Bild oder ein anderes Konstrukt, das gut gemerkt wird und leicht in das Kennwort übersetzt werden kann.
-
Für eine beliebige Hacker*in sollte das Kennwort dagegen als (zumindest
weitgehend) zufällig erscheinen. Sie sollte auch bei optimaler Strategie im
Schnitt
2 ** ( s_pw - 1 ) // (5)
(mits_pw
als gewünschte Passwortstärke) Versuche benötigen, um das Kennwort zu erraten.
Die Pseudozufälligkeit hat also zwei Seiten: Zufälligkeit in der einen Richtung, das Gegenteil in der anderen. Wirklich das Gegenteil? So sehr wie es der Eigentümer*in irgendwann vertraut sein sollte, so sehr sollte sie versuchen, es aus Zufälligem zu speisen: Es mag, um Klischees zu bedienen, ein Blick in Wolkenformationen oder abstrakte Kunst sein, oder Assoziationen, die eine*m unter der Dusche einfallen, Missverständnisse, das Rauschen der Welt oder des Lebens, die den Pseudozufallsgeschichtengenerator ausmachen. Es geht einfach um Kreativität. Man informiere sich über die in "Listen von häufigsten Passwörtern" genannten Kennwörter, um zu erfahren, was nicht kreativ ist. Ansonsten kann man an der eigenen Kreativität durchaus arbeiten.21
Bei der entwickelten Geschichte sollte man mal ruhig abzählen, wie viele
(unvorhersagbare) Ja/Nein-Entscheidungen darin enthalten sind. Es müssen
mindestens s_pw viele22 sein. Bei dem daraus
entwickelten Kennwort sollte überprüft werden, ob dort immer noch mindestens
s_pw Bits an Entropie enthalten sind, siehe Formel (1). Kann man
p
auf 0
drücken? Wenn noch übliche Muster (wie
Aussprechbarkeit) enthalten sind, könnte man das vielleicht durch Verfremdung
oder doch etwas mehr Länge kompensieren.
Die nötige Stärke von Kennwörtern
Meine Forderung nach kryptografischer Stärke (also 128 Bit23) ist hart, aber keineswegs unbegründet. Für Angriffe gegen Internet-Konten aus dem Internet heraus sind zwar bereits deutlich schwächere Kennwörter sicher. Aber gerade der Angriff gegen LastPass24 hat (auch wenn LastPass viel falsch gemacht hat25) gezeigt, dass selbst große Dienste, die viel Geld für Sicherheitsvorkehrungen haben und viel Expertise für digitale Sicherheit besitzen sollten, nicht immun vor Abgriffen von Serverdaten sind.
Auch unidirektional verschlüsselte Kennwörter, die auf Servern gehalten werden müssen, können entschlüsselt werden, solange die Kennwörter selbst nicht kryptografische Stärke haben. Auch wenn der Dienst nur clientseitig verschlüsselt.26 Die von uns und auch von vielen anderen Diensten unternommenen Anstrengungen, mittels clientseitiger Verschlüsselung die Angriffsflächen zu minimieren, werden also konterkariert, wenn Benutzer*innen keine Anstrengungen unternehmen, ihre Hauptkennwörter in Richtung kryptografischer Stärke zu entwickeln. Hier liegt tatsächlich die bedeutendste allgemeine Schwachstelle digitaler Sicherheit!
Ich verstehe natürlich, dass Nutzer*innen lange Kennwörter von 20 bis 25 Zeichen, die zudem pseudozufällig gewählt sind, als Zumutung empfinden.
Aber es ist nicht nicht völlig unmöglich. Viele haben bereits Kennwörter mit der halben Bit-Zahl an Entropie. Sie müssten also nur ein zweites Kennwort gleichen Entropie entwickeln und beide miteinander kombinieren.27
Finger haben ein Gedächtnis (im Kleinhirn). D. h. sie können auch längere Zeichenfolgen einüben. Man hat auch durchaus etwas Zeit, kann ein Kennwort in kleinen Schritten verlängern, verfremden und einüben.
Wenn man diese Arbeit jedoch auf den Sankt-Nimmerleins-Tag verschiebt, geht man ein großes Risiko ein, dass irgendwann Daten von einem Server oder von einem Gerät abgegriffen werden, die die Entschlüsselung des Kennworts und aller damit verschlüsselten Daten (evtl. auch verschlüsselten anderen Kennworten) erlaubt. D. h. es kommt dann sehr viel mehr Arbeit auf eine*n zu.
Wer denkt, dass man die Verstärkung der eigenen Hauptkennwörter ja vornehmen kann, wenn die Einschläge dichter kommen, kann sich leicht irren: Daten können abgegriffen werden und dann möglicherweise noch gar nicht gleich entschlüsselbar sein, doch einige Jahre später auf Grund gestiegener Rechenleistung ausgewertet werden. Das bedeutet aber, dass wenn Bekannte durch kompromittierte Kennwörter geschädigt werden, man evtl. längst selbst betroffen ist (alle Daten sind bereits abgegriffen und können jederzeit ausgenutzt werden), ohne noch mit mäßigem Aufwand gegensteuern zu können. Dann bleibt nichts mehr, als schleunigst sämtliche Kennwörter zu ändern, sämtliche Sicherheitsabfragen und dennoch bleibt es sehr gefährlich für die eigene digitale Identität, weil die Angreifer*innen bereits viel zu viel von eine*m wissen.
Angesichts der Entwicklung der Internet-Kriminalität bin ich mir ziemlich sicher, dass das beschriebene Risko weitaus größer ist als die Arbeit, sich rechtzeitig dagegen mit starken Kennwörtern zu schützen.
Exkurs: Wie haltbar sind dann schwächere Kennwörter noch?
Die Frage ist berechtigt. Denn wenn wir starke Kennwörter (mit 128 Bit Stärke) einüben, geht das kaum in einem einzigen Schritt. Wir werden nach und nach das Kennwort verlängern und damit verstärken, um den Fingern die Zeit zu geben es zu erlernen und uns nicht auf dem Weg dahin selbst auszusperren.
Manuell einzugebende Kennwörter sind meist Geräte-Kennwörter, Hauptpassworte von lokalen Programmen (Browser, Passwortmanager, Verschlüsselungssoftware für Platten, etc.) Solange die verschlüsselten Daten rein lokal gespeichert sind und sie strikt vor unbefugtem physikalischen Zugriff geschützt werden, ist ein erfolgreiches Hacking der Kennwörter nicht möglich. (Natürlich ist solch ein strikter Zugriffsschutz kaum ununterbrochen durchzuhalten. Deshalb müssen ja auch die Kennwörter so bald wie möglich stark werden. Aber das Risiko wird doch stark minimiert.)
Aber zur Eingangsfrage dieses Abschnitts: Um abzuschätzen, wie stark denn schwächere Kennwörter sind, müssen wir betrachten, welches die optimale Strategie von Hacker*innen ist. Nehmen wir also mal an, dass eine Hacker*in eine Anzahl verschlüsselter Kennwörter erbeutet hat und diese nun offline per Brute-Force-Methode entschlüsseln will.
Die optimale Offline-Hackstrategie bei abgegriffenen Kennwortdaten
Hacker*innen sind erfolgreich und werden deshalb bedeutender werden, wenn sie ökonomisch vorgehen und das Verhältnis von Chance und Aufwand maximieren. Dabei ist
Chance = Ertrag_bei_Erfolg * Erfolgswahrscheinlichkeit
Die Erfolgswahrscheinlichkeit dürfte am höchsten bei den ersten Kennwörtern des Wörterbuchs liegen und danach nur bei gleichem Rang gleichbleiben, sonst aber laufend fallen, ohne dabei ganz auf Null zu sinken. Denn genau so ist ja das Wörterbuch sortiert und wird auch so laufend angepasst.28
Der Aufwand dürfte über die Einzelproben hinweg ziemlich konstant bleiben, aber die Erfolgswahrscheinlichkeit wird sinken. Wenn die Aufwände die Chancen überschreiten wird die Hacker*in die Versuche abbrechen.29
Hacker*innen werden evtl. nicht ganz bis zu dieser Grenze gehen, sondern eine
weitere Priorisierung vornehmen, um das Verhältnis
Chance / Aufwand
zu maximieren. D. h. es kann sein, dass sie
nicht alle möglichen Stärken (bei denen noch
Chance / Aufwand > 1
ist) durchprobieren, sondern irgendwann
die restlichen Daten liegen lassen, sich vielleicht für später aufheben, wenn
Rechengeschwindigkeiten wieder angewachsen sind, vielleicht aber auch gar
nicht wieder anfassen, weil der Nachschub an frischen erbeuteten Daten
lohnendere Ergebnisse verspricht. In letzterem Fall könnten dann die
Angegriffenen sagen "Glück gehabt", wenn sie es denn wissen würden.
Die Haltbarkeit abgegriffener, aber noch nicht geknackter Kennwortdaten
Das Mooresche Gesetz der regelmäßigen Verdoppelung der
Rechengeschwindigkeit30 sorgt für eine
Halbwertszeit des Aufwands für die Entschlüsselung (t1
) noch
ungeknackter Kennwortdaten.
(Hinzukommt zwar noch, dass die Zahl der kompromittierten Kennwörter im Laufe der Zeit zunimmt und damit ebenfalls den Aufwand für die Entschlüsselung drückt. Doch gegenüber dem Moorschen Gesetz scheint dieser Effekt noch vernachlässigbar zu sein.31)
Aber die noch ungeknackten Kennwörter verlieren auch an Wert. Darauf hat die
Eigentümer*in jedoch bedeutendenden Einfluss. Wenn sie die Halbwertszeit für
den Wert der Daten (t2
) unter t1
drückt, kann sie
den Schaden minimieren oder ganz vermeiden, weil dann
log2( t2 ) / log2( t1 ) < 1
Dieses Verhältnis bestimmt nämlich die weitere Entwicklung des Verhältnisses von Chance zu Aufwand für die Hacker*in (bezüglich des Entschlüsseln des betroffenen Kennworts).
Also sagt uns die Mathematik hier: Auch wenn man erst spät erfährt, dass Kennwortdaten abgegriffen wurden, nicht lange warten, sondern das Kennwort bald ändern. Wenn mit dem Kennwort Daten verschlüsselt wurden, dann diese möglicherweise kompromittierten Daten – wenn das geht und Sinn macht – durch andere ersetzen. (Z. B., wenn das Hauptpasswort eines Passwortmanagers kompromittiert ist, sollten alle damit verschlüsselten Kennwörter gewechselt werden.)
Der Wichtigkeitsfaktor
Bislang haben wir die Hackstrategie unter der Annahme betrachtet, dass alle geknackten Kennwörter gleichen Ertrag bringen würden. Aber oft geben die abgegriffenen Daten auch Auskunft über die Personen, denen sie gehören.
- Einer kommerziellen kriminellen Hacker*in dürfte das Kennwort einer vermögenden Person mehr Ertrag bringen als das einer aus bescheidenen Verhältnissen.
- Eine Hacker*in, die für eine Autokrat*in arbeitet, um deren Macht zu sichern oder zu vergrößern, dürfte das Kennwort einer einflussreichen Person mehr Belohnung einbringen als das Kennwort einer x-beliebigen Person.
- Einer Verbrechensbekämpfer*in, steht in der Regel mehr Etat zur Verfügung, um eine Mörder*in zur Strecke zu bringen, als wenn es um eine Fahrraddieb*in geht.
Es wird also der Ertrag_bei_Erfolg
immer von diesem
Wichtigkeitsfaktor abhängen und damit auch in die Berechnung der Chance
eingehen. Ist das Hacken eines bestimmten Kennworts tausendmal so wichtig wie
das Hacken eines durchschnittlichen Kontos, dann dürfte auch der tausendfache
Aufwand getrieben, werden. Und da der Aufwand proportional zu
2 ** s_pw
ist (und da 2 ** 10
in etwa 1000
ergibt), sollte eine Person mit Wichtigkeitsfaktor 1000, um das zu
kompensieren, dann ihre Kennwörter 10 Bit stärker machen, als wenn sie nur den
Wichtigkeitsfaktor 1 hätte.
Keine Person sollte aber annehmen, sie hätte einen Wichtigkeitsfaktor unterhalb von 1 (und dann etwa deshalb ihr Kennwort um ein oder mehr Bits abschwächen). Denn der Wichtigkeitsfaktor kann eine Rolle spielen, muss es aber nicht. Neben stark optimierten Strategien, müssen unsere Annahmen und Gegenmaßnahmen auch immer einfachere Strategien der Hacker*innen berücksichtigen.
Zur Kontrolle: Pseudozufällige, kryptografisch starke Kennwörter
Wenn wir Kennwörter verwenden, die sehr, sehr zufällig aussehen und nicht
bereits kompromittiert sind und wir auch nirgendwo abgeschrieben haben (oder
mit nur minimalen Veränderungen abgeschrieben haben). Wenn diese Kennwörter
durch eigene Kreativität entstanden sind, also sie niemand kennt, dann
dürfte der Wert von p
in der Praxis bei 0
liegen.
Wir haben dann Kennwörter, die pseudozufällig gewählt sind. Wir müssen dabei den Umfang des Zeichensatzes, den wir verwenden, bestimmen (dürfen aber auch nur solche Zeichenarten berücksichtigen, die wirklich anteilig verwendet werden). Von diesem Umfang berechnet wir den binären Logarithmus, um die Stärke pro Zeichen zu erhalten. (Verwenden wir Kleinbuchstaben und Ziffern sind das 5,17 Bit, nehmen wir Großbuchstaben hinzu sind es 5,94 Bit, nehmen wir gut gemischt auch die sichtbaren 32 ASCII32-Sonderzeichen mit rein, sind es 6,55 Bit.)
Dementspechend brauchen wir, um kryptografisch starke Kennwörter zu erhalten: 25, 22 oder 20 Zeichen lange pseudozufällige Kennwörter je nach Zeichensatz (Kleinbuchstaben mit Ziffern, alphanumerisch oder alle sichtbaren ASCII-Zeichen).
Müssen die Kennwörter in Zukunft immer länger werden?
Das Mooresche Gesetz wird natürlich auch von den Hacker*innen genutzt, d. h. sie können die sich derzeit noch alle 15 Monate verdoppelnde Rechengeschwindigkeit nutzen, um in Zukunft verschlüsselte Kennwörter zu knacken, die heute noch nicht entschlüsselbar ist.
Allerdings berücksichtigt die vom NIST empfohlene Mindeststärke kryptografischer Schlüssel bereits diese Überlegung. D. h. solche Kennwörter werden derzeit33 wohl noch lang genug halten.34
In Zukunft werden kryptografische Schlüssel in der Stärke mit der Rechengeschwindigkeit Schritt halten müssen. Doch das heißt nicht, dass auch die Kennwörter immer länger werden müssen. Die Schlüsselstreckung bietet dafür nämlich einen Ausweg. Sie kann parallel zur Rechengeschwindigkeit erhöht werden, so dass sie die Beschleunigung der Entschlüsselungsversuche wieder kompensiert. Es wird also bei etwa 128 Bit nötiger Stärke von Kennwörtern bleiben.35
1)
Es gibt verschiedene Dienste verschiedener Qualität, wie z. B.
wiesicheristmeinpasswort.de und checkdeinpasswort.de.
Der erstere ist wohl etwas besser (er sieht das kompromittierte Kennwort
"Passw0rd." als "sofort" entschlüsselbar an, während der zweite es als
"innerhalb von einem Jahr" entschlüsselbar betrachtet.
wiesicheristmeinpassword.de verspricht zwar immerhin, das Kennwort
nirgendwohin zu übertragen (was checkdeinpasswort.de leider so nicht sagt,
aber wenigstens verspricht, es nicht zu speichern), aber kann man das für alle
Zukunft glauben? Die Seite scheint vernünftige Inhalte
zu haben. Aber der Inhaber der Domain ist ein Privatmann. Irgendwann wird
jede*r sterben. Was geschieht dann mit der Domain? Wenn sie abgemeldet wird,
kann sie jede*r übernehmen. Sollte dies eine Hacker*in sein, so könnte sie
einfach die bisherigen Seiten kopieren und so tun, als sei alles beim Alten
geblieben. Nur mit einem Unterschied: Sie würde wohl stillschweigend alle
eingetragenen Kennwörter abgreifen.
Echte (tatsächliche für die Authentisierung oder für Verschlüsselung benutzte)
Kennwörter sollte man also besser solchen Diensten NICHT anvertrauen.
2) D. h. Sie müssen nicht mir trauen, sondern nur allgemein bekannten Regeln der Mathematik, um meine Schlussfolgerungen für starke Kennwörter nachzuvollziehen.
3) Siehe Wikipedia "Entropie (Informationstheorie)".
4)
Anmerkung nur für Mathematiker*innen (damit sie wissen, worauf ich mit den
folgenden Ausführungen hinaus will, und Sie diese daher schneller überfliegen
können): Ich werde weiter unten in Formeln (2) und (3) noch etwas genauer
herausarbeiten, dass es besser ist, statt mit der Maximalzahl der Versuche mit
der mittleren Anzahl von Versuchen für die Bestimmung der Stärke zu arbeiten
(wobei es gar nicht so entscheidend ist, ob wir den Zentralwert, das
arithmetische oder das geometrische Mittel nehmen, da sie alle drei in der
Praxis ziemlich ähnliche Werte annehmen werden). Die Maximalzahl macht nur
Sinn, wenn wir den Raum der möglichen Kennwörter begrenzen (z. B. "alle
Kennwörter mit 25 alphanumerischen Zeichen", oder "alle Kennwörter mit bis zu
25 alphanumerischen Zeichen"). Und wenn alle Kennwörter dieses Raums gleich
wahrscheinlich sind. Bei solchen begrenzten Kennworträumen ist die mittlere
Versuchszahl N
die Hälfte der Maximalzahl N_max
. Es
gilt dann für die Stärke s_pw
:
( s_pw = log2( N_max ) ) == log2( N ) + 1
Bei unbegrenzten Kennworträumen ist N_max theoretisch unendlich, aber die
Kennwörter sind nicht mehr gleich wahrscheinlich. Für konkrete Kennwörter
gibt es aber weiterhin eine mittlere Versuchszahl N
für das
Erraten, die sich aus wenigen Annahmen über eine optimalen Hackstrategie
ergibt und die zu einer (zum Bisherigen analogen) Stärke führt:
s_pw = log2( N ) + 1
5) Sie sind in Wahrheit nur naiv. Sie ahnen nicht, dass es für Hacker*innen so gut wie gar nichts kostet, vor aufwändigeren Angriffen alle bekannten Wörter durchzuprobieren und dass sie dabei immer wen erwischen. Dass es überhaupt einige Zeit bis zum erfolgreichen Hacking dauert, liegt nicht daran, dass solche Kennwörter ein Hindernis darstellen würden, sondern daran, dass es sich bei deren Eigentümer*innen um Internet-Neulinge handelt, deren E-Mail-Adresse noch nicht bekannt ist. Da E-Mail-Adressen nicht wirklich sicher schützbar sind, ist es aber nur eine Frage der Zeit, bis sie Angriffen ausgesetzt sind. Dann dauert es nicht mehr lange...
6) Z. B. ist die in "Password Strength" diskutierte Passphrase "correcthorsebatterystaple" bei "Have I Been Pwned" gelistet (232 mal) und auch die Variante mit Leerzeichen ("correct horse battery staple", fünfmal). (Abfrage am 05.01.2023).
7) Für die, die sich mit Programmiersprachen auskennen: Wir nehmen als Syntax/Semantik einfach die der Programmiersprache "C++". Ansonsten bedeutet:
- "//": Markiert vorangestellt einen Kommentar
- "*": multipliziert mit
- "/": geteilt durch
- "**": hoch
- "log2( ... )": binärer Logaritmus von ...
- "=": Zuweisung (linke Seite nimmt rechten Wert an)
- "==": Gleichheit (linke Seite ist gleich rechtem Wert)
8) Die folgende Formel entspricht der Aussage am Schluss des Abschnitt "Entropy as a measure of password strength" in Wikipedia "Password Strength" (englisch) (Stand 16.01.204): "On average, an attacker will have to try half the possible number of passwords before finding the correct one."
9)
In dem Artikel Wikipedia "Password Strength" (englisch) wird die Stärke als
Funktion von Länge, Komplexität und Nicht-Vorhersagbarkeit beschrieben.
Die Länge ist die Anzahl von Komponenten. Die "Komplexität" entsteht aus
der Anzahl von Möglichkeiten jeder Komponente. Die Stärke einer einzelnen
Komponente ist dann der Logarithmus der Anzahl der Möglichkeiten. Die Stärken
einzelner Komponenten sind für die Gesamtstärken dann aufzuaddieren
(d. h. bei gleichen Komponentenstärken einfach mit der Anzahl der Komponenten
zu multiplizieren).
Wenn es keine Vorhersehbarkeit gibt, bleibt es bei dieser Formel, sonst
muss noch ein Wert (p
) abgezogen werden, der zwischen 0 und
s_c * n
liegt.
10) Siehe den Comic "Password Strength" und die zugehörige Diskussion "How accurate is that XKCD comic ...".
11) Ich habe über diese Möglichkeit erstmalig im Blog-Artikel "Das gute Kennwort" geschrieben.
12)
Wenn Hacker*innen auf einen Server eindringen und Kennwortdaten finden, so
kann deren Schutz ganz unterschiedlicher Qualität sein: Manchmal liegen
Kennwörter im Klartext vor (ja, das gibt oder gab es zumindest tatsächlich).
Manchmal sind die Kennwörter nur etwas verschleiert, d. h. in ein kryptisches
Format gebracht (hexadezimale Darstellung, Base64-Format). Manchmal gibt
es eine hausgemachte Verschlüsselung, die bei Untersuchung der auf dem
Server liegenden Programme und Skripte leicht zu knacken ist.
Wie die übrigen, mehr oder minder stark und
unidirektional verschlüsselten Kennwörter
geknackt werden können, wird im Haupttext dieses Artikels behandelt.
Jedenfalls spielen bereits frühere Beuten eine große Rolle bei der
Entschlüsselung neuer Beuten.
13)
So würde ich jedenfalls vorgehen. Bei Dateneinbrüchen entdeckte Kennwörter
sind mit ziemlicher Wahrscheinlichkeit auch anderen Orts wieder zu entdecken,
während das bei durch Veröffentlichung kompromittierten Kennwörter nicht ganz
so sicher ist. Vielleicht haben die Dummen diese Artikel gar nicht erst
gelesen, oder sie sind vielleicht durch das Lesen klüger geworden ... Man kann
nie wissen. ;-)
Tatsächlich habe ich im Internet einige Beispiele von Kennwörtern gefunden,
die nicht bei "Have I Been Pwned" (HIBP) gelistet sind. (Man sollte
aber wissen, dass bei HIBP nur solche Kennwörter gelistet werden, die nach
Dateneinbrüchen (zumindest käuflich) im Internet angeboten werden. Ich halte
es aber für durchaus wahrscheinlich, dass es Internetkriminelle gibt, die
erbeutete Kennwörter zunächst einmal selbst ausnutzen wollen, z. B. weil sie
sich durch Folgeangriffe mit Ransomware mehr Profit versprechen, wenn die
kompromittierten Kennwörter noch nicht als solche bekannt sind und deren
Eigentümer*innen evtl. durch die HIBP-Listung vorgewarnt werden.
14)
Auf Anhieb finde ich von drei Kennwörtern, die aus einem klein geschriebenen
weiblichen Vornamen bestehen ("andrea", "petra", "michaela") alle drei auch
als bereits kompromittiert. Es könnte nun sein, dass auch andere übliche
weibliche Vornamen häufig als Kennwörter benutzt werden, aber noch nicht alle
in den gängigen Listen kompromittierter Kennwörter auftauchen.
Es kann also durchaus für eine Hacker*in Sinn machen, inhaltlich mit
kompromittierten Kennwörtern verwandte Wörter in die zu probierende
Liste bevorzugt (gegenüber dem systematischen Ausprobieren aller Wörter
gleicher Länge) aufzunehmen.
Oder man findet z. B. im primären Wörterbuch auffällig viele Umschriften
bestimmter Art von kompromittierten Wörtern, wie dass "I" durch "1", "Z" durch
"2", und "E" durch "3", "A" durch "4", "S" durch "5", "G" durch "6", und "O"
durch "0" (wegen der ähnlichen Schreibung) ersetzt sind. Dann könnte es Sinn
machen, alle kompromittierten Kennwörter, die "I", "Z", "E", "A", "S", "G"
oder "O" enthalten, bevorzugt auch in deren entsprechenden Umschrift zu testen
(soweit sie nicht in auch dieser Schreibung ohnehin schon in dem primären
Wörterbuch enthalten sind).
15) Die Levenshtein-Distanz misst die Unähnlichkeit von zwei Zeichenketten. Siehe Wikipedia "Levenshtein-Distanz".
16)
Z. B. dürften systematisch alle (noch nicht probierten) Kennwörter einer
kurzen Länge n1
probiert werden, bevor Varianten der
kompromittierten Kennwörter n2
mit der Leventstein-Distanz
l2
, wenn deren Anzahl restlichen n1-langen Kennwörter geringer
ist, als die der n2-l2-Varianten.
Vergleichsweise kurze Listen wie z. B. die aller weiblichen Vornamen dürften
wohl eher vor Varianten mit Leventstein-Distanz probiert werden. Bei längeren
Listen könnten dagegen Varianten häufig kompromittierter Kennworte mit
sehr geringen Leventstein-Distanzen als erfolgsversprechender angesehen
werden.
17)
Nach dem letzten Wort der Länge n
wird sich ein noch ein längeres
(er-)finden lassen.
18) Natürlich könnte eine durch Vereinfachung veränderte Reihung auch ein Kennwort früher kompromittieren, als es ohne Vereinfachung passiert wäre, aber dieses Risko ist geringer als die Chance für andere Kennwörter, der Entdeckung zu enkommen.
19)
Nehmen wir z. B. die eingangs genannte (von Bitkom kommunizierte) Regel, dass
in einem Kennwort neben Kleinbuchstaben mindestens eine Ziffer, ein
Großbuchstabe, und ein Sonderzeichen enthalten sein sollen. Wenn nun genau
eine Ziffer, genau ein Großbuchstaben und genau ein
Sonderzeichen in einem Kennwort enthalten sind, und der Rest alles
Kleinbuchstaben sind, dann ist dies eine "minimale Befolgung einer bekannten
Regel", die zur Erratbarkeit des Kennworts deutlich beiträgt.
(Die bloße Verwendung von zwei Ziffern statt einer würde es noch nicht viel
besser machen. Man sollte schon deutlich von solchen Minima abweichen.)
20)
Wenn wir N
kennen (oder abschätzen können), können wir
p
aus Formeln (1) und (2) bzw. (3) berechnen (oder abschätzen):
p = s_c * n - log2( N ) - 1 // (4)
21) Um sich allgemein über Kreativität zu informieren, siehe Wikipedia. Der Wissenschaftsjournalist Bas Kast hat mal in der 3-Sat-Teleakademie einen interessanten Vortrag über Kreativität gehalten und auch ein Buch darüber geschrieben ("Und plötzlich macht es KLICK!"). Aber fragen Sie doch selbst Ihre Suchmaschine nach "kreativität fördern erwachsene".
22) D. h. im Endausbau sollten es 128 Bit, also die Stärke eines kryptografischen Schlüssels sein. Aber Sie können natürlich auch zunächst mit einer geringeren Stärke anfangen.
23)
Das NIST empfiehlt derzeit33 uneingeschränkt
nur noch Algorithmen mit einer Sicherheitsstärke von 128, 192 oder 256
Bit. Siehe "Table 4" in NIST Recommendation for Key Management.
(Bis 2030 hält das NIST auch noch 112 Bit für akzeptabel. Aber nur dann, wenn
die damit zu schützenden Geheimnisse auch nur bis zu diesem Datum geschützt
werden müssen: "Determine the security strength required for protecting data
during the entire period of protection." Siehe ebenda (in Abschnitt 5.6.4).)
24) Hinweise zu Marken Dritter:
"LastPass" ist eine Marke oder registrierte Marke von LastPass US LP in den U. S. und anderen Ländern.
25) Siehe den Blog-Artikel "Sicherheitsbresche bei LastPass".
26)
Mit "unidirektional Verschlüsselung" ist die
Bildung eines kryptografischen Hashes (siehe
Wikipedia "Kryptographische Hashfunktion") gemeint, die keine direkte
Entschlüsselungsmöglichkeit zulässt.
Doch auch bei bestmöglicher (clientseitiger) Verschlüsselung des Kennworts
eines ohne direkte Entschlüsselungsmöglichkeit, ist es immer nötig,
dass der Dienst serverseitig überprüfen kann, ob das Kennwort stimmt oder
nicht. Das heißt, dass es einen Algorithmus gibt, der zusammen mit den
gespeicherten Serverdaten bestimmt, ob ein Kennwort richtig oder falsch ist.
Wenn ein Kennwort kryptografisch stark ist, ist das kein Problem. Ist es aber
schwach, und kommt irgendwer an die Serverdaten heran, dann kommt er noch viel
leichter auch an den Algorithmus und kann mit der
Brute-Force-Methode sehr effizient alle möglichen
Kennwörter ausprobieren und wird bald damit das Kennwort ermittelt haben. D.
h. eine indirekte Entschlüsselungsmöglichkeit kann es dann geben, wenn das
Kennwort keine kryptografische Stärke besitzt.
Speziell beim Smartphone des San-Bernadino-Terroristen kam diese Methode zum
Einsatz. Das Telefon war nur mit einer vierstelligen PIN verschlüsselt, die
leicht (in 26 Minuten) zu knacken war. Das Problem für das FBI war lediglich,
dass Apple nicht half (und damit ein direktes Auslesen des Speichers unter
Umgehung des Betriebssystems nicht so leicht möglich war) und dass das
Betriebssystem nach einer Reihe von Fehlversuchen den Speicher gelöscht
hätte und auch neue Versuche verlangsamte. Das FBI kaufte jedoch von
Hacker*innen eine Software, die eine Schwachstelle des Betriebssystems nutzte,
um diese Probleme zu umgehen. Siehe Spiegel: "FBI entschlüsselte iPhone offenbar mit Hilfe von Hackern" (13.04.2016) und
Washington Post: "FBI paid professional hackers one-time fee to crack San Bernadino iPhone" (12.04.2016).
Mit einem starken Kennwort für das iPhone wäre diese Entschlüsselung auch mit
Hilfe Apples wohl nicht gelungen, es sei denn, es hätte weitere
Sicherheitsmängel gegeben, die dann allerdings schon ein skandalöses Ausmaß
hätten annehmen müssen. Apple hätte nämlich bei rechten Dingen höchstens die
verschlüsselten Daten vom iPhone oder von Cloud-Sicherungen holen können, aber
die Entschlüsselung selbst wäre dann ohne das Kennwort nicht möglich gewesen.
Warum sind wir mit kryptografischer Stärke auf der sicheren Seite?
Wir sehen als "sichere Seite" an, wenn das Kennwort nicht das schwächste
Glied innerhalb von kryptografischen Sicherheitsketten ist. Dabei wird
insbesondere auch die Sicherheitskette betrachtet, die die Klar-Daten,
darunter auch das Kennwort, noch schützt, wenn verschlüsselte Daten von
Angreifer*innen abgegriffen werden konnten.
Wenn für das Kennwort 2 ** 128
Proben erforderlich sind, so
ist dies nicht mehr einfacher als ein direkter Angriff auf die davon
abgeleiteten Schlüssel und Hashes. Damit ist das Kennwort nicht mehr das
schwächste Glied der Kette.
Einen Unterschied zwischen 128-Bit-, 192-Bit- und 256-Bit-starken Schlüsseln
und Hashes machen wir derzeit33 nicht, da diese
allesamt als stark, also als nicht knackbar angesehen werden. Für Kennwörter,
die merkbar sein und/oder manuell eingegeben werden müssen, reichen daher 128
Bit Stärke aus. (Für Kennwörter die automatisch generiert werden, in einem
Passwortmanager gehalten und in der Regel automatisch oder per Copy/Paste
eingetragen werden, kann es Sinn machen, 192-Bit- oder 256-Bit-starke
Kennwörter zu generieren, um diese lange haltbar zu machen.
Warum sind wir unterhalb kryptografischer Stärke auf der unsicheren Seite?
Wir sehen als "unsichere Seite" an, wenn wir nicht mehr sagen können, ob
das Kennwort nicht doch das schwächste Glied Glied innerhalb einer
kryptografischen Sicherheitskette ist. Es kann also durchaus sein, dass wir
nur mangels Informationen auf der unsicheren Seite sind.
Der wesentliche Unsicherheitsfaktor ist die Schlüsselstreckung. Da es eine
Aufgabe des Servers (oder vom Server bereitgestellten Skripts für den Client)
ist, kann man normalerweise nicht sagen, ob die Schlüsselstreckung
ausreichend ist, ein Kennwort mit weniger als 128 Bit Entropie so zu
verschlüsseln, dass es mit der Brute-Force-Methode ähnlich schwer zu ermitteln
ist wie ein 128-Bit-Kennwort ohne Schlüsselstreckung.
Eine Schlüsselstreckung auf einem Client mittels JavaScript ist z. B. um
Größenordnungen zeitaufwändiger (bzw. bei gleichem Zeitaufwand viel
schwächer – und diese Alternative wird dann in der Regel gewählt) als
eine Schlüsselstreckung auf einem Server. Der Computer einer Angreifer*in
kann zudem evtl. nochmal um Größenordnungen effizienter die Hash-Berechnung
durchführen als der Server oder gar der Client. So können z. B.
Field Programmable Gate Arrays (FPGA) und Grafikprozessoren (GPU) für das
hacking verwendet werden, da diese sehr viel schneller als CPUs Hashwerte
berechnen können.
Bevor wir bei einem Kennwort Abstriche an der Stärke machen, sollten wir
zuvor Garantien über die Schlüsselstreckung (mit genauer Angabe der
hinzugefügten Stärke-Bits) bei dem Gerät, Programm oder Dienst erhalten haben,
für das oder den wir es benutzen wollen. Derzeit sind derartige Angaben
jedoch unüblich. Solange derartige verlässliche Angaben überhaupt nicht üblich
sind, taugt die Schlüsselstreckung aber nicht als Argument, dass ein
verschlüsseltes Kennwort ohne eigene 128 Bit an Stärke Angriffen widerstehen
kann.
27) Die Kombination von zwei Kennwörtern bedeutet für die Nutzer*in eine Verdoppelung der Anstrengung (in der Kennwortentwcklung, aber vor allem in der regelmäßigen Eingabe). Aber diese Verdoppelung wird mit dem Quadrat an Sicherheit belohnt. Man sollte sich also klarmachen, dass Aufwände hier eine gute Rendite bringen.
28) Nach den Entschlüsselungsversuchen dürfte die Hacker*in bei der zukünftigen Reihung des primären Wörterbuchs die aktuell geknackten Kennwörter mit berücksichtigen.
29)
Wenn der Ertrag_bei_Erfolg
für alle restlichen zu knackenden
Konten als gleich groß eingeschätzt wird, betrifft das die ganze
Versuchsreihe. Ansonsten werden wohl zunächst nur die unwichtigeren zu
knackenden Daten für folgende Proben aussortiert. (Siehe den in diesem
Abschnitt weiter unten behandelten "Wichtigkeitsfaktor".) Irgendwann wird aber
der Punkt erreicht, an dem auch für alle restlichen Kennwortdaten der Aufwand
die Chancen übersteigt.
30) Im Blog-Artikel "Sicherheitsbresche bei LastPass" habe ich in einer Anmerkung eine Verdoppelung alle 15 Monate berechnet.
31) Auf der Seite https://haveibeenpwned.com/Passwords wird die Entwicklung der Größe der Passwort-Datenbank beschrieben:
- August 2017: 306 Mio.
- Februar 2018: mehr als 500 Mio.
- Juli 2018: zusätzlich 16 Mio.
- Januar 2019: 551 Mio.
- Juli 2019: 555 Mio.
- Juni 2020: 573 Mio.
- November 2020: 613 Mio.
Während die Entwicklung bis Februar 2018 wohl mehr den Aufbau der Datenbank markiert als den tatsächlichen Zuwachs kompromittierter Kennwörter, scheint die Entwicklung von Januar 2019 bis November 2020 bereits eine Stablisierung der Datenbank darzustellen und der Zuwachs um elf Prozent dürfte dem Zuwachs kompromittierter Kennwörter entsprechen. Dieser Zuwachs fand in 22 Monaten statt. D. h. hochgerechnet dürfte sich der Verdoppelungszeitraum auf 11,9 Jahre belaufen. Diese Entwicklung ist also derzeit gegenüber dem Moorschen Gesetz noch zu vernachlässigen.
Die Verdoppelungszeit von knapp 12 Jahren kann nicht immer so lang gewesen sein, (sonst könnte es heute keine halbe Milliarde kompromittierter Kennwörter geben, denn so lang ist die Geschichte elektronischer Computer noch nicht). Das heißt, dass die Verdoppelungszeit tendenziell fällt. Mögliche Erklärungen sind:
- Die Abwehrmaßnahmen der Serverbetreiber*innen gegen Hacking wirken inzwischen, während viele der kompromittierten Kennwörter in der Zeit früher einfacher zu erbeuten waren (z. B. im Klartext in den Datenbanken lagen). Oder:
- Ein größerer Teil der erbeuteten Kennwortdaten hält inzwischen den Offline-Brute-Force-Angriffen stand. Oder:
- Listen kompromittierter Kennwörter sind heutzutage nicht mehr so einfach käuflich erhältlich wie früher. Allerdings ist es unwahrscheinlich, dass einfache Hacker*innen sich die Möglichkeit einer Zweitverwertung durch Verkauf der Liste entgehen lassen, nachdem sie sie nach eigenen Möglichkeiten weitgehend ausgenutzt haben. Und Geheimdienste teilen ohnehin ihre Erkenntnise nicht gerne mit, also weder heute noch früher eine Rolle bei dem Aufbau der HIBP-Datenbank spielen bzw. gespielt haben. Oder:
- Eine Kombination von vorgenannten Erklärungen trifft zu.
Die wahrscheinlichste Erklärung ist, dass das zunehmende Bewusstsein der Notwendigkeit digitaler Sicherheitsmaßnahmen bereits Wirkung zeigt (Kombination der ersten beiden Erklärungen). Allerdings ist diese Wirkung zwar dringend nötig, aber längst nicht ausreichend, da zwar die Anzahl der kompromittierten Kennwörter langsamer wächst, aber die finanziellen Schäden durch digitale Angriffe sich seit 2021 auf einem enormen Niveau von mehr als 200 Mrd. Euro33 jährlich befinden.
32) "ASCII" ist der US-amerikanische Standard-Zeichensatz. Die darin enthaltenen Sonderzeichen dürften heutzutage zumindest auf internationalen Tastaturen überall verfügbar sein.
33) Im Jahr 2024, dem Zeitpunkt der letzten Komplettüberprüfung dieses Artikels.
34)
Die vom NIST empfohlene Sicherheitsstärke von kryptografischen Schlüsseln und
Hashes gilt verbindlich erst ab 2030. D. h. für eine Übergangszeit werden z.
T. auch noch geringere Stärken als akzeptabel empfunden. Es ist allerdings für
diese geringeren Stärken nicht auszuschließen, dass eine Abwägung zwischen
Sicherheit und Aufwand getroffen wurde. Deshalb denke ich, dass man (außer in
begründeten Ausnahmefällen) letztlich nur die uneingeschränkt und unbefristet
von dem NIST empfohlenen Sicherheitsstärken verwenden sollte.
Die Bedeutung dieser NIST-Empfehlungen sieht man daran, dass sie für
US-amerikanische Behörden verpflichtend sind. Sosehr die USA andere Länder
ausspähen, sosehr achten sie darauf, nicht selbst ausgespäht zu werden.
Staatsgeheimnisse gelten z. T. Jahrzehnte, bevor sie der Öffentlichkeit
zugänglich gemacht werden. Wer derartige Fristen festlegt, muss natürlich auch
für entsprechenden Schutz sorgen. Ich denke, dass es äußerst
unwahrscheinlich ist, dass das NIST diesen Umstand bei ihren Empfehlungen
nicht berücksichtigt hat. Für ebenso unwahrscheinlich halte ich, dass das NIST
nicht über die Kompetenz verfügt, die entsprechend notwendige
Sicherheitsstärke festzulegen.
Die Sicherheitsstärken von 128, 192 und 256 Bit sind dabei alle drei
gleichwertig für die starke Verschlüsselung bzw. für die Bildung von Hashes
zugelassen. Somit dürfte derzeit33 vom NIST bereits
eine Stärke von 128 Bits als ausreichend auch für den langfristigen Schutz von
Geheimnissen angesehen werden.
35)
Die Schlüsselstreckung kann zur Grund-Sicherheit der Kennwörter, für die wir
mit 128 Bit veranschlagen, nur wenig beitragen, da bei clientseitiger
Verschlüsselung ein Großteil der Bits an Stärke, den sie bei serverseitiger
Verschlüsselung lieferte, verloren gegangen
ist, siehe den Blog-Artikel "Zero-Knowledge+ (2): Schlüsselstreckung". Betrachten wir also
lieber den übriggebliebenen Stärkengewinn durch Schlüsselstreckung als
Reserve zur Kompensation von vielleicht unbemerkten Vorhersagbarkeiten bei
pseudozufälligen Kennworten.
Zukünftige Erhöhungen der Rechengeschwindigkeiten kann die Schlüsselstreckung
aber durch Verdoppelung der Runden für jede Verdoppelung der Geschwindigkeit
kompensieren, so dass die notwendige Gesamtstärke weiterhin der kryptografisch
notwendigen folgt.
Allerdings ist Voraussetzung, dass die wichtigen Hersteller von
Betriebssystemen und Passwortmanagern garantieren, dass sie diese zusätzliche
Schlüsselstreckung auch vornehmen werden. Aber es sollte möglich sein, sie
in einem öffentlichen Diskurs dazu zu drängen, wenn dieses Thema weiter
vertieft wird.