FR 2787221 A1 20000616 FR 9816151 A 19981209 CIRCUIT INTEGRE A ACCES SECURISE La présente invention concerne les circuits intégrés pour cartes à puce, étiquettes électroniques, et autres objets portatifs électroniques. La présente invention concerne plus particulièrement un procédé pour sécuriser l'accès à un circuit intégré comprenant une mémoire, une interface de communication pour recevoir des commandes numériques, une unité centrale pour interpréter et exécuter des commandes reçues, et des moyens de cryptographie. Dans la demande WO 97/14119, la demanderesse a proposé un procédé d'authentification permettant de protéger l'accès à un circuit intégré de carte à puce. Ce procédé, bien qu'offrant un excellent degré de sécurité, peut s'avérer insuffisant lorsqu'il est appliqué à des circuits intégrés fonctionnant sans contact, pour des raisons qui seront exposées ci-après. A titre de rappel, la figure 1 représente schématiquement l'architecture classique d'un circuit intégré 10 de carte à puce sans contact, comprenant une interface de communication 11 pourvue d'une bobine d'antenne L1, une unité centrale 12, une mémoire 13, un circuit de cryptographie 14 à clé secrète Ks et un générateur 15 de codes aléatoires ALINT. En regard du circuit intégré 10 se trouve un lecteur 20 de carte à puce sans contact, comprenant une interface de communication 21 pourvue d'une bobine d'antenne L2, un microprocesseur 22 et une mémoire programme 23. Lorsque la bobine L1 du circuit intégré se trouve à proximité de la bobine L2 du lecteur, les deux dispositifs peuvent tUT -T1I 2 2787221 échanger des données par couplage inductif et réaliser une transaction. Au cours d'une transaction, le lecteur envoie des commandes numériques au circuit intégré 10, par exemple des commandes de lecture ou d'écriture de la mémoire 13, et le circuit intégré 10 renvoie des messages de confirmation, accompagnés le cas échéant de données lues dans la mémoire 13. Selon la demande WO 97/14119, et très schématiquement, une transaction ne peut se faire tant que le circuit intégré 10 n'a pas vérifié que le lecteur connaît la clé secrète Ks et la fonction de cryptographie FKS réalisée par le circuit 14. A cet effet, le circuit intégré 10 envoie au lecteur 20 un code aléatoire ALINT, fourni par le générateur 15, et le lecteur 20 renvoie au circuit intégré 10 un code d'authentification AC1 du type: AC1 = FKS (ALINT), calculé par transformation du code aléatoire ALINT au moyen de la fonction de cryptographie FKS. De son côté, le circuit intégré 10 calcule, au moyen du circuit de cryptographie 14, un code d'authentification AC2: AC2 = FKS (ALINT) et compare le code AC1 au code AC2 qu'il a lui-même calculé. Si les deux codes sont différents, le circuit intégré se bloque ou verrouille sa sortie. Ainsi, le circuit intégré 10 ne répond à des commandes ultérieures qu'à la condition d'avoir préalablement authentifié le lecteur 20. Malgré cette précaution, le risque demeure qu'un fraudeur substitue au lecteur 20 un dispositif frauduleux NE71 T11Uw 3 2787221 après que la procédure d'authentification du lecteur 20 est effectuée. Ce risque, bien connu dans le domaine des cartes à contacts conventionnelles, a été supprimé dans l'art antérieur par la prévision de mécanismes à insertion totale de carte, rendant inaccessible la liaison électrique avec le circuit intégré d'une carte. Cette solution s'avère toutefois inapplicable aux cartes à puces sans contact, fonctionnant sans insertion à une distance de quelques centimètres d'un lecteur. Ainsi, il est techniquement envisageable qu'un fraudeur éloigne progressivement une carte à puce sans contact du champ magnétique émis par un lecteur authentique, tout en la rapprochant du champ magnétique émis par un simulateur équipé d'une bobine d'antenne. Le circuit intégré de la carte, en cours de communication, ne s'apercevrait pas de la substitution et exécuterait les commandes émises par le dispositif frauduleux. De cette manière, il serait possible d'envoyer des commandes frauduleuses à un circuit intégré, notamment des commandes d'écriture dans la mémoire de données falsifiées. Par exemple, un fraudeur pourrait recharger un compteur d'unité représentant une valeur monétaire. D'autre part, certains circuits intégrés à faible coût de revient et de conception simple ne sont pas équipés d'un générateur de code aléatoire. La procédure d'authentification du lecteur 20 n'est donc pas réalisable et ces circuits demeurent sans protection. La présente invention vise à pallier ces inconvénients. Plus particulièrement, un objectif de la présente invention est que des commandes adressées à un circuit intégré ne soient exécutées qu'à la condition d'être émises par un dispositif habilité. Cet objectif est atteint par la prévision d'un procédé pour sécuriser l'accès à un circuit intégré aun 4 2787221 comprenant une mémoire, une interface de communication pour recevoir des commandes numériques, une unité centrale pour exécuter des commandes reçues, et des moyens de cryptographie, dans lequel au moins une commande d'un certain type est envoyée au circuit intégré accompagnée d'un premier code d'authentification calculé par codage de tout ou partie de la commande au moyen d'une fonction de cryptographie, et en ce que le circuit intégré est agencé pour, sur réception d'une telle commande: calculer un second code d'authentification par codage de tout ou partie de la commande, grâce aux moyens de cryptographie; comparer le premier et le second codes d'authentification, et ne pas exécuter la commande si le premier et le second codes sont différents. Selon un mode de réalisation, la commande comprend un mot binaire aléatoire. Selon un mode de réalisation, la commande est une commande d'écriture dans la mémoire du circuit intégré. Selon un mode de réalisation, toute commande envoyée au circuit intégré est accompagnée d'un code d'authentification dont l'authenticité est vérifiée par le circuit intégré. La présente invention concerne également un circuit intégré comprenant une mémoire, une interface de communication pour recevoir des commandes numériques, une unité centrale pour interpréter et exécuter des commandes reçues, des moyens de cryptographie agencés pour calculer un code d'authentification à partir de tout ou partie d'une commande reçue, des moyens pour comparer le code d'authentification avec une signature accompagnant la commande, et ne pas exécuter la commande si la signature n'est pas identique au code d'authentification. Selon un mode de réalisation, les moyens de cryptographie comprennent un circuit de cryptographie à logique câblée à entrée et sortie série. 2787221 Selon un mode de réalisation, le circuit intégré comprend une interface de communication sans contact et des moyens pour convertir une commande reçue sous forme série en un ou plusieurs mots binaires. Selon un mode de réalisation, le circuit intégré est agencé pour envoyer un message d'erreur lorsque la signature accompagnant une commande n'est pas conforme au code d'authentification calculé par les moyens de cryptographie. I0 La présente invention concerne également un objet portatif électronique, notamment une carte à puce, comprenant un circuit intégré selon l'invention. Ces caractéristiques de la présente invention, ainsi que d'autres, seront exposées plus en détail dans la description suivante du procédé de l'invention et d'un exemple de réalisation d'un circuit intégré mettant en oeuvre ce procédé, en relation avec les figures jointes parmi lesquelles: - la figure 1 précédemment décrite représente schématiquement l'architecture d'un circuit intégré de carte à puce sans contact et d'un lecteur de carte sans contact, - la figure 2 représente sous forme de blocs le schéma électrique d'un circuit intégré sans contact selon l'invention, et - la figure 3 est le schéma logique d'un comparateur représenté sous forme de bloc en figure 2. La figure 2 représente le schéma électrique d'un circuit intégré 30 selon l'invention, destiné par exemple à être agencé dans une carte plastique pour former une carte à puce. Le circuit intégré comprend de façon classique une interface de communication sans contact 31 pourvue d'une bobine d'antenne Ll, un tampon d'entrée 32, un tampon de sortie 33, un bus interne 34, ici de huit MW TïI Iun 6 2787221 bits, ainsi qu'une unité centrale 35 et une mémoire 36 connectées au bus 34. L'interface 31 est prévue pour recevoir ou émettre des données binaires par couplage inductif, en présence d'un champ magnétique alternatif émis par la bobine d'antenne L2 d'un terminal 40 comportant une interface de communication sans contact 41. La réception de données est assurée par démodulation d'une tension induite Vac, de fréquence Fo, apparaissant aux bornes de la bobine L1. L'émission de données est faite par modulation de la charge de la bobine Ll. Pour fixer les idées, on trouvera dans les demandes WO 98/02840 et WO 98/02980 une description détaillée du fonctionnement d'une telle interface 31. L'interface 31 comporte par ailleurs des diviseurs de fréquence (non représentés) pour délivrer un signal d'horloge H dont la fréquence FH est un sous- multiple de la fréquence Fo, ainsi qu'un signal d'horloge binaire Hb dont la fréquence Fb est un sous-multiple de la fréquence FH. Le tampon 32 est un registre à décalage comportant une entrée série connectée à l'interface 31 par l'intermédiaire d'un interrupteur SWl, et une sortie parallèle connectée au bus 34. Le tampon 33 est un registre à décalage comportant une entrée parallèle connectée au bus 34 et une sortie série connectée à l'interface 31 par l'intermédiaire d'un interrupteur SW2. L'unité centrale 35, ici un séquenceur à logique câblée d'un type connu en soi, est agencée pour décoder et exécuter des commandes de haut niveau envoyées par le terminal 40. Ces données sont reçues sous forme série par l'interface 31 et sont injectées dans le tampon d'entrée 32. Le contenu du tampon 32 est déchargé en parallèle sur le bus 34 tous les huit bits reçus, sous la forme de mots binaires BWini formant des commandes CMD exécutées par l'unité centrale 35. D'autre part, les réponses de Ad r 7 2787221 l'unité centrale 35 sont délivrées sous forme de mots binaire BWouti transformés en données série par le tampon de sortie 33, puis envoyés au terminal 40 par l'interface 31. Toujours de façon classique, le circuit intégré 30 comprend un circuit de cryptographie 37 à logique câblée, par exemple le circuit décrit dans la demande WO 97/14120, pourvu d'une mémoire secrète dans laquelle est enregistrée une clé secrète Ks. Le circuit 37 comporte une entrée série IN connectée à l'interface 31 par un interrupteur SW3, une sortie série OUT connectée à l'interface 31 par un interrupteur SW4, et est commandé par des signaux RD et WR. Lorsqu'un code CE est appliqué sur l'entrée IN et que le signal RD est à 1, les bits du code CE sont absorbés par le circuit 37 au rythme de l'horloge binaire Hb. Lorsque le signal WR est à 1, la sortie OUT délivre un code d'authentification AC synchronisé à l'horloge binaire Hb, du type AC = FKs(CE) Selon le procédé de l'invention, une commande CMD envoyée au circuit intégré 30 est accompagnée d'un code d'authentification ACs, calculé par codage de la commande CMD au moyen d'une fonction de cryptographie présumée identique à la fonction FKS réalisée par le circuit 37. Une commande selon l'invention se présente ainsi sous le format suivant: CMD ACs et comprend un champ de commande formé par la commande CMD proprement dite, et un champ de signature comprenant le code d'authentification ACs. A la réception de la commande CMD, l'unité centrale 35 vérifie le code ACs en nffI 1i O 8 2787221 injectant les bits de la commande CMD à l'entrée du circuit de cryptographie 37. Le circuit 37 délivre un code AC qui est comparé au code ACs. Si les deux codes ne sont pas identiques, la commande est considérée comme n'étant pas émise par un dispositif habilité et n'est pas exécutée par l'unité centrale 35. Plus particulièrement, selon le mode de réalisation représenté sur la figure 2, la sortie du circuit 37 est connectée, par l'intermédiaire d'un interrupteur SW5, à une entrée IN1 d'un comparateur logique 38 dont l'autre entrée IN2 est connectée à l'interface 31 par l'intermédiaire d'un interrupteur SW6. Le comparateur 38 est piloté par des signaux SET, COMP délivrés par l'unité centrale 35, et délivre sur sa sortie OUT un signal VAL envoyé à l'unité centrale 35. La figure 3 représente schématiquement un mode de réalisation du comparateur 38. Les entrées IN1, IN2 sont appliquées à une porte OU EXCLUSIF 50. La sortie de la porte 50 est appliquée sur une première entrée d'une porte NON ET 60 dont l'autre entrée reçoit le signal COMP. La sortie de la porte 60 est appliquée sur une première entrée d'une porte NON ET 61. Le signal SET est appliqué sur une entrée d'une porte NON ET 62. Les portes 61, 62 ont leurs sorties réciproquement ramenées sur leurs deuxièmes entrées et forment une bascule à mémoire. La sortie de la porte 62 forme la sortie OUT du comparateur. Avant la comparaison de deux codes, le signal SET est mis à 0 un court instant et la sortie OUT passe à 1. Pendant la comparaison de deux codes, le signal COMP est maintenu à 1. Comme cela apparaît sur la figure 2, le procédé de l'invention est ici sous le contrôle de l'unité centrale qui délivre des signaux Sl à S6 de commande des interrupteurs SW1 à SW6. Lorsque la partie significative d'une commande, c'est-à-dire le champ CMD, est reçue par t'uE 1 9 2787221 l'interface 31, les interrupteurs SW1 et SW3 sont fermés et le signal RD est mis à 1. Le champ CMD est envoyé de façon classique dans le tampon 32 et est délivré à l'unité centrale 35 sous forme de mots binaires BWini. Simultanément, le champ CMD est injecté dans le circuit 37. Lorsque tous les bits du champ CMD sont reçus, l'unité centrale 35 ouvre les interrupteurs SW1, SW3, ferme les interrupteurs SW5, SW6 et met le signal WR à 1. Le circuit 37 délivre un code d'authentification AC fonction du champ CMD: AC = FKS(CMD), qui est appliqué bit à bit sur l'entrée IN1 du comparateur 38. Simultanément, l'entrée IN2 du comparateur reçoit les bits du code ACs formant le champ de signature de la commande. Les bits du code ACs et les bits du code AC sont comparés les uns après les autres, au rythme de l'horloge Hb. Si un bit du code AC est différent d'un bit de même rang du code ACs, la sortie OUT du comparateur passe à 0 et l'unité centrale 35 n'exécute pas la commande. Ainsi, la signature ACs selon l'invention permet de vérifier en temps réel l'authenticité du dispositif envoyant les commandes. Au cours d'une transaction, le remplacement du terminal 40 par un dispositif frauduleux ne connaissant pas la fonction FKs conduira immanquablement à une erreur de signature ACs, et les commandes reçues ne seront pas exécutées. Comme autre avantage, la signature ACs selon l'invention permet de détecter les erreurs de transmission et remplace les signatures classiques du type CRC (Cyclic Redundant Check). Ainsi, de préférence, l'unité centrale 35 est programmée pour envoyer un message d'erreur lorsque la signature ACs est erronée. Il niV -TuU 2787221 n'est pas nécessaire que l'unité centrale puisse faire la distinction entre les erreurs de signature dues à une erreur de transmission et les erreurs de signature dues à une tentative de fraude. Pour fixer les idées, on décrira succinctement des exemples de commandes utilisées par la demanderesse pour la mise en ouvre de l'invention. Le format général de ces commandes est le suivant: | CODEop I ADD I DT | AC, I AC2 1 Une commande est ainsi divisée en champs de huit bits se retrouvant dans le circuit intégré sous forme de mots binaires BWini. Le champ CODEop contient le code de l'opération à exécuter et une indication codée sur le nombre d'octets présents dans la commande. Le deuxième champ, optionnel, contient une adresse ADD de lecture ou d'écriture dans la mémoire 36. Le troisième champ, optionnel, contient des données DT à écrire dans la mémoire 36. Les deux derniers champs contiennent deux octets de signature AC1, AC2 formant ensemble le code d'authentification ACs selon l'invention Ce format général permet de prévoir divers types de commandes, notamment: Commande READ (lecture de la mémoire) CODEREAD ADD | AC,1 | AC2 l Cette commande comprend le code de l'opération CODEREAD, une adresse de lecture ADD, et deux octets de signature AC1, AC2. Commande WRITE (écriture dans la mémoire): t l WRITE: CODEWRTE ADD W| W2 W W4 W AC1 AC2 Cette commande comprend le code de l'opération CODEwRITE, une adresse d'écriture ADD, une donnée binaire à écrire dans la mémoire, comprenant ici plusieurs octets W1 à W4, et deux octets de signature AC1, AC2. Commande AUTHENTICATE (demande d'authentification) AUTHENTICATE CODEAUTH I ALEA1 ALEA2 ALEA3 ALEA4 Cette commande d'authentification du circuit intégré 30, en soi classique, comprend le code de l'opération CODEAUTH et une donnée aléatoire comprenant quatre octets ALEA, à ALEA4. En réponse à cette commande, l'unité centrale 35 applique les octets ALEAi à l'entrée du circuit 37, et renvoie au terminal 40 le code d'authentification obtenu. Commande INIT (initialisation d'une communication) INIT CODEiNIT En réponse à cette commande, si le circuit intégré 30 est équipé d'un générateur 39 de mots aléatoires ALINT comme représenté sur la figure 2, l'unité centrale 35 renvoie un message du type: INF ALINT1 ALINT2 1lm 12 2787221 comprenant un champ d'information INF et un mot aléatoire ALINT de 16 bits. L'unité centrale 35 envoie également le mot aléatoire ALINT à l'entrée du circuit 37, attend que le terminal 40 renvoie un code d'authentification fonction du mot aléatoire ALINT, et compare le code d'authentification reçu et le code calculé par le circuit 37. On retrouve donc, ici, le procédé d'authentification décrit dans la demande WO 97/14119, citée au préambule. Ainsi, la présente invention peut être combinée avec les procédés classiques d'authentification du circuit intégré 30 ou d'authentification du terminal 40. Les circuits intégrés pour cartes à puce étant généralement équipés d'un circuit de cryptographie, la mise en oeuvre de l'invention nécessite peu de moyens matériels et une modification de l'unité centrale 35 à la portée de l'homme de l'art. Selon une variante de réalisation du procédé de l'invention, le terminal 40 insère dans le champ de commande CMD une donnée aléatoire ALEA, par exemple un octet. Une commande selon l'invention se présente alors, par exemple, sous le format suivant: CODEO ADD DT ALEA AC1 AC2 Dans ce cas, et avantageusement, deux commandes ayant des champs CODEop, ADD et DT rigoureusement identiques ne comportent pas le même code d'authentification AC1, AC2. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de nombreuses autres variantes et modes de réalisation. D'une part, au lieu d'être appliquée à toutes les commandes, l'invention peut être utilisée pour l'authentification de certaines commandes nécessitant un haut degré de sécurité, notamment des commandes d'écriture dans la mémoire. Dans ce cas, l'unité centrale 35 analyse le code opération des f-T YlVU 13 2787221 commandes reçues avant de mettre en oeuvre le procédé de l'invention. D'autre part, le code d'authentification AC peut être élaboré en utilisant une partie seulement des bits du champ de commande CMD comme code d'entrée de la fonction de cryptographie FKs. Par ailleurs, certaines caractéristiques du circuit intégré décrit plus haut, comme la transformation série/parallèle des données binaires reçues par l'interface de communication, ne sont pas impératives à la mise en ouvre de l'invention. De façon générale, la présente invention s'applique à diverses architectures de circuits intégrés connues de l'homme de l'art, à bus parallèle ou à bus série, à logique câblée ou à microprocesseur. Ainsi, la fonction de cryptographie FKS peut être réalisée par un circuit à logique câblée, comme décrit plus haut, ou par un programme chargé dans la mémoire d'un microprocesseur. Enfin, bien que l'objectif mentionné au préambule soit d'améliorer la sécurité offerte par les circuits intégrés sans contact, il est bien évident que l'invention est applicable aux circuits intégrés à contacts. L'invention peut notamment être appliquée aux circuits intégrés à deux modes de fonctionnement, avec ou sans contact, décrits dans les demandes WO 98/06057 et FR 9715836. 14 2787221 REVENDICATIONS 1. Procédé pour sécuriser l'accès à un circuit intégré (30) comprenant une mémoire (36), une interface de communication (31, L1) pour recevoir des commandes numériques (CMD), une unité centrale (35) pour exécuter des commandes reçues, et des moyens de cryptographie (37), caractérisé en ce qu'au moins une commande d'un certain type est envoyée au circuit intégré accompagnée d'un premier code d'authentification (ACs) calculé par codage de tout ou partie de la commande au moyen d'une fonction de cryptographie (FKS), et en ce que le circuit intégré est agencé pour, sur réception d'une telle commande: - calculer un second code d'authentification (AC) par codage de tout ou partie de la commande, grâce aux moyens de cryptographie (37), - comparer le premier (ACs) et le second (AC) codes d'authentification, et - ne pas exécuter la commande si le premier et le second codes sont différents. 2. Procédé selon la revendication 1, dans lequel ladite commande comprend un mot binaire aléatoire (ALEA). 3. Procédé selon l'une des revendications 1 et 2 dans lequel ladite commande est une commande d'écriture dans la mémoire (36) du circuit intégré. 4. Procédé selon l'une des revendications 1 à 3, dans lequel toute commande envoyée au circuit intégré est accompagnée d'un code d'authentification (ACs) dont l'authenticité est vérifiée par le circuit intégré. 5. Circuit intégré (30) comprenant une mémoire (36), une interface de communication (31, L1) pour recevoir des commandes numériques (CMD), une unité UIWT T lm -- 2787221 centrale (35) pour interpréter et exécuter des commandes reçues, caractérisé en ce qu'il comprend: - des moyens de cryptographie (37) agencés pour calculer un code d'authentification (AC) à partir de tout ou partie d'une commande reçue, - des moyens (35, 38, SW5, SW6) pour comparer le code d'authentification (AC) avec une signature (ACs) accompagnant la commande, et ne pas exécuter la commande si la signature (ACs) n'est pas identique au code d'authentification (AC). 6. Circuit intégré selon la revendication 5, dans lequel les moyens de cryptographie comprennent un circuit de cryptographie (37) à logique câblée à entrée et sortie série. 7. Circuit intégré selon l'une des revendications 5 et 6, comprenant une interface de communication sans contact (31) et des moyens (32) pour convertir une commande reçue sous forme série en un ou plusieurs mots binaires (BWini). 8. Circuit intégré selon l'une des revendications 5 à 7, agencé pour envoyer un message d'erreur lorsque la signature accompagnant une commande n'est pas conforme au code d'authentification calculé par les moyens de cryptographie. 9. Objet portatif électronique, comprenant un circuit intégré selon l'une des revendications 5 à 8. 10. Carte à puce, comprenant un circuit intégré selon l'une des revendications 5 à 8. a -, i iRI