Brevet FR2836736A1 — publié le 20030905

CARTE A PUCE ET PROCEDE D'EVITEMENT DE FAILLE LOGIQUE SUR UNE TELLE CARTE A PUCE DESCRIPTION DOMAINE TECHNIQUE La présente invention concerne une carte à puce, et un procédé d'évitement de faille logique "software" (ou logicielle) sur une telle carte puce. ETAT DE LA TECHNIQUE ANTERIEURE Un composant pour carte à puce, utilisée par exemple dans le domaine de la télévision numérique pour contrôler le droit d'un utilisateur à avoir accès à un programme, comporte une partie mémoire code, qui n'est pas modifiable une fois que le composant a été réalisé. Une erreur dans le code chargé dans cette mémoire, due à un test non exhaustif ou à une faille logicielle, ne peut donc être corrigée. En effet lorsque ce composant est ainsi réalisé, le code fourni par le concepteur est directement incrusté dans le silicium ("code masqué"), par exemple en utilisant un processus d'ionisation. En cas de faille logicielle (ou"bug") constatée après masquage il n'y a souvent d'autre alternative que de régénérer un nouveau code et donc un nouveau masque, ce qui est très lourd en terme de durée, par exemple plusieurs mois. De même en cas de découverte d'une faille logicielle en exploitation, les cartes puce étant chez les clients, il est très difficile de régler ce problème simplement. En général il n'existe pas d'autre solution que de récupérer les cartes à puce et de les changer. Une solution de l'art connu consiste à charger un code de correction dans une mémoire données située dans le composant de la carte puce. Un tel chargement peut avoir lieu lors de la personnalisation de la carte, ou par envoi à distance par exemple directement chez un abonné à un service de décodeur. Dans une telle solution, on prévoit dans le"code masqué"en mémoire code tous les endroits où pourrait potentiellement exister un problème, par exemple : - à chaque appel de fonction, - à chaque test conditionnel, - dans chaque module ou fonction un peu importante. On envoie alors un code de correction pour être chargé en mémoire données, en indiquant à quels endroits du code d'origine chargé en mémoire code"code masqué", ce code de correction doit être exécuté. Une telle solution présente donc les inconvénients suivants : - le fait de prévoir au préalable les endroits où peut se poser un problème entraîne une augmentation de la taille du code d'origine de manière non nécessaire, - dans le cas où un problème a lieu dans un module de taille importante, le code de correction doit, lui aussi, être de taille importante. Il peut alors avoir une taille beaucoup plus importante que nécessaire. - Une intervention en des endroits non prévus du code d'origine n'est pas possible. Ainsi les cartes à puce de l'art antérieur ne sont pas satisfaisantes en ce qui concerne : - leur fonctionnement, - la prise en compte de failles logicielles, - la sécurité. L'invention a donc pour objectif de pallier de tels inconvénients en permettant de corriger des failles logicielles sur le composant d'une carte à puce durant l'exploitation de cette carte à puce. EXPOSÉ DE L'INVENTION L'invention concerne une carte à puce dont le composant comporte une mémoire données/code, une mémoire code et une unité centrale, caractérisée en ce qu'il comporte en outre un mécanisme d'interception des adresses de l'unité centrale permettant, en cas de faille logique, de comparer l'adresse de l'unité centrale et une adresse de déroutement chargée préalablement en mémoire données/code et dans l'affirmative de dérouler un code de correction chargé dans cette mémoire. Avantageusement, le mécanisme d'interception comporte un bloc d'interception et de substitution des adresses, et un multiplexeur de données. La mémoire données/code peut être une mémoire E2PROM, une mémoire flash ou une mémoire FeRAM. La mémoire code peut être une mémoire ROM ou une mémoire flash. L'invention concerne également un procédé d'évitement de faille logique sur une carte à puce dont le composant comporte une mémoire données/code, une mémoire code et une unité centrale, caractérisé en ce qu'en cas d'au moins une faille logique détectée en mémoire code, - on charge un code de correction avec au moins une adresse de déroutement en mémoire données/code, - on compare l'adresse de l'unité centrale avec chaque adresse de déroutement mémorisée en mémoire données/code, - s'il y a correspondance on déroule le code de correction chargé en mémoire données/code. La présente invention présente les avantages suivants : - les endroits de déroutement n'ont pas à être prévus à l'avance, - la taille mémoire est optimisée, ce qui permet de réduire le coût, - il y a un gain en vitesse, l'intervention de l'intercepteur matériel étant transparente pour l'unité centrale, - il y a un gain en taille de code et donc en temps de développement. Le procédé de l'invention permet de corriger des failles logicielles durant le processus de production mais aussi durant l'exploitation elle-même du composant, et ceci sans avoir au préalable prévu des interceptions logicielles dans le code. Ce procédé alliant matériel et logiciel offre de plus une réelle souplesse. BRÈVE DESCRIPTION DES DESSINS La figure unique illustre un exemple de réalisation d'une carte à puce selon l'invention. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS L'invention consiste, pour corriger une ou plusieurs failles logiques d'un code mémorisé 11 code masqué" dans une carte à puce, prévoir un mécanisme d'interception des adresses de l'unité centrale 10 de cette carte à puce, qui vérifie les adresses matérielles qui s'exécutent. Comme illustré sur la figure, le composant de la carte puce comprend ainsi : - une unité centrale 10, - une mémoire 14 données/code (MDC), par exemple une mémoire EPROM ("Electrically Erasable Programmable Read Only Memory"), une mémoire flash, ou une mémoire FeRAM ("Ferroelectric Random Access Memory"), dans une zone 15 de laquelle est mémorisé un code de substitution, - une mémoire code (MC) 16, de type ROM (Mémoire en lecture seule), ou flash, dans laquelle est mémorisé le code d'origine, - le mécanisme 11 d'interception des adresses de cette unité centrale 10, qui comporte un bloc 12 d'interception et de substitution des adresses, et un multiplexeur de données 13, permettant à l'unité centrale de prendre en compte les données de la mémoire 14 ou les données de la mémoire 16, - un bus de données 17, reliant l'unité centrale 10 et le multiplexeur 13, - un bus de données MDC 18, reliant le multiplexeur 13 et la mémoire 14, - un bus de données MC 19, reliant le multiplexeur 13 et la mémoire 16, - un bus adresses MDC 20, reliant le mécanisme 11 et la mémoire 14, - un bus adresses unité centrale 21, reliant l'unité centrale 10, le mécanisme 11 et la mémoire 16. Le mécanisme d'interception 11 permet de réaliser une fonction logique d'interception d'adresse. En cas de faille logicielle, cette fonction logique déroute l'unité centrale 10 vers le code de substitution dit"Bug Free", c'est-à-dire exempt de faille logique, préalablement mémorisé en mémoire 14. Ainsi, lorsque l'utilisateur constate que le code d'origine de la carte à puce comporte au moins une faille logicielle, il envoie un code de correction exempt de faille logique et les adresses de la ou des failles logicielles, dans le cas d'un signal émis à distance par exemple, pour corriger celles-ci. Lorsque le mécanisme d'interception 11 détecte une adresse ou un ensemble d'adresses de faille logicielle, il y a un déroutement du code d'origine vers le code corrigé. Un tel fonctionnement peut être totalement indépendant de l'unité centrale 10. L'interception d'adresse ne se limite pas à une seule adresse mais peut concerner un ensemble d'adresses contiguës ou non. Le procédé d'évitement de faille logique de l'invention comporte donc les étapes suivantes : - à l'initialisation, le mécanisme 11 d'interception des adresses de l'unité centrale 10 dispose de la liste des adresses à substituer mémorisée au préalable ainsi qu'un code de substitution dans une zone 15 de la mémoire données/code 14, cette liste étant, par exemple, mémorisée dans une table de substitution. - lorsque l'unité centrale 10 positionne une adresse, le bloc d'interception d'adresses 12 analyse l'adresse matérielle qui s'exécute pour voir s'il n'y a pas de cohérence de celle-ci avec une adresse de la table de substitution : e s'il n'y a pas cohérence, le programme continue à être déroulé à partir de 16, * s'il y a cohérence, il y a alors substitution d'une adresse mémorisée dans la mémoire données/code 14 à l'adresse qui s'exécute et le code de substitution est exécuté à partir de celle-ci. On charge donc au préalable le code de correction avec une ou plusieurs adresses de déroutement en mémoire données/code 14. On ne charge donc que des informations de taille beaucoup plus réduite que dans les dispositifs de l'art antérieur. De plus, le code mémorisé en mémoire 14 est déroulé de façon totalement transparente pour l'unité centrale 10. L'invention consiste donc à réaliser le chargement en mémoire données code 14 d'une table et d'un code de substitution, ce chargement pouvant avoir lieu à distance, et à réaliser une interception des adresses de l'unité centrale 10, le déroulement du code de substitution, en cas de faible logique, ayant alors lieu de façon transparente pour l'unité centrale 10. REVENDICATIONS 1. Carte à puce dont le composant comporte une mémoire données/code (14), une mémoire code (16) et une unité centrale (10), caractérisée en ce qu'il comprend, en outre, un mécanisme (11) d'interception des adresses de l'unité centrale (10) permettant, en cas de faille logique, de comparer l'adresse de l'unité centrale (10) et une adresse de déroutement chargée préalablement en mémoire données/code (14) et dans l'affirmative de dérouler un code de correction (15) correspondant chargé dans cette mémoire (14). 2. Carte à puce selon la revendication 1, dans lequel le mécanisme d'interception (11) comporte un bloc (12) d'interception et de substitution des adresses, et un multiplexeur de données (13). 3. Carte à puce selon la revendication 1, dans lequel la mémoire données/code (14) est une mémoire E2PROM, une mémoire flash ou une mémoire FeRAM. 4. Carte à puce selon la revendication 1, dans laquelle la mémoire code (16) est une mémoire ROM ou une mémoire flash. 5. Procédé d'évitement de faille logique sur une carte à puce dont le composant comporte une mémoire données/code (14), une mémoire code (16) et une unité centrale (10), caractérisé en ce qu'en cas d'au moins une faille logique détectée en mémoire code (16), - on charge un code de correction avec au moins une adresse de déroutement en mémoire données/code (14), - on compare l'adresse de l'unité centrale (10) avec chaque adresse de déroutement mémorisée en mémoire données/code (14), - s'il y a correspondance on déroule le code de correction (15) chargé en mémoire données/code (14).