Mots de passe statiques

De Korben Wiki
Aller à : navigation, rechercher

Introduction

Né il y a quelques dizaines d’années, le mot de passe statique est certainement la méthode d'authentification la plus simple à mettre en œuvre, mais qu’en est-il de son efficacité ?

Dans les années 60, on considérait que le mot de passe statique était une solution simple, efficace et sécurisée pour protéger les accès aux données sensibles. Ces quarante dernières années, la technologie a subi une évolution fulgurante et à conduit à l’explosion des échanges d’informations sur les réseaux. Le monde de l’entreprise et celui de l’individu dans sa vie quotidienne se trouvent concernés par cette évolution. Les systèmes d’information s’ouvrent aux collaborateurs de l’entreprise qui deviennent de plus en plus souvent nomades, aux clients et à ses fournisseurs. Les consommateurs adoptent de plus en plus les services à distance pour obtenir une information, commander et payer un bien ou un service, effectuer une démarche administrative.

Dans le meilleur des mondes, le système du mot de passe statique pourrait fonctionner parfaitement : les utilisateurs choisiraient des mots de passe très compliqués à deviner par un tiers, ils choisiraient un mot de passe différent pour chaque compte, et ne partageraient jamais ce mot de passe avec qui que ce soit d'autre. Mais dans la pratique il en va tout autrement. Les gens choisissent généralement des mots de passe simples à mémoriser et les pirates le savent bien, ils devinent les mots de passe convoités en utilisant des informations qu'ils connaissent (date de naissance, prénoms des enfants, etc.). La plupart des utilisateurs accédant à de nombreux comptes, peu d'entre eux sont en mesure de se rappeler un mot de passe différent pour chaque compte, et par soucis de simplification choisissent un mot de passe unique. Si ce mot de passe est compromis, alors ce sont tous les accès qui sont compromis.

Comment choisir son mot de passe ?

Quelques règles de base

L'association compte/mot de passe est la technique la plus couramment utilisée pour contrôler l'accès à certaines ressources. Elle permet à la fois d'identifier la personne et de protéger l'accès. Choisir un mot de passe robuste est donc indispensable.

Le moyen le plus simple pour pirater une ressource protégée par un mot de passe est de trouver celui-ci. Les méthodes les plus utilisées sont l'attaque par dictionnaire ou la devinette.

Pour se prémunir de telles attaques, il est donc nécessaire de trouver un mot de passe robuste (qui ne peut pas être deviné et qui n'est pas présent dans un dictionnaire classique d'attaque).

De manière générale, on peut retrouver 6 règles de bases :

  • 8 caractères minimum ;
  • Au moins une majuscule, un caractère spécial (autre que a-z ou A-Z tel *, !, @, ou bien &) et un chiffre (0-9);
  • C'est un mot qui n'existe pas, c'est à dire qu'on ne peut pas le trouver quand on le cherche dans un dictionnaire (et pas seulement un dictionnaire français).
  • Si vous le pouvez, changez votre mot de passe régulièrement (tous les 6 mois idéalement)
  • Ne l'inscrivez nulle part. Le meilleur mot de passe du monde ne sert à rien si on peut le trouver inscrit au dos du calendrier mural...
  • En cas de doute sur la confidentialité de votre mot de passe: changez-le immédiatement.

