ES2807214T3 - Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo - Google Patents

Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo Download PDF

Info

Publication number
ES2807214T3
ES2807214T3 ES16196520T ES16196520T ES2807214T3 ES 2807214 T3 ES2807214 T3 ES 2807214T3 ES 16196520 T ES16196520 T ES 16196520T ES 16196520 T ES16196520 T ES 16196520T ES 2807214 T3 ES2807214 T3 ES 2807214T3
Authority
ES
Spain
Prior art keywords
bits
cycle
clock signal
bit
value
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.)
Active
Application number
ES16196520T
Other languages
English (en)
Inventor
Valery Teper
Nir Tasher
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.)
Winbond Electronics Corp
Original Assignee
Winbond Electronics Corp
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 Winbond Electronics Corp filed Critical Winbond Electronics Corp
Application granted granted Critical
Publication of ES2807214T3 publication Critical patent/ES2807214T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined 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/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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Power Sources (AREA)

Abstract

Un circuito electrónico (110, 400, 700, 800) con protección contra interceptación por análisis de potencia, que comprende: un elemento de almacenamiento (420) configurado para almacenar un conjunto de bits correspondientes a valores correctos, en el que el elemento de almacenamiento (420) es accionado por una primera señal de reloj (clk/2 520) que tiene una primera frecuencia; un generador de bits aleatorios (440), configurado para generar un bit aleatorio (R0, R1, Ri) para cada uno del conjunto de bits almacenado correspondiente a los valores correctos respectivamente, siendo dicho generador de bits aleatorios accionado por la primera señal de reloj; un indicador (450), accionado por una segunda señal de reloj en una segunda frecuencia que es de dos veces la primera frecuencia, configurado para proporcionar un primer valor para un primer ciclo de la segunda señal de reloj y un segundo valor para un segundo ciclo de la segunda señal de reloj; una pluralidad de selectores (L0, L1), acoplados al elemento de almacenamiento (420) y al generador de bits aleatorios (440), siendo cada selector accionado por uno de los bits aleatorios y estando configurado ya sea para el bit correspondiente del conjunto de bits almacenado correspondiente a los valores correctos, o para un bit reemplazado, en el que el primer valor permite que un valor aleatorio sea proporcionado como el bit reemplazado, y el segundo valor permite que el valor correcto sea establecido como el bit reemplazado; y una unidad lógica combinacional (410), acoplada a la pluralidad de selectores (L0, L1), configurada para proporcionar un siguiente conjunto de bits de estado (N0, N1, 540) luego de dos ciclos de la segunda señal de reloj al elemento de almacenamiento (420), en el que la unidad lógica combinacional (410) está configurada para realizar un primer cálculo lógico en la salida de la pluralidad de selectores (L0, L1) incluyendo cada uno de los bits reemplazados en el primer ciclo, y está configurada para realizar un último cálculo lógico sobre todo el conjunto de bits almacenado correspondiente a los valores correctos en el segundo ciclo.

Description

