Libres échanges - Philippe Jaillon

Philippe Jaillon

Titre : Libres échanges
Intervenant : Philippe Jaillon, enseignant chercheur
Lieu : Rencontres Mondiales du Logiciel Libre
Date : Juillet 2017
Durée : 25 min 49
Visionner la vidéo
Licence de la transcription : Verbatim
NB : Transcription réalisée par nos soins.
Les positions exprimées sont celles de l'intervenant et ne rejoignent pas forcément celles de l'April.

Description

L’Internet et les ordinateurs sont des outils formidables. Des outils à qui nous confions de plus en plus d’informations, à qui nous faisons des confidences, à qui nous confions nos plus précieux secrets… Mais ces outils, pour réussir dans ces taches, ont été dotés de propriétés et de fonctionnalités qui les rendent dangereux dès lors que nous en perdons le contrôle ou qu’ils nous échappent.
Cette intervention propose de faire un rapide panorama des aspects de la sécurité qui ont traits au respect de notre vie privée insensible à tous nos besoins d’échanges, qu’ils soient liés à la position stratégique de certains acteurs, aux développements de nouveaux services bien moins inoffensifs qu’il ne le paraissent, aux applications ou aux protocoles mal conçus ou mal utilisés… aux processeurs tellement bavards, qu’a les écouter, on peut en apprendre tous les secrets qu’ils cherchent à nous cacher.

Transcription

Libres échanges, une espèce de clin d’œil au nom qui a été donné aux RMLL cette année [Libre et change, NdT].

Un très bref CV. Je suis enseignant chercheur à l’École des mines de Saint-Étienne. Mes domaines de prédilection ce sont les réseaux de communication, les objets connectés et puis la sécurité de ces deux domaines. Et je suis particulièrement sensible aux problèmes de respect de la vie privée, d’où ma question de tout à l’heure.

De quoi est-ce que je vais vous parler ? Aujourd’hui, est-ce que l’Internet est le support qu’on nous a vendu il y a vingt ans ou trente ans au libre-échange ? C’est-à-dire est-ce que je suis libre de parler, d’échanger, avec qui que ce soit sur Internet ?

On va se dire qu’il y a des tas de choses qui ont été inventées ces dernières années, souvent par des personnes empreintes de liberté. Internet c’est né, on va dire ce sont les babacools américains de la côte Ouest qui rêvaient d’un monde où chacun pouvait parler à chacun, etc., même s’ils ont fait ça pour l’armée.

Donc les objectifs initiaux étaient louables. Mais qu’est-ce qu’il en reste aujourd’hui quand on regarde l’usage qu’on peut faire de toutes ces technologies ? Eh bien je vais vous faire, en fait, un cours de réseau. Donc qu’est-ce que c’est, aujourd’hui, communiquer dans l’Internet ? D’abord il faut utiliser des protocoles qui sont communs, les fameux protocoles qui ont été inventés dans les années 70 par Vint Cerf1 et compagnie. Ces protocoles, alors je ne sais pas comment dire, ils ne sont pas vraiment libres, mais ils sont publics. L’intérêt c’est de pouvoir communiquer ensemble. Donc les spécifications sont disponibles pour tout le monde. Elles ont été financées et puis maintenant, elles sont utilisables librement.

Pour pouvoir communiquer, eh bien il va falloir utiliser un service qui est sur le réseau. C’est-à-dire si je veux communiquer, si je veux faire du mail, il va falloir que j’utilise un relais de messagerie ; aujourd’hui c’est un service. Qu’est-ce qui va se passer ? Je vais envoyer mon mail, dès lors que ce mail est envoyé, eh bien il m’échappe, déjà ! Et puis il y a certains services, on en connaît plein, qui ne sont pas forcément des services libres. Aujourd’hui, Facebook, je ne peux pas admettre que ça soit un service libre. Google je ne suis pas sûr que ce soit un service libre. D’accord ? Il en existe des tas comme ça, Instagram, enfin tous ceux que vous pouvez imaginer, qui ont pignon sur rue, et qui sont super utilisés par une grande partie des internautes. Bien !

Donc conclusion. En fait, quand on communique sur l’Internet, d’abord on n’est pas seul, quand on entreprend une communication on a évidemment soi comme participant, le réseau et puis le service que j’ai représenté ici par un machin qui s’appelle un serveur. D’accord ! Donc on est trois et puis il y en a un au milieu, le réseau, je ne le connais pas vraiment en fait.

