web-dev-qa-db-fra.com

Réinitialisation du mot de passe - quelles pratiques les services Web doivent-ils suivre?

Beaucoup d'entre vous ont peut-être vu Comment Apple et les failles de sécurité d'Amazon ont conduit à mon piratage épique , où les comptes Amazon, Apple, Gmail et Twitter d'un journaliste câblé ont été piratés avec succès Le pirate a suivi une séquence élaborée d'étapes, à chaque étape, en utilisant le processus de récupération de mot de passe d'un service Web pour obtenir les informations nécessaires pour attaquer le compte du journaliste sur le prochain service Web. L'attaquant a réussi à exploiter avec succès la variation entre les différents services. exigences pour ce dont ils ont besoin pour effectuer une réinitialisation du mot de passe, pour enchaîner son attaque et finalement réussir à monter une attaque catastrophique contre le pauvre reporter Wired.

À la lumière de cela, quelles pratiques les services Web devraient-ils suivre pour protéger leur fonctionnalité de réinitialisation de mot de passe et empêcher la répétition d'un tel échec? Que doit faire l'industrie pour éviter que cela ne se reproduise?

26
D.W.

J'ai en fait travaillé sur quelques idées dans ce domaine, alors voici un aperçu de mes réflexions jusqu'à présent. Je m'excuse d'avance pour la longueur ridicule de cette réponse.

Les mécanismes de réinitialisation de mot de passe doivent être conçus avec trois objectifs principaux à l'esprit:

  • Sécurité
  • Convivialité
  • Fiabilité

Pour un bon mécanisme, nous devons parvenir à un équilibre entre les trois.

Quelques affirmations que j'aimerais faire avant de commencer:

Bon, passons à la vraie réponse!


1. Authentification multifacteur

Authentification multifacteur (MFA) est l'une des méthodes les plus sécurisées pour la récupération de compte et l'authentification humaine en général. Pour ceux d'entre vous qui ne connaissent pas MFA, cela fonctionne sur le principe que vous devez avoir plus d'un justificatif d'identité pour vous authentifier:

  • Quelque chose que vous savez (par exemple, mot de passe, réponse secrète)
  • Quelque chose que vous avez (par exemple, clé, jeton matériel, etc.)
  • Quelque chose que vous êtes (par exemple empreinte digitale)

Notez que le fait d'avoir plusieurs d'un même type, par ex. deux mots de passe, ou un mot de passe et une épingle, ne pas comptent comme MFA. Je vous regarde, les sites bancaires en ligne.

1.1. Quelque chose que tu sais

Lors de la réinitialisation d'un mot de passe, une façon courante d'authentifier l'utilisateur est de leur demander certaines questions . Malheureusement, ces questions sont généralement des choses comme "Dans quelle école êtes-vous allé?" et "Quel est le nom de jeune fille de votre mère?", qui sont incroyablement faciles à découvrir par les attaquants via les réseaux sociaux. De plus, de nombreux utilisateurs n'aiment pas répondre à ces questions lors de leur inscription, ils ont donc juste frappé un trousseau de clés et invalidé le but de la question.

Pour les webapps de commerce électronique et autres webapps qui stockent des informations personnelles privées (par exemple, adresse/numéro de téléphone), on peut demander ces informations. Cependant, gardez à l'esprit que ces informations peuvent également être trouvées en ligne.

Une alternative serait de poser des questions contextuelles, basées sur l'expérience de l'utilisateur sur le site. Par exemple, Hotmail vous demande une adresse e-mail avec laquelle vous avez récemment communiqué, ainsi que d'autres informations sur l'activité de votre compte. Ceci est assez adaptable sur la plupart des types d'applications Web, mais n'est pas toujours applicable.

1.2. Quelque chose que tu as

Souvent, les sites décrivent l'envoi par e-mail d'un lien ou d'un mot de passe à usage unique à votre adresse e-mail sous la forme d'un MFA. J'affirme qu'il s'agit d'une fausse hypothèse. Les utilisateurs partagent des mots de passe entre les comptes. C'est un fait absolu et vous ne pouvez pas l'empêcher. En tant que tel, vous devez supposer qu'un attaquant a déjà accès à l'adresse e-mail de l'utilisateur. Nous couvrirons les implications de cela plus tard.

