Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1

Ich hatte kürzlich Zeit, noch einmal darüber nachzudenken, wie eine Funktion zum sicheren Zurücksetzen von Passwörtern funktionieren sollte, zunächst als ich diese Funktionalität einbaute ASafaWeb, und dann, als er einer anderen Person dabei half, etwas Ähnliches zu tun. Im zweiten Fall wollte ich ihm einen Link zur kanonischen Ressource mit allen Details zur sicheren Implementierung der Reset-Funktion geben. Das Problem ist jedoch, dass es eine solche Ressource nicht gibt, zumindest keine, die alles beschreibt, was mir wichtig erscheint. Also beschloss ich, es selbst zu schreiben.

Sie sehen, die Welt der vergessenen Passwörter ist eigentlich ziemlich mysteriös. Es gibt viele verschiedene, durchaus akzeptable Standpunkte und viele ziemlich gefährliche. Es ist wahrscheinlich, dass Sie als Endbenutzer auf jedes davon schon oft gestoßen sind; Deshalb werde ich versuchen, anhand dieser Beispiele zu zeigen, wer es richtig macht und wer nicht und worauf Sie sich konzentrieren müssen, um eine Funktion in Ihrer Anwendung richtig zu implementieren.

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1

Passwortspeicherung: Hashing, Verschlüsselung und (keuch!) Klartext

Wir können nicht besprechen, was mit vergessenen Passwörtern geschehen soll, bevor wir besprechen, wie sie gespeichert werden. Passwörter werden in einer von drei Hauptarten in der Datenbank gespeichert:

  1. Einfacher Text. Es gibt eine Passwortspalte, die im Klartextformat gespeichert ist.
  2. Verschlüsselt. Normalerweise wird symmetrische Verschlüsselung verwendet (ein Schlüssel wird sowohl für die Verschlüsselung als auch für die Entschlüsselung verwendet), und die verschlüsselten Passwörter werden auch in derselben Spalte gespeichert.
  3. gehasht. Einseitiger Prozess (Passwort kann gehasht, aber nicht dehasht werden); Passwort, hoffentlich, gefolgt von einem Salz, und jedes steht in einer eigenen Spalte.

Beschäftigen wir uns gleich mit der einfachsten Frage: Speichern Sie Passwörter niemals im Klartext! Niemals. Eine einzige Schwachstelle Injektionen, eine unachtsam erstellte Sicherungskopie oder einer von Dutzenden anderer einfacher Fehler – und das war's, Gameover, alle Ihre Passwörter – das heißt, sorry, Passwörter für alle Ihre Kunden wird gemeinfrei. Das würde natürlich eine große Wahrscheinlichkeit bedeuten alle ihre Passwörter von all ihren Konten in anderen Systemen. Und es wird deine Schuld sein.

Verschlüsselung ist besser, hat aber ihre Schwächen. Das Problem der Verschlüsselung liegt in der Entschlüsselung; Wir können diese verrückt aussehenden Chiffren nehmen und sie wieder in Klartext umwandeln, und wenn das passiert, sind wir wieder bei der Situation mit lesbaren Passwörtern. Wie kommt es dazu? Ein kleiner Fehler steckt im Code, der das Passwort entschlüsselt und es öffentlich zugänglich macht – das ist eine Möglichkeit. Hacker erhalten Zugriff auf die Maschine, auf der die verschlüsselten Daten gespeichert sind – dies ist der zweite Weg. Eine andere Möglichkeit besteht wiederum darin, das Backup der Datenbank zu stehlen, wodurch jemand auch an den Verschlüsselungsschlüssel gelangt, der oft sehr unsicher gespeichert ist.

Und das bringt uns zum Hashing. Die Idee hinter dem Hashing ist, dass es auf eine Weise erfolgt; Die einzige Möglichkeit, das vom Benutzer eingegebene Passwort mit seiner gehashten Version zu vergleichen, besteht darin, das eingegebene Passwort zu hashen und zu vergleichen. Um Angriffe mit Tools wie Rainbow Tables zu verhindern, verwenden wir Salt, um dem Prozess Zufälligkeit zu verleihen (für das vollständige Bild lesen Sie meine Seite). Post über kryptografische Speicherung). Letztendlich können wir bei korrekter Implementierung sicher sein, dass gehashte Passwörter nie wieder zu Klartext werden (über die Vorteile verschiedener Hashing-Algorithmen werde ich in einem anderen Beitrag sprechen).

