Question:
Comment puis-je réutiliser mon mot de passe tout en protégeant le mot de passe s'il est exposé à partir d'une seule source?
Sinder
2019-08-07 16:41:40 UTC
view on stackexchange narkive permalink

Je sais que tous les serveurs devraient au moins stocker mes identifiants sous forme de hash (mot de passe + sel) + salt , avec un une fonction hash connue et un salt unique pour moi, généré à partir d'une source sécurisée et bien connue.

Le problème est que les serveurs devraient faire cela mais non, donc en tant qu'utilisateur je ne peux pas leur faire confiance.

Je cherche ce que je peux faire avec mon mot de passe avant de l'envoyer au serveur, de sorte que si le serveur stocke du texte en clair par exemple, il ne compromettra pas la sécurité de mon mot de passe sur d'autres serveurs.

Je pensais envoyer hash (mot de passe + service) aux serveurs avec le service étant "Facebook" ou "Amazon" par exemple. De cette façon, si quelqu'un obtient le hash (mot de passe + service) stocké en texte brut à partir de ce service, c'est comme s'il avait trouvé le hachage de mon mot de passe + le sel, unique pour ce service.

Je vois déjà un problème avec cette idée: quelqu'un pourrait créer une table arc-en-ciel pour chaque service, rendant inutile l'utilisation du service comme un sel.

Je connais la règle ne pas inventer votre propre crypto / protocole , c'est pourquoi je veux savoir s'il existe un protocole connu pour un client se sécurisant?

Le fait que vous souhaitiez réutiliser le même mot de passe pour Facebook et Amazon est le plus grand péché.Utilisez plutôt un gestionnaire de mots de passe hors ligne et créez un mot de passe vraiment aléatoire pour chaque site Web.En cas de fuite, seul ce site Web est affecté.
Je suggérerais une reformulation de votre question et du problème que vous essayez de résoudre: "Comment puis-je réutiliser mon mot de passe tout en protégeant le mot de passe s'il est exposé à partir d'une seule source?"
Je doute que quiconque reconnaisse le hachage comme étant tout sauf absurde, et à moins que vous ne soyez une cible prioritaire, ils ne passeraient pas le temps à essayer de déchiffrer votre mot de passe alors qu'ils pourraient en essayer des milliers d'autres qui ne sont pas aussi sécurisés
À titre de note, je recommanderais de réutiliser les mots de passe uniquement dans des contextes où le mot de passe obtenu illicitement ne causera pas beaucoup plus de dommages s'il est utilisé pour deux comptes que s'il est utilisé pour un.... Le seul véritable exemple qui me vient à l'esprit est certains MMORPG, qui n'autorisent qu'un nombre limité de personnages par compte et n'ont aucun moyen d'augmenter le plafond.
Je suis choqué que cette question ait 21 votes positifs dans un forum de sécurité.
Huit réponses:
MechMK1
2019-08-07 17:02:43 UTC
view on stackexchange narkive permalink

Vous essayez de résoudre un problème que vous ne devriez pas avoir en premier lieu: Réutilisation du mot de passe

Le concept est simple. Vous pensez à un "bon" mot de passe et vous l'utilisez pour tout. Votre compte bancaire, vos achats en ligne, votre fournisseur de messagerie électronique, etc.

Le problème est que s'il est divulgué par l'un d'entre eux, tous les autres comptes sont potentiellement en danger. C'est un risque totalement inutile!

Et mon schéma suggéré?

Vous avez vous-même dit de ne pas réinventer la roue. Si vous deviez faire cela, vous devriez soit écrire une application qui calcule les hachages pour vous, soit les calculer vous-même et les stocker.

Il existe déjà des applications qui résolvent le problème du stockage des informations d'identification, et ils font un bien meilleur travail: les gestionnaires de mots de passe hors ligne

Pourquoi les gestionnaires de mots de passe hors ligne sont-ils meilleurs?

Parce qu'ils génèrent des mots de passe vraiment aléatoires et uniques. Il n'est pas nécessaire d'intégrer la cryptographie dans ce domaine. Pas besoin de lier mon mot de passe pour mon compte e-mail à celui-ci contenant en quelque sorte la chaîne "gmail.com".

Parce que SN2 \ ZJ2Cw92DQx ^ {$ OmqAC_P'xR | Md) [ est certainement un meilleur mot de passe que la somme MD5 de hunter2 + gmail.com (c'est 01f9a94a0febf268495d08f5960e7f05 , au cas où vous vous poseriez la question).

