Frage:
Sind SMS-2FA-Sicherheitscodes absichtlich leicht zu merken?
Bob Kaufman
2017-12-12 00:11:34 UTC
view on stackexchange narkive permalink

Ich habe 2FA-Setup auf meinem Bankkonto. Wenn ich mich anmelde, erhalte ich auf meinem Telefon einen sechsstelligen Code als IM, den ich auf der Website eingebe. Diese Codes scheinen immer ein Muster zu haben. Entweder so etwas wie 111xxx, 123321, xx1212 usw.

Ich denke, dass diese Codes absichtlich auf einen Blick leicht zu merken sind. Gibt es eine gängige Geschäftspraxis / Best Practice, die vorschreibt, dass diese Codes ein Muster haben, damit sie leichter zu merken sind?

Ich benutze viele 2FA-Codes und habe noch nie ein solches Muster bemerkt.Sicher, es gibt manchmal wiederholte Ziffern, aber sie scheinen nicht oft genug vorzukommen, um darauf hinzuweisen, dass etwas Seltsames vor sich geht.Es kann lehrreich sein, Ihre Codes im Auge zu behalten und eine statistische Analyse der Ziffern durchzuführen, sobald Sie ungefähr hundert angesammelt haben.
Ich verwende sowohl textierte 2FA- als auch Authentifizierungs-App-Codes. Obwohl ich in den Authentifizierungs-App-Codes kein Muster bemerke, habe ich festgestellt, dass diejenigen, die auf mein Telefon geschrieben wurden, oft leicht einprägsam sind.
Als Randnotiz (dies ist der Infosec-Stapel) werden als SMS-Nachrichten gesendete Faktoren nicht als sichere zweite Faktoren angesehen.Viele Systeme bieten nichts Besseres, aber wenn Sie die Option haben, eine Authentifizierungs-App oder etwas zu verwenden, für das eine Geräteregistrierung erforderlich ist, ist dies besser.Ein Beispielartikel zum Thema: https://techcrunch.com/2016/07/25/nist-declares-the-age-of-sms-based-2-factor-authentication-over/
Wenn Sie an ein Muster denken, trifft es wahrscheinlich nicht auf Ihren Code zu, aber wenn Sie an einen Code denken, besteht die Möglichkeit, dass der Code * eine * Art von Muster hat.Einmal musste ich ein zufälliges WLAN-Passwort für meine Mutter generieren.Ich habe sie so lange generiert, bis ich eines gefunden habe, von dem ich dachte, dass es keine Muster gibt, die sie kommentieren würde.Dann sagte sie: "Hast du das gewählt, weil es deine Initialen enthält?"
@TobySmith Ich bemerke Muster in diesen viel häufiger in den App-Mustern als in den SMS-Mustern!
Ich habe 10 Minuten damit verbracht, eine identische Frage zu schreiben, bevor SO Ihre empfohlen hat.Ich bin ein bisschen traurig, dass du mich geschlagen hast, aber glücklich, dass ich nicht der einzige Verrückte bin.:) :)
Fünf antworten:
#1
+127
ScarySpider
2017-12-12 01:43:51 UTC
view on stackexchange narkive permalink

Ich habe dies auch bemerkt und ich denke, es ist ein Ergebnis der Tendenz des menschlichen Gehirns, Muster auf zufälliges Rauschen anzuwenden. Dies scheint häufiger vorzukommen, wenn speziell versucht wird, sich an eine Folge von Zahlen zu erinnern.

