web-dev-qa-db-fra.com

Quelle sécurité supplémentaire un processus de connexion à un site Web en 2 étapes avec un PIN fournit-il?

Je travaille actuellement sur une application web avec un risque de sécurité important attaché à sa fonction. Nous utilisons Microsoft Identity Framework pour gérer les connexions des utilisateurs, le système forçant des mots de passe forts et l'enregistrement nécessitant une couche supplémentaire de confirmation par e-mail avant la première utilisation.

Nous avons le sentiment que ce n'est pas tout à fait suffisant. L'un de nos concurrents utilise un système de connexion en deux étapes avec un mot de passe suivi par l'utilisateur saisissant trois chiffres à partir d'un six chiffres PIN par liste déroulante. Il est suggéré de le copier.

Personnellement, je ne suis pas à l'aise avec la mise en œuvre d'une telle solution sans mieux comprendre ses avantages et ses inconvénients par rapport aux alternatives. Il me semble qu'une entrée de couche de données supplémentaire qui est à l'abri de l'enregistrement des clés n'est pas un élément de sécurité supplémentaire significatif. Sûrement, si un attaquant a déjà une combinaison e-mail/mot de passe, presque tous les moyens imaginables qu'ils auraient pu obtenir cela se traduiront également par un code PIN?

L'alternative évidente au renforcement de la sécurité est d'avoir une authentification à deux facteurs via SMS. Cela entraînera un coût, mais si la sécurité est primordiale, elle semblerait en fait ajouter une protection significative au système via un code PIN, ce qui, je pense, n'en ajoutera presque pas.

Quel est l'intérêt d'avoir une authentification supplémentaire PIN? At-elle des avantages par rapport à l'authentification à 2 facteurs?

