Question:
Est-ce une bonne idée d'utiliser toute la plage Unicode pour générer un mot de passe aléatoire plutôt que des plages limitées?
person of entropy
2018-01-16 18:45:04 UTC
view on stackexchange narkive permalink

Je sais pertinemment que certains sites / applications à faible sécurité limitent les mots de passe aux caractères alphanumériques uniquement, et certains autorisent une plage ASCII légèrement plus large. Certains sites / applications prennent également en charge Unicode.

Les mots de passe sont généralement censés pouvoir être saisis sur n'importe quel clavier générique, ils sont donc généralement générés à l'aide des caractères couramment disponibles. Mais pour les mots de passe qui ne seront conservés que numériquement, serait-il judicieux de maximiser le temps de devinettes en utilisant toute la plage de caractères Unicode? Ou y a-t-il des raisons de croire que certains ou la plupart des sites / applications prenant en charge Unicode pourraient encore limiter leur plage de caractères autorisée?

Chaque fois que vous gardez un mot de passe "uniquement numériquement" (ce qui ressemble à "gestionnaire de mots de passe" pour moi), ne seriez-vous pas toujours en mesure de créer des mots de passe avec une entropie élevée sans Unicode et uniquement des caractères alphanumériques?Ou pour le dire en d'autres termes - corrigez-moi si je me trompe: je suppose que les services qui vous permettent d'utiliser Unicode pour les mots de passe n'ont pas de limitations de longueur strictes, donc l'entropie n'est pas un problème lors de l'utilisation de caractères alphanumériques.D'un autre côté, les services avec des limitations de longueur inutiles n'autoriseront pas les caractères Unicode.L'entropie sera un problème de toute façon.
Vous pouvez simplement utiliser un mot de passe un peu plus long et vous protéger du mal de tête.
Faites attention à la façon dont différents systèmes peuvent interpréter les chaînes Unicode, toutes les applications, hôtes, bases de données, etc. ne gèrent pas nécessairement l'Unicode de la même manière: https://security.stackexchange.com/a/85664/36538
Également lié: [Les caractères non clavier rendent-ils mon mot de passe moins sensible au forçage brutal?] (Https://security.stackexchange.com/questions/4632/do-non-keyboard-characters-make-my-password-less-susceptible-to-brute-forcing), [L'utilisation de caractères Unicode dans mon mot de passe augmentera-t-elle la sécurité?] (https://security.stackexchange.com/questions/4943/will-using-unicode-chars-in-my-password-augmenter la sécurité), [Pourquoi limiter les mots de passe aux caractères imprimables ascii?] (https://security.stackexchange.com/questions/5694/why-limit-passwords-to-ascii-printable-characters?rq=1)
Vous devrez être * très * prudent sur les services sur lesquels vous l'utilisez.Si vous vous trouvez soudainement obligé de taper le mot de passe sur une machine inconnue, vous risquez de rencontrer des difficultés considérables.Mon bon exemple de ceci est une situation à laquelle j'ai été confrontée plus d'une fois: devoir me connecter pour imprimer des billets électroniques dans un centre d'affaires de l'hôtel (ils n'étaient disponibles qu'après mon départ; l'impression était nécessaire car ilsne peut pas déchirer un demi-PDF de votre téléphone pour satisfaire leur système désuet).La perte consécutive peut être assez coûteuse
D'accord.J'ai récemment collé un tel mot de passe généré dans mon compte administrateur d'une VM, en supposant que j'utiliserais toujours le copier / coller de Keypass pour les connexions.cependant, l'invite de connexion n'accepte pas le collage, ni l'autotypage automatique de haut-Ascii à partir de Keypass.J'ai dû passer plusieurs heures à apprendre et à écrire 64 codes Alt pour pouvoir me reconnecter.
Utilisez peut-être simplement un mot de passe plus long.S'il est traité par programme, la longueur n'est pas un problème.
S'il n'est pas utilisé pour l'entrée humaine, pourquoi pas simplement une séquence d'octets aléatoires?Sinon, si vous me faites taper «ᚷᛖ ώд ლ ಸ இ 을 身» comme mot de passe par défaut, je voudrai probablement que vous soyez écorché vivant.
Également lié: [Les utilisateurs doivent-ils être autorisés à utiliser le caractère spécial de leur choix lors de la création d'un mot de passe?] (Https://ux.stackexchange.com/q/72568/46361).(Ouais, c'est une question populaire.)
Ce n'est pas vraiment important, mais je pense que la plupart des utilisations de "Unicode" dans la question et les réponses devraient techniquement être "UTF-8".(Unicode fait correspondre les caractères aux nombres; UTF-8 correspond aux nombres aux séquences d'octets.)
Envisagez-vous que les gens copient et collent le mot de passe?Sinon, je ne vois pas la différence entre l'appeler "un mot de passe Unicode aléatoire" et simplement générer une séquence aléatoire d'octets de même longueur et qui se soucie s'ils correspondent à un codage valide pour Unicode.
Que pensez-vous de l'avantage de générer une longue séquence d'octets aléatoires?Ils pourraient être encodés en base64 si vous voulez qu'ils soient typables, mais l'entropie serait la même.
Il ne semble pas que quelqu'un d'autre ait soulevé cela: *** La plupart des gens n'utilisent pas l'anglais. *** Soutenez l'unicode, non pas comme une tactique de sécurité étrange, mais parce que la plupart des gens sur terre et sur Internet, nen'utilise pas l'anglais.
J'ai compris que OP demandait si les systèmes de devinettes bruteforce passeraient par 208 caractères de clavier par position plutôt qu'un UTF-8 ou autre ensemble Unicode beaucoup plus grand par position et rendrait-il plus difficile pour un système de devinettes bruteforce d'accéder à votre mot de passe.
Unicode est une boîte de vers, avec des caractères non imprimables, combinant, de largeur nulle, de changement de direction, de comparaison de chaînes dépendant des paramètres régionaux et de téléchargement de choses que je ne veux pas savoir.À moins que vous ne sachiez vraiment ce que vous faites, restez à l'écart, sinon cela vous rendra la vie misérable vraiment facile.
@TomK.«Chaque fois que vous conservez un mot de passe« uniquement numériquement »(ce qui ressemble à« gestionnaire de mots de passe »pour moi)» - Vous pourriez avoir besoin d'un mot de passe pour accéder à votre gestionnaire de mots de passe.
Quatorze réponses:
Kevin
2018-01-16 20:39:47 UTC
view on stackexchange narkive permalink

