Question:
Les codes de sécurité 2FA textuels sont-ils volontairement faciles à retenir?
Bob Kaufman
2017-12-12 00:11:34 UTC
view on stackexchange narkive permalink

J'ai configuré la 2FA sur mon compte bancaire. Lorsque je me connecte, je reçois un code à six chiffres sous forme de messagerie instantanée sur mon téléphone que j'entre sur le site Web. Ces codes semblent toujours avoir un modèle. Soit quelque chose comme 111xxx, 123321, xx1212, etc.

Je pense que ces codes sont volontairement faciles à mémoriser d'un seul coup d'œil. Existe-t-il une pratique commerciale / une bonne pratique courante qui impose que ces codes aient un modèle pour les rendre plus faciles à mémoriser?

J'utilise beaucoup de codes 2FA et je n'ai jamais remarqué un tel modèle.Bien sûr, il y a parfois des chiffres répétés, mais ils ne semblent pas se produire assez souvent pour suggérer qu'il se passe quelque chose d'étrange.Il peut être instructif de garder une trace de vos codes et de faire une analyse statistique sur les chiffres une fois que vous en avez accumulé une centaine.
J'utilise à la fois des codes SMS 2FA et des codes d'application d'authentification et bien que je ne remarque aucun modèle dans les codes d'application d'authentification, j'ai remarqué que ceux envoyés par SMS sur mon téléphone sont souvent facilement mémorables.
En remarque (ceci étant la pile infosec), les facteurs envoyés sous forme de messages SMS ne sont pas considérés comme des seconds facteurs sécurisés.De nombreux systèmes n'offrent rien de mieux, mais si vous avez la possibilité d'utiliser une application d'authentification ou quelque chose qui nécessite l'inscription de l'appareil, ce serait mieux.Un exemple d'article sur le sujet: https://techcrunch.com/2016/07/25/nist-declares-the-age-of-sms-based-2-factor-authentication-over/
Si vous pensez à un modèle, il est probable qu'il ne s'appliquera pas à votre code, mais si vous pensez à un code, il y a de fortes chances que le code ait * une * sorte de modèle.Une fois, j'ai dû générer un mot de passe wi-fi aléatoire pour ma mère;J'ai continué à les générer jusqu'à ce que j'en trouve un qui, selon moi, n'avait aucun modèle sur lequel elle pourrait commenter.Puis elle a dit: "Avez-vous choisi celui-là parce qu'il contient vos initiales?"
@TobySmith Je remarque des modèles beaucoup plus fréquemment dans ceux de l'application que dans ceux des SMS!
J'ai passé 10 minutes à taper une question identique avant que SO ne recommande la vôtre.Je suis un peu triste que vous m'ayez battu, mais heureux de ne pas être le seul fou.:)
Cinq réponses:
ScarySpider
2017-12-12 01:43:51 UTC
view on stackexchange narkive permalink

J'ai remarqué cela aussi, et je pense que c'est le résultat de la tendance du cerveau humain à appliquer des modèles au bruit aléatoire. Cela semble être plus courant lorsqu'on essaie spécifiquement de se souvenir d'une chaîne de nombres.