La prolifération des téléphones portables en a fait un excellent mécanisme d'authentification à deux facteurs, comme une forme de vérification hors bande. SMS sont faciles à comprendre et à utiliser pour l'utilisateur, et un attaquant ayant accès au téléphone est peu probable. Cependant, cette méthode n'est pas sans faille. Le plus gros problème est quand un utilisateur perd leur téléphone ou change de fournisseur. Cela invalide complètement le téléphone en tant que périphérique de réinitialisation utilisable. Un autre problème est que les utilisateurs n'ont pas toujours leur téléphone avec eux.

L'utilisation d'une application sur les smartphones résout partiellement ce problème. Si un utilisateur change de fournisseur, l'application reste sur le téléphone. Autoriser les réinitialisations basées sur SMS et basées sur les applications permet une attente raisonnable de fiabilité.

Alternativement, autorisez l'utilisateur à associer un compte de fournisseur de connexion (par exemple OpenID) et à utiliser une connexion valide pour ce compte comme preuve "quelque chose que vous savez".

Autres mécanismes potentiels:

  • Jeton physique (par exemple RSA SecurID , jeton USB) - pas exactement viable pour la plupart des endroits, mais utile pour les banques, les systèmes d'entreprise internes et d'autres situations de haute sécurité.
  • Fichier - Fichier généré aléatoirement remis à l'utilisateur lors de l'inscription. Hash stocké dans la base de données. Lors de la réinitialisation, l'utilisateur a demandé de fournir le fichier. Pas la meilleure convivialité ou sécurité, mais potentiellement utile.

1.3. Quelque chose que tu es

C'est là que les choses s'amusent et la science-fiction. Authentification biométrique est quelque chose qui est devenu plus populaire récemment. Un certain nombre d'ordinateurs portables incluent des scanners d'empreintes digitales, et vous pouvez vous procurer des USB bon marché pour un coût relativement faible. Un autre mécanisme biométrique populaire est la reconnaissance faciale, via webcam. Les deux sont excellents en termes de sécurité lorsqu'ils sont bien faits, mais ils ont tous deux quelques problèmes:

  • La plupart des implémentations sont probabilistes et donc peu sûres. Qu'est-ce qui empêche un attaquant de tenir une photo de votre visage face à la caméra?
  • Vous ne pouvez pas compter sur chaque utilisateur disposant d'un scanner d'empreintes digitales, et ceux qui ne sont pas tous compatibles les uns avec les autres. De plus, vous vous connectez au matériel, ce qui nécessite une application native pour parler à votre application Web.
  • Le domaine de la biométrie est relativement nouveau, il n'y a donc pas d'implémentations bien étudiées et bien vieillies avec des modèles de sécurité bien compris.

Dans l'ensemble, le modèle "quelque chose que vous êtes" fonctionne pour l'identification en personne, mais n'est pas vraiment réalisable pour les applications Web, sauf si vous fournissez à vos clients des scanners d'empreintes digitales et des logiciels appropriés.

1.4. Meilleures pratiques MFA

L'authentification à facteur unique ne suffit pas. Comme nous l'avons vu depuis touslesrécentsviolations il est difficile de sécuriser les mots de passe, et même lorsqu'ils ' re hachés, ils peuvent encore être brisés. MFA est nécessaire pour les deux récupération de connexion et de mot de passe. L'authentification mobile à des fins de récupération résout la plupart des problèmes, tant que l'appareil mobile est toujours utilisable. Dans le cas où l'authentification mobile n'est pas possible, vous devez avoir un processus de vérification manuelle en place, où il doit convaincre un humain qu'il est le vrai traiter.


2. Réinitialiser les mécanismes

Il existe une multitude de méthodes de réinitialisation de mot de passe différentes, dont beaucoup sont loin derrière en termes de sécurité. Je vais discuter de certains que j'ai vus dans la nature, expliquer leurs bons et mauvais points et en proposer de meilleurs.

2.1. Renvoyer le mot de passe par e-mail

Le mécanisme le plus élémentaire consiste à leur envoyer simplement le mot de passe de l'utilisateur. Veuillez ne faites jamais cela . C'est horrible au-delà de toute mesure . Tout d'abord, cela nécessite que vous stockiez des mots de passe en texte clair, ou au moins dans un format réversible. Vous devez hacher correctement les mots de passe , et suivre meilleures pratiques de salage . Deuxièmement, vous envoyez par e-mail le mot de passe de l'utilisateur en texte clair, via un protocole en texte clair, via Internet. Il y a un niveau spécial d'enfer réservé aux gens qui font ça.

2.2. Générer un nouveau mot de passe