Première chose à savoir, c’est que les communications entre moi et le serveur, elles vont être observables tout au long de leur acheminement. Le petit fil rose, eh bien, je ne vais pas dire n’importe qui, mais tout un tas de personnes est susceptible d’observer ce qui circule sur le petit fil rose. Déjà ! Donc en termes de liberté, il est hors de question de chuchoter à l’oreille de quelqu’un.

Le premier équipement auquel, en général, on confie nos données c’est ce qui s’appelle un routeur. Un routeur, c’est quoi son travail ? C’est de regarder les données et de se dire pour qui sont-elles ? C’est plus que le facteur. Le facteur regarde l’enveloppe. Un routeur pourrait se restreindre à ça, mais en général, les routeurs, pour des tas de raisons, ils font plus, ils regardent plus loin. Ça s’appelle le deep packet inspection2, par exemple. Pourquoi ? Pour prioritiser les trafics, etc.

De toutes façons, pour communiquer, il va être nécessaire de faire super confiance au réseau.

Comment est-ce qu’on fait pour établir une connexion ?

Si on connaît l’adresse IP de son correspondant, qui est l’identifiant unique de chacun dans l’Internet, eh bien pas de problème, on va demander. Alors on demande à qui ? On demande au réseau.

On va demander au réseau quelle est l’adresse physique de l’équipement, si celui-ci est sur son propre réseau. Vous avez tous dû repérer quelque part que vous aviez un machin qui s’appelait l’adresse MAC ; l’adresse MAC est un identifiant qui est censé être à peu près unique, l’idée c’est qu’il soit unique dans un réseau local, et qui est associé physiquement à votre machine. De moins en moins de machines permettent de changer son adresse MAC. Donc on va demander au réseau quelle est l’adresse MAC de son correspondant et on va lui transmettre les données directement. Bon ! Qu’est-ce qu’on fait en disant ça ? On hurle, en fait, dans la salle : « Eh, t’es quelle place Marcel ? » Donc l’assemblée entière est au courant que je veux discuter avec Marcel.

Et puis sinon, si mon correspondant n’est pas dans mon propre réseau, je vais demander l’adresse MAC de mon routeur, celui qui a été configuré quelque part dans mon système, et je vais transmettre à ce routeur les informations qui lui permettront d’acheminer les données vers le correspondant. Conclusion : tout mon réseau local est averti de mes intentions. Quand je veux parler à quelqu’un tout le monde autour de moi sait que je veux parler à quelqu’un. Vous allez me dire ce n’est pas super grave que tout le monde, dans le cercle familial, sache que je veux parler avec, je ne sais pas quoi, ma fille ou avec un copain ; si c’est ma maîtresse, ça devient gênant, quoi !

Si je ne connais pas l’adresse IP de mon correspondant, il va falloir que je trouve un moyen de l’obtenir. Le moyen aujourd’hui pour l’obtenir s’appelle le DNS, le Domain Name System. C’est une espèce de méga base de données mondiale, distribuée, répartie ; donc pareil, construite historiquement en se disant à quel endroit est-ce que je vais faire l’association entre le nom d’une machine et son adresse IP ? Eh bien quel est le meilleur endroit ? Chez le propriétaire de cette machine. Donc les propriétaires des machines, qu’est-ce qu’ils faisaient ? Ils mettaient en place un service dans leur réseau dans lequel ils faisaient cette association et puis ils en informaient le responsable de niveau supérieur en disant « eh bien voilà les machines du réseau de l’École des mines, le serveur DNS est à tel endroit, etc. » Ça permettait à n’importe qui dans le monde de pouvoir récupérer ce type d’information.

Aujourd’hui, plus personne ne le fait. Quand vous, vous vous abonnez à l’Internet, si vous avez envie de disposer de votre propre nom de domaine et donc d’avoir des machines directement accessibles dans votre propre réseau, il va falloir mettre en place un DNS. C’est beaucoup d’ingénierie ; donc qu’est-ce qu’on fait ? On le confie à son prestataire, Libre ou pas libre le prestataire ; ils offrent tous ce service.

Donc au lieu d’interroger « le propriétaire », entre guillemets, du réseau, on interroge un tiers en lui demandant : « S’il te plaît, tu pourrais me donner l’adresse IP de la machine de Philippe Jaillon ? » Et il va répondre. Il est là pour ça. Mais au passage, qu’est-ce qu’il sait ? Il sait que vous, vous avez envie de discuter avec Philippe Jaillon. D’accord ? Donc on commence à informer des gens qui sont hors de son cercle, de « son premier cercle » entre guillemets. Parce que qui sont ces grands opérateurs ? En France c’est Gandi par exemple, c’est Orange, ça peut être d’autres. Ça peut être Verisign. Symantec offre ce type de service si vous leur achetez un nom de domaine, etc.