Ein kurzes Argument zum Thema Hashing vs. Verschlüsselung: Der einzige Grund, warum Sie jemals ein Passwort verschlüsseln statt hashen müssen, besteht darin, dass Sie das Passwort im Klartext sehen müssen Du solltest es niemals wollen, zumindest im Fall einer Standard-Website. Wenn Sie das brauchen, dann machen Sie höchstwahrscheinlich etwas falsch!

Achtung!

Unten im Text des Beitrags befindet sich ein Teil eines Screenshots der pornografischen Website AlotPorn. Es ist ordentlich beschnitten, so dass es am Strand nichts gibt, was Sie nicht sehen können, aber wenn es immer noch wahrscheinlich ist, dass es Probleme verursacht, scrollen Sie nicht nach unten.

Setzen Sie Ihr Passwort immer zurück nie erinnere ihn nicht daran

Wurden Sie schon einmal gebeten, eine Funktion zu erstellen? Erinnerungen Passwort? Machen Sie einen Schritt zurück und denken Sie umgekehrt über diese Bitte nach: Warum ist diese „Erinnerung“ notwendig? Weil der Benutzer das Passwort vergessen hat. Was wollen wir wirklich tun? Helfen Sie ihm, sich erneut anzumelden.

Ich verstehe, dass das Wort „Erinnerung“ (oft) umgangssprachlich verwendet wird, aber was wir wirklich versuchen, ist Helfen Sie dem Benutzer sicher, wieder online zu sein. Da wir Sicherheit benötigen, gibt es zwei Gründe, warum eine Erinnerung (d. h. das Senden des Passworts an den Benutzer) nicht angebracht ist:

  1. E-Mail ist ein unsicherer Kanal. So wie wir nichts Vertrauliches über HTTP senden würden (wir würden HTTPS verwenden), sollten wir auch nichts über E-Mail senden, da die Transportschicht unsicher ist. Tatsächlich ist dies viel schlimmer, als einfach Informationen über ein unsicheres Transportprotokoll zu senden, da E-Mails oft auf dem Laufwerk gespeichert werden, für Systemadministratoren verfügbar sind, weitergeleitet und verteilt werden, für Malware verfügbar sind und so weiter. Unverschlüsselte E-Mails sind ein äußerst unsicherer Kanal.
  2. Sie sollten ohnehin keinen Zugriff auf das Passwort haben. Lesen Sie den vorherigen Abschnitt zur Speicherung noch einmal durch – Sie müssen über einen Hash des Passworts (mit einem guten starken Salt) verfügen, was bedeutet, dass Sie auf keinen Fall in der Lage sein sollten, das Passwort zu extrahieren und per Post zu verschicken.

Lassen Sie mich das Problem anhand eines Beispiels veranschaulichen usoutdoor.com: Hier ist eine typische Anmeldeseite:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Das erste Problem besteht offensichtlich darin, dass die Anmeldeseite nicht über HTTPS geladen wird, die Site Sie jedoch auch dazu auffordert, ein Passwort zu senden („Passwort senden“). Dies könnte ein Beispiel für die umgangssprachliche Verwendung des oben erwähnten Begriffs sein, also gehen wir noch einen Schritt weiter und sehen, was passiert:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Leider sieht es nicht viel besser aus; und die E-Mail bestätigt, dass ein Problem vorliegt:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Dies verrät uns über zwei wichtige Aspekte von usoutdoor.com:

  1. Die Website hasht keine Passwörter. Im besten Fall sind sie verschlüsselt, es ist jedoch wahrscheinlich, dass sie im Klartext gespeichert werden; Wir sehen keine gegenteiligen Beweise.
  2. Die Website sendet ein Langzeitpasswort (wir können es immer wieder verwenden) über einen ungesicherten Kanal.

