Zwei-Faktor-Authentifizierung
Bei allem, was Sie im ersten Teil gelesen haben, ging es darum, anhand der Kenntnisse des Anforderers zu identifizieren . Er kennt seine E-Mail-Adresse, weiß, wie er darauf zugreifen kann (d. H. Er kennt sein E-Mail-Passwort) und kennt die Antworten auf Sicherheitsfragen.
"Wissen" zählt als ein Authentifizierungsfaktor; Zwei weitere häufige Faktoren sind das, was Sie haben , z. B. ein physisches Gerät, und wer Sie sind , z. B. Fingerabdrücke oder die Netzhaut.
In den meisten Fällen ist eine biologische Identifizierung kaum möglich, insbesondere wenn es um die Sicherheit von Webanwendungen geht. Daher verwendet die Zwei-Faktor-Authentifizierung (2FA) normalerweise das zweite Attribut - "Was Sie haben". Eine beliebte Variante dieses zweiten Faktors ist ein physisches Token wie RSA SecurID :

Das physische Token wird häufig zur Authentifizierung in Unternehmens-VPNs und Finanzdienstleistungen verwendet. Für die Authentifizierung im Dienst müssen Sie sowohl das Kennwort als auch den Code auf dem Token (der sich häufig ändert) in Kombination mit der PIN verwenden. Theoretisch muss der Angreifer zur Identifizierung das Kennwort kennen, über ein Token verfügen und auch die PIN des Tokens kennen. In einem Szenario zum Zurücksetzen des Kennworts ist das Kennwort selbst offensichtlich unbekannt, aber der Besitz eines Tokens kann verwendet werden, um den Besitz eines Kontos zu bestätigen. Wie bei jeder Sicherheitsimplementierung ist dies natürlich nicht "narrensicher" , aber es erhöht definitiv die Eintrittsbarriere.
Eines der Hauptprobleme dieses Ansatzes sind die Kosten und die Logistik der Implementierung. Wir sprechen über die Übergabe physischer Geräte an jeden Kunden und das Unterrichten eines neuen Prozesses. Darüber hinaus müssen Benutzer ein Gerät bei sich haben, was bei einem physischen Token nicht immer der Fall ist. Eine andere Möglichkeit besteht darin, den zweiten Authentifizierungsfaktor mithilfe von SMS zu implementieren, der im Fall von 2FA als Bestätigung dafür dienen kann, dass die Person, die den Rücksetzvorgang durchführt, das Mobiltelefon des Kontoinhabers besitzt. So macht es Google:

Sie müssen auch die Bestätigung in zwei Schritten aktivieren. Dies bedeutet jedoch, dass Ihr Mobiltelefon beim nächsten Zurücksetzen Ihres Kennworts zum zweiten Authentifizierungsfaktor werden kann. Lassen Sie mich dies mit meinem iPhone aus Gründen demonstrieren, die bald klar werden:

Nach der Identifizierung der E-Mail-Adresse des Kontos stellt Google fest, dass 2FA aktiviert wurde, und wir können das Konto mithilfe einer Bestätigung zurücksetzen, die per SMS an das Mobiltelefon des Kontoinhabers gesendet wird:

Jetzt müssen wir den Start des Rücksetzvorgangs auswählen:

Diese Aktion führt dazu, dass eine E-Mail an die registrierte Adresse gesendet wird:

Diese E-Mail enthält die URL zum Zurücksetzen:

Beim Zugriff auf die URL zum Zurücksetzen wird eine SMS gesendet und die Website fordert zur Eingabe auf:

Dies ist die SMS:

Nach der Eingabe in den Browser kehren wir zum Gebiet des klassischen Zurücksetzens des Passworts zurück:

Es klingt wahrscheinlich etwas ausführlich und ist es auch, aber das Formular bestätigt, dass die Person, die den Reset durchführt, Zugriff auf die E-Mail-Adresse und das Mobiltelefon des Kontoinhabers hat. Es kann jedoch neunmal sicherer sein, als Ihr Passwort nur per E-Mail zurückzusetzen. Es gibt jedoch Probleme ...
Das Problem liegt bei Smartphones. Das unten gezeigte Gerät kann nur einen Authentifizierungsfaktor authentifizieren - es kann SMS empfangen, aber keine E-Mails:

Dieses Gerät kann jedoch SMS empfangen und E-Mails zum Zurücksetzen des Kennworts empfangen:

