Sécurité des mots et des phrases

Ça fait depuis assez longtemps que je m'intéresse aux Bonnes Pratiques en matière de sécurité, même si je ne les suis pas toujours.

Ça fait aussi depuis des années que j'ai conscience de la faiblesse pathétique des mots de passe, qui sont pourtant encore omniprésents.

Je n'ai pas attendu xkcd pour me douter qu'une phrase de passe est plus efficace que les mots de passe difficiles à retenir. En fait j'ai l'impression que c'est encore un nouvel exemple de cette faute de logique qui consiste à considérer comme objectivement difficile (et donc difficile pour tout le monde) quelque chose que l'on trouve soi-même difficile.

Cependant, j'ai laissé ces considérations de côté, car je me croyais au dessus de ça. En effet, les mots de passe aléatoires ne me posent pas vraiment de problème, il me faut une dizaine d'utilisations de mes mots de passe habituels pour les mémoriser, et ensuite il n'y a pas besoin de tellement d'entretien.

Tous mes mots de passe sont donc générés en choisissant aléatoirement dix caractères parmi les lettres majuscules et minuscules, les chiffres, et dix symboles de ponctuation. Autant dire que c'est largement plus fort que les deux exemples de xkcd.

Pourtant ce n'est qu'aujourd'hui, en découvrant diceware, dont j'admire la simplicité et l'efficacité, que j'ai cherché des chiffres pour remettre en question mes pratiques concrètes.

L'entropie de mes mots de passe est donc de 61.70 bits. Comme je le soupçonnais, ce n'est pas loin des 64.62 bits des cinq mots de diceware. Pas assez loin pour justifier à mes yeux un changement d'habitude.

Mais cela a soulevé une autre question, beaucoup plus insidieuse : combien me faut-il d'entropie pour me considérer en sécurité ? Et là évidemment, ça met en lumière le fait que la sécurité dépend des circonstances : 4 chiffres (soit 13 bits), c'est pathétique, mais quand il n'y a que trois essais (genre carte bancaire ou SIM), ça suffit.

Avec mes dix caractères aléatoires, j'estimais taper tellement fort que je pouvais utiliser ça partout sans réfléchir. C'était peut-être vrai il y a dix ans, lorsque les moyens informatiques était plus faibles et mes informations (encore) moins intéressantes. Mais quand est-il aujourd'hui ?

J'ai été plutôt surprise de la difficulté à trouver une réponse sur le grand 'ternet à la question pourtant simple « Combien me faut-il d'entropie pour une identification manuelle ? »

La réponse la moins insatisfaisante est venue de nos chères institutions, pour qui les 64 bits sont tellement pathétiquement bas que c'est une limite minimale acceptable.

Mais alors, que faire ?

Puisque 128 bits est recommandé par l'ANSSI, ça semble être un objectif raisonnable, au moins pour les situations les plus importantes (par exemple, ma clef maîtresse PGP) ou automatisables (par exemple, mes comptes émaux relevés automatiquement par fetchmail).

Ça fait 21 caractères de mon système habituel. Suis-je capable de mémoriser et ensuite entretenir des mots de passes aussi longs ? Il faudrait essayer pour le savoir, mais c'est dangereux si la réponse s'avère négative.

Ou bien 10 mots de diceware ? Je ne saurais dire si ce serait plus facile à mémoriser ou non. Je suppose que je fabriquerai des phrases autour de ces mots, voire que j'utiliserais ces phrases directement en guise de passe (ajouter des mots ne peux pas nuire à l'entropie), le plus grand danger me semble alors être le mélange entre deux phrases de passe mémorisées. Et je ne peux m'empêcher de craindre dépasser une éventuelle limite à la taille des mots de passe.

Et ensuite, où se contenter de moins ?