Nachdem dies geklärt ist, müssen wir prüfen, ob der Rücksetzvorgang auf sichere Weise erfolgt. Der erste Schritt dazu besteht darin, sicherzustellen, dass der Antragsteller das Recht hat, das Zurücksetzen durchzuführen. Mit anderen Worten: Zuvor benötigen wir eine Identitätsprüfung; Werfen wir einen Blick darauf, was passiert, wenn eine Identität überprüft wird, ohne zunächst zu überprüfen, ob der Antragsteller tatsächlich der Kontoinhaber ist.

Aufzählung von Benutzernamen und ihre Auswirkung auf die Anonymität

Dieses Problem lässt sich am besten visuell veranschaulichen. Problem:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Sehen? Achten Sie auf die Meldung „Mit dieser E-Mail-Adresse ist kein Benutzer registriert“. Das Problem entsteht offensichtlich, wenn eine ähnliche Website dies bestätigt Präsenz Der Benutzer hat sich mit dieser E-Mail-Adresse registriert. Bingo – Sie haben gerade den Pornofetisch Ihres Mannes/Chefs/Nachbarn entdeckt!

Natürlich sind Pornos ein ziemlich kanonisches Beispiel für die Bedeutung der Privatsphäre, aber die Gefahren, mit einer bestimmten Website in Verbindung gebracht zu werden, sind weitaus größer als die oben beschriebene potenziell peinliche Situation. Eine Gefahr ist Social Engineering; Wenn ein Angreifer eine Person einem Dienst zuordnen kann, verfügt er über Informationen, die er nutzen kann. Beispielsweise kann er eine Person kontaktieren, die sich als Vertreter einer Website ausgibt, und zusätzliche Informationen anfordern, um dies zu erreichen Speerfischen.

Solche Praktiken bergen auch die Gefahr der „Benutzernamenaufzählung“, bei der es möglich ist, die Existenz einer ganzen Sammlung von Benutzernamen oder E-Mail-Adressen auf einer Website durch einfache Massenabfragen und die Untersuchung der Antworten darauf zu überprüfen. Haben Sie eine Liste der E-Mail-Adressen aller Mitarbeiter und ein paar Minuten Zeit, um ein Skript zu schreiben? Dann sehen Sie, wo das Problem liegt!

Was ist die Alternative? Tatsächlich ist es ganz einfach und bemerkenswert umgesetzt Entropay:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Dabei gibt Entropay absolut nichts über die Existenz einer E-Mail-Adresse in seinem System preis an jemanden, der diese Adresse nicht besitzt... Wenn Sie besitzen Adresse eingegeben haben und diese nicht im System vorhanden ist, erhalten Sie eine E-Mail wie diese:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Natürlich kann es akzeptable Situationen geben, in denen jemand denktdie sich auf der Website registriert haben. Dies ist jedoch nicht der Fall oder erfolgte von einer anderen E-Mail-Adresse aus. Das obige Beispiel bewältigt beide Situationen erfolgreich. Wenn die Adresse übereinstimmt, erhalten Sie natürlich eine E-Mail, mit der Sie Ihr Passwort einfach zurücksetzen können.

Die Feinheit der von Entropay gewählten Lösung besteht darin, dass die Identifizierungsüberprüfung gemäß durchgeführt wird E-Mail vor jeder Online-Überprüfung. Einige Websites bitten Benutzer um die Antwort auf eine Sicherheitsfrage (mehr dazu weiter unten). auf wie der Reset starten kann; Das Problem dabei ist jedoch, dass Sie die Frage unter Angabe einer Identifikation (E-Mail-Adresse oder Benutzername) beantworten müssen, was es nahezu unmöglich macht, intuitiv zu antworten, ohne die Existenz eines anonymen Benutzerkontos preiszugeben.

Mit diesem Ansatz gibt es klein Die Benutzerfreundlichkeit ist beeinträchtigt, da beim Versuch, ein nicht vorhandenes Konto zurückzusetzen, keine sofortige Rückmeldung erfolgt. Das ist natürlich der ganze Sinn des Versendens einer E-Mail, aber aus der Sicht eines echten Endbenutzers: Wenn er die falsche Adresse eingibt, wird er es erst beim ersten Mal erfahren, wenn er die E-Mail erhält. Dies kann bei ihm zu Spannungen führen, aber das ist ein geringer Preis für einen so seltenen Prozess.