DESCRIPCIÓN
Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo
Antecedentes de la invención
1. Campo de la invención
La invención se refiere a contramedidas para prevenir la determinación de claves criptográficas mediante análisis de potencia de un dispositivo criptográfico.
2. Descripción de la técnica relacionada
Cerca del final del siglo XX, ha sido descubierto que la información de un dispositivo criptográfico (por ejemplo, un lector de tarjetas inteligentes) puede ser revelada de manera no intrusiva mediante el análisis del consumo de potencia del dispositivo. Los ejemplos de procedimientos de análisis de potencia son conocidos como Análisis de Potencia Simple (SPA) y Análisis de Potencia Diferencial (DPA). El SPA implica el examen visual de gráficos de la corriente usada por un dispositivo en función del tiempo. Como ejemplo, cuando un circuito lógico de semiconductor complementario de óxido metálico (CMOS) cambia de un estado lógico 0 a un estado lógico 1, una cantidad significativa de corriente eléctrica es extraída de la fuente de alimentación, mientras que en el caso opuesto es extraída una cantidad insignificante. Del mismo modo, un microprocesador tiene diferentes perfiles de consumo de potencia para diferentes comandos. Por lo tanto, en una cantidad mínima de potencia de una tarjeta inteligente que realiza una codificación de estándar de codificación de datos (DES), se pueden ver claramente las diferentes rondas. Además, se pueden distinguir las operaciones de cuadratura y multiplicación de una implementación RSA, lo que permite que un interceptor calcule la clave secreta.
DPA analiza estadísticamente el consumo de potencia de un dispositivo criptográfico. DPA registra el consumo de potencia en muchas rondas y luego puede eliminar el ruido que evitaría el análisis basado en SPA.
Un procedimiento de protección contra el análisis de potencia está basado en ocultar el cálculo. Este procedimiento incluye el diseño del dispositivo criptográfico para que tenga un consumo de potencia uniforme o aleatorio independientemente de las operaciones a ser realizadas, por ejemplo, añadiendo aleatoriedad a la señal de fuga o complementando la señal de cálculo para lograr el consumo de potencia uniforme.
Un procedimiento alternativo de protección del dispositivo criptográfico es el enmascaramiento del cálculo. En este procedimiento, el dispositivo criptográfico está diseñado para añadir aleatoriedad al cálculo (por ejemplo, cálculos innecesarios adicionales que deben ser ejecutados con el cálculo) de modo que el consumo de potencia sea diferente para cada ronda, incluso si son analizados los mismos datos.
Otros procedimientos añaden ruido aleatorio y/o aleatorizan el reloj de señal para dificultar que el cálculo sea identificado por DPA.
Típicamente, cada procedimiento de protección del dispositivo criptográfico está asociado con un nivel de complejidad y puede superarse si se invierte un esfuerzo suficiente. Por lo tanto, es interesante encontrar procedimientos más complejos para evitar que el procedimiento sea violado.
En el documento “A Countermeasure against Differential Power Analysis based on Random Delay Insertion"- Bucci M et al desvelan una contramedida a nivel de puerta que permite la aleatorización del perfil de consumo de corriente instantáneo y la cantidad de carga total transferida desde la fuente de alimentación durante un ciclo de reloj al explotar la inserción de retrasos aleatorios en la trayectoria de datos de un procesador criptográfico. La Solicitud de Patente de los Estados Unidos US 2011/252244 desvela una disposición segura de circuito criptográfico que incluye un bloque de procesamiento criptográfico, un generador de secuencia de expansión y una unidad de control de retardo. La Solicitud de Patente de los Estados Unidos desvela un aparato de procesamiento de datos configurado para ejecutar una operación de procesamiento de datos en al menos un valor de datos en respuesta a una instrucción de procesamiento de datos.
Sumario de la invención
Un aspecto de una realización de la divulgación se refiere a un circuito electrónico y a un procedimiento de protección de un cálculo lógico que es realizado en un conjunto de bits para que no sea descodificado mediante el análisis del consumo de potencia del circuito. El procedimiento incluye dividir el cálculo en dos o más etapas para que el cálculo sea realizado en dos ciclos de reloj en lugar de uno. En el primer ciclo, parte de los bits son proporcionados a una unidad lógica del circuito y parte de los bits son reemplazados por valores aleatorios. La unidad lógica calcula un primer resultado a partir de los datos parciales. Luego, en el siguiente ciclo, son proporcionados los datos correctos de los bits reubicados a la unidad lógica. La unidad lógica calcula resultados adicionales con los datos correctos. Los resultados adicionales se proporcionan a un elemento de almacenamiento para que sirva como un conjunto de bits para el siguiente estado del circuito.
En una realización ilustrativa de la presente divulgación, el circuito selecciona aleatoriamente la mitad de los bits para el primer ciclo o el recíproco del número de ciclos. Alternativamente, el circuito selecciona un número aleatorio de bits para el primer ciclo y los ciclos adicionales. En algunas realizaciones de la presente divulgación, en el siguiente ciclo o ciclos, los bits son proporcionados desde una unidad de almacenamiento intermedia para que el elemento de almacenamiento pueda ser cambiado mediante el cálculo de la unidad lógica en el primer ciclo.
De este modo, es proporcionado, de acuerdo con una realización ilustrativa de la presente divulgación, un circuito electrónico con protección contra interceptación por análisis de potencia. El circuito electrónico incluye un elemento de almacenamiento para almacenar un conjunto de bits correspondiente a los valores correctos, una unidad lógica para procesar el conjunto almacenado de bits y proporcionar un conjunto de siguiente estado de bits luego de dos ciclos, y un generador de bits aleatorios. Además, en un primer ciclo, algunos del conjunto almacenado de bits son proporcionados a la unidad lógica correctamente y algunos son reemplazados por valores aleatorios, y en un último ciclo, todo el conjunto almacenado de bits son proporcionados correctamente a la unidad lógica. El generador de bits aleatorios genera un bit aleatorio para cada bit del conjunto almacenado de bits para determinar qué bits del conjunto almacenado de bits deben ser proporcionados correctamente y qué bits deben ser reemplazados en cada ciclo.
En una realización ilustrativa de la presente divulgación, el circuito electrónico es controlado por dos señales de reloj, y una de las señales de reloj tiene la mitad de frecuencia que la otra. Opcionalmente, el circuito incluye una unidad de almacenamiento intermedia asociada con el elemento de almacenamiento para almacenar los valores correctos del conjunto almacenado de bits para su uso en el último ciclo. En una realización ilustrativa de la presente divulgación, el circuito incluye un selector asociado con el elemento de almacenamiento y el generador de bits aleatorios para cada bit del conjunto almacenado de bits. Además, el selector es controlado por los bits aleatorios para seleccionar entre el valor correcto y el valor aleatorio. Opcionalmente, el conjunto almacenado de bits son almacenados en el elemento de almacenamiento en forma codificada. En una realización ilustrativa de la presente divulgación, el conjunto almacenado de bits son descodificados cuando son proporcionados a la unidad lógica. En un segundo ciclo, los bits reemplazados que corresponden a los valores aleatorios son reemplazados con los valores correspondientes de los valores correctos y son proporcionados a la unidad lógica. En una realización ilustrativa de la presente divulgación, la mitad de los bits son reemplazados por valores aleatorios en el primer ciclo. Opcionalmente, un número aleatorio de bits son reemplazados por valores aleatorios en el primer ciclo. En una realización ilustrativa de la presente divulgación, los bits seleccionados aleatoriamente para ser reemplazados están configurados como valores opuestos de los valores correspondientes de los valores correctos.
Además, es proporcionado, de acuerdo con una realización ilustrativa de la presente divulgación, un procedimiento de protección de un circuito electrónico contra interceptación por análisis de potencia. El procedimiento incluye: almacenar un conjunto inicial de bits correspondientes a valores correctos en un elemento de almacenamiento; generar un bit aleatorio para cada bit del conjunto almacenado de bits; en un primer ciclo, proporcionar correctamente algunos de los bits del elemento de almacenamiento a una unidad lógica y reemplazar el resto de los bits por valores aleatorios; en un último ciclo, proporcionar todo el conjunto almacenado de bits correctamente a la unidad lógica; y procesar todo el conjunto almacenado de bits en el último ciclo para proporcionar un conjunto de siguiente estado de bits.
En una realización ilustrativa de la presente divulgación, el circuito es controlado por dos señales de reloj, y una de las señales de reloj tiene la mitad de frecuencia que la otra. Opcionalmente, el procedimiento incluye además almacenar los valores correctos del conjunto almacenado de bits para su uso en el último ciclo en una unidad de almacenamiento intermedia asociada con el elemento de almacenamiento. El procedimiento incluye además seleccionar entre el valor correcto y el valor aleatorio de acuerdo con el bit aleatorio mediante un selector para cada bit del conjunto almacenado de bits. Opcionalmente, la etapa de almacenar un conjunto inicial de bits incluye además codificar el conjunto almacenado de bits, y la etapa de proporcionar todo el conjunto almacenado de bits a la unidad lógica en el último ciclo incluye además descodificar el conjunto almacenado de bits. Opcionalmente, la etapa de proporcionar todo el conjunto almacenado de bits a la unidad lógica en el último ciclo incluye además obtener algunos de los bits del elemento de almacenamiento en el primer ciclo y reemplazar el resto de los bits que han sido reemplazados por los valores aleatorios en el primer ciclo con los valores correspondientes de los valores correctos. En una realización ilustrativa de la presente divulgación, la mitad de los bits son reemplazados por los valores aleatorios en el primer ciclo. Opcionalmente, un número aleatorio de bits son reemplazados por los valores aleatorios en el primer ciclo. En una realización ilustrativa de la presente divulgación, los bits seleccionados aleatoriamente para ser reemplazados están configurados como valores opuestos de los valores correspondientes de los valores correctos.
Breve descripción de los dibujos
Los dibujos adjuntos están incluidos para proporcionar una comprensión adicional de la invención, y están incorporados en y constituyen una parte de la presente especificación. Los dibujos ilustran realizaciones de la invención y, junto con la descripción, sirven para explicar los principios de la invención.
La Fig. 1 es una ilustración esquemática de un sistema para ejecutar un ataque de potencia en un dispositivo criptográfico de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 2 es una ilustración esquemática de un circuito lógico de un dispositivo criptográfico de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 3 es una ilustración esquemática de un circuito lógico de dos bits de un dispositivo criptográfico de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 4 es una ilustración esquemática de un circuito lógico mejorado de un dispositivo criptográfico de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 5 es una ilustración esquemática de señales lógicas y consumo de potencia en función del tiempo de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 6 es un diagrama de flujo de un procedimiento para ejecutar cálculos lógicos en dos ciclos de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 7 es una ilustración esquemática de un circuito lógico mejorado de un dispositivo criptográfico que también enmascara el siguiente estado de acuerdo con una realización ilustrativa de la presente divulgación.
La Fig. 8 es una ilustración esquemática de un circuito lógico mejorado alternativo de un dispositivo criptográfico que también enmascara el siguiente estado de acuerdo con una realización ilustrativa de la presente divulgación.
Descripción de las realizaciones
A continuación, se hará referencia en detalle a las realizaciones preferentes de la presente invención, cuyos ejemplos son ilustrados en los dibujos adjuntos. Siempre que sea posible, son usados los mismos números de referencia en los dibujos y la descripción para referirse a las mismas partes o partes similares.
La Fig. 1 es una ilustración esquemática de un sistema 100 para realizar un ataque de potencia en un dispositivo criptográfico 110 de acuerdo con una realización ilustrativa de la presente divulgación. En una realización ilustrativa de la presente divulgación, puede ser usado un osciloscopio 140 u otro dispositivo de medición de potencia para monitorizar una entrada de potencia 150 del dispositivo criptográfico 110. Opcionalmente, el dispositivo criptográfico 110 puede ser un lector de tarjetas (por ejemplo, para leer una tarjeta inteligente 120), un chip en un circuito u otras implementaciones.
En una realización ilustrativa de la presente divulgación, un ordenador de propósito general 130 está programado para comunicar con el dispositivo criptográfico 110, por ejemplo para proporcionar instrucciones al dispositivo criptográfico 110 y recibir información de la transacción no codificada. Opcionalmente, durante el uso, el dispositivo criptográfico 110 lee información sin codificar, por ejemplo desde una tarjeta inteligente 120 y proporciona información sin codificar al ordenador 130 para realizar una transacción. En una realización ilustrativa de la descripción, el osciloscopio 140 controla el consumo de potencia del dispositivo criptográfico 110 y proporciona una señal grabada 160 al ordenador 130 para su análisis. Opcionalmente, en base a la información del dispositivo criptográfico 110 y/o el osciloscopio 140, el ordenador 130 puede determinar las claves criptográficas u otra información confidencial utilizada para codificar la información.
La Fig. 2 es una ilustración esquemática de un circuito lógico 200 del dispositivo criptográfico 110 de acuerdo con una realización ilustrativa de la presente divulgación. En una realización ilustrativa de la presente divulgación, el circuito lógico 200 incluye elementos de almacenamiento 220 (flip-flops S0 ... Sn) para almacenar un valor/estado actual y una unidad lógica combinacional 210 que acepta datos de los elementos de almacenamiento 220 y calcula el siguiente valor/estado, y el siguiente valor/estado es almacenado nuevamente en los elementos de almacenamiento. En una realización ilustrativa de la presente divulgación, el circuito lógico 200 está provisto inicialmente con un valor de entrada externo 230, por ejemplo, valores leídos desde una tarjeta inteligente. Opcionalmente, el circuito lógico 200 ejecuta uno o más ciclos de procesamiento produciendo unas pocas generaciones de los siguientes valores a partir del valor de entrada externo 230 y luego enviando el valor procesado/descodificado, por ejemplo al ordenador 130.
La Fig. 3 es una ilustración esquemática de un circuito lógico de dos bits 300 del dispositivo criptográfico 110 de acuerdo con una realización ilustrativa de la presente divulgación. En una realización ilustrativa de la descripción, el circuito lógico 300 incluye un elemento de almacenamiento 320 con dos flip flops (S0 y S1) para almacenar el estado actual y una unidad lógica combinada 310 que en este caso incrementa el valor de almacenamiento en 1 y almacena los valores incrementados como el siguiente estado nuevamente en el elemento de almacenamiento 320. Una línea de tiempo 360 muestra los valores de reloj de una señal de reloj CLK que controla el circuito lógico 300 y las líneas de tiempo 370 y 380 muestran los valores almacenados en el elemento de almacenamiento 320 para el siguiente estado y estado actual respectivamente. En este caso, el circuito lógico 300 implementa un contador simple que cuenta de 0 a 3.
En una realización ilustrativa de la presente divulgación, hay dos ubicaciones que son vulnerables con respecto a un ataque de potencia y pueden servir como posibles fugas para el contenido del circuito lógico (por ejemplo, 200 y 300). La primera ubicación es de la unidad lógica (por ejemplo, 210, 310) durante el cálculo del siguiente valor/estado, y la segunda ubicación es cuando se actualiza el almacenamiento, por ejemplo al almacenar el siguiente valor/estado nuevamente en el elemento de almacenamiento (por ejemplo, 220, 320). En una realización ilustrativa de la presente divulgación, para evitar que un interceptor use el análisis de potencia para determinar el contenido actual del circuito lógico, el cálculo está dividido en dos o más ciclos.
La Fig. 4 es una ilustración esquemática de un circuito lógico 400 mejorado del dispositivo criptográfico 110 de acuerdo a una realización ilustrativa de la presente divulgación. En una realización ilustrativa de la presente divulgación, el circuito lógico 400 mejorado incluye un elemento de almacenamiento 420 con dos o más flip flops (S0, S1 ... Si ... Sm, solo se muestran S0 y S1 por simplicidad). El circuito lógico 400 también incluye una unidad lógica combinacional 410 que proporciona los siguientes bits de estado N0, N1 ... Ni ... Nm en respuesta a su entrada (por simplicidad, sólo son mostrados N0 y N1).
El circuito lógico 400 incluye un generador de bits aleatorios 440 que proporciona m bits aleatorios (R0, R1 ... Ri ... Rm) como el elemento de almacenamiento 420. Opcionalmente, un bit aleatorio Ri que tiene un valor de cero significa que el bit almacenado en el flip flop Si debe ser transferido a la unidad lógica 410 en un primer ciclo, mientras que un bit aleatorio Ri que tiene un valor de uno significa que el bit almacenado en el flip flop Si debe ser transferido a la lógica unidad 410 solo en un segundo ciclo. Los bits aleatorios Ri seleccionan aleatoriamente 1 o más o de los bits almacenados en los flip flops SO a Sm para ser procesados por la unidad lógica combinacional 410 en el primer ciclo y seleccionan los bits restantes para ser procesados por la unidad lógica combinacional 410 solo en el segundo ciclo. Opcionalmente, el generador de bits aleatorios 440 puede proporcionar una secuencia de bits aleatoria en la que la mitad de los bits son cero, de modo que la mitad de los bits se procesan en el primer ciclo y luego todos los bits se procesan en el segundo ciclo. Esto divide el cálculo procesado por la unidad lógica combinacional 410 en dos ciclos y evita que el cálculo sea descodificado por análisis de potencia.
Es proporcionado un selector Li (L0 y L1 son mostrados en la Fig. 4) para cada bit almacenado en el flip flop Si. Opcionalmente, cuando el bit aleatorio Ri es cero, el selector transfiere el valor correcto del bit almacenado en el flip flop Si a la unidad lógica combinacional 410. Sin embargo, cuando Ri es 1, entonces en el primer ciclo, un valor aleatorio (Ri, por ejemplo, R0 y R1 mostrado en la Fig. 4) es proporcionado a la unidad lógica combinacional 410 desde un flujo aleatorio 460 por una puerta XOR 480 y en el segundo ciclo, el bit almacenado en el flip flop Si se transfiere a la unidad lógica combinacional 410. Opcionalmente, los valores aleatorios son los mismos (Ri) según lo proporcionado por el generador de bits aleatorios 440 o pueden provenir de un generador de bits aleatorios distinto. Del mismo modo, los bits que se seleccionan en forma aleatoria para ser reemplazados pueden establecerse en el valor opuesto del valor correcto (por ejemplo, uno en lugar de cero y cero en lugar de uno). El circuito lógico 400 mejorado incluye un indicador 450 que proporciona un valor de 1 para el primer ciclo y un valor de cero para el segundo ciclo. Opcionalmente, en el primer ciclo, el valor de 1 permite proporcionar un valor aleatorio al selector Li y luego proporcionar a la unidad lógica combinacional 410 si Ri tiene un valor de 1. En una realización ilustrativa de la presente divulgación, las unidades de almacenamiento intermedio 470 se proporcionan para preservar el valor del bit almacenado en el flip flop Si para el segundo ciclo en el caso de que Ri sea 1.
La Fig. 5 es una ilustración esquemática 500 de señales lógicas y consumo de potencia en función del tiempo del circuito lógico 400 mejorado y la Fig. 6 es un diagrama de flujo de un procedimiento 600 para ejecutar cálculos lógicos en dos ciclos de acuerdo con un realización ilustrativa de la presente divulgación. El circuito lógico 400 mejorado usa 2 señales de reloj, una que tiene una frecuencia de reloj clk 510 y una que tiene la mitad de la frecuencia clk/2 520. Opcionalmente, algunos de los elementos del circuito funcionan en la frecuencia clk 510 y algunos funcionan a la mitad de la frecuencia clk/2 520 (en dos ciclos). En una realización ilustrativa de la presente divulgación, el circuito lógico 400 acepta valores de un conjunto inicial almacenado de bits en los flip flops Si en el elemento de almacenamiento 420 (etapa 610). Una señal 550 muestra un conjunto ilustrativo de bits almacenados en los flip flops Si en el circuito lógico 400 mejorado. Opcionalmente, el generador de bits aleatorios 440 genera un conjunto aleatorio de los bits Ri como es mostrado mediante una señal 530 para determinar cuál de los bits almacenados en los flip flops Si son usados en el primer ciclo y qué bits sólo son usados en el segundo ciclo (etapa 620).
En el primer ciclo, algunos de los bits almacenados en los flip flops Si son transferidos desde el elemento de almacenamiento 420 a la unidad lógica combinacional 410 y algunos bits son reemplazados por valores aleatorios (etapa 630). Los bits aleatorios Ri determinan qué bits son transferidos y qué bits son reemplazados en el primer ciclo. En el segundo ciclo, todos los bits son transferidos desde el elemento de almacenamiento 420 a la unidad lógica combinacional 410 (los bits aleatorios son reemplazados por los bits reales) (etapa 640). Opcionalmente, en el segundo ciclo, menos bits cambian de 0 a 1 consumiendo una gran cantidad de potencia en la unidad lógica combinacional 410, ya que casi la mitad ya ha cambiado en el ciclo anterior. El resultado del procesamiento por la unidad combinacional lógica 410 sirve como los siguientes bits de estado Ni (540) que se almacenarán nuevamente en el elemento de almacenamiento 420 (etapa 650).
En una realización ilustrativa de la presente divulgación, una línea de tiempo 560 muestra un uso de potencia estándar por un circuito lógico en relación con una línea de tiempo 570 que muestra el consumo de potencia dividido aleatoriamente en dos partes durante los dos ciclos. Algunos de los bits están configurados correctamente en el primer ciclo y otros sólo son corregidos en el segundo ciclo.
La Fig. 7 es una ilustración esquemática de un circuito lógico 700 mejorado del dispositivo criptográfico 110 que también enmascara los siguientes bits de estado Ni (540) de acuerdo con una realización ilustrativa de la presente divulgación. El circuito lógico 700 mejorado es similar al circuito lógico 400 mejorado, excepto que, como fue explicado con anterioridad, el circuito lógico 400 mejorado solo impide el análisis de potencia de la unidad lógica combinacional 410 y no del elemento de almacenamiento 420. En el circuito lógico 700, son usadas un par de puertas XOR interconectadas (710, 720) para codificar y descodificar los bits de datos almacenados en el elemento de almacenamiento 420. U opcionalmente, la puerta XOR 710 aplica una máscara aleatoria a los siguientes bits de estado Ni para que los siguientes bits de estado Ni sean codificados aleatoriamente cuando se almacenan en el elemento de almacenamiento 420 para evitar interceptación con análisis de potencia. Igualmente, la puerta XOR 720 aplica la máscara aleatoria para descodificar los bits almacenados en los flip flops Si cuando llegan a la unidad lógica combinacional 410, para que se procesen los datos correctos.
La Fig. 8 es una ilustración esquemática de un circuito lógico mejorado alternativo 800 de un dispositivo criptográfico que también enmascara el siguiente estado de acuerdo con una realización ilustrativa de la presente divulgación. El circuito lógico mejorado 800 es similar al circuito lógico mejorado 700, excepto que se implementa sin unidades de almacenamiento intermedio 470.
Debe apreciarse además que los procedimientos y aparatos descritos con anterioridad pueden variar de muchas maneras, incluyendo la misión y agregado de pasos, cambiando el orden de los pasos y el tipo de dispositivos utilizados. Debe apreciarse que diferentes características pueden combinarse de diferentes maneras. En particular, no todas las características mostradas con anterioridad en una realización particular son necesarias en cada realización de la divulgación. Otras combinaciones de las características anteriores también se consideran dentro del alcance de las reivindicaciones adjuntas. Los expertos en la materia también apreciarán que la presente descripción no se limita a lo que se ha mostrado y descrito particularmente con anterioridad.