Pas forcément vrai que la réutilisation du mot de passe est un "problème de sécurité", il y a aussi [LessPass] (https://blog.lesspass.com/lesspass-how-it-works-dde742dd18a4).Vous utilisez toujours un mot de passe principal pour déverrouiller votre base de données de mots de passe.En exploitant une fonction très très très difficile à inverser, on peut générer des mots de passe sûrs.Il s'agit plus d'un compromis entre la fuite d'un mot de passe principal et le fait de ne pas avoir à stocker vos mots de passe dans un fichier (qui peut également être volé et enregistré par clé principale).
@Gizmo [Quels sont les inconvénients des générateurs de mots de passe sans état?] (Https://security.stackexchange.com/q/214301/68614)
Si un attaquant a la clé principale et connaît l'algorithme utilisé, tous les mots de passe sont également compromis (c'est pourquoi j'utilise toujours les applications hors ligne, si quelqu'un peut enregistrer mon PC au clavier, quelqu'un peut également extraire un fichier de base de données de mots de passe).Se souvenir aussi des choses est toujours une chose, par ex.si un site Web change de domaine ou si vous devez réinitialiser votre mot de passe (combien de fois l'ai-je réinitialisé?).Certains sites Web n'acceptent également que des jeux de caractères spécifiques.
@Gizmo Si vous regardez les questions traitant des gestionnaires de mots de passe sans état, vous verrez exactement les mêmes points soulevés.Un mot de passe vraiment aléatoire est le * meilleur * type de mot de passe, et toute raison de ne pas utiliser un mot de passe vraiment aléatoire doit être vraiment, vraiment bonne.
@user1717828, et une présentation de 16 chiffres hexadécimaux seraient un très bon mot de passe s'il était aléatoire, mais comme il ne s'agit que d'un hachage faible d'un mot de passe plutôt faible, c'est quelque peu suspect.(btw, `4755 ...` est le hachage de `hunter2 + gmail.com \ n`, avec une nouvelle ligne;) Avez-vous utilisé` echo ... |md5sum`?`echo` ajoute toujours une nouvelle ligne à la fin,` printf ... |md5sum` serait la solution dans ce cas.)
* Pourquoi les gestionnaires de mots de passe hors ligne sont-ils pires?- Utilisable uniquement sur un seul appareil, ou difficile à synchroniser entre plusieurs appareils (car il est hors ligne) - et si vous perdez le fichier, tous vos mots de passe ont disparu et vous ne pouvez même pas réinitialiser votre mot de passe, si vous l'avez également utilisé pour votre e-compte de messagerie.** Je ne dis pas que vous ne devriez pas en utiliser, mais vous devez également connaître les inconvénients **
@Falco: 1. Garder vos fichiers sauvegardés est de toute façon une bonne pratique.2. La synchronisation des mots de passe peut également être résolue en gardant la base de données synchronisée.3. Le schéma d'OP ne résout aucun de ces problèmes non plus.
La plupart des solutions de synchronisation d'@MechMK1 sont résolues par une base de données en ligne, tout comme de nombreuses solutions de sauvegarde fiables.donc ce n'est plus un gestionnaire de mots de passe hors ligne - car si je craque le mot de passe pour accéder à votre base de données et à votre mot de passe principal, je peux accéder à tous vos mots de passe.- Le schéma des OP résout le problème de la perte du fichier de mots de passe, car il n'y a pas de fichier seulement un algorithme qui peut être reproduit.Et il est immédiatement utilisable sur n'importe quel appareil, où vous pouvez accéder au générateur de mots de passe webapp.
@Falco Je peux utiliser mon propre serveur, soutenu par un certificat client.Je suis tout aussi en sécurité et je n'ai pas à m'inquiéter de l'extérieur.De plus, ce que fait OP est essentiellement d'ajouter un tour de MD5 ou SHA1 - et vous devez * toujours * vous souvenir de votre mot de passe.Si vous ne le faites pas, vous êtes foutu de toute façon.
@MechMK1 En outre, les gestionnaires de mots de passe hors ligne finissent souvent par violer les règles de mot de passe des sites Web et vous finissez donc par devoir suivre ces mots de passe étranges.Certains sites exigent également des changements de mot de passe à des fréquences différentes de celles d'autres sites.Les gestionnaires de mots de passe sont meilleurs.
Vipul Nair
2019-08-07 16:58:45 UTC
view on stackexchange narkive permalink

La solution établie pour ce problème consiste à utiliser des mots de passe différents pour différents sites Web avec un gestionnaire de mots de passe. De cette façon, vous n'aurez pas à réinventer la roue.

Je sais que la règle n'invente pas votre propre crypto / protocole, c'est pourquoi je veux savoir s'il existe un protocole connu pour un client se sécurise?

Tous les problèmes ne doivent pas être résolus par une solution technique trop compliquée.
Ne pas réutiliser le mot de passe est une solution élégante.

Je dirais qu'un Password-Manager est une ** solution technique et assez compliquée **, juste une solution que vous n'avez pas à construire vous-même.
@Falco "Ne pas réutiliser le mot de passe est une solution élégante"
Comment est-ce que tu fais ça?Personnellement, je ne me souviens pas de 50 mots de passe indépendants différents.Ne pas réutiliser les mots de passe sans un outil technique compliqué est tout à fait impossible pour l'humain moyen, mais ce serait élégant si vous pouviez le faire.
Martin Bonner supports Monica
2019-08-08 21:15:13 UTC
view on stackexchange narkive permalink

J'utilisais une extension de navigateur qui faisait à peu près exactement ce que vous suggériez. (Il a fallu mon mot de passe réel + l'URL du site, les a hachés ensemble et a généré un mot de passe à partir de cela). C'était génial ... jusqu'à ce qu'eBay me fasse changer mon mot de passe parce qu'ils avaient divulgué leur base de données. À ce moment-là, je devais me souvenir quels sites utilisaient un mot de passe et lequel un autre.