Noch ein Hinweis, etwas abseits des Themas: Anmeldehilfefunktionen, die zeigen, ob ein Benutzername oder eine E-Mail-Adresse korrekt sind, haben das gleiche Problem. Antworten Sie dem Benutzer immer mit der Meldung „Ihre Kombination aus Benutzername und Passwort ist ungültig“, anstatt explizit zu bestätigen, dass die Anmeldeinformationen vorhanden sind (z. B. „Der Benutzername ist korrekt, aber das Passwort ist falsch“).

Senden eines Reset-Passworts im Vergleich zum Senden einer Reset-URL

Das nächste Konzept, das wir besprechen müssen, hat mit der Methode zum Zurücksetzen des Passworts zu tun. Es gibt zwei beliebte Lösungen:

  1. Ein neues Passwort auf dem Server generieren und per E-Mail versenden
  2. Senden Sie eine E-Mail mit einer eindeutigen URL, um den Rücksetzvorgang zu vereinfachen

Trotz viele Führer, der erste Punkt sollte niemals verwendet werden. Sein Problem ist, dass es bedeutet, zu haben gespeichertes Passwort, zu dem Sie jederzeit zurückkehren und es erneut verwenden können; Es wurde über einen unsicheren Kanal übertragen und verbleibt in Ihrem Posteingang. Es besteht die Möglichkeit, dass Posteingänge mit Mobilgeräten und E-Mail-Clients synchronisiert werden und über einen webbasierten E-Mail-Dienst sehr lange online bleiben können. Der Punkt ist, dass Ein Briefkasten kann nicht als zuverlässiges Mittel zur Langzeitspeicherung angesehen werden.

Aber abgesehen davon hat der erste Absatz noch ein weiteres ernstes Problem – es vereinfacht so viel wie möglich Kontosperrung mit böswilliger Absicht. Wenn ich die E-Mail-Adresse von jemandem kenne, der ein Konto auf einer Website besitzt, kann ich ihn jederzeit sperren, indem ich einfach sein Passwort zurücksetze; Es ist ein Denial-of-Service-Angriff auf dem Silbertablett! Aus diesem Grund sollte das Zurücksetzen erst nach erfolgreicher Prüfung der Rechte daran beim Antragsteller durchgeführt werden.

Wenn wir von der Reset-URL sprechen, meinen wir die Website-Adresse Dies ist einzigartig für diesen speziellen Fall des Reset-Vorgangs. Natürlich sollte es zufällig sein, nicht leicht zu erraten sein und keine externen Links zum Konto enthalten, die das Zurücksetzen erleichtern. Beispielsweise sollte die Reset-URL nicht einfach ein Pfad wie „Reset/?username=JohnSmith“ sein.

Wir möchten ein eindeutiges Token erstellen, das als Zurücksetzungs-URL verschickt und dann mit dem Serverdatensatz des Benutzerkontos abgeglichen werden kann, um so zu bestätigen, dass der Kontoinhaber tatsächlich dieselbe Person ist, die versucht, das Passwort zurückzusetzen. Ein Token könnte beispielsweise „3ce7854015cd38c862cb9e14a1ae552b“ lauten und zusammen mit der ID des Benutzers, der das Zurücksetzen durchführt, und dem Zeitpunkt, zu dem das Token generiert wurde, in einer Tabelle gespeichert werden (mehr dazu weiter unten). Wenn die E-Mail gesendet wird, enthält sie eine URL wie „Reset/?id=3ce7854015cd38c862cb9e14a1ae552b“, und wenn der Benutzer sie herunterlädt, fragt die Seite nach der Existenz des Tokens, bestätigt anschließend die Informationen des Benutzers und ermöglicht ihm, das zu ändern Passwort.

