Wired publiait récemment un article se faisant l'écho d'une présentation faite jeudi au 23e CCC Congress à Berlin[1]. Steven J. Murdoch y décrit une méthode permettant de découvrir si un hôte utilise un système anonymisant. Comment ? En implémentant une "side side channel attack" observant une cascade d'effet de bord :

  • un système anonymisant comme Tor utilise beaucoup de cryptographie, en particulier à clé publique[2] ;
  • un tel recours à la cryptographie induit une charge importante sur le système ;
  • cette charge fait chauffer le processeur et plus largement l'ensemble du système.

OK. Les gros calculs, ça fait chauffer les systèmes. Pas de quoi sauter au plafond, les amateurs de 3D et les gamers sont au courant depuis longtemps. La suite est par contre plus intéressante :

  • toutes les horloges ont un biais propre qu'on peut mesurer, et même identifier ;
  • la température du système influe sur ce biais.

Donc, si le système chauffe, le biais normal de l'horloge système varie. Ainsi, si on parvient à mesurer le biais de l'horloge d'un système, on est capable de savoir s'il est chargé ou non, et donc éventuellement, en liant l'observation à d'autres évènements, s'il publie un service anonyme sur Tor, ou pas. Dans son article, l'auteur décrit une attaque qui, utilisant en parallèle l'observation des timestamps qu'on peut trouver dans les flux réseau[3] et la sollicitation de services anonymisés, permettrait d'identifier les machines hébergeant ces services. Application alléchante pour beaucoup. Mais si les expérimentations réalisées sur un réseau privé monté à cet effet se montrent étonnamment efficaces, on se doute bien que la mise à l'échelle d'Internet d'une telle attaque se montrera nettement plus difficile.

Ce récent exemple d'attaque par effet de bord illustre très bien à mon sens la difficulté de prédire et prévenir ce type d'attaque. Les effets de bord étant difficiles à prédire, il est d'autant plus compliqué d'évaluer s'ils pourront être exploités pour soutirer de l'information. Et ces attaques sont légions : observation des temps de calculs, de la consommation électrique, du dégagement de chaleur, de la charge système, des fautes de cache, etc. Autant de conséquences de l'utilisation d'un système qui peuvent, si on les observe intelligemment, se révéler redoutables dans certains contextes comme celui très sensible de la cryptographie. D'ailleurs, l'attaque controversée décrite par l'article quelque peu polémique publié récemment par le quotidien Le Monde tombe également dans cette catégorie. Tout comme celle décrite dans les premières pages de "Silence on the Wire". Observer le générateur d'aléa du système pour savoir si quelqu'un frappe au clavier[4]. Ensuite, observer les temps entre deux frappes pour déduire ce que la personne frappe en fonction du layout de son clavier. Pervers disent certains ? Tordu ? Possible, mais c'est comme ça...

Et notre énigme dans tout ça ? Réponse donc. Nous appuyons d'abord sur le premier interrupteur. Nous appuyons ensuite sur le second et attendons un laps de temps assez conséquent[5] avant de l'actionner à nouveau. Nous ne touchons pas au troisième et ouvrons directement la porte. Que pouvons-nous observer ? Si la lumière est allumée, elle est évidemment commandée par le premier interrupteur. Si elle est éteinte, il va nous falloir ruser légèrement en touchant l'ampoule pour en jauger la température. Si celle-ci est chaude, alors l'ampoule a été allumée récemment puis éteinte. Elle est est donc contrôlée par le seconde interrupteur que nous avons activé deux fois. Sinon, le troisième interrupteur permet d'allumer la lumière. CQFD.

Voilà. Bon réveillon à tous et bonne année 2007.

Notes

[1] Où je n'étais pas, je précise...

[2] Voir l'article sur le sujet dans MISC 18.

[3] Timestamp TCP ou ICMP par exemple.

[4] Les frappes au clavier constituent une source d'aléa pour un système informatique.

[5] Un certain temps.