ES2236903T3 - Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos. - Google Patents
Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos.Info
- Publication number
- ES2236903T3 ES2236903T3 ES98923379T ES98923379T ES2236903T3 ES 2236903 T3 ES2236903 T3 ES 2236903T3 ES 98923379 T ES98923379 T ES 98923379T ES 98923379 T ES98923379 T ES 98923379T ES 2236903 T3 ES2236903 T3 ES 2236903T3
- Authority
- ES
- Spain
- Prior art keywords
- mod
- phi
- sequence
- module
- operations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- 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/723—Modular exponentiation
-
- 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/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- 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/005—Countermeasures against attacks on cryptographic mechanisms for timing attacks
-
- 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/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7247—Modulo masking, e.g. A**e mod (n*r)
-
- 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/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7257—Random modification not requiring correction
-
- 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/7271—Fault verification, e.g. comparing two values which should be the same, unless a computational fault occurred
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Credit Cards Or The Like (AREA)
Abstract
Procedimiento y dispositivo mejorados para proteger las lógicas de claves públicas, sobre la base de la exponenciación modular (RSA y Diffie-Hellman en particular), contra las técnicas criptoanalíticas indirectas, como los ataques basados en la secuencia de las operaciones y las faltas. Normalmente, los procedimientos conocidos permiten realizar lógicas teóricas de números que resisten a estos ataques, duplican el tiempo de ejecución, mientras que los nuevos procedimientos y dispositivos descritos en esta patente no añaden más que una sobrecarga de sistema despreciable. Esta mejora es particularmente significativa para las tarjetas inteligentes y las implementaciones basadas en un software, en las que la operación de exponenciación modular es bastante lenta y donde la duplicación de su duración puede ser una solución inaceptable.
Description
Método y dispositivo mejorados para la protección
de programas de códigos públicos contra ataques producidos por la
secuencia de operaciones y por fallos.
La presente invención se refiere a técnicas,
métodos e instrumentos para la elaboración de programas de códigos
públicos basados en números teóricos (que incluyen programas de
encriptación, programas de firmas, programas de identificación,
programas de códigos de gestión, etc.) resistentes a ataques
producidos por la secuencia de operación y por fallos.
El ataque más simple en contra de cualquier
sistema encriptado estará invariablemente dirigido a una búsqueda
exhaustiva del código. Existen numerosas variantes de este tipo de
ataques (conocidos como ciphertext, cleartext, cleartext elegido,
etc.), y todos ellos se basan en un procedimiento que prueba todos
los códigos individualmente, es decir uno por uno hasta encontrar el
código correcto. Si el código consiste de un número aleatorio de
bits, el tiempo de funcionamiento del procedimiento será 2^
(n-1). El ataque podrá fácilmente ser
contrarrestado mediante un n suficientemente grande (por ejemplo,
n>100).
Para atacar sistemas criptográficos con grandes
códigos, los analistas generalmente intentan encontrar debilidades
desde el punto de vista matemático o estadístico que reducen el
tamaño del espacio de la búsqueda (preferentemente a 1). Aunque
numerosas técnicas y resultados con clasificadas como
confidenciales por razones de seguridad nacional, es muy fácil
asumir que será cada día más difícil encontrar dichas debilidades
en los sistemas modernos diseñados por criptógrafos con mucha
experiencia e implementados en micro-procesadores de
alta velocidad.
Los analistas, para poder atacar con éxito
sistemas encriptados importantes deberán por lo tanto utilizar
técnicas indirectas. Esto será posible cuando dicho analista se
encuentre físicamente próximo al mecanismo criptográfico o cuando
lo tiene bajo su total control. Se entiende que el mecanismo
criptográfico es una caja negra que contiene un algoritmo conocido y
un código desconocido. El analista no podrá abrir la caja y leer
el código, pero sí podrá observar su conducta bajo diferentes
circunstancias.
Uno de los mejores ejemplos de dichos ataques
indirectos es el programa TEMPEST, que intenta deducir el código
mediante un análisis electromagnético de la radiación que emana de
la caja negra durante el cómputo o cálculo del texto encriptado.
Las técnicas para la aplicación y prevención de tales ataques han
sido ampliamente estudiadas durante más de 50 años, llegando a ser
en el día de hoy un problema bastante bien conocido.
Dos ataques indirectos bastante poderosos han
sido descubiertos y publicados recientemente: en Diciembre 1995,
P.Kocher, "Criptoanalisis de Diffie-Hellman, RSA,
DSS y Otros Sistemas que usan ataques contra la secuencia de
operación" informe técnico 12/7/95, que describió un ataque de
estas características, y en Septiembre 1996, D. Boneh, R.A. Demillo
y R. J. Lipton "La importancia de revisar los cálculos",
informe técnico 9/25/96 (cuya versión ampliada aparece en los
Procedimientos de Eurocriptología 97, de Mayo de 1997) que describe
un ataque por fallo. Ambos ataques fueron originalmente
considerados y continúan siendo considerados como exitosos contra
programas de código basados en principios de números teoréticos,
tales como el RSA, siendo mas tarde ampliados para cubrir sistemas
criptográficos clásicos (e.g. por E. Biham y A. Shamir, "Un
Nuevo ataque Critptoanalítico contra DES", informe técnico,
10/18/96, cuya versión ampliada se ha incluido asimismo en los
procedimientos de Encriptación 97, de Agosto de 1997).
Dichos ataques son especialmente utilizados
cuando el programa ha sido implementado en una tarjeta inteligente,
como aquellas distribuidas a sus clientes por bancos, redes de
informática, operadores de telefonía móvil, o emisores de
televisión de pago. Los piratas o hackers generalmente no poseen los
recursos técnicos y financieros que se necesitarían para leer los
contenidos de los códigos registrados en dichas tarjetas, pero sí
tienen un total control sobre los mecanismo de salida, de entrada,
el reloj, el reinicio y las conexiones a la red de energía de la
tarjeta inteligente. Podrán por lo tanto cuidadosamente medir la
duración de cada una de estas operaciones, la cantidad de energía
que consumen, que sucede cuando se interrumpe el cómputo o cuando
éste se lleva a cabo bajo condiciones de operación que no son
consideradas normales. Debido a que las pruebas se efectúan
generalmente dentro de la privacidad del hogar de cada uno, el
fabricante de la tarjeta no puede evitar dichas prácticas ni
tampoco saber siquiera acerca de su existencia.
Los ataques a la secuencia de operación se basan
en la suposición de que algunas de las operaciones básicas
efectuadas durante el cálculo criptográfico necesitan un margen de
tiempo, que no es constante, y que dependerá de los valores reales
en los que se está operando. Lo anterior significa que alguna
información acerca de estos valores intermedios desconocidos se
puede fácilmente filtrar al efectuar una medición del largo de la
lectura criptográfica. Si dichos valores intermedios son computados
a partir de bits de textos conocidos y de bits de códigos
desconocidos mediante un algoritmo criptográfico conocido, el
atacante podrá intentar utilizar los valores intermedios que se han
filtrado para deducir cual es el código.
La mayor dificultad que entraña este tipo de
ataque es que el atacante solamente sabe la cantidad total de
tiempo que se necesita para llevar acabo la lectura criptográfica,
pero no el tiempo que transcurre en el desarrollo de cada una de
las etapas individualmente. La mayor contribución de Kocher reside
en el desarrollo de una técnica eficiente para manejar esta
dificultad que en muchos casos resulta ser de interés práctico.
En aras de una mayor concreción, procederemos a
describir en ataque de Kocher en el sistema encriptado RSA. Se
supone que la caja negra contiene un módulo n que es conocido
públicamente y un exponente secreto d. Al usar un determinado numero
de entrada x, la caja ejecuta el exponencial modular x^d (mod n)
mediante la utilización de la técnica standard de cuadrar y
multiplicar. En esta descripción el símbolo "^" será
exponencial y el símbolo "_" un subscripto. El resultado (que
podrá ser el descifrado del ciber- texto x, la firma del mensaje x,
o la respuesta a un desafío de identificación aleatoria x,
dependiendo de la aplicación) es enviado fuera tan pronto como se
produce, y en ese momento el atacante podrá medir el número total
de ciclos de reloj utilizado por cada una de las multiplicaciones
modulares.
La implementación standard de multiplicaciones
modulares requiere una cantidad de tiempo que no es constante,
debido a que se saltan pasos de las multiplicaciones que involucran
ceros principales, y se producen reducciones de pasos cuando el
resultado es menor que el módulo. El atacante elige aleatoriamente
un número mayor de entrada x, y mide el tiempo real de distribución
T_O de la operación modular exponencial llevada a cabo por la caja
negra. Posteriormente, mide respecto de cada porción x (por
simulación utilizando el conocimiento acerca de cómo se ha
implementado el programa) el tiempo exacto solamente de la
operación inicial de encuadre, y de forma separada, el tiempo
exacto de la operación inicial de
encuadre-y-multiplicación. El
resultado será un par de cifras de distribución de secuencias T_1 y
T_2 que no son idénticas. Todos los cálculos criptográficos
llevados a cabo en la caja negra utilizan el mismo exponente d, y
su primer bit determina cual de las dos distribuciones T_1 y T_2 es
la parte inicial del T_O computado de forma experimental. Las
secuencias de los pasos restantes del cómputo podrán ser
establecidos mediante una variable R aleatoria, que generalmente se
distribuye, no de forma correlativa, ya sea en T_1 o en T_2. Ya
que T_O es bien T_1+R o T_2+R, el atacante podrá decidir cual de
las dos vertientes es la mas probable intentando encontrar cual de
las dos distribuciones T_O-T_1 y
T_O-T_2 tiene una variación más
baja.
baja.
Una vez encontrado el primer bit del exponente
secreto d, el atacante sabrá cual es la salida real hacia el
segundo paso, pudiendo aplicar entonces la misma técnica
(probablemente utilizando distribuciones de secuencia T'_O, T'_1 y
T'_2 simuladas y experimentales) para encontrar el segundo bit de
d. Repitiendo este procedimiento unas mil veces, podrá calcular
todos los bits de d, y por consiguiente irrumpir en el programa
RSA.
Un ataque similar puede ser aplicado a cualquier
programa criptográfico cuya caja negra eleve todas sus salidas x_1,
x_2,... al mismo modulo secreto d el mismo n conocido (que podrá
ser un número primo o un número compuesto). Por ejemplo, en uno de
los programas de distribución de códigos de
Diffie-Hellman, la totalidad de los usuarios
acuerdan un módulo primo n en un generador g del grupo
multiplicativo Z^*_n.
Cada usuario elige de forma aleatoria un
exponente secreto d, y computa y=g^d (mod n) como su código
público. Para establecer un código secreto común con otro usuario,
el primero de ellos envía su código público y=g^d (mod n) y recibe
un código similarmente computado x=g^e (mod n) de parte del otro
usuario. El código criptográfico secreto de ambos será z=g^(d*e)
(mod n) que el primer usuario computa mediante una evaluación de
x^d (mod n). Cuando el primer usuario se comunica con terceras
partes, eleva algunos valores conocidos x_1, x_2,... al mismo
modulo secreto d el mismo módulo conocido n. Al medir las secuencias
de estos cómputos, el atacante podrá determinar el elemento d y
posteriormente descubrir todos los códigos criptográficos z_1,
z_2,... utilizados por el usuario.
La secuencia del ataque debe se modificada si el
cómputo de x^d (mod n) para un módulo compuesto n=p*q es ejecutado
mediante el cómputo de x^d (mod p), x^d (mod q), y combinados los
resultados de acuerdo con el Teorema del Resto Chino (Chinese
Remainder Theorem (CRT, en lo sucesivo Teorema Chino). Este es un
modo bastante común de efectuar el cómputo que aproximadamente es
cuatro veces más rápido cuando el factor de n es conocida. El
problema para el atacante es que no conoce los factores secretos p
y q del módulo público n, y por lo tanto, no puede simular la
distribución de secuencias T_1 y T_2. La solución ofrecida por
Koche sugiere concentrarse en el primer paso del cómputo del
Teorema Chino, cuya entrada x es el modulo p reducido. Si x es
inferior a p, no se necesitará una reducción modular, y por lo
tanto el cómputo es considerablemente más rápido que cuando x es
mayor o igual a p. El atacante entonces aplicará a la caja negra un
número mayor de entradas x, muy cercanas las unas a las otras, y
utilizará el promedio de tiempo de tales cómputos para decidir si
estas x están sobre o bajo p. Un proceso de decisión para esta
pregunta podrá ser utilizado repetidamente hasta descubrir el valor
exacto de p mediante una búsqueda
binaria.
binaria.
Al poco tiempo del descubrimiento de este ataque,
los investigadores intentaron desarrollar aplicaciones que fueran
inmunes. Básicamente, la idea es asegurarse de que todas las
operaciones criptográficas tomen exactamente la misma cantidad de
tiempo, independientemente de lo valores de los textos y los
códigos. No obstante, lograr esto es extraordinariamente difícil
debido a las siguientes razones:
- (a)
- En muchos casos la persona que efectúa la implementación quiere aplicar el mismo algoritmo del software en diferentes aparatos (posiblemente desconocidos). Una aplicación cuyo tiempo es constante en un microprocesador podrá ser variable en otro, incluso en una versión mejorada del mismo microprocesa- dor.
- (b)
- En un sistema para tareas múltiples el tiempo de ejecución dependerá de la cantidad de memoria libre que exista en el mismo, el índice del caché, las interrupciones externas, etc. Todo lo anterior podrá variar la aplicación de una constante de tiempo bajo una serie de circunstancias en comparación con otra serie de circunstancias.
- (c)
- Si la persona que lo implementa intenta usar un reloj de tiempo real para forzar así que todos los cómputos empleen el mismo margen de tiempo, deberá en primer lugar ralentizarlos todos hasta alcanzar sus peores casos. Debido a que no podrá utilizar ninguna técnica de optimización dependiendo de la salida, la aplicación muy probablemente resultará ser tan lenta que al final resultará ser inaceptable.
Hasta el momento, la mejor técnica de protección
en contra de los ataques a las secuencia Kocher en exponenciales
modulares ha resultado ser la sustitución de cada entrada x por una
versión modificada y=r*R (mod n), donde r es un número secreto
aleatorio entre 1 y n-1. Para computar x^d (mod n),
el programa computa y^d (mod n) y r^d (mod n) para posteriormente
utilizar la propiedad mutiplicativa del exponente modular para
computar x^d (mod n) como y^d/r^d (mod n). Debido a que ambos,
tanto y como r no son conocidos, el atacante no podrá simular
estos cómputos para poder establecer con éxito los bits sucesivos de
d en un computo que no sea el del Teorema Chino, no pudiendo
efectuar una búsqueda binaria en la versión de dicho teorema.
Desgraciadamente, esta técnica de naturaleza aleatoria dobla el
tiempo de ejecución del cómputo.
Los ataques por fallos intentan introducir
errores en la computación criptográfica y asimismo identificar el
código mediante un análisis de las propiedades matemáticas y
estadísticas de los resultados erróneamente computados. Entre las
numerosas técnicas recomendadas hasta el momento respecto de la
introducción de dichos errores está el uso de radiación de iones, la
aplicación de temperaturas inusuales durante la operación y la
utilización de chips de microcirugía láser. Algunos de estos
ataques son diferenciales (es decir efectúan un computo correcto y
al mismo tiempo un computo erróneo con la misma salida, analizando
las diferencias) mientras que otros ataques solo utilizan los
resultados erróneos.
El primer ataque por fallo a sistemas de códigos
públicos fue descrito en Boneh, Demillo y Lipton, y requirió de
varios cómputos criptográficos. Describimos a continuación una
versión mejorada de este ataque, perpetrado por Arjen Lensra, que
requiere solamente de un cómputo erróneo. Asumimos que la caja negra
utiliza el programa RSA para proceder a firmar un mensaje
determinado x. El cómputo de x^d (mod n) se efectúa mediante el
formato del Teorema Chino reduciendo primero x, módulos p y q hasta
obtener x_1 y x_2, para a continuación computar y_1=x_1^d (mod p)
e y_2=x_2^d (mod d), para finalmente combinar y_1 e y_2 para
obtener la firma y (mod n) con el anteriormente indicado método del
Teorema Chino. Suponemos que se introduce un solo error en un
tiempo aleatorio durante este cómputo mediante la aplicación de una
fuerza física leve a la caja negra. Sin perder de vista la
generalidad de los casos, podemos asumir que el error fue
introducido durante el computo de x_1^d (mod p) por lo tanto, en vez
de obtener y_1 de forma correcta, la caja negra erróneamente computa
y'_1. Cuando y'_1 así como y_2 se combinan mediante el sistema del
Teorema Chino, la caja computa una firma incorrecta y' que le es
proporcionada al
atacante.
atacante.
La primera observación es que el atacante conoce
el exponente de verificación de la firma e, por medio del cual
y^e=x (mod n). Debido al error, y'^e-x no es cero
mod p, sino cero mod q, y por lo tanto es un múltiple de q, que no
es múltiple de n. El atacante podrá llegar a n por medio de un
cómputo del mayor divisor común de y'^e-x (mod n) y
n, lo que resulta ser un cálculo bastante fácil.
Para proteger programas criptográficos en contra
de ataques por fallos, Boneh, Demillo y Lipton han recomendado que
cada cómputo sea efectuado dos veces (preferentemente a través de
diferentes algoritmos). En caso de encontrar cualquier tipo de
discrepancia entre los dos resultados, la caja no debería originar
ninguna salida, lo que proporciona una mayor protección respecto de
fallos aleatorios (los que con toda probabilidad no afectarán a los
dos cómputos de manera idéntica), pero que sí ralentiza el cómputo
por un factor de dos. Dicha ralentización es notable especialmente
en aplicaciones en tarjetas inteligentes con programas de códigos
públicos, que para empezar son más bien lentos.
Partiendo de la publicación de Kocher P.C.
"Ataques en la secuencia de operación en la aplicación de
programas Diffie-Hellmann, RSA, DSS, y otros
programas" avances en criptología - cripto' 96. 16ª conferencia
internacional de Santa Barbara, agosto 18-22,
procedimientos no. conferencia. 16-18 agosto 1996,
Páginas 104-119 XP000626590 Koblitz (ed) Berlin
(Alemania), existe un método conocido de activación de programas de
códigos públicos que no contienen el formato del Teorema Chino del
exponencial modular x^d (mod n) que incluye agregar una secuencia
phi(n), donde phi será la función Euler del módulo n. En
caso de requerir una adhesión adicional se podrá añadir
aleatoriamente un múltiple de phi al exponencial antes de cada
exponencialización modular.
La presente invención se refiere a métodos y
dispositivos destinados a ofrecer técnicas de protección para
programas de códigos públicos, que proporcionan in importante nivel
de protección contra las secuencias de operación descritas y contra
ataques por fallos, sin incurrir en las dobles ralentizaciones que
se hacen necesarias en las técnicas de protección previamente
conocidas.
La primera técnica ha sido diseñada para proteger
aplicaciones -que no incluyen el Teorema Chino- diseñadas para
programas públicos en contra de ataques a la secuencia de
operaciones. Esta técnica es de aplicación a los sistemas
encriptados RSA, a programas de firma digital RSA, a programas de
distribución de códigos Diffie-Hellman, así como a
otros programas de números teóricos en lo cuales la caja negra
eleva la salida conocida x a un módulo de exponencial secreto fijo
d, cuya factorización es conocida por la caja negra.
La segunda técnica ha sido diseñada para proteger
activaciones basadas en el formato del Teorema Chino para programas
de códigos públicos en contra de ataques a la secuencias de
operación y ataques por fallos. El principal problema es comprobar
la corrección de los cómputos x_1^d (mod p) y x_2^d (mod q) sin
tener que repetirlos por segunda vez (o comprobar cada paso de forma
separada, lo que nuevamente dobla el tiempo de ejecución). La
invención ofrece una novedad en lo que se refiere a la técnica de
detección de errores para dichos cómputos de número teóricos, que
resulta ser mucho más efectiva.
La figura 1 muestra de forma esquemática el
método y el dispositivo de la invención que se refiere a una
primera técnica para proteger aplicaciones que no incluyan el
Teorema Chino de programas de códigos públicos contra ataques a la
secuencia de operación.
La figura 2 muestra de forma esquemática el
método y el dispositivo de la invención en lo que se refiere a una
segunda técnica diseñada para proteger activaciones basadas en el
Teorema Chino de programas de códigos públicos contra ataques a las
secuencias de operación y a fallos.
Refiriéndonos ahora a los gráficos, describiremos
en detalle a continuación las representaciones preferidas. Debido a
que los programas de códigos públicos así como la implementación de
software y hardware para ordenadores es ampliamente conocida por
aquellas personas que poseen conocimiento del estado del arte
correspondiente, en este caso no hemos considerado necesario ofrecer
una descripción detallada, concisa y exacta en relación con dichos
aspectos de la presente invención.
Describimos a continuación dos técnicas novedosas
de protección para programas de códigos públicos, los que
proporcionan una fuerte e importante protección en contra de los
ataques a las secuencia de operación y a posibles fallos, sin
incurrir en la ralentización que era necesaria en las técnicas de
protección hasta ahora conocidas.
La primera técnica que se muestra en la Figura 1
ha sido diseñada para proteger la aplicación de programas no
correspondientes al Teorema Chino en contra de fallos en la
secuencia de operaciones. Esta técnica es de aplicación a los
sistemas RSA, a los programas RSA de firma digital, a los programas
de distribución Diffle-Helman así como a otros
programas de números teóricos en los que la caja negra 10 eleva una
entrada conocida x a un exponencial fijo secreto d modulo n pública
cuya factorización es conocida por la caja negra.
La principal observación al respecto es que por
cada n existe un número t=phi(n), caja 12, de modo que por
cada x entre 1 y n, que es relativamente primaria a n, x^t=1 (mod
n). Este phi se denomina función "totient" Euler: cuando n es
primo, phi(n)=n-1, y cuando n=p*q,
phi(n)=(p-1)* (q-1). La
implementación por lo tanto puede sustituir el cómputo de x^d (mod
n) por la cómputo de x^(d+i*t) (mod n) para cualquier numero entero
i sin cambiar el resultado computado, ya que
x^(d+it)=(x^d)*(x^t)^i=(x^d)*1^i=x^d (mod n) caja 4.
Se puede demostrar que esta igualdad es verdadera
aún en el caso de que x no fuera primo en relación con n, sin
embargo no es muy probable que este caso se de en la practica.
Destacar igualmente que cualquier numero integral múltiple de
GCD((p-i), (q-1)) puede reemplazar a
phi(n) en nuestra elección de t.
La técnica propuesta para protección de programas
de códigos públicos basada en una operación de exponenciación
modular debe elegir un nuevo j secreto y aleatorio en cada cómputo,
y sustituir el cómputo de x^d (mod n) por el cómputo de x^(d+i*t)
(mod n) donde t sea el valor pre-computado de phi
(n). Debido a que los bits de estos (d+i*t) para los varios i son
diferentes, cada exponencialización usa un secuencia diferente de
etapas de
encuadre-y-multiplicación, y por lo
tanto el atacante no podrá usar el sistema Koche para poder
analizar la distribución de tiempo de las diferentes
exponencializaciones, ni siquiera en el caso de que todas ellas
computaran la misma potencia d-th en sus
salidas.
salidas.
La eficacia de esta técnica se basa en el hecho
de que t es siempre menor que n, y el elemento aleatorio i puede
ser elegido como un número relativamente pequeño. Si n y d son
números de 1024 bits, y si 1 es un número aleatorio de 32 bits (que
en realidad son los tamaños recomendados), d+i*t es un número de
1056 bits. El proceso de elevar la salida x a la potencia 1056
d+i*t requiere solamente un tres por ciento mas de operaciones de
encuadre-multiplicación en comparación con el
proceso consistente en elevar x a la potencia original d 1024 bits.
Esto resulta mucho mejor en comparación con la técnica alternativa
descrita anteriormente, que dobla el tiempo de ejecución.
La segunda técnica, que se muestra en la Figura
2, ha sido diseñada para proteger las aplicaciones de programas de
códigos públicos basadas en el Teorema Chino en contra de ataques a
la secuencia de operación como asimismo ataques por fallos. El
principal problema radica en cómo verificar la corrección de los
cómputos de x_1^d (mod p) y x_2^d (mod q) sin repetirlos por segunda
vez (o verificar cada paso de forma separada, lo que nuevamente,
dobla el espacio de tiempo). Describimos a continuación una técnica
novedosa para la detección de errores que ha resultado ser mucho
más efectiva.
En cada cómputo, la caja negra 20 elige de forma
aleatoria un nuevo número entero (el tamaño recomendado de j es
también 32 bits), caja 22. En lugar de computar x_1=x (mod p) y
x_2=x (mod q) seguido de y_1=x_1^d (mod p) e y_2=x_2^d (mod q), la
caja computa v_1=x (mod j*p), v_2=x (mod j*q), d_1=d (mod
phi(j*p)) y d_2=d (mod phi(j*q)), caja 24, seguido de
w_1=v_1^d_1 (mod j*p) y w_2=v_2^d_2 (mod j*q), caja 26.
La principal observación es que de w_1 y w_2 es
muy fácil derivar y_1 e y_2 mediante reducciones adicionales (a
saber, y_1=w_1 (mod p) e y_2=w_2 (mod q)), caja 28, y por lo tanto
resulta fácil computar el resultado final mediante el método del
Teorema Chino, caja 30. Sin embargo, podríamos obtener asimismo el
valor de x^d (mod j) de dos maneras diferentes: como w_1 (mod j) y
como w_2 (mod j), caja 32. Podemos ahora utilizar la igualdad de
estos dos valores (que fueron obtenidos de las dos mitades del
cómputo y combinados con la derivación de y_1, y_2) caja 34, como
prueba de corrección: en un cómputo libre de fallo las dos mitades
serán siempre las mismas, mientras que en un cómputo con error (con
errores aleatorios) la posibilidad de que las dos mitades sean las
mismas es de aproximadamente 1/(2^32) Ver decisión de la caja 36 en
la cual se ha producido un aborto debido a un cómputo incorrecto.
Esta técnica de detección de errores es por lo tanto suficiente para
cualquier tipo de aplicación en la que el número de exponenciales
modulares sea notoriamente menor que 2^32 (aproximadamente 4
billones).
La complejidad respecto del tiempo de esta
aplicación es de un porcentaje mayor en comparación con la
complejidad de las aplicaciones standard, ya que los exponenciales
son llevados a cabo por módulo 512+32=544 bits, móduli j*p y j*q en
lugar de 512 bits moduli p y q. Sin embargo, resulta mucho más
rápido que repetir cada una de las exponenciales por segunda vez
para comprobar su grado de corrección.
Un beneficio adicional de esta técnica de
carácter aleatorio es que proporciona asimismo protección contra
ataques al tiempo o la secuencia de operaciones sin ningún costo
adicional. Los ataques originales Kocher en aplicaciones basadas en
el formato del Teorema Chino se centraron en la reducción modular
inicial (mod p) utilizando una búsqueda binaria para encontrar
aproximaciones de p cada vez más exactas partiendo de cómputos
múltiples.
Mediante el uso de la técnica que proponemos,
cada cómputo utiliza un módulo j*p diferente en esta etapa inicial
de reducción, y por lo tanto el atacante puede perfeccionar su
conocimiento del módulo mediante un análisis de un mayor número de
exponenciales.
Existen numerosas optimaciones y variaciones
respecto de esta técnica, que sin duda son bastante obvios para
aquellas personas con conocimiento del tema. Por ejemplo, es
posible imponer restricciones adicionales en la elección de un
multiplicador j menor que hace menos probable que los cómputos
erróneos permanezcan sin detectar. Otra modificación de la técnica
consiste en probar cada mitad del cómputo mediante un módulo
separado de re-cómputo, un pequeño módulo
diferente, en lugar de efectuar una comparación de los dos
resultados de los módulos mediante un pequeño módulo común. Para
ser más exactos, la implementación puede escoger dos números j_1 y
j_2, y posteriormente computar las siguientes cifras:
- v_1=x (mod j_1*p), v_2=x (mod j_2*q), v_3=x (mod j_1), v_4=x (mod j_2);
- d_1=d (mod phi(j_1*p)), d_2=d (mod phi(j_2*q)), d_3=d (mod phi(j_1)), d_4=d (mod phi(j_2);
- w_1=v_1^d_1 (mod j_1*p), w_2=v_2^d_2 (mod j_2*P), w_3=v_3^d_3 (mod j_1), w_4=v_4^d_4 (mod j_2).
Para verificar la corrección del cómputo, la caja
negra se asegura que w_1=w_3 (mod j_1) y que w_2=w_4 (mod j_2). Las
únicas operaciones caras son el cómputo de w_1 y w_2 ya que los
menores exponenciales en el cómputo de w_3 y w_4 son muy eficaces.
La técnica de re-computación es más lenta en
comparación con la técnica original de comparación, sin embargo
puede ser ligeramente más resistente a cierto tipo de fallo de
naturaleza no aleatoria.
Mientras la invención ha sido descrita con
respecto de ciertas presentaciones, cualquier persona con
suficiente conocimiento de la materia podrá apreciar que las
variaciones y modificaciones pueden ser efectuadas sin necesidad de
partir del alcance o ámbito de la invención.
1. E. Biham y A. Shamir "Un Nuevo
Ataque Criptoanalítico en contra de DES", informe técnico,
10/18/96. Versión ampliada que aparece en los Procedimientos de
Criptografía 97; Agosto 1997.
2. D. Boneh, R.A. Demillo y R.J.
Lipton "Acerca de la Importancia de Verificar los
Cómputos", informe técnico, 9/25/96. Versión ampliada publicada
en los Procedimientos de Criptografía 97, Mayo 1997.
3. P. Kocher, "Criptoanálisis de
Diffle-Hellman, RSA, DSS y otros sistemas que
utilizan ataques a las secuencias de operación", reportaje
técnico 12/7/95.
Claims (16)
1. Método en un mecanismo encriptado de
aplicación a programas de códigos públicos que contienen el formato
del Teorema Chino en operaciones exponenciales modulares x^d (mod
n), donde n=p*q, para hacerlas más resistentes a ataques en contra
de la secuencia de operaciones y fallos, que se caracteriza
por contener los siguientes pasos:
- a)
- selección de algún número entero secreto j;
- b)
- computando
- v_1=x (mod j*p)
- v_2=x (mod j*q)
- d_1=d (mod phi(j*p)),
- d_2=d (mod phi(j*q)),
- w_1=v_1^d_1 (mod j*p) y
- w_2=v_2^_2 (mod j*q)
- c)
- abortando el cómputo si w_1 y w_2 no son iguales a módulo j;
- d)
- de otra manera computando
- y_1=w_1 (mod p),
- y_2=w_2 (mod q), y
- combinándolos mediante el sistema del Teorema Chino para obtener el resultado de x^d (mod n)
2. El método de la reivindicación 1, con la
característica de que j es elegido como número primo.
3. El método de la reivindicación 1 con la
característica de que j es elegido como un número aleatorio en el
rango [0,(2^k)-1] para alguna k.
4. El método de la reivindicación 3 que se
caracteriza porque k=32.
5. Método en un mecanismo encriptado de
aplicación a programas de códigos públicos que contienen el formato
del Teorema Chino en operaciones exponenciales modulares x^d (mod
n), donde n=p*q, para hacerlas más resistentes a ataques en contra
de la secuencia de operaciones y fallos, que se caracteriza
por contener los siguientes pasos:
- a)
- selección de dos números enteros secretos j_1 y j_2;
- b)
- computando
- v_1=x (mod j_1*p),
- v_2=x (mod j_2*q),
- d_1=d (mod phi(j_1*p)),
- d_2=d (mod phi(j_2*q)),
- w_1=v_1^d_1 (mod j_1*p), y
- w_2=v_2^d_2 (mod j_2*q);
- c)
- computando
- v_3=x (mod j_1),
- v_4=x (mod j_2),
- d_3=d (mod j_1),
- d_4=d (mod j_2),
- w_3=v_3^d_3 (mod j_1), y
- w_4=v_4^d_4 (mod j_2);
- d)
- abortando el cómputo
- si w_3 no es igual a w_1 modulo j_1, o
- si w_4 no es igual a w_2 módulo j_2;
- e)
- o de otra manera computando
- y_1=w_1 (mod p),
- y_2=w_2 (mod q), y
- combinándolos mediante el Teorema Chino para obtener el resultado de x^d (mod n).
6. El método de la reivindicación 5, que se
caracteriza porque j_1 y j_2 son números primos.
7. El método de la reivindicación 5 que se
caracteriza porque j_1 y j_2 son números elegidos
aleatoriamente en el rango [0,(2^k)-1] para alguna
k
8. El método de la reivindicación 7, que se
caracteriza porque k=32.
9. Mecanismo para aplicación a programas de
códigos públicos que contienen el formato del Teorema Chino en
operaciones exponenciales modulares x^d (mod n), donde n=p*q, con el
propósito de hacerlas más resistentes a ataques en contra de la
secuencia de operaciones y fallos, que se caracteriza por
contener:
- a)
- medios para seleccionar algunos números enteros secretos j;
- b)
- medios para computar
- v_1=x (mod j*p),
- v_2=x (mod j*q),
- d_1=d (mod phi(j*p)),
- d_2=d (mod phi(j*q)),
- w_1=v_1^d_1 (mod j*p), y
- w_2=v_2^d_2 (mod j*q);
- c)
- medios para abortar el cómputo si w_1 y w_2 no son iguales módulo j;
- d)
- medios para computar de otro mod
- y_1=w_1 (mod p),
- y_2=w_2 (mod q) y
- combinando ambos mediante el Teorema Chino para obtener el resultado de x^d (mod n)
10. El aparato de la reivindicación 9 que se
caracteriza porque j es elegido como un número primo.
11. El aparato de la reivindicación 9, que se
caracteriza porque j es elegido como un número aleatorio en
el rango [0,(2^k)-1] para alguna k.
12. El aparato de la reivindicación 11, que se
caracteriza porque k=32.
13. Un aparato para aplicación a programas de
códigos públicos que contienen el formato del Teorema Chino de
operaciones exponenciales modulares x^d (mod n) donde n=p*q con el
propósito de hacerlas más resistentes a ataques contra la secuencia
de operación y fallos, que se caracteriza por incluir:
- a.
- medios para seleccionar dos números enteros secretos j_1 y _2;
- b.
- medios para computar
- v_1=x (mod j_1 *p),
- v_2=x (mod j_2 *q),
- d_1=d (mod phi(j_1*p)),
- d_2=d (mod phi(j_2*q)),
- w_1=v_1^d_1 (mod j_1 *p), y
- w_2=v_2^d_2 (mod j_2 *q); y
- c.
- medios para computar
- v_3=x (mod j_1),
- v_4=x (mod j_2),
- d_3=d (mod j_1),
- d_4=d (mod j_2),
- w_3=v_3^d_3 (mod j_1), y
- w_4=v_4^d_4 (mod j_2);
- d.
- medios para abortar el cómputo
- si w_3 no es igual a w_1 modulo j_1, ó
- si w_4 no es igual a w_2 módulo j_2;
- e.
- medios para computar de otro mod
- y_1=w_1 (mod p),
- y_2=w_2 (mod d),
- y combinando ambos mediante el Teorema Chino para obtener el resultado de x^d (mod n)
14. El aparato de la reivindicación 13, que se
caracteriza porque j_1 y j_2 son números primos.
15. El aparato de la reivindicación 13, que se
caracteriza porque j_1 y j_2 son elegidos como números
aleatorios en el rango [0,(2^k)-1] para alguna
k.
16. El aparato de la reivindicación 15 que se
caracteriza porque k=32.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/854,464 US5991415A (en) | 1997-05-12 | 1997-05-12 | Method and apparatus for protecting public key schemes from timing and fault attacks |
| US854464 | 2001-05-15 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2236903T3 true ES2236903T3 (es) | 2005-07-16 |
Family
ID=25318766
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES98923379T Expired - Lifetime ES2236903T3 (es) | 1997-05-12 | 1998-05-12 | Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos. |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US5991415A (es) |
| EP (1) | EP0986873B1 (es) |
| AU (1) | AU7568598A (es) |
| CA (1) | CA2288837C (es) |
| DE (1) | DE69828787T2 (es) |
| ES (1) | ES2236903T3 (es) |
| IL (1) | IL132816A (es) |
| WO (1) | WO1998052319A1 (es) |
Families Citing this family (107)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6965673B1 (en) * | 1997-09-19 | 2005-11-15 | Telcordia Technologies, Inc. | Method of using transient faults to verify the security of a cryptosystem |
| EP0924895B1 (en) * | 1997-12-17 | 2009-07-08 | Nippon Telegraph and Telephone Corporation | Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon |
| US6278783B1 (en) | 1998-06-03 | 2001-08-21 | Cryptography Research, Inc. | Des and other cryptographic, processes with leak minimization for smartcards and other cryptosystems |
| EP1050133B2 (en) | 1998-01-02 | 2009-05-27 | Cryptography Research Inc. | Leak-resistant cryptographic method and apparatus |
| US7587044B2 (en) | 1998-01-02 | 2009-09-08 | Cryptography Research, Inc. | Differential power analysis method and apparatus |
| DE19811175A1 (de) * | 1998-03-14 | 1999-09-16 | Philips Patentverwaltung | Verfahren und Anordnung zur Abwehr kryptoanalytischer Untersuchungen |
| FR2776445A1 (fr) * | 1998-03-17 | 1999-09-24 | Schlumberger Ind Sa | Procede de securisation de donnees mettant en oeuvre un algorithme cryptographique |
| US6214372B1 (en) | 1998-05-04 | 2001-04-10 | Con Lin Co., Inc. | Method of using isomer enriched conjugated linoleic acid compositions |
| JP4611523B2 (ja) * | 1998-05-18 | 2011-01-12 | ギーゼッケ ウント デフリエント ゲーエムベーハー | アクセス防護型データ記憶媒体 |
| US6144740A (en) * | 1998-05-20 | 2000-11-07 | Network Security Technology Co. | Method for designing public key cryptosystems against fault-based attacks with an implementation |
| US20030118190A1 (en) * | 1998-05-29 | 2003-06-26 | Siemens Aktiengesellschaft | Method and apparatus for processing data where a part of the current supplied is supplied to an auxiliary circuit |
| JP4216475B2 (ja) | 1998-07-02 | 2009-01-28 | クリプターグラフィー リサーチ インコーポレイテッド | 漏洩抵抗力を有する暗号索引付き鍵の更新方法及びデバイス |
| CA2243761C (en) * | 1998-07-21 | 2009-10-06 | Certicom Corp. | Timing attack resistant cryptographic system |
| CA2259089C (en) * | 1999-01-15 | 2013-03-12 | Robert J. Lambert | Method and apparatus for masking cryptographic operations |
| CA2258338C (en) * | 1999-01-11 | 2009-02-24 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
| US7599491B2 (en) | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
| US7092523B2 (en) | 1999-01-11 | 2006-08-15 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
| FR2789535B1 (fr) * | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
| FR2792141B1 (fr) * | 1999-04-09 | 2001-06-15 | Bull Cp8 | Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique |
| US6298135B1 (en) * | 1999-04-29 | 2001-10-02 | Motorola, Inc. | Method of preventing power analysis attacks on microelectronic assemblies |
| DE19921633A1 (de) * | 1999-05-10 | 2000-11-16 | Deutsche Telekom Ag | Verfahren zur Implementierung kryptographischer Algorithmen |
| US6804782B1 (en) * | 1999-06-11 | 2004-10-12 | General Instrument Corporation | Countermeasure to power attack and timing attack on cryptographic operations |
| NL1012581C2 (nl) | 1999-07-13 | 2001-01-16 | Koninkl Kpn Nv | Werkwijze voor het beschermen van een draagbare kaart. |
| FR2799851B1 (fr) * | 1999-10-14 | 2002-01-25 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa |
| FR2800478B1 (fr) * | 1999-10-28 | 2001-11-30 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique |
| US6724894B1 (en) | 1999-11-05 | 2004-04-20 | Pitney Bowes Inc. | Cryptographic device having reduced vulnerability to side-channel attack and method of operating same |
| DE19963408A1 (de) * | 1999-12-28 | 2001-08-30 | Giesecke & Devrient Gmbh | Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung |
| DE19963407A1 (de) * | 1999-12-28 | 2001-07-12 | Giesecke & Devrient Gmbh | Tragbarer Datenträger mit Zugriffsschutz durch Nachrichtenverfremdung |
| DE10024325B4 (de) * | 2000-05-17 | 2005-12-15 | Giesecke & Devrient Gmbh | Kryptographisches Verfahren und kryptographische Vorrichtung |
| FR2810178B1 (fr) * | 2000-06-13 | 2004-10-29 | Gemplus Card Int | Procede de calcul cryptographique comportant une routine d'exponentiation modulaire |
| US6959091B1 (en) * | 2000-07-28 | 2005-10-25 | Atmel Corporation | Cryptography private key storage and recovery method and apparatus |
| DE10042234C2 (de) * | 2000-08-28 | 2002-06-20 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor |
| KR100396740B1 (ko) * | 2000-10-17 | 2003-09-02 | 학교법인 한국정보통신학원 | 계산적 디피-헬만 가정에 기반하는 안전성 증명 가능한공개키 암호화 방법 |
| FR2818772A1 (fr) * | 2000-12-21 | 2002-06-28 | Bull Cp8 | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes |
| FR2819663B1 (fr) * | 2001-01-18 | 2003-04-11 | Gemplus Card Int | Dispositif et procede d'execution d'un algorithme cryptographique |
| FR2824209B1 (fr) * | 2001-04-30 | 2003-08-29 | St Microelectronics Sa | Brouillage d'un calcul mettant en oeuvre une fonction modulaire |
| FR2828608B1 (fr) * | 2001-08-10 | 2004-03-05 | Gemplus Card Int | Procede securise de realisation d'une operation d'exponentiation modulaire |
| FR2829335A1 (fr) * | 2001-09-06 | 2003-03-07 | St Microelectronics Sa | Procede de brouillage d'un calcul a quantite secrete |
| DE10143728B4 (de) * | 2001-09-06 | 2004-09-02 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation |
| GB2393622B (en) * | 2001-09-13 | 2005-07-13 | Nds Ltd | Hacking prevention system |
| FR2830146B1 (fr) * | 2001-09-24 | 2003-10-31 | Gemplus Card Int | Procede de mise en oeuvre, dans un composant electronique, d'un algorithme de cryptographie et composant correspondant |
| WO2003034268A2 (de) * | 2001-10-17 | 2003-04-24 | Infineon Technologies Ag | Verfahren und vorrichtung zum absichern einer exponentiations-berechnung mittels dem chinesischen restsatz (crt) |
| WO2003034649A2 (de) * | 2001-10-17 | 2003-04-24 | Infineon Technologies Ag | Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus |
| DE10162496C5 (de) * | 2001-10-17 | 2009-02-26 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus |
| GB0126317D0 (en) * | 2001-11-02 | 2002-01-02 | Comodo Res Lab Ltd | Improvements in and relating to cryptographic methods and apparatus in which an exponentiation is used |
| AU2002226515A1 (en) * | 2001-12-28 | 2003-09-04 | Gemplus | Method for detection of attacks on cryptographic algorithms by trial and error |
| KR100431286B1 (ko) * | 2002-01-14 | 2004-05-12 | 한국정보보호진흥원 | 중국인 나머지 정리(crt) 기반의 오류 공격에 대응하는 방법 및 그 장치 |
| JP2003241659A (ja) * | 2002-02-22 | 2003-08-29 | Hitachi Ltd | 情報処理方法 |
| KR100431047B1 (ko) * | 2002-02-26 | 2004-05-12 | 주홍정보통신주식회사 | Crt에 기초한 rsa 공개키 암호화 방식을 이용한디지털 서명방법 및 그 장치 |
| FR2838262B1 (fr) * | 2002-04-08 | 2004-07-30 | Oberthur Card Syst Sa | Procede de securisation d'une electronique a acces crypte |
| FR2840083A1 (fr) * | 2002-05-24 | 2003-11-28 | St Microelectronics Sa | Test d'un algorithme execute par un circuit integre |
| US7983414B2 (en) * | 2002-09-11 | 2011-07-19 | Giesecke & Devrient Gmbh | Protected cryptographic calculation |
| DE10250810A1 (de) * | 2002-09-11 | 2004-03-25 | Giesecke & Devrient Gmbh | Geschützte kryptographische Berechnung |
| FR2844891A1 (fr) * | 2002-09-20 | 2004-03-26 | St Microelectronics Sa | Masquage de donnees decomposees dans un systeme de residus |
| DE10304451B3 (de) * | 2003-02-04 | 2004-09-02 | Infineon Technologies Ag | Modulare Exponentiation mit randomisiertem Exponenten |
| GB2399904B (en) * | 2003-03-28 | 2005-08-17 | Sharp Kk | Side channel attack prevention in data processing apparatus |
| US6880752B2 (en) * | 2003-04-16 | 2005-04-19 | George V. Tarnovsky | System for testing, verifying legitimacy of smart card in-situ and for storing data therein |
| DE10328860B4 (de) * | 2003-06-26 | 2008-08-07 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Verschlüsseln von Daten |
| FR2858496B1 (fr) * | 2003-07-31 | 2005-09-30 | Gemplus Card Int | Procede pour la mise en oeuvre securisee d'un algorithme de cryptographie de type rsa et composant correspondant |
| DE602004027943D1 (de) | 2003-11-16 | 2010-08-12 | Sandisk Il Ltd | Verbesserte natürliche montgomery-exponentenmaskierung |
| US7590880B1 (en) * | 2004-09-13 | 2009-09-15 | National Semiconductor Corporation | Circuitry and method for detecting and protecting against over-clocking attacks |
| US7477741B1 (en) | 2004-10-01 | 2009-01-13 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Analysis resistant cipher method and apparatus |
| US8467535B2 (en) | 2005-01-18 | 2013-06-18 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
| CA2935823C (en) | 2005-01-18 | 2019-01-15 | Blackberry Limited | Accelerated verification of digital signatures and public keys |
| FR2884004B1 (fr) * | 2005-03-30 | 2007-06-29 | Oberthur Card Syst Sa | Procede de traitement de donnees impliquant une exponentiation modulaire et un dispositif associe |
| US7620187B1 (en) | 2005-03-30 | 2009-11-17 | Rockwell Collins, Inc. | Method and apparatus for ad hoc cryptographic key transfer |
| FR2884088B1 (fr) * | 2005-03-31 | 2007-06-22 | Gemplus Sa | Procede et dispositif cryptographique permettant de proteger les logiques de cles publiques contre les attaques par faute |
| US7729459B1 (en) | 2005-03-31 | 2010-06-01 | National Semiconductor Corporation | System and method for providing a robust ultra low power serial interface with digital clock and data recovery circuit for power management systems |
| FR2887351A1 (fr) * | 2005-06-16 | 2006-12-22 | St Microelectronics Sa | Protection d'un calcul d'exponentiation modulaire effectue par un circuit integre |
| KR20080039497A (ko) * | 2005-08-19 | 2008-05-07 | 엔엑스피 비 브이 | 역 연산을 수행하는 회로 장치와 이를 포함하는 마이크로제어기, 데이터 처리 장치, 역 연산 수행 방법 및 컴퓨터 판독가능한 저장 매체 |
| KR20080035004A (ko) * | 2005-08-19 | 2008-04-22 | 엔엑스피 비 브이 | 회로 구조체, 마이크로컨트롤러, 데이터 처리 장치, 암호화 계산 수행 방법 및 프로그램을 구비하는 컴퓨터 판독가능한 매체 |
| US7822207B2 (en) * | 2006-12-22 | 2010-10-26 | Atmel Rousset S.A.S. | Key protection mechanism |
| US8280041B2 (en) * | 2007-03-12 | 2012-10-02 | Inside Secure | Chinese remainder theorem-based computation method for cryptosystems |
| WO2008114310A1 (ja) * | 2007-03-16 | 2008-09-25 | Fujitsu Limited | Fault攻撃対策機能を備えた組み込み装置 |
| US7974409B2 (en) * | 2007-06-28 | 2011-07-05 | Samsung Electronics Co., Ltd. | Changing the order of public key cryptographic computations |
| US7936871B2 (en) * | 2007-06-28 | 2011-05-03 | Samsung Electronics Co., Ltd. | Altering the size of windows in public key cryptographic computations |
| FR2919739B1 (fr) * | 2007-08-03 | 2009-12-04 | Oberthur Card Syst Sa | Procede de traitement de donnees protege contre les attaques par generation de fautes et dispositif associe |
| US8670557B2 (en) | 2007-09-10 | 2014-03-11 | Spansion Llc | Cryptographic system with modular randomization of exponentiation |
| US8139763B2 (en) | 2007-10-10 | 2012-03-20 | Spansion Llc | Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks |
| US7907724B2 (en) * | 2007-10-25 | 2011-03-15 | Infineon Technologies Ag | Method and apparatus for protecting an RSA calculation on an output by means of the chinese remainder theorem |
| US8774400B2 (en) | 2008-01-03 | 2014-07-08 | Spansion Llc | Method for protecting data against differntial fault analysis involved in rivest, shamir, and adleman cryptography using the chinese remainder theorem |
| KR100953715B1 (ko) | 2008-01-22 | 2010-04-19 | 고려대학교 산학협력단 | Crt-rsa 모듈라 지수승 알고리즘을 이용한 디지털서명 방법, 그 장치 및 이를 기록한 컴퓨터 판독가능 저장매체 |
| FR2926652B1 (fr) * | 2008-01-23 | 2010-06-18 | Inside Contactless | Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature |
| US7958354B1 (en) | 2008-02-14 | 2011-06-07 | Rockwell Collins, Inc. | High-order knowledge sharing system to distribute secret data |
| CN102099780B (zh) * | 2008-05-07 | 2015-08-12 | 耶德托公司 | 指数模糊 |
| US7522723B1 (en) | 2008-05-29 | 2009-04-21 | Cheman Shaik | Password self encryption method and system and encryption by keys generated from personal secret information |
| EP2154604A1 (en) | 2008-08-06 | 2010-02-17 | Gemalto SA | Countermeasure securing exponentiation based cryptography |
| EP2222013A1 (en) | 2009-02-19 | 2010-08-25 | Thomson Licensing | Method and device for countering fault attacks |
| EP2228715A1 (en) * | 2009-03-13 | 2010-09-15 | Thomson Licensing | Fault-resistant calculcations on elliptic curves |
| CN102725737B (zh) * | 2009-12-04 | 2016-04-20 | 密码研究公司 | 可验证防泄漏的加密和解密 |
| CN103270546B (zh) * | 2010-12-24 | 2015-09-16 | 三菱电机株式会社 | 签名生成装置、签名生成方法以及记录介质 |
| US8817974B2 (en) * | 2011-05-11 | 2014-08-26 | Nxp B.V. | Finite field cryptographic arithmetic resistant to fault attacks |
| EP2535804A1 (en) | 2011-06-17 | 2012-12-19 | Thomson Licensing | Fault-resistant exponentiation algorithm |
| FR2977953A1 (fr) * | 2011-07-13 | 2013-01-18 | St Microelectronics Rousset | Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire |
| DE102011115082A1 (de) | 2011-09-19 | 2013-03-21 | Giesecke & Devrient Gmbh | Gegen Ausspähung schützbarer geheimer RSA Verschlüsselungsexponent |
| US8745376B2 (en) | 2011-10-14 | 2014-06-03 | Certicom Corp. | Verifying implicit certificates and digital signatures |
| US8635467B2 (en) | 2011-10-27 | 2014-01-21 | Certicom Corp. | Integrated circuit with logic circuitry and multiple concealing circuits |
| US8334705B1 (en) | 2011-10-27 | 2012-12-18 | Certicom Corp. | Analog circuitry to conceal activity of logic circuitry |
| US8861718B2 (en) * | 2012-02-10 | 2014-10-14 | Electronics And Telecommunications Research Institute | Method of preventing fault-injection attacks on Chinese Remainder Theorem-Rivest Shamir Adleman cryptographic operations and recording medium for storing program implementing the same |
| EP2667539A1 (en) * | 2012-05-21 | 2013-11-27 | Koninklijke Philips N.V. | Key sharing methods, device and system for configuration thereof. |
| CN103051454A (zh) * | 2012-12-19 | 2013-04-17 | 天地融科技股份有限公司 | 电子设备及其密码验证方法 |
| US9087192B2 (en) | 2013-09-10 | 2015-07-21 | Infineon Technologies Ag | Electronic circuit and method for monitoring a data processing |
| KR102180029B1 (ko) | 2014-02-03 | 2020-11-17 | 삼성전자 주식회사 | Crt-rsa 암호화 방법 및 장치와 이를 기록한 컴퓨터 판독가능 저장매체 |
| EP3188401B1 (en) | 2015-12-29 | 2019-12-18 | Secure-IC SAS | Method and system for protecting a cryptographic operation |
| EP3242202A1 (en) | 2016-05-04 | 2017-11-08 | Gemalto Sa | Countermeasure to safe-error fault injection attacks on cryptographic exponentiation algorithms |
| TW201810989A (zh) * | 2016-05-18 | 2018-03-16 | 納格維遜股份有限公司 | 用以保護密碼指數的方法及系統 |
| EP3503459B1 (en) | 2017-12-22 | 2021-04-21 | Secure-IC SAS | Device and method for protecting execution of a cryptographic operation |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5504817A (en) * | 1994-05-09 | 1996-04-02 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for memory efficient variants of public key encryption and identification schemes for smart card applications |
| US5764766A (en) * | 1996-06-11 | 1998-06-09 | Digital Equipment Corporation | System and method for generation of one-time encryption keys for data communications and a computer program product for implementing the same |
-
1997
- 1997-05-12 US US08/854,464 patent/US5991415A/en not_active Expired - Lifetime
-
1998
- 1998-05-12 CA CA002288837A patent/CA2288837C/en not_active Expired - Fee Related
- 1998-05-12 ES ES98923379T patent/ES2236903T3/es not_active Expired - Lifetime
- 1998-05-12 IL IL13281698A patent/IL132816A/xx not_active IP Right Cessation
- 1998-05-12 EP EP98923379A patent/EP0986873B1/en not_active Expired - Lifetime
- 1998-05-12 WO PCT/US1998/009593 patent/WO1998052319A1/en not_active Ceased
- 1998-05-12 AU AU75685/98A patent/AU7568598A/en not_active Abandoned
- 1998-05-12 DE DE69828787T patent/DE69828787T2/de not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| AU7568598A (en) | 1998-12-08 |
| IL132816A (en) | 2003-05-29 |
| DE69828787D1 (de) | 2005-03-03 |
| CA2288837A1 (en) | 1998-11-19 |
| DE69828787T2 (de) | 2006-04-06 |
| CA2288837C (en) | 2008-11-18 |
| WO1998052319A1 (en) | 1998-11-19 |
| EP0986873A1 (en) | 2000-03-22 |
| US5991415A (en) | 1999-11-23 |
| EP0986873B1 (en) | 2005-01-26 |
| IL132816A0 (en) | 2001-03-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Boneh et al. | On the importance of eliminating errors in cryptographic computations | |
| Acıiçmez et al. | New branch prediction vulnerabilities in OpenSSL and necessary software countermeasures | |
| Boneh et al. | On the importance of checking cryptographic protocols for faults | |
| Blömer et al. | A new CRT-RSA algorithm secure against bellcore attacks | |
| US7961873B2 (en) | Password protocols using XZ-elliptic curve cryptography | |
| US7010692B2 (en) | Cryptographic methods for remote authentication | |
| Vigilant | RSA with CRT: A new cost-effective solution to thwart fault attacks | |
| WO2018017421A1 (en) | Modular exponentiation with side channel attack countermeasures | |
| US8639944B2 (en) | Zero divisors protecting exponentiation | |
| US20060280296A1 (en) | Cryptographic method and system for encrypting input data | |
| ES2729874T3 (es) | Sistema y método de exponenciación del teorema chino del resto de uso único para algoritmos criptográficos | |
| Koblitz et al. | Another look at security definitions | |
| CN101133593A (zh) | 安全地执行rsa型密码术算法的方法及相应部件 | |
| US20240187230A1 (en) | A low overhead method and architecture for side-channel attack resistance in elliptic curve arithmetic | |
| JP2017526981A5 (es) | ||
| US11943353B2 (en) | Randomization methods in isogeny-based cryptosystems | |
| Smart | Physical side‐channel attacks on cryptographic systems | |
| JP3952304B2 (ja) | 電子コンポネントにおいて公開指数を求める暗号アルゴリズムを実行する方法 | |
| Joye | Protecting RSA against fault attacks: The embedding method | |
| Ahmed et al. | ANEL: a novel efficient and lightweight authentication scheme for enhancing security in Vehicular Ad Hoc Networks (VANETs) using elliptic curve cryptography | |
| Arjunan et al. | Securing RSA algorithm against timing attack. | |
| Young | Mitigating insider threats to RSA key generation | |
| Chapman | Using Graphic Based Systems to Improve Cryptographic Algorithms | |
| Devi et al. | A Review on Different Types of Attacks | |
| Jain et al. | Parallel repetition for leakage resilience amplification revisited |