ACBM - Le Virus qui vous défend !Retour à l'accueilLes brèvesLe magasinContacts Ecrire dans le virus Liste de diffusion Petites annonces Les concours
Article paru dans Pirates Mag' 18 (mai 2005)
Suite dans Pirates Mag' 19 (aout 2005) et Pirates Mag' 20 (novembre 2005)
Carte Vitale: rien à cacher!

Oui ou non, la carte Vitale contient-elle des informations confidentielles sur son porteur, et n’importe qui peut-il en prendre connaissance à son insu ? Des doutes de plus en plus fondés s’exprimant sur Internet, il est grand temps de reprendre l’exploration là où nous l’avions laissée, il y a bientôt trois ans.
Patrick Gueulle

Fin 1998, les assurés sociaux reçoivent leurs cartes Vitale, en remplacement des cartes et « extraits de cartes » papier. Les ouvrages de l’auteur ayant déjà expliqué comment « lire et écrire dans les cartes à puce », des petits curieux jettent un coup d’œil sur le contenu de leur nouveau Sésame. Intrigué par quelques octets évoquant son numéro de SS, l’un d’eux ose écrire, dès le 2 mars 1999, au Directeur de la Logistique et de l’Exploitation du GIE Sesam Vitale, pour lui demander un « mode d’emploi » technique détaillé. La réponse de Dominique Barret ne tarde pas: « Nous ne diffusons aucun renseignement sur le mode de stockage des informations, qui d’ailleurs sont codées afin d’éviter leur détournement pour un usage non autorisé (respect de la vie privée) ». Dont acte! Elle précise toutefois que « différentes informations publiques » se trouvent sur le site www.sesam-vitale.fr, et que l’on peut consulter le contenu de la carte sur les points de mise à jour situés dans les CPAM. Parallèlement, des prospectus informatifs sont largement diffusés, qui affirment noir sur blanc que « la carte Vitale contient toutes les informations [...] numéro de SS, caisse d’affiliation, validité des droits, liste des bénéficiaires avec leur date de naissance, éventuellement prise en charge à 100 % ». L’équivalent d’une carte « papier », donc, qui arborait la mention bien visible « Cette carte est personnelle, car elle comporte des INFORMATIONS CONFIDENTIELLES ». Un rapprochement avec « l’extrait de carte », fourni pour « justifier de sa qualité d’assuré social sans fournir de renseignements de caractère confidentiel », révèle bien ce qui est considéré ou non comme confidentiel.

Codage n'est pas cryptage

Comment expliquer, alors, que des prospectus émis par les CPAM, pas plus tard qu’en janvier 2005, affirment que la carte Vitale « ne contient pas d’informations confidentielles », mais juste des « renseignements administratifs » ? Entre ces deux époques, beaucoup d’eau a coulé sous les ponts! En août 2002, Pirates Mag’ 12 publiait le fameux article Explorer… ou cloner la carte Vitale, dans lequel nous écrivions en toute bonne foi « il paraît évident qu’un cryptage relativement élaboré doit être appliqué », car nous avions démontré que les données enregistrées dans la carte résidaient dans des zones aucunement protégées en lecture. Pauvre naïf que nous étions: personne n’avait parlé de « cryptage », mais seulement de « codage » ! Enregistrer la lettre V sous la forme des cinq bits 10110, c’est bel et bien un « codage » au sens informatique du terme, mais qui n’assure aucune confidentialité. En préparant son ouvrage Plus loin avec les cartes à puce, paru en avril 2004, l’auteur est donc allé… un peu plus loin!
Remarquant que la carte Vitale semblait appartenir à la famille SCOT de Bull CP8, il a découvert qu’en supprimant les deux premiers bits de chaque mot de quatre octets, puis en opérant un découpage en blocs de cinq bits (pour les lettres) ou de quatre bits (pour les chiffres), on retrouvait, « en clair », les données qu’affichent les lecteurs de poche du commerce.
Et les informations vraiment confidentielles, alors? Renseignements pris (art. R.161-332 du décret du 9 avril 1998), seul un professionnel de santé est habilité, par le truchement de sa carte « CPS », à consulter les renseignements relatifs à l’ETM (exonération du ticket modérateur, ou droits à remboursement à 100 %), et semble-t-il les dates de naissance des bénéficiaires (jusqu’à 19, de moins de 16 ans - sans doute en prévision de cas de polygamie?).
Mais lorsque l’assuré consulte le contenu de sa carte (y compris les données confidentielles qu’elle « ne contient pas ») sur des bornes de mise à jour en libre-service, où sont donc le professionnel de santé et sa CPS? Comme il n’y a aucun code PIN à présenter, n’importe qui pourrait donc lire ainsi la « zone privée » d’une carte Vitale ne lui appartenant pas…