Le problème supplémentaire est que si un site avait stocké mon "mot de passe" en texte brut, un attaquant aurait pu reconnaître comment mon mot de passe a été généré et l'a déchiffré.

Le dernier problème, ce sont des sites comme amazon.de, amazon.co.uk et amazon.com qui doivent tous partager un mot de passe.

Je suis passé à un gestionnaire de mots de passe (LastPass) sécurisé avec un mot de passe fort, généré aléatoirement (diceware) (et 2FA sur mes comptes importants).

Pourquoi utiliser l'étape supplémentaire de Diceware lorsque Lastpass génère des mots de passe aléatoires?
C'est probablement ainsi qu'il a généré le mot de passe principal.Certains peuvent trouver les mots de passe des dés plus faciles à retenir que ceux générés par LastPass, et vous devez vous souvenir de votre mot de passe principal.
@Carey.Scott a exactement raison
@MartinBonner Ah, d'accord.Je n'avais pas réalisé que vous parliez du mot de passe principal.Diceware est parfaitement logique pour cela.
user29925
2019-08-08 01:42:27 UTC
view on stackexchange narkive permalink

Je sais que la règle n'invente pas votre propre crypto / protocole, c'est pourquoi je veux savoir s'il existe un protocole connu pour un client se sécurisant?

Le le problème que vous rencontrez dans l'espace d'ingénierie de sécurité est connu sous le nom de modèle "Greedy Password" . Chaque site Web que vous visitez pense que c'est le seul site sur l'ensemble du Web et pense qu'il est acceptable de vous demander de gérer / mémoriser des mots de passe complexes. Voir également Engineering Security de Peter Gutmann.

Vous pouvez faire comme @ MechMK1 le suggère et utiliser Password Manager. Le problème est que cela déplace simplement le problème de mot de passe et le rend un peu plus facile à gérer. Vous devez toujours utiliser un vrai mot de passe à un moment donné. Dans un cadre de gestion des risques, vous avez réduit le risque mais pas éliminé.

Vous devez utiliser des mots de passe jetables pour chaque compte non critique. J'utilise personnellement Strong Random Password Generator pour générer des mots de passe aléatoires de 32 octets pour chaque site gourmand. Humoureusement - d'une manière morbide - certains sites ne peuvent pas gérer les mots de passe aléatoires longs ou complexes. Certains sites vous obligent à fournir un mot de passe plus faible.

Une fois que vous vous connectez à un site, ils vous donnent un jeton (cookie) pour le site, vous n'avez plus besoin du mot de passe. Si vous avez besoin de ressaisir le mot de passe, laissez le navigateur le saisir à partir du magasin d'informations d'identification.

