FAQ sur les aspects techniques de l'application StopCovid

Mis à jour le 04/06/2020

Vous trouverez dans cette rubrique les réponses apportées par l'équipe StopCovid et ses partenaires sur les questions techniques liées au développement de l'application StopCovid. Nous mettrons à jour régulièrement son contenu selon l'actualité du projet.

En complément, nous vous invitons à consulter sur le site du gouvernement la page d'information sur l'application StopCovid et la FAQ sur les volets fonctionnalités, santé, développement et libertés publics.

Choix technologiques & sécurité

Qu’est-ce que le protocole ROBERT ? 

C'est un protocole de communication – en informatique, cela signifie une "procédure" qui décrit comment une application doit fonctionner. Il est proposé par des scientifiques, qui travaillent sur la sécurité et la confidentialité des protocoles de communication depuis plus de 20 ans. Tout type d’application peut utiliser le protocole ROBERT. Le protocole ROBERT a été construit dans le cadre d’un partenariat franco-allemand entre Inria, l’institut français de recherche dans le numérique, et le Fraunhofer, un grand institut technologique allemand. Son but principal est de garantir le respect des normes européennes en matière de protection des données, de vie privée et de sécurité. Soumis à l’avis d’autres scientifiques, ce protocole évolue pour répondre aux exigences et corriger les points d’amélioration. L’application StopCovid est donc développée en utilisant le protocole Robert.

Quelle est la différence avec les applications de tracking des déplacements ?

L'application StopCovid n’est pas une application de « tracking ». Les travaux qui ont été lancés utilisent la capacité à identifier les équipements à partir des technologies Bluetooth et non les déplacements des personnes. Ils n’utilisent donc à aucun moment la localisation des personnes notamment par les données GPS des téléphones portables, à la différence du choix fait par d’autres pays.

Quel est le but du « contact tracing », à quoi cela sert ?

Par « contact tracing », on désigne la capacité à pouvoir informer une personne, ici à travers une application présente sur son smartphone, qu’elle a été au contact lors des jours précédents de personnes qui ont été diagnostiquées positives au Covid-19.  Cette « personne contact » présente, de ce fait, un risque d’avoir été infectée lors de ce contact et de devenir ultérieurement contagieuse elle-même et d’accélérer la diffusion du virus. Les « moyens numériques » qui permettent de qualifier ce risque reposent sur la capacité de deux smartphones à reconnaître qu’ils sont à proximité l’un de l’autre, à travers la technologie Bluetooth, qui n’est opérante qu’à faible distance (quelques mètres). Les services médicaux ont une longue pratique des enquêtes de terrain pour retrouver les chaines de propagation d’une épidémie, mais elles sont chronophages et nécessitent de fortes ressources humaines. En tant que tel, le type d’application visé n’est donc à voir que comme une aide complémentaire à ces pratiques et d’aider à automatiser la recherche de cas contacts par les autorités sanitaires.

Code source

Pourquoi ne pas avoir publié l’intégralité du code source dès le 12 mai ?

Le calendrier de développement de l’application prend en compte plusieurs facteurs : scientifiques, techniques, de contrôle par des autorités administratives indépendantes (comme la CNIL)… mais aussi et surtout humains. Il ne faut pas oublier que le projet opérationnel a commencé mi-avril et mélange plusieurs dimensions étroitement liées. Les équipes de développement sont pleinement mobilisées depuis le début du projet et les développements se font sous pression, dans le cadre d’un agenda très serré.

Dans la démarche de transparence souhaitée par l’ensemble des partenaires du projet StopCovid, il a été décidé d'échelonner la publication du code source plutôt que d’attendre que toutes les briques soient consolidées pour les rendre consultables. 

Pour finaliser une première version fonctionnelle et déployable de l'application au 2 juin, plusieurs choix se sont imposés :

  • Des développements rapides ont été initiés, sous forme de tests et de prototypes pour vérifier la faisabilité, pour tester les technologies, etc.
  • L'utilisation initiale de codes sources internes à des entreprises (dont certains sous licences propriétaires), qui les ont mis en apport pour accélérer le projet au départ, n’a pas permis de les publier en Open Source. Des développements ad hoc en open source ont été réalisés au fur et à mesure de l’avancement du projet.
  • L'équipe de développeurs impliquée s’est focalisée d’abord sur le développement, dans le contexte d’un agenda opérationnel très serré, puis sur la prise en compte des retours des phases de tests. La priorité pourra être donnée dans un second temps à la gestion des contributions et à l'animation de la communauté open source des contributeurs.

