Brevet FR2834573A1 — publié le 20030711

L'invention se rapporte à un dispositif électronique de traitement de données comportant une unité centrale apte à exécuter un logiciel. Elle a plus particulièrement pour objet un perfectionnement visant à la fois les caractéristiques du dispositif électronique et le conditionnement du logiciel luimême, pour éviter une duplication sans autorisation. L'invention s'applique notamment au domaine des logiciels commercialisés pour être utilisés sur un ordinateur personnel, une console de jeux électronique, un dispositif dit"PDA" (Personal Digital Assistant, en anglais), un téléphone portable ou analogue. On sait que beaucoup de logiciels, pour le travail, l'étude ou le divertissement, sont commercialisés sous forme de disques dits CD-ROM ou bien par téléchargement, par exemple sur un site Internet. La lecture du CD ou le téléchargement, se traduisant éventuellement par le transfert des informations vers le disque dur de l'unité centrale d'un ordinateur, permet d'exécuter le programme. Des sécurités sont prévues pour empêcher des utilisations illicites, par exemple en copiant le disque. L'un de ces moyens est couramment dénommé"Dongle". Il s'agit d'un dispositif qu'on intègre ou associe à l'unité centrale et qui contient une "clé" utilisant des codes et des mots de passe autorisant le déroulement du programme. Le logiciel appelle la clé correspondant à ce"Dongle"et ne peut fonctionner que si le dispositif dit"Dongle"est associé à l'ordinateur. Ce moyen est utilisé pour protéger des codes sources importants, des informations confidentielles et des fichiers. Cependant, ce système peut être détourné si on utilise un outil logiciel permettant de repérer, dans le programme exécutable, les portions de code destinées à vérifier la présence du"Dongle". Il suffit alors de supprimer ces portions de code ou de leur substituer une autre portion de code permettant d'omettre la vérification de la présence du"Dongle" pour que le programme puisse être exécuté et recopié sans autorisation. Il est connu de réaliser un"Dongle"sous forme de carte à microcircuit (encore dénommée carte à puce) par exemple dans le document de brevet DE 1 0001126. L'invention permet de surmonter l'inconvénient du"Dongle"mentionné cidessus. L'idée de base de l'invention consiste à partager physiquement le logiciel lui-même en deux parties, l'une des parties étant stockée et exécutée dans une entité électronique sécurisée, c'est-à-dire ne pouvant être aisément copiée. Une telle entité est, par exemple, une carte à microcircuit. Plus précisément, l'invention concerne un dispositif électronique de traitement de données comportant une unité centrale apte à exécuter un logiciel, caractérisé en ce qu'il comporte un lecteur d'une entité électronique sécurisée, en ce qu'un tel logiciel comprend au moins deux parties : un programme principal exécuté par ladite unité centrale et au moins un programme auxiliaire stocké et exécuté dans une telle entité électronique sécurisée placée dans ledit lecteur et en ce que ledit programme principal génère des commandes d'exécution de tout ou partie dudit programme auxiliaire. Ainsi, le fait de placer dans une entité électronique sécurisée et de garder secrète une partie du programme lui-même, c'est-à-dire le programme auxiliaire et non plus une simple clé, permet d'éviter une utilisation frauduleuse du logiciel dans la mesure où l'appel du programme auxiliaire par le programme principal n'entraîne pas la même réponse dudit programme auxiliaire (contrairement à une clé) selon le stade de déroulement du programme principal où intervient l'appel du programme auxiliaire. Ce dernier, stocké et exécuté dans une carte à microcircuit, ne peut donc être copié en tant que tel. Pour constituer le programme auxiliaire, l'éditeur du logiciel choisira les parties qui semblent les plus critiques pour le fonctionnement du logiciel à protéger. Les deux parties du logiciel sont interdépendantes. Autrement dit, le programme principal ne peut être exécuté (ou son exécution ne peut être poursuivie) sans l'exécution du programme auxiliaire chaque fois qu'il est appelé. Inversement le programme auxiliaire n'a aucun sens seul. Par"lecteur"de ladite entité électronique sécurisée, on entend tout dispositif capable de coupler fonctionnellement l'entité électronique sécurisée placée dans le lecteur à l'unité centrale pour que le programme principal puisse s'exécuter normalement en appelant chaque fois que nécessaire le programme auxiliaire qui est stocké et exécuté dans l'entité électronique sécurisée ellemême. Seule la réponse est renvoyée à l'unité centrale. Dans le cas d'une carte à microcircuit, le lecteur peut comporter un système de connexion capable d'entrer en contact électrique avec les plages de raccordement situées à la surface de la carte. S'il s'agit d'une carte dite sans contact, comportant une antenne, le lecteur comportera des moyens d'émission-réception HF. Pour ce qui concerne l'unité centrale chargée d'exécuter le programme principal et de transmettre les commandes d'exécution de tout ou partie dudit programme auxiliaire, plusieurs solutions sont possibles. Si le dispositif comporte une mémoire centrale, le programme principal pourra y être stocké. L'unité centrale pourra alors être munie d'un lecteur de support de logiciel non nécessairement protégé contre la copie, par exemple un lecteur de CD-ROM ou analogue. Dans ce cas, le programme principal sera mis à disposition de l'utilisateur sur un tel support, c'est-à-dire un CD-ROM ou analogue. Une fois lu, le contenu du CD-ROM pourra être transféré en mémoire centrale, typiquement le disque dur d'un ordinateur. Dans ce cas, le dispositif électronique de traitement de données comportera aussi un lecteur de ladite entité électronique sécurisée et le logiciel complet sera mis à la disposition de l'utilisateur sous forme de deux entités renfermant les deux parties du même programme, c'est-àdire le CD-ROM renfermant le programme principal et la carte à microcircuit renfermant le programme auxiliaire. Une autre variante intéressante consiste à mettre le programme principal à disposition sur un réseau de télécommunication du type Internet et à associer au dispositif électronique de traitement de données un modem de décodage d'informations relié audit réseau, pour permettre le téléchargement du programme principal dans une mémoire de ladite unité centrale. Dans ce cas, l'utilisateur autorisé reçoit (par exemple achète) ladite entité électronique sécurisée, c'est-à-dire typiquement la carte à microcircuit. Egalement, il est possible de charger ou de télécharger le programme auxiliaire dans une entité électronique sécurisée déjà utilisée sur ladite unité centrale. Par exemple, un fournisseur de jeux sur le réseau Internet peut munir ses clients d'une carte à microcircuit. A chaque nouvel achat de jeu, le programme auxiliaire peut être téléchargé sur cette carte par le moyen d'un protocole sécurisé. Ce procédé de téléchargement de programme dans une carte à microcircuit tout au long de durée de vie est bien connu de l'homme de l'art et s'appelle la"post-insuance". Le client peut donc utiliser la même carte pour exécuter plusieurs jeux et acquérir à tout moment un nouveau jeu. Un autre dispositif électronique de traitement de données, plus spécialisé, peut consister en une console de jeux vidéo dès lors que celle-ci est équipée à la fois d'un lecteur de support de logiciel non nécessairement protégé contre la copie (par exemple un lecteur de CD) et un lecteur d'une entité électronique sécurisée, par exemple un lecteur de carte à microcircuit. La carte à microcircuit étant par nature non"piratable"l'utilisateur ne pourra mettre en oeuvre le jeu vidéo ainsi édité en deux parties que s'il dispose à la fois du disque CD et de la carte à microcircuit. Il devient dès lors inutile de réaliser des copies du disque CD. En outre, un autre dispositif dans lequel l'invention peut être mise en oeuvre est un téléphone équipé d'une carte à microcircuit, notamment un téléphone portable, ou encore un dispositif dit"PDA"comme défini plus haut, équipé d'une carte à microcircuit. Avantageusement, pour exécuter le logiciel dans sa totalité, sans défaillance, l'unité centrale pourra générer des commandes"APDU"ou analogues en exécutant le programme principal, pour l'exécution de tout ou partie dudit programme auxiliaire. En retour, ladite entité électronique sécurisée sera agencée pour générer des réponses"APDU"correspondantes qui seront renvoyées à l'unité centrale pour la poursuite de l'exécution du programme principal. Toute exécution du programme auxiliaire se déroule entièrement dans l'entité électronique sécurisée, c'est-à-dire par exemple la carte à microcircuit. Seule la réponse nécessaire au bon déroulement du programme principal est renvoyée vers l'unité centrale. Les commandes et réponses"APDU"sont connues de l'homme du métier. Il s'agit d'un ensemble de commandes standardisées notamment par la norme ISO 7816-4. Elles sont définies indépendamment du protocole de transfert de données. On distingue les instructions"APDU"qui représentent des instructions envoyées à la carte par l'unité centrale et les réponses"APDU"qui sont les réponses de la carte. Autrement dit, l'unité centrale envoie des commandes"APDU"à la carte, la carte effectue ces instructions et renvoie le résultat à l'unité centrale. Une instruction"APDU"contient une en-tête et un corps de longueur arbitraire qui peut se représenter comme suit : CLA INS P1 P2 Lc CH Le CLA est un byte qui définit la classe d'instruction. INS est un byte qui définit l'instruction à exécuter par la carte. P1 et P2 sont des bytes qui définissent les options éventuelles de l'instruction. Les bytes définis ci-dessus constituent l'en-tête de l'instruction. Le corps de l'instruction comprend les bytes suivants : Lc est un byte qui fixe la longueur du champ d'instruction. CH est le champ d'instruction proprement dit. Il contient les informations envoyées à la carte pour lui permettre de traiter l'instruction. Le est un byte qui fixe la longueur du champ d'instruction de la réponse "APDU"qui sera envoyée par la carte. Une réponse "APDU" contient les éléments suivants : CHR SW1 SW2 CHR est le champ de réponse de la carte. SW1 et SW2 donnent le code de retour de l'instruction exécutée par la carte. Dans le cas présent, on peut définir une commande particulière (INS) qui donne l'ordre à la carte d'exécuter une portion au moins du programme auxiliaire. Cette portion peut être spécifiée grâce aux octets P1 et P2 ou en utilisant une partie du champ CH. Les paramètres ou les données complémentaires ou plus généralement le contexte nécessaires à l'exécution de la portion du programme auxiliaire B (dans le cas de fonctions, il s'agit d'arguments de la fonction) peuvent être fournis à la carte en utilisant le champ CH. L'invention sera mieux comprise et d'autres avantages de celle-ci apparaîtront plus clairement à la lumière de la description qui va suivre de plusieurs exemples de dispositif électronique de traitement de données conforme à son principe, donnée uniquement à titre d'exemple et faite en référence aux dessins annexés dans lesquels : - la figure 1 est un schéma-bloc d'un premier mode de réalisation d'un dispositif conforme à l'invention ; - la figure 2 illustre une variante de la figure 1 ; - la figure 3 illustre un autre dispositif électronique de traitement de données formant jeu vidéo ou analogue ; et - la figure 4 est un chronogramme illustrant la reconstitution du logiciel par exécution entrelacée du programme principal et du programme auxiliaire. Le dispositif électronique de traitement de données très schématiquement représenté sur la figure 1 est constitué par un ordinateur de type PC dont l'unité centrale UC comporte notamment un processeur Pr couplé à une mémoire du type disque dur, DD. Le processeur est également en liaison avec un lecteur de disque 15 susceptible de recevoir un support de logiciel non nécessairement protégé, par exemple, un disque du type CD-ROM et avec un lecteur 16 d'une entité électronique sécurisée. Dans l'exemple, ladite entité électronique sécurisée est constituée par une carte à microcircuit 17. Autrement, dit, le logiciel protégé est partagé en deux parties : un programme principal inscrit sur le disque 18 lu par le lecteur 15 et exécuté par ladite unité centrale et au moins un programme auxiliaire stocké et exécuté dans l'unité électronique sécurisée, c'est-à-dire dans la carte 17, dès lors que celle-ci est placée dans le lecteur 16. Comme indiqué précédemment, le programme principal inscrit sur le disque 18 et éventuellement transféré sur le disque dur DD génère des commandes d'exécution de tout ou partie dudit programme auxiliaire. Pour mettre en oeuvre le logiciel, l'utilisateur place donc le disque 18 dans le lecteur 15 et la carte 17 dans le lecteur 16. Le processeur charge éventuellement le programme principal dans le disque dur DD et commence à l'exécuter. Chaque fois qu'une commande"APDU"est traitée par le processeur, celui-ci commande l'exécution du programme auxiliaire ou d'une partie de celuici dans la carte 17 elle-même. Il reçoit et traite la réponse"APDU" correspondante. A titre d'exemple, la figure 4 illustre la reconstitution du logiciel à partir de l'exécution du programme principal A entrecoupée d'exécutions du programme auxiliaire B ou d'au moins une partie de celui-ci. L'exécution du logiciel est schématisée de gauche à droite. Une première partie du programme principal est exécutée en E. A Puis une instruction"APDU"est analysée qui provoque l'appel A. B du programme auxiliaire B qui se traduit par l'exécution E. B de ce programme auxiliaire ou d'une partie de celui-ci, selon l'instruction. Pendant ce temps, l'exécution du programme principal E. A se poursuit (si le logiciel a été conçu pour cela). Lorsque l'exécution du programme auxiliaire B est terminée, une réponse R. B est générée et traitée par le processeur. Le programme principal continue à être exécuté en E'A jusqu'à l'apparition d'une nouvelle commande"APDU"constituant à nouveau l'appel A. B du programme auxiliaire. Celui-ci est à nouveau exécuté en E. B en même temps que l'exécution E'A du programme principal se poursuit, jusqu'à l'élaboration d'une réponse R. B qui permet la poursuite de l'exécution E. A du programme principal et ainsi de suite. La figure 2 illustre une simple variante de la figure 1 où les éléments de structure analogues portent les mêmes références et ne seront pas décrits à nouveau. Selon cette variante, l'unité centrale est associée à un modem de décodage d'information 20, relié à un réseau de télécommunication 22, par exemple du type Internet. Dans ce cas, le programme principal est téléchargé sous le contrôle du processeur dans une mémoire de l'unité centrale, par exemple le disque dur DD. Le lecteur de carte 16 est relié au processeur comme indiqué en référence à la figure 1. Une fois le téléchargement du programme principal effectué, le logiciel est exécuté exactement de la même façon que dans l'exemple précédent. La figure 3 représente très schématiquement une console de jeu vidéo 25 équipée d'un lecteur de disque 15a apte à recevoir un disque 18a renfermant le programme principal. La console de jeu comporte en outre un lecteur de carte à microcircuit 16a apte à recevoir une carte à microcircuit 17a. Le jeu vidéo est proposé à la vente en deux parties, c'est-à-dire le disque 18a et la carte 17a. Toute copie du disque 18a est inutile puisque le jeu ne peut fonctionner qu'à la condition que la carte 17a soit présente dans le lecteur 16a pendant toute la durée du jeu, cette carte étant réputée inviolable. Avantageusement, on pourra utiliser la technologie"Javacard"pour inscrire le programme auxiliaire dans une carte à microcircuit. Cette technologie permet de développer des applications indépendamment du type de carte. La technologie"Javacard"développe un langage orienté objet dont la compilation produit un code standardisé appelé "code byte" indépendant de la carte sur laquelle sera installé le programme auxiliaire. La carte possède un interpréteur de "code byte" appelé machine virtuelle, qui permet d'exécuter un programme auxiliaire contenu dans sa mémoire (de type EEPROM) sous forme de"code byte". En langage"Javacard", de tels programmes sont appelés"applets". Ce sont de petits logiciels interprétés sur une machine virtuelle. Le programme auxiliaire pourra donc être constitué d"'applets"stockées dans la carte ellemême. Ces"applets"seront aussi exécutées dans la carte, comme mentionné précédemment. L'installation d'une applet est réalisée par le fabricant de carte, par l'organisation émettrice de la carte et éventuellement tout au long de la vie de la carte (mécanisme appelé"post-insuance", en anglais) par l'une des procédures suivantes : - chargement de l'applet par un terminal de confiance ; - chargement de l'apple par un terminal quelconque en utilisant une connexion sécurisée vers un terminal de confiance ; - chargement par installation sécurisée : avant d'installer une applet, la carte vérifie la légitimité de l'apple par un système de signature cryptographique numérique. REVENDICATIONS 1. Dispositif électronique de traitement de données comportant une unité centrale (UC) apte à exécuter un logiciel, caractérisé en ce qu'il comporte un lecteur (16) d'une entité électronique sécurisée, en ce qu'un tel logiciel comprend au moins deux parties : un programme principal exécuté par ladite unité centrale et au moins un programme auxiliaire stocké et exécuté dans une telle entité électronique sécurisée (17) placée dans ledit lecteur et en ce que ledit programme principal génère des commandes d'exécution de tout ou partie dudit programme auxiliaire. 2. Dispositif électronique selon la revendication 1, caractérisé en ce que ledit lecteur (16) de ladite entité électronique sécurisée est un lecteur de carte à microcircuit ou analogue. 3. Dispositif électronique selon la revendication 1 ou 2, caractérisé en ce qu'il comporte une mémoire centrale (DD) dans laquelle ledit programme principal est stocké. 4. Dispositif selon la revendication 2 ou 3, caractérisé en ce qu'il comporte un lecteur (15) de support de logiciel non nécessairement protégé contre la copie, ledit programme principal étant mis à disposition sur un tel support. 5. Dispositif selon la revendication 4, caractérisé en ce que ledit lecteur (15) de support de logiciel non nécessairement protégé est un lecteur de disque CD-ROM ou analogue. 6. Dispositif selon l'une des revendications 3 à 5, caractérisé en ce qu'il est associé à un modem (20) de décodage d'informations relié à un réseau de télécommunication, par exemple du type Internet, pour le téléchargement dudit programme principal dans une mémoire de ladite unité centrale. 7. Dispositif selon l'une des revendications précédentes, caractérisé en ce que, en exécutant ledit programme principal, ladite unité centrale (UC) génère des commandes APDU ou analogues pour l'exécution de tout ou partie dudit programme auxiliaire et en ce que ladite entité électronique sécurisée (16) génère des réponses APDU correspondantes, renvoyées à ladite unité centrale. 8. Dispositif selon l'une des revendications 2 à 7, caractérisé en ce qu'il est essentiellement constitué d'un ordinateur équipé d'un lecteur (16) de carte à microcircuit précité. 9. Dispositif selon l'une des revendications 2 à 7, caractérisé en ce qu'il est essentiellement constitué d'une console de jeu vidéo (25) équipée d'un lecteur (16a) de carte à microcircuit précité. 10. Support de logiciel caractérisé en ce qu'il comporte deux entités renfermant deux parties d'un même programme, respectivement un programme principal et un programme auxiliaire. 11. Support de logiciel selon la revendication 10, caractérisé en ce que l'entité qui renferme ledit programme auxiliaire est une carte à microcircuit (17). 12. Dispositif électronique apte à recevoir un support de logiciel selon la revendication 10 ou 11, caractérisé en ce qu'il constitue un téléphone, notamment un téléphone portable. 13. Dispositif apte à recevoir un support de logiciel selon la revendication 10 ou 11, caractérisé en ce qu'il constitue un appareil dit"PDA".