MXPA02003656A - Metodo de contramedida en un componente electronico el cual utiliza un algoritmo criptografico de clave publica tipo rsa. - Google Patents

Metodo de contramedida en un componente electronico el cual utiliza un algoritmo criptografico de clave publica tipo rsa.

Info

Publication number
MXPA02003656A
MXPA02003656A MXPA02003656A MXPA02003656A MXPA02003656A MX PA02003656 A MXPA02003656 A MX PA02003656A MX PA02003656 A MXPA02003656 A MX PA02003656A MX PA02003656 A MXPA02003656 A MX PA02003656A MX PA02003656 A MXPA02003656 A MX PA02003656A
Authority
MX
Mexico
Prior art keywords
mod
module
calculate
decoding
integers
Prior art date
Application number
MXPA02003656A
Other languages
English (en)
Inventor
Coron Jean-Sebastien
Original Assignee
Gemplus Card Int
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 Gemplus Card Int filed Critical Gemplus Card Int
Publication of MXPA02003656A publication Critical patent/MXPA02003656A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public 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/302Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

La invencion se refiere a un metodo de contramedida en un componente electronico que utiliza un algoritmo criptografico de clave publica tipo RSA. Un primer metodo de contramedida consiste en utilizar un calculo aleatorio para cada nueva ejecucion del algoritmo de descodificacion con CRT. Los calculos son realizados modulo p*r y q*r, siendo r y t numeros aleatorios. Una segunda contramedida consiste en realizar la recombinacion aleatoria utilizando el teorema CRT.

Description

