ES2331456T3 - Procedimiento de contramedida en un componente electronico que emplea un algoritmo de codificacion con clave publica de tipo curva eliptica. - Google Patents

Procedimiento de contramedida en un componente electronico que emplea un algoritmo de codificacion con clave publica de tipo curva eliptica. Download PDF

Info

Publication number
ES2331456T3
ES2331456T3 ES00910928T ES00910928T ES2331456T3 ES 2331456 T3 ES2331456 T3 ES 2331456T3 ES 00910928 T ES00910928 T ES 00910928T ES 00910928 T ES00910928 T ES 00910928T ES 2331456 T3 ES2331456 T3 ES 2331456T3
Authority
ES
Spain
Prior art keywords
procedure
calculate
point
replace
algorithm
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
Application number
ES00910928T
Other languages
English (en)
Inventor
Jean-Sebastien Coron
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.)
Thales DIS France SA
Original Assignee
Gemalto 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 Gemalto SA filed Critical Gemalto SA
Application granted granted Critical
Publication of ES2331456T3 publication Critical patent/ES2331456T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7228Random curve mapping, e.g. mapping to an isomorphous or projective curve
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Credit Cards Or The Like (AREA)
  • Photoreceptors In Electrophotography (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Image Processing (AREA)
  • Studio Circuits (AREA)
  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)

Abstract

