En supposant qu'un service ne stocke pas un mot de passe en texte brut, ai-je raison de dire que la réponse à cette question dépend du service? Sur un mauvais service, la longueur de hachage est liée à la longueur du mot de passe. Sur un bon service, ils ne sont pas liés. C'est ma supposition.
De plus, dans quelle mesure doubler un mot de passe augmente-t-il la sécurité? Donc, au lieu d'utiliser mot de passe, que diriez-vous d'utiliser mot de passepassword?
Veuillez noter que je ne suis pas un expert, une explication conviviale serait donc la bienvenue.
Dans un monde parfait, Thomas Pornin est complètement correct. La longueur de sortie fixe doit totalement obscurcir le contenu, pour inclure la longueur de cette teneur.
Il existe toutefois des exemples d'utilitaires de hachage qui s'exposent à différents types de cryptanalyse qui peuvent révéler des informations telles que la longueur du contenu. L'exemple le plus remarquable de cela est, bien sûr, le NTLMV1 'HASH'. En raison de la fibre du vortex temporel des mathématiques, si une valeur est plus courte de 8 caractères, le hachage NT Lanman V1 couvra le reste du flux d'entrée et produira ainsi une valeur de sortie cohérente du deuxième bloc du hachage. Littéralement, si vous avez des mots de passe de moins de 8 caractères, vous obtiendriez un deuxième bloc constant de "0xaad3b435b51404ee". Si vous êtes intéressé par un bon OL '' Face Palm ', une recherche sur le Web sur la sécurité de Lanman. Bon temps.
Donc, la mise à emporter ici devrait être: oui, systèmes de hachage devrait Fournissez toujours une sortie unique pour différentes entrées et ne devrait pas jamais Fournir Informations sur le contenu utilisé pour générer ce hachage. En tant que chercheur de développeur ou de sécurité, vous avez également la responsabilité de rechercher tous vos systèmes/algorithmes de cryptographie/hachage afin de vous assurer de respecter vos objectifs de sécurité.
Fonctions de hachage cryptographique Offrez une sortie de longueur fixe et ne pas "corréler" avec l'entrée (vous n'obtenez pas une "sortie proche" pour une "entrée proche"; si un seul bit diffère dans le Entrée, alors la sortie sera tout brouillée).
Ainsi, la seule façon pour l'attaquant d'obtenir la longueur du mot de passe à partir du hachage est d'obtenir le mot de passe réel lui-même, exact au dernier bit.
Si votre mot de passe a suffisamment d'entropie (c.-à-d. A été choisi au hasard à partir d'un ensemble suffisamment important de valeurs de mot de passe possibles) et la fonction de hachage est adéquate , alors cela nécessitera trop d'efforts pour que l'attaquant réussisse avec non Probabilité intense.
(Bien sûr, vos collègues ou compagnons de chambre peuvent simplement faire attention lorsque vous tapez votre mot de passe: ce n'est pas si difficile de compter les frappes du son qu'ils font ...)
Avec tout système de hachage sérieux, la taille du hachage sera constante et plus généralement la valeur du hachage ne dépend pas du mot de passe de manière détectable. Si la taille du hachage dépend du mot de passe, le schéma de hachage est complètement brisé - ce n'est probablement pas un hachage du tout mais de cryptage (c'est-à-dire quelque chose de réversible).
Si doubler votre mot de passe ajoute que la sécurité dépend de l'attaquant. Je pense que vous pensez à l'attaquant essayant de trouver le mot de passe du hachage (si l'attaquant saisit votre mot de passe d'un keylogger, cela ne fait évidemment aucune différence). Si l'attaquant essaie des mots de passe de la longueur croissante, doubler le mot de passe le rend beaucoup plus résistant - mais peu d'attaquants sont aussi stupides. Si l'attaquant utilise une distribution générique raisonnable de mots de passe lorsque vous essayez d'inverser le hachage, le mot de passe ne ajoute pas beaucoup. Si l'attaquant vous ciblent et sait que vous avez doublé le mot de passe, le doublage était inutile.
Il existe un moyen de quantifier la quantité de travail qu'un schéma de sélection de mot de passe provoque un attaquant: comptez combien de mots de passe sont possibles, sans aucun moyen que l'attaquant sache lequel vous avez choisi. Ceci s'appelle l'entropie du mot de passe. Si vous retournez une pièce de monnaie pour décider de doubler votre mot de passe ou non, l'attaquant n'a aucun moyen de savoir si vous avez doublé, il a donc deux fois plus de travail (un peu d'entropie supplémentaire).
Devoir de taper, en moyenne, à moitié (50% de chances de toucher deux fois plus autant) n'est pas un bon investissement pour simplement doubler le travail de l'attaquant. Si vous ajoutez à la place une autre lettre aléatoire à la fin de votre mot de passe, vous multipliez les travaux de l'attaquant de 26, soit environ 4,7 bits d'entropie. Si vous frappez simplement une pièce de monnaie pour décider d'ajouter a
ou b
à la fin de votre mot de passe, qui ajoute un bit d'entropie, et un seul caractère supplémentaire à taper.
En outre, si l'attaquant a des informations partielles sur votre mot de passe (par exemple, d'observation ou d'écoute de votre type), la longueur est susceptible de faire partie de ces informations. Donc, le doublage n'apporte aucune sécurité dans ce scénario; Un schéma de sélection de mot de passe à longueur fixe est plus robuste.
Comme Thomas l'a dit, une vraie et une bonne fonction de hachage cryptographique ne doit pas ne pas fuite tout Informations sur le mot de passe. Cela est dû à quelques choses:
Comme cela a été mentionné dans mes commentaires et inclus dans la réponse de Grawulf, il y a toujours été des exemples de fonctions de hachage qui violent ces principes. L'exemple le plus connu de ceci est peut-être LANMAN (A.k.a.: LM Hash ou Hash Lan Manager). Cette fonction de hachage a été utilisée dans des versions de Windows avant NT et est toujours incluse (bien que désactivée par défaut) pour la compatibilité en arrière dans les versions modernes.
Les problèmes de Lanman sont nombreux, mais la plupart d'entre eux sont enracinés dans son utilisation de DES - en particulier la partie qui permet de deviner la longueur du mot de passe d'utilisateur. DES est limité à une longueur de clé 56 bits, qui se traduit par 7 octets ou ASCII caractères. Bien sûr, cela a dû être connu, même dans les jours précédents, d'être trop petit pour un mot de passe raisonnablement puissant.
Ainsi, le travail de Microsoft était de scinder le mot de passe de l'utilisateur en deux, hachage chaque moitié séparément, puis coller les chaînes de hachage ensemble pour former le hachage final de la LM. Cela permettrait aux utilisateurs de créer des mots de passe de moins de 14 caractères. Pour les mots de passe plus de 14 caractères, il y aurait un rembourrage supplémentaire de caractères nuls à la fin (avant de diviser le mot de passe) pour remplir le reste de la touche DES. Bien entendu, cela signifie que tous les mots de passe plus courts que 7 caractères se retrouveraient avec la dernière moitié de leur hachage (ayant commencé comme tous les caractères nuls, et haché sans sel) étant identiques à tous les autres mots de passe plus courts de 7 caractères.
Si Microsoft avait utilisé un sel par utilisateur, cela aurait au moins empêché la supposition facile de la longueur du mot de passe d'un utilisateur à partir de la sortie Hash. Cela aurait également fait des attaques dictionnaires un accord équitable plus difficile. Cependant, il existe d'autres faiblesses inhérentes (au-delà de la portée de cette question) dans la fonction qui le laissait toujours totalement inappropriée pour une utilisation dans le monde d'aujourd'hui.
Les fonctions cryptographiques modernes sont beaucoup plus fortes et plus intelligentes que cela, et donc beaucoup moins susceptibles de fuir toutes les données particulières sur la longueur de votre mot de passe. Cependant, il est bon de garder à l'esprit ce détail historique comme un exemple de comment pas des mots de passe de hachage. (Bien sûr, ce n'est jamais une bonne idée de rouler de toute façon votre propre crypto.)
CONSEIL: Lorsque les mots de passe hachage avec LANMAN ont été désactivés par défaut depuis Vista, il s'agit toujours d'une fonctionnalité disponible pour la compatibilité à l'envers. Si vous voulez vous assurer que votre mot de passe Windows ne peut pas et donc ne sera pas Soyez traité comme des haubans LM sur tout système Windows, malgré la configuration de l'administrateur système. Assurez-vous que vos mots de passe sont d'au moins 15 caractères.
Un exemple simple. Mon algorithme de hachage fonctionne comme suit. Compte tenu d'un nombre n, le hachage de ce nombre est défini comme
HASH(N)=N%100.
Si j'ai donné 123 comme entrée d'entrée aura lieu de 123% 100. Si j'ai donné 2365736 lorsque le hash d'entrée sera 36. Si l'entrée est 123867823, le hachage sera 23. Maintenant, la question pour vous. Si cela est donné 23 comme valeur de hachage, pouvez-vous indiquer sa valeur d'entrée? Vous ne pouvez pas raconter une valeur parfaite.
La fonction de hachage ne ressemble pas exactement à cela, car cela générera des valeurs dupliquées 23 telles que la hausse des 123 et 175623. Comme celle-ci, une fonction de hachage n'est pas réversible.
Un concept appelé entropie (ou aléatoire) est la clé. Une attaque de force brute doit simplement respecter le niveau d'entropie le plus bas impliqué. De manière générale, un mot de passe bien haché sera d'une longueur qui permet d'avoir une entropie supérieure à celle d'un mot de passe moyen. Il est possible de rechercher des collisions contre les hachages, mais si le mot de passe que vous utilisez a moins d'entropie que le hachage lui-même, il est plus facile d'essayer de deviner le mot de passe.
Par exemple, si mon mot de passe 123 est haché à A3AFJ93A93UFA9F9UAFNMAC, il faudrait beaucoup moins d'hypothèse de choses à essayer le hachage que si mon mot de passe avait une entropie similaire ou supérieure (ou aléatoire). Une attaque appelée table arc-en-ciel peut être utilisée contre un grand nombre de haubes en même temps si elles ne sont pas correctement sécurisées en calculant des haubans pour les mots de passe de l'entropie bas et à la recherche d'allumettes. Le concept d'un sel augmente l'entropie du mot de passe avant le hachage en ajoutant une valeur aléatoire au début du mot de passe. Cela le rend afin que chaque mot de passe soit attaqué individuellement, même si l'attaquant a accès aux tables de hachage.