Certains sites génèrent un nouveau mot de passe aléatoire, le hachent, puis l'envoient par courrier électronique à l'utilisateur. Ce n'est pas une bonne idée pour plusieurs raisons, bien que la plupart d'entre elles puissent être atténuées d'une manière ou d'une autre. Le problème le plus fondamental est que vous envoyez par e-mail un mot de passe utilisable à un utilisateur en texte brut. D'autres problèmes avec cette méthode incluent:

  • De nombreux utilisateurs sont paresseux, certains vont réinitialiser et simplement dire au navigateur de se souvenir du mot de passe aléatoire.
  • De nombreux sites ne vous obligent pas à changer le mot de passe lors de la première utilisation du mot de passe.
  • Un attaquant ayant accès au compte de messagerie a accès au mot de passe, quels que soient les mécanismes que vous avez utilisés pour authentifier l'utilisateur en premier lieu.

2.3. Le lien de réinitialisation

C'est l'un des meilleurs mécanismes (et, heureusement, plus populaire). Il s'agit d'authentifier l'utilisateur, puis de lui envoyer par e-mail un lien de réinitialisation unique. Une fois le lien de réinitialisation utilisé, l'utilisateur est invité à définir un nouveau mot de passe. Une fois cela fait, le lien n'est plus valide. Une sécurité supplémentaire peut être fournie en incluant des délais d'expiration sur les liens et en faisant en sorte que le lien ne soit pas valide une fois le mot de passe défini ou après l'expiration de la session de l'utilisateur.

La chute de cette méthode est lorsque nous nous souvenons de notre hypothèse antérieure. Le compte de messagerie de l'utilisateur n'est pas sécurisé. Cela ne compte pas comme "quelque chose que vous savez". Bien que la fenêtre de temps d'un attaquant soit courte, il peut toujours s'introduire. Bien sûr, tout cela est encore invalidé si (ou, plutôt, quand) l'utilisateur oublie son mot de passe de messagerie.

2.4. Ne quittez jamais le site

C'est le Saint Graal, vraiment, mais ne peut être utilisé qu'avec une authentification multifacteur forte. Une fois que l'utilisateur s'authentifie à l'aide d'une combinaison de questions de sécurité, de contrôles hors bande (par exemple, téléphone portable), de fichiers clés, de biométrie, de vérification humaine, etc., il est immédiatement redirigé vers un formulaire de changement de mot de passe. Cela contourne entièrement la nécessité d'utiliser des adresses e-mail.

Si vous croyez vraiment qu'il est nécessaire d'utiliser une adresse e-mail pour envoyer un lien, envisagez de proposer une option de réinitialisation sans e-mail qui augmente le nombre de contrôles dont vous avez besoin pour réussir.


3. Conclusion

Il est difficile d'équilibrer la sécurité, l'utilisabilité et la fiabilité dans le meilleur des cas, mais cette situation concerne directement un utilisateur qui a déjà prouvé qu'il n'était pas fiable. Je ne dis pas cela dans un sens dépréciable, mais plutôt que nous sommes tous faillibles.

Il est important de garder un système de réinitialisation de mot de passe utilisable et simple, sans lésiner sur la sécurité. Avant de mettre en œuvre un processus d'authentification à 3 facteurs massif sur chaque aspect de votre application Web, pensez à ce que vous protégez. Si vous n'êtes qu'une petite entreprise vendant des choses en ligne, vous pouvez probablement vous en sortir avec 2 facteurs de base sur la récupération. Si vous êtes un grand détaillant, une banque ou un site de réseautage social, vous devez utiliser un facteur 2 élevé lors de la récupération (plusieurs types de chacun) et un facteur 2 pour les connexions à partir de sources non reconnues.

En une phrase: restez simple, pensez à votre public.

27
Polynomial

Le problème avec le "piratage épique" était que plusieurs comptes (Twitter, gmail) étaient liés à un compte (icloud) qui a ensuite été compromis, permettant aux pirates de demander et d'intercepter des liens de réinitialisation de mot de passe pour les comptes liés.