Donc le DNS, comment est-ce que ça fonctionne ? Là pareil, on va interroger le réseau pour connaître l’adresse de son correspondant. Comment est-ce qu’on fait ? Quand on est à la maison, eh bien on a en général une box qui a été raisonnablement configurée par son opérateur de manière à ce que toutes ces requêtes se fassent chez lui, pour des histoires d’efficacité, on va dire. On ne va pas dire qu’il cherche à nous tracer, mais… De toutes façons ils auraient d’autres moyens de nous surveiller.

Quand c’est mon téléphone, eh bien si je me paye un téléphone Android directement piqué chez Google, eh bien c’est super top, parce que le service auquel il faut que je m’adresse c’est 8.8.8.8 qui appartient à M. Google. Donc là ça devient rigolo parce que chaque fois que je vais faire une connexion dans l’Internet, je vais demander à M. Google son assentiment.

Quand on fait une recherche, comment ça fonctionne ? Eh bien le relais auquel on s’adresse va commencer par interroger ce qu’on appelle la racine, donc il y a treize machines dans le monde qui sont la racine du service DNS, et qui savent qui gère « com » qui gère « fr », qui gère je ne sais pas quoi, « it », « au », etc.

Après je vais à interroger ce qui s’appelle le gestionnaire du top-level domain, donc justement le fameux .net, .com. .au, .fr, et en lui demandant, par exemple si on on veut se connecter à l’École des mines : « S’il te plaît quel est le service qui gère, enfin quelle est la machine qui gère EMSE de "fr" ? » Donc « fr » me répond : « Pas de problème c’est cette machine », et puis je vais interroger cette machine-là. Alors on n’interroge pas en permanence la racine ; on l’interroge régulièrement malgré tout.

Les gestionnaires de top-level domain on les interroge aussi régulièrement. En plus, si vous configurez mal votre DNS, vous pouvez dire il est nécessaire de vérifier la validité de l’adresse IP qui sera fournie toutes les cinq minutes. Alors que vous ne changez jamais d’adresse IP, auquel cas vous auriez pu dire tous les mois. C’est prévu dans le protocole.

Et puis, au passage, le propriétaire du relais DNS, que ce soit mon opérateur ou M. Google, il a un énorme pouvoir sur moi. Pourquoi ? Parce que s’il ne me répond pas, je ne sais rien, je ne communiquerai pas ; et s'il me répond, ce n’est pas sûr qu’il me réponde la vérité. Qu’est-ce qui me dit que l’adresse IP qu’on me fournit est celle du serveur web de l’École des mines ou du relais de messagerie de l’École des mines ? Rien ! Rien du tout !

Donc maintenant, après avoir fait cette requête, eh bien on sait qu’il y a beaucoup de monde, dans le monde, qui sait qu’on est en train de vouloir contacter quelqu’un. Évidemment tous ces gens-là font des statistiques, enfin tout ce que vous voulez.

Après on va prendre un service, on va prendre le cas du Web qui est quand même aujourd’hui le plus utilisé, puisqu’on fait même du mail par le Web. Je ne connais plus grand monde qui utilise le protocole dédié au mail. Donc je connais l’adresse IP du serveur du service que je veux contacter ; eh bien mon navigateur web va s’y connecter sur le fameux port numéro 80 qui est dédié au Web. Donc il va réclamer un document et il va mettre un certain nombre d’informations dans ce document, dans sa requête. Il ne va pas dire : « Je veux juste la page machin. » Il va dire : « Je veux la page machin, mais je suis un navigateur web Firefox, version x ou y, etc. » Des cookies, évidemment ; mes préférences. Et tout ça en clair.

Pour des raisons d’efficacité, un serveur web, on ne va pas s’y connecter, en général, directement. Donc qu’est-ce qui se passe ? Souvent on va passer par ce qu’on appelle un proxy. Qu’est-ce que c’est qu’un proxy ? C’est un service qui va relayer votre communication. Ce relayage, il se fait comment ? Il se fait explicitement : vous avez configuré dans votre navigateur web, quelque part, qu’il y avait un proxy et qu’il fallait passer par lui. Sinon, on n’a pas besoin de ça, on peut capturer votre trafic. Un des routeurs qui est sur votre chemin peut capturer votre trafic et le rediriger vers un proxy. En plus, depuis la version 1.1 du protocole HTTP, donc qui est déjà assez ancienne, qui a presque une dizaine d’années, eh bien il y a des informations qui simplifient ça. Tous les firewalls de la planète font ça de manière transparente et, bien évidemment, votre opérateur le fait sans vous le dire.

