EP0694846B1 - Programmed circuit for numerical scrambling - Google Patents
Programmed circuit for numerical scrambling Download PDFInfo
- Publication number
- EP0694846B1 EP0694846B1 EP95401789A EP95401789A EP0694846B1 EP 0694846 B1 EP0694846 B1 EP 0694846B1 EP 95401789 A EP95401789 A EP 95401789A EP 95401789 A EP95401789 A EP 95401789A EP 0694846 B1 EP0694846 B1 EP 0694846B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- data
- permutation
- circuit
- memory
- stage
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/72—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 in cryptographic circuits
Definitions
- the invention relates to a scrambling method digital and its application to a programmable circuit, basically to protect from inspection the contents of an executable program.
- the invention particularly applies to secure management circuits financial transactions.
- the instruction data of a contained program in a program memory are usually protected by mixing physical addresses in memory of this instruction data. So this data doesn't are more stored in memory according to their address logical, but scattered.
- a specific decoding circuit allows to find the real physical address in memory of instruction data according to its address logic.
- This process provides protection against visual inspection of program memory.
- the instruction data flows in clear on the data bus, to be executed by the circuit microprocessor.
- the program can then be replenished. Protection in practice contribution is therefore limited.
- An object of the invention is to improve the data protection in a circuit programmed in using a permutation scrambling process data bits.
- Another object of the invention is a method of protection of this data easy to implement, allowing individual protection for each product.
- program memory all the addresses physical data stored in executable code. These addresses can be in different memory circuits, for example in memories ROM and RAM.
- the invention therefore relates to a method of digital scrambling of data.
- the invention relates to a programmed circuit. comprising at least one bit permutation circuit data, for n-bit data.
- the permutation circuit includes n permutation stages with n inputs and one outlet, each floor comprising n cells of permutation.
- a permutation cell is made using the same technology as the cells of program memory.
- an executable code generator discriminates instruction data from other data of a program, to apply interference by permutation of the bits or else to this data instructions, or other data. It's that which is represented in figure 1. We obtain a code executable that contains scrambled data among others who are not.
- This executable code is stored in memory program of a programmable circuit: programming by mask in read only memory and / or download in memory rewritable (RAM, EEPROM or others).
- a programmable circuit according to the invention is shown in Figure 2. It includes a unit of UC control which is a microprocessor type organ, with an instruction entry on a register RI instruction and data entry on a data register and which includes a unit programmed UP.
- This programmed unit receives instruction data to execute from the registry RI instruction and controls the RD data register and for example arithmetic circuits and logic, or counters, grouped in a circuit of calculation referenced 1 in the figure.
- computation circuit 1 receives data of the RD data register on which it performs calculations according to unit instructions programmed.
- the different data are transferred to the data or instruction registers by a bus DBUS data connected to different memory circuits.
- the circuit programmable includes ROM read only memory and rewritable memories, in the example a memory RAM and programmable and erasable memory electrically EEPROM.
- the data of the program memory pass either in clear or scrambled on the data bus depending on whether they are instruction data or not.
- DBr1 is placed at the input of instructions of the control unit, to unscramble the data instructions in program memory and transferred by the DBUS data bus. The data instructions are therefore scrambled on the bus data.
- a permutation inverse is applied at the output of program memory, so that the instruction data is scrambled on the bus.
- the scrambled data passes scrambled on the bus and a swap circuit is provided for data input from the control unit.
- the method according to the invention therefore makes it possible to many combinations.
- the instruction data stored in RAM have underwent two permutations: the first which is their specific, performed on code generation and second applied as memory input. And 1a second permutation is unscrambled before the data transmission on the bus. The second permutation is preferably different from the first applied to instruction data.
- the method according to the invention allows apply different interference to data of program memory instructions as the one applied to other data: stored shapes, shapes transmitted different, and also to apply interference different to each of the rewritable memories: permutation or not, selection of the permutation of bits different from one rewritable memory to another.
- Each permutation stage receives as input n bits of the data bus, i.e. D0-D7 in the example and delivers an unscrambled output bit: the stage of permutation Ep0 delivers the output bit Di0, whereas the permutation stage Ep7 delivers the output bit Di7. It is these output bits Di0-Di7 which are applied as input to the RI instruction register.
- Each permutation stage includes n cells of permutation c0-c7 in the example whose function is that of a fuse, only one of n allowing the transmission of the associated input data bit on the floor output data bit.
- Each permutation stage corresponds to a rank of different pass cell.
- the floor cell Ep0 is c7 Ep1 c3 Ep2 c6 . . . Ep7 c0.
- the scrambling method according to the invention allows so n! different scrambling possibilities for a data bus of width n bits.
- each slice of n bits is swapped according to the invention.
- the executable code generator must perform the scrambling of executable program data after have cut them into n-bit slices.
- Ep1 For each permutation stage Ep0, Ep1 we have a middle interconnection layer DM0, DM1, connected to the output bit line of the floor.
- Programming a permutation stage consists of then in an extension of the interconnection layer median at the local interconnection layer of a cell among the n cells of this stage of permutation.
- stage Ep0 an extension of the interconnection layer median DM0 at the local interconnection layer D17 of cell c7 and for stage Ep1, we have an extension from the middle interconnection layer DM1 to the layer of local interconnection D13 of cell c3.
- bit lines of input data D0-D7 are metal, and parallel between them and the output data bit line, for example Di0, is in polysilicon, in a plane between the plane of the data bit lines input and the substrate.
- the layer contact interconnection point to the data bit line outlet is done by a metal line made in the same plane as the input data bit lines and parallel to them. This metal line is noted lm0 for the stage Ep0 and lm1 for the stage Ep1.
- the middle or local interconnection layers can be made in diffusion, metal or others, based on programmable circuit technology.
- the middle interconnection layer is it made of metal.
- section AA represented in FIG. 5 we distinguishes for example for the stage Ep0 the line of Di0 polysilicon data output, connected to the metal line lm0 above, and the contacts of this metal line on the middle interconnection layer DM0 of the permutation stage Ep0.
- the local interconnection layers D13 and D14 cells c3 and c4 of stages Ep0 and Ep1 are also visible in this figure 5. And, we see the extension of the middle interconnection layer DM1 to the layer local interconnection D13 of cell c3 of the floor Ep1.
- Programming the permutation circuit according to the invention then consists according to this method of manufacturing to select layer extension interconnection layer at the interconnection layer locale which defines permutation, extension which goes allow the input bit line to be connected to the line output bit.
- This programmable specialization is particularly easy to implement, allowing flexibility in adapting the manufacturing process to each programmable circuit: use of circuits of permutation on the other memories or not, with jamming identity or not, etc ... and allowing a different interference for each programmable circuit: We no longer have a protective identity within the same family. This results in protection considerably improved programmable circuits.
- data programming executables scrambled in read-only memory is performed, using a middle interconnect layer to the same bit line and an interconnection layer local for each cell extended or not to the layer interconnection point according to the programmed state desired 0 or 1 of the cell.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Semiconductor Memories (AREA)
Description
L'invention concerne un procédé de brouillage numérique et son application à un circuit programmable, essentiellement pour protéger de l'inspection le contenu d'un programme exécutable. L'invention s'applique notamment aux circuits sécurisés de gestion de transactions financières.The invention relates to a scrambling method digital and its application to a programmable circuit, basically to protect from inspection the contents of an executable program. The invention particularly applies to secure management circuits financial transactions.
Les données d'instructions d'un programme contenu dans une mémoire programme sont habituellement protégées par mélange des adresses physiques en mémoire de ces données d'instructions. Ainsi, ces données ne sont plus rangées dans la mémoire selon leur adresse logique, mais éparpillées. En mode opérationnel du circuit programmable, un circuit de décodage spécifique permet de retrouver l'adresse physique réelle en mémoire d'une donnée d'instructions d'après son adresse logique.The instruction data of a contained program in a program memory are usually protected by mixing physical addresses in memory of this instruction data. So this data doesn't are more stored in memory according to their address logical, but scattered. In operational mode of programmable circuit, a specific decoding circuit allows to find the real physical address in memory of instruction data according to its address logic.
Ce procédé permet une protection contre l'inspection visuelle de la mémoire programme. Cependant, les données d'instructions transitent en clair sur le bus de données, pour être exécutées par le microprocesseur du circuit. Or, il est techniquement possible de placer un espion sur le bus de données, pour lire les données qui transitent. Le programme peut alors être reconstitué. En pratique la protection apportée est donc limitée.This process provides protection against visual inspection of program memory. However, the instruction data flows in clear on the data bus, to be executed by the circuit microprocessor. However, it is technically possible to place a spy on the data bus, to read the data in transit. The program can then be replenished. Protection in practice contribution is therefore limited.
En outre, la complexité du circuit de décodage d'adresse permettant de retrouver les adresses physiques réelles conduit à utiliser les mêmes clefs de codage et partant, le même circuit de décodage pour une famille de produits donnée, afin de réduire les coûts de fabrication.In addition, the complexity of the decoding circuit address to find the addresses real physics leads to using the same keys of coding and hence the same decoding circuit for a product family to reduce costs Manufacturing.
Or, si un fraudeur arrive à reconstituer le programme pour un des produits, il obtient une correspondance entre les adresses physiques et les adresses logiques, ce qui lui permettra de retrouver les clefs et l'algorithme utilisés pour mélanger les adresses. Il aura ainsi la solution pour toute la famille.However, if a fraudster succeeds in reconstructing the program for one of the products it gets a correspondence between physical addresses and logical addresses, which will allow it to find the keys and the algorithm used to mix the addresses. He will thus have the solution for the whole family.
Un dispositif qui brouille les données est connu de US-4,633,388.A device which scrambles the data is known from US-4,633,388.
Un objet de l'invention est d'améliorer la protection des données dans un circuit programmé en utilisant un procédé de brouillage par permutation de bits de données.An object of the invention is to improve the data protection in a circuit programmed in using a permutation scrambling process data bits.
Un autre objet de l'invention est un procédé de protection de ces données facile à mettre en oeuvre, permettant une protection individualisée pour chaque produit.Another object of the invention is a method of protection of this data easy to implement, allowing individual protection for each product.
On sait qu'un programme exécutable contient des données dont certaines constituent des instructions de ce programme.We know that an executable program contains data, some of which constitute instructions for This program.
On prévoit selon l'invention que ou bien ces données d'instructions ou bien les autres données sont brouillées dans la mémoire programme. C'est à dire que la permutation des bits de l'un de ces groupes de données est effectuée à la génération du code exécutable. De cette manière, on a en mémoire programme des données brouillées parmi d'autres données qui ne le sont pas.It is provided according to the invention that either these instruction data or other data is scrambled in program memory. Which means the bit swapping of one of these groups of data is performed at code generation executable. In this way, we have program memory scrambled data among other data that does not are not.
On rappelle que selon l'acception courante, on entend par mémoire programme, l'ensemble des adresses physiques auxquelles sont mémorisées des données du code exécutable. Ces adresses peuvent être dans des circuits mémoire différents, par exemple en mémoires ROM et RAM.We recall that according to the current meaning, we by program memory is meant all the addresses physical data stored in executable code. These addresses can be in different memory circuits, for example in memories ROM and RAM.
Telle que definie dans les revendications, l'invention concerne donc un procédé de brouillage numérique de données. As defined in the claims, the invention therefore relates to a method of digital scrambling of data.
L'invention concerne un circuit programmé comprenant au moins un circuit de permutation des bits de données, pour des données de n bits.The invention relates to a programmed circuit. comprising at least one bit permutation circuit data, for n-bit data.
Selon l'invention, le circuit de permutation comprend n étages de permutation à n entrées et une sortie, chaque étage comprenant n cellules de permutation.According to the invention, the permutation circuit includes n permutation stages with n inputs and one outlet, each floor comprising n cells of permutation.
Avantageusement, une cellule de permutation est réalisée selon la même technologie que les cellules de la mémoire programme.Advantageously, a permutation cell is made using the same technology as the cells of program memory.
D'autres caractéristiques et avantages de l'invention sont présentés dans la description suivante, faite à titre indicatif et non limitatif, et en référence aux dessins annexés dans lesquels :
- la figure 1 représente le principe du brouillage selon l'invention,
- la figure 2 est un schéma-bloc d'un circuit programmable protégé selon l'invention,
- la figure 3 est un schéma de principe d'un circuit de permutation selon l'invention,
- la figure 4 est un dessin topologique de deux étages d'un circuit de permutation selon l'invention et
- la figure 5 est une vue en coupe AA du dessin topologique de la figure 4.
- FIG. 1 represents the principle of interference according to the invention,
- FIG. 2 is a block diagram of a protected programmable circuit according to the invention,
- FIG. 3 is a block diagram of a permutation circuit according to the invention,
- FIG. 4 is a topological drawing of two stages of a permutation circuit according to the invention and
- FIG. 5 is a sectional view AA of the topological drawing of FIG. 4.
Selon l'invention, un générateur de code exécutable discrimine les données d'instruction des autres données d'un programme, pour appliquer un brouillage par permutation des bits ou bien à ces données d'instructions, ou bien aux autres données. C'est ce qui est représenté sur la figure 1. On obtient un code exécutable qui contient des données brouillées parmi d'autres qui ne le sont pas.According to the invention, an executable code generator discriminates instruction data from other data of a program, to apply interference by permutation of the bits or else to this data instructions, or other data. It's that which is represented in figure 1. We obtain a code executable that contains scrambled data among others who are not.
Ce code exécutable est mémorisé en mémoire programme d'un circuit programmable : programmation par masque en mémoire morte et/ou téléchargement en mémoire réinscriptible (RAM, EEPROM ou autres).This executable code is stored in memory program of a programmable circuit: programming by mask in read only memory and / or download in memory rewritable (RAM, EEPROM or others).
Un circuit programmable selon l'invention est
représenté en figure 2. Il comprend une unité de
commande UC qui est un organe du type microprocesseur,
avec une entrée d'instructions sur un registre
d'instruction RI et une entrée de données sur un
registre de données et qui comprend une unité
programmée UP. Cette unité programmée reçoit des
données d'instructions à exécuter du registre
d'instruction RI et contrôle le registre de données RD
et par exemple des circuits de calcul arithmétique et
logique, ou des compteurs, regroupés dans un circuit de
calcul référencé 1 sur la figure. Dans l'exemple
représenté, le circuit de calcul 1 reçoit des données
du registre de données RD sur lesquelles il effectue
des calculs selon les instructions de l'unité
programmée.A programmable circuit according to the invention is
shown in Figure 2. It includes a unit of
UC control which is a microprocessor type organ,
with an instruction entry on a register
RI instruction and data entry on a
data register and which includes a unit
programmed UP. This programmed unit receives
instruction data to execute from the registry
RI instruction and controls the RD data register
and for example arithmetic circuits and
logic, or counters, grouped in a circuit of
calculation referenced 1 in the figure. In the example
shown,
Les différentes données sont transférées vers les registres de données ou d'instructions par un bus de données DBUS connecté à différents circuits mémoire.The different data are transferred to the data or instruction registers by a bus DBUS data connected to different memory circuits.
Dans l'exemple représenté à la figure 2, le circuit programmable comprend une mémoire morte ROM et des mémoires réinscriptibles, dans l'exemple une mémoire vive RAM et une mémoire programmable et effaçable électriquement EEPROM.In the example shown in Figure 2, the circuit programmable includes ROM read only memory and rewritable memories, in the example a memory RAM and programmable and erasable memory electrically EEPROM.
Dans cet exemple, on prévoit que du code exécutable est mémorisé en mémoires ROM et RAM.In this example, we expect that executable code is stored in ROM and RAM memories.
Selon l'invention, on prévoit que les données de la mémoire programme transitent soit en clair, soit brouillées sur le bus de données selon qu'elles sont des données d'instructions ou non.According to the invention, it is expected that the data of the program memory pass either in clear or scrambled on the data bus depending on whether they are instruction data or not.
De préférence, on choisi que ce sont les données d'instructions qui transitent brouillées. Et un circuit de permutation DBr1 est placé en entrée d'instructions de l'unité de commande, pour débrouiller les données instructions contenues dans la mémoire programme et transférées par le bus de données DBUS. Les données d'instructions transitent donc brouillées sur le bus de données.Preferably, we choose that it is the data of instructions that pass through scrambled. And a circuit of permutation DBr1 is placed at the input of instructions of the control unit, to unscramble the data instructions in program memory and transferred by the DBUS data bus. The data instructions are therefore scrambled on the bus data.
Si ce sont les autres données qui ont été brouillées par le générateur de code, une permutation inverse est appliquée en sortie de mémoire programme, en sorte que les données d'instructions sont brouillées sur le bus. Ou bien les données brouillées transitent brouillées sur le bus et un circuit de permutation est prévu en entrée de données de l'unité de commande.If it was the other data that was scrambled by the code generator a permutation inverse is applied at the output of program memory, so that the instruction data is scrambled on the bus. Or the scrambled data passes scrambled on the bus and a swap circuit is provided for data input from the control unit.
Le procédé selon l'invention permet donc de nombreuses combinaisons.The method according to the invention therefore makes it possible to many combinations.
Dans l'exemple représenté à la figure 2, qui s'adresse plus particulièrement au cas où les données d'instructions transitent brouillées sur le bus parmi les autres données en clair, on a prévu deux autres circuits de permutation DBr2 et DBr3. Le premier est placé entre la mémoire RAM et le bus de données, et le second est placé entre la mémoire EEPROM et le bus de données. De cette manière, les données mémorisées dans ces deux mémoires réinscriptibles sont brouillées respectivement selon une seconde et troisième permutation, mais transitent débrouillées sur le bus de données.In the example shown in Figure 2, which is intended more particularly for cases where the data of instructions pass through scrambled on the bus among the other data in clear, we planned two other permutation circuits DBr2 and DBr3. The first is placed between the RAM memory and the data bus, and the second is placed between the EEPROM memory and the bus data. In this way, the data stored in these two rewritable memories are scrambled respectively according to a second and third permutation, but transit unscrambled on the bus data.
Plus précisément, dans l'exemple représenté, les données d'instructions mémorisées en mémoire RAM ont subi deux permutations : la première qui leur est spécifique, réalisée à la génération du code et la deuxième appliquée en entrée de la mémoire. Et 1a deuxième permutation est débrouillée avant la transmission des données sur le bus. La deuxième permutation est de préférence différente de la première appliquée aux données d'instructions.More specifically, in the example shown, the instruction data stored in RAM have underwent two permutations: the first which is their specific, performed on code generation and second applied as memory input. And 1a second permutation is unscrambled before the data transmission on the bus. The second permutation is preferably different from the first applied to instruction data.
On pourrait aussi avoir une autre mémoire sans circuit de permutation associé.We could also have another memory without associated permutation circuit.
Ainsi, le procédé selon l'invention permet d'appliquer un brouillage différent aux données d'instructions de la mémoire programme que celui appliqué aux autres données: formes mémorisées, formes transmises différentes, et aussi d'appliquer un brouillage différent à chacune des mémoires réinscriptibles: permutation ou non, sélection de la permutation des bits différente d'une mémoire réinscriptible à l'autre.Thus, the method according to the invention allows apply different interference to data of program memory instructions as the one applied to other data: stored shapes, shapes transmitted different, and also to apply interference different to each of the rewritable memories: permutation or not, selection of the permutation of bits different from one rewritable memory to another.
Selon l'invention, on accroit ainsi les difficultés d'espionnage des données et de compréhension du dispositif de protection.According to the invention, the difficulties are thus increased spying on data and understanding the protection device.
La structure retenue dépendra principalement de l'application visée. Enfin, on verra que l'on peut facilement utiliser des permutations différentes d'un circuit programmable à l'autre.The structure chosen will mainly depend on the intended application. Finally, we will see that we can easily use different permutations of a programmable circuit to another.
Un exemple de réalisation d'un circuit de permutation utilisé dans l'invention est détaillé sur le schéma de principe de la figure 3.An example of realization of a circuit of permutation used in the invention is detailed on the block diagram of Figure 3.
Le bus de données DBUS ayant une largeur de n bits, le circuit de permutation comprend n étages de permutation, soit Ep0 à Ep7 dans l'exemple (n = 8).The DBUS data bus having a width of n bits, the permutation circuit comprises n stages of permutation, that is Ep0 to Ep7 in the example (n = 8).
Chaque étage de permutation reçoit en entrée les n bits du bus de données, soit D0-D7 dans l'exemple et délivre un bit de sortie débrouillé : l'étage de permutation Ep0 délivre le bit de sortie Di0, ..... l'étage de permutation Ep7 délivre le bit de sortie Di7. Ce sont ces bits de sortie Di0-Di7 qui sont appliqués en entrée du registre d'instructions RI.Each permutation stage receives as input n bits of the data bus, i.e. D0-D7 in the example and delivers an unscrambled output bit: the stage of permutation Ep0 delivers the output bit Di0, ..... the permutation stage Ep7 delivers the output bit Di7. It is these output bits Di0-Di7 which are applied as input to the RI instruction register.
Chaque étage de permutation comprend n cellules de permutation c0-c7 dans l'exemple dont la fonction est celle d'un fusible, une seule parmi n permettant la transmission du bit de données d'entrée associé sur le bit de donnée de sortie de l'étage.Each permutation stage includes n cells of permutation c0-c7 in the example whose function is that of a fuse, only one of n allowing the transmission of the associated input data bit on the floor output data bit.
A chaque étage de permutation correspond un rang de cellule passante différent.Each permutation stage corresponds to a rank of different pass cell.
Dans l'exemple représenté, la cellule passante de l'étage
Ep0 est c7
Ep1 c3
Ep2 c6
.
.
.
Ep7 c0.In the example shown, the floor cell
Ep0 is c7
Ep1 c3
Ep2 c6
.
.
.
Ep7 c0.
Le circuit de permutation DBr1 est ainsi
caractérisé par une sélection de permutation pour
chaque étage. Pour un bus de n bits de données, on a :
Le procédé de brouillage selon l'invention permet ainsi n! possibilités différentes de brouillage pour un bus de données de largeur n bits.The scrambling method according to the invention allows so n! different scrambling possibilities for a data bus of width n bits.
Si les mémoires ont une largeur différente du bus de n bits données et notamment une plus grande largeur, chaque tranche de n bits subit la permutation selon l'invention. Et si la mémoire programme est plus large, le générateur de codé exécutable devra effectuer le brouillage des données de programme exécutable après les avoir découpées par tranches de n bits.If the memories have a different width of the bus of n given bits and in particular a greater width, each slice of n bits is swapped according to the invention. And if the program memory is larger, the executable code generator must perform the scrambling of executable program data after have cut them into n-bit slices.
Un exemple de réalisation d'un circuit de permutation selon l'invention est représenté en figures 4 et 5.An example of realization of a circuit of permutation according to the invention is shown in figures 4 and 5.
La figure 4 représente un dessin topologique de deux étages de permutation Ep0 et Ep1 à n = 8 bits d'entrée (D0-D7) et un bit de sortie, respectivement Di0 et Di1, et la figure 5 représente une coupe AA de ce dessin. Figure 4 shows a topological drawing of two permutation stages Ep0 and Ep1 at n = 8 bits input (D0-D7) and one output bit, respectively Di0 and Di1, and FIG. 5 represents a section AA of this drawing.
Pour chaque étage de permutation Ep0, Ep1 on a une couche d'interconnexion médiane DM0, DM1, connectée à la ligne de bit de sortie de l'étage.For each permutation stage Ep0, Ep1 we have a middle interconnection layer DM0, DM1, connected to the output bit line of the floor.
Et, pour chaque cellule c0-c7 d'un étage de permutation, on a une couche d'interconnexion locale connectée à la ligne de bit d'entrée associée à cette cellule. Par exemple, on a une couche d'interconnexion locale D10 pour la cellule c0, connectée à la ligne de bit de données d'entrée D0.And, for each cell c0-c7 of a stage of permutation, we have a local interconnection layer connected to the input bit line associated with this cell. For example, we have an interconnection layer local D10 for cell c0, connected to the line of input data bit D0.
La programmation d'un étage de permutation consiste alors en une extension de la couche d'interconnexion médiane à la couche d'interconnexion locale d'une cellule parmi les n cellules de cet étage de permutation. Dans l'exemple représenté, on a ainsi pour l'étage Ep0 une extension de la couche d'interconnexion médiane DM0 à la couche d'interconnexion locale D17 de la cellule c7 et pour l'étage Ep1, on a une extension de la couche d'interconnexion médiane DM1 à la couche d'interconnexion locale D13 de la cellule c3.Programming a permutation stage consists of then in an extension of the interconnection layer median at the local interconnection layer of a cell among the n cells of this stage of permutation. In the example shown, we thus have for stage Ep0 an extension of the interconnection layer median DM0 at the local interconnection layer D17 of cell c7 and for stage Ep1, we have an extension from the middle interconnection layer DM1 to the layer of local interconnection D13 of cell c3.
Dans l'exemple représenté, les lignés de bit de données d'entrée D0-D7 sont en métal, et parallèles entre elles et la ligne de bit de données de sortie, par exemple Di0, est en polysilicium, dans un plan compris entre le plan des lignes de bit de données d'entrée et le substrat. Le contact de la couche d'interconnexion médiane à la ligne de bit de données de sortie se fait par une ligne de métal réalisée dans le même plan que les lignes de bit de données d'entrée et parallèle à celles-ci. Cette ligne de métal est notée lm0 pour l'étage Ep0 et lm1 pour l'étage Ep1.In the example shown, the bit lines of input data D0-D7 are metal, and parallel between them and the output data bit line, for example Di0, is in polysilicon, in a plane between the plane of the data bit lines input and the substrate. The layer contact interconnection point to the data bit line outlet is done by a metal line made in the same plane as the input data bit lines and parallel to them. This metal line is noted lm0 for the stage Ep0 and lm1 for the stage Ep1.
Les couches d'interconnexion médianes ou locales peuvent être réalisées en diffusion, en métal ou autres, selon la technologie du circuit programmable. The middle or local interconnection layers can be made in diffusion, metal or others, based on programmable circuit technology.
Par exemple et comme plus particulièrement représenté en figures 4 et 5, elles sont réalisées en diffusion, par implantation ionique (appelé procédé d'implant). Ou bien la couche d'interconnexion médiane est elle en métal.For example and as more particularly shown in Figures 4 and 5, they are made in diffusion, by ion implantation (called process implant). Or the middle interconnection layer is it made of metal.
En coupe AA représentée sur la figure 5, on distingue par exemple pour l'étage Ep0 la ligne de sortie de données en polysilicium Di0, connectée à la ligne de métal lm0 au-dessus, et les contacts de cette ligne de métal sur la couche d'interconnexion médiane DM0 de l'étage de permutation Ep0.In section AA represented in FIG. 5, we distinguishes for example for the stage Ep0 the line of Di0 polysilicon data output, connected to the metal line lm0 above, and the contacts of this metal line on the middle interconnection layer DM0 of the permutation stage Ep0.
Les couches d'interconnexions locales D13 et D14 des cellules c3 et c4 des étages Ep0 et Ep1 sont aussi visibles sur cette figure 5. Et, on voit l'extension de la couche d'interconnexion médiane DM1 à la couche d'interconnexion locale D13 de la cellule c3 de l'étage Ep1.The local interconnection layers D13 and D14 cells c3 and c4 of stages Ep0 and Ep1 are also visible in this figure 5. And, we see the extension of the middle interconnection layer DM1 to the layer local interconnection D13 of cell c3 of the floor Ep1.
La particularisation d'un étage de permutation se fait donc par extension de la couche d'interconnexion médiane à la couche d'interconnexion locale qui contacte la ligne de bit de donnée d'entrée sélectionnée (dessin du masque).The specialization of a permutation stage is therefore by extension of the interconnection layer median to the local interconnect layer which contact the input data bit line selected (mask drawing).
La programmation du circuit de permutation selon l'invention, consiste alors selon ce procédé de fabrication à sélectionner l'extension de couche d'interconnexion médiane à la couche d'interconnexion locale qui définit la permutation, extension qui va permettre de relier la ligne de bit d'entrée à la ligne de bit de sortie.Programming the permutation circuit according to the invention then consists according to this method of manufacturing to select layer extension interconnection layer at the interconnection layer locale which defines permutation, extension which goes allow the input bit line to be connected to the line output bit.
Cette particularisation programmable est particulièrement aisée à mettre en oeuvre, permettant une souplesse d'adaptation du procédé de fabrication à chaque circuit programmable : utilisation de circuits de permutation sur les autres mémoires ou non, avec identité de brouillage ou non, etc... et permettant un brouillage différent pour chaque circuit programmable : On n'a plus d'identité de protection au sein d'une même famille. Il en résulte une protection considérablement améliorée des circuits programmables.This programmable specialization is particularly easy to implement, allowing flexibility in adapting the manufacturing process to each programmable circuit: use of circuits of permutation on the other memories or not, with jamming identity or not, etc ... and allowing a different interference for each programmable circuit: We no longer have a protective identity within the same family. This results in protection considerably improved programmable circuits.
Avantageusement, pour une mémoire programme de type mémoire morte, on utilise le même procédé de fabrication que pour le circuit de permutation :
- d'une part, on réalise les cellules de permutation et les cellules de mémoire morte dans les mêmes étapes de fabrication, avec les mêmes masques, au moyen des mêmes types de couches d'interconnexion; la programmation ou particularisation du circuit pour le programme et le brouillage spécifiés par le client se fait au même niveau de fabrication, d'où une grande simplification de la fabrication;
- d'autre part, on augmente la difficulté d'inspection visuelle du circuit par utilisation de technologies similaires.
- on the one hand, the permutation cells and the read-only memory cells are produced in the same manufacturing steps, with the same masks, by means of the same types of interconnection layers; the programming or specificization of the circuit for the program and the interference specified by the customer is done at the same level of manufacturing, hence a great simplification of manufacturing;
- on the other hand, the difficulty of visual inspection of the circuit is increased by the use of similar technologies.
Selon le procédé décrit en relation avec les figures 4 et 5, la programmation des données exécutables brouillées en mémoire morte est réalisée, en utilisant une couche d'interconnexion médiane pour une même ligne de bit et une couche d'interconnexion locale pour chaque cellule étendue ou non à la couche d'interconnexion médiane selon l'état programmé voulu 0 ou 1 de la cellule.According to the process described in relation to Figures 4 and 5, data programming executables scrambled in read-only memory is performed, using a middle interconnect layer to the same bit line and an interconnection layer local for each cell extended or not to the layer interconnection point according to the programmed state desired 0 or 1 of the cell.
Claims (9)
- Programmed circuit comprising a program memory (ROM, RAM) connected by at least one data bus (DBUS) to a control unit (UC), the program memory containing data of an executable code scrambled by applying a permutation of bits to data of the said code, the said permutation being applied either to the instruction data or to other data of the said code and the programmed circuit comprising at least a first permutation circuit (DBr1) between the said data bus and an instruction input or a data input of the said control unit, characterised in that the said permutation circuit comprises n input bit lines (D0-D7) and supplies as an output n output bit lines (Di0-Di7), and n programmed permutation stages (Ep0-Ep7) per mask, each permutation stage (Ep0) receiving the said n input bit lines (D0-D7) and supplying a single output bit line (Di0), and comprising one permutation cell (c0-c7) per input bit line (D0-D7), the programming of each stage consisting of making, in only one cell (c7) amongst the n cells of each stage, an electrical interconnection between the input bit line (D7) electrically connected to the said cell and the output bit line of the stage (Di0), the electrical connections to the input data bit lines and to the output bit lines and the interconnections corresponding to levels of manufacture and interconnection of the circuit.
- Programmed circuit according to Claim 1, characterised in that the scrambled data of the executable code stored in program memory are the data other than the instruction data and in that another permutation circuit is provided, placed between the program memory and the data bus, in order to apply a corresponding scrambling to these data, and to apply a corresponding scrambling to the instruction data before they are transmitted over the data bus, the first permutation circuit (DBr1) being provided at the instruction input of the control unit (UC).
- Programmed circuit according to Claim 1 or 2, in which the instruction data of the program memory pass scrambled over the data bus and in which the first permutation circuit (DBr1) is applied as an instruction input of the control unit (UC), and comprising one or more writeable or rewriteable memories (RAM, EEPROM) belonging or not to the program memory, characterised in that it comprises at least one other permutation circuit (DBr2), placed between the data bus (DBUS) and a writeable or rewriteable memory (RAM), in order to apply a corresponding jamming to the data coming from the data bus and to be written in the said memory and to apply a corresponding unscrambling to the data of the said memory to be transmitted over the bus.
- Programmed circuit according to Claim 3, characterised in that the permutation circuits (DBr2, DBr3) associated with different writeable or rewriteable memories effect different permutations.
- Programmed circuit according to Claim 3 or 4, characterised in that the first permutation circuit (DBr1) at the instruction input of the control unit and a permutation circuit (DBr2) associated with a writeable or rewriteable memory (RAM) are such that they effect different permutations.
- Programmed circuit according to any one of the preceding claims, characterised in that each permutation cell (c0) associated with an input data bit line (D0) of a permutation stage comprises a local interconnection line (D10) connected to the said input bit line (D0), and in that each permutation stage (Ep0) comprises a middle interconnection line (DM0) connected to the output data bit line (Di0), the programmed interconnection in each stage consisting of an extension of the said middle interconnection line (DM0) to the said local interconnection line (D10) of one cell amongst the n cells of the said permutation stage.
- Programmed circuit according to Claim 6, characterised in that the middle interconnection line (DM0) and the local interconnection lines (D10-D17) are interconnection lines produced by ion implantation.
- Programmed circuit according to Claim 7, characterised in that the middle interconnection line (DM0) of each permutation stage is produced from metal and the local interconnection line (D10-D17) in diffusion, by ion implantation.
- Programmed circuit according to any one of Claims 1 to 5, comprising a read only memory (ROM), characterised in that the permutation cells (c0-c7) are produced like the cells of the said read only memory.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9409485A FR2723223B1 (en) | 1994-07-29 | 1994-07-29 | DIGITAL INTERFERENCE METHOD AND APPLICATION TO A PROGRAMMABLE CIRCUIT |
FR9409485 | 1994-07-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
EP0694846A1 EP0694846A1 (en) | 1996-01-31 |
EP0694846B1 true EP0694846B1 (en) | 2002-05-22 |
Family
ID=9465930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP95401789A Expired - Lifetime EP0694846B1 (en) | 1994-07-29 | 1995-07-27 | Programmed circuit for numerical scrambling |
Country Status (5)
Country | Link |
---|---|
US (1) | US5850452A (en) |
EP (1) | EP0694846B1 (en) |
JP (1) | JPH08123680A (en) |
DE (1) | DE69526753D1 (en) |
FR (1) | FR2723223B1 (en) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPO521897A0 (en) * | 1997-02-20 | 1997-04-11 | Telstra R & D Management Pty Ltd | Invisible digital watermarks |
US6003117A (en) | 1997-10-08 | 1999-12-14 | Vlsi Technology, Inc. | Secure memory management unit which utilizes a system processor to perform page swapping |
EP0929040A3 (en) * | 1997-12-25 | 2007-06-27 | Nippon Telegraph and Telephone Corporation | Microprocessor with data randomizing |
WO2000026791A2 (en) * | 1998-11-05 | 2000-05-11 | Koninklijke Philips Electronics N.V. | Secure memory management unit which uses multiple cryptographic algorithms |
DE19922155A1 (en) * | 1999-05-12 | 2000-11-23 | Giesecke & Devrient Gmbh | Memory arrangement and memory access procedure for microcomputers has an additional scrambling step to increase data security, for use in financial applications etc. |
JP2001243791A (en) * | 2000-02-25 | 2001-09-07 | Mitsubishi Electric Corp | Data storage device, data measuring device, semiconductor analyzing device, and semiconductor device |
US7620832B2 (en) * | 2000-09-20 | 2009-11-17 | Mips Technologies, Inc. | Method and apparatus for masking a microprocessor execution signature |
DE10101552A1 (en) * | 2001-01-15 | 2002-07-25 | Infineon Technologies Ag | Cache memory and addressing method |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
US7711763B2 (en) | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7181484B2 (en) | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US7318145B1 (en) | 2001-06-01 | 2008-01-08 | Mips Technologies, Inc. | Random slip generator |
KR100428786B1 (en) * | 2001-08-30 | 2004-04-30 | 삼성전자주식회사 | Integrated circuit capable of protecting input/output data over internal bus |
US7913083B2 (en) * | 2003-09-05 | 2011-03-22 | Telecom Italia S.P.A. | Secret-key-controlled reversible circuit and corresponding method of data processing |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7594101B2 (en) | 2006-02-06 | 2009-09-22 | Stmicroelectronics S.A. | Secure digital processing unit and method for protecting programs |
EP1930834A1 (en) * | 2006-12-05 | 2008-06-11 | Siemens Schweiz AG | Cryptographically secured processor system |
KR100849956B1 (en) * | 2007-01-29 | 2008-08-01 | 삼성전자주식회사 | Semiconductor device and scrammbling data transfer method thereof |
CN101978647A (en) * | 2008-01-31 | 2011-02-16 | 耶德托公司 | Securing a smart card |
US8375225B1 (en) | 2009-12-11 | 2013-02-12 | Western Digital Technologies, Inc. | Memory protection |
US9983990B1 (en) * | 2013-11-21 | 2018-05-29 | Altera Corporation | Configurable storage circuits with embedded processing and control circuitry |
US10255462B2 (en) | 2016-06-17 | 2019-04-09 | Arm Limited | Apparatus and method for obfuscating power consumption of a processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3958081A (en) * | 1975-02-24 | 1976-05-18 | International Business Machines Corporation | Block cipher system for data security |
US3962539A (en) * | 1975-02-24 | 1976-06-08 | International Business Machines Corporation | Product block cipher system for data security |
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4172213A (en) * | 1977-11-17 | 1979-10-23 | Burroughs Corporation | Byte stream selective encryption/decryption device |
US4203166A (en) * | 1977-12-05 | 1980-05-13 | International Business Machines Corporation | Cryptographic file security for multiple domain networks |
FR2504730A1 (en) * | 1981-04-28 | 1982-10-29 | Efcis | Integrated circuit using MOS type field effect transistors - having interconnections at different levels |
US4633388A (en) * | 1984-01-18 | 1986-12-30 | Siemens Corporate Research & Support, Inc. | On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes |
US5095525A (en) * | 1989-06-26 | 1992-03-10 | Rockwell International Corporation | Memory transformation apparatus and method |
-
1994
- 1994-07-29 FR FR9409485A patent/FR2723223B1/en not_active Expired - Fee Related
-
1995
- 1995-07-27 EP EP95401789A patent/EP0694846B1/en not_active Expired - Lifetime
- 1995-07-27 DE DE69526753T patent/DE69526753D1/en not_active Expired - Lifetime
- 1995-07-31 US US08/509,363 patent/US5850452A/en not_active Expired - Lifetime
- 1995-07-31 JP JP7225678A patent/JPH08123680A/en active Pending
Non-Patent Citations (1)
Title |
---|
PELLERIN D., HOLLEY M.: "Practical Design using Programmable Logic", 1991, PRENTICE HALL, ENGLEWOOD CLIFFS NJ 07632 * |
Also Published As
Publication number | Publication date |
---|---|
FR2723223B1 (en) | 1996-08-30 |
FR2723223A1 (en) | 1996-02-02 |
US5850452A (en) | 1998-12-15 |
JPH08123680A (en) | 1996-05-17 |
EP0694846A1 (en) | 1996-01-31 |
DE69526753D1 (en) | 2002-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0694846B1 (en) | Programmed circuit for numerical scrambling | |
CA2480896C (en) | Method for making secure an electronic entity with encrypted access | |
WO1994011829A1 (en) | Synchronous smart card authentication and encryption circuit and method | |
FR2629248A1 (en) | SINGLE PROGRAMMING MEMORY TEST METHOD AND CORRESPONDING MEMORY | |
EP0051525B1 (en) | Logic array with simplified electric programming | |
FR3075444A1 (en) | SYSTEM COMPRISING A MEMORY ADAPTED TO IMPLEMENT CALCULATION OPERATIONS | |
EP1159797B1 (en) | Countermeasure method in an electronic component using a secret key cryptographic algorithm | |
EP0275765B1 (en) | Integrated circuit for digital signal processing | |
EP0703528B1 (en) | Electronic circuit for modulo computation in a finite field | |
EP1269290B1 (en) | Countermeasure method for a microcontroller based on a pipeline architecture | |
FR2871310A1 (en) | CONFIGURABLE LOGIC CIRCUIT RESISTANT TO DPA ATTACK | |
FR2728980A1 (en) | DEVICE FOR SECURING INFORMATION SYSTEMS ORGANIZED AROUND MICROPROCESSORS | |
EP2284690A2 (en) | Masking of a calculation performed according to an RSA-CRT algorithm | |
EP1715410B1 (en) | Protection of a calculation performed by an integrated circuit | |
FR2850768A1 (en) | Configurable electronic device for performing arithmetic calculation, has programmable circuit including granularity of programming of bits where circuit generates clock and control signals for arithmetic cells | |
EP0586472A1 (en) | Cryptographic device for data sequence not using a key | |
EP1119940B1 (en) | Countermeasure method in an electronic component using a secret key cryptographic algorithm | |
EP0142412A1 (en) | Device for the transformation of the appearance probability of logic vectors and for the generation of time-variable probability vector sequences | |
CA2234478C (en) | Improvements to smart cards | |
EP1109103B1 (en) | Process for secured data transfer | |
FR2742560A1 (en) | MULTI-PARALLEL PROCESSOR TABLE ARCHITECTURE | |
EP2471210A1 (en) | Counter-measurement method and device for protecting data circulating in an electrical component | |
FR2615638A1 (en) | COMPUTER OR TELEMATIC ENABLING DEVICE AND METHOD | |
FR2772160A1 (en) | CIRCUIT FOR CALCULATING FAST FOURIER TRANSFORMATION AND REVERSE QUICK FOURIER TRANSFORMATION | |
EP0329572B1 (en) | Multiplier of binary numbers having a very large number of bits |
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 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): DE FR GB IT |
|
17P | Request for examination filed |
Effective date: 19960723 |
|
RAP3 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: STMICROELECTRONICS S.A. |
|
17Q | First examination report despatched |
Effective date: 19990924 |
|
RTI1 | Title (correction) |
Free format text: PROGRAMMED CIRCUIT FOR NUMERICAL SCRAMBLING |
|
GRAG | Despatch of communication of intention to grant |
Free format text: ORIGINAL CODE: EPIDOS AGRA |
|
RTI1 | Title (correction) |
Free format text: PROGRAMMED CIRCUIT FOR NUMERICAL SCRAMBLING |
|
GRAG | Despatch of communication of intention to grant |
Free format text: ORIGINAL CODE: EPIDOS AGRA |
|
GRAH | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOS IGRA |
|
RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: STMICROELECTRONICS S.A. |
|
GRAH | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOS IGRA |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT;WARNING: LAPSES OF ITALIAN PATENTS WITH EFFECTIVE DATE BEFORE 2007 MAY HAVE OCCURRED AT ANY TIME BEFORE 2007. THE CORRECT EFFECTIVE DATE MAY BE DIFFERENT FROM THE ONE RECORDED. Effective date: 20020522 Ref country code: GB Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20020522 |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D Free format text: NOT ENGLISH |
|
REF | Corresponds to: |
Ref document number: 69526753 Country of ref document: DE Date of ref document: 20020627 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20020823 |
|
GBV | Gb: ep patent (uk) treated as always having been void in accordance with gb section 77(7)/1977 [no translation filed] |
Effective date: 20020522 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed |
Effective date: 20030225 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20140721 Year of fee payment: 20 |