Question:
Pourquoi le hachage de mot de passe est-il si important?
ANortonsmith
2013-08-29 05:44:50 UTC
view on stackexchange narkive permalink

Après avoir lu cet article, je peux voir les avantages du hachage de mots de passe comme deuxième couche de défense, dans le cas où un intrus accède à une base de données de mots de passe. Ce que je ne comprends toujours pas, c'est ceci:

Le hachage de mot de passe n'est-il pas important uniquement si le système est suffisamment faible pour permettre à un intrus d'accéder à la base de données de mots de passe? Si tel est le cas, pourquoi une telle importance est-elle mise sur la création de bases de données de mots de passe sécurisées, plutôt que sur des systèmes sécurisés qui empêcheraient l'accès non autorisé aux informations importantes des utilisateurs? Comment se fait-il que les bases de données de mots de passe hachés soient si souvent volées?

Le hachage n'est pas une deuxième couche de défense, c'est une police d'assurance. Mettre en œuvre la technologie en partant du principe que le système sera éventuellement compromis. Si Sony, Blizzard, Dropbox, Apple sont incapables de sécuriser leurs systèmes, qu'est-ce qui vous fait penser que vous le pouvez? Ce n'est rien contre vous, mais si les entreprises avec des ressources presque illimitées dont l'activité principale dépend de la sécurité de leur système, ne peuvent pas protéger leur système, vous n'avez aucune chance. Mettez donc en œuvre une technologie pour éviter les dommages quand cela se produit.
Dans le cas d'@Ramhound IIRC Sony, il ne s'agissait pas de dépenser beaucoup d'efforts mais de déraper; mais une négligence grave causée par personne ne considérant la possibilité de se faire pirater. En tant que tel, je ne suis pas sûr qu'ils soient un bon exemple.
@DanNeely - Le fait qu'ils n'aient pas envisagé cette possibilité est exactement la raison pour laquelle je les ai utilisés (également le fait qu'ils sont faciles à retenir). Je pourrais passer à Twitter, Linken, la société mère de Gizmodo si vous en voulez plus. Le point de la déclaration, supposez que cela se produira et faites ce que vous pouvez, pour empêcher la famille de lapins qui sera tuée après que cela se produise.
Un autre point: les processeurs sont aujourd'hui si rapides et les méthodes d'attaque si sophistiquées qu'il est conseillé de ** ne pas ** utiliser de hachage pour crypter les mots de passe. Pourquoi? Le calcul d'un hachage est une opération très rapide de par sa conception, car le cas d'utilisation d'origine était de vérifier l'intégrité du fichier. Pour chiffrer les mots de passe, il est préférable d'utiliser un algorithme qui prendra beaucoup plus de temps à calculer qu'un hachage, mais qui reste assez rapide lors de la vérification des mots de passe individuels. Cela ralentira les attaques par force brute. [Bcrypt] (http://goo.gl/T2g0yv) est l'un de ces algorithmes. [Pour en savoir plus, cliquez ici.] (Http://goo.gl/aiyPKQ)
@Andy En fait, saler un mot de passe n'affectera pas vraiment le temps nécessaire à la force brute. C'est parce que si quelqu'un a les mots de passe de hachage, il pourrait probablement aussi obtenir le sel.
@ponsfonze Je suis désolé, mais je pense que vous devez lire davantage sur le salage. Un sel n'est pas du tout censé être un secret, il suppose que quelqu'un qui obtient le hachage obtiendra également les sels. http://en.wikipedia.org/wiki/Salt_%28cryptography%29. Le but des sels est de vaincre les tables arc-en-ciel précalculées.
@ponsfonze Si vous craquez un mot de passe, vous avez raison - il n'accélère pas. Cependant, en cas de fissuration massive de toute la base de données, vous devez déchiffrer chaque mot de passe séparément. S'ils ne sont pas salés, vous pouvez simplement hacher "monkey" et obtenir tous les utilisateurs qui l'ont comme mot de passe. Comme ils sont du sel, vous devez hacher le "singe" avec chaque sel unique. (Étant donné qu'il peut y avoir des milliers de mots de passe dans la base de données, cela signifie qu'il y a beaucoup plus de travail à faire pour les traiter).
Il est incorrect de dire que les "anciens" algorithmes de hachage sont rapides et les "nouveaux" lents. La plupart des algorithmes de hachage n'ont jamais été conçus pour être utilisés pour les mots de passe et il y en a beaucoup de nouveaux qui ne conviennent absolument pas. Ce n'est pas le sujet de cette question, mais assurez-vous essentiellement de faire vos devoirs et de choisir un algorithme de hachage solide et digne de confiance, sinon vos utilisateurs seront en danger.
@Andy en fait, les hachages les plus récents ont tendance à être plus rapides. [SHA-3] (http://en.wikipedia.org/wiki/SHA-3) a été spécifiquement choisi * parce que * c'est si rapide * (enfin, et parce qu'il est si différent de SHA-2 ..) *
@BlueRaja-DannyPflughoeft Oui, j'avais découvert que j'avais tort sur cet aspect.
@Andy Merci de m'avoir fourni ce lien. Je ne sais pas où vous allez avec le but d'un sel avec mon commentaire parlant des effets de temps de calcul du hachage des mots de passe avec un sel.
@MaciejPiechotka Merci d'avoir soulevé le point où dans le cas de hachages de force brute dans une base de données entière non salée, le temps de calcul sera réduit en n'ayant pas à recalculer le même hachage pour chaque mot de passe. Cependant, gardons également à l'esprit que des milliers de mots de passe ou plus à déchiffrer peuvent être insignifiants à l'avenir lorsque les processeurs deviennent exponentiellement plus rapides, ou c'est ce que certains ont prévu.
@ponsfonze: Toujours le salage le rend 1000 fois plus lent quelle que soit la technologie utilisée (ou 1000000 pour 1000000 utilisateurs) - bien sûr, cela fait moins de différence entre 1s et 20 min puis 1 jour et 3 ans mais le premier exemple utilisé beaucoup trop de hachage ou de mots de passe de toute façon . Les améliorations des processeurs peuvent être combattues par des problèmes plus difficiles (algorithmes de mémoire dur, etc.)
Huit réponses:
user10211
2013-08-29 05:50:29 UTC
view on stackexchange narkive permalink

Si tel est le cas, pourquoi une telle emphase est-elle mise sur la création de bases de données de mots de passe sécurisées, au lieu de systèmes sécurisés qui empêcheraient l'accès non autorisé à des informations utilisateur importantes?

Parce que c'est une chose vraiment difficile à faire. Il n'y a aucun moyen de garantir que votre système est 100% à l'épreuve du piratage. En fait, si vous faites une telle réclamation sur Reddit, votre site sera probablement compromis dans l'heure.

Il existe un terme couramment utilisé en sécurité appelé Défense en profondeur. Une base de données de mots de passe compromise n'affecte pas seulement votre application. La plupart des gens utiliseront la même combinaison de nom d'utilisateur et de mot de passe pour plusieurs sites Web. Cela rend trivial pour un attaquant qui a compromis une base de données de mots de passe unique pour accéder à plusieurs services qu'un utilisateur utilise. C'est pourquoi vous voyez souvent des recommandations de sites Web qui ont été compromis pour que l'utilisateur modifie ses mots de passe sur tous ses comptes.

Même si vous considérez uniquement votre application comme importante, il y a beaucoup de choses qu'un attaquant peut faire s'il a les mots de passe en clair de vos utilisateurs. Il est difficile pour un attaquant de modifier directement les valeurs de la base de données sans détection. Cependant, avec un mot de passe en clair compromis, il peut simplement se connecter à un compte utilisateur et effectuer les modifications. Ceci est très difficile à détecter.

La même raison quand je fais de l'escalade, j'ai une double ancre. Bien sûr, un seul clip peut être évalué à 27 kN (assez pour contenir une Ford F150), mais * si * il échoue, j'ai toujours une police d'assurance sur ma vie avec cette deuxième ancre.
Abhi Beckert
2013-08-29 08:05:23 UTC
view on stackexchange narkive permalink

L'expérience a appris à la communauté qu'il est effectivement impossible d'éloigner les intrus. Il s'agit de savoir quand, et non si, quelqu'un aura accès à votre base de données de mots de passe.

Peu importe que vous soyez un blog aléatoire ou un service gouvernemental de plusieurs milliards de dollars, vous devez supposer que quelqu'un y aura un jour accès. Et bien souvent, ils auront un accès suffisant pour lire la base de données mais pas un accès suffisant, par exemple, pour insérer un homme du milieu qui saisit les mots de passe en texte brut lorsqu'ils sont utilisés pour authentifier quelqu'un.

Par exemple, ils peuvent ne pas pirater votre serveur principal, ils peuvent uniquement pirater un serveur contenant des copies de sauvegarde de votre base de données.

De plus, la plupart des organisations ont de nombreux employés. Un employé n'a pas besoin de pirater votre réseau pour afficher la base de données, il peut déjà avoir un accès illimité (surtout s'il s'agit d'un ingénieur ou d'un administrateur système). Il y a de nombreuses raisons pour lesquelles ce n'est pas une bonne idée pour vos employés de connaître les mots de passe des clients.

Même si votre site Web est totalement sans valeur et que quelqu'un le pirate. Le nom d'utilisateur et le mot de passe utilisés pour se connecter à votre site Web sont souvent exactement les mêmes que ceux utilisés pour se connecter à d'autres services beaucoup plus importants.

Par exemple, quelqu'un peut écrire un robot qui tente de se connecter à iTunes d'Apple stocker avec chaque nom d'utilisateur / mot de passe dans votre base de données, et en cas de succès, il commence à acheter des choses via le magasin. Cette attaque peut réussir pour jusqu'à 10% des utilisateurs de votre base de données, et beaucoup de ces utilisateurs ne remarqueront même jamais qu'ils ont été facturés 4,99 $. Ce n’est pas une attaque théorique, cela se produit toute la journée tous les jours et les tentatives pour l’arrêter ne réussissent pas toujours.

EDIT: Et dans les commentaires, @emory a fait un autre point que j'ai oublié: quelqu'un pourrait déposer une citation à comparaître ou utiliser un autre processus légal pour accéder à la base de données, lui permettant de voir les mots de passe en clair à moins que vous n'ayez un bon hachage. Notez que ce n'est pas seulement les forces de l'ordre qui peuvent le faire, tout avocat privé ayant une solide affaire juridique contre vous peut accéder à votre base de données.

+1 pour la mention du vecteur d'attaque souvent oublié des sauvegardes.
Et +1 pour les attaques d'initiés. Un initié compromettant silencieusement la non-répudiation peut avoir des effets désastreux à long terme et incroyablement difficiles à détecter!
L'attaquant pourrait contourner les moyens techniques et simplement assigner votre base de données.
nsn
2013-08-29 12:19:00 UTC
view on stackexchange narkive permalink

Outre les raisons déjà énoncées, il y en a une autre:

Un mot de passe est censé être privé!

L’avoir en texte clair signifie que vous ou l’un de vos collègues gérant ou développement ont accès à tous les mots de passe et vous pouvez vous faire passer pour n'importe quel utilisateur. Maintenant, vous pensez probablement - nous ne ferions jamais cela, c'est faux!

Pensez à un système bancaire: les administrateurs de la base de données auraient tous accès aux mots de passe. Cela signifie qu'ils peuvent simplement se connecter à votre compte de n'importe où et retirer de l'argent. Souhaitez-vous placer votre argent dans une telle banque sachant cela? Pire encore ... de nombreuses personnes utilisent le même mot de passe à plusieurs endroits. Ils peuvent maintenant se connecter au compte bancaire et, avec suffisamment d'informations dans de nombreux autres endroits.

N'oubliez pas que de nombreuses attaques sont à l'intérieur d'emplois - des personnes disposant d'informations privilégiées. Les attaquants ne viennent pas tous de l'extérieur.

Ajout très important, +1!
martinstoeckli
2013-08-29 12:26:22 UTC
view on stackexchange narkive permalink

Une base de données contenant des mots de passe peut se retrouver entre des mains indésirables de nombreuses manières. Si les mots de passe ne sont pas hachés de manière sécurisée lorsque cela se produit, le propriétaire du site Web est responsable et a beaucoup de problèmes, car souvent les utilisateurs réutilisent également leurs mots de passe sur d'autres sites. Je voudrais vous donner quelques exemples de la façon dont une base de données peut fuir:

  • L'injection SQL est une attaque facile contre votre site Web. J'ai fait une petite démo pour montrer à quel point c'est facile. Cliquez simplement sur la flèche suivante pour obtenir une entrée malveillante. L'injection SQL peut être gérée en écrivant du code propre, mais vous utilisez souvent des bibliothèques tierces ou n'avez pas développé le code source seul, auquel cas du code non sécurisé aurait pu passer.
  • Si vous hébergez votre site Web avec un fournisseur externe, au moins le personnel de la société d'hébergement a un accès gratuit à la base de données. Souvent, d'autres personnes ont également accès: peut-être avez-vous besoin d'un développeur pour résoudre un certain problème ou pour étendre votre page.
  • Les sauvegardes sont également un problème. Si les sauvegardes ne sont pas stockées avec le même soin que le serveur en cours d'exécution est sécurisé, ou si elles sont jetées sans les effacer correctement, les mots de passe fuient.
  • Si un serveur est supprimé, il doit être nettoyé avant le disposer. Dans le cas de l'hébergement externe, cela n'est pas sous votre contrôle. Le nettoyage peut être assez difficile sur les systèmes RAID.
  • De plus en plus de données sont stockées dans les services cloud. Une chose pratique, ces nuages, mais il y a aussi un nuage là où se termine votre base de données, et un nettoyage correct dans un nuage peut même être impossible.
+1 pour la mention du vecteur d'attaque souvent oublié des sauvegardes.
britlak
2013-08-29 06:00:17 UTC
view on stackexchange narkive permalink

Un principe de sécurité est qu'il n'y a pas de mécanisme unique à l'épreuve des balles, mais plutôt que vous devez vous fier à plusieurs mécanismes pour protéger votre système / vos données. En d'autres termes, une défense en profondeur. Donc, plutôt décider entre (a) sécuriser la base de données de mots de passe ou (b) sécuriser le système où il réside ou est utilisé, vous devriez faire les deux.

Tom Leek
2013-08-29 18:37:02 UTC
view on stackexchange narkive permalink

Cet article de blog traite de cette question. Le résumé est que vous avez besoin du hachage de mot de passe comme deuxième ligne de défense, lorsque les attaquants parviennent à une pause partielle en lecture seule . Ceci est une conséquence fréquente des attaques par injection SQL, mais se produit également lorsqu'une bande de sauvegarde est volée ou lorsqu'un ancien disque est jeté. En particulier, lorsqu'un disque tombe en panne, la panne peut être celle de la carte électronique, mais le support magnétique contient toujours toutes les données. Si le disque ne démarre pas, l'administrateur système ne pourra pas (facilement) effacer le contenu. Mais si le disque est simplement jeté dans une benne à ordures, un attaquant industrieux pourrait le récupérer, remplacer la carte électronique et lire toutes les données.

Bien qu'il soit préférable de ne pas laisser les attaquants jeter un coup d'œil aux entrailles de votre serveur dans Premièrement, de telles violations se produisent dans la pratique et vous feriez mieux d'avoir une certaine protection contre cela. Consultez également cette réponse détaillée pour savoir comment le hachage de mot de passe doit être effectué; l'idée sous-jacente étant que pour vérifier le mot de passe d'un utilisateur, le serveur DOIT contenir des données dépendant du mot de passe, et un vidage complet du contenu du serveur suffit alors pour "essayer les mots de passe à la maison". Ainsi, le hachage de mot de passe est le meilleur que l'on puisse faire (en théorie), à ​​moins qu'un matériel spécial inviolable ne soit introduit dans l'image.

Je serais en fait une légère exception au dernier point. Je vois ce que vous voulez dire, mais tout ce que le processus serveur peut faire, en principe n'importe quel logiciel peut le faire; c'est surtout une question de combien d'argent et de main-d'œuvre l'attaquant veut mettre au problème. Le matériel inviolable peut contribuer grandement à atténuer de nombreuses menaces, mais il ne les éliminera pas complètement. (Cela dit, je vous ai donné +1 pour cela.)
Ce que je veux dire, c'est que si le serveur utilise une clé pour vérifier les valeurs MAC stockées sur les mots de passe des utilisateurs, et que cette clé se trouve dans un matériel dédié (un HSM, une carte à puce) qui utilise la clé mais ne la révèle jamais, alors l'attaquant qui obtient une copie complète du disque n'a toujours pas la clé, et ne sera pas en mesure d'exécuter une attaque par dictionnaire hors ligne. Un tel matériel est également inviolable, mais je conviens que dans ce cas précis, la résistance à l'altération n'est pas pertinente.
Une chose à ajouter est qu'une coupure «partielle, en lecture seule» peut se transformer en coupure «complète» ou même en coupure «accès root» si l'attaquant est capable d'obtenir le mot de passe d'un utilisateur avec des privilèges d'administrateur. Si l'administrateur réutilise ce mot de passe n'importe où, il pourrait potentiellement obtenir un accès SSH ou FTP, et même s'ils ne le font pas, il y a de bonnes chances que quelque part dans l'interface de l'application Web soit un moyen pour eux d'augmenter leur position (téléchargement shell , LFI, etc.). Rendre difficile pour eux de déterminer les mots de passe administrateur atténue considérablement ce problème.
Jack Aidley
2013-08-30 14:43:11 UTC
view on stackexchange narkive permalink

msn ci-dessus a mentionné le besoin de confidentialité interne; J'ajouterais une autre raison basée sur ceci: vous ne pouvez pas faire entièrement confiance à tous ceux qui ont un accès physique à votre base de données. Le hachage protège la base de données contre les compromis internes ainsi que contre les compromis externes.

Munim
2013-08-31 11:56:09 UTC
view on stackexchange narkive permalink

Un des points que je ne pense pas est mentionné dans les réponses ici. Je pense que la principale raison de la mise en œuvre du hachage de mot de passe n'est pas d'ajouter une couche supplémentaire pour les attaques de l'extérieur, mais simplement de les rendre illisibles pour ceux qui se trouvent à l'intérieur du réseau.
De nombreuses attaques proviennent de votre réseau de confiance. Un développeur ou un administrateur système en colère ne devrait pas être en mesure de lire les mots de passe non hachés de l'utilisateur, même s'il a accès à la base de données.



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...