On peut se dire pas de problème, on va essayer de sécuriser tout ça. On va utiliser un protocole qui va s’assurer que mes communications seront confidentielles. Donc vous avez le fameux TLS [Transport Layer Security] ou HTTPS. Donc qu’est-ce qui se passe quand on fait du HTTPS ? Eh bien on utilise un autre service où on va se connecter à la machine et on va commencer par négocier des paramètres de sécurité : quel est l’algorithme de chiffrement, etc. On va échanger des informations d’identité. Par exemple, le serveur va présenter un certificat prouvant qu’il est bien votre banque. D’accord ? Éventuellement vous, vous pouvez présenter un certificat prouvant que vous êtes bien qui vous prétendez être.

Ces informations, c’est-à-dire prouver qu’on est bien qui on prétend être, il faut être capable de le vérifier. Historiquement, on vérifiait ça localement, eh puis on s’est aperçu que ça marchait très mal. Donc on utilise aujourd’hui des services en ligne qui vous disent si le certificat qui vous est présenté est valide ou pas.

Donc quand vous vous connectez à un serveur web en utilisant le protocole TLS, vous récupérez le certificat du serveur que vous venez de contacter. Vous voulez le vérifier et vous le vérifiez en vous adressant à un autre service, le service OCSP [Online Certificate Status Protocol]. Ce qui est rigolo, enfin rigolo, c’est qu'aujourd’hui, une grande société commerciale qui s’appelle Comodo, fournit 40 % des certificats qui sont utilisés. Et c’est à cette société que vous demandez, chaque fois que vous vous connectez, si le certificat est valide. Et puis si ce n’est pas un certificat offert par Comodo, il est offert, enfin offert, vendu par Symantec, parce que les grands de l’Internet, les GAFA, Google, Facebook et compagnie, Wikipédia aussi, ont acheté un certificat chez cet opérateur.

On indique donc à ces opérateurs-là qu’on veut se connecter, parce que sinon on ne demanderait pas de vérifier le certificat.

En plus de ça, comme tout à l’heure pour des raisons d’efficacité, de contrôle ou de sécurité, de nombreux opérateurs relayent, utilisent des proxys, pour les communications chiffrées. Qu’est-ce que ça veut dire relayer des communications chiffrées ? Ça veut dire être capable de les déchiffrer et de se faire passer pour vous auprès de ces services. Les opérateurs font ça sans trop de vergogne. Vous, vous vous faites avoir certaines fois. Quand ? Si vous ignorez les avertissements de votre navigateur web ou si le proxy, le service d’interception, est capable de produire des certificats valables pour votre navigateur.

Par exemple, ce qui s’était passé en Tunisie pendant le « Printemps arabe », eh bien l’État tunisien était opérateur de certification et donc il était capable de fabriquer des vrais faux certificats pour Google, Facebook, etc. Et ça a permis à l’État tunisien d’arrêter tout un tas de personnes avant manifestation, etc.

Et puis ce n’est pas fini, parce qu’on a aussi la notion de reverse proxy et de cache distribué. Ça c’est quoi ? Vous avez de plus en plus d’attaques en déni de service, vous avez entendu parler de ça sans doute, et les sites web ont un mal de chien à se protéger contre ça. Donc vous avez des gens qui ont dit : « Ce qu’on pourrait faire, c’est aider les sites web à se protéger contre ce type de choses. Nous, on va mettre en place des choses. Donc plus personne n’accédera directement à votre serveur web, mais il accédera à mon service et, de mon service, je rebondirai vers votre serveur web. Comme ça vous serez protégé. » Vous, en tant que serveur, que service, vous ne voyez plus jamais vos clients directement et donc, au passage, un tiers supplémentaire est au courant qu’une certaine personne a envie de se connecter à ce service.

Donc les reverse proxy, vous avez une société qui s’appelle Cloudfare qui fait ça. Il y a beaucoup d’entreprises, de sites, Wikipédia est protégé par Cloudfare, et vous avez les caches distribués, comme par exemple Akamai, pour tous les grands sites commerciaux.

Donc ce qu’il y a encore, c’est que les communications sont à nouveau traitées par un nouvel intervenant.

Donc si on fait un beau dessin, voilà. Au début j’avais cette petite flèche pour discuter dans mon réseau local et puis après, pour pouvoir me connecter à un certain serveur web, je commence par interroger le DNS et maintenant je peux me connecter au serveur web. Mais on a vu qu’il y avait maintenant des serveurs OCSP pour pouvoir faire des communications sécurisées. Donc on enlève cette flèche verte, on a maintenant une flèche rouge pour savoir si le certificat présenté est valide et on a à nouveau une flèche verte. Oui, mais il y a aussi des proxys. En fait voilà, OCSP, ça se fait au-dessus du web, donc ça passe au travers de mon proxy qui se connecte au serveur OCSP. Mon navigateur web se connecte au proxy qui se connecte au serveur web. Mais on a vu qu’il y avait aussi des reverse proxy.

Donc une communication dans l’Internet, aujourd’hui c’est ça. Et vous voyez, je vous ai mis des espèces de nuages de couleurs différentes, ce sont des gens dont, comment dire, les intérêts sont différents des vôtres, que vous ne maîtrisez pas.

Vous avez acheté, vous fournisseur de service, un certificat chez quelqu’un. Vous allez imposer à tous les utilisateurs de passer par le service de votre fournisseur de certificat. Vous avez un reverse proxy, pareil, les utilisateurs devront passer par là.

Vous, vous avez un abonnement internet chez je ne sais quel prestataire qui remplace un proxy, vous allez passer par son proxy, etc. D’accord ?

Donc ce qu’on voit aujourd’hui c’est que une communication dans l’Internet ce n’est pas une communication quoi ! C’est un ensemble de communications.

[Combien de temps, il me reste ? C’est fini ? Aller c’est fini !]

J’avais des tas d'autres transparents sur les interceptions TLS, sur les protocoles avec des choses enfouies et je vais vous parler juste d’un dernier truc qui s’appelle le browser fingerprinting. C’est, on va dire, c’est le grand truc ces dernières années, alors ces dernières années, vous voyez, il y a un article qui le présente qui date de 2010. Vous avez un site web de l’EFF [Electronic Frontier Foundation] qui s’appelle Panopticlick3 ; je vous engage à y aller parce que c’est terrifiant. Donc l’idée c’est quoi ? C’est de tracer les utilisateurs, même si ceux-ci utilisent des services qui vont essayer de les rendre anonymes, qui vont essayer de préserver leur identité, etc., donc Tor4, tout ce que vous voulez. C’est hyper difficile à détecter et surtout à empêcher, si vous voulez continuer à utiliser les services.

L’idée c’est quoi ? On est 7 milliards à peu près. En base 2, sept milliards il faut 33 bits pour fabriquer le nombre. Ces 33 bits ça s’appelle l’entropie. Dès que je sais quelque chose sur quelqu’un, eh bien je suis capable de faire diminuer ce nombre de bits. Si, par exemple, je sais que vous êtes un homme ou une femme eh bien entre guillemets, je supprime un bit d’entropie. Je divise par deux la diversité, donc il ne reste plus que 32 bits à trouver.

Si je connais votre signe astrologique, grosso modo votre mois de naissance, il n’y a que 12 classes pour les mois de naissance, eh bien je vais faire diminuer l’entropie par 3,58 bits. D’accord ! Donc il y a presque 4 fois moins de personnes, enfin 12 fois moins de personnes qui sont d'un signe de naissance.

Si je connais votre date de naissance, pareil. Là, ce coup-ci, je vais faire diminuer de 8 bits. Si je sais que vous vivez à Paris je vais faire diminuer de 16 bits. Si je sais que vous vivez à Saint-Étienne, je vais faire diminuer de 16 bits presque 17 bits. D’accord ? Si je sais que vous vous vivez à l’île d’Yeux, qui est une petite île en Vendée, eh bien je vais faire diminuer de 20 bits. Pourquoi ? Parce qu’il y a 4500 habitants. Donc voilà.

Maintenant vous regardez ce tableau et ça, ce n’est même pas des informations que j’ai besoin de vous demander. La taille de votre écran ; en général votre navigateur web l’envoie au serveur. La time zone dans laquelle vous êtes, c’est-à-dire est-ce que vous êtes, on va dire Middle Europ, Central Europ, etc., il l’envoie aussi.

Quels sont les headers que vous acceptez ? Donc là par exemple je dis : « J’aime le HTML, et puis j’accepte le gzip et le Deflate5 et je suis en langue français de France. » Parce que vous avez français de Canada, français de Suisse, etc.

Ça c’est le nombre de bits qui baisse, notre entropie qui baisse. Et ça, ça fait que avec juste ces informations-là, il ne reste plus que quelques milliers de personnes qui sont différentes dans le monde. Et je joue avec mes étudiants à leur faire sentir ça, en leur demandant de ressembler à leur collègue, leur voisin de table. Eh bien, on n’y arrive pas. Si on utilise sa machine personnelle, on n’y arrive pas. On est différents. D’accord ? Bon. J’en ai terminé.