Pourquoi ne pas utiliser une date comme mot de passe

Un petit exemple intéréssant pour aborder la complexité des mots de passe et définir le terme d’entropie.

Le format d’un mot de passe à 8 chiffres est encore couramment proposé de nos jours. Par exemple, on retrouve des codes à 8 chiffres :

  • dans le milieu bancaire : mots de passe d’accès aux banque en lignes
  • pour vérrouiller les téléphones : code d’accès à un iPhone

Le format d’un code à 8 chiffres semble propice à l’utilisation de votre date de naissance ou de celle de vos enfants ou parents. Cet article cherche à vous dissuader d’utiliser une date pour un code de sécurité à 8 chiffres :-).

Exemple d’un format de code à 8 chiffre avec une date : 25122001

Entropie d’un mot de passe

Definition : Le terme d’entropie caractérise le niveau de désorganisation, ou d’imprédictibilité du contenu en information d’un système [1].

Ce terme Entropie surtout utilisé en physique, est de plus en plus courament utilisé comme mesure de la force d’un mot de passe. On parle d’entropie d’un mot de passe mesurée en bits. Le nombre de bits correspondant à la longueur d’une clé aléatoire avec la même complexité correspondant au mot de passe.

J’ai découvert cette notion d’entropie appliquée aux mots passe en 2012 dans le légendaire article d’un ingénieur de Dropbox [2]. Article précurseur de la tendance actuelle qui vide à privilégier la longueur des mots de passe à des règles arbitraires de complexité.

zxcvbn: realistic password strength estimation

On retrouve maintenant ce terme d’entropie dans les dernières recommandations de l’ANSSI et de la CNIL sur les mots de passes.

Selon l’ANSSI [3] :

La robustesse d’un mot de passe est généralement mesurée au moyen de l’entropie, exprimée en bits. L’entropie d’un mot de passe peut être estimée en calculant l’ensemble des mots de passe possibles pour une longueur donnée et une complexité donnée.

ANSSI : Recommandations concernant les longueurs minimales des mots de passe

Selon la CNIL [4] :

L’« entropie » peut être définie dans ce contexte comme la quantité de hasard. Pour un mot de passe ou une clé cryptographique, cela correspond à son degré d’imprédictibilité théorique, et donc à sa capacité de résistance à une attaque par force brute.

Calcul de l’entropie d’une date et comparaison

Pour calculer l’entropie en taille de clé équivalente :

  1. Calculer le nombre de combinaison totales
  2. Faire le logarithme base 2 du résultat pour savoir à combien de bits cela correspond (bit = 0 ou 1)

Ou utiliser un site qui fait cela pour vous [5].

Dans notre cas, entropie d’un code à 8 chiffres :

Total de cominaisons possibles : 10^8 = 100000000 (cent millions)

Entropie : log2(10^8) =~27 bits, ce qui est déjà considéré très faible pour un mot de passe [5].

Pour comparer avec un mot de passe composé de lettres choisies aléatoirement, cela correspond à un mot de passe de 5 à 6 lettres minuscules.

Maintenant, refaisons le calcul en restreignant ce code de 8 chiffres à un format de date :

  • Années probables de naissance de vos enfants et ancètres. 1892 - 2022 -> disons 130 possibilités
  • 12 mois dans l’années
  • 31 jours maximum dans un mois
  • 4 formats de date courament utilisés (aaaammqq, mmqqaaaa, aaaaqqmm et qqmmaaaa)

Total de combinaisons possibles : 1301231*4 = 193440 (moins de deux cent mille)

Entropie : log2(193440) =~17 bits, on a perdu 10 bits d’entropie. Il est donc 2^10 fois plus rapide à pirater, soit environ 1000 fois plus rapide.

Pour comparer avec un mot de passe composé de lettres choisies aléatoirement, cela correspond à un mot de passe de 3 à 4 lettres minuscules.

Ce qu’on peut en tirer comme conclusions :

  1. Un code de 8 chiffres au format date est environ 1000 fois plus rapide à pirater qu’un code choisi plus aléatoirement.

  2. Un mot de passe de 8 chiffres est déjà un mot de passe considéré comme très faible et son usage doit s’accompagner de mesures de sécurité complémentaires, comme par exemple :

    • L’identifiant est aussi un code impossible à deviner (pour l’accès aux banque en ligne, l’identifiant est en général aussi un code à 8 chiffres, ce qui fait 16 chiffres en tout)
    • L’accès se vérouille temporairement au bout de quelques essais : comme sur votre téléphone
    • L’accès n’est pas exposé sur internet : comme sur votre téléphone ou il faut déjà voler le téléphone pour pouvoir essayer d’accéder à vos données

Limite de l’entropie, pour aller plus loin

La valeur d’entropie est difficile à définir, car de nombreux facteurs peuvent réduire l’entropie d’un mot de passe en apparence aléatoire. L’entropie est de fait difficile à définir précisément en dehors d’un mot de passe vraiment aléatoire (voir ci-dessous).

Parmis les facteurs pouvant réduire l’entropie d’un secret :

  • utilisation de mots du dictionnaire
  • utilisation de substitutions communes dans des mots du dictionnaire
  • mot de passe aléatoire mais prononçable.
  • mot de passe aléatoire mais évitant les caractères ambigüs.
  • mot de passe aléatoire mais facile à saisir.
  • mot de passe proche d’un ancien mot de passe lui même déjà compromis

Selon l’ANSSI [3] :

