17Aug
"Notre base de données de mot de passe a été volée hier. Mais ne vous inquiétez pas: vos mots de passe ont été cryptés. "Nous voyons régulièrement des déclarations comme celle-ci en ligne, y compris hier, de la part de Yahoo. Mais devrions-nous vraiment prendre ces assurances à leur valeur nominale?
La réalité est que les compromis de base de données de mot de passe sont une préoccupation , peu importe comment une entreprise peut essayer de le faire tourner. Mais il y a quelques choses que vous pouvez faire pour vous isoler, peu importe les mauvaises pratiques de sécurité d'une entreprise.
Comment les mots de passe doivent être stockés
Voici comment les entreprises devraient stocker les mots de passe dans un monde idéal: Vous créez un compte et fournissez un mot de passe. Au lieu de stocker le mot de passe lui-même, le service génère un "hachage" à partir du mot de passe. C'est une empreinte digitale unique qui ne peut pas être inversée. Par exemple, le mot de passe "mot de passe" peut devenir quelque chose qui ressemble plus à "4jfh75to4sud7gh93247g. ..".Lorsque vous entrez votre mot de passe pour vous connecter, le service génère un hachage à partir de celui-ci et vérifie si la valeur de hachage correspond à la valeur stockée dans la base de données.À aucun moment, le service n'enregistre votre mot de passe lui-même sur le disque.
Pour déterminer votre mot de passe actuel, un attaquant ayant accès à la base de données devrait pré-calculer les hachés pour les mots de passe communs, puis vérifier s'ils existent dans la base de données. Les attaquants font cela avec des tables de recherche - d'énormes listes de hachages qui correspondent aux mots de passe. Les hachages peuvent ensuite être comparés à la base de données. Par exemple, un attaquant connaîtrait le hachage de "password1" et verrait si des comptes de la base de données utilisent ce hachage. Si c'est le cas, l'attaquant sait que son mot de passe est "password1".
Pour éviter cela, les services doivent "saler" leurs hachages. Au lieu de créer un hachage à partir du mot de passe lui-même, ils ajoutent une chaîne aléatoire au début ou à la fin du mot de passe avant de le hacher. En d'autres termes, un utilisateur entrerait le mot de passe "mot de passe" et le service ajouterait le sel et hacherait un mot de passe qui ressemblerait plus à "password35s2dg". Chaque compte d'utilisateur devrait avoir son propre sel, et cela garantirait que chaque compte utilisateuraurait une valeur de hachage différente pour leur mot de passe dans la base de données. Même si plusieurs comptes utilisaient le mot de passe "password1", ils auraient des hachages différents en raison des différentes valeurs de sel. Cela vaincrait un attaquant qui tentait de précalculer les hachages pour les mots de passe. Au lieu d'être capable de générer des hachages qui s'appliquaient à tous les comptes d'utilisateur de la base de données en même temps, ils devraient générer des hachages uniques pour chaque compte d'utilisateur et son sel unique. Cela prendrait beaucoup plus de temps de calcul et de mémoire.
C'est pourquoi les services disent souvent de ne pas s'inquiéter. Un service utilisant des procédures de sécurité appropriées doit indiquer qu'il utilise des hachages de mot de passe salés. S'ils disent simplement que les mots de passe sont «hachés», c'est plus inquiétant. LinkedIn a haché leurs mots de passe, par exemple, mais ils ne les ont pas salés - c'était donc un gros problème lorsque LinkedIn a perdu 6,5 millions de mots de passe hachés en 2012.
Bad Password Practices
Ce n'est pas la chose la plus difficile à mettre en œuvre.
- Stockage des mots de passe en texte brut : Plutôt que de s'embêter avec le hachage, certains des pires contrevenants peuvent simplement vider les mots de passe sous forme de texte brut dans une base de données. Si une telle base de données est compromise, vos mots de passe sont évidemment compromis. Cela n'aurait pas d'importance à quel point ils étaient forts.
- Hashing les mots de passe sans les saler : Certains services peuvent hacher les mots de passe et abandonner là, en choisissant de ne pas utiliser de sels. Ces bases de données de mot de passe seraient très vulnérables aux tables de recherche. Un attaquant pourrait générer les hachages pour de nombreux mots de passe, puis vérifier s'ils existaient dans la base de données - ils pourraient le faire pour chaque compte à la fois si aucun sel n'était utilisé.
- Réutilisation des sels : Certains services peuvent utiliser un salt, mais ils peuvent réutiliser le même sel pour chaque mot de passe du compte utilisateur. C'est inutile: si le même sel était utilisé pour chaque utilisateur, deux utilisateurs avec le même mot de passe auraient le même hachage.
- Utilisation de sels courts : Si des sels de quelques chiffres sont utilisés, il serait possible de générer des tables de consultation qui incorporent tous les sels possibles. Par exemple, si un seul chiffre était utilisé comme sel, l'attaquant pourrait facilement générer des listes de hachages incorporant tous les sels possibles.
Les entreprises ne vous diront pas toujours toute l'histoire, donc même si elles disent qu'un mot de passe a été haché( ou haché et salé), ils ne peuvent pas utiliser les meilleures pratiques. Toujours errer du côté de la prudence.
Autres problèmes
Il est probable que la valeur salt soit également présente dans la base de données de mots de passe. Ce n'est pas si grave: si une valeur de sel unique était utilisée pour chaque utilisateur, les attaquants devraient dépenser des quantités massives de puissance du processeur pour briser tous ces mots de passe.
En pratique, tant de gens utilisent des mots de passe évidents qu'il serait probablement facile de déterminer les mots de passe de nombreux comptes d'utilisateurs. Par exemple, si un attaquant connaît votre hachage et connaît votre sel, il peut facilement vérifier si vous utilisez certains des mots de passe les plus courants.
Si un attaquant l'a pour vous et veut casser votre mot de passe, il peut le faire avec une force brute aussi longtemps qu'il connaît la valeur du sel, ce qui est probablement le cas. Grâce à l'accès local et hors ligne aux bases de données de mots de passe, les attaquants peuvent utiliser toutes les attaques par force brute de leur choix.
D'autres données personnelles sont également susceptibles de fuir lorsqu'une base de données de mot de passe est volée: noms d'utilisateur, adresses e-mail, etc. Dans le cas de la fuite de Yahoo, des questions de sécurité et des réponses ont également été divulguées, ce qui, comme nous le savons tous, facilite l'accès au compte de quelqu'un.
aide, que dois-je faire?
Quel que soit le service indiqué lorsque sa base de données de mots de passe est volée, il est préférable de supposer que chaque service est complètement incompétent et d'agir en conséquence.
Tout d'abord, ne réutilisez pas les mots de passe sur plusieurs sites Web. Utilisez un gestionnaire de mot de passe qui génère des mots de passe uniques pour chaque site Web. Si un attaquant parvient à découvrir que votre mot de passe pour un service est "43 ^ tSd% 7uho2 # 3" et que vous utilisez uniquement ce mot de passe sur ce site spécifique, ils n'ont rien appris d'utile. Si vous utilisez le même mot de passe partout, ils pourraient accéder à vos autres comptes. C'est ainsi que les comptes de beaucoup de personnes deviennent «piratés».
Si un service est compromis, assurez-vous de changer le mot de passe que vous utilisez ici. Vous devriez également changer le mot de passe sur d'autres sites si vous le réutilisez là-bas - mais vous ne devriez pas le faire en premier lieu.
Vous devriez également envisager d'utiliser l'authentification à deux facteurs, qui vous protégera même si un attaquant apprend votre mot de passe.
La chose la plus importante n'est pas de réutiliser les mots de passe. Les bases de données de mots de passe compromises ne peuvent pas vous blesser si vous utilisez un mot de passe unique partout - sauf si vous stockez quelque chose d'important dans la base de données, comme votre numéro de carte de crédit.
Crédit d'image: Marc Falardeau sur Flickr, Wikimedia Commons