Cela ressemble beaucoup à Fencepost Security. Imaginez que vous dirigez une installation entourée de clôtures en mailles de chaîne et d'une hauteur de 500 pieds. Dans quelle mesure la sécurité serait-elle améliorée en faisant de cette clôture une hauteur de 3 000 pieds? Aucun - parce que quiconque essaie d'entrer ne va pas monter les 500 pieds; ils vont creuser en dessous, percer un trou, etc.

De même, vous avez un mot de passe qui contient, disons, 20 caractères alphanumériques aléatoires. C'est 62 ^ 20 possibilités. Vous envisagez de le changer en 20 caractères Unicode aléatoires. Ce qui augmente considérablement l'espace de possibilité, sauf que forcer brutalement un mot de passe aléatoire de 20 caractères n'est pas la façon dont les choses vont être compromises.

J'aime l'idée, mais plus de possibilités par caractère avec la même longueur de chaîne (en caractères) expliqueraient probablement une clôture plus épaisse, de la même manière que des caractères plus ascii le feraient.
@Baldrickk La plupart des algorithmes de hachage couramment utilisés ne dépassent de toute façon pas 72 octets.Un mot de passe de 12 ko est aussi sûr qu'un mot de passe de 72 octets.
@Baldrickk Je pense que cela signifie que quelque chose comme l'ingénierie sociale ou le contournement du schéma d'authentification est plus probable que les mots de passe exposés à une attaque par force brute.
Je devrais noter que par idée - je voulais dire la métaphore.J'aurais du être plus clair.
+1 pour @RickyNotaro-Garcia C'est le fait le plus crédible et le plus probable (et effrayant) que j'ai lu sur la sécurité des mots de passe depuis longtemps.Cela signifie également que pour tout autre chose qu'une recherche dans un dictionnaire, la méthode bruteforce peut être réalisée avec n'importe quel type de chaînes d'entrée et de formats, une simple chaîne de chiffres hexadécimaux fonctionnera probablement si le temps est sans conséquence.
Sjoerd
2018-01-16 18:51:14 UTC
view on stackexchange narkive permalink

