ES2287745T3 - Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente. - Google Patents
Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente. Download PDFInfo
- Publication number
- ES2287745T3 ES2287745T3 ES04741978T ES04741978T ES2287745T3 ES 2287745 T3 ES2287745 T3 ES 2287745T3 ES 04741978 T ES04741978 T ES 04741978T ES 04741978 T ES04741978 T ES 04741978T ES 2287745 T3 ES2287745 T3 ES 2287745T3
- Authority
- ES
- Spain
- Prior art keywords
- value
- module
- algorithm
- delta
- varepsilon
- 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
-
- 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/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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/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
- 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/7242—Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
-
- 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/26—Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Storage Device Security (AREA)
- Communication Control (AREA)
- Detection And Correction Of Errors (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Procedimiento para la aplicación asegurada de un algoritmo de criptografía con llave pública, dicha llave pública está compuesta de un número entero n, producto de dos grandes números primos p y q, y de un exponente público e, algoritmo que comprende igualmente una llave privada, dicho procedimiento consiste en determinar un conjunto E, que incluye un número predeterminado de números primos ei susceptibles de corresponder al valor del exponente público e, caracterizado porque comprende las siguientes etapas que consisten en: a) calcular un valor epsilon = pi ei ei epsilon E tal como epsilon/ei, ya sea inferior a fi(n) para todo ei perteneciente a E, (fi es la función indicadora de Euler; b) aplicar el valor epsilon en un cálculo predeterminado haciendo intervenir como producto modular el solo producto modular de epsilon por dicha llave privada del algoritmo; c) para cada uno de los ei, testar si el resultado de dicho cálculo predeterminado es igual a un valor epsilon/ei: - si fuera así, entonces atribuir el valor ei a e y memorizar e en vista de utilizarlo e cálculos del dicho algoritmo de criptografía; - en caso contrario, constatar que los cálculos de dicho algoritmo de criptografía que utiliza el valor e no pueden efectuarse.
Description
Procedimiento para la aplicación asegurada de un
algoritmo de criptografía de tipo RSA y componente
correspondiente.
El invento se refiere a un procedimiento para la
aplicación asegurada de un algoritmo de criptografía en un
componente electrónico y, más especialmente, para la aplicación
asegurada de un algoritmo de criptografía de tipo RSA.
El invento concierne asimismo el componente
electrónico correspondiente.
Tales componentes se utilizan principalmente en
aplicaciones en donde el acceso a servicios o a datos está
controlado severamente.
Poseen una arquitectura dicha informática, es
decir programable formada en torno a un microprocesador y memorias,
entre las cuales una memoria programa no volátil de tipo EEPROM
que contiene uno o varios nombres secretos. Se trata de una
arquitectura generalista en condiciones de ejecutar cualquier tipo
de algoritmo.
Estos componentes se utilizan en sistemas
informáticos, embarcados o no. Se utilizan principalmente en las
tarjetas inteligentes, para algunas de sus aplicaciones. Estas
aplicaciones son por ejemplo acceso a ciertos bancos de datos,
aplicaciones bancarias, aplicaciones de telepeaje, por ejemplo para
la televisión, el reposte de gasolina e incluso el paso de peajes
de autopistas.
Estos componentes o tarjetas aplican un
algoritmo de criptografía para asegurar el cifrado de datos
emitidos y/o la decodificación de los datos recibidos, la
autentificación o la firma digital de un mensaje.
A partir de este mensaje aplicado a la entrada
de la tarjeta por un sistema huésped (servidor, cajero bancario...)
y de los números secretos contenidos en la tarjeta, la tarjeta
suministra a su vez al sistema huésped este mensaje codificado,
autentificado o firmado, lo que permite por ejemplo al sistema
huésped autentificar el componente o la tarjeta, intercambiar
datos...
Las características de los algoritmos de
criptografía pueden conocerse: cálculos efectuados, parámetros
usados. El único desconocido es él o los números secretos. Toda la
seguridad de estos algoritmos de criptografía radica en
este(estos) número(s) secreto(s) contenido(s) en la tarjeta y desconocido(s) del mundo exterior a la tarjeta. Este número secreto no puede deducirse al conocer solamente el mensaje aplicado a la entrada y el mensaje codificado de vuelta.
este(estos) número(s) secreto(s) contenido(s) en la tarjeta y desconocido(s) del mundo exterior a la tarjeta. Este número secreto no puede deducirse al conocer solamente el mensaje aplicado a la entrada y el mensaje codificado de vuelta.
Ahora bien, se ha podido constatar que ataques
externos basados en magnitudes físicas mensurables del exterior
del componente cuando éste estaba desarrollando el algoritmo de
criptografía, permitían a terceras personas mal intencionadas
descubrir el(los) número(s) secreto(s)
contenido(s) en esta tarjeta. Estos ataques se llaman
ataques de canales ocultos, los ataques SPA, acrónimo anglosajón
por Single Powert Análisis basados en una o varias medidas y los
ataques DPA, acrónimo anglosajón por Differential Power Análisis
basados en análisis estadísticos resultantes de numerosas medidas.
El principio de estos ataques de canales ocultos radica por ejemplo
en el hecho de que el consumo en corriente del microprocesador que
ejecuta instrucciones varía según la instrucción o el dato
manipulado.
Existe igualmente un tipo de ataque, dicho
"ataque por falta". En este tipo de ataque, el atacante
inyecta cualquier tipo de falta durante el cálculo de un algoritmo
criptográfico, con el fin de explotar la presencia de esta falta
para extraer una información secreta.
La falta también puede provenir de un error de
cálculo debido al material que pone en aplicación el algoritmo
criptográfico. No obstante, en uno u otro caso, podemos considerar
que se trata de un ataque por falta.
Estos distintos ataques se prevén,
principalmente, con los algoritmos de criptografía con llave
pública, como por ejemplo el algoritmo RSA (que lleva el nombre de
sus autores Rivest, Shamir, Adleman), que es el más utilizado en
criptografía en este campo de aplicación, y al que se aplica el
presente invento más especialmente.
Seguidamente evocamos brevemente las principales
características del sistema criptográfico con llave pública
RSA.
La primera realización de esquema de
codificación y de firma con llave pública fue puesta a punto en
1977 por Rivest, Shamir y Adleman, quienes inventaron el sistema
criptográfico RSA. La seguridad de RSA se basa en la dificultad de
factorizar un número mayor que es el producto de dos números
primos. Éste es el sistema criptográfico con llave pública más
utilizado. Puede emplearse como procedimiento de codificación o
como procedimiento de firma.
El principio del sistema criptográfico RSA es el
siguiente. En primer lugar, consiste en generar el par de llaves
ESA.
De este modo, cada usuario crea una llave
pública RSA y una lave privada correspondiente, según el siguiente
procedimiento en 5 etapas:
1) Generar dos números primos distintos p y
q;
2) Calcular n=pq y \Phi(n) =
(p-1) (q-1), \Phi se llama la
función indicadora de Euler;
3) Seleccionar un entero e,
1<e<\Phi(n), tal como pgcd (e,\Phi(n))=1, de
modo aleatorio o a elección del usuario que podría escoger e
pequeño, tal como e=2^{16}+1 ó e=3 ó e= 17;
4) Calcular el único entero d,
1<d<\Phi(n), tal como: e.d=1 módulo
\Phi(n); (1)
5) La llave pública es (n,e); la llave privada
es d ó (d,p,q).
Los enteros e y d se llaman respectivamente
exponente público y exponente privado. El entero n se llama el
módulo RSA.
Una vez que se hayan definido los parámetros
públicos y privados, en vista de x, con 0<x<n, la operación
pública en x que puede ser por ejemplo la codificación del mensaje
x consiste en calcular: y=x^{e} módulo n (2).
En este caso, la operación privada
correspondiente es la operación de decodificación del mensaje
cifrado y, la cual consiste en calcular: y^{d} módulo n (3).
La operación pública en x también puede ser la
verificación de la firma x, y consiste en calcular: Y= x^{e}
módulo n (2).
La operación privada correspondiente es entonces
la generación de una firma x a partir del mensaje previamente
codificado y por aplicación de una función de picado \mu
("padding" según la terminología anglosajona, y consiste en
calcular: y^{d} módulo n (3).
Con x= y^{d} módulo n puesto que e.d=1 módulo
\Phi(n).
Vamos a presentar otro modo de funcionamiento
dicho modo CRT, ya que se basa en el teorema de los restos chinos
("Chinese Remainder Therorem" o CRT en inglés) y cuatro veces
más rápido que el del algoritmo RSA estándar. Según este modo CRT,
los cálculos módulo n no se efectúan directamente sino que se
efectúan en un primer tiempo los cálculos módulo p y módulo q.
Los parámetros públicos son (n, e) pero los
privados son en este modo (p, q, d) ó (p, q, d_{p}, d_{q},
i_{q}) con d_{p} = d módulo (p-1), d_{q} = d
módulo (q-1), e i_{q} = q^{-1} módulo p.
Por la realización (1), se obtiene: Ed_{p}= 1
módulo (p-1) y ed_{q}= 1 módulo
(q-1) (4).
La operación pública se efectúa del mismo modo
que para el modo de funcionamiento estándar. En cambio, para la
operación privada, se calcula primero: X_{p}= y^{dp} módulo p y
x_{q}=y^{dq} módulo q.
Seguidamente, por aplicación del teorema de los
restos chinos, se obtiene x=y^{d} módulo n por: X= CRT (x_{p},
x_{q}) = x_{q} + q [i_{q} (x_{p}-x_{q})
módulo p] (5).
Una orientación importante en el campo de la
criptografía con llave pública que utiliza el esquema de
codificación RSA consiste así pues en asegurar la aplicación de
los algoritmos RSA contra los distintos tipos de ataques posibles
evocados anteriormente, en particular los ataques de canales
ocultos, tales como los ataques DPA y SPA, así como los ataques
dichos por falta en donde el atacante, mediante cualquier tipo de
método, inyecta una falta durante el cálculo de una operación
privada del algoritmo RSA, con el fin de obtener un valor
corrompido a partir del cual es posible, en ciertos casos, deducir
ciertos datos secretos.
En el estado de la técnica, se han previsto
ciertos procedimientos de contramedida para precaver estos
diferentes tipos de ataque.
Principalmente, una contramedida posible para
precaver los ataques de tipo DPA (y SPA) contra el RSA en modo
estándar consiste en hacer aleatorio el cálculo de la operación
privada del RSA (firma o decodificación) al introducir en el
cálculo un valor aleatorio.
Así pues, un método de contramedida de este tipo
consiste en calcular la operación privada en modo estándar (3) x=
y^{d} módulo n de la siguiente forma:
x= y^{d-r} .y^{r} módulo n,
con r que es un número entero aleatorio. No obstante, el
inconveniente de este método de contramedida es que el tiempo de
cálculo se duplica.
Otro método de contramedida de este tipo para
precaver los ataques DPA (y SPA) contra el RSA en modo estándar
consiste en calcular la operación privada (3) x= y^{d} módulo n
de la siguiente manera:
\newpage
x= y^{(d+r,\Phi (n)} módulo n, en donde r es
un entero aleatorio. Sin embargo, un inconveniente de este método
es que se requiere conocer el valor de \Phi(n), que por lo
general lo desconoce el algoritmo de criptografía que aplica la
operación privada (firma o decodificación).
Asimismo, se propone una variante de este
método, la cual ya no se basa en el conocimiento del valor de
\Phi(n), sino en el valor del exponente público e. En
efecto, según (1) tenemos: e.d. = 1 módulo \Phi(n),
también, existe un entero k tal como: e.d-1= k.
\Phi(n).
Por consiguiente, la expresión x= y^{(d+r, \Phi
(n)} módulo n puede calcularse en forma de:
x= y^{(d+r, (ed-1)} módulo n,
con r un entero aleatorio.
Este método de cálculo de contramedida es
equivalente a aquel del que procede, pero sin embargo tiene la
ventaja de no requerir el conocimiento del valor de
\Phi(n). Necesita menos memoria puesto que no necesita
guardar \Phi(n).
No obstante, esta variante de contramedida, para
poder aplicarla, necesita conocer el valor del exponente público
e. Ahora bien, en numerosas aplicaciones de criptografía, el
componente o el dispositivo que aplica la operación privada del
algoritmo RSA no dispone siempre del exponente público e,
principalmente cuando sólo ejecuta la operación privada. Por tanto,
en este contexto, generalmente el exponente público e no se conoce
o está indisponible.
Las contramedidas descritas anteriormente están
destinadas principalmente a precaver los ataques de tipo DPA. Sin
embargo, hacen más difíciles los ataques de tipo SPA en la media en
que la ejecución del algoritmo no es determinista.
En lo que se refiere al otro tipo de ataque que
fue evocado, dicho ataque por falta, la mejor protección posible
para precaverlo consiste en testar, en modo estándar, que el valor
x obtenido por aplicación de la operación privada verifica
efectivamente la relación x^{e}= y módulo n de la operación
pública. Si no fuera así, no devolveremos el valor y para evitar su
utilización a fines de cripto-análisis.
En modo CRT, la protección consiste en verificar
por una parte, si efectivamente las relaciones x^{e}= y módulo p
y, por otra parte x^{e}= y módulo q se han verificado.
En efecto, cuando estas relaciones se han
verificado, estamos seguros de que no ha habido errores durante el
desarrollo de la operación privada del algoritmo RSA.
No obstante, un inconveniente que impide la
aplicación de tales verificaciones contra los ataques por falta, en
modo estándar o en modo CRT, es que estas operaciones de
verificación necesitan asimismo conocer previamente el exponente
público e. Ahora bien, como ya hemos visto, el componente o el
dispositivo que aplica la operación privada del algoritmo RSA, en
modo estándar o CRT, no dispone siempre del exponente público e,
principalmente cuando sólo ejecuta la operación privada. Por
consiguiente, en este contexto generalmente el exponente público e
se desconoce o está indisponible.
El documento de la patente FR 2 830 146 (D1)
propone con este fin un procedimiento que permite realizar ciertas
etapas de un algoritmo de criptografía, y principalmente de tipo
RSA en modo estándar o CRT, utilizando un exponente público e que
no se conoce a priori.
El procedimiento objeto de D1 permite en
particular realizar una contramedida, principalmente a los ataques
por falta, que ofrece la mejor protección posible tal como se ha
evocado más arriba, incluso cuando no se conoce el exponente
público e.
Para ello, ya sea (e, d) un par correspondiente
de exponentes RSA respectivamente público y privado y ya sea n el
módulo RSA. D1 se basa en la siguiente constatación según la cual
en un 95% de los casos, el valor del exponente público e se elige
entre los valores 2^{16}+1, 3, 17. El método de D1, que exponemos
aquí brevemente como referencia al modo estándar pero que no
obstante puede aplicarse al modo CRT, consiste entonces en
verificar que e es bien igual a uno de esos valores testando
sucesivamente si e_{i}.d=1 módulo \Phi(n), con el e_{i}
\Phi E= {2^{16}+1, 3, 17}, hasta que se verifique la
relación.
Cuando la relación se ha verificado para un
e_{i}, entonces sabemos que e=e_{i}. Una vez que se ha
determinado el valor del exponente público de este manera, e se
memoriza en vista de utilizarlo en cálculos del algoritmo RSA que
pone la mira en verificar que no haya errores, debidos a un ataque
por falta, durante el desarrollo de una operación privada
correspondiente del algoritmo RSA. De este modo, al conocer e, es
posible afirmar con una probabilidad igual a 1 que la operación
privada relacionada por ejemplo con la generación de una firma s,
con s= \mu (m)^{d} módulo n, \mu(m) es el valor
obtenido por la aplicación de una función \mu de padding al
mensaje m que debe firmarse, se ha efectuado sin error al verificar
sencillamente que el valor s obtenido verifica la relación
s^{e}=\mu(m) módulo n de la operación pública
correspondiente.
Si no ha podido atribuirse a e ningún valor de
e_{i}, entonces conviene constatar según D1 que los cálculos del
algoritmo RSA que emplean el valor e para la seguridad contra los
ataques por falta no pueden efectuarse.
Sin embargo, un inconveniente del método
propuesto por D1 es que implica ejecutar una pluralidad de cálculos
modulares cuanto se testa sucesivamente si la relación e_{i}d= 1
módulo \Phi(n) se ha verificado, para un valor de e_{i}
entre los e_{i} previstos. Ahora bien, los cálculos modulares son
cálculos complejos. Este método resulta ser por tanto penalizador
en términos de tiempo de cálculo y recursos de cálculo.
Igualmente, el problema que se plantea es el de
compensar los inconvenientes citados anteriormente.
Más particularmente, uno de los objetivos del
presente invento consiste en determinar de manera que no sea
penalizadora en términos de rapidez y complejidad de cálculo, el
valor de un exponente público e entre un conjunto de valores
probables predeterminados, cuando no se conoce este valor de e a
priori, el exponente e se aplica en ciertas etapas de un
algoritmo de criptografía de tipo RSA en modo estándar o CRT.
Otra finalidad consiste en poder aplicar, una
vez determinado el valor del exponente público e, operaciones de
contramedida utilizando el valor del exponente público e, poniendo
la ira en precaver por una parte, los ataques dichos ataques por
alta y, por otra parte, los ataques dichos de canales ocultos,
principalmente de tipo DPA y SPA, susceptibles de realizarse
durante la aplicación de una operación privada de un algoritmo de
criptografía, en particular de tipo RSA.
Con estos objetivos en vista, el invento se
refiere a un procedimiento para la aplicación asegurada de un
algoritmo de criptografía con llave pública, dicha llave pública
está compuesta de un número entero n, producto de dos grandes
números primos p y q, y de un exponente público e, algoritmo que
comprende igualmente una llave privada, dicho procedimiento
consiste en determinar un conjunto E que comprende un número
predeterminado de valores e_{i}, susceptibles de corresponder al
valor del exponente público e, los e_{i} son números primos,
caracterizados porque comprenden las siguientes etapas que
consisten en:
a) definir un valor \varepsilon =
\Pi ei
\hskip3.2cmei \varepsilon E
- \quad
- tal como \varepsilon/e_{i}, ya sea inferior a \Phi(n) para todo e_{i} perteneciente a E, \Phi es la función indicadora de Euler;
\vskip1.000000\baselineskip
b) aplicar el valor \varepsilon en
un cálculo predeterminado:
\vskip1.000000\baselineskip
c) para cada uno de los e_{i} de
E, testar si el resultado de dicho cálculo predeterminado es igual
a un valor \varepsilon/e_{i}:
- -
-
si fuera así, entonces atribuir el valor e_{i} a e y memorizar e en vista de utilizarlo e cálculos del dicho algoritmo de criptografía;\vtcortauna
- -
-
en caso contrario, constatar que los cálculos de dicho algoritmo de criptografía que utiliza el valor e no pueden efectuarse.\vtcortauna
\vskip1.000000\baselineskip
La ventaja es por tanto clara, solo tenemos una
sola multiplicación modular.
En una primera variante, el algoritmo de
criptografía se basa en un algoritmo de tipo RSA en modo
estándar.
En relación con esta primera variante, el
algoritmo de criptografía se basa en un algoritmo de tipo RSA en
modo estándar.
\vskip1.000000\baselineskip
En relación con esta primera variante, el
cálculo predeterminado de la etapa b) consiste en calcular un valor
C:
- C =
- \varepsilon.d módulo \Phi(n), d es la llave privada correspondiente del algoritmo RSA, tal como e.d=1 módulo \Phi(n) y \Phi es la función indicadora de Euler.
\vskip1.000000\baselineskip
Según una alternativa, el cálculo predeterminado
de la etapa b) consiste en calcular un valor C.
- C =
- \varepsilon.d módulo \lambda (n), d es la llave privada correspondiente del algoritmo RSA tal como e.d= 1 módulo \lambda (n) e \lambda es la función de Carmichael.
\vskip1.000000\baselineskip
En una segunda variante, el algoritmo de
criptografía se basa en un algoritmo de tipo RSA en modo CRT.
\newpage
En relación con esta segunda variante, el
cálculo predeterminado de la etapa b) consiste en calcular un valor
C:
- C =
- \varepsilon.d_{p} módulo (p-1), d_{p} es la llave privada correspondiente al algoritmo RSA tal como e.d_{p} =1 módulo (p-1).
\vskip1.000000\baselineskip
Según una alternativa, el cálculo predeterminado
de la etapa b) consiste en calcular un valor C:
- C =
- \varepsilon.d_{q} módulo (q-1), d_{q} es la llave privada correspondiente al algoritmo RSA tal como e.d_{q} =1 módulo (q-1).
\vskip1.000000\baselineskip
Según otra alternativa, el cálculo
predeterminado de la etapa b) consiste en calcular dos valores
C_{1} y C_{2} tales como:
- C_{1} =
- \varepsilon.d_{p} módulo (p-1), d_{p} es la llave privada correspondiente al algoritmo RSA tal como e.d_{p} =1 módulo (p-1).
- C_{2} =
- \varepsilon.d_{q} módulo (q-1), d_{q} es la llave privada correspondiente al algoritmo RSA tal como e.d_{p} =1 módulo (q-1).
\vskip1.000000\baselineskip
Y en que la etapa de test c) consiste para cada
e_{i}, en testar si C_{1} y/o C_{2} es igual al valor
\varepsilon/ e_{i}:
- -
-
si fuera así, entonces atribuir el valor e_{i} a e y memorizar e en vista de su utilización en cálculos del dicho algoritmo de criptografía;\vtcortauna
- -
-
en caso contrario, constatar que los cálculos del dicho algoritmo de criptografía que utiliza el valor e no puedan efectuarse.\vtcortauna
\vskip1.000000\baselineskip
Según la primera variante y en el caso en que un
valor el fuese atribuido a e, los cálculos que utilizan el calor e
consisten en:
- -
-
elegir un entero aleatorio r;\vtcortauna
- -
-
calcular un valor d* tal como d*= d+r.(e.d-1);\vtcortauna
- -
-
realizar una operación privada del algoritmo en la que un valor x se obtiene a partir de un valor y aplicando la relación x= y^{d\text{*}} módulo n.\vtcortauna
Según la primera variante y en el caso en que un
valor el fuese atribuido a e, los cálculos que utilizan el valor e
consisten en obtener, al final de una operación privada del
algoritmo, un valor x a partir de un valor y, y en verificar si
x^{e}= y módulo n.
Según la segunda variante y en el caso en un
valor e_{i} fuese atribuido a e, los cálculos que utilizan el
valor e consisten en obtener, al final de una operación privada del
algoritmo, un valor x a partir de un valor y, y en verificar por
una parte si x^{e}=y módulo p, y por otra parte, si x^{e}=y
módulo q.
De preferencia, el conjunto E comprende por lo
menos los siguientes valores e_{i} 3, 17, 2^{16}+1.
El invento concierne igualmente un componente
electrónico caracterizado porque comprende medios para aplicar el
procedimiento tal como se ha definido anteriormente.
El invento concierne asimismo una tarjeta
inteligente que comprende un componente electrónico tal como se
define.
El objeto del invento concierne igualmente un
procedimiento para la aplicación asegurada de un algoritmo de
criptografía con llave pública, dicha llave pública está compuesta
de un numero entero n, producto de dos grandes números primos p y
q, y de un exponente público e, dicho procedimiento consiste en
determinar un conjunto E que comprende un número predeterminado de
valores e_{i} susceptibles de corresponder al valor del exponente
público e, los e_{i} son números primos, caracterizado porque
consiste en realizar las siguientes etapas:
a) elegir un valor e_{i} entre los
valores del conjunto E;
b) si
\Phi(p)=\Phi(q), testar si el valor e_{i}
elegido verifica la relación: (1-e_{i}.d) módulo
n< e_{i}.2^{(\Phi(n)/2)+1}
- \quad
- o dicha relación simplificada:
- \quad
- (e_{i}.d) módulo n< e_{i}.2^{(\Phi(n)/2)+1}
\newpage
- \quad
- con \Phi(p), \Phi(q) y \Phi(n) las funciones dan el número de bits que codifican respectivamente el número p, el número q y el número n;
- \quad
- en caso contrario, en el caso en que p y q están desequilibrados, testar si el valor e_{i} elegido verifica la relación: (1-e_{i}.d) módulo n<e_{i}2^{g+1} o dicha relación simplificada: (-e_{i}.d) módulo n< e_{i}.2^{g+1}
- \quad
- con g=max (\Phi(p), (\Phi(q), si (\Phi(p), y (\Phi(q), son conocidos o, en caso contrario con g=(\Phi(n)/2+t, en donde t designa el factor de desequilibrio o un Terminal en este factor;
c) si la relación de test aplicado
en la etapa anterior se verifica, entonces e = e_{i}, y memorizar
e en vista de su utilización en cálculos del dicho algoritmo de
criptografía,
- -
-
si no fuera así, reiterar las etapas anteriores eligiendo otro valor de e_{i} en el conjunto E hasta que un valor de e_{i} pueda atribuirse a e y si no puede atribuirse ningún valor de e_{i} a e entonces constatar que los cálculos del dicho algoritmo de criptografía que utilizan el valor de e no pueden efectuarse.\vtcortauna
El hecho de elegir el orden de los el como aquel
de las probabilidades de aparición de los exponentes públicos
permite ahorrar tiempo. De este modo, podremos elegir
preferiblemente el siguiente orden:
e_{0}-2^{16}+1, e_{1}=3, e_{2}=17.
En una variante, tenemos para todos los i,
e_{i}\leq2^{16}+1 y la etapa b) se reemplaza por otra etapa
de test que consiste en:
si \Phi(p)=\Phi(q), testar si
el valor e_{i} elegido verifica la relación:
(1-e_{i}.d) módulo
n<2^{(\Phi(n)/2>+17}
o dicha relación simplificada: (-e_{i}.d)
módulo n<2^{(\Phi(n)/2)+17}
con (\Phi(p), (\Phi(q), y
(\Phi(n), las funciones facilitan el número de bits que
codifican respectivamente el número p, el número q y el número
n;
en caso contrario, en el caso de que p y q estén
desequilibrados, testar si el valor e_{i} elegido verifica la
relación: (1-e_{i}.d) módulo n<2^{g+17} o
dicha relación simplificada: (-e_{i}.d) módulo
n<2^{g+17}
con g=max/\Phi(p), \Phi(q),
si\Phi(p) y \Phi(q) son conocidos o, en el caso
contrario, con g=\Phi(n)/2+t, donde t designa el factor de
desequilibrio o un Terminal en este factor.
En otra variante, la etapa b) se reemplaza por
otra etapa de test que consiste en:
testar si el valor e_{i} elegido verifica la
relación según la cual:
- los primeros bits de peso fuerte de e_{i}.d módulo n son nulos;
o dicha relación simplificada en la que:
- los primeros bits de peso fuerte de (-e_{i}. d) módulo n son nulos.
Preferiblemente, el test se efectúa en los 128
primeros bits de peso fuerte.
Según un modo de realización preferido del
invento, el algoritmo de criptografía se basa en un algoritmo de
tipo RSA en modo estándar.
Según una característica, un valor e_{i} que
se ha atribuido a e, los cálculos utilizan el valor e que consiste
en:
- -
-
elegir un entero aleatorio r;\vtcortauna
- -
-
calcular un valor d* tal como d*= d+r(e.d.-1);\vtcortauna
- -
-
utilizar una operación privada del algoritmo en el que un valor x se obtiene a partir de un valor y aplicando la relación x=y^{d\text{*}} módulo n.\vtcortauna
Según otra característica, en la que se atribuye
a e un valor e_{i}, el procedimiento del invento consiste en
obtener, al final de una operación privada del algoritmo, un valor
x a partir de un valor y los cálculos que emplean el valor e
consisten en verificar si x^{e}= y módulo n.
De preferencia, el conjunto E comprende por lo
menos los siguientes valores e_{i} 3, 17, 2^{16}+1.
El invento concierne todavía a un componente
electrónico caracterizado porque comprende medios para aplicar el
procedimiento tal como se acaba de definir.
El invento concierne igualmente una tarjeta
inteligente que incluye un componente electrónico tal como se ha
definido.
Otras características y ventajas del presente
invento se comprenderán mejor con la descripción que hacemos a
continuación, a título indicativo y en absoluto limitativo.
El presente invento describe así pues distintas
técnicas que permiten validar el valor de un exponente público e
que no se conoce a priori. Estas técnicas pueden aplicarse
en cualquier dispositivo o componente electrónico dotado de medios
de cálculos criptográficos adecuados, en particular una tarjeta
inteligente.
El objeto del invento está basado en la
siguiente constatación: ya sea un conjunto E que comprende al menos
los siguientes valores de e: e_{0}= 2^{16}+1; e_{1}= 3 y
e_{2}= 17; este ejemplo E de valores cubre aprox. un 95% de los
valores de los exponentes públicos corrientemente utilizados en los
cálculos de los algoritmos de criptografía de tipo RSA.
La primera técnica propuesta por el presente
invento, válida para el modo estándar del algoritmo RSA, consiste
de manera general en elegir e_{0} y en verificar que e=e_{0};
si e\neqe_{0} entonces se prueba con e_{1}; y si
e\neqe_{1} entonces se prueba con que e_{2}.
Puede ser que para una cierta aplicación
correspondiente al 5% de otros casos, e no sea igual ni a e_{0},
ni a e_{1}, ni a e_{2}. También designamos más generalmente el
valor de e por e_{i}. Y el método consiste finalmente en elegir un
valor e_{i} entre los el previstos y en verificar que e=
e_{i}.
Más particularmente, la primera técnica para
encontrar el valor de e, válida para el modo estándar del algoritmo
RSA, se basa en el siguiente razonamiento:
En el modo estándar, el algoritmo privado (que
aplica una operación de firma o de decodificación de un mensaje)
dispone del valor del módulo n y del exponente privado d.
Así pues, de la expresión (1), se deduce que
existe un entero k tal como: e.d= 1 + k \Phi(n), ya sea:
1-e.d.=-k \Phi(n)= - k.
(n.p-q+1) .
Si reducimos los dos lados de la expresión
módulo n, obtenemos: 1-e.d.=
-k(p+q-1) (módulo n).
Observando que siempre tenemos k<e cuando e
es relativamente pequeño, la expresión precedente puede escribirse
de este modo: (1-e.d) módulo n=
k(p+q-1). (6)
El lado izquierdo de la ecuación 6 tiene
prácticamente el tamaño del módulo n, mientras que el lado derecho
tiene su tamaño definido según la siguiente expresión cuando p y q
están equilibrados, es decir que tienen el mismo tamaño que
\Phi(p)=\Phi(q) : k.
(p+q-1)<e.2^{(\Phi(n)/2)+1}
con \Phi(n), \Phi(p),
\Phi(q) las funciones dan el número de bits que codifican
respectivamente el número n, el número p y el número q.
Cuando p y q no son del mismo tamaño, la función
se denomina g=max (\Phi(p), \Phi(q)), es decir la
función da el máximo de longitudes de p y q en el caso en que
(\Phi(p), \Phi(q)) son conocidos; en caso
contrario, se toma g=\Phi(n)/2+t, en donde t designa el
factor de desequilibrio o un terminal en ese factor en el caso
contrario. En ese caso en el que p y q están desequilibrados, la
fórmula de la expresión a continuación resulta: k.
(p+q-1)<e.2^{1+g}.
En efecto, como n=p.q, si p y q están
desequilibrados, entonces tenemos la expresión
p+q<2^{(\Phi(n)/2)+1}; al contrario si p y q están
desequilibrados, entonces: p+q<2^{1+g}.
De este modo, para todos los e_{i} posibles en
el conjunto E, si (\Phi(p), (\Phi(q)), se testa
si el valor e_{i} elegido verifica la siguiente relación
predeterminada: (1-e_{i}.d) módulo
n<e_{i}.2^{(\Phi(n)/2)+1} (7)
en caso contrario, se testa si el valor e_{i}
elegido verifica la siguiente relación predeterminada:
(1-e_{i}.d) módulo n< e_{i}.2^{g+1}
(7')
si la relación predeterminada de test aplicada
se verifica, entonces e= e_{i} y se memoriza e,
en caso contrario, se elige otro valor de
e_{i} en el conjunto E y se reiteran las etapas anteriores.
En una primera variante, el test puede recobrar
el valor de e : (1-e_{i}. d) módulo
n<e_{i}.2^{(\Phi(n)/2)+1} en el que
(1-e_{i}. d) módulo n<e_{i}.2^{g+1}, según
que p y q estén equilibrados o no, puede reemplazarse por el
siguiente test: (1-e_{i}.d) módulo n<B, con
B\geq[max (e_{i})]2^{(\Phi(n)/2)+1} en el caso
en que \Phi(p) = \Phi(q), y B\geq[max
(e_{i})]2^{g+1} en caso contrario.
En nuestro ejemplo, tenemos E={2^{16}+1, 3,
17}. Así pues, para todos los i, tenemos e_{i}\leq2^{16}+1 y
el test precedente puede simplificarse de la siguiente manera que
consiste en verificar si:
(1-e_{i}.d) módulo n<B, con
B=2^{(\Phi(n /2)+17} en el caso en que (\Phi(p)=
\Phi(q),
y (1-e_{i}.d) módulo n<B,
con B=2^{g+17} en caso contrario.
En una segunda variante del test, se pueden
simplificar el test precedente verificando si los bits más
significativos, p. ej. los 128 bits de peso fuerte, de
(1-(e_{i}.d) módulo n son nulos.
Por último, para esta primera técnica, una
última simplificación consiste en determinar la relación
predeterminada para el test sobre los el comenzando con la
siguiente relación: (-e.d) módulo n=
k(p+q-1)-1 en vez de la
relación (6).
De este modo, a partir de esta simplificación,
obtenemos para las relaciones de test (7, 7'), la siguiente
simplificación: (e_{i}.d) módulo
n<e_{i}.2^{(\Phi(n)/2)+1} si
\Phi(p)=\Phi(q), y (e_{i}.d) módulo
n<e_{i}.2^{g+1} en caso contrario.
Para la primera variante, se obtiene el
siguiente test simplificado: (e_{i}. d) módulo n<B, con
B=2^{(\Phi(n)/2)+17} si \Phi(p)= \Phi(q),
y B=2^{g+17} en caso contrario.
Y, para la segunda variante del test, se obtiene
el siguiente test simplificado que consiste en verificar si los
primeros bits de peso fuerte de (-e_{i}.d) módulo n son
nulos.
Cualquiera que sea la variante aplicada, en su
versión simplificada o no, si el test no se ha verificado para un
valor de e_{i}, se elige otro valor para e_{i} en el conjunto E
hasta que se encuentre una correspondencia.
Si para una u otra de las variantes que
conciernen la primera técnica expuesta anteriormente, no existe
entre los e_{i}, un valor tal como e=e_{i}, entonces queda por
constatar que los cálculos del algoritmo de criptografía RSA en
modo estándar que hacen intervenir e no pueden efectuarse.
En cambio, cuando el valor de e se ha podido
encontrar entre los valores e_{i} del conjunto de valores
predeterminados E, por una u otra de las variantes, podemos
verificar entonces cada operación privada (3) del algoritmo de
criptografía (que consiste en la decodificación de un mensaje o la
generación de una firma) cerciorándose de que el valor x obtenido a
partir de un valor y por aplicación de la operación privada
verifica la relación x^{e}. = y módulo n. Si no fuera así, el
mensaje decodificado o la firma no se reexpide para evitar
cualquier criptoanálisis.
Como ya lo hemos visto, una vez que se conoce e,
el procedimiento según el invento puede aplicarse igualmente a una
contramedida, principalmente contra los ataques de tipo DPA (y
SPA), tal y como se ha descrito más arriba e la descripción. Este
método consiste en: elegir un entero aleatorio r; calcular un valor
d* tal como d*=d+r.(e.d-1); aplicar una operación
privada del algoritmo en la que un valor x se obtiene a partir de
un valor y aplicando la relación x=y^{d\text{*}} módulo n.
Por último, el presente invento concierne una
segunda técnica para descubrir el valor del exponente e entre un
conjunto E que comprende un conjunto de valores e_{i}
predeterminados. Como ya; lo veremos, esta técnica se aplica tanto
en el caso del modo estándar del algoritmo RSA como en el caso del
modo CRT.
Esta técnica consiste más particularmente en
mejorar el método propuesto en D1. De este modo, se aplican las
siguientes etapas:
a) definir un valor \varepsilon =
\Pi ei
\hskip3.2cmei \varepsilon E
- \quad
- tal como \varepsilon/e_{i}, ya sea inferior a \Phi(n) para todo e_{i} perteneciente a E, \Phi es la función indicadora de Euler;
\vskip1.000000\baselineskip
b) aplicar el valor \varepsilon en
un cálculo predeterminado;
\vskip1.000000\baselineskip
c) para cada uno de los e_{i}
testar si el resultado de dicho cálculo predeterminado es igual a
un valor \varepsilon/e_{i}:
- -
-
si fuera así, entonces atribuir el valor e_{i} a e y memorizar e en vista de utilizarlo en cálculos del dicho algoritmo de criptografía;\vtcortauna
- -
-
en caso contrario, constatar que los cálculos de dicho algoritmo de criptografía que utiliza el valor e no pueden efectuarse.\vtcortauna
\vskip1.000000\baselineskip
En modo estándar, el cálculo predeterminado de
la etapa b) consiste en calcular un valor C tal como:
- C =
- \varepsilon.d módulo \Phi(n), d es la llave privada correspondiente del algoritmo RSA, en modo estándar, tal como e.d=1 módulo \Phi(n).
\vskip1.000000\baselineskip
Por ejemplo, ya sea el conjunto E= {e_{0}=3,
e_{1}=17, e_{2}=2^{16}+1}, entonces \varepsilon=
e_{0}.e_{1}.e_{2}=3.17. (2^{16}+1).
De este modo, con C= \varepsilon.d módulo
\Phi(n):
- \quad
- Si C=17.(2^{16}+1) = \varepsilon/e_{0} entonces e=e_{0}=3;
- \quad
- Si C=3. (2^{16}+1)= \varepsilon/e_{1} entonces e=e_{1}=17;
- \quad
- Si C=3.17=\varepsilon/e_{2} entonces e=e_{2}=(2^{16}+1);
\vskip1.000000\baselineskip
Por mediación de un solo cálculo modular que
permite obtener el valor de C, es posible descubrir el valor del
exponente e entre un conjunto E, en función del resultado de este
cálculo.
Según una alternativa, el cálculo predeterminado
de la etapa b) consiste en calcular un valor C tal como:
C = \varepsilon.d módulo \lambda(n),
d es la llave privada correspondiente del algoritmo RSA en modo
estándar pero calculado en esta alternativa módulo la función de
Carmicheal en vez de módulo tiene la función indicadora de Euler,
tal como: e.d= 1 módulo \lambda(n) y \lambda es la
función de Carmichael.
En caso de que se hubiera podido encontrar y
memorizar efectivamente el valor de e, los cálculos del algoritmo
de criptografía en modo estándar que aplican el valor de e
consisten en precaver los ataques por falta e implementar una
contramedida, principalmente contra los ataques de tipo DPA (y
SPA), y son idénticos a aquellos descritos en referencia a la
primera técnica.
En una variante, cuando el algoritmo RSA
aplicado está en modo CRT, el cálculo predeterminado de la etapa b)
consiste
- C =
- \varepsilon.d_{p} módulo (p-1), d_{p} es la llave privada correspondiente del algoritmo RSA tal como e.d_{p} = 1 módulo(p-1).
\vskip1.000000\baselineskip
O bien, tal como:
- C =
- \varepsilon.d_{q} módulo (q-1), d_{q} es la llave privada correspondiente del algoritmo RSA tal como e.d_{q} = 1 módulo(q-1).
\vskip1.000000\baselineskip
O bien ambas, y en emplear el e que se nos da
por lo menos en uno de los dos textos.
En caso de que se hubiera podido encontrar y
memorizar efectivamente el valor de e, los cálculos del algoritmo
de criptografía en modo CRT que aplican el valor de e consisten en
precaver los ataques por falta.
Entonces se puede verificar cada operación
privada en modo CRT del algoritmo de criptografía (que consiste en
la decodificación de un mensaje o la generación de una firma)
cerciorándose de que el valor x obtenido a partir de un valor y por
aplicación de la operación privada en modo CRT verifica de una
parte, la relación x^{e}=y módulo p y, por otra parte, la
relación x^{e}=y módulo q.
Claims (26)
1. Procedimiento para la aplicación asegurada de
un algoritmo de criptografía con llave pública, dicha llave pública
está compuesta de un número entero n, producto de dos grandes
números primos p y q, y de un exponente público e, algoritmo que
comprende igualmente una llave privada, dicho procedimiento
consiste en determinar un conjunto E, que incluye un número
predeterminado de números primos e_{i} susceptibles de
corresponder al valor del exponente público e, caracterizado
porque comprende las siguientes etapas que consisten en:
a) calcular un valor \varepsilon =
\Pi ei
\hskip3.4cmei \varepsilon E
- \quad
- tal como \varepsilon/e_{i}, ya sea inferior a \Phi(n) para todo e_{i} perteneciente a E, \Phi es la función indicadora de Euler;
b) aplicar el valor \varepsilon en
un cálculo predeterminado haciendo intervenir como producto modular
el solo producto modular de \varepsilon por dicha llave privada
del algoritmo;
c) para cada uno de los e_{i},
testar si el resultado de dicho cálculo predeterminado es igual a
un valor \varepsilon/e_{i}:
- -
-
si fuera así, entonces atribuir el valor e_{i} a e y memorizar e en vista de utilizarlo e cálculos del dicho algoritmo de criptografía;\vtcortauna
- -
-
en caso contrario, constatar que los cálculos de dicho algoritmo de criptografía que utiliza el valor e no pueden efectuarse.\vtcortauna
2. Procedimiento según la reivindicación 1,
caracterizado porque el algoritmo de criptografía está
basado en un algoritmo de tipo RSA en modo estándar.
3. Procedimiento según la reivindicación 2,
caracterizado porque el cálculo predeterminado de la etapa
b) consiste en calcular un valor C:
- C =
- \varepsilon.d módulo \Phi(n), d es la llave privada correspondiente del algoritmo RSA, tal como e.d=1 módulo \Phi(n) y \Phi es la función indicadora de Euler.
4. Procedimiento según la reivindicación 20,
caracterizado porque el cálculo predeterminado de la etapa
b) consiste en calcular un valor C.
- C =
- \varepsilon.d módulo \lambda (n), d es la llave privada correspondiente del algoritmo RSA tal como e.d=1 módulo \lambda(n) e \lambda es la función de Carmichael.
5. Procedimiento según la reivindicación 1,
caracterizado porque el algoritmo de criptografía se basa en
un algoritmo de tipo RSA en modo CRT.
6. Procedimiento según la reivindicación 5,
caracterizado porque el cálculo predeterminado de la etapa
b) consiste en calcular un valor C:
- C =
- \varepsilon.d_{p} módulo(p-1), d_{p} es la clave privada correspondiente al algoritmo RSA tal como e.d_{p}=1 módulo(p-1).
7. Procedimiento según la reivindicación 5,
caracterizado porque el cálculo predeterminado de la etapa
b) consiste en calcular un valor C:
- C =
- \varepsilon.d_{q} módulo(q-1), d_{q} es la llave privada correspondiente al algoritmo RSA tal como e.d_{q}=1 módulo(q-1).
8. Procedimiento según la reivindicación 5,
caracterizado porque el cálculo predeterminado de la etapa
b) consiste en calcular dos valores C_{1} y C_{2} tales
como:
- C_{1} =
- \varepsilon.d_{p} módulo(p-1), d_{p} es la llave privada correspondiente al algoritmo RSA tal como e.d_{p}=1 módulo(p-1).
- C_{2} =
- \varepsilon.d_{q} módulo(q-1), d_{q} es la clave privada correspondiente al algoritmo RSA tal como e.d_{p}=1 módulo(q-1). y en que la etapa de test c) consiste para cada e_{i}, en testar si C_{1} y/o C_{2} es igual al valor \varepsilon/e_{i}:
- -
-
si fuera así, entonces atribuir el valor e_{i} a e y memorizar e en vista de su utilización en cálculos del dicho algoritmo de criptografía;\vtcortauna
- -
-
en caso contrario, constatar que los cálculos del dicho algoritmo de criptografía que utiliza el valor e no puedan efectuarse.\vtcortauna
9. Procedimiento según cualquiera de las
reivindicaciones 3 o 4 y según el cual un valor e_{i} se ha
atribuido a e, caracterizado porque los cálculos que
utilizan el valor e consisten en:
- -
-
elegir un entero aleatorio r;\vtcortauna
- -
-
calcular un valor d* tal como d*= d+r.(e.d-1);\vtcortauna
- -
-
utilizar una operación privada del algoritmo en la que un valor x se obtiene a partir de un valor y aplicando la relación x=y^{d\text{*}} módulo n.\vtcortauna
10. Procedimiento según cualquiera de las
reivindicaciones 2 a 4 y según el cual un valor se ha atribuido un
valor e_{i}, caracterizado porque consiste en obtener, al
final de una operación privada del algoritmo, un valor x a partir
de un valor y en que los cálculos que emplean el valor e consisten
en verificar si x^{e}=y módulo n.
11. Procedimiento según cualquiera de las
reivindicaciones 5 a 8, y según el cual un valor e_{i} se ha
atribuido a e, caracterizado porque consiste en obtener, al
final de una operación privada del algoritmo, un valor x a partir
de un valor y en que los cálculos que utilizan el valor e consisten
en verificar por una parte si x^{e}=y módulo p y, por otra parte
si x^{e}=y módulo q.
12. Procedimiento según cualquiera de las
reivindicaciones anteriores, caracterizado porque el
conjunto E comprende por lo menos los siguientes valores e_{i} 3,
17, 2^{16}+1.
13. Componente electrónico caracterizado
porque comprende medios para la aplicación del procedimiento según
cualquiera de las reivindicaciones anteriores.
14. Tarjeta inteligente que comprende un
componente electrónico según la reivindicación 13.
15. Procedimiento para la aplicación asegurada
de un de un algoritmo de criptografía con llave pública, dicha
llave pública está compuesta de un numero entero n, producto de
dos grandes números primos p y q, y de un exponente público e,
dicho procedimiento consiste en determinar un conjunto E que
comprende un número predeterminado de números primos el
susceptibles de corresponder al valor del exponente público e,
caracterizado porque consiste en realizar las siguientes
etapas:
a) elegir un valor e_{i} entre los valores del
conjunto E;
b) si \delta(p)=\delta(q), con
\delta(n), \delta(p), \delta(q),
funciones dando el número de bits que codifican respectivamente el
número n, el número p y el número q, testar si el valor e_{i}
elegido verifica la relación: (1-e_{i}.d) módulo
n<e_{i}.2^{(\delta(n)/2)+1}, o dicha relación
simplificada: (e_{i}.d) módulo
n<e_{i}.2^{(\delta(n)/2)+1}
con \delta(p), \delta(q) y
\delta(n) las funciones dan el número de bits que
codifican respectivamente el número p, el número q y el número
n;
c) si la relación de test aplicado en la etapa
anterior se verifica, entonces e=e_{i}, y memorizar e en vista de
su utilización en cálculos del dicho algoritmo de criptografía,
- -
-
si no fuera así, reiterar las etapas anteriores eligiendo otro valor de e_{i} en el conjunto E hasta que un valor de e_{i} pueda atribuirse a e y si no puede atribuirse ningún valor de e_{i} a e entonces constatar que los cálculos del dicho algoritmo de criptografía que utilizan el valor de e no pueden efectuarse.\vtcortauna
16. Procedimiento para la aplicación asegurada
de un algoritmo de criptografía con llave pública según la
reivindicación 15, caracterizado porque consiste en realizar
la etapa b de la siguiente manera cuando
\delta(p)#\delta(q), caso en que p y q están
desequilibrados, etapa que consiste en testar si el valor e_{i}
elegido verifica la relación: (1-e_{i}.d) módulo
n<e_{i}.2^{g+1}, O dicha relación simplificada: (-e_{i}.d)
módulo n<e_{i}.2^{g+1}
con g=max/\delta(p),
\delta(q), si \delta(p) y \delta(q) son
conocidos o, en el caso contrario, con g=\delta(n)/2+t,
donde t designa el factor de desequilibrio o un Terminal en este
factor.
17. Procedimiento según la reivindicación 15 o
16, caracterizado porque todos los i,
e_{i}\leq2^{16}+1 y porque en la etapa b) se reemplaza por
otra etapa de test que consiste en:
si \delta(p)= \delta(q),
testar si el valor e_{i} elegido verifica la relación:
(1-e_{i}.d) módulo
n<2^{(\delta(n)/2)+17}, o dicha relación simplificada:
(-e_{i}.d) módulo n<2^{(\delta(n)/2)+17}
con \delta(p), \delta(q), y
\delta(n),las funciones facilitan el número de bits que
codifican respectivamente el número p, el número q y el número
n;
\newpage
en caso contrario, en el caso de que p y q estén
desequilibrados, testar si el valor e_{i} elegido verifica la
relación: (1-e_{i}.d) módulo n<2^{g+17}, o
dicha relación simplificada: (-e_{i}.d) módulo
n<^{2g+17}
con g=max/\delta(p),
\delta(q), si \delta(p) y \delta(q) son
conocidos o, en el caso contrario, con g=\delta(n)/2+t,
donde t designa el factor de desequilibrio o un Terminal en este
factor.
18. Procedimiento según la reivindicación 15 o
16, caracterizado porque la etapa b) se reemplaza por otra
etapa de test que consiste en:
testar si el valor e_{i} elegido verifica la
relación según la cual:
- los primeros bits de peso fuerte de (1-e_{i}.d) módulo n son nulos;
o dicha relación simplificada en la que:
- los primeros bits de peso fuerte de (-e_{i}.d) módulo n son nulos.
19. Procedimiento según la reivindicación 18,
caracterizado porque el testo se efectúa en los 128 primeros
bits de peso fuerte.
20. Procedimiento según cualquiera de las
reivindicaciones 15 a 19, caracterizado porque el algoritmo
de criptografía se basa e un algoritmo de tipo RSA en modo
estándar.
21. Procedimiento según cualquiera de las
reivindicaciones 15 a 20, y según el cual un valor e_{i} se ha
atribuido a e, caracterizado porque los cálculos que
utilizan el valor e consisten en:
- -
-
elegir un entero aleatorio r;\vtcortauna
- -
-
calcular un valor d* tal como d*= d+r(e.d.-1);\vtcortauna
- -
-
utilizar una operación privada del algoritmo en el que un valor x se obtiene a partir de un valor y aplicando la relación x=y^{d\text{*}} módulo n.\vtcortauna
22. Procedimiento según cualquiera de las
reivindicaciones 15 a 20 y según el cual un valor e_{i} se ha
atribuido a e, caracterizado porque consiste en obtener, al
final de una operación privada del algoritmo, un valor x a partir
de un valor y porque los cálculos que utilizan el valor e consisten
en verificar si x^{e}= y módulo n.
23. Procedimiento según cualquiera de las
reivindicaciones 15 a 22 caracterizado porque el conjunto E
comprende por los menos los siguientes valores e_{i} 3, 17,
2^{16}+1.
24. Procedimiento según la reivindicación 23,
caracterizado porque la elección preferencial de los valores
e_{i} entre los valores del conjunto E se efectúa según el orden
siguiente: 2^{16}+1, 3, 17.
25. Componente electrónico caracterizado
porque comprende medios para la aplicación del procedimiento según
cualquiera de las reivindicaciones 15 a 24.
26. Tarjeta inteligente que comprende un
componente electrónico según la reivindicación 25.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0309457 | 2003-07-31 | ||
| FR0309457A FR2858496B1 (fr) | 2003-07-31 | 2003-07-31 | Procede pour la mise en oeuvre securisee d'un algorithme de cryptographie de type rsa et composant correspondant |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2287745T3 true ES2287745T3 (es) | 2007-12-16 |
Family
ID=34043708
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES04741978T Expired - Lifetime ES2287745T3 (es) | 2003-07-31 | 2004-07-08 | Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente. |
Country Status (9)
| Country | Link |
|---|---|
| US (2) | US7359508B2 (es) |
| EP (1) | EP1652336B1 (es) |
| JP (1) | JP4568886B2 (es) |
| CN (1) | CN101133593B (es) |
| AT (1) | ATE363166T1 (es) |
| DE (1) | DE602004006628T2 (es) |
| ES (1) | ES2287745T3 (es) |
| FR (1) | FR2858496B1 (es) |
| WO (1) | WO2005022820A1 (es) |
Families Citing this family (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| FR2888690A1 (fr) * | 2005-07-13 | 2007-01-19 | Gemplus Sa | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
| CN101243388A (zh) * | 2005-08-19 | 2008-08-13 | Nxp股份有限公司 | 用于在加密计算中执行求逆运算的电路结构和方法 |
| DE102005042339B4 (de) * | 2005-09-06 | 2007-08-16 | Siemens Ag | Verfahren zum sicheren Ver- oder Entschlüsseln einer Nachricht |
| EP1949292A1 (fr) * | 2005-11-04 | 2008-07-30 | Gemplus SA. | Procede securise de manipulations de donnees lors de l'execution d'algorithmes cryptographiques sur systemes embarques |
| US8065531B2 (en) * | 2006-04-06 | 2011-11-22 | Nxp B.V. | Decryption method |
| US20080104402A1 (en) * | 2006-09-28 | 2008-05-01 | Shay Gueron | Countermeasure against fault-based attack on RSA signature verification |
| 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 |
| EP2222013A1 (en) | 2009-02-19 | 2010-08-25 | Thomson Licensing | Method and device for countering fault attacks |
| US8615649B2 (en) * | 2010-09-21 | 2013-12-24 | International Business Machines Corporation | Use of a private key to encrypt and decrypt a message |
| DE102010055238A1 (de) | 2010-12-20 | 2012-06-21 | Giesecke & Devrient Gmbh | Sichere RSA-Implementierung |
| FR2985624B1 (fr) * | 2012-01-11 | 2014-11-21 | Inside Secure | Procede de chiffrement protege contre des attaques par canaux auxiliaires |
| CN102769528A (zh) * | 2012-06-15 | 2012-11-07 | 刘诗章 | 基于密码学技术应用的大数快速分解方法 |
| CN103560877B (zh) * | 2013-11-01 | 2016-11-23 | 中国电子科技集团公司第十五研究所 | 攻击密钥的方法及装置 |
| CN104660400A (zh) * | 2013-11-25 | 2015-05-27 | 上海复旦微电子集团股份有限公司 | 一种rsa模幂运算方法和装置 |
| DE102014016548A1 (de) * | 2014-11-10 | 2016-05-12 | Giesecke & Devrient Gmbh | Verfahren zum Testen und zum Härten von Softwareapplikationen |
| US10367637B2 (en) | 2016-07-22 | 2019-07-30 | Qualcomm Incorporated | Modular exponentiation with transparent side channel attack countermeasures |
| CN106712950A (zh) * | 2017-01-18 | 2017-05-24 | 中译语通科技(北京)有限公司 | 基于同余数的rsa公钥加密算法对语料数据的加密方法 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4736423A (en) * | 1985-04-30 | 1988-04-05 | International Business Machines Corporation | Technique for reducing RSA Crypto variable storage |
| US5991415A (en) * | 1997-05-12 | 1999-11-23 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for protecting public key schemes from timing and fault attacks |
| US6965673B1 (en) * | 1997-09-19 | 2005-11-15 | Telcordia Technologies, Inc. | Method of using transient faults to verify the security of a cryptosystem |
| ATE325478T1 (de) * | 1998-01-02 | 2006-06-15 | Cryptography Res Inc | Leckresistentes kryptographisches verfahren und vorrichtung |
| FR2776410B1 (fr) * | 1998-03-20 | 2002-11-15 | Gemplus Card Int | Dispositifs pour masquer les operations effectuees dans une carte a microprocesseur |
| 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 |
| FR2784829B1 (fr) * | 1998-10-16 | 2000-12-29 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
| FR2804225B1 (fr) * | 2000-01-26 | 2002-05-03 | Gemplus Card Int | Algorithme d'exponentiation modulaire dans un composant electrique mettant en oeuvre un algorithme de chiffrement a cle publique |
| DE10143728B4 (de) * | 2001-09-06 | 2004-09-02 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation |
| 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 |
| 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 |
-
2003
- 2003-07-31 FR FR0309457A patent/FR2858496B1/fr not_active Expired - Fee Related
-
2004
- 2004-07-08 CN CN2004800221776A patent/CN101133593B/zh not_active Expired - Fee Related
- 2004-07-08 EP EP04741978A patent/EP1652336B1/fr not_active Expired - Lifetime
- 2004-07-08 WO PCT/EP2004/051411 patent/WO2005022820A1/fr not_active Ceased
- 2004-07-08 DE DE602004006628T patent/DE602004006628T2/de not_active Expired - Lifetime
- 2004-07-08 AT AT04741978T patent/ATE363166T1/de not_active IP Right Cessation
- 2004-07-08 JP JP2006521566A patent/JP4568886B2/ja not_active Expired - Fee Related
- 2004-07-08 US US10/566,504 patent/US7359508B2/en not_active Expired - Fee Related
- 2004-07-08 ES ES04741978T patent/ES2287745T3/es not_active Expired - Lifetime
-
2008
- 2008-02-22 US US12/071,571 patent/US7860242B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP4568886B2 (ja) | 2010-10-27 |
| ATE363166T1 (de) | 2007-06-15 |
| US7860242B2 (en) | 2010-12-28 |
| EP1652336A1 (fr) | 2006-05-03 |
| FR2858496A1 (fr) | 2005-02-04 |
| CN101133593B (zh) | 2012-03-21 |
| DE602004006628D1 (de) | 2007-07-05 |
| US20080144814A1 (en) | 2008-06-19 |
| WO2005022820A1 (fr) | 2005-03-10 |
| JP2007500863A (ja) | 2007-01-18 |
| DE602004006628T2 (de) | 2008-01-31 |
| US20060210066A1 (en) | 2006-09-21 |
| US7359508B2 (en) | 2008-04-15 |
| EP1652336B1 (fr) | 2007-05-23 |
| FR2858496B1 (fr) | 2005-09-30 |
| CN101133593A (zh) | 2008-02-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2287745T3 (es) | Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente. | |
| ES2236903T3 (es) | Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos. | |
| ES2359205T3 (es) | Procedimiento y aparato para el almacenamiento y uso seguros de claves criptográficas. | |
| Boneh et al. | On the importance of eliminating errors in cryptographic computations | |
| US8402287B2 (en) | Protection against side channel attacks | |
| Otto | Fault attacks and countermeasures. | |
| Heinz et al. | Combined fault and DPA protection for lattice-based cryptography | |
| US8065531B2 (en) | Decryption method | |
| US20060271793A1 (en) | Reliable generation of a device-specific value | |
| EP2211265B1 (en) | Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method | |
| CN105991292A (zh) | 用于操作安全椭圆曲线密码系统的系统和方法 | |
| US8913741B2 (en) | Method for performing a cryptographic task in an electronic hardware component | |
| US8639944B2 (en) | Zero divisors protecting exponentiation | |
| ES2729874T3 (es) | Sistema y método de exponenciación del teorema chino del resto de uso único para algoritmos criptográficos | |
| ES2379100T3 (es) | Procedimiento para la determinación segura de datos | |
| Blömer et al. | Wagner’s Attack on a secure CRT-RSA Algorithm Reconsidered | |
| US20040184604A1 (en) | Secure method for performing a modular exponentiation operation | |
| Heyse | Post quantum cryptography: implementing alternative public key schemes on embedded devices | |
| Karp et al. | Security-oriented code-based architectures for mitigating fault attacks | |
| ES2385070T3 (es) | Procedimiento de preservación de la seguridad de una ramificación condicional, soporte de informaciones, programa y sistema asegurado para ese procedimiento | |
| JP3952304B2 (ja) | 電子コンポネントにおいて公開指数を求める暗号アルゴリズムを実行する方法 | |
| ES2822298T3 (es) | Procedimiento de puesta en práctica segura de un módulo funcional en un componente electrónico, y componente electrónico correspondiente | |
| ES2371333T3 (es) | Dispositivo y procedimiento de ejecución de un algoritmo criptográfico. | |
| Yang et al. | Memory attestation of wireless sensor nodes through trusted remote agents | |
| Rivain | On the physical security of cryptographic implementations |