Je comprends comment calculer l'entropie du mot de passe et ce que représentent les valeurs de longueur et de caractère. J'ai également une compréhension raisonnable des autres types d'entropie (par exemple Shannon). Cependant, l'entropie des mots de passe semble être considérablement différente (dans sa forme) que les autres types d'entropie; un log₂ simple (D) où D est une métrique de difficulté ou de complexité. J'aimerais comprendre comment le concept d'entropie par mot de passe a été développé pour comprendre d'autres applications de cette forme d'entropie.
L'entropie par mot de passe satisfait-elle aux exigences d'autres types d'entropie: additive, linéaire, etc. Pour un exemple stupidement simple, si mon système nécessite deux mots de passe, puis-je simplement ajouter l'entropie de chaque mot de passe?
EDIT: J'ai clairement pas bien formulé cette question. Mes excuses. Permettez-moi de réessayer dans une perspective plus cybersécurité: nous pouvons définir la taille des informations H₀ (A) dans un ensemble A comme le nombre de bits nécessaires pour coder chaque élément de A séparément, c'est-à-dire H₀ (A) = log₂ | A |. Maintenant, laissez A être les informations nécessaires pour vaincre un système de protection sur l'appareil. Pour un mot de passe, l'ensemble de taille A (et donc la taille de l'information H₀ (A)) peut être quantifié de manière simple, NL. J'essaie d'obtenir un aperçu des situations où la taille de A n'est pas si facilement quantifiable, mais j'ai une métrique qui capture l'ensemble des informations, dites "B". Quels sont les arguments contre l'utilisation de H₀ (B) = log₂ (B) pour quantifier la taille des informations nécessaires pour vaincre le système de protection? Encore une fois, mes excuses pour une question mal formulée.
L'entropie en physique et en sciences de l'information n'est que le logarithme (en général, logarithme naturel en physique; log en base 2 en informatique) du nombre de possibilités tout aussi probables, car il est généralement plus facile de traiter et de réfléchir avec le logarithme de ces exceptionnellement grandes nombre de possibilités que les possibilités directement.
Si j'ai généré au hasard 128 bits comme clé AES-128 aléatoire (que je stocke quelque part), il est facile de voir qu'il y en a 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 clés possibles que j'aurais pu utiliser (2 choix tout aussi probables pour chaque bit et les probabilités se multiplient). Quand on parle de complexité informationnelle, il est plus simple de parler de la clé ayant 128 bits d'entropie que de parler de 40 x 1036 ou 340 undecillion (échelle courte) , surtout si vous voulez le comparer avec disons une clé de 256 bits avec 2256= 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936 possibilités.
Maintenant, si je vous donne le mot de passe d'un utilisateur aléatoire, techniquement, il n'est pas possible de lui attribuer une entropie de manière unique.
Vous pouvez uniquement affecter une entropie à un modèle de génération de mots de passe. Donc, si l'on vous demande d'estimer une entropie pour un mot de passe, votre tâche consiste à supposer le modèle qui aurait pu générer ce mot de passe.
Si je vous ai donné un mot de passe comme P[rmDrds,r
vous pourriez supposer que j'ai choisi au hasard 10 caractères parmi un ensemble de 95 caractères imprimables ASCII caractères et pour utiliser la force brute, vous devrez passer par 95dix ~ 265,7 possibilités et il aurait une entropie de 65,7 bits. Cependant, c'est juste un mot de passe très faible OpenSesame
où j'ai déplacé mes mains sur le clavier vers la bonne lettre (ce qui est probablement l'une des disons 2 ^ 6 ~ 64 façons courantes de modifier la saisie d'un bas facile à retenir -mot de passe entropique). Si vous pouviez trouver OpenSesame
sur une liste de disons les 1000 (1000 ~ 2dix) les mots de passe les plus courants puis en fait l'entropie de P[rmDrds,r
est plus proche de 16 bits (possibilités de 2dix x 26), lorsque la génération de mot de passe consiste à choisir l'une des 64 méthodes courantes pour masquer un mot de passe, puis à choisir un mot de passe dans une liste de 1 000 mots de passe courants. Ainsi, après environ 64 000 tentatives, un forceur brutal sophistiqué qui a tenté cette voie d'attaque a pu arriver à P[rmDrds,r
, il est donc plus précis d'estimer son entropie à environ 16 bits qu'à 65,7 bits, ce qui correspond à 265,7-16 ~ 249,7 ~ 914 billions de fois plus faciles à utiliser en force brute que le mot de passe 65,7 bits.
Maintenant, de toute évidence, un attaquant en force brute moins sophistiqué pourrait avoir ignoré la possibilité de déplacer les caractères sur le clavier d'un espace vers la gauche tout en parcourant les listes de mots de passe courants. Mais pour être sûr, vous ignorez les attaquants stupides et supposez que l'attaquant très sophistiqué a considéré toutes vos méthodes de génération de mot de passe ( principe de Kerckhoffs dit éviter la sécurité par l'obscurité; supposez que l'ennemi a considéré votre technique secrète parmi de nombreuses autres méthodes ). Donc, quand quelqu'un dit que vous avez besoin d'un mot de passe à haute entropie, votre objectif n'est pas un mot de passe qui semble être très aléatoire (et certains testeur de mot de passe simple le qualifie de haute entropie). Vous voulez qu'un mot de passe aléatoire qui soit construit à partir de nombreux choix aléatoires soit entré dans votre procédure de génération de mot de passe. Vous ne devez pas choisir des mots significatifs pour vous et inventer un mot de passe avec des astuces obscures comme des lettres changeantes ou des substitutions leetspeak. Pour un mot de passe fort, vous devez vous fier à plus de 80 bits de caractère aléatoire non humain entrés dans votre procédure. Vous devez noter qu'un bit d'entropie dans une procédure de génération de mot de passe équivaut à une décision à deux options (par exemple, quelque chose qui pourrait être déterminé par un retournement de pièce).
Et encore une fois, avec une très faible probabilité, vous pouvez générer au hasard un mot de passe avec beaucoup de choix aléatoires et cela finit par un mot de passe très faible; Par exemple, il est techniquement possible que vous choisissiez au hasard 12 caractères et obteniez password1234
ou dddddddddddd
. En pratique, c'est une possibilité bien que cela ne se produise probablement pas (par exemple, si vous utilisez une procédure qui génère un mot de passe de 90 bits, la chance qu'il ait généré un mot de passe qui aurait également pu être généré avec une procédure plus simple avec seulement 34 bits est 234/ 290 = 1 sur 256 ce qui correspond à peu près aux chances d'acheter exactement deux billets Mega Millions d'affilée et de remporter le jackpot les deux fois).
En fait, d'après votre description, je ne sais pas si vous comprenez comment calculer l'entropie des mots de passe. L'entropie d'un mot de passe serait plus correctement décrite comme log (R) où R est une métrique aléatoire , pas une métrique de complexité .
Par exemple, cela n'a rien à voir avec l'utilisation de caractères spéciaux. Le mot de passe Tr0ub4dor&3
a 0 entropie parce que je l'ai pris de quelque part . En revanche, le mot de passe 1101111110101000001011001110101110011111010100101111001110101011
a une entropie de 64 bits, car je viens de la générer en prenant 8 octets aléatoires et en les imprimant en binaire.
L'entropie d'un mot de passe est l'entropie de la théorie de l'information. Il mesure la quantité d'informations que quelqu'un qui tente de briser le mot de passe ne sait pas. Sauf indication contraire, les responsables de la sécurité supposent que le système doit se défendre contre les personnes ayant au moins un renseignement normal. Par principe de Kerckhoffs , nous supposons que l'attaquant connaît la méthode par laquelle le mot de passe a été choisi. Ainsi, le contenu d'information qui manque à l'attaquant sur la méthode est 0. Ce que l'attaquant ne peut pas savoir, cependant, c'est la sortie de mon générateur aléatoire. Ainsi l'entropie d'un mot de passe est le contenu informationnel fourni par le générateur aléatoire. En supposant un générateur de nombres aléatoires parfait et une méthode de génération de mot de passe qui transforme des sorties RNG distinctes en mots de passe distincts, ce contenu d'information est égal à la quantité de données lues à partir du RNG.
L'entropie des mots de passe est additive. Si un système a deux mots de passe tels que vous devez fournir les deux pour vous connecter, l'entropie de la paire de mots de passe est la somme de l'entropie des deux mots de passe. Notez qu'il y a une hypothèse d'indépendance ici! Si vous pouvez savoir si un mot de passe est correct sans connaître l'autre, l'entropie du système à deux mots de passe est inférieure à la somme de l'entropie. (Dans un cas extrême, considérez un mot de passe de N bits de longueur fixe: vous pouvez considérer chaque bit du mot de passe comme un mini-mot de passe distinct; si vous pouvez tester chaque bit indépendamment, alors seulement 2 N tentatives sont nécessaires pour le casser au lieu de 2 ^ N). Encore une fois, cette propriété provient de la théorie de l'information: vous pouvez ajouter l'entropie de deux sources d'information distinctes, mais cela n'a pas de sens d'ajouter l'entropie de deux sources qui se chevauchent.
La raison pour laquelle l'entropie des mots de passe ressemble généralement à log₂ (D) est qu'il s'agit de l'entropie de Shannon pour une source d'information qui a une distribution de probabilité uniforme pour tous les résultats potentiels lorsque le nombre de résultats potentiels est D. Dans ce contexte, résultats signifie résultats à partir d'un processus de génération de mot de passe stochastique.
Et comme d'autres l'ont souligné ici, l'entropie n'est pas la propriété d'un mot de passe individuel. L'entropie est une propriété d'un ensemble de mots de passe qui est définie par un ensemble particulier de règles. Cependant, si vous ne vous souciez pas d'être rigoureux, vous pouvez parfois déduire de manière approximative quelles sont ces règles en inspectant un mot de passe individuel, par exemple la présence de chiffres et de lettres majuscules implique de manière lâche des règles qui spécifient un ensemble plus grand (avec une distribution de probabilité uniforme) que lorsque seules des lettres minuscules sont présentes.
Pour un mot de passe individuel, il existe une mesure différente appelée Complexité de Kolmogorov qui mesure le nombre de bits d'informations nécessaires pour produire ce mot de passe particulier à partir d'un algorithme prédéterminé. C'est évidemment une mesure relative car cela dépend de l'algorithme, mais en gros, vous pouvez utiliser la longueur compressée du mot de passe comme proxy pour la complexité de Kolmogorov.
Une meilleure façon de penser à l'entropie d'un mot de passe est le nombre minimum de bits requis pour transmettre les informations contenues dans le mot de passe. Quelques exemples:
Si mon mot de passe est 'aaaaaaaa', alors une façon valide de voir l'entropie du mot de passe serait de 5,9 bits (entropie pour un caractère alphanumérique sensible à la casse) plus 3 bits (pour l'indiquer répété 3 fois).
Si un service nécessite deux mots de passe et que je les ai définis pour qu'ils se correspondent, alors je n'ai pas augmenté de manière significative la quantité d'informations pour communiquer les mots de passe sur un seul mot de passe, car 'Password123' et 'Password123 1' ne sont pas si différents en termes d'entropie.
Si un service nécessite deux mots de passe et que les deux sont générés de manière aléatoire (séparément), alors je ai doublé l'entropie dans les mots de passe (bien qu'il serait plus logique de n'avoir qu'un seul mot de passe avec des exigences minimales plus strictes) ).
L'entropie du mot de passe est comme l'entropie de toute source d'information: c'est -log_2 de la probabilité bayésienne de ce mot de passe exact pour l'attaquant. En tant que telle, l'entropie d'un mot de passe est, à proprement parler, dépendante de l'attaquant, car c'est la probabilité bayésienne pour lui, y compris toutes les informations qu'il possède déjà.
L'entropie du mot de passe pour vous est nulle, car la probabilité bayésienne d'avoir le bon mot de passe est de 1 pour vous: son univers est constitué d'un seul mot de passe, car vous le connaissez.
Si vous avez décidé de retirer un mot sélectionné de manière uniforme et aléatoire dans un dictionnaire de 4096 mots, et que l'attaquant le sait, l'entropie du mot de passe est de 12 bits. Si toutefois l'attaquant ne sait pas lequel des 256 dictionnaires possibles (avec des mots différents, disons, parce que différentes langues) vous avez choisi, et s'il attribue des probabilités égales à chacun d'eux, alors votre mot de passe aura 20 bits de entropie pour lui.
Si, en revanche, il lui donne 50% de chances que vous l'ayez pris dans le bon dictionnaire, et il attribue les 50%/255 autres aux 255 autres dictionnaires (en d'autres termes, il a deviné le bon dictionnaire avec 50%) , alors votre mot de passe n'aura que 13 bits d'entropie pour lui. Notez que s'il a mal deviné le dictionnaire principal, votre mot de passe a en fait 21 bits d'entropie pour lui, car il n'a attribué que 50%/255 au bon dictionnaire! En d'autres termes, l'entropie d'un mot de passe dépend de ce que l'attaquant estime déjà savoir sur votre mot de passe.
Le seul absolument sûr moyen d'avoir un mot de passe à haute entropie utilise un véritable générateur de nombres aléatoires (basé par exemple sur la deuxième loi de la thermodynamique ou de la physique quantique), où physique l'entropie est utilisée pour générer l'entropie des informations. Le fait est que personne n'a de meilleur estimateur bayésien que l'entropie donnée physiquement (ou sinon, la deuxième loi de la thermodynamique serait violée: c'est exactement ce que la deuxième loi dit en fait).
Les fonctions cryptographiques à sens unique Trapdoor n'ajoutent pas d'entropie: dans le meilleur des cas, elles conservent l'entropie. Si vous choisissez un nombre compris entre 1 et 32, puis que vous calculez SHA-256 ou SHA-1 ou tout simplement une combinaison amusante de fonctions de hachage, vous aurez une chose qui AIME comme un mot de passe très aléatoire, mais il n'aura que 5 bits d'entropie si votre sélection de 1-32 était uniformément aléatoire: il n'y a que 32 résultats possibles, peu importe le nombre de bits que vous avez dans votre mot de passe final.
Les générateurs pseudo-aléatoires n'ajoutent pas non plus d'entropie: ils masquent l'entropie qui est dans la graine. Ils ne sont rien d'autre qu'une séquence compliquée de fonctions de hachage appliquées à la graine.
Comme d'autres l'ont dit, ce n'est pas l'entropie de mot de passe, c'est entropie de génération de mot de passe: à quel point est-il difficile de dupliquer un mot de passe donné étant donné la pleine connaissance de la façon dont il a été créé.
Pour calculer l'entropie, notez le processus, étape par étape. Déterminez ensuite le nombre de tentatives nécessaires pour trouver un mot de passe généré par ces étapes.
Mot de passe: 01012006
Processus: l'anniversaire de mon enfant au format mmddyyyy. 365,25 par an, l'âge maximal actuel des personnes et l'âge minimum de la naissance réussie d'un enfant donnent une fourchette de 115 ans au maximum. 115 x 365,25 = 42 004 tentatives avant d'être sûr d'avoir trouvé le mot de passe.
Processus: choisissez 8 nombres aléatoires en utilisant un dé à 10 faces. 10 ^ 8 tentatives avant d'être sûr d'avoir trouvé le mot de passe.
Même mot de passe exact, l'un est beaucoup plus facile à obtenir et soumis à une optimisation hors bande (informations ne faisant pas directement partie du processus, mais qui limitent les options). Si je connais la date de naissance de vos enfants, les tentatives maximales actuelles sont probablement inférieures à 1 000 et aussi faibles que 1.
Quant à savoir si c'est additif: pas exactement. Vous n'avez qu'un seul algorithme de génération de mot de passe, il comprend simplement une étape qui a été utilisée ailleurs comme processus complet pour générer un mot de passe.
L'entropie du mot de passe est donnée par le temps qu'il faudrait généralement à un attaquant, qui connaissait votre schéma de génération de mot de passe, pour parcourir tous les mots de passe possibles qu'il pourrait générer.
Par exemple, j'utilise un générateur de mots de passe qui est essentiellement des mots de dés. J'utilise une méthode cryptographiquement forte pour générer un mot aléatoire, puis j'utilise des groupes de 6 bits pour choisir parmi un dictionnaire de 64 mots anglais de 3 lettres (rat, vache, hommes ...), pour rendre le mot de passe plus lisible par l'homme/utilisable/mémorable.
Bien que l'entropie apparente (l'attaquant ne connaît pas la méthode) d'un caractère du mot de passe résultant soit d'environ 5 ou 6 bits (un caractère de 26 alpha ou plus alphanumérique), la véritable entropie (l'attaquant a mon programme) n'est que de 2 , en raison des connaissances qui ont été générées.
Un mot de passe fort est obtenu simplement en ayant un nombre suffisant de caractères. Une chaîne de 39 caractères aura 78 bits d'entropie vraie.