
Es war einmal genug, um eine böse Großmutter am Eingang des Maschinenraums zu haben, um das Passwort zu schützen.
Vor langer Zeit, in den Tagen der frühen Mainframes, gab es eine hervorragende Zwei-Faktor-Authentifizierung. Bevor Sie Ihr persönliches Passwort in das Terminal eingeben konnten, mussten Sie mit einem Wachmann durch die Kabine gehen. All dies verengte die Angriffsfläche automatisch auf einige Personen, die physisch Zugang zum Terminal hatten. Zu diesem Zeitpunkt tauchten Modems, Hashing und andere Freuden der modernen Welt auf, als Passwörter regelmäßig in Millionenhöhe durchgesickert sind.
Wenn Sie Benutzer haben und diese sich mit einem Passwort anmelden, empfehle ich, die neuesten Empfehlungen von Organisationen wie dem Nationalen Institut für Standards und Technologien und dem Nationalen Cyber-Sicherheitszentrum noch einmal zu lesen .
Insbesondere ist es nicht mehr in Mode, eine Kennwortrotation zu verlangen. Und bestimmte Symbole in den besten Traditionen des Witzes über "FUCKING ROSE" zu fordern. Lassen Sie uns die wichtigsten Punkte durchgehen und versuchen, die Benutzer bequemer und sicherer zu machen.
Die Authentifizierung ist nicht binär
Nein, ich verstehe, dass Anhänger strenger Formulierungen jetzt anfangen werden, sich zu ärgern. Theoretisch ist der Benutzer entweder angemeldet oder nicht. Sie können sich nicht ein wenig anmelden. Moderne Leitfäden zur Informationssicherheit implizieren jedoch einen nicht-binären Ansatz für das Vertrauen der Benutzer.
Ein perfekt vertrauenswürdiger Benutzer konnte das Kennwort korrekt eingeben und sich von einem autorisierten Gerät aus anmelden. Etwas weniger Vertrauen in einen Benutzer, der sich von einem vertrauenswürdigen Gerät aus angemeldet hat, aber bei der Eingabe des Kennworts einen Fehler gemacht hat. Und es ist wirklich schlimm, wenn der Benutzer das Passwort korrekt eingegeben hat, das Gerät jedoch nicht vertrauenswürdig ist, der zweite Faktor nicht bestätigt wird und die IP zum Ausgabeknoten von Thor gehört. Im dritten Fall ist es Zeit, den Schalter mit der Aufschrift „Alarm! Der Wolf hat die Kaninchen gestohlen! "
Unsere Aufgabe als Dienstleister ist es, Menschen komfortabel, sicher und nicht sehr schmerzhaft zu machen, wenn sie Fehler machen. Daher lohnt es sich, bestimmte Anzeichen abnormaler Aktivitäten zu platzieren, um bestimmte zusätzliche Maßnahmen zum Schutz des Kontos aufzunehmen. Fordern Sie den Benutzer beispielsweise nach 3-5 falschen Kennworteingaben auf, das CAPTCHA zu durchlaufen. Ja, jeder hasst es, aber die meisten Benutzer werden es nicht antreffen. Und diejenigen, die ihre Vertrauensbewertung herabgestuft haben, werden einfach etwas langsamer, bevor sie das Passwort erneut eingeben. Aber wir werden automatische Brute-Force-Angriffe abschneiden.
Die maximale Kennwortlänge muss nicht begrenzt werden

