Brevet FR2879320A1 — publié le 20060616

Des exemples de formes de réalisation de l'invention portent généralement sur une carte à puce à circuit intégré (Cl), par exemple une carte à mémoire. En particulier, des exemples de formes de réalisation de l'invention concernent une carte à puce à CI capable de déterminer si des données de cette carte ont été attaquées par une source extérieure. En général, les cartes à puce à circuit intégré (CI) sont capables de traiter diverses transactions. Une carte à puce à CI peut comprendre un microprocesseur, des systèmes d'exploitation de la carte, des modules de sécurité et des mémoires. Des cartes à puce à CI peuvent avoir un avantage de sécurité par rapport à des cartes à bandes magnétiques classiques. Par exemple, les données ne peuvent pas être aisément effacées dans une carte à puce à CI. Par conséquent, ces cartes peuvent être considérées comme étant la génération suivante de dispositifs de support d'information. Cependant, étant donné que les cartes à puce à CI sont de plus en plus utilisées dans des transactions financières, des communications, la distribution et d'autres industries, les problèmes desécurité associés aux cartes à puce à CI se sont accentués. Une carte à puce à CI était classiquement protégée contre des attaques extérieures, par exemple un piratage, par l'utilisation de détecteurs capables de détecter des fluctuations de courant, de température, de fréquence et de lumière ainsi qu'une décapsulation de la puce à CI. Si une fluctuation apparaît, des circuits internes incluant les microprocesseurs peuvent être remis à l'état initial lorsqu'au moins l'un des détecteurs délivre en sortie un signal de détection. Cependant, des données peuvent être perdues ou endommagées par une attaque extérieure ou par une opération anormale effectuée par un circuit. De plus, les détecteurs peuvent ne pas détecter aisément des invasions logiques, car les détecteurs peuvent ne pas être répartis dans toute la carte à puce à CI, mais les détecteurs peuvent plutôt être placés dans des régions limitées. De plus, il peut être difficile de détecter des attaques extérieures provenant de lumière, de température et/ou de fréquence ne pouvant pas être détectées. Dans un exemple de forme de réalisation de l'invention, une carte à puce à circuit intégré (CI) comprend un dispositif à mémoire conçu pour stocker des données comprenant une valeur d'identification d'intégrité stockée, une unité de génération de valeur d'indentification d'intégrité conçue pour calculer une valeur d'identification d'intégrité des données, et un micro-processeur conçu pour comparer la valeur d'identification d'intégrité stockée à la valeur d'identification d'intégrité calculée afin de déterminer si les données du dispositif à mémoire ont été compromises. Dans un autre exemple de forme de réalisation de l'invention, un procédé pour détecter si des données d'un dispositif à mémoire dans une carte à puce à circuit intégré (CI) ont été compromises comprend la réception d'une valeur d'identification d'intégrité stockée délivrée en sortie du dispositif à mémoire, le calcul d'une valeur d'identification d'intégrité pour les données du dispositif à mémoire, et la comparaison de la valeur d'identification d'intégrité calculée à la valeur d'identification d'intégrité stockée pour déterminer si les données du dispositif à mémoire ont été compromises. L'invention sera décrite plus en détail en regard des dessins annexés à titre d'exemples nullement limitatifs et sur lesquels: la figure 1 est un schéma fonctionnel simplifié d'une 30 carte à puce à CI selon un exemple de forme de réalisation de l'invention; la figure 2 est un schéma montrant des détails de l'unité 70 de génération de valeur d'identification d'intégrité de la figure 1; la figure 3 illustre un résultat de calcul de contrôle de redondance cyclique (CRC) lorsque des données n'ont pas été modifiées; et la figure 4 illustre un résultat de calcul CRC lorsque des données ont été modifiées par une attaque extérieure. On décrira ci-après des exemples de formes de réalisation de l'invention en référence aux dessins d'accompagnement. L'invention n'est cependant pas limitée à ces exemples de formes de réalisation de l'invention décrits. De plus, les mêmes références numériques font référence à des éléments similaires ou identiques dans toute la description et sur tous les dessins. La figure 1 est un schéma fonctionnel simplifié d'une carte à puce à CI (par exemple, une carte à mémoire) selon un exemple de forme de réalisation de l'invention. Une carte à puce à CI 100 peut comprendre une unité 10 d'interface d'émission/réception, une mémoire morte (ROM) 20, une mémoire vive (RAM) 30, un processeur 40, par exemple une unité centrale de traitement (CPU), une unité 50 de calcul de cryptage, une unité 60 de sécurité et/ou une unité 70 de génération de valeur d'identification d'intégrité. L'unité 10 d'interface d'émission/réception peut transférer des données, des adresses et/ou des ordres entre la carte à puce 100 à CI et un dispositif extérieur (non représenté). La mémoire morte ROM 20 peut être utilisée en tant que mémoire de programme, et peut mettre en place un système d'exploitation d'ordre et un ordre de base. La mémoire vive RAM 30 peut gérer des données temporaires et stocker des résultats de calcul provisoires dans un registre de travail. Bien que cela ne soit pas montré sur la figure 1, la carte à puce 100 à CI peut comporter en outre une mémoire non volatile (MNV), telle qu'une mémoire morte électriquement effaçable et programmable (EEPROM). La mémoire MNV peut être utilisée pour stocker diverses données et divers programmes facultatifs. La mémoire MNV peut lire, écrire et/ou effacer des données suivant une opération effectuée par la carte à puce 100 à CI. Le processeur 40 peut commander des trajets internes afin de commander ainsi les données vers les mémoires ROM, RAM et/ou MNV et en provenance de celles-ci. L'unité 50 de calcul de cryptage peut crypter des données pour empêcher qu'elles soient présentées à un accès non autorisé. L'unité de sécurité 60 peut comprendre un ou plusieurs détecteurs. Le ou les détecteurs peuvent détecter des variations de lumière et/ou de fréquence dans la carte à puce à CI. Selon un exemple de forme de réalisation de l'invention, pour déterminer l'intégrité des données de programmation, on peut utiliser une unité de calcul 75 pour déterminer si des données ont été spoliées en comparant une valeur d'identification d'intégrité à une valeur d'identification d'intégrité précédemment calculée et stockée. La figure 2 illustre des détails de l'unité 70 de génération de valeur d'identification d'intégrité de la 20 figure 1. L'unité 70 de génération de valeur d'identification d'intégrité peut comprendre un dispositif de commande 71, un registre de stockage 73 et/ou un bloc de calcul 75. Le dispositif de commande 71 peut détecteur le processeur 40, une mémoire (par exemple ROM, RAM et/ou MNV) et l'état de fonctionnement de la mémoire (par exemple écriture, lecture et/ou effacement). En conséquence, sur la base de l'information détectée, le dispositif de commande 71 peut commander l'unité de calcul 75. Le bloc de calcul 75 peut recevoir des données depuis un bus 80 et calculer les données. Le bloc de calcul 75 peut recevoir des données du bus 80 et obtenir la valeur d'identification d'intégrité indépendante du processeur 40. Par conséquent, on n'a pas besoin d'un temps de calcul supplémentaire. La valeur d'identification d'intégrité obtenue à partir du calcul des données peut être stockée dans le registre de stockage 73. Un calcul pour générer une valeur d'identification d'intégrité peut être effectué en divisant chacune des mémoires en l'état de fonctionnement de la mémoire. Par conséquent, un exemple de forme de réalisation de l'invention peut détecter si des données ont été compromises en sélectionnant uniquement les données devant être protégées. De plus, si le processeur 40 est en cours d'écriture dans la mémoire et qu'une information telle qu'une tension élevée est appliquée au dispositif de commande 71, celui-ci peut arrêter automatiquement un calcul car, avant l'écriture réelle dans la mémoire, une tension élevée fictive peut être appliquée à la mémoire et, par conséquent, un calcul n'est pas nécessaire. Lorsque la tension élevée est invalidée, le calcul reprend. Selon un exemple de forme de réalisation de l'invention, une valeur d'identification d'intégrité stockée dans une mémoire (par exemple ROM, RAM et/ou MNV) est calculée avant le moment où un ordre est appliqué à une carte à puce à CI pour la première fois ou avant que la carte à puce à CI soit fournie à un utilisateur, puis les valeurs des données, en même temps que la valeur d'identification d'intégrité, peuvent être stockées dans la mémoire. La valeur d'identification d'intégrité (VII) peut être obtenue en utilisant l'unité 70 de génération de valeur d'identification d'intégrité et un programme séparé. Le processeur 40 peut recevoir une valeur d'identification d'intégrité provenant du registre de stockage 73 et peut comparer la VII à la valeur d'identification d'intégrité qui a été précédemment calculée et stockée dans la mémoire. Le processeur 40 peut détecter si des données ont été compromises ou non. Dans un exemple de forme de réalisation, si les deux valeurs sont égales, les données n'ont pas été compromises. Si les valeurs comparées ne sont pas égales, les données ont été compromises par une attaque extérieure. Il est donc possible de protéger des données internes contre une détérioration par l'exécution d'opérations subséquentes, telles qu'une opération de pause ou d'arrêt. Les figures 3 et 4 sont des exemples illustrant un algorithme de contrôle de redondance cyclique (CRC), un type de calcul d'identification d'intégrité, qui peut être utilisé dans un exemple de forme de réalisation de l'invention. Le principe d'un algorithme CRC est le suivant. En supposant qu'il y a une donnée de n bits, la donnée de n bits est divisée par un nombre choisi de k bits. En conséquence, un nombre de r bits est le reste. A l'émission, l'algorithme CRC émet les données de n + r bits en divisant les données émises en k bits et en additionnant le reste de r bits. A la réception, la donnée de n + r bits reçue est divisée par une valeur clé, et on détermine si la valeur du reste est O. Si le reste est égal à 0, la donnée a été reçue de façon précise. Si le reste n'est pas égal à 0, la donnée a été compromise pendant la transmission. Dans un exemple de forme de réalisation de l'invention, si le bus 80 traite des données en unités de multiplets ou octets, un calculateur CRC peut être prévu pour chaque octet. Une opération "ou exclusif" (XOR) et un registre à décalage peuvent réaliser le calcul CRC, lequel peut être capable de traiter une entrée de 8 bits en parallèle. En référence à la figure 3, plusieurs signaux de commande CRCCON.0-3 peuvent être appliqués à l'unité de calcul 75. Chacun des signaux de commande peut être dans un mode à octet, un mode à demi-mot et/ou un mode à mot. Dans le mode à octet, un calculateur peut être validé ; dans le mode à demi- mot, deux calculateurs peuvent être validés; et dans le mode à mot, quatre calculateurs peuvent être validés. Si, pendant la transmission de données, un bruit est généré, par exemple dans le bus 80, du fait, le cas échéant, d'une attaque extérieure (par exemple un piratage), le calcul CRC est effectué. Pendant le transfert des données, s'il n'y a aucun dommage des données occasionné par une attaque extérieure, comme montré sur la figure 3, toutes les valeurs obtenues par le calcul CRC 100 peuvent être "0". Cependant, comme montré sur la figure 4, si une donnée est modifiée sous l'effet d'une attaque extérieure (95), par exemple si une valeur d'un bit passe de 0*5C à 0*1C, au moins l'une des valeurs de calcul CRC 90 n'est pas "0". En d'autres- termes, il est possible de déterminer si des données ont été compromises par une attaque extérieure pendant la transmission des données en confirmant le résultat par l'exécution du calcul CRC sur les données d'émission/réception. La valeur d'identification d'intégrité calculée est calculée ci- dessus par un algorithme de contrôle de redondance cyclique (CRC). Elle peut également être calculée par un algorithme de contrôle de parité. Bien que l'invention ait été décrite en référence à des exemples de formes de réalisation illustrées sur les dessins d'accompagnement, il va de soi qu'elle n'est pas limitée aux formes de réalisation décrites et représentées et que de nombreuses modifications peuvent y être apportées sans sortir de son cadre. REVENDICATIONS 1. Carte à puce à circuit intégré, caractérisée en ce qu'elle comporte: un dispositif à mémoire conçu pour stocker des données comprenant une valeur d'identification d'intégrité stockée; une unité (70) de génération de valeur d'identification d'intégrité conçue pour calculer une valeur d'identification d'intégrité des données; et un processeur (40) conçu pour comparer la valeur d'identification d'intégrité stockée à la valeur d'identification d'intégrité calculée afin de déterminer si les données du dispositif à mémoire ont été compromises. 2. Carte à puce à CI selon la revendication 1, caractérisée en ce que l'unité de génération de valeur d'identification d'intégrité comporte: une unité de calcul (75) conçue pour effectuer le calcul d'identification d'intégrité sur les données; et un dispositif de commande (71) conçu pour déterminer si l'unité de calcul est en cours d'exécution d'une opération sur le dispositif à mémoire en recevant une information de condition d'opération provenant du processeur. 3. Carte à puce à CI selon la revendication 2, caractérisée en ce que la valeur d'identification d'intégrité calculée est calculée par un algorithme de contrôle de redondance cyclique (CRC) ou un algorithme de contrôle de parité. 4. Carte à puce à CI selon la revendication 3, caractérisée en ce que l'algorithme CRC est exécuté par au moins une opération ou-exclusif (XOR) et un registre à décalage. 5. Carte à puce à CI selon la revendication 1, caractérisée en ce que le processeur est une unité central de traitement (CPU), et la CPU passe dans un mode de pose ou d'arrêt lorsque les données du dispositif à mémoire ont été compromises. 6. Carte à puce à CI selon la revendication 1, caractérisée en ce que le dispositif à mémoire comprend au moins l'une d'une mémoire morte (ROM) (20), d'une mémoire vive (RAM) (30) et d'une mémoire non volatile (MNV). 7. Carte à puce à CI selon la revendication 6, caractérisée en ce que la mémoire MNV comprend une mémoire morte électriquement effaçable et programmable (EEPROM). 8. Carte à puce à CI selon la revendication 2, caractérisée en ce que l'unité de calcul comprend plusieurs calculateurs conçus pour effectuer des calculs en séparant des données en une unité d'octets. 9. Carte à puce à CI selon la revendication 1, caractérisée en ce l'unité de génération de valeur d'identification d'intégrité comprend un registre (73) conçu pour stocker la valeur d'identification d'intégrité calculée. 10. Carte à puce à CI selon la revendication 1, caractérisée en ce qu'elle comporte en outre: une unité (10) d'interface d'émission/réception conçue 20 pour établir une interface avec un dispositif extérieur; une unité (50) de calcul de cryptage conçue pour crypter les données de la mémoire; une unité (60) de sécurité conçue pour détecter des attaques physiques extérieures sur la carte à puce à CI; 25 et un bus (80) conçu pour transférer des données entre l'unité de calcul de cryptage et l'unité de sécurité, comprenant le dispositif à mémoire. 11. Procédé pour détecter si des données d'un dispositif à mémoire dans une carte à puce à CI (100) ont été compromises, caractérisé en ce qu'il comprend: la réception d'une valeur d'identification d'intégrité stockée délivrée en sortie du dispositif à mémoire; le calcul d'une valeur d'identification d'intégrité pour les données du dispositif à mémoire; et la comparaison de la valeur d'identification d'intégrité calculée à la valeur d'identification d'intégrité stockée pour déterminer si les données du dispositif à mémoire ont été compromises. 12. Procédé selon la revendication 11, caractérisé en ce que la valeur d'identification d'intégrité calculée est calculée par un algorithme de contrôle de redondance cyclique (CRC) ou un algorithme de contrôle de parité. 13. Procédé selon la revendication 11, caractérisé en ce que la valeur d'identification d'intégrité est calculée lorsqu'un bruit est détecté. 14. Procédé selon la revendication 11, caractérisé en ce qu'il comprend en outre l'exécution d'un mode de pause ou d'arrêt lorsque les données du dispositif à mémoire ont été compromises. 15. Procédé selon la revendication 12, caractérisé en ce que l'algorithme CRC est effectué par au moins une opération ou-exclusif (XOR) et un registre à décalage.