Passworthandling in Unternehmen X (Rant)
Im Nachfolgenden ein geschwärzter Auszug einer Email, die ich kürzlich als Anregung an einen Auftraggeber gesendet habe. Ich wollte gerne meine Gedanken zum Passworthandling für die Nachwelt festhalten.
—
Zum [Zeitpunkt X] trage ich [Daten X] in die [Website von Firma X] ein. Seit beinahe 10 Jahren klappt das, indem ich meinen Benutzernamen und das Passwort auf der Seite in die dafür vorgesehenen Felder eintrage. Letzte Woche war das anders und die Seite verweigerte mir die Anmeldung mit der Behauptung, ich hätte ein falsches Passwort eingegeben.
Ich war zunächst erstaunt, da ich ein Passwort-Manager-Programm verwende, und ich solche Anmeldeformulare quasi über Kopieren-Einfügen ausfülle. Tippfehler passieren da nicht. Daher dachte ich, das Passwort wurde vielleicht anderweitig zurückgesetzt. Auf der Login-Seite begab ich mich auf die Suche nach einem “Passwort zurücksetzen”-Link: Fehlanzeige. Dieser durchaus übliche Mechanismus hätte mir eventuell erlaubt, über eine Emailadresse, die mit meinem Benutzernamen im [Backend-System von Firma X] hinterlegt ist/wäre, ein neues Passwort generieren zu können. Nach einiger vergeblicher Suche auf den Seiten der [Firma X] wurde mir klar, dass ich in der [IT von Firma X] würde vorstellig werden müssen.
Als ich in der [IT von Firma X] meinen Fall schildere, wird mir der Vorschlag unterbreitet, ein neues Passwort für meinen Benutzernamen festzulegen. Ich nehme an, dass man damit typischerweise 90% der Fälle “Ich kann mich nicht anmelden” lösen kann, weil Leute wirklich ihr Passwort vergessen haben. In meinem Fall glaubte ich nicht daran, weil mein Passwort wie gesagt schriftlich festgehalten ist.
Die Person in [IT von Firma X] lässt mich also über eine Eingabemaske an ihrem Rechner ein neues Passwort für meinen Account eintragen. Ich werde über die Anforderungen unterrichtet: Sonderzeichen, Zahlen, Groß- und Kleinbuchstaben – alle erforderlich. Wer denkt sich denn on-the-spot ein solches Passwort aus und merkt es sich? Und dann kommt es: Mindestlänge 5 Zeichen. Wie bitte? Wie geht das denn zusammen? Auf der einen Seite bemüht man sich, vermeintlich “sichere” Passwörter erstellen zu lassen, auf der anderen Seite beginnt man schon mit viel zu kurzen Strings! Ein Passwort von 5 Zeichen zu knacken dauert 2017 gerade mal anderthalb Minuten, wenn man der Website glauben darf: https://www.betterbuys.com/estimating-password-cracking-times/
Möchte man, dass Leute sichere Passwörter herstellen, könnte man also die Mindestlänge erhöhen.
Für den Versuch, meinen Account zu reparieren, war das alles nicht so wichtig. Ich liess mein Programm ein zufälliges Passwort mit 5 Stellen generieren und die Person in [IT von Firma X] liess mich einen neuen Versuch machen, mich auf der Website einzuloggen. Wieder Fehlanzeige. Sichtlich verblüfft, verliess sie den Raum, um mit den Leuten zu sprechen, die anscheinend für den technischen Unterbau verantwortlich sind. Es gebe wirklich ein Problem mit meinem Benutzerkonto, hiess es wenige Minuten später. In der Zwischenzeit war im Zimmer eine zweite Person eingetroffen, die offenkundig das selbe Problem hatte wie ich. Es lag nahe, dass der Fehler bei [IT von Firma X] lag.
In der Tat kam wiederum ein paar Minuten später der Hinweis, wir sollten es noch einmal versuchen. Die Vermutung war, dass es ein Problem in der Access-Datenbank gegeben habe und unter Umständen die Tabellenspalte der Passwörter per Autkorrektur verändert wurde (Erster Buchstabe Großschreibung?), was natürlich Logins unmöglich machte. Aber darüber weiss ich nicht viel. Warum das genau jetzt passiert ist, bleibt für mich wohl immer ein Rätsel.
Wir versuchen also erneut, ein neues Passwort anzulegen und mich damit einzuloggen – ich kenne ja mittlerweile den Drill. Resultat: Erfolg! Der Fehler ist also behoben. Allerdings möchte ich nicht “Ab12.” als mein permanentes Passwort behalten und bitte darum, ob ich mein Passwort nochmals ändern dürfe.
Weil ich mir in meiner Freizeit und beruflich (zu?) viele Gedanken über Passwortsicherheit mache, möchte ich diesmal ein gutes wählen. https://xkcd.com/936/ kommt mir sofort in den Sinn: es kommt beinahe nur auf die Länge des Passworts an. Kurze Passwörter, die trotzdem die Anforderungen von [IT von Firma X] erfüllen, sind nahezu umöglich zu merken aber trotzdem leicht zu knacken (niedrige Entropie). Ich lasse also mein Programm ein langes Passwort aus 4 einfachen Begriffen erzeugen, etwa 35 Zeichen lang – sicher für die mittlere Zukunft. Das letzte Wort ersetze ich durch Grossbuchstaben und Zahlen, die ich mir merken kann, um die Anforderungen zu erfüllen. Tippen liess es sich schnell und leicht. Der Mitarbeiter von [IT von Firma X] bedeutet mir, den Speichern-Knopf zu drücken. Aber was ist das? Fehler! Das Passwort darf maximal 20 Zeichen lang sein!
Warum das denn bitte?! Die 5 Zeichen Mindestlänge (und die Access-Datenbank) hätten mich schon stutzig werden lassen sollen. Hier waren Scharlatane am Werk, die darauf aus sind, es nahezu unmöglich zu machen, irgend-geartete sinnvolle Passwörter anzulegen. Warum die Zeichenlänge begrenzen? Was ist der potentielle Schaden? Das einzige, was mir einfiel, war, dass es vielleicht um Speicherplatz ging. Aber dann wurde mir sehr schnell angst und bange: So denkt nur jemand, der Passwörter im Klartext in einer Datenbank ablegt! Der Super-GAU. (Wenn man mal kurz überschlägt, wie viel Platz eine 256 Zeichen lange Passwortspalte benötigen würde, kommt man selbst bei 50000 Accounts auf gerade etwa 13MB, wenn jeder Account die vollen 256 Zeichen nutzen würde. Das wirkt recht vertretbar in meinen Augen. Mit Datentypen wie VARCHAR liesse sich sicher noch Platz einsparen. Nicht jeder macht lange Passwörter.)
Jede halbwegs vernünftige Person würde Passwörter aber als Hash-Wert abspeichern; und die haben eine fixe Länge, je nach Algorithmus. Selbst wenn in [IT von Firma X] das recht moderne SHA-256 verwendet würde, um Passwörter zu hashen, hätten die Passworthashes nur eine Länge von 64 Zeichen. Gerade mal 3.5MB bei 50000 Accounts. Wirkt doch vertretbar. Ältere Algorithmen (was ich mir bei [Firma X] leider auch vorstellen könnte) wären sogar noch kürzer.
Was mich ebenfalls etwas beunruhigt ist, dass die Vermutung mit der Autokorrektur, die die Passwörter korrumpiert hat, bei Hashes egal gewesen wäre. Die kann man vor dem Vergleich mit dem eingegebenen Passwort einfach auf upper- oder lowercase normalisieren. Mein Verdacht mit den Klartextpasswörtern erhärtet sich.
Um zu meinem Fall zurückzukommen: ich kann mich wieder einloggen. Danke. Ich war allerdings der Ansicht, dass, wenn es schon keine Möglichkeit gibt, mein Passwort über Email zurücksetzen zu lassen (Reset password link), es sicher im eingeloggten Zustand in der Oberfläche des Website eine Möglichkeit gibt, das eigene Passwort zu ändern. Wieder zuhause mache ich mich auf die Suche danach. Wieder Fehlanzeige. Für die Änderung des Passworts muss man wieder zur [IT von Firma X]. Wen wundert das noch?
—
Meine Empfehlung an die [IT von Firma X] war:
- – die Mindestlänge für Passwörter auf 10 Zeichen anheben.
- – die Maximallänge für Passwörter auf 256 (oder mehr?) Zeichen erhöhen.
- – auf der [Website] einen “Passwort vergessen?”-Link einführen, der das zurücksetzen des Benutzerpassworts über eine eventuell hinterlegte Emailadresse erlaubt.
- – auf der eingeloggten [Website] eine Möglichkeit vorsehen, das eigene Passwort direkt zu ändern.
- – Bonus: veröffentlichen, wie der prinzipielle Umgang mit Passwortdaten in den Datenbanken von [Firma X] ist und auf welche Weise sie hinterlegt sind.