Ich würde sagen, das ist es.Diese [OTP] (https://en.wikipedia.org/wiki/One-time_password#Methods_of_generating_the_OTP) sind normalerweise zufällig generierte Codes, die versuchen, so sicher wie möglich zu sein. Das Einführen von Mustern in ihre Erstellung wäre sicherlich eine Sicherheitslücke.Beachten Sie auch, wie kurz diese Zahlen sind. In Kombination mit dem, was @ScarySpider erwähnt hat, sind sie leicht zu merken.
Und sobald Sie Muster bemerken, übernimmt [Bestätigungsfehler] (https://en.m.wikipedia.org/wiki/Confirmation_bias).
#2
+56
Michael
2017-12-12 03:03:31 UTC
view on stackexchange narkive permalink

Etwa 85% der sechsstelligen Zufallszahlen haben mindestens eine sich wiederholende Ziffer und 40% haben eine sich wiederholende fortlaufende Ziffer nebeneinander. (Ich bin froh, dass ich meine Mathematik korrigieren kann.)

Diese Schlüssel werden mit dem Standard-TOTP-Algorithmus generiert. Der Artikel fasst diese Implementierung zusammen und zeigt, dass keine Anstrengungen erforderlich sind, um eine einprägsame Zahl zu generieren:

Gemäß RFC 6238 lautet die Referenzimplementierung wie folgt:

  • Generieren Sie einen Schlüssel K, bei dem es sich um eine beliebige Byte-Zeichenfolge handelt, und teilen Sie ihn sicher mit dem Client.
  • Vereinbaren Sie eine T0, die Unix-Zeit für den Beginn der Zählzeit und ein Intervall TI. Hiermit wird der Wert des Zählers C berechnet (Standardeinstellungen sind die Unix-Epoche als T0 und 30 Sekunden als TI).
  • Vereinbaren Sie eine kryptografische Hash-Methode (Standard ist SHA-1)
  • Vereinbaren Sie eine Token-Länge, N (Standard ist 6).

Obwohl RFC 6238 die Verwendung verschiedener Parameter zulässt, unterstützt die Google-Implementierung der Authentifizierungs-App keine T0- und TI-Werte , Hash-Methoden und Token-Längen, die vom Standard abweichen. Es wird auch erwartet, dass der geheime K-Schlüssel in der Base-32-Codierung gemäß RFC 3548 eingegeben (oder in einem QR-Code bereitgestellt) wird.

Sobald die Parameter vereinbart sind, lautet die Token-Generierung wie folgt:

  1. Berechnen Sie C als die Häufigkeit, mit der TI nach T0 verstrichen ist.
  2. Berechnen Sie den HMAC-Hash H mit C als Nachricht und K als Schlüssel (der HMAC-Algorithmus ist in definiert der vorherige Abschnitt, aber auch die meisten kryptografischen Bibliotheken unterstützen ihn). K sollte so wie es ist übergeben werden, C sollte als rohe 64-Bit-Ganzzahl ohne Vorzeichen übergeben werden.
  3. Nehmen Sie die mindestens 4 signifikanten Bits von H und verwenden Sie sie als Offset O.
  4. li> Nehmen Sie 4 Bytes von H ab O Bytes MSB, verwerfen Sie das höchstwertige Bit und speichern Sie den Rest als (vorzeichenlose) 32-Bit-Ganzzahl I.
  5. Das Token ist die niedrigste N Stelle von I in Basis 10. Wenn das Ergebnis weniger Stellen als N hat, füllen Sie es mit Nullen von links auf.
  6. ol>

    Sowohl der Server als auch der Client Berechnen Sie das Token, und der Server prüft, ob das vom Client bereitgestellte Token mit dem lokal generierten Token übereinstimmt. Einige Server erlauben Codes, die vor oder nach der aktuellen Zeit generiert werden sollten, um leichte Zeitverschiebungen, Netzwerklatenz und Benutzerverzögerungen zu berücksichtigen.

Es gibt keinen Grund für ein IM-bereitgestelltes OTP, diese Art von Algorithmus zu verwenden.Höchstwahrscheinlich sind es nur sechs zufällige Ziffern von / dev / random.
@Sneftel Dies hat den Vorteil, dass der Server das OTP nicht speichern muss.es berechnet es nur, wenn man eingegeben wird.Es behandelt auch die Tatsache, dass der Code nur für ein kurzes Fenster gültig ist.Wenn Sie eine Zufallszahl verwenden, müssen Sie das, was Sie generiert haben, und das Ablaufdatum dafür speichern.Offensichtlich funktioniert beides gleich gut, wenn kein zweiter Faktor vorliegt.
@ChrisHayes Es ist ein unwesentlicher Vorteil, einige Minuten lang keine sechsstellige Nummer zusammen mit einem Ablaufdatum speichern zu müssen.Dies sind die Dinge, die sowieso für die Sitzung gespeichert werden müssen.
Sie können unmöglich wissen, ob ein unbenannter Vank TOTP verwendet oder nicht, also würde ich diese Aussage absichern.Aber +1 für die Mathematik.
-1 für unbegründete Ansprüche als Tatsachen dargestellt
@Sneftel Während es zu 100% wahr ist, dass "ein IM-geliefertes OTP" den oben beschriebenen Algorithmus nicht * verwenden * muss, sondern * allgemein *, wenn Leute auf 2FA und OTP verweisen, wird der oben genannte Algorithmus implementiert und verwendet.Es ist eine ziemlich sichere Annahme.Aber ja, wenn Sie pedantisch sein müssen, dann muss es sich nicht unbedingt auf den RFC 6238 beziehen. Was uns dann übrig lässt, ist, warum die Ziffern ein Muster zu haben scheinen und dafürIn beiden Erklärungen (RFC 6239 oder / dev / random) stimme ich der [derzeit akzeptierten Antwort] (https://security.stackexchange.com/a/175278/3992) zu.
IME-Textcodes werden eher mit HOTP als mit TOTP generiert, wenn überhaupt.Es ist schwierig zu wissen, wann der Code eintrifft und akzeptiert werden muss.Sie möchten auch nicht, dass zwei Anforderungen im selben Zeitraum denselben Code generieren.
@otus, guter Punkt.Ich las "IM auf meinem Telefon" als Benachrichtigung von der mobilen App der Bank, die wahrscheinlich TOTP wäre, aber beim erneuten Lesen wurde mir klar, dass OP wahrscheinlich eine Textnachricht bedeutete.
** Mann ** Ich habe gerade selbst für einen Kommentar nachgerechnet, nach unten gescrollt und festgestellt, dass du mich bis zum Anschlag geschlagen hast.Von einer zufälligen Person im Internet zur anderen: Meine Mathematik stimmt mit Ihrer Mathematik überein.Das sollte für jeden eine ausreichende Antwort sein: Wenn das Internet sagt, dass es wahr ist, dann ist es wahr.
#3
+21
Tim
2017-12-14 09:09:53 UTC
view on stackexchange narkive permalink

Auf meinem Telefon hatte ich ungefähr 90 Bestätigungscodes von verschiedenen Unternehmen. 62 davon waren 6 Ziffern lang. Hier ist die Anzahl jeder Ziffer:

Möglicherweise ein leichter Versatz in Richtung 1,8 und 9? Mit ziemlicher Sicherheit nur Rauschen in den Daten (62 ist eine kleine Stichprobe).

Was ist mit zweistelligen Zahlen?

enter image description here Das erste Diagramm ist nur das zweistellige Zahlen an den zweistelligen Grenzen (dh AABBCC) - wir würden also erwarten, dass jedes Paar bei den 186 möglichen Ziffernplatzierungen etwa 1,86-mal vorkommt. Die zweite ist eine beliebige Platzierung (d. H. XXX99X zählt als zweistellige Zahl). Wir würden jedes Paar ungefähr 3,1-mal über die 310 Platzierungen erwarten.

Es scheint keinen offensichtlichen Versatz mit viel mehr zweistelligen Zahlen als nicht zweistelligen zu geben - zweistellige Zahlen werden in Orange angezeigt. In den letzteren Daten würden wir ungefähr 31 zweistellige Zahlen erwarten und 27 erhalten. Das scheint vernünftig.

Natürlich schließt dies andere "nicht zufällige" Muster nicht aus - aber um ehrliche Menschen zu sein suchen wahrscheinlich nach Mustern - sehen Sie sich diese Zahlen an, die alle aus meiner 2FA-App stammen: 365 595, 111 216, 566 272, 468 694, 191 574, 833 043.

Upvoted, weil ich Grafiken mag.
#4
+14
schroeder
2017-12-12 00:21:49 UTC
view on stackexchange narkive permalink

Ich hoffe, dass dies in Ihrem Fall nur eine zufällige Chance ist. Wenn es ein Muster gibt, schwächt es den ganzen Punkt, einen zweiten Code zu haben.

Nein, sie sollen nicht absichtlich leicht zu merken sein, und es gibt keinen allgemeinen Geschäftsfall dafür, es sei denn, sie hatten das Feedback, dass ihre Benutzer Probleme beim Eingeben von 6 Zahlen hatten. Dann hätte vielleicht jemand etwas Dummes getan, aber ich hoffe wirklich nicht.

#5
+13
thomasrutter
2017-12-12 05:21:14 UTC
view on stackexchange narkive permalink

Es hat auch damit zu tun, wie Menschen dazu neigen, über Zufälligkeit zu denken. In wahrer Zufälligkeit treten wiederholte Ziffern und wiederholte Muster viel häufiger auf, als wir erwarten. Wenn Menschen aufgefordert werden, Sequenzen von Ziffern zu erstellen, die zufällig "aussehen", vermeiden sie häufig die Wiederholung von Mustern oder Ziffern (sowie andere Macken wie die übermäßige Verwendung von "7" und die untermäßige Verwendung von "0" und "2"). etc). Wenn Sie jemanden bitten, eine "Zufallszahl" zwischen 1 und 100 zu wählen, enthält diese sehr oft eine 7 und ist häufig 37 (oder 17). Sie können Lotterienummern studieren, die von Menschen manuell ausgewählt werden, da (häufig) Personen versuchen, etwas zufällig aussehendes auszuwählen (aufgrund der falschen Annahme, dass zufällig aussehende Zahlen eher bei einer zufälligen Ziehung gewinnen).

Wenn Ein Mensch versucht, einen zufälligen Münzwurf zu emulieren. Er wechselt viel häufiger zwischen Kopf und Zahl als das letzte Ergebnis, sodass sein nächster Wert mit ziemlich guter Sicherheit vorhergesagt werden kann (> 50% Wahrscheinlichkeit, dass sein nächster Wert erreicht wird) das Gegenteil zu ihrer letzten sein.

Eine wiederholte Ziffer oder zweistellige Folge wäre in einer echten zufälligen 6-stelligen Zahl ziemlich häufig (z. B. ~ 41% einer aufeinanderfolgenden wiederholten Ziffer, ~ 85% von eine wiederholte Ziffer überall) und sehr ungewöhnlich in einer "zufälligen" 6-stelligen Zahl, die Sie von einem Menschen verlangen.

Die Auswahl einer wirklich zufälligen Zahl ist eine legitime Strategie in einer Lotterie, da Sie den Preis weniger wahrscheinlich mit vielen anderen Personen teilen.Da die meisten Lotterien die Option "Gib mir wirklich Zufallszahlen" haben, ist es natürlich ein bisschen dumm, dies manuell zu versuchen
Das ist richtig und nicht zu verwechseln mit einer "zufällig aussehenden" (für einen Menschen) Zahl, was bei einer Lotterie ein Nachteil ist.Wenn es um Aberglauben geht, spielt Aberglaube eine große Rolle, Menschen haben "Glückszahlen" usw.
@fjw OK, aber woher wissen Sie, dass Leute zufällig aussehende Zahlen auswählen, weil sie die falsche Überzeugung haben, dass zufällig aussehende Zahlen eher gewinnen als zufällige Zahlen, die auf der berechtigten Annahme basieren, dass Zufallszahlen ihre Gewinne maximieren (gekoppelt)mit unserer Unfähigkeit, wirklich zufällige Zahlen zu wählen)?(+1 auf die Antwort auf jeden Fall)
Die "Standardeinstellung" besteht darin, keine eigenen Zahlen auszuwählen und diese zufällig generieren zu lassen.Die gezielte Auswahl Ihrer eigenen Zahlen erfolgt immer unter der Überzeugung, dass Sie es irgendwie besser machen können als ein Zufallszahlengenerator, ob dies nun die Maximierung der Gewinne oder die Gewinnwahrscheinlichkeit ist.Wenn dieser Glaube ist, dass Sie sie "zufälliger" oder besser "zufälliger" Zahlen als automatisch generierte Zahlen auswählen können, ist das falsch.Aberglaube spielt eine große Rolle und vielleicht auch eine gewisse Paranoia: dass die automatisch generierten Zahlen irgendwie gegen Sie gerichtet sind.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...