En amont de toute décision politique, l’objectif du projet est de pouvoir rendre possible la mise à disposition d’une application permettant d’informer les usagers s’ils ont été en contact avec une personne ayant été testée positive au Covid-19, et de leur proposer des conduites à tenir, conformément aux préconisations du Ministère de la Santé et des Solidarités.
Le projet repose sur l’implémentation d’un protocole, ROBERT (ROBust and privacy-presERving proximity Tracing), qui a donné lieu à un avis du Conseil national du numérique (rendu public le 24 avril 2020) et à une délibération de la CNIL (rendue publique le 26 avril 2020). Cinq fondements ont guidé les développements :
- L’inscription de l’application StopCovid dans la stratégie globale de gestion de la crise sanitaire et de suivi épidémiologique.
- Le strict respect du cadre de protection des données et de la vie privée au niveau national et européen, tel que défini notamment par la loi française et le RGPD ainsi que la boîte à outils récemment définie par la commission européenne sur les applications de suivi de proximité.
- La transparence, qui passe notamment par la diffusion, sous une licence open source, des travaux spécifiques menés dans le cadre du projet. L’objectif est d’apporter toutes les garanties : transparence des algorithmes, code ouvert à terme, interopérabilité, auditabilité, sécurité et réversibilité des solutions.
- Le respect des principes de souveraineté numérique du système de santé publique : maîtrise des choix de santé par la société française et européenne, protection et structuration du patrimoine des données de santé pour guider la réponse à l’épidémie et accélérer la recherche médicale.
- Le caractère temporaire du projet, dont la durée de vie correspondra, s’il est déployé, à la durée de gestion de l’épidémie de Covid-19.
C’est dans ce contexte que, le 12 mai 2020, l’INRIA a publié une partie des briques logicielles de StopCovid. Seulement, l’INRIA faisait appel à l’algorithme 3DES pour chiffrer l’identifiant des utilisateurs, algorithme qui avait été déconseillé par la CNIL dans sa délibération du 24 avril 2020 :
« La Commission rappelle que seuls des algorithmes cryptographiques à l’état de l’art doivent être mis en œuvre, afin d’assurer l’intégrité et la confidentialité des échanges. Elle relève à cet égard l’usage de l’algorithme 3DES, envisagé à ce stade, et attire l’attention du ministère sur le fait que conformément au référentiel général de sécurité édité par l’Agence nationale de la sécurité des systèmes d’information cet algorithme ne devrait en principe plus être utilisé ».
Quelques jours plus tard, l’ANSSI lui avait préféré un algorithme de chiffrement plus récent, nommé Skinny-64/192 :
« Le projet d'application StopCovid repose sur la construction d'un historique de contacts pseudonymisés, en utilisant les signaux Bluetooth. Le protocole ROBERT a défini des spécifications techniques de communication par Bluetooth limitant la taille des informations transmises entre les téléphones disposant de l'application. Dans ce contexte, concernant le chiffrement des pseudonymes, l'ANSSI recommande l'utilisation de l'algorithme de chiffrement SKINNY-64/192. Bien que récent, cet algorithme a été largement étudié et son analyse n'a révélé aucune faiblesse en termes de sécurité. Il offre de plus, d'excellentes performances ».
Il y a quelques jours, après que des chercheurs aient signalé le même problème, l’INRIA a déclaré : « Suite à la délibération de la CNIL du 24/04 et à une recommandation de l’ANSSI indiquant qu'il convenait de remplacer l'algorithme 3DES, un nouvel algorithme a été implémenté : SKINNY-CIPHER64/192. Sa publication sera effective début de semaine prochaine ».
Notons que ce changement intervient à quelques jours d’un passage à l’Assemblée nationale qui aura lieu le 27 mai 2020.
Plusieurs failles 3DES sont bien connues. Ironiquement, l’une d’elles a été mise en lumière par des chercheurs de l’INRIA qui avaient prévenu que la faille Sweet32, qui touchait plusieurs algorithmes de chiffrement exploitant des blocs de chiffrement inférieurs à 64 bits, affectait également 3DES. L’attaque présente néanmoins plusieurs conditions pour aboutir. Ainsi, les attaquants devront être en mesure d’analyser le trafic entre un site visé et la victime tout en forçant la victime à exécuter du code JavaScript malicieux sur sa machine. La connexion chiffrée doit également avoir recours à un algorithme ayant recours à une taille de bloc de 64 bits, mais de nombreux protocoles de chiffrement supportent ces algorithmes par souci de rétrocompatibilité. Si un utilisateur démarre une session TLS avec un navigateur mis à jour, la connexion sera automatiquement chiffrée avec un algorithme de chiffrement compatible et donc potentiellement vulnérable.
Cette attaque en particulier est donc peu pratique, mais elle a suscité des réactions de la part des éditeurs et des mainteneurs des protocoles de chiffrement.
Pourquoi le choix de l’algorithme de chiffrement est important ?
Dans le cadre du projet StopCovid, le protocole ROBERT (ROBust and privacy-presERving proximity Tracing) a été mis sur pieds pour protéger l’anonymat. Comme l’a rappelé Bruno Sportisse, PDG de l’INRIA, « sa conception permet que PERSONNE, pas même l’État, n’ait accès à la liste des personnes diagnostiquées positives ou à la liste des interactions sociales ». Et de préciser que dans le cas où je suis notifié, je ne sais pas qui est à l’origine de la notification. « Dans le smartphone de mon voisin, il n’y a aucune donnée concernant mon diagnostic médical, aussi encrypté soit-il. Il y a une liste des crypto-identifiants de tous les smartphones rencontrés », a déclaré Bruno Sportisse pour expliquer que les données personnelles ne sont pas sauvegardées.
En fait, un serveur central (contrôlé par l’État) va générer un identifiant unique pour chaque utilisateur. Cet identifiant doit rester le plus secret possible si le gouvernement veut assurer ses promesses d’anonymat.
Pour que l’identifiant soit difficilement attribuable à un smartphone (et donc à une personne), StopCovid va embarquer un module de chiffrement de cet identifiant. Un algorithme va chiffrer à intervalle régulier l’identifiant unique. À chaque fois, l’identifiant unique sera donc chiffré d’une manière différente.
Le choix entre 3DES et Skinny-64/192 était donc essentiel, puisqu’il s’agit de l’algorithme qui va générer les identifiants (ou pseudonymes) des utilisateurs. « Si le chiffrement est trop faible, une personne qui dispose de suffisamment de données va pouvoir déchiffrer les pseudonymes et identifier lesquels appartiennent à la même personne », avertit Olivier Blazy, chercheur en cryptographie à l’université de Limoges.
Indiquons que, le 22 mai 2020, l'INRIA a publié en Open Source (MPL2.0) la partie BLE calibration pour iOS et Android en plus des sources de la partie permettant de générer et d’utiliser les QR Codes.
Sources : INRIA, CNIL, ANSSI
Et vous ?
Qu'est-ce qui peut, selon vous, expliquer le choix du protocole de chiffrement 3DES ?
L'adoption tardive de Skinny-64/192 vous semble-t-elle surprenante ?
Quelles peuvent être les implications d'un changement de cet ordre ? Est-il compliqué à implémenter ? Dans quelle mesure ?