Pourquoi l'approche challenge-response est-elle une mauvaise solution pour les mots de passe oubliés?

StackOverflow https://stackoverflow.com/questions/613619

Question

Mon entreprise développe une application en ligne de gestion des ressources humaines et de la paie dans laquelle la sécurisation de l'accès est essentielle. Je comprends bien comment verrouiller la plupart des processus d'authentification / autorisation, à l'exception de la page "Mot de passe oublié".

Mon plan initial consistait à demander à l'utilisateur de saisir à la fois une adresse électronique et une réponse à une question de challenge précédemment sélectionnée / saisie, avec l'envoi d'un mot de passe temporaire à l'adresse électronique indiquée (en supposant que l'adresse électronique soit: valide). Mais j’ai lu ici et here (les deux sur le SO) que l'approche défi-réponse est précaire.

Si nous n'envoyons cependant qu'un mot de passe temporaire par courrier électronique, est-ce vraiment si peu sécurisé? La seule option plus sûre à laquelle je puisse penser serait d’obliger l’utilisateur à appeler son représentant du service clientèle, ce qui alourdirait considérablement ses employés.

Qu'est-ce qui me manque ... existe-t-il une meilleure approche? Merci!

Était-ce utile?

La solution

Ne pas envoyer de mot de passe temporaire par courrier électronique, envoyez à l’utilisateur une adresse URL + jeton sur une page de réinitialisation du mot de passe. De cette façon, aucun mot de passe ne change de mains sans chiffrement. Il est également évident pour l'utilisateur final que son compte a été compromis s'il tente d'accéder à cette page et que le jeton de réinitialisation a déjà été utilisé.

Ajouté des commentaires:

Je pense que les aspects défi-réponse ("question secrète") rendent les choses moins sûres, car ce sont généralement des choses qui peuvent être découvertes en recherchant des informations publiques sur la cible. Moins il y a d’étapes, moins il est possible de casser les choses sans que personne le sache. Laisser les e-mails de réinitialisation partir plus tôt est souvent un bon moyen de faire savoir à un humain que la tentative est en cours.

Autres conseils

Comme expliqué dans cet article . , Le compte de messagerie du gouverneur Palin a récemment été piraté à l’aide des réponses aux questions précédemment posées. De l'article:

  

Comme détaillé dans les articles, le piratage Palin n’exigeait aucune compétence réelle. Au lieu de cela, le pirate réinitialise simplement le mot de passe de Palin en utilisant sa date de naissance, son code postal et des informations sur le lieu où elle a rencontré son épouse - la question de sécurité sur son compte Yahoo, à laquelle une simple recherche sur Google a répondu (Wasilla High).

Il existe quelques moyens courants de gérer les mots de passe perdus:

  • La question secrète: Il s’agit en réalité d’une forme d’authentification plus faible, tout comme les personnes précédemment postées. L'utilisateur peut choisir quelque chose de très simple et facile à deviner. Je vous le déconseille car il ne nécessite aucun "piratage" technique

  • Envoyez un nouveau mot de passe par mail. Pour contourner ce contrôle, l'accès au compte de messagerie est requis ou une position intermédiaire (MITM) est requise: vous devez lire le mot de passe temporaire dans la boîte de réception de l'utilisateur ou l'intercepter au milieu. Cette approche est mûre pour une utilisation abusive, car tout le monde peut réinitialiser le mot de passe et forcer l'utilisateur à quitter le système s'il ne peut pas lire l'e-mail avec un nouveau mot de passe.

  • Envoyez un hachage de réinitialisation de mot de passe par courrier. Pour contourner ce problème, vous devez accéder à la boîte de réception ou à MITM, comme auparavant, mais aucun mot de passe n'est réellement réinitialisé tant que la confirmation n'a pas été effectuée. Ainsi, l'utilisateur ne peut pas être verrouillé hors du système, même s'il n'a pas lu le courrier électronique. Ajoutez un délai de recharge à une réinitialisation toutes les 8 heures pour empêcher votre système d’inonder la boîte de réception de l’utilisateur.

  • Prenez en compte certaines communications hors bande. Par exemple, dans le contrat imprimé, écrivez un code PIN. Demandez ensuite à l'utilisateur d'appeler votre service d'assistance à partir d'un numéro de téléphone connu (vérifiez auprès de Caller ID) et donnez son nom d'utilisateur et son code PIN.

Ne serait-il pas facile / faisable d’externaliser la gestion complète du mot de passe comme le faisait SO et d’utiliser OpenId ou un logiciel similaire? Bien sûr, cela ajouterait une autre dépendance, mais vous échangeriez cela contre la nécessité de sauvegarder (et de sécuriser) les mots de passe et de les gérer comme vous l'avez décrit.

Vous avez dit qu'il s'agissait d'une application en ligne pour les ressources humaines et la paie. Avez-vous la possibilité qu'un utilisateur indique qu'il / elle a oublié son mot de passe et qu'il génère un message à un représentant des ressources humaines ou à un responsable de l'organisation pouvant confirmer l'identité puis émettre une réinitialisation du mot de passe?

En bref, les questions de défi sont souvent le maillon faible. Ils sont plus faciles à deviner qu'un mot de passe et fonctionnent efficacement comme proxy pour un mot de passe. Ils réduisent donc la sécurité au lieu de l'améliorer en fournissant un autre vecteur d'attaque plus facile à détruire. Le Le manuel du pirate d'applications Web contient d'excellentes informations à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top