Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1

J'ai récemment eu le temps de réfléchir à nouveau au fonctionnement d'une fonctionnalité sécurisée de réinitialisation de mot de passe, d'abord lorsque j'ai intégré cette fonctionnalité dans ASafaWeb, puis quand il a aidé une autre personne à faire quelque chose de similaire. Dans le deuxième cas, je voulais lui donner un lien vers une ressource canonique avec tous les détails sur la façon d'implémenter en toute sécurité la fonction de réinitialisation. Cependant, le problème est qu’une telle ressource n’existe pas, du moins pas celle qui décrit tout ce qui me semble important. J'ai donc décidé de l'écrire moi-même.

Vous voyez, le monde des mots de passe oubliés est en réalité assez mystérieux. Il existe de nombreux points de vue différents, tout à fait acceptables, et de nombreux points de vue tout à fait dangereux. Il y a de fortes chances que vous ayez rencontré chacun d'eux à plusieurs reprises en tant qu'utilisateur final ; Je vais donc essayer d'utiliser ces exemples pour montrer qui le fait correctement, qui ne le fait pas et sur quoi vous devez vous concentrer pour intégrer correctement la fonctionnalité dans votre application.

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1

Stockage des mots de passe : hachage, cryptage et (halètement !) texte brut

Nous ne pouvons pas discuter de ce qu'il faut faire des mots de passe oubliés avant de discuter de la manière de les stocker. Les mots de passe sont stockés dans la base de données sous l'un des trois types principaux suivants :

  1. Texte simple. Il existe une colonne de mot de passe, qui est stockée sous forme de texte brut.
  2. Crypté. Il utilise généralement un cryptage symétrique (une clé est utilisée à la fois pour le cryptage et le déchiffrement), et les mots de passe cryptés sont également stockés dans la même colonne.
  3. Haché. Processus à sens unique (le mot de passe peut être haché, mais ne peut pas être déchiffré) ; mot de passe, j'aimerais espérer, suivi d'un sel, et chacun est dans sa propre colonne.

Passons directement à la question la plus simple : Ne stockez jamais les mots de passe en texte brut ! Jamais. Une seule vulnérabilité à injections, une sauvegarde imprudente, ou l'une des dizaines d'autres erreurs simples - et c'est tout, gameover, tous vos mots de passe - c'est-à-dire désolé, les mots de passe de tous vos clients deviendra du domaine public. Bien entendu, cela impliquerait une forte probabilité que tous leurs mots de passe de tous leurs comptes dans d’autres systèmes. Et ce sera de votre faute.

Le cryptage est meilleur, mais il présente des faiblesses. Le problème du chiffrement est le décryptage ; nous pouvons prendre ces chiffres fous et les reconvertir en texte brut, et lorsque cela se produit, nous revenons à la situation des mots de passe lisibles par l'homme. Comment cela peut-il arriver? Une petite faille pénètre dans le code qui déchiffre le mot de passe et le rend public - c'est une façon. Les pirates informatiques accèdent à la machine sur laquelle les données cryptées sont stockées - c'est la deuxième méthode. Une autre façon, encore une fois, consiste à voler la sauvegarde de la base de données et quelqu'un obtient également la clé de cryptage, qui est souvent stockée de manière très peu sécurisée.

Et cela nous amène au hachage. L’idée derrière le hachage est qu’il est à sens unique ; la seule façon de comparer le mot de passe saisi par l'utilisateur avec sa version hachée est de hacher l'entrée et de les comparer. Pour empêcher les attaques d'outils comme les tables arc-en-ciel, nous salons le processus de manière aléatoire (lire mon poster sur le stockage cryptographique). En fin de compte, s'ils sont correctement mis en œuvre, nous pouvons être sûrs que les mots de passe hachés ne redeviendront plus jamais du texte brut (je parlerai des avantages des différents algorithmes de hachage dans un autre article).

