ES2337925T3 - Procedimiento de tratamiento de datos que implica una exponencicion modular y un dispositivo asociado. - Google Patents

Procedimiento de tratamiento de datos que implica una exponencicion modular y un dispositivo asociado. Download PDF

Info

Publication number
ES2337925T3
ES2337925T3 ES06743602T ES06743602T ES2337925T3 ES 2337925 T3 ES2337925 T3 ES 2337925T3 ES 06743602 T ES06743602 T ES 06743602T ES 06743602 T ES06743602 T ES 06743602T ES 2337925 T3 ES2337925 T3 ES 2337925T3
Authority
ES
Spain
Prior art keywords
variable
value
secret key
calculation
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES06743602T
Other languages
English (en)
Inventor
Arnaud Boscher
Christophe Giraud
Robert Naciri
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Technologies SA filed Critical Oberthur Technologies SA
Application granted granted Critical
Publication of ES2337925T3 publication Critical patent/ES2337925T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7271Fault verification, e.g. comparing two values which should be the same, unless a computational fault occurred

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Electrotherapy Devices (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

Procedimiento de tratamiento criptográfico de datos, en el cual un mensaje (m) es sometido a una primera operación con una clave secreta (d), que comprende una etapa de actualización por una segunda operación de una primera variable (B; a0; S''p, S''q), o de una segunda variable (A; a1; Sp, Sq) según que un bit correspondiente de la clave secreta valga 0 o 1, caracterizado por una etapa de prueba (E116, E210; E308) de una relación entre un primer valor (B; a0; S'') resultante de la primera variable y un segundo valor (A; a1; S) resultante del asegunda variable, con el fin de detectar un fallo en el transcurso del cálculo.

Description

Procedimiento de tratamiento de datos que implica una exponenciación modular y un dispositivo asociado.
La invención se refiere a un procedimiento de tratamiento de datos que implica una exponenciación modular, y a un dispositivo asociado.
Los cálculos de exponenciación modular se utilizan frecuentemente en los algoritmos criptográficos y en este marco hacen intervenir en general un secreto, es decir un número almacenado por el dispositivo que pone en práctica el algoritmo criptográfico y que no es accesible desde el exterior.
Las etapas que ponen en práctica la exponenciación modular son particularmente objeto de ataques por parte de personas malintencionadas; puede tratarse de ataques por generación de fallo (especialmente del tipo DFA del inglés "Differential Fault Analysis") o por análisis del consumo de corriente del dispositivo que pone en práctica el algoritmo (del tipo SPA del inglés "Statistical Power Analysis" o DPA del inglés "Differential Power Analysis").
Debido a esto, se ha buscado ya proteger estas etapas, en particular en el caso en que el secreto que hay que proteger corresponde al exponente utilizado en la exponenciación modular.
Así, cuando se utiliza un algoritmo del tipo "square-and-multiply" (término inglés que significa "elevación al cuadrado y multiplicación") en el cual una variable es actualizada por multiplicación para cada bit del exponente que vale 1 (y solamente para estos bits), se ha buscado simetrizar el proceso, por ejemplo efectuando una multiplicación engañosa cuando el bit vale 0, con el fin de hacer frente a los ataques por medición de corriente (indicados a veces por SPA) o por medición de tiempo ("timing attacks").
Partiendo de esta idea general, se han desarrollado diversos algoritmos protegidos contra los ataques de tipo SPA, tales como el descrito en el artículo "The Montgomery Powering Ladder", de B.S. Kaliski Jr., C.Q. Koç y C. Paar, "Cryptographic Hardware and Embedded Systems" - CHES 2002, páginas 291-302.
Por otra parte, se ha buscado proteger los algoritmos criptográficos, y entre estos aquéllos que utilizan una exponenciación modular, de los ataques por fallos, por medio de los cuales un atacante intenta deducir informaciones sobre el funcionamiento interno que pone en práctica el procedimiento criptográfico generando un fallo de funcionamiento en el seno de este procedimiento.
Una solución utilizada habitualmente para luchar contra este último tipo de ataques consiste en doblar los cálculos efectuados con el fin de verificar que las dos iteraciones del mismo cálculo dan el mismo resultado, lo que en general tiende a probar que no se ha producido ningún fallo durante su desarrollo. Esta solución no obstante implica doblar el tiempo de cálculo para cada operación que se desee proteger (sin contar la subsiguiente etapa necesaria de verificación) lo que naturalmente no es deseable.
Con el fin de poner remedio a este inconveniente, la solicitud de patente WO 98/52319 propone, cuando se utiliza el teorema chino de los restos (o CRT del inglés "Chinese Remanider Theorem"), aprovechar la identidad supuesta de dos valores obtenidos cada uno en una de las derivaciones del algoritmo que utiliza este teorema para verificar anticipadamente el desarrollo sin fallos del algoritmo en sus dos derivaciones.
Esta solución, que se aprovecha de una particularidad de las puestas en práctica que utilizan el teorema chino de los restos, no es aplicable sin embargo a otros tipos de implementación. Por otra parte, puede recodarse a este respecto que la utilización del teorema chino de los restos implica el conocimiento de la descomposición en números primos p, q del módulo público n = p.q.
Finalmente, esta solución practica una verificación por medio de datos empleados en una etapa intermedia del proceso y, por tanto, no permite una verificación del funcionamiento sin fallo en cualquier punto del proceso, como podría desearlo el diseñador: por ejemplo, esta técnica no permite proteger el procedimiento en caso de ataques por fallo durante la recombinación del resultado obtenido por cada una de las derivaciones del algoritmo.
Con el fin de mejorar esta situación y, por tanto, de proponer un procedimiento de tratamiento de datos que implique una exponenciación modular protegida a la vez contra los ataques por análisis de corriente y los ataques por fallo, la invención propone un procedimiento de tratamiento (en general criptográfico) de datos, en el cual un mensaje es sometido a una primera operación, por ejemplo, con una clave secreta, que comprende una etapa de actualización por una segunda operación de una primera variable o de una segunda variable según que un bit correspondiente del operando valga 0 o 1, caracterizado por una etapa de prueba de una relación entre un primer valor resultante de la primera va-
riable y un segundo valor resultante de la segunda variable, con el fin de detectar un fallo en el transcurso del cálculo.
En efecto, debido a la complementariedad de las actualizaciones de la primera variable y de la segunda variable, existe una relación que normalmente debe ser verificada entre las dos variables, o entre los valores que resultan de éstas. Por el contrario, la no-verificación de la prueba indica entonces un fallo en el transcurso del cálculo y de esta manera permite detectar un ataque, incluso cuando el ataque va dirigido contra una operación engañosa (caso de ataques "safe error").
El primer valor y el segundo valor son precisamente aquéllos de la primera variable y de la segunda variable; en este caso, la primera variable y la segunda variable pueden ser utilizadas ellas mismas para la prueba, lo que implica especialmente una ganancia de memoria.
La primera operación es, por ejemplo, una exponenciación modular, en cuyo caso la segunda operación es una multiplicación modular y el operando es un exponente.
La etapa de prueba puede comprender entonces la comparación del producto de la primera variable y de la segunda variable con una tercera variable actualizada cualquiera que sea el bit correspondiente del operando.
Una etapa de prueba alternativa comprende la comparación de la primera variable con el producto del elemento y de la segunda variable.
De acuerdo con otra realización posible, la primera operación es una multiplicación a lo largo de una curva elíptica y la segunda operación es una suma a lo largo de la curva elíptica.
La relación puede ser independiente del operando, lo que permite simplificar la etapa de prueba.
La etapa de verificación puede aplicarse especialmente al resultado de la primera operación, es decir después de las etapas de cálculo que implican la segunda operación.
El procedimiento puede comprender igualmente una etapa de verificación de la relación para cada bit del operando. Se detecta, así, un eventual ataque por fallo en cuanto éste haya perturbado un cálculo que pone en práctica la segunda operación, lo que garantiza un buen nivel de seguridad a todo lo largo de las etapas que ponen en práctica la primera operación.
De acuerdo con un modo de puesta en práctica posible, el primer valor resulta de una primera recombinación según el teorema chino de los restos que implica a la primera variable y el segundo valor resulta de una segunda recombinación según el teorema chino de los restos que implica a la segunda variable.
La invención propone igualmente un dispositivo de tratamiento de datos que permite una primera operación sobre un mensaje por medio de una clave secreta, que comprende medios de actualización por una segunda operación de una primera variable o de una segunda variable según que un bit correspondiente del operando valga 0 o 1, caracterizado por medios de prueba de una relación entre la primera y la segunda variable, con el fin de detectar un fallo en el transcurso del cálculo.
Un dispositivo de este tipo está incluido por ejemplo en una tarjeta de microcircuito.
Otras características y ventajas de la invención se pondrán de manifiesto a la luz de la descripción que sigue, hecha refiriéndose a los dibujos anejos, en los cuales:
- la figura 1 representa un procedimiento de tratamiento de datos de acuerdo con un primer modo de realización de la invención;
- la figura 2 representa un procedimiento de tratamiento de datos de acuerdo con un segundo modo de realización de la invención;
- la figura 3 representa un procedimiento de tratamiento de datos de acuerdo con un tercer modo de realización de la invención.
\vskip1.000000\baselineskip
La figura 1 representa un ejemplo de procedimiento que permite un cálculo de exponenciación modular y realizado de acuerdo con las enseñanzas de la invención. El ejemplo dado aquí se describe en forma de un subprograma que recibe valores en la entrada y emite en la salida el resultado del cálculo de exponenciación modular. Sin embargo, se comprende que la invención no se limita a tales subprogramas.
La etapa E100 de la figura 1 corresponde la recepción en la entrada de los valores m, d y n en función de los cuales se desea realizar la exponenciación modular, es decir obtener el número m^{d} mod n.
En lo que sigue, se expresará el número d en forma de su descomposición binaria (d_{k}, ..., d_{1}), donde k es el número de bits que componen el número d, donde cada d_{i} constituye un bit del número correspondiente siendo d_{1} especialmente el bit de menor peso y d_{k} el bit de mayor peso.
Así pues, se tiene d = \sum d_{i}2^{i-1}.
En los algoritmos criptográficos, un cálculo de exponenciación modular de este tipo se utiliza generalmente representando el número m un mensaje, el número d la clave secreta y el número n el módulo público. En este marco, se busca por tanto proteger en particular la determinación del número d (es decir de sus componentes binarios d_{i}) por la observación de la puesta en práctica del procedimiento en una entidad electrónica o la generación de fallos en este procedimiento.
El procedimiento propiamente dicho descrito en la figura 1 se inicia en la etapa E102 de inicialización de los registros utilizados en este subprogrma, a saber, la inicialización con el valor 1 de una variable A, la inicialización con el valor m de una variable B y de una variable S y la inicialización con el valor 1 de una variable i que sirve de índice.
Se pasa entonces a la etapa E104 (que constituye la primera etapa de un bucle como se describe más adelante) en la cual se prueba si el bit d_{i} (es decir el bit de rango i en el número d) vale 1.
En caso afirmativo, se pasa a la etapa E106 en la cual se procede al cálculo del valor A.S mod n, y después se memoriza el resultado de este cálculo en la variable A (con machacamiento en este caso del valor precedentemente almacenado en esta variable).
Dicho de otro modo, se actualiza la variable A por medio de una multiplicación modular por la variable S que, debido a la etapa E110 descrita en lo que sigue, vale m^{2i} durante esta actualización, cualquiera que sea la iteración i correspondiente en el bucle.
Si la prueba en la etapa E104 es negativa (es decir si el bit d_{i} es nulo), se procede en la etapa E108 al cálculo de B.S mod n, y después de actualiza la variable B con el resultado de este cálculo.
Así, según el valor del bit d_{i}, se actualiza la variable A, o la variable B por multiplicación modular por la variable S.
Cualquiera que sea el resultado de la prueba de la etapa E104, el procedimiento continúa (después de la etapa E106 o la etapa E108) en la etapa E110, en la cual se calcula S^{2} mod n, y después se memoriza el resultado de este cálculo en la variable S (con machacamiento del valor precedentemente almacenado en esta variable).
Se incrementa entonces el valor del índice i en la etapa E112, y después se prueba el nuevo valor del índice i en la etapa E114: si i es estrictamente superior a k, se pasa a la etapa E116 descrita más adelante, mientas que en caso negativo (es decir en tanto que i sea inferior o igual a k) la etapa E114 va seguida de la etapa E104 anteriormente descrita (lo que realiza el bucle anteriormente citado).
Cuando i es estrictamente superior a k después del incremento, es decir, cuando han sido tratados el conjunto de los bits del número d, se pasa a la etapa E116 en la cual se prueba la validez de la relación siguiente: S = A.B mod n.
En funcionamiento normal, debido a las actualizaciones complementarias de las variables A y B y de la actualización sistemática de la variable S como se describió anteriormente, se verifica la relación S=A.B mod n.
Por consiguiente, si la prueba de la etapa E116 es positiva, se considera que ha tenido lugar un funcionamiento normal (es decir sin fallo) y se procede a la etapa E120 a la cual se reenvía el valor de salida A, que debido a su actualización por multiplicación modular para los únicos bits de d que valen 1, vale m^{d} mod n.
Por el contrario, si la prueba de la etapa E116 es negativa, se considera que ha tenido lugar un fallo durante el tratamiento descrito y por consiguiente se pasa a la etapa E118 a la cual se envía un valor de error.
En el marco de los algoritmos criptográficos, una detección de fallo de este tipo es considerada como la consecuencia de un ataque por fallo con miras a la determinación de la clave secreta d. Así pues, naturalmente, no se enviará ninguna información susceptible de ayudar al atacante en su búsqueda del conocimiento de la clave secreta. Por el contrario, podrán activarse entonces medidas de protección, tales como, por ejemplo, el bloqueo de la entidad electrónica que pone en práctica el procedimiento (entidad que, por ejemplo, es una tarjeta de microcircuito).
Se puede observar que la prueba utiliza aquí variables que son necesarias para la puesta en práctica del cálculo simetrizado de la exponenciación modular; este modo de realización permite, así, realizar la etapa de prueba sin necesitar la utilización de otras variables.
Se puede observar igualmente que la relación probada no implica a la clave secreta d y además no necesita el conocimiento de la clave pública (es decir el conocimiento del número e tal que d.e = 1 mod (p-1)(q-1).
Por otra parte, la relación hace intervenir a las dos variables A y B modificadas alternativamente en el transcurso del procedimiento de cálculo de exponenciación modular porque la modificación de una u otra de estas dos variables, por ejemplo por medio de un ataque por fallo, se traducirá en la no-verificación de la relación. De esta manera, se lucha eficazmente contra los ataques denominados "safe error" que buscan detectar la eventual ausencia de consecuencia de un fallo para deducir así que la operación correspondiente no es utilizada efectivamente por el cálculo.
En variante, podría procederse a la prueba de la etapa E116 en cada iteración del bucle (es decir por ejemplo insertar una etapa de prueba similar entre las etapas E110 y E112) puesto que en funcionamiento normal en cada iteración se verifica la relación.
En este caso, cualquier detección de un error (por no-verificación de la relación) podrá interpretarse como el resultado de un ataque por fallo; así pues, en este caso es preferible que la no-verificación de la relación ponga fin al cálculo de la exponenciación modular, mientas que su verificación implica la continuación normal de las iteraciones.
Cualquiera que sea la variante puesta en práctica (verificación al final del cálculo como en la figura 1 o en cada iteración como se acaba de describir), se observa, como se ve bien en la figura 1, que el número de etapas realizadas y el tipo de operaciones efectuadas en el transcurso de estas etapas no varía en función de la clave secreta d, lo que permite una protección del procedimiento contra los ataques por medición de corriente de tipo SPA.
La figura 2 representa un segundo modo de realización de la invención.
Como en el primer modo de realización, se ha designado por etapa de entrada E200 la recepción por el subprograma descrito aquí de los valores m, d y n. Como anteriormente, se trata, naturalmente, solamente de un ejemplo posible de puesta en práctica de la invención.
En consideración a estos valores, se procede a una etapa de inicialización E202, en el transcurso de la cual se inicializa una variable a_{0} con 1, una variable a_{1} con m y una variable i con el valor k que, como anteriormente, representa el número de bits de la clave secreta d (k es un dato fijo del sistema criptográfico utilizado). Se diminuye igualmente d en una unidad debido al modo de realización utilizado en este caso para el cálculo de exponenciación modular.
Se entra entonces en un bucle que hablando en propiedad permite el cálculo de la exponenciación modular, para empezar por una etapa E204 de prueba del valor del bit d_{i}. (Las notaciones relativas a la descomposición de la clave d en bits son idénticas a aquéllas presentadas a propósito del primer modo de realización y, por tanto, no serán tomadas aquí nuevamente).
Si el bit de rango i en esta clave d vale 1, se pasa a la etapa E206 en la cual se procede en primer lugar a la multiplicación de la variable a_{0} por la variable a_{1} (es decir al cálculo de a_{0} * a_{1} mod n), cuyo resultado se memoriza en la variable a_{0} (con machacamiento). En el seno de la etapa E206 se procede igualmente al cálculo del valor a_{1}^{2} mod n y a la actualización de la variable a_{1} por el resultado de este cálculo.
Si en la etapa E204 se determina que el bit de rango i de la clave secreta d vale cero (es decir si d_{i} = 0), se procede a la etapa E208 en el transcurso de la cual se calcula el producto de la variable a_{1} por la variable a_{0} (es decir que se calcula a_{1}*a_{0} mod n), se memoriza el valor obtenido en a_{1} con machacamiento, se calcula el cuadrado modular de la variable a_{0} (es decir, el valor a_{0}^{2} mod n) y se almacena el resultado de esta última operación en la variable a_{0} con machacamiento.
Puede observarse que las etapas E206 y E208, puestas en práctica respectivamente cuando el bit de la clave secreta d correspondiente durante la iteración i vale 1 o 0 son simétricas con respecto a las variables a_{0} y a_{1}, siendo actualizadas cada una de estas variables en cada caso por multiplicación por la otra variable.
Cualquiera que sea el resultado de la prueba de la etapa E204, se procede, después de la etapa E206 o la etapa E208, a la etapa E210 en la cual se prueba la relación siguiente: m * a_{0} = a_{1}.
En funcionamiento normal, es decir cuando las operaciones de la etapa E206 o E208 precedentes han sido realizadas sin fallo, debe verificarse esta relación.
Por consiguiente, si la prueba de la etapa E210 es positiva, se considera que el desarrollo del cálculo ha tenido lugar sin fallo y, por tanto, se continúa el tratamiento en la etapa E214, como se describe a continuación.
Por el contrario, si la etapa E210 no permite la verificación de la relación m * a_{0} = a_{1}, se deduce de esto que uno de los cálculos efectuados en la etapa precedente E206 o E208 ha experimentado una perturbación, tal como por ejemplo un ataque por fallo.
Por esta razón, si la etapa de prueba E210 conduce a un resultado negativo, se procede a una etapa E212 en la cual se considera que se ha detectado un fallo y que se necesita un tratamiento adecuado. Como se ha visto anteriormente, este tratamiento puede variar según las aplicaciones.
Como ya se indicó, el funcionamiento normal conduce a la etapa E214, en la cual se disminuye la variable i. Se prueba entonces en la etapa E216 si la variable i ha llegado a 0. En caso negativo, no han sido tratados todos los bits de la clave secreta d y se procede a la iteración siguiente del bucle pasando a la etapa E204 ya descrita. En caso afirmativo, ha sido tratado el conjunto de los bits de la clave secreta y entonces el cálculo de exponenciación modular ha terminado: la variable a_{1} corresponde al resultado deseado, o sea m^{d} mod n. Se envía, por tanto, a la salida del subprograma descrito aquí el valor a_{1} a la etapa E218.
En variante, entre las etapas E216 y E218 puede realizarse la etapa E210, en sustitución o en suplemento de la etapa E210 descrita anteriormente. En el caso en que la etapa E210 no se realice en el bucle, sino solamente después del bucle (por ejemplo entre las etapas E216 y E218), se aligeran las fases de prueba del algoritmo.
Refiriéndose a la figura 3, se va a describir ahora un tercer modo de realización de la invención, puesto en práctica en el marco de una exponenciación modular que utiliza el teorema chino de los restos (o CRT).
El algoritmo presentado en la figura 3 recibe en la entrada el número m (o mensaje) del que se desea realizar la exponenciación modular, los dos números primos p, q que componen el módulo público n = p.q, los componentes d_{p}, d_{q} de la clave secreta d en relación con p y q (donde d_{p} = d mod (p-1) y d_{q} = d mod (q-1) y el número a tal que a = p^{-1} mod q.
Se procede entonces en la etapa E302 a la exponenciación modular parcial del número m con el exponente d_{p} según un algoritmo del tipo de cálculo descrito anteriormente refiriéndose a la figura 2. Al final de este algoritmo, se obtiene, así, un número S_{p} (correspondiente al número a_{1} en la figura 2) resultado de la exponenciación modular parcial (es decir S_{p} = m^{dp} mod p) y un número S'_{p} (correspondiente al número a_{0} en la figura 2) tal que S_{p} = mS'_{p}.
Durante una etapa E304 se procede asimismo a la exponenciación modular parcial por medio del exponente d_{q} según un algoritmo como el descrito en la figura 2, que permite obtener S_{q} = m^{dq} mod q (S_{q} corresponde al número a_{1} en la figura 2), así como S'_{q} (correspondiente a a_{0} en la figura 2) que verifica en funcionamiento normal S_{q} = mS'_{q}.
Se pasa entonces a una etapa E306 de recombinación de los resultados modulares parciales según la fórmula china de los restos. Se procede, así, por una parte, a la combinación de los valores S'_{p} y S'_{q} que da como resultado S' y, por otra, a la recombinación de los valores S_{p} y S_{q}, lo que permite obtener el valor S.
Siendo S_{p} y S_{q} los resultados de la exponenciación modular parcial como se vio respectivamente en las etapas E302 y E304, la variable S contiene el resultado de la exponenciación modular (o sea S = m^{d} mod (p * q)). Por otra parte, debido a las relaciones mencionadas anteriormente entre S'_{p} y S_{p}, por una parte, y S'_{q} y S_{q}, por otra, se tiene igualmente después de la recombinación en funcionamiento normal la relación S = m * S' mod (p * q).
Por esta razón, se verifica la exactitud de esta relación en la etapa de prueba E308.
En caso de verificación negativa durante la etapa de prueba, se procede a una etapa E310 en la que se considera que se ha producido un error durante el cálculo, causado probablemente por un ataque por generación de fallo. Entonces puede aplicarse un tratamiento adaptado como se describió a propósito de los otros modos de realización.
Si, por el contrario, en la etapa E308 se verifica la relación S = m * S' mod (p * q), se considera que el algoritmo se ha desarrollado sin fallo y se procede a la etapa E312, a la cual se reenvía el valor S que, como se indicó anteriormente, corresponde al resultado de la exponenciación modular.
Los modos de realización que acaban de describirse, son únicamente ejemplos posibles de puesta en práctica de la invención. Ésta naturalmente se aplica en otros casos, por ejemplo a otras operaciones distintas a la exponenciación modular descompuesta en multiplicaciones modulares: ésta se aplica, así, igualmente, a los algoritmos criptográficos basados en curvas elípticas en las cuales se efectúan multiplicaciones a lo largo de estas curvas descompuestas como un conjunto de sumas.
Además, la invención puede aplicarse a otros sistemas de cálculo distintos a los descritos, tales como por ejemplo la aritmética de Montgomery.
Por otra parte, existen diferentes fórmulas de recombinación según el método CRT y la invención puede aplicarse a estas diferentes fórmulas.

Claims (19)

1. Procedimiento de tratamiento criptográfico de datos, en el cual un mensaje (m) es sometido a una primera operación con una clave secreta (d), que comprende una etapa de actualización por una segunda operación de una primera variable (B; a_{0}; S'_{p}, S'_{q}), o de una segunda variable (A; a_{1}; S_{p}, S_{q}) según que un bit correspondiente de la clave secreta valga 0 o 1, caracterizado por una etapa de prueba (E116, E210; E308) de una relación entre un primer valor (B; a_{0}; S') resultante de la primera variable y un segundo valor (A; a_{1}; S) resultante del asegunda variable, con el fin de detectar un fallo en el transcurso del cálculo.
2. Procedimiento de acuerdo con la reivindicación 1, caracterizado porque el primer valor es el valor de la primera variable y porque el segundo valor es el valor de la segunda variable.
3. Procedimiento de acuerdo con las reivindicaciones 1 o 2, caracterizado porque la etapa de prueba (E116) es aplicada al resultado de la primera operación.
4. Procedimiento de acuerdo con la reivindicación 1, caracterizado porque el primer valor (S') resulta de una primera recombinación según el teorema chino de los restos que implica a la primera variable (S'_{p}, S'_{q}) y porque el segundo valor S resulta de una segunda recombinación según el teorema chino de los restos que implica a la segunda variable (S_{p}, S_{q}).
5. Procedimiento de acuerdo con una de las reivindicaciones 1 a 4, caracterizado porque la primera operación es una exponenciación modular, porque la segunda operación es una multiplicación modular y porque la clave secreta es un exponente.
6. Procedimiento de acuerdo con la reivindicación 5, caracterizado porque la etapa de prueba comprende la comparación del producto de la primera variable (B) y de la segunda variable (A) con una tercera variable (S) actualizada por el cálculo de un cuadrado, cualquiera que sea el bit correspondiente de la clave secreta.
7. Procedimiento de acuerdo con la reivindicación 5, caracterizado porque la etapa de prueba comprende la comparación de la segunda variable (a_{1}) con el producto del elemento (m) y de la primera variable (a_{0}).
8. Procedimiento de acuerdo con una de las reivindicaciones 1 a 4, caracterizado porque la primera operación es una multiplicación a lo largo de una curva elíptica y porque la segunda operación es una suma a lo largo de la curva elíptica.
9. Procedimiento de acuerdo con una de las reivindicaciones 1 a 8, caracterizado porque la relación es independiente de la clave secreta.
\vskip1.000000\baselineskip
10. Dispositivo de tratamiento criptográfico de datos que permite una primera operación sobre un mensaje por medio de una clave secreta, que comprende:
- medios de actualización por medio de una segunda operación de una primera variable o de una segunda variable según que un bit correspondiente de la clave secreta valga 0 o 1,
caracterizado por:
- medios de prueba de una relación entre un primer valor resultante de la primera variable y un segundo valor resultante de la segunda variable, con el fin de detectar un fallo en el transcurso del cálculo.
\vskip1.000000\baselineskip
11. Dispositivo de acuerdo con la reivindicación 10, caracterizado porque el primer valor es el valor de la primera variable y porque el segundo valor es el valor de la segunda variable.
12. Dispositivo de acuerdo con las reivindicaciones 10 u 11, caracterizado porque los medios de prueba son aplicados al resultado de la primera operación.
13. Dispositivo de acuerdo con la reivindicación 10, caracterizado por medios para obtener el primer valor (S') como resultado de una primera recombinación según el teorema chino de los restos que implica a la primera variable (S'_{p}, S'_{q}) y por medios para obtener el segundo valor (S) como resultado de una segunda recombinación según el teorema chino de los restos que implica a la segunda variable (S_{p}, S_{q}).
14. Dispositivo de acuerdo con una de las reivindicaciones 10 a 13, caracterizado porque la primera operación es una exponenciación modular, porque la segunda operación es una multiplicación modular y porque la clave secreta es un exponente.
\newpage
15. Dispositivo de acuerdo con la reivindicación 14, caracterizado porque los medios de prueba comprenden medios de comparación del producto de la primera variable (B) y de la segunda variable (A) con una tercera variable (S) actualizada por el cálculo de un cuadrado, cualquiera que sea el bit correspondiente de la clave secreta.
16. Dispositivo de acuerdo con la reivindicación 14, caracterizado porque los medios de prueba comprenden medios de comparación de la primera variable (a_{1}) con el producto del elemento (m) y de la segunda variable (a_{0}).
17. Dispositivo de acuerdo con una de las reivindicaciones 10 a 13, caracterizado porque la primera operación es una multiplicación a lo largo de una curva elíptica y porque la segunda operación es una suma a lo largo de la curva elíptica.
18. Dispositivo de acuerdo con una de las reivindicaciones 10 a 17, caracterizado porque la relación es independiente de la clave secreta.
19. Tarjeta de microcircuito que comprende un dispositivo de acuerdo con una de las reivindicaciones 10 a 18.
ES06743602T 2005-03-30 2006-03-27 Procedimiento de tratamiento de datos que implica una exponencicion modular y un dispositivo asociado. Active ES2337925T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0503083A FR2884004B1 (fr) 2005-03-30 2005-03-30 Procede de traitement de donnees impliquant une exponentiation modulaire et un dispositif associe
FR0503083 2005-03-30

Publications (1)

Publication Number Publication Date
ES2337925T3 true ES2337925T3 (es) 2010-04-30

Family

ID=35559283

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06743602T Active ES2337925T3 (es) 2005-03-30 2006-03-27 Procedimiento de tratamiento de datos que implica una exponencicion modular y un dispositivo asociado.

Country Status (7)

Country Link
US (1) US8682951B2 (es)
EP (1) EP1864211B1 (es)
AT (1) ATE458219T1 (es)
DE (1) DE602006012292D1 (es)
ES (1) ES2337925T3 (es)
FR (1) FR2884004B1 (es)
WO (1) WO2006103341A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2916113B1 (fr) * 2007-05-07 2009-07-31 Oberthur Card Syst Sa Procede de traitement cryptographique d'un message.
FR2919739B1 (fr) 2007-08-03 2009-12-04 Oberthur Card Syst Sa Procede de traitement de donnees protege contre les attaques par generation de fautes et dispositif associe
US8670557B2 (en) 2007-09-10 2014-03-11 Spansion Llc Cryptographic system with modular randomization of exponentiation
US8139763B2 (en) 2007-10-10 2012-03-20 Spansion Llc Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks
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
FR2942560B1 (fr) * 2009-02-24 2015-06-26 Oberthur Technologies Procede de traitement de donnees impliquant une exponentiation et un dispositif associe.
FR2948792B1 (fr) 2009-07-30 2011-08-26 Oberthur Technologies Procede de traitement de donnees protege contre les attaques par faute et dispositif associe
WO2011092552A1 (en) * 2010-01-28 2011-08-04 Nds Limited Exponentiation system
EP2535804A1 (en) * 2011-06-17 2012-12-19 Thomson Licensing Fault-resistant exponentiation algorithm
FR2979725B1 (fr) * 2011-09-06 2016-05-27 Oberthur Technologies Procede de calculs cryptographique resistant aux defaillances materielles
EP2793123A1 (en) * 2013-04-16 2014-10-22 Gemalto SA Method to securely execute a modular exponentiation
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
CN106603221B (zh) * 2016-12-23 2022-07-26 北京握奇智能科技有限公司 一种抵抗spa攻击的模幂计算方法、***及嵌入式单芯片
FR3069671A1 (fr) 2017-07-25 2019-02-01 Stmicroelectronics (Rousset) Sas Protection d'un calcul iteratif contre des attaques horizontales
EP3579493A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
EP3579492A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
FR3094522B1 (fr) 2019-03-29 2021-11-19 St Microelectronics Rousset Protection d’un calcul itératif
FR3143243A1 (fr) * 2022-12-09 2024-06-14 Idemia France Signature et dechiffrement de message securises par double rsa-crt

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
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
AU2557399A (en) * 1998-01-02 1999-07-26 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
ATE418099T1 (de) * 1998-06-03 2009-01-15 Cryptography Res Inc Gesicherte moduläre potenzierung mit leckminimierung für chipkarten und andere kryptosysteme
FR2799851B1 (fr) * 1999-10-14 2002-01-25 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
FR2828608B1 (fr) 2001-08-10 2004-03-05 Gemplus Card Int Procede securise de realisation d'une operation d'exponentiation modulaire
JP2004226674A (ja) * 2003-01-23 2004-08-12 Renesas Technology Corp 情報処理方法

Also Published As

Publication number Publication date
DE602006012292D1 (de) 2010-04-01
WO2006103341A1 (fr) 2006-10-05
EP1864211A1 (fr) 2007-12-12
FR2884004A1 (fr) 2006-10-06
ATE458219T1 (de) 2010-03-15
EP1864211B1 (fr) 2010-02-17
US20090240756A1 (en) 2009-09-24
US8682951B2 (en) 2014-03-25
FR2884004B1 (fr) 2007-06-29

Similar Documents

Publication Publication Date Title
ES2337925T3 (es) Procedimiento de tratamiento de datos que implica una exponencicion modular y un dispositivo asociado.
EP2082346B1 (en) Protection against side channel attack with an integrity check
Delvaux et al. Attacking PUF-based pattern matching key generators via helper data manipulation
EP2523098B1 (en) Finite field crytographic arithmetic resistant to fault attacks
Vigilant RSA with CRT: A new cost-effective solution to thwart fault attacks
EP2228716B1 (en) Fault-resistant calculcations on elliptic curves
EP2213037B1 (en) Fault detection in exponentiation and point multiplication operations using a montgomery ladder
US8639944B2 (en) Zero divisors protecting exponentiation
ES2287745T3 (es) Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente.
Poolakkaparambil et al. BCH code based multiple bit error correction in finite field multiplier circuits
Sim et al. Novel side-channel attacks on quasi-cyclic code-based cryptography
JP5327380B2 (ja) 暗号処理装置および暗号処理方法
Giraud Fault resistant RSA implementation
ES2349725T3 (es) Procedimiento, dispositivo y sistema para verificar puntos determinados sobre una curva elíptica.
US8311212B2 (en) Method of processing data protected against attacks by generating errors and associated device
Kim et al. An efficient CRT-RSA algorithm secure against power and fault attacks
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
Geiselmann et al. Attacking the affine parts of SFlash
Krahmer et al. Correction fault attacks on randomized crystals-dilithium
Ma et al. Error detection and recovery for ECC: A new approach against side-channel attacks
Karaklajić et al. Low-cost fault detection method for ECC using Montgomery powering ladder
US8744072B2 (en) Exponentiation method resistant against side-channel and safe-error attacks
Goy et al. Single trace HQC shared key recovery with SASCA
Karp et al. Security-oriented code-based architectures for mitigating fault attacks
Alkhoraidly et al. Fault attacks on elliptic curve cryptosystems