L'application SwissCovid proposée par la Confédération sert au traçage des contacts à risque de transmission du COVID-19. Déjà disponible en test à grande échelle, elle sera accessible à tous courant juin. Mais respecte-t-elle la sécurité des données et la vie privée?
Les informations transmises par le Center for Digital Trust de l'EPFL ainsi que la large documentation publiée permettent de s'en faire une idée intéressante. Voici notre analyse.
Genèse de la conception
Apple et Google, dont les systèmes d'exploitation équipent plus de 90% des téléphones mobiles du marché, ont décidé de développer ensemble des API entièrement compatibles entre les téléphones Android et IOS. Une telle collaboration ne s'était jamais produite jusqu'ici.
Les EPF suisses, qui avaient commencé à concevoir le projet d'app de traçage DP3T, ont pu collaborer avec les deux géants et intégrer ces APIs dans leur développement pour donner naissance à SwissCovid.
Principes de fonctionnement
Paul installe l'app sur son téléphone. Que se passe-t-il ensuite?
- L'app de Paul émet via bluetooth des données aléatoires sans lien avec lui ou son appareil.
- Les téléphones qui se trouvent à proximité captent et récupèrent ces données et ils les stockent. Mais il faut qu'il soient suffisamment proches.
- Ces données aléatoires ne contiennent en elles-mêmes aucune information pertinente. Si elles sont captées par le récepteur bluetooth d'un appareil où l'app n'est pas installée cela n'aura aucune incidence.
- Si Paul est testé positif, son cas est annoncé par son médecin à l'OFSP via un site spécifique. Suite à cela, le médecin reçoit un code, qu'il transmet à Paul. Celui-ci le saisit (ou pas, c'est son choix) dans son application.
- Le système de codes rend l'annonce de faux cas positifs impossible.
- Lorsque Paul a saisi son code dans l'application, celle-ci envoie à un serveur central tous les codes aléatoires générés durant les jours précédant son test. Ce sont les seules données qui sortent du téléphone, et elles en sortent uniquement quand Paul a saisi dans l'app son code de contamination.
- Toutes les apps installées viennent périodiquement consulter ce serveur pour vérifier les informations relatives aux cas déclarés. Elles les comparent avec leurs informations locales.
- Si une app trouve des correspondances entre les signaux communiqués et ses propres données, elle calcule la probabilité de contamination en tenant compte de la distance où se trouvait le téléphone par rapport à la source du signal (environ 2 mètres) et du temps d'exposition (15 minutes ou davantage). Dans ce cas (et uniquement dans ce cas) l'app émet une alerte.
- Tous les calculs de probabilité d’exposition au virus sont faits sur le téléphone lui-même, de manière décentralisée. Il est donc impossible pour les autorités de faire le lien entre un cas de contamination déclaré et l'identité de ceux qui reçoivent une alerte. De même, il n’est pas possible pour un utilisateur recevant une notification de connaître qui est la personne contaminée qu’il a côtoyée.
- La personne qui reçoit une alerte n'est pas tenue de se mettre en quarantaine. Il s'agit d'une information uniquement.
Points intéressants
- Malgré le nom "Contact Tracing", le protocole ne s’appuie en aucun cas sur les contacts contenus dans le téléphone.
- L'app n'utilise aucune donnée GPS et ne fait appel à aucune notion de positionnement géographique. Les distances entre appareils sont évaluées de manière relative en se basant uniquement sur la force du signal bluetooth enregistré.
- Cette évaluation de la distance ne tient pas compte d'éventuelles mesures de protection existantes. La présence d'un masque ou d'une paroi en plexiglas n'est pas prise en compte. Les faux positifs sont donc possibles.
- L'évaluation de la distance entre deux appareils s'est avérée compliquée et a nécessité beaucoup de tests, auxquels ont participé des soldats de l'armée suisse. Il s'agissait d'affiner le modèle de calcul des distances basé sur les émissions Bluetooth. Il était important que les distances inférieures à 2 mètres, distance en dessous de laquelle l'exposition éventuelle au virus devient critique, soient estimées avec exactitude.
- L'implémentation de l'app a volontairement été confiée à une entité externe, la très compétente société Ubique. A ce jour, l'app a été soumise à deux tests de pénétration distincts.
- Au mois d'avril, les EPF suisses se sont retirées du consortium européen qui travaillait sur le projet de traçage (PEPP-PT) car elles lui reprochaient un manque de transparence dans le traitement des données privées.
- L'application étant open source, le code est consultable librement. Par contre les APIs de Google et Apple, bien que documentées, sont propriétaires et leur code n'est pas disponible pour analyse.
Et si on sort du pays?
Le traçage de SwissCovid se limite à la Suisse, mais cela n'est pas dû à l'app elle-même. La Suisse a été la première à utiliser les APIs de Google et Apple, et d'autres pays pourraient développer leur propre solution sur la base de ce framework existant.
Les problèmes de compatibilité sont d'un autre ordre, puisqu'il faudrait pour assurer un traçage international que les différents pays mettent en commun les données qu'ils récoltent au niveau national. Cela relèverait dès lors d'une décision politique plutôt que de considérations techniques.
SwissCovid et protection des données: notre avis
L'analyse de l'application montre qu'elle est respectueuse de la vie privée et ne traite aucune information personnelle problématique. Elle ne fait pas courir de risque particulier à ses utilisateurs.
- Sur le plan théorique, la protection des données et leur anonymat sont assurés de manière robuste.
- Les données sont générées selon des séquences aléatoires qui changent toutes les 10 minutes, sont stockées localement sur le téléphone concerné et ne sont téléchargées sur le serveur central que si le détenteur de l'app s'annonce comme étant diagnostiqué positif. Cet intervalle de 10 minutes est suffisamment long pour détecter la proximité de 2 appareils mais aussi suffisamment court pour éviter de pouvoir "suivre" un individu sur la base de ses transmissions lors de déplacements.
- Le processus ne repose sur aucune notion de personne ou de lieu.
- Il est réalisé par des équipes de développement réputées.
- Il n'est jamais réellement possible de garantir la sécurité totale lors de l'implémentation d'une app. Mais on peut relever que tous les signaux sont positifs: code open source consultable, dispositif d'audit réalisé et assise/expérience des concepteurs suffisamment vastes pour autoriser la confiance.
- L'app ne stocke ou traite aucune information personnelle. Elle ne contient donc rien d'intéressant à voler. De plus, les systèmes d’exploitation modernes, et particulièrement iOS, permettent une containerisation des applications. Cela empêche une application malicieuse d’accéder aux données d’autres applications.
Il est ressorti d'un récent sondage mandaté par la Confédération que la population suisse accueillerait bien, à plus de 70%, l'usage de l'application de traçage. Ceux qui hésitent encore motivent leur sentiment par la crainte d'atteintes à la vie privée. On peut voir que le processus prévu élimine ce risque et le pourcentage d'acceptation pourrait ainsi encore augmenter.
Sous Android, l'app tourne sur la plupart des téléphones (Android 6+ Marshmallow et suivants via Google Play services). Pour Apple les limitations sont plus importantes, puisque l'app requiert IOS 13.5. Il y aura donc malgré tout quelques laissés pour compte dans le processus.
Conclusion
Cette app est une mesure de protection parmi beaucoup d'autres. Elle s'utilise sur une base entièrement volontaire et ne suffira pas à elle seule à contenir la contagion puisque rien n'oblige une personne possédant l'app à se signaler en cas de diagnostic positif.
Mais pour autant que suffisamment de personnes la téléchargent, jouent le jeu et annoncent les cas positifs, elle offre des possibilités de traçage efficaces sans pour autant mettre la vie privée des utilisateurs en danger.
Une bonne illustration du processus
Infos complémentaires
-
Déclaration de confidentialité et conditions d'utilisation sur le site de la Confédération. L’onglet Collecte et traitement des données est intéressant pour comprendre le fonctionnement de base de l’app.
-
Petite vidéo du Temps sur le fonctionnement de l’app
-
Pour les plus courageux, il y a la possibilité d’accéder au code source des applications (iOs, Android et les backends). Voir les répertoires avec –ch à la fin)
-
Documentation Apple sur la démarche de contact tracing - et la documentation du même projet chez Google. Les CEOs des deux sociétés ont communiqué à ce sujet dans des tweets simultanés : celui de Sundar Pichai et celui de Tim Cook.
-
Et finalement un white paper sur la technologie utilisée, publié par la Faculté Informatique et Communication de l’EPFL
Edit au 29.06.2020
L'app définitive est disponible depuis le 25 juin. Dans le contexte sensible de la protection des données, certains se sont étonnés de constater que les appareils tournant sous Android exigent l'activation de la géolocalisation alors que la position des utilisateurs est censée rester inconnue. L'équipe de projet explique la raison de cet état de fait:
"L'application SwissCovid utilise le cadre d'ExposureNotification fourni par Google. Ce cadre est intégré dans les services Google Play et seules les app des services de santé publique agréés y ont accès. L'ensemble des fonctionnalités/scans Bluetooth est effectué par les services Google Play, ce qui signifie que notre app ne nécessite donc pas d'autorisation BLUETOOTH_ADMIN ou ACCESS_FINE_LOCATION. Malheureusement il existe une contrainte liée au système Android: l'analyse BLE ne peut être effectuée que lorsque les services de localisation globale de l'appareil sont activés. C'est un comportement prévu sur Android (voir https://issuetracker.google.com/issues/37065090) mais qui prête particulièrement à confusion dans le cas particulier."
Source: https://github.com/DP-3T/dp3t-app-android-ch/issues/61#issuecomment-640280637