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
Application number
ES99113007T
Other languages
English (en)
Inventor
Michael Dr. Jahnich
Guido Wuppenhorst
Werner Doppmeier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia Germany GmbH
Original Assignee
Sagem Orga GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sagem Orga GmbH filed Critical Sagem Orga GmbH
Application granted granted Critical
Publication of ES2258306T3 publication Critical patent/ES2258306T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment 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/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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/10Mechanisms 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/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight 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).
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.
ES99113007T 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. Expired - Lifetime ES2258306T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) 防侧信道攻击方法及相关装置