Probablement un peu partout, car au fond la question est « Contre quelles attaques veux-je être protégée ? », ou peut-être plus réalistement (mais négativement) « Contre quelles attaques acceptè-je d'être vulnérable ? ». En substance, les 128 bits servent à se protéger contre toutes les attaques par force brute. C'est-à-dire le pire des cas : l'attaquant n'a pas de limite dans le nombre d'essais, et sa seule limite dans la vitesse de chaque essai est la puisse de calcul dont il dispose.

On peut donc déjà se contenter de moins au moins lorsqu'une attaque plus efficace et plus facile que la force brute est disponible (par exemple un keylogger), et lorsque le nombre d'essais et/ou la vitesse d'essai sont sévèrement limités (par exemple un service en ligne bien conçu, en supposant que le serveur ne soit pas compromis (et s'il l'est, on est probablement ramené au cas précédent)).

Malheureusement, la mise en pratique est rendue difficile par la difficulté à identifier la situation dans laquelle on se trouve.

Par exemple, quelle force utiliser pour le mot de passe de login physique à une machine chez moi ? Au travail ? Pour le login par SSH, uniquement accessible par le réseau local de la maison ? du travail ? Dans ce cas j'ai tendance à utiliser uniquement des clefs, mais ça déplace juste la question : quelle force pour le mot de passe d'une clef SSH locale sur un ordinateur à la maison ? au travail ? Et pour les clefs SSH root ? Et pour mes sous-clefs PGP sur mes machines ?

C'est compliqué de définir une politique raisonnée de mots/phrases de passe… Quelqu'un parmi mon lectorat aurait-il réussi ce haut-fait ?

Commentaires

1. Le samedi 17 mars 2012 à 0:09, par tth :

Faut pas t'en faire, tu n'es pas la seule : [http://catb.org/~esr/jargon/html/F/flush.html#crunchly-5678]

2. Le lundi 19 mars 2012 à 9:51, par Schmurtz :

C'est marrant, je viens juste de lire un article sur la sécurité des passphrases :
http://www.schneier.com/blog/archives/2012/03/the_security_of_5.html
Ce n'est pas applicable à ton cas, ça traite plus de Mme Toutlemonde.

À part ça, essaie de ne pas penser sécurité de l'authentification uniquement sur l'entropie des mots de passe. Comme tu l'as fait remarqué, les 4 chiffres d'un vide PIN de carte bancaire ou carte SIM sont suffisant, en tenant compte du nombre limité de tentatives autorisées. Au lieu de bloquer l'acces définitivement, on peut aussi opter pour une temporisation très dissuasive de bruteforce.

Comme tu sembles utiliser des clefs privées pour l'authentification, ça supprime tout risque de brute-force en direct. Le risque de voler tes clefs privées + casser les mots de passe associé, est très faible, et il y a généralement plus simple, si quelqu'un souhaite vraiment accéder à tes données. (Tu fais du trafic d'armes ? t'es agent secret ? pour avoir envie de mettre tant de protection ;))

Je pense aussi qu'il ne faut pas chercher le maximum de sécurité pour être correctement protégé, mais avoir un niveau raisonnable, associé à un système de détection de comportements anormaux pour anticiper et pouvoir agir en cas d'attaque.

3. Le lundi 19 mars 2012 à 15:12, par Fred :

Perso, je perçois la sécurité comme le système en peau d'oignon à savoir que les mots de passe ne doivent pas être la seule sécurité.
Pour mes accès SSH en distant, j'utilise plusieurs principes :
Pour le démon SSH :
- Accès SSH limité à certains utilisateurs seulement
- Accès Root interdit
- Version de SSH cachée

