Les articles de MISC Hors-Série N°2

Article mis en avant

Carte à puce : un premier tour d’horizon

Le geste est devenu tellement coutumier que nous n'y prêtons même plus attention : nous nous présentons face à un distributeur de billets, introduisons notre carte bancaire dans le lecteur, tapons notre code PIN, et les billets nous tombent dans la main tandis que notre compte bancaire est automatiquement débité. La même carte nous permet d'ailleurs de régler la note d’un restaurant, d'effectuer un achat dans une grande surface, de prendre de l'essence, tandis qu'une autre d'apparence similaire nous permet de nous connecter à l'ordinateur de notre entreprise et qu'une troisième – quoique d'un format un peu différent – protège le cœur de notre téléphone portable. Ce petit objet qui ne pèse que quelques grammes a acquis une telle importance dans nos vies que sa perte s'apparente presque à une catastrophe. Et cette minuscule carte à puce, dont le prix de revient est aujourd'hui ridiculement bas, met pourtant en œuvre une technologie très évoluée, fruit de plusieurs décennies de développement et d'idées ingénieuses.
Qui a jamais participé à un évènement historique ne peut qu’être surpris à le voir relaté dans des articles de journaux, des livres ou des émissions diverses. Il apparaît presque que leurs auteurs ont vécu une toute autre expérience, parfois et peut-être souvent même incompatible avec sa propre impression.En 2005, j’ai eu l’honneur de recevoir le prestigieux trophée du visionnaire du magazine Card Technology, à l’époque la référence en matière de publications dans le monde des cartes à puces. Dans un long article, le journaliste Dan Balaban a fourni une histoire assez exacte de la carte à puce Java et de mon implication. Mais, naturellement, je ne pouvais pas à l’époque lui dire ce que je vais maintenant raconter, car il était trop tôt. Comme j’ai toujours été curieux de savoir comment l’Histoire sonne, écrite par ses auteurs, j’ai été très heureux quand il m’a été demandé d’écrire cet article.
Plus de 4 milliards de cartes à puce ont été livrées dans le monde en 2007, pas loin de 5 milliards devraient l’être en 2008.
L'idée de paiement sans argent liquide n'est pas récente : « Chaque fois qu'un Gonda désirait quelque chose de nouveau, des vêtements, des objets, il payait avec sa clé. Il pliait le majeur, enfonçait sa clé dans un emplacement prévu à cet effet et son compte, à l'ordinateur central, était aussitôt diminué de la valeur de la marchandise ou du service demandé. » [1]. Depuis plus de vingt ans, la carte à puce est au cœur du système bancaire. Elle fait l'objet de toutes les attentions de la part des banques et des utilisateurs, mais aussi, voire encore plus, de la part des pirates. La carte à puce en tant que coffre-fort électronique impénétrable était censée apporter le niveau de sécurité élevé requis pour les applications bancaires. Mais il semble que deux lois de base aient été oubliées par les banques, à savoir que le niveau de sécurité d'un système est caractérisé par son maillon le plus faible et qu'un système sécurisé ne résiste pas éternellement aux attaques. Nous allons tenter dans cet article de décrire le rôle de la carte à puce dans le système bancaire français. Nous détaillerons d'abord le premier protocole qui était encore en vigueur il y a quelques années. Nous verrons ensuite les failles de sécurité que ce protocole présentait et comment elles ont été exploitées par les pirates avec notamment les « YesCard ». Enfin, nous étudierons les principales évolutions de sécurité liées en particulier à ces attaques.
La carte SIM (ou Subscriber Identity Module, mot à mot le module d’identité d’un abonné) est le type de carte à puce le plus vendu de par le monde. Environ trois milliards d’unités ont été fabriquées en 2007, soit une carte pour deux habitants de la planète. Ce produit constitue véritablement le poumon de l’industrie de la carte à puce, dont la première entreprise mondiale, Gemalto, réalise un chiffre d’affaire d’environ deux milliards d’euros.
Frénésie, le mot n'est pas trop fort pour décrire l'engouement actuel envers le sans contact. Plus question désormais de se torturer l'esprit pour comprendre le pictogramme décrivant la façon d'insérer une carte à puce dans un lecteur ; il suffit de passer sa carte à proximité de celui-ci et le tour est joué. La star de toutes ces cartes sans contact, la figure de proue du domaine, c’est la NXP Mifare Classic (une icône vendue à plus d’un milliard d'exemplaires). Dans cet article, nous présentons comment elle fut lapidée au printemps 2008, lorsque plusieurs équipes de recherche ont mis au grand jour des failles de sécurité aussi sérieuses qu’impardonnables. La star déchue entraîne dans sa débâcle des millions de systèmes de contrôle d'accès, de billetterie et de porte-monnaie électronique.
Face aux nouvelles menaces liées à l’interconnexion croissante des SI (commerce en ligne, dématérialisation, mobilité des salariés,…) et des menaces internes, l’utilisation de certificats électroniques s’impose comme étant l’une des solutions les plus sécurisées pour garantir le contrôle d’accès, la traçabilité et l’imputabilité, en d’autres termes, garantir l’identité de la personne ayant agi. Des infrastructures de gestion de clés (PKI) ont d’ailleurs été déployées dans de nombreuses grandes entreprises. Il apparaît même aujourd’hui des cartes d’identité nationales intégrant des certificats numériques (Portugal, Belgique,…).La sécurité d’un système bâti sur des certificats repose sur la protection des clés privées des autorités de certification, des serveurs et des utilisateurs. C’est au confinement de la clé privée de ces derniers que nous nous intéresserons : la carte à puce.
Les cartes à puce sont aujourd’hui considérées comme des ressources sûres du fait de leur structure interne et des validations qu’elles subissent tout au long de leur cycle de vie. Il est donc possible de les utiliser comme éléments de base pour sécuriser différents types d’environnements : accès physiques à des locaux, transactions bancaires, systèmes embarqués, etc. Dans cet article, nous expliquons comment utiliser les cartes (U)SIM Java des téléphones mobiles afin d’apporter de la sécurité, en termes de confidentialité des données et des communications, dans le fonctionnement des applications développées pour ces matériels. Nous présentons les différentes technologies qui interviennent (Java Card, (U)SIM, Java ME) ainsi que la façon de les combiner. Nous terminons par un exemple d’application qui utilise tous les éléments présentés.
La technologie Java Card fournit une machine virtuelle qui joue le rôle de système d'exploitation pour cartes à puce en apportant sécurité et indépendance vis à vis du matériel. Ainsi, des développeurs indépendants peuvent concevoir et déployer dans des cartes à puce toute une variété de produits et de services sécurisés, dans la poche de leurs utilisateurs. Nous explorons ici l'essence de cette technologie.
Les informations que l'on peut trouver ici et là quant au développement d'applications mettant en œuvre des cartes à puce JavaCard programmables sont bien souvent parcellaires. Nous exposons dans cet article les différentes étapes nécessaires à l'assemblage complet d'un kit de développement logiciel JavaCard générique, à savoir n'étant lié à aucun modèle de carte Java en particulier, à partir de logiciels librement téléchargeables (à différencier avec des logiciels libres téléchargeables). Dans un second temps, nous le mettrons en pratique sur un exemple d'application de type HelloWorld.