ES2222353T3 - Procedimiento de contramedida para un microcontrolador basado en una arquitectura con "pipeline". - Google Patents
Procedimiento de contramedida para un microcontrolador basado en una arquitectura con "pipeline".Info
- Publication number
- ES2222353T3 ES2222353T3 ES01917164T ES01917164T ES2222353T3 ES 2222353 T3 ES2222353 T3 ES 2222353T3 ES 01917164 T ES01917164 T ES 01917164T ES 01917164 T ES01917164 T ES 01917164T ES 2222353 T3 ES2222353 T3 ES 2222353T3
- Authority
- ES
- Spain
- Prior art keywords
- instructions
- instruction
- insn
- countermeasure method
- microcontroller
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000006870 function Effects 0.000 description 2
- 101100179596 Caenorhabditis elegans ins-3 gene Proteins 0.000 description 1
- 101150089655 Ins2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 101150032953 ins1 gene Proteins 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/067—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
- G06K19/07—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
- G06K19/073—Special arrangements for circuits, e.g. for protecting identification code in memory
- G06K19/07309—Means for preventing undesired reading or writing from or onto record carriers
- G06K19/07363—Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
-
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
Procedimiento de contramedida para microcontrolador susceptible de ejecutar secuencias de instrucciones (INSn), dichas instrucciones se ejecutan según un procedimiento denominado de ¿pipeline¿, caracterizado porque el procedimiento consiste en introducir aleatoriamente por lo menos un tiempo de espera (B) entre dos instrucciones consecutivas (INSn, INSn+1) y/o en el seno de por lo menos una instrucción (INSn).
Description
Procedimiento de contramedida para un
microcontrolador basado en una arquitectura con
"pipeline".
El presente invento concierne un procedimiento de
contramedida para un microcontrolador, en el que se ejecutan
secuencias de instrucción de programas.
El presente invento se aplica, en particular, a
componentes electrónicos protegidos, tales como, por ejemplo,
microcontroladores para tarjeta inteligente.
Los microcontroladores son circuitos integrados
monolíticos que incorporan por lo menos un microprocesador de
nominado CPU para Central Processing Unit en terminología inglesa.
Estos microcontroladores son verdaderos ordenado res que se
mantienen en un solo substrato de silicio, o chip de circuito
integrado.
De este modo, las tarjetas inteligentes con
microcontrolador constituyen soportes de información protegidos que
poseen la misma estructura que un ordenador, es decir, que
permiten almacenar datos, pero asimismo, tratar informaciones. En
este marco, el papel del microcontrolador consiste en autentificar
la tarjeta y su portador, cifrar y descifrar mensajes y calcular
firmas electrónicas aportando la prueba de que se ha realizado
debidamente una operación lícita.
La figura 1 ilustra esquemáticamente la
estructura de un microcontrolador para tarjeta inteligente. Este
tipo de microcontrolador, integrado en un chip, comprende un
microprocesador, o CPU, en condiciones de tratar los datos y
programas registrados en el chip. El microprocesador está asociado
a diferentes tipos de memoria mediante bus de datos. Los programas
de funcionamiento y los algoritmos están almacenados generalmente
en una memoria ROM, mientras que los datos, bien sean o no
secretos, se almacenan en una memoria programable de tipo EEPROM
por ejemplo. Una memoria RAM contiene los registros de trabajo
necesarios para los diversos tratamientos internos. Un órgano de
entrada/salida compuesto de un conector, para una tarjeta
inteligente con contacto, se ocupa de los diálogos con el mundo
exterior.
Las operaciones del microordenador están
secuenciadas por un reloj (CLK). Por otra parte, el microordenador
tiene una alimentación Vcc y una tierra GND.
Existen esencialmente dos familias de
microcontrolado res. La mayoría de los microcontroladores que
existen hoy en día (aproximadamente un 90%) se basan en una
arquitectura CISC (del inglés Complex Instructions Set Computer),
en el que las instrucciones se leen y ejecutan por secuencias
mediante un gran motor de decodificación. No obstante, la tendencia
actual consiste en utilizar cada vez más microcontroladores de
arquitectura RISC (del inglés Reduced Instruction Set Computer), en
el que las instrucciones se leen y ejecutan en paralelo. Este tipo
de arquitectura necesita varios motores de decodificación costosos
en sitio en el chip de circuito integrado, pero también es mucho
más rápida en la ejecución de las secuencias de instrucciones. En
particular, las arquitecturas RISC que utilizan un procedimiento
denominado de "pipeline" permiten imbricar varias
instrucciones en subetapas, y ejecutar etapas de varias
instrucciones en un mismo ciclo de reloj. Más adelante describiremos
las particularidades del "pipeline" en arquitectura RISC.
Así pues, la ejecución de programa por el
microcontrolador debe protegerse, puesto que todos o parte de los
datos manipulados son secretos. La protección puede protegerse
mediante algoritmos matemáticos integrados en los programas
ejecutados, y/o mediante procedimientos denominados de
contramedida.
Un procedimiento de contramedida es un
procedimiento de protección, que consiste en evitar que los datos
manipulados durante la ejecución de las instrucciones de un
programa puedan interpretarse en el exterior del componente
protegido. Esta fuga de información es posible debido a la
estructura propia del microcontrolador, el cual puede estar
sometido a lo que se llaman ataques de corriente, o DPA para
Differential Power Attack en terminología inglesa.
La figura 2 ilustra el principio del ataque en
corriente por un grafo del consumo de corriente I del chip, en
función del número de impactos de reloj t.
Cuando el microprocesador ejecuta un programa
compuesto de una secuencia de instrucciones (Ins1, Ins2, Ins3,
...), con un algoritmo, bien sea o no secreto, buscará los datos
necesarios en memoria, los tratará y escribirá los resultados en
memoria.
Clásicamente, la ejecución de una secuencia de
instrucciones se desarrolla siempre del mismo modo, idéntica y
precisa, cualquiera que sea la arquitectura (CISC o RISC) del
microcontrolador utilizado.
Entonces resulta posible realizar un ataque en
corriente mediante la simple lectura del consumo de corriente del
microcontrolador (a partir de su alimentación Vcc), la cual puede
dejar entrever informaciones sobre los datos secretos manipulados.
Para obtener estas informaciones, es necesario realizar varias
veces la misma secuencia de instrucciones. Entonces resulta posible
correlacionar el consumo de corriente con los datos tratados
durante la ejecución de la misma instrucción. El consumo de
corriente del microcontrolador puede así resultar un verdadero
testigo de los datos manipulados.
Por ejemplo, un agresor puede proceder de la
siguiente manera. Si se considera un dato secreto de ocho octetos
k[i] con i de 1 a 8. Se utiliza un acumulador y se realiza
un bucle para i de 1 a 8, Acc= k[i]xor k[i+1].
Al final del bucle, se obtiene Acc= xor
(\Sigma(i=1a8)k[i]. Cuando se observa el
consumo de corriente I en función del tiempo durante esta secuencia
(bucle), se obtiene una curva con aspecto cíclico que es el reflejo
de lo que se ha ejecutado en el microcontrolador, es decir, que en
el ejemplo citado se obtienen ocho señales idénticas para las ocho
operaciones del bucle. No obstante, si se compara cada elemento de
las señales, se logran extraer diferencias, y de este modo,
informaciones sobre los k[i] secretos. Además, la
observación resulta facilitada por la posibilidad de mandar
ejecutar el mismo bucle varias veces. Puesto que el consumo de
corriente de la tarjeta es el mismo para una misma secuencia de
operaciones, se logra extraer la información buscada.
Por consiguiente, resulta indispensable eliminar
esta repetición en el consumo de corriente para una misma secuencia
de instrucciones. En ello radica el objetivo de los procedimientos
de contramedida.
Dichos procedimientos de contramedida ya existen,
en particular, en el ámbito del soporte lógico, en el que pueden
utilizarse programas que comprendan variantes aleatorias. Estos
programas pueden recurrir a subprogramas de manera aleatoria. De
este modo, para una misma tarea repetida varias veces, la cual
clásicamente recurriría a la misma secuencia de instrucciones, se
utilizan programas diferentes, los cuales ocasionan la ejecución de
diferentes secuencias de instrucción. La correlación entre el
consumo de corriente y los datos manipulados resulta imposible.
No obstante, esta solución software no es
evidente de aplicar. En efecto, es necesario escribir los
diferentes subprogramas, lo que es costoso en tiempo de desarrollo
y en tamaño de código. También se conoce gracias al documento FR 2
745 924, un medio de decorrelación del desarrollo de un programa
con las señales de un circuito.
El presente invento tiene por objeto un
procedimiento de contramedida que resuelve los inconvenientes del
arte anterior. El invento propone este tipo de procedimiento de
contramedida que está basado en la ejecución de las secuencias de
instrucciones, según un procedimiento denominado de
"pipeline" en un componente electrónico con arquitectura RISC,
por ejemplo.
El invento introduce el principio de la ejecución
aleatoria y no reproducible en cada secuencia de instrucciones, a
nivel de la misma instrucción.
El invento concierne más particularmente un
procedimiento de contramedida para microcontrolador, susceptible
de ejecutar secuencias de instrucciones, dichas instrucciones se
ejecutan según un procedimiento denominado de "pipeline",
caracterizado por que el procedimiento consiste en introducir
aleatoriamente, por lo menos un tiempo de espera, entre dos
instrucciones consecutivas, y/o en el seno de, por lo menos, una
instrucción.
Según una característica, las instrucciones se
dividen en una pluralidad de subetapas.
Según una particularidad, las subetapas pueden
consistir en:
- -
- una etapa de adquisición de la instrucción,
- -
- una etapa de decodificación de la instrucción,
- -
- una etapa de ejecución de la instrucción, y
- -
- una etapa de escritura del resultado de la instrucción.
Según una característica, el tiempo de espera se
introduce aleatoriamente entre dos subetapas cualesquiera de una
instrucción.
Según otra característica, las instrucciones
pueden ser macroinstrucciones correspondientes a módulos lógicos
complejos, como subbloques de algoritmos criptográficos.
Según otra característica, el tiempo de espera se
introduce varias veces aleatoriamente en el transcurso de la
ejecución de la secuencia de instrucciones.
Según una característica, el tiempo de espera se
introduce a raíz de un mando software que precede la secuencia de
instrucciones por proteger.
Según una característica, el procedimiento se
realiza a través de una implantación no software directamente
tomada a cargo por la electrónica de decodificación de
instrucciones.
Según otra característica, la introducción del
tiempo de espera puede ajustarse de manera estática o dinámica,
mediante un parámetro estático o dinámico, o mediante un parámetro
electrónico o software, de manera a regular la variabilidad de la
ejecución de una misma secuencia de instrucciones.
Según una aplicación del invento, el
procedimiento está implementado en un chip de circuito integrado
que comprende un microcontrolador de arquitectura RISC con
"pipeline".
El invento se aplica ventajosamente a todo
dispositivo protegido de tipo tarjeta inteligente.
El invento presenta la ventaja de proponer un
mecanismo implementado directamente a nivel del microcontrolador,
en el chip de circuito integrado. Así se evita la molesta tarea de
las soluciones software.
Además, el procedimiento de contramedida según el
invento permite garantizar la ejecución de cualquier programa, ya
esté o no protegido, en un componente electrónico equipado de dicho
mecanismo de contramedida.
En efecto, es el mismo componente, y no la
secuencia de instrucciones del programa, el que se ocupa de la
ejecución aleatoria y por lo tanto de la protección de los datos
manipulados. Esto permite ventajosamente tener programas
descorrelados del componente, lo que puede resultar muy útil en el
marco de algunas aplicaciones. De este modo, puede utilizarse un
mismo componente con diferentes programas sin perder su nivel de
protección.
Se pondrán de manifiesto otras ventajas y
particularidades del invento en el transcurso de la siguiente
descripción, la cual se da a título de ejemplo ilustrativo y no
limitativo en referencia a las figuras, en las que:
- La figura 1, ya descrita, ilustra
esquemáticamente un chip de circuito integrado equipado de un
microcontrolador,
- La figura 2, ya descrita, es un grafo que
ilustra el procedimiento del ataque en corriente de un componente
electrónico protegido,
- La figura 3, es un esquema que ilustra el
funcionamiento de un microcontrolador clásico de arquitectura CISC
para una decodificación de instrucciones,
- La figura 4 es un esquema que ilustra el
funcionamiento de un microcontrolador clásico de arquitectura RISC
para una decodificación de instrucciones,
- La figura 5, es un esquema que ilustra el
funcionamiento de un microcontrolador de arquitectura RISC según el
presente invento, para una decodificación de instrucciones.
El procedimiento de contramedida según el invento
se basa en el principio del tratamiento de las instrucciones en
pipeline utilizado generalmente en un microcontrolador de
arquitectura RISC.
Varios puntos distinguen la arquitectura RISC de
la arquitectura CISC.
Por una parte, a cada instrucción corresponde un
solo bloque lógico implementado en forma de un submódulo
electrópico específico y único, de tal modo que la decodificación y
la ejecución de una instrucción pueda hacerse en un sólo ciclo de
reloj, mientras que la arquitectura CISC utiliza un solo bloque
electrónico que trata secuencialmente todas las instrucciones.
Por otra parte, el bus de datos se diferencia del
bus de instrucciones para permitir la decodificación de una
instrucción en cada ciclo de reloj, independientemente de los datos
almacenados en memoria y utilizados por las demás instrucciones.
Esto permite ir a buscar datos en memoria simultáneamente a la
decodificación de las instrucciones que deben tratarlas. Por otra
parte, todas las instrucciones deben tener un tamaño equivalente
como mínimo al del bus externo de datos, de tal modo que la
decodificación de las instrucciones sea directa y no implique
ningún plazo.
Por lo general se distinguen dos modelos de
microcontroladores de arquitectura R.I.S.C.,
- -
- el modelo de "Stanford" que utiliza encadenamientos de instrucciones optimizadas, más comúnmente conocidas bajo el término técnico de "pipeline", que permiten utilizar un juego de instrucciones muy potente;
- -
- el modelo de "Berkeley" que utiliza encadenamientos de instrucciones que permiten recurrir rápidamente a subrutinas, y particularmente adaptado a aplicaciones en tiempo real.
El presente invento se aplica más específicamente
a la técnica de "pipeline" propuesta en el modelo de
"Stanford". En efecto, el invento propone un procedimiento de
contramedida que se basa en esta arquitectura de pipeline.
Los "pipelines" permiten imbricar la
ejecución de varias instrucciones, al dividir cada instrucción en
varias subetapas, y al ejecutar estas subetapas en paralelo. Así
pues, se puede definir una fase de pipeline como el conjunto de
subetapas ejecutadas simultáneamente. De esta manera, el número de
ciclo de reloj por instrucción se dividirá proporcionalmente por el
número de fases del pipeline.
Cabe mencionar que durante la ejecución de un
programa, más sencillamente de una serie de instrucciones, el
funcionamiento del pipeline puede romperse cuando sobrevienen
instrucciones de tipo conexión, salto, interrupción y otras
excepciones a la ejecución lineal de instrucciones.
Las figuras 3 y 4 ilustran respectivamente el
funcionamiento clásico de un microcontrolador de arquitectura CISC
y de arquitectura RISC con pipeline.
Las instrucciones INSn pueden ser instrucciones
simples o macroinstrucciones que corresponden a módulos lógicos
complejos, tales como subbloques de algoritmos criptográficos, como
por ejemplo instrucciones de permutación, compresión, expansión,
funciones matemáticas no básicas, tablas de correspondencia, u
otro.
Las instrucciones INSn se dividen ventajosamente
en varias subetapas. Se da como ejemplo un caso de división en
cuatro subetapas, el cual no deberá considerarse como
restrictivo.
La primera etapa "F", del acrónimo
anglosajón "FETCH", permite ir a buscar en memoria la
instrucción que debe decodificarse. Seguidamente posiciona esta
instrucción en el bus, la cual se transmite a continuación a la
siguiente etapa.
La segunda etapa "D", del acrónimo
anglosajón "DECODE", permite decodificar la instrucción, es
decir activar el submódulo del microcontrolador que sabe tratar
esta instrucción.
La tercera etapa "E", del acrónimo
anglosajón "EXECUTE", permite mandar ejecutar la instrucción
en el submódulo del microcontrolador.
La última etapa "W", del acrónimo anglosajón
"WRITE", permite escribir el resultado de la instrucción
ejecutada por el submódulo del microcontrolador en el bus. Este
resultado se utiliza seguidamente en el resto de la ejecución, o
sino regresa de nuevo a la memoria.
Podemos constatar, a partir de la figura 3, que
solamente se han podido terminar dos instrucciones en ocho ciclos
de reloj por un microcontrolador de arquitectura CISC.
Al contrario, como se ilustra en la figura 4,
para un "pipeline" de cuatro subetapas, se han podido terminar
seis instrucciones en solamente nueve ciclos de reloj. El tiempo
de ejecución global es menor porque han podido ejecutarse
simultáneamente subetapas de varias instrucciones.
No obstante, este tipo de arquitectura no está
protegida contra un ataque de corriente. En efecto, si se repite
varias veces la misma secuencia de instrucciones, siempre tendremos
el mismo encadenamiento de fases del pipeline con el mismo consumo
de corriente.
Con el fin de resolver el problema ocasionado por
los ataques de corriente y evitar la reproductibilidad del consumo
de corriente para una misma secuencia de instrucciones ejecutada
varias veces, se introduce aleatoriamente un tiempo de espera,
Break B, en el tratamiento de las instrucciones. Este tiempo de
espera B puede introducirse aleatoriamente al principio de una
instrucción, y/o entre dos subetapas cualesquiera de una misma
instrucción.
El tiempo de espera aleatorio B puede
introducirse igualmente varias veces si fuera necesario en el
transcurso de la ejecución de una secuencia de instrucciones.
La figura 5 ilustra el mecanismo del
procedimiento de contramedida según el invento.
Los tiempos de espera aleatorios B impiden todo
tipo de reproductibilidad del consumo en corriente, modificando en
cada secuencia de instrucciones, las etapas del pipeline sin
perturbar la ejecución de las instrucciones.
El procedimiento según el invento se realiza a
través de una implementación no software, directamente aplicada
por el módulo electrónico (hardware) de decodificación de las
instrucciones del microcontrolador.
El procedimiento puede regularse en su
funcionamiento, de manera estática o dinámica, por medios
electrónicos o softwares, para obtener más o menos variabilidad en
la ejecución repetida de una misma secuencia de instrucciones.
Según una posibilidad de aplicación del
procedimiento según el invento, la introducción del tiempo de
espera B puede acondicionarse a una puesta en marcha dirigida de
manera software, por ejemplo, justo antes de la ejecución de la
secuencia de instrucciones que se desea proteger. De este modo, no
se compromete la rapidez de ejecución de una secuencia de
instrucciones que no necesita ninguna protección particular.
El procedimiento según el invento permite, así
pues, proteger la ejecución aleatoria contra una secuencia de
instrucciones, es decir, la no reproducibilidad de esta secuencia de
una a otra ejecución, y esto para obtener un mismo resultado
funcional.
Simplemente debe definirse un compromiso con el
fin de no alargar el tiempo de ejecución de la secuencia de
instrucciones, y perder, por consiguiente, la principal ventaja del
pipeline.
Claims (11)
1. Procedimiento de contramedida para
microcontrolador susceptible de ejecutar secuencias de
instrucciones (INSn), dichas instrucciones se ejecutan según un
procedimiento denominado de "pipeline", caracterizado
porque el procedimiento consiste en introducir aleatoriamente por
lo menos un tiempo de espera (B) entre dos instrucciones
consecutivas (INSn, INSn+1) y/o en el seno de por lo menos una
instrucción (INSn).
2. Procedimiento de contramedida según la
reivindicación 1, caracterizado porque las instrucciones
(INSn) se dividen en una pluralidad de sub-
etapas.
etapas.
3. Procedimiento de contramedida según la
reivindicación 2, caracterizado porque las subetapas pueden
consistir en:
- -
- una etapa de adquisición de la instrucción (F),
- -
- una etapa de decodificación de la instrucción (D),
- -
- una etapa de ejecución de la instrucción (E), y
- -
- una etapa de escritura del resultado de la instrucción(W).
4. Procedimiento de contramedida según una de las
reivindicaciones 2 a 3, caracterizado porque el tiempo de
espera (B) se introduce aleatoriamente entre dos subetapas
cualesquiera de una instrucción (INSn).
5. Procedimiento de contramedida según la
reivindicación 1, caracterizado porque las instrucciones
(INSn) son macroinstrucciones que corresponden a módulos lógicos
complejos, tales como subbloques de algoritmos criptográficos.
6. Procedimiento de contramedida según cualquiera
de las reivindicaciones anteriores, caracterizado porque el
tiempo de espera (B) se introduce varias veces en el transcurso de
la ejecución de la secuencia de instrucciones.
7. Procedimiento de contramedida según
cualquiera de las reivindicaciones anteriores, caracterizado
porque el tiempo de espera (B) se introduce a raíz de un mando
software que precede la secuencia de instrucciones por
proteger.
8. Procedimiento de contramedida según
cualquiera de las reivindicaciones anteriores, caracterizado
porque se realiza a través de una implementación no software
directamente tomada a cargo por la electrónica de decodificación de
instrucciones del microcontrolador.
9. Procedimiento de contramedida según
cualquiera de las reivindicaciones anteriores, caracterizado
porque el tiempo de espera (B) se ajusta de manera estática o
dinámica, mediante un parámetro electrónico o software, de manera a
ajustar la variabilidad de la ejecución de una misma secuencia de
instrucciones.
10. Procedimiento según cualquiera de las
reivindicaciones anteriores, caracterizado porque se aplica
en un chip de circuito integrado que comprende un microcontrolador
de arquitectura RISC con "pipeline".
11. Dispositivo protegido, de tipo tarjeta
inteligente, caracterizado porque comprende un componente
electrónico en condiciones para aplicar el procedimiento de
contramedida según cualquiera de las reivindicaciones de 1 a
10.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0004426A FR2807591B1 (fr) | 2000-04-06 | 2000-04-06 | Procede de contre-mesure pour un micro-controleur base sur une architecture avec "pipeline" |
FR0004426 | 2000-04-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2222353T3 true ES2222353T3 (es) | 2005-02-01 |
Family
ID=8848959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES01917164T Expired - Lifetime ES2222353T3 (es) | 2000-04-06 | 2001-03-16 | Procedimiento de contramedida para un microcontrolador basado en una arquitectura con "pipeline". |
Country Status (10)
Country | Link |
---|---|
US (1) | US7376844B2 (es) |
EP (1) | EP1269290B1 (es) |
JP (1) | JP2004510213A (es) |
CN (1) | CN1426547A (es) |
AU (1) | AU2001244258A1 (es) |
DE (1) | DE60103520T2 (es) |
ES (1) | ES2222353T3 (es) |
FR (1) | FR2807591B1 (es) |
MX (1) | MXPA02009748A (es) |
WO (1) | WO2001077791A1 (es) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2835935B1 (fr) * | 2002-02-14 | 2004-04-16 | Geneticware Co Ltd | Structure pour une logique en pipeline controlee |
US7653906B2 (en) * | 2002-10-23 | 2010-01-26 | Intel Corporation | Apparatus and method for reducing power consumption on simultaneous multi-threading systems |
DE10307797B4 (de) * | 2003-02-24 | 2010-11-11 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Ermitteln einer Unregelmäßigkeit in einem Ablauf eines Nutzprogramms |
US7647486B2 (en) * | 2006-05-02 | 2010-01-12 | Atmel Corporation | Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode |
DE102006038877B4 (de) * | 2006-08-18 | 2018-01-25 | Giesecke+Devrient Mobile Security Gmbh | Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium |
DE102006038879A1 (de) | 2006-08-18 | 2008-02-21 | Giesecke & Devrient Gmbh | Verfahren und Vorrichtung zur nebenläufigen Ausführung von Prozessen |
JP4861423B2 (ja) * | 2006-09-20 | 2012-01-25 | 富士通株式会社 | 情報処理装置および情報管理方法 |
JP4680876B2 (ja) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び命令フェッチ制御方法 |
EP1936527A1 (fr) * | 2006-12-18 | 2008-06-25 | Gemplus | Procédé permettant de faire varier le nombre d'exécution de contre-mesures dans un code exécuté |
EP2000936A1 (en) * | 2007-05-29 | 2008-12-10 | Gemplus | Electronic token comprising several microprocessors and method of managing command execution on several microprocessors |
JP2011090592A (ja) * | 2009-10-26 | 2011-05-06 | Sony Corp | 情報処理装置とその命令デコーダ |
CN102970131A (zh) * | 2011-08-31 | 2013-03-13 | 北京中电华大电子设计有限责任公司 | 一种防止对分组算法进行功耗攻击的电路结构 |
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4077061A (en) * | 1977-03-25 | 1978-02-28 | Westinghouse Electric Corporation | Digital processing and calculating AC electric energy metering system |
JPH0623954B2 (ja) * | 1985-03-29 | 1994-03-30 | 富士通株式会社 | 情報処理装置の性能調整方式 |
US5761466A (en) * | 1994-05-09 | 1998-06-02 | Lsi Logic Corporation | Soft programmable single-cycle/pipelined micro-programmed control system |
FR2745924B1 (fr) * | 1996-03-07 | 1998-12-11 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
DE19834076A1 (de) * | 1998-07-29 | 2000-02-10 | Philips Corp Intellectual Pty | Anordnung zur elektronischen Verarbeitung von Datensignalen |
US6470291B1 (en) * | 1998-09-25 | 2002-10-22 | Seagate Removable Storage Solutions Llc | Velocity feedback measurement method |
JP2001094550A (ja) * | 1999-09-17 | 2001-04-06 | Toshiba Corp | 信号処理装置 |
-
2000
- 2000-04-06 FR FR0004426A patent/FR2807591B1/fr not_active Expired - Fee Related
-
2001
- 2001-03-16 WO PCT/FR2001/000794 patent/WO2001077791A1/fr active IP Right Grant
- 2001-03-16 US US10/240,542 patent/US7376844B2/en not_active Expired - Lifetime
- 2001-03-16 CN CN01807527A patent/CN1426547A/zh active Pending
- 2001-03-16 DE DE60103520T patent/DE60103520T2/de not_active Expired - Lifetime
- 2001-03-16 EP EP01917164A patent/EP1269290B1/fr not_active Expired - Lifetime
- 2001-03-16 AU AU2001244258A patent/AU2001244258A1/en not_active Abandoned
- 2001-03-16 MX MXPA02009748A patent/MXPA02009748A/es active IP Right Grant
- 2001-03-16 JP JP2001574580A patent/JP2004510213A/ja active Pending
- 2001-03-16 ES ES01917164T patent/ES2222353T3/es not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20030115478A1 (en) | 2003-06-19 |
EP1269290A1 (fr) | 2003-01-02 |
CN1426547A (zh) | 2003-06-25 |
AU2001244258A1 (en) | 2001-10-23 |
DE60103520D1 (de) | 2004-07-01 |
WO2001077791A1 (fr) | 2001-10-18 |
FR2807591A1 (fr) | 2001-10-12 |
EP1269290B1 (fr) | 2004-05-26 |
MXPA02009748A (es) | 2003-03-27 |
DE60103520T2 (de) | 2005-06-16 |
FR2807591B1 (fr) | 2003-08-08 |
JP2004510213A (ja) | 2004-04-02 |
US7376844B2 (en) | 2008-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2222353T3 (es) | Procedimiento de contramedida para un microcontrolador basado en una arquitectura con "pipeline". | |
Alrimeih et al. | Fast and flexible hardware support for ECC over multiple standard prime fields | |
US10430565B2 (en) | Securing microprocessors against information leakage and physical tampering | |
Suh et al. | Aegis: A single-chip secure processor | |
ES2205784T3 (es) | Procedimiento de proteccion de datos mediante la ejecucion de un algoritmo criptografiado. | |
US8429379B2 (en) | Reconfigurable microprocessor configured with multiple caches and configured with persistent finite state machines from pre-compiled machine code instruction sequences | |
US7036017B2 (en) | Microprocessor configuration with encryption | |
Li et al. | SBAP: Software-based attestation for peripherals | |
US20070075732A1 (en) | System and method for using dummy cycles to mask operations in a secure microcontroller | |
WO2003058409A3 (en) | Protecting a device against unintended use in a secure environment | |
KR20130120985A (ko) | 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법 | |
Höller et al. | Hardware/software co-design of elliptic-curve cryptography for resource-constrained applications | |
Antognazza et al. | Metis: An integrated morphing engine CPU to protect against side channel attacks | |
JP4168305B2 (ja) | Icカードとマイクロコンピュータ | |
Gautschi et al. | SIR10US: A tightly coupled elliptic-curve cryptography co-processor for the OpenRISC | |
JP2001266103A (ja) | Icカードとマイクロコンピュータ | |
EP3291478A1 (en) | Software protection against differential fault analysis | |
ES2312427T3 (es) | Procedimiento de contramedida en un microcircuito y tarjeta inteligente que incorpora dicho microcircuito. | |
EP3214566B1 (en) | Preventing side channel attacks on a cpu | |
Liu et al. | Reconfigurable Cryptographic Processor | |
Bertoni et al. | ECC hardware coprocessors for 8-bit systems and power consumption considerations | |
ES2822298T3 (es) | Procedimiento de puesta en práctica segura de un módulo funcional en un componente electrónico, y componente electrónico correspondiente | |
WO2005088442A2 (en) | Pipeline circuit | |
JP2008542894A (ja) | 電気回路装置及びその動作方法 | |
US20240232342A9 (en) | Protection of masked data |