ES2258306T3 - Procedimiento para realizar un programa de encriptacion para encriptar datos en un soporte de datos portatil basado en microprocesador. - Google Patents
Procedimiento para realizar un programa de encriptacion para encriptar datos en un soporte de datos portatil basado en microprocesador.Info
- Publication number
- ES2258306T3 ES2258306T3 ES99113007T ES99113007T ES2258306T3 ES 2258306 T3 ES2258306 T3 ES 2258306T3 ES 99113007 T ES99113007 T ES 99113007T ES 99113007 T ES99113007 T ES 99113007T ES 2258306 T3 ES2258306 T3 ES 2258306T3
- Authority
- ES
- Spain
- Prior art keywords
- program
- execution
- encryption
- subroutines
- order
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- 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
-
- 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
-
- 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
- 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/77—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 smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
- G06Q20/341—Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/0806—Details of the card
- G07F7/0813—Specific details related to card security
- G07F7/082—Features insuring the integrity of the data on or in the card
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/10—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
- G07F7/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
- H04L2209/805—Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Ejecución de programa de codificación de datos en un soporte de datos portátil con microprocesador. El procedimiento consiste en utilizar un programa con varios subprogramas subrutinas, procesos, y controles, que pueden funcionar en paralelo. Cuando el programa está en funcionamiento, la secuencia de tiempo de tratamiento de al menos dos subprogramas puede intercambiarse aleatoriamente teniendo en cuenta al menos un número aleatorio para cada tratamiento de programa.
Description
Procedimiento para realizar un programa de
encriptación para encriptar datos en un soporte de datos portátil
basado en microprocesador.
La invención se refiere a un procedimiento para
realizar un programa de encriptación para la encriptación de datos
en un soporte de datos portátil basado en microprocesador. Un
soporte de datos portátil de este tipo es, por ejemplo, una tarjeta
chip que se conecta a un terminal de tarjetas correspondiente, el
aparato de intercambio de datos, para el intercambio de datos y para
la alimentación de energía. Las tarjetas chip de microprocesador que
pueden encriptar datos mediante un programa de encriptación se
emplean, por ejemplo, en forma de tarjetas bancarias o en forma de
tarjetas de autorización de acceso para redes de radiotelefonía
móvil según el estándar GSM. A este respecto, a la encriptación de
datos e información se le atribuye una importancia cada vez mayor.
De manera correspondiente, aumentan también las demandas de
seguridad de la encriptación frente a ataques.
Los soportes de datos portátiles que son objeto
de la presente invención no disponen de una alimentación de energía
propia, por ejemplo, en forma de una pila o célula solar. La
alimentación de energía del soporte de datos portátil se realiza a
través del aparato para el intercambio de datos con el que también
tiene lugar la comunicación. Las tarjetas chip presentan
superficies eléctricas de contacto en la superficie de la tarjeta
para poder comunicar con el aparato de intercambio de datos a través
de contactos correspondientes en éste. Una de estas superficies de
contacto está prevista para la alimentación de la tensión de
alimentación y de la corriente de alimentación. Otra superficie de
contacto sirve a la conexión de masa, una a la transmisión de datos
en serie bidireccional desde y hacia el aparato de intercambio de
datos, una a la alimentación de una señal de sincronización, otra
superficie de contacto está prevista para la recepción de una señal
de reajuste.
Los soportes de datos portátiles que son objeto
de la invención, presentan un módulo semiconductor integrado en el
que se dispone un microprocesador con una memoria fija de sólo
lectura (ROM-Read Only Memory), una memoria de
acceso aleatoria (RAM, Random Access Memory) en las que está
almacenado el sistema operativo o al menos partes del mismo, y una
memoria no aleatoria variable (EEPROM Electrical Erasable
Programamable Read Only Memory, memoria de sólo lectura programable
y borrable eléctricamente). Con ello, el soporte de datos portátil
representa una unidad de microordenador que, sin embargo, necesita
una alimentación externa de tensión y corriente (desde fuera del
soporte de datos
portátil).
portátil).
El microprocesador forma los circuitos de
tratamiento para ejecutar programas, especialmente también programas
de encriptación, que se graban en la memoria EEPROM y/o en la
memoria ROM. Aquí se almacenan también claves secretas a las que no
puede accederse desde fuera. Estas claves sirven para la
encriptación de los datos. Dado que los programas de encriptación
(algoritmos) son en su mayoría conocidos por sí mismos, toda la
seguridad en cuanto a la encriptación de los datos radica en las
claves secretas.
En consecuencia, los datos encriptados son una
función del programa de encriptación en función de los datos no
encriptados (lenguaje claro) y al menos una clave secreta:
D_{encript} =
S (K_{encript},
datos),
donde s es el programa de
encriptación, D_{encript} son los datos encriptados y
K_{encript} indica la clave
secreta.
Un programa de encriptación de este tipo conocido
en general es, por ejemplo, el denominado algoritmo DES. Un
programa de encriptación de este tipo se compone de nuevo de varios
niveles de programa (bloques de función) que se suceden en el
tiempo, los cuales a su vez presentan varias subrutinas en las que
el orden de ejecución temporal de determinadas subrutinas no influye
en el resultado de la encriptación. En este caso se habla de
subrutinas paralelizables que, sin embargo, se procesan de manera
secuencial en el soporte de datos portátil. En este sentido pueden
ser subrutinas: procedimientos, rutinas y comandos.
Debido a la estructura física y a las propiedades
físicas de los chips semiconductores empleados en los soportes de
datos portátiles, el consumo de corriente y el consumo de potencia
del soporte de datos portátil durante la ejecución de programas no
son constantes, sino que más bien están sometidos a oscilaciones
temporales. En este caso se ha demostrado que las oscilaciones de la
corriente de alimentación están correlacionadas incluso con
determinados comandos de programa y con la estructura binaria
(número de ceros y de unos) de los datos que van a procesarse. En
determinadas circunstancias, las oscilaciones tienen lugar incluso
de manera sincrónica al ciclo con el funciona el soporte de datos
portátil. Para un usuario no autorizado familiarizado con la técnica
es sencillo registrar estas oscilaciones de la corriente de
alimentación que se suministran desde el aparato de intercambio de
datos al soporte de datos portátil mediante un osciloscopio de
memoria, instalando en el conducto de corriente de alimentación un
resistor de medición y registrando en el osciloscopio la caída de
tensión. Con vistas a la ejecución de programas de encriptación en
soportes de datos portátiles, los atacantes tienen la posibilidad
con esto de sacar conclusiones con respecto a las claves secretas
utilizadas y/o los datos encriptados mediante el registro de
oscilaciones de corriente durante la ejecución del programa de
encriptación. Esto se facilita especialmente porque los programas de
encriptación, incluyendo las subrutinas utilizadas en ellos, son
conocidos por sí mismos. Si un atacante registra ahora las
oscilaciones de corriente en cada caso para una pluralidad de
encriptaciones con diferentes datos en cada caso, entonces puede
sacar conclusiones con respecto a la o las claves utilizadas a
partir de diferencias en las características de oscilación de
corriente correspondientes. En este caso, un atacante puede
recurrir a procedimientos de correlación y medios de análisis
estadísticos conocidos de las matemáticas. Si el atacante ha
averiguado de esta manera la clave secreta, entonces la seguridad
de la encriptación ya no está garantizada dado que los programas de
encriptación son conocidos por sí mismos. Especialmente en
procedimientos de encriptación simétricos en los que para la
encriptación y desencriptación se emplea una única clave, el
atacante podría desencriptar datos encriptados.
Un ataque de este tipo a la seguridad de soportes
de datos portátiles se denomina "Differential Power Analysis"
(DPA, análisis de la diferencia de energía). Para solucionar este
problema en el C2-Intern, edición núm. 67 del 15 de
julio de 1998 se propone introducir en los soportes de datos
portátiles un circuito electrónico adicional que debe compensar las
oscilaciones de corriente de tal manera que un atacante ya no las
pueda determinar y pueda sacar conclusiones de las mismas.
Sin embargo, esta solución es muy laboriosa y
cara dado que exige la implementación de un componente electrónico
adicional. No obstante dado que especialmente el mercado de las
tarjetas chip.
El documento WO 9948239 A publicado con
posterioridad se refiere a un procedimiento para la protección de
datos mediante el empleo de un algoritmo criptográfico que presenta
la realización de al menos un ciclo que realiza operaciones
repetidas de un tratamiento de elementos de datos para generar
información encriptada. El procedimiento comprende una etapa de una
modificación aleatoria de la ejecución de al menos una operación de
un ciclo al siguiente o de al menos uno de los elementos de datos de
tal manera que la información encriptada no puede modificarse
mediante la modificación aleatoria. Por ejemplo, puede realizarse
una determinación aleatoria del orden de ejecución de determinadas
operaciones en el transcurso de un ciclo de ejecución del algoritmo.
Para ello se utilizan aquellas operaciones cuyo orden de ejecución
entre ellas no tiene ninguna influencia en el resultado. Para
realizar una determinación puede preverse un salto condicionado a
determinadas operaciones al final de la operación seleccionada en
función del valor de un número aleatorio o definir una tabla de
direcciones de las operaciones individuales que se ejecutan de
manera aleatoria. El documento WO 9948239 sirve como estado de la
técnica según el artículo 54(3) del CPE en los estados
contratantes DE, ES, FR, GB y NL que se han mencionado en las dos
solicitudes.
Por el documento WO 9960534 A, también publicado
posteriormente, se conoce un procedimiento en el que para evitar
que personas no autorizadas obtengan datos de chip secretos mediante
la interceptación de patrones de señales se realizan operaciones
relevantes para la seguridad basándose sólo en comandos o secuencias
de comandos cuya utilización no hace posible deducir de los
patrones de señales del chip los datos que se tratan. A este
respecto, este documento da a conocer, entre otros, variar el orden
de procesamiento de operaciones de este tipo que pueden procesarse
al mismo tiempo en cada caso de una pluralidad de ejecuciones. En
este caso, la variación del orden puede tener lugar según un esquema
predeterminado de manera fija o de manera aleatoria, determinándose
en cada caso mediante un número aleatorio qué operación se procesa
en siguiente lugar. El documento WO 9960534 es válido como estado de
la técnica según el artículo 54(3) del CPE en los estados
contratantes AT, BE, CH/LI, CY, DE, DK, ES, FI, FR, GB, GR, IE, IT,
LU, MC, NL, PT y SE, que se han mencionado en las dos
solicitudes.
Por el documento WO 97/33217 A se conoce un
circuito integrado que impide las observaciones no autorizadas de
un comportamiento interno. Para ello, según este documento, están
previstos medios de descorrelación del desarrollo de al menos una
secuencia de comandos de un programa con las señales eléctricas
internas o externas del circuito. Especialmente se generan impulsos
por generadores de reloj o impulsos de reloj cuya distribución
temporal es aleatoria. Los medios de descorrelación pueden
comprender un transmisor aleatorio que posibilite una
desincronización de la ejecución de la secuencia del programa en el
procesador. Además, los medios de descorrelación pueden comprender
además un sistema para la generación de interrupciones aleatorias.
Además, los medios de descorrelación pueden comprender la ejecución
del orden cronológico cuyos comandos y tiempos de ejecución son
diferentes y pueden seleccionarse de manera aleatoria.
El documento DE 0 448 262 A2 da a conocer una
rutina de procesamiento de datos segura en la que la duración entre
la aparición de eventos externos observables y la ejecución de una
rutina predeterminada varía de manera aleatoria. A este respecto,
puede seleccionarse una de varias rutinas intermedias que presentan
diferentes duraciones.
En P.C. Kocher: "Timing Attacks On
Implementations Of Diffie-Hellman, RSA, DSS, And
Other Systems", Advances in Cryptology- Crypto '96. 16ª
Conferencia de criptología internacional anual, Santa Bárbara, 18 al
22 de agosto, 1996. Proceedings, Proceedings of the Annual
International Cryptology Conference (Crypto), Berlín, Springer, DE,
Tomo, Conf. 16 al 18 de agosto 1996
(18-08-1996), páginas
104-113 se describen ataques a algoritmos de
encriptación. Para evitar tales ataques se introduce un par de
números aleatorios y se multiplica el mensaje de entrada antes de
una operación modular de elevación a una potencia con uno de los
números aleatorios, mientras que a continuación se corrige el
resultado multiplicándolo con el otro número aleatorio.
En S. Forrest, entre otros: "Building diverse
computer systems", Operating Systems, 1997, The Sixth Workshop
On Hot Topics In Cape Cod, MA, EEUU, 5 y 6 de mayo 1997, Los
Alamitos, CA, EEUU, IEEE Comput. Soc. EE.UU. 5 de mayo de 1997
(05-05-1997), pp.
67-72, se describe la estructura de diversos
sistemas informáticos y se menciona como posibilidad para conseguir
una diversidad la inserción de secuencias no funcionales en lugares
aleatorios, reordenar un código, el diseño de la memoria, así como
otras transformaciones.
Finalmente, por F.B. Cohen: "Operating System
Protection Through Program Evolution", Computers & Security,
Elsevier Science Publishers, Amsterdam, Holanda, Tomo 12, núm. 6, 1
de octubre de 1993 (01-10-1993),
pp. 565-584 se conoce un sistema de protección del
sistema operativo que utiliza una evolución de programa. Se apela a
diferentes técnicas para la evolución de programa, entre otras, un
reordenamiento de comandos, una sustitución de variables, inserción
y eliminación de saltos, inserción y eliminación de llamadas,
adición de marañas de datos y similares.
El objetivo de la invención es, por tanto, hacer
más seguros los soportes de datos portátiles del tipo mencionado
anteriormente frente a un ataque a la seguridad en la encriptación
de datos de manera más eficiente, sencilla y asequible.
Este objetivo se soluciona mediante las
características de las reivindicaciones 1 a 3. Las reivindicaciones
dependientes subsiguientes contienen configuraciones ventajosas de
la invención.
Según la invención, en la ejecución de programas
de encriptación que se componen de varias subrutinas, se procede de
tal manera que el orden de ejecución temporal de al menos dos
subrutinas paralelizables se intercambia de manera aleatoria
considerando al menos un número aleatorio en cada ejecución de
programa. Las subrutinas paralelizables en el caso de los programas
de encriptación DES son conocidas por el experto, las denominadas
cajas S.
Mediante este modo de procedimiento según la
invención se generan de manera aleatoria oscilaciones de corriente
de manera que un atacante no puede predecirlas y que le dificultan
de manera considerable, o incluso le impiden, mediante las
oscilaciones de corriente registradas sacar conclusiones respecto a
las claves secretas o los datos que van a encriptarse. Cuanto mayor
sea el número de subrutinas intercambiadas (permutadas) de manera
aleatoria, más "caóticas" son las oscilaciones de corriente y
más complicado es para un atacante espiar datos secretos mediante un
análisis matemático de las oscilaciones de corriente.
El procedimiento según la invención puede
implementarse en los soportes de datos portátiles de manera sencilla
y asequible en cuanto a la técnica de programas (según el software).
No son necesarios componentes electrónicos adicionales.
A continuación, mediante los dibujos adjuntos
debe explicarse la invención de manera detallada. Muestran:
la figura 1, una disposición experimental para el
registro de oscilaciones de corriente durante la ejecución de
programas de encriptación,
la figura 2, un ejemplo para el desarrollo
temporal de la corriente de alimentación durante la ejecución de un
programa de encriptación,
la figura 3, un diagrama estructural esquemático
de un programa de encriptación,
la figura 4, el paso fijo de programa en la
ejecución de un programa de encriptación según el estado de la
técnica,
la figura 5, un diagrama estructural esquemático
de un programa de encriptación al que se han añadido subrutinas
ficticias (indicadas con puntos y rayas),
la figura 6, una tabla con direcciones iniciales
de subrutinas paralelizables,
la figura 7, la permutación de direcciones
iniciales mediante números aleatorios y el orden de procesamiento
modificado de manera correspondiente de los subrutinas.
En la figura 1 se muestra un soporte de datos
portátil en forma de una tarjeta chip de microprocesador. El
componente semiconductor integrado con el microprocesador y las
memorias (RAM, ROM, EEPROM) se encuentra en un módulo de chip que
se inserta en el cuerpo de la tarjeta como componente independiente.
En el módulo de chip se encuentran las superficies de contacto
eléctricas para el intercambio de datos y la alimentación de
energía en conexión con el aparato de intercambio de datos (en el
caso mostrado esto es un terminal de tarjeta). Por razones de
claridad solamente se indica el conducto de alimentación de
corriente y tensión desde el terminal de tarjeta a la
correspondiente superficie de contacto de la tarjeta, así como el
conducto de masa. Para el ataque DPA descrito anteriormente en la
tarjeta chip se introduce un resistor de medición (por ejemplo, de 1
\Omega) en el conducto de alimentación de corriente y las
oscilaciones de corriente se miden indirectamente mediante la caída
de tensión en este resistor y se registran en un osciloscopio de
memoria.
Tal como puede observarse en la figura 2, las
amplitudes de oscilación de corriente que pueden aparecer durante la
ejecución de un programa de encriptación son en algunos puntos un
múltiplo del consumo medio de corriente (porcentaje de corriente
continua). Un atacante podría ejecutar ahora el programa de
encriptación en la tarjeta chip varias veces e indicar las
oscilaciones de corriente en cada caso e intentar averiguar mediante
métodos de análisis matemáticos si existe una correlación entre los
registros individuales. Por ejemplo, podría intentar averiguar si en
las diferentes ejecuciones del programa de encriptación han
aparecido en cada caso las mismas oscilaciones de corriente en un
momento determinado (intervalo de tiempo) que son características
para el procesamiento de datos (en este sentido los datos son
también claves secretas) con una determinada estructura de patrón de
bits y/o característica de la ejecución de determinados comandos. Si
el atacante conoce el programa de encriptación y sabe en qué lugares
en el desarrollo del programa, por ejemplo, se procesan normalmente
las claves o se ejecutan determinados comandos, entonces puede
espiar con ello claves en sí secretas.
En la figura 3 se muestra un diagrama estructural
esquemático de un programa (S) de encriptación. Un programa de este
tipo consta de diferentes niveles (1 a m) de programa que se suceden
temporalmente. Dentro de estos niveles de programa hay a su vez
diferentes subrutinas, de las que al menos algunas son
paralelizables, es decir, el orden en el que se ejecutan estos
programas unos tras otros en el tiempo es irrelevante.
No obstante, según el estado de la técnica, el
orden de ejecución temporal de estas subrutinas paralelizables se
determinaba una vez por un programador, lo que tiene como
consecuencia que el paso del programa a través del programa de
encriptación con sus subrutinas es siempre el mismo. Incluso cuando
un atacante no conoce al principio el orden de ejecución de las
subrutinas paralelizables sí que puede averiguarlo mediante un
ataque DPA si sólo deja que el programa de encriptación se ejecute
con la frecuencia suficiente y registra en cada caso las
oscilaciones de corriente. Dado que el programa de encriptación
siempre se ejecuta de la misma manera, con ayuda de métodos
matemáticos pueden encontrarse correlaciones entre los registros de
oscilación de corriente individuales que permiten sacar conclusiones
respecto al desarrollo del programa y, además, a las claves
secretas.
Dado que el desarrollo del programa según la
invención es uno diferente en cada caso debido al intercambio
aleatorio de subrutinas paralelizables, ya no pueden averiguarse
tales correlaciones por parte de un atacante o solamente con un
esfuerzo desproporcionadamente grande. El espionaje de claves
secretas se impide, por tanto, de manera eficaz o al menos se
dificulta considerablemente.
Los números aleatorios utilizados para el
intercambio aleatorio de subrutinas se generan preferiblemente en
un generador de números aleatorios de la tarjeta chip. Un generador
de números aleatorios de este tipo puede implementarse, por
ejemplo, en forma de un programa de software en la tarjeta chip. El
experto conoce estos programas. Además, el generador de números
aleatorios puede ser también un circuito electrónico en el soporte
de datos portátil (variante de hardware). De manera alternativa a la
generación de un número aleatorio en la tarjeta chip, puede
transmitirse también el número aleatorio desde el terminal de
tarjeta a la tarjeta chip.
En un programa de encriptación que presenta
varios niveles de programa que se suceden temporalmente durante la
ejecución del programa con varias subrutinas paralelizables en cada
caso están previstas dos variantes de realización para el
procedimiento según la invención.
En la primera variante de realización se
determina en cada caso antes del inicio del programa de encriptación
real el orden de ejecución temporal para la ejecución de las
subrutinas en todos los niveles del programa considerando el/los
número(s) aleatorio(s). A este respecto, es
absolutamente posible que no necesariamente todas los subrutinas
paralelizables se intercambien de manera aleatoria, es decir, puede
haber también niveles de programa con subrutinas paralelizables en
las que no tiene lugar ningún intercambio aleatorio, de tal manera
que las subrutinas de estos niveles de programa se ejecutan en cada
ejecución del programa en el mismo orden.
En la segunda variante de realización, el orden
de ejecución de todas las subrutinas en todos los planos de
programa no se determina antes del inicio del programa de
encriptación real en cada caso. Aquí el orden de ejecución temporal
para las subrutinas en este nivel de programa se determina en cada
caso solamente antes entrar en un nuevo nivel de programa
considerando un(os) número(s) aleatorio(s).
Para realizar el cambio del orden de ejecución de
subrutinas paralelizables se trabaja de manera preferida con una
tabla en la que están almacenadas las direcciones iniciales de
programa de las subrutinas paralelizables con respecto a su posición
de orden, véase la figura 6. Esta tabla se crea preferiblemente en
la memoria RAM de la tarjeta chip según el programa. Las entradas en
esta tabla se cambian ahora de manera aleatoria según la invención,
tal como se explica más adelante.
Las direcciones iniciales de programa se
almacenan además en la memoria EEPROM no volátil de la tarjeta chip.
Antes del inicio del programa de encriptación real se descargan
sucesivamente las direcciones iniciales de programa de las
subrutinas de la memoria EEPROM y/o de la memoria ROM y se escriben
en la memoria RAM. Con ello en cierta manera se fijan valores
iniciales en la tabla. Ahora se genera un par de números aleatorios
compuesto por dos números (Z1, Z2) aleatorios, correspondiendo en
este caso la cantidad de los números aleatorios posibles a la
cantidad de posiciones de orden, véase la figura 7. Si el programa
de encriptación contiene, por ejemplo, cuatro subrutinas
paralelizables, entonces existen cuatro posiciones (1, 2, 3, 4) de
orden que determinan en qué orden se ejecutan. De manera
correspondiente, hay cuatro números (1, 2, 3, 4) aleatorios
posibles. Si ahora se genera el par de números aleatorios Z1 = 2/Z =
4, entonces mediante un programa correspondiente se escribe la
dirección inicial de la 4ª subrutina en la posición de orden 2 y la
dirección inicial de la 2ª subrutina en la posición de orden 4.
Gracias a la nueva generación de un par de
números aleatorios y, por consiguiente, nuevo cambio, el orden de
ejecución se "descoloca" adicionalmente con respecto al ajuste
inicial. Si, por ejemplo, el segundo par de números aleatorios es
(4, 3), entonces, la dirección inicial de la 2ª subrutina se escribe
en la posición de orden 3 y la dirección inicial de la 3ª
subrutina, en la posición de orden 4.
El orden en el que se ejecutan ahora las
subrutinas dentro del programa de encriptación es entonces:
1ª subrutina (S1) / 4ª subrutina (S4) / 2ª
subrutina (S2) / 3ª subrutina (S3).
En la figura 5 se muestra un diagrama estructural
esquemático de un programa de encriptación que se compone de varios
niveles de programa y éste se ha ampliado determinados niveles de
programa con las denominadas "subrutinas ficticias". Estas
"subrutinas ficticias" no son realmente componentes del
programa de encriptación. Su ejecución no tiene, por tanto, ninguna
influencia en el resultado de la encriptación. Sin embargo, su
ejecución provoca de manera ventajosa oscilaciones de corriente
adicionales que han de observarse en un análisis DPA y contribuyen,
por tanto, a una confusión adicional de un atacante. Las
"subrutinas ficticias" en este sentido son de nuevo:
procedimientos, rutinas y comandos cuya ejecución no tiene ninguna
influencia en la encriptación en sí. En este sentido constituyen
lastre que, sin embargo, puede utilizarse de manera ventajosa frente
a un ataque DBA, especialmente cuando estas "subrutinas
ficticias" se intercambian también de manera aleatoria según la
invención. Mediante la implementación de "subrutinas ficticias"
y su intercambio aleatorio no sólo se generan oscilaciones de
corriente adicionales que en sí no tienen nada que ver con el
programa de encriptación, sino que también aparecen distribuidas
temporalmente de manera aleatoria, con lo que se dificulta
adicionalmente un ataque DPA. Además, está previsto que la ejecución
de determinadas "subrutinas ficticias" pueda omitirse
aleatoriamente al considerar al menos un número aleatorio, con lo
que se crea una confusión adicional para un atacante DPA.
En la implementación según la invención del
programa de encriptación podría ampliarse, por ejemplo, cada nivel
de programa en un número de "subrutinas ficticias" tal que el
número de subrutinas por nivel de programa sea en total el
mismo.
El procedimiento según la invención no está
limitado a los denominados soportes de datos portátiles en contacto.
Más bien está limitado también a los denominados "soportes de
datos portátiles que funcionan sin contacto", en los que el
intercambio de datos y la alimentación de energía con el aparato de
intercambio de datos se realiza mediante radiación electromagnética
(de manera inductiva) dado que aquí también ha de determinarse el
consumo de potencia del soporte de datos portátil con una estructura
de medición modificada con respecto a la mostrada en la figura
1.
Naturalmente, la invención puede aplicarse
también a la ejecución de programas de desencriptación y no sólo a
programas de encriptación dado que la problemática anteriormente
descrita es la misma. Además, la desencriptación no es otra cosa que
una encriptación inversa y viceversa.
Claims (14)
1. Procedimiento para ejecutar un programa de
encriptación para la encriptación de datos en un soporte de datos
portátil basado en microprocesador que se conecta a un aparato de
intercambio de datos para el intercambio de datos y la alimentación
de energía, en el que el programa de encriptación presenta varias
subrutinas paralelizables, en el que en la ejecución del programa de
encriptación se intercambia aleatoriamente la secuencia de ejecución
temporal de al menos dos subrutinas paralelizables considerando al
menos un número aleatorio en cada ejecución de programa, y en el que
el número aleatorio se transmite del aparato de intercambio de datos
al soporte de datos portátil.
2. Procedimiento para ejecutar un programa de
encriptación para la encriptación de datos en un soporte de datos
portátil basado en microprocesador que se conecta a un aparato de
intercambio de datos para el intercambio de datos y la alimentación
de energía, en el que el programa de encriptación presenta varias
subrutinas paralelizables, en el que en la ejecución del programa de
encriptación la secuencia temporal de ejecución de al menos dos
subrutinas paralelizables se cambia de manera aleatoria considerando
al menos un número aleatorio en cada ejecución del programa, en el
que en el soporte de datos portátil está prevista una tabla en la
que se almacena el orden de ejecución de las subrutinas
paralelizables mediante posiciones de orden, en el que se determina
un par de números aleatorios que consiste en dos números aleatorios,
correspondiendo la cantidad de los números aleatorios posibles a la
cantidad de las posiciones de orden, y en el que las posiciones de
orden de los subrutinas paralelizables se cambian de manera
correspondiente al par de números aleatorios, intercambiándose la
posición de orden de una subrutina paralelizable de manera
correspondiente a uno de los números aleatorios frente a la posición
de orden de otra subrutina paralelizable de manera correspondiente
al segundo número aleatorio.
3. Procedimiento para ejecutar un programa de
encriptación para la encriptación de datos en un soporte de datos
portátil basado en microprocesador que se conecta a un aparato de
intercambio de datos para el intercambio de datos y la alimentación
de energía, en el que el programa de encriptación presenta varias
subrutinas paralelizables, en el que el programa de encriptación se
amplía en al menos una subrutina ficticia que no pertenece realmente
al programa de encriptación, y en el que en la ejecución del
programa de encriptación se cambia de manera aleatoria la secuencia
de ejecución temporal de al menos dos de las subrutinas
paralelizables considerando al menos un número aleatorio en cada
ejecución de programa.
4. Procedimiento según la reivindicación 2 ó 3,
en el que el número aleatorio se genera en un generador de números
aleatorios del soporte de datos portátil.
5. Procedimiento según la reivindicación 4, en el
que el generador de números aleatorios se implementa como programa
en el soporte de datos portátil.
6. Procedimiento según la reivindicación 2 ó 3,
en el que el número aleatorio se transmite desde el aparato de
intercambio de datos al soporte de datos portátil.
7. Procedimiento según una de las
reivindicaciones anteriores precedentes, en el que, en un programa
de encriptación que presenta varios niveles de desarrollo de
programa que se suceden temporalmente durante la ejecución de
programa con varias subrutinas paralelizables en cada caso, antes
del comienzo de la ejecución del programa se fija el orden de
ejecución temporal para la ejecución de las subrutinas
paralelizables en todos los niveles de desarrollo de programas
considerando al menos un número aleatorio.
8. Procedimiento según una de las
reivindicaciones anteriores 1 a 6, en el que, en un programa de
encriptación que presenta varios niveles de desarrollo de programa
que se suceden temporalmente en la ejecución del programa con varias
subrutinas paralelizables en cada caso, antes del inicio de la
ejecución del programa se fija el orden de ejecución temporal para
la ejecución de las subrutinas paralelizables en solamente
determinados niveles de desarrollo del programa considerando al
menos un número aleatorio.
9. Procedimiento según una de las
reivindicaciones anteriores 1 a 6, en el que, en un programa de
encriptación que presenta varios niveles de desarrollo de programa
que se suceden temporalmente durante la ejecución del programa con
varias subrutinas paralelizables en cada caso, antes de la entrada
en un nuevo nivel de desarrollo del programa se fija el orden de
ejecución temporal para la ejecución de las subrutinas
paralelizables en este nivel de desarrollo del programa considerando
al menos un número aleatorio.
10. Procedimiento según la reivindicación 1, en
el que en el soporte de datos portátil está prevista una tabla en la
que se almacena el orden de ejecución de las subrutinas
paralelizables mediante posiciones de orden, se determina un par de
números aleatorios que consiste en dos números aleatorios,
correspondiendo la cantidad de los números aleatorios posibles a la
cantidad de las posiciones de orden, se intercambian las posiciones
de orden de las subrutinas paralelizables de manera correspondiente
al par de números aleatorios, intercambiándose la posición de orden
de una subrutina paralelizable de manera correspondiente a uno de
los números aleatorios frente a la posición de orden de otra
subrutina paralelizable según el segundo número aleatorio.
11. Procedimiento según la reivindicación 2 ó 10,
caracterizado porque la determinación de un par de números
aleatorios y el intercambio de las posiciones de orden de las
subrutinas paralelizables se aplica dos o más veces.
12. Procedimiento según la reivindicación 1 ó 2,
caracterizado porque el programa de encriptación se amplía en
al menos una subrutina ficticia que no pertenece realmente al
programa de encriptación, cuyo orden de ejecución se intercambia en
cada caso considerando al menos un número aleatorio.
13. Procedimiento según la reivindicación 3 ó 12,
en el que en la ejecución del programa de encriptación se omite en
cada caso la ejecución de determinadas subrutinas ficticias
considerando al menos un número aleatorio.
14. Procedimiento según una de las
reivindicaciones 12 ó 13, en el que cada nivel de desarrollo de
programa se amplía en subrutinas ficticias, de manera que el número
de subrutinas por nivel de desarrollo de programa es el mismo.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19837808 | 1998-08-20 | ||
DE19837808A DE19837808A1 (de) | 1998-08-20 | 1998-08-20 | Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2258306T3 true ES2258306T3 (es) | 2006-08-16 |
Family
ID=7878153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES99113007T Expired - Lifetime ES2258306T3 (es) | 1998-08-20 | 1999-07-06 | Procedimiento para realizar un programa de encriptacion para encriptar datos en un soporte de datos portatil basado en microprocesador. |
Country Status (7)
Country | Link |
---|---|
US (1) | US6725374B1 (es) |
EP (1) | EP0981115B1 (es) |
AT (1) | ATE317579T1 (es) |
DE (2) | DE19837808A1 (es) |
DK (1) | DK0981115T3 (es) |
ES (1) | ES2258306T3 (es) |
PT (1) | PT981115E (es) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10000503A1 (de) * | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb |
FR2804524B1 (fr) * | 2000-01-31 | 2002-04-19 | Oberthur Card Systems Sas | Procede d'execution d'un protocole cryptographique entre deux entites electroniques |
JP3821631B2 (ja) | 2000-05-30 | 2006-09-13 | 株式会社日立製作所 | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 |
FR2811790A1 (fr) * | 2000-07-11 | 2002-01-18 | Schlumberger Systems & Service | Microcontroleur securise contre des attaques dites en courant |
DE10101956A1 (de) * | 2001-01-17 | 2002-07-25 | Infineon Technologies Ag | Verfahren zur Erhöhung der Sicherheit einer CPU |
JP4199937B2 (ja) * | 2001-03-06 | 2008-12-24 | 株式会社日立製作所 | 耐タンパー暗号処理方法 |
JP2002328845A (ja) * | 2001-05-07 | 2002-11-15 | Fujitsu Ltd | 半導体集積回路及びicカードのセキュリティー保護方法 |
DE10136326A1 (de) * | 2001-07-26 | 2003-02-13 | Chien-Tzu Hou | Steuerverfahren zur Beaufschlagung eines IC-Betriebsmodus mit einer Unschärfe |
DE10214118B4 (de) | 2002-03-28 | 2007-02-22 | Infineon Technologies Ag | Schaltungsanordnung mit einem Sender und einem Empfänger |
US20090249085A1 (en) * | 2004-06-29 | 2009-10-01 | Nagracard S.A. | Security module and personalization method for such a security module |
EP1612637A1 (fr) * | 2004-06-29 | 2006-01-04 | Nagracard S.A. | Module de sécurité et méthode de personnalisation d'un tel module de sécurité |
US9860055B2 (en) * | 2006-03-22 | 2018-01-02 | Synopsys, Inc. | Flexible architecture for processing of large numbers and method therefor |
DE102006038877B4 (de) * | 2006-08-18 | 2018-01-25 | Giesecke+Devrient Mobile Security Gmbh | Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium |
IT1404162B1 (it) * | 2010-12-30 | 2013-11-15 | Incard Sa | Metodo per de-correlare segnali elettrici emessi da una carta a circuito integrato |
DE102012015899A1 (de) * | 2012-08-10 | 2014-02-13 | Giesecke & Devrient Gmbh | Verfahren zum Erzeugen von ausführbarem Programmcode |
US9645793B2 (en) * | 2013-12-05 | 2017-05-09 | Infineon Technologies Ag | Random permutation generator and method for generating a random permutation sequence |
DE102014001647A1 (de) * | 2014-02-06 | 2015-08-06 | Infineon Technologies Ag | Operation basierend auf zwei Operanden |
EP3032416A1 (en) * | 2014-12-10 | 2016-06-15 | Gemalto SA | Method to execute a sensitive computation using multiple different and independent branches |
EP3624390A1 (en) * | 2018-09-17 | 2020-03-18 | Secure-IC SAS | Devices and methods for protecting cryptographic programs |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2037857C (en) * | 1990-03-20 | 2001-01-16 | Roy Allen Griffin, Iii | Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event |
JP3029381B2 (ja) * | 1994-01-10 | 2000-04-04 | 富士通株式会社 | データ変換装置 |
US5838794A (en) * | 1996-01-11 | 1998-11-17 | Teledyne Electronic Technologies | Method and apparatus for inter-round mixing in iterated block substitution systems |
FR2745924B1 (fr) * | 1996-03-07 | 1998-12-11 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
US6061449A (en) * | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
FR2776445A1 (fr) * | 1998-03-17 | 1999-09-24 | Schlumberger Ind Sa | Procede de securisation de donnees mettant en oeuvre un algorithme cryptographique |
CA2885961C (en) * | 1998-05-18 | 2015-12-15 | Giesecke & Devrient Gmbh | Access-protected data carrier |
-
1998
- 1998-08-20 DE DE19837808A patent/DE19837808A1/de not_active Withdrawn
-
1999
- 1999-07-06 EP EP99113007A patent/EP0981115B1/de not_active Expired - Lifetime
- 1999-07-06 DE DE59913105T patent/DE59913105D1/de not_active Expired - Lifetime
- 1999-07-06 DK DK99113007T patent/DK0981115T3/da active
- 1999-07-06 PT PT99113007T patent/PT981115E/pt unknown
- 1999-07-06 ES ES99113007T patent/ES2258306T3/es not_active Expired - Lifetime
- 1999-07-06 AT AT99113007T patent/ATE317579T1/de active
- 1999-08-20 US US09/377,713 patent/US6725374B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0981115A3 (de) | 2004-04-14 |
DE59913105D1 (de) | 2006-04-20 |
DK0981115T3 (da) | 2006-06-06 |
PT981115E (pt) | 2006-06-30 |
EP0981115B1 (de) | 2006-02-08 |
DE19837808A1 (de) | 2000-02-24 |
EP0981115A2 (de) | 2000-02-23 |
US6725374B1 (en) | 2004-04-20 |
ATE317579T1 (de) | 2006-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2258306T3 (es) | Procedimiento para realizar un programa de encriptacion para encriptar datos en un soporte de datos portatil basado en microprocesador. | |
KR100445406B1 (ko) | 데이터 암호화 장치 및 그 방법 | |
US7284133B2 (en) | Information processing unit | |
US6345359B1 (en) | In-line decryption for protecting embedded software | |
JP2013161482A (ja) | Dram内のデータのリフレッシュを制御するための装置および方法 | |
EP2551837B1 (en) | Random number generator, encryption device and recognition device | |
US9251358B2 (en) | System and method for providing secure access to system memory | |
CN1791111B (zh) | 通过多接口实现安全性的方法和装置 | |
US6691921B2 (en) | Information processing device | |
RU2013127641A (ru) | Устройство и способ обработки уязвимых данных | |
EP3770751A1 (en) | High speed encryption key generating engine | |
WO2001039429A1 (en) | Integrity check values (icv) based on pseudorandom binary matrices | |
BRPI0612024A2 (pt) | dispositivo, método para inicializar uma chave segura a ser compartilhada entre o primeiro circuito integrado e o segundo circuito integrado, circuito integrado, programa de computador executado em um circuito integrado, e, chip de gerenciamento de energia adaptado para executar o gerenciamento de energia do dispositivo | |
WO2002073872A1 (fr) | Appareil de stockage de donnees | |
JPH11510678A (ja) | セキュリティモジュールにおいて秘密情報を記憶し使用するための方法及び関連するセキュリティモジュール | |
JP2002328845A (ja) | 半導体集積回路及びicカードのセキュリティー保護方法 | |
EP3393078B1 (en) | Secure execution environment clock frequency hopping | |
US20090154693A1 (en) | Encryption processing apparatus, encryption method, decryption processing apparatus, decryption method and data structure | |
US6289454B1 (en) | Memory configuration which support multiple cryptographical algorithms | |
US8379850B1 (en) | Method and integrated circuit for secure encryption and decryption | |
JP2001195555A (ja) | Icカードとマイクロコンピュータ | |
US20220237304A1 (en) | Data Processing Device and Method for Processing Secret Data | |
KR20070076848A (ko) | 카드 인증 시스템의 보안레벨을 향상시키는 장치 및 방법 | |
EP3531612B1 (en) | Method and device for performing substitution table operations | |
CN111600873B (zh) | 防侧信道攻击方法及相关装置 |