Das Problem ist, dass wir E-Mail als ersten Authentifizierungsfaktor und SMS (oder sogar eine tokengenerierende Anwendung) als zweiten betrachten, aber heute werden sie in einem Gerät kombiniert. Dies bedeutet natürlich, dass, wenn jemand an Ihr Smartphone gelangt, all dieser Komfort darauf zurückzuführen ist, dass wir wieder auf demselben Kanal sind. Dieser zweite Faktor, "was Sie haben", bedeutet, dass Sie auch den ersten Faktor haben. Und all dies ist durch eine vierstellige PIN geschützt ... wenn das Telefon überhaupt eine PIN hat und diese blockiert wurde.
Ja, die 2FA-Funktion von Google bietet sicherlich zusätzlichen Schutz, ist jedoch nicht kinderleicht und hängt sicherlich nicht von zwei vollständig autonomen Kanälen ab.
Zurücksetzen nach Benutzername vs Zurücksetzen per E-Mail
Sollte ich nur das Zurücksetzen auf die E-Mail-Adresse zulassen? Oder sollte der Benutzer auch nach Namen zurücksetzen können? Das Problem beim Zurücksetzen nach Benutzername besteht darin, dass es keine Möglichkeit gibt, den Benutzer über einen falschen Benutzernamen zu informieren, ohne zu offenbaren, dass jemand anderes möglicherweise ein Konto mit diesem Benutzernamen hat. Im vorherigen Abschnitt wurde durch das Zurücksetzen per E-Mail sichergestellt, dass der rechtmäßige Eigentümer dieser E-Mail immer Feedback erhält, ohne ihre Existenz im System öffentlich bekannt zu geben. Dies kann nicht nur mit dem Benutzernamen erfolgen.
Die Antwort ist also kurz: nur E-Mail. Wenn Sie versuchen, nur mit dem Benutzernamen zurückzusetzen, fragt sich der Benutzer manchmal, was passiert ist.oder Sie werden die Existenz von Konten offenlegen. Ja, dies ist nur ein Benutzername, keine E-Mail-Adresse, und ja, jeder kann einen beliebigen (verfügbaren) Benutzernamen auswählen. Es besteht jedoch weiterhin eine hohe Wahrscheinlichkeit, dass Sie Kontoinhaber aufgrund der Tendenz der Benutzer zur Wiederverwendung indirekt offenlegen. Name.
Was passiert also, wenn jemand seinen Benutzernamen vergisst? Wenn wir akzeptieren, dass der Benutzername nicht sofort eine E-Mail-Adresse ist (und dies passiert häufig), ähnelt der Vorgang dem Beginn eines Zurücksetzens des Kennworts. Wir geben eine E-Mail-Adresse ein und senden dann eine Nachricht an diese Adresse, ohne deren Existenz preiszugeben. Der einzige Unterschied besteht darin, dass die Nachricht diesmal nur den Benutzernamen und nicht die URL zum Zurücksetzen des Kennworts enthält. Entweder das, oder die E-Mail sagt, dass es kein Konto für diese Adresse gibt.
Identitätsprüfung und Richtigkeit der E-Mail-Adressen
Ein wichtiger Aspekt beim Zurücksetzen des Kennworts und möglicherweise sogar der wichtigste Aspekt ist die Überprüfung der Identität der Person, die versucht, das Zurücksetzen durchzuführen. Ist dies wirklich der legitime Eigentümer des Kontos oder versucht jemand, es zu hacken oder den Eigentümer zu belästigen?
Offensichtlich ist E-Mail die bequemste und häufigste Methode, um Ihre Identität zu überprüfen. Es ist nicht vor Misshandlungen geschützt ("vor dem Narren"), und es gibt viele Fälle, in denen die einfache Möglichkeit, Briefe an die Adresse des Kontoinhabers zu erhalten, nicht ausreicht, wenn ein hohes Maß an Vertrauen in die Identifizierung erforderlich ist (weshalb 2FA verwendet wird), aber es ist fast immer der Ausgangspunkt Prozess zurücksetzen.
Wenn E-Mail eine Rolle bei der Bereitstellung von Vertrauen spielen soll, müssen Sie zunächst sicherstellen, dass die E-Mail-Adresse tatsächlich korrekt ist. Wenn jemand einen Fehler mit dem Symbol gemacht hat, wird der Reset offensichtlich nicht gestartet. Der E-Mail-Überprüfungsprozess zum Zeitpunkt der Registrierung ist eine zuverlässige Methode, um die Richtigkeit der Adresse zu überprüfen. Wir alle haben dies in der Praxis gesehen: Wenn Sie sich anmelden, senden sie Ihnen eine E-Mail mit einer eindeutigen URL zum Klicken, die bestätigt, dass Sie tatsächlich der Eigentümer dieses E-Mail-Kontos sind. Wenn Sie sich vor Abschluss dieses Vorgangs nicht anmelden, wird sichergestellt, dass die Adresse überprüft werden muss.
Wie bei vielen anderen Sicherheitsaspekten verringert ein solches Modell die Benutzerfreundlichkeit im Austausch für ein höheres Maß an Sicherheit in Bezug auf die Identität des Benutzers. Dies mag für eine Website akzeptabel sein, deren Registrierung der Benutzer sehr schätzt und die gerne eine weitere Phase des Prozesses hinzufügt (kostenpflichtige Dienste, Bankgeschäfte usw.). Solche Dinge können den Benutzer jedoch entfremden, wenn er das Konto als "verfügbar" wahrnimmt und verwendet Zum Beispiel einfach, um einen Beitrag zu kommentieren.
Identifizieren, wer den Rücksetzvorgang initiiert hat
Offensichtlich gibt es Gründe für die böswillige Verwendung der Rücksetzfunktion, und Angreifer können sie auf viele verschiedene Arten verwenden. Ein einfacher Trick, mit dem wir den Ursprung der Anfrage überprüfen können (dieser Trick funktioniert normalerweise ), besteht darin, der E-Mail die zurückgesetzte IP-Adresse des Anforderers hinzuzufügen. Dadurch erhält der Empfänger einige Informationen, um die Quelle der Anforderung zu identifizieren.
Hier ist ein Beispiel aus der Reset-Funktion, die ich derzeit in ASafaWeb einbette:

Der Link " Weitere Informationen " führt den Benutzer zu ip-adress.com und bietet Informationen wie den Standort und die Organisation der Person , die das Zurücksetzen anfordert:

Natürlich hat jeder, der seine Identität verbergen möchte, viele Möglichkeiten, seine echte IP-Adresse zu verschleiern. Dies ist jedoch eine bequeme Möglichkeit, die Teilidentität des Anforderers hinzuzufügen. In den meisten Fällen erhalten Sie eine gute Vorstellung davon, wer eine Anforderung zum Zurücksetzen des Kennworts ausführt.
Benachrichtigung per E-Mail ändern
Dieser Beitrag ist von einem Thema durchdrungen - Kommunikation; Kommunizieren Sie dem Kontoinhaber so viel wie möglich darüber, was in jeder Phase des Prozesses geschieht, ohne etwas preiszugeben, das mit böswilliger Absicht verwendet werden könnte. Gleiches gilt, wenn sich das Passwort tatsächlich geändert hat - benachrichtigen Sie den Besitzer darüber!
Es gibt zwei Gründe für die Änderung eines Passworts:
- Ändern des Passworts nach der Anmeldung, da der Benutzer ein neues Passwort wünscht
- Zurücksetzen eines Passworts ohne Anmeldung, da der Benutzer es vergessen hat
Während es in diesem Beitrag hauptsächlich um das Zurücksetzen geht, verringert die Benachrichtigung im ersten Fall das Risiko, dass jemand das Passwort ohne Wissen des rechtmäßigen Eigentümers ändert. Wie kann das passieren? Ein sehr häufiges Szenario besteht darin, das Passwort des legitimen Besitzers zu erhalten (ein wiederverwendetes Passwort, das aus einer anderen Quelle durchgesickert ist; ein durch Keylogging erhaltenes Passwort; ein leicht zu erratendes Passwort usw.), wonach der Angreifer beschließt, es zu ändern, wodurch der Besitzer blockiert wird. Ohne E-Mail-Benachrichtigung ist dem aktuellen Eigentümer die Kennwortänderung nicht bekannt.
Im Falle eines Zurücksetzens des Passworts musste der Eigentümer den Prozess natürlich bereits einleiten (oder die oben beschriebenen Tools zur Überprüfung der Identifizierung umgehen), sodass die Änderung nicht erfolgen sollteEine Überraschung für ihn ist jedoch, dass eine Bestätigungs-E-Mail ein positives Feedback und eine zusätzliche Bestätigung darstellt. Darüber hinaus bietet es Konsistenz mit dem obigen Szenario.
Oh, und falls es noch nicht offensichtlich ist - poste dein neues Passwort nicht! Das mag einiges zum Lachen bringen, aber das passiert :