La sécurité des mots de passe est souvent réduite à l’estimation de leur « force », c’est-à-dire l’estimation de leur entropie exprimée en bits. Néanmoins, cette estimation ne vaut que si chaque caractère (respectivement chaque mot) du mot de passe (respectivement de la phrase de passe) est choisi de manière uniformément aléatoire. Dans le cas contraire, c’est-à-dire dans le cas où les utilisateurs choisissent eux-mêmes leur mot de passe, ils sont habituellement facilement mémorisables comme un mot du dictionnaire, une date, une citation, etc. L’entropie de tels mots de passe se retrouve fortement réduite et son estimation réelle devient très difficile.

Selon la CNIL [4] :

Ici, le terme d’entropie, appliqué à un mot de passe, correspond à son entropie idéale dans l’hypothèse où il serait généré aléatoirement, sachant que toute règle de construction d’un mot de passe conduit nécessairement à limiter l’espace des choix possibles, et donc à limiter son entropie pour une longueur donnée. Par exemple, choisir un mot de passe parmi les mots d’une langue revient à limiter très fortement le nombre de combinaisons de lettres possibles en pratique. En effet, chaque langue n’admet qu’un nombre limité de suites de lettres, servant à former les syllabes des mots. La tentation, pour de nombreux utilisateurs, de choisir des mots de passe « simples à retenir » facilite les attaques dites « par dictionnaire », dans lesquelles, au lieu de tester par force brute l’intégralité des combinaisons possibles, n’en sont testées qu’un nombre très limité, comprenant des mots du dictionnaire ou des prénoms, ainsi que leurs dérivations « classiques » (par exemple, du mot « kangourou », seront dérivées et testées des combinaisons telles que « k4ng0urou », « kangourou01 », « KaNgOuRoU », etc.).

Définitions et références

ANSSI : Agence nationale de la sécurité des systèmes d’information.

CNIL : Commission Nationale de l’Informatique et des Libertés.

Mon site ultralight en Hugo

Ce site en quelques vers

Un site statique pour faire simple et léger.

Du contenu sous la forme d’article de blog pour vous intérésser.

Des articles rédigés en language léger (markdown, asciidoc) pour pas m’emm…

Un thème et du contenu ultralight pour pas trop poluer.

Des flux RSS complets et par thème pour mieux partager.

Un moteur de commentaire pour échanger.

Choix du moteur de site statique (SSG)

Je pensais partir sur un moteur de site qui a un template tout prêt dans gitlab dans un premier temps, afin de me simplifier la vie. L’idée n’est pas de passer des heures à réaliser un comparatif complet des moteur SSG, mais plutôt de faire un choix pas trop mauvais sans y passer plus d’une heure.

2 SSG “blog aware” sont très utilisés aujourd’hui, impossible de passer à côté.

  • Jekyll (ruby)
  • Hugo (go)

Je choisi Hugo car il à l’air plus rapide, plus récent, plus moderne (support API Json), il permet le build en local du site sur toute les plateformes et enfin il n’est pas écrit en ruby. Les ruby c’est précieux, il vaut mieux que ça reste dans la terre au Myanmar.

Liens utiles :

Choix du thème pour Hugo

Le site d’hugo propose une belle collection de thèmes avec des démos live.

L’idée serait d’avoir un thème assez light sans trop de javascript/css. J’ai choisi le thème hugo flex. Pour faire ce choix de thème j’ai regardé :

  • la taille du thème sur le site de démo,
  • le look,
  • la possibilité d’intégrer des commentaires,
  • la popularité du thème.

Quelques commentaires sur les thèmes que j’ai regardés :

Création du site étape par étape sur mon PC

Au début je pensais partir du modèle Gitlab pages pour Hugo, mais comme il ne correspond pas exactement à mes attentes, et que ça a l’air rapide, je vais le faire à la main.

  1. Installation de chocolatey

  2. Installation de hugo

  3. Création de mon site hugo

    hugo new site iamcolin
    cd .\iamcolin
    git init
  4. Installation du thème hugo-flex

    git submodule add https://github.com/de-souza/hugo-flex.git themes/hugo-flex
    echo 'theme = hugo-flex' >> config.toml
  5. Création des première pages et du premier post

    hugo new _index.md
    hugo new about.md
    hugo new posts/mon-site-ultralight-en-hugo.md
  6. Affichage du site en local

Ne pas oublier le -D pour afficher les nouvelles pages car elles sont créées en mode brouillon par défaut.

hugo server -D

Choix d’un hébergement

La c’est un choix plus c’est difficile car je n’y connais rien en hébergement. Je voudrais partir sur un hébergement simple et gratuit dans un premier temps, et prendre le temps plus tard de trouver un hébergement à faible impact environemental.

PS 2023 : j’ai choixi l’hebergeur alwaysdata qui est gratuit en plus d’avoir une démarche de responsabilité environnementale. https://www.alwaysdata.com/fr/green-it/

Choix d’un nom de domaine

Comme tout un chacun je souhaite que mon nom de domain soit court et facile à retenir. Je voudrais aussi que les buts du site transparaisse au maximum à partir du nom de domaine. Enfin je voudrai un nom de domaine pas cher, pas plus de 10€/ans en charge récurrante.

PS 2023 : J’ai choisi cbontemps.fr pour commencer puisqu’il s’agit de mon site personnel. Je l’achète chez OVH qui est français et pas trop cher. À suivre ?