Procedimiento de contramedida en un componente electrónico que aplica un algoritmo de criptografía de clave pública de tipo curva elíptica que utiliza la representación de los puntos de dicha curva elíptica en coordenadas proyectivas que consisten en representar un punto P de la curva elíptica por los datos (X, Y, Z) tales como x = X/Z^2 y y = Y/Z^3, x e y son los datos del punto de la curva elíptica en coordenadas afines, dicha curva incluye n elementos y se define en un cuerpo terminado GF (p), p es un número primo, dicha curva tiene como ecuación y^2 = x^3+a por x+b, o se define en un cuerpo terminado GF (2 A n), dicha curva tiene como ecuación y^2+x por y = x^3+a por x^2+b, donde a y b son parámetros enteros fijados al principio, dicho procedimiento elige un representante entero aleatorio entre n elementos posibles en coordenadas proyectivas de la curva elíptica y consiste en una modificación de la operación de duplicación de puntos, de adición de dichos puntos y de la operación de multiplicación escalar, caracterizada en que el procedimiento de contramedida se aplica cualquiera que sea el procedimiento o el algoritmo, anotado a continuación A, utilizado para realizar la operación de duplicación de punto, el procedimiento A está remplazado por el procedimiento A'''' en 3 etapas, utilizando una entrada definida por un punto P = (X1, Y1, Z1) representado en coordenadas proyectivas y una salida definida por un punto Q = (X2, Y2, Z2) representada por coordenadas proyectivas, tales como Q =

Description

Procedimiento de contramedida en un componente electrónico que emplea un algoritmo de codificación con clave pública de tipo curva elíptica.
La presente invención concierne un procedimiento de contramedida en un componente electrónico que emplea un algoritmo de codificación con clave pública de tipo curva elíptica.
En el modelo clásico de la criptografía de clave secreta, dos personas que desean comunicar por medio de un canal no asegurado deben ponerse de acuerdo de antemano sobre una clave secreta de codificación K. la función de codificación y la función de decodificación utilizan la misma clave K. El inconveniente del sistema de codificación con clave secreta radica en que dicho sistema requiere la comunicación previa de la clave K entre ambas personas por medio de un canal asegurado, antes de que pueda enviarse cualquier mensaje codificado a través del canal no asegurado. En la práctica, resulta difícil generalmente encontrar un canal de comunicación perfectamente asegurado, sobre todo si la distancia que separa las dos personas es importante. Se entiende por canal asegurado un canal para el que resulta imposible conocer o modificar la información que transita por dicho canal. Este tipo de canal asegurado puede realizarse mediante un cable que conecta dos terminales, que poseen esas dos
personas.
Whitfield DIFFIE y Martin HELLMAN inventaron el concepto de criptografía de clave pública en 1976. La criptografía de clave pública permite solucionar el problema de la distribución de las claves a través de un canal no asegurado. El principio de la criptografía de clave pública consiste en utilizar un par de claves, una clave pública de codificación y una clave privada de decodificación. Debe resultar imposible calcular la clave privada de decodificación a partir de la clave pública de codificación. Una persona A que desea comunicar una información a una persona B utiliza la clave pública de codificación de la persona B. Solamente la persona B poseerá la clave privada asociada a su clave pública. Por tanto, sólo la persona B es capaz de descifrar el mensaje que se le ha enviado.
Otra ventaja de la criptografía de clave pública, con respecto a la criptografía de clave secreta es que la criptografía de clave pública permite la autenticación mediante la utilización de una firma electrónica.
La primera realización de esquema de codificación de clave pública fue puesta a punto en 1977 por Rivest, Shamir y Adleman, que inventaron el sistema de codificación RSA. La seguridad de RSA se basa en la dificultad de descomponer en factores un gran número que es el producto de dos números primos.
Desde entonces, se propusieron numerosos sistemas de codificación de clave pública, cuya seguridad se basa en la necesidad de efectuar distintos problemas de cálculo: (esta lista no es exhaustiva).
\vskip1.000000\baselineskip
- Mochila de Merckle-Hellman
Este sistema de codificación se basa en la dificultad del problema de la suma de subconjuntos.
\vskip1.000000\baselineskip
- McEliece
Este sistema de codificación se basa en la teoría de los códigos algébricos. Se basa en el problema de la decodificación de códigos lineales.
\vskip1.000000\baselineskip
- ElGamal
Este sistema de codificación se basa en la dificultad del logaritmo discreto en un cuerpo terminado.
\vskip1.000000\baselineskip
- Curvas elípticas
El sistema de codificación de curva elíptica constituye una modificación de los sistemas criptográficos que existen para aplicarlos al campo de las curvas elípticas.
La utilización de curvas elípticas en sistemas criptográficos fue propuesta independientemente por Victor Miller y Neal Koblitz en 1985. Las verdaderas aplicaciones de las curvas elípticas se previeron a principios de los 90.
La ventaja de los criptosistemas a base de curva elíptica es que proporcionan una seguridad equivalente a los demás criptosistemas pero con tamaños de clave menores. Esta ganancia en tamaño de clave implica una disminución de las necesidades de memoria y una reducción del tiempo de cálculo, lo que hace que la utilización de las curvas elípticas sea especialmente adaptada para aplicaciones de tipo tarjeta inteligente.
\newpage
Una curva elíptica en un cuerpo terminado GF (q^n) (q es un número primo y n un entero) es el conjunto de los puntos (x, y) con x la abscisa e y la ordenada que pertenece a GF (q^{A}) solución de la ecuación:
y^2 = x^3 + a*x + b
si q es superior o igual a 3
e y'2 + x*y = x^3 + a*x^2 + b
si q = 2.
\vskip1.000000\baselineskip
Existen 2 procedimientos para representar un punto de una curva elíptica:
En primer lugar, la representación en coordenadas afines; en este procedimiento, un punto P de la curva elíptica está representado por sus coordenadas (x, y).
En segundo lugar, la representación en coordenadas proyectivas.
La ventaja de la representación en coordenadas proyectivas es que permite evitar las divisiones en el cuerpo terminado, dichas divisiones son las operaciones más costosas en tiempo de cálculo.
La representación en coordenadas proyectivas más corrientemente utilizada es aquella que consiste en representar un punto P de la curva elíptica por las coordenadas (X, Y, Z), tales como x=X/2 y y=Y/Z^3.
Las coordenadas proyectivas de un punto no son únicas porque el triplete (X, Y, Z) y el triplete (\lambda^2*X, k^3*Y, k*Z representan el mismo punto, cualquiera que sea el elemento 2. que pertenece al cuerpo terminado en el que se ha definido la curva elíptica.
Las 2 clases de curvas más utilizadas en criptografía son las siguientes:
1) Curvas definidas en el cuerpo terminado GF (p) (conjunto de los enteros módulo p, p es un número primo) cuya ecuación es la siguiente y^2 = x^3 + a*x + b
2) Curvas definidas en el cuerpo terminado GF (2^n) cuya ecuación es la siguiente: y^2 + x*y = x^{A}3 + a*x^2 + b.
\vskip1.000000\baselineskip
Para cada una de estas dos clases de curvas, se definen las operaciones de adición de punto y duplicación de punto.
La adición de punto es la operación que a partir de dos puntos P y Q calcula la suma R=P+Q, R, es un punto de la curva cuyas coordenadas se expresan con ayuda de las coordenadas "Elliptic curve public key cryptosystem" por Alfred J. Menezes
La duplicación de punto es la operación que, a partir de un punto P, calcula el punto R=2*P, R es un punto de la curva cuyas coordenadas se expresan mediante coordenadas del punto P según fórmulas cuya expresión se facilita en la obra "Elliptic curve public key cryptosystem" por Alfred J. Menezes.
Las operaciones de adición de punto y duplicación de punto permiten definir una operación de multiplicación escalar: basándonos en un punto P que pertenece a una curva elíptica y un entero d, el resultado de la multiplicación escalar de P por d es el punto Q tal y como Q=d*P=P+P+... +P d veces.
La seguridad de los algoritmos de criptografía en curvas elípticas se basa en la dificultad del problema del logaritmo discreto en curvas elípticas, dicho problema consiste a partir de dos puntos Q y P que pertenecen a una curva elíptica E, en encontrar, si existe, un entero x como Q=x*P.
Existen numerosos algoritmos criptográficos que se basan en el problema del logaritmo discreto. Estos algoritmos pueden transponerse fácilmente a las curvas elípticas.
Así pues, es posible emplear algoritmos que garanticen la autenticación, la confidencialidad, el control de integridad y el intercambio de clave.
Un punto común a la mayoría de los algoritmos criptográficos que se basan en las curvas elípticas es que tienen como parámetro una curva elíptica definida en un cuerpo acabado y, un punto P que pertenece a esta curva elíptica. La clave privada es un entero d elegido de manera aleatoria. La clave pública es un punto de la curva Q tal y como Q=d*P. Estos algoritmos criptográficos hacen intervenir por lo general una multiplicación escalar en el cálculo de un punto R=d*T donde d es la clave secreta.
En el siguiente párrafo, se describe un algoritmo de codificación a base de curvas elípticas. Este esquema es similar al esquema de codificación, Un mensaje m se codifica de la siguiente manera:
El codificador elige un entero k de manera aleatoria y calcula los puntos k*P= (x1, y1) y k*Q= (x2, y2) de la curva, y el entero c= x2 + m. La codificación de m es el triplete (x1, y1, c). El decodificador que posee d decodifica m calculando:
(x'2, y'2) = d(x1, y1) y m = c-x'2
Para realizar las multiplicaciones escalares necesarias en los procedimientos de cálculo descritos anteriormente, existen varios algoritmos:
Algoritmo "doble and add";
Algoritmo "adición-sustracción";
Algoritmo con cadenas de adición;
Algoritmo con ventana;
Algoritmo con representación firmada.
Esta lista no es exhaustiva. El algoritmo más sencillo y el más utilizado es el algoritmo "double and add". El algoritmo "double and add" toma en entrada un punto.P que pertenece a una curva elíptica dada y un entero d. El entero d se anota = (d(t,d t-1),..., d(0)), donde (d(t),d (t-1),..., d(0)) - es la representación binaria de d, con d(t) el bit de peso fuerte y d(0) el bit de peso bajo. El algoritmo envía en salida el punto Q=d.P.
El algoritmo "double and add" incluye las siguientes etapas:
1)
Inicializar el punto Q con el valor P
2)
Para i que va de T1 a 0 ejecutar: Remplazar Q por 2Q Si d(i) = 1 remplazar Q por Q+P
3)
Enviar Q.
Se ha puesto de manifiesto que la implementación en tarjeta inteligente de un algoritmo de codificación de clave pública del tipo curva elíptica era vulnerable a ciertos ataques que consistían en un análisis diferencial de consumo de corriente que permitía encontrar la clave privada de decodificación. Estos ataques se llaman ataques DPA, acrónimo para Differential Power Analysis. El principio de estos ataques DPA se basa en el hecho de que el consumo de corriente del microprocesador que ejecuta las instrucciones varía según el dato manipulado.
En particular, cuando una instrucción manipula un dato cuyo bit particular es constante, el valor de los otros bits puede variar, el análisis del consumo de corriente vinculado a la instrucción pone de manifiesto que el consumo medio de la instrucción no es el mismo según que el bit particular adquiera el valor 0 ó 1. El ataque de tipo DPA permite, así pues, obtener informaciones suplementarias sobre los datos intermedios manipulados por el microprocesador de la tarjeta durante la ejecución de un algoritmo criptográfico. Estas informaciones suplementarias pueden, en determinados casos, permitir revelar los parámetros privados del algoritmo de decodificación, haciendo que el sistema criptográfico no sea seguro.
En el resto de este documento se describe un procedimiento de ataque DPA en un algoritmo de tipo curva elíptica que realiza una operación del tipo multiplicación escalar de un punto P por un entero d, el entero d es la clave secreta. Este ataque permite revelar directamente la clave secreta d. Por consiguiente, compromete seriamente la seguridad de la implementación de curvas elípticas en una tarjeta inteligente.
La primera etapa del ataque es el registro del consumo de corriente que corresponde a la ejecución del algoritmo "double and add" descrito anteriormente para N puntos distintos P (1), ..., P (N). En un algoritmo a base de curvas elípticas, el microprocesador de la tarjeta inteligente va a efectuar N multiplicaciones escalares d.P (1,_,d.P(N).
Para que resulte clara la descripción del ataque, comenzamos por describir un método que permite obtener el valor del bit d (t-1) de la clave secreta d, donde (d(t), d (t+1), ..., d(0)) es la representación binaria de d, con d(t)el bit de peso fuerte y d(0) el bit de peso bajo. A continuación, describimos un algoritmo que permite encontrar el valor
de d.
Agrupamos los puntos P(1) de P(N) según el valor del último bit de la abscisa de 4.P, donde P designa uno de los puntos P(1) en P(N). El primer grupo está constituido por los puntos P, tales como el último bit de la abscisa de 4.P es igual a 1.
\newpage
El segundo grupo está constituido por puntos P, de modo que el último bit de la abscisa de 4.P es igual a O. Calculamos la media de los consumos de corriente que corresponden a cada uno de los dos grupos, y calculamos la curva de diferencia entre estas dos medias.
Si el bit d (t-1) de d es igual a 0, entonces el algoritmo de multiplicación escalar anteriormente descrito calcula y pone en memoria el valor de 4.P. Esto significa que durante la ejecución del algoritmo en una tarjeta inteligente, el microprocesador de la tarjeta va a calcular efectivamente 4.P. En ese caso, en el primer grupo de mensaje el último bit del dato manipulado por el microprocesador sigue estando a 1, y en el segundo grupo de mensaje el último bit del dato manipulado sigue estando a O. Por tanto, la media de los consumos de corriente que corresponden a cada grupo es diferente. Aparece entonces en la curva de diferencia entre los 2 términos medio un pico de diferencial de consumo de corriente.
Si al contrario el bit d (t-1) de d es igual a 1, el algoritmo exponencial descrito anteriormente no calcula el punto 4.P. Durante la ejecución del algoritmo por la tarjeta inteligente, el microprocesador no manipula nunca el dato 4.P. Así pues, no aparece ningún pico diferencial de consumo.
Este método permite determinar el valor del bit d (t-1) de d.
El algoritmo descrito en el párrafo siguiente es una generalización del algoritmo anterior. Permite determinar el valor de la clave secreta d.
Definimos la entrada por N puntos anotados P(1) de P(N) que corresponden a N cálculos realizados por la tarjeta inteligente y la salida por un entero h.
Dicho algoritmo se efectúa de la siguiente manera en tres etapas:
1)
Ejecutar h=1;
2)
Para i que va de T1 a 1 ejecutar: 2)
2)1)
Clasificar los puntos P(1) de P(N) según el valor del último bit de la abscisa de (4*h).P P;
2)2)
Calcular la media de consumo de corriente para cada uno de los dos grupos.
2)3)
Calcular la diferencia entre las 2 medias;
2)4)
Si la diferencia evidencia un pico de diferencial de consumo, hacer h=h*2;
\vskip1.000000\baselineskip
En caso contrario hacer h=h*2+1;
Volver (dar la vuelta) h.
El algoritmo anterior proporciona un entero h como d=2*h o d=2*h+1. Para obtener el valor de d, basta a continuación con hacer una prueba a las dos hipótesis posibles.
El ataque de tipo DPA descrito permite encontrar la clave privada d.
El procedimiento de la invención consiste en la elaboración de una contramedida que permite precaverse contra el ataque DPA descrito anteriormente. Esta contramedida utiliza la representación de los puntos de la curva elíptica en coordenadas proyectivas.
Como se explicó anteriormente, el representante de un punto en coordenadas proyectivas no es único. Si el cuerpo terminado en el que se ha definido la curva elíptica incluye n elementos, es posible elegir un representante entre n-1 posibles.
Al elegir un representante aleatorio de un punto en el que se efectúa un cálculo, los valores intermedios del cálculo pasan a ser ellos mismos aleatorios y, por consiguiente imprevisibles desde el exterior, lo que hace imposible el ataque DPA anteriormente descrito.
El documento "Elliptic curve cryptosystems and their implementation", Journal of cryptology, US, New-York, NY, vol. 6, no. 4, septiembre de 1993 (1993-09), páginas 209-224, XP002069135, describe un procedimiento de contramedida que aplica un algoritmo de criptografía de clave pública de tipo curva elíptica utilizando la representación de los puntos de la curva elíptica en coordenadas proyectivas.
El procedimiento de contramedida según la invención consiste en una modificación de las operaciones de adición de punto y duplicación de punto de curvas elípticas definidas en los cuerpos terminados GF(p) para p primero y GF (2^n). La modificación de las operaciones de adición de punto y duplicación de punto de curvas elípticas definidas en los cuerpos terminados GF (p) para p primero p y GF(2^n) se aplica cualquiera que sea el algoritmo utilizado para realizar estas operaciones.
El procedimiento de contramedida consiste igualmente en la definición de 4 variantes en la operación de multiplicación escalar. Estas 4 variantes se aplican cualquiera que sea el algoritmo utilizado para realizar la operación de multiplicación escalar.
En este párrafo, se describe la modificación del algoritmo de duplicación de punto de una curva elíptica definida en el cuerpo terminado GF (p), donde p es un número primo. La curva elíptica se define por la siguiente ecuación:
y^{A}2 = x^3+a*x+b
donde a y b son parámetros enteros fijados en el punto inicial.
Las coordenadas proyectivas del punto Q= (X2, Y2, Z2) como Q=2.P con P= (X1, Y1, Z1) se calculan por el siguiente procedimiento en 6 etapas. En cada una de las etapas, los cálculos se efectúan módulo p.
1)
Calcular M = 3*X1^2 + a*Z1^4;
2)
Calcular Z2 = 2*Y1*Z1;
3)
Calcular S = 4*X1*Y1^2;
4)
Calcular X2 = M^2-2*S;
5)
Calcular T = 8*Y1^4;
6)
Calcular Y2 = M*(S-X2)-T.
\vskip1.000000\baselineskip
El procedimiento de contramedida consiste en una modificación del procedimiento anterior.
El nuevo procedimiento de duplicación de punto de una curva elíptica definida en el cuerpo terminado G\cdot(P) consiste en las 8 siguientes etapas:
1)
Elegir al azar un entero X como O<1<p
2)
Calcular X'1 = \lambda^{A}2*X1, Y'1 = \lambda^3*Y1 y Z'1 = \lambda*Z1;
3)
Calcular M = 3*X'1^2 + a*Z^{i}1^4;
4)
Calcular Z2 = 2*Y'1*Z'1;
5)
Calcular S = 4*X'1*Y'1^2;
6)
Calcular X2 = M^2-2*S;
7)
Calcular T = 8*Y'1^4;
8)
Calcular Y2 = M*(S-X2)-T.
\vskip1.000000\baselineskip
Más generalmente, el procedimiento de contramedida se aplica cualquiera que sea el procedimiento (seguidamente se anota A) utilizado para realizar la operación de duplicación de punto. El procedimiento A es reemplazado por el procedimiento A' en 3 etapas:
Entrada: un punto P = (X1, Y1, Z1) representado en coordenadas proyectivas.
Salida: un punto Q = (X2, Y2, Z2) representado en coordenadas proyectitas, tales como Q = 2.P
1)
Elegir al azar un entero X como O<\lambda<p;
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1 y Z'1 = \lambda*Z1, X'1, Y'1 y Z'1 al definir las coordenadas del punto P' = (X'1, Y'1, Z'1);
3)
Calcular Q = 2*P' mediante el algoritmo A.
\newpage
Puesto que las variables manipuladas en el transcurso de la ejecución del procedimiento A' es aleatorio, el ataque DPA anteriormente descrito ya no se aplica.
En este párrafo, se describe la modificación del algoritmo de duplicación de punto de una curva elíptica definida en el cuerpo terminado GF (p), donde p es un número primo.
Las coordenadas proyectivas del punto R-(X2,Y2,Z2) tal como R = P+Q con P = (X1, YO, Z0) y Q = (X1', Y1, Z1) se calculan mediante el siguiente procedimiento en 12 etapas. En cada una de las etapas, los cálculos se efectúan módulo p.
1)
Calcular U0 = X0*Z1^2;
2)
Calcular S0 = YO*Z1^3;
3)
Calcular U1 = X1*Z0^2;
4)
Calcular S1 = Y1*Z0^3;
5)
Calcular W = UO-U1;
6)
Calcular R = SO-S1;
7)
Calcular T = UO+U1;
8)
Calcular M = S0+S1;
9)
Calcular Z2 = ZO*Z1*W;
10)
Calcular X2 = R^2-T^W^2;
11)
Calcular V = T*W^2 - 2*X2;
12)
Calcular 2*Y2 = V*R-M*W^3.
\vskip1.000000\baselineskip
El procedimiento de contramedida consiste en una modificación del procedimiento anterior. El nuevo procedimiento de adición de punto de una curva elíptica definida en el cuerpo terminado GF (p) consiste en las 16 siguientes etapas:
1)
Elegir al azar un entero X como O<\lambda<p;
2)
Remplazar XO por \lambda^2*X0, YO' por \lambda^3*Y0 y ZO por \lambda*ZO;
3)
Elegir al azar un entero \mu tal como 0<\mu<p;
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 et Z1 por \mu*Z1;
Calcular 00 = X0*Z1^2;
Calcular S0 = Y0*Z1^3;
Calcular U1 = X1*Z0^2;
Calcular S1 = Y1*Z0^3;
Calcular W = UO-U1;
Calcular R = S0-S1;
Calcular T = U0+U1;
Calcular M = S0+51;
Calcular Z2 = Z0*Z1*W;
Calcular X2 = R^2-T*W^2;
Calcular V = T*W^2-2*X2;
Calcular 2*Y2 = V*R-M*W^3.
\vskip1.000000\baselineskip
Más generalmente, el procedimiento de contramedida se aplica cualquiera que sea el procedimiento (seguidamente se anota A) utilizado para realizar la operación de adición de punto. El procedimiento A es reemplazado por el procedimiento A' en 5 etapas:
Entrada: dos Puntos P = (X0, YO, Z0) y Q = (X1, Y1, Z1) representados en coordenadas proyectivas.
Salida: el punto R = (X2, Y2, Z2) representado en coordenadas proyectivas, tales como R = P+Q.
1)
Coger al azar un entero X tal como 0<\lambda<p;
2)
Remplazar XO por X^2*X0, YO por k^3*Y0 y Z0 por \lambda*ZO;
3)
Coger al azar un entero \mu tal y como 0<\mu<p;
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1f
5)
Cálculo de R = P+Q con el algoritmo A.
\vskip1.000000\baselineskip
Puesto que las variables manipuladas durante la ejecución del procedimiento A' es aleatorio, el ataque DPA anteriormente descrito ya no se aplica.
En este párrafo, se describe la modificación del algoritmo de duplicación de punto de una curva elíptica definida en el cuerpo terminado GF(2^{A}n). Por tanto, la curva elíptica se define mediante la siguiente ecuación:
y^2+x*y = x^3+a*x^2+b
donde a y b son parámetros que pertenecen al cuerpo terminado GF(2^{A}n) que se fijan al principio. Se define c por la ecuación:
c = b^(2A(n-2)).
Las coordenadas proyectivas del punto Q = (X2, Y2, Z2) tal como Q = 2.P con P = (X1, Y1, Z1) se calculan por el siguiente procedimiento en 4 etapas. En cada una de las etapas, los cálculos se efectúan en el cuerpo terminado GF(2^n)
Calcular Z2 = X1*Z1^2;
Calcular X2 = (X1+c*Z1^2)^{A}4;
Calcular U = Z2+X1^2+Y1*Z1;
Calcular Y2 = X1^4*Z2+U*X2.
\vskip1.000000\baselineskip
El procedimiento de la contramedida consiste en una modificación del procedimiento anterior. El nuevo procedimiento de duplicación de punto de una curva elíptica definida en el cuerpo terminado GF(2^{A}n) consiste en las 6 siguientes etapas:
1)
Coger al azar un elemento no nulo X de GF (2^n);
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z^{1} = \lambda*Z1;
3)
Calcular Z2 = X'1*Z'1^2;
4)
Calcular X2 = (X' 1+c*Z'1^2)^4;
5)
Calcular U = Z2+X' 1^2-Y'1*Z'1;
6)
Calcular Y2 = X'1^4*Z2+U*X2.
\newpage
Más generalmente, el procedimiento de contramedida se aplica cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar la operación de duplicación de punto. El procedimiento A se remplaza por el procedimiento A' en 3 etapas:
Entrada: un punto P = (X1,Y1,Z1) representado en coordenadas proyectivas.
Salida: un punto Q = (X2,Y2,Z2) representado en coordenadas proyectivas, tales como Q = 2.P
1) Coger al azar un elemento X no nulo de GF(2^n);
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z'1 = X*Z1, X'1, Y'1 y Z^{1}1 definen las coordenadas del punto P' = (X'1, Y'1, Z'1);
Cálculo de Q = 2.P' utilizando el algoritmo A. Puesto que las variables manipuladas durante la ejecución del procedimiento A' son aleatorias, el ataque DPA anteriormente descrito ya no se aplica.
En este párrafo, se describe la modificación del algoritmo de adición de punto de una curva elíptica definida en el cuerpo terminado GF(2^n).
Las coordenadas proyectivas del punto tal y como R = P+Q con P = (XO, YO, ZO) y Q = (X1, Y1, Z1) se calculan por el siguiente procedimiento en 12 etapas. En cada una de las etapas, los cálculos se efectúan en el cuerpo terminado GF(2^n).
Calcular U0 = X0*Z1^2;
Calcular SO = Y0*Z1^3;
Calcular U1 = X1*Z0^2;
Calcular S1 = Y1*Z0^3;
Calcular W = UO+U1;
Calcular R = SO+S1;
Calcular L = ZO*W;
Calcular V = R*X1+L*Y1;
Calcular Z2 = L*ZI;
Calcular T = R+Z2;
Calcular X2 = a*Z2^2+T*R+W^3;
Calcular Y2 = T*X2+V*L^2.
\vskip1.000000\baselineskip
El procedimiento de la contramedida consiste en una modificación del procedimiento anterior. El nuevo procedimiento de adición de punto de una curva elíptica definida en el cuerpo terminado GF(2^n) consiste en las 14 etapas:
1)
Coger al azar un elemento 2 no nulo de GF (2^n);
2)
Remplazar XO por X^2*X0, YO por k^3*Y0 y Z0 por K*ZO;
3)
Coger al azar un elemento no nulo de GF(2^n);
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1;
5)
Calcular U0–X0*Z1^2;
6)
Calcular S0 = Y0*Z1^3;
7)
Calcular U1 = X1*Z0^2;
8)
Calcular S1 = Y1*Z0^3;
9)
Calcular W = UO+U1;
10)
Calcular R = S0+S1;
11)
Calcular L = ZO*W;
12)
Calcular V = R*X1+L*Y1;
13)
Calcular Z2 = L*Z1;
14)
Calcular T = R+Z2;
15)
Calcular X2 = a*Z2^2+T*R+W^3;
16)
Calcular Y2 = T*X2+V*L^2;
\vskip1.000000\baselineskip
Más generalmente, el procedimiento de contramedida se aplica cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar la operación de adición de punto. El procedimiento A se remplaza por el procedimiento A' en 5 etapas:
Entrada: dos puntos P = (X0, Y0, Z0) y Q. (X1, Y1, Z1) representados en coordenadas proyectivas.
Salida: el punto R = (X2, Y2, Z2) representado en coordenadas proyectivas, tales como R = P+Q
1)
Coger al azar un elemento \lambda no nulo de GF (2^n);
2)
Remplazar XO por \lambda^2*X0, YO por \lambda^3*Y0 y ZO por \lambda*ZO;
3)
Coger al azar un elemento p. no nulo de GF(2^n);
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1;
5)
Cálculo de R = P+Q con el algoritmo A.
\vskip1.000000\baselineskip
Puesto que las variables manipuladas durante la ejecución del procedimiento A' son aleatorias, el ataque DPA anteriormente descrito ya no se aplica.
El procedimiento de contramedida consiste también en la definición de 4 variantes en la operación de multiplicación escalar. La operación de multiplicación escalar recurre a la operación de duplicación de punto anotada Do y a la operación de adición de punto anotado Ad. La operación de duplicación de punto modificada descrita anteriormente se anota Do' y la operación de adición de punto modificada descrita anteriormente se anota Ad'.
En este párrafo se describe la primera variante de modificación de la operación de multiplicación escalar. La primera variante consiste en hacer aleatoria la representación de un punto al principio del procedimiento de cálculo. En el caso de la utilización del algoritmo "double and add", el procedimiento modificado de multiplicación escalar es el siguiente en 5 etapas. El procedimiento toma en entrada un punto P y un entero d. El entero d se anota d = (d t), d T1),..., d (0)), donde (d(t), d(T1),..., d(0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d (0) el bit de peso bajo. El algoritmo envía a la salida el punto Q = d.P.
Esta primera variante se ejecuta en cinco etapas:
1)
Inicializar el punto Q con el valor P;
2)
Remplazar Q por 2.Q utilizando el procedimiento Do';
3)
Si d(t-1) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
4)
Para i que va de t-2 a 0 ejecutar:
4a)
Remplazar Q por 2Q;
4b)
Si d(i) = 1 remplazar Q por Q+P;
5)
Enviar Q.
Más generalmente, el procedimiento de la primera variante descrito anteriormente se aplica a la operación de multiplicación escalar, cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar el cálculo de la multiplicación escalar. El procedimiento A recurre a las operaciones Do y Ad definidas anteriormente.
La primera variante de contramedida consiste en remplazar la primera operación Do por Do' definido anteriormente.
\global\parskip0.950000\baselineskip
La primera variante permite, así pues, garantizar que las variables intermedias manipuladas durante la operación de multiplicación escalar son aleatorias. Esto hace inaplicable el ataque DPA descrito anteriormente.
En este párrafo se describe la segunda variante de modificación de la operación de multiplicación escalar.
La segunda variante consiste en hacer aleatoria la representación de un punto al principio del procedimiento de cálculo y al final del procedimiento de cálculo. En el caso de la utilización del algoritmo "double and add", el procedimiento modificado de multiplicación escalar es el siguiente en 7 etapas. El procedimiento toma en entrada un punto P y un entero d. El entero d se anota d = (d (t), d (t-1), ..., d (0)), donde (d(t), d(t-1), ..., d (0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d(0) el bit de peso bajo. El algoritmo envía a la salida el punto Q = d.P.
Esta segunda variante se ejecuta en cinco etapas:
1)
Inicializar el punto Q con el valor P;
2)
Remplazar Q por 2.Q utilizando el procedimiento Do';
3)
Si d(t-1) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
4)
Para ir de t-2 a 1 ejecutar:
4a)
Remplazar Q por 2Q;
4b)
Si d(i) = 1 remplazar Q por 4+P;
5)
Remplazar Q por 2.Q utilizando el procedimiento Do';
6)
Si d(0) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
7)
Enviar Q.
\vskip1.000000\baselineskip
Más generalmente, el procedimiento de la segunda variante descrita anteriormente se aplica a la operación de multiplicación escalar, cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar el cálculo de la multiplicación escalar. El procedimiento A recurre a las operaciones Do y Ad definidas anteriormente. La segunda variante de contramedida consiste en remplazar la primera operación Do por Do' definida anteriormente y la primera operación Do par Do'.
La segunda variante permite, así pues, garantizar que las variables intermedias manipuladas durante la operación de multiplicación escalar son aleatorias. La ventaja de la segunda variante es una seguridad incrementada contra ataques DPA al final de algoritmo de multiplicación escalar. En particular, la segunda variante hace inaplicable el ataque DPA anteriormente descrito.
En este párrafo se describe la tercera variante de modificación de la operación de multiplicación escalar.
La tercera variante consiste en hacer aleatoria la representación de cada uno de los puntos manipulados durante el procedimiento de multiplicación escalar. En el caso de la utilización del algoritmo "double and add", el procedimiento modificado de multiplicación escalar es el siguiente en 4 etapas. El procedimiento toma en entrada un punto P y un entero d. El entero d se anota d = (d(t), d (t-1), ..., d (0)), donde (d(t), d(t-1), ..., d (0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d (0) el bit de peso bajo. El algoritmo envía a la salida el punto Q = d.P.
Esta segunda variante se ejecuta en cinco etapas:
1)
Inicializar el punto Q con el valor P;
2)
Para i que va de t-2 a 0 ejecutar:
2)
Remplazar Q por 2.Q utilizando el procedimiento Do';
6)
Si d(i) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
3)
Enviar Q.
\global\parskip1.000000\baselineskip
Más generalmente, el procedimiento de la tercera variante descrita anteriormente se aplica a la operación de multiplicación escalar, cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar el cálculo de la multiplicación escalar. El procedimiento A recurre a las operaciones Do y Ad definidas anteriormente.
La tercera variante de contramedida consiste en remplazar todas las operaciones Do por Do' y Ad por Ad'.
La tercera variante permite, así pues, garantizar que las variables intermedias manipuladas durante la operación de multiplicación escalar sean aleatorias. La ventaja de la tercera variante con relación a la segunda variante es una mayor seguridad contra los ataques DPA en las operaciones intermedias del procedimiento de multiplicación escalar. En particular, la tercera variante hace inaplicable el ataque DPA anteriormente descrito.
En este párrafo se describe la cuarta variante de modificación de la operación de multiplicación escalar. La cuarta variante consiste en hacer aleatoria la representación de cada uno de los puntos manipulados durante el procedimiento de multiplicación escalar. La cuarta variante es una modificación de la tercera variante por la utilización de un contador, dicho contador permite determinar las etapas del algoritmo de multiplicación escalar para las cuales la representación de un punto pasa a ser aleatoria. Para ello, se define un parámetro de seguridad T. En la práctica se puede tomar T = 5. En el caso de la utilización del algoritmo "double and add", el procedimiento modificado de multiplicación escalar es el siguiendo en 4 etapas. El procedimiento toma en entrada un punto P y un entero d.
El entero d se anota d = (d(t),d(t-1),..., d(0)), de donde (d(t),d(t-1),...,d(0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d(0) el bit, de peso bajo. El algoritmo envía a la salida el punto Q = d.P.
La cuarta variante se ejecuta en tres etapas:
1)
Inicializar el punto Q con el valor P;
2)
Inicializar el contador co al valor T.
3)
Para i que va de t-1 a 0 ejecutar:
3a)
Remplazar Q por 2Q utilizando el procedimiento Do si co es diferente de 0, en caso contrario utilizar el procedimiento Do'.
6)
Si d(i) = 1 remplazar Q por Q+P utilizando el procedimiento Ad.
3c)
Si co = 0 entonces reinicializar el contador con el valor T.
3d)
Decrementar el contador co.
3)
Enviar Q.
\vskip1.000000\baselineskip
Más generalmente, el procedimiento de la tercera variante descrita anteriormente se aplica a la operación de multiplicación escalar, cualquiera que sea el procedimiento (anotado a continuación A) utilizado para realizar el cálculo de la multiplicación escalar. El procedimiento A recurre a las operaciones Do y Ad definidas anteriormente.
La variante de la tercera contramedida consiste en inicializar un contador co al valor T. La operación Do se remplaza por la operación Do' si el valor del contador es igual a 0.
Después de cada ejecución de las operaciones Do ó Do', el contador se reinicializa al valor T si alcanzó el valor 0; 0; se decrementa a continuación.
La cuarta variante permite, así pues, garantizar que las variables intermedias manipuladas durante la operación de multiplicación escalar son aleatorias. La ventaja de la cuarta variante con relación a la tercera variante es una mayor rapidez de ejecución. La cuarta variante hace inaplicable el ataque DPA descrito anteriormente.
La aplicación de la una de las 4 alternativas anteriormente descritas permite, así pues, proteger cualquier algoritmo criptográfico basado en las curvas elípticas contra el ataque de tipo DPA anteriormente descrito.

Claims (13)

1. Procedimiento de contramedida en un componente electrónico que aplica un algoritmo de criptografía de clave pública de tipo curva elíptica que utiliza la representación de los puntos de dicha curva elíptica en coordenadas proyectivas que consisten en representar un punto P de la curva elíptica por los datos (X, Y, Z) tales como x = X/Z^2 y
y = Y/Z^3, x e y son los datos del punto de la curva elíptica en coordenadas afines, dicha curva incluye n elementos y se define en un cuerpo terminado GF (p), p es un número primo, dicha curva tiene como ecuación y^2 = x^3+a*x+b, o se define en un cuerpo terminado GF (2^{A}n), dicha curva tiene como ecuación y^2+x*y = x^3+a*x^2+b, donde a y b son parámetros enteros fijados al principio, dicho procedimiento elige un representante entero aleatorio entre n elementos posibles en coordenadas proyectivas de la curva elíptica y consiste en una modificación de la operación de duplicación de puntos, de adición de dichos puntos y de la operación de multiplicación escalar, caracterizada en que el procedimiento de contramedida se aplica cualquiera que sea el procedimiento o el algoritmo, anotado a continuación A, utilizado para realizar la operación de duplicación de punto, el procedimiento A está remplazado por el procedimiento A' en 3 etapas, utilizando una entrada definida por un punto P = (X1, Y1, Z1) representado en coordenadas proyectivas y una salida definida por un punto Q = (X2, Y2, Z2) representada por coordenadas proyectivas, tales como Q = 2.P, de la curva elíptica, dichas etapas son las siguientes:
1)
Coger al azar un entero \lambda tal como O<\lambda<p;
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z'1 = \lambda*Z1, X'1, Y'1 y Z^{1}1 que definen las coordenadas del punto P' = (X'1, Y'1, Z'1);
3)
Calcular Q2*P' con el algoritmo A.
\vskip1.000000\baselineskip
2. Procedimiento de contramedida según la reivindicación 1 caracterizado porque el algoritmo de duplicación de puntos, u operaciones de duplicación de puntos de una curva elíptica definida en dicho cuerpo terminado GP (p) se efectúa en ocho etapas:
1)
Coger al azar un entero X tal como 0<\lambda<p;
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z^{1}1 = \lambda*Z1;
3)
Calcular M = 3*X'1^2+a*Z'1^4;
4)
Calcular Z2 = 2*Y'1*V1;
5)
Calcular Z2 = X'1*Z'1^2;
6)
Calcular X2 = M^2-2*S;
7)
Calcular T = 8*Y'1^4;
8)
Calcular Y2 = M*(S-X2)-T.
\vskip1.000000\baselineskip
3. Procedimiento de contramedida según la reivindicación 1 caracterizado porque más generalmente el procedimiento de la contramedida se aplica cualquiera que sea el procedimiento o el algoritmo anotado a continuación A utilizado para realizar la operación de adición de puntos en una curva elíptica definido en dicho cuerpo terminado GF (p), y se efectúa en cinco etapas:
1)
Coger al azar un elemento \lambda no nulo de GF (2^n);
2)
Remplazar XO por X^2*X0, YO por k^3*Y0 y Z0 por \lambda*ZO;
3)
Coger al azar un elemento no nulo de GF(2^{e}n);
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1;
5)
Cálculo de R = P+Q con el algoritmo A, con P = (X0, Y0, Z0) y Q = (X1, Y1, Z1).
\vskip1.000000\baselineskip
4. Procedimiento de contramedida según la reivindicación 1 caracterizado porque la modificación del algoritmo de adición de punto de una curva elíptica definida en el cuerpo terminado GF (p), donde p es un número primo, es la siguiente: las coordenadas proyectivas del punto R = (X2, Y2, Z2) tales como R = P+Q con P. (X0, YO, Z0) y Q = (X1, Y1, Z1) se calculan por el siguiente procedimiento en 16 etapas, en cada una de las etapas, los cálculos se efectúan módulo p:
1)
Coger al azar un entero que pertenezca a dicho cuerpo terminado GF(p) tal como 0<\lambda<p
2)
Remplazar XO por \lambda^2*X0, YO por \lambda^3*Y0 y ZO por \lambda*ZO;
3)
Coger al azar un entero \mu tal y como 0<\mu<p;
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1;
5)
Calcular U0—X0*Z1^2;
6)
Calcular SO = YO*Z1^3;
7)
Calcular U1 = X1*Z0^2;
8)
Calcular S1 = Y1*Z0^3;
9)
Calcular W = U0-U1;
10)
Calcular R = SO-S1;
11)
Calcular T = U0+U1;
12)
Calcular M = S0+S1;
13)
Calcular Z2 = Z0*Z1*W;
14)
Calcular X2 = R^2-T*W^2;
15)
Calcular V = T+W^2-2*X2)
16)
Calcular 2*Y2 = V*R-M*W^3.
\vskip1.000000\baselineskip
5. Procedimiento de contramedida según la reivindicación 1 caracterizado porque más generalmente la modificación del algoritmo de duplicación de punto de una curva elíptica definida en el cuerpo terminado GF(2^n), donde n es un número primo, es la siguiente: las coordenadas proyectivas del punto P = (X1, Y1, Z1) tales como R = P+Q y Q = (X2, Y2, Z2) se calculan mediante el siguiente procedimiento en 3 etapas, en cada una de las etapas, los cálculos se efectúan módulo p:
1)
Coger al azar un elemento \lambda no nulo de GF (2^n);
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z'1 = 1*Z1, X'1, Y'1 y Z'1 definen las coordenadas del punto P' = (X'1, Y'1, Z'1);
3)
Cálculo de Q = 2.P' con el algoritmo A.
\vskip1.000000\baselineskip
6. Procedimiento de contramedida según la reivindicación 1 caracterizado porque el procedimiento de contramedida consiste en una modificación del procedimiento anterior, el procedimiento de duplicación de punto de una curva elíptica se define en el cuerpo terminado GF (2^n), y consiste en las 6 siguientes etapas:
1)
Coger al azar un elemento no nulo \lambda de GF (2^n);
2)
Calcular X'1 = \lambda^2*X1, Y'1 = \lambda^3*Y1, Z^{1}1 = \lambda*Z1;
3)
Calcular Z2- X'1*Z'1^{A}2;
4)
Calcular X2 = (X'1+c*Z'1^2)^4)
5)
Calcular U = Z2-X'1^2+Y'1*Z^{1}1;
6)
Calcular Y2 = X'1^4*Z2+U*X2.
\vskip1.000000\baselineskip
7. Procedimiento de contramedida según la reivindicación 1 caracterizado porque más generalmente la modificación del algoritmo de adición de punto de una curva elíptica definida en el cuerpo terminado GF(2^n), donde n es un número primo, es la siguiente: Las coordenadas proyectivas del punto P = (X0, YO, Z0) y Q = (X1, Y1, Z2) en entrada y R = (X2, Y2, Z2) se calculan mediante el siguiente procedimiento en 5 etapas, los cálculos se efectúan con el módulo;
1)
Coger al azar un elemento 1 no nulo de GF(2^n);
2)
Remplazar XO por \lambda^2*X0, YO por \lambda^3*Y0 y ZO por \lambda*ZO;
3)
Coger al azar un elemento \mu no nulo de Gp(2^n);
4)
Remplazar X1 por \mu^2*X1, Y1 por \mu^3*Y1 y Z1 por \mu*Z1;
5)
Cálculo de R = P+Q con el algoritmo A.
\vskip1.000000\baselineskip
8. Procedimiento de contramedida según la reivindicación 1 caracterizado porque el procedimiento de contramedida consiste en una modificación del procedimiento anterior, el procedimiento de adición de punto de una curva elíptica se define en el cuerpo terminado GF (2^n), y consiste en las 16 siguientes etapas:
1)
Coger al azar un elemento \lambda no nulo de GF(2n);
2)
Remplazar XO por \lambda^2*X0, YO por \lambda^3*Y0 y ZO por \lambda*ZO;
3)
Coger al azar un elemento \mu no nulo de GF(2^n);
4)
Remplazar X1 por \mu^2*X1: Y1 por \mu^3*Y1 et Z1 por \mu*Z1;
5)
Calcular U0 = X0*Z1^2;
6)
Calcular SO = Y0*Z1^3;
7)
Calcular U1 = X1*Z0^2;
8)
Calcular S1 = Y1*Z0'3;
9)
Calcular W = UO+U1;
10)
Calcular R = SO+S1;
11)
Calcular L = ZO*W;
12)
Calcular V = R*X1+L*Y1;
13)
Calcular Z2 = L*Z1;
14)
Calcular T = R+Z2;
15)
Calcular X2 = a*Z2^2+T*R+W^3;
16)
Calcular Y2 = T*X2+V*L^2.
\vskip1.000000\baselineskip
9. Procedimiento de contramedida según la reivindicación 1 caracterizado porque una primera variante de modificación de la operación de multiplicación escalar consiste en hacer aleatoria la representación de un punto al principio del procedimiento de cálculo por la utilización del algoritmo "double and add" el procedimiento modificado de multiplicación escalar es el siguiente en 5 etapas, tomando en entrada un punto P y un entero d, el entero d se anota d = (d(t), d(t-1), ..., d(0)), donde (d(t)d (t-1), ..., d (0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d (0) el bit de peso bajo, el algoritmo que envía a la salida el punto Q = d.P, el procedimiento Do es el procedimiento de duplicación de puntos, el procedimiento Do' es el procedimiento de duplicación de los puntos modificados según cualquiera de las reivindicaciones anteriores, esta primera variante se ejecuta en cinco etapas:
1)
Inicializar el punto Q con el valor P;
2)
Remplazar Q por 2.Q utilizando el procedimiento Do';
3)
Si d(t-1) = 1 remplazar Q por Q+P utilizando el procedimiento Ad, el procedimiento Ad es el procedimiento de adición de puntos;
\global\parskip0.890000\baselineskip
4)
Para i que va de t-2 a 0 ejecutar:
4a)
Remplazar Q por 2Q;
4b)
Si d(i) = 1 remplazar Q por Q+P;
5)
Enviar Q.
\vskip1.000000\baselineskip
10. Procedimiento de contramedida según la reivindicación 1 caracterizado porque una segunda variante de la operación de multiplicación escalar consiste en hacer aleatoria la representación de un punto al principio del procedimiento de cálculo y al final del procedimiento de cálculo, esto en el caso de la utilización del algoritmo "double and add" el procedimiento modificado de multiplicación escalar es el siguiente en 7 etapas, tomando en entrada un punto P y un entero d, el entero d se anota d = (d(t), d(t-1), ..., d(0)), donde (d (t), d(t-1), ..., d (0)) es la representación binaria de d, con d(t) el bit de peso fuerte y d (0) el bit de peso bajo, el algoritmo que envía a la salida el punto Q = d.P, dicha segunda variante se ejecuta en siete etapas:
1)
Inicializar el punto Q con el valor P;
2)
Remplazar Q por 2.Q utilizando el procedimiento Do';
3)
Si d(t-1) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
4)
Para i que va de t-2 a 1 ejecutar:
4a)
Remplazar Q por 2Q;
4b)
Si d(i) = 1 remplazar Q por Q+P;
5)
Remplazar Q por 2.Q utilizando el procedimiento Do';
6)
Si d(0) = 1 remplazar Q por Q+P utilizando el procedimiento Ad;
7)
Enviar Q.
\vskip1.000000\baselineskip
11. Procedimiento de contramedida según la pretensión 1 caracterizado porque una tercera variante de la operación de multiplicación escalar se realiza en tres etapas:
1)
Inicializar el punto Q con el valor P;
2)
Para i que va de t-2 a 0 ejecutar:
2a)
Remplazar Q por 2.Q utilizando el procedimiento Do';
2b)
Si d(i) = 1 remplazar Q por Q+P utilizando el procedimiento Ad', Ad' es el procedimiento de adición de los puntos modificados según las anteriores reivindicaciones;
3)
Enviar Q.
\vskip1.000000\baselineskip
12. Procedimiento de contramedida según la pretensión 1 caracterizado porque la cuarta variante de la operación de multiplicación escalar se realiza en tres etapas:
1)
Inicializar el punto Q con el valor P;
2)
Inicializar el contador co al valor T.
3)
Para i que va de t-1 a 0 ejecutar:
3a)
Remplazar Q por 2Q utilizando el procedimiento Do si co es diferente de 0, en caso contrario utilizar el procedimiento Do'.
3b)
Si d(i) = 1 remplazar Q por Q+P utilizando el procedimiento Ad.
3c)
Si co = 0 entonces reinicializar el contador co al valor T.
3d)
Decrementar el contador co.
4)
Enviar Q.
\vskip1.000000\baselineskip
13. Componente electrónico, por ejemplo tarjeta inteligente, que contiene medios para aplicar el procedimiento según cualquiera de las reivindicaciones anteriores.
ES00910928T 1999-03-26 2000-03-13 Procedimiento de contramedida en un componente electronico que emplea un algoritmo de codificacion con clave publica de tipo curva eliptica. Expired - Lifetime ES2331456T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9903921 1999-03-26
FR9903921A FR2791497B1 (fr) 1999-03-26 1999-03-26 Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique

Publications (1)

Publication Number Publication Date
ES2331456T3 true ES2331456T3 (es) 2010-01-05

Family

ID=9543775

Family Applications (1)

Application Number Title Priority Date Filing Date
ES00910928T Expired - Lifetime ES2331456T3 (es) 1999-03-26 2000-03-13 Procedimiento de contramedida en un componente electronico que emplea un algoritmo de codificacion con clave publica de tipo curva eliptica.

Country Status (11)

Country Link
US (1) US7162033B1 (es)
EP (1) EP1166494B1 (es)
JP (1) JP2002540483A (es)
CN (1) CN1345495A (es)
AT (1) ATE434879T1 (es)
AU (1) AU3296500A (es)
DE (1) DE60042448D1 (es)
ES (1) ES2331456T3 (es)
FR (1) FR2791497B1 (es)
MX (1) MXPA01009498A (es)
WO (1) WO2000059156A1 (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3796993B2 (ja) 1998-12-22 2006-07-12 株式会社日立製作所 楕円曲線暗号実行方法及び装置並びに記録媒体
FR2828779B1 (fr) * 2001-08-17 2004-01-16 Gemplus Card Int Procede de calcul universel applique a des points d'une courbe elliptique
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
JP4284320B2 (ja) 2003-08-06 2009-06-24 富士通株式会社 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム
US7961874B2 (en) * 2004-03-03 2011-06-14 King Fahd University Of Petroleum & Minerals XZ-elliptic curve cryptography with secret key embedding
US7961873B2 (en) * 2004-03-03 2011-06-14 King Fahd University Of Petroleum And Minerals Password protocols using XZ-elliptic curve cryptography
US7379546B2 (en) * 2004-03-03 2008-05-27 King Fahd University Of Petroleum And Minerals Method for XZ-elliptic curve cryptography
EP1844392B1 (en) 2005-01-21 2012-07-04 Certicom Corp. Elliptic curve random number generation
KR100723863B1 (ko) * 2005-11-12 2007-05-31 한국전자통신연구원 랜덤화한 프로베니우스 분해방법을 이용한 차분 공격 방지방법 및 그 장치
JP4513752B2 (ja) * 2006-01-16 2010-07-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4682852B2 (ja) * 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
DE102006013515A1 (de) * 2006-03-23 2007-10-04 Siemens Ag Kryptographisches Verfahren mit elliptischen Kurven
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
US8233615B2 (en) 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
CN101630244B (zh) * 2009-07-28 2012-05-23 哈尔滨工业大学深圳研究生院 一种流水线型椭圆曲线双标量乘法系统及方法
WO2011033672A1 (ja) * 2009-09-18 2011-03-24 株式会社東芝 演算装置、方法およびプログラム
US8509426B1 (en) 2010-12-01 2013-08-13 King Fahd University Of Petroleum And Minerals XZ-elliptic curve cryptography system and method
US8699701B2 (en) 2010-12-01 2014-04-15 King Fahd University Method of performing XZ-elliptic curve cryptography for use with network security protocols
US8413906B2 (en) 2011-05-22 2013-04-09 King Saud University Countermeasures to secure smart cards
CN102394747B (zh) * 2011-11-23 2015-01-14 上海爱信诺航芯电子科技有限公司 一种快速嵌入明文到椭圆曲线上一点的方法
FR3024808B1 (fr) * 2014-08-05 2016-07-29 Inside Secure Procede de cryptographie sur courbe elliptique comprenant une detection d’erreur
WO2016034912A1 (en) 2014-09-05 2016-03-10 Umm Al-Qura University Method and apparatus for scalar multiplication secure against differential power attacks
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
FR3033965B1 (fr) * 2015-03-18 2018-12-07 Maxim Integrated Products, Inc. Systèmes et procédés de commande de dispositifs de cryptage sur courbe elliptique sécurisés
US10181944B2 (en) 2015-06-16 2019-01-15 The Athena Group, Inc. Minimizing information leakage during modular exponentiation and elliptic curve point multiplication
EP3208789B1 (en) * 2016-02-22 2020-08-05 Eshard Method of protecting a circuit against a side-channel analysis
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307935B1 (en) * 1991-09-17 2001-10-23 Apple Computer, Inc. Method and apparatus for fast elliptic encryption with direct embedding
US5497423A (en) * 1993-06-18 1996-03-05 Matsushita Electric Industrial Co., Ltd. Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication
AU3073595A (en) * 1994-07-29 1996-03-04 Certicom Corp. Elliptic curve encryption systems

Also Published As

Publication number Publication date
DE60042448D1 (de) 2009-08-06
EP1166494A1 (fr) 2002-01-02
MXPA01009498A (es) 2002-06-04
WO2000059156A1 (fr) 2000-10-05
CN1345495A (zh) 2002-04-17
ATE434879T1 (de) 2009-07-15
EP1166494B1 (fr) 2009-06-24
FR2791497B1 (fr) 2001-05-18
JP2002540483A (ja) 2002-11-26
US7162033B1 (en) 2007-01-09
AU3296500A (en) 2000-10-16
FR2791497A1 (fr) 2000-09-29

Similar Documents

Publication Publication Date Title
ES2331456T3 (es) Procedimiento de contramedida en un componente electronico que emplea un algoritmo de codificacion con clave publica de tipo curva eliptica.
Liardet et al. Preventing SPA/DPA in ECC systems using the Jacobi form
US7764785B2 (en) Method for communicating securely over an insecure communication channel
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
CN102664732B (zh) Cpk公钥体制抗量子计算攻击的实现方法及系统
ES2159274T3 (es) Procedimiento de calculo para criptografiar una curva eliptica.
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
ES2286910T3 (es) Procedimiento criptografico de claves publica y privada.
US7379546B2 (en) Method for XZ-elliptic curve cryptography
JP7123959B2 (ja) 楕円曲線点乗算デバイス及び方法
Gowda Innovative enhancement of the Caesar cipher algorithm for cryptography
ES2247326T3 (es) Procedimiento de contramedida en un componente electrico que utiliza un algoritmo criptografico de tipo llave publica en curva eliptica.
JP2007036493A (ja) デジタル署名生成装置、デジタル署名検証装置、鍵生成装置、デジタル署名生成方法、デジタル署名検証方法、鍵生成方法、デジタル署名生成プログラム、デジタル署名検証プログラム及び鍵生成プログラム
KR20150107784A (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
US8102998B2 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
US20080273695A1 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
JP2007187958A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2020515093A (ja) 符号化加算のための計算デバイス
ES2250203T3 (es) Procedimiento de contramedida en un componente electronico que pone en aplicacion un algoritmo de cifrado con clave publica de tipo rsa.
Bessalov et al. Modeling CSIKE Algorithm on Non-Cyclic Edwards Curves
ES2231389T3 (es) Procedimiento de mejora de la seguridad de esquemas de cifrado con clave publica.
US20060282491A1 (en) Method for countermeasuring by masking the accumulators in an electronic component while using a public key cryptographic algorithm
Akl et al. Parallel Real-Time Cryptography: Beyond Speedup II.
US20060056619A1 (en) Method for universal calculation applied to points of an elliptic curve