web-dev-qa-db-fra.com

Diceware est-il plus sûr qu'une longue phrase secrète?

J'ai récemment étudié les meilleures pratiques en ce qui concerne les mots de passe et la grande majorité des sources recommandaient d'utiliser un gestionnaire de mots de passe. C'est un excellent conseil, mais pas utilisable dans toutes les situations. Certaines situations, telles que la connexion au système d'exploitation, le décryptage du disque ou le déverrouillage du gestionnaire de mots de passe ne me permettent pas de laisser un gestionnaire de mots de passe "taper mon mot de passe pour moi".

En tant que tel, j'ai examiné la deuxième meilleure alternative, qui semble être Diceware et Passphrases. Ce qui m'avait laissé perplexe était cette réponse d'une question connexe, qui laissait entendre que Diceware était supérieur. Un extrait de la réponse:

Les phrases de passe sont excellentes ( Diceware est mieux) pour verrouiller les gestionnaires de mots de passe, [...]

Emphase mine

Ce qui me confond, c'est pourquoi cette affirmation selon laquelle Diceware est censé être supérieur? J'ai utilisé zxcvbn pour comparer la force des deux exemples de mots de passe ci-dessous et il semblait que la phrase secrète était plus sécurisée que le mot de passe Diceware. De plus, la phrase secrète génère une image visuelle, bien que absurde, qui est facile à retenir. Le seul inconvénient que je peux imaginer est que la phrase de passe prend plus de temps à taper, ce qui est un inconvénient marginal étant donné qu'elle ne devrait être tapée qu'une seule fois avant qu'un gestionnaire de mot de passe puisse être utilisé à nouveau.


Exemples

Diceware

Diceware est le processus de lancer un ensemble de dés, qui indiquerait un mot aléatoire à partir d'une liste prédéfinie. Selon la sécurité souhaitée, plusieurs mots sont choisis.

Un exemple de résultat d'un processus Diceware peut être le mot de passe:

cleft cam synod lacy yr wok

Mots de passe

Une phrase secrète est essentiellement une phrase, qui a du sens pour l'utilisateur et, espérons-le, pour personne d'autre. Cela peut avoir un sens grammatical, mais il est très peu probable qu'il ait un sens sémantique.

Un exemple de phrase secrète serait:

Blue Light shines from the small Bunny onto the Lake.
44
MechMK1

La plupart des gens qui utilisent des phrases secrètes utilisent mal les phrases secrètes.

La remarque que Diceware est meilleur vient probablement du fait que, lorsque les gens utilisent des phrases secrètes, ils prennent généralement une phrase bien connue ou structurée de manière logique et l'utilisent. "Mary avait un petit agneau" est une phrase de passe terrible car c'est l'une des quelques milliards de phrases bien connues qu'un ordinateur peut parcourir en peu de temps. Je sais que cela fonctionne assez bien parce que je l'ai essayé .

Diceware n'est que des mots aléatoires. C'est aussi bon que n'importe quel autre ensemble de mots généré de manière aléatoire, en supposant que vous utilisez une bonne source de caractère aléatoire: pour Diceware, vous devez utiliser des dés, ce qui est une bonne source. Les générateurs de mots de passe numériques sont généralement également bons, bien que les implémentations homebrew puissent utiliser un générateur aléatoire non sécurisé par erreur.

Nous savons que toute phrase de passe aléatoire est bonne car il s'agit de mathématiques de base. La phrase secrète a deux propriétés:

  • Taille du dictionnaire
  • Nombre de mots dans la phrase

Le "caractère aléatoire" d'une phrase secrète est simple à calculer: dictionary_size ^ words_in_phrase, Où ^ Est l'exponentiation. Une phrase secrète de 3 mots avec un dictionnaire de 8 000 mots représente 8000^3= 512 milliards de phrases possibles. Ainsi, un attaquant, lorsqu'il devine la phrase, devrait essayer 256 milliards de phrases (en moyenne) avant de bien faire les choses. Pour comparer avec un mot de passe de force similaire: un mot de passe aléatoire utilisant 7 caractères, composé de az et AZ, a une "taille de dictionnaire" de 52 (26 + 26) et un "nombre de mots" de 7, ce qui fait 52^7= ~ 1028 milliards de mots de passe possibles. Il est bien connu que 7 caractères sont assez peu sûrs, même lorsqu'ils sont générés aléatoirement.

Pour l'aléatoire, c'est d'autant mieux jusqu'à environ 128 bits d'entropie. Un peu plus que cela aide à se protéger contre les affaiblissements cryptographiques des algorithmes, mais vraiment, vous ne voulez pas mémoriser 128 bits d'entropie de toute façon. Disons que nous voulons opter pour 80 bits d'entropie, ce qui est un bon compromis pour presque tout.

Pour convertir "nombre de valeurs possibles" en "bits d'entropie", nous devons utiliser cette formule: log(n)/log(2), où n est le nombre de valeurs possibles. Donc, si vous avez 26 valeurs possibles (1 lettre), ce serait log(26)/log(2)= ~ 4,7 bits d'entropie. Cela a du sens car vous avez besoin de 5 bits pour stocker une lettre: le nombre 26 est 11010 En binaire.

Un dictionnaire de 8000 mots a besoin d'environ 7 mots pour dépasser les 80 bits souhaités:
log(8000^7)/log(2)= ~ 90,8 bits d'entropie. Six mots seraient:
log(8000^6)/log(2)= ~ 77,8 bits d'entropie.

Un grand dictionnaire aide beaucoup, comparé au dictionnaire Diceware relativement petit de 7776 mots. Le Oxford English Dictionary a 600k mots . Avec autant de mots, une phrase de quatre mots choisis au hasard suffit presque:
log(600 000^4)/log(2)= ~ 76,8 bits d'entropie.

Mais à 600 000 mots, cela comprend des mots très obscurs et longs. Un dictionnaire avec des mots dont vous vous souvenez peut-être peut-être cent mille. Au lieu des sept mots dont nous avons besoin avec Diceware, nous avons besoin de cinq mots dans notre phrase lors de la sélection aléatoire d'un dictionnaire de 100 000 mots:
log(100 000^5)/log(2)= ~ 83,0 bits d'entropie.

L'ajout d'un mot de plus à votre phrase aide plus que l'ajout de dix mille mots à votre dictionnaire, donc la longueur bat la complexité, mais une bonne solution équilibre les deux. Diceware me semble un peu petit, mais ils ont peut-être testé avec différentes tailles et trouvé que c'était un bon équilibre. Je ne suis pas linguiste :).

À titre de comparaison, un mot de passe (composé de a-z, A-Z et 0-9) nécessite 14 caractères pour atteindre la même force: log(62^14)/log(2)= ~ 83,4 bits d'entropie.

73
Luc

Les mots de passe doivent être faciles à retenir et difficiles à deviner. Comme AviD l'a dit une fois , la sécurité au détriment de l'utilisabilité se fait au détriment de la sécurité. Une phrase secrète est facile à retenir car elle a une certaine signification pour l'utilisateur, même si elle peut sembler aléatoire au premier abord. En examinant l'utilisabilité, une phrase secrète est plus supérieure: vous n'avez pas besoin de dés et d'une liste de mots, vous pouvez penser à une phrase secrète vous-même et vous en souvenir plus facilement.

Cependant, l'utilisation de dés et d'une liste aléatoire de mots permet d'obtenir un mot de passe presque entièrement aléatoire. Il n'y a pas de lien vers l'utilisateur, où une phrase secrète la plupart du temps (à moins qu'elle ne soit vraiment aléatoire) était constituée de quelque chose lié à l'utilisateur.