Quel est le calendrier de publication du code source ?

  • 12 mai : début de la publication en open source (licence MPL2.0) du SDK Robert côté apps Android et iOS, dans deux projets (« ROBERT SDK for Android » et « ROBERT SDK for iOS »)
  • 12 mai : publication de la démarche globale : README, AUTHORS, LICENSES, et de la documentation générale sur l'architecture
  • 13 mai : publication en open source (MPL2.0) du SDK Robert côté serveur, dans deux projets (« ROBERT Server » et « ROBERT Client API Specs »)
  • 22 mai : publication en open source (MPL2.0) de la partie BLE calibration pour iOS et Android
  • 22 mai : publication des sources de la partie permettant de générer et d’utiliser les QR Codes pour une personne diagnostiquée positive au Covid-19.
  • 26 mai : publication du code source de StopCovid avec l'application sous iOS (gitlab.inria.fr/stopcovid19/st…) et sous Android (gitlab.inria.fr/stopcovid19/st…) dans une version provisoire en terme de design.
  • 01 juin : la documentation des fondements scientifiques du projet sont accessibles sur GitLab

A noter aussi, pour tous les codes publiés sous licence MPL2.0 : 

  • Avant le 15 juin (date indicative, avant si possible) : une personne externe au projet peut demander aux actuels développeurs, via une issue, à rejoindre l’équipe de développeurs. Les développeurs décideront, de façon exceptionnelle, d'intégrer un nouveau compte pour le contributeur.
  • Après le 15 juin : les contributions vont être facilitées et le mode opératoire sera explicitement documenté dans le fichier CONTRIBUTING.md du projet accueil de StopCovid.

Quelles sont les évolutions au fil de l’eau ?

Comme dans tout projet logiciel, de nombreuses évolutions ont lieu au fil de l’eau. Un exemple notable : suite à la délibération de la @CNIL du 24/04 et à une recommandation de @ANSSI_FR indiquant qu'il convenait de remplacer l'algorithme 3DES, un nouvel algorithme a été implémenté pour le chiffrement, avec SKINNY-CIPHER64/192. Sa publication en open source sera effective début de semaine prochaine..

Vous lancez un Bug Bounty sur l’application StopCovid, en quoi cela consiste ?

A partir du 27 mai, un programme de Bug Bounty avec la société YesWeShare est lancé pour renforcer l’exigence en termes de sécurité, mobilisant une communauté d’experts en cybersécurité (appelé « hunters ») pour rechercher les vulnérabilités sur l’application et les corriger. Ce Bug Bounty se déroulera en deux phases : à partir du 27 mai, l’application sera soumise à une première phase de Bug Bounty, dite privée : une vingtaine de hackers éthiques répartis dans toute l’Europe testeront la sécurité de l’application. Lors du lancement de StopCovid, l’application passera dans une phase de Bug Bounty public, durant laquelle les 15 000 hackers de la communauté YesWeHack pourront tester la sécurité de l’application, en continu tout au long de son cycle de vie. Ces résultats seront remis sous forme de rapports et le bilan de ce programme sera rendu public sur le site YesWeShare.

=> En savoir plus sur le programme de Bug Bounty

 

Phase de tests

Comment l'application a-t-elle été testée en amont ?

Le développement du projet StopCovid repose sur un ensemble de tests fonctionnels qui se déclinent en 4 types

  • Tests utilisateurs « non modérés » collectés les 16 et 17 mai. Les premiers enseignements sont en cours d’intégration.
  • Tests terrain en conditions simulées qui se sont déroulés sur plusieurs à partir du 18 mai portant principalement sur le Bluetooth.
  • Tests d’intégration fonctionnelle en chambre pour vérifier chaque fonctionnalité de l’application soit opérationnelle.
  • Tests en conditions réelles (panel de citoyens dans une situation de la vie courante, tests micro trottoir…) afin d'évaluer et d'ajuster si nécessaire la prise en main, les réactions et les comportements des utilisateurs.