Claims (10)

REIVINDICACIONES
1. Un circuito electrónico (110, 400, 700, 800) con protección contra interceptación por análisis de potencia, que comprende:
un elemento de almacenamiento (420) configurado para almacenar un conjunto de bits correspondientes a valores correctos, en el que el elemento de almacenamiento (420) es accionado por una primera señal de reloj (clk/2520) que tiene una primera frecuencia;
un generador de bits aleatorios (440), configurado para generar un bit aleatorio (R0, R1, Ri) para cada uno del conjunto de bits almacenado correspondiente a los valores correctos respectivamente, siendo dicho generador de bits aleatorios accionado por la primera señal de reloj;
un indicador (450), accionado por una segunda señal de reloj en una segunda frecuencia que es de dos veces la primera frecuencia, configurado para proporcionar un primer valor para un primer ciclo de la segunda señal de reloj y un segundo valor para un segundo ciclo de la segunda señal de reloj;
una pluralidad de selectores (L0, L1), acoplados al elemento de almacenamiento (420) y al generador de bits aleatorios (440), siendo cada selector accionado por uno de los bits aleatorios y estando configurado ya sea para el bit correspondiente del conjunto de bits almacenado correspondiente a los valores correctos, o para un bit reemplazado,
en el que el primer valor permite que un valor aleatorio sea proporcionado como el bit reemplazado, y el segundo valor permite que el valor correcto sea establecido como el bit reemplazado; y
una unidad lógica combinacional (410), acoplada a la pluralidad de selectores (L0, L1), configurada para proporcionar un siguiente conjunto de bits de estado (N0, N1, 540) luego de dos ciclos de la segunda señal de reloj al elemento de almacenamiento (420), en el que la unidad lógica combinacional (410) está configurada para realizar un primer cálculo lógico en la salida de la pluralidad de selectores (L0, L1) incluyendo cada uno de los bits reemplazados en el primer ciclo, y está configurada para realizar un último cálculo lógico sobre todo el conjunto de bits almacenado correspondiente a los valores correctos en el segundo ciclo.
2. Un circuito electrónico (110, 400, 700, 800) con protección contra interceptación por análisis de potencia, que comprende:
un elemento de almacenamiento (420) configurado para almacenar un conjunto de bits correspondientes a valores correctos, en el que el elemento de almacenamiento (420) es accionado por una primera señal de reloj (clk/2520) que tiene una primera frecuencia;
un generador de bits aleatorios (440), configurado para generar un bit aleatorio (R0, R1, Ri) para cada uno del conjunto de bits almacenado correspondiente a valores correctos respectivamente, siendo dicho generador de bits aleatorios accionado por la primera señal de reloj;
un indicador (450), accionado por una segunda señal de reloj a una segunda frecuencia que es de dos veces la primera frecuencia, configurado para proporcionar un primer valor para un primer ciclo de la segunda señal de reloj y un segundo valor para un segundo ciclo de la segunda señal de reloj;
una pluralidad de selectores (L0, L1), acoplados al elemento de almacenamiento (420) y al generador de bits aleatorios (440), siendo cada selector accionado por uno de los bits aleatorios y estando configurado ya sea para el bit correspondiente del conjunto de bits almacenado correspondiente a los valores correctos, o un bit reemplazado,
en el que el primer valor permite que el valor opuesto del valor correcto sea proporcionado como el bit reemplazado, y el segundo valor permite que el valor correcto sea establecido como el bit reemplazado; y una unidad lógica combinacional (410), acoplada a la pluralidad de selectores (L0, L1), configurada para proporcionar un siguiente conjunto de bits de estado (N0, N1, 540) luego de dos ciclos de la segunda señal de reloj al elemento de almacenamiento (420), en el que la unidad lógica combinacional (410) está configurada para realizar un primer cálculo lógico en la salida de la pluralidad de selectores (L0, L1) incluyendo cada uno de los bits reemplazados en el primer ciclo, y está configurada para realizar un último cálculo lógico en todo el conjunto de bits almacenado correspondiente a los valores correctos en el segundo ciclo.
3. El circuito electrónico (110, 400) de acuerdo con la reivindicación 1 o la reivindicación 2, que comprende además una unidad de almacenamiento intermedio (470) asociada con el elemento de almacenamiento (420) para almacenar el conjunto de bits almacenado para uso en el segundo ciclo.
4. El circuito electrónico (110, 400, 700, 800) de acuerdo con la reivindicación 1 o la reivindicación 2, en el que el conjunto de bits almacenado está codificado por las primeras puertas XOR (710) y almacenado en el elemento de almacenamiento (420), y el conjunto de bits almacenado está descodificado por las segundas puertas XOR (720) cuando son proporcionados a la unidad lógica combinacional (410), en el que las primeras puertas XOR y las segundas puertas XOR están interconectadas.
5. Un procedimiento (600) de protección de un circuito electrónico (110, 200, 300, 400, 700, 800) contra interceptación por análisis de potencia, que comprende:
almacenar (610) un conjunto inicial de bits correspondientes a valores correctos en un elemento de almacenamiento (420) accionado por una primera señal de reloj (clk/2520) que tiene una primera frecuencia; generar (620), mediante un generador de bits aleatorios (440) accionado por la primera señal de reloj, un bit aleatorio (R0, R1, Ri) para cada uno del conjunto inicial de bits almacenado correspondiente a los valores correctos respectivamente;
proporcionar, mediante un indicador (450) accionado por una segunda señal de reloj a una segunda frecuencia que es de dos veces la primera frecuencia, un primer valor para un primer ciclo de la segunda señal de reloj y un segundo valor para un segundo ciclo de la segunda señal de reloj;
emitir, mediante un selector accionado por un bit aleatorio respectivo, ya sea el bit correspondiente del conjunto de bits almacenado correspondiente a los valores correctos, o un bit reemplazado,
en el que el primer valor permite que un valor aleatorio sea proporcionado como el bit reemplazado, y el segundo valor permite que el valor correcto sea establecido como el bit reemplazado;
proporcionar, mediante una unidad lógica combinacional (410), un siguiente estado de bits luego de dos ciclos de la segunda señal de reloj al elemento de almacenamiento (420), en el que la realización de cálculos lógicos en un ciclo de la segunda señal de reloj comprende:
en el primer ciclo, realizar un primer cálculo lógico en la salida de la pluralidad de selectores incluyendo cada uno de los bits reemplazados; y
en el segundo ciclo, realizar un último cálculo lógico en todo el conjunto inicial de bits almacenado correspondiente a los valores correctos; y
almacenar el siguiente conjunto de bits de estado (N0, N1, 540) en el elemento de almacenamiento (420).
6. Un procedimiento (600) de protección de un circuito electrónico (110, 200, 300, 400, 700, 800) contra interceptación por análisis de potencia, que comprende:
almacenar (610) un conjunto inicial de bits correspondientes a valores correctos en un elemento de almacenamiento (420) accionado por una primera señal de reloj (clk/2520) que tiene una primera frecuencia generar (620), mediante un generador de bits aleatorios (440) accionado por la primera señal de reloj, un bit aleatorio (R0, R1, Ri) para cada uno del conjunto inicial de bits almacenado correspondiente a los valores correctos respectivamente;
proporcionar, mediante un indicador (450) accionado por una segunda señal de reloj a una segunda frecuencia que es de dos veces la primera frecuencia, un primer valor para un primer ciclo de la segunda señal de reloj y un segundo valor para un segundo ciclo de la segunda señal de reloj;
emitir, mediante un selector accionado por un bit aleatorio respectivo, ya sea el bit correspondiente del conjunto de bits almacenado correspondiente a los valores correctos, o un bit reemplazado,
en el que el primer valor permite que el valor opuesto al valor correcto sea proporcionado como el bit reemplazado, y el segundo valor permite que el valor correcto sea establecido como el bit reemplazado; proporcionar, mediante una unidad lógica combinacional (410), un siguiente estado de bits luego de dos ciclos de la segunda señal de reloj al elemento de almacenamiento (420), en el que la realización de cálculos lógicos en un ciclo de la segunda señal de reloj comprende:
en el primer ciclo, realizar un primer cálculo lógico en la salida de la pluralidad de selectores incluyendo cada uno de los bits reemplazados; y
en el segundo ciclo, realizar un último cálculo lógico sobre todos el conjunto inicial de bits almacenado correspondiente a los valores correctos; y
almacenar el siguiente conjunto de bits de estado (N0, N1, 540) en el elemento de almacenamiento (420).
7. El procedimiento (600) de acuerdo con la reivindicación 5 o la reivindicación 6, que comprende además almacenar el conjunto inicial de bits almacenado para uso en el segundo ciclo en una unidad de almacenamiento intermedio (470) asociada con el elemento de almacenamiento (420).
8. El procedimiento (600) de acuerdo con la reivindicación 5 o la reivindicación 6, en el que la etapa de almacenamiento del conjunto inicial de bits comprende además codificar el conjunto inicial de bits almacenado usando las primeras puertas XOR (710), y la etapa del segundo ciclo, realizar el último cálculo lógico en todos los conjuntos iniciales de bits almacenados, comprende además descodificar el conjunto inicial de bits almacenado mediante el uso de las segundas puertas XOR (720) antes de realizar el último cálculo lógico.
9. El procedimiento (600) de acuerdo con la reivindicación 5, en el que la mitad del conjunto inicial de bits almacenado es reemplazado por los valores aleatorios proporcionados por el generador de bits aleatorios (440) en el primer ciclo.
10. El procedimiento (600) de acuerdo con la reivindicación 5, en el que un número aleatorio del conjunto inicial de bits almacenado es reemplazado por los valores aleatorios proporcionados por el generador de bits aleatorios (440) en el primer ciclo.
ES16196520T 2016-01-26 2016-10-31 Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo Active ES2807214T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IL243789A IL243789A0 (en) 2016-01-26 2016-01-26 Split calculation of the next state to prevent analysis by energy consumption