Tout vérificateur de mot de passe en ligne ne peut que vérifier à quel point il serait difficile pour un ordinateur de deviner un mot de passe, où une phrase (ou une phrase secrète dans ce cas) pourrait être plus facilement devinée par un autre humain. Dans votre exemple, la longueur de votre mot de passe généré par Diceware est inférieure à la phrase de passe (mais toujours très longue par rapport aux normes de sécurité de nos jours), mais comme vous l'avez dit vous-même, vous pouvez créer des mots de passe plus longs quand vous le souhaitez.

Je ne dirais pas que le diceware est toujours supérieur, mais il est définitivement plus aléatoire et peut toujours avoir la même longueur qu'un mot de passe, ce qui le rend supérieur dans certains cas.

12
Kevin Voorn

Cette déclaration que vous citez selon laquelle Diceware est "meilleur" que les mots de passe n'a pas de justification théorique jointe, ce qui rend son évaluation difficile. Mais je peux trouver une telle justification: Diceware est livré avec une procédure pour générer des mots de passe au hasard avec des dés, et cela garantit que les sorties générées ont au moins un minimum d'entropie (difficulté à deviner). Depuis le journal2(6) est d'environ 2,6, Diceware vous donne au moins 2,6 bits d'entropie par lancer de dés.

D'un autre côté, il n'y a aucun moyen évident d'estimer à quel point une phrase de passe longue en langage naturel comme "Blue Light brille du petit lapin sur le lac" serait vraiment pour un pirate de mot de passe. Les gens supposent généralement cela parce que c'est long qui le rend automatiquement fort, mais ce n'est pas vrai. Cet article d'Ars Technica sur le craquage des phrases de passe très longues est très instructif à cet égard:

[Kevin Young] s'est associé à son collègue chercheur en sécurité Josh Dustin, et le duo de craqueurs s'est rapidement décidé à essayer de plus longues chaînes de mots trouvées en ligne. Ils ont commencé petit. Ils ont pris un seul article de USA Today, isolé des phrases sélectionnées et les ont saisies dans leurs crackers de mot de passe. En quelques semaines, ils ont élargi leurs sources pour inclure l'intégralité du contenu de Wikipedia et les 15 000 premières œuvres de Projet Gutenberg , qui se présente comme la plus grande collection unique de livres électroniques gratuits. Presque immédiatement, les hachages de Stratfor et d'autres fuites restées non fissurées pendant des mois sont tombés. Un de ces mots de passe était "crotalus atrox". C'est le nom scientifique du serpent à sonnettes Diamondback occidental, et il s'est retrouvé dans leur liste de mots avec la permission de cet article Wikipedia . Le succès était une sorte d'épiphanie pour Young et Dustin.

"Plutôt que d'essayer une force brute qui a du sens pour un ordinateur mais pas pour les gens, utilisons les êtres humains parce que les gens font généralement ces longs mots de passe en fonction de choses que les humains utilisent", se souvient Dustin en pensant. "J'ai essentiellement utilisé la personne qui a écrit l'article sur Wikipédia pour rassembler les mots pour nous."

Presque immédiatement, un flot de mots de passe autrefois tenaces s'est révélé. Ils incluaient: "Est-ce que je reverrai jamais ton visage?" (36 caractères), "au commencement était la Parole" (29 caractères), "de la genèse aux révélations" (26), "Je ne me souviens de rien" (24), "thereisnofatebutwhatwemake" (26), "givemelibertyorgivemedeath" (26 ) et "à l'est du sud-ouest de la lune" (25).

Si vous choisissez simplement de longues phrases de passe innocemment sans aucune théorie solide sur les raisons pour lesquelles votre procédure donne des phrases de passe fortes, elles pourraient être vulnérables à certaines attaques auxquelles vous n'avez tout simplement pas pensé. Alors que Diceware est invulnérable à tout sauf à la force brute, parce que craquer Diceware est au moins aussi difficile que de deviner plus de 25 jets de dés.


J'ai utilisé zxcvbn pour comparer la force des deux exemples de mots de passe ci-dessous et il semblait que la phrase secrète était plus sécurisée que le mot de passe Diceware.

