Pourquoi vous inquiéter chaque fois que la base de données de mots de passe d'un service est perdue
«Notre base de données de mots de passe a été volée hier. Mais ne vous inquiétez pas: vos mots de passe étaient cryptés. »Nous voyons régulièrement des déclarations comme celle-ci en ligne, y compris hier, de Yahoo. Mais devrions-nous vraiment prendre ces assurances pour argent comptant?
La réalité est que la base de données de mots de passe compromet sont une préoccupation, peu importe comment une entreprise peut essayer de le faire tourner. Cependant, vous pouvez vous isoler de différentes manières, quelles que soient les pratiques de sécurité d'une entreprise..
Comment les mots de passe doivent être stockés
Voici comment les entreprises doivent 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 se transformer en quelque chose qui ressemble davantage à «4jfh75to4sud7gh93247g…». Lorsque vous entrez votre mot de passe pour vous connecter, le service génère un hachage 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 disque..
Pour déterminer votre mot de passe actuel, un attaquant ayant accès à la base de données devrait pré-calculer les hachages des 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, des listes énormes de hachages qui correspondent aux mots de passe. Les hachages peuvent ensuite être comparés à la base de données. Par exemple, un attaquant devrait connaître le hachage de «password1», puis voir si des comptes de la base de données utilisent ce hachage. S'ils le sont, l'attaquant sait que son mot de passe est "password1"..
Pour éviter cela, les services doivent “saler” leurs hashes. 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 hacher un mot de passe qui ressemblait davantage à «motdepasse35s2dg». Chaque compte d’utilisateur devrait avoir son propre sel unique, ce qui garantirait que chaque compte aurait 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 valeurs de sel différentes. Cela vaincrait un attaquant qui tenterait de pré-calculer les hachages pour les mots de passe. Au lieu de pouvoir générer simultanément des hachages appliqués à chaque compte d'utilisateur de la base de données entière, 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 devrait indiquer qu'il utilisait des mots de passe hachés salés. S'ils disent simplement que les mots de passe sont «hachés», c'est plus inquiétant. LinkedIn a haché ses mots de passe, par exemple, mais ils ne les ont pas salés. C'était donc un gros problème quand LinkedIn a perdu 6,5 millions de mots de passe hachés en 2012..
Mauvaises pratiques de mot de passe
Ce n'est pas la chose la plus difficile à mettre en œuvre, mais de nombreux sites Web parviennent toujours à le gâcher de différentes façons:
- Stockage des mots de passe en texte brut: Plutôt que de se préoccuper du hachage, certains des pires contrevenants pourraient 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 le sont bien évidemment. Peu importe leur force.
- Hacher les mots de passe sans les saler: Certains services peuvent hacher les mots de passe et y renoncer, en choisissant de ne pas utiliser de sels. De telles bases de données de mots de passe seraient très vulnérables aux tables de recherche. Un attaquant pourrait générer les hachages de nombreux mots de passe, puis vérifier s'ils existaient déjà dans la base de données. Ils pourraient le faire pour tous les comptes à la fois si aucun sel n'est utilisé.
- Réutilisation des sels: Certains services peuvent utiliser un sel, mais ils peuvent réutiliser le même sel pour chaque mot de passe de compte d'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 seulement sont utilisés, il serait possible de générer des tables de recherche incorporant 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 contenant tous les sels possibles..
Les entreprises ne vous racontent pas toujours toute l'histoire. Par conséquent, même si elles affirment qu'un mot de passe a été haché (ou haché et salé), elles risquent de ne pas utiliser les meilleures pratiques. Toujours pécher par excès de prudence.
Autres préoccupations
Il est probable que la valeur du sel soit également présente dans la base de données de mots de passe. Ce n'est pas si grave: si une valeur sel unique était utilisée pour chaque utilisateur, les attaquants devraient dépenser des quantités énormes de ressources processeur pour obtenir tous ces mots de passe..
En pratique, tellement 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 hash et 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 qu'il veut déchiffrer votre mot de passe, il peut le faire avec une force brute, à condition qu'il connaisse la valeur du sel (ce qu'il est probablement fait). Avec un accès local et hors connexion aux bases de données de mots de passe, les attaquants peuvent employer toutes les attaques par force brute qu’ils souhaitent..
D'autres données personnelles risquent également de fuir en cas de vol d'une base de données de mots de passe: noms d'utilisateur, adresses électroniques, etc. Dans le cas de la fuite sur Yahoo, des questions de sécurité et des réponses ont également été divulguées, ce qui, comme nous le savons tous, facilite le vol de l'accès au compte de quelqu'un..
Aide, que dois-je faire?
Quoi que le service dise 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 mots 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 ce mot de passe uniquement sur le site Web concerné, 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 nombreuses personnes sont «piratés».
Si un service devient compromis, veillez à 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 devez également envisager d'utiliser une authentification à deux facteurs, qui vous protégera même si un attaquant découvre votre mot de passe..
La chose la plus importante est de ne pas réutiliser les mots de passe. Les bases de données de mots de passe compromis ne peuvent pas vous nuire si vous utilisez un mot de passe unique partout - sauf si elles stockent quelque chose d'important dans la base de données, comme le numéro de votre carte de crédit..
Crédit d'image: Marc Falardeau sur Flickr, Wikimedia Commons