Chapitre 27 Traces sur toute la ligne
Le fonctionnement normal des réseaux implique que de nombreux ordinateurs voient ce que l’on y fait. Il n’est pas question ici de surveillance active. C’est parfois complètement nécessaire à leur fonctionnement. Il arrive aussi que ces informations soient collectées parce que c’est « plus pratique », par exemple pour diagnostiquer des problèmes.
Or, le fonctionnement de n’importe quel ordinateur laisse un certain nombre de traces. C’est le thème du premier tome de ce guide.
Dans le cas d’une utilisation en ligne, ce n’est pas seulement l’ordinateur que l’on a devant les yeux qui peut garder des traces de ce que l’on fait sur le réseau, mais aussi chacun des ordinateurs par lesquels transitent les informations. Or beaucoup de ces informations circulent en clair, et non pas de façon chiffrée.
27.1 Sur l’ordinateur client
L’ordinateur utilisé pour se connecter au réseau est appelé client. Cette machine sait tout ce que l’on fait avec et, bien souvent, en conserve des traces.
Comme cela a été longuement expliqué dans le premier tome de ce guide, ces traces, et l’aisance avec laquelle elles peuvent être exploitées, dépendent très largement de l’ordinateur et du système d’exploitation utilisés.
27.1.3 Applications côté client
Dans l’évolution du web et de ses navigateurs, il est rapidement devenu clair que pour avoir un minimum d’interactivité, il était nécessaire qu’une partie du code source du site web soit exécutée du côté du client, par le navigateur web, et non sur le serveur web qui héberge le site.
Cela a plusieurs aspects pratiques : du côté du serveur web, c’est du travail en moins et des économies sur le matériel. Du côté du client, l’affichage et les fonctionnalités du site web sont accélérées. Cela permet aussi de minimiser le trafic réseau entre le navigateur et le site web : plus besoin de demander une page complète du site web à chaque fois que l’on clique sur un petit bouton, seul un petit fragment de la page doit être transmis.
Des technologies ont été ajoutées aux navigateurs web pour permettre ces fonctionnalités : JavaScript et Java en sont les principaux représentants.
Mais ces petits plus ont également un coût : comme précisé plus haut, cela signifie que l’autrice d’un site est en mesure d’exécuter le code de son choix sur les ordinateurs des personnes qui le visitent (ce qui pose de nombreux problèmes de sécurité, comme nous l’avons vu dans le premier tome de ce guide). Bien sûr, des protections ont été mises en place au sein des navigateurs web249, mais elles ne couvrent pas tous les risques et ne remplacent en tout cas pas la vigilance des internautes.
D’autant que ces technologies ont parfois des fonctionnalités qui, si elles peuvent être utiles, posent question : ainsi WebRTC250, une technologie qui vise à intégrer aux navigateurs web les communications en temps réel, permet d’accéder au micro et à la caméra de l’ordinateur sur lequel elle est utilisée.
On a vu que placer sa confiance dans un logiciel était un choix complexe. Dès lors, l’exécution de ce genre de programmes pose des questions quant au pouvoir donné aux autrices de sites ou d’applications web d’accéder aux ressources de notre ordinateur, et aux informations qu’il contient.
De plus, avant d’être exécutés par le navigateur web, ces bouts de code transitent par le réseau, souvent sans aucune authentification. Cela laisse le loisir aux personnes malintentionnées et bien placées de les modifier, tout comme le reste d’une page web. Pour y introduire, par exemple, un logiciel malveillant. Il est aussi possible de jouer avec les données que ces codes doivent traiter pour tenter de détourner leur usage. Ce genre de manipulation de pages web a par exemple été détecté par le passé lors de l’utilisation du point d’accès Wi-Fi d’un hôtel à New York qui utilisait un équipement réseau dédié à cette tâche251.
Au final, un navigateur web moderne a tellement de fonctionnalités que d’éventuelles adversaires disposent d’un nombre considérable d’angles d’attaque.
27.1.4 Dans les journaux des logiciels
Le navigateur web n’est pas le seul logiciel à enregistrer des traces sur l’ordinateur utilisé ; la plupart des logiciels ont des journaux.
Par exemple, les logiciels de messagerie instantanée enregistrent souvent l’historique des conversations ; les logiciels de partage de fichiers en pair-à-pair (comme BitTorrent), eux aussi, ont tendance à se souvenir de ce qu’on a téléchargé récemment ; les logiciels de mail gardent les emails qu’on a téléchargés ; etc.
- Apparemment, les collègues ont fini par retrouver le document sur le poste de travail d’une certaine Ana. Il a été téléchargé depuis le navigateur web, et modifié.
Dans notre histoire, les flics ont pu retrouver les traces du document de Bea dans l’historique du navigateur web et du logiciel de traitement de texte de l’ordinateur d’Ana.
27.2 Sur la « box » : l’adresse matérielle de la carte réseau
On a vu que la carte réseau utilisée par tout ordinateur pour se connecter possède une adresse matérielle, ou adresse MAC. Cette adresse est utilisée par les équipements réseaux pour rediriger un paquet de données vers la bonne carte réseau, lorsque plusieurs ordinateurs sont connectés sur la même « box » par exemple.
Normalement, cette adresse ne sort pas du réseau local. Cependant, on se connecte en général directement à la « box » d’un fournisseur d’accès à Internet — si l’on utilise le partage de connexion d’un téléphone, c’est lui qui jouera le rôle de « box ». Chaque carte réseau connectée à la « box » lui donne donc son adresse matérielle.
La plupart des « box » gardent un journal (log) qui contient ces adresses matérielles, au moins pendant le temps où elles sont allumées. Il est difficile de savoir les types et la quantité d’informations contenues dans ce journal, ainsi que l’existence potentielle de portes dérobées252 ou de failles de sécurité permettant d’y accéder. En effet, ces « box » fonctionnent avec un logiciel installé par le fournisseur d’accès à Internet, qui y garde un accès privilégié, ne serait-ce que pour effectuer les mises à jour du logiciel.
Ainsi, le fournisseur d’accès Orange admet collecter pendant 12 mois les adresses matérielles des ordinateurs qui se connectent sur ses « box », et les adresses IP associées pour la « gestion des diagnostics »253. Pour nous, la « box » est donc à considérer comme une véritable boîte noire, dont nous n’avons pas les clés, qui peut connaître (et faire) beaucoup de choses sur le réseau local.
Si on aime bidouiller, il est possible de remplacer le modem-routeur du FAI (Fournisseur d’Accès à Internet) par un modem-routeur sous OpenWrt254 ou plus simplement d’ajouter un routeur sous OpenWrt entre la « box » du FAI et nos ordinateurs. Il en existe des préinstallés et de plus, certains FAI associatifs fournissent des routeurs n’utilisant que des logiciels libres à leurs adhérentes255.
De plus, lorsque le réseau local inclut l’usage du Wi-Fi, il se peut que de manière plus ou moins accidentelle les adresses matérielles des ordinateurs se connectant à la « box » en Wi-Fi soient enregistrées par d’autres ordinateurs écoutant ce qui « passe dans les airs ». C’est ainsi que les Google Cars, en même temps qu’elles parcouraient des milliers de rues pour établir la carte de Google Street View, en ont profité pour « capturer » les adresses MAC des ordinateurs environnants256.
Il est par contre possible de changer temporairement l’adresse matérielle d’une carte réseau, afin par exemple de ne pas être pistées avec nos ordinateurs portables257 lors de nos déplacements.
Il faut aussi mentionner les cas où, avant de pouvoir se connecter à Internet, on doit entrer un login et un mot de passe dans son navigateur web : c’est souvent le cas sur les réseaux Wi-Fi publics, que ce soit ceux d’une agglomération, d’une institution ou d’un fournisseur d’accès à Internet (FreeWifi, SFR WiFi public et autres Bouygues Telecom Wi-Fi). On appelle ces pages des portails captifs. Dans ce cas, en plus de l’adresse matérielle de la carte Wi-Fi, on donne à l’organisation qui gère le portail l’identité de la personne abonnée correspondant à ces identifiants.
27.3 Sur les routeurs : les en-têtes de paquets
Sur le chemin entre un ordinateur et le serveur auquel on souhaite se connecter, il y a de nombreux routeurs, qui relaient les paquets et les envoient au bon endroit.
Pour savoir où envoyer un paquet, ces routeurs lisent une sorte d’enveloppe sur laquelle un certain nombre d’informations sont écrites ; on appelle cette « enveloppe » l’en-tête du paquet.
L’en-tête d’un paquet contient de nombreuses informations qui sont nécessaires à son acheminement, et notamment l’adresse IP de la machine destinataire, mais aussi l’IP publique de la machine expéditrice (à qui la réponse devra être envoyée). Le routeur voit donc quel ordinateur veut parler à quel autre ordinateur, de la même manière que la factrice doit avoir l’adresse de la destinataire pour lui transmettre le courrier, ainsi que l’adresse de l’expéditrice pour un éventuel retour.
Les en-têtes contiennent aussi le numéro du port source et celui du port de destination, ce qui peut renseigner sur l’application utilisée.
Pour faire leur travail, les routeurs doivent lire ces informations ; ils peuvent aussi en garder la trace dans des journaux.
Bien qu’ils n’aient pas de bonne raison de le faire, les routeurs sont aussi en mesure d’accéder à l’intérieur de l’enveloppe transportée ; par exemple le contenu de la page web consultée par l’internaute ou celui d’un email envoyé : on parle alors d’examen approfondi des paquets258 (Deep Packet Inspection ou DPI en anglais).
Le fournisseur d’accès à Internet français Orange inclut par exemple dans le contrat de ses abonnées une clause concernant l’usage des « données relatives » à son trafic259.
27.4 Sur le serveur
Le serveur qui héberge le site visité a accès, comme les routeurs, aux en-têtes des paquets IP et donc à toutes ces informations dont on vient de parler. Il regarde notamment l’adresse IP de la « box » utilisée par l’ordinateur qui se connecte pour savoir à qui envoyer la réponse.
En plus des en-têtes IP, correspondant à la couche réseau de la communication, le serveur lira les en-têtes du protocole applicatif, qui correspondent à la couche applicative de la communication.
Mais le serveur lit aussi le contenu des paquets eux-mêmes : c’est en effet lui qui doit ouvrir l’enveloppe et lire la lettre pour y répondre. Le logiciel serveur va alors interpréter la lettre reçue, qui est écrite avec le protocole applicatif, pour fournir la réponse adaptée.
Or, de très nombreux protocoles applicatifs véhiculent aussi des informations qui permettent d’identifier l’ordinateur qui se connecte — c’est ce que nous allons voir en détails ici.
Les serveurs ont, comme les ordinateurs clients, des journaux systèmes — on en parlera davantage dans la partie suivante.
27.4.1 Les en-têtes HTTP
Lorsqu’un navigateur web demande une page web, il inclut dans la requête le nom du logiciel, son numéro de version, le système d’exploitation utilisé et la langue dans laquelle celui-ci est configuré.
Voici une requête envoyée par le navigateur web Firefox :
GET /index.php HTTP/2
Host: exemple.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.5) Gecko/20100101 Firefox/91.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: fr-FR,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://duckduckgo.com/
Cookie: donation-identifier: dd634367a6b4485ba288197bd92745b4
On y voit tout d’abord une commande contenant le nom de la page demandée
(/index.php
), le nom de domaine correspondant (exemple.org
), suivie
d’un en-tête qui contient entre autres le nom et la version de navigateur web
(Mozilla/5.0 (X11; Linux x86_64; rv:91.5) Gecko/20100101 Firefox/91.5
)
ainsi que le système d’exploitation
utilisé (Linux x86_64
), les langues acceptées (fr-FR
pour
français de France, en
pour anglais), la page sur laquelle se trouvait le lien que l’internaute
a suivi pour arriver à la page demandée (https://duckduckgo.com/
), et le
cookie
de session (donation-identifier: dd634367a6b4485ba288197bd92745b4
).
Dans le navigateur web Firefox, on peut afficher en quelques clics les en-têtes de nos requêtes :
- cliquer sur en haut à droite ;
- sélectionner Outils supplémentaires puis Outils de développement web, puis sélectionner l’onglet Réseau.
Un nouveau panneau s’ouvre. Lorsqu’on charge une page, une ligne s’affiche pour chaque requête. En sélectionner une — la première, par exemple, qui correspond au chargement de la page elle-même — pour afficher ses en-têtes dans le panneau de droite, dans un onglet nommé En-têtes.
Ces informations sont là pour être utilisées par le serveur web, qui va adapter sa réponse en fonction : c’est notamment grâce à cela qu’un site disponible en plusieurs langues s’affiche dans notre langue sans que nous ayons eu à l’indiquer.
Mais ces informations, comme toutes celles qui transitent par le serveur, sont
aussi accessibles aux personnes qui s’occupent de la maintenance du serveur :
ses admins… et leur hiérarchie. En général, les serveurs gardent aussi ces
informations dans des
journaux,
plus ou moins longtemps, notamment pour faire des statistiques et pour
faciliter les diagnostics en cas de panne. Ils ajoutent aux en-têtes l’adresse
IP d’origine ainsi que la date et l’heure. Voici une ligne de journal
enregistrée pour notre requête (l’adresse IP d’origine se trouve au début :
203.0.113.42
) :
203.0.113.42 - - [22/Jan/2022:00:00:00 +0100] "GET /index.php HTTP/2" 200 2131 "https://duckduckgo.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:91.5) Gecko/20100101 Firefox/91.5) Gecko/20100101 Firefox/91.5"
27.4.2 Les en-têtes mail
Chaque courrier électronique inclut un en-tête ; malgré son nom, ce dernier n’a strictement rien à voir avec l’en-tête d’une page web. Cet en-tête contient des informations sur les données contenues dans l’email : un autre exemple de métadonnées, les « données sur les données ». Il est rarement montré dans sa totalité par notre logiciel de courrier électronique, mais il reste néanmoins bien présent. Il inclut souvent de nombreuses informations sur l’expéditrice — bien plus que son adresse mail.
Dans l’exemple suivant, on peut lire l’adresse IP publique,
à savoir celle qui sera
visible sur Internet,
de l’ordinateur utilisé pour envoyer l’email (203.0.113.98
), ce qui
permet de connaître l’endroit où l’expéditrice se trouvait à ce moment-là,
l’adresse IP de son ordinateur à l’intérieur de son
réseau local (192.168.0.10
), le logiciel de mail utilisé (Thunderbird/91.5.0
),
ou encore son système d’exploitation (Mac OS X 11
).
Return-Path: <bea@fai.net>
Delivered-To: ana@exemple.org
Received: from smtp.fai.net (smtp.fai.net [198.51.100.67])
by mail.exemple.org (Postfix) with ESMTP id 0123456789
for <ana@exemple.org>; Sat, 22 Jan 2022 20:00:00 +0100 (CET)
Received: from [192.168.0.10] (paris.abo.fai.net [203.0.113.98])
by smtp.fai.net (Postfix) with ESMTP id ABCDEF1234;
Sat, 22 Jan 2022 19:59:49 +0100 (CET)
Message-ID: <CB0ABB91.17B7F@fai.net>
Date: Sat, 22 Jan 2022 19:59:45 +0100
From: Bea <bea@fai.net>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11; rv:91.5)
Gecko/20100101 Thunderbird/91.5.0
MIME-Version: 1.0
To: Ana <ana@exemple.org>
Subject: À mardi
Content-Type: text/plain; charset=iso-8859-1
Content-Length: 22536
Lines: 543
Ces en-têtes contiennent aussi parfois l’identifiant de l’abonnée chez son prestataire mail ou encore le nom de sa machine260.
À l’instar de ces quelques exemples courants, quasiment toutes les applications envoient des informations sur le contenu, mais aussi des métadonnées dans leur protocole.
27.5 Les traces qu’on laisse soi-même
Il n’y a pas que les traces que laisse le fonctionnement des réseaux : il y a bien sûr aussi celles que nous laissons nous-mêmes, de façon plus ou moins volontaire, par exemple en saisissant des informations sur des sites web ou simplement en nous connectant à des services.
Tenter de maîtriser les traces qu’on laisse sur les réseaux, c’est donc aussi réfléchir aux utilisations qu’on fait des services proposés sur Internet, et aux données qu’on leur confie — des thèmes qu’on traitera plus avant dans les parties à venir.
Pour voir le contenu du cache du navigateur web Firefox ou du Navigateur Tor, taper
about:cache
dans la barre d’adresse.↩︎La bibliothèque JavaScript evercookie (en anglais) est un exemple de ce type de technologies.↩︎
Il s’agit en général de ne donner accès au code des sites web qu’à des fonctions limitées en l’exécutant dans un « bac à sable » (Wikipédia, 2014, Sandbox (sécurité informatique).↩︎
Dans le Navigateur Tor, la fonctionnalité WebRTC est désactivée.↩︎
Justin Watt, 2012, Hotel Wifi JavaScript Injection (en anglais).↩︎
Un exemple de porte dérobée sur les routeurs d’un constructeur.↩︎
OpenWrt est un système d’exploitation libre pour routeurs. Voici quelques raisons de l’utiliser.↩︎
Une liste de modems et routeurs utilisés par les membres de la Fédération FDN : Fédération FDN, 2017, Modems et routeurs.↩︎
Europe 1 avec AFP, 2011, Street View : la Cnil épingle Google.↩︎
Martin Untersinger, 2016, Fin de l’Internet illimité : ça se précise chez Orange, qui dément.↩︎
La plupart du temps, cela se trouve dans la ligne
Received
de la première machine ou dans leMessage-ID
. Mais certains autres logiciels ou services de messagerie rajoutent d’autres lignes plus spécifiques.↩︎