Si le mot de passe n'est pas dans le magasin d'informations d'identification, alors passez simplement par le processus "Password Recover Password". Le site vous enverra un e-mail et vous pourrez utiliser le processus pour définir un autre mot de passe jetable. Je l'utilise tout le temps pour les cookies expirés.

Le lien envoyé dans l'e-mail du processus de récupération est appelé "URL d'authentification" . Je pense que Python utilise un package similaire pour authentifier. Voir également Engineering Security de Peter Gutmann.

Plusieurs comptes seront suffisamment importants pour que vous ayez besoin d'un vrai mot de passe. Par exemple, votre mot de passe d'entreprise et le mot de passe de votre compte de messagerie {Gmail | Yahoo | Hotmail | Apple | Microsoft | etc}. Pour eux, utilisez un mot de passe fort et notez-le pour qu'il ne soit ni perdu ni oublié. Ensuite, mettez le mot de passe dans votre portefeuille ou votre sac à main. Mieux encore, configurez 2FA pour les comptes critiques afin que l'attaquant ait besoin à la fois de votre mot de passe + OTP / token.

Certains services, comme Spotify, envisagent de supprimer les mots de passe tous ensemble. Ils adaptent le «processus de récupération de mot de passe» pour l'authentification. Lorsque vous souhaitez vous connecter, vous entrez votre adresse e-mail et ils vous envoient un lien pour un jeton. Vous n'avez plus besoin d'un mot de passe - vous avez juste besoin d'un compte de messagerie.

La menace numéro un est l'attaquant du réseau, et ils n'ont pas réussi à atteindre via votre moniteur et à lire vos post-it. S'ils pénètrent dans votre gestionnaire de mots de passe ou dans la banque d'informations d'identification de votre navigateur, laissez-les collecter autant de mots de passe jetables qu'ils le souhaitent.


Je cherche ce que je peux faire avec mon mot de passe avant l'envoyer au serveur ... je pensais envoyer du hash (mot de passe + service) aux serveurs

