Les développeurs de StopCovid ont mis longtemps à adopter les recommandations de la Cnil et de l’Anssi, les deux autorités de référence sur les questions de protection des données. Dans la dernière version du code de StopCovid publié le 12 mai par l’Inria, l’application utilisait l’algorithme 3DES pour chiffrer l’identifiant des utilisateurs, l’information la plus sensible de l’application.
Pourtant, cet algorithme vieillissant avait été déconseillé plus de deux semaines auparavant par les autorités, qui lui préféraient un algorithme de chiffrement plus récent, nommé Skinny-64/192.
Après que des chercheurs ont pointé le problème sur Twitter, l’Inria a annoncé que Skinny serait finalement implémenté la semaine prochaine (à quelques jours du vote qui aura lieu le 27 mai)… alors qu’il s’agit d’un changement majeur.
Plusieurs failles de 3DES sont bien connues : des acteurs malveillants auraient pu adapter des scénarios d’attaque déjà existants contre StopCovid. Ils auraient certes besoin de capter beaucoup d’informations, mais ils auraient pu lever le pseudonymat garanti par l’application. Ils auraient alors été en capacité d’identifier les personnes malades ou encore de savoir quelles personnes elles ont croisées au cours d’une journée. L’algorithme Skinny, bien plus récent, n’a pas de faille connue.
Le chiffrement censé protéger votre identité était remis en cause
Pour rappel, la France a choisi pour StopCovid un protocole centralisé — Robert — dont l’Inria a assuré le développement. Dans cette approche, 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 (toutes les 15 ou 30 minutes) l’identifiant unique. À chaque fois, l’identifiant unique sera donc chiffré d’une manière différente.
Skinny est plus récent et plus robuste
Ces nouveaux identifiants — aussi appelés pseudonymes — sont au cœur du fonctionnement du contact tracing, puisque les utilisateurs vont se les échanger. Si vous avez croisé 3 fois votre voisin au cours de la journée, son smartphone aura échangé avec le vôtre trois pseudonymes différents, tous rattachés à son identifiant unique.
À intervalle régulier, votre smartphone enverra la liste des pseudonymes que vous avez croisés au serveur central. La machine identifiera si l’un d’entre eux est relié à une personne atteinte de Covid-19, auquel cas vous serez alertés et l’on vous conseillera de vous mettre en quarantaine.
Le choix entre 3DES et Skinny-64/192 était donc essentiel, puisqu’il s’agit de l’algorithme qui va générer les 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.
Les travaux présentés ne respectaient pas les recommandations des autorités
La première publication du code de StopCovid, le 12 mai, a été fortement critiquée pour sa vacuité. Mais Olivier Blazy a relevé un détail intéressant : l’algorithme de chiffrement utilisé dans la version publiée est 3DES, l’algorithme choisi dès les premières versions de Robert, mais critiqué par les régulateurs.
Dans son avis sur le projet StopCovid publié le 26 avril, la Cnil « 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. ». La Commission est même allée plus loin et a pointé du doigt l’usage de l’algorithme 3DES : « 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 (Anssi), cet algorithme ne devrait en principe plus être utilisé. »
Au lendemain de cette première opposition à 3DES, l’Anssi a publié à son tour quelques recommandations. Sans commenter l’usage de 3DES (critiqué dans son document-cadre mentionné par la Cnil), l’agence française de référence sur questions de cybersécurité conseille d’utiliser un autre algorithme : « 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. » L’Anssi a répété cet avis le 12 mai, parmi une liste de 56 recommandations incluses dans la première publication de StopCovid. L’agence donne une priorité « majeure » au changement d’algorithme.
Pourquoi StopCovid a-t-il utilisé un chiffrement vieillissant ?
Ironiquement, en 2018, l’Inria — le centre de recherche français qui développe le protocole Robert — avait élaboré une attaque pour exploiter les failles de plusieurs algorithmes de chiffrement… dont 3DES. Les chercheurs posaient à l’époque la question de la suppression de ce genre d’algorithme de chiffrement vieillissant. Apple, Mozilla, Microsoft ou encore Open SSL avaient alors rangé l’algorithme au placard, comme le soulignait ZDNet.
Aujourd’hui, il est de moins en moins utilisé. Mais alors, pourquoi, l’Inria a-t-il gardé cet algorithme jusqu’au dernier moment ? Le chercheur de l’Université de Limoges, que nous avions contacté avant le changement de programme en dernière minute, peinait à trouver une raison : « 3DES est peut-être plus facile à implémenter, car il existe de nombreuses bibliothèques pour Android et iOS. Mais dans l’absolu, si l’application est bien construite, il suffit de changer le module de chiffrement pour basculer sur Skinny. »
Le débat se fera sans avoir toutes les cartes en main
L’adoption tardive de Skinny est d’autant plus étonnante que le changement d’un algorithme à l’autre n’est donc pas vraiment compliqué à effectuer. Plus de 14 jours se sont écoulés entre les recommandations et la première publication du code.
Si l’Inria s’est finalement engagé à faire ce changement nécessaire, ces changements de dernière minute inquiètent Olivier Blazy : « L’application doit être disponible sur les magasins d’application dans deux semaines, et nous n’avons même pas accès à une version vaguement définie. Dans l’organisation du projet, c’est un choix surprenant, car ils vont être noyés sous les commentaires au moment de la publication de l’app. »
Vous avez lu 0 articles sur Numerama ce mois-ci
Tout le monde n'a pas les moyens de payer pour l'information.
C'est pourquoi nous maintenons notre journalisme ouvert à tous.
Mais si vous le pouvez,
voici trois bonnes raisons de soutenir notre travail :
- 1 Numerama+ contribue à offrir une expérience gratuite à tous les lecteurs de Numerama.
- 2 Vous profiterez d'une lecture sans publicité, de nombreuses fonctions avancées de lecture et des contenus exclusifs.
- 3 Aider Numerama dans sa mission : comprendre le présent pour anticiper l'avenir.
Si vous croyez en un web gratuit et à une information de qualité accessible au plus grand nombre, rejoignez Numerama+.
Si vous avez aimé cet article, vous aimerez les suivants : ne les manquez pas en vous abonnant à Numerama sur Google News.