La face cachée de SwissCovid

Serge Vaudenay

24 janvier 2021

Alien sur Terre

Il était un monde utopique dans lequel les gens étaient libres de se déplacer. Ils étaient libres d'ouvrir un commerce. Ils étaient libres de se rassembler. Ils étaient libres de s'embrasser. Ils étaient libres d'exprimer leurs opinions. Leur vie privée était protégée. Ils avaient le droit de ne pas être surveillés.

En 2019, un méchant virus a décidé de conquérir le monde. Une fois installé dans le corps humain, il se reproduit gaiement. En nombre suffisant, il est ensuite propulsé par les postillons de la personne pour infecter d'autres sujets. L'être humain étant un animal social, le plan du virus était parfait. Cela infligea d'énormes pertes en tout genre, y compris la perte de ces libertés. En effet, la Loi sur les épidémies (LEp) prévoit que les autorités puissent prendre des mesures contraignantes, pour peu qu'elles soient proportionnées et dans le but de lutter contre la pandémie.

A présent, chacun est "invité" (par un budget de communication important) à garder sur soi un traceur numérique qui permettra d'enregistrer les contacts avec d'autres personnes et à émettre une alerte au cas où l'on aurait rencontré quelqu'un qui a été déclaré un "cas COVID-19". Dans le monde d'avant, une telle application aurait suscité de hauts cris d'indignation au titre du droit à la vie privée. Elle s'est malheureusement imposée comme une nécessité, avec la promesse de pouvoir garder une vie à peu près normale malgré la pandémie. Face aux promesses d'éviter de nouveaux confinements, le prix de la vie privée semblait effectivement dérisoire. De plus, des experts promettaient que la vie privée n'en serait pas altérée puisqu'ils offriraient une sécurité "parfaite".

En Suisse, l'application SwissCovid de l'OFSP a été lancée le 25 juin 2020.

La Science au secours

Dès le premier trimestre 2020, des chercheurs, confinés pour la plupart, se sont mobilisés pour réfléchir à une solution technologique. Plusieurs équipes de par le monde imaginèrent des solutions pour un traçage de contact numérique qui respecterait la vie privée. En fait, plusieurs équipes arrivèrent à peu près aux mêmes conclusions de manière indépendante.

Même sans la contrainte de préserver la vie privée, réaliser un système de traçage de contact numérique demande de surmonter un certain nombre d'obstacles. Tout d'abord, vu l'urgence face à la crise sanitaire, il faut que le déploiement puisse se faire au plus vite. La meilleure solution est donc de se reposer sur un système qu'une grande majorité de personnes possède déjà: un smartphone. Ensuite, il faut que ces smartphones puissent se détecter et déterminer s'ils sont à une distance inférieure à 1.5m ou pas puisqu'il paraîtrait que le virus arrive à sauter d'une personne à une autre sur cette distance mais pas davantage. Pour cela, on utilise la technologie Bluetooth.

Notons au passage que Bluetooth n'est pas du tout adaptée pour effectuer des mesures de distances; le résultat est forcément très imprécis. Déjà, Bluetooth ne fera pas la différence entre le contact entre personnes qui marchent masquées côte à côte en plein air et entre personnes qui dînent face-à-face en milieu confiné. Ensuite, la "distance Bluetooth" se mesure par les obstacles que les ondes radio doivent traverser, ce qui se traduit en une atténuation de la force du signal, entre la puissance d'émission et la puissance de réception. Un rapport de l'OFSP précise que dans des conditions de laboratoire, la probabilité pour qu'un contact à 1.5m soit détecté par l'application SwissCovid comme étant un contact proche est de 57.3%.1

La mesure du temps est également imprécise. Le critère reconnu pour qu'une alerte soit émise est que le contact avec une personne infectée totalise dans la journée une durée de 15 minutes. Si un smartphone émet un signal Bluetooth en quasi-permanence (en pratique, quatre fois par seconde), scanner un signal est une opération beaucoup plus gourmande en énergie et n'est fait qu'une fois toutes les quatre minutes en moyenne. A chaque fois qu'un contact est détecté par un scan, il compte pour quatre minutes. Pour totaliser 15 minutes, il faut donc détecter quatre fois un contact à risque. Dans le cas extrême où des personnes sont en mouvement permanent au cours d'un évènement qui dure longtemps, la probabilité qu'un contact effectif de 15 minutes au total résulte en au moins quatre scans est de 52%. Conjuguée à l'imprécision de la distance, on arrive à une probabilité de 30% de détecter un contact.