Pour l'authentification PAM :
- Le système de mot de passe à usage unique (OTP en english cf. [http://en.wikipedia.org/wiki/One-time_password])

Pour Packet Filter :
- le blocage des attaques par force brute en limitant le temps entre deux connexions
- ajout en blacklist des IPs tentant un nombre de connexions trop rapides

En couplant ça à un mot de passe d'environ 20 caractères, c'est suffisant pour moi en ce qui concerne l'accès SSH.

Par principe, il faut se dire que de toutes façons, tout mot de passe finira par être cassé et le changer dans un temps inférieur au temps de "cassage" peut permettre de se mettre à l'abri de pas mal de tentatives.

Cela revient à peu près au principe de crypto qui dit qu'il faut que la durée de validité du message chiffré soit inférieure au temps nécessaire pour casser le code.

Mais bon, j'aime pas la sécurité par mots de passe :)

4. Le mercredi 21 mars 2012 à 9:56, par Natacha :

tth, j'avoue avoir du mal à voir le lien entre mon texte et ton lien, mais je reste très contente de te voir passer par ici :-)

Schmurtz, je suis aussi le blog de Bruce Schneier, et c'est de là qu'est venue l'idée pour cet article: [http://www.schneier.com/blog/archives/2012/01/protecting_your_1.html]. Le numéro dans l'URI de cet article trahit qu'il a été commencé entre le 4 janvier et le 13 février ;-)

Sinon le fond du problème est de savoir qu'est-ce qui est raisonnable. Et je soupçonne qu'en plus la réponse soit subjective : par exemple je considère la réutilisation de mot de passe comme bien pire que leur stockage hors-cerveau, du coup j'écris mes mots de passe sur papier (je préfère ça aux solutions logicielles parce qu'il y a moins d'intermédiaires potentiellement compromis, et parce que la sécurité d'un objet physique est beaucoup plus facile à gérer intuitivement). Je doute que cette façon de faire emporte l'unanimité.

Cependant j'aimerais beaucoup trouver des pistes pour me fabriquer ma propre réponse…

Fred, la sécurité informatique est un vaste sujet, que je n'avais pas du tout l'ambition de couvrir ici. Cependant je ne peux m'empêcher d'exprimer mon scepticisme devant l'interdiction de l'accès root par SSH, ou plutôt devant les alternatives: sudo et su sont beaucoup plus faciles à compromettre une fois un compte utilisateur silencieusement compromis que sshd. Du coup les seuls access root sur mes machines sont le login direct (quand j'ai un accès physique) ou SSH uniquement par clef (différente de celle pour les accès aux comptes non-privilégiés).

Pour revenir au sujet, je n'aime pas non plus les mots de passe, mais c'est souvent incontournable pour identifier un humain, car en réalité les certificats identifient une machine, les OTP identifient un token, etc, mais jamais l'humain qui s'en sert. En dehors de la biométrie (que j'aime pour l'instant encore moins que les mots de passe) et des mots de passe, je ne vois pas comment atteindre l'humain, qui est pourtant souvent le seul niveau d'identification pertinent.

La rotation des mots de passe est effectivement importante, et en fait cet article est né de la conjonction de l'article ci-dessus et du fait que c'était justement la période de l'année où je change mes mots de passe, ce qui me rend plus sensible à ces questions.

Mais ça ne répond pas à la question « Quel est ce temps de "cassage" ? » qui dépend non seulement de l'entropie, mais aussi du moyen d'attaque.

Par exemple lorsque j'ai été jetée de chez mon ancien employeur, il est resté sur mon disque dur professionnel une clef SSH qui permet l'accès à beaucoup de mes comptes. Et je sais qu'il n'est pas au dessus de la récupération de ce genre de données (même s'il le niera). Donc d'un seul coup l'attaque offline contre cette clef est devenue possible, ce qui change radicalement la « péremption » de cette clef.

Autre exemple, les sites qui stockent les mots de passe en clair : j'ai tendance à penser que les sites que j'utilise ne stockent qu'un hash, mais des gens comme Anonymous ont exhibé plusieurs exemples où le mot de passe clair est inutilement stocké. Combien de mes mots de passe ne tiennent qu'à un vol de base de données ?

5. Le mercredi 21 mars 2012 à 17:10, par Fred :

"la sécurité d'un objet physique est beaucoup plus facile à gérer intuitivement"
C'est pour ça que je génère mes logins OTP avec mon téléphone portable :D

"les OTP identifient un token"
Les OTP sont normalement associés à un mot de passe. Leur intérêt réside dans le fait de ne jamais faire transiter ce mot de passe sur un media non maitrisé.
Si tu associes le mot de passe à l'humain alors tu associes aussi le token à cette même personne.

"sudo et su sont beaucoup plus faciles à compromettre une fois un compte utilisateur silencieusement compromis que sshd."
Je suis d'accord mais de toutes façons, la sécurité d'un système tient à la sécurité du plus faible de ses maillons. Un des maillons les plus faibles reste quand même l'humain.

6. Le mercredi 21 mars 2012 à 19:16, par Natacha :

Fred, 1) la sécurité d'un téléphone portable non-idiot est beaucoup moins intuitive que celle d'un morceau de papier. Par exemple au niveau des malware qui peuvent hanter les différents market/store/whatever. Bien sûr, sans critiquer ton choix de compromis entre confort et surface d'attaque.

2) Il y a plusieurs technologies d'OTP, mais leur seul point commun est une forme de génération procédurale, qui implique donc une machine et ainsi un « token » (je désigne par là aussi bien une machine qui génère un OTP extemporanément qu'un support (par exemple papier) sur lequel sont stockés des OTP précalculés). Il faut aussi un secret plus ou moins directement partagé avec le service auprès duquel on s'identifie, mais cela n'implique nullement qu'il soit partagé avec quelqu'humain que ce soit.