D'autres conseils pour trouver votre 'bon' mot de passe :

  • Évitez les mots de passe trop simples : prénoms, "azerty", "toto", etc. Ce seront les premiers testés par un pirate. De même, ne reprenez pas l'intitulé de votre compte ou une partie de cet intitulé dans votre mot de passe.
  • N'utilisez pas en mot de passe des informations connues par vos proches ou facilement trouvables par un tiers: votre lieu d'habitation, votre nom de jeune fille, votre date de naissance, le nom de votre animal de compagnie, etc. Ce genre de mot de passe est en effet très facile à deviner pour quelqu'un qui vous connaît un peu.
  • Mélangez de préférence lettres, chiffres et caractères spéciaux (!#$%-_). Les pirates informatiques utilisent en effet des programmes informatiques pour percer les mots de passe : tester un à un des centaines de milliers de mots du dictionnaire et leurs variantes ne leur pose pas problème.
  • Alternez minuscules et majuscules, pour renforcer le niveau de sécurité de votre mot de passe.
  • Proscrivez les accents (problème garanti si vous avez à taper votre mot de passe sur un clavier "anglais" ou "allemand")

Voyez aussi la page Hygiène du mot de passe et l'article Chiffrement et Stéganographie.


Des mots de passes simples à retenir mais complexe à cracker

(à relire)

Source: http://www.baekdal.com/articles/usability/password-security-usability/

Selon le site ci-dessus, il est possible de créer des mots de passe sûrs mais cependant beaucoup plus simples à retenir qu'un mot de passe comme "M!o$nMOTdeP4s5E".

Utilisez deux ou trois mots à la suite: "manger des tomates" sera beaucoup plus complexe à deviner ou à forcer que le simple mot "tomates".

Utilisez une phrase pour définir un mot de passe en prenant les premières lettres de chaque mot, exemple : "Un pour tous, et tous pour un" Mot de passe : "1pt,&tp1", dans ce cas on utilise caractères spéciaux et chiffres on a donc un bon mot de passe facile à retenir. Attention cependant certains logiciels de brute force intègre déjà un lot de phrases prédéfinies.

Mieux: utilisez des mots peu communs et rarement vus côte à côte: l'expression sera facile à retenir et très difficile à deviner. Par exemple: "effarante parallaxe synaptique".

Si vous en avez la possibilité, bloquez temporairement la saisie d'un mot de passe au bout de quelques tentatives erronées.

Une autre possibilité, décliner un même mot de passe

Principe :

  • mon mot de passe initial est “toto”
  • le site ou je crée un compte est google, mon mot de passe sera “totogoogle”
  • et si c’est yahoo, mon password sera “totoyahoo”

Ça, c’est pour comprendre le principe. Le problème c’est que si quelqu’un trouve l'un de vos mots de passe, il pourra tous les trouver.

  • On peut compliquer la chose en enchevêtrant de cette manière “yahoototoyahoo”, ou encore en combinant les deux “yTaOhToOo”

Et encore plus compliqué :

  • avec un mot de passe comme “donald”
  • Si la première lettre du site (par exemple yahoo) est une voyelle on peut placer un point d’exclamation “!” entre chaque lettre (y!a!h!o!o)
  • et si c’est une consonne on met le chiffre “0” au début et à la fin du mot de passe.

Ce qui nous donnerait si l'on applique l'enchevêtrement et le rajout de signes :

  • pour yahoo (voyelle) : d!y!o!a!n!h!a!o!l!o!d
  • ou sur le mot de passe twitter (consonne) : 0dtowniatltder0

Avec ce principe, ça ne fait que 2 choses à retenir et à appliquer pour chaque service protégé par mot de passe : - le mot de passe générique (ici donald). - le principe “!” si voyelle et “0” si consonne

Générer des mots de passe

Tester votre mot de passe

Attention: ne rentrez pas votre vrai mot de passe pour faire le test: rien ne garantit que votre échange avec les sites ci-dessus n'est pas écouté ou enregistré quelque part. Choisissez-en un similaire mais changez certains éléments.

Quelques exemples de mauvais mots de passe

Les attaques sur les mots de passe

Introduction

On peut identifier différentes attaques utilisées par les pirates afin de trouver un mot de passe.

Attaque par Force Brute

Il existe deux types d'attaques par dictionnaires (dit par force brute.) Tout d'abord, l'attaque directe, quand le pirate n'a aucun moyen d'avoir accès au hash du mot de passe.

Ainsi, il va lancer un logiciel qui va tester toutes les combinaisons jusqu'à trouver la bonne. Cela peut prendre du temps et c'est la méthode la moins employée par les pirates expérimentés sur certains systèmes car cela génère des milliers de lignes de logs pouvant alerter certains HIDS et donc par la suite l'administrateur.

Il existe différents types de logiciels d'attaque par force brute, allant du simple testeur de chiffres, majuscules, minuscules, caractères spéciaux, en passant par ceux testant les mots de passe avec un dictionnaire de mots à certains beaucoup plus évolués, qui testent les mots de passe par leur forme. Car dans certains cas, (les entreprises par exemple) les mots de passe administrateur des postes sont composés de différentes variables qui changent dans chaque cas mais qui ont une structure similaire. Ainsi le pirate va brute forcer cela tout en ayant pris le soin de définir la forme du mot de passe ex :

Si un mot de passe est : 348_DRH!01

Le pirate va tester : [0-1000][_][AAA-ZZZ][!][00-99]

Ceci permettant ainsi de réduire de plusieurs ordres de grandeur le nombre de tentatives (il peut faire encore mieux... mais bon, c'est une autre histoire.)

Un second type d'attaque par force brute peut être produit à partir des "hashes" des mots de passes. Généralement, les mots de passe dans une base de donnée sont "hashés", c'est à dire chiffrés. Ainsi lorsque le pirate possède une vue sur la base de donnée (SQLi etc.) il ne peut pas voir les mots de passe en clair, (tout comme l'administrateur soit-dit en passant).

Il existe différents types de hashes (MD*, SHA*, CRC*) permettant ainsi de transformer le mot de passe afin qu'il ne puisse pas être retrouvé sauf par comparaison.

Le pirate, ayant obtenu un mot de passe hashé essayera là aussi de le casser par force brute, mais pas comme précédemment en essayant toutes les combinaisons de lettres chiffres et etc. Il passera par des "rainbow tables" lui permettant de faire une attaque par force brute comparative afin de trouver le bon mot de passe.

Le problème arrive lorsqu'un administrateur aura ajouté des "salts", permettant ainsi d'essayer de contrer les attaques par dictionnaire. Les "salts" sont simplement une chaine ajoutée au mot de passe avant d'être hashé puis comparé dans la base de donnée. Ainsi :

Le salt est : 90_Yc7s_

90_Yc7s_motdepasse donnera : b615f1dafb2ebf503f1c116e73571780 et motdepasse donnera : b6edd10559b20cb0a3ddaeb15e5267cc

Ainsi, une attaque par rainbow tables ne trouvera pas de correspondance et sera donc vouée à l'échec... à part si bien évidement, le pirate possède un accès au code source de l'application et arrive à savoir comment est généré le salt avant que l'on compare ou que l'on inscrive notre mot de passe dans la base de donnée. Les salts sont donc là aussi vulnérables, même une sécurité par obfuscation (dissimulation) du code source (et donc de la mise en place du salt) n'arrivera pas à protéger votre mot de passe de la possibilité pour le pirate de réaliser lui-même ses propres rainbow tables avec votre salt.

Évidemment, vu le temps nécessaire à un pirate pour créer ses propres rainbow tables avec des salt (où il privilégiera d'ailleurs le cloud computing en faisant travailler des ordinateurs zombies pour aller plus vite), il peut se demander si cela vaut vraiment le coup de trouver LE mot de passe.

Sachant qu'il peut s'en créer un avec le salt, l'insérer (s'il a les droits) dans la base de donnée à la place de celui de l'administrateur pendant sa session de piratage et ensuite, remettre celui de l'administrateur...

Un administrateur peut également combiner des salts avec un nombre d'itération pour l'algorithme de chiffrement. C'est à dire qu'après avoir concaténé valeurs de salts et mot de passe, il est possible d'appliquer itérativement le même (ou plusieurs) algorithme de chiffrement sur un résultat du hashage. En terme de performance, le coût de cette technique est négligeable pour l'utilisateur final mais devient un vrai handicap pour le pirate.

Deviner les mots de passe

Autres attaques plus techniques

D'autres attaques peuvent être perpétrées afin de trouver les mots de passe ou tout simplement de les contourner; nous allons en citer quelques unes ainsi que les moyens de les contrer.

  • Attaque Man (Monkey) In the Middle cette attaque, l'une des plus connues, consiste à sniffer les données transitant par un réseau informatique afin de récupérer le flux d'informations contenu principalement dans la couche application du modèle OSI. Ainsi, l'intégralité des mots de passes transitant en clair sur le réseau peut être récupérée. La seule protection à cela est l'utilisation de protocoles sécurisés SFTP, SSH, SSL. etc. Même s'il existe certains cas d'attaques contre la plupart des protocoles sécurisés.
  • Attaque par injection cette attaque concerne plus les applications ayant une liaison avec une base de donnée. Elles permettent l'injection de fausses requêtes vers la base de données afin de modifier, de lire ou d'insérer des données (exécuter des commandes serveur dans certains cas). Nous pouvons noter comme attaques (les plus connues, car il en existe beaucoup d'autres) L'injection SQL, l' injection SQL aveugle ou souvent réalisé en intranet, l'injection LDAP. Ces types d'attaques sont contrées par des configurations adéquates de vos applications serveur ou par l'insertion de fonction faisant le travail dans vos codes sources. Attention cependant, certaines de ces fonctions ne sont que de la poudre aux yeux et ne vous protègent de rien.
  • Le vol de session Pourquoi essayer d'avoir un mot de passe lorsque l'on peut le contourner ? Ainsi, il existe différents types de vol de session, côté client les fameuses "XSS" (et autres), côté serveur, ou côté réseau (voir attaques MiM). Ceux-ci permettent ainsi d'hijacker une session sans même avoir le mot de passe pour s'identifier. Pour contrer ce genre d'attaques, nous pouvons appliquer certaines protections : Restriction par IP permettant ainsi de contrer le vol de session via le web, mais pas s'il a lieu dans un même réseau. Restriction par environnement est par exemple, l'identification de l'UserAgent du visiteur ayant la session ouverte. Si le pirate n'a pas le même, sa session sera terminée (kill). Là aussi, dans le cadre d'une attaque MiM, cela est contournable. Enfin, un système dit de tickets permettant d'éviter le hijacking de sessions si deux sessions sont ouvertes simultanément. Mais le mieux reste tout de même de détruire la session de l'utilisateur dès qu'il ferme la page.

Retrouver ses mots de passe

http://www.nirsoft.net/

Stocker ses mots de passe

Évitons les post-it :)

  • Keepass - "Coffre-fort" à mots de passe libre et multiplateforme.
  • Passpack Sauvegarde en ligne sécurisée, aucun webmaster, administrateur ou pirate ne pourra lire vos mots de passe.
  • L'extension de Firefox Password Hasher permet de créer une "page portable" utilisable avec n'importe quel navigateur (attention, MSIE et probablement d'autres navigateurs obsolètes mémoriseront de manière peu sécurisée les "semences" de hachage des mots de passe de cette page portable, voir ci-dessous), et que vous pouvez sauvegarder sur une clef USB. Vos mots de passe ne seront stockés nulle part : cette page produira (ou reproduira si nécessaire) un mot de passe "haché" à partir d'un "tag" (nom de domaine + votre identifiant par exemple) associé à un mot de passe personnel (unique si vous voulez, mais pas obligatoirement) stocké uniquement dans votre tête (qu'on supposera capable de retenir UN mot de passe). Ceci supprime l'effet "post-it" ainsi que l'effet "monmotdepassepareilpartout", puisqu'à chaque association "tag + mot de passe perso" correspondra un mot de passe distinct. La page portable est utilisable presque sans risque avec n'importe quel ordinateur, même s'il ne vous appartient pas (elle ne mémorise aucun mot de passe, elle n'est qu'un moyen simple de les régénérer).
  • Voir aussi ceci : il ne faut en aucun cas permettre à MSIE ou à Outlook de se souvenir de vos mots de passe.