Mon mot de passe peut-il avoir plusieurs combinaisons de mots de passe?
J'ai lu sur les serrures à combinaison physiques (la serrure que vous ouvrez avec des chiffres) et j'ai appris qu'une serrure à combinaison peut avoir plus d'une combinaison possible.
J'ai également eu mon premier téléphone, un téléphone Nokia normal (pas un smartphone) qui était protégé par mot de passe et j'ai pu ouvrir l'appareil avec un mot de passe qui n'était pas vraiment le mot de passe exact du téléphone. Par exemple, si le mot de passe a été défini sur 4545 et que j'ai tapé 1111, le téléphone est toujours déverrouillé. Ou si le mot de passe du téléphone a été défini sur 4114 et que j'ai tapé, disons, 2141, le téléphone est toujours déverrouillé.
La question est de savoir si mon mot de passe pour mon ordinateur portable était !78ghA,NJ58*#3&*
, est-il possible qu'une prochaine combinaison fonctionne dans mon dos ou ne fonctionnera-t-elle qu'en cas de vulnérabilité?
Dans la plupart des systèmes protégés par mot de passe, cela est généralement possible, mais très peu probable.
Derrière de nombreux mécanismes de validation de mot de passe se trouve l'utilisation de fonctions de hachage salées. Par souci de simplicité, oublions le sel un instant.
Lorsqu'un utilisateur définit son mot de passe, hash(password)
est stocké dans la base de données Lorsque l'utilisateur se connecte en présentant password'
, hash(password')
est comparé à hash(password)
. S'il correspond, l'utilisateur est autorisé à se connecter.
Souvenons-nous cependant que les fonctions de hachage obtiennent des données de longueur illimitée et les transforment en données de taille limitée, par exemple. 128 bits. Par conséquent, il n'est pas difficile de comprendre qu'il peut y avoir plus d'un message qui produit le même hachage à partir d'une fonction donnée. C'est ce qu'on appelle collision et c'est ce qui vous préoccupe.
Le fait est que les fonctions de hachage sont produites pour être si aléatoires que vous ne devriez pas trouver ou produire une collision facilement. C'est théoriquement "possible", mais pratiquement "impossible", si vous utilisez une bonne fonction de hachage moderne.
Tout d'abord, par la théorie mathématique - oui (bien qu'en pratique, vous pouvez totalement ignorer cela pour les fonctions de hachage modernes et les nombres réalisables par calcul dans cet univers). Si le système ne stocke pas votre mot de passe en texte brut ou via un cryptage réversible, mais le hache à la place (comme c'est la meilleure pratique), il existe une infinité de mots de passe potentiels qui généreront un hachage qui correspond à votre hachage (en supposant un hachage cryptographique idéal une fonction).
Par exemple, si votre mot de passe était password = '!78ghA,NJ58*#3&*'
et ils ont utilisé un hachage salé sha256 (notez que cela devrait être renforcé avec de nombreuses rondes pour rendre la force brute plus difficile) avec un sel de 3 octets: d7 35 e6
alors le hachage de votre mot de passe serait 4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53
(en python vous pouvez calculer cela avec):
>>> import hashlib
>>> salt = '\xd7\x35\xe6'
>>> password = '!78ghA,NJ58*#3&*'
>>> hashlib.sha256(salt + password).hexdigest()
'4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53'
Notez que ce hachage est de 256 bits. Il n'y a donc que 2256 ~ 1077 hachages possibles. Si les fonctions de hachage fonctionnent bien et sélectionnent les hachages uniformément pour toutes les entrées possibles (c'est-à-dire que la fonction de hachage agit comme Oracle aléatoire ), une fois que vous avez essayé beaucoup plus de 1077 hachages, certains hachages entreront en collision (prouvable par le principe du pigeonhole ). Si vous avez essayé 1080 hachages, vous devez vous attendre à trouver environ 1000 mots de passe correspondant à un hachage donné.
Cependant, 1077 est un nombre extrêmement élevé; c'est à peu près le nombre d'atomes dans l'univers observable. Ou si chaque atom dans le système solaire (~ 1057) chacun a calculé un hachage toutes les nanosecondes, il faudrait environ 3000 ans avant de calculer 1077 hachages, donc ce n'est pas quelque chose dont vous devez vous soucier dans la pratique.
(Si vous avez essayé 5 milliards de hachages par seconde pendant 100 ans, et que vous aviez un mot de passe très fort, la chance de trouver au hasard un mot de passe différent qui correspond à votre hachage 256 bits est de 1 sur 7,4 x 10.57; c'est comme les chances d'acheter 7 tickets de powerball au cours des semaines successives et de gagner le jackpot les 6 premières fois, puis de jouer une 7e fois et de faire correspondre 5 numéros (pas de powerball) pour gagner seulement 1 million de dollars.)
Certes, cela ne signifie pas en pratique que votre mot de passe est unique. J'ai personnellement rencontré un système Cisco VPN déployé dans la nature qui tronque un mot de passe aléatoire de 12 caractères en 8 caractères sans en avertir l'utilisateur (j'ai d'abord découvert quand j'ai tapé trop vite et laissé un caractère et cela fonctionnait toujours; puis a fait des essais et des erreurs). Donc, tant que les 8 premiers caractères sont corrects, vous pouvez taper ce que vous voulez après et cela fonctionnera.
Ce n'est pas un cas isolé non plus; Par exemple, Microsoft avait l'habitude de tronquer silencieusement les mots de passe Windows Live ID à 16 caractères bien qu'il informe désormais l'utilisateur qu'il limite les mots de passe à 16 caractères:
Les mots de passe Windows Live ID étaient toujours limités à 16 caractères - tous les caractères de mot de passe supplémentaires étaient ignorés par le processus de connexion. Lorsque nous avons changé "Windows Live ID" en "compte Microsoft", nous avons également mis à jour la page de connexion pour vous informer que seuls les 16 premiers caractères de votre mot de passe sont nécessaires. "
Il est également possible qu'un système d'authentification mal conçu supprime les caractères spéciaux du milieu de votre mot de passe. Mon ami a découvert que T-Mobile avait fait cela en 2011 quand il a utilisé leur fonction de "mot de passe oublié" mal conçue qui lui a envoyé son mot de passe en clair ce qui dans son cas a supprimé les caractères spéciaux de son mot de passe.