Reconnaître un utilisateur par l’empreinte de son navigateur ?

Savoir reconnaître un utilisateur est une problématique que l’on rencontre couramment dans le développement d’application web. Un des exemples les plus simple correspond à la mise en place d’un sondage sur lequel chaque utilisateur ne peut voter qu’une fois / jour. Examinons les méthodes à notre disposition pour mettre en place cette sécurité.


Cet article traitera notamment des méthodes innovantes pour vérifier l’identité d’un utilisateur, telles que la vérification par SMS ou l’analyse de l’empreinte digitale de votre navigateur web (digital fingerprint).

Peut-on se fier à l’empreinte de votre navigateur ? C’est la réponse à laquelle tentera de répondre cet article.

Vérification par cookies

Je ne vais pas épiloguer sur cette solution, vous devez déjà savoir à quelle point elle est facilement contournable. Il suffit en effet de vider ses cookies pour apparaître comme un nouvel utilisateur pour le système. Une véritable porte ouverte à la fraude, pourtant utilisée sur des sites à très forte audience…

Idem pour l’utilisation de l’adresse email pour éviter les doubles votes. Vous serez vites envahis par des robots grâce aux nombreux services d’email jetable.

Vérification par IP

La vérification de l’IP est la solution la plus couramment utilisée. Son principal avantage est que l’utilisateur n’a pas la main dessus, à la différence des cookies. 

Cette méthode offre en revanche plusieurs limites et inconvénients :

  • Certains FAI fournissent encore des IP dynamiques, donc une personne pourrait voter plusieurs fois en se déconnectant/reconnectant entre chaque requête.
  • Un robot peut utiliser une liste de proxy, voir un botnet pour dissimuler son adresse IP.
  • Certains FAI partagent une même adresse IP entre plusieurs abonnés.
  • Dans une école, au bureau, dans n’importe quel réseau privé, tous les ordinateurs vont partager la même IP publique. Dés qu’une personne aura soumis son vote, tous les autres seront bloqués.

L’adresse IP n’est donc pas une solution si efficace qu’elle ne le laisse penser. Il est assez facile pour un fraudeur de tromper votre système, mais surtout il peut empêcher des utilisateurs de bonne foi de s’identifier.

Vérification par compte Facebook / Twitter / OpenId

Ces solutions sont assez proches de la simple vérification de l’email, à la différence qu’il est bien plus difficile de créer des faux comptes Facebook en masse.

En effet, créer une adresse jetable se fait très rapidement, mais Facebook va très vite détecter un robot qui essaierait de créer à la chaîne des faux comptes basés sur ce type d’adresse email.

En revanche, cette solution écarte d’office une partie de la population, celle qui n’est pas présente sur les réseaux sociaux, ou qui ne souhaite pas associer son compte à votre site.

Vérification par SMS

Le système qui est à mon sens le plus efficace est de vérifier l’identité d’une personne physique au travers de son téléphone portable. Tout d’abord, notons que le taux d’équipement en matière de téléphonie mobile en France atteint aujourd’hui 99,7%, plus élevé que le taux d’équipement des foyers en connexion internet.

De plus, une personne peut avoir 2 ou 3 téléphones, rarement plus. Cela limite fortement les risques de fraude.

Comment ce système fonctionne ? 

  1. Vous demandez le numéro de téléphone portable de l’utilisateur,
  2. Vous générez un code unique associé à cet utilisateur,
  3. Via un webservice ou en interne, vous envoyez ce code par sms sur le téléphone,
  4. Vous demandez à l’utilisateur de saisir ce code pour continuer ses opérations.

Des solutions identiques sont actuellement utilisées par Google, Paypal, ou sur tous les services liées à la certification électronique de documents. Vous pouvez implémenter cette fonction en offre SAAS avec des services tels que OnVerify.

Inconvénient : cette solution va vous coûter le prix d’envoi des sms.

Analyse de l’empreinte de votre navigateur 

Cette technique est assez … expérimentale !

Cela consiste à récupérer toutes les informations divulguées par votre navigateur, afin de générer l’empreinte digitale de votre navigateur web. Le tout est maintenant de savoir si cette empreinte est assez solide pour garantir l’unicité.

Quelles informations peut-on recueillir ?

On pense naturellement au User-Agent, à la résolution de l’écran, au fuseau horaire, etc. En réalité, votre navigateur est bien plus bavard que celà !

Le site BorwserSPY vous permet de visualiser toutes les informations divulguées par votre navigateur à votre insu : “Accepted Filetypes, ActiveX, Adobe Reader, Cookies, Date and Time, Flash, Geolocalisation, Polices de caractères installées, Headers HTTP, Système d’exploitation … “

Permettent-elles vraiment de reconnaître une personne ?

Le site Ponopticlick va nous aider à répondre à cette question.

Il référence pour chacune de ses caractéristiques, la probabilité de la retrouver avec exactement la même valeur sur un autre navigateur.

A titre d’exemple, voici les résultats que j’obtiens :

  • User Agent : 1 pour 24801 
  • HTTP_ACCEPT Headers : 1 pour 270
  • Browser Plugin Details : 1 pour 1 884 899
  • Time Zone : 1 pour 5
  • Screen Size  1 pour 55
  • Polices de caractères installées : 1 pour  2 000 000

A partir de ces 6 caractéristiques, on arrive à plus de 6.9 * 10^21 combinaisons différentes ! C’est largement supérieur au nombres d’humains sur terre, et on ne s’est servi que d’une infime partie des informations disponibles.

Quand est-il de l’efficacité de cette méthode ?

Cette méthode possède le même inconvénient que la vérification par cookies : l’utilisateur peut facilement altérer certaines de ces informations (user agent, time zone … ). Cependant, ce système de vérification étant encore méconnu, cela le rend plus résistant aux attaques de “bidouilleurs”.

De plus, même si le nombre de combinaison est astronomique, rien ne garantit que ces empreintes soient vraiment unique. 2 postes avec exactement la même configuration auront la même empreinte… 

Il est donc impossible de l’utiliser sur un système exigeant un haut niveau de sécurité, mais il est intéressant de l’utiliser en supplément de vérifications plus classiques. Cette méthode permettrait de solutionner les limitations de la vérification d’IP au sein d’un réseau privé : on ne se contente plus de l’adresse extérieure commune, on va jusqu’à vérifier des données identifiants chaque poste de travail.

Si le sujet vous intéresse, je vous conseille de consulter cet article de recherche : “How Unique Is Your Web Browser

Quelles sont les autres utilisations de ces empreintes ?

Ces empreintes peuvent avoir un tout autre intérêt, comme … pister un utilisateur par exemple ! 

A privacy researcher has revealed the evil genius behind a for-profit web analytics service capable of following users across more than 500 sites, even when all cookie storage was disabled and sites were viewed using a browser’s privacy mode.

On parle beaucoup ces derniers temps du “cookie offline” de Facebook qui permet de tracker un utilisateur après qu’il se soit déconnecté. Avec cette empreinte, il n’y a même plus besoin de cookie pour suivre un utilisateur, il suffit d’utiliser son IP et son empreinte pour le suivre de sites en sites.

Vous êtes prévenu !

(Source : programmers.stackexchange.com)

Ce blog est tenu par Julien Lafont, étudiant en ingénierie Informatique à Montpellier et développeur indépendant à ses heures perdues.

Web, Android & JavaEE enthousiast Developer, Agilist, Software Craftsman and Geek !

Tags :

Vous aimez cet article ? Partagez le !

Discussions autours de l'article