vendredi 11 juin 2010

Mots de passe complexes, vers une nouvelle solution ?

Il faut en finir avec les mots de passe complexes

"Huit caractères, alpha-numérique, avec variation de la casse, des caractères spéciaux et différent des 3 derniers. Doit être changé tous les mois."

Voila ce qui est typiquement -et fièrement- requis par une politique de mot de passe censée contrôler l'accès à et protéger l'information. Voila également ce qui est typiquement impossible à retenir pour un cerveau humain. Manque de chance, et de discernement, c'est pourtant sur lui que l'on a misé. Il faut revoir notre copie et arrêter de critiquer les utilisateurs.

A court terme d'abord, l'Empan Mnésique de M. ou Mme Michue est en moyenne de 7, les tests étant qui plus est souvent réalisés sur des symboles homogènes (caractères, chiffres ou symboles seuls) donc loins des mélanges et des "M0t2P@$$€$" exigés. Demander à l'utilisateur de choisir un mot de passe de cette nature et de le retenir à court terme est donc irréaliste. La politique l'oblige donc à le noter, ce qu'elle interdit également le plus souvent. "Bravo ! Vous venez de toucher l'échec du doigt !".

Si la mémoire à court Terme ne peut nous aider, la mémoire à long terme et plus précisément la mémoire sémantique le pourrait. Par auto-répétition de maintien, le "par coeur", et à force de le lire sur son post-it, l'utilisateur finira sûrement par le retenir. C'est donc à ce moment précis qu'il doit de le changer pour des soi-disant raisons de sécurité. On y reviendra...

A court comme à long terme l'apprentissage du secret à partager avec le système authentificateur est donc voué à l'échec.

Le contrôle d'accès est un processus complexe qui se joue à plusieurs. L'authentification se joue au moins à trois: l'utilisateur, le système local (l'environnement) et le système distant. Les mesures de sécurité s'appliquent donc à ces trois entités. On a cependant tendance à avoir la main lourde sur la première, l'utilisateur, là ou il faudrait insister sur le système distant. Concernant le système local on cherchera surtout à s'assurer de son innocuité.

La complexité du mot de passe et son changement régulier répondent à deux objectifs :
  • à priori, contrer les méthodes d'attaque par recherche exhaustive, par dictionnaire, ou un subtile mélange des deux. J'écarte le shoulder surfing partiel.
  • à postériori, arrêter un attaquant qui aurait eu accès au mot de passe et qui usurperait l'identité de l'utilisateur sur le système de façon récurrente.
La complexité du mot de passe élimine les dictionnaires et assure une résistance à la recherche exhaustive. Le changement fait perdre à l'attaquant la connaissance du secret partagé.

Si l'on ne peut pas s'assurer de la complexité du mot de passe, son porteur ne pouvant le manipuler de façon sûre, il faut compenser au niveau du vérifieur (le système distant). Cela se fait assez facilement en réduisant le nombre d'essais d'identification. Mais comment définir cette valeur ? 3, 5, 10 ? En fait peu importe, on est dans tous les cas loin de l'ordre de grandeur d'une attaque automatisée. On peut donc choisir un nombre assez elevé pour l'utilisateur, disons 10. Cela aura également pour conséquence de réduire les coûts superflus au niveau du support. Une attaque cherchant à bruteforcer le mot de passe ne le trouvera très probablement pas en 10 essais -un facteur 10 sur plusieurs millions de possibilités n'étant pas significatif- et finira par bloquer le compte et permettre une détection rapide (au prix d'un déni de service). C'est d'ailleurs ce qui à permis à de nombreuses organisations de réaliser qu'elles étaient infectées par Conficker.

Alors quoi ? "J'aime m'identifier le matin !" est un bon mot de passe ? Assurément ! 30 caractères alpha-num et des caractères spéciaux et il a surtout l'avantage d'être mémorisable à long terme par l'auto-répétition d'intégration (ou élaboratrice).

Concernant le changement de mot de passe, une modification tous les 6 mois aura t-elle un impact bien plus désastreux que tous les 3 mois ? La fenêtre d'exploitation augmente, certes, mais un attaquant n'aura pas besoin d'exploiter ces identifiants pendant ce laps de temps et il installera sa propre porte dérobée. Alors peu importe: vous avez perdu la bataille. Mais pas la guerre ! Là encore il faut chercher d'autres mesures compensatrices du coté du vérifieur. Un même utilisateur tente de s'identifier simultanément depuis plusieurs postes/navigateurs ? Il se connecte en semaine à 2h du matin ou le dimanche à 15h ? ... de nombreuses actions permettent de détecter les compromissions de comptes.

Une politique de mot de passe ne peut donc pas exister seule. Elle doit s'intégrer et prendre en compte les politiques et configurations des fonctions d'authentification des applications et des systèmes à utiliser. Il faudra également veiller à uniformiser ces configurations sur l'existant et dans les choix futurs, que ce soit des COTS ou des développements ad-hoc. Le legacy sera comme d'habitude à gérer comme une exception.

En synthèse les contraintes doivent être reportées sur les systèmes et non sur les utilisateurs. Attendre de ces derniers qu'ils puissent augmenter leurs capacités cognitives pour nous n'est pas réaliste. Il faut faire avec les moyens du bord :-p

Enfin, mots -et même phrases- de passe sont des technologies antiques qu'il faut éradiquer. La généralisation des systèmes d'authentification forte par matériel ou par biométrie sans trace me semblent les seules solutions qui permettront d'atteindre un niveau d'assurance élevé sur la fonction d'identification.

Aucun commentaire: