Was wissen Websites über Sie?
Sie entscheiden, welche Informationen Sie den Websites geben, die Sie besuchen. Sie sollten ihnen nicht mehr Informationen geben, als sie benötigen, um Ihnen den Dienst anzubieten. Falls Sie sich nichts liefern lassen wollen, sollten Sie z. B. nicht einfach ihre Postanschrift angeben, nur weil die Website danach fragt. Dasselbe gilt für Telefonnummer, Vor- und Nachname und E-Mail-Adresse. Je weniger Informationen Sie den Websites geben, desto weniger schadet es Ihnen, wenn diese Informationen weiterverkaufen oder jemand Zugriff zu Ihrem Konto erlangt.
Kommt es zu Leaks, d. h. Datenlecks oder Datenpannen, wird dies oft im Internet öffentlich bekanntgegeben. Wenn Sie den Geburtsnamen Ihrer Mutter oder den Namen Ihres ersten Haustiers als Antwort auf eine Sicherheitsfrage angegeben haben, sind diese Informationen dadurch eventuell für jeden verfügbar, der Google zu bedienen weiß. Diese Art von Sicherheitsfragen sind von Natur aus unsicher, da der Geburtsname Ihrer Mutter, der Name Ihres ersten Haustiers oder Ihre erste Adresse sich üblicherweise leicht herausfinden lassen.
Doch was, wenn es sich bei der gestohlenen Information um Ihr Passwort handelt? Benutzen Sie dasselbe Passwort anderswo? Falls ja, könnte jeder mit Ihrer E-Mail-Adresse und dem Passwort versuchen, Zugang zu Ihren Konten auf anderen Websites zu erhalten. Die gestohlenen Informationen werden oft für weitere Angriffe verwendet, bevor die Datenpanne bekannt wird.
Passwörter sind für gewöhnlich das erste Hindernis, das ein Angreifer überwinden muss. Später im Kurs stellen wir weitere Elemente vor, die Ihre Konten vor Attacken schützen können. Ein gestaffeltes Sicherheitskonzept (Defence in Depth) gehört zu den bewährten Praktiken im Bereich Cybersicherheit. Das bedeutet, dass Ihre Assets durch mehrere Sicherheitsebenen geschützt werden. Selbst wenn der Angreifer eine Ebene überwindet, z. B. das Passwort, hat er keinen Zugang zu Ihren Informationen.
Bei einem gestaffelten Sicherheitskonzept werden mehrere Sicherheitsbarrieren im IT-System eingefügt. Das Ziel ist, Redundanz herzustellen für den Fall, dass eine Barriere überwunden oder eine Sicherheitslücke ausgenutzt wird – sei es auf Ebene des Personals, prozedural, technisch oder physisch vor Ort bezüglich des Lebenszyklus des Systems.
Bei Konten im Internet stellt das Passwort normalerweise die erste Schutzebene dar. Daher befassen wir uns etwas eingehender mit der Funktionsweise von Passwörtern, bevor wir zu den anderen Ebenen kommen.
Enumerationsangriffe
Durch Enumerationsangriffe (Enumeration Attacks) ermitteln Angreifer als ersten Schritt einen gültigen Benutzernamen. Dabei werden Funktionen wie der Benutzer-Login und „Passwort vergessen“ genutzt. So machen Websites ungewollt Nutzerinformationen öffentlich, wenn sie bei einem Anmeldeversuch verschiedene Meldungen anzeigen, je nachdem, ob der Benutzername oder die E-Mail-Adresse im System existiert oder nicht.
Haben Sie schon einmal aus Versehen einen falschen Benutzernamen eingegeben und die Fehlermeldung „Ungültiger Benutzername“ oder „Benutzername existiert nicht“ erhalten? Wenn die Website eine ähnliche Meldung anzeigt, aus der hervorgeht, dass nur das Passwort inkorrekt ist, kann der Angreifer daraus schließen, dass der Benutzername korrekt ist. So kann er unzählige E-Mail-Adressen durchprobieren und erfahren, welche davon mit einem Konto auf der Website verbunden sind. Deshalb gehört es zu den bewährten Praktiken für Websites, Fehlermeldungen anzuzeigen, die nicht erkennen lassen, welcher Teil der Informationen falsch ist, z. B. „Benutzername oder Passwort ungültig“.
In den meisten Fällen sind die Informationen selbst nicht schädlich. Wenn ein Angreifer aber z. B. die Existenz eines Kontos auf einer Dating- oder Escort-Website aufdeckt, kann er dies gegen die entsprechende Person verwenden.
Enumerationsangriffe werden auch eingesetzt, um Phishing-Angriffe zielgerichteter zu führen und Brute-Force-Angriffe zu erleichtern, indem die Anzahl potenzieller Ziele eingegrenzt wird. Die Begriffe Phishing und Brute Force definieren wir in Kürze.
Enumerationsangriffe beschränken sich nicht nur auf Login-Daten. Sie können bei Funktionen wie dem Zurücksetzen des Passworts und dem Einrichten eines Kontos genutzt werden. Üblicherweise kann eine bestimmte E-Mail-Adresse nur mit einem Konto verbunden werden, sodass der Nutzer informiert wird, wenn er eine bereits existierende E-Mail-Adresse oder Benutzerkennung wählt.
Der nächste Schritt auf dem Weg zum Kontozugriff ist, das Passwort herauszufinden. Darum geht es jetzt als nächstes.
Passwörter
Die meisten Websites erkennen den Benutzer anhand einer Kombination aus Benutzernamen und Passwort. Da man oft dutzende oder gar hunderte Dienste nutzt, wählt man meist Passwörter, an die man sich leicht erinnert. Das Problem ist, dass diese Passwörter meist auch für Angreifer leicht zu erraten sind. Führt man sich vor Augen, dass 2020 die häufigsten Kennwörter „123456“, „123456789“, „qwerty“ und „password“ lauteten, kann man sich vorstellen, dass es nicht schwer ist, eine riesige Anzahl an Konten mit diesen Passwörtern und zufälligen E-Mail-Adressen zu hacken.
Die häufigsten Passwörter im Jahr 2020
123456
123456789
qwerty
password
1234567
12345678
12345
iloveyou
111111
123123
Seit Jahren sind die Anforderungen an Passwörter bei vielen Konten ungenügend, was dazu führte, dass die Nutzer schwache Passwörter wählten. Durch die schlechten Vorgaben wurden Passwörter erstellt, an die man sich zwar leicht erinnert, die aber auch leicht per Computer zu knacken sind.
Der Web-Comic XKCD bringt das Thema Passwortsicherheit gut auf den Punkt.
Ein gutes Passwort muss nicht unbedingt rätselhafte Symbole enthalten. Allgemein gilt: je länger das Passwort, desto sicherer. Anforderungen wie klein- und großgeschriebene Buchstaben, Symbole und Zahlen berücksichtigen meist nicht, wie schwer das Passwort tatsächlich zu knacken ist. Diese Anforderungen vergrößern den Schlüsselraum (Keyspace), d. h. die Anzahl möglicher Passwortkombinationen für eine bestimmte Anzahl Zeichen, was sich aber auch durch ein längeres Kennwort erreichen lässt.
Ein Beispiel zur Veranschaulichung:
Wenn der erlaubte Zeichensatz auf Kleinbuchstaben des englischen Alphabets, d. h. 26 Buchstaben, beschränkt ist und die Passwortlänge 6 zufällige Zeichen beträgt, wird der Schlüsselraum wie folgt berechnet:
266= 308.915.776 mögliche Passwörter
Die Potenz (6) wird teils auch mit dem Zeichen „^“ geschrieben (^6). Um die Gleichung zu lösen, muss man kein Mathematiker sein, sondern kann sie einfach online in eine Suchmaschine eingeben.
Bei einer Passwortlänge von 8 zufälligen Zeichen ergibt das folgenden Schlüsselraum:
268= 208.827.064.576 mögliche Passwörter
Wie Sie sehen, ist der Schlüsselraum deutlich größer, wenn das Passwort nur zwei Buchstaben länger ist. Nehmen wir ein weiteres Beispiel, in dem auch Großbuchstaben verwendet werden dürfen, was die doppelte Anzahl von Buchstaben bedeutet:
526= 19.770.609.664 mögliche Passwörter
Dies vergrößert den Schlüsselraum beträchtlich im Vergleich zu nur 26 Buchstaben. Und doch ist das kein Vergleich zum Schlüsselraum des längeren Passworts mit ausschließlich Kleinbuchstaben. Fügen wir als nächstes einige gängige Symbole hinzu: !, “, #, ¤, %, &, /, (, ) und =. Dadurch steigt die Zahl erlaubter Zeichen auf 62.
626= 56.800.235.584 mögliche Passwörter
Durch 10 zusätzliche Zeichen hat sich der Schlüsselraum nahezu vervierfacht, doch zugleich ist das Passwort sehr viel schwieriger zu merken und der Schlüsselraum ist immer noch deutlich kleiner als beim Passwort mit 8 Zeichen.
Ein rein zufälliges Passwort ist auch gegen Angriffe wie Wörterbuchangriffe gewappnet. Wörterbuchangriffe (Dictionary Attacks) nutzen die Tatsache aus, dass leicht merkbare Passwörter oft Wörter aus dem Wörterbuch, Namen und Varianten davon enthalten. Die zweite Ausgabe des zwanzigbändigen Oxford English Dictionary umfasst 171.476 Einträge. Nutzt man ein Passwort, das aus nur einem Wort besteht, ergibt das einen Schlüsselraum von 170.000. Oft werden nicht die Wörter an sich genutzt, sondern Abwandlungen, die man sich noch merken kann.
Sehen wir uns an, wie groß der Schlüsselraum ist, wenn man unveränderte englische Wörter nutzt. Dazu wählen wir drei zufällige Wörter aus dem Wörterbuch und erstellen daraus ein Passwort. Die Berechnung lautet dann wie folgt:
170.000^3 = 4.913.000.000.000.000
Ein solches Passwort wäre viel leichter zu merken und in Bezug auf Brute-Force-Angriffe deutlich schwerer zu knacken. Es gibt jedoch weitere Faktoren, durch die der Schlüsselraum in Wirklichkeit kleiner ist als gedacht. Die meisten Englisch-Muttersprachler nutzen nur ca. 3.000 Wörter, was sich in der Wahl des Passworts niederschlägt. Zudem sind Menschen sehr schlecht darin, zufällig zu wählen. Was wie eine zufällige Kombination aus Wörtern erscheint, wird oft durch den Kontext, Gedanken oder zuvor gewählte Wörter beeinflusst. Wenn man ein rein wortbasiertes Passwort wählt, sollte man einen Generator verwenden statt sich auf das menschliche Konzept von Zufall zu verlassen.
Ein übliches Mittel zur Verschleierung von Wörtern aus dem Wörterbuch ist, Teile zu ersetzen oder eine Zahl einzufügen, um daraus ein Passwort zu machen. Leider sind diese Änderungen oft leicht zu erraten und es ist für einen Computer kein Problem, alle gängigen Abwandlungen durchzugehen. Ersetzt man z. B. den Buchstaben „o“ durch die Zahl „0“, ist das Passwort nicht so leicht zu merken, während es einem Computer beim Knacken kaum mehr Arbeit macht. Solch einfache Änderungen vergrößern den Schlüsselraum nur unwesentlich. Genauso wenig hilfreich ist es, eine Zahl (z. B. das jetzige Jahr) am Anfang oder Ende des Passworts einzufügen. Programme zum Entschlüsseln von Passwörtern und deren Entwickler kennen all diese Tricks.
Entropie
Die Passwortstärke lässt sich nicht nur am Schlüsselraum messen. Der Begriff Entropie taucht auch in der Cybersicherheit auf und stellt eine Messhilfe zur Bestimmung der anzunehmenden Stärke von Passwörtern dar. Entropie wird mit der mathematischen Funktion „log2“ aus dem Schlüsselraum errechnet (Sie müssen die mathematischen Grundlagen nicht verstehen, sondern können die Formel einfach in eine Suchmaschine eingeben: Googeln Sie z. B. „log2(26^8)“.)
Was bedeutet Entropie in der Praxis? Die Passwortstärke auf Grundlage des Ergebnisses der Entropieberechnung kann anhand folgender Skala eingeordnet werden:
< 28 bit: sehr schwach, wirkt höchstens gegen Familienmitglieder
28-35 bit: schwach, sollte gegen die meisten Menschen schützen, meist ausreichend für den Desktop-Login
36-59 bit: ausreichend, relativ sicher für Netzwerk- und Unternehmenspasswörter
60-127 bit: stark, gut zum Schutz finanzieller Informationen
> 128 bit: sehr stark, meist zu viel des Guten
Die Entropie beim vorherigen Beispiel mit einem Passwort aus 8 Zeichen beträgt:
log2(26^8) = 37,6 bit
Ein Passwort von 6 Zeichen Länge hätte eine Entropie von:
log2(26^6) = 28,2 bit
Die Entropie des Passworts mit 8 zufälligen Zeichen erreicht mit 37 bit geradeso die Kategorie „ausreichend“. Ein Passwort mit 15 Zeichen (70 bit) wäre stark, aber nicht sehr stark. Die exponentielle Natur dieser Berechnungen führt dazu, dass die zusätzliche Länge eines Passworts das Knacken enorm erschwert.
Die Entropie ist zwar hilfreich, sollte aber nicht der einzige Faktor sein. Trotz ausreichender Entropie kann ein Passwort mit 8 Zeichen unsicher sein – die Gründe dafür erläutern wir im folgenden Abschnitt.
Wie Passwörter geknackt werden
Um zu verstehen, wie Passwörter geknackt werden, muss man zuerst wissen, wie sie geschützt werden.
Passwörter werden üblicherweise in einer Datenbank gespeichert und dabei mit einem sog. Einweg-Hashalgorithmus (one-directional hash algorithm) verschlüsselt werden. Ein Hashalgorithmus ist ein Code, mit dem ein Passwort von Klartext in codierten Text umgewandelt wird. Man spricht auch von Hashfunktion oder Streuwertfunktion, da Daten „zerstückelt“ (gehasht) bzw. „gestreut“ werden. Der Algorithmus funktioniert nur in eine Richtung. Das Hashen eines Texts mit einem sicheren Hashalgorithmus kann nicht rückgängig gemacht werden, selbst wenn man den Algorithmus kennt. Das Ergebnis der Umwandlung durch den Algorithmus wird als Hashwert oder kurz Hash bezeichnet. Ein Hashwert ist eine Zeichenfolge aus Buchstaben und Zahlen, welche den ursprünglichen Eingabetext in verschlüsselter Form darstellt.
Bei einem Hash handelt es sich strenggenommen nicht um Verschlüsselung. Verschlüsselung (Encryption) ist nämlich ein bidirektionaler Prozess, der umkehrbar ist, wohingegen Hashen nur in eine Richtung funktioniert. Wenn der Hashalgorithmus korrekt arbeitet, ist der Ausgabewert unumkehrbar.
Lesen Sie auf Wikipedia mehr zu kryptografischen Hashfunktionen.
Sehen wir uns als Beispiel einen weitverbreiteten und mittlerweile als unsicher eingestuften Hashalgorithmus an: MD5. Wendet man MD5 auf den Text „password“ an, ergibt sich als Hashwert „5f4dcc3b5aa765d61d8327deb882cf99“.
Eine kleine Änderung im Originaltext führt zu einem vollkommen anderen Hashwert. Dies ist eine weitere nützliche Eigenschaft von Hashfunktionen: Auf Grundlage des Eingabewerts lässt sich nicht sagen, wie der Ausgabewert aussieht.
So lautet der MD5-Hash für „passwore“ (mit „e“ statt „d“) „a826176c6495c5116189db91770e20ce“, was dem Hash für „password“ nicht ähnelt.
Wenn sich ein Benutzer einloggt, wird das Klartext-Passwort gehasht und der ermittelte Hashwert mit dem in der Datenbank gespeicherten Hashwert (der verschlüsselten Version des Passworts) verglichen. Sind die beiden Werte identisch, darf sich der Benutzer einloggen.
Wie kann es sein, dass Passwörter, die mit einem unumkehrbaren Algorithmus von Klartext in unvorhersehbaren Code verwandelt wurden, dennoch geknackt werden können? Was macht ältere Hashalgorithmen wie MD5 anfällig?
Ein Hashwert (die verschlüsselte Form des Passworts) kann vorberechnet und in einer riesigen Passwortliste gespeichert werden. Diese Listen werden Rainbow Tables (Regenbogentabellen) genannt und sind im Internet leicht zu finden. So findet man schnell eine Liste mit allen MD5-Hashs für jegliches Passwort, das bis zu 10 Zeichen lang ist und Kleinbuchstaben und Zahlen enthält (abcdefghijklmnopqrstuvwxyz0123456789).
Rainbow Tables werden erstellt, indem Passwort-Wörterbücher (tatsächliche Wörter aus dem Wörterbuch und häufige Passwörter) aus dem Internet mit Hashalgorithmen verarbeitet werden. Die Ausgabewerte werden neben dem Eingabewert in Klartext aufgeführt und dann zum Hacken von Nutzerkonten verwendet.
Salting und Hashing
Heißt das, dass Hashen für die meisten Passwörter nutzlos ist? Nein! Die gute Nachricht ist, dass Programmierer mehrere kluge Techniken entwickelt haben, um das Ermitteln des Passwort-Hashs zu erschweren. Oft wird eine Hashfunktion (Streuwertfunktion) mehrfach angewendet, um die Zeit zu erhöhen, die es zur Überprüfung eines Passworts braucht, und dadurch Brute-Force-Attacken zu verlangsamen.
Eine weitere Methode, mit der Programmierer Passwörter schützen, ist das sogenannte Salting. Dabei wird ein spezieller Wert, der Salt (Salz) genannt wird, zum Klartext hinzugefügt, nachdem der Nutzer das Passwort eingegeben hat, aber bevor es gehasht wird, um so die Nutzung vorberechneter Hashes aus Rainbow Tables zu verhindern. Durch den Salt-Wert sind Rainbow Tables nutzlos, sodass er auf einfache Weise vor solchen Angriffen schützt.
Im Beispiel mit dem MD5-Hashalgorithmus: Fügt man den zufälligen Salt-Wert „xhsr2d“ zum Klartext „password“ hinzu, ergibt sich MD5(„xhsr2dpassword“) und daraus der wiederum der Hash „ebf20a6c99eccaefa0bf4d88a5bd3456“. Dieser Ausgabewert unterscheidet sich vollkommen vom oben erwähnten ursprünglichen MD5-Hash für „password“, den jeder Hacker in einer Rainbow Table im Internet finden könnte. Durch das Salting des Passworts lässt sich der entsprechende Klartext für den Hash selbst dann nicht herausfinden, wenn eine Rainbow Table mit vorberechneten Hashes für jedes mögliche Passwort aus höchstens 10 Kleinbuchstaben vorliegt.
Da vorberechnete Hashes nicht mehr funktionieren, müssen Angreifer auf Brute-Force-Attacken zurückgreifen, um codierte Hashs in einer Datenbank zu hacken.
Bei einem Brute-Force-Angriff, auch „Methode der rohen Gewalt“ oder „Exhaustionsmethode“ genannt, wird die Rechenleistung von Computern genutzt, um systematisch verschiedene Hashes durchzuprobieren, bis die passende Kombination aus Passwort und Hash gefunden wird. Hashfunktionen beruhen darauf, wie schwer es ist, zwei verschiedene Nachrichten zu erstellen, die denselben Hashwert ergeben. Dies wird als Kollision bezeichnet. Wenn die Hashfunktion mit roher Gewalt zur Generierung von gleichen Werten für verschiedene Eingabewerte gezwungen werden kann, gilt sie als geknackt.
Das Knacken von Passwörtern per Brute-Force-Methode kann sehr schwierig sein. Moderne Computer können tausende Hashs pro Sekunde berechnen. Grafikkarten in modernen Computern sind spezialisierte Hardwarekomponenten, die sich hervorragend zur Berechnung von Hashs eignen. Manche Grafikkarten schaffen Milliarden von Hash pro Sekunde.
Ein langes Passwort aus 15 Kleinbuchstaben kann jedoch 1.677.259.342.285.725.925.376 Variationen aufweisen. Die Berechnung dieser Anzahl an Hashs würde selbst bei einer Geschwindigkeit von 1 Mrd. Hashs pro Sekunde über 50.000 Jahre dauern. Bei einem Passwort mit 8 Zeichen sinkt die Berechnungsdauer auf ca. 3,5 Minuten.
Sie als Nutzer eines Online-Dienstes können üblicherweise nicht sicherstellen, dass die Entwickler entsprechende Schutzmaßnahmen getroffen haben. Sie sollten also davon ausgehen, dass möglicherweise Rainbow Tables zur Ermittlung Ihres Passworts verwendet werden. In der Praxis heißt das, dass Sie längere Passwörter bevorzugen sollten, da Rainbow Tables hierfür quasi nutzlos sind. Denken Sie an das obige Beispiel: Indem Sie Ihr Passwort 7 Zeichen länger machen, erschweren Sie das Knacken um ein Vielfaches!