MÉTODO DE CONTRAMEDIDA EN UN COMPONENTE ELECTRÓNICO EL CUAL UTILIZA UN ALGORITMO CRIPTOGRÁFICO DE CLAVE PUBLICA TIPO RSA DESCRIPCIÓN DE LA INVENCIÓN La presente invención se refiere a un método de contramedida en un componente electrónico que utiliza un algoritmo de codificación de clave pública tipo RSA. En el modelo convencional de la criptografía de clave secreta, dos personas quienes desean comunicarse por medio de un canal no seguro, deben acordar primeramente una clave K de codificación secreta. La función de codificación y la función de descodificación utilizan la misma clave K. El inconveniente del sistema de codificación de clave secreta es que dicho sistema requiere la comunicación previa de la clave K entre las dos personas, por medio de un canal seguro, antes de que cualquier mensaje codificado sea enviado a través del canal no seguro. En la práctica, es en general difícil encontrar un canal de comunicación perfectamente seguro, especialmente si la distancia que separa a las dos personas es grande. El canal seguro significa un canal para el cual es imposible evaluar o modificar la información que pasa a través de dicho canal . Tal canal seguro puede ser implementado por un cable que conecta dos terminales, poseídas por las dos personas. El concepto de criptografía de clave pública fue inventado por hitfield Diffie y Martín Hellman en 1976. La criptografía de clave pública hace posible resolver el problema de la distribución de claves a través de un canal no seguro. El principio de la criptografía de clave pública consiste en utilizar un par de claves, una clave de codificación pública y una clave de descodificación privada. Debe ser no factible, por medio de cálculo, encontrar la clave de descodificación privada a partir de la clave de codificación pública. Una persona A quien desea comunicar un artículo de información a una persona B, utiliza la clave de codificación pública de la persona B. Únicamente la persona B posee la clave privada asociada con su clave pública. Únicamente la persona B es por lo tanto capaz de descodificar el mensaje enviado a ella. Otra ventaja más de la criptografía de clave pública sobre la criptografía de clave secreta es que la criptografía de clave pública permite la autenticación a través del uso de firmas electrónicas.
La primera implementación del esquema de codificación de clave pública fue originado en 1977 por Rivest, Shamir y Adleman, quienes inventaron el sistema de codificación RSA. La seguridad de RSA está basada en la dificultad de factorizar un número grande que es el producto de dos número primos. Desde entonces, han sido propuestos muchos sistemas de codificación de clave pública, la seguridad de los cuales está basada en diferentes problemas de cálculo (esta lista no es exhaustiva) : "Kapsack" por Merckle-Hellman: Este sistema de codificación está basado en la dificultad del problema de suma de subgrupos ; McEliece: Este sistema de codificación está basado en la teoría de la codificación algebraica. Éste está basado en el problema de descodificación del código lineal; ElGamal : Este sistema de codificación está basado en la dificultad del logaritmo discreto en un cuerpo finito; Curvas elípticas: El sistema de codificación de curvas elípticas constituye una modificación de los sistemas criptográficos existentes, con el fin de aplicarlos al campo de las curvas elípticas. La ventaja de los sistemas de codificación de curvas elípticas es que éstos requieren una clave de tamaño más pequeño que los otros sistemas de codificación. El sistema de codificación RSA es el sistema de codificación de clave pública más utilizado. Éste puede ser utilizado como un método de codificación o como un método de firma. El sistema de codificación RSA es utilizado en tarjetas inteligentes, para ciertas aplicaciones de las mismas. Las posibles aplicaciones de RSA en una tarjeta inteligente son el acceso a bancos de datos, aplicaciones de banca, o aplicaciones de pago remoto, tales como por ejemplo la televisión por pago, surtido de petróleo o el pago de cuotas de carreteras . El principio del sistema de codificación RSA es como sigue. Este puede ser dividido en tres partes distintas, siendo éstas: 1) La generación del par de claves RSA; 2) La codificación de un mensaje claro en un mensaje codificado; y 3) La descodificación de un mensaje codificado en un mensaje claro. La primera parte es la generación de la clave RSA. Cada usuario crea una clave pública RSA y una clave privada correspondiente, de acuerdo al siguiente método que comprende 5 pasos : 1) Generación de dos números primos distintos p y q del mismo tamaño; 2) Cálculo de n = pq y J = (p-1) (q-1) ; 3) Selección aleatoria de un número entero e, 1 < e < J, tal que pgcd(e, J) = 1; 4) El cálculo del número entero único d, 1 < d < J, tal que e*d = 1 mod J; 5) La clave pública es (n,e) ; la clave privada es d o (d,p,q) . Los números enteros e y d son llamados respectivamente el exponente de codificación y el exponente de descodificación. El número entero n es llamado el módulo. La segunda parte de la generación de clave RSA que consiste de la codificación de un mensaje claro denotado m por medio de un algoritmo con 1 < m < n en un mensaje codificado denotado c, es como sigue: Calcular c = m?e mod n. La tercera parte de la generación de la clave RSA consiste de la descodificación utilizando el exponente de descodificación privada d por medio de un algoritmo. El algoritmo para la descodificación de un mensaje codificado denotado c con 1 < c < n en un mensaje claro, denotado m, es como sigue: Calcular m = c mod n. El algoritmo de descodificación RSA descrito previamente puede ser realizado mediante dos métodos diferentes. Estos dos métodos son: descodificación con CRT y descodificación sin CRT. CRT es un acrónimo para el Teorema del Residuo Chino (Chínese Remainder Theorem, por su acepción en inglés) . La ventaja del algoritmo de descodificación con CRT es que éste es teóricamente cuatro veces más rápido que el algoritmo de descodificación sin CRT. El algoritmo de descodificación sin CRT consiste en calcular m = cd mod n como se describió previamente . El algoritmo de descodificación con CRT consiste de los siguientes cuatro pasos: 1) Calcular cp = c módulo p y cq = c modulo 2) Calcular dp = d módulo p-1 y dq = módulo q-1 3) Calcular mp = cpdp módulo p y mq = cqdq módulo q 4) Calcular = mp*q* (q("1> mod p) + mq*p*(p( x) mod q) 1 Para llevar a cabo las exponenciaciones modulares necesarias en los métodos de cálculo descritos previamente, existe un número de algoritmos: el algoritmo llamado "elevar al cuadrado y multiplicar"; el algoritmo con cadenas de adición; el algoritmo con una ventana; el algoritmo con representación firmada. Esta lista no es exhaustiva. El algoritmo más simple y más utilizado es el algoritmo de elevar al cuadrado y multiplicar. El algoritmo de elevar al cuadrado y multiplicar toma como entradas un número c, un exponente d y un módulo n. El exponente d es denotado d = (d(t), d(t-l), d(0)), donde (d(t), d(t-1),, d(0)) es la representación binaria de d, con d(t) el bitio más significativo y d(0) el bitio menos significativo. Por ejemplo, la representación del número cinco en binario es 101, resultante del hecho de que 5 = 1*22 + 0*21 + 1*2°. El primer 1 es el bitio más significativo y el último 1 es el bitio menos significativo. El algoritmo regresa como una salida el número m = cd mod n. El algoritmo de elevación al cuadrado y multiplicar tiene los siguientes tres pasos: 1) Inicializar una variable A de número entero con el valor c; 2) Para i desde t-1 a 0, : 2a) Reeemplazar A por A*A mod n; 2b) Si d(i) = 1, remplazar A por A*c mod n; 3) Regresar al paso 1 anterior. En el caso de la descodificación RSA sin CRT, la descodificación es realizada como se describió previamente utilizando el algoritmo de elevación al cuadrado y multiplicar. En este caso, el algoritmo de elevación al cuadrado y multiplicar toma por lo tanto como entradas el mensaje codificado c, el módulo n y el exponente de descodificación d. En el caso de descodificación RSA con CRT, la descodificación es llevada a cabo como se describió previamente utilizando el algoritmo de elevación al cuadrado y multiplicar, dos veces para la ejecución del paso 3) del algoritmo de descodificación con CRT. La primera vez, el algoritmo toma como entradas el número entero cp, el módulo p y el exponente dp . La segunda vez, el algoritmo toma como entradas el número entero cq, el módulo q y el exponente dq. Es posible realizar estas operaciones dentro de una tarjeta inteligente, siendo llevadas a cabo dichas operaciones por el microprocesador sobre la tarjeta inteligente. Se constató que la implementación sobre tarjetas inteligentes de un algoritmo de codificación de clave pública tipo RSA era vulnerable a los ataques consistentes de un análisis de consumo de corriente diferencial, que hace posible encontrar la clave de descodificación privada. Estos ataques son denominados como ataques DPA, siendo DPA un acrónimo para Análisis de Potencia Diferencial (Differential Power Analysis por su acepción en inglés) . El principio de estos ataques DPA está basado en el hecho de que el consumo de corriente de los microprocesadores que ejecutan instrucciones, varía de acuerdo a los datos que son manipulados. En particular, cuando una instrucción está manipulando un artículo o inciso de datos en el cual un bitio particular es constante, con el valor de los otros bitios que son capaces de variar, el análisis del consumo de corriente conectado con la instrucción muestra que el consumo medio para la instrucción no es el mismo, dependiendo de si el bitio particular toma el valor 0 ó 1. El ataque tipo DPA hace por lo tanto posible obtener información adicional sobre los datos intermediarios manipulados por el microprocesador sobre la tarjeta, durante la ejecución de un algoritmo criptográfico. Esta información adicional puede en ciertos casos hacer posible la revelación de parámetros privados del algoritmo de descodificación, haciendo no seguro al sistema criptográfico. En el resto de este documento, serán descritos dos tipos de ataque DPA sobre el algoritmo de descodificación RSA. El primer ataque DPA descrito se relaciona al algoritmo de descodificación RSA sin CRT. El segundo ataque descrito se relaciona al algoritmo de descodificación RSA con CRT. Estos dos ataques hacen posible revelar el exponente d de la descodificación privada. Estos comprometen por lo tanto seriamente la seguridad de la implementación RSA en una tarjeta inteligente . El primer ataque DPA se relaciona al algoritmo de dessodificación RSA sin CRT. El ataque hace posible el revelar directamente el exponente secreto d, también llamado la clave privada. El primer paso del ataque es el registro del consumo de corriente correspondiente a la ejecución del algoritmo de elevación al cuadrado y multiplicación descrito previamente para N distintos mensajes codificados c (1) , ... c (N) . Para hacer clara la descodificación del ataque, es primeramente descrito un método que hace posible el obtener el valor del bitio d(t-l) de la clave privada d, o (d(t), d(t-l), d(0)), la representación binaria de d, con d(t) el bitio más significativo y d(0) el bitio menos significativo. Luego la descodificación es dotada de un algoritmo que hace posible endntrar el valor de d. Los mensajes c(l) a c (N) son agrupados de acuerdo al valor del bitio menos significativo c4 mod n, donde c designa una de los mensajes c(l) a c (N) . El primer grupo consiste de los mensajes c tal que el bitio menos significativo de c4 mod n es igual a 1. El segundo grupo consiste de los mensajes c tales que dicho bitio es igual a 0. La media de los consumos de corriente correspondientes a cada uno de los dos grupos es calculada, y la curva de diferencia entre estas dos medias es calculada. Si el bitio d(t-l) de d es igual a 0, entonces el algoritmo de exponenciación descrito previamente calcula y pone en la memoria el valor de c4 mod n. Esto significa que, durante la ejecución del algoritmo en una tarjeta inteligente, el microprocesador en la tarjeta efectivamente calculará c4 mod n. En este caso, en un grupo de mensajes el bitio menos significativo del inciso de dato manipulado por el microprocesador, es siempre igual a l, y en el otro grupo de mensajes el último bitio del artículo o inciso de datos manipulado es siempre igual a 0. La media de los consumos de corriente correspondientes a cada grupo es por lo tanto diferente. Aparece por lo tanto un pico diferencial de consumo de corriente en la curva de diferencia entre las dos medias. Si por el contrario d(t-l) de d es igual a 1, el algoritmo de exponenciación descrito previamente no calcula el valor de c4 mod n. Durante la ejecución del algoritmo por la tarjeta inteligente, el microprocesador por lo tanto nunca manipula el inciso de datos c4 mod n. Por lo tanto, no aparece ningún pico diferencial de consumo. Este método hace por lo tanto posible determinar el valor del bitio d(t-l) de d. El algoritmo descrito en el siguiente párrafo es una generalización del algoritmo precedente. Este hace posible determinar el valor de la clave privada d: El algoritmo toma como entradas N mensajes c(l) a c (N) y el módulo RSA n, y regresa como una salida un número entero h. Los pasos del algoritmo anterior son como sigue: 1) Poner 1 en la variable h, 2) Para i desde t-1 a 1, ejecutar los siguientes pasos : 2)1) Clasificar los mensajes c (1) a c (N) en dos grupos de acuerdo al valor del último bitio de c(4*h> mod n; 2)2) Calcular el media del consumo de corriente para cada uno de los dos grupos; 2)3) Calcular la diferencia entre las dos medias ; 2)4) Si la diferencia revela un pico diferencial de consumo, calcular h = h*2 ; De otro modo, ejecutar h = h*2+l. El resultado del algoritmo está contenido en la variable h. El algoritmo precedente suministra un número entero h tal que d = 2*h o d = 2*h+l. Para obtener el valor de d, es suficiente comprobar las dos posibles hipótesis que son d = 2*h y d = 2*h+l. El ataque tipo DPA descrito hace por lo tanto posible el encontrar la clave privada d cuando el algoritmo de descodificación RSA es realizado sin CRT. El segundo ataque DPA posible sobre el algoritmo de descodificación RSA se relaciona a la aplicación del algoritmo de descodificación con CRT como se describió previamente. El ataque descrito es realizado con los mensajes elegidos y se enfoca solamente a la operación de reducción modular (paso 1) en la descripción del algoritmo de descodificación con CRT. El ataque consiste en enviar los mensajes correctamente elegidos a la tarjeta. El tamaño de la representación binaria de p es un número entero k . Éste por lo tanto da 2 (k_1> < p < 2 Dos casos son entonces distinguidos: En el primer caso, 2 Ck~1> + 2 <k~2) < p z 2k. En el segundo caso, 2 (k~1) < p < 2 (k_1) + 2(k" ). El método consiste en tener la descodificación de la tarjeta de un primer grupo A de mensajes c tal que c < 2 (k"1) . La reducción modular de c módulo p da por lo tanto exactamente el número entero c como el resultado. La tarjeta es también dada para la descodificación de un segundo grupo B de mensajes c tal que 2k < c < 2k + ( -2) en el primer caso, y 2 (k-l) + 2 (k~ 2) < c < 2k en el segundo caso. En ambos casos, la reducción modular de c módulo p da c-p. La tarjeta manipulará subsecuentemente por lo tanto el inciso de datos c-p. Mediante el análisis de la diferencia en el consumo entre los mensajes en el grupo A para el cual el resultado es c y los mensajes en el grupo B para el cual el resultado es c-p, es posible por comparación, evaluar toda la información necesaria haciendo posible obtener p.
Este párrafo da el método que hace posible obtener el bitio menos significativo de p . El método es similar para la obtención de otros bitios de p. Los mensajes en el grupo A son clasificados en dos categorías: un grupo de mensaje AO para el cual el último bito de los mensajes es igual a 0 y un grupo de mensajes Al para el cual el último bito es igual a 1. Se lleva a cabo la misma operación para el grupo B, obteniendo el grupo BO y el grupo Bl . Si el último bitio significativo de p es igual a 1, la diferencia en el consumo entre los grupos AO y BO revelará un pico diferencial de consumo, ya que en el grupo AO el último bitio del resultado es igual a 0, y en el grupo BO el último bitio del resultado es igual a l. Si el bitio menos significativo de p es igual a 0, la diferencia del consumo medio entre los grupos no revela picos. Por medio de este método, el bitio menos significativo de p puede ser determinado. Por medio de un método similar, .los bitios de p pueden ser sucesivamente determinados. El método de la invención consiste en desarrollar dos contramedidas que hace posible protegerse contra los dos tipos de ataque DPA descritos previamente (un ataque con CRT y un ataque sin CRT) . El primer método de contramedida consiste en realizar los cálculos módulo p*r y q*t, siendo r y t números aleatorios. El primer método de contramedida constituye un mejoramiento de un método ya existente, presentado en la solicitud de patente W099/35782 presentada por la compañía Cryptography Research. En esta solicitud de patente, un método hace posible protegerse contra los ataques tipo DPA durante la operación de descodificación RSA. El inconveniente de este método es que requiere el uso de divisiones de números enteros, operaciones difíciles de llevar a cabo dentro de un objeto portátil del tipo tarjeta inteligente. El primer método de contramedida comprende únicamente las operaciones de adición y multiplicación. La segunda contramedida consiste en realizar la recombinación aleatoria utilizando el Teorema del Residuo Chino (CRT) . El primer método de contramedida consiste en utilizar un módulo de cálculo aleatorio en cada nueva ejecución del algoritmo de descodificación con CRT. Este consiste en realizar los cálculos módulo p*r y q*t, donde r y t son números aleatorios. Este método toma como entradas un mensaje c, un exponente d de descodificación y un parámetro de seguridad s, y comprende los siguientes ocho pasos: 1) Tomar tres números aleatorios r, t y u entre O y 2' 2) Calcular p' = p*r y q' = q*t; 3) Reemplazar c por c+u*n; 4) Calcular cp = c módulo p' y cq = c módulo q'; 5) Calcular dp = d' módulo p-1 y dq = d' módulo q-1; 6) Calcular mp' = cpdp módulo p' y mq' = cqdq módulo q' ; 7) Calcular m = ( (mq-mp) * (p(_1) mod q) mod q' ) *p + mp; 8) Reemplazar m por m mod n. El primer método de contramedida comprende dos variantes relacionadas a la autorización de los números enteros r y t. La primera variante consiste en que un nuevo par de números enteros r y t es calculado en cada nueva ejecución del algoritmo de descodificación, de acuerdo al método descrito previamente. La segunda variante consiste en que un contador es incrementado en cada nueva ejecución del algoritmo de descodificación. Cuando este contador alcanza un valor fijo T, un nuevo par de números enteros r y t es calculado de acuerdo al método descrito previamente, y el contador es reajustado a 0. En la práctica, T = 16 puede ser tomado . El primer método de contramedida comprende una tercera variante que es útil cuando el tamaño de las operaciones sobre los números enteros es limitado. Esta tercera variante comprende los siguientes pasos: 1) Tomar cuatro números aleatorios r, t, u y v entre 0 y 2S; 2) Calcular p' = p*r y q' = q*t; 3) Calcular cp = c módulo p' y cq = c módulo q'; ) Reemplazar cp por cp+u*p y reemplazar cq por cq+v*q; 5) Calcular dp = d' módulo p-1 y dq = d' módulo q-1 ; 6) Calcular p' = cpdp módulo p' y mq' cqdq módulo q' ; 7) Calcular m = ( ( (mq-mp) * (p (_1) mod q) mod q' ) *p mod n) + mp mod n; 8) Reemplazar m por m mod n. El primer método de contramedida comprende una cuarta variante que hace posible incrementar la seguridad de las operaciones. En esta cuarta variante, parte de la descodificación es llevada a cabo por el módulo p y módulo q utilizando el Teorema de Residuo Chino y parte de la descodificación es calculada por el módulo n. La ventaja de esta cuarta variante es asegurarse que el atacante no conozca la salida de la recombinación utilizando el Teorema de Residuo Chino. Esta cuarta variante comprende los siguientes pasos: 1) Tomar tres números aleatorios r, t y u entre 0 y 2 ; 2) Calcular p' = p*r y q' = q*t; 3) Reemplazar c por c+u*n; 4) Calcular cp = c módulo p' y cq = c módulo q'; 5) Calcular dp = d' módulo p-1 y dq = d' módulo q-1; 6) Calcular dp' = (dp-l)/2 y dq' = (dq-l)/2; 7) Calcular mp' = cpdp módulo p' y mq' = cqdq' módulo q' ; 8) Calcular m = ( (mq-mp) * (p^1* mod q) mod q' ) *p + mp; 9) Reemplazar m por m*c mod n. De este modo, ya que el atacante no conoce la salida de la recombinación utilizando el Teorema del Residuo Chino correspondiente al paso 7, el atacante no puede llevar a cabo un ataque DPA sobre la recombinación utilizando el Teorema del Residuo Chino.
La segunda contramedida consiste en la realización de la recombinación aleatoria utilizando el Teorema del Residuo Chino. La naturaleza aleatoria es debida al uso de los módulos de cálculo aleatorios. Esta contramedida consiste en reemplazar los pasos 7 y 8 del primer método de contramedida por los siguientes pasos. La longitud (en bitios) del número entero p' es denotada k. a) Elegir dos números enteros aleatorios (aO, bO) tal que bO = aO-l, los números enteros aO y bO que son de k bitios de tamaño; b) Calcular el número entero C = (mq-mp) * (p(~ 15 mod q) mod q' ; c) Calcular (c mod aO) = (C*p+cp) mod aO y (c mod bO) = (C*p+cp) mod bO ; d) Calcular dos números enteros aleatorios (al, bl) tal que bl = al-1, siendo los números enteros al y bl de k bitios en tamaño; e) Calcular C = ( (c mod bO) - (c mod aO) ) mod bO; f) Calcular (c mod al) = (C*a0+ (c mod aO)) mod al y (c mod bl) = (C*a0+(c mod aO) ) mod bl; g) Repetir pasos e y f para un nuevo par (a2, b2) con b2 = a2-l, siendo los números enteros a2 y b2 de k bitios en tamaño. Los números enteros (aO, bO) y (al, bl) son reemplazados respectivamente por los números enteros (al, bl) y (a2, b2) ; h) El paso g es repetido k veces, siendo k un parámetro de número entero; i) El paso g es repetido para el par de números enteros (a, b) = (2 , 2k-1) ; j) calcular el número entero cl definido por cl = c mod 2k y calcular el número ch definido por ch = ( (c mod 2k_1) - (c mod 2k) ) mod 2k_1; k) Calcular la firma c = ch*2k+cl. La aplicación de los dos métodos de contramedida precedentes hace posible proteger el algoritmo de descodificación sobre tarjetas inteligentes contra los ataques tipo DPA. Las dos contramedidas presentadas son además compatibles una con la otra: es posible aplicar al algoritmo de descodificación RSA una o dos de las contramedidas descritas, así como las cuatro variantes de la primera contramedida .

