Pas de fumée sans feu
Par Sid,
dimanche 31 décembre 2006 à 18:00 :: (In)Sécurité
Lu 12944 fois :: #161
:: rss
:: atom
::
English

et adage bien connu, servant usuellement de justification à tous les commérages, trouve une application tout ce qu'il y a de plus concrête en sécurité informatique : les "side channel attacks", ou attaques par effet de bord. Tout action sur un système le perturbant, il s'agit d'observer les-dites perturbations pour retrouver des informations sur l'action qui les a déclenchées. Le fameux principe de l'action et de la réaction appliqué aux systèmes informatiques en somme.
Un exemple bien connu de ce type de manipulation est la fameuse énigme de l'ampoule et des trois interrupteurs. Soient une pièce close dans laquelle se trouve une ampoule éteinte, et trois interrupteurs situés à l'extérieur. Un seul des trois contrôle l'ampoule. Il s'agit évidemment de découvrir lequel permet d'allumer ou éteindre la lumière dans la pièce en ayant le droit d'ouvrir une seule fois la porte. Réponse en fin de billet ;)
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.
Commentaires
1. Le mardi 9 janvier 2007 à 18:11, par Max
2. Le jeudi 30 octobre 2008 à 22:03, par dd
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.