À l’occasion d’un billet d’humeur posté sur LinuxFr, peut-être est-il temps d’en rapeller le fond ici afin de répondre au souci de certains qu’IPv6 risque de compromettre leur vie privée. Le problème s’est re-posé récemment lorsqu’il s’est avéré que certains logiciels de VPN ne supportaient qu’IPv4, et ne sécurisaient (ni ne bloquaient) IPv6. Ce billet relaie aussi un commentaire de la même teneur que j’avais déjà fait en réponse à ce précédent article.

Un des grands apports d’IPv6 est une séparation simple entre sous-réseaux (identifiés par leur préfixe), et les machines sur chaque sous réseau (identifiées généralement par les 64 bits de poids faible de leur adresse). Dans le cas d’un adressage IPv6 par un FAI, on peut imaginer plusieurs cas de figure. Je ne prends pas en compte, dans ce qui suit, tous les moyens de rendre la relation entre IP et identité de l’utilisateur plus faible qu’elle ne l’est déjà (p.ex. ipFlood, pour n’en citer qu’un).

Le premier type d’adressage, très similaire à IPv4, est celui où le FAI attribuerait, à un instant donné, une seule adresse IP à chaque abonné. Dans ce cas, quelque-soit le nombre de bits utilisés (32 en v4, 128 en v6), il n’y en a qu’une, uniquement attribuée pour une période de temps variable à un unique utilisateur.  L’impact en terme d’exposition involontaire d’informations privées est donc strictement le même.

Une approche similaire est celle ou le FAI présente un préfixe à ses utilisateurs, que leur machine utilise pour déterminer son adresse complète. Il existe plusieurs techniques pour ce faire. La première recommandation consiste à utiliser un algorithme déterministe et facilement réversible basé sur l’adresse physique (MAC) de l’interface réseau pour générer ces 64 bits de poids faible. De ces derniers bits d’une adresse, il est donc possible de déterminer le constructeur et le numéro de série de l’adaptateur. À ce jour, je ne suis pas sûr de comment qualifier le niveau de risque de cette information en terme de vie privée, tant le lien entre un composant, identifié en interne par son constructeur, et son utilisateur final, qui a rarement acheté cet équipement directement, me semble ténu. Si toutefois révéler cette information est indésirable, il est aussi possible d’utiliser un algorithme différent, qui génère une adresse complètement aléatoire, sans lien avec aucun des équipements de l’utilisateur, et contenant uniquement le préfixe de son FAI. C’est ce second algorithme que Windows utilise par défaut.

On peut cependant espérer ne pas trop voir ce genre de situations (une seule IPv6 par abonné), et plutôt des cas de figure où l’utilisateur final obtient de son FAI quelques préfixes à son seul usage (entre 1 et 65536). De la même manière que précédemment, le lien entre chacun des préfixes et l’utilisateur est strictement le même qu’avec une adresse IPv4 attribuée pour la même période de temps. Au sein des sous réseaux utilisateurs utilisant ces préfixes, chaque machine va généralement configurer son adresse automatiquement (ou, à l’option de l’utilisateur final, par d’autres techniques, rendant l’adressage interne complètement arbitraire et en dehors de notre scope). Les mêmes solutions pour déterminer les 64 bits de poids faible que dans l’exemple précédent sont utilisables. Au pire, donc, une information sur le constructeur et le numéro de série de la puce s’occupant de la connexion réseau est révélée, au mieux un nombre aléatoire.

Un problème annexe mais peut-être plus important est celui de la traçabilité. Exposer une adresse IP par machine (par opposition aux NATs qui partagent une IPv4 entre plusieurs machines), à l’heure où il n’est pas rare qu’un utilisateur unique aie plusieurs terminaux (ordinateur de bureau, netbook, tablette, téléphone, …), peut révéler des informations sur les habitudes et le nombre de machines de cet utilisateur. Cependant, une autre possibilité de génération d’adresse est d’utiliser des algorithmes de chiffrement pour générer plusieurs adresses pseudonymes pour chaque interface. Ainsi, la corrélation entre le nombre de machines utilisées et le nombre d’adresses IPv6 observée est grandement réduit.

Au final, même si IPv6 permet d’adresser indépendamment toutes les machines d’un utilisateur, l’ensemble des mécanismes de génération d’adresse permet de limiter la relation entre adresse IP et identité de l’utilisateur à celle qu’elle est pour IPv4. La plupart de ces mécanismes sont présents dans les systèmes d’exploitation courants, quand ils ne sont pas activés par défaut. Reste donc à déterminer la force de la relation entre adresse IPv4 et identité de l’utilisateur, dont la certitude tient souvent plus de l’hypothèse que du fait.

2 Réponses to “IPv6 et anonymat”

  1. on 3 Fév 2011 13 h 54 minJean-Michel Combes

    Bonjour,

    Un petit commentaire concernant l’utilisation des CGA pour l’anonymat.

    « Cependant, une autre possibilité de génération d’adresse [RFC3972] est d’utiliser des algorithmes de chiffrement pour générer plusieurs adresses pseudonymes pour chaque interface. Ainsi, la corrélation entre le nombre de machines utilisées et le nombre d’adresses IPv6 observée est grandement réduit. »

    J’ai l’impression que vous faites la même « erreur » que certaines personnes à l’IETF (cf. http://www.ietf.org/mail-archive/web/saag/current/msg02838.html): la propriété d’anonymat des CGA n’est qu’une effet de bord et non l’objectif initial de la spécification à l’IETF de ce type d’adresses IPv6, à savoir pouvoir prouver que l’on est le vrai « propriétaire » de l’adresse.
    De plus, la génération de ce genre d’adresse peut prendre un temps non négligeable selon la valeur Sec souhaitée.
    Du coup, IMHO, autant utiliser le RFC 4941 afin d’éviter d’écraser une mouche avec un marteau.

    Très cordialement.

    JMC.

  2. on 18 Fév 2011 16 h 43 minJean-Marie Bonnin

     » La première recommandation consiste à utiliser un algorithme déterministe et facilement réversible basé sur l’adresse physique (MAC) de l’interface réseau pour générer ces 64 bits de poids faible. De ces derniers bits d’une adresse, il est donc possible de déterminer le constructeur et le numéro de série de l’adaptateur. À ce jour, je ne suis pas sûr de comment qualifier le niveau de risque de cette information en terme de vie privée, tant le lien entre un composant, identifié en interne par son constructeur, et son utilisateur final, qui a rarement acheté cet équipement directement, me semble ténu. »

    Pour moi le problème de privacy lié à l’utilisation d’identifiant d’interface tient moins à ce que l’on peut en déduire directement, et qui n’a j’en convient que peu d’importance pour le commun des mortels, qu’au fait qu’il soit unique et ne change pas dans le temps. Cette propriété induit la possibilité de tracer utilisateur nomade qui accède à un site d’information par exemple, même s’il ne s’identifie pas auprès de lui, puisque on connait la relation id interface et préfixe donc sa localisation.

    JM