Une fausse bonne idée

De plus en plus de banques, afin de lutter contre l'interception de frappes clavier, introduisent l'utilisation d'un clavier virtuel pour taper son code confidentiel. Concrètement cela consiste à afficher sur la page Web de connexion l'ensemble des chiffres de 0 à 9 constituant un code confidentiel, ceux-ci étant disposés aléatoirement. L'utilisateur clique sur chacun des chiffres de son code avec sa souris : un code JavaScript le rajoute dans un champ caché qui sera envoyé lors de la validation du formulaire de connexion.

Clavier virtuel

Tout ceci part d'une bonne intention : lutter contre les keyloggers, ses programmes interceptant les frappes clavier et les redirigeant vers un pirate qui disposera alors du numéro de compte ainsi que du code confidentiel de l'utilisateur, sésames indispensables pour accéder à un service de banque en ligne. Ensuite le méchant pirate peut s'en donner à coeur joie : consultation des comptes (jusque là rien de trop grave) mais également virements[1] (ça se corse).

Le clavier virtuel déjoue les keyloggers se contentant d'enregistrer les frappes claviers : cependant une nouvelle génération de ces logiciels permet également d'enregistrer les environs des zones de clics sous formes d'images. Le clavier virtuel devient alors inutile.

Pire, le clavier virtuel introduit un problème d'accessibilité pour les malvoyants qui ne peuvent localiser les chiffres, généralement présentés sous forme d'images. Mais même si ceux-ci étaient sous forme de texte HTML, l'utilisation du clavier virtuel leur serait pénible.

Et puis, mieux vaut ne pas utiliser un système de clavier virtuel quand votre écran est visible d'autres personnes : l'observation des mouvements de la souris sur l'écran permet de déduire le code confidentiel. Tandis qu'avec un système standard de saisie au clavier, aucun risque d'interception par visualisation de l'écran (bon par contre, on peut très bien regarder le clavier, mais c'est moins facile).

Donc, en bref, le clavier virtuel se révèle être une fausse bonne idée.

Les solutions

Le mot de passe unique

La meilleure solution afin d'améliorer la sécurité des services bancaires en ligne (et de tout service nécessitant une authentification en règle générale) réside dans la sécurisation du poste client y accédant. Mais comme on ne peut pas vraiment faire confiance à l'utilisateur pour utiliser un système d'exploitation potable sans profusion de spyware et keyloggers, il faut déporter la gestion de l'authentification de l'ordinateur vers un dispositif externe. Une solution consiste à utiliser des mots de passe jetables. En pratique, cette idée peut être implantée de diverses manières :

L'authentification est alors réalisée non plus sur un seul point (la connaissance) mais sur deux (la connaissance et la possession d'un outil permettant d'obtenir le mot de passe unique). Cette solution interdit la fraude 100% virtuelle. Cependant elle ne résout pas les problèmes de phishing : un faux site peut ainsi intercepter le mot de passe unique et l'utiliser immédiatement pour l'ouverture d'une session.

L'authentification de l'utilisateur et du site par un terminal sûr

L'axiome fondamental à considérer est l'insécurité de l'ordinateur de l'utilisateur du service. D'autre part, il est nécessaire de s'assurer :

Une solution consisterait à utiliser une authentification par carte à puce qui vérifierait l'identité du site bancaire et s'authentifierait auprès de lui, la clé privée de l'utilisateur demeurant enfouie dans la mémoire inexplorable de la carte. Le seul problème réside dans la nécessité pour l'internaute de s'équiper d'un lecteur de cartes. On pourrait aussi imaginer des jetons USB intégrant une telle puce. L'authentification nécessiterait une action physique sur le lecteur ou le jeton. Avec une telle solution, toute connexion nécessiterait obligatoirement la possession de la puce et une action physique sur le lecteur : les attaques à distance ne sont plus possibles. Il demeure néanmoins possible de pirater l'ordinateur de la victime et de simuler à l'écran une connexion légitime avec simple consultation de comptes tout en soumettant des requêtes différentes vers le site web (soumission de virements vers des comptes externes par exemple).

Il en découle que si l'utilisateur ne peut faire confiance à son ordinateur, le lecteur de cartes ou jeton doit afficher lui-même les informations concernant l'opération réalisée. On peut donc imaginer la présence d'un petit écran présentant de façon synthétique l'opération ("consultation de compte X", "virement de N euros vers le compte X'...). Par une action physique sur l'appareil (code tapé par exemple), l'opération affichée est signée par la clé privée de la puce et envoyée vers le site web. Le site a alors l'assurance que le possesseur physique de la puce a bien validé l'opération. Tout cela repose sur le postulat que le lecteur de cartes ou jeton ne puisse faire l'objet d'une attaque.

Pour sécuriser l'authentification sur des sites Web, les solutions existent... reste à les mettre en place. Mais de grâce, pas de mesurettes telles que des claviers virtuels qui n'apportent aucun gain de sécurité réel.

  1. On notera que la majorité des banques françaises n'autorisent les virements limités à un certain plafond, et uniquement vers des comptes français. D'autres demandent une autorisation écrite pour l'ajout d'un bénéficiaire de virement.
  2. Notons que l'on pourrait envoyer des cartes spécifiques pour les personnes aveugles avec mots de passe en caractères braille).
🗓 Publié le samedi 15 avril 2006
Envoyez vos commentaires à propos de cet article