Un petit argument entre le hachage et le chiffrement : la seule raison pour laquelle vous auriez besoin de chiffrer plutôt que de hacher un mot de passe est lorsque vous avez besoin de voir le mot de passe en texte brut, et tu ne devrais jamais vouloir ça, du moins dans une situation de site Web standard. Si vous en avez besoin, vous faites probablement quelque chose de mal !

Attention!

Ci-dessous, dans le texte du message, vous trouverez une partie d'une capture d'écran du site pornographique AlotPorn. Il est soigneusement taillé pour qu'il n'y ait rien que vous ne puissiez voir sur la plage, mais si cela risque toujours de causer des problèmes, ne faites pas défiler la page vers le bas.

Réinitialisez toujours votre mot de passe jamais ne lui rappelle pas

Vous a-t-on déjà demandé de créer une fonction rappels mot de passe? Prenez du recul et réfléchissez à cette demande à l’envers : pourquoi ce « rappel » est-il nécessaire ? Parce que l'utilisateur a oublié le mot de passe. Que voulons-nous vraiment faire ? Aidez-le à se reconnecter.

Je réalise que le mot « rappel » est utilisé (souvent) dans un sens familier, mais ce que nous essayons vraiment de faire, c'est aider l'utilisateur à être à nouveau en ligne en toute sécurité. Puisque nous avons besoin de sécurité, il y a deux raisons pour lesquelles un rappel (c'est-à-dire l'envoi de son mot de passe à l'utilisateur) n'est pas approprié :

  1. Le courrier électronique est un canal non sécurisé. Tout comme nous n’enverrons rien de sensible via HTTP (nous utiliserions HTTPS), nous ne devrions rien envoyer de sensible par courrier électronique car sa couche de transport n’est pas sécurisée. En fait, c'est bien pire que le simple envoi d'informations via un protocole de transport non sécurisé, car le courrier est souvent stocké sur un périphérique de stockage, accessible aux administrateurs système, transféré et distribué, accessible aux logiciels malveillants, etc. Le courrier électronique non crypté est un canal extrêmement peu sécurisé.
  2. De toute façon, vous ne devriez pas avoir accès au mot de passe. Relisez la section précédente sur le stockage - vous devriez avoir un hachage du mot de passe (avec un bon sel fort), ce qui signifie que vous ne devriez en aucun cas pouvoir extraire le mot de passe et l'envoyer par courrier.

Permettez-moi de démontrer le problème avec un exemple usoutdoor.com: Voici une page de connexion typique :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Évidemment, le premier problème est que la page de connexion ne se charge pas via HTTPS, mais le site vous propose également d'envoyer un mot de passe (« Envoyer le mot de passe »). Cela peut être un exemple de l'utilisation familière du terme mentionné ci-dessus, alors allons plus loin et voyons ce qui se passe :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Malheureusement, cela n'a pas l'air beaucoup mieux ; et un email confirme qu'il y a un problème :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Cela nous révèle deux aspects importants de usoutdoor.com :

  1. Le site ne hache pas les mots de passe. Au mieux, ils sont cryptés, mais il est probable qu’ils soient stockés en texte brut ; Nous ne voyons aucune preuve du contraire.
  2. Le site envoie un mot de passe à long terme (nous pouvons y revenir et l'utiliser encore et encore) sur un canal non sécurisé.

Ceci étant réglé, nous devons vérifier si le processus de réinitialisation est effectué de manière sécurisée. La première étape pour ce faire est de s’assurer que le demandeur a le droit d’effectuer la réinitialisation. En d’autres termes, nous avons besoin avant cela d’un contrôle d’identité ; Jetons un coup d'œil à ce qui se passe lorsqu'une identité est vérifiée sans vérifier au préalable que le demandeur est bien le propriétaire du compte.

Liste des noms d'utilisateur et son impact sur l'anonymat

Ce problème est mieux illustré visuellement. Problème:

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Est-ce que tu vois? Faites attention au message « Aucun utilisateur n'est enregistré avec cette adresse e-mail ». Le problème se pose évidemment si un tel site confirme disponibilité utilisateur enregistré avec cette adresse e-mail. Bingo – vous venez de découvrir le fétichisme porno de votre mari/patron/voisin !

Bien sûr, la pornographie est un exemple assez emblématique de l’importance de la vie privée, mais les dangers liés à l’association d’un individu à un site Web spécifique sont bien plus vastes que la situation potentiellement délicate décrite ci-dessus. L’un des dangers est l’ingénierie sociale ; Si l’attaquant parvient à associer une personne au service, il disposera alors d’informations qu’il pourra commencer à utiliser. Par exemple, il peut contacter une personne se faisant passer pour le représentant d'un site Internet et demander des informations complémentaires dans le but de commettre hameçonnage.

De telles pratiques soulèvent également le danger d’une « énumération des noms d’utilisateur », par laquelle on peut vérifier l’existence d’un ensemble complet de noms d’utilisateur ou d’adresses e-mail sur un site Web en effectuant simplement des requêtes de groupe et en examinant les réponses. Avez-vous une liste des adresses e-mail de tous les employés et quelques minutes pour rédiger un script ? Alors vous voyez quel est le problème !

Quelle est l’alternative ? En fait, c’est assez simple et merveilleusement implémenté dans Entropay:

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Ici, Entropay ne divulgue absolument rien sur l'existence d'une adresse email dans son système à quelqu'un qui ne possède pas cette adresse... Si tu propre cette adresse et elle n'existe pas dans le système, alors vous recevrez un email comme celui-ci :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Bien sûr, il peut y avoir des situations acceptables dans lesquelles quelqu'un penseque vous avez enregistré sur le site. mais ce n'est pas le cas, ou je l'ai fait depuis une autre adresse email. L'exemple ci-dessus gère bien les deux situations. Bien évidemment, si l'adresse correspond, vous recevrez un email facilitant la réinitialisation de votre mot de passe.

La subtilité de la solution choisie par Entropay est que la vérification de l'identification est effectuée selon email avant toute vérification en ligne. Certains sites demandent aux utilisateurs la réponse à une question de sécurité (plus d'informations ci-dessous) à comment la réinitialisation peut commencer ; cependant, le problème est que vous devez répondre à la question tout en fournissant une certaine forme d'identification (e-mail ou nom d'utilisateur), ce qui rend alors presque impossible de répondre intuitivement sans révéler l'existence du compte de l'utilisateur anonyme.