Da der oben beschriebene Prozess es dem Benutzer (hoffentlich) ermöglicht, ein neues Passwort zu erstellen, müssen wir natürlich sicherstellen, dass die URL über HTTPS geladen wird. Nein, Es reicht nicht aus, es mit einer POST-Anfrage über HTTPS zu senden, muss diese Token-URL Transportschichtsicherheit verwenden, damit das neue Passwortformular nicht angegriffen werden kann MITM und das vom Benutzer erstellte Passwort wurde über eine sichere Verbindung übertragen.

Außerdem müssen Sie für die Reset-URL ein Token-Zeitlimit hinzufügen, damit der Reset-Vorgang innerhalb eines bestimmten Intervalls, beispielsweise innerhalb einer Stunde, abgeschlossen werden kann. Dadurch wird sichergestellt, dass das Zeitfenster zum Zurücksetzen auf ein Minimum beschränkt wird, sodass der Empfänger der Zurücksetzungs-URL nur innerhalb dieses sehr kleinen Zeitfensters agieren kann. Natürlich kann der Angreifer den Rücksetzvorgang erneut starten, muss jedoch eine andere eindeutige Rücksetz-URL erhalten.

Schließlich müssen wir sicherstellen, dass dieser Prozess wegwerfbar ist. Sobald der Rücksetzvorgang abgeschlossen ist, muss das Token entfernt werden, damit die Rücksetz-URL nicht mehr funktioniert. Der vorherige Punkt ist notwendig, um sicherzustellen, dass dem Angreifer ein sehr kleines Fenster zur Verfügung steht, in dem er die Reset-URL manipulieren kann. Und natürlich wird der Token nach erfolgreichem Zurücksetzen nicht mehr benötigt.

Einige dieser Schritte mögen überflüssig erscheinen, sie beeinträchtigen jedoch nicht die Benutzerfreundlichkeit und tatsächlich die Sicherheit verbessern, wenn auch in Situationen, von denen wir hoffen, dass sie selten vorkommen. In 99 % der Fälle aktiviert der Benutzer das Zurücksetzen innerhalb kürzester Zeit und wird das Passwort in naher Zukunft nicht erneut zurücksetzen.

Rolle von CAPTCHA

Oh, CAPTCHA, die Sicherheitsfunktion, die wir alle gerne hassen! Tatsächlich ist CAPTCHA weniger ein Schutztool als vielmehr ein Identifikationstool – egal, ob Sie eine Person oder ein Roboter (oder ein automatisiertes Skript) sind. Sein Zweck besteht darin, die automatische Übermittlung von Formularen zu vermeiden, die natürlich können als Versuch genutzt werden, den Schutz zu durchbrechen. Im Zusammenhang mit dem Zurücksetzen von Passwörtern bedeutet CAPTCHA, dass die Reset-Funktion nicht brutal erzwungen werden kann, um entweder den Benutzer zu spammen oder zu versuchen, die Existenz von Konten festzustellen (was natürlich nicht möglich wäre, wenn Sie die Tipps im Abschnitt befolgt hätten). Identitätsprüfung).

Natürlich ist CAPTCHA selbst nicht perfekt; Es gibt viele Präzedenzfälle dafür, dass es programmgesteuert „gehackt“ werden kann und ausreichende Erfolgsraten (60-70 %) erzielt. Außerdem gibt es in meinem Beitrag dazu eine Lösung CAPTCHA-Hacking durch automatisierte Personen, wo Sie den Leuten Bruchteile eines Cents bezahlen können, um jedes CAPTCHA zu lösen, und eine Erfolgsquote von 94 % erzielen. Das heißt, es ist anfällig, erhöht aber (leicht) die Eintrittsbarriere.

Schauen wir uns das PayPal-Beispiel an:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
In diesem Fall kann der Reset-Vorgang einfach nicht beginnen, bevor das CAPTCHA gelöst ist theoretisch Es ist unmöglich, den Prozess zu automatisieren. In der Theorie.

Für die meisten Webanwendungen ist dies jedoch übertrieben absolut richtig stellt eine Verschlechterung der Benutzerfreundlichkeit dar – die Leute mögen einfach keine CAPTCHAs! Darüber hinaus ist CAPTCHA so etwas, zu dem Sie bei Bedarf problemlos zurückkehren können. Wenn der Dienst angegriffen wird (die Protokollierung ist hier hilfreich, aber dazu später mehr), könnte das Hinzufügen eines CAPTCHAs nicht einfacher sein.

