Au fil des flows

7jan/120

La problematique de l’authentification aujourd’hui

Olivier Dahan, dans un billet sur blog à propos de la "fameuse" fusée free mobile, se sert astucieusement de cet exemple pour attirer l'attention sur la faiblesse du hashage MD5.

Quand je faisai du développement web, il y'a quelques années, encoder les mots de passe en MD5 étaient considérés comme suffisamment sécurisé. Aujourd'hui, force de constater preuve à l'appui, que ce n'est plus du tout le cas. Il suffit de quelques secondes pour décrypter un mot de passe MD5.

La question que je me pose fait suite à une discussion lors de la reunion du plug à Marseille hier soir. Dans quelle mesure est il intéressant d'utiliser des outils déjà tout fait ?

Le stockage des mots de passes peut etre vu un sous systeme du processus d'authentification. Si on part d'une brique logiciel  qui encapsule complètement le système d'authentification, en temps que développeur, nous pouvons éviter cet écueil.

Qu'est ce que l'authentification ?

L'objectif de l'authentification n'a pas changé. Il s'agit d'identifier que l'utilisateur est bien celui qu'il prétend être.

Les méthodes sont connus depuis des années et leur principe remonte à bien avant l'existence de l'informatique :

  • une information que l'utilisateur est le seul à connaitre (le mot de passe, ...)
  • un objet interactif que l'utilisateur est le seul à posséder (Clef Usb, carte à puce, un certificat, ...)
  • une information que l'utilisateur est le seul à pouvoir retrouver

Quand on regarde le problème en surface, il y'a plusieurs embuches qui attendent un développeur pour un système à mot de passe :

  • s'assurer que l'utilisateur choisisse un mot de passe adéquate
  • s'assurer que l'utilisateur puisse modifier son mot de passe
  • s'assurer que l'utilisateur puisse s'authentifier de manière sécuriser
  • s'assurer que le mot de passe de l'utilisateur, même avec les données, ne soient pas compromis

Est il vraiment necessaire que le développeur s'occupe de ce service ? Ne peut il pas le déléguer à un tier ?

Deleguer ce service

Cette idée fait son chemin. Aujourd'hui, de nombreux sites proposent de s'authentifier à l'aide de son compte twitter ou facebook. Cette solution vous décharge de toute la gestion du stockage du mot de passe mais en terme d'ethique elle n'est pas parfaite. Nous ignorons ce que Facebook et autre consort fait des informations reçues de la part d'un utilisateur. Le fait de l'authentifier sur votre site vient compléter la masse pharaonique d'information que possède déjà un service comme facebook dont tout le modèle économique est basé sur la connaissance approfondie de l'utilisateur.

Il existe une solution permettant de décentraliser son système d'authentification sur un serveur indépendant.

OpenID est un protocole ouvert permettant de communiquer avec des serveurs d'authentification. L'intéret c'est que l'utilisateur peut utiliser le fournisseur d'identité qu'il a choisi. Ca peut etre Google, Facebook ou même vous, si vous décidez d'héberger votre propre fournisseur d'identité.

Quelle difference avec un système ad hoc ?

OpenID presente l'avantage d'etre un standard. Quelque soit le système sur lequel vous développez, il y'a de grandes chances d'exister un plug-in tout prêt.

Le plus gros avantage relève de la sécurité. En vous appuyant sur un service; vous ne considérez plus les données mais l'abstraction du service, vous faites phi de la complexité sous jacente. Le système peut avoir une grande complexité derrière, vous n'avez pas à le gérer, vous devenez un simple utilisateur de celui ci.

En prime, vous pouvez ainsi envisager l'authentification comme un service SAAS et non plus comme une composante de votre application. Par exemple, il devient très facile de mutualiser le service d'authentification entre plusieurs portails.

Comme je l'ai écrit plus haut, si vous voulez rester maitre, vous pouvez implementer votre propre fournisseur d'identité OpenID

Je pense que la plus grosse difficulté, c'est de passer d'un role de développeur / programmeur à un role d'intégrateur de solutions. C'est une tache bien différente. Intégrer une solution est toujours délicat car ça implique de comprendre son fonctionnement,  s'adapter à la logique de cette solution et comprendre tous les tenants et aboutissants pour l'adapter correctement à ses propres cas d'usages.

Pour conclure

J'ai découvert cette solution très élégante en même temps que je rédigeai ce billet. Par rapport à celle ci, je manque de recul et peut etre que l'analyse que j'en ai faite est erronée. Dans ce cas, n'hésitez pas à contribuer et à apporter votre expérience à ce sujet.

En tout cas, a l'avenir, c'est une solution que j'envisagerai très fortement si j'ai à mettre en place une authentification pour un site internet. Elle permet de simplifier ce processus très complexe à gérer en terme de sécurité.

Fabien

Posted by Fabien Arcellier

Remplis sous: Non classé Laisser un commentaire
Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Leave a comment

Aucun trackbacks pour l'instant