Avec cette approche, il y a un peu diminution de la convivialité car si vous essayez de réinitialiser un compte inexistant, il n'y a pas de retour immédiat. Bien sûr, c'est tout l'intérêt de l'envoi d'un e-mail, mais du point de vue d'un véritable utilisateur final, s'il saisit une mauvaise adresse, il ne le saura que pour la première fois lorsqu'il recevra l'e-mail. Cela peut provoquer quelques tensions de sa part, mais c’est un petit prix à payer pour un processus aussi rare.

Autre remarque, légèrement hors sujet : les fonctions d'aide à la connexion qui révèlent si un nom d'utilisateur ou une adresse email sont corrects ont le même problème. Répondez toujours à l'utilisateur avec un message « Votre combinaison nom d'utilisateur et mot de passe n'est pas valide » plutôt que de confirmer explicitement l'existence des informations d'identification (par exemple, « le nom d'utilisateur est correct, mais le mot de passe est incorrect »).

Envoi du mot de passe de réinitialisation ou envoi de l'URL de réinitialisation

Le prochain concept dont nous devons discuter est de savoir comment réinitialiser votre mot de passe. Il existe deux solutions populaires :

  1. Générer un nouveau mot de passe sur le serveur et l'envoyer par email
  2. Envoyez un e-mail avec une URL unique pour faciliter le processus de réinitialisation

Malgré de nombreux guides, le premier point ne doit jamais être utilisé. Le problème, c'est que cela signifie qu'il y a mot de passe stocké, que vous pouvez consulter et réutiliser à tout moment ; il a été envoyé via un canal non sécurisé et reste dans votre boîte de réception. Il est probable que les boîtes de réception soient synchronisées entre les appareils mobiles et le client de messagerie, et qu'elles soient également stockées en ligne dans le service de messagerie Web pendant très longtemps. Le fait est que une boîte aux lettres ne peut pas être considérée comme un moyen fiable de stockage à long terme.

Mais à côté de cela, le premier point pose un autre problème sérieux : il simplifie au maximum bloquer un compte avec une intention malveillante. Si je connais l'adresse e-mail d'une personne possédant un compte sur un site Web, je peux la bloquer à tout moment en réinitialisant simplement son mot de passe ; Il s’agit d’une attaque par déni de service servie sur un plateau d’argent ! C'est pourquoi la réinitialisation ne doit être effectuée qu'après vérification réussie des droits du demandeur sur celle-ci.

Lorsque nous parlons d'une URL de réinitialisation, nous entendons l'adresse d'un site Web qui est unique à ce cas particulier du processus de réinitialisation. Bien sûr, il doit être aléatoire, il ne doit pas être facile à deviner et il ne doit contenir aucun lien externe vers le compte facilitant sa réinitialisation. Par exemple, l'URL de réinitialisation ne doit pas simplement être un chemin tel que "Reset/?username=JohnSmith".

Nous souhaitons créer un jeton unique qui peut être envoyé par courrier sous forme d'URL de réinitialisation, puis comparé à l'enregistrement du serveur du compte de l'utilisateur, confirmant ainsi que le propriétaire du compte est, en fait, la même personne qui tente de réinitialiser le mot de passe. Par exemple, un jeton pourrait être "3ce7854015cd38c862cb9e14a1ae552b" et stocké dans une table avec l'ID de l'utilisateur effectuant la réinitialisation et l'heure à laquelle le jeton a été généré (plus d'informations ci-dessous). Lorsque l'e-mail est envoyé, il contient une URL du type « Reset/?id=3ce7854015cd38c862cb9e14a1ae552b », et lorsque l'utilisateur le télécharge, la page demande l'existence du jeton, après quoi elle confirme les informations de l'utilisateur et lui permet de modifier le mot de passe.

Bien sûr, puisque le processus ci-dessus permet (espérons-le) à l'utilisateur de créer un nouveau mot de passe, nous devons nous assurer que l'URL est chargée via HTTPS. Non, l'envoyer avec une requête POST via HTTPS ne suffit pas, cette URL de jeton doit utiliser la sécurité de la couche de transport afin que le nouveau formulaire de mot de passe ne puisse pas être attaqué MITM et le mot de passe créé par l'utilisateur a été transmis via une connexion sécurisée.

De plus, pour l'URL de réinitialisation, vous devez ajouter une limite de temps de jeton afin que le processus de réinitialisation puisse être terminé dans un certain intervalle, par exemple en une heure. Cela garantit que la fenêtre temporelle de réinitialisation est réduite au minimum afin que le destinataire de l'URL de réinitialisation ne puisse agir que dans cette très petite fenêtre. Bien entendu, l’attaquant peut relancer le processus de réinitialisation, mais il devra obtenir une autre URL de réinitialisation unique.

Enfin, nous devons nous assurer que ce processus est jetable. Une fois le processus de réinitialisation terminé, le jeton doit être supprimé afin que l'URL de réinitialisation ne soit plus fonctionnelle. Le point précédent est nécessaire pour s’assurer que l’attaquant dispose d’une très petite fenêtre pendant laquelle il peut manipuler l’URL de réinitialisation. De plus, bien sûr, une fois la réinitialisation réussie, le jeton n’est plus nécessaire.

Certaines de ces étapes peuvent sembler excessivement redondantes, mais elles n'interfèrent pas avec la convivialité et en fait améliorer la sécurité, même si dans des situations que nous espérons rares. Dans 99 % des cas, l'utilisateur activera la réinitialisation dans un délai très court et ne réinitialisera plus le mot de passe dans un avenir proche.

Rôle du CAPTCHA

Oh, CAPTCHA, la fonctionnalité de sécurité que nous aimons tous détester ! En fait, le CAPTCHA n'est pas tant un outil de protection qu'un outil d'identification - que vous soyez une personne ou un robot (ou un script automatisé). Son objectif est d'éviter la soumission automatique de formulaires, qui, bien entendu, может être utilisé comme une tentative de briser la sécurité. Dans le contexte des réinitialisations de mots de passe, CAPTCHA signifie que la fonction de réinitialisation ne peut pas être forcée pour soit spammer l'utilisateur, soit tenter de déterminer l'existence de comptes (ce qui, bien entendu, ne sera pas possible si vous suivez les conseils de la section sur vérification des identités).

Bien sûr, le CAPTCHA lui-même n’est pas parfait ; Il existe de nombreux précédents de « piratage » de logiciels et d'obtention de taux de réussite suffisants (60 à 70 %). De plus, il existe une solution présentée dans mon message à propos de Piratage CAPTCHA par des personnes automatisées, où vous pouvez payer des fractions de centime aux gens pour résoudre chaque CAPTCHA et atteindre un taux de réussite de 94 %. Autrement dit, il est vulnérable, mais il élève (légèrement) la barrière à l’entrée.

Jetons un coup d'œil à l'exemple PayPal :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Dans ce cas, le processus de réinitialisation ne peut tout simplement pas commencer tant que le CAPTCHA n'est pas résolu. théoriquement il est impossible d'automatiser le processus. En théorie.

Cependant, pour la plupart des applications Web, cela sera excessif et exactement représente une diminution de la convivialité - les gens n'aiment tout simplement pas le CAPTCHA ! De plus, le CAPTCHA est quelque chose auquel vous pouvez facilement revenir si nécessaire. Si le service commence à être attaqué (c'est là que la journalisation est utile, mais nous y reviendrons plus tard), alors l'ajout d'un CAPTCHA ne pourrait pas être plus simple.

Questions et réponses secrètes

Avec toutes les méthodes que nous avons envisagées, nous avons pu réinitialiser le mot de passe simplement en ayant accès au compte de messagerie. Je dis « juste », mais bien sûr, il est illégal d'accéder au compte de messagerie de quelqu'un d'autre. il faut être un processus complexe. Cependant ce n'est pas toujours le cas.

En fait, le lien ci-dessus concernant le piratage du compte Yahoo! de Sarah Palin. sert deux objectifs ; Premièrement, cela illustre à quel point il est facile de pirater (certains) comptes de messagerie, et deuxièmement, cela montre à quel point de mauvaises questions de sécurité peuvent être utilisées à des fins malveillantes. Mais nous y reviendrons plus tard.

Le problème avec la réinitialisation de mot de passe à XNUMX % par courrier électronique est que l'intégrité du compte du site que vous essayez de réinitialiser dépend à XNUMX % de l'intégrité du compte de messagerie. Toute personne ayant accès à votre courrier électronique a accès à n'importe quel compte qui peut être réinitialisé par simple réception d'un e-mail. Pour de tels comptes, le courrier électronique est la « clé de toutes les portes » de votre vie en ligne.

Une façon de réduire ce risque consiste à mettre en œuvre un modèle de questions et réponses de sécurité. Vous les avez sans doute déjà vu : choisissez une question à laquelle vous seul pouvez répondre avoir connaissez la réponse, puis lorsque vous réinitialiserez votre mot de passe, il vous sera demandé. Cela renforce la certitude que la personne qui tente la réinitialisation est bien le propriétaire du compte.

Revenons à Sarah Palin : l'erreur était que les réponses à sa/ses questions de sécurité pouvaient être facilement trouvées. Surtout lorsque vous êtes une personnalité publique aussi importante, les informations sur le nom de jeune fille de votre mère, ses antécédents scolaires ou l'endroit où quelqu'un a pu vivre dans le passé ne sont pas si secrètes. En fait, presque tout le monde peut en trouver la plupart. Voici ce qui est arrivé à Sarah :

Le pirate informatique David Kernell a accédé au compte de Palin en trouvant des détails sur ses antécédents, tels que son université et sa date de naissance, puis en utilisant la fonction de récupération de mot de passe oublié de Yahoo!.

