EP2212824A2 - Verification of data read in memory - Google Patents

Verification of data read in memory

Info

Publication number
EP2212824A2
EP2212824A2 EP08857341A EP08857341A EP2212824A2 EP 2212824 A2 EP2212824 A2 EP 2212824A2 EP 08857341 A EP08857341 A EP 08857341A EP 08857341 A EP08857341 A EP 08857341A EP 2212824 A2 EP2212824 A2 EP 2212824A2
Authority
EP
European Patent Office
Prior art keywords
data
processing unit
circuit
address
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP08857341A
Other languages
German (de)
French (fr)
Inventor
Fabrice Romain
Jean-Louis Modave
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Proton World International NV
STMicroelectronics SA
Original Assignee
Proton World International NV
STMicroelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Proton World International NV, STMicroelectronics SA filed Critical Proton World International NV
Publication of EP2212824A2 publication Critical patent/EP2212824A2/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack

Definitions

  • the present invention generally relates to electronic circuits and, more particularly, circuits containing a digital data processing unit capable of processing data contained in one or more memories internal or external to the circuit.
  • the present invention applies more particularly to the verification of the integrity (of the absence of modification) of information transferred between a memory and a processing unit.
  • fault injections can, for example, modify the progress of a program, modify data accessed by this program, etc. and may lead to, for example, accepting false authentication, introducing a parasitic program (virus), hacking a key or cryptographic algorithm, etc.
  • An accidental modification of the program flow may come from a noisy environment (for example, a microcontroller in an industrial environment or in a vehicle) and result in undesirable malfunctions.
  • the present invention aims to overcome all or part of the disadvantages of known data integrity control solutions read in a circuit external to a processing unit, whether or not integrated with this unit.
  • An object is more particularly a solution applicable to a memory integrated in the same circuit as the processing unit. Another object is more particularly an effective solution against fault injection attacks.
  • Another object is not to degrade the performance of the circuit because of the verification performed.
  • Another object is a transparent solution for the program running on the processing unit.
  • a method of verifying data transferred between a circuit and a processing unit wherein: the data from the circuit passes through a first temporary storage element having a size multiple of the size of data that can then be presented on a bus of the processing unit; an address provided by the processing unit for the circuit is stored temporarily in a second element; and the content of the first element is compared with current data from the circuit, at least when it corresponds to an address of data already present in this first element.
  • all the data presented on the bus of the processing unit and contained in the first element are compared with the current data extracted from the peripheral element from the stored address. in the second element.
  • a current address when presented by the processing unit, it is compared with the address contained in the second element and, in case of identity between the two addresses, the data contained in the first element is supplied to the bus of the processing unit.
  • the current address is stored in the second element and the content of the first element is replaced by the data provided by the circuit according to the current address, in parallel with the provision of a part of this data to the processing unit.
  • a method for detecting a fault injection in an electronic circuit in which data transferred between a memory and a processing unit of the circuit are verified by the implementation of the verification method, an absence of identity between the contents of the first element and the current data triggering an exception processing.
  • an electronic circuit including at least one processing unit, and having an interface circuit between address and data buses of the processing unit and address and data buses for at least one data processing unit.
  • a peripheral circuit to this unit said interface circuit comprising: at least a first temporary storage element having a size multiple to that of data transiting on the data bus of the processing unit; a second storage element temporarily storing an address provided by the processing unit to the peripheral circuit; and means for carrying out the verification process of data transferred between the peripheral circuit and the processing unit.
  • the peripheral circuit is a memory.
  • FIG. 1 shows a chip card of the type to which the present invention applies by way of example
  • FIG. 2 is a block diagram of an exemplary electronic circuit architecture of the type to which the present invention applies by way of example
  • Fig. 3 is a functional block diagram of an embodiment of an interface between a processing unit and a memory
  • FIG. 4 is a flowchart illustrating an embodiment of a method for verifying the integrity of the read data.
  • FIG. 1 very schematically shows a smart card 1 of the type to which the present invention applies by way of example.
  • a smart card 1 of the type to which the present invention applies by way of example.
  • Such a card is for example constituted by a support 2 made of plastic in which is reported a chip 10 of electronic circuit capable of communicating with the outside by means of contacts 3 or at least elements (not shown) d transmission / reception without contact.
  • the circuit 10 of the card contains a processing unit capable of executing programs stored in memories generally contained in the circuit 10 or in other circuits carried by the card.
  • FIG. 2 is a block diagram of an embodiment of an electronic circuit 10. This circuit comprises a central processing unit 11 (CPU) capable of executing programs contained in one or more memories.
  • CPU central processing unit
  • the circuit 10 includes a non-volatile non-programmable memory 12 (ROM), a non-volatile reprogrammable memory 13 (EEPROM) and a random access memory 14 (RAM).
  • ROM non-volatile non-programmable memory 12
  • EEPROM non-volatile reprogrammable memory 13
  • RAM random access memory 14
  • One or more data, address and control buses 15 serve as a communication medium between the various components of the circuit 10 and with an input / output interface 16 (I / O) for communication with or without contact with the device. outside.
  • the circuit 10 has other functions (block 17, FCT) depending on the application. This is, for example, dedicated cryptographic computing cells for implementing encryption and decryption algorithms.
  • the circuit 10 further comprises a circuit 20 (CHECK) interface between the central unit and the memories to check the absence of modification of the data between several readings in the memory.
  • the circuit 20 is interposed between the bus 15 and the unit 11 so that it verifies the data read in all the memories. As a variant, this
  • FIG. 3 is a functional block diagram of an embodiment of an interface 20 for controlling the data transferred between a memory 21 (MEM) and the processing unit 11 (CPU).
  • the memory 21 is for example one of the memories 12, 13 or 14 of the circuit 10 of Figure 2. More generally, the memory 21 may be constituted by any data storage circuit, integrated or not with the processing unit (for example, a buffer of a peripheral circuit integrated in the processing unit, a mass memory external to the circuit integrating the processing unit, etc.).
  • the circuit 20 includes a storage element 22
  • the circuit 20 also includes an element 23 (DATA BUFF) for temporary storage of the data extracted from the data bus. 21. This element 23 samples, for example under the control of a block 231 of switches, the data presented at the output 212 of the data bus 152 of the memory 21.
  • the same function of loading on control of the addresses and data in the respective elements 22 and 23 can be obtained by masking or not the clock fronts which control the copying of the bits in flip-flops forming the elements 22 and 23.
  • the el 23 has a size corresponding to the size of the data in the memory and to twice the size of the data used by the processing unit 11.
  • the memory reading granula ⁇ te 21 (the size of its words) is twice as large as the size of the data bus 27 of the processing unit 11.
  • the element 23 is a 16-bit register for an 8-bit processing unit or a 32-bit register for a 16-bit unit, and so on.
  • the data bus 152 between the memory 21 and the circuit 20 is double compared to the data bus 27 between the processing unit 11 and the circuit 20.
  • a first selector 232 receives the bus 152 and selects one half of the data. data.
  • a second selector 233 receives the output of the selector 232 and the output of a third selector 234 separating the content of the element 23 in two.
  • the selector 233 provides a data word (half memory word) on the bus 27.
  • the elements 22 and 23 are physically located as close as possible to the ports 111 and 112 of the unit 21 to the buses 26 and 27.
  • the circuit 20 further comprises two comparators 24 and 25 (COMP), respectively the address provided by the processing unit with respect to the address contained in the element 22, and the data present on the bus 152 by to that contained in Element 23.
  • COMP comparators 24 and 25
  • a state machine 28 controls the selectors 222, 232, 233 and 234 according to the result provided by the comparator 24, as well as the blocks 221, 231, thus the writing in the registers 22 and 23.
  • Comparator 25 provides a result to, for example, unit 11 or another element of the system to enable it to take any appropriate action when a change in data is detected.
  • the verification of the data by the comparator 25 is performed following a reading in the element 23 by comparing all of the content of the element 23 to that present on the bus 152. It takes advantage of the fact that in most cases, the words read in a single cycle in the memories are larger than the words that can be introduced per cycle in the processing unit. This makes it possible, in particular, to perform the verification of the data in the background in the memory interface 20.
  • FIG. 4 illustrates an embodiment of the verification process in the form of a flowchart. This flowchart corresponds to the processing performed by the circuit 20 of FIG.
  • the registers 22 and 23 are initialized (block 31, INIT), for example, during an activation of the circuit 20, or during a reset of the processing unit 11.
  • the initialization consists in emptying (address 0) the address register 22 or to store there an arbitrary address, and to place, in the data register 23, the data contained in the memory at the address carried by the register 22. Thereafter, whenever the the processing unit calls (block 32, CADD) a datum in the memory 21 by supplying an address on its bus 111, the verification process is carried out hereinafter.
  • This comparison makes it possible to verify that the data which was supplied to the processing unit 11 and which was present in the register 23 during a preceding reading cycle was not modified compared to the current cycle. It is therefore an integrity check of the data extracted from the memory 21 and a check of absence of disturbance by injection of fault. In case of inconsistency between the two data (output N of block 35), this triggers an exception processing FAIL.
  • Such a treatment consists, for example, in a blocking of the electronic circuit 10 or in any other countermeasures adapted to fault injection.
  • a temporary storage element 23 is used, the size of which corresponds to twice the size of the data bus of the processing unit concerned. Any other factor representing an integer multiple of the bus size may be provided.
  • One advantage is that the operation of the interface is transparent for the program executed by the unit 11 and does not take time on its execution.
  • Another advantage is that the described mechanism is particularly effective against fault injection attacks.
  • Another advantage is that the hardware cost of the implementation is only a few additional logical elements in the memory interface.
  • the addresses provided by the unit 11 will undergo various conversions (for example, virtual address into a physical address) without this modifies the operation, provided that the two compared addresses (compa ⁇ tor block 24 or 33) both are taken before or after conversion.
  • the data may undergo various treatments between the memory 21 and the unit 11 (e.g., decryption) provided that the two compared data ( ⁇ compa rator 25 or block 35) are mutually consistent.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

The invention relates to a method and a circuit for verifying data transferred between a circuit (21) and a processing unit (11), in which: the data originating from the circuit travels through a first temporary storage element (23) having a size representing an integer multiple of the size of data liable to be presented subsequently on a bus (27) of the processing unit; an address provided by the processing unit (11) destined for the circuit is stored temporarily in a second element (22); and the content of the first element is compared with a current data item (CDATA) originating from the circuit, at least when said data item corresponds to an address of a data item already present in this first element.

Description

VERIFICATION DE DONNEES LUES EN MEMOIRE CHECKING DATA IN MEMORY
Domaine de l'inventionField of the invention
La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits contenant une unité de traitement de données numériques suscep- tible de traiter des données contenues dans une ou plusieurs mémoires internes ou externes au circuit.The present invention generally relates to electronic circuits and, more particularly, circuits containing a digital data processing unit capable of processing data contained in one or more memories internal or external to the circuit.
La présente invention s'applique plus particulièrement à la vérification de l'intégrité (de l'absence de modification) d'informations transférées entre une mémoire et une unité de traitement.The present invention applies more particularly to the verification of the integrity (of the absence of modification) of information transferred between a memory and a processing unit.
Exposé de l'art antérieurPresentation of the prior art
Dans de nombreuses applications, il est souhaitable de s'assurer que des données transférées entre une mémoire et une unité de traitement ne soient pas modifiées soit lors de leur transfert sur les bus de communication, soit lors de leur stockage temporaire entre leur mémoire source et l'unité de traitement. De telles modifications peuvent être accidentelles ou volontaires. Une modification volontaire provient, par exemple, d'une attaque dite par injection de faute qui consiste à introduire une perturbation dans le fonctionnement du circuit électroniqueIn many applications, it is desirable to ensure that data transferred between a memory and a processing unit are not modified either during their transfer on the communication buses, or during their temporary storage between their source memory and the processing unit. Such modifications can be accidental or voluntary. A voluntary modification comes, for example, from a so-called fault injection attack which consists in introducing a disturbance in the operation of the electronic circuit
(par exemple en intervenant sur son alimentation) de façon à modifier les états des données sur les bus de transfert ou dans les mémoires. De telles injections de faute peuvent, par exemple, modifier le déroulement d'un programme, modifier des données accédées par ce programme, etc. et peuvent conduire à, par exemple, accepter une authentification erronée, introduire un programme parasite (virus) , pirater une clé ou un algorithme de cryptographie, etc.(for example by intervening on its power supply) so as to modify the states of the data on the transfer buses or in memories. Such fault injections can, for example, modify the progress of a program, modify data accessed by this program, etc. and may lead to, for example, accepting false authentication, introducing a parasitic program (virus), hacking a key or cryptographic algorithm, etc.
Pour contrer de telles attaques, on connaît des solutions matérielles consistant à détecter physiquement la pertur¬ bation d'origine (lumineuse, thermique, en courant d'alimen- tation, etc.), ou à procéder à des calculs redondants. Ces solutions matérielles sont coûteuses en surface du circuit intégré.To counter such attacks are known hardware solutions of physically detect the mea ¬ proval of origin (light, heat, in POWER SUPPLY current, etc.) or make redundant calculations. These hardware solutions are expensive at the surface of the integrated circuit.
On connaît également des solutions logicielles qui consistent, par exemple, à vérifier que le programme est bien passé par certaines étapes, à lire plusieurs fois successivement des données et les comparer les unes aux autres. Toutes ces solutions ont un coût en performance et notamment en vitesse d'exécution du programme.There are also known software solutions which consist, for example, in verifying that the program has gone through certain steps, in repeatedly reading data successively and comparing them to each other. All these solutions have a cost in performance and in particular in speed of execution of the program.
Une modification accidentelle du déroulement d'un programme peut provenir d'un environnement bruité (par exemple, un microcontrôleur dans un milieu industriel ou dans un véhicule) et se traduire par des dysfonctionnements non souhaitables. Résumé de l' inventionAn accidental modification of the program flow may come from a noisy environment (for example, a microcontroller in an industrial environment or in a vehicle) and result in undesirable malfunctions. Summary of the invention
La présente invention vise à pallier tout ou partie des inconvénients des solutions connues de contrôle d'intégrité de données lues dans un circuit externe à une unité de traitement, qu'il soit ou non intégré avec cette unité.The present invention aims to overcome all or part of the disadvantages of known data integrity control solutions read in a circuit external to a processing unit, whether or not integrated with this unit.
Un objet vise plus particulièrement une solution applicable à une mémoire intégrée dans le même circuit que l'unité de traitement. Un autre objet vise plus particulièrement une solution efficace contre des attaques par injection de faute.An object is more particularly a solution applicable to a memory integrated in the same circuit as the processing unit. Another object is more particularly an effective solution against fault injection attacks.
Un autre objet est de ne pas dégrader les performances du circuit en raison de la vérification effectuée.Another object is not to degrade the performance of the circuit because of the verification performed.
Un autre objet est une solution transparente pour le programme s 'exécutant sur l'unité de traitement. Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procède de vérification de données transférées entre un circuit et une unité de traitement, dans lequel : les données provenant du circuit transitent par un premier élément de mémorisation temporaire ayant une taille multiple de la taille de données susceptibles d'être présentées ensuite sur un bus de l'unité de traitement ; une adresse fournie par l'unité de traitement a desti- nation du circuit est stockée temporairement dans un deuxième élément ; et le contenu du premier élément est comparé avec une donnée courante provenant du circuit, au moins lorsqu'elle correspond à une adresse d'une donnée déjà présente dans ce premier élé- ment .Another object is a transparent solution for the program running on the processing unit. To achieve all or part of these and other objects, there is provided a method of verifying data transferred between a circuit and a processing unit, wherein: the data from the circuit passes through a first temporary storage element having a size multiple of the size of data that can then be presented on a bus of the processing unit; an address provided by the processing unit for the circuit is stored temporarily in a second element; and the content of the first element is compared with current data from the circuit, at least when it corresponds to an address of data already present in this first element.
Selon un mode de mise en oeuvre de la présente invention, toutes les données présentées sur le bus de l'unité de traitement et contenues dans le premier élément sont comparées à la donnée courante extraite de l ' élément périphérique à partir de l'adresse stockée dans le deuxième élément.According to an embodiment of the present invention, all the data presented on the bus of the processing unit and contained in the first element are compared with the current data extracted from the peripheral element from the stored address. in the second element.
Selon un mode de mise en oeuvre de la présente inven¬ tion, lorsqu'une adresse courante est présentée par l'unité de traitement, elle est comparée avec l'adresse contenue dans le deuxième élément et, en cas d'identité entre les deux adresses, la donnée contenue dans le premier élément est fournie au bus de l'unité de traitement.According to an embodiment of the present inven ¬, when a current address is presented by the processing unit, it is compared with the address contained in the second element and, in case of identity between the two addresses, the data contained in the first element is supplied to the bus of the processing unit.
Selon un mode de mise en oeuvre de la présente invention, en cas d'absence d'identité entre l'adresse fournie par l'unité de traitement et celle contenue dans le deuxième élément, l'adresse courante est stockée dans le deuxième élément et le contenu du premier élément est remplacé par la donnée fournie par le circuit d'après l'adresse courante, en parallèle à la fourniture d'une partie de cette donnée à l'unité de traitement. II est également prévu un procédé de détection d'une injection de faute dans un circuit électronique, dans lequel des données transférées entre une mémoire et une unité de traitement du circuit sont vérifiées par la mise en oeuvre du procédé de vérification, une absence d'identité entre le contenu du premier élément et la donnée courante déclenchant un traitement d'exception.According to an embodiment of the present invention, if there is no identity between the address provided by the processing unit and that contained in the second element, the current address is stored in the second element and the content of the first element is replaced by the data provided by the circuit according to the current address, in parallel with the provision of a part of this data to the processing unit. There is also provided a method for detecting a fault injection in an electronic circuit, in which data transferred between a memory and a processing unit of the circuit are verified by the implementation of the verification method, an absence of identity between the contents of the first element and the current data triggering an exception processing.
Il est également prévu un circuit électronique incluant au moins une unité de traitement, et comportant un circuit d'interface entre des bus d'adresses et de données de l'unité de traitement et des bus d'adresses et de données destinés a au moins un circuit périphérique a cette unité, ledit circuit d'interface comportant : au moins un premier élément de mémorisation temporaire ayant une taille multiple à celle de données transitant sur le bus de données de l'unité de traitement ; un deuxième élément de mémorisation temporaire de stockage d'une adresse fournie par l'unité de traitement à destination du circuit périphérique ; et des moyens pour la mise en oeuvre du procède de vérification de données transférées entre le circuit périphérique et l'unité de traitement.There is also provided an electronic circuit including at least one processing unit, and having an interface circuit between address and data buses of the processing unit and address and data buses for at least one data processing unit. a peripheral circuit to this unit, said interface circuit comprising: at least a first temporary storage element having a size multiple to that of data transiting on the data bus of the processing unit; a second storage element temporarily storing an address provided by the processing unit to the peripheral circuit; and means for carrying out the verification process of data transferred between the peripheral circuit and the processing unit.
Selon un mode de réalisation de la présente invention, le circuit périphérique est une mémoire. Brève description des dessinsAccording to one embodiment of the present invention, the peripheral circuit is a memory. Brief description of the drawings
Ces objets, caractéristiques et avantages, ainsi que d' autres seront exposes en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente une carte à puce du type auquel s'applique à titre d'exemple la présente invention ; la figure 2 est un schéma-bloc d'un exemple d'architecture de circuit électronique du type auquel s'applique à titre d'exemple la présente invention ; la figure 3 est un schéma-bloc fonctionnel d'un mode de réalisation d'une interface entre une unité de traitement et une mémoire ; et la figure 4 est un organigramme illustrant un mode de mise en oeuvre d'un procédé de vérification d'intégrité des données lues .These and other objects, features, and advantages will be set forth in detail in the following non-limiting description of particular embodiments in connection with the accompanying figures in which: FIG. 1 shows a chip card of the type to which the present invention applies by way of example; FIG. 2 is a block diagram of an exemplary electronic circuit architecture of the type to which the present invention applies by way of example; Fig. 3 is a functional block diagram of an embodiment of an interface between a processing unit and a memory; and FIG. 4 is a flowchart illustrating an embodiment of a method for verifying the integrity of the read data.
De mêmes éléments ont été désignes par de mêmes références aux différentes figures. Description détaillée Par souci de clarté, seuls les étapes et éléments qui sont utiles à la compréhension de l'invention ont été représentés et seront décrits. En particulier, les fonctions principales des unités de traitement et des programmes traités par ces unités n'ont pas été exposées, l'invention étant compatible avec tout circuit électronique pourvu d'une unité de traitement. De même, la nature des données vérifiées n'a pas été détaillée, l'invention étant là encore compatible avec toute donnée, qu'il s'agisse d'instructions (codes opératoires, opérandes ou arguments) ou de variables. En outre l'invention sera plus particu- lièrement décrite en relation avec un exemple d'application à la protection de données contre d'éventuelles attaques par injec¬ tion de fautes dans un circuit intégrant l'unité de traitement et les mémoires dans lesquelles sont lues les données, mais elle s'applique plus généralement à tout dysfonctionnement accidentel. En particulier, pour un fonctionnement d'un microcontrôleur dans un environnement bruite, l'invention trouve également un intérêt si les mémoires sont externes au circuit intégrant l' unité de traitement.The same elements have been designated by the same references to the different figures. Detailed Description For the sake of clarity, only the steps and elements that are useful for understanding the invention have been shown and will be described. In particular, the main functions of the processing units and programs processed by these units have not been exposed, the invention being compatible with any electronic circuit provided with a processing unit. Similarly, the nature of the verified data has not been detailed, the invention being again compatible with any data, whether instructions (operating codes, operands or arguments) or variables. Furthermore the invention will be more particularly described with reference to an example of application to the protection of data against possible attacks by injec ¬ faults in a circuit integrating the processing unit and memories in which are read the data, but it applies more generally to any accidental malfunction. In particular, for an operation of a microcontroller in a noisy environment, the invention is also of interest if the memories are external to the circuit integrating the processing unit.
La figure 1 représente de façon très schématique, une carte à puce 1 du type a laquelle s'applique à titre d'exemple la présente invention. Une telle carte est par exemple constituée d'un support 2 en matière plastique dans ou sur lequel est rapportée une puce 10 de circuit électronique susceptible de communiquer avec l ' extérieur au moyen de contacts 3 ou au moins d'éléments (non représentés) d' émission/réception sans contact. Le circuit 10 de la carte contient une unité de traitement capable d'exécuter des programmes stockés dans des mémoires généralement contenues dans le circuit 10 ou dans d'autres circuits portés par la carte. La figure 2 est un schéma-bloc d'un mode de réalisation d'un circuit électronique 10. Ce circuit comporte une unité centrale de traitement 11 (CPU) capable d'exécuter des programmes contenus dans une ou plusieurs mémoires. Dans cet exemple, le circuit 10 comporte une mémoire non volatile non reprogrammable 12 (ROM), une mémoire non volatile reprogrammable 13 (EEPROM) et une mémoire vive 14 (RAM) . Un ou plusieurs bus 15 de données, d'adresses et de commandes servent de support de communication entre les différents constituants du circuit 10 et avec une interface 16 (I/O) d'entrée/sortie pour communication avec ou sans contact avec l'extérieur. Le plus souvent, le circuit 10 comporte d'autres fonctions (bloc 17, FCT) dépendant de l'application. Il s'agit, par exemple, de cellules de calcul cryptographique dédiées pour mettre en oeuvre des algorithmes de chiffrement et de déchiffrement. Dans le mode de réalisation représenté en figure 2, le circuit 10 comporte en outre un circuit 20 (CHECK) d'interface entre l'unité centrale et les mémoires pour vérifier l'absence de modification des données entre plusieurs lectures dans la mémoire. Dans l'exemple représenté, le circuit 20 est intercalé entre le bus 15 et l'unité 11 de sorte qu'il vérifie les données lues dans toutes les mémoires. En variante ce traitement peut ne concerner qu'une partie seulement des mémoires.FIG. 1 very schematically shows a smart card 1 of the type to which the present invention applies by way of example. Such a card is for example constituted by a support 2 made of plastic in which is reported a chip 10 of electronic circuit capable of communicating with the outside by means of contacts 3 or at least elements (not shown) d transmission / reception without contact. The circuit 10 of the card contains a processing unit capable of executing programs stored in memories generally contained in the circuit 10 or in other circuits carried by the card. FIG. 2 is a block diagram of an embodiment of an electronic circuit 10. This circuit comprises a central processing unit 11 (CPU) capable of executing programs contained in one or more memories. In this example, the circuit 10 includes a non-volatile non-programmable memory 12 (ROM), a non-volatile reprogrammable memory 13 (EEPROM) and a random access memory 14 (RAM). One or more data, address and control buses 15 serve as a communication medium between the various components of the circuit 10 and with an input / output interface 16 (I / O) for communication with or without contact with the device. outside. Most often, the circuit 10 has other functions (block 17, FCT) depending on the application. This is, for example, dedicated cryptographic computing cells for implementing encryption and decryption algorithms. In the embodiment shown in FIG. 2, the circuit 10 further comprises a circuit 20 (CHECK) interface between the central unit and the memories to check the absence of modification of the data between several readings in the memory. In the example shown, the circuit 20 is interposed between the bus 15 and the unit 11 so that it verifies the data read in all the memories. As a variant, this treatment may concern only a part of the memories.
La figure 3 est un schéma-bloc fonctionnel d'un mode de réalisation d'une interface 20 de contrôle des données trans- férées entre une mémoire 21 (MEM) et l'unité de traitement 11 (CPU) . La mémoire 21 est par exemple l'une des mémoires 12, 13 ou 14 du circuit 10 de la figure 2. Plus généralement, la mémoire 21 peut être constituée par n'importe quel circuit de mémorisation de données, intégré ou non avec l'unité de traitement (par exemple, une mémoire tampon d'un circuit périphérique intégré à l'unité de traitement, une mémoire de masse externe au circuit intégrant l'unité de traitement, etc.) .FIG. 3 is a functional block diagram of an embodiment of an interface 20 for controlling the data transferred between a memory 21 (MEM) and the processing unit 11 (CPU). The memory 21 is for example one of the memories 12, 13 or 14 of the circuit 10 of Figure 2. More generally, the memory 21 may be constituted by any data storage circuit, integrated or not with the processing unit (for example, a buffer of a peripheral circuit integrated in the processing unit, a mass memory external to the circuit integrating the processing unit, etc.).
Le circuit 20 comporte un élément de mémorisation 22The circuit 20 includes a storage element 22
(ADD BUFF) de stockage temporaire des adresses fournies par l'unité de traitement 11. L'élément 22 prélevé, par exemple, sous commande d'un bloc 221 de commutateurs, une adresse sur un bus d'adresses 26 de l'unité de traitement 11. Un sélecteur 222 est intercalé entre ce bus 26 et une entrée 211 de bus d'adresses 151 de la mémoire 21. Le circuit 20 comporte egale- ment un élément 23 (DATA BUFF) de stockage temporaire des données extraites de la mémoire 21. Cet élément 23 prélève, par exemple sous commande d'un bloc 231 de commutateurs, les données présentées en sortie 212 de bus de données 152 de la mémoire 21. En variante aux commutateurs 221 et 231, la même fonction de chargement sur commande des adresses et données dans les éléments respectifs 22 et 23 (par exemple des registres) peut être obtenue en masquant ou pas les fronts d'horloge qui commandent la copie des bits dans des bascules formant les éléments 22 et 23. Selon ce mode de réalisation, l'élément 23 a une taille correspondant à la taille des données dans la mémoire et au double de la taille des données exploitées par l'unité de traitement 11. En d'autres termes, la granulaπte de lecture de la mémoire 21 (la taille de ses mots) est deux fois plus grande que la taille du bus de données 27 de l'unité de traitement 11.(ADD BUFF) temporary storage of the addresses provided by the processing unit 11. The element 22 taken, for example, under the control of a block 221 of switches, an address on an address bus 26 of the unit 11. A selector 222 is interposed between this bus 26 and an address bus input 151 of the memory 21. The circuit 20 also includes an element 23 (DATA BUFF) for temporary storage of the data extracted from the data bus. 21. This element 23 samples, for example under the control of a block 231 of switches, the data presented at the output 212 of the data bus 152 of the memory 21. As an alternative to the switches 221 and 231, the same function of loading on control of the addresses and data in the respective elements 22 and 23 (for example registers) can be obtained by masking or not the clock fronts which control the copying of the bits in flip-flops forming the elements 22 and 23. According to this mode of realization, the el 23 has a size corresponding to the size of the data in the memory and to twice the size of the data used by the processing unit 11. In other words, the memory reading granulaπte 21 (the size of its words) is twice as large as the size of the data bus 27 of the processing unit 11.
Par exemple, l'élément 23 est un registre 16 bits pour une unité de traitement 8 bits ou un registre 32 bits pour une unité 16 bits, etc. En conséquence, le bus de données 152 entre la mémoire 21 et le circuit 20 est double par rapport au bus de données 27 entre l'unité de traitement 11 et le circuit 20. Un premier sélecteur 232 reçoit le bus 152 et sélectionne une moitié des données. Un deuxième sélecteur 233 reçoit la sortie du sélecteur 232 et la sortie d'un troisième sélecteur 234 séparant le contenu de l'élément 23 en deux. Le sélecteur 233 fournit un mot de données (un demi-mot mémoire) sur le bus 27. De préférence, les éléments 22 et 23 sont physiquement places le plus près possible des accès 111 et 112 de l 'unité 21 aux bus 26 et 27.For example, the element 23 is a 16-bit register for an 8-bit processing unit or a 32-bit register for a 16-bit unit, and so on. As a result, the data bus 152 between the memory 21 and the circuit 20 is double compared to the data bus 27 between the processing unit 11 and the circuit 20. A first selector 232 receives the bus 152 and selects one half of the data. data. A second selector 233 receives the output of the selector 232 and the output of a third selector 234 separating the content of the element 23 in two. The selector 233 provides a data word (half memory word) on the bus 27. Preferably, the elements 22 and 23 are physically located as close as possible to the ports 111 and 112 of the unit 21 to the buses 26 and 27.
Le circuit 20 comporte en outre deux comparateurs 24 et 25 (COMP), respectivement de l'adresse fournie par l 'unité de traitement par rapport a l'adresse contenue dans l'élément 22, et de la donnée présente sur le bus 152 par rapport a celle contenue dans l'élément 23.The circuit 20 further comprises two comparators 24 and 25 (COMP), respectively the address provided by the processing unit with respect to the address contained in the element 22, and the data present on the bus 152 by to that contained in Element 23.
Une machine d'états 28 (SM) commande les sélecteurs 222, 232, 233 et 234 en fonction du résultat fourni par le comparateur 24, de même que les blocs 221, 231, donc l'écriture dans les registres 22 et 23. Le comparateur 25 fournit un résultat a destination, par exemple, de l 'unité 11 ou d'un autre élément du système pour lui permettre de prendre toute action appropriée en cas de détection d'une modification des données.A state machine 28 (SM) controls the selectors 222, 232, 233 and 234 according to the result provided by the comparator 24, as well as the blocks 221, 231, thus the writing in the registers 22 and 23. Comparator 25 provides a result to, for example, unit 11 or another element of the system to enable it to take any appropriate action when a change in data is detected.
Fonctionnellement, la vérification des données par le comparateur 25 est effectuée suite a une lecture dans l'élément 23 en comparant d'un seul coup tout le contenu de l'élément 23 a celui présent sur le bus 152. On tire profit du fait que, dans la plupart des cas, les mots lus en un seul cycle dans les mémoires sont de taille supérieure aux mots susceptibles d'être introduits par cycle dans l 'unité de traitement. Cela permet notamment d'effectuer la vérification des données en arπere-plan dans l'interface mémoire 20.Functionally, the verification of the data by the comparator 25 is performed following a reading in the element 23 by comparing all of the content of the element 23 to that present on the bus 152. It takes advantage of the fact that in most cases, the words read in a single cycle in the memories are larger than the words that can be introduced per cycle in the processing unit. This makes it possible, in particular, to perform the verification of the data in the background in the memory interface 20.
On tire également profit du fait que, dans la plupart des cas, le chargement des données (programmes, constantes, variables, etc.) entre une mémoire et une unité de traitement s'effectue sur des adresses consécutives. Par conséquent, la deuxième partie de la donnée vérifiée en arπere-plan contient dans la plupart des cas, en deuxième partie, celle que demande effectivement l' unité de traitement au cycle suivant.It also takes advantage of the fact that, in most cases, the loading of the data (programs, constants, variables, etc.) between a memory and a processing unit takes place on consecutive addresses. Consequently, the second part of the data checked in the plan contains in most cases, in the second part, that which the treatment unit actually requests at the next cycle.
La figure 4 illustre un mode de mise en oeuvre du procède de vérification sous la forme d'un organigramme. Cet organigramme correspond au traitement effectué par le circuit 20 de la figure 3.Figure 4 illustrates an embodiment of the verification process in the form of a flowchart. This flowchart corresponds to the processing performed by the circuit 20 of FIG.
Les registres 22 et 23 sont initialisés (bloc 31, INIT) , par exemple, lors d'une activation du circuit 20, ou lors d'une réinitialisation de l'unité de traitement 11. L'initialisation consiste a vider (adresse 0) le registre d'adresse 22 ou à y stocker une adresse arbitraire, et à placer, dans le registre de donnée 23, la donnée contenue dans la mémoire à l'adresse portée par le registre 22. Par la suite, a chaque fois que l' unité de traitement appelle (bloc 32, CADD) une donnée dans la mémoire 21 par fourniture d'une adresse sur son bus 111, on met en oeuvre le processus de vérification ci-après.The registers 22 and 23 are initialized (block 31, INIT), for example, during an activation of the circuit 20, or during a reset of the processing unit 11. The initialization consists in emptying (address 0) the address register 22 or to store there an arbitrary address, and to place, in the data register 23, the data contained in the memory at the address carried by the register 22. Thereafter, whenever the the processing unit calls (block 32, CADD) a datum in the memory 21 by supplying an address on its bus 111, the verification process is carried out hereinafter.
On commence (bloc 33, CADD = ADD BUFF ?) par comparer le contenu du registre d'adresse 22 avec l'adresse courante CADD fournie par l'unité de traitement 11. En cas d'identité entre les deux adresses (sortie Y du bloc 33) , cela signifie que la donnée correspondante est déjà présente dans le registre de donnée 23. Par exemple, c'est le cas lorsqu'il s'agit du deuxième octet appelé d'un mot de 16 bits lu dans la mémoire alors que l'étape précédente effectuée par l'unité de traitement consis¬ tait à lire le premier octet de ce mot de 16 bits. L'octet correspondant P(DATA BUFF) du registre 23 est alors fourni (bloc 34) sur le bus 27 à l'unité de traitement en tant que données DATA.We begin (block 33, CADD = ADD BUFF?) By comparing the contents of the address register 22 with the current address CADD provided by the processing unit 11. In case of identity between the two addresses (output Y of block 33), this means that the corresponding data item is already present in the data register 23. For example, this is the case when it is the second called byte of a 16 bit word read in the memory. that the previous step performed by the processing unit consis ¬ was to read the first byte of this 16-bit word. The corresponding byte P (DATA BUFF) of the register 23 is then supplied (block 34) on the bus 27 to the processing unit as data DATA.
Dans le même cycle, le contenu du registre de donnée 23 est comparé avec la donnée courante présentée par la mémoire 21 sur le bus 152 (bloc 35, DATA BUFF = MEM(ADD BUFF)?) suite à l'adresse fournie par le registre d'adresse 22. Cette compa- raison permet de vérifier que la donnée qui a été fournie à l'unité de traitement 11 et qui était dé^a présente dans le registre 23 lors d'un cycle de lecture précèdent n'a pas été modifiée par rapport au cycle courant. Il s'agit donc bien d'une vérification d'intégrité de la donnée extraite de la mémoire 21 et d'une vérification d'absence de perturbation par injection de faute. En cas d'incohérence entre les deux données (sortie N du bloc 35), cela déclenche un traitement d'exception FAIL. Un tel traitement consiste, par exemple, en un blocage du circuit électronique 10 ou en toutes autres contremesures adaptées à une injection de faute. En cas d'intégrité validée de la donnéeIn the same cycle, the contents of the data register 23 are compared with the current data presented by the memory 21 on the bus 152 (block 35, DATA BUFF = MEM (ADD BUFF)?) Following the address provided by the register This comparison makes it possible to verify that the data which was supplied to the processing unit 11 and which was present in the register 23 during a preceding reading cycle was not modified compared to the current cycle. It is therefore an integrity check of the data extracted from the memory 21 and a check of absence of disturbance by injection of fault. In case of inconsistency between the two data (output N of block 35), this triggers an exception processing FAIL. Such a treatment consists, for example, in a blocking of the electronic circuit 10 or in any other countermeasures adapted to fault injection. In case of validated integrity of the data
(sortie Y du bloc 35) , le processus se poursuit normalement et, du point de vue de l'interface 20, cela signifie se remettre en attente d'une nouvelle adresse CADD (bloc 32) appelée par l'unité de traitement 11. Dans le cas où l'adresse courante n'est pas identique à celle contenue dans le registre 22 (sortie N du bloc 33) , cela signifie qu'il faut recharger des données dans le registre 23. Le contenu du registre d'adresse 22 est alors remplacé par l'adresse courante CADD fournie par l'unité de traitement (bloc 36, ADD BUFF = CADD) . Puis, le contenu du registre de donnée 23 est chargé par la donnée courante fournie par la mémoire 21 (DATA BUFF = CDATA) . En parallèle, l'interface mémoire fournit à l'unité de traitement 11 un des deux mots extraits de la mémoire 21 (bloc 38, DATA = P(CDATA)) . Pour la mise en oeuvre des modes de réalisation ci- dessus, on utilise un élément de mémorisation temporaire 23 dont la taille correspond à deux fois la taille du bus de données de l'unité de traitement concernée. Tout autre facteur représentant un multiple entier de la taille du bus peut être prévu. Un avantage est que le fonctionnement de l'interface est transparent pour le programme exécuté par l'unité 11 et ne prend pas de temps sur son exécution.(Y output of block 35), the process continues normally and, from the point of view of the interface 20, it means to wait for a new CADD address (block 32) called by the processing unit 11. In the case where the current address is not identical to that contained in the register 22 (output N of the block 33), this means that it is necessary to reload data in the register 23. The contents of the address register 22 is then replaced by the current CADD address provided by the processing unit (block 36, ADD BUFF = CADD). Then, the contents of the data register 23 are loaded by the current data provided by the memory 21 (DATA BUFF = CDATA). In parallel, the memory interface provides the processing unit 11 with one of the two words extracted from the memory 21 (block 38, DATA = P (CDATA)). For the implementation of the above embodiments, a temporary storage element 23 is used, the size of which corresponds to twice the size of the data bus of the processing unit concerned. Any other factor representing an integer multiple of the bus size may be provided. One advantage is that the operation of the interface is transparent for the program executed by the unit 11 and does not take time on its execution.
Un autre avantage est que le mécanisme décrit est particulièrement efficace contre les attaques par injection de faute.Another advantage is that the described mechanism is particularly effective against fault injection attacks.
Un autre avantage est que le coût en matériel de la mise en oeuvre n'est que de quelques éléments logiques supplémentaires dans l ' interface mémoire .Another advantage is that the hardware cost of the implementation is only a few additional logical elements in the memory interface.
Le fait que la donnée soit fournie à l'unité de traitement malgré la vérification (blocs 34 et 38 en parallèle avec la vérification 35) n'est en pratique pas gênant. En effet, même si l'erreur n'est détectée que quelques cycles après que la donnée ait été utilisée par l'unité de traitement, l'unité n ' aura en pratique pas eue le temps de mettre en danger la sécurité du système.The fact that the data is provided to the processing unit despite the verification (blocks 34 and 38 in parallel with verification 35) is in practice not troublesome. Indeed, even if the error is detected only a few cycles after the data has been used by the processing unit, the unit has in practice not had the time to endanger the security of the system.
Des modes de réalisation particuliers de la présente invention ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la mise en oeuvre pratique de l'invention est à la portée de l'homme du métier à partir des indications fonctionnelles données ci- dessus, notamment pour ce qui est de la synchronisation des échanges entre l'unité de traitement 11 et l'interface 20 et de l'interprétation, par l'unité de traitement 11, des comparaisons effectuées. En outre, bien que l'invention ait été décrite en relation avec une mémoire intégrée au circuit électronique, elle s'applique plus généralement a une vérification de données présentées en entrée d'une unité de traitement, que ces données proviennent d'une mémoire ou de tout autre circuit (par exemple tout périphérique) dans la mesure ou ces données sont alors, même dans ce périphérique, généralement contenus dans une mémoire.Particular embodiments of the present invention have been described. Various variations and modifications will be apparent to those skilled in the art. In particular, the practical implementation of the invention is within the abilities of those skilled in the art from the functional indications given above, in particular with regard to the synchronization of exchanges between the processing unit 11 and the interface 20 and the interpretation, by the processing unit 11, of the comparisons made. Furthermore, although the invention has been described in relation to a memory integrated in the electronic circuit, it more generally applies to a verification of data presented at the input of a processing unit, that these data come from a memory or any other circuit (for example any device) to the extent that these data are then, even in this device, usually contained in a memory.
Par ailleurs, les adresses fournies par l'unité 11 pourront subir diverses conversions (par exemple, d'adresse virtuelle en adresse physique) sans que cela ne modifie le fonctionnement, pourvu que les deux adresses comparées (compa¬ rateur 24 ou bloc 33) soient prises toutes les deux soit avant soit après conversion. De même, les données pourront subir divers traitements entre la mémoire 21 et l'unité 11 (par exemple, un déchiffrement) pourvu que les deux données comparées (compa¬ rateur 25 ou bloc 35) soient cohérentes entre elles. Moreover, the addresses provided by the unit 11 will undergo various conversions (for example, virtual address into a physical address) without this modifies the operation, provided that the two compared addresses (compa ¬ tor block 24 or 33) both are taken before or after conversion. Similarly, the data may undergo various treatments between the memory 21 and the unit 11 (e.g., decryption) provided that the two compared data compa rator 25 or block 35) are mutually consistent.

Claims

REVENDICATIONS
1. Procède de vérification de données transférées entre un circuit (21) et une unité de traitement (11), caractérise en ce que : les données provenant du circuit transitent par un premier élément de mémorisation temporaire (23) ayant une taille représentant un multiple entier de la taille de données suscep¬ tibles d'être présentées ensuite sur un bus (27) de l 'unité de traitement ; une adresse fournie par l' unité de traitement (11) a destination du circuit est stockée temporairement dans un deuxième élément (22) ; et le contenu du premier élément est compare avec une donnée courante (CDATA) provenant du circuit, au moins lorsqu'elle correspond a une adresse d'une donnée déjà présente dans ce premier élément.A method of verifying data transferred between a circuit (21) and a processing unit (11), characterized in that: the data from the circuit passes through a first temporary storage element (23) having a size representing a multiple Suspected whole of the data size to be ¬ patible then presented on a bus (27) of the processing unit; an address supplied by the processing unit (11) to the circuit is stored temporarily in a second element (22); and the content of the first element is compared with a current data (CDATA) from the circuit, at least when it corresponds to an address of a datum already present in this first element.
2. Procède selon la revendication 1, dans lequel toutes les données présentées sur le bus (27) de l' unité de traitement (11) et contenues dans le premier élément (23) sont comparées a la donnée courante (CDATA) extraite de l'élément périphérique a partir de l'adresse stockée dans le deuxième élément.2. Method according to claim 1, in which all the data presented on the bus (27) of the processing unit (11) and contained in the first element (23) are compared with the current data (CDATA) extracted from the peripheral element from the address stored in the second element.
3. Procède selon la revendication 1 ou 2, dans lequel lorsqu'une adresse courante (ADD) est présentée par l' unité de traitement (11), elle est comparée avec l'adresse contenue dans le deuxième élément (22) et, en cas d' identité entre les deux adresses, la donnée contenue dans le premier élément (23) est fournie au bus (27) de l 'unité de traitement.The method according to claim 1 or 2, wherein when a current address (ADD) is presented by the processing unit (11), it is compared with the address contained in the second element (22) and, in case of identity between the two addresses, the data contained in the first element (23) is supplied to the bus (27) of the processing unit.
4. Procède selon la revendication 3, dans lequel en cas d'absence d' identité entre l'adresse fournie par l' unité de traitement (11) et celle contenue dans le deuxième élément (22), l'adresse courante est stockée dans le deuxième élément et le contenu du premier élément (23) est remplace par la donnée fournie par le circuit (21) d'après l'adresse courante, en parallèle à la fourniture d'une partie de cette donnée à l'unité de traitement.4. The method according to claim 3, wherein in case of absence of identity between the address provided by the processing unit (11) and that contained in the second element (22), the current address is stored in the second element and the content of the first element (23) is replaced by the data provided by the circuit (21) according to the current address, in parallel to providing some of this data to the processing unit.
5. Procédé de détection d'une injection de faute dans un circuit électronique (10), caractérisé en ce que des données transférées entre une mémoire (21) et une unité de traitement (11) du circuit sont vérifiées par la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 4, une absence d'identité entre le contenu du premier élément (23) et la donnée courante (CDATA) déclenchant un traitement d'exception. 5. Method for detecting a fault injection in an electronic circuit (10), characterized in that data transferred between a memory (21) and a processing unit (11) of the circuit are verified by the implementation of the Method according to any one of claims 1 to 4, a lack of identity between the content of the first element (23) and the current data (CDATA) triggering an exception processing.
6. Circuit électronique (10) incluant au moins une unité de traitement (11), caractérise en ce qu'il comporte un circuit (20) d'interface entre des bus d'adresses (26) et de données (27) de l'unité de traitement et des bus d'adresses (151) et de données (152) destinés a au moins un circuit (21) périphérique a cette unité, ledit circuit d'interface comportant : au moins un premier élément de mémorisation temporaire (23) ayant une taille représentant un multiple entier de celle de données transitant sur le bus de données de l'unité de traitement ; un deuxième élément de mémorisation temporaire (22) de stockage d'une adresse fournie par l'unité de traitement à destination du circuit périphérique ; et des moyens pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 4.An electronic circuit (10) including at least one processing unit (11), characterized in that it comprises an interface circuit (20) between data (27) and data bus (27) of the processing unit and address (151) and data buses (152) for at least one circuit (21) peripheral to that unit, said interface circuit comprising: at least a first temporary storage element (23); ) having a size representing an integer multiple of data passing over the data bus of the processing unit; a second temporary storage element (22) for storing an address provided by the processing unit to the peripheral circuit; and means for carrying out the method according to any one of claims 1 to 4.
7. Circuit selon la revendication 6, dans lequel le circuit périphérique (21) est une mémoire (12, 13, 14) . 7. Circuit according to claim 6, wherein the peripheral circuit (21) is a memory (12, 13, 14).
EP08857341A 2007-11-19 2008-11-18 Verification of data read in memory Withdrawn EP2212824A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0759136A FR2923923B1 (en) 2007-11-19 2007-11-19 CHECKING DATA IN MEMORY
PCT/FR2008/052073 WO2009071791A2 (en) 2007-11-19 2008-11-18 Verification of data read in memory

Publications (1)

Publication Number Publication Date
EP2212824A2 true EP2212824A2 (en) 2010-08-04

Family

ID=39402726

Family Applications (1)

Application Number Title Priority Date Filing Date
EP08857341A Withdrawn EP2212824A2 (en) 2007-11-19 2008-11-18 Verification of data read in memory

Country Status (4)

Country Link
US (1) US8775697B2 (en)
EP (1) EP2212824A2 (en)
FR (1) FR2923923B1 (en)
WO (1) WO2009071791A2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9215471B2 (en) 2010-11-12 2015-12-15 Microsoft Technology Licensing, Llc Bitstream manipulation and verification of encoded digital media data
FR2989504B1 (en) * 2012-04-12 2014-04-25 St Microelectronics Rousset REGISTER PROTECTED FROM FAULT INJECTION ATTACKS
US9262419B2 (en) * 2013-04-05 2016-02-16 Microsoft Technology Licensing, Llc Syntax-aware manipulation of media files in a container format
KR20160082283A (en) * 2014-12-29 2016-07-08 삼성전자주식회사 Broadcasting receiving apparatus and method for controlling thereof
CN108073805A (en) * 2016-11-15 2018-05-25 华为技术有限公司 A kind of method for reading data and memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259639B1 (en) * 2000-02-16 2001-07-10 Mitsubishi Denki Kabushiki Kaisha Semiconductor integrated circuit device capable of repairing defective parts in a large-scale memory
KR100476892B1 (en) * 2002-04-29 2005-03-17 삼성전자주식회사 Tamper-resistant method and data processing system using the same
TW564991U (en) * 2003-04-25 2003-12-01 Sunplus Technology Co Ltd Power-saving static memory control circuit
US20060227795A1 (en) * 2005-04-07 2006-10-12 Amit Bande Optimized method of reading data packets communicated over a network
FR2884329A1 (en) * 2005-04-11 2006-10-13 St Microelectronics Sa Data and address coherence verifying method for chip card, involves calculating current signature of data with help of function taking into account data address, and verifying coherence between current signature and recorded signature

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2009071791A3 *

Also Published As

Publication number Publication date
WO2009071791A2 (en) 2009-06-11
US8775697B2 (en) 2014-07-08
US20100325320A1 (en) 2010-12-23
FR2923923A1 (en) 2009-05-22
WO2009071791A3 (en) 2009-09-11
FR2923923B1 (en) 2009-12-04

Similar Documents

Publication Publication Date Title
CN107395659B (en) Method and device for service acceptance and consensus
EP1619589B1 (en) Method for programming a system on a chip DMA controller and system on a chip therefore.
EP1161725B1 (en) Method for monitoring a programme flow
WO1995016246A1 (en) Memory card and operation method
EP1774484A1 (en) Recording a key into an integrated circuit
EP2212824A2 (en) Verification of data read in memory
EP1983436B1 (en) Integrity check for a memory external to a processor
EP2453356A1 (en) Method, computer program and device for securing byte code to be run by a virtual machine
EP1728354A1 (en) Method for dynamically authenticating programmes with an electronic portable object
EP1983429A1 (en) Implementation of corrective programs by a processing unit
US20070083770A1 (en) System and method for foiling code-injection attacks in a computing device
EP1489517B1 (en) Protection of a program waiting for execution in memory used by a microprocessor
EP1904928A2 (en) Permanent data hardware integrity
EP1980968B1 (en) Program execution protection
EP1818846B1 (en) Verification of the integrity of programs or of sequencing in a state machine
EP1770524A2 (en) Detection of sequence errors in a program execution
FR2963455A1 (en) PROTECTING SECRET KEYS
EP4057169B1 (en) Method for executing a binary code of a computer program by a microprocessor
FR3071633A1 (en) METHOD FOR EXECUTING A MACHINE CODE OF A SECURE FUNCTION
EP3832947B1 (en) Method for executing a computer program by an electronic apparatus
FR2914448A1 (en) Secured execution computer environment protecting system for very high security digital apparatus i.e. payment terminal, has transcoder detecting whether descriptor returned by memory associates virtual address at physical address of ROM
FR3137988A1 (en) Method and circuit for verifying the integrity of software
EP4057168A1 (en) Method for executing a computer program by an electronic apparatus
EP1713023A1 (en) Protection of data contained in an integrated circuit
EP3792771A1 (en) Programme test

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20100520

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA MK RS

DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20150602