Geheime Fragen und Antworten

Mit allen von uns in Betracht gezogenen Methoden konnten wir das Passwort allein durch den Zugriff auf das E-Mail-Konto zurücksetzen. Ich sage „nur“, aber natürlich ist es illegal, sich Zugriff auf das E-Mail-Konto einer anderen Person zu verschaffen. muss ein komplexer Prozess sein. Jedoch es ist nicht immer so.

Tatsächlich ist der obige Link zu Sarah Palins Yahoo! dient zwei Zwecken; Erstens zeigt es, wie einfach es ist, (einige) E-Mail-Konten zu hacken, und zweitens zeigt es, wie böse Geheimfragen böswillig verwendet werden können. Aber wir werden später darauf zurückkommen.

Das Problem beim Zurücksetzen von Passwörtern, die zu XNUMX % E-Mail-abhängig sind, besteht darin, dass die Kontointegrität der Website, die Sie zurücksetzen möchten, zu XNUMX % von der Integrität des E-Mail-Kontos abhängt. Jeder, der Zugriff auf Ihre E-Mails hat hat Zugriff auf jedes Konto, das einfach durch den Empfang einer E-Mail zurückgesetzt werden kann. Für solche Konten ist E-Mail der „Schlüssel zu allen Türen“ Ihres Online-Lebens.

Eine Möglichkeit, dieses Risiko zu mindern, besteht darin, ein Sicherheitsfrage- und -antwortmuster zu implementieren. Zweifellos haben Sie sie bereits gesehen: Wählen Sie eine Frage, die nur Sie selbst beantworten können haben Kennen Sie die Antwort, und wenn Sie Ihr Passwort zurücksetzen, werden Sie danach gefragt. Dies erhöht die Gewissheit, dass die Person, die das Zurücksetzen versucht, tatsächlich der Eigentümer des Kontos ist.

Zurück zu Sarah Palin: Der Fehler bestand darin, dass die Antworten auf ihre geheimen Fragen leicht zu finden waren. Besonders wenn Sie eine so große Persönlichkeit des öffentlichen Lebens sind, sind Informationen über den Mädchennamen Ihrer Mutter, die Schulgeschichte oder den Ort, an dem jemand in der Vergangenheit gelebt hat, gar nicht so geheim. Tatsächlich kann das meiste davon von nahezu jedem gefunden werden. Das ist Sarah passiert.

Der Hacker David Kernell verschaffte sich Zugang zu Palins Konto, indem er Details über ihren Hintergrund, wie etwa ihre Universität und ihr Geburtsdatum, herausfand und dann die Funktion zur Wiederherstellung vergessener Passwörter von Yahoo! nutzte.

Hierbei handelt es sich in erster Linie um einen Designfehler seitens Yahoo! - Durch die Festlegung solch einfacher Fragen sabotierte das Unternehmen im Wesentlichen den Wert der Geheimfrage und damit den Schutz seines Systems. Natürlich ist das Zurücksetzen von Passwörtern für ein E-Mail-Konto immer schwieriger, da Sie den Besitz des Kontos nicht durch eine E-Mail an den Eigentümer überprüfen können (ohne eine zweite Adresse zu haben), aber glücklicherweise gibt es heutzutage nicht viele Verwendungsmöglichkeiten für ein solches System.

Zurück zu den geheimen Fragen: Es besteht die Möglichkeit, dass der Benutzer seine eigenen Fragen erstellen kann. Das Problem ist, dass das Ergebnis furchtbar offensichtliche Fragen sein wird:

Welche Farbe hat der Himmel?

Fragen, die den Menschen Unbehagen bereiten, wenn zur Identifizierung eine Sicherheitsfrage verwendet wird Leute (zum Beispiel in einem Callcenter):

Mit wem habe ich an Weihnachten geschlafen?

Oder ehrlich gesagt dumme Fragen:

Wie schreibt man „Passwort“?