Qui pilote ces tests ?

Cette campagne a été réalisée grâce à la contribution de différents membres de l'équipe-projet StopCovid. En particulier : Inria et Orange pour la conduite de la campagne d’expérimentation ainsi que Capgemini pour le soutien à l’organisation et à l’animation des tests.

Quels sont les points qui ont été particulièrement étudiés pendant la phase de test terrain en condition simulée ?

L'objectif de ces tests était tout d'abord de vérifier et d'améliorer le calibrage des signaux Bluetooth permettant de détecter des ‘contacts’ à risque entre citoyens, en priorisant les scénarii de la vie courante pouvant poser le plus de difficultés techniques. Ces mesures sont essentielles pour s’assurer qu’une fois déployée, l’application enregistre uniquement les niveaux de proximité jugés « à risque » par les experts sanitaires, et ainsi, qu’elle alerte bien les utilisateurs présentant un potentiel élevé de contamination (logique de minimisation des faux-positifs et surtout, des faux-négatifs, pour éviter d’alerter une part trop importante de la population).

Plus spécifiquement, les tests visent à mesurer si l’envoi et réception de signaux Bluetooth entre mobiles utilisant StopCovid génèrent des résultats comparables dans les conditions suivantes :

  • Densité forte / faible de citoyens
  • Surface et hauteur de plafond élevée / moyenne / faible
  • Citoyens statiques / en mouvement
  • Plein air / présence de structures métalliques

Données

Qui est responsable de gérer le serveur central ? 

La Direction Générale de la Santé (DGS) est responsable du serveur central. Les données sont localisées en France, chez 3DS/Outscale, un fleuron industriel française du numérique.

Est-ce que tous mes contacts dans mon téléphone seront connus et pistés contre leur gré si je télécharge l’application ?

L’application StopCovid n’a aucun moyen technique pour accéder à la base de contacts d’un utilisateur.  Cette pratique n’a jamais été envisagée et n’est pas possible dans le cadre du protocole de communication ROBERT sur lequel se base l’application.  L’application ne pourra donc ni accéder aux contacts dans le téléphone de l’utilisateur, ni demander l’autorisation d’y accéder.

Même si je désinstalle l’application, est-ce que des données personnelles seront conservées sur un serveur ?

À tout moment, l’utilisateur a la possibilité de supprimer les données de proximité (et donc d’effacer définitivement toute information remontée sur le serveur). Lors de la suppression de l’application du smartphone, toutes les données de l’application seront, de fait, effacées.

Si je perds mon téléphone, comment éviter qu’on ait accès à mes données les plus sensibles ?

Aucune information personnelle utilisable n’est stockée ni gérée par l’application. Seules les occurrences de rapprochement avec d’autres détenteurs de l’application sont enregistrées de manière cryptée.

Si je suis contaminé est ce que le système peut vérifier si je respecte la quarantaine ?

Non, il n’y a pas de données de localisation dans l’application, dont le seul objet est de vous alerter si vous êtes « à risque » ou de permettre à des personnes que vous avez rencontrées de l’être si vous êtes testé(e) ou diagnostiqué(e) positifs.

Quel professionnel de santé sera chargé de remettre le code à l'utilisateur : le médecin prescripteur, le laboratoire qui a réalisé le test, les deux ?

Dans le cas du QR code, seuls les laboratoires seront chargés de les partager à leurs patients diagnostiqués positifs. Il pourra alors être scanné (QR code) ou saisi dans l'application. Dans le cas où le médecin prescripteur délivre le diagnostic, il aura aussi accès à des codes qui eux ne prendront pas la forme d’un QR code mais d’un code court à saisir dans les minutes qui suivent sa génération.

Comment le QR code sera-t-il transmis au patient ?

Le QR code sera partagé depuis le compte sécurisé du patient via le portail de récupération des résultats (CyberLab). Après avoir réalisé un test dans un laboratoire, le patient recevra un email l’invitant à se connecter sur la plateforme sécurisée afin d'accéder à ses résultats sous la forme d’un document pdf. Si le résultat est positif, le patient trouvera dans ce même document le QR code l’information suivante : " Si vous êtes un utilisateur de l’application StopCovid (disponible sur les magasins d’applications mobiles les plus courants), vous pouvez vous déclarer sur cette application en scannant le QR code suivant ou en entrant le code correspondant situé sous l’image. Ces éléments ne contiennent aucune donnée vous concernant."

