Too much contact data sent to the server
English summary
What exactly is the contact data send to the server when a user is declared sick? Is it:
- Every contact in the last 14 days, or
- Only contacts at risk of transmitting the virus, i.e. less than 1 meter for more than 15 minutes
The French degree mentions the second option, which follows the principle of data minimization required by GDPR and CNIL. However, as far as I can tell, the current version of StopCovid implements the first option, sending a large amount of unnecessary data to the central server (and the server filters contacts that are considered at risk).
Do you have plans to filter this data on the phone before sending it?
Version longue en Français
Quelles sont exactement les données envoyées au serveur quand un utilisateur se déclare malade?
- Tous les contacts croisés pendant les 14 derniers jours, ou
- Uniquement les contacts avec un risque de transmission, c'est à dire à moins de 1 mètre pendent plus de 15 minutes
Le décret relatif à StopCovid indique la deuxième option, qui suit le principe de minimisation des données demandé par la CNIL et le RGPD. Cependant, à ma connaissance, la version actuelle de StopCovid utilise la première option. Elle envoie donc une grande quantité de données au serveur qui n'a pas d'intérêt pour tracer la propagation du virus, mais qui pose un vrai danger pour la vie privée.
Est-ce que vous travaillez sur une mise en place de la deuxième option?
Textes réglementaires
Le principe de minimisation des données du RGPD, mentionné aussi dans l'avis de CNIL voudrait qu'on utilise la deuxième option. C'est aussi ce qui indiqué dans le décret qui encadre le déploiement de StopCovid:
Pour la mise en œuvre du traitement mentionné à l'article 1er, sont traitées les données suivantes :
[...]
5° L'historique de proximité d'un utilisateur, constitué des pseudonymes aléatoires et temporaires émis via la technologie « Bluetooth » par les applications installées sur des téléphones mobiles d'autres utilisateurs qui se trouvent, pendant une durée déterminée, à une distance de son téléphone mobile telle qu'il existe un risque suffisamment significatif qu'un utilisateur qui serait positif au virus du covid-19 contamine l'autre. Les pseudonymes aléatoires et temporaires sont collectés et enregistrés par l'application sur le téléphone mobile de l'utilisateur. Un arrêté du ministre chargé de la santé, pris après avis de l'Agence nationale de santé publique, définit les critères de distance et de durée du contact permettant de considérer que deux téléphones mobiles se trouvent, au regard du risque de contamination par le virus du covid-19, à une proximité suffisante l'un de l'autre ;
6° L'historique de proximité des contacts à risque de contamination par le virus du covid-19, correspondant aux pseudonymes aléatoires et temporaires enregistrés par l'application dans les quarante-huit heures qui précèdent la date de début des symptômes ainsi que dans la période comprise entre cette date et la date de transfert de l'historique de proximité au serveur central ou, à défaut de renseignement de la date de début des symptômes par la personne dépistée positive, pendant les quinze jours qui précèdent le transfert de l'historique de proximité. Ces données sont transmises par les utilisateurs diagnostiqués ou dépistés positifs au virus du covid-19 qui le souhaitent au serveur central. Elles sont alors stockées sur ce serveur et sont notifiées aux applications des personnes identifiées comme contacts à risque de contamination à l'occasion de leur connexion quotidienne au serveur. Ces personnes identifiées comme contacts à risque de contamination reçoivent alors, par l'intermédiaire de l'application, la seule information selon laquelle elles ont été à proximité d'au moins un autre utilisateur diagnostiqué ou dépisté positif au virus du covid-19 au cours des quinze derniers jours ;
L'arrêté précise:
Les critères de distance et de durée du contact mentionnés au 5° de l'article 2 du décret du 29 mai 2020 susvisé permettant de considérer que deux téléphones mobiles se trouvent, au regard du risque de contamination par le virus du covid-19, à une proximité suffisante l'un de l'autre sont un contact à moins d'un mètre pendant au moins 15 minutes entre les utilisateurs de l'application « StopCovid ».
Ces textes dérivent clairement la situation 2: l'application ne traite et stocke que les contacts "à risque de contamination" (point 5°), et en cas de déclaration de malade, ne transmet que les contacts "à risque de contamination" (point 6°). D'après l'arrêté, cela signifie à moins d'une mètre pendant plus de 15 minutes.
L'application StopCovid
Malheureusement, l'application StopCovid utilise apparemment la première option. J'ai fait un test en installant StopCovid sur deux téléphones, et en l'activant une dizaine de seconde avec les deux téléphones dans deux pièces différentes (environ 5 mètres de distance, plus un mur). Quand je me déclare ensuite comme malade, mon appli envoie bien ce contact sur le serveur, alors qu'il n'a aucun intérêt épidémiologique. (Je me déclare évidement avec un faux code de malade, et le serveur refuse mes données, mais cela permet de bien voir ce qui est envoyé).
Ce comportement est aussi confirmé par les Administrateurs StopCovid: robert-server#32 (comment 349485)
Bizarrement, il y a du code dans l'application qui a l'air d'implémenter un algorithme de mesure de distance de Gorce, Egan et Gribonval, mais ce code n'est apparemment pas utilisé par le reste de l'application:
- https://gitlab.inria.fr/stopcovid19/stopcovid-android/-/blob/master/ble/src/main/java/com/orange/proximitynotification/ProximityInfoRiskComputer.kt
- https://gitlab.inria.fr/stopcovid19/stopcovid-android/-/blob/master/ble/src/main/java/com/orange/proximitynotification/ProximityInfoRisk.kt
Si ce comportement est confirmé, je pense que c'est en contradiction avec le décret qui encadre l'utilisation de StopCovid, et cela présente un vrai risque pour le serveur d'apprendre le graphe social des utilisateurs.