Journal Diceware -- Liste de mots en français

Posté par .
Tags : aucun
0
31
août
2004
Diceware est un système très simple qui permet de générer des « phrases de passe » (« passphrase » en anglais) sûres (c.-à-d difficiles à casser) pour utiliser avec des logiciels de chiffrement tels que PGP/OpenPGP/GnuPG, S/MIME, et probablement encore d'autres.

Diceware se fonde sur des jets de dés à 6 faces pour choisir au hasard des mots dans une liste de mots ; ces mots, une fois assemblés, forment la phrase de passe. Les dés sont un élément clé du système, car ils donnent des résultats réellement aléatoires, au contraire des fonctions du type rand(), qui sont pseudo-aléatoires, et donc introduisent un biais dans la distribution statistique des mots choisis, qui permettrait de casser la phrase de passe plus facilement.

Si le paragraphe ci-dessus est incompréhensible, c'est pas grave, l'essentiel est là : il faut utiliser des vrais dés, pas de nombre aléatoire généré par un ordinateur.

Il existe des listes de mots en anglais, allemand, finnois, polonais et espagnol. Le français manquait, mais c'est maintenant réparé :) Avant de soumettre la liste de mots au site original, j'apprécierais de recevoir des commentaires (il y a sûrement des choses à améliorer).

Le site original (en anglais) de Diceware : http://world.std.com/~reinhold/diceware.html(...)

Une traduction en (mauvais) français : http://www.gjldp.org/CHARENTAISES/article.php3?id_article=4(...)

La liste de mots en français : http://www.mit.jyu.fi/mweber/software/diceware/francas.ps(...)
Le source en LaTeX : http://www.mit.jyu.fi/mweber/software/diceware/francais.tex(...)
et la liste de mots originale : http://www.mit.jyu.fi/mweber/software/diceware/src/francais.wordlis(...)