L'Affaire

Juillet 2003: un développeur d’applications « métier » pour professionnels de santé, Jérôme Cretaux, tombe sur une faille de sécurité dans les composants logiciels (les API) que le GIE Sesam Vitale fournit aux éditeurs de progiciels. Celle-ci permettrait, dans certaines situations, de lire les données confidentielles sans montrer patte blanche.
Il prévient le GIE, puis la CNIL, mais a-t-on jamais vu une « autorité » institutionnelle faire amende honorable? Bref, l’affaire s’enlise, se fourvoie sur le terrain judiciaire, et fait quelque bruit sur Internet. Simultanément, des médecins remarquent, de leur côté, certaines bizarreries informatiques. Ne plaisantant pas avec le secret médical, ils cherchent à se forger leur propre opinion et ne tardent pas à faire d’inquiétantes découvertes: le code PIN de leur CPS enregistré « en clair » dans la base de registres de Windows, des logiciels « agréés » mais peu rigoureux quant à la présence ou non d’une CPS pour lire les données confidentielles des patients, etc. Des associations de défense des assurés sociaux se saisissent de la question, et c’est ainsi que l’ADAS, sous l’impulsion de sa porte-parole, le Dr Martine Marchand, finit par ouvrir son site (www.webzinemaker.com/adas) à tous ces professionnels que l’on ne veut pas écouter.

API or not API? That is the question...

Tout éditeur de progiciels de lecture de cartes Vitale est invité à se rapprocher du GIE Sesam Vitale, qui lui fournira (moyennant certains engagements) des API facilitant au maximum son travail. Comme l’explique la figure 1, ces composants logiciels prennent en charge tout le dialogue de « bas niveau » (ISO 7816) avec la carte Vitale, et s’il y a lieu la CPS, au travers d’un lecteur de cartes à puce, en général « bi-fente ». Concrètement, l’application réclame les données « bénéficiaire » à l’API. Celle-ci lit alors physiquement la carte Vitale, et retourne plus ou moins de données selon qu’elle a détecté ou non la présence d’une CPS dans le lecteur.
Cette architecture paraît séduisante, dans la mesure où les échanges entre les cartes et le lecteur pourraient être cryptés, sans mettre le développeur dans le secret, grâce aux puissantes fonctions sécuritaires qui résident « par construction » dans les puces des deux cartes. Cela interdirait tout « contournement » des API par dialogue direct avec le lecteur de cartes, ou carrément avec la carte. Hélas, tout porte à croire que le cérémonial de la présence conjointe des cartes du patient et du médecin n’est qu’une mise en scène de théâtre! Elle contribue, peut-être, à la sécurisation des FSE (feuilles de soins électroniques), mais certainement pas à celle des données personnelles.
Comment en avoir le coeur net? Tout bonnement en inspectant des cartes Vitale au moyen d’un lecteur ISO 7816 « générique », sans recourir aux API! Même si la lecture du cahier des charges du GIE, librement téléchargeable sur son site, facilite l’interprétation, une documentation générale sur les cartes SCOT peut suffire.
On sait bien (voir Pirates Mag’ 12) qu’une commande BC C0 00 00 08 permet de déterminer la dernière adresse de l’espace mémoire de la carte, la première étant invariablement 0200h. Typiquement (ADMAX=2188h), on trouvera ainsi, de 2128h à 2180h, une « zone de fabrication » contenant les pointeurs de toutes les zones intéressantes (dans notre cas, l’espace à lecture libre s’étendrait de 0288h à 2180h). Cela étant posé, une commande BC B0 02 88 04 renverra le contenu du premier mot de 32 bits, et BC B0 21 80 04 celui du dernier. Entre les deux, que de choses à découvrir! Juste avant la zone de fabrication, quelques mots font penser au « volet mapping » mentionné page 20 du cahier des charges V1.40. Imaginons ainsi qu’une commande BC B0 20 F8 18 retourne les données suivantes:

3F FF C3 88
20 3F C3 50
20 80 02 F0
00 3F C2 B8
2D 3F C2 A0
2C FF C2 98

Parmi les « pointeurs » (?) C388h à C298h, 02F0h attire l’attention. Faisons donc BC B0 02 F0 14, et livrons-nous au très simple décodage des deux premiers mots lus:

3F FF F5 40        0011 1111 1111 1111 1111 0101 0100 0000
24 08 43 FF        0010 0100 0000 1000 0100 0011 1111 1111
3F FF FF FF
3F FF FF FF
3F FF FF F8

En ignorant les deux premiers bits de chaque mot, puis en formant des groupes de quatre bits, on extrait facilement les chiffres BCD 54 09 02 et précisément, la date de naissance de l’unique bénéficiaire est 02/09/1954!

Renouvelons l’opération avec la carte d’un assuré né le 10/04/1925:

3F 8F F2 50        0011 1111 1000 1111 1111 0010 0101 0000
10 40 43 FF        0001 0000 0100 0000 0100 0011 1111 1111
3F FF 96 02        0011 1111 1111 1111 1001 0110 0000 0010
04 FF FF FF        0000 0100 1111 1111 1111 1111 1111 1111
3F FF FF F9

On lit bien 25 04 10 mais aussi 96 02 13. Or, l’assuré souffre d’une affection de longue durée (ALD), au titre de laquelle il est pris en charge à 100 % à compter du13/02/96! Sans commentaire… Notons simplement que cette ETM (exonération du ticket modérateur) n’est pas bornée dans le temps. Si elle l’était, gageons qu’une seconde date serait « codée » dans les quelques octets à FFh qui suivent.
Aux abris!
Il est facile d’imaginer les conséquences que pourrait avoir la lecture de ces informations par un tiers non habilité (banque, employeur, assureur, mutuelle…), à qui on confierait sa carte Vitale, convaincu qu’il ne pourra y lire que des données non confidentielles. On comprend qu’il serait fort simple de développer un petit logiciel PC/SC indiquant, par oui ou par non, si une carte Vitale renferme des droits à 100 % ou pas, révélant donc une éventuelle maladie grave. Et le secret médical, alors? La carte Vitale bénéficierait-elle d’une dérogation?
Tant de légèreté, pour ne pas dire de mensonges, est inquiétant à l’heure où on nous prépare un « dossier médical personnel » que même le conseil de l’ordre des médecins qualifie de « boîte de Pandore » (bulletin n° 3 de mars 2005). Mais dormons tranquilles: il ne résidera pas dans la carte Vitale, celle-ci (en version 2, avec photo mais toujours sans code PIN?) ne servira qu’à « sécuriser » sa consultation. Sur Internet?
Un seul mot d’ordre, donc: dans l’état actuel des choses, ne laisser lire nos cartes Vitale que par des professionnels ayant su mériter notre totale confiance. De toute façon, le consentement (désormais éclairé) de l’assuré est requis avant toute lecture!