Si vous aimez faire ce genre de choses (analyse de risque, modélisation d'attaques, etc. ), alors vous devriez lire Engineering Security de Peter Gutmann. Sa thèse de doctorat a étudié la sécurité et le comportement des utilisateurs. Son livre est un traitement pour construire des systèmes plus sûrs et plus sécurisés.

Avez-vous fait allusion à ne pas utiliser de gestionnaire de mots de passe, mais à pousser les gens à utiliser le stockage des informations d'identification du navigateur?
b0fh
2019-08-08 14:59:22 UTC
view on stackexchange narkive permalink

Je ne répondrai qu'aux aspects cryptographiques de votre raisonnement; pour des discussions sur les implications de sécurité d'avoir un mot de passe maître sans état, voyez d'autres réponses.

Conceptuellement, votre idée est bonne. Ce serait correct dans le modèle Oracle Random, où les fonctions de hachage ont des sorties indépendantes pour une entrée partiellement identique. Cependant, dans le monde réel, nos fonctions de hachage ont des limitations et peuvent être vulnérables aux attaques d'extension.

Le risque, ici, serait qu'un adversaire vole la sortie H (key + service1 ) pour un service compromis, et trouvez un moyen plus efficace de générer H (key + service2) , qui ne nécessite pas de récupérer complètement le password .

Pour cette raison, nous n'utiliserions pas hash (key + service / salt) comme primitive. Au lieu de cela, nous utiliserions une fonction Code d'authentification de message, MAC (clé, service) . Les fonctions MAC sont spécialement conçues pour éviter ce problème.

Remarque: l'attaque par extension de longueur est possible pour les constructions MD et non pour les constructions en éponge.Voir cette question de [Crypto] (https://crypto.stackexchange.com/q/47415/18298)
Maxime
2019-08-07 17:16:30 UTC
view on stackexchange narkive permalink

La question que vous devez vous poser est qu'est-ce que vous essayez de réaliser?

Vous avez dit que vous vouliez avoir un mot de passe unique, avec lequel vous hacherez:

Hash ( Password + Service), le hachage résultant, en fonction de l'algorithme utilisé (indice: ne créez pas votre propre algorithme), aura probablement une longueur de 32 caractères.

Le premier problème est de voir: que faire si le site Web fait ne vous permet pas d'utiliser un mot de passe de 32 caractères?

Deuxième problème: prévoyez-vous de vous souvenir de ces mots de passe longs pour chaque site Web différent? Si vous prévoyez de les enregistrer quelque part, utiliser un gestionnaire de mots de passe pour créer un mot de passe unique et aléatoire de 10 caractères, que vous n'utiliserez pour aucun autre site Web, est à la fois plus facile et plus sûr

Si vous prévoyez de en se souvenant de ces mots de passe de 32 caractères, il est toujours plus facile de se souvenir d'un mot de passe unique de 10 caractères.

Pour revenir à ma question initiale: qu'essayez-vous de réaliser?

Salage et hachage le mot de passe dans la base de données est une couche de sécurité de sorte que:

  • si la base de données est compromise, le pirate aura du mal à trouver votre mot de passe d'origine et ainsi il ne pourra pas compromettre vos autres comptes sur d'autres services si vous a utilisé le même mot de passe (ou de petites variantes) sur chaque site Web.
  • mais si vous utilisez un mot de passe différent sur chaque site Web / service, même si quelqu'un obtient votre mot de passe pour un site, il ne peut pas le faire beaucoup avec elle, donc vous ne devriez pas vous en soucier

Si l'attaquant a silencieusement compromis le service que vous utilisez et a un accès complet, il peut simplement st eal votre sessionID pour vous impersonnaliser, il peut modifier le comportement de l'application afin que votre mot de passe en texte clair lui soit envoyé avant le hachage, il peut changer votre mot de passe haché dans la base de données en son propre mot de passe haché, se connecter avec son mot de passe puis modifier le mot de passe dans la base de données à votre mot de passe haché ... il possède essentiellement le système et VOUS ne pouvez rien y faire.

En hachant et salant le mot de passe, le service / site que vous utilisez n'essaye pas de les protéger, ils essaient de protéger vos autres comptes au cas où ils seraient compromis.

* "le hachage résultant, en fonction de l'algorithme utilisé \ [... \] sera probablement de 32 caractères." * Non. Il peut faire 128 * bits *.Exprimé sous la forme d'une chaîne de chiffres hexadécimaux, d'une longueur de 32 caractères, avec des caractères de l'ensemble \ [0-9a-f \].Exprimée en Base64, la même valeur exacte est représentée par 22 caractères sur un jeu de 64 caractères.En binaire, imprimé comme 0 et 1, il serait représenté comme 128 caractères sur un ensemble de deux.Dans chaque cas, * c'est toujours exactement la même valeur! * C'est juste représenté différemment.Changer la représentation ne change rien du point de vue cryptographique.
J'essayais juste de souligner que MÊME si c'était une bonne idée (et ce n'est pas une bonne idée), vous pourriez avoir des problèmes en utilisant le hachage comme mot de passe.
Alan Dev
2019-08-10 13:17:15 UTC
view on stackexchange narkive permalink

Comme d'autres l'ont dit, vous ne devriez pas réutiliser votre mot de passe, mais j'ajouterais également que vous ne devriez pas réutiliser votre identifiant. Si la création est sous votre contrôle, utilisez quelque chose d'aléatoire pour chacun d'eux: -

Serveur 1, ID: bluecanary81 Mot de passe: isoudi £ &8r902) 38rficsu78
Serveur 2, ID: tuliptop19 Mot de passe: uiouew893 £ * (2dferff $ () _ 5

etc., etc.

Si le système insiste sur une adresse e-mail, obtenez votre propre domaine et utilisez bluecanary81@mydomain.com pour le serveur 1, tuliptop19 @ mydomain.com pour le serveur 2 etc.

De cette façon, même si quelqu'un obtient vos informations d'identification, il n'y a aucune exposition sur aucun autre système.

Pourquoi pas?L'identité n'est traditionnellement pas présumée être un secret.De plus, le même nom d'utilisateur permet la reconnaissance sur toutes les plateformes.Si vous avez des mots de passe uniques, ce n'est pas un problème de sécurité.
Jamie Kitson
2019-10-16 16:07:24 UTC
view on stackexchange narkive permalink

https://getvau.lt/ semble répondre exactement à votre question, il hachera votre mot de passe avec le nom du site en vous donnant un mot de passe unique pour chaque site tout en vous permettant de ne vous souvenir que un.

Personnellement, je recommanderais toujours un gestionnaire de mots de passe, mais si vous insistez ...

[Quels sont les inconvénients des générateurs de mots de passe sans état?] (Https://security.stackexchange.com/questions/214301/what-are-the-cons-of-stateless-password-generators)


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 4.0 sous laquelle il est distribué.
Loading...