Est-il prévu que le système d'information Sidep génère le QR code ?

Sidep ne génère pas le QR code. C’est un serveur sécurisé et agréé pour l’hébergement des données de santé qui met à disposition un ensemble de codes. Dans la pratique chaque jour des codes sont mis à disposition de Sidep qui distribue ces codes aux laboratoires. Chaque laboratoire est autonome dans la distribution des codes à associer à des cas positifs. Le médecin demande la génération d’un code court via une interface dédiée, après s’être authentifié.

Des précautions sont-elles prévues pour éviter que le QR code soit rattaché à une personne et/ou à ses données stockées dans Sidep ?

Chaque QR code est rattaché aux résultats d’une personne diagnostiquée positive. Sidep n’aura aucune information à ce sujet. Le back end de l’application StopCovid permet de générer des codes mais en aucun cas d’établir un lien entre une personne et les informations la concernant et le QR code.

Est-ce que le QR code sera généré aléatoirement et séparément du statut de positivité Covid ?

Oui, la génération des codes se fait en amont. Un serveur génère des codes qui seront par la suite utilisés en fonction des besoins par Sidep. La responsabilité d’associer un patient à un code repose sur les laboratoires de santé et les médecins.

Bluetooth

De quelle manière le Bluetooth est géré spécifiquement avec les iPhones ?

Le fonctionnement du Bluetooth Low Energy (BLE) est limité sur iPhone dès qu’une application est mise en arrière-plan : « l’advertising » BLE (= l’émission de messages) est restreint mais le « scan » BLE (= l’écoute des messages des appareils aux alentours) peut lui continuer. La présence d’un ou plusieurs appareils Android à proximité d’un iPhone va permettre à l’application d’être réveillée et les modèles Android seront donc bien détectés par l’iPhone. Par contre, les appareils Android ne peuvent détecter l’iPhone directement car celui-ci n’émet pas de messages d’ « advertising » complet pour se signaler. Pour résoudre cette limitation, un échange Bluetooth explicite est initié de l’iPhone vers le ou les appareils Android pour les informer de la présence de l’iPhone à proximité.

Si je ne télécharge pas l’application, mon Bluetooth sera-t-il perçu par le Bluetooth d'un contact qui a activé l'application ?

L’application StopCovid n’enregistre pas tous les signaux Bluetooth qu'elle croise. Elle capte uniquement les « pseudonymes » d’un téléphone envoyés périodiquement par l’application StopCovid. Il faut donc avoir activé l'application pour qu'un signal Bluetooth identifie un autre signal Bluetooth. Ce sont ces pseudonymes que les téléphones enregistrent et qui permettront ensuite d’alerter ou non les contacts d’une personne testée positive.

Sur des téléphones non récents, est-ce que la batterie ne va pas se vider en laissant actif le Bluetooth en permanence ?

Ce paramètre a été identifié et étudié. Les tests effectués préalablement ont montré un impact limité sur la batterie. StopCovid utilise le Bluetooth « low energy », qui consomme moins d'énergie et donc limite l'impact sur la batterie. Il est utile de rappeler que l'application peut être activée et désactivée facilement.

Géolocalisation

Pourquoi les appareils sous Android demandent-ils l'accès à la géolocalisation pour utiliser l'application ?

Android ne permet pas aux applications d'utiliser le Bluetooth sans demander l'autorisation d'accès au positionnement. C'est une contrainte imposée par le téléphone et non par StopCovid. Cependant StopCovid n'utilisera en aucun cas la fonction GPS de votre téléphone : l'application utilisera uniquement le Bluetooth et ne pourra pas vous géolocaliser. Dans une démarche de transparence et pour qu’il soit possible pour toutes celles et ceux qui le souhaitent de vérifier que StopCovid n’utilise à aucun moment la géolocalisation des personnes, le code source de l’application a été publié et est disponible sur GitLab Inria StopCovid.