Brevet FR2734934A1 — publié le 19961206

On désigne par carte à puce, les cartes, en général du format d'une carte de crédit, mais également les jetons munis d'un microcircuit électronique, à base de mémoires et d'un microcontrôleur, agencé pour permettre le déroulement d'une transaction par exemple bancaire ou santé. Les cartes à puce communiquent avec leur environnement au moyen de lecteurs équipés d'éléments de communication suffisant pour permettre et faciliter l'exécution de leur transaction. Les cartes à puce actuellement connues, dotées de mémoires et éventuellement d'un microcontrôleur, sont utilisées uniquement comme un support de données agrémenté de dispositifs de sécurisation. L'intelligence nécessaire à la conduite des transactions est reportée au niveau des lecteurs qui sont soit autonomes et pourvus d'un clavier, d'un afficheur et d'une mémoire gérés par un microcontrôleur doté d'un programme de contrôle de déroulement de transaction spécifique à la transaction envisagée, soit transparents et utilisés comme accès à un système informatique programmé spécialement pour la transaction envisagée. Ce report de l'intelligence nécessaire à la conduite d'une transaction, soit au niveau du lecteur de carte, soit à icelui d'un système informatique associé au lecteur de carte, a pour inconvénient de nécessiter une spécialisation du lecteur ou du système informatique associé en fonction du type de transaction. Ainsi, si l'on veut changer de type de transaction, il ne suffit pas de changer la programmation de la carte à puce; il faut aussi changer celle du lecteur, s'il est autonome, ou du système informatique associé, si le lecteur est transparent. Cela est un obstacle au développement des applications des cartes à puce. Pour éviter cet inconvénient, il a été proposé de ramener l'intelligence, c'est à dire la gestion de la transaction, au niveau de la carte à puce elle-même. La carte à puce ne se contente plus d'effectuer les instructions qui lui parviennent de l'extérieur en les accompagnant d'éventuelles mesures de sécurité; elle prend la maîtrise du déroulement de la transaction en donnant ses instructions au lecteur qui devient un simple exécutant et qui, de ce fait, peut être banalisé et utilisé avec des cartes à puce de différentes sortes, spécialisées chacune dans des transactions très variées. li se pose cependant un problème de sécurisation, car il faut ôter à l'utilisateur non autorisé toute possibilité de modifier le programme de gestion de transaction stocké au sein de la carte à puce. La présente invention a pour but de résoudre ce problème d'une manière simple, tout en laissant la possibilité au promoteur d'une transaction de la modifier à loisir. Elle a pour objet une carte à puce intelligente, sécurisée, équipée d'une mémoire et d'un microcontrôleur, remarquable en ce qu'elle comporte, stocké en mémoire: - un système d'exploitation de base, en code exécutable adapté au type de microcontrôleur, gérant les accès à sa mémoire avec des clefs d'autorisation pour certaines zones, - un interpréteur de commandes assurant l'interface entre un programme de gestion de transaction et le système d'exploitation de base, et - au moins un fichier contenant ledit programme de gestion de transaction écrit dans un langage évolué et interprété, ineffectif sans traduction par l'interpréteur de commandes. Avantageusement, le fichier de programme de gestion de transaction est placé dans une partie réinscriptible de la mémoire, de type EEPROM, tandis que le système d'exploitation de base et l'interpréteur de commandes du langage interprété sont disposés dans une partie non réinscriptible de la mémoire, de type ROM. Le programme de gestion de transaction stocké dans la carte à puce communique avec le monde extérieur à la carte à puce par l'intermédiaire du système d'exploitation et peut, par conséquent, être l'objet de tentatives de corruption. Le fait qu'il soit en langage évolué et interprété permet de faire échec à de telles tentatives de corruption puisque ces instructions nécessitent, pour être exécutées par le microcontrôleur de la carte à puce, une traduction par un interpréteur de commandes s'appuyant lui-même sur un système d'exploitation de base comportant des sécurités d'accès à la mémoire. L'interpréteur de commandes et le système d'exploitation de base étant inaccessibles de l'extérieur de la carte à puce, gracie aux sécurités d'accès de la mémoire, sont eux, à l'abris des tentatives de corruption.En effet, le programme de gestion de la transaction peut accéder en lecture ou en écriture aux données stockées dans la partie EEPROM de la mémoire mais toujours sous contrôle du système d'exploitation de base qui vérifie le respect des sécurités d'accés à la mémoire. Le langage évolué et interprété a également l'avantage de permettre d'écrire des programmes plus compacts qu'un langage non interprété de sorte qu'il économise de l'espace mémoire. D'autres caractéristiques et avantages de l'invention ressortiront de la description ci-après d'un mode de réalisation de l'invention donné à titre d'exemple. Cette description sera faite ci-après en regard du dessin dans lequel: - une figure 1 est un schéma de principe du microcircuit électronique équipant une carte à puce, - une figure 2 illustre, de manière schématique, les différentes couches logiques du programme d'un microcontrôleur de carte à puce intelligente sécurisée selon l'invention, et - une figure 3 est un schéma de principe de l'organisation de la mémoire d'une carte à puce. On distingue sur la figure 1 le microcircuit électronique ou puce d'une carte à puce. Celui-ci comporte un microcontrôleur La figure 2 montre les grandes partitions des programmes de gestion du microcontrôleur d'une carte à puce intelligente selon l'invention. La couche la plus enfouie est un système d'exploitation de base 10, en code exécutable adapté au type de microcontrôleur de la carte à puce 1, qui gère sa mémoire avec les systèmes habituels de sécurisation et un protocole de communication externe 11. Ce système d'exploitation de base 10 est associé à un interpréteur de commandes 12 reconnaissant différentes instructions en langage évolué. L'ensemble du système d'exploitation de base 10 et de l'interpréteur de commande 12 réside en mémoire morte non réinscriptible ROM et est surmonté par une couche externe constituée par un programme 13, en langage évolué et interprété, de gestion de la transaction à laquelle est dédiée la carte à puce, qui est stocké en mémoire morte réinscriptible EEPROM. Le programme de gestion de transaction 13 communique avec l'extérieur de la carte à puce par l'intermédiaire du système d'exploitation. Par sécurité, toutes les instructions qu'il contient, notamment celles qui ont une action sur la mémoire : lecture, écriture, effaçage, sont en langage évolué. De ce fait, elles sont incomprises du microcontrôleur si elles n'ont pas été interprétées par l'interpréteur de commande 12, qui les traduit et les dirige obligatoirement vers le système d'exploitation de base 10 et ses systèmes de sécurisation. Ainsi, un utilisateur non habilité, ne peut porter atteinte à l'intégrité d'une transaction puisqu'il n'a accès dans la carte à puce qu'au niveau du langage évolué et interprété, et que les ordres de ce langage évolué et interprété qu'il pourrait détourner sont nécessairement interceptés par l'interpréteur de commande 12 et par les systèmes de sécurisation du système d'exploitation de base 10. L'utilisation d'un langage évolué devant être interprété, au niveau des échanges de la carte à puce avec l'extérieur, présente, également l'avantage, outre la sécurité qu'il apporte, de permettre d'écrire des programmes plus compacts et par conséquent d'économiser de l'espace mémoire. La mémoire, qui est constituée des parties vive (RAM) 3, et mortes non réinscriptible (ROM) 4 et réinscriptible (EEPROM) 5, a sa partie morte réinscriptible (EEPROM) 5 organisée, comme le montre la figure 2, selon une arborescence de répertoires dont les accès sont réglementés en fonction de leurs niveaux au moyen de serrures qui doivent être ouvertes au préalable à l'aide de clefs constituées par des codes. Le répertoire racine 20 est dit maître. II donne accès à un ou plusieurs niveaux inférieurs de répertoires 21, 22 dits répertoires dédiés. Les répertoires maître et dédiés renferment des fichiers élémentaires 200, 210, 220 et 221. Le répertoire maître 20 est pourvu d'une protection de premier rang et renferme dans ses fichiers élémentaires un programme maître de gestion de transaction. Le gestionnaire du répertoire maître peut transmettre des droits à divers promoteurs d'application de rangs inférieurs enregistrés aux niveaux des répertoires dédiés et leur proposer en menu les applications qu'il autorise. Le répertoire dédié 21 est pourvu d'une protection de deuxième rang et destiné à un promoteur d'applications de deuxième rang qui n'a pas généralement accès au répertoire maître mais qui peut créer, dans son répertoire, des applications en langage évolué avec droits d'accès. Le répertoire dédié 22 est pourvu d'une protection de troisième rang et destiné à un promoteur d'application de troisième rang et ainsi de suite. Chaque application ou programme de gestion de transaction qu'il soit maître ou dédié est toujours écrit en langage évolué interprété et ne prend jamais la main sur le microcontrôleur sans passer par l'interpréteur de commande et la chaîne de sécurité du système d'exploitation de base. Pour la réalisation d'une transaction, la carte à puce intelligente sécurisée communique en langage évolué et interprété, par l'intermédiaire du système d'exploitation de base, avec un lecteur qui lui fournit les ressources nécessaires telles que clavier, afficheur, liaison avec une ou plusieurs autres carte à puce ou avec un système informatique. Cette communication se fait, à l'alternat, sur l'initiative du lecteur qui est électriquement maître des échanges mais sous le contrôle logique de la carte à puce qui définit les étapes successives d'une transaction par le déroulement de son programme de gestion de transaction. Le lecteur a la maîtrise électrique des échanges grâce à deux commandes qu'il émet en alternance à destination de la carte à puce, d'une part, une requête de mise à disposition d'un paquet d'instructions et de données élaborées au sein de la carte à puce dit "message carte" et d'autre part, une déclaration de compte rendu associée à un message de compte rendu sur l'exécution d'instructions reçues précédemment dans des messages carte. Ces deux commandes sont avantageusement la commande "get response" et la commande "enveloppe" ou "execute" définies dans les normes ISO7816/prEN726. La commande "get response" est constituée par l'envoi d'un message binaire comprenant cinq champs successifs de un octet: - un premier champ nommé "CLA" renfermant un octet identifiant la classe de l'instruction, par exemple, instructions réservées aux applications bancaires, - un deuxième champ nommé "INS" renfermant l'octet CO en hexadécimal identifiant le type de commande, "get response", - un troisième champ réservé nommé "P1" renfermant l'octet 00 en hexadécimal, - un quatrième champ réservé nommé "P2" renfermant l'octet 00 en hexadécimal, et - un cinquième champ nommé "Le field" renfermant un octet dont la valeur n correspond au nombre d'octets attendus en réponse de la carte à puce. Cette commande "get response" entraîne une réponse de la carte à puce dite "Data field" renfermant n octets de données, n étant le nombre déclaré dans son champ "Le field", et deux octets "SW1, SW2" de compte rendu carte. La commande "execute" est constituée par l'envoi d'un message binaire constitué de cinq champs successifs de un octet et d'un champ final de données de plusieurs octets: - un premier champ nommé "CLA" renfermant un octet identifiant la classe de l'instruction, par exemple, instructions réservées aux applications bancaires, - un deuxième champ nommé "INS" renfermant l'octet AE en hexadécimal identifiant le type de commande "execute", - un troisième champ réservé nommé "P1" renfermant l'octet 00 en hexadécimal, - un quatrième champ réservé nommé "P2" renfermant l'octet 00 en hexadécimal, - un cinquième champ nommé "Lc field" renfermant un octet dont la valeur n correspond au nombre d'octets du message accompagnant la commande "execute", et - un sixième champ final nommé "Data field" renfermant les n octets de données annoncés dans le cinquième champ "Lc field". Cette commande "execute" entraîne une réponse de la carte à puce de deux octets "SW1, SW2" donnant un compte rendu carte. La commande "enveloppe" a la même constitution que la commande "execute" et s'en différencie par la valeur de l'octet de son deuxième champ "INS" identifiant la commande qui vaut C2 en hexadécimal. Dans ces trois messages, les champs respectifs "Le field" et "Lc field" déclarent la longueur du message carte attendu ou celle du message compte rendu du lecteur au moyen desquels transitent les instructions à exécuter et données associées en provenance de la carte à puce ainsi qu'en retour les comptes-rendus des actions exécutées par le lecteur et données résultantes. A l'introduction de la carte à puce intelligente dans le lecteur, la carte à puce se trouve détectée et mise sous tension par le lecteur qui lui envoie un ordre de remise à zéro selon la norme lSO7816-3. Il en résulte un processus d'initialisation du microcontrôleur de la carte à puce intelligente qui se termine par l'envoi au lecteur, depuis la carte à puce intelligente, d'une réponse d'acquittement à l'ordre de remise à zéro et par une mise en route du programme de gestion de transaction de la carte à puce intelligente pour un premier cycle de traitement aboutissant dans cette dernière à la préparation du premier message carte qui sera communiqué au lecteur dès que celui-ci en fera la demande au travers d'une requête de mise à disposition de message sous la forme d'une commande "get response". A la réception de la réponse d'acquittement à l'ordre de remise à zéro, le lecteur entame un premier cycle d'échange de données avec la carte à puce intelligente. Au cours de ce premier cycle d'échange, le lecteur envoie en direction de la carte à puce intelligente une requête de mise à disposition de message, sous la forme d'une commande "get response", pour demander l'envoi du message carte préparé par la carte à puce intelligente après son initialisation. La carte à puce intelligente, à la réception d'une telle requête par la commande "get response", envoie le message carte préparé au lecteur. Le lecteur reçoit le message carte, identifie les données qu'il contient, interprète le message, exécute les commandes demandées et répond à la carte à puce intelligente par une déclaration de compte rendu sous la forme d'une commande "enveloppe" ou "execute", avec un message de compte rendu rapportant à la carte à puce intelligente la façon dont il a réalisé ce qui lui a été demandé et le résultat de ce traitement. Cela termine le premier cycle d'échange. A la réception de la commande "enveloppe" ou "execute" du premier cycle d'échange en provenance du lecteur, la carte à puce intelligente poursuit le déroulement de son programme de gestion de transaction au cours d'un deuxième cycle de traitement pendant lequel elle vérifie d'abord l'exécution correcte du message carte qu'elle vient d'émettre au moyen du message de compte rendu, puis prépare un autre message carte. Le lecteur entame ensuite un deuxième cycle d'échange en envoyant à la carte à puce intelligente une deuxième commande "get response" pour lire le nouveau message carte. Après traitement des données de ce nouveau message carte, le lecteur rend compte de son exécution à la carte à puce intelligente, au moyen d'un message de compte rendu incorporé à une deuxième commande "enveloppe" ou "execute" qui clôt le deuxième cycle d'échange. La carte à puce intelligente, à la réception de cette deuxième commande "enveloppe" ou "execute" en provenance du lecteur entame alors, toujours sous le contrôle de son programme de gestion de transaction, un troisième cycle de traitement au cours duquel elle vérifie l'exécution correcte du message carte qu'elle vient d'émettre, au moyen du message de compte rendu reçu du lecteur, puis prépare un autre message carte. Le lecteur entame alors un troisième cycle d'échange en envoyant à la carte à puce intelligente une troisième commande "get response" pour recevoir ce message carte. Les cycles de traitement, à l'initiative de la carte à puce intelligente, et d'échange, à l'initiative du lecteur, se succèdent en fonction du programme de gestion de la transaction stocké dans la carte à puce intelligente. Conformément à la norme ISO7816-3 le lecteur 1 est électriquement maître des échanges, mais le déroulement de la transaction se fait à l'initiative de la carte à puce 4 qui est intelligente. Le lecteur peut comporter plusieurs connecteurs de carte à puce. Dans ce cas, une seule carte à puce intelligente à la fois pilote la transaction. La carte à puce intelligente qui pilote la transaction est dite "active". Les autres sont dites "passives" La carte à puce intelligente déclarée active est la première qui est capable de fournir une réponse a une instruction "get response" du lecteur. REVENDICATIONS 1. Carte à puce intelligente sécurisée (1), équipée d'une mémoire (3, 4, 5) et d'un microcontrôleur (2), caractérisée en ce qu'elle comporte stocké en mémoire: - un système d'exploitation de base (10), en code exécutable adapté au type de microcontrôleur (2), gérant les accès à sa mémoire (3, 4, 5) avec des clefs d'autorisation pour certaines zones, - un interpréteur de commandes (12) assurant l'interface entre un programme de gestion de transaction (13) et le système d'exploitation de base (10), et -au moins un fichier contenant ledit programme de gestion de transaction (13) écrit dans un langage évolué et interprété, ineffectif sans traduction par l'interpréteur de commandes (12). 2. Carte à puce intelligente sécurisée selon la revendication 1, caractérisée en ce que ledit fichier contenant un programme de gestion de transaction (13) en langage évolué et interprété est stocké en une zone de la mémoire morte et réinscriptible de type EEPROM. 3. Carte à puce intelligente sécurisée selon la revendication 1, caractérisée en ce que ledit système d'exploitation de base (10) et ledit interpréteur de commandes (12) sont stockés en une zone de la mémoire morte et non réinscriptible de type ROM.