ES2379100T3 - Procedimiento para la determinación segura de datos - Google Patents
Procedimiento para la determinación segura de datos Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7266—Hardware adaptation, e.g. dual rail logic; calculate add and double simultaneously
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details 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)
- REIVINDICACIONES1. 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.
- 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.
- 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.
- 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. 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. 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. 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 bitse 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. 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. 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. 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. Procedimiento según una de las reivindicaciones 1 a 10, en la primera (x) y la segunda (y) orden tienen el mismo peso Hamming.
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)
| 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)
| 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 |
-
2006
- 2006-03-28 DE DE102006014353A patent/DE102006014353B4/de not_active Expired - Fee Related
- 2006-12-19 CN CN2006800540319A patent/CN101405988B/zh not_active Expired - Fee Related
- 2006-12-19 US US12/294,806 patent/US8369514B2/en not_active Expired - Fee Related
- 2006-12-19 WO PCT/EP2006/069917 patent/WO2007112791A1/de not_active Ceased
- 2006-12-19 ES ES06841462T patent/ES2379100T3/es active Active
- 2006-12-19 JP JP2009501867A patent/JP4909403B2/ja not_active Expired - Fee Related
- 2006-12-19 KR KR1020087026125A patent/KR101338016B1/ko not_active Expired - Fee Related
- 2006-12-19 EP EP06841462A patent/EP1999884B1/de not_active Not-in-force
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) | メモリ更新装置、情報処理システム、メモリ更新方法及びコンピュータ可読媒体 |