Par exemple, les tokens matériels synchronisés temporellement ne sont associés à aucun mot de passe. De même qu'une grille OPIE, même si on peut aussi s'en servir en calculant la ligne demandé extemporanément à partir du secret, qui devient du coup mot de passe ; mais alors on perd alors la vérification de la consécutivité les lignes demandées, qui peut servir à détecter les intrusions.

3) laisser sans surveillance une machine dans un endroit public pendant 5 minutes, c'est bien une faiblesse du maillon humain ? Ça suffit à compromettre un compte utilisateur distant, y mettre un su vérolé dans le path ou en alias. Ça ne suffit pas pour faire quoi que ce soit avec une clef chiffrée non utilisée. BTDTGTTSWI.

7. Le samedi 28 avril 2012 à 6:28, par Laurent :

Mes deux mots de passe (ou passphrase) que je considère cruciaux sont 1) celui de ma clef PGP 2) celui qui déverrouille le disque dur de mon ordinateur portable.

Les autres sont soit générés aléatoirement par "pwgen" et stockés sans scrupule sur mon disque dur, soit un maillon dans une authentification 2-factor (clef ssh stockée sur le disque dur chiffré, login unix "blindé" avec HOTP via mon mobile).

Je parle ici uniquement de mon usage personnel. Au doigt mouillé, ça correspond à mon niveau de paranoïa.

8. Le samedi 24 novembre 2012 à 14:33, par nolimits :

Bordel je croyais que l'enthropie etait 1 grandeur physique qui mesure la dégradation de l'énergie.
Bordel de merde c'est pour que mon PC chauffe comme 1 ruche meme en veille !!!!! Ah oui c'est un asus

Poster un commentaire

Mise en forme historique : pour mettre en valeur un mot ou un groupe de mot, tapez une étoile de part et d'autre, sans mettre d'espace entre l'étoile et le mot, comme ceci : *mise en valeur*. Pour insérer un lien, mettez le entre crochets, comme ceci : [http://instinctive.eu/].

Mise en forme markdown : voir le guide détaillé, en résumé c'est le Markdown traditionnel, sans HTML ni titres, mais avec les tables PHP-Markdown-Extra.

Attention : les balises HTML entrées dans les commentaires seront affichées telles quelles, et non pas interprétées.

Autour de cette page

 

Autour de cet article

  • Publié le 15 mars 2012 à 18h36
  • État de la bête : pleine de questions
  • 8 commentaire(s)
  • Tag : Geek

Tags

Archives

Site-level navigation and features

 

Instinctive.eu

Contact

Sections

Validation

Copyright © 2008-2016 Natacha Kerensikova

Butterfly images are copyright © 2008 Shoofly