ES2371333T3 - Dispositivo y procedimiento de ejecución de un algoritmo criptográfico. - Google Patents
Dispositivo y procedimiento de ejecución de un algoritmo criptográfico. Download PDFInfo
- Publication number
- ES2371333T3 ES2371333T3 ES02710985T ES02710985T ES2371333T3 ES 2371333 T3 ES2371333 T3 ES 2371333T3 ES 02710985 T ES02710985 T ES 02710985T ES 02710985 T ES02710985 T ES 02710985T ES 2371333 T3 ES2371333 T3 ES 2371333T3
- Authority
- ES
- Spain
- Prior art keywords
- value
- mod
- equal
- error
- calculation
- 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
-
- 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/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
-
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Circuits Of Receivers In General (AREA)
Abstract
Dispositivo (1) de ejecución de un algoritmo criptográfico que incluye medios de cálculo (2), medios de memorización de datos (4, 6) y medios de comunicación de datos (8) y un valor determinado r caracterizado porque los medios de memorización (4, 6) contienen: valores determinados p, q, dp y, dq, una función predeterminada f(x) de un valor x, donde f(x) es igual a x^d, d es una clave privada, así como un algoritmo que utiliza el teorema de los restos chino (TRC) que permiten a los medios de cálculo (2) establecer: - un valor zp igual a x^dp, mód p*r y un valor zq es igual a x^dq, mód q*r; - un valor b p igual a z p^d q mód r y un valor b q es igual a z q^d p mód r; - se constata un error en el cálculo si el valor de bp mód r no es igual al valor de bq mód r; - un valor es igual a TRC [Zp mód p, zq mód q] si no se ha constatado ningún error.
Description
Dispositivo y procedimiento de ejecución de un
algoritmo criptográfico.
La invención concierne el ámbito de los
algoritmos criptográficos destinados, en particular, a los
dispositivos electrónicos comunicantes, un ejemplo de ello no
restrictivo es una tarjeta inteligente.
Los algoritmos criptográficos se ejecutan
corrientemente en estos dispositivos para asegurar el cifrado de los
datos emitidos y/o el descifrado de datos recibidos, cuando estos
deben permanecer confidenciales. A tal efecto, se prevé un
microprocesador apto a ejecutar el algoritmo criptográfico, asociado
a una memoria fija (ROM) para registrar el programa que contiene el
algoritmo y una memoria regrabable (RAM) para constituir registros y
contener los datos evolutivos. Las informaciones codificadas del
dispositivo transitan entre el microprocesador y una interfaz de
comunicación, formando un puerto hacia el exterior.
Los defraudadores tienen la posibilidad de
interferir con el algoritmo criptográfico actuando a nivel de la
interfaz de comunicación, o en el microprocesador y sus memorias,
con el fin de romper el código para que los datos cifrados resulten
inteligibles o modificar estos datos en beneficio suyo.
Para minimizar este tipo de riesgo de ataque, ya
se han previsto varias estrategias de protección, tanto a nivel de
la realización material de los dispositivos como en los procesos de
cálculo.
En el ámbito de la tarjeta inteligente, entre
otras cosas, existen varios ataques posibles, uno de elfos llamado
"ataque por falta". En este tipo de ataque, el atacante induce
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.
Este tipo de ataque puede preverse,
principalmente, con el algoritmo RSA (Rivert, Shamir, Adleman), que
es el más utilizado en criptografía en este campo de aplicación. La
seguridad se basa en la factorización. Se establece un número N que
es el producto de dos grandes números primos p y q, sea N = p.q.
Para firmar un número x que expresa un mensaje, se utiliza una
clave secreta d con objeto de calcular el valor y = x^{d} módulo
N. Recordamos de manera general que un valor v expresado módulo N
(abreviatura "v mód N") es igual al resto inferior de N después
de una sustracción de un múltiple entero de N; por ejemplo 11
módulo 3 = 2, sea el resto inferior a 3 después de la sustracción
del múltiplo 3 veces 3.
Para comprobar que la firma del código es
correcta, se utiliza una clave correspondiente, dicha clave pública,
es un exponente e. Se comprueba simplemente que x = y^{e} mód N
es igual al valor constitutivo del mensaje.
La figura 1 ilustra el proceso de cálculo de la
firma y = x^{d} módulo N utilizando el teorema de los restos
chinos (TRC). El teorema de los restos chinos es conocido
igualmente por su denominación anglosajona "Chinese remainder
theorem" (CRT).
Para ahorrar tiempo, ejecución cuatro veces más
rápida del algoritmo, no se efectúan los cálculos directamente en el
módulo N, sino que se efectúan en primer lugar los cálculos módulo p
y módulo q.
Se designan los valores de x módulo p y x módulo
q respectivamente por x_{p} y x_{q}. Por otra parte, se designa
por d_{p} el valor d módulo (p-1), y por d_{g}
el valor d módulo (q-1).
Se efectúa el cálculo módulo p por cálculo de
y_{p} = x_{p} exponente dp módulo p. Del mismo modo, se calcula
módulo el valor y_{q} = x_{q} exponente d_{q} módulo q.
Después de haber obtenido los valores y_{p} e
y_{q} respectivamente módulo p y módulo q, volvemos a combinarlos
con el teorema de los restos chinos para obtener el valor citado
anteriormente.
Supongamos ahora que un atacante, que emplee
cualquier tipo de método, induce un error durante el cálculo de
y_{p}, pero no durante el cálculo de y_{q}. Esto implicaría que
el valor de y_{p} fuese incorrecto. El hecho de que se trate de un
valor incorrecto está indicado por un acento circunflejo encima del
"y" en la figura 1. En cambio, el valor de y_{q} será
correcto. Por esta razón, cuando el TRC vuelva a combinar los
valores ^y_{p} e y_{q}, la firma que de ello resulte será
incorrecta.
Si el atacante conoce el valor de la clave
pública de verificación e, puede calcular el valor ^y^{e} - x
módulo N. Por otra parte, tenemos la firma correcta, y, igual a
x^{d} módulo N. A partir de la relación preestablecida x =
y^{e}, el atacante sólo tiene que calcular ^y^{e} - x módulo N.
Extraerá el mayor común divisor (pgcd) con N, sea: pgdc (^y^{e} -
x mód. N,N) = q. Entonces obtiene el factor secreto q. Como
consecuencia, el código RSA está efectivamente roto.
Dicho de otro modo, si alguien es capaz de
inducir cualquier tipo de error durante un cálculo módulo p cuando
el cálculo módulo q es correcto, puede romper completamente el
código RSA.
Una primera contramedida para evitar este tipo
de situación consiste en recalcular el conjunto del algoritmo. Se
comparan los valores obtenidos de los sucesivos cálculos. Si son
idénticos, se supone que no ha habido ningún error inducido. Un
problema con este modo de proceder radica en que no detecta una
falta permanente. Por ejemplo, no se podrá descubrir un ataque en el
que el error inducido consiste en forzar sistemáticamente un bit de
un estado lógico determinado.
Otro método que pretende esquivar este ataque se
basa en una comprobación. Se obtiene una firma que la calcula el
TRC. A continuación, se comprueba que la firma sea correcta y que la
clave pública sea la adecuada. Este enfoque es muy fiable, pero el
algoritmo de firma no conoce siempre la clave de comprobación e, lo
que impide poder emplearla en algunas aplicaciones.
Otro inconveniente de este método es que si e es
grande, implica dos exponenciaciones. La firma será entonces dos
veces más lenta.
Un tercer método descrito en el documento
US-A-6 144 740, consiste en
modificar el valor x multiplicándolo por un aleatorio y asegurándose
más tarde en el cálculo de x^d que el valor es divisible por dicho
aleatorio. Un inconveniente primordial de este método radica en la
necesidad de emplear operaciones de inversión modular y/o división
conocidas por ser costosas en tiempo de ejecución.
Según otra contramedida al ataque por falta
descrita por Shamir en el documento de la patente WO 98/52319, se
emplea el siguiente algoritmo:
- 1.
- Elegir un número aleatorio r de poco valor,
- 2.
- Calcular:
- \quad
- y_{rp} = x^{d} mód rp, y
- \quad
- y_{rq} = x^{d} mód rq,
- 3.
- Si y_{rp} \neq y_{rq} (mód r), entonces hay un error, (quizá sea inducido por un ataque y, por consiguiente se interrumpe el algoritmo, en caso contrario;
- 4.
- Emitir a la salida: y = TRC (y_{rp} mód p, q_{rq} mód q).
\vskip1.000000\baselineskip
De este modo, para un número aleatorio r, en vez
de calcular módulo p, se calcula módulo r.p. y módulo r.q.
Seguidamente, se comprueba que estos dos valores sean iguales al
módulo r. Si estos dos valores son diferentes, es seguro que existe
un error. En cambio, si son iguales, podemos suponer que no se ha
producido ningún error, con una probabilidad de 1/r de equivocarse
en esta suposición.
Un inconveniente de este método es que se
calcula y_{rp} = x^{d} mód rp, y no x^{dp} mód rp. Ahora bien,
el valor d al tamaño del módulo, es generalmente un número de 1024
bits, mientras que dp es un número del tamaño de la mitad del
módulo, lo que representa 512 bits en el ejemplo.
Esto implica que en el esquema normal, sin
detección de falta, se efectúa una primera exponenciación con un
expositor y un módulo de 512 bits, y una segunda exponenciación con
un expositor y un módulo de 512 bits. En cambio, con el método de
contramedida según el documento patente 5.633.929, no se utilizará
dp, sino d. Esto implica que el expositor tendrá un tamaño de 1024
bits por cada lado. Por consiguiente, se pierde en eficacia.
Otro inconveniente del método Shamir es que sólo
funciona para el modo de cálculo basado en el TRC. Ahora bien,
también es posible calcular directamente x^{d} módulo n, es decir,
sin recurrir al teorema de los restos chinos.
En efecto, existen dos maneras de almacenar la
clave secreta. Sea, se guarda el valor d, sea se guardan los valores
d_{p}, d_{q}, p y q. Cuando se calcula directamente, se utiliza
el modo estándar; cuando se calcula módulo p y módulo q, se utiliza
el modo TRC.
Habida cuenta de lo que precede, la invención
propone contramedidas, en particular, a los ataques por defecto, que
autorizan exponenciaciones con un expositor del tamaño del módulo y
que puedan adaptarse al modo estándar o al modo TRC.
Más concretamente, la invención concierne, según
un primer objeto, un dispositivo de ejecución de un algoritmo
criptográfico que incluye medios de cálculo, medios de memorización
de datos y medios de comunicación de datos. Según la invención, los
medios de memorización contienen valores determinados r, p, q,
d_{p} y, d_{q}, una función predeterminada f(x) de un
valor x, donde f(x) es igual a x^d, d es una clave privada,
así como un algoritmo del tipo de ejecución en modo del teorema de
los restos chinos que permiten a los medios de cálculo
establecer:
- -
- un valor z_{p} es igual a x^d_{p}, mód p*r y un valor Z_{q} es igual a x^d_{q}, mód q*r;
- -
- un valor b_{p}=z_{p}^d_{q} mód r y un valor b_{q} es igual a Z_{q}^d_{p} mód r;
- -
- se constata un error en el cálculo si el valor de b_{p} mód r no es igual al valor de b_{q} mód r;
- -
- un valor y es igual a TRC (z_{p} mód p, z_{q} mód q) si no se ha constatado ningún error.
\vskip1.000000\baselineskip
La invención prevé que un entero d'_{p} igual
a d_{p}+r1* (p-1) pueda utilizarse en vez de un
entero d_{p}, siendo r1 un entero aleatorio.
Como variante, un entero x+t*N puede utilizarse
en lugar de x, siendo t un entero aleatorio y N igual a p*q.
Las contramedidas conformes a la invención
permiten proteger de este modo la ejecución del algoritmo
criptográfico contra los ataques por faltas en las
exponenciaciones.
Para proteger, en particular, el algoritmo
criptográfico contra un eventual ataque por falta en la etapa del
cálculo de y por teorema del resto chino la invención prevé por otro
lado que:
- -
- el valor de y pueda ser igual a TRC(z_{p} mód p, z_{q} mód q);
- -
- puede establecerse una constatación de un error de cálculo si el valor de (y-z_{p})*(y-z_{q}) es diferente de 0 módulo N, es igual a p*q;
- -
- el valor y sólo puede enviarse si no se ha constatado ningún error.
\vskip1.000000\baselineskip
Según un modo de realización particular los
medios de cálculo pueden establecer:
- -
- un valor \alpha = (y-z_{p})mód p*r y un valor \beta = (y-z_{p})mód q*r;
- -
- un valor \tau que es el doble del tamaño del entero r expresado en número de bits;
- -
- un valor t = \alpha*\beta/N mód 2^\tau;
- -
- cuando se constata un error de cálculo si = \alpha*\beta - t*N es diferente de 0.
\vskip1.000000\baselineskip
Según este modo de realización, puede preverse
que el valor y sólo se envíe si no se ha constatado ningún
error.
Según un modo de realización preferido, puede
preverse que el valor y sólo se envíe cuando no se haya constatado
ningún error.
Según un modo de realización preferido, el
algoritmo es del tipo RSA (Rivert, Shamir, Adlemen): No obstante, V
pueden preverse otros tipos de algoritmos.
Por otra parte, la invención prevé que el
dispositivo pueda interrumpir ventajosamente la comunicación de
datos en caso de que se constate un error establecido durante dichos
cálculos.
El dispositivo en cuestión puede ser una tarjeta
inteligente.
Según un segundo objeto, la invención concierne
un procedimiento de ejecución de un algoritmo criptográfico que
incluye, a partir de valores determinados r, p, q, d_{p} y
d_{q}, de una función predeterminada f(x) de un valor x tal
que f(x) es igual a x^d, d es una clave privada, y un
algoritmo del tipo de ejecución en modo del teorema de los restos
chinos (TRC), las siguientes etapas:
- -
- Calcular un valor z_{p} igual a x^d_{p} mód p*r y un valor de z_{q} igual a x^d_{q} mód q*r;
- -
- Calcular un valor b_{p} igual a z_{p}^d_{q} mód r y un valor de b_{q} igual a z_{q}^d_{p} mód r;
- -
- Determinar un error constatado en el cálculo si el valor de b_{p} mód r no es igual al valor de b_{q} mód r;
- -
- Calcular un valor y igual a TRC (z_{p} mód p, z_{q} mód q) si no se ha constatado ningún error.
\vskip1.000000\baselineskip
Las características opcionales presentadas más
arriba en el marco del dispositivo se aplican mutatis mutandis a
este procedimiento.
La invención y las ventajas que de ello se
derivan aparecerán más claramente cuando se lea más adelante la
descripción de los modos de realización preferidos, que se dan
puramente como ejemplos no limitativos, en referencia a los dibujos
anexados en los cuales:
- la figura 1, ya analizada, es una
representación simbólica del método de cálculo criptográfico de la
firma y = x^{d} mód N utilizando el teorema de los restos chinos
(TRC);
- la figura 2 es un esquema bloque que
representa de manera sinóptica los elementos de una tarjeta
inteligente en condiciones de aplicar la invención; y
- la figura 3 es una representación simbólica
del enfoque general para la detección de error en un algoritmo
criptográfico conforme a la invención.
\vskip1.000000\baselineskip
Los modos de realización se describen en el
marco de tarjetas inteligentes, pero pueden, por supuesto, aplicarse
a todos los dispositivos que posean medios de cálculo
criptográficos.
Así como lo muestra la figura 1, la tarjeta
inteligente 1 incluye un microprocesador 2 acoplado a una memoria
fija (ROM)4 y a una memoria viva (RAM)6, todo ello
forma un conjunto que permite, entre otras cosas, la ejecución de
algoritmos criptográficos. De manera más precisa, el microprocesador
2 incluye los medios de cálculo aritméticos necesarios para el
algoritmo, así como circuitos de transferencia de datos con las
memorias 4 y 6. La memoria fija 4 contiene el programa ejecutorio
del algoritmo criptográfico en forma de código fuente, mientras que
la memoria viva 6 incluye registros que pueden actualizarse para
almacenar resultados de cálculo.
La tarjeta inteligente 1 incluye también una
interfaz de comunicación 8 conectada al microprocesador 2 para
permitir intercambiar datos con el entorno exterior. La interfaz de
comunicación 8 puede ser de tipo "de contactos", en ese caso
está formada por un conjunto de contactos del ruptor destinados a
conectarse a un contactor de un dispositivo externo, como por
ejemplo un lector de tarjetas, y/o del tipo "sin contacto". En
este último caso, la interfaz de comunicación 8 incluye una antena y
circuitos de comunicación por vía hertziana que permiten una
transferencia de datos por conexión inalámbrica. Esta conexión
también puede permitir una transferencia de energía de alimentación
de los circuitos de la tarjeta 1.
Ya se conoce el conjunto de los medios
materiales constitutivos de la tarjeta, los cuales se describirán de
manera detallada por deseo de concisión.
En el ejemplo, el algoritmo criptográfico es del
tipo RSA (de Rivert, Shamir, Adleman), cuyas características fueron
descritas en la parte introductoria.
En lo que sigue, prestaremos una atención
particular a la detección de errores en el cálculo algorítmico y
contramedidas conformes a la presente invención. El error en
cuestión puede provocarlo deliberadamente un atacante que pretende
romper el código criptográfico utilizado por la tarjeta inteligente,
tal y como se explica en la parte introductoria. De este modo, para
hacer frente a esta eventualidad, las contramedidas permiten
detectar este tipo de errores y reaccionar en consecuencia.
El principio de detección de error está
representado esquemáticamente en la figura 3. De manera general, la
ejecución del algoritmo criptográfico implica un cálculo de una
función f(x) módulo N, cualquiera que sea la función
f(x). Así pues, en el caso de un algoritmo RSA, se toma un
valor de N que es el producto de dos grandes números primos p y
q.
Tal y como lo muestra la figura 3, se toma un
número aleatorio r y se calcula por una parte z = f(x) módulo
rN, e y_{r} = f(x) módulo r. Seguidamente, se comprueba
que z mód r = y_{r}. Si no fuera el caso, estamos seguros de que
existe un error; en caso contrario, suponemos, con una probabilidad
de equivocarnos de 1/r, que no hay ningún error.
A continuación, para encontrar el valor de y =
f(x) módulo N, se calcula simplemente y = z mód N.
En la puesta en práctica, r es un número de 32
bits.
Pasamos a describir ahora como aplicar una
contramedida conforme a la invención cuando el algoritmo se ejecuta
en modo estándar. En modo estándar, se calcula de manera
"brutal" el valor de x^{d} mód N, donde d es un número que
constituye una clave secreta del código.
Generalmente, se procede del siguiente modo. Se
calcula el valor de una parte de f(x) módulo rN, y por otra
parte de f(x) módulo r; se comprueba que estos dos valores
calculados sean iguales. Si fuera el caso, se supone que no hay
ningún error.
Cuando se aplica esto al algoritmo RSA, se
procede del siguiente modo. Ya no se toma un número aleatorio, sino
un número determinado, que en este caso es el número 2^{16} + 1.
Este número tiene la propiedad interesante de ser un número primo.
Se calcula simplemente el valor de z = x^{d} módulo (2^{16} +
1).N. Seguidamente, se calcula el valor x^{d} mód (2^{16} +
1).
En el modo de realización, no se calcula el
valor de x^{d}, sino que se calcula más bien el valor de x^{d \
mód \ \Phi} mód (2^{16} + 1), donde \Phi es la función
indicadora de Euler del módulo. De este modo, podemos reducir d
módulo \Phi (2^{16} + 1).
Podemos observar que cuando un número toma como
valor un número primo P, tenemos la condición: \Phi (P)=
P-1. Aplicada al ejemplo, esta condición da: \Phi
(2^{16} + 1) = 2^{16}.
De este modo, ya no tenemos que calcular x^{d}
módulo (2^{16} + 1), sino más bien x^{d \ mód \ 2 ^{\wedge}16}
módulo (2^{16} + 1). Este valor es un número de 16 bits solamente.
Por consiguiente, la operación es muy rápida.
Otra ventaja de esta manera de proceder es que d
módulo 2^{16} es fácil de calcular, al tratarse de los 16 últimos
bits de la clave secreta d.
En el modo estándar, ya no se cogerá un número
aleatorio, sino un número primo, o un número primo multiplicado por
un número aleatorio. La comprobación se hará siempre en el módulo
con el número primo que hayamos elegido. Si se procede de este modo,
se puede reducir el tiempo de cálculo. En efecto la función \Phi
indicadora de Euler sólo puede evaluarse fácilmente para los número
primos.
En cambio, y ahí es donde radica la fuerza del
algoritmo RSA- para romper el código RSA módulo N (=p.q), debemos
calcular \Phi(N). El valor de esta función es igual a
(p-1).(q-1). Si no se conoce la
factorización de N, no se puede calcular \Phi(N).
De este modo, la contramedida conforme al
ejemplo para el modo estándar es igual que efectuar el algoritmo
siguiente:
- 1.
- Calcular z = x^{d} mód (2^{16} + 1) N (sin número aleatorio utilizado, sino una función \Phi indicadora de Euler);
- 2.
- Si x^{d \ mód \ 2^{\wedge}16} \neq z (mód (2^{16} + 1) {d mód 2^{16} corresponde a los 16 bits de peso bajo de d}, entonces emitir a la salida ERROR y parar el algoritmo, en caso contrario;
- 3.
- Emitir a la salida y = z mód. N.
\vskip1.000000\baselineskip
De este modo comprendemos que cabe la
posibilidad de detectar una falta cuyo origen eventual sea un
ataque, y por tanto, tomar las medidas preventivas. Dichas medidas
consisten, principalmente en frenar el proceso algorítmico e
interrumpir todo tipo de intercambio de datos con la interfaz de
comunicación 8.
Ahora, pasamos a describir como aplicar una
contramedida conforme a la invención cuando el algoritmo se ejecuta
en modo de cálculo basado en el teorema de los restos chinos (TRC),
designado a continuación modo TRC.
En modo TRC, se realizan simplemente los
cálculos módulo p y módulo q.
Se pueden efectuar cálculos sobre la base de un
módulo de un número primo multiplicado por el módulo (N), donde se
puede coger un número primo multiplicado por un número aleatorio.
Siempre comprobaremos sobre la base de un módulo de un número primo.
De este modo, se produce un cálculo con un módulo de un primo
-1.
Como ejemplo, tomaremos en consideración, en
modo TRC, el cálculo módulo p. Se elige un número aleatorio k, por
ejemplo de 16 bits. Lo utilizaremos para responder a otros ataques.
De este modo, tomaremos kp, un número de 32 bits, para evitar otros
ataques, como por ejemplo ataques en corriente u otros. Recordamos
que un ataque en corriente se base en el análisis de la corriente
consumida por el procesador en las diversas etapas del cálculo, con
objeto de determinar por ejemplo, las características de un cálculo
de exponenciación en curso.
Se establece la siguiente relación: 2^{16} + 1
multiplicado por un valor r_{p}, es igual a este valor r_{p} que
se concatena 5 consigo mismo (aquí r_{p} es un valor de 16 bits).
Esto vale para cualquier número primo. Se calcula un valor K_{p}
(para que el exponente sea aleatorio).
Se calcula el valor z_{p} = x^{Kp} módulo
R_{p}.p.
Seguidamente, se comprueba que los cálculos
módulo 2^{16} +1 sean iguales. Si fuera el caso, podemos suponer,
con un riesgo de equivocarnos de 1/2^{16}, que no habrá
errores.
Lo que precede refleja el principio general.
Para el algoritmo criptográfico RSA, no tomaremos un número
aleatorio, sino un número primo. De este modo, podemos reducir el
exponente módulo a un número primo -1. También podemos coger
cualquier número multiplicado por un número primo.
En resumen, la contramedida conforme al ejemplo
para el modo TRC equivale a lo mismo que efectuar el siguiente
algoritmo:
- 1.
-
\hskip0.48cm
Elegir de manera aleatoria r_{p} en (0,2^{16}) y kp\euro
(0,2^{32}) (para precaverse contra los ataques en corriente);
- 2.
- Sea Rp = (2^{16} + 1)r_{p} = r_{p} || r_{p} y K_{p} = dp + k_{p} (p-1);
- 3.
- Calcular z_{p} = x^{Kp} mód R_{p}p;
- 4.
- Si x^{kp \ mód \ 2 \ potencia \ 16} \neq Z_{p} (mód. (2^{16} + 1)) entonces emitir a la salida ERROR y cesar el algoritmo, si no;
- 5.
- Repetir las operaciones 1 a 4 módulo q;
- 6.
- Emitir a la salida y = TRC (z_{p} mód. p, z_{q} mód q).
(El símbolo || indica una concatenación, de
este modo a||b = la concatenación de a y de b. Por ejemplo, para
a = 1011 y b = 1101, entonces a||b = 10111101).
\vskip1.000000\baselineskip
De lo que acabamos de explicar cabe destacar que
estas operaciones se realizan para un R que es un número primo, es
decir un número primo multiplicado por un número cualesquiera. La
comprobación se hace siempre con el módulo del número primo, de
manera más general, una potencia prima.
La invención no solamente es válida para los
algoritmos criptográficos RSA, presentados aquí únicamente a título
de ilustración, sino para todos los algoritmos criptográficos con
los que se trabaja en aritmética modular, puesto que esta técnica
permite comprobar que cualquier función modular es o no
correcta.
Claims (13)
1. Dispositivo (1) de ejecución de un algoritmo
criptográfico que incluye medios de cálculo (2), medios de
memorización de datos (4, 6) y medios de comunicación de datos (8) y
un valor determinado r caracterizado porque los medios de
memorización (4, 6) contienen: valores determinados p, q, d_{p} y,
d_{q}, una función predeterminada f(x) de un valor x, donde
f(x) es igual a x^d, d es una clave privada, así como un
algoritmo que utiliza el teorema de los restos chino (TRC) que
permiten a los medios de cálculo (2) establecer:
- -
- un valor z_{p} igual a x^d_{p}, mód p*r y un valor z_{q} es igual a x^d_{q}, mód q*r;
- -
- un valor b_{p} igual a z_{p}^d_{q} mód r y un valor b_{q} es igual a z_{q}^d_{p} mód r;
- -
- se constata un error en el cálculo si el valor de b_{p} mód r no es igual al valor de bq mód r;
- -
- un valor es igual a TRC [Z_{p} mód p, z_{q} mód q] si no se ha constatado ningún error.
\vskip1.000000\baselineskip
2. Dispositivo de ejecución de un algoritmo
criptográfico según la reivindicación 1, caracterizado porque
un entero d'_{p} igual a d_{p}+r1* [p-1] pueda
utilizarse en vez de un entero d_{p}, r1 es un entero
aleatorio.
3. Dispositivo de ejecución de un algoritmo
criptográfico según la reivindicación 1, caracterizado porque
un entero x+t*N puede utilizarse en lugar de x, siendo t un entero
aleatorio y N igual a p*q.
4. Dispositivo de ejecución de un algoritmo
criptográfico según cualquiera de las reivindicaciones 1 a 3,
caracterizado porque:
- -
- el valor de y pueda ser igual a TRC[z_{p} mod p, z_{q} mod q];
- -
- puede establecerse una constatación de un error de cálculo si el valor de [y-z_{p}]* [y-z_{q}] es diferente de 0 módulo N, siendo igual a p*q;
- -
- el valor y sólo puede enviarse si no se ha constatado ningún error.
\vskip1.000000\baselineskip
5. Dispositivo de ejecución de un algoritmo
criptográfico según la reivindicación 4, caracterizado porque
los medios de cálculo establecen:
- -
- un valor \alpha = [y-z_{p}] mod p*r y un valor \beta = [y-z_{q}] mod q*r;
- -
- un valor \tau que es el doble del tamaño del entero r expresado en número de bits;
- -
- un valor t = \alpha*\beta/N mód 2^\tau;
- -
- cuando se constata un error de cálculo si = \alpha*\beta-t*N es diferente de 0
y porque el valor y sólo se envía si no se ha
constatado ningún error.
\vskip1.000000\baselineskip
6. Dispositivo según cualquiera de las
reivindicaciones 1 a 5, caracterizado porque el algoritmo es
del tipo RSA (Rivert, Shamir, Adleman).
7. Dispositivo según cualquiera de las
reivindicaciones 1 a 6, caracterizado porque interrumpe la
comunicación de datos en caso de que se constate un error
establecido durante dichos cálculos.
8. Dispositivo según cualquiera de las
reivindicaciones 1 a 7, caracterizador porque se trata de una
tarjeta inteligente (1).
9. Procedimiento de ejecución de un algoritmo
criptográfico caracterizado porque comprende, a partir de
valores determinados r, p, q, d_{p} y d_{q}, de una función
predeterminada f(x) de un valor x tal que f(x) es
igual a x^d, d es una clave privada, y un algoritmo que utiliza el
teorema de los restos chinos (TRC), las siguientes etapas:
- -
- Calcular un valor z_{p} igual a x^d_{p} mód p*r y un valor de z_{q} igual a x^d_{q} mód q*r;
- -
- Calcular un valor b_{p} igual a z_{p}^d_{q} mód r y un valor de b_{q} igual a z_{q}^d_{p} mód r;
- -
- Determinar un error constatado en el cálculo si el valor de b_{p} mód r no es igual al valor de b_{q} mód r;
- -
- Calcular un valor y igual a TRC (z_{p} mód p, z_{q} mód q) si no se ha constatado ningún error.
\vskip1.000000\baselineskip
10. Procedimiento de ejecución de un algoritmo
criptográfico según la reivindicación 9, caracterizador
porque el cálculo de un entero d'p igual a d_{p}+r1*
[p-1] pueda utilizarse en vez de un entero d_{p},
r1 es un entero aleatorio.
11. Procedimiento de ejecución de un algoritmo
criptográfico según la reivindicación 9, caracterizado porque
el cálculo de un entero x+t*N se utiliza en vez de x, siendo t un
entero aleatorio y N igual a p*q.
12. Procedimiento de ejecución de un algoritmo
criptográfico según cualquiera de las reivindicaciones 9 a 11,
caracterizador porque incluye además las siguientes
etapas:
- -
- calcular un valor y igual a TRC[z_{p} mod p, z_{q} mod q];
- -
- constatar un error de cálculo si el valor de [y-z_{p}]* [y-z_{q}] es diferente de 0 módulo N, siendo N igual a p*q;
- -
- reenviar el valor y si no se ha constatado ningún error.
\vskip1.000000\baselineskip
13. Procedimiento de ejecución de un algoritmo
criptográfico según la reivindicación 9, caracterizado porque
incluye además las siguientes etapas:
- -
- calcular un valor \alpha igual a [y-z_{p}] mod p*r y un valor \beta igual a [y-z_{q}] mod q*r;
- -
- determinar un valor \tau que es el doble del tamaño del entero r expresado en número de bits;
- -
- calcular un valor \tau igual \alpha*\beta/N mód 2^\tau; siendo N igual a p*q
- -
- determinar un error de cálculo si \alpha*\beta-t*N es diferente de 0.
- -
- reenviar el valor y si no se ha constatado ningún error.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0100688 | 2001-01-18 | ||
| FR0100688A FR2819663B1 (fr) | 2001-01-18 | 2001-01-18 | Dispositif et procede d'execution d'un algorithme cryptographique |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2371333T3 true ES2371333T3 (es) | 2011-12-29 |
Family
ID=8858987
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES02710985T Expired - Lifetime ES2371333T3 (es) | 2001-01-18 | 2002-01-11 | Dispositivo y procedimiento de ejecución de un algoritmo criptográfico. |
Country Status (5)
| Country | Link |
|---|---|
| EP (1) | EP1352494B1 (es) |
| AT (1) | ATE529968T1 (es) |
| ES (1) | ES2371333T3 (es) |
| FR (1) | FR2819663B1 (es) |
| WO (1) | WO2002058321A1 (es) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102004001659B4 (de) * | 2004-01-12 | 2007-10-31 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Konvertieren einer ersten Nachricht in eine zweite Nachricht |
| FR2867635B1 (fr) * | 2004-03-11 | 2006-09-22 | Oberthur Card Syst Sa | Procede de traitement de donnees securise, base notamment sur un algorithme cryptographique |
| WO2006095281A1 (en) * | 2005-03-08 | 2006-09-14 | Nxp B.V. | Arrangement for and method of protecting a data processing device against e[lectro] m[agnetic] radiation attacks |
| US8817974B2 (en) | 2011-05-11 | 2014-08-26 | Nxp B.V. | Finite field cryptographic arithmetic resistant to fault attacks |
| EP3698262B1 (en) * | 2017-10-18 | 2023-08-02 | Cryptography Research, Inc. | Protecting modular inversion operation from external monitoring attacks |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| 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 |
-
2001
- 2001-01-18 FR FR0100688A patent/FR2819663B1/fr not_active Expired - Fee Related
-
2002
- 2002-01-11 AT AT02710985T patent/ATE529968T1/de not_active IP Right Cessation
- 2002-01-11 ES ES02710985T patent/ES2371333T3/es not_active Expired - Lifetime
- 2002-01-11 WO PCT/FR2002/000113 patent/WO2002058321A1/fr not_active Ceased
- 2002-01-11 EP EP02710985A patent/EP1352494B1/fr not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP1352494B1 (fr) | 2011-10-19 |
| ATE529968T1 (de) | 2011-11-15 |
| FR2819663B1 (fr) | 2003-04-11 |
| EP1352494A1 (fr) | 2003-10-15 |
| WO2002058321A1 (fr) | 2002-07-25 |
| FR2819663A1 (fr) | 2002-07-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2236903T3 (es) | Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos. | |
| ES2296670T3 (es) | Soporte de datos portatil con proteccion de acceso mediante division de los codigos. | |
| ES2665987T3 (es) | Dispositivo y procedimiento para la decodificación de datos | |
| ES2286910T3 (es) | Procedimiento criptografico de claves publica y privada. | |
| EP2523098B1 (en) | Finite field crytographic arithmetic resistant to fault attacks | |
| ES2999676T3 (en) | Data security apparatus with analog component | |
| ES2619613T3 (es) | Método criptográfico para intercambiar mensajes de forma segura y dispositivo y sistema para implementar este método | |
| ES2287745T3 (es) | Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente. | |
| BRPI0811913B1 (pt) | método de geração de uma chave pública para um dispositivo eletrônico, dispositivo eletrônico, método de autenticação de um dispositivo eletrônico e meio legível por computador | |
| US8639944B2 (en) | Zero divisors protecting exponentiation | |
| US20100232601A1 (en) | Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method | |
| EP3503459B1 (en) | Device and method for protecting execution of a cryptographic operation | |
| EP1237322A2 (en) | Fault detection method for cryptographic process | |
| ES2729874T3 (es) | Sistema y método de exponenciación del teorema chino del resto de uso único para algoritmos criptográficos | |
| ES2764127T3 (es) | Procedimiento de transmisión de datos, procedimiento de recepción de datos, dispositivos y programas correspondientes | |
| ES2371333T3 (es) | Dispositivo y procedimiento de ejecución de un algoritmo criptográfico. | |
| El Mrabet | What about vulnerability to a fault attack of the Miller’s algorithm during an identity based protocol? | |
| US20090034717A1 (en) | Method of processing data protected against attacks by generating errors and associated device | |
| ES2379100T3 (es) | Procedimiento para la determinación segura de datos | |
| US20040184604A1 (en) | Secure method for performing a modular exponentiation operation | |
| Blömer et al. | Wagner’s Attack on a secure CRT-RSA Algorithm Reconsidered | |
| US7454625B2 (en) | Method and apparatus for protecting a calculation in a cryptographic algorithm | |
| EP1501236B1 (en) | Error correction for cryptographic keys | |
| CA2752750A1 (en) | System and method for performing exponentiation in a cryptographic system | |
| KR100876442B1 (ko) | 엔티알유 암호화 및 복호화를 위한 안전한 다항식 컨볼루션연산 방법 |