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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7228—Random curve mapping, e.g. mapping to an isomorphous or projective curve
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- 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.
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
Este sistema de codificación se basa en la
dificultad del problema de la suma de subconjuntos.
\vskip1.000000\baselineskip
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
Este sistema de codificación se basa en la
dificultad del logaritmo discreto en un cuerpo terminado.
\vskip1.000000\baselineskip
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.
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:
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.
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)
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)
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 |
-
1999
- 1999-03-26 FR FR9903921A patent/FR2791497B1/fr not_active Expired - Fee Related
-
2000
- 2000-03-13 DE DE60042448T patent/DE60042448D1/de not_active Expired - Lifetime
- 2000-03-13 WO PCT/FR2000/000603 patent/WO2000059156A1/fr active Application Filing
- 2000-03-13 EP EP00910928A patent/EP1166494B1/fr not_active Expired - Lifetime
- 2000-03-13 CN CN00805495A patent/CN1345495A/zh active Pending
- 2000-03-13 AU AU32965/00A patent/AU3296500A/en not_active Abandoned
- 2000-03-13 US US09/937,396 patent/US7162033B1/en not_active Expired - Fee Related
- 2000-03-13 JP JP2000608545A patent/JP2002540483A/ja active Pending
- 2000-03-13 AT AT00910928T patent/ATE434879T1/de not_active IP Right Cessation
- 2000-03-13 ES ES00910928T patent/ES2331456T3/es not_active Expired - Lifetime
- 2000-03-13 MX MXPA01009498A patent/MXPA01009498A/es active IP Right Grant
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 |