BIS News
Mein Passwort stand auf der Sperrliste: Wie funktioniert diese Prüfung eigentlich genau und warum ist sie sicher?
Seit der Aktivierung der Passwortprüfung im BIS Login am 14. August werden die bei der Anmeldung verwendeten Passworte zwei Prüfungen unterzogen:
- Erfüllt das Passwort die aktuellen Regelungen der Universität, ist also mindestens 12 Zeichen lang und enthält Groß- und Kleinbuchstaben sowie Ziffern?
- Steht das Passwort auf der Liste des have i been pwned (HIBP) Dienstes?
In diesem Post wollen wir erläutern, wie die zweite Prüfung in technischer Hinsicht funktioniert und wie es vermeiden, dabei Ihr Passwort an einen externen Dienst zu übergeben. Und wie wir es erreicht haben, dass selbst innerhalb unserer eigenen Systeme Ihr Passwort das Loginsystem nicht verlässt. Dazu erläutern wir diese Punkte:
- Was ist eigentlich der HIBP Dienst und woher bekommt er die gestohlenen Passworte
- Welche schlaue Idee steckt hinter der Verwendung von Hashwerten und der k-Anonymität und den darauf aufbauenden Schnittstellen
- Warum machen wir keine direkte Passwortprüfung bei HIBP
- Wie wurde die Prüfung innerhalb unserer Systeme aufgebaut
Was ist der have i been pwned (HIBP) Dienst
Der have i been pwned Dienst - gern abgekürzt als HIBP - verdankt seinen etwas merkwürdigen Namen dem Wort 'pwned', welches aus dem englischen Wort 'owned' ('besitzen') entstand. Es ist ein Begriff aus der Hackersprache und wird verwendet um auszudrücken, dass man ein fremdes Gerät oder das Konto einer anderen Person erfolgreich - und normalerweise ohne Zustimmung der rechtmäßigen Eigentümer*in - in Besitz genommen hat.
Der Name des Dienstes drückt damit direkt dessen Zweck aus: Er soll helfen die Frage zu beantworten, ob die eigenen Konten in IT-Systemen von Fremden übernommen wurden. Der HIBP Dienst kann das aber nur indirekt tun, er hat keinen Zugriff auf Konten von IT-Systembetreibern wie Microsoft, Google, Apple oder auch der Universität Bielefeld. Die Betreiber*innen von HIBP sammeln statt dessen Listen von gestohlenen E-Mailadressen und Passworten und auf dieser Grundlage machen sie ihre Prüfungen.
Diese Listen stammen aus ganz unterschiedlichen Quellen, oft sind es aber Listen, die in den Kreisen von Kriminellen gehandelt werden, die auf dieser Grundlage ihre Angriffe auf IT-Systeme in aller Welt starten. Für die kriminellen Akteure ist es viel effektiver bei Ihren Angriffen Passworte zu verwenden, die bekanntermaßen genutzt werden. Diese Art des Angriffs wird als Credential Stuffing bezeichnet, diese Seite von Cloudflare gibt dazu weitere Erläuterungen. Eine andere Variante ist das sogn. Password Spraying, welches in dieser Seite von CrowdStrike näher beschrieben wird.
Der HIBP Dienst hat bereits Milliarden von Passworten erhalten, die irgendwo auf der Welt abhanden gekommen sind. Alle Passworte, die in dieser Liste stehen, sind damit einem viel höheren Risiko ausgesetzt bei Angriffen verwendet zu werden, und sollten damit vermieden werden. Der HIBP Dienst bietet eine Seite an, in der man prüfen ob ein bestimmtes Passwort in dieser Liste vorkommt und wenn ja, wie häufig.
Wie kann eine Passwortabfrage sicher sein
Aber ist es nicht eine ganz wichtige Regel, nie in fremde Webseiten das eigene Passwort einzutragen? Normalerweise ist das so. In der HIBP Webseite wird aber ein spezielles Verfahren eingesetzt, welches auch bei der Verwendung im BIS Login eine wichtige Rolle spielt. Ausgangspunkt ist die Frage, wie man einen Dienst wie HIBP fragen kann, ob er ein bestimmtes Geheimnis - zum Beispiel das eigene Passwort - kennt, ohne dem Dienst das Geheimnis selbst mitzuteilen.
Das hört sich nach einer unmöglichen Aufgabe an? In gewisser Weise ist es das auch, aber es gibt Lösungen dafür: Eine ganz triviale Lösung wäre es, wenn einem der HIBP Dienst einfach alle ihm bekannnten Passworte geben würde. Und dann schaut man selbst auf dem eigenen Rechner nach. Aus Gründen, die wir in den folgenden Abschnitten genauer beschreiben, wäre das aber sehr unpraktisch und teuer (Spoiler: Es sind einfach zu viele Daten).
Aber es gibt einen Mittelweg: Man verrät dem HIBP Dienst einen sehr kleinen Teil des Geheimnisses / Passworts, um das es geht. Und der Dienst gibt einen sehr kleinen, dazu passenden Teil der ihm bekannten Geheimnisse / Passworte wieder zurück. Und nur diesen kleinen Teil vergleicht man dann. Natürlich ist es aber nicht so einfach, dass man hier an HIBP die ersten Zeichen des zu testenden Passworts schickt:
Hashwerte und k-Anonymität
Nehmen wir als Beispiel das (schlechte) Passwort 'Tomatensuppe1'. Es erfüllt die Passwortregelungen der Universität, aber der HIBP Dienst bemängelt es, denn es ist schon mehrmals unter gestohlenen Passworten aufgetaucht:
Schickt die HIBP Webseite bei der Prüfung dem HIBP Server nun so etwas wie 'Tomate' und bekommt Listen von Passworten wie 'Tomate1', 'Tomatensalat', Tomate1#ä12121SDFsd', 'Tomatensuppe1' etc. zurück? Mit dieser einfachen Lösung gibt es zwei Probleme:
- Wenn der Anfang eines Passworts im Klartext übertragen und irgendwo abgefangen würde könnte ein Angreifer schon deutlich bessere Vermutungen anstellen, wie es wohl endet: 'Tomatensuppe1' wäre als Kandidat deutlich naheliegender als z. B. ''Tomate$%efeweq§§$wfe'
- Noch gravierender ist, dass der HIBP Dienst dann selbst die Passworte unverschlüsselt speichern müsste und so zu einer sehr lohnenden Zielscheibe für Angriffe würde. Und diese Listen auch nicht frei verfügbar machen könnte
Statt dessen werden die Passworte verschlüsselt oder genauer gesagt, es wird ein sogn. Hashwert für sie errechnet und nur in dieser Form hält sie der HIBP Dienst vor. Im hier verwendeten SHA-1 Verfahren wird aus 'Tomatensuppe1' dieser Wert:
C78E9AEB1E09DFE9F8192945E1844E71EB25200D
Die Vorteile einer Abspeicherung als Hashwert werden in diesem Post von Troy Hunt, dem ursprünglichen Entwickler von HIBP, umfangreich erläutert und auch die Verknüpfung zum Konzept der k-Anonymität hergestellt. Kurz gesagt geht es darum, dass bei der Anfrage an HIBP nicht 'Tomate' geschickt wird, sondern 'C78E9', also der Anfang des Hashwerts. Wenn man die HIBP Seite genau analysiert wird man diesen Aufruf der HIBP Server finden, der nach der Eingabe von 'Tomatensuppe1' ausgelöst wird:
https://api.pwnedpasswords.com/range/C78E9
Warum ist 'C78E9' besser als 'Tomate' in Bezug auf den Geheimnisschutz? Weil es eine Eigenschaft von Hashfunktionen wie SHA-1 ist, dass sie bei ähnlichen Eingaben komplett unterschiedliche Ergebnisse erzeugen. So ergibt 'Tomatensuppe2' diesen Hashwert:
7E8D517E1603B048A6958BBF777A062A766AA48C
Hier ist von den ersten 5 Zeichen nur eines identisch mit dem Ergebnis für 'Tomatensuppe1'. Es ist also mit dem Wissen des Anfang eines Hashwerts nicht mehr möglich abzuleiten, um welches Passwort es wahrscheinlich geht. Der HIBP Server gibt dann ein Ergebnis mit einer Liste von allen bekannten Passworthashwerten zurück, die mit 'C78E9' beginnen. Und in dieser Liste ist auch der Hash von 'Tomatensuppe1':
Die Datei enthält - um Daten zu sparen - nur den Teil der Hashwerte nach dem gesuchten Anfang. Und ergänzt am Ende die Häufigkeit, mit der dieses Passwort in den Listen gestohlener Passworte vorkam. Auf diese Weise kann HIBP also eine Schnittstelle anbieten, deren Nutzung HIBP selbst keine verwertbaren Informationen darüber gibt, um welche zu prüfenden Passworte es eigentlich konkret geht.
Kann man daher der Passwortestseite von HIBP uneingeschränkt vertrauen? Die Webseite wandelt das eingegebene Passwort ebenfalls in den Hashwert um und nutzt die Schnittstelle zur Prüfung in der zuvor beschriebenen Weise. So lange man den Betreiber*innen von HIBP vertraut und die HIBP Webseite selbst nicht gehackt wird ist diese Methode sicher und ein eingetragenes Passwort verlässt den eigenen Webbrowser nicht.
Allerdings müssen Sie für eine Passwortprüfung gar nicht die HIBP Seite verwenden! Sie können auch die Passworttestseite in der Kontenverwaltung nutzen: https://login.uni-bielefeld.de/kv/pwtest
Diese Seite macht keine direkte Abfrage beim HIBP Dienst und das geht so:
Warum wir keine direkte Passwortprüfung bei HIBP machen
Unser Passworttest und die Passwortprüfung beim Login machen keine Aufrufe der HIBP Schnittstelle. Der Grund liegt nicht so sehr in einem Misstrauen gegenüber dem HIBP Dienst begründet, sondern stammt aus diesen Erwägungen:
- Abhängigkeiten von externen Diensten vermeiden: Die Passwortprüfung insbesondere beim Login muss schnell und zuverlässig funktionieren. Ein Aufruf einer Schnittstelle außerhalb des Universitätsnetzwerks hat immer das Risiko, dass Störungen an externen Systemen auf unsere internen Dienste zurückschlagen
- Abdichtung der Loginserver ermöglichen: Wenn die Server, die das Loginsystem betreiben, auf externe Schnittstellen zugreifen müssen, so sind dafür immer auch 'Löcher' in den digitalen Barrieren notwendig, die genau diese Server vor Angriffen schützen sollen
- Verhinderung von jeder Art von Informationsabfluss an externe Dienste: Auch wenn bei der Nutzung der Schnittstelle von HIBP keine Passworte übertragen werden, so fließen doch in gewissem Umfang Informationen. Zum Beispiel darüber, zu welchen Tageszeiten sich unsere Nutzer*innen anmelden und welche unserer Server daran beteiligt sind
Wir haben daher eine andere Lösung gewählt:
Wie wurde die Passwortprüfung auf der HIBP Liste innerhalb unserer Systeme umgesetzt
Der HIBP Dienst bietet zum Glück seine Daten auch zum Download an. Es geht dabei aber um eine Menge Daten. Eine GROSSE Menge Daten. So groß, dass der Download in mehr als 1 Million Dateien aufgeteilt ist. Ganz genau sind es 1.048.576 Dateien, was 16 hoch 5 entspricht. Eine dieser Dateien hat den Dateinamen 'C78E9.txt' und damit erklärt sich auch die Anzahl der Dateien: Denn es gibt genau 16 hoch 5 verschiedene Möglichkeiten, wie die Hexadezimalwerte 0-9 und A-F in 5 Zeichen kombiniert werden können. In diesen Dateien befinden sich dann die zuvor gezeigten Listen von Passworthashwerten, die mit den 5 Zeichen im Dateinamen beginnen.
Im ersten Schritt wurde daher von uns ein Verfahren aufgebaut, welches regelmäßig von HIBP diese Dateien abruft. Das geschieht nur alle paar Wochen, da nicht so häufig Aktualisierungen vorkommen. Das System, welches die Dateien abruft, ist dabei nicht das Loginsystem. Die so innerhalb der Universität gespeicherten HIBP Dateien werden wiederum von einem unserer Server zum Abruf zur Verfügung gestellt, der auf die Auslieferung von statischen Inhalten spezialisiert ist. Auf diese Weise können die Dateien schnell und verlässlich abgefragt werden.
Diese internen Server sind es dann am Ende, die vom Loginsystem und der Kontenverwaltung angefragt werden. Dabei wird genauso vorgegangen, wie beim HIBP Dienst selbst:
- Der Loginserver hat während Ihrer Anmeldung Ihr Passwort im Klartext, da er ohne diese Information Ihr Login nicht prüfen könnte
- Er berechnet damit den SHA-1 Wert und mit dessen ersten 5 Zeichen wird die Abfrage auf die internen Server gemacht, die die heruntergeladenen HIBP Dateien vorhalten
- Der Loginserver kann in der gelieferten Datei prüfen, ob der Hashwert Ihres Passworts darin enthalten ist und so die Prüfung abschließen
Ihr Passwort verlässt also nie das Loginsystem, wird nie auch nur in Teilen nach außen gegeben und auch innerhalb der IT Systeme der Universität finden sich zum Beispiel in Protokolldateien keine weiter auswertbaren Informationen zu Ihrem Passwort.
Ein komplexes Konstrukt für verbesserte IT Sicherheit
Wer diesen Post bis hierhin gelesen hat fragt sich vielleicht, ob dieser Aufwand gerechtfertigt ist? Das BIS Loginsystem, welches nach und nach auch auf weitere IT Dienste der Universität ausgeweitet wird, hat doch bereits Schutzfunktionen, die einen Logindiebstahl schnell bemerkbar machen (wie die ab dem 21.08.2024 verfügbare Benachrichtigung bei Logins neuen Geräten) und den Versuch Passworte zu erraten ausbremsen (durch temporäre Sperrungen von einzelnen Loginkonten und Rechneradressen). Und die nun generell verfügbare 2-Faktor-Authentifizierung schützt doch auch bei einem Passwortdiebstahl.
Auch hier gibt es mehrere Gründe: Zum einen haben die meisten Loginsysteme an der Universität heute keine vergleichbaren Schutzfunktionen und können auch nicht ganz kurzfristig damit ausgestattet bzw. mit dem BIS Login verknüpft werden. Auch wenn das ein Ziel für die Zukunft ist. Die Nutzung der 2-Faktor-Authentifizierung ist zwar seit dem 1. August für alle Nutzer*innen im BIS Login verfügbar, aber es gibt hier aktuell keine Verpflichtung zur Nutzung. So lange diese Gründe gelten, ist die Prüfung gegen die HIBP Liste ein weiteres Element, welches die IT Sicherheit an der Universität Bielefeld verbessert.