it-swarm.com.de

Sind SMS-2FA-Sicherheitscodes absichtlich leicht zu merken?

Ich habe 2FA auf meinem Bankkonto eingerichtet. Wenn ich mich anmelde, erhalte ich auf meinem Telefon einen sechsstelligen Code als IM, den ich auf der Website eingebe. Diese Codes immer scheinen 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?

81
Bob Kaufman

Ich habe dies auch bemerkt, und ich denke, es ist ein Ergebnis des 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.

127
ScarySpider

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 korrigiert habe.)

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, der eine beliebige Bytezeichenfolge ist, und teilen Sie ihn sicher mit dem Client.
  • Vereinbaren Sie eine T0, die Unix-Zeit zum Starten der Zeitschritte ab und ein Intervall TI, das zur Berechnung des Werts des Zählers C verwendet wird (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 unterschiedlicher Parameter zulässt, unterstützt die Google-Implementierung der Authentifizierungs-App keine vom Standard abweichenden T0-, TI-Werte, Hash-Methoden und Token-Längen. 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 wurde im vorherigen Abschnitt definiert, 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. 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.

Sowohl der Server als auch der Client berechnen das Token. Anschließend prüft der Server, 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.

56
Michael

Auf meinem Handy hatte ich ungefähr 90 Bestätigungscodes von verschiedenen Firmen. 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 besteht nur aus zweistelligen Zahlen an den zweistelligen Grenzen (d. H. AABBCC). Wir würden also erwarten, dass jedes Paar auf den 186 möglichen Stellen ungefähr 1,86 Mal erscheint. 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 als nicht zweistelligen Zahlen zu geben - zweistellige Zahlen werden in Orange angezeigt. In den letzteren Daten würden wir ungefähr 31 zweistellige Zahlen erwarten, und wir erhalten 27. Das scheint vernünftig.

Dies schließt natürlich andere "nicht zufällige" Muster nicht aus - aber um ehrlich zu sein, suchen Menschen 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.

21
Tim

Ich hoffe, dass dies in Ihrem Fall nur ein Zufall 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.

14
schroeder

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, Ziffernfolgen zu erstellen, die zufällig "aussehen", vermeiden sie häufig, dass sich Muster oder Ziffern wiederholen (sowie andere Macken wie die übermäßige Verwendung von "7" und die untermäßige Verwendung von "0" und "2"). usw). 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 bei einer zufälligen Ziehung eher gewinnen).

Wenn ein Mensch versucht, einen zufälligen Münzwurf zu emulieren, wechselt er viel häufiger zwischen Kopf und Zahl als das letzte Ergebnis, sodass sein nächster Wert mit ziemlich guter Sicherheit vorhergesagt werden kann (> 50% Chance auf seinen nächsten Wert) wird das Gegenteil von ihrem letzten sein).

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

13
thomasrutter