Ici, je devrais répéter un point que j'ai fait plus longuement dans cette réponse à une autre question :

  • Un indicateur de force de mot de passe peut prouver de façon concluante qu'une phrase secrète est faible;
  • Mais un tel compteur ne peut jamais prouver qu'une phrase secrète est forte, car la phrase secrète peut être vulnérable à certaines attaques que le compteur ne modélise pas.

Par exemple, zxcvbn - qui est un excellent outil dans l'ensemble, mais qui n'est tout simplement pas conçu pour l'usage que vous en faites - estime les siècles pour cette phrase secrète:

password:   Am i ever gonna see your face again?
guesses_log10:  31.35342
score:  4 / 4
function runtime (ms):  5
guess times:
100 / hour:   centuries (throttled online attack)
10  / second: centuries (unthrottled online attack)
10k / second: centuries (offline attack, slow hash, many cores)
10B / second: centuries (offline attack, fast hash, many cores)

Mais c'est celle que j'ai tirée de la citation de l'article Ars Technica ci-dessus, donc nous savons il a été fissuré dans la vraie vie. Nous avons une preuve indépendante que l'estimation zxcvbn est fausse.

l'analyse de zxcvbn donne cleft cam synod lacy yr wok une guesses_log10 valeur de 26,22025, ce qui est techniquement plus faible qu'il ne l'estime pour Am i ever gonna see your face again?. Mais si c'est une phrase secrète Diceware de 5 mots que nous avons générée en effectuant 25 lancers de dés, nous avons une preuve indépendante qu'elle a au moins un journal2(6) × 25 = 64,5 bits d'entropie (dont le guesses_log10 la valeur ressemblerait plus à 19,4, donc zxcvbn surestime sans doute sa force).

Pour votre phrase secrète Blue Light shines from the small Bunny onto the Lake., nous n'avons tout simplement pas d'argument indépendant pour expliquer pourquoi il est fort autre que votre intuition, ce qui est miné par le fait que vous l'avez posté sur Stack Exchange (et pourrait donc maintenant être utilisé comme entrée pour une attaque comme quoi l'article Ars explique). C'est peut-être fort, mais la philosophie qu'un système comme Diceware incarne est que vous ne devez pas baser la force de votre mot de passe sur des intuitions, mais plutôt sur des procédures aléatoires réelles qui vous donnent des garanties d'entropie minimales.

8
Luis Casillas

Diceware (tm) est destiné à répondre à plusieurs objectifs:

Prescriptivité de l'utilisabilité de la sécurité

La sécurité est obtenue par une sélection aléatoire de mots. Comme d'autres le soulignent, l'entropie de toute phrase de passe sélectionnée au hasard dans une liste ou des mots est facile à calculer: (nombre de mots dans la phrase de passe) * log2 (nombre de mots dans la liste). L'utilisation de dés élimine le souci de la qualité des générateurs de nombres aléatoires informatiques.

La convivialité est améliorée en gardant les mots courts. La longueur maximale des mots Diceware est de 5 caractères. Cela rend la phrase de passe Diceware plus facile à saisir avec précision, en particulier sur les appareils mobiles. De nombreux systèmes protégés par mot de passe limitent également la longueur des phrases secrètes autorisées. La nouvelle version du NIST de ses directives de mot de passe, publication spéciale 800-63B, recommande d'autoriser jusqu'à 64 caractères, mais de nombreux systèmes autorisent moins. Les phrases de passe longues générées à partir d'une liste beaucoup plus longue, par exemple un dictionnaire anglais complet, peuvent même dépasser la limite NIST.

Prescriptivité. Si vous lisez StackExcange, vous pourriez être techniquement assez intelligent pour créer une phrase secrète réellement sécurisée. Peut être. Mais si vous comptez sur de nombreux autres utilisateurs pour créer des mots de passe sécurisés, la probabilité qu'ils inventent tous des mots de passe sécurisés en utilisant les conseils typiques est minime. Diceware est complètement normatif. Tout le monde peut suivre les instructions et créer une phrase secrète forte.

1
user52619