Claims (7)

REIVINDICACIONES
1. Un método de contramedida utilizado por microprocesadores electrónicos en conjunto con una terminal, que hace posible no describir la información relacionada al dato secreto a través del consumo de corriente del microprocesador que ejecuta las instrucciones de un programa, que consiste en utilizar un módulo de cálculo aleatorio en cada nueva ejecución de un algoritmo de descodificación RSA utilizando el Teorema del Residuo Chino o CRT, el método consiste en realizar los cálculos módulo p*r y q*t, donde r y t son números aleatorios, el método toma como entradas un mensaje c, un exponente de descodificación d y un parámetro de seguridad s, caracterizado porque comprende los siguientes ocho pasos : 1) Tomar tres números aleatorios r, t y u entre 0 y 2S; 2) calcular p' = p*r y q' = q*t, p y q siendo dos números primos distintos del mismo tamaño; 3) reemplazar c por c+u*n; 4) calcular cp = c módulo p' y cq = c módulo q' ; 5) calcular dp = d' módulo p-1 y dq = d' módulo q-1; 6) calcular mp' = cpdp módulo p' y mq' = cqdg módulo q' ; 7) calcular m = ( (mq-mp) * (p'"1' mod q) mod q')*p + mp; 8) reemplazar m por m mod n.
2. Un método de contramedida de conformidad con la reivindicación 1, caracterizado porque un contador T con un valor inicial 0 es incrementado en cada nueva ejecución del algoritmo, los números r y t mantienen el mismo valor hasta que el contador T ha alcanzado un límite fijo L, un nuevo par de números enteros r y t que son determinados cuando este límite es alcanzado.
3. Un método de contramedida de conformidad con la reivindicación 1, que hace posible proteger la descodificación utilizando el Teorema del Residuo Chino o CRT, el método está caracterizado porque el cálculo de la descodificación formulado por la ecuación m = cd mod n es primeramente realizado módulo p y módulo q, porque el resultado del cálculo módulo p y módulo q es enseguida recolectado conjuntamente utilizando el Teorema de Residuo Chino o CRT, y porque el cálculo es continuado módulo al módulo publico n.
4. Un método de contramedida de conformidad con la reivindicación 3, caracterizado porque éste comprende los siguientes nueve pasos: 1) tomar tres números aleatorios r, t y u entre 0 y 2S; 2) calcular p' = p*r y q' q*t; 3) reemplazar c por c+u*n; 4) calcular cp = c módulo p' y cq = c módulo q' ; 5) calcular dp = d' módulo p-1 y dq = d' módulo q-1; 6) calcular dp' = (dp-l)/2 y dq' = (dq-l)/2; 7) calcular mp' = cpdp módulo p' y q' = cqdq' módulo q' ; 8) calcular m = ( (mq-mp) * (p(_1) mod q) mod q' ) *p + mp; 9) reemplazar m por m2*c mod n.
5. Un método de contramedida de conformidad con la reivindicación 4, que hace posible proteger la descodificación utilizando el Teorema de Residuo Chino o CRT, el método está caracterizado porque el cálculo de la descodificación m = c?d mod n es primeramente realizado módulo p y módulo q, porque el resultado del cálculo del módulo p y módulo q es enseguida recolectado conjuntamente utilizando el Teorema de Residuo Chino o CRT, y porque el cálculo es continuado módulo el módulo público n.
6. Un método de contramedida de conformidad con la reivindicación 1, que consiste en realizar el modo de cálculo aleatorio en cada nueva ejecución del algoritmo de descodificación utilizando el Teorema de Residuo Chino, el método de contramedida consiste en reemplazar los pasos 7 y 8 del primer método de contramedida por los siguientes pasos, el tamaño (en bitios) del número entero p' que es denotado k: a) elegir dos números enteros aleatorios (aO, bO) tal que bO = aO-1, los números enteros aO y bO que son de k bitios de tamaño; b) calcular el número entero C = (mq-mp) * (p'"1' mod q) mod q' ; c) calcular (c mod aO) (C*p+cp) mod aO y (c mod bO) = (C*p+cp) mod bO; d) calcular dos números enteros aleatorios al, bl tal que bl = al-1, siendo los números enteros al y bl de k bitios en tamaño; e) calcular C = ( (c mod bO) - (c mod aO) ) mod bO; f) calcular (c mod al) = (C*aO+ (c mod aO) ) mod al y (c mod bl) = (C*a0+(c mod aO) ) mod bl; g) repetir pasos 5 y 6 para un nuevo par (a2, b2) con b2 = a2-l, siendo los números enteros a2 y b2 de k bitios en tamaño, los números enteros (aO, bO) y (al, bl) son reemplazados respectivamente por los números enteros (al, bl) y (a2, b2) ; h) el paso 7 es repetido k veces, siendo k un parámetro de número entero; i) el paso 7 es repetido para el par de números enteros (a, b) = (2k, 2k~1) ; j ) calcular el número entero cl definido por cl = c mod 2k y calcular el número ch definido por ch = ((c mod 2k_1) - (c mod 2k) ) mod 2k_1; k) calcular la firma c = ch*2k+cl.
7. Una tarjeta inteligente que comprende un microprocesador, el microprocesador comprende los medios para implementar los pasos del método definido en las reivindicaciones 1 a 6.
MXPA02003656A 1999-10-14 2000-10-13 Metodo de contramedida en un componente electronico el cual utiliza un algoritmo criptografico de clave publica tipo rsa. MXPA02003656A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9912991A FR2799851B1 (fr) 1999-10-14 1999-10-14 Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
PCT/FR2000/002880 WO2001028153A1 (fr) 1999-10-14 2000-10-13 Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa

Publications (1)

Publication Number Publication Date
MXPA02003656A true MXPA02003656A (es) 2002-10-23

Family

ID=9551073

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA02003656A MXPA02003656A (es) 1999-10-14 2000-10-13 Metodo de contramedida en un componente electronico el cual utiliza un algoritmo criptografico de clave publica tipo rsa.

Country Status (9)

Country Link
US (1) US7123717B1 (es)
EP (1) EP1224765B1 (es)
CN (1) CN100403674C (es)
AU (1) AU1031501A (es)
DE (1) DE60022770T2 (es)
ES (1) ES2250203T3 (es)
FR (1) FR2799851B1 (es)
MX (1) MXPA02003656A (es)
WO (1) WO2001028153A1 (es)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10061697A1 (de) * 2000-12-12 2002-06-27 Infineon Technologies Ag Verfahren und Vorrichtung zum Ermitteln eines Schlüsselpaars und zum Erzeugen von RSA-Schlüsseln
FR2824209B1 (fr) * 2001-04-30 2003-08-29 St Microelectronics Sa Brouillage d'un calcul mettant en oeuvre une fonction modulaire
FR2844891A1 (fr) * 2002-09-20 2004-03-26 St Microelectronics Sa Masquage de donnees decomposees dans un systeme de residus
IES20040777A2 (en) * 2004-11-22 2006-04-19 Pendula Ltd Protection of electronic data
FR2884004B1 (fr) * 2005-03-30 2007-06-29 Oberthur Card Syst Sa Procede de traitement de donnees impliquant une exponentiation modulaire et un dispositif associe
FR2895609A1 (fr) 2005-12-26 2007-06-29 Gemplus Sa Procede cryptographique comprenant une exponentiation modulaire securisee contre les attaques a canaux caches, cryptoprocesseur pour la mise en oeuvre du procede et carte a puce associee
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
CN103684763A (zh) * 2012-09-19 2014-03-26 北京握奇数据系统有限公司 基于rsa算法的数据加密方法、装置及智能卡
CN103441843B (zh) * 2013-07-26 2016-09-21 北京华大信安科技有限公司 Rsa算法私钥元素获取方法及获取装置
CN103580869B (zh) * 2013-11-06 2016-09-21 北京华大信安科技有限公司 一种crt-rsa签名方法及装置
CN104125061A (zh) * 2014-08-12 2014-10-29 昆腾微电子股份有限公司 使用rsa加密算法的电子部件中的防攻击方法
US10855467B2 (en) * 2017-05-17 2020-12-01 Noblis, Inc. Detecting vulnerable encryption keys in network communication systems
CN113612613A (zh) * 2021-08-03 2021-11-05 浙江万里学院 一种基于格基约化的rsa算法密码分析方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666419A (en) * 1993-11-30 1997-09-09 Canon Kabushiki Kaisha Encryption device and communication apparatus using same
US5504817A (en) * 1994-05-09 1996-04-02 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for memory efficient variants of public key encryption and identification schemes for smart card applications
JP3525209B2 (ja) * 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
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
CA2256179C (en) * 1997-12-17 2002-05-07 Shigenori Uchiyama Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon
DE69834431T3 (de) * 1998-01-02 2009-09-10 Cryptography Research Inc., San Francisco Leckresistentes kryptographisches verfahren und vorrichtung
CA2267721C (en) * 1998-03-26 2002-07-30 Nippon Telegraph And Telephone Corporation Scheme for fast realization of encryption, decryption and authentication
JP4317607B2 (ja) * 1998-12-14 2009-08-19 株式会社日立製作所 情報処理装置、耐タンパ処理装置
FR2789535B1 (fr) * 1999-02-04 2001-09-28 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique
US6724894B1 (en) * 1999-11-05 2004-04-20 Pitney Bowes Inc. Cryptographic device having reduced vulnerability to side-channel attack and method of operating same

