Deux chercheurs de l’Inria (Grenoble) et deux universitaires Belges (Leuven) révèlent qu’il est possible, en utilisant une API HTML5, de récupérer la signature d’un mobile en particulier et par conséquent de tracer les activités, voire de géolocaliser son possesseur. L’exploitation de cette API n’est possible qu’avec les navigateurs Firefox, Chrome et Opera… une fois n’est pas coutume, Internet Explorer n’est pas coupable… faute de capacité technique.
Cette API, baptisée « Batterie Status », peut être utilisée par un serveur Web pour mieux interagir avec le navigateur distant. Si la réserve d’énergie est faible, le trafic pourrait être allégé, certains scripts désactivés afin de ne pas précipiter la « panne sèche » du terminal, et, au contraire, des applications plus gourmandes en ressources (séquences vidéo par exemple) seraient accessibles pour peu que le téléphone ou la tablette déclare avoir fait le plein depuis peu.
Or, aucun accumulateur ne ressemble à un autre. Sa capacité en milliampère/heure constitue déjà un élément de distinction. Mais même au sein d’équipements utilisant strictement le même type de batteries, les temps de décharge montrent des différences significatives, différences liées aux disparités chimiques des éléments, à la température ambiante, à l’âge de l’accumulateur lui-même, voir à la consommation résiduelle propre à chaque appareil.
Et c’est là que la « Battery Status API » se montre très indiscrète, car elle fournit trois données importantes : charging level, chargingTime et dischargingTime (niveau de charge, temps de charge, temps de décharge), informations obtenues via la méthode navigator.getBattery(). Et lesdites informations sont tellement précises qu’il est tout à fait possible de distinguer deux appareils en leur faisant exécuter une même et unique tâche. De là à imaginer un réseau de serveurs Web compromis capables de suivre à la trace une série de téléphones en se basant uniquement sur la consommation instantanée des accumulateurs et leur niveau de charge, puis à y associer l’adresse IP utilisée, il n’y a qu’un pas.
La parade à une telle fingerprinting attack est simple, expliquent les quatre chercheurs : arrondir les résultats, diminuer le degré de finesse avec lequel l’API fournit des renseignements au serveur. Cela n’affecte en rien l’efficacité de l’API. Du coup, il devient impossible de distinguer différents mobiles retournant un « batterie à 15%, décharge à 35 mA/h » alors que, dans l’état actuel des choses, la réponse serait plutôt « batterie à 15,683%, décharge à 32,695mA/h » (ces indications chiffrées n’ayant qu’une valeur de vulgarisation et non une réalité scientifique reflétant les travaux en question).