WO2009071791A2 - Verification de donnees lues en memoire - Google Patents
Verification de donnees lues en memoire Download PDFInfo
- Publication number
- WO2009071791A2 WO2009071791A2 PCT/FR2008/052073 FR2008052073W WO2009071791A2 WO 2009071791 A2 WO2009071791 A2 WO 2009071791A2 FR 2008052073 W FR2008052073 W FR 2008052073W WO 2009071791 A2 WO2009071791 A2 WO 2009071791A2
- Authority
- WO
- WIPO (PCT)
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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/755—Protecting 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)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
L'invention concerneun procédé et un circuit de vérification de données transférées entre un circuit (21) et une unité de traitement (11), dans lequel: 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 susceptibles d'être présentées ensuite sur un bus (27) de l'unité de traitement; une adresse fournie par l'unité de traitement (11) à destination du circuit est stockée temporairement dans un deuxième élément (22); et le contenu du premier élément est comparé avec une donnée courante (CDATA) provenant du circuit, au moins lorsqu'elle correspond à une adresse d'une donnée déjà présente dans ce premier élément.
Description
VERIFICATION DE DONNEES LUES EN MEMOIRE
Domaine de l'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.
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.
Exposé de l'art antérieur
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 électronique
(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.
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é.
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.
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' 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é.
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.
Un autre objet est de ne pas dégrader les performances du circuit en raison de la vérification effectuée.
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 .
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.
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.
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.
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.
Selon un mode de réalisation de la présente invention, le circuit périphérique est une mémoire. Brève description des dessins
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 .
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.
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.
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.) .
Le circuit 20 comporte un élément de mémorisation 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.
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.
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.
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.
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.
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.
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.
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.
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.
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ée
(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.
Un autre avantage est que le mécanisme décrit est particulièrement efficace contre les attaques par injection de faute.
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 .
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.
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.
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.
Claims
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.
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.
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.
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.
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.
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.
7. Circuit selon la revendication 6, dans lequel le circuit périphérique (21) est une mémoire (12, 13, 14) .
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/743,684 US8775697B2 (en) | 2007-11-19 | 2008-10-18 | Verification of data read in memory |
| EP08857341A EP2212824A2 (fr) | 2007-11-19 | 2008-11-18 | Verification de donnees lues en memoire |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0759136 | 2007-11-19 | ||
| FR0759136A FR2923923B1 (fr) | 2007-11-19 | 2007-11-19 | Verification de donnees lues en memoire |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2009071791A2 true WO2009071791A2 (fr) | 2009-06-11 |
| WO2009071791A3 WO2009071791A3 (fr) | 2009-09-11 |
Family
ID=39402726
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/FR2008/052073 Ceased WO2009071791A2 (fr) | 2007-11-19 | 2008-11-18 | Verification de donnees lues en memoire |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US8775697B2 (fr) |
| EP (1) | EP2212824A2 (fr) |
| FR (1) | FR2923923B1 (fr) |
| WO (1) | WO2009071791A2 (fr) |
Families Citing this family (5)
| 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 (fr) | 2012-04-12 | 2014-04-25 | St Microelectronics Rousset | Registre protege contre des attaques par injection de fautes |
| US9262419B2 (en) * | 2013-04-05 | 2016-02-16 | Microsoft Technology Licensing, Llc | Syntax-aware manipulation of media files in a container format |
| KR20160082283A (ko) * | 2014-12-29 | 2016-07-08 | 삼성전자주식회사 | 방송 수신 장치 및 그의 제어 방법 |
| CN108073805A (zh) * | 2016-11-15 | 2018-05-25 | 华为技术有限公司 | 一种数据读取方法和存储器 |
Family Cites Families (5)
| 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 (ko) * | 2002-04-29 | 2005-03-17 | 삼성전자주식회사 | 데이터의 부정조작을 방지하는 방법 및 그것을 이용한데이터 처리 시스템 |
| 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 (fr) * | 2005-04-11 | 2006-10-13 | St Microelectronics Sa | Protection de donnees d'une memoire associee a un microprocesseur |
-
2007
- 2007-11-19 FR FR0759136A patent/FR2923923B1/fr not_active Expired - Fee Related
-
2008
- 2008-10-18 US US12/743,684 patent/US8775697B2/en not_active Expired - Fee Related
- 2008-11-18 WO PCT/FR2008/052073 patent/WO2009071791A2/fr not_active Ceased
- 2008-11-18 EP EP08857341A patent/EP2212824A2/fr not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| WO2009071791A3 (fr) | 2009-09-11 |
| FR2923923B1 (fr) | 2009-12-04 |
| FR2923923A1 (fr) | 2009-05-22 |
| US8775697B2 (en) | 2014-07-08 |
| EP2212824A2 (fr) | 2010-08-04 |
| US20100325320A1 (en) | 2010-12-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1619589B1 (fr) | Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé | |
| EP1161725B1 (fr) | Procede de surveillance du deroulement d'un programme | |
| WO1995016246A1 (fr) | Carte a memoire et procede de fonctionnement | |
| EP2212824A2 (fr) | Verification de donnees lues en memoire | |
| EP3761199A1 (fr) | Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur | |
| EP2453356A1 (fr) | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle | |
| EP1983436B1 (fr) | Contrôle d'intégrité d'une mémoire externe à un processeur | |
| EP1774484B1 (fr) | Enregistrement d'une cle dans un circuit integre | |
| EP1983429A1 (fr) | Implémentation de programmes correctifs par une unité de traitement | |
| FR3071633A1 (fr) | Procede d'execution d'un code machine d'une fonction securisee | |
| EP1489517A2 (fr) | Protection d'un programme en attente d'exécution dans une mémoire utilisée par un microprocesseur | |
| EP4057169B1 (fr) | Procédé d'exécution d'un code binaire d'un programme d'ordinateur par un microprocesseur | |
| FR2963128A1 (fr) | Procédé de détection d'une attaque par injection de faute dans un dispositif de mémoire, et système de détection correspondant | |
| WO2005101725A1 (fr) | Procede d'authentification dynamique de programmes par un objet portable electronique | |
| EP1980968B1 (fr) | Protection de l'exécution d'un programme | |
| WO2000034927A1 (fr) | Dispositif et procede d'initialisation d'un programme applicatif d'une carte a circuit integre | |
| EP1818846B1 (fr) | Vérification d'intégrité de programmes ou de séquencement d'une machine d'états | |
| FR2963455A1 (fr) | Protection de cles secretes | |
| EP1904928A2 (fr) | Integrite materielle permanente des donnees | |
| EP4057168B1 (fr) | Procédé d exécution d'un programme d ordinateur par un appareil électronique | |
| EP1770524A2 (fr) | Détection d'erreur de séquencement dans l'exécution d'un programme | |
| EP3792771B1 (fr) | Test de programme | |
| FR2914448A1 (fr) | Systeme et procede pour la protection d'un environnement informatique d'execution securise. | |
| EP4632579A1 (fr) | Procede de protection d'un microcontroleur | |
| FR3137988A1 (fr) | Procédé et circuit pour la vérification de l’intégrité d’un logiciel |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08857341 Country of ref document: EP Kind code of ref document: A2 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2008857341 Country of ref document: EP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 12743684 Country of ref document: US |