Commentaires, relecteurs et beta-testeurs sont les bienvenus !
  • # Générateur aléatoire

    Posté par . Évalué à 4.

    L'ordinateur peut générer des nombres aléatoires (et pas pseudo alétoires) en se basant sur des éléments extérieurs comme par exemple le delai entre l'appui de deux touches, l'uptime ou encore le bruit récupéré par un micro. D'ailleurs 'dev/random' fonctionne un peu comme ça
    (cf. /usr/src/linux/drivers/char/random.c).
    Il est vrai que vu le nombre de lancés, c'est encore faisable à la main.
    • [^] # Re: Générateur aléatoire

      Posté par (page perso) . Évalué à 3.

      Je croyais que /dev/random était déconseillé et qu'il fallait lui préférer /dev/urandom ?

      L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

      • [^] # Re: Générateur aléatoire

        Posté par (page perso) . Évalué à 5.

        D'après random(4)
        /dev/random est particulièrement adapté pour des cas où l'on a ponctuellement besoin de nombres hautement aléatoires (création de clés par exemple).
        En fait random donne des trucs plus aléatoires mais moins souvent que urandom. Donc il faut l'utiliser avec parcimonie pour ne pas épuiser la réserve d'entropie du système, histoire que les autres applications puissent en profiter aussi.

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

      • [^] # Re: Générateur aléatoire

        Posté par . Évalué à 3.

        Je pense que c'est plutôt l'inverse. En effet, /dev/urandom fournit une sortie continue, alors que /dev/random s'arrête dès que les I/O (sur lesquelles est basée la sortie aléatoire) sont insuffisantes pour s'assurer du caractère aléatoire de la sortie.
  • # Et l'entropie alors ??

    Posté par (page perso) . Évalué à 3.

    Diceware se fonde sur des jets de dés à 6 faces pour choisir au hasard des mots dans une liste de mots ; ces mots, une fois assemblés, forment la phrase de passe. Les dés sont un élément clé du système, car ils donnent des résultats réellement aléatoires, au contraire des fonctions du type rand(), qui sont pseudo-aléatoires, et donc introduisent un biais dans la distribution statistique des mots choisis, qui permettrait de casser la phrase de passe plus facilement.

    Je ne comprend pas comment une suite de mots français pourraient avoir plus d'entropie qu'une suite generée par rand(). De plus, l'espace des mots de passe générés avec des mots francais (donc seulement des lettres) est plus petit que celui où on accepte toute la table ASCII :

    BonjourAliceBobCharly
    &jGQé"àç_'(_èç$^:;,:!

    Apres c'est sur que c'est sur que c'est plus facile de se souvenir de la premiere passphrase, que de la seconde ...
    • [^] # Re: Et l'entropie alors ??

      Posté par . Évalué à 5.

      Parce que rand() n'est pas vraiment aléatoire : ça utilise une liste de nombres, donc si on connait le premier nombre d'une série de nombres aléatoires, on peut retrouver les nombres suivants en appliquant le même algo avec la même « graine » (seed). Comme rand() n'est pas parfaitement aléatoire, on peut utiliser ce fait pour casser plus facilement le mot de passe.
      Autant l'entropie d'un dé est connue, parce qu'aléatoire, autant l'entropie de rand(), je ne la connais pas (parce je ne sais pas comment la calculer ; ça dépend de l'algo).

      Pour ce qui est de la phrase de passe (PdP), on ne compte pas l'entropie apportée par chaque lettre, mais l'entropie apportée par chaque mot. au sein de la phrase. La liste contient 7776 (6^5) mots ; chaque mot représente une des composantes de la phrase de passe.
      Si on a une PdP de 2 mots, on a 7776 x 7776 combinaisons possibles ; avec 3 mots on a 7776 x 7776 x 7776 combinaisons possibles. Si les mots sont choisis purement au hasard, il faut alors tester toutes les combinaisons possibles pour réussir à craquer la PdP.

      Diceware est conçu pour permettre d'utiliser des mots courants d'une langue donnée, et en même temps être résistant aux attaques par dictionnaire (qui consiste à essayer tous les mots d'une langue pour craquer la PdP)

      Autre explication : tu parles de créer des mots de passes avec des caractères ascii. En supposant qu'on puisse utiliser tous les caractères ASCII (128 symboles), on peut créer des MdP d'une longeur de 2 caractères (128 x 128 possibilités), de 3 caractères (128 x 128 x 128 possibilités) etc. Diceware propose de remplacer le caractère (en tant qu'unité) par un mot, et la table de 128 caractères par une table de 7776 mots. La PdP est plus longue qu'un mot de passe, mais plus facile à se rappeler.

      Petit calcul pour les matheux : l'entropie d'une lettre de l'alphabet choisie au hasard est de log2(26) = 4,7. Une PdP Diceware de 5 mots (en moyenne 20 caractères) a une entropie de 64,6 bits. Pour obtenir la même entropie avec des lettres (minuscules) au hasard, il faut 14 lettres. Mais la PdP diceware, bien que 50% plus longue, sera bien plus facile à mémoriser, pour un niveau de sécurité identique, qu'une suite de 14 lettres choisies au hasard.
      • [^] # Re: Et l'entropie alors ??

        Posté par (page perso) . Évalué à 4.

        Franchement, je pense que l'idée que le caractère non-aléatoire de rand
        rend le cassage plus facile relève du fantasme.

        On ne peut pas dire qu'un nombre est plus aléatoire qu'un autre, on peut
        dire qu'une suite (infinie ou grande) de nombres est plus aléatoire qu'une autre,
        au sens où la loi observée s'éloigne de la loi produit (indépendance théorique).

        Effectivement, rand est "pseudo aléatoire", ce qui veut dire en pratique
        que si tu tires avec rand une suite d'un million de 0 et de 1, tu n'auras pas quelque
        chose qui aura exactement la loi uniforme sur les suites d'un million de 0 et de 1.
        Ce phénomène est génant quand on fait de la simulation de Monte-Carlo, et
        là on a besoin de très bons générateurs pour avoir un résultat juste.

        Ici on ne tire que 5 nombres. C'est vraiment trop peu pour qu'un biais par rapport
        à la loi théorique puisse se faire sentir. Si c'était le cas, ça voudrait dire que
        le générateur aléatoire est vraiment merdique et qu'on ne pourrait en faire aucun
        usage en simulation, ce qui n'est heureusement pas le cas.(physique théorique, gestion de files d'attente,...)
        • [^] # Re: Et l'entropie alors ??

          Posté par . Évalué à 2.

          Je ne suis pas spécialiste des statistiques, loin de là. Mais le fait que, connaissant l'algorithme et l'amorce (seed), on puisse prédire quel sera le prochain nombre généré par rand(), ce n'est pas gênant pour le caractère aléatoire du tirage ? Est-ce qu'une suite de nombres aléatoires est seulement caractérisée par sa distribution? La non-prédictibilité du nombre suivant n'entre pas en jeu du tout ?
          • [^] # Re: Et l'entropie alors ??

            Posté par (page perso) . Évalué à 3.

            Oui, effectivement si tu connais l'amorce et l'algo, tu connais tout.
            La feinte, c'est qu'en réalité tu ne connais pas l'amorce.
            Disons que ton générateur te donne des nombres entre 0 et N.
            (typiquement N=2^gros-1)
            Tu as u_0, puis u_{n+1}=f(u_n)
            On est d'accord, si tu as u_0 et f tu as tout.
            Seulement en fait l'info que tu as ce n'est pas la suite u, mais une suite v
            définie par v_n=g(u_n).
            (Par exemple ici g(x)=1+partie_entière(x/M*6)).

            Donc le jeu c''est justement de choisir f, de telle manière que même si tu connais v_0, v_1, v_2, v_3, v_1000, tu ne peux pas dire grand chose sur v_{1001}.
            • [^] # Re: Et l'entropie alors ??

              Posté par . Évalué à 2.

              Je comprends ce que tu veux dire. Mais si on génère une suite de nombres selon un processus déterministe, l'entropie de cette suite de nombres n'est pas constante : elle va diminuer au fûr et à mesure que des mathématiciens fous vont inventer des méthodes pour trouver v_1001 à partir de v_0...v_1000. L'entropie d'un lancer de dés, par contre, est constante, parce que non déterministe. Voilà ma théorie à moi que j'ai (qui peut-être tout à fait fausse, d'ailleurs). On a bien trouvé récemment une collision sur MD5 et SHA-0, pourquoi pas alors une méthode pour faire ce que je décris ci-dessus ?
              • [^] # Re: Et l'entropie alors ??

                Posté par (page perso) . Évalué à 2.

                Bon, j'ai pas été clair.
                Ici, l'idée c'est d'aider les gens à choisir une phrase de passe parmi une
                liste de (6^5)^5 phrases possibles, parce que si tu les laisse faire, un
                sur cinq prendra "god bless the united states".
                Il se trouve qu'après ces phrases sont codées avec un algo de la mort, mais ici
                ce n'est pas très important, puisqu'on fait l'hypothèse qu'on ne sait pas casser l'algo (sinon tous les dés du monde ne peuvent rien pour toi).

                Donc, la question est "est ce qu'un vrai dé est plus efficace qu'un dé électronique" ? D'abord il y a la question du germe: si tu acceptes l'hypothèse que nous sommes dans un monde déterministe, il n'y a pas de hasard
                dans la partie fractionaire arrondie à la 15e décimale du nombre de millisecondes depuis que tu as allumé ton ordinateur ni dans la partie fractionaire arrondie à la 15e décimale du nombre de millisecondes où tu as tenue une fille dans tes bras , ni dans la face sur laquelle va tomber ton dé.
                Bon, en prenant ce nombre de millisecondes comme germe, on a réussi à prendre un nombre
                au hasard (qui n'est pas au hasard, car le hasard n'existe pas, mais bon va faire comme si car on ne peut pas faire autrement). Note qu'il n'y a que 2^M nombres possibles, mais comme 2^M>> (6^5)^5=2^64, ce n'est pas grave.
                Maintenant tu veux un deuxième nombre au hasard. Ah ben merde on avait déjà eu du mal à en avoir un. Comme tu ne veux pas rebouter ton ordinateur ni demander à ta copine de te faire un calin, tu ne pourras pas avoir de deuxième
                nombre au hasard. Comment faire ?
                En fait, tout ce qu'on peut faire, c'est distiller au compte-goutte tout le hasard
                qui est dans le germe. C'est le boulot du générateur de nombre aléatoires,
                qui te file une suite de nombres, avec lesquels tu fabriques
                une phrase de passe parmi les (6^5)^5 possibles.
                Donc ton générateur de nombres aléatoires, il va te donner une fonction
                qui a un germe x associe une phrase F(x).
                Si ton générateur est bon (et là il y a des protocoles de validation pour ça),
                les (6^5)^5 valeurs possibles vont être prises à peu près aussi souvent
                les unes que les autres lorsque x décrit l'ensemble des nombres de 0 à 2^M,
                ce qui fait que tu n'as pas d'intérêt à tenter l'un plutôt que l'autre.

                Je crois (enfin j'espère) comprendre ce que tu as en tête quand tu parle
                d'entropie, mais il me semble que ça ne s'applique pas ici car ça reviendrait à dire à tes ennemis quels sont les nombres qui ont été donnés au hasard par ton générateur avant (ou après) que tu aies tiré ton mot de passe, mais ça évidemment tu ne le feras pas.
                • [^] # Re: Et l'entropie alors ??

                  Posté par . Évalué à 2.

                  Le générateur de nombres aléatoires étale le hasard contenu dans le germe. Soit. Mais il le fait de manière déterministe. Donc le germe contient toute l'entropie du système. Si le germe est codé sur 32 bits (certains générateurs de nombres aléatoires ont un germe plus long, mais celui de la glibc est sur 32 bits il me semble), il apporte une entropie de 32 bits à la phrase de passe générée, même si celle-ci fait plus 5 mots !
                  Si de plus on utilise la fonction time() pour générer le germe, on peut essayer de deviner quand la phrase de passe a été utilisée, et réduire encore la fourchette de valeurs à essayer pour craquer la phrase de passe (une année contient environ 32 millions de secondes, donc si on sait quelle année la phrase de passe a été générée, on a une entropie de 25 bits, c'est à dire la même entropie qu'une phrase de passe Diceware de 2 mots).

                  Tout ça pour dire qu'il faut choisir le germe au hasard, avec une entropie supérieure ou égale à celle de la phrase de passe qu'on veut générer. Et comment est-ce qu'on va choisir le germe ? Avec des dés ? :)
  • # Encore des francisation idiotes

    Posté par (page perso) . Évalué à 2.

    « phrases de passe » (« passphrase » en anglais)


    Ca deviens de plus en plus pathetique, vraiment.
    • [^] # Re: Encore des francisation idiotes

      Posté par . Évalué à 2.

      Propose mieux. Quand je demandais des commentaires, je sous entendais des commentaires constructifs.
      • [^] # Re: Encore des francisation idiotes

        Posté par (page perso) . Évalué à 1.

        Je ne commente pas parce que tu l'as demandé. Je critique, idiotement, parce que certains ici ont une certaine tendance a essayer de franciser a mort des termes informatiques. Et tout ca, ca deviens ridicule.
        "phrase de passe", tu n'aurais pas pu faire plus mot-a-mot.

        Ou on laisse le mot en anglais, ou on a une traduction correcte. Moi je n'en ai pas, alors je ne donne pas d'idée, mis a part "passphrase" qui me conviens parfaitement.

        (a quand le retour du "deverminage" et autres "cédéroms" ?)
        • [^] # Re: Encore des francisation idiotes

          Posté par . Évalué à 4.

          « password » se traduit en bon français par « mot de passe », et cette expression a été utilisée bien avant l'ère informatique (1931 d'après le TLFI ; ce n'est donc pas une francisation du password utilisé en informatique). Je ne vois pas en quoi utiliser « phrase de passe » pour différencer ce dernier concept de celui de « mot de passe » (c'est à dire utiliser plusieurs mots au lieu d'un seul) serait davantage une francisation qu'une adaptation d'une expression française préexistante.

          Bref, faut pas voir le mal partout.
          • [^] # Re: Encore des francisation idiotes

            Posté par (page perso) . Évalué à 3.

            Ce n'est pas le fait de voir le mal partout.

            Oui effectivement, mot de passe et password sont dans un sens comme dans l'autre des traductions mot a mot.

            Ce que je veux souligner, c'est que tu met une traduction "exacte", que tu te sens obligé (et tu as bien fait) de commenter par le mot anglais original.
            Pour moi une traduction ne vaut rien si l'ont est obligé de la mettre en rapport avec le mot original.

            Tout bêtement, je voulais juste dire que "passphrase" est un mot suffisament utilisé et connu, et qui, dans le contexte de cet article technique n'avais absolument pas besoin d'etre affublé d'une traduction francaise inutile.

            Il n'y a pas de mal, ni de mon coté, ni du tiens, mais je continue de penser que la traduction a outrance est d'une inutilité flagrante, comme le montre ta phrase.

            no offense, pour enfoncer le clou :)
            • [^] # Re: Encore des francisation idiotes

              Posté par . Évalué à 1.

              Le problème dans la traduction, c'est que « phrase de passe », est un néologisme (tout comme « passphrase » d'ailleurs), qui n'est pas dans le vocabulaire courant. Je ne veux pas utiliser de néologisme sans l'avoir défini, ou mis en rapport avec un autre mot qui peut aider le lecteur à comprendre ce néologisme. Cela dit, au lieu de le mettre en rapport avec « passphrase », j'aurais pu ajouter « mot de passe » entre parenthèses, ce qui aurait permis de m'affranchir totalement de l'anglais. Après tout, je n'ai pas traduit ce texte pour mon utilisation personnelle (je parle suffisamment bien l'anglais pour ne pas avoir besoin de traduction), mais pour les gens qui ne parlent pas l'anglais du tout.
            • [^] # Re: Encore des francisation idiotes

              Posté par (page perso) . Évalué à 3.

              En même temps :

              password = mot de passe
              passphrase = phrase de passe

              Cela n'est pas super choquant.

              Tout bêtement, je voulais juste dire que "passphrase" est un mot suffisament utilisé et connu

              Moi je ne connaissais pas ce mot. Je suis peut être un inculte fini.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.