Wenn es um Sicherheitsfragen geht, müssen Benutzer vor sich selbst bewahrt werden! Mit anderen Worten: Die geheime Frage sollte von der Site selbst bestimmt oder noch besser gestellt werden Serie Sicherheitsfragen, aus denen der Benutzer auswählen kann. Und es ist nicht einfach, sich zu entscheiden ein; Idealerweise sollte der Benutzer zwei oder mehr Sicherheitsfragen auswählen zum Zeitpunkt der Kontoregistrierung, der dann als zweiter Identifikationskanal verwendet wird. Mehrere Fragen erhöhen das Vertrauen in den Verifizierungsprozess und bieten außerdem die Möglichkeit, Zufälligkeiten hinzuzufügen (nicht immer die gleiche Frage anzuzeigen) sowie eine gewisse Redundanz für den Fall, dass der tatsächliche Benutzer das Passwort vergessen hat.

Was ist eine gute Sicherheitsfrage? Dies wird durch mehrere Faktoren beeinflusst:

  1. Er muss sein knapp Die Frage sollte klar und eindeutig sein.
  2. Die Antwort muss sein spezifisch – Wir brauchen keine Frage, die eine Person unterschiedlich beantworten kann
  3. Mögliche Antworten sollten sein vielfältig Die Frage nach der Lieblingsfarbe einer Person liefert nur einen sehr kleinen Teil der möglichen Antworten.
  4. Suche Die Antwort muss komplex sein – wenn die Antwort leicht zu finden ist keine (denken Sie an Leute in hohen Positionen), dann ist er schlecht
  5. Die Antwort muss sein permanent rechtzeitig – wenn Sie jemanden nach dem Lieblingsfilm fragen, kann die Antwort ein Jahr später anders ausfallen

Zufälligerweise gibt es eine Website namens „gute Fragen“. GoodSecurityQuestions.com. Einige der Fragen scheinen recht gut zu sein, andere bestehen einige der oben beschriebenen Tests nicht, insbesondere den Test „leicht zu finden“.

Lassen Sie mich zeigen, wie PayPal Sicherheitsfragen umsetzt und insbesondere den Aufwand, den die Website in die Authentifizierung investiert. Oben haben wir die Seite gesehen, um den Vorgang zu starten (mit einem CAPTCHA), und hier zeigen wir, was passiert, nachdem Sie Ihre E-Mail-Adresse eingegeben und das CAPTCHA gelöst haben:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Als Ergebnis erhält der Benutzer die folgende E-Mail:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Bisher ist alles ganz normal, aber Folgendes verbirgt sich hinter dieser Reset-URL:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Es kommen also geheime Fragen ins Spiel. Tatsächlich ermöglicht Ihnen PayPal auch, Ihr Passwort zurückzusetzen, indem Sie Ihre Kreditkartennummer überprüfen. Es gibt also einen zusätzlichen Kanal, auf den viele Websites keinen Zugriff haben. Ich kann mein Passwort einfach nicht ändern, ohne zu antworten beides geheime Frage (oder die Kartennummer nicht kennen). Selbst wenn jemand meine E-Mail-Adresse kapert, kann er das Passwort seines PayPal-Kontos nicht zurücksetzen, es sei denn, er kennt etwas mehr persönliche Informationen über mich. Welche Information? Folgende Möglichkeiten für Sicherheitsfragen bietet PayPal:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Die Frage nach Schule und Krankenhaus mag im Hinblick auf die einfache Suche etwas fraglich sein, aber die anderen sind nicht so schlecht. Um die Sicherheit zu erhöhen, verlangt PayPal jedoch eine zusätzliche Identifizierung Veränderungen Antworten auf Sicherheitsfragen:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
PayPal ist ein eher utopisches Beispiel für einen sicheren Passwort-Reset: Es implementiert ein CAPTCHA, um das Risiko brutaler Gewalt zu verringern, erfordert zwei Sicherheitsfragen und erfordert dann noch eine völlig andere Identität, nur um die Antworten zu ändern – und zwar nach dem Benutzer hat sich bereits angemeldet. Natürlich ist das genau das, was wir tun erwartet wäre von PayPal; Es handelt sich um ein Finanzinstitut, das mit großen Geldbeträgen handelt. Das bedeutet nicht, dass bei jedem Passwort-Reset diese Schritte befolgt werden müssen – das ist in den meisten Fällen übertrieben – aber es ist ein gutes Beispiel für Fälle, in denen Sicherheit eine ernste Angelegenheit ist.