Si vous souhaitez vous protéger contre un tel scénario (où un compte de messagerie utilisé comme référence pour d'autres comptes est compromis), à mon humble avis, il n'y a pas d'autre moyen que d'utiliser l'authentification à 2 facteurs, comme le propose Google . Si le mot de passe temporaire obtenu grâce à l'ingénierie sociale aurait été envoyé sur le téléphone mobile du propriétaire du compte icloud, rien de tout cela ne serait arrivé.

7
twobeers

À mon avis, il n'y a rien de plus qu'un service Web puisse faire pour protéger la fonctionnalité de réinitialisation de mot de passe pour une raison simple, l'utilisateur.

Examinons ce que je trouve être la forme la plus courante de réinitialisation de mot de passe: la question secrète. Il y a 2 scénarios qui se jouent généralement.

1) Répondez honnêtement à la question - de nombreux utilisateurs choisissent cette route. Malheureusement, les réponses à la plupart des questions secrètes sont incroyablement faciles à trouver sur Internet. Des informations telles que votre première école ou le nom de jeune fille de votre mère ne sont pas un secret. Les attaquants peuvent facilement déterrer ces informations en effectuant de simples recherches en ligne. Cela rend la question secrète aussi inutile qu'inutile.

2) Répondez à la question avec des ordures, puis oubliez la réponse - la plupart des gens que je connais le font, y compris moi. Cela rend la question secrète inutile car elle ne peut pas être utilisée pour confirmer la légitimité de la demande de réinitialisation du mot de passe.

La meilleure façon de traiter la question secrète serait de répondre avec des ordures, mais notez-la quelque part afin de ne pas oublier. La plupart des utilisateurs ne le feront pas cependant, principalement en raison du fait qu'ils ne se soucient pas de la sécurité jusqu'à ce qu'il se passe quelque chose.

Quels sont les autres moyens courants de déclencher une réinitialisation du mot de passe?

Courriel - de nombreux services associent votre compte à un courriel de "récupération". Cependant, que se passe-t-il si vous oubliez le mot de passe de l'e-mail de récupération? C'est une chaîne sans fin.

La plupart des méthodes plus sécurisées comme l'authentification à deux facteurs sont un problème pour les utilisateurs. Les services Web doivent considérer la convivialité par rapport à la sécurité. Après tout, quel est l'intérêt d'avoir un service web non piratable si personne ne l'utilise?

Le principal défaut de cet article est que l'auteur avait plusieurs comptes liés à un seul e-mail, ce qui a permis à l'attaquant de compromettre facilement tous ses comptes en ligne. Essayez, autant que possible, de décentraliser vos identités en ligne. Cependant, cela devient la responsabilité des utilisateurs.

Autant nous voudrions penser que la sécurité devrait être la principale préoccupation des services Web, nous devons considérer le point de vue de l'utilisabilité. Dans l'ensemble, la sécurité ne s'améliorera pas tant que les utilisateurs finaux ne se rendront pas compte de son importance et ne prendront pas de mesures pour se protéger. Après tout, il n'y a que peu de choses qu'un fournisseur de services peut faire.

6
user10211

En pratique, ils ont utilisé son e-mail pour tout pirater. Donc, garder votre e-mail sécurisé, le mieux par vous-même, avec une détection intelligente des intrusions et protégé contre la récupération de mot de passe, empêcherait un tel piratage dans ce cas.

Il en va de même pour vos données dans le cloud. Le chiffrement intelligent et la protection du système, comme la gestion des clés, sont importants pour votre sécurité, ainsi que les sauvegardes et les instantanés à distance, il est donc tout simplement impossible de chaîner en guirlande.

Ces deux documents et communications clés doivent être sécurisés, donc ils ne conviennent pas au cloud pour un usage professionnel, car quelqu'un les supprimera et c'est tout. Le mieux est donc d'utiliser un domaine professionnel/personnel, que vous pouvez récupérer légalement.

En le protégeant légalement, physiquement, avec une automatisation intelligente, vous pouvez l'utiliser pour un usage professionnel, et si vous êtes piraté, il devrait essentiellement être au courant de la récupération du mot de passe par e-mail, dans votre messagerie Web, vous devez filtrer la récupération du mot de passe dans une autre boîte aux lettres que vous besoin d'accéder via ssh, pour être sûr.

Et la pomme? Cela se produit lorsque vous utilisez du matériel pour enfants avec une télécommande Apple. C'est une bonne solution pour l'iPod, mais cela ne fonctionne pas dans le monde réel des PC. Comment tout le monde était agacé lorsque Microsoft collectait des données, mais maintenant Apple a toutes les applications sous contrôle et c'est OK dans une certaine mesure, mais principalement pour le divertissement et le divertissement à la maison, pas un travail professionnel. Le saut de sécurité d'OSX est énorme, et ce n'est pas surprenant du tout que l'OSX a été piraté de manière multiplateforme.

Pour un e-mail sécurisé, le mieux est également d'avoir un domaine dans une entreprise réputée, il ne peut donc pas être piraté aussi.

2
Andrew Smith