Le type de mot de passe que vous devez créer a beaucoup à voir avec la façon dont le mot de passe est stocké.
Il y a des années, les mots de passe aléatoires à huit caractères composés de lettres majuscules et minuscules, de symboles et de chiffres étaient vraiment difficiles à déchiffrer. Dans certains cas, un tel mot de passe a mis des années à se fissurer.
Grâce à l'évolution technologique d'aujourd'hui et aux machines de location, ce temps a été réduit à quelques heures. Mais comment ces mots de passe sont-ils stockés en premier lieu ?
Comment les mots de passe sont stockés en ligne
Les systèmes ne stockent pas les mots de passe des utilisateurs directement dans des fichiers ou des bases de données, car les attaquants peuvent prendre le contrôle de la base de données où les systèmes conservent les mots de passe. Au lieu de cela, les systèmes chiffrent les mots de passe des utilisateurs et les attaquants rencontrent une version chiffrée de chaque mot de passe.
Certains systèmes utilisent des algorithmes pour chiffrer les mots de passe. L'un de ces algorithmes est l'algorithme symétrique.
L'algorithme symétrique est un type de chiffrement où vous pouvez utiliser la même clé pour le chiffrement et le déchiffrement. La clé que vous utiliserez pour chiffrer les données est la même pour le chiffrement et le déchiffrement. La sécurité des algorithmes symétriques comporte certains risques car il n'y a qu'une seule clé pour le déchiffrement. Pour cette raison, les systèmes n'utilisent généralement pas d'algorithmes symétriques pour le cryptage des mots de passe.Généralement, la méthode utilisée par les systèmes pour le chiffrement est celle des algorithmes de hachage. Les algorithmes de hachage servent à vérifier et à représenter l'intégrité des données, pas à chiffrer les données. Les algorithmes de hachage convertissent les données en un hachage de taille fixe. Ces hachages représentent généralement un hachage unique de données.
Grâce à l'algorithme de hachage, si un attaquant a pris le contrôle de la base de données de mots de passe, l'attaquant ne peut pas accéder au mot de passe en arrière à partir d'ici. Il y a une nuance très importante à laquelle vous devriez prêter attention ici. Théoriquement, un attaquant qui compromet un système utilisant le même algorithme de hachage pour toutes les combinaisons de mots de passe peut comparer les résultats obtenus. Si l'attaquant produit la même valeur à la suite de ces comparaisons, l'attaquant a découvert quelle est la version ouverte du mot de passe. Cette méthode est une question d'essais et d'erreurs, et cette forme d'attaque est généralement appelé une attaque par force brute.
Au début des années 2000, il fallait parfois des centaines d'années pour essayer toutes les combinaisons de mots de passe à 8 caractères chiffrés avec des algorithmes de hachage populaires. Bien sûr, cela ne comprend pas des combinaisons très simples telles que "123456" ou "mypassword" dans cet ensemble. Avec le développement des technologies logicielles et matérielles d'aujourd'hui, la méthode de craquage des mots de passe a également beaucoup changé.
L'impact des GPU émergents
Les capacités de traitement de données parallèles des processeurs graphiques (GPU) se sont améliorées au fil du temps. Les GPU ne sont pas capables d'effectuer des opérations polyvalentes comme les CPU à usage général. Alors même s'il y a tant de cœurs et de puissance de traitement parallèle, cela n'a pas de sens de les utiliser pour presque tous les problèmes comme CPU.
Pourtant, il est possible d'exécuter assez efficacement certains algorithmes de hachage utilisés pour les mots de passe sur le GPU. Les hachages calculables par seconde que vous pouvez obtenir avec les processeurs traditionnels ont considérablement augmenté avec les nouvelles plates-formes GPU.
Pour vous faire une idée, examinez les nombres de hachage par seconde des algorithmes de hachage tels que NTLM, MD5 et SHA1 dans le tableau ci-dessous. Il suffit, pour l'instant, de savoir que ces algorithmes ne sont qu'un algorithme de hachage. Pour créer ce tableau, j'ai utilisé un système de cluster composé de 25 GPU AMD Radeon.
Algorithme |
Hachages par seconde |
NTLM |
350.000.000.000 |
MD5 |
180.000.000.000 |
SHA1 |
63.000.000.000 |
SHA512Crypte |
364.000 |
Bcrypt |
71.000 |
Scrypter |
33.000 |
Comme vous pouvez le voir, avec un tel système, vous pouvez générer des hachages NTLM 350 milliards de fois par seconde. Cela signifie que vous pouvez essayer toutes les combinaisons d'un mot de passe à 8 caractères en moins de 6 heures. De plus, le matériel de cet exemple appartient à il y a des années. Imaginez la puissance de piratage des mots de passe d'aujourd'hui.
Que doivent faire les développeurs de logiciels?
La voie à suivre par les programmeurs est assez simple: ils doivent préférer les algorithmes qui prennent plus de temps pour calculer les valeurs de hachage lors du chiffrement des mots de passe. Les développeurs doivent apprendre non seulement sur les performances de l'algorithme qu'ils utilisent sur le CPU, mais aussi sur sa résistance au monde GPU.
Si les développeurs travaillent avec un framework logiciel qui traite également des processus de cryptage de mot de passe tels que Django, Ruby on Rails et Spring Security, ils doivent vérifier si les bonnes décisions ont été prises dans le cadre en termes de sécurité.
Par exemple, Concevoir, l'une des bibliothèques les plus utilisées pour les opérations utilisateur dans Ruby on Rails, utilise Bcrypt comme algorithme de hachage par défaut. Il vous permet également d'utiliser une autre méthode comme algorithme de hachage. L'algorithme Bcrypt est fiable car il faut encore beaucoup de temps pour que le GPU se brise.
En résumé, plus le calcul de la valeur de hachage prend du temps, plus vous êtes en sécurité.
Combien de caractères votre mot de passe doit-il contenir?
Chaque caractère supplémentaire que vous utilisez augmentera géométriquement le nombre d'essais et d'erreurs nécessaires pour déchiffrer votre mot de passe et rendre votre mot de passe plus sûr.
Considérons cette situation à travers deux scénarios différents. Considérez les valeurs du tableau ci-dessus pour l'algorithme de hachage NTLM et imaginez que vous essayez de déchiffrer le mot de passe. Imaginez cibler des mots de passe de huit caractères ou plus.
Nombre de caractères |
Chiffres et lettres majuscules/minuscules |
Lettres majuscules/minuscules, chiffres et symboles spéciaux |
8 |
moins d'1 minute |
2 minutes |
9 |
2 minutes |
2 heures |
10 |
2 heures |
1 semaine |
11 |
6 jours |
2 années |
12 |
1 an |
200 ans |
13 |
plus de 100 ans |
plus de 1000 ans |
Lorsque vous examinez le tableau, vous pouvez voir que l'utilisation d'un mot de passe d'au moins 12 caractères est sûre lorsque vous utilisez toutes les combinaisons de lettres majuscules/minuscules, de chiffres et de symboles spéciaux. Si vous n'utilisez pas de symboles spéciaux, il s'avère que vous devez utiliser 13 caractères comme longueur de mot de passe sécurisé. Si vous avez utilisé la méthode de hachage Bcrypt au lieu du hachage NTLM dans ce système, 8 caractères suffiraient. Cependant, vous n'avez pas la possibilité de savoir avec quelle méthode de hachage un système auquel vous entrez sur le Web conserve votre mot de passe. C'est pourquoi vous devriez envisager toutes les possibilités.
Le principal problème pour les développeurs de logiciels est qu'il est presque impossible de convaincre les utilisateurs d'avoir un mot de passe de 12 caractères minimum. Aujourd'hui, on peut dire que le taux d'utilisation de mots de passe de cette longueur est faible. Par conséquent, selon le scénario d'utilisation du système développé, il sera nécessaire de trouver un terrain d'entente qui sera accepté par les utilisateurs pour améliorer la sécurité de leur mot de passe.
une dernière suggestion pour les développeurs est de vérifier non seulement la longueur minimale mais aussi la longueur maximale des entrées provenant des formulaires que vous avez présentés à l'utilisateur. Surtout lorsque vous activez l'utilisation d'un algorithme de hachage lent à calculer tel que Bcrypt pour la sécurité fins, vous pouvez rencontrer certains risques si vous ne contrôlez pas la longueur maximale du mot de passe saisi par l'utilisateur. Par exemple, les attaquants peuvent effectuer des attaques en essayant des dizaines de mots de passe de 100 000 caractères en même temps avec des requêtes spécialement préparées. Dans un tel cas, il est fort probable que votre système ne réponde plus aux autres utilisateurs.
Conseils aux utilisateurs finaux
Faites en sorte que votre mot de passe comporte au moins 12 caractères et assurez-vous d'inclure des combinaisons de lettres majuscules et minuscules, des chiffres et des symboles. N'oubliez jamais que les systèmes qui stockent votre mot de passe peuvent être piratés et que vos informations peuvent être utilisées de manière abusive. Vous ne pouvez pas savoir quels algorithmes un système utilise pour crypter votre mot de passe, il vous appartient donc entièrement de prendre des précautions et de créer des mots de passe forts.