Also Published As

Publication number Publication date
AU1031501A (en) 2001-04-23
FR2799851B1 (fr) 2002-01-25
DE60022770T2 (de) 2006-06-29
EP1224765A1 (fr) 2002-07-24
WO2001028153A1 (fr) 2001-04-19
DE60022770D1 (de) 2005-10-27
CN1411644A (zh) 2003-04-16
US7123717B1 (en) 2006-10-17
CN100403674C (zh) 2008-07-16
ES2250203T3 (es) 2006-04-16
FR2799851A1 (fr) 2001-04-20
EP1224765B1 (fr) 2005-09-21

Similar Documents

Publication Publication Date Title
Pedersen Electronic payments of small amounts
KR100720726B1 (ko) Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법
US7162033B1 (en) Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
Hellman The mathematics of public-key cryptography
EP1648111B1 (en) Tamper-resistant encryption using a private key
CA2267721C (en) Scheme for fast realization of encryption, decryption and authentication
US8422671B2 (en) Methods of encryption and decryption using operand ordering and encryption systems using the same
GB2265285A (en) Public key cryptographic method for communication and electronic signatures
US6914986B2 (en) Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
WO2001024439A1 (fr) Dispositif, programme ou systeme de traitement d&#39;informations secretes
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
MXPA02003656A (es) Metodo de contramedida en un componente electronico el cual utiliza un algoritmo criptografico de clave publica tipo rsa.
WO2018125677A1 (en) Key processing method and device
EP0952697B1 (en) Elliptic curve encryption method and system
US20030165238A1 (en) A method for encoding long messages for electronic signature schemes based on rsa
CN1618200B (zh) 在若干实体与设备间分布负荷的密码法
US7401226B2 (en) Public key cryptographic method based on braid groups
US20020188850A1 (en) Method for accelerated transmission of electronic signature
MXPA02006801A (es) Algoritmo de exponenciacion modular en un componente electronico utilizando un algoritmo de codificacion de clave publica.
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
WO1993016538A1 (en) Devices for implementing public key cryptography and digital signatures
Abdelguerfi et al. Public key security systems [Guest Editor's Introduction]
EP0356127A2 (en) A RSA computation method for efficient batch processing
Kumar et al. An improved secure data communication using blind source separation and chaos
Voyiatzis An introduction to side channel cryptanalysis of RSA