Protokolle, Protokolle, Protokolle und einige weitere Protokolle
Die Funktion zum Zurücksetzen des Passworts ist für Eindringlinge attraktiv: Der Angreifer möchte entweder Zugriff auf das Konto einer anderen Person erhalten oder den Konto- / Systembesitzer einfach belästigen. Viele der oben beschriebenen Vorgehensweisen können die Wahrscheinlichkeit eines Missbrauchs verringern, verhindern dies jedoch nicht und verhindern mit Sicherheit nicht, dass Personen versuchen, die Funktion auf unbeabsichtigte Weise zu verwenden.
Die Protokollierung ist eine absolut unschätzbare Methode, um böswilliges Verhalten zu erkennen, und ich meine die sehr detaillierte Protokollierung . Zeichnen Sie fehlgeschlagene Anmeldeversuche auf, setzen Sie Kennwörter zurück, ändern Sie Kennwörter (d. H. Wenn der Benutzer bereits angemeldet ist) und fast alles, was Ihnen helfen kann, zu verstehen, was passiert. es wird in Zukunft sehr nützlich sein. Notieren Sie sogar einzelne Teile in den ProtokollenEin guter Reset-Vorgang sollte beispielsweise das Initiieren eines Resets über die Website (Erfassen der Anfrage und Anmeldeversuche zum Zurücksetzen mit einem falschen Benutzernamen oder einer falschen E-Mail-Adresse) und das Aufzeichnen des Besuchs der Website über die Reset-URL (einschließlich der Versuche, die falsche zurückzusetzen) umfassen Token) und protokollieren Sie dann den Erfolg oder Misserfolg der Antwort auf die Sicherheitsfrage.
Wenn ich über die Protokollierung spreche, meine ich nicht nur das Aufzeichnen der Tatsache des Ladens einer Seite, sondern auch das Sammeln so vieler Informationen wie möglich, wenn diese nicht vertraulich sind . Leute, bitte protokolliert keine Passwörter! In den Protokollen müssen Sie die Identität des autorisierten Benutzers registrieren (er wird autorisiert, wenn er sich ändertvorhandenes Passwort oder der Versuch, das Passwort einer anderen Person nach dem Anmelden zurückzusetzen), alle versuchten Benutzernamen oder E-Mail-Adressen sowie alle zurückgesetzten Token, die verwendet werden sollen. Es lohnt sich aber auch, Aspekte wie IP-Adressen zu protokollieren und wenn möglich sogar Header anzufordern. Auf diese Weise können Sie nicht nur neu erstellen, was der Benutzer (oder Angreifer) versucht, sondern auch, wer er ist.
Übertragung der Verantwortung an andere Künstler
Wenn Sie denken, dass dies eine enorme Menge an Arbeit ist, dann sind Sie nicht allein. Tatsächlich ist der Aufbau eines robusten Kontoverwaltungssystems keine leichte Aufgabe. Es ist nicht so, dass es technisch schwer ist, es ist nur so, dass es viele Funktionen hat. Es geht nicht nur um das Zurücksetzen, es gibt einen vollständigen Registrierungsprozess, die sichere Speicherung von Passwörtern, die Behandlung mehrerer ungültiger Anmeldeversuche usw. usw. Während ich auf die Idee bin die Förderung der Verwendung von Out-of-the-box - Funktionalität wie der ASP.NET - Mitgliedschaft Anbieter , gibt es noch viel zu über es getan.
Heutzutage gibt es viele Drittanbieter, die sich gerne die Mühe machen und alles in einem verwalteten Service zusammenfassen. Diese Dienste umfassen OpenID, OAuth und sogar Facebook. Manche LeuteEs gibt keine Grenzen, diesem Modell zu glauben (OpenID war in der Tat bei Stack Overflow sehr erfolgreich), aber andere sehen es buchstäblich als Albtraum an .
Ohne Zweifel löst ein Dienst wie OpenID viele Entwicklerprobleme, fügt aber zweifellos auch neue hinzu. Haben sie eine Rolle zu spielen? Ja, aber offensichtlich werden Authentifizierungsdienstanbieter nicht massiv eingesetzt. Banken, Fluggesellschaften und sogar Geschäfte implementieren alle ihren eigenen Authentifizierungsmechanismus, und dafür gibt es offensichtlich sehr gute Gründe.
Böswillige Entlassung
Ein wichtiger Aspekt jedes der obigen Beispiele ist, dass das alte Passwort erst dann als nutzlos angesehen wird, wenn die Identität des Kontoinhabers überprüft wurde . Dies ist wichtig, da ein Zurücksetzen des Kontos vor der Identitätsprüfung alle Arten von böswilligen Aktivitäten auslösen würde.
Hier ein Beispiel: Jemand bietet auf einer Auktionsseite und blockiert gegen Ende des Gebotsvorgangs Wettbewerber, indem er einen Rücksetzvorgang einleitet und sie so aus dem Gebot entfernt. Wenn eine schlecht gestaltete Rücksetzfunktion missbraucht werden kann, kann dies offensichtlich zu schwerwiegenden negativen Ergebnissen führen. Es ist erwähnenswert, dass das Sperren von Konten durch falsche Anmeldeversuche eine ähnliche Situation darstellt, dies ist jedoch ein Thema für einen anderen Beitrag.
Wie oben erwähnt, ist es eine vorgefertigte Situation für einen Denial-of-Service-Angriff, anonymen Benutzern die Möglichkeit zu geben, das Kennwort eines Kontos einfach durch Kenntnis der E-Mail-Adresse zurückzusetzen. Es kann sein, dass es nicht dasselbe DoS istEs gibt keinen schnelleren Weg, den Zugriff auf Ihr Konto zu blockieren, als mit einer schlecht durchdachten Funktion zum Zurücksetzen von Passwörtern.
Schwächste Verbindung
Unter dem Gesichtspunkt des Schutzes eines Kontos ist alles, was oben geschrieben wurde, großartig. Sie müssen jedoch immer das Ökosystem berücksichtigen, das das Konto umgibt, das Sie schützen. Lassen Sie mich ein Beispiel geben:
ASafaWeb wird von einem hervorragenden Service von AppHarbor gehostet. Das Zurücksetzen eines Hosting-Kontos erfolgt wie folgt:
Phase 1:

Stufe 2:

Stufe 3:

Stufe 4:

Nachdem Sie alle vorherigen Informationen gelesen haben, ist es bereits leicht zu verstehen, welche Aspekte in einer idealen Welt wir etwas anders implementieren würden. Was ich hier jedoch sagen möchte, ist, dass wenn ich eine Site wie ASafaWeb auf AppHarbor veröffentliche und dann einige großartige Sicherheitsfragen und -antworten stelle, einen zweiten Authentifizierungsfaktor hinzufüge und den Rest gemäß den Regeln erledige, dies nicht die Tatsache negiert, dass das schwächste Glied im gesamten Prozess sein wird in der Lage, alles zu brechen. Wenn sich jemand mit meinen Informationen erfolgreich in AppHarbor authentifiziert, kann er das Passwort für jedes ASafaWeb-Konto durch das benötigte ersetzen!
Der Punkt ist, dass die Robustheit der Schutzimplementierung ganzheitlich betrachtet werden sollte: Es ist notwendig, Bedrohungen für jeden Einstiegspunkt des Systems zu simulieren, auch wenn es sich um einen oberflächlichen Prozess handelt, beispielsweise beim Eintritt in das AppHarbor-System. Dies sollte mir eine gute Vorstellung davon geben, wie viel Aufwand ich in den Prozess zum Zurücksetzen des ASafaWeb-Passworts investieren muss.
Alles zusammenfügen
Dieser Beitrag enthält viele Informationen, daher möchte ich ihn auf eine einfache visuelle Gliederung konzentrieren:

Denken Sie daran, für jedes dieser Elemente so detailliert wie möglich zu protokollieren. Das ist es, es ist einfach!
Ergebnis
Mein Beitrag scheint umfassend zu sein, aber es gibt eine Menge zusätzliches Material, das ich hinzufügen könnte , aber ich habe beschlossen, es der Kürze halber wegzulassen: die Rolle der Rettungs-E-Mail-Adresse, die Situation, in der Sie den Zugriff auf die mit dem Konto verknüpfte E-Mail verlieren (z. B. Sie kündigen Ihren Job) und so weiter. Wie ich bereits sagte, ist die Reset-Funktion nicht so schwierig, nur gibt es viele Gesichtspunkte.
Obwohl das Zurücksetzen nicht so schwierig ist, wird es oft falsch angewendet. Wir haben oben einige Beispiele gesehen, bei denen die Implementierung zu Problemen führen kann , und es gibt viele weitere Anwendungsfälle, bei denen ein falsches Zurücksetzen tatsächlich Probleme verursachte. Es wurde kürzlich enthüllt, dassDas Zurücksetzen des Passworts wurde verwendet, um Bitcoins im Wert von 87.000 USD zu stehlen . Dies ist ein ernstes negatives Ergebnis!
Seien Sie daher vorsichtig mit Ihren Reset-Funktionen, simulieren Sie Bedrohungen an verschiedenen Stellen und nehmen Sie beim Entwerfen einer Funktion Ihren schwarzen Hut nicht ab, da die Wahrscheinlichkeit groß ist, dass jemand anderes ihn trägt!
Werbung
VDSina bietet kostengünstige Server zur Miete mit einer täglichen Zahlung an. Jeder Server ist mit einem Internetkanal von 500 Megabit verbunden und kostenlos vor DDoS-Angriffen geschützt!