C'est une bonne idée du point de vue de la sécurité. Un mot de passe contenant des caractères Unicode serait plus difficile à forcer qu'un mot de passe contenant des caractères ASCII de même longueur. Cela tient même si vous comparez la longueur en octets au lieu de la longueur des caractères, car Unicode utilise le bit le plus significatif, contrairement à ASCII.

Cependant, je pense que ce ne serait pas pratique car les bogues Unicode sont si courants . Je pense que si vous utilisez des mots de passe Unicode partout, vous rencontrerez plus de deux sites sur lesquels vous auriez des problèmes de connexion, car les développeurs n'ont pas correctement implémenté le support Unicode pour les mots de passe.

Les commentaires ne sont pas destinés à une discussion approfondie;cette conversation a été [déplacée vers le chat] (http://chat.stackexchange.com/rooms/71947/discussion-on-answer-by-sjoerd-is-it-a-good-idea-to-use-the-gamme entière-unicode).
Sans oublier, différents claviers dans différents paramètres régionaux vous donneront unicode différent.Ce qui fonctionne sur un ordinateur peut ne pas fonctionner sur un autre ordinateur.
Hector
2018-01-16 19:03:46 UTC
view on stackexchange narkive permalink

Ignorant l'argument Security by Obscurity, c'est une question fondamentale d'entropie. Un mot de passe Unicode à 8 caractères est plus sûr qu'un mot de passe ASCII à 8 caractères, mais moins sûr qu'un mot de passe ASCII à 64 caractères.

En général, je suis d'accord avec Sjoerd - ceux-ci sont susceptibles de causer plus d'inconvénients que d'avantages. En plus de cela, si jamais vous avez besoin de saisir manuellement un mot de passe aléatoire, Unicode va probablement vous rendre la vie misérable.

Cependant, pour le cas extrême où vous devez utiliser un service qui prend activement en charge l'unicode tout en appliquant un limite de longueur maximale du mot de passe (encore une fois, ignorer cela indique généralement d'autres échecs de sécurité) il y a un argument pour cela.

+1 pour la remarque d'assistance active.Avoir des caractères "échappés" ou moins que la prise en charge complète peut être très problématique.S'il ne peut pas être utilisé de manière fiable, il n'est pas «sécurisé».
"Un mot de passe Unicode de 8 caractères est ... moins sécurisé qu'un mot de passe ASCII de 64 caractères."Certains systèmes tronquent les mots de passe à 8 caractères, auquel cas un mot de passe Unicode à 8 caractères est plus sûr qu'un mot de passe ASCII à 64 caractères.
NH.
2018-01-16 21:56:37 UTC
view on stackexchange narkive permalink

La seule raison valable à laquelle je peux penser pour utiliser des caractères Unicode dans les mots de passe est si le nombre de caractères (et non d'octets) dans un mot de passe pour un site particulier est limité (comme cette banque stupide qui avait auparavant un maximum de 10 caractères), de sorte qu'il soit facilement deviné dans un jour ou deux. Dans ce cas, vous pouvez utiliser Unicode (si les propriétaires du site vous le permettent) pour obtenir plus d'entropie dans votre mot de passe pendant que vous demandez aux propriétaires du site de se conformer au NIST 800-63-3 et supprimer les restrictions de longueur (et hacher correctement pour que le stockage des mots de passe ne soit pas un problème).

Je voulais également corriger une idée fausse ici:

Unicode utilise le bit le plus significatif alors que l'ASCII

Bien que vrai pour l'ASCII normal, l'ASCII étendu que certains gestionnaires de mots de passe (par exemple KeePass) peuvent utiliser dans la génération de mots de passe utilise chaque bit de chaque octet, ayant ainsi un entropique plus élevé densité que même Unicode, qui a encore une structure pour indiquer combien d'octets suivants font partie du même caractère (notez qu'il existe une chose telle qu'une séquence d'octets invalide en Unicode).