Publications (1)

Publication Number Publication Date
ES2807214T3 true ES2807214T3 (es) 2021-02-22

Family

ID=57300865

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16196520T Active ES2807214T3 (es) 2016-01-26 2016-10-31 Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo

Country Status (7)

Country Link
US (1) US10374791B2 (es)
EP (1) EP3200173B1 (es)
KR (1) KR101997005B1 (es)
CN (1) CN107016292B (es)
ES (1) ES2807214T3 (es)
IL (1) IL243789A0 (es)
TW (1) TWI637618B (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878133B2 (en) * 2018-11-18 2020-12-29 Nuvoton Technology Corporation Mitigation of side-channel attacks using small-overhead random pre-charging
US12319718B2 (en) 2019-01-09 2025-06-03 Spiber Inc. Modified fibroin
US11184149B2 (en) * 2019-02-19 2021-11-23 International Business Machines Corporation Computing range queries over encrypted data
US11663039B2 (en) 2020-04-07 2023-05-30 International Business Machines Corporation Workload management using reinforcement learning

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004008641A1 (en) * 2002-07-10 2004-01-22 Koninklijke Philips Electronics N.V. Electronic circuit with array of programmable logic cells
JP2008085986A (ja) 2006-08-30 2008-04-10 Ricoh Co Ltd データ変換装置と電子装置とデータ変換方法
US7554865B2 (en) * 2006-09-21 2009-06-30 Atmel Corporation Randomizing current consumption in memory devices
FR2949633B1 (fr) 2009-08-27 2011-10-21 St Microelectronics Rousset Procede et dispositif de contremesure pour proteger des donnees circulant dans un composant electronique
US9213835B2 (en) * 2010-04-07 2015-12-15 Xilinx, Inc. Method and integrated circuit for secure encryption and decryption
GB2487901B (en) * 2011-02-03 2019-12-04 Advanced Risc Mach Ltd Power signature obfuscation
AU2013270397B2 (en) * 2012-06-01 2015-11-12 Blackberry Limited Universal synchronization engine based on probabilistic methods for guarantee of lock in multiformat audio systems
US9183399B2 (en) * 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
WO2015145487A1 (ja) 2014-03-28 2015-10-01 三菱電機株式会社 クロック位相制御回路

Also Published As

Publication number Publication date
US10374791B2 (en) 2019-08-06
EP3200173A1 (en) 2017-08-02
IL243789A0 (en) 2016-07-31
US20170214520A1 (en) 2017-07-27
CN107016292B (zh) 2020-05-12
CN107016292A (zh) 2017-08-04
EP3200173B1 (en) 2020-06-03
TW201728120A (zh) 2017-08-01
KR101997005B1 (ko) 2019-10-01
KR20170089395A (ko) 2017-08-03
TWI637618B (zh) 2018-10-01

Similar Documents

Publication Publication Date Title
CN103748826B (zh) 防止通过边带信道攻击进行的数据提取的方法和设备
ES2717999T3 (es) Método criptográfico por bloques para cifrar/descifrar mensajes y dispositivos criptográficos para implementar este método
US9418246B2 (en) Decryption systems and related methods for on-the-fly decryption within integrated circuits
ES2619613T3 (es) Método criptográfico para intercambiar mensajes de forma segura y dispositivo y sistema para implementar este método
US7454017B2 (en) Information processing unit
ES2807214T3 (es) Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo
Das et al. Security analysis of industrial test compression schemes
JP7393862B2 (ja) リングオシレータベースのエントロピー源への位相トラッキングアタックに対する対応策
ES2386061T3 (es) Procedimiento de detección de anomalias en un circuito criptográfico protegido por lógica diferencial y circuito para implementar a dicho procedimiento
Gaspoz et al. Threshold implementations in software: Micro-architectural leakages in algorithms
Paar et al. Stream ciphers
TW202021276A (zh) 使用小型間接隨機預充電以防範旁通道攻擊的電子元件
Tunstall Smart card security
Huang et al. Trace buffer attack on the AES cipher
Bhasin et al. Exploiting FPGA block memories for protected cryptographic implementations
Lac et al. Thwarting fault attacks using the internal redundancy countermeasure (IRC)
Kirkpatrick et al. PUF ROKs: A hardware approach to read-once keys
Portella do Canto et al. Buying AES Design Resistance with Speed and Energy
EP3203460B1 (en) Secure data storage
Rose Secure hardware design for trust
ES2777526T3 (es) Componente lógico programable, circuito de formación de claves y procedimiento para proporcionar una información de seguridad
Tunstall Secure cryptographic algorithm implementation on embedded platforms
Spyropoulos Secure implementation for post-quantum cryptography
Shimizu et al. Unified coprocessor architecture for secure key storage and challenge-response authentication
Cioranesco et al. Buying AES Design Resistance with Speed and Energy