ES2379100T3 - Procedimiento para la determinación segura de datos - Google Patents

Procedimiento para la determinación segura de datos Download PDF

Info

Publication number
ES2379100T3
ES2379100T3 ES06841462T ES06841462T ES2379100T3 ES 2379100 T3 ES2379100 T3 ES 2379100T3 ES 06841462 T ES06841462 T ES 06841462T ES 06841462 T ES06841462 T ES 06841462T ES 2379100 T3 ES2379100 T3 ES 2379100T3
Authority
ES
Spain
Prior art keywords
order
register
processor
value
auxiliary
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
ES06841462T
Other languages
English (en)
Inventor
Michael Braun
Anton Kargl
Bernd Meyer
Stefan Pyka
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.)
Siemens AG
Siemens Corp
Original Assignee
Siemens AG
Siemens 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 Siemens AG, Siemens Corp filed Critical Siemens AG
Application granted granted Critical
Publication of ES2379100T3 publication Critical patent/ES2379100T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F2207/7266Hardware adaptation, e.g. dual rail logic; calculate add and double simultaneously
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Signal Processing (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

Procedimiento para la determinación segura de datos, en el que en un primer procesador se aplica una operación matemática con una clave en un punto de una curva elíptica, pudiendo representarse la clave como número binario con una secuencia de bits (bi), - con una primera orden (x) que da lugar en otro procesador a una primera operación (X) en al menos un contenido de registro y una segunda orden (y), que da lugar en el otro procesador a una segunda operación (Y), que incluye las etapas: - determinación de al menos un valor (d) en función de ambas órdenes (x, y); - inicialización de una primera magnitud auxiliar (R) y de una segunda magnitud auxiliar (S); - secuencialmente para cada bit (bi) de la clave, realización de las siguientes etapas: (a) transmisión de la primera magnitud auxiliar (R) a un primer registro y de la segunda magnitud auxiliar (S) a un segundo registro del otro procesador, (b) en función del valor del bit (bi) y de al menos un valor (d), asignación de una orden a una variable de salida (A) tal que * bien se asigna la primera orden (x), * o bien se asigna la segunda orden (y), (c) transmisión de la variable de salida (A) al registro de órdenes del otro procesador, (d) determinación de la primera (R) y segunda (S) magnitud auxiliar actualizadas en el otro procesador, - tras finalizar las etapas para los bits (bi), emisión de la primera (R) y/o de la segunda (S) magnitud auxiliar y determinación de un resultado de la operación matemática procedente de la primera (R) y/o de la segunda magnitud auxiliar (S), conduciendo la primera operación (X) sobre contenidos del registro del otro procesador, que está asignado a la primera orden (x), a un intercambio de los contenidos del primer y del segundo registro y en el que la segunda operación (Y) sobre contenidos del registro del otro procesador, que está asignado a la segunda orden (y), no conduce a ningún intercambio de contenidos en el primer y el segundo registro.

Description

Procedimiento para la determinación segura de datos.
La invención se refiere a un procedimiento para la determinación segura de datos, en el que en un primer procesador se aplica una operación matemática con una clave en un punto de una curva elíptica, pudiendo representarse la clave como número binario con una secuencia de bits (bi).
Los sistemas criptográficos asimétricos garantizan mediante el establecimiento de pares de claves formados por una clave privada y una clave pública un elevado nivel de seguridad en el sentido de que para un atacante es casi imposible decodificar en un tiempo finito la clave privada o el mensaje codificado con clave pública. Los sistemas criptográficos usuales, como por ejemplo los que se basan en curvas elípticas, se basan en una codificación que puede realizarse en tiempo polinómico, pero que sólo puede invertirse en tiempo exponencial respecto a la longitud de la clave en bits. En sistemas basados en curvas elípticas se utilizan hoy en día longitudes de claves de n = 160 a 192 bits y en los sistemas basados en algoritmos RSA han de utilizarse al respecto longitudes de n = 1024 a 1536 bits para un nivel de seguridad aproximadamente igual.
Así los procedimientos criptográficos en base a curvas elípticas son de mayor rendimiento y precisan de una inferior anchura de banda para transmitir los parámetros del sistema que otros procedimientos criptográficos para un grado comparable de seguridad alcanzable.
Como ejemplo citaremos aquí el conocido procedimiento Diffie-Hellman para acordar una clave común entre dos interlocutores de comunicación basándose en el contorno de curvas elípticas. Aquí conoce el primer interlocutor de la comunicación A un parámetro de seguridad ra y el segundo interlocutor de la comunicación B un parámetro de seguridad rb. Una vez que ambos interlocutores de la comunicación se han puesto de acuerdo sobre una curva elíptica y sobre un punto común P situado en esta curva elíptica, determina el interlocutor de la comunicación A un valor
Qa = ra * P
y el interlocutor de la comunicación B un valor
Qb = rb * P.
A continuación de ello transmite el interlocutor de la comunicación A el valor Qa al interlocutor de la comunicación B y el interlocutor de la comunicación B el valor Qb al interlocutor de la comunicación A. En otra multiplicación escalar determina ahora el interlocutor de la comunicación A la clave común
K = ra * Qb = ra * rb * P
y el interlocutor de la comunicación B la misma clave común
K = rb * Qa = rb * ra * P.
Estas multiplicaciones escalares forman así un módulo esencial en procedimientos criptográficos en base a curvas elípticas. Especialmente ventajosa es la aplicación de curvas elípticas, ya que la operación de inversión, es decir, la determinación de un escalar ra,b a partir del conocimiento de los puntos Qa,b y P, tal que Qa,b = rab sólo puede calcularse con un coste de cálculo considerable. Según el estado actual de conocimientos, puede calcularse la multiplicación escalar en tiempo polinómico, pero sólo puede invertirse en tiempo exponencial.
No obstante, los procedimientos criptográficos conocidos en base a curvas elípticas son vulnerables mediante los llamados ataques de canal lateral. Estos son una alternativa a los métodos de ataque en basados en la inversión de la codificación, para romper de la manera más eficiente posible el algoritmo que sirve de base a la codificación. Los mismos pueden utilizarse en particular en medios auxiliares móviles como por ejemplo smartcards (tarjetas inteligentes)
o dongles (candados electrónicos) en los que está memorizado material secreto de claves, para posibilitar un intercambio codificado de mensajes o generar firmas digitales o decodificar mensajes.
El atacante aprovecha la accesibilidad relativamente fácil de líneas de datos de los correspondientes circuitos para medir magnitudes físicas como intensidad, emisión electromagnética, resultados en faltas inducidas o tiempos de recorrido de determinados cálculos. En una evaluación inmediata de los valores de medida en base a un sencillo análisis de la intensidad (SPA) o mediante registro de valores de medida como la intensidad mediante un osciloscopio de memoria y subsiguiente evaluación estadística, pueden obtenerse de manera eficiente informaciones sobre los algoritmos que sirven de base o en el peor de los casos informaciones sobre una clave existente en ese momento.
Esto último se describirá más en detalle en base a un ejemplo: Un procedimiento para la codificación prevé tanto para algoritmos basados en curvas elípticas como también para los basados en el procedimiento RSA la aplicación de una operación matemática.
En el caso de las curvas elípticas ha de realizarse una multiplicación escalar
Q = k * P
como operación matemática, siendo P un punto sobre una curva elíptica sobre un cuerpo finito K y k de nuevo una clave
o una magnitud derivada de la misma.
Una posible conversión de la multiplicación escalar puede realizarse implementando el siguiente algoritmo sobre una unidad operativa, estando predeterminada la clave k por una representación binaria (bi, i = n-1…0):
Algoritmo 1: EC curva elíptica: Q = k * P
(1.1) Q + 0
(1.2) i + n-1
(1.3) siempre que i > -1
(1.3.1) Q + 2 * Q
(1.3.2) en el caso de que bi = 1 entonces Q + Q + P
(1.3.3) i + i – 1
(1.4) da como resultado Q
En el caso de un análisis sencillo de la intensidad (SPA), se analiza el perfil del consumo de corriente de una multiplicación escalar. La multiplicación escalar está compuesta principalmente por adiciones y duplicaciones. Las operaciones se diferencian no obstante considerablemente en la cantidad de operaciones elementales en K, con lo que también es diferente el consumo de corriente. Por lo tanto mediante el correspondiente ataque de canal lateral pueden deducirse los bits individuales y con ello la propia representación binaria de k.
Un posible paso para defenderse de tales ataques consiste en igualar los flujos de corriente y tiempos de recorrido del cálculo dependiente del valor del correspondiente bit para ambos estados posibles del bit 0 y 1, tal como se muestra a continuación es:
Un punto P de una curva elíptica E viene definido por su coordenada x y su coordenada y. En base a la ecuación de la curva elíptica E existen para un valor x como máximo dos valores y diferentes y1 e y2, con lo que los puntos (x, y1) y (x, y2) son puntos de la curva elíptica E. Para fijar así un punto sobre la curva elíptica E inequívocamente, es necesario además de la coordenada x adicionalmente sólo un bit como información adicional.
En el caso de una curva elíptica E sobre cuerpos primos finitos, es suficiente por ejemplo el llamado Least Significant Bit (LSB, el bit menos significativo) de la coordenada y o bien el signo de la coordenada y del punto correspondiente como información adicional.
Estas características de curvas elípticas se utilizan en el llamado algoritmo Montgomery-Leiter, que representa un método común para implementar la multiplicación escalar sobre curvas elípticas. El algoritmo Montgomery-Leiter puede implementarse tal que para calcular la coordenada x de un múltiplo escalar de un punto P sólo se utiliza la coordenada x de P. Puesto que el Montgomery-Leiter es a la vez, tal como mostraremos a continuación, un método muy bueno para contrarrestar análisis de intensidad sencillos, se implementa el mismo a menudo en criptosistemas que corren sobre Embedded Systems (sistemas embutidos).
Según el procedimiento descrito a continuación de un algoritmo Montgomery-Leiter, se calcula un múltiplo k * P de un punto P que se encuentra sobre una curva elíptica.
El escalar k = (bn-1, …, bi, …, b0), que se da en representación binaria, se procesa por bits, comenzando en el llamado Most Significant Bit (MSB, N1) o bit más significativo.
Algoritmo 2: EC -curva elíptica: Q = k*P Montgomery-Leiter
(2.1) R + P, S + 0
(2.2) i + n-1
(2.3) siempre que i > -1
(2.3.1 en el caso de que bi = 1: {S + S + R, R + 2 * R}
(2.3.2) caso contrario (R + R + S, S + 2 * S)
(2.3.3) i + i – 1
(2.4) da como resultado R, S
(2.5) reconstruye k * P a partir R, S y P En el ejemplo mostrado corren la adición y el doblado independientemente de los bits por completo de la misma forma. Por lo tanto desde el punto de vista de la secuencia de las operaciones no puede obtenerse así conclusión alguna en cuanto a la secuencia de bits. No obstante, es problemática la instrucción de salto ("en el caso de que" o bien "caso contrario"), ya que la misma da lugar a un salto a direcciones distintas, lo que se hace patente en el distinto consumo de corriente.
El documento US 2002/0029346 da a conocer un procedimiento para enmascarar operaciones criptográficas. El documento XP 001160513 da a conocer un algoritmo Montgomery-Leiter.
Así es tarea básica de la invención indicar un procedimiento para un tratamiento seguro de datos en el que aumente más aún la seguridad frente a ataques de canal lateral.
En el marco de la invención se resuelve esta tarea mediante un procedimiento con las características de la reivindicación 1. Ventajosos perfeccionamientos de la invención se indican en las reivindicaciones dependientes.
En el marco de la invención se utiliza en un procedimiento para la determinación segura de datos en un primer procesador una operación matemática con una clave sobre un punto de una curva elíptica, pudiendo representarse la clave como número binario con una secuencia de bits (bi). El procedimiento presenta una primera orden (x), que en otro procesador da lugar a una primera operación (X) en al menos un contenido de registro y a una segunda orden (y) que en el otro procesador da lugar a una segunda operación (Y). Se determina un valor (d) en función de ambas órdenes (x, y). Se inicializan una primera magnitud auxiliar (R) y una segunda magnitud auxiliar (S), es decir, se dotan de valores iniciales. Para cada bit (bi) de la clave se realizan secuencialmente las siguientes etapas:
La primera magnitud auxiliar (R) se transmite a un primer registro del otro procesador y la segunda magnitud auxiliar (S) se transmite a un segundo registro del otro procesador. En función del valor del bit (bi) y del otro valor (d), de los que al menos hay uno, se asigna una orden a una variable de salida (A) tal que bien se asigna la primera orden (x) o bien la segunda orden (y). La variable de salida (A) se transmite al registro de órdenes del otro procesador.
Finalmente se determinan las primeras (R) y segundas (S) magnitudes auxiliares actualizadas en el otro procesador. Tras finalizar las etapas para los bits (bi) se emiten la primera (R) y/o la segunda (S) magnitud auxiliar y se determina el resultado de la operación matemática a partir de la primera (R) y/o de la segunda magnitud auxiliar (S).
Bajo otro procesador ha de entenderse en esta invención, sin excluir lo general de este concepto, un coprocesador, enparticular un cripto-procesador. Éste dispone de un conjunto de órdenes limitado y está protegido en cuanto a técnica de hardware tal que prácticamente no es reconocible mediante mediciones, aún cuando pueden realizarse operaciones equivalentes o no equivalentes en el coprocesador.
Así se caracteriza la invención en particular porque en el procedimiento se determinan instrucciones, los llamados códigos de operación, para el coprocesador, que provocan un intercambio o ninguno de contenidos de registros dentro del coprocesador. Debido a la configuración técnica del coprocesador, no puede distinguirse desde fuera el desplazamiento del contenido de un registro, por ejemplo del registro A al registro B, de un desplazamiento del registro A al registro C. En consecuencia consiste el planteamiento de solución genérico descrito para la tarea en particular en que en lugar de determinar direcciones en zonas de memoria que contienen las magnitudes auxiliares a procesar, se determinan códigos de operación para instrucciones de coprocesadores para el intercambio en función de los bits de contenidos de registro. Aquí se aprovecha el que las direcciones de contenidos de registro en coprocesadores no tienen importancia alguna, ya que las magnitudes auxiliares ya están cargadas en los registros del coprocesador y los registros se direccionan implícitamente mediante el correspondiente código de operación.
Por lo tanto el procedimiento correspondiente a la invención tiene la ventaja de que se incrementa claramente la protección frente a ataques de canal lateral, en particular mediante un análisis de la intensidad, ya que el intercambio de dos registros tiene lugar exclusivamente dentro del coprocesador y el intercambio o bien el no intercambio se basa en el envío de dos códigos de operación, cuya ejecución dentro del coprocesador no puede distinguirse.
Como otra ventaja adicional de la presente invención, resulta que se evita una bifurcación If-Else (si-entonces) especialmente sensible a los ataques de canal lateral, al realizarse mediante el cálculo de una diferencia entre los dos códigos de operación una determinación implícita de la bifurcación If-Else.
La aplicación de la presente invención no queda limitada a coprocesadores. Así es por ejemplo posible utilizar el procedimiento correspondiente a la invención para elegir distintos códigos de operación para implementar un programa automodificable y de esta manera implementar una bifurcación If-Else implícita. Además, puede transmitirse el procedimiento correspondiente a la invención a otras implementaciones de rutinas de exponenciación rápidas y multiplicaciones escalares.
Según una configuración ventajosa de la presente invención, tienen la primera (x) y la segunda orden (y) el mismo peso Hamming. Así queda garantizado de manera ventajosa que tampoco ambas órdenes (x, y) pueden distinguirse desde fuera mediante ataques de canal lateral.
La presente invención se describirá a continuación más en detalle con ejemplos de ejecución en base a los dibujos. Se muestra en
figura 1 en una representación esquemática, la asignación de magnitudes auxiliares (R, S) a distintos registros de un
coprocesador, figura 2 en una representación esquemática, la asignación de magnitudes auxiliares (R, S) a registros de un
coprocesador mediante códigos de operación dentro del coprocesador.
En base a la secuencia mostrada en el algoritmo 2 de un Montgomery-Leiter según el estado de la técnica, se observa que en las etapas del proceso (2.3.1) y (2.3.2) en función del bit (bi) solamente están intercambiadas las magnitudes auxiliares (R, S) .
(3.1) en el caso de que bi = 1: S + S + R, R + 2 * R)
(3.2) caso contrario {R + R + S, S + 2 * S}
Así puede seguirse simplificando el algoritmo 2, intercambiando las magnitudes auxiliares al principio y al final de un ciclo del bucle, cuando el bit de clave toma el valor 0. Sólo se necesita adicionalmente remitirse a una de ambas direcciones de salto, con F1 = {S + S + R, R + 2 * R}:
(4.1) en el caso de que bi = 1: F1
(4.2) caso contrario {intercambio (R, S), F1, intercambio (R, S)}
Una conversión técnica de hardware del algoritmo Montgomery-Leiter que sirve de base a un tal procedimiento se muestra en la figura 1. Dos magnitudes auxiliares (R) 101 y (S) 102 se desplazan en función del valor de un bit (bi) en cada caso a un primer 104 o segundo 105 registro de un coprocesador 103. Si por ejemplo tiene el bit de clave el valor 1, se desplaza 106 la magnitud auxiliar (R) 101 al primer registro 104 y la magnitud auxiliar (S) 102 se desplaza 109 al segundo registro 105. Por el contrario, cuando el bit de clave tiene el valor 0, se desplaza 107 la magnitud auxiliar (R) 101 al segundo registro 105 y se desplaza 108 la magnitud auxiliar (S) 102 al primer registro 104.
En el coprocesador 103 se realiza en ambos casos la función F1, con lo que los resultados de la función F1 pueden dado el caso intercambiarse una vez más.
El procedimiento descrito tiene no obstante el inconveniente de que sigue existiendo la posibilidad de detección mediante ataques de canal lateral, ya que en función del valor del bit son necesarios al copiar dos accesos a la memoria por cada palabra de ordenador. En elementos de cuerpo más largos son necesarios muchos accesos, lo que se refleja de manera significativa en el consumo de corriente.
Según la presente invención se elimina este inconveniente realizando el intercambio de las magnitudes auxiliares (R, S) dentro del coprocesador.
Este proceso se muestra en la figura 2. Independientemente del correspondiente bit de clave (bi) se desplaza 206 la magnitud auxiliar (R) 201 al primer registro 204 del coprocesador 203 y la segunda magnitud auxiliar (S) 202 se desplaza 207 al segundo registro 205 del coprocesador 203. En función del correspondiente bit de clave (bi) se determina no obstante un código de operación para el coprocesador 203 y se desplaza al registro de órdenes del coprocesador. Cuando el valor del bit de clave es 1, se desplaza un primer código de operación al registro de órdenes, con lo que la magnitud auxiliar (R) se desplaza 208 en el primer registro 204 al tercer registro 212 y la magnitud auxiliar
(S) en el segundo registro 205 se desplaza 211 al cuarto registro 213. Cuando el bit de clave tiene el valor 0, se desplaza por el contrario un segundo código de operación al registro de órdenes, con lo que la magnitud auxiliar (R) del primer registro 204 se desplaza 209 al cuarto registro 213 y la magnitud auxiliar (S) del segundo registro 205 se desplaza 210 al tercer registro 212.
Supongamos que en otro ejemplo de ejecución son R, S, C registros de datos internos del coprocesador. La secuencia de órdenes antes descrita para el coprocesador puede representarse como:
(5.1) si (bi) = 0 entonces {intercambiar (R, S)}
(5.2) caso contrario {no intercambiar (R, S)}.
Con ayuda de un tercer registro de datos C puede describirse la secuencia de órdenes también como sigue:
(6.1) si bi = 0 entonces (C + R, R + S, S + C)
(6.2) caso contrario (C + R, R + S, R + C) o bien
(7.1) C + R, R + S,
(7.2) si bi = 0 entonces (S + C)
(7.3) caso contrario (R + C).
Las asignaciones realizadas en la etapa del procedimiento (7.1) S + C yR + C no dan lugar a una diferencia que pueda medirse en el consumo de corriente, pero no obstante no está protegida la bifurcación que depende del bit, al igual que antes, frente a ataques de canal lateral. A continuación se describirá la orden S + C mediante el código de operación (x) y la orden R + C mediante el código de operación (y) y se supondrá además que, sin que ello signifique limitación, es x < y. Una orden con un código de operación es ejecutada por el coprocesador escribiendo el correspondiente código de operación en el registro de órdenes del coprocesador. Bajo estas hipótesis puede describirse la secuencia de órdenes como sigue:
(8.1) si (bi) = 0 entonces {A + x}
(8.2) caso contrario {A + y}
(8.3) C + R, R + S
(8.4) escribir el código de operación de A en el registro de órdenes
La única dependencia de bits medible que queda se origina en el algoritmo antes descrito mediante la asignación del código de operación. La instrucción de salto se logra evitar en (8.1) y (8.2) en el marco de la invención formando entre las órdenes (x) e (y) la diferencia d = y -x, con lo que el resultado de la instrucción de salto puede calcularse de la siguiente manera en función del bit.:
A = x + d x bi
Este procedimiento puede seguir mejorándose añadiendo dos palabras de ordenador h y h’, diferenciándose ambas palabras de ordenador (h, h’) sólo en el bit menos significativo de la palabra de ordenador h, que es el correspondiente bit de clave bi. Así resulta en la sustracción h – h’ = bi y el código de operación buscado puede calcularse como sigue:
A = x + h x d – h’ x d
Este polinomio se describe en el siguiente algoritmo:
(9.1) rotar bi, en el LSB de la palabra h
(9.2) copiar h en h’ y borrar el LSB de h’
(9.3) A + x
(9.4) m + h * d
(9.5) A + A + m
(9.6) m + h’ * d
(9.7) A + A – m
Si se utiliza este resultado para el algoritmo Montgomery-Leiter descrito en el algoritmo 2, se obtiene el siguiente algoritmo:
(10.1) x + orden {S + C} // intercambiar los contenidos de los registros de R, S
(10.2) y + orden {R + C} // no hay intercambio de R,S
(10.3) R + P, S + O
(10.4) d + y – x con x < y
(10.5) para i + n – 1 a 0 realizar
(10.6) rotar bi en el LSB de la palabra h
(10.7) copiar h en h’ y borrar el LSB de h’
(10.8) A + x
(10.9) m + h * d
(10.10) A + A + m
(10.11) m + h’ * d
(10.12) A + A – m
(10.13) C + R, R + S
(10.14) cargar A en el registro de órdenes del coprocesador
(10.15) calcular en el coprocesador S + S + R, R + 2 * R (10.19) reconstruir k * P a partir de R, S y P
(10.16)
C + R, R + S
(10.17)
cargar A en el registro de órdenes del coprocesador
(10.18)
fin
En otro ejemplo de ejecución se describe la implementación correspondiente a la invención cuando se utiliza por ejemplo el coprocesador ACE en el chip SLE66CX320P de Infineon.
El cripto-coprocesador ACE posee cuatro registros de datos CR0, CR1, CR2 y CR3 y un registro de operandos C. En este ejemplo están cargadas dos magnitudes auxiliares en los registros de datos CR1 y CR2, cuyos contenidos deben intercambiarse ahora. El bit secreto supongamos que es el bit menos significativo (LSB) del registro de trabajo A, que en este caso posee una longitud de 8 bits.
El cripto-coprocesador ACE dispone entre otros de las órdenes move_CR1_C y move_CR2_c, con cuya ayuda se desplaza el contenido del registro C al registro CR1 o bien al registro CR2. El código de operación x para la primera orden es 0x6b y el código de operación y para la segunda orden es 0x73. Debido a que la diferencia d entre ambos códigos de operación es 8, puede sustituirse la multiplicación h x d en el algoritmo (9.4) antes descrito por una orden de desplazamiento y simplificar así el algoritmo. El siguiente algoritmo muestra ahora la determinación del código de operación deseado para la primera o segunda orden, representando la operación & la operación lógica AND:
Elección del código de operación
(11.1) rotar A cíclicamente en tres bits hacia la izquierda
(11.2) colocar B + A + 0x6b
(11.3) calcular A + A & 0xf7 (enmascarar el tercer bit más pequeño)
(11.4) colocar A + B - A
En la etapa (11.1) se rota la clave y con ello el bit según el que ha de realizarse la diferenciación mediante una orden shift (desplazar) en 3 bits cíclicamente hacia la izquierda, lo cual corresponde a una multiplicación por la diferencia 8. En la etapa (11.2) se añade el valor del código de operación x. En la etapa (11.3) se borra el bit según el que ha de realizarse la diferenciación y se resta de nuevo la parte que queda a continuación en la cuarta etapa (11.4).
La siguiente implementación es una solución alternativa, representando la operación I la operación lógica OR:
Elección del código de operación
(12.1) calcular A & 0xfd (enmascarar el segundo bit menor)
(12.2) colocar A + A + 1
(12.3) calcular A & 0x03 (enmascarar todos los bits a excepción del segundo de menor valor)
(12.4) rotar A en tres bits hacia la izquierda
(12.5) calcular A I 0x63
Las instrucciones de las etapas (12.1) a (12.3) provocan que en función del bit menos significativo de la clave, según el que ha de realizarse la diferenciación, se asigne al registro A el valor 1 si el bit tiene el valor 0 o se asigne al registro A el valor 2 si el bit tiene el valor 1. En la etapa (12.4) se rota el contenido del registro A en 3 bits hacia la izquierda, lo que corresponde a una multiplicación por 8. En la etapa (12.5) se determina el código de operación. El código de operación deseado se encuentra a continuación en el registro A.
Utilizando el algoritmo 12 resulta el intercambio completo de dos registros seguro frente a ataques de canal lateral:
(13.1) calcular A & 0xfd (enmascarar el segundo bit menor)
(13.2) colocar A = A + 1
(13.3) calcular A & 0x03 (enmascarar todos los bits a excepción de los dos de menor valor)
(13.4) rotar A en tres bits hacia la izquierda
(13.5) calcular A I 0x63
(13.6) desplazar el registro ACE CR1 hacia C
(13.7) desplazar el registro ACE CR2 hacia CR1
(13.8) escribir el código de operación A en el registro de órdenes del coprocesador ACE
En el algoritmo 13 se combinan las etapas de cálculo para determinar un código de operación para el cripto-procesador procedente del algoritmo 12 con las etapas del algoritmo 8 para intercambiar los contenidos de los registros CR1 y CR2 del coprocesador en función de un bit de clave determinado.
La presente invención no queda limitada a los ejemplos de ejecución aquí descritos.

Claims (11)

  1. REIVINDICACIONES
    1. Procedimiento para la determinación segura de datos, en el que en un primer procesador se aplica una operación matemática con una clave en un punto de una curva elíptica, pudiendo representarse la clave como número binario con una secuencia de bits (bi), -con una primera orden (x) que da lugar en otro procesador a una primera operación (X) en al menos un contenido de registro y una segunda orden (y), que da lugar en el otro procesador a una segunda operación (Y), que incluye las etapas:
    -determinación de al menos un valor (d) en función de ambas órdenes (x, y); -inicialización de una primera magnitud auxiliar (R) y de una segunda magnitud auxiliar (S); -secuencialmente para cada bit (bi) de la clave, realización de las siguientes etapas:
    (a)
    transmisión de la primera magnitud auxiliar (R) a un primer registro y de la segunda magnitud auxiliar (S) a un segundo registro del otro procesador,
    (b)
    en función del valor del bit (bi) y de al menos un valor (d), asignación de una orden a una variable de salida (A) tal que
    • bien se asigna la primera orden (x), • o bien se asigna la segunda orden (y),
    (c)
    transmisión de la variable de salida (A) al registro de órdenes del otro procesador,
    (d)
    determinación de la primera (R) y segunda (S) magnitud auxiliar actualizadas en el otro procesador,
    -
    tras finalizar las etapas para los bits (bi), emisión de la primera (R) y/o de la segunda (S) magnitud auxiliar y determinación de un resultado de la operación matemática procedente de la primera (R) y/o de la segunda magnitud auxiliar (S),
    conduciendo la primera operación (X) sobre contenidos del registro del otro procesador, que está asignado a la primera orden (x), a un intercambio de los contenidos del primer y del segundo registro y en el que la segunda operación (Y) sobre contenidos del registro del otro procesador, que está asignado a la segunda orden (y), no conduce a ningún intercambio de contenidos en el primer y el segundo registro.
  2. 2.
    Procedimiento según la reivindicación 1, en el que la primera magnitud auxiliar (R) representa un punto sobre una curva elíptica sobre un cuerpo finito y en la etapa de la inicialización recibe la asignación de un punto fijo (P).
  3. 3.
    Procedimiento según una de las reivindicaciones 1 a 2, en el que la segunda magnitud auxiliar (S) representa un punto sobre una curva elíptica sobre un cuerpo finito y en la etapa de la inicialización recibe la asignación de un valor 0.
  4. 4.
    Procedimiento según una de las reivindicaciones 1 a 3, en el que la operación matemática incluye una multiplicación escalar (k*P).
  5. 5. Procedimiento según una de las reivindicaciones 1 a 4, en el que la actualización realizada en el otro procesador de la primera (R) y segunda (S) magnitud auxiliar incluye las siguientes etapas, -en una primera operación de cálculo se realiza una adición de dos puntos sobre una curva elíptica, -y en una segunda operación de cálculo se realiza una multiplicación escalar de un punto sobre una curva elíptica por un factor 2 o bien la adición consigo mismo,
    -
    y la determinación de las magnitudes auxiliares primera y segunda actualizadas se realiza tal que en función del valor del bit (bi) se asigna en cada caso un resultado de la primera y segunda operación de cálculo a una de ambas magnitudes auxiliares (R, S).
  6. 6. Procedimiento según una de las reivindicaciones 1 a 5, en el que el valor (d) es un valor diferencial procedente de la diferencia de la representación de bits entre ambas órdenes (x,y).
  7. 7. Procedimiento según la reivindicación 6, en el que en la etapa (b) el valor diferencial (d) se añade a la primera orden (x) en función del valor del bit actual (bi), sucediendo que -se forma una primera palabra de ordenador (h1), que contiene el bit actual (bi) en el procesamiento secuencial; -la primera palabra del ordenador (h1) se multiplica por el valor diferencial (d) para formar un primer producto (m1); -se determina un primer valor intermedio a partir de una adición del primer producto (m1) a la primera orden (x), -a partir de la primera palabra de ordenador (h1) se forma una segunda palabra de ordenador (h2), en la que el bit
    se coloca en la posición del bit actual (bi) en cero; -la segunda palabra de ordenador (h2) se multiplica por el valor diferencial (d) para formar un segundo producto (m2);
    -
    la variable de salida (A) se determina a partir de una sustracción del segundo producto (m2) del primer resultado intermedio,
    -
    tal que la variable de salida (A)
    • bien se asigna a la primera orden (x), • o bien se asigna a la segunda orden (y).
  8. 8. Procedimiento según la reivindicación 6, en el que en la etapa (b) en función del valor del bit (bi) se sustrae el valor diferencial (d) de la segunda orden (y), tal que la variable de salida (A)
    • bien se asigna a la primera orden (x), • o bien se asigna a la segunda orden (y).
  9. 9. Procedimiento según una de las reivindicaciones 1 a 8, en el que el bit actual (bi) es en el procesamiento secuencial el bit menos significativo (LSB).
  10. 10. Procedimiento según una de las reivindicaciones a 1 a 9, en el que -la primera orden (x) da lugar a la transmisión del contenido de un tercer registro del otro procesador al primer registro del otro procesador y la segunda orden (y) a una transmisión del contenido del tercer registro al segundo registro del otro procesador,
    -
    tras la etapa (a) en otra etapa adicional se transmite una orden para la transmisión del contenido del primer registro al tercer registro y un orden para la transmisión del contenido del segundo registro al primer registro al registro de órdenes del otro procesador.
  11. 11. Procedimiento según una de las reivindicaciones 1 a 10, en la primera (x) y la segunda (y) orden tienen el mismo peso Hamming.
ES06841462T 2006-03-28 2006-12-19 Procedimiento para la determinación segura de datos Active ES2379100T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102006014353A DE102006014353B4 (de) 2006-03-28 2006-03-28 Verfahren zum sicheren Ermitteln von Daten
DE102006014353 2006-03-28
PCT/EP2006/069917 WO2007112791A1 (de) 2006-03-28 2006-12-19 Verfahren zum sicheren ermitteln von daten

Publications (1)

Publication Number Publication Date
ES2379100T3 true ES2379100T3 (es) 2012-04-20

Family

ID=37913611

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06841462T Active ES2379100T3 (es) 2006-03-28 2006-12-19 Procedimiento para la determinación segura de datos

Country Status (8)

Country Link
US (1) US8369514B2 (es)
EP (1) EP1999884B1 (es)
JP (1) JP4909403B2 (es)
KR (1) KR101338016B1 (es)
CN (1) CN101405988B (es)
DE (1) DE102006014353B4 (es)
ES (1) ES2379100T3 (es)
WO (1) WO2007112791A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621212B2 (en) 2009-12-22 2013-12-31 Infineon Technologies Ag Systems and methods for cryptographically enhanced automatic blacklist management and enforcement
US8611540B2 (en) * 2010-06-23 2013-12-17 Damaka, Inc. System and method for secure messaging in a hybrid peer-to-peer network
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
US8630411B2 (en) 2011-02-17 2014-01-14 Infineon Technologies Ag Systems and methods for device and data authentication
DE102011006000B4 (de) 2011-03-23 2015-01-15 Infineon Technologies Ag Signaturaktualisierung durch Codetransformation
US9087192B2 (en) * 2013-09-10 2015-07-21 Infineon Technologies Ag Electronic circuit and method for monitoring a data processing
FR3017476B1 (fr) * 2014-02-12 2017-06-09 Secure-Ic Sas Procede de contremesure pour un composant electronique mettant en œuvre un algorithme de cryptographie sur une courbe elliptique
EP3202079B1 (en) 2014-10-03 2020-07-08 Cryptography Research, Inc. Exponent splitting for cryptographic operations
US9735953B2 (en) * 2015-03-06 2017-08-15 Qualcomm Incorporated Side channel analysis resistant architecture
FR3040512B1 (fr) 2015-08-27 2017-09-08 Stmicroelectronics Rousset Protection d'un calcul d'exponentiation modulaire
FR3040511B1 (fr) * 2015-08-27 2017-09-08 Stmicroelectronics Rousset Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
US20170192688A1 (en) * 2015-12-30 2017-07-06 International Business Machines Corporation Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0455756A (ja) * 1990-06-26 1992-02-24 Nippon Steel Corp 線材の超音波探傷装置
JPH0515526A (ja) * 1991-07-15 1993-01-26 Mitsubishi Electric Corp X線シミユレータ画像処理装置
DE69930334T2 (de) * 1998-01-28 2006-11-09 Hitachi, Ltd. IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
CA2258338C (en) 1999-01-11 2009-02-24 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
US7092523B2 (en) 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
CN1380766A (zh) * 2001-04-16 2002-11-20 南相浩 密钥交换与密钥传递方案
DE10156708B4 (de) * 2001-11-19 2005-09-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
JP4067818B2 (ja) * 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
DE10202700A1 (de) * 2002-01-24 2003-08-07 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen eines Befehlscodes
JP4789468B2 (ja) 2002-12-18 2011-10-12 富士通株式会社 秘密鍵を用いた耐タンパ楕円曲線暗号処理
WO2005015526A1 (ja) 2003-08-06 2005-02-17 Fujitsu Limited 楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
JP2006078943A (ja) 2004-09-13 2006-03-23 Mitsuko Miyaji べき演算装置
KR20060081847A (ko) * 2005-01-10 2006-07-13 삼성전자주식회사 비밀키를 보호하는 스마트 카드 및 그것의 방법
CN100536390C (zh) * 2005-05-18 2009-09-02 上海迪申电子科技有限责任公司 一种椭圆曲线密码协处理器
DE102006006057B4 (de) * 2006-02-09 2007-12-27 Infineon Technologies Ag Datenverschlüsselungsvorrichtung und Verfahren zum Verschlüsseln von Daten
US7864951B2 (en) * 2006-07-10 2011-01-04 King Fahd University Of Petroleum And Minerals Scalar multiplication method with inherent countermeasures
DE102007001070B3 (de) * 2006-09-29 2008-04-30 Siemens Ag Verfahren zum verschlüsselten Datenausgleich eines Systems mit mindestens einem Datenträger und einem Lesegerät
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
US20080222417A1 (en) * 2007-03-06 2008-09-11 James Downes Method, System, And Apparatus For Nested Security Access/Authentication With Media Initiation
US20120079080A1 (en) * 2009-02-11 2012-03-29 Shervin Pishevar Apparatuses, Methods and Systems For An Interactive Proximity Display Tether With Remote Co-Play
JP5446678B2 (ja) * 2009-09-29 2014-03-19 富士通株式会社 楕円曲線暗号演算装置及び方法
US8775794B2 (en) * 2010-11-15 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for end to end encryption

Also Published As

Publication number Publication date
JP2009531725A (ja) 2009-09-03
JP4909403B2 (ja) 2012-04-04
WO2007112791A1 (de) 2007-10-11
DE102006014353B4 (de) 2007-11-22
KR101338016B1 (ko) 2013-12-09
EP1999884B1 (de) 2012-02-22
US8369514B2 (en) 2013-02-05
KR20080112333A (ko) 2008-12-24
CN101405988B (zh) 2012-03-21
EP1999884A1 (de) 2008-12-10
US20100172490A1 (en) 2010-07-08
DE102006014353A1 (de) 2007-10-04
CN101405988A (zh) 2009-04-08

Similar Documents

Publication Publication Date Title
CN105450398B (zh) 一种产生数字签名的方法
ES2379100T3 (es) Procedimiento para la determinación segura de datos
US10491401B2 (en) Verification of code signature with flexible constraints
ES2863676T3 (es) Mensaje cifrado con instrucción de autenticación
US8065531B2 (en) Decryption method
US20050021990A1 (en) Method for making secure a secret quantity
US20100232601A1 (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
CN109479003B (zh) 用于安全椭圆曲线密码指令的处理器、系统、方法和设备
CN107924444B (zh) 安全的模幂运算处理器、方法、系统和指令
US10354063B2 (en) Protection of a modular calculation
JP2007520951A (ja) 電力解析攻撃対策保護
ES2287745T3 (es) Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente.
CN104025018A (zh) 有效地检验素数
US8321691B2 (en) EMA protection of a calculation by an electronic circuit
Sepulveda et al. SEPUFSoC: Using PUFs for memory integrity and authentication in multi-processors system-on-chip
US8311212B2 (en) Method of processing data protected against attacks by generating errors and associated device
US10210350B2 (en) Electronic device against side channel attacks
Karageorgos et al. Chip-to-chip authentication method based on SRAM PUF and public key cryptography
JP2022527904A (ja) 無線更新の有効性確認
JP2022526936A (ja) ブロックチェーンにおけるブロックとしてのメモリの使用
JP2005149262A (ja) 情報処理装置
WO2005027403A1 (ja) 情報処理装置
JP4766285B2 (ja) 永久データハードウェアインテグリティ
US20230106942A1 (en) Method of communication between functional blocks in a system-on-chip and system-on-chip thereof
WO2024057411A1 (ja) メモリ更新装置、情報処理システム、メモリ更新方法及びコンピュータ可読媒体