Étant donné qu'un site qui vous limite aux mots de passe courts ne hache probablement même pas correctement leurs mots de passe (ce qui entraîne l'échec des mots de passe Unicode ou leur stockage avec th e mauvais encodage), vous ne devriez presque jamais perdre de temps à vous soucier des mots de passe Unicode, car même si vous êtes tellement distrait par vos personnages amusants (et le fait que vous devez réinitialiser votre mot de passe car il a été stocké étrangement), un attaquant pourrait deviner vos questions (in) -security ou en utilisant la cryptographie chocolatée pour accéder à votre compte.

Alors que certains recommandent un cas d'utilisation supplémentaire (["Montrer à vos amis"] (https://makemeapassword.ligos.net/Generate)), ce n'est pas valide car les mots de passe ne doivent pas être montrés à vos amis :).
KeePass ne pouvait utiliser chaque bit de chaque octet que si le serveur utilisait un encodage 8 bits, KeePass savait de quel encodage il s'agissait, et chaque étape de transmission était transparente 8 bits.D'après le code source (PwCharSet.cs), il semble que l'option "ANSI élevé" mal nommée de KeePass n'inclut que U + 00A1 à U + 00AC et U + 00AE à U + 00FF, c'est-à-dire les caractères Latin-1 non ASCII imprimables.Si le mot de passe est codé en UTF-8, l'entropie par octet sera en fait plus faible lorsque "high ANSI" est coché que lorsqu'il n'est pas coché.
(Pas que l'entropie par octet importe de toute façon, sauf si les mots de passe sont tronqués avant d'être hachés.)
@Sjoerd est correct: ASCII est 7 bits.Un encodage 8 bits peut inclure ASCII en tant que sous-ensemble, mais ce n'est pas ASCII, c'est un sur-ensemble.Et il existe de nombreux encodages 8 bits, même uniquement dans la série ISO / CEI 8859.Le problème de mauvais encodages existe même avec des encodages 8 bits.
John Deters
2018-01-17 01:08:52 UTC
view on stackexchange narkive permalink

Cette approche pourrait réduire votre sécurité globale dans certains cas, pas l’améliorer.

La sécurité des informations se compose de trois attributs: confidentialité, intégrité et disponibilité (le Triade CIA). En vous concentrant exclusivement sur l'un, vous pouvez facilement oublier l'importance des autres.

La confidentialité des mots de passe est assurée par les principes de l'entropie: à quel point votre mot de passe est-il «impossible à deviner»? Ceci est généralement mesuré par la taille de l'espace de devinettes de force brute, exprimée en termes de puissances de 2 ou bits. Un attaquant par force brute n'a que tant de capacité à deviner; en sélectionnant un mot de passe plus long pour augmenter cette entropie, vous pouvez dépasser toute capacité connue ou prévue à deviner. Obtenir l'entropie sur 80 bits (ou choisir votre valeur) mettra le mot de passe hors de portée même des acteurs des États-nations. Indépendamment de la description trop simplifiée ci-dessus, le fait est qu'aller au-delà de tout ce qui est «hors de portée» n'ajoute pas de manière significative à votre sécurité. Et ce n'est pas pertinent pour la sécurité si vous obtenez l'entropie souhaitée en utilisant 10 caractères Unicode ou 17 caractères ASCII.

La disponibilité signifie "puis-je accéder à mes données quand j'en ai besoin?" Si vous utilisez des jeux de caractères Unicode complets, vous risquez de vous heurter à divers sites qui ne prennent pas en charge Unicode, ou des navigateurs ou des systèmes d'exploitation qui implémentent Unicode de manière incorrecte, ou des sites qui traduisent de manière invisible Unicode en ASCII sous les couvertures. La confusion qui en résulte augmente le risque de restreindre votre futur accès aux données. Cela représente une diminution potentielle de la disponibilité future.

En général, la probabilité qu'un attaquant force votre mot de passe 80 bits est loin d'être aussi élevée que la probabilité de rencontrer un site mal codé qui ne gère pas l'Unicode correctement. Par conséquent, votre sécurité globale pourrait être diminuée au lieu d'être augmentée.