Der Vorteil des Sicherheitsfragensystems besteht darin, dass Sie es später hinzufügen können, wenn Sie es nicht sofort implementiert haben, wenn der Schutzgrad der Ressource dies erfordert. Ein gutes Beispiel hierfür ist Apple, das diesen Mechanismus erst kürzlich implementiert hat. [Artikel geschrieben im Jahr 2012]. Als ich mit der Aktualisierung der Anwendung auf meinem iPad begann, sah ich die folgende Aufforderung:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Dann sah ich einen Bildschirm, auf dem ich mehrere Paare von Sicherheitsfragen und -antworten sowie eine Rettungs-E-Mail-Adresse auswählen konnte:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Was PayPal betrifft, sind die Fragen vorab ausgewählt und einige davon sind tatsächlich ziemlich gut:

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1
Jedes der drei Frage-/Antwortpaare stellt einen anderen Satz möglicher Fragen dar, sodass es viele Möglichkeiten gibt, ein Konto zu konfigurieren.

Ein weiterer Aspekt, der bei der Beantwortung der Sicherheitsfrage berücksichtigt werden muss, ist die Speicherung. Klarer Text in der Datenbank birgt fast die gleichen Gefahren wie im Fall eines Passworts, nämlich dass die Offenlegung der Datenbank sofort den Wert preisgibt und nicht nur die Anwendung, sondern möglicherweise völlig andere Anwendungen, die dieselben Sicherheitsfragen verwenden, gefährdet (das ist wieder einmal der Fall). Frage zur Acai-Beere). Eine Option ist sicheres Hashing (starker Algorithmus und kryptografisch zufälliger Salt), aber im Gegensatz zu den meisten Fällen der Passwortspeicherung kann es einen guten Grund dafür geben, dass die Antwort als Klartext erscheint. Ein typisches Szenario ist die Identitätsüberprüfung durch einen Live-Telefonisten. Natürlich ist in diesem Fall auch Hashing anwendbar (der Betreiber kann einfach die vom Client benannte Antwort eingeben), aber im schlimmsten Fall muss die geheime Antwort auf einer bestimmten Ebene des kryptografischen Speichers liegen, auch wenn es sich nur um eine symmetrische Verschlüsselung handelt. Zusammenfassen: Behandle Geheimnisse wie Geheimnisse!

Ein letzter Aspekt von Sicherheitsfragen und -antworten besteht darin, dass sie anfälliger für Social Engineering sind. Der Versuch, das Passwort direkt für das Konto einer anderen Person zu extrahieren, ist eine Sache, aber ein Gespräch über seine Bildung (eine beliebte Sicherheitsfrage) zu beginnen, ist eine ganz andere. Tatsächlich kann man mit jemandem sehr gut über viele Aspekte seines Lebens sprechen, die eine geheime Frage aufwerfen könnten, ohne Verdacht zu erregen. Der eigentliche Sinn einer Sicherheitsfrage besteht natürlich darin, dass sie sich auf die Lebenserfahrung einer Person bezieht, also einprägsam ist, und darin liegt das Problem – Menschen lieben es, über ihre Lebenserfahrungen zu sprechen! Sie können dagegen nicht viel tun, es sei denn, Sie wählen die Optionen für Sicherheitsfragen aus kleiner wahrscheinlich durch Social Engineering herausgezogen werden.

[Fortsetzung folgt.]

Über die Rechte der Werbung

VDSina bietet zuverlässig Server mit täglicher BezahlungJeder Server ist mit einem Internetkanal mit 500 Mbit/s verbunden und kostenlos vor DDoS-Angriffen geschützt!

Alles, was Sie schon immer über das sichere Zurücksetzen von Passwörtern wissen wollten. Teil 1

Source: habr.com