Question:
Facebook stocke-t-il des mots de passe en texte brut?
Michał Šrajer
2014-03-16 21:58:32 UTC
view on stackexchange narkive permalink

J'étais sur le point de réinitialiser mon mot de passe Facebook et j'ai obtenu cette erreur:

Votre nouveau mot de passe est trop similaire à votre mot de passe actuel. Veuillez essayer un autre mot de passe.

J'ai supposé que Facebook ne stockait que les hachages de mots de passe, mais si oui, comment peuvent-ils mesurer la similitude des mots de passe? Cela devrait être impossible avec une bonne fonction de hachage, non?

La question est - comment est-ce possible et quelles sont les implications?

Merci d'avance.

Je n'ai pas précisé - je n'ai pas été invité à fournir l'ancien et le nouveau mot de passe. Il s'agissait de la procédure de "réinitialisation du mot de passe", dans laquelle je ne fournis qu'un nouveau mot de passe. La plupart des réponses au doublon suggéré ne sont donc pas applicables.

UPDATE2

mystère résolu - voir commentaire (de l'ingénieur Facebook)

Cela a été répondu ci-dessous et confirmé par quelqu'un qui a vu le code! Plus besoin de spéculation.
J'ai remarqué que de nombreux sites Web disent des choses comme «vous avez déjà utilisé ce mot de passe auparavant». Ainsi, certains sites ne se contentent pas de comparer le dernier. Je suppose que vous pourriez appeler cela une mesure de sécurité, mais je ne peux pas m'empêcher de penser que c'est inutile.
Une sorte de doublon: http://security.stackexchange.com/questions/47840/password-security (puisque vous avez exclu un mot de passe récemment entré, la plupart des réponses ne s'appliquent pas tout à fait parfaitement, mais certaines le font toujours, et l'un d'eux est assez proche de la première réponse ici)
"Est-ce que Facebook stocke des mots de passe en texte brut?"[Oui] (https://krebsonsecurity.com/2019/03/facebook-stored-hundreds-of-millions-of-user-passwords-in-plain-text-for-years/).
Six réponses:
Michał Šrajer
2014-03-16 22:33:04 UTC
view on stackexchange narkive permalink

Espérons et supposons que Facebook ne stocke que les hachages du mot de passe actuel (et éventuellement des mots de passe précédents).

Voici ce qu'ils peuvent faire:

  1. utilisateur définit le premier mot de passe sur "first" et fb stocke le hash ("first").

  2. plus tard, les utilisateurs réinitialisent le mot de passe et sont invités à fournir un nouveau mot de passe "First2"

  3. Facebook peut générer un tas de mots de passe (similaires au nouveau): ["First2", "first2", "firSt2", ... "first2", ... "first ", ...] et puis comparez le hachage de chacun avec le hachage stocké.

C'est la seule solution qui me vient à l'esprit. Un autre?

Cette réponse est comment Facebook le fait. Source: J'ai lu et modifié le code source pour la vérification du mot de passe.
[Pourquoi Facebook dérange-t-il?] (Http://security.stackexchange.com/questions/53658/why-does-facebook-bother-comparing-old-and-new-passwords)
En cas de hachage, ils doivent stocker (au moins) deux hachages, car ils acceptent les mots de passe ainsi que le mot de passe avec casse inversée. (KaCkE contre kAcKe)
Je pensais qu'un bon hachage était censé le faire, donc on est incapable de briller quoi que ce soit du hachage (changer un bit changera complètement le hachage)?
@TruthOf42 Il effectue une sorte d'attaque par force brute basée sur le nouveau mot de passe, n'inversant aucun hachage, ni ne comparant les hachages sauf pour tester leur égalité exacte.
@Anonymouse Je viens de relire: c'est faire une liste de mots de passe qui sont similaires au mot de passe, les hacher et garder cette liste résultante. Lorsque vous créez ensuite un nouveau mot de passe, si le hachage équivaut à l'un de ces précédents, cela indique qu'il est trop similaire
@TruthOf42 En fait, cela semble être l'inverse - les hachages de mots de passe similaires ne sont pas stockés. La seule fois où ils se soucient de la similitude des mots de passe, c'est lorsque vous créez un nouveau mot de passe.Ils hachent donc les variantes de votre nouveau mot de passe, les comparent à votre ancien hachage, puis les jettent s'ils ne correspondent pas (s'ils correspondent , ils vous préviennent).
@TruthOf42 ce que dit cpast. Cela a également beaucoup plus de sens en termes d'espace de stockage, n'est-ce pas?
@Anonymouse absolument, sans parler du fait que le stockage de hachages de mots de passe similaires pourrait entraîner des problèmes si l'algorithme de hachage se révèle avoir une faille d'une sorte
@JeffFerland: Jeff, pourriez-vous partager le nombre de mots de passe similaires que vous essayez de deviner et de hacher? dix? 100? 1000? Je suis juste curieux.
@MichałŠrajer Actuellement, Facebook teste le cas entièrement inversé lors de la connexion. Facebook teste l'inversion de la casse et de la première lettre entièrement inversée lors du changement de mot de passe.
Mais n'avez-vous pas besoin d'insérer votre mot de passe actuel pour passer à un nouveau mot de passe? Ils pourraient simplement comparer avant de faire la somme de hachage
@JonasDralle Ce serait suffisant dans la plupart des cas, mais cette méthode peut être utile pour essayer de déterminer si un nouveau mot de passe est similaire à n'importe quel mot de passe historiquement utilisé.Cependant, je ne suis pas sûr que Facebook le fasse.
@XtraSimplicity ils ne le font probablement pas.
Je viens de remarquer qu'Outlook fournissait ce même message, et c'était surprenant car mon mot de passe variait en changeant entièrement le premier mot - pas seulement l'inversion de casse ou la variance nombre / symbole - mais en laissant le reste le même.Ex.FluffyDoggy à RambunctiousDoggy.Je soupçonne qu'ils doivent également expliquer ce genre de scénario.
Cela signifie-t-il que Facebook utilise le même sel pour chaque mot de passe?
@sluge Non, cela signifie qu'ils génèrent les hachages de "First2", "fIrst2", "firSt2", ... "first2", ... "first", ... avec le même sel que l'ancien hachage stocké.Si l'un d'entre eux correspond, ils émettent une erreur.Si aucun d'entre eux ne correspond, ils les jettent tous et hachent le nouveau mot de passe avec un nouveau sel.
TildalWave
2014-03-17 01:51:16 UTC
view on stackexchange narkive permalink

Je ne sais pas s'ils le font (n'utilisent même pas Facebook), mais il est également possible qu'ils utilisent des modules de sécurité matérielle (HSM) pour leur cryptotraitement qui ne stockent pas les mots de passe hachés mais simplement les chiffrer de manière réversible. Compte tenu du volume de demandes d'autorisation auxquelles ils doivent faire face, cela serait parfaitement logique, car il est beaucoup plus rapide que le hachage de mot de passe sécurisé (lecture: lent), tout en offrant un stockage sécurisé des mots de passe.

Les HSM pourraient alors être programmés pour comparer le mot de passe stocké et le nouveau mot de passe en tant qu'entrée de l'une de leurs fonctions et simplement en renvoyer le résultat (pourrait même être une valeur booléenne dans notre cas), le mot de passe d'origine n'ayant même jamais été transmis ou stockés en texte clair n'importe où, en plus de leur mémoire interne (qui est inviolable). Ceci est généralement appelé clé sécurisée intégrée et stockage / traitement des applications .

À propos, de nombreuses banques utilisent des HSM car leur mise en œuvre correcte nécessite également une sécurité physique pour le les appareils eux-mêmes et la manière dont ils y accèdent (en plus, ils sont plutôt coûteux), mais cela offre évidemment beaucoup plus de flexibilité dans la manière dont les mots de passe peuvent être traités en toute sécurité sans jamais être divulgués.

Je doute que. Les HSM offrent un traitement cryptographique sécurisé et rapide, mais pas de grandes capacités de stockage. Je ne connais aucun HSM, qui pourrait stocker les mots de passe de tous les utilisateurs de Facebook.
@user1039462 Avez-vous déjà entendu parler du stockage sécurisé inviolable? Si c'est bien pour le DoD, pourquoi ne le serait-il pas pour Facebook? Et oui, vous pouvez avoir une capacité de stockage parfaitement suffisante, si vous êtes prêt à payer pour cela. Tous les HSM ne se présentent pas sous la forme de clés USB. ;)
J'exploite moi-même quelques HSM basés sur PCI, mais tous ont une capacité de stockage de quelques centaines de clés. Pourriez-vous me montrer un exemple avec un grand stockage? Je suis curieux.
De combien de clés avez-vous besoin? Vous pouvez utiliser un [HSM connecté au réseau] (https://encrypted.google.com/search?q=Network-Attached+HSM) et des volumes externes chiffrés et inviolables. Ou, pour autant que je sache, ils ont peut-être construit leurs propres périphériques HSM avec de grands volumes internes. Exemple? Oh ne sais pas, de Luna SA à AWS CloudHSM?
user11869
2014-03-16 22:50:08 UTC
view on stackexchange narkive permalink

Il n'y a qu'une seule bonne réponse à cette question. Personne ne le sait (sauf Facebook).

Facebook pourrait stocker votre mot de passe Facebook en texte clair, mais il peut aussi y avoir un système qui utilise des hachages flous ou des hachages précalculés de mots de passe similaires.

Il n'y a vraiment aucun moyen de le savoir à moins que nous devions pénétrer Facebook et auditer tous leurs actifs.

si vous parvenez vraiment à pénétrer dans Facebook ... soyez gentil et revenez en arrière;)
Réponse inutile. De toute évidence, nous recherchons des moyens par lesquels Facebook (et, plus important encore, nos sites) peuvent le faire tout en restant sécurisé.
Cette réponse n'est pas vraiment correcte car, si FB * stocke * des mots de passe en clair, il pourrait y avoir des preuves pour prouver qu'ils le font (par exemple sous la forme de quelque chose qui est possible qui ne serait pas possible s'ils ne stockaient pas de texte en clair). J'ai lu la question d'OP comme une question à ce sujet; en particulier, * le comportement observé prouve-t-il que les mots de passe en clair sont stockés? *
Veuillez noter qu'un ancien ingénieur Facebook (et diamant actuel) [a confirmé] (https://security.stackexchange.com/questions/53481/does-facebook-store-plain-text-passwords#comment84577_53483) que la réponse acceptée est en faitcomment Facebook fait cela, donc ce n'est vraiment pas correct.De plus, l'OP ne demandait pas vraiment comment ils le faisaient * réellement * - ils demandaient seulement comment Facebook * pouvait * faire cela.
Ammusionist
2014-03-17 05:35:48 UTC
view on stackexchange narkive permalink

Une autre possibilité est que Facebook stocke un hachage de votre mot de passe et un hachage du SOUNDEX de votre mot de passe. Ensuite, lorsque vous entrez votre nouveau mot de passe, il peut comparer le hachage de son SOUNDEX avec ceux précédemment stockés et répondre qu'un mot de passe est trop similaire.

Ceci est, bien sûr, purement conjecture.

Bienvenue dans le club, mais j'espère bien que ce n'est pas ainsi qu'ils le font, que ce serait trop facile à faire correspondre avec les dictionnaires de mots de passe et à le réduire à quelques choix possibles pour la plupart des comptes, si leur base de données était violée. En supposant qu'il soit libre de le divulguer, nous devrions vraiment essayer de convoquer [@JeffFerland] (http://security.stackexchange.com/users/836/jeff-ferland) pour y répondre. Un mod ici et un ingénieur de production chez Facebook, ça devrait le faire. :)
Plausible, car le mot de passe peut passer par le soundex et chiffrer la variable soundex par la suite pour le comparer à la version précédente de soundex chiffrée.
mohrphium
2014-03-17 00:12:30 UTC
view on stackexchange narkive permalink

Une autre possibilité est que fb ne hache pas, mais crypte les mots de passe avec leur clé principale. Qu'ils pourraient le déchiffrer à tout moment pour le comparer à votre nouveau.

  1. Espérons que non - ils devraient le hacher!
  2. Comme l'a souligné Rell3oT, personne ne le sait sauf fb . Donc, tout ce que nous pouvons faire est de jeter des suppositions sauvages dans le ring.
dans le cas supposé "facebook utilise la clé principale", serait-il raisonnable de supposer que l'utilisation asymétrique est utilisée, sinon le système aurait besoin d'avoir la "clé principale" toujours en mémoire et pénétrer dans le serveur signifierait également connaître la "clé principale" disponible en mémoire, ce qui rend les éléments chiffrés plutôt en clair
Pour des raisons de sécurité, c'est la même chose que le stockage des mots de passe en texte brut.
Encore souvent utilisé - je suppose également que (espérons-le) Facebook a des professionnels de la sécurité qualifiés qui connaissent ce genre de choses.
Royce Williams
2016-12-27 09:31:54 UTC
view on stackexchange narkive permalink

Fournir un peu plus de détails sur la méthode de stockage des mots de passe elle-même.

Les réponses historiques précédentes sont antérieures à toute confirmation de Facebook. Mais à Passwords 14, Alec Muffett a donné une conférence dans laquelle il a décrit explicitement le stockage des mots de passe sur Facebook en détail.

Dans son discours, il confirme que Facebook n'est pas stocker les mots de passe en texte brut, mais utilise plutôt une méthode en plusieurs étapes qui résiste assez bien à diverses attaques:

slide from Alec Muffett talk, showing Facebook's password storage method

... comme suit:

  $ cur = 'clairxt' # MD5 le texte brut. $ cur = md5 ($ cur) # Hash SHA1 avec un sel de 160 bits. $ salt = randbytes (20) $ cur = hmac_sha1 ($ cur, $ salt) # Hash SHA256 avec un sel secret, en utilisant un service de cryptage abstrait en interne. $ cur = cryptoservice :: hmac ($ cur) [= hmac_sha256 ($ cur, $ secret )] # Exécutez le résultat via le scrypt KDF (en utilisant des paramètres de réglage non divulgués) $ cur = scrypt ($ cur, $ salt) # Utilisez SHA256 (pour réduire et normaliser le grand résultat de scrypt) $ cur = hmac_sha256 ($ cur, $ salt )  

Ce niveau de résistance ne devrait pas être surprenant, puisque Muffett est l'auteur de crack, l'un des premiers des outils de craquage de mots de passe.

Nous avons donc maintenant la confirmation que Facebook ne stocke pas les mots de passe en texte brut.



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