Je dirais, c'est ça.Ces [OTP] (https://en.wikipedia.org/wiki/One-time_password#Methods_of_generating_the_OTP) sont généralement des codes générés aléatoirement qui essaient d'être aussi sécurisés que possible, l'introduction de modèles dans leur création serait sûrement une faille de sécurité.Notez également à quel point ces chiffres sont courts, cela, combiné à ce que @ScarySpider a mentionné, les rend faciles à retenir.
Et une fois que vous commencez à remarquer des modèles, [biais de confirmation] (https://en.m.wikipedia.org/wiki/Confirmation_bias) prend le relais.
Michael
2017-12-12 03:03:31 UTC
view on stackexchange narkive permalink

Environ 85% des nombres aléatoires à six chiffres auront au moins un chiffre répétitif et 40% auront un chiffre séquentiel répétitif l'un à côté de l'autre. (Je suis heureux d'être corrigé sur mes calculs.)

Ces clés sont générées en utilisant l'algorithme TOTP standard. L'article résume cette implémentation, montrant qu'il n'y a aucun effort pour générer un nombre mémorable:

Selon la RFC 6238, l'implémentation de référence est la suivante:

  • Générez une clé, K, qui est une chaîne d'octets arbitraire, et partagez-la en toute sécurité avec le client.
  • Mettez-vous d'accord sur un T0, l'heure Unix pour commencer à compter les pas de temps à partir de, et un intervalle, TI, qui sera utilisé pour calculer la valeur du compteur C (les valeurs par défaut sont l'époque Unix comme T0 et 30 secondes comme TI)
  • Accepter une méthode de hachage cryptographique (la valeur par défaut est SHA-1)
  • Accepter une longueur de jeton, N (la valeur par défaut est 6)

Bien que la RFC 6238 autorise l'utilisation de différents paramètres, l'implémentation Google de l'application d'authentification ne prend pas en charge les valeurs T0, TI , méthodes de hachage et longueurs de jeton différentes de la valeur par défaut. Il s'attend également à ce que la clé secrète K soit entrée (ou fournie dans un code QR) en codage base 32 conformément à la RFC 3548.

Une fois les paramètres convenus, la génération de jetons est la suivante:

  1. Calculez C comme le nombre de fois que TI s'est écoulé après T0.
  2. Calculez le hachage HMAC H avec C comme message et K comme clé (l'algorithme HMAC est défini dans la section précédente, mais aussi la plupart des bibliothèques cryptographiques le supportent). K doit être passé tel quel, C doit être passé comme un entier non signé 64 bits brut.
  3. Prenez les 4 bits les moins significatifs de H et utilisez-les comme offset, O.
  4. Prenez 4 octets de H en commençant à O octets MSB, supprimez le bit le plus significatif et stockez le reste sous forme d'entier 32 bits (non signé), I.
  5. Le jeton correspond aux N chiffres les plus bas de I en base 10. Si le résultat a moins de chiffres que N, remplissez-le de zéros à partir de la gauche.

Le serveur et le client calculer le jeton, puis le serveur vérifie si le jeton fourni par le client correspond au jeton généré localement. Certains serveurs autorisent les codes qui auraient dû être générés avant ou après l'heure actuelle afin de tenir compte des légers biais d'horloge, de la latence du réseau et des retards des utilisateurs.

Il n'y a aucune raison pour un OTP fourni par messagerie instantanée d'utiliser ce type d'algorithme.Il ne s'agit probablement que de six chiffres aléatoires de / dev / random.
@Sneftel Cela présente l'avantage que le serveur n'a pas à stocker l'OTP;il le calcule simplement quand on est entré.Il gère également le fait que le code n'est valable que pour une courte fenêtre.Si vous utilisez un nombre aléatoire, vous devrez stocker ce que vous avez généré et sa date d'expiration.De toute évidence, l'un ou l'autre fonctionne également bien en l'absence d'un deuxième facteur.
@ChrisHayes Ne pas avoir à stocker un nombre à six chiffres pendant quelques minutes, avec une date d'expiration, est un avantage immatériel.Ce sont les types de choses qui doivent être stockées de toute façon pour la session.
Vous ne pouvez pas savoir si un vank sans nom utilise TOTP ou non, donc je couvrirais cette déclaration.Mais +1 pour faire le calcul.
-1 pour les demandes non fondées présentées comme des faits
@Sneftel Bien qu'il soit vrai à 100% qu '"un OTP fourni par messagerie instantanée" ne * doit pas * utiliser l'algorithme décrit ci-dessus, mais * généralement * lorsque les gens se réfèrent à 2FA et OTP, l'algorithme ci-dessus est implémenté et utilisé.C'est une hypothèse assez sûre à faire.Mais, oui, si vous devez être pédant à ce sujet alors, vrai, il ne * doit * pas faire référence à la RFC 6238. Ce qui nous laisse, alors, c'est pourquoi les chiffres semblent avoir un modèle et pour celaJe suis d'accord, sur les deux explications (RFC 6239 ou / dev / random), avec la [réponse actuellement acceptée] (https://security.stackexchange.com/a/175278/3992).
Les codes textuels IME sont plus susceptibles d'être générés avec HOTP que TOTP, le cas échéant.Il est difficile de savoir dans quel délai le code arrivera et devra être accepté;vous ne voulez pas non plus que deux demandes dans la même période génèrent le même code.
@otus, bon point.J'ai lu "IM sur mon téléphone" comme une notification provenant de l'application mobile de la banque, qui serait probablement TOTP, mais après la relecture, je me suis rendu compte que OP signifiait probablement un message texte.
** Mec ** J'ai juste fait le calcul moi-même pour un commentaire, j'ai fait défiler vers le bas et j'ai trouvé que tu m'as battu au poing.D'une personne au hasard sur Internet à une autre: mes maths sont en accord avec tes maths.Cela devrait être une réponse suffisante pour tout le monde: si Internet dit que c'est vrai, alors c'est vrai.
Tim
2017-12-14 09:09:53 UTC
view on stackexchange narkive permalink

Sur mon téléphone, j'avais environ 90 codes de vérification de diverses entreprises. 62 d'entre eux comportaient 6 chiffres. Voici le nombre de chaque chiffre:

Peut-être un léger biais vers 1,8 et 9? Presque certainement juste du bruit dans les données (62 est un petit échantillon).

Qu'en est-il des doubles chiffres?

enter image description here Le premier graphique n'est que le deux chiffres sur les limites à 2 chiffres (c'est-à-dire AABBCC) - nous nous attendons donc à ce que chaque paire apparaisse environ 1,86 fois sur les 186 emplacements de chiffres possibles. Le second est n'importe quel placement (c'est-à-dire que XXX99X compte comme un double chiffre). Nous nous attendons à ce que chaque paire soit environ 3,1 fois sur les 310 emplacements.

Il ne semble pas y avoir de biais évident avec beaucoup plus de doubles chiffres que de non doubles - les doubles chiffres sont affichés en orange. Dans ces dernières données, nous nous attendrions à environ 31 chiffres à deux chiffres, et nous en obtenons 27. Cela semble raisonnable.

Bien sûr, cela n'exclut pas d'autres modèles "non aléatoires" - mais pour être honnêtes humains sont susceptibles de rechercher des modèles - regardez ces chiffres, tous extraits de mon application 2FA: 365 595, 111216, 566 272, 468 694, 191574, 833 043.

J'ai voté pour parce que j'aime les graphiques.
schroeder
2017-12-12 00:21:49 UTC
view on stackexchange narkive permalink

J'espère que ce n'est qu'un hasard dans votre cas. S'il y a un modèle, cela affaiblit tout l'intérêt d'avoir un deuxième code.

Non, ils ne sont pas intentionnellement censés être faciles à retenir et il n'y a pas de business case généralisé pour cela, sauf s'ils ont des commentaires indiquant que leurs utilisateurs avaient du mal à saisir 6 chiffres. Alors quelqu'un a peut-être fait quelque chose de stupide, mais j'espère vraiment que non.

thomasrutter
2017-12-12 05:21:14 UTC
view on stackexchange narkive permalink

Cela a aussi à voir avec la façon dont les humains ont tendance à penser au hasard. Dans le vrai hasard, les chiffres répétés et les motifs répétés se produisent beaucoup plus souvent que prévu. Lorsque les humains sont invités à créer des séquences de chiffres qui «semblent» aléatoires, ils ont tendance à éviter de répéter des motifs ou des chiffres (ainsi que d'autres bizarreries, comme la surutilisation de «7», et la sous-utilisation de «0» et «2», etc). Si vous demandez à quelqu'un de choisir un nombre «aléatoire» entre 1 et 100, il contiendra très souvent un 7, et bien souvent 37 (ou 17). Vous pouvez étudier les numéros de loterie que les gens choisissent manuellement, car (souvent) les gens essaient de choisir quelque chose qui semble aléatoire (sur la fausse croyance que les numéros aléatoires sont plus susceptibles de gagner dans un tirage au sort).

Si un humain essaie d'imiter un tirage au sort aléatoire, ils alterneront beaucoup plus entre les faces et les queues qu'ils ne répéteront le dernier résultat, ce qui permet de prédire leur prochaine valeur avec une assez bonne certitude (> 50% de chance que leur prochaine valeur soit être le contraire de leur dernier).

Une séquence de chiffres ou de deux chiffres répétée serait assez courante dans un vrai nombre aléatoire à 6 chiffres (par exemple ~ 41% d'un chiffre répété consécutif, ~ 85% de un chiffre répété n'importe où), et très rare dans un nombre "aléatoire" à 6 chiffres que vous demandez à un humain de trouver.

Choisir un numéro vraiment aléatoire est une stratégie légitime dans une loterie, car vous êtes moins susceptible de partager le prix avec beaucoup d'autres personnes.Bien sûr, comme la plupart des loteries ont une option "donne-moi des nombres vraiment aléatoires", essayer de le faire manuellement est un peu stupide
C'est correct et à ne pas confondre avec un numéro "aléatoire" (pour un humain) qui est un inconvénient dans une loterie.En ce qui concerne les participants à la loterie, la superstition joue un grand rôle, les gens ont des numéros «chanceux», etc.
@fjw OK, mais comment savoir que les gens choisissent des nombres aléatoires parce qu'ils ont une fausse croyance que les nombres aléatoires sont plus susceptibles de gagner que de choisir des nombres aléatoires basés sur la croyance justifiée qu'un nombre aléatoire maximise leurs gains (coupléavec notre incapacité à choisir des nombres véritablement aléatoires)?(+1 à la réponse dans tous les cas)
La "valeur par défaut" n'est pas de choisir vos propres numéros et de les générer au hasard.Choisir spécifiquement de choisir vos propres numéros se fait toujours avec la conviction que vous pouvez en quelque sorte faire mieux qu'un générateur de nombres aléatoires, que ce soit pour maximiser les gains ou la probabilité de gagner.Si cette croyance est que vous pouvez les obtenir plus «aléatoires» ou que vous pouvez choisir de meilleurs nombres «aléatoires» que des nombres générés automatiquement, c'est faux.La superstition joue un grand rôle et peut-être aussi une certaine paranoïa: le fait que les nombres générés automatiquement sont en quelque sorte truqués contre vous.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...