Bien sûr, de nombreux sites ont la longueur des mots de passe et d'autres restrictions qui limitent considérablement l'entropie de vos mots de passe. Dans ces cas, l'utilisation de l'ensemble Unicode complet peut augmenter l'entropie de vos mots de passe, en supposant qu'ils ne présentent pas d'autres défauts cachés. Ainsi, sur ces sites, vous améliorez peut-être votre sécurité; mais il est pratiquement impossible de dire de l'extérieur si un site gère correctement vos données de mot de passe.

Avec une prise en charge médiocre de l'UTF-8 à de nombreuses reprises, l'intégrité est également en danger (au moins du mot de passe, peut-être pas des données que le mot de passe protège).
Si un site vous limite à 10 caractères, je doute fort qu'il autorise 10 caractères chinois.Imaginez que le site sur lequel vous saisissez le mot de passe le convertit en silence en UTF-8 et supprime le bit le plus élevé.Maintenant tu es coincé.
Tom
2018-01-17 01:07:16 UTC
view on stackexchange narkive permalink

Ce n'est peut-être pas une réponse directe, mais si le mot de passe n'est conservé que numériquement, alors vous devriez vous demander pourquoi vous générez un mot de passe , au lieu d'un tableau d'octets. Une fois que vous considérez le tout comme de simples octets, la question ne s'applique plus.

De plus, longueur> complexité dans tout ce qui concerne les mots de passe.

La plupart des applications n'acceptent tout simplement pas un tableau arbitraire d'octets comme mot de passe.Par exemple.essayez de mettre un octet nul dans le mot de passe de votre site Web préféré.
@DmitryGrigoryev peut-être que Tom suggérait une représentation HEX de son tableau d'octets.La source de l'entropie ne peut pas être déterminée en devinant s'il y a plus que ce qu'une attaque de dictionnaire peut trouver.
Il n'est pas clair d'après la question si l'OP recherche un mot de passe qu'il peut entrer n'importe où, ou une implémentation de connexion à utiliser pour son propre site.
Patrick Mevzek
2018-01-18 09:19:37 UTC
view on stackexchange narkive permalink

Il existe une RFC sur votre problème: Préparation, application et comparaison de chaînes internationalisées représentant les noms d'utilisateur et les mots de passe dont le résumé est:

Ce document décrit les méthodes mises à jour pour gérer les chaînes Unicode représentant les noms d'utilisateur et les mots de passe. L'approche précédente était connue sous le nom de SASLprep (RFC 4013) et était basée sur Stringprep (RFC 3454). Les méthodes spécifiées dans ce document fournissent une approche plus durable de la gestion des noms d'utilisateur et des mots de passe internationalisés.

Si vous lisez le français, vous pouvez également en trouver une bonne explication ici: http : //www.bortzmeyer.org/8265.html.

La section 8 de la RFC traite spécifiquement de la sécurité des mots de passe utilisant "n'importe quel" caractère Unicode, avec les sections suivantes:

  • 8.1. Force du mot de passe / de la phrase secrète
  • 8.2. Comparaison mot de passe / phrase secrète
  • 8.3. Comparaison d'identifiants
  • 8.4. Réutilisation de PRECIS
  • 8.5. Réutilisation d'Unicode
Ce.La mise en œuvre d'Unicode est [incroyablement] (https://eev.ee/blog/2015/09/12/dark-corners-of-unicode/) [hard] (https://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default / 6163129% 236163129) et des choses comme l'utilisation d'une normalisation définie sont essentielles pour même avoir une chance de le faire fonctionner.
Boldewyn
2018-01-18 15:39:01 UTC
view on stackexchange narkive permalink

Ajoutant aux autres bonnes réponses, je veux juste souligner ce qui peut mal tourner le long du tuyau en utilisant l'ensemble complet Unicode pour les mots de passe.

En supposant que vous utilisez un chaîne UTF-8 plus ou moins valide,

  • il y a des caractères interprétés comme un saut de ligne au milieu du plan multilingue de base comme U + 2029 Séparateur de paragraphe. Vous pourriez ne pas être en mesure de les saisir dans un champ <input> simple.
  • il y a les deux caractères d'espacement qui peuvent ou non être supprimés par une langue trim () méthode
  • si vous utilisez des caractères de substitution (U + D800-U + DFFF), non-caractères comme U + FDD0, caractères à usage privé ou caractères non attribués (bien que des séquences UTF-8 valides), le comportement d'un ensemble d'outils donné est fondamentalement indéfini (supprimer, remplacer, rejeter, ne rien faire ou toute combinaison de ceux-ci)
  • si vous ajoutez des signes diacritiques, tout outil en cours peut changer cela en représentation NFC ou NKD, en modifiant les octets du mot de passe.
  • et c'est juste du haut de ma tête. Je suis sûr que j'ai oublié beaucoup d'autres problèmes possibles, si les mots de passe sont choisis parmi toute la gamme Unicode.