EDIT: La solution proposée PIN donnerait à l'utilisateur un numéro à 6 chiffres généré de manière aléatoire par e-mail. Lors de la connexion au site, il faudrait d'abord saisir un mot de passe (qui peut bien sûr, En cas de succès, ils seraient alors invités à saisir trois chiffres choisis au hasard parmi les six (c'est-à-dire à saisir les premier, deuxième et cinquième caractères de votre code PIN) via la liste déroulante.

À la réflexion, je suppose que cela empêche au moins tout accès non autorisé via une personne s'appuyant sur un mot de passe stocké depuis le navigateur.

20
Bob Tway

J'ai du mal à voir quels avantages en matière de sécurité cela pourrait apporter. Dans l'authentification multifactorielle, le point est d'utiliser différents facteurs - c'est-à-dire "quelque chose que vous savez", "quelque chose que vous avez", "quelque chose que vous êtes". Le simple fait de répéter deux fois le même facteur semble un peu inutile.

Mais permettez-moi de spéculer sur ce que pourrait être le but.

1. Arrêter les enregistreurs de frappe

Seul un logiciel malveillant stupide tente d'obtenir des mots de passe en enregistrant aveuglément les frappes de touches. Exiger l'utilisation d'un menu déroulant peut protéger contre certains logiciels malveillants, mais en fin de compte, essayer de masquer les entrées des utilisateurs lorsque l'ordinateur est déjà infecté est un jeu perdant. Voir cette question pour une discussion connexe. En fin de compte, je pense que les avantages sont faibles ici.

2. Augmenter l'entropie

Si vous ajoutez un six chiffres PIN au mot de passe, vous obtenez 106 fois plus de combinaisons à la force brute ou presque 20 bits supplémentaires d'entropie, non? (Ou 103 fois ou 10 bits si vous ne comptez que les trois chiffres entrés.) Oui, mais pourquoi ne pas simplement exiger un mot de passe plus long?

Vous souhaitez peut-être le diviser en deux pour rendre une partie (le code PIN) vraiment aléatoire et ainsi protéger les utilisateurs qui choisissent des mots de passe faibles. Mais contre quoi cela protège-t-il? Pour les attaques en ligne, vous devriez déjà avoir une limitation de taux en place pour y faire face. Pour les attaques hors ligne, vous devez hacher le PIN avec le mot de passe pour obtenir des avantages. Mais comme vous pouvez vous connecter en ne fournissant que trois chiffres sur six, ils ne semblent pas le faire. ceci (à moins qu'ils ne conservent 20 hachages pour toutes les combinaisons de chiffres possibles).

3. Limitez l'effet des mots de passe volés

Supposons que votre mot de passe soit volé (par exemple lors d'une attaque de phishing). Si l'attaque n'est effectuée qu'une seule fois, l'attaquant n'obtiendra que la moitié du code PIN. Elle ne pourra donc pas se connecter facilement si on lui demande d'autres chiffres que ceux qu'elle a obtenus.

Je ne vois pas cela comme un grand avantage. Répétez simplement l'attaque plusieurs fois ou essayez de vous connecter plusieurs fois (ou à partir d'IP différentes) jusqu'à ce que vous soyez invité à saisir les chiffres dont vous disposez.

Inconvénients

  • Cela rend les utilisateurs plus susceptibles d'écrire le PIN (et peut-être le mot de passe pendant qu'ils y sont)) sur un poste ou un e-mail.
  • Vous ne pouvez pas vous connecter en utilisant uniquement un gestionnaire de mots de passe. Pourquoi rendre plus difficile pour les personnes qui utilisent des méthodes sûres de gérer leurs mots de passe?

Conclusion

Je ne vois aucun avantage de sécurité qui motiverait l'utilisateur à mémoriser un supplément PIN et à passer par les tracas de la cueillette de numéros dans les menus déroulants. Pour moi, cela sent sécurité théâtre . Mais peut-être que je manque quelque chose.

Edit: Oui, j'ai raté quelque chose. Voir réponse de supercat . C'est un très bon point, mais je ne suis pas sûr de penser que ça vaut le coup de toute façon.

33
Anders

Un système qui verrouille un compte, même temporairement, en réponse à des tentatives de mot de passe invalides, rendra très facile de mener une attaque par déni de service contre quelqu'un. L'utilisation d'une authentification en deux parties permet d'avoir des politiques de verrouillage très strictes sur la deuxième partie tout en restant résistant aux attaques par déni de service. Si quelqu'un découvrait que le mot de passe d'une personne sur un système était Justin-Bieber, un système avec un mot de passe en une seule partie ne pourrait pas distinguer les tentatives d'effraction ciblées en utilisant des variantes de ce mot de passe (par exemple Justin-Bieber1, Justin4Bieber, etc. ) à partir d'entrées de mot de passe aléatoires destinées à déclencher un déni de service.

La division du mot de passe en deux parties signifierait qu'un attaquant serait informé que la première partie était correcte mais le prix le plus probable ne serait pas l'accès au compte, mais simplement la possibilité de déclencher un verrouillage sur celui-ci jusqu'à ce que l'utilisateur réel s'authentifie par d'autres moyens; puisque l'utilisateur saurait que quelqu'un d'autre avait le mot de passe principal, l'utilisateur changerait alors ce mot de passe, le rendant inutile.

20
supercat

Si vous voulez une authentification forte sans frais d'envoi SMS vous pouvez utiliser TOTP avec application d'authentification Google .

En effet, la solution de broche ne semble pas ajouter beaucoup de sécurité supplémentaire. Je ne comprends pas non plus complètement le mécanisme. Ils saisissent 3 chiffres à partir d'une broche à 6 chiffres. Comment ont-ils obtenu l'épingle à 6 chiffres et comment les chiffres de l'arbre sont-ils sélectionnés? De plus, 10 ^ 3 n'est pas un si grand nombre, ce qui signifie que la broche peut être forcée brutalement si aucune mesure n'est prise. Si vous pouvez clarifier le mécanisme de broche, je pourrais peut-être donner plus d'informations sur ses avantages en matière de sécurité.

EDIT: sur la base de votre mise à jour, il s'agit déjà d'une forme faible d'authentification à deux facteurs puisque le code PIN est communiqué par e-mail. Pourquoi il y a 3 chiffres sélectionnés sur les 6 dans l'e-mail est toujours un mystère pour moi. La raison pour laquelle je dis "faible" est que le code PIN à 3 chiffres est très court et peut être forcé brutalement si aucune autre protection n'est présente.

En outre, la liste déroulante pour empêcher les enregistreurs de frappe d'enregistrer la broche est une forme de protection très faible. Si vous avez la possibilité d'enregistrer les frappes, vous avez également la possibilité de vérifier quel numéro est sélectionné. Ou est-ce que quelqu'un pense qu'il y a des cas où le keylogging est possible mais la surveillance des clics ne l'est pas? Peut-être dans un enregistreur de frappe matériel?

16
Silver

Le point de authentification multifacteur est d'exiger des informations de plusieurs sources afin que si un utilisateur est compromis d'une manière (disons qu'il écrive son mot de passe quelque part et qu'il soit trouvé), alors il y a encore une couche de sécurité empêchant l'accès au compte.

Habituellement, les trois types d'informations d'authentification sont quelque chose que vous

  • savoir - comme un mot de passe ou un code PIN que vous avez mémorisé
  • ont - un téléphone ou un autre jeton d'accès que vous gardez sur vous
  • sont - une empreinte digitale ou autre biométrique

Un mot de passe et une épingle sont considérés dans la première catégorie, donc l'épingle n'ajoute probablement pas beaucoup de sécurité supplémentaire étant donné qu'il existe un risque qu'ils puissent tous deux être compromis en même temps (bien sûr, il n'y a pas/moins de risque de keylogging. Mais que se passe-t-il si les informations sont interceptées sur le réseau ou une autre forme de capture?).

Quant aux avantages, c'est difficile à dire sans plus d'informations. Dans ce cas, il semble que le fait d'avoir une épingle soit moins cher que de faire un "bon" système d'authentification à deux facteurs. Peut-être que le modèle de menace est des enregistreurs de frappe sur les ordinateurs des utilisateurs, et ceci pourrait être un correctif approprié.

8
Fishy

Ce qui se passe ici, c'est que votre concurrent essaie d'utiliser le substitut d'un pauvre à la place d'un deuxième facteur robuste pour l'authentification. Pour toutes les raisons commerciales, ils ne veulent pas gérer la mise en place de l'infrastructure de leur côté pour implémenter un mécanisme de code/OTP à usage unique (la configuration 2FA la plus courante) pour fournir ce deuxième facteur d'authentification robuste. (Ou tournez-vous vers un tiers pour gérer la mise en œuvre d'OTP pour eux dans le cadre d'un modèle d'authentification en tant que service.) Les résultats sont plutôt prévisibles: pour des raisons que d'autres ont soulignées, le substitut de ce pauvre homme n'est pas aussi difficile pour un attaquant à surmonter en tant que mécanisme 2FA où vous devez obtenir un code à usage unique à partir d'un appareil distinct ("quelque chose que vous avez") chaque fois que vous vous connectez.

néanmoins, certaines dispositions de cet arrangement le rendent quelque peu préférable à l'utilisation d'un mot de passe uniquement pour l'authentification. De loin, les deux plus grands problèmes liés à l'utilisation d'un mot de passe uniquement pour authentifier un utilisateur sont (a) le fait qu'un grand nombre d'utilisateurs réutilisent librement les mots de passe sur de nombreux comptes et (b) la tendance d'un grand nombre d'utilisateurs à choisir plus facilement. -mémoire mais des mots de passe très faibles. La saisie obligatoire d'un PIN qui a été généré de manière aléatoire par le service fournit une couche supplémentaire de protection assez importante contre ces menaces énormes. (Bien que distribuer ce PIN par e-mail soit une mauvaise pratique, pour un certain nombre de raisons.)

Bien sûr, rien de tout cela ne vous sera très utile si un attaquant peut envoyer des logiciels malveillants sur votre PC/appareil qui enregistreront votre PIN lorsque vous y entrerez. Ou s'il peut vous inciter à le saisir sur un site de phishing. Ici, la liste déroulante consistant à saisir trois chiffres aléatoires à partir des six chiffres PIN pourrait fournir un avantage modeste dans certains scénarios. De nombreux enregistreurs de frappe modernes prendront des captures d'écran du curseur de la souris chaque fois que l'utilisateur clique sur quelque chose, mais certains logiciels malveillants plus simples/plus rudimentaires collent toujours à la capture de touches uniquement. En ce qui concerne le vol du PIN par phishing ... eh bien, ici, il y a encore moins d'utilité fourni, simplement parce qu'il faut saisir trois chiffres sélectionnés au hasard dans un PIN composé de seulement six chiffres ne vont généralement pas imposer un problème. (Encore une fois, pour des raisons que d'autres ont déjà bien expliquées.) Néanmoins, on pourrait faire valoir que, dans certains scénarios, cet arrangement peut fournir un peu (même un peu) d'utilité supplémentaire par rapport à la simple saisie par l'utilisateur de son PIN chaque fois. (Peut être.)

Tout cela étant dit, l'utilisation d'une véritable configuration d'authentification à deux facteurs serait certainement préférable du point de vue de la sécurité. Surtout si vous utilisez des codes/OTP à usage unique générés par un jeton matériel (le plus sécurisé) ou une application d'authentification de smartphone. Pas de vrai concours.

1
mostlyinformed

Le deuxième facteur "partie que vous connaissez" pourrait être qui 3 des 6 caractères envoyés par courriel (Mary utilise les 1er, 2e, 5e, Jean: 1-2-6, Fred et Janet: 4- 5-6) ... je ne sais pas exactement comment vous enseigneriez à vos parents lesquels, mais une fois enseigné, ce secret ne devrait plus être transmis. Et puis utilisez également des verrouillages serrés.

Les SMS sont potentiellement vulnérables aux raies pastenagues, mais prenez cela avec un grain de sel pour voir à quel point les gens sont motivés à s'introduire dans votre système.

0
tawpie