Lange Passwörter sind sicherer. Lassen Sie Benutzer sie verwenden.
Nun, nicht, dass es überhaupt nicht notwendig wäre. Fettgedruckte Passwörter mit einer Länge von mehreren Megabyte können möglicherweise an unerwarteten Stellen oder anderen seltsamen Effekten nach hinten losgehen. Die bedingte maximale Länge von 300 Zeichen ist jedoch für jeden typischen Benutzer garantiert. Darüber hinaus hält sich NIST an dieselben Empfehlungen:
Der Authentifikator muss dem Benutzer erlauben, einprägsame Passwörter mit mindestens 64 Zeichen zu verwenden.
Und für besonders begabte Dienste bietet NIST noch eine weitere wichtige Empfehlung:
Das Abschneiden des Benutzerpassworts ist nicht zulässig.
Ja, es gibt äußerst seltsame Dienste, die glauben, dass 12 Zeichen ausreichen, was bedeutet, dass die verbleibenden 28 sicher abgeschnitten und nur der Hash des ersten Fragments überprüft werden können. Ich weiß nicht, was der betroffene Verstand davon hielt, aber die gleichen Bankenorganisationen leiden oft darunter. Tu das nicht. Wenn der Benutzer ein Stück von Ilias in zwei Hälften mit Textfragmenten aus der Bloodstock-Gruppe verwenden möchte, lassen Sie ihn es verwenden.
Stellen Sie sicher, dass alle ASCII-Zeichen gültig sind
Es gibt bestimmte Probleme mit Sonderzeichen. Beispielsweise kann die Verwendung von "{} / \" oder anderen ähnlichen Zeichen in einigen Situationen möglicherweise ungültig sein. Angenommen, geschweifte Klammern können gültigen JSON-Code beschädigen und zum Absturz der Kennwortverarbeitung führen. Oder das Apostrophzeichen, das in der SQL-Injection verwendet werden kann. Ja, das Passworteingabeformular kann auch ein Eingangstor für einen Angriff sein.
Theoretisch könnten Sie die Verwendung solcher Symbole einfach verbieten, um es sich leichter zu machen. Auf diese Weise verringern Sie jedoch die Entropie des Kennworts des Benutzers und machen es für ihn unpraktisch, wenn das Kennwort automatisch generiert wird. Sie müssen bestimmte Muster für Ausnahmen auswählen. Wieder unter Bezugnahme auf den
Alle druckbaren ASCII-Zeichen [RFC 20], einschließlich Leerzeichen, müssen gültige Kennwörter sein. Unicode-Zeichen [ISO / ISC 10646] müssen ebenfalls gültig sein.
Ja. Alles ist richtig. Dies ist Ihre Kopfschmerzen und zusätzliche Tests. Aber wenn der Benutzer ਬਹੁਤ ਮੁਸ਼ਕਲ ਪਾਸਵਰਡ oder මෙයද ඉතා දුෂ්කර මුරපදයකි verwenden möchte, lassen Sie ihn dies tun. Oder fügen Sie Ihrem Passwort ein Burrito-Zeichen hinzu, um die kryptografische Stärke zu gewährleisten. Hat das Recht.
Bleiben Sie auch hinter dem Benutzer zurück, wenn Sie Sonderzeichen verwenden müssen. Ja, fass ihn einfach nicht an. Lass ihn benutzen, was er will. Studien zu Massenlecks legen nahe, dass Menschen immer noch dumme Substitutionen mit Sonderzeichen verwenden, was die Situation überhaupt nicht verbessert. Insbesondere schreibt Microsoft:
Die meisten Menschen verwenden dasselbe Muster, z. B. einen Großbuchstaben als erstes Zeichen, Sonderzeichen und Zahlen an den letzten beiden Positionen. Cyberkriminelle sind sich dessen bewusst und passen ihre Wörterbuchangriffe mit typischen Ersetzungen wie "s" für "$", "a" für "@" und "i" für "l" an.
Ja, dasselbe Microsoft, aufgrund dessen jeden Monat Millionen von Menschen ein neues Passwort entwickeln, das nicht mit den vorherigen übereinstimmt und in verschiedenen Fällen Sonderzeichen und Buchstaben enthält. Sie sind diejenigen, die jetzt in ihren Richtlinien "Anforderungen an die Charakterzusammensetzung beseitigen" schreiben.
Schließlich können typische Dienstprogramme wie Cain und Abel, Hashcat und John the Ripper ein Passwort in wenigen Stunden oder sogar Minuten auf einer typischen Grafikkarte erraten, wenn ein Standardvokabularwort und ein typisches Ersatzmuster verwendet wurden.
Verwenden Sie keine Passworthinweise
Es ist viel sicherer, ein vergessenes Passwort für immer zu begraben, als einen Hinweis in Klartext in der Datenbank zu speichern.

Im Jahr 2013 hat Adobe seine Passwortdatenbank durchgesickert. Es wurde schief verschlüsselt, aber das Unangenehmste war, dass es Hinweise zur Wiederherstellung enthielt, die Randal Monroe in xkcd nicht verspottete.
Die gleiche Meinung teilt NIST, das nicht empfiehlt, Hinweise in irgendeiner Form zu speichern. Vergessen - Wiederherstellung per Mail mit allen zusätzlichen Überprüfungen.
Reduzieren Sie die Belastung des Gehirns des Benutzers
Das National Cyber Security Center hat eine coole Infografik veröffentlicht . Lassen Sie mich eine kleine Passage zitieren:

Beachten Sie, dass das Hauptproblem bei Passwörtern darin besteht, dass ein gutes Passwort zufällig ist und sich kaum merken lässt. Wenn es viele Dienste gibt, wird der Benutzer fast immer das gleiche Passwort verwenden, wo immer dies möglich ist. Die Fortgeschrittenen machen so etwas wie "myp@ssword_habr.com". Wenn Sie ein Kennwort an einem Ort kompromittieren, werden natürlich die Konten in allen anderen Diensten automatisch kompromittiert.
Lassen Sie den Benutzer daher Kennwortmanager verwenden. Ja, es ist wie eine spezielle Brieftasche für Bankkarten, mit der Sie sie gleichzeitig verlieren können. Hier müssen Sie jedoch verstehen, dass der Kompromiss eines Offline-Kennwortspeichers eine eher seltene Situation ist, im Gegensatz zum Kompromiss derselben Kennwörter auf verschiedenen Ressourcen. Ein Passwort-Manager muss nicht perfekt sein. Es muss überall besser sein als die gleiche Art von Passwörtern. Seien Sie nicht wie ein böser Dienst, der die Möglichkeit blockiert, ein Kennwort in ein Feld aus der Zwischenablage einzufügen. Dies zwingt den Benutzer eindeutig dazu, den Passwort-Manager zu verlassen und die schwache Option zu verwenden.
Der zweite Punkt besagt, dass es nicht erforderlich ist, den Benutzer zu zwingen, sein Passwort zu ändern, wenn es keine offensichtlichen Anzeichen für seinen Kompromiss gibt. Dies motiviert ihn nur, das Muster mit demselben Passwort zu verwenden. Es ist viel besser, den Alarm auszulösen, wenn das Kennwort in einem der vielen durchgesickerten Wörterbücher angezeigt wird. Natürlich können Sie nicht zulassen, dass der Benutzer ein Passwort erstellt, das bereits in den Wörterbüchern enthalten ist.
Schlussfolgerungen
- Seien Sie freundlich zum Benutzer. Zwingen Sie ihn nicht, sich typische Muster auszudenken und dumme Dinge zu tun. Gewohnheitsmäßige Standardanforderungen drängen ihn direkt dazu. Folgen Sie einfach ein paar Punkten:
- Verwenden Sie gegebenenfalls die Schlüsselauthentifizierung anstelle von Kennwörtern.
- Lassen Sie den Benutzer kein Kennwort verwenden, wenn es sich in den Wörterbuchdatenbanken befindet. Es ist egal, ob er sie dort oder jemand anderen durchgesickert ist.
- , . . .
- , .
- , .