Tout d'abord, il s'agit d'une erreur de conception de la part de Yahoo! — en posant des questions aussi simples, l'entreprise a essentiellement saboté la valeur de la question de sécurité, et donc la protection de son système. Bien sûr, réinitialiser les mots de passe d'un compte de messagerie est toujours plus difficile puisque vous ne pouvez pas prouver la propriété en envoyant un e-mail au propriétaire (sans avoir une deuxième adresse), mais heureusement, il n'y a pas beaucoup d'utilisations pour créer un tel système aujourd'hui.

Revenons aux questions de sécurité : il existe une option permettant à l'utilisateur de créer ses propres questions. Le problème est que cela entraînera des questions terriblement évidentes :

De quelle couleur est le ciel?

Des questions qui mettent les gens mal à l'aise lorsqu'une question de sécurité est utilisée pour identifier personnes (par exemple, dans un centre d'appels) :

Avec qui ai-je couché à Noël ?

Ou des questions franchement stupides :

Comment épelez-vous « mot de passe » ?

Lorsqu’il s’agit de questions de sécurité, les utilisateurs doivent être sauvés d’eux-mêmes ! En d’autres termes, la question de sécurité doit être déterminée par le site lui-même, ou mieux encore, posée série questions de sécurité parmi lesquelles l'utilisateur peut choisir. Et ce n'est pas facile de choisir un; idéalement, l'utilisateur devrait sélectionner deux questions de sécurité ou plus au moment de l'enregistrement du compte, qui sera ensuite utilisé comme deuxième canal d'identification. Avoir plusieurs questions augmente la confiance dans le processus de vérification et offre également la possibilité d'ajouter du caractère aléatoire (n'affichant pas toujours la même question), et fournit également un peu de redondance au cas où l'utilisateur réel aurait oublié le mot de passe.

Qu'est-ce qu'une bonne question de sécurité ? Ceci est influencé par plusieurs facteurs :

  1. Il doit être bref — la question doit être claire et sans ambiguïté.
  2. La réponse doit être spécifique — nous n'avons pas besoin d'une question à laquelle une personne peut répondre différemment
  3. Les réponses possibles devraient être divers - demander la couleur préférée de quelqu'un donne un très petit sous-ensemble de réponses possibles
  4. rechercher la réponse doit être complexe - si la réponse peut être facilement trouvée tout (rappelez-vous les gens occupant des postes élevés), alors il est mauvais
  5. La réponse doit être permanente avec le temps - si vous demandez quel est le film préféré de quelqu'un, un an plus tard, la réponse peut être différente

Il se trouve qu’il existe un site Internet dédié aux bonnes questions appelé GoodSecurityQuestions.com. Certaines questions semblent plutôt bonnes, d'autres ne réussissent pas certains des tests décrits ci-dessus, notamment le test de « facilité de recherche ».

Permettez-moi de vous montrer comment PayPal met en œuvre les questions de sécurité et, en particulier, les efforts déployés par le site en matière d'authentification. Ci-dessus, nous avons vu la page pour démarrer le processus (avec un CAPTCHA), et ici nous montrerons ce qui se passe après avoir entré votre adresse e-mail et résolu le CAPTCHA :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
En conséquence, l'utilisateur reçoit la lettre suivante :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Jusqu’à présent tout est tout à fait normal, mais voici ce qui se cache derrière cette URL de réinitialisation :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Les questions de sécurité entrent alors en ligne de compte. En fait, PayPal vous permet également de réinitialiser votre mot de passe en vérifiant votre numéro de carte de crédit. Il existe donc un canal supplémentaire auquel de nombreux sites n'ont pas accès. Je ne peux tout simplement pas changer mon mot de passe sans répondre les deux question de sécurité (ou ne pas connaître le numéro de carte). Même si quelqu'un détournait ma messagerie, il ne pourrait pas réinitialiser le mot de passe de mon compte PayPal à moins de connaître un peu plus d'informations personnelles sur moi. Quelle information? Voici les options de questions de sécurité proposées par PayPal :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
La question de l'école et de l'hôpital est peut-être un peu incertaine en termes de facilité de recherche, mais les autres ne sont pas trop mauvaises. Toutefois, pour renforcer la sécurité, PayPal exige une identification supplémentaire pour changements réponses aux questions de sécurité :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
PayPal est un exemple assez utopique de réinitialisation de mot de passe sécurisée : il implémente un CAPTCHA pour réduire le risque d'attaques par force brute, nécessite deux questions de sécurité, puis nécessite un autre type d'identification complètement différent juste pour modifier les réponses, et ce après que l'utilisateur est déjà connecté. Bien sûr, c'est exactement ce que nous attendu depuis PayPal ; est une institution financière qui gère de grosses sommes d’argent. Cela ne signifie pas que chaque réinitialisation de mot de passe doit suivre ces étapes (la plupart du temps, c'est excessif), mais c'est un bon exemple pour les cas où la sécurité est une affaire sérieuse.

L'avantage du système de questions de sécurité est que si vous ne l'avez pas implémenté immédiatement, vous pouvez l'ajouter ultérieurement si le niveau de protection des ressources l'exige. Un bon exemple en est Apple, qui n'a mis en œuvre ce mécanisme que récemment. [article écrit en 2012]. Une fois que j'ai commencé à mettre à jour l'application sur mon iPad, j'ai vu la demande suivante :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Ensuite, j'ai vu un écran où je pouvais sélectionner plusieurs paires de questions et réponses de sécurité, ainsi qu'une adresse e-mail de secours :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Quant à PayPal, les questions sont présélectionnées et certaines d’entre elles sont en fait plutôt bonnes :

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1
Chacune des trois paires question/réponse représente un ensemble différent de questions possibles. Il existe donc de nombreuses façons de configurer un compte.

Un autre aspect à considérer pour répondre à votre question de sécurité est le stockage. Avoir une base de données en texte brut dans la base de données pose presque les mêmes menaces qu'un mot de passe, à savoir que l'exposition de la base de données révèle instantanément la valeur et met non seulement l'application en danger, mais potentiellement des applications complètement différentes utilisant les mêmes questions de sécurité (là encore question sur les baies d'açaï). Une option est le hachage sécurisé (un algorithme puissant et un sel cryptographiquement aléatoire), mais contrairement à la plupart des cas de stockage de mots de passe, il peut y avoir une bonne raison pour que la réponse soit visible sous forme de texte brut. Un scénario typique est la vérification de l’identité par un opérateur téléphonique en direct. Bien entendu, le hachage est également applicable dans ce cas (l'opérateur peut simplement saisir la réponse nommée par le client), mais dans le pire des cas, la réponse secrète doit être située à un certain niveau de stockage cryptographique, même s'il s'agit simplement d'un cryptage symétrique. . Résumer: traitez les secrets comme des secrets !

Un dernier aspect des questions et réponses de sécurité est qu’elles sont plus vulnérables à l’ingénierie sociale. Essayer d'extraire directement le mot de passe du compte de quelqu'un d'autre est une chose, mais entamer une conversation sur sa formation (une question de sécurité populaire) en est une complètement différente. En fait, vous pouvez très bien communiquer avec quelqu’un sur de nombreux aspects de sa vie qui pourraient poser une question secrète sans éveiller de soupçons. Bien sûr, l’intérêt même d’une question de sécurité est qu’elle concerne l’expérience de vie d’une personne, donc elle est mémorable, et c’est là que réside le problème : les gens adorent parler de leurs expériences de vie ! Vous ne pouvez pas faire grand-chose à ce sujet, seulement si vous choisissez ces options de questions de sécurité de manière à ce qu'elles soient moindre pourrait probablement être retiré par l’ingénierie sociale.

[À suivre.]

Comme la publicité

VDSina des offres fiables serveurs avec paiement quotidien, chaque serveur est connecté à un canal Internet de 500 Mégabits et est protégé gratuitement contre les attaques DDoS !

Tout ce que vous avez toujours voulu savoir sur la réinitialisation sécurisée du mot de passe. Partie 1

Source: habr.com