Donc, comme ce que @JohnDeters a suggéré, cela pourrait être une mauvaise idée car l'avantage d'un espace source plus grand est surpondéré par les parties mobiles du traitement de texte en cours de route.

gnasher729
2018-01-17 03:30:17 UTC
view on stackexchange narkive permalink

Ce qui compte pour la sécurité, c'est l'entropie du mot de passe - combien de bits d'informations réelles y a-t-il dans le mot de passe.

L'autre aspect du problème est la difficulté de se souvenir du mot de passe et de le saisir. Imaginez que vous essayez de taper votre mot de passe sur un iPhone et que vous vous rendez compte que vous ne pouvez pas (je n'ai pas vérifié à quel point il est difficile de taper des caractères Unicode arbitraires). Ou vous vous rendez compte qu'il est très, très difficile de le saisir correctement à 100%. Ou cela vous prend juste du temps - j'ai peut-être un mot de passe avec la même entropie et plus de caractères, mais deux fois plus rapide à taper. Et vous avez besoin de quatre tentatives pour bien faire les choses, tandis que la mienne a raison la première fois.

Luis Casillas
2018-01-19 02:14:45 UTC
view on stackexchange narkive permalink

D'autres ont amplement souligné le risque que les services pour lesquels vous utilisez ces mots de passe n'implémentent pas correctement Unicode. J'ajouterai que les services que aujourd'hui font pourraient demain cesser de le faire, mais sinon je vais sauter ce sujet.

Un élément que je penser qu'il faut considérer ici est de se demander: combien de temps faut-il à un mot de passe pour atteindre un certain niveau de sécurité? Supposons que nous voulons que nos mots de passe soient aussi forts qu'une clé cryptographique de 128 bits (ce qui est probablement excessif pour la plupart des mots de passe de sites Web; je recommande 80 bits). Si vous vous en tenez à des mots de passe ASCII aléatoires, alors un mot de passe de 19 caractères tiré des ~ 95 caractères ASCII imprimables atteint ce niveau. (Le calcul: un ensemble d'environ 100 éléments équivaut à environ 6,6 bits / élément (puisque log2 (10) ≈ 3,3 et log2 (100) est le double), et 128 ÷ 6,6 ≈ 19,4. Donc, 19 caractères ASCII sont en fait environ 126 bits, pas 128, mais meh.)

Unicode a actuellement environ 130 000 points de code définis, un nombre que nous approcherons simplement de 2 ^ 17. Cela signifie que pour atteindre le niveau 128 bits, vous avez besoin de 7 points de code Unicode (128 ÷ 17 ≈ 7,5, donc 7 points de code ne représentent que 119 bits environ, mais, encore une fois, meh.)

Pour une sécurité de 80 bits niveau, ce qui, à mon avis, est plus judicieux pour la plupart des sites Web, est de 12 caractères ASCII contre 5 points de code Unicode.

Êtes-vous prêt à prendre un énorme coup de facilité d'utilisation et à risquer des bogues de site Web juste pour que vous puissiez avoir 5 ou Mots de passe à 7 caractères au lieu de 12 ou 19 caractères? Je ne pense pas que ça en vaille la peine.

JonnyRobbie
2018-01-17 00:34:28 UTC
view on stackexchange narkive permalink

Eh bien, Unicode est «juste» une liste de quelque chose de plus de 130000 caractères. UTF-8 est le codage le plus courant qui prend ce grand nombre et le «convertit» en un nombre de base 256 (ou plus précisément, les règles ont plus de sens en octets binaires) selon un ensemble de règles. Ainsi, si vous souhaitez utiliser un encodage utf-8, vous serez lié à de nombreuses règles réduisant efficacement le caractère aléatoire que vous pourriez souhaiter. Et je ne sais pas comment vous pourriez utiliser toute l'interprétation Unicode.

Si vous n'êtes pas préoccupé par les caractères imprimables, vous pouvez considérer l'ensemble de l'ASCII (ou plus préférablement une extension 8 bits), mais à ce point, pourquoi même s'embêter avec la norme d'interprétation des caractères? Ne pourriez-vous pas simplement utiliser une simple structure binaire aléatoire sans forme alors?

David M
2018-01-17 09:35:18 UTC
view on stackexchange narkive permalink

Même si vous utilisez uniquement le stockage numérique, je détesterais être l'utilisateur qui a besoin de taper quelque chose et qui n'a pas reconnu la différence entre (et (. (Indice: ils sont doubles et simples) spaced)

En utilisant cet exemple sensible à la largeur, comme indiqué dans d'autres réponses, vous vous attendez à ce que la prise en charge de celles-ci fonctionne - selon le classement SQL défini ici, un mot de passe incorrect serait correct!

allo
2018-01-18 20:25:10 UTC
view on stackexchange narkive permalink

Non. Vous voulez augmenter la base d'une fonction exponentielle tout en risquant de casser beaucoup de choses (c'est à dire des appareils qui ne peuvent pas taper vos caractères spéciaux, etc.). Calculez l'entropie de votre mot de passe unicode et rallongez votre mot de passe ascii jusqu'à ce qu'il ait plus d'entropie.

az vaut à lui seul 26 ^ (longueur). disons que vous obtenez 256 ^ (longueur) et éventuellement 2 octets par caractère avec unicode. Ensuite, vous pouvez trouver le seuil de rentabilité 26 ^ (ascii_length) > 256 ^ (2 * unicodelength) quelque part. Choisissez cette longueur comme ascii_length et vous pouvez toujours écrire votre mot de passe et avoir la même sécurité.

Si le site ne prend pas en charge les mots de passe longs (honte à eux), je soupçonnerais ils ne peuvent pas non plus garantir un bon support Unicode. Peut-être que vous serez verrouillé la prochaine fois qu'ils mettront à niveau une bibliothèque interne. Alors pourquoi risquer un problème là-bas? Et un problème difficile à expliquer au support utilisateur, qui sait à peine ce que signifie unicode.

Jonathan Rosenne
2018-01-19 01:34:59 UTC
view on stackexchange narkive permalink

Ce n'est pas une bonne idée de générer des mots de passe Unicode aléatoires, car le mot de passe généré peut être illisible pour l'utilisateur. Mais le texte de la question parle de l'utilisation de mots de passe Unicode, et c'est une bonne idée et recommandée par la section NIST 800-63-3 5.1.1.2 Vérificateurs de secrets mémorisés qui dit:

Les vérificateurs DOIVENT exiger que les secrets mémorisés choisis par l'abonné comportent au moins 8 caractères. Les vérificateurs DEVRAIENT autoriser les secrets mémorisés choisis par l'abonné d'au moins 64 caractères. Tous les caractères ASCII [RFC 20] d'impression ainsi que le caractère espace DEVRAIENT être acceptables dans les secrets mémorisés. Les caractères Unicode [ISO / ISC 10646] DEVRAIENT également être acceptés.

Aux fins des exigences de longueur ci-dessus, chaque point de code Unicode DOIT être compté comme un seul caractère.

Il continue:

Si les caractères Unicode sont acceptés dans les secrets mémorisés, le vérificateur DEVRAIT appliquer le processus de normalisation pour les chaînes stabilisées en utilisant la normalisation NFKC ou NFKD définie dans la section 12.1 de l'annexe 15 de la norme Unicode .

Pour résumer: l'utilisation d'Unicode augmente l'entropie et facilite la vie des utilisateurs qui ne maîtrisent pas l'anglais.

Pourriez-vous expliquer ce que cela ajoute aux autres réponses?
J'ai souligné la différence entre générer un mot de passe Unicode et en choisir un, et que l'entropie n'est pas réduite comme le prétendent d'autres réponses mais augmentée car il faut compter les caractères plutôt que les bits.En outre, NIST autorise non seulement Unicode, mais recommande en fait son utilisation, qui est une réponse directe à la question.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...