A contrario, un contact statique de 30 minutes à 3m pourra lancer une alerte avec une probabilité de 84.2%. Il arrive donc que des contacts qui ne devraient pas être détectés soient détectés plus facilement que des contacts qui devraient l'être.

L'épopée de DP3T

Le premier avril 2020, l'EPFL a annoncé dans la presse sa contribution dans le projet pan-européen PEPP-PT. Douze chercheurs de l'EPFL ont en effet rejoint ce projet, ainsi que quatre chercheurs de l'EPFZ. Quelques jours après, ces mêmes chercheurs commencèrent à utiliser leur propre acronyme DP3T et à se différencier de PEPP-PT. Puis, le 18 avril, l'EPFL annonça par voie de communiqué de presse qu'elle "se distanciait" (ce qui en terme diplomatique signifie partir en claquant la porte) de PEPP-PT. Ses chercheurs s'excitèrent sur les réseaux sociaux pour accuser PEPP-PT de manquer de transparence. C'était la partie émergée d'un chapitre peu glorieux d'une science en marche.

Ces annoncent cachent en réalité une divergence fondamentale dans la vision de l'architecture du système. PEPP-PT soutenait un système qui a été appelé "centralisé" et qui avait remporté une forte adhésion de nombreux gouvernements alors que DP3T prônait un système "décentralisé". Sans entrer dans le détail, un système centralisé permet à l'autorité de la santé publique de suivre le nombre de personnes en contact avec des personnes à risque et d'ajuster les critères d'alerte. Il permet un contrôle assez fin des paramètres de notification en temps réel. En théorie, les données des personnes restent anonymes mais des fuites d'informations ne sont hélas pas impossibles et les promoteurs de systèmes décentralisés s'en sont servi pour crier au loup. En effet, ils accusèrent les gouvernements d'intention cachées: de vouloir utiliser un tel système pour mettre la population sous surveillance. Rétroactivement, pourrait-on imaginer que l'OFSP se soit amusée à exploiter les fuites d'information pour surveiller les contacts privés entre personnes? Quoi qu'il en soit, les membres de DP3T ont opportunément considéré une telle éventualité comme intolérable et oeuvré pour détruire la réputation des systèmes centralisés. Quand ils auront par la suite reçu des critiques semblables sur les problèmes de protection de la vie privée dans leur système, ils les auront balayées en arguant que le but était de sauver des vies.

A l'initiative de membres de DP3T, une pétition à été rédigée pour exiger un certain nombre de garanties quant au traçage de contact numérique.2 L'une d'elle est que la sécurité de chacun des éléments du système puisse être évaluée de manière transparente. On y reviendra. En outre, la pétition prétendait que DP3T respectait la vie privée mais pas les systèmes centralisés. Ce fut signé par plus de 300 personnalités du monde académique, La Science était en marche.

Un autre problème pour le déploiement de tels systèmes est l'accès logiciel à l'interface Bluetooth du smartphone. En effet, les systèmes d'exploitation de Apple et de Google ne laissent pas facilement un tel accès aux développeurs. Dès le 10 avril 2020, Apple et Google annoncèrent une alliance historique pour déployer de tels systèmes et qu'ils favoriseraient les systèmes décentralisés. Cette annonce eut raison des choix de nombreux gouvernements qui abandonnèrent PEPP-PT pour les système promus par Apple et Google. Cela fit bien sûr les affaires de DP3T mais les concepteurs déchantèrent rapidement en constatant qu'au lieu de donner à leur app un plein accès à l'interface Bluetooth, Apple et Google avaient décidé d'implémenter quasiment tout le protocole dans ce qui s'appelle GAEN (Google-Apple Exposure Notification). Le résultat est que l'app ne fait quasiment plus rien mais se repose sur GAEN.

L'obstacle éthique a été purement ignoré. En effet, adopter une technologie contrôlée par deux géants pose de nombreux problèmes qui n'ont pas été traités. C'est une perte considérable en terme de souveraineté car Apple et Google sont libres de faire évoluer GAEN à leur guise. Cela renforce la fracture numérique entre les utilisateurs de Apple et de Google qui bénificient de la technologie et les autres. Cela encourage encore l'obsolescence programmée puisque GAEN ne fonctionne que sur des téléphones récents.

L'obstacle suivant était légal. En effet, le parlement a exigé d'avoir un cadre légal pour SwissCovid. Cela a été adopté le 19 juin 2020 par l'ajout de quatre articles dans la LEp. Notamment, l'article 60a impose ceci: "le code source et les spécifications techniques de tous les composants du système TP sont publics". Cela rejoint une exigence de la pétition mais cela pose un problème car GAEN n'a pas de code source public.

La stratégie adoptée s'est orientée sur la communication que GAEN fait partie intégrante d'un système pour lequel on ne peut raisonnablement pas exiger un code source public. Parfois, on disait que GAEN faisait partie du téléphone lui-même. Parfois, on invoquait le système d'exploitation. Dans le cas du système Android, c'est absolument faux puisque GAEN fait partie d'un composant de Google (Google Play Services) qui ne fait partie ni d'Android ni du téléphone. On peut le retirer. Android et le téléphone fonctionnent très bien sans, ainsi que la version pré-standard de SwissCovid. Néanmoins, cette manière de faire a été scellée le 24 juin (c'était prémédité!) dans l'Ordonnance sur le système de traçage de proximité pour le coronavirus SARS-CoV-2 (OSTP) du conseil fédéral. L'article 2 définit la liste exhaustive des composants du système, dont GAEN ne fait bien évidemment pas partie. N'étant pas un composant, nul besoin de publier le code source! GAEN apparaît dans l'article 5 qui définit les tâches de SwissCovid et qui précise qu'elle peut se faire aider "d'une interface avec le système d'exploitation du téléphone portable", soit GAEN. L'OSTP reprend donc l'idée que GAEN fait partie du système d'exploitation. De plus, l'article enfonce le clou en spécifiant que GAEN n'est pas soumis à l'exigence de l'article 60a de la LEp. Problème résolu! La Science peut continuer.

SwissCovid a été déployée le 25 juin.

SwissCovid pour les nuls

Le fonctionnement de GAEN est simple. Chaque jour, GAEN tire aléatoirement une clef du jour appelée TEK. Pour chaque période de 10 minutes de la journée, cette clef est utilisée pour calculer une autre clef appelée RPI. La clef RPI du moment est celle qui est émise en permanence (quatre fois par seconde) par Bluetooth à la manière d'un phare qui guide les navires.

Si l'utilisateur est diagnostiqué, l'autorité de santé publique lui donne un code d'accès (appelé "covidcode") qu'il doit saisir sur son app SwissCovid. L'app demandera alors à GAEN la liste des TEK utilisés les deux dernières semaines et les transmettra avec le covidcode à un serveur de l'OFSP. Si le covidcode est correct, l'OFSP publiera ces TEK avec leur date d'utilisation.

GAEN est à la fois phare et navire. Une fois toutes les quatre minutes, il repère quels phares émettent et reçoit ainsi leur RPI. GAEN prend note de ces RPI et de l'heure de réception. Plusieurs fois par jour, GAEN consulte également la liste des TEK publiés par l'OFSP avec leurs dates d'utilisation. GAEN recalcule les RPI engendrés par ces TEK et les compare avec les RPI reçus. A chaque fois, la date est vérifiée. S'il y a correspondance, le contact est identifié et GAEN peut alors calculer si la distance est proche et comptabiliser la durée. GAEN rapporte à SwissCovid qui décide le cas échéant d'alerter l'utilisateur.

fonctionnement de SwissCovid

Alain, Brigitte et Christophe échangent leurs RPI dérivés de leurs TEK. Alain tombe malade et obtient un covidcode de l'hôpital. Cela l'autorise à publier TEKA sur le serveur de l'OFSP. Brigitte et Christophe peuvent voir TEKA utilisé à la date tA. Brigitte reconnaît que cela engendre RPIA qui a été vu à la date tA.


Surveillance 3.0

SwissCovid est vantée comme étant une application parfaite pour ce qui est de la protection de la vie privée. Voyons donc ce qu'il en est.

Tout d'abord, on constate que de transporter un phare qui répète un code RPI pendant 10 minutes pour passer à un autre n'est pas très discret. On peut, en scannant les émissions Bluetooth, détecter les utilisateurs de SwissCovid sans même leur adresser la parole. Avec un réseau de capteurs Bluetooth, on peut bien entendu les suivre à la trace dans leurs déplacements. Il n'est pas nécessaire d'être à 1.5m pour capter le RPI. Un bon capteur fonctionne à 100m de distance. Le réseau de capteurs doit cependant être suffisamment dense pour ne pas perdre l'évolution du changement de RPI.

L'attaque des paparazzi consiste à capter à distance le RPI d'une célébrité et à consulter régulièrement le serveur.3 Si l'on a obtenu un seul RPI d'une personne et que l'on se souvient de son identité, on peut la reconnaître si elle a été diagnostiquée et a posté son TEK sur le serveur. Chacun peut également surveiller ses voisins. Ce type de menace peut en fait s'automatiser à tous les postes qui identifient une personne. Par exemple, au moment de payer au supermarché avec une carte du magasin, ce qui identifie le client, la caisse peut saisir le RPI de son téléphone et reconnaître ensuite s'il est tombé malade.

On peut enfin déployer un système de vidéo surveillance couplé avec des capteurs Bluetooth pour retrouver l'enregistrement vidéo de passants qui ont été diagnostiqués. De même, le réseau de capteurs qui permettait de suivre les personnes n'a plus besoin d'être dense pour reconnaître où sont passées ces personnes: elles sont reconnues indépendamment par chaque capteur et il n'y a plus besoin de suivre la piste de leurs déplacements.

Du côté de Apple et de Google, le contrôle de GAEN offre évidemment un avantage stratégique incontestable. Elles ont accès aux données stockées par GAEN. Elles peuvent les utiliser pour vendre de la publicité encore plus ciblée. Elles peuvent exfiltrer les données et reconstituer le graphe social des utilisateurs. Si Apple et Google ne le font pas, des investigations légales pourront le faire. En effet, on peut récupérer les données de GAEN par une analyse forensique.

Voilà pour la vie privée parfaitement protégée.

La machine à remonter le temps

Concernant la sécurité, la menace vient de ce que des personnes malintentionnées pourraient chercher à tirer profit de fausses alertes émises par des applications. Par exemple, un compétiteur pourrait se débarrasser d'un concurrent en injectant sur son téléphone une fausse alerte qui l'inciterait à se mettre en quarantaine. Un étudiant paresseux pourrait de même annuler un cours ou un examen. Quelqu'un pourrait même s'auto-injecter une fausse alerte pour échapper à un repas barbant chez la belle-famille.

De nombreuses méthodes existent pour injecter de fausses alertes. La plus simple consiste encore à créer une machine à remonter le temps. En effet, l'adversaire peut obtenir un TEK du serveur avec sa date de validité, envoyer sa victime dans le passé à cette date, rejouer le RPI obtenu par ce TEK et attendre que la victime se retrouve dans le présent puis réalise qu'elle a rencontré quelqu'un qui est rapporté sur le serveur.

Pour ce qui est du voyage dans le temps, s'il est encore techniquement difficile de transporter des personnes, c'est très facile pour un téléphone. En fait, il suffit de faire croire au téléphone que la date a changé. Le téléphone n'a effectivement pas de notion fiable du temps et se repose en permanence sur son environnement pour connaître la date. C'est le réseau qui lui indique quelle est la date et l'heure. Il suffit donc de simuler le signal du réseau pour transporter un téléphone dans le temps. C'est malhonnête mais c'est facilement réalisable avec très peu d'équipement. Concrètement, l'attaque fonctionne en quelques secondes pour ce qui est de sa phase active. Il faut ensuite attendre que SwissCovid découvre le contact à risque, ce qui peut prendre quelques heures.4

Il ne faut pas se leurrer quant à la sécurité. Mais le but est de sauver des vies.

SwissCovid contre SARS-CoV-2

La protection de la vie privée fait en sorte qu'il est quasiment impossible de savoir à quel point SwissCovid est utile pour lutter contre la pandémie.

On peut estimer le nombre d'utilisateurs actifs en comptant le nombre de requêtes au serveur. C'est peu fiable mais cela donne une idée. Il y a de fait un peu moins de 2 millions d'utilisateurs actifs en Suisse.

On peut compter combien de covidcodes ont été saisis et les comparer au nombre de cas officiels. On obtient que la fraction de cas dans le système SwissCovid est actuellement de 12%.

graphe du taux de cas présents dans SwissCovid

Nombre de covidcodes saisis et nombre de cas (total sur des périodes de 7 jours)


On peut compter combien de rapports cliniques sur les cas identifiés indiquent que la raison pour faire un test de dépistage était une alerte de SwissCovid. Les promoteurs ont annoncé 41 tels cas en Suisse à la fin de l'été, dans une période où il y a eu 12'456 cas, soit 0.3%.5 Cela a fait dire aux auteurs que SwissCovid avait découvert 41 cas qui n'auraient pas été découverts autrement mais rien ne prouve que ces cas n'étaient pas déjà alertés par un proche malade ni qu'ils n'étaient pas déjà en quarantaine eux-mêmes. En effet, on mettait des personnes en quarantaine sans faire de test mais une alerte de SwissCovid donnait droit à un test. Il y a donc probablement certains de ces 41 cas qui étaient déjà en quarantaine au moment où ils ont fait un test motivé par SwissCovid. On ne sait pas combien.

Enfin, on peut compter le nombre d'appels reçus par la centrale téléphonique au numéro indiqué par le message d'alerte de SwissCovid pour en déduire approximativement le nombre d'alertes. On obtient que SwissCovid est responsable de 5% des quarantaines alors que le nombre de cas découvert est certainement inférieur à 1%.6

On n'en saura pas plus. D'ailleurs, depuis le mois de décembre, les alertes ne suggèrent plus d'appeler une centrale téléphonique mais plutôt de remplir un questionnaire en ligne, ce qui ne va pas sans de nouveaux problèmes de vie privée: l'opérateur téléphonique est désormais informé si une personne est alertée et suit ce lien!

On nous a habitué à recevoir régulièrement une salve de communiqués pour vanter les mérites de SwissCovid. A chaque fois, les auteurs peaufinent la communication pour l'orienter autour de la métrique favorable qu'ils ont péniblement trouvée. Puisque l'on ne peut pas dire que SwissCovid a découvert des cas, la communication actuelle consiste à dire que SwissCovid permet d'identifier des cas un jour plus tôt.7 Si l'on lit correctement l'article qui a inspiré une telle conclusion, on se rend compte que c'est exactement l'inverse: lorsque SwissCovid parvient à notifier un cas contact en moins de 7 jours après exposition, la notification de SwissCovid parvient à la personne avant celle du traçage de contact manuel dans seulement 12% des cas. Ce que l'article constate, en revanche, c'est que pour les cas contacts notifiés par SwissCovid en moins de 7 jours, le temps que met la personne pour se mettre en quarantaine est plus court d'une journée.8 Il s'agit cependant d'une corrélation et non d'une causalité. Il ne faudrait pas penser qu'en incitant plus de personnes à utiliser SwissCovid, celles-ci se mettraient en quarantaine un jour plus tôt.

Beaucoup de bruit pour rien

L'application SwissCovid a renforcé le duopole de Apple et de Google. Elle n'a pas rempli les objectifs annoncés initialement en terme de protection de la vie privée, de sécurité, ou de fiabilité. Elle a nécessité de court-circuiter la loi, en ce qui concerne la publication du code source de ses composants. Elle ne détecte pas les contacts de manière fiable. Enfin, son efficacité, difficile à évaluer, est certainement très basse. Dans tout les cas, elle n'aura pas permis d'éviter les mesures de confinement. Telle est la face cachée de SwissCovid.

Références

  1. SwissCovid Exposure Score Calculation. Version du 11 September 2020.
    https://github.com/admin-ch/PT-System-Documents/raw/master/SwissCovid-ExposureScore.pdf
  2. https://www.esat.kuleuven.be/cosic/sites/contact-tracing-joint-statement/
  3. Analysis of DP3T.
    http://eprint.iacr.org/2020/399
  4. On the Effectiveness of Time Travel to Inject COVID-19 Alerts.
    https://eprint.iacr.org/2020/1393
  5. Early Evidence of Effectiveness of Digital Contact Tracing for SARS-CoV-2 in Switzerland.
    https://doi.org/10.1101/2020.09.07.20189274
  6. The contribution of the SwissCovid digital proximity tracing app to pandemic mitigation in the Canton of Zurich.
    https://www.ebpi.uzh.ch/dam/jcr:5fc56fb7-3e7e-40bf-8df4-1852a067a625/Estimation%20of%20SwissCovid%20effectiveness%20for%20the%20Canton%20of%20Zurich%20in%20September%202020_V1.5.pdf
  7. https://www.rts.ch/info/suisse/11908431-lappli-swisscovid-reste-plus-utile-que-jamais-estime-son-concepteur.html
  8. Digital proximity tracing app notifications lead to faster quarantine in non-household contacts: results from the Zurich SARS-CoV-2 Cohort Study.
    https://www.medrxiv.org/content/10.1101/2020.12.21.20248619v1
Plus d'information (en anglais): https://lasec.epfl.ch/people/vaudenay/swisscovid.html