{"id":4163,"date":"2017-07-13T17:11:47","date_gmt":"2017-07-13T15:11:47","guid":{"rendered":"http:\/\/oelna.de\/blog\/?p=4163"},"modified":"2017-07-13T17:11:47","modified_gmt":"2017-07-13T15:11:47","slug":"passworthandling-in-unternehmen-x-rant","status":"publish","type":"post","link":"https:\/\/oelna.de\/blog\/4163","title":{"rendered":"Passworthandling in Unternehmen X (Rant)"},"content":{"rendered":"<p>Im Nachfolgenden ein geschw\u00e4rzter Auszug einer Email, die ich k\u00fcrzlich als Anregung an einen Auftraggeber gesendet habe. Ich wollte gerne meine Gedanken zum Passworthandling f\u00fcr die Nachwelt festhalten.<br \/>&#8212; <\/p>\n<p>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\u00fcr vorgesehenen Felder eintrage. Letzte Woche war das anders und die Seite verweigerte mir die Anmeldung mit der Behauptung, ich h\u00e4tte ein falsches Passwort eingegeben.<\/p>\n<p>Ich war zun\u00e4chst erstaunt, da ich ein Passwort-Manager-Programm verwende, und ich solche Anmeldeformulare quasi \u00fcber Kopieren-Einf\u00fcgen ausf\u00fclle. Tippfehler passieren da nicht. Daher dachte ich, das Passwort wurde vielleicht anderweitig zur\u00fcckgesetzt. Auf der Login-Seite begab ich mich auf die Suche nach einem &#8220;Passwort zur\u00fccksetzen&#8221;-Link: Fehlanzeige. Dieser durchaus \u00fcbliche Mechanismus h\u00e4tte mir eventuell erlaubt, \u00fcber eine Emailadresse, die mit meinem Benutzernamen im [Backend-System von Firma X] hinterlegt ist\/w\u00e4re, ein neues Passwort generieren zu k\u00f6nnen. Nach einiger vergeblicher Suche auf den Seiten der [Firma X] wurde mir klar, dass ich in der [IT von Firma X] w\u00fcrde vorstellig werden m\u00fcssen.<\/p>\n<p>Als ich in der [IT von Firma X] meinen Fall schildere, wird mir der Vorschlag unterbreitet, ein neues Passwort f\u00fcr meinen Benutzernamen festzulegen. Ich nehme an, dass man damit typischerweise 90% der F\u00e4lle &#8220;Ich kann mich nicht anmelden&#8221; l\u00f6sen kann, weil Leute wirklich ihr Passwort vergessen haben. In meinem Fall glaubte ich nicht daran, weil mein Passwort wie gesagt schriftlich festgehalten ist.<\/p>\n<p>Die Person in [IT von Firma X] l\u00e4sst mich also \u00fcber eine Eingabemaske an ihrem Rechner ein neues Passwort f\u00fcr meinen Account eintragen. Ich werde \u00fcber die Anforderungen unterrichtet: Sonderzeichen, Zahlen, Gro\u00df- und Kleinbuchstaben \u2013 alle erforderlich. Wer denkt sich denn on-the-spot ein solches Passwort aus und merkt es sich? Und dann kommt es: Mindestl\u00e4nge 5 Zeichen. Wie bitte? Wie geht das denn zusammen? Auf der einen Seite bem\u00fcht man sich, vermeintlich &#8220;sichere&#8221; Passw\u00f6rter 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: <a href=\"https:\/\/www.betterbuys.com\/estimating-password-cracking-times\/\" data-external=\"true\">https:\/\/www.betterbuys.com\/estimating-password-cracking-times\/<\/a><br \/>\nM\u00f6chte man, dass Leute sichere Passw\u00f6rter herstellen, k\u00f6nnte man also die Mindestl\u00e4nge erh\u00f6hen.<\/p>\n<p>F\u00fcr den Versuch, meinen Account zu reparieren, war das alles nicht so wichtig. Ich liess mein Programm ein zuf\u00e4lliges 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\u00fcfft, verliess sie den Raum, um mit den Leuten zu sprechen, die anscheinend f\u00fcr den technischen Unterbau verantwortlich sind. Es gebe wirklich ein Problem mit meinem Benutzerkonto, hiess es wenige Minuten sp\u00e4ter. 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.<\/p>\n<p>In der Tat kam wiederum ein paar Minuten sp\u00e4ter der Hinweis, wir sollten es noch einmal versuchen. Die Vermutung war, dass es ein Problem in der Access-Datenbank gegeben habe und unter Umst\u00e4nden die Tabellenspalte der Passw\u00f6rter per Autkorrektur ver\u00e4ndert wurde (Erster Buchstabe Gro\u00dfschreibung?), was nat\u00fcrlich Logins unm\u00f6glich machte. Aber dar\u00fcber weiss ich nicht viel. Warum das genau jetzt passiert ist, bleibt f\u00fcr mich wohl immer ein R\u00e4tsel.<\/p>\n<p>Wir versuchen also erneut, ein neues Passwort anzulegen und mich damit einzuloggen \u2013 ich kenne ja mittlerweile den Drill. Resultat: Erfolg! Der Fehler ist also behoben. Allerdings m\u00f6chte ich nicht &#8220;Ab12.&#8221; als mein permanentes Passwort behalten und bitte darum, ob ich mein Passwort nochmals \u00e4ndern d\u00fcrfe.<\/p>\n<p>Weil ich mir in meiner Freizeit und beruflich (zu?) viele Gedanken \u00fcber Passwortsicherheit mache, m\u00f6chte ich diesmal ein gutes w\u00e4hlen. <a href=\"https:\/\/xkcd.com\/936\/\" data-external=\"true\">https:\/\/xkcd.com\/936\/<\/a> kommt mir sofort in den Sinn: es kommt beinahe nur auf die L\u00e4nge des Passworts an. Kurze Passw\u00f6rter, die trotzdem die Anforderungen von [IT von Firma X] erf\u00fcllen, sind nahezu um\u00f6glich 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 \u2013 sicher f\u00fcr die mittlere Zukunft. Das letzte Wort ersetze ich durch Grossbuchstaben und Zahlen, die ich mir merken kann, um die Anforderungen zu erf\u00fcllen. Tippen liess es sich schnell und leicht. Der Mitarbeiter von [IT von Firma X] bedeutet mir, den Speichern-Knopf zu dr\u00fccken. Aber was ist das? Fehler! Das Passwort darf maximal 20 Zeichen lang sein!<\/p>\n<p>Warum das denn bitte?! Die 5 Zeichen Mindestl\u00e4nge (und die Access-Datenbank) h\u00e4tten mich schon stutzig werden lassen sollen. Hier waren Scharlatane am Werk, die darauf aus sind, es nahezu unm\u00f6glich zu machen, irgend-geartete sinnvolle Passw\u00f6rter anzulegen. Warum die Zeichenl\u00e4nge 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\u00f6rter im Klartext in einer Datenbank ablegt! Der Super-GAU. (Wenn man mal kurz \u00fcberschl\u00e4gt, wie viel Platz eine 256 Zeichen lange Passwortspalte ben\u00f6tigen w\u00fcrde, kommt man selbst bei 50000 Accounts auf gerade etwa 13MB, wenn jeder Account die vollen 256 Zeichen nutzen w\u00fcrde. Das wirkt recht vertretbar in meinen Augen. Mit Datentypen wie VARCHAR liesse sich sicher noch Platz einsparen. Nicht jeder macht lange Passw\u00f6rter.)<\/p>\n<p>Jede halbwegs vern\u00fcnftige Person w\u00fcrde Passw\u00f6rter aber als Hash-Wert abspeichern; und die haben eine fixe L\u00e4nge, je nach Algorithmus. Selbst wenn in [IT von Firma X] das recht moderne SHA-256 verwendet w\u00fcrde, um Passw\u00f6rter zu hashen, h\u00e4tten die Passworthashes nur eine L\u00e4nge von 64 Zeichen. Gerade mal 3.5MB bei 50000 Accounts. Wirkt doch vertretbar. \u00c4ltere Algorithmen (was ich mir bei [Firma X] leider auch vorstellen k\u00f6nnte) w\u00e4ren sogar noch k\u00fcrzer.<\/p>\n<p>Was mich ebenfalls etwas beunruhigt ist, dass die Vermutung mit der Autokorrektur, die die Passw\u00f6rter korrumpiert hat, bei Hashes egal gewesen w\u00e4re. Die kann man vor dem Vergleich mit dem eingegebenen Passwort einfach auf upper- oder lowercase normalisieren. Mein Verdacht mit den Klartextpassw\u00f6rtern erh\u00e4rtet sich.<\/p>\n<p>Um zu meinem Fall zur\u00fcckzukommen: ich kann mich wieder einloggen. Danke. Ich war allerdings der Ansicht, dass, wenn es schon keine M\u00f6glichkeit gibt, mein Passwort \u00fcber Email zur\u00fccksetzen zu lassen (Reset password link), es sicher im eingeloggten Zustand in der Oberfl\u00e4che des Website eine M\u00f6glichkeit gibt, das eigene Passwort zu \u00e4ndern. Wieder zuhause mache ich mich auf die Suche danach. Wieder Fehlanzeige. F\u00fcr die \u00c4nderung des Passworts muss man wieder zur [IT von Firma X]. Wen wundert das noch?<\/p>\n<p>&#8212; <br \/>Meine Empfehlung an die [IT von Firma X] war:<\/p>\n<ul>\n<li>&#8211; die Mindestl\u00e4nge f\u00fcr Passw\u00f6rter auf 10 Zeichen anheben.<\/a>\n<li>&#8211; die Maximall\u00e4nge f\u00fcr Passw\u00f6rter auf 256 (oder mehr?) Zeichen erh\u00f6hen.<\/a>\n<li>&#8211; auf der [Website] einen &#8220;Passwort vergessen?&#8221;-Link einf\u00fchren, der das zur\u00fccksetzen des Benutzerpassworts \u00fcber eine eventuell hinterlegte Emailadresse erlaubt.<\/a>\n<li>&#8211; auf der eingeloggten [Website] eine M\u00f6glichkeit vorsehen, das eigene Passwort direkt zu \u00e4ndern.<\/a>\n<li>&#8211; Bonus: ver\u00f6ffentlichen, wie der prinzipielle Umgang mit Passwortdaten in den Datenbanken von [Firma X] ist und auf welche Weise sie hinterlegt sind.<\/a>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Im Nachfolgenden ein geschw\u00e4rzter Auszug einer Email, die ich k\u00fcrzlich als Anregung an einen Auftraggeber gesendet habe. Ich wollte gerne meine Gedanken zum Passworthandling f\u00fcr die Nachwelt festhalten.&#8212; 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[2,1],"tags":[828,470,255,79,321,608],"class_list":["post-4163","post","type-post","status-publish","format-standard","hentry","category-deutsch","category-general","tag-development","tag-fail","tag-password","tag-security","tag-webdesign","tag-work"],"_links":{"self":[{"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/posts\/4163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/comments?post=4163"}],"version-history":[{"count":5,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/posts\/4163\/revisions"}],"predecessor-version":[{"id":4168,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/posts\/4163\/revisions\/4168"}],"wp:attachment":[{"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/media?parent=4163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/categories?post=4163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oelna.de\/blog\/wp-json\/wp\/v2\/tags?post=4163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}