ES2159274T3 - Procedimiento de calculo para criptografiar una curva eliptica. - Google Patents

Procedimiento de calculo para criptografiar una curva eliptica.

Info

Publication number
ES2159274T3
ES2159274T3 ES00949685T ES00949685T ES2159274T3 ES 2159274 T3 ES2159274 T3 ES 2159274T3 ES 00949685 T ES00949685 T ES 00949685T ES 00949685 T ES00949685 T ES 00949685T ES 2159274 T3 ES2159274 T3 ES 2159274T3
Authority
ES
Spain
Prior art keywords
lambda
value
point
division
added
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
ES00949685T
Other languages
English (en)
Other versions
ES2159274T1 (es
Inventor
Erik Knudsen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Card Systems SA France
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Card Systems SA France filed Critical Oberthur Card Systems SA France
Publication of ES2159274T1 publication Critical patent/ES2159274T1/es
Application granted granted Critical
Publication of ES2159274T3 publication Critical patent/ES2159274T3/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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)
  • Optical Communication System (AREA)

Abstract

Procedimiento de criptografía puesto en práctica entre dos entidades que intercambian informaciones a través de un canal de comunicación no seguro, del tipo que comprende, al menos, una fase operativa consistente en multiplicar un punto de orden impar de una curva elíptica no supersingular por un entero, caracterizado porque, con objeto de realizar el intercambio de informaciones a través del canal de comunicación no seguro, tal fase operativa comprende adiciones y divisiones por dos de puntos de la citada curva elíptica, en donde la adición de puntos es una operación conocida y la división por dos de un punto P se define como el punto único D de orden impar tal que [2] D=P, representándose dicho punto por [1/] P, y la operación de división por 2:[1/2].

Description

Procedimiento de cálculo para criptografiar una curva elíptica.
La invención se refiere a un procedimiento de criptografía puesto en práctica entre dos entidades que intercambian informaciones a través de un canal de comunicación no protegido, por ejemplo, una red cableada, o hertziana, y que permite asegurar la confidencialidad y la integridad de las transferencias de informaciones entre estas dos entidades. La invención se refiere, de modo más particular, a un perfeccionamiento de los sistemas de crioptografía que ponen en práctica cálculos en una curva elíptica. El perfeccionamiento permite, principalmente, reducir los tiempos de cálculo.
Se conoce un protocolo de criptografía, utilizado, de modo más particular, para realizar un intercambio de claves protegido entre dos entidades. Éste es conocido con la denominación de "Intercambio de Claves de Diffie-Hellmann" o "ECDH". Su puesta en práctica necesita la utilización de un grupo en el sentido matemático del término. Una curva elíptica del tipo:
y^{2} + xy = x^{3} + \alpha x^{2} + \beta
puede constituir un grupo utilizable en un procedimiento de este tipo.
Se sabe que si P = (x, y) pertenece a la curva elíptica E, puede definirse un "producto" o "multiplicación escalar" del punto P de E por un entero m. Esta operación se define como sigue:
[m] \ P = P + P + P +...+ P \ (m \ veces)
Se sabe que en un algoritmo del tipo "ECDH", se utiliza la multiplicación por 2 de un punto P elegido de una curva elíptica de este tipo. Esta operación se denomina "doblamiento de punto" y se inscribe en un proceso iterativo de doblamiento-y-adición. Una multiplicación por 2 de este tipo requiere tiempo.
La parte más lenta del protocolo de Intercambio de Claves de Diffie-Hellmann (ECDH) es la multiplicación de un punto de la curva no conocido de antemano por un escalar aleatorio. Se consideran aquí solamente las curvas elípticas definidas en un cuerpo de característica 2; ésta es una elección extendida para las implementaciones, porque la adición en un cuerpo de este tipo corresponde a la operación "o exclusivo".
Se sabe que la multiplicación por un escalar puede acelerarse en las curvas definidas en un cuerpo de baja cardinalidad utilizando el morfismo de Frobenius. Pueden elegirse las curvas de modo que ninguno de los ataques conocidos se aplique a ellas. Sin embargo, es preferible, eventualmente, al menos en el plano del principio, poder elegir la curva que se quiere utilizar en una clase de curvas tan general como sea posible. El método descrito en la invención se aplica, en su versión más rápida, a la mitad de las curvas elípticas. Además, desde un punto de vista criptográfico, este método es el mejor. Antes de dar el principio del método, se recuerdan los conceptos básicos.
Como ilustración simplemente, se toma la curva elíptica (E) representable geométricamente definida en el conjunto R de los números reales por la ecuación y^{2} + y = x^{3} - x^{2}, representada en la figura 1 en la que una línea horizontal representa un número entero m, una línea vertical representa un número entero n y cada intersección de tales líneas horizontal y vertical representa el par de coordenadas enteras (m, n).
(E) pasa por un número finito de puntos de coordenadas enteras, y cualquier secante a (E) procedente de un punto de este tipo corta a (E) en 2 puntos, eventualmente confundidos (caso de las tangentes a la curva).
La operación de adición entre dos cualesquiera de estos puntos A y B se define del modo siguiente: sea B_{1} el punto en que la recta (AB) corta a (E); la vertical de B_{1} corta a (E) en C = A + B.
En el caso particular en que (AB') sea tangente a (E), C' es la suma buscada.
El punto O, "intersección de todas las verticales", se denomina punto en el infinito de (E) y es el elemento neutro de la adición así definida, puesto que aplicando la construcción geométrica de definición de la adición, se tiene: A + O = O + A = A.
El doblamiento de A, indicado por [2]A se define como: A + A, es, por tanto, el punto B', siendo la recta (Ax) tangente en A a (E).
Aplicando al punto B' la construcción de adición de A, se obtendría el punto [3]A y así sucesivamente: ésta es la definición del producto [n]A de un punto por un entero.
La presente invención se refiere, de hecho, a una familia de curvas elípticas, no representables geométricamente, pero definidas como sigue:
Sea n un entero dado, F_{2^{n}} el cuerpo de 2^{n} elementos, y \overline{F}_{2^{n}}, su cierre algebraico. Sea O el punto en el infinito. Se denomina curva elíptica E no supersingular definida en F_{2^{n}}, el conjunto:
E = {(x,y) \in F_{2^{\ddot{n}}} x F_{2^{\ddot{n}}} ly^{2} + xy = x^{3} + \alpha x^{2} + \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
Los elementos de E se denominan, habitualmente, "puntos". Es bien conocido que E puede estar dotado de una estructura de grupo abeliano tomando el punto en el infinito como elemento neutro. En lo que sigue, se considera el subgrupo finito de los puntos racionales de E, definido por:
E(F_{2^{n}}) = {(x,y) \in F_{2^{n}} X F_{2^{n}} ly^{2} + xy = x^{3} + \alpha x ^{2} + \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
Siendo N el conjunto de los enteros naturales, para cualquier m \in N, se define en E la aplicación "multiplicación por m" por:
[m] : E \rightarrow E
P \rightarrow P + ..... + P \ (m \ veces) \ y \ \forall P \in E :[O]P = O
E[m] indica el núcleo de esta aplicación. Los puntos del grupo E[m] se denominan los puntos de torsión m de E. La estructura de grupo de los puntos de torsión m es bien conocida.
Limitándose al caso en que m es una potencia de 2, se tiene:
\forall k \in N:E[2^{k}] \cong Z/2^{k}Z
donde Z es el conjunto de los enteros relativos.
Como E(F_{2^{n}}) es un subgrupo finito de E, existe k'\geq 1 tal que E[2^{k}] está contenido en E(F_{2^{n}}) si, y sólo si, k \leq k'. Limitándose a las curvas elípticas E para las cuales k' = 1, la estructura de E(F_{2^{n}}) es:
E(F_{2^{n}}) = G \ x \ \{O, T_{2}\}
donde G es un grupo de orden impar y T_{2} designa el punto único de orden 2 de E. Se dice que una curva de este tipo tiene una torsión 2 mínima.
Se está ahora en condiciones de aplicar el objeto de la invención. La multiplicación por dos, no es inyectiva cuando ésta está definida en E o E(F_{2^{n}}), porque ésta tiene por núcleo: E[2] = {O, T_{2}).
Por otra parte, si se reduce el ámbito de la invención de la multiplicación por 2 a un subgrupo de orden impar G \subset E(F_{2^{n}}), la multiplicación por 2 se hace biyectiva.
Resulta, así, que la multiplicación por 2 admite en este subgrupo una aplicación inversa que se denominará división por 2:
[1/2]: G \rightarrow G
P \rightarrow Q \ tal \ que: [2]Q = P
[1/2]P indica el punto de G al cual la aplicación de doblamiento hace corresponder el punto P.
Para cualquier k \geq 1, se escribe:
\left[\frac{1}{2^{k}}\right]=\left[\frac{1}{2}\right]o\left[\frac{1}{2}\right]o . ........ o\left[\frac{1}{2}\right]
Para representar k composiciones de la aplicación de división por 2 consigo mismo.
De modo general, la invención se refiere, por tanto, a un procedimiento de criptografía puesto en práctica entre dos entidades que intercambian las informaciones a través de un canal de comunicación no protegido, del tipo que comprende, al menos, una fase operatoria consistente en multiplicar un punto de orden impar de una curva elíptica no supersingular por un entero, en coordenadas afines, caracterizado porque una fase operatoria de este tipo comprende adiciones y divisiones por dos de puntos de la citada curva elíptica; donde la adición de puntos es una operación conocida, y la división por dos de un punto P se define como el punto único D de orden impar tal que [2]D = P, estando indicado un punto de este tipo por
\left[\frac{1}{2}\right]P
y la operación de división por 2, por:
\left[\frac{1}{2}\right]
La aplicación de división por 2 es interesante para la multiplicación escalar de un punto de una curva elíptica por la razón siguiente: si se trabaja en coordenadas afines, es posible reemplazar todas las multiplicaciones de punto por 2 de una multiplicación escalar por divisiones de punto por 2.
La división por 2 de un punto es mucho más rápida de calcular que su multiplicación por 2. Desde un punto de vista criptográfico, es bueno tener que elegir entre el mayor número de curvas posible, y se tiene costumbre de utilizar una curva en la cual la torsión 2 de E(F_{2^{n}}) es mínima o isomórfica en Z/4Z. Para un cuerpo F_{2^{n}} dado, las curvas elípticas de torsión 2 mínima constituyen exactamente la mitad del conjunto de curvas elípticas definidas en F_{2^{n}}. Por esta razón, aunque el método descrito no sea totalmente general, se aplica, en su versión más rápida, a una gran parte de las curvas interesantes en criptografía. Ésta es siempre aplicable en el caso en que los elementos del cuerpo están representados en una base normal. En el caso de una base polinómica, el espacio de memoria requerido es del orden de O(n^{2}) bits.
A continuación se dan algunos ejemplos, refiriéndose a los dibujos anejos, en los cuales:
- la figura 1 es un gráfico que ilustra una curva elíptica muy particular pero representable geométricamente, que permite aclarar las operaciones elementales puestas en práctica en el marco de la invención, habiéndose explicado anteriormente estas operaciones;
- la figura 2 es un esquema que ilustra intercambios de informaciones de acuerdo con la invención, entre dos entidades;
- las figuras 3 a 6 son organigramas que explican algunas aplicaciones de acuerdo con la invención; y
- la figura 7 es un esquema de bloques de otro esquema de intercambio de informaciones entre dos entidades A y B, susceptible de poner en práctica un proceso de criptogrfía de acuerdo con la invención.
Se va a mostrar cómo calcular [1/2]P \in G a partir de P \in G. Después, se mostrará cómo reemplazar los doblamientos de puntos por divisiones por 2 para ejecutar una multiplicación por un escalar.
Se utilizará la representación afín habitual de un punto: P = (x,y) y la representación: (x, \lambda_{p}) con \lambda_{p} = x + y/x.
De la segunda representación, se deduce y = x(x +\lambda_{p}) que solamente utiliza una multiplicación.
Procediendo así, para multiplicar un punto por un escalar, se ahorran las multiplicaciones calculando los resultados con la ayuda de la representación (x,\lambda_{p}) y la coordenada de la representación afín se determina solamente al final del cálculo.
La división por dos de un punto P se obtiene del modo siguiente:
Sea calcular [1/2]P a partir de P. Se consideran para esto los dos puntos de E:
P = (x,y) = (x, x \ (x + \lambda_{p}))
y
Q = (u, v) = (u, u \ (u + \lambda_{Q}))
Tales que: [2]Q = P
Las fórmulas de multiplicación por 2 conocidas dan
(1)\lambda_{Q} = u + v/u
(2)x = \lambda_{Q}^{2} + \lambda_{Q} + \alpha
(3)y = (x + u) \lambda_{Q} + x + v
Multiplicando (1) por u y llevando el valor de v así obtenido a (3), este sistema pasa a ser:
v = u (u + \lambda_{Q})
\lambda_{Q}^{2} + \lambda_{Q} = \alpha + x
y = (x + u) \lambda_{Q} + x + u^{2} + u \lambda_{Q} = u^{2} + x(\lambda_{Q} + 1)
o, puesto que y = x(x + \lambda_{p}):
(i)\lambda_{Q}^{2} + \lambda_{Q} = \alpha + x
(ii)u^{2} = x(\lambda_{Q} + 1) + y = (\lambda_{Q} + \lambda_{p} + x + 1)
(iii)v = u \ (u + \lambda_{Q})
Partiendo de P = (x,y) = (x, x(x + \lambda_{p})) en coordenadas afines o en representación (x, \lambda_{p}), este sistema de ecuaciones determina los dos puntos:
[1/2]P\in G y [1/2]P + T_{2} \in E(F_{2^{n}}) \setminus G
que dan P por multiplicación por 2. La propiedad que sigue permite distinguirla.
Sea E una curva elíptica de torsión 2 mínima, y P \in E(F_{2^{n}}) = G x {O, T_{2}} uno de sus elementos de orden impar.
Sea Q \in {[1/2]P, [1/2]P + T_{2}} y Q_{1} uno de los dos puntos de E tales que [2]Q_{1} = Q.
Se tiene la condición necesaria y suficiente:
(a)Q + [1/2]P \Leftrightarrow Q1 \in E(F_{2^{n}})
Se deduce que es posible probar si Q = [1/2]P aplicando las fórmulas (i), (ii) y (iii) a Q y verificando si uno de los puntos obtenidos pertenece a E(F_{2^{n}}).
Este procedimiento puede extenderse a una curva elíptica arbitraria E (F_{2^{n}}) = G x E [2^{k}]. Para esto se aplican k veces las fórmulas (i), (ii) y (iii): la 1ª vez a Q, para, para obtener Q_{1}, tal que [2]Q_{1} = Q, la iésima vez a Q_{i-1} para obtener un punto Q_{i}, tal que [2]Q_{i} = Q_{i-1}. El punto resultado Q_{k} será de la forma
\newpage
\left[\frac{1}{2^{k+i}}\right]P + T_{2}
si, y solamente si, Q = [1/2]P + T2, y será de la forma
\left[\frac{1}{2^{k+i}}\right]P + T_{2^{i}}
con 0 \leq i \leq k si, y solamente si, Q = [1/2]P. Se tiene, por tanto, la condición necesaria y suficiente:
Q = [1/2]P \Leftrightarrow Q_{k} \in E(F_{2^{n}})
Este procedimiento es evidentemente largo si k es grande.
La relación (a) muestra que puede saberse si Q = [1/2]P o Q = [1/2]P + T_{2} observando si las coordenadas de Q_{1}, pertenecen a F_{2^{n}} o a un supercuerpo de F_{2}n. Como Q_{1} está determinado por las ecuaciones (i), (ii) y (iii), se tienen que estudiar las operaciones utilizadas en la resolución de estas ecuaciones que no son internas al cuerpo, pero tienen su resultado en un supercuerpo de F_{2^{n}}. El único caso posible es el de la resolución de la ecuación de 2º grado (i): se tiene que calcular, también, una raíz cuadrada para calcular la 1ª coordenada de Q_{1}, pero en característica 2 la raíz cuadrada es una operación interna al cuerpo. Se tiene, por tanto:
Q = (u, v) = [1/2]P \Leftrightarrow \exists\lambda\in F_{2^{n}}: \lambda^{2} + \lambda = \alpha + u
Esta condición necesaria y suficiente se escribe, también, puesto que la raíz cuadrada es interna al cuerpo:
Q = (u, v) = [1/2]P \Leftrightarrow\exists\lambda\in F_{2^{n}}: \lambda^{2} + \lambda = \alpha^{2} + u^{2}
La relación precedente permite optimizar el algoritmo enunciado seguidamente en el caso en que el tiempo de cálculo de la raíz cuadrada no sea despreciable.
Para P \in G, las 2 soluciones de (i) son \lambda_{[1/2]P} y \lambda_{[1/2]P} + 1, y se deduce de (ii) que las 1^{as} coordenadas de los puntos asociados son u y (u +\surdx). Por tanto, puede deducirse un algoritmo que permite calcular [1/2]P del modo siguiente:
Si F_{2^{n}} es un cuerpo finito de 2^{n} elementos, E(F_{2^{n}}) es el subgrupo de una curva elíptica E, definido por:
E(F_{2^{n}}) = \{(x,y) \in F_{2^{n}} \ X \ F_{2^{n}} \ ly^{2} + xy = x^{3} + \alpha x^{2} + \beta\} \cup \{O\} \alpha, \beta\in F_{2^{n}}, \beta \neq 0
y E[2^{k}] es el conjunto de los puntos P de la citada curva elíptica tales que P, adicionado 2^{k} veces a sí mismo da el elemento neutro O, con k entero superior o igual a 1, entonces, un punto P = (x, y) de la citada curva elíptica da por la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0}, v_{0})
de la citada curva elíptica, obtenido efectuando las operaciones siguientes ilustradas por el organigrama de la figura 3:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0}+ 1) + y
\bullet si k vale 1, se busca si la ecuación: \lambda^{2}+\lambda = \alpha^{2} + u_{o}^{2} tiene soluciones en F_{2^{n}},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v_{0} = u_{0} \ (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente;
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i} = u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u_{k-1}^{2}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v_{0} = u_{0} (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
Si se elige representar el punto
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
de la citada curva elíptica por (u_{0}, \lambda_{0}) con \lambda_{0} = u_{0} + v_{0}/u_{0}, entonces el algoritmo es de acuerdo con el organigrama de la figura 4, en el que:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u^{2}_{0} tal que u_{0}^{2} = x(\lambda_{0} + 1) + y
\bullet si k vale 1, se busca si la ecuación: \lambda^{2} + \lambda = \alpha^{2} + u_{0}^{2} tiene soluciones en F_{2^{n}},
\bullet en caso afirmativo se calcula la citada división por dos por
u_{0} = \sqrt{u_{0}{}^{2}}
y:
\left[\frac{1}{2}\right]P = (u_{0}, \lambda_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente;
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i} tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u_{i}^{2} tal que u_{i}^{2} = u_{i-1}(\lambda_{1} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y
\left[\frac{1}{2}\right]P = (u_{0},\lambda_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
Si se elige representar el punto P = (x, y) por (x, \lambda_{p}) con \lambda_{p} = x+y/x que da por la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
de la curva elíptica, entonces el algoritmo es de acuerdo con el organigrama de la figura 5, en el que:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u^{2}_{0} tal que u_{0}^{2} = x(\lambda_{0} + \lambda_{p} + x + 1)
\bullet si k vale 1, se busca si la ecuación: \lambda^{2} + \lambda = \alpha^{2} + u_{0}^{2} tiene soluciones en F_{2}^{n},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0}=\sqrt{u_{0}{}^{2}}
v_{0} = u_{0} (u_{0} + \lambda _{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u^{2}_{0} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente;
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i} = u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v_{0} = u_{0} (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u^{2}_{0} y se añade 1 al citado primer valor \lambda_{0} para calcular la citada división por dos como en la operación precedente.
Finalmente, si se elige representar el punto P = (x, y) por (x, \lambdap) con \lambda_{p} = x + y/x que da la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
de la curva elíptica representado por (u_{0}, \lambda_{0}) con \lambda_{0} = u_{0} + v_{0}/u_{0}, entonces el algoritmo es de acuerdo con el organigrama de la figura 6, en el que:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0} + \lambda_{p} + x + 1)
\bullet si k vale 1, se busca si la ecuación: \lambda^{2} + \lambda = \alpha^{2} + u_{0}^{2} tiene soluciones en F_{2}^{n},
en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y
\left[\frac{1}{2}\right]P = (u_{0}, \lambda _{0})
\bullet en caso negativo, se añade x al citado segundo valor u^{2}_{0} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente;
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i} = u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y:
\left[\frac{1}{2}\right]P = (u_{0}, \lambda _{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
Se va a describir ahora cómo efectuar rápidamente la prueba, la resolución de la ecuación de segundo grado, y el cálculo de la raíz cuadrada en el algoritmo de división de un punto por 2. Se considerarán los dos casos en base normal y polinómica.
Los resultados en base normal son conocidos. Puede considerarse F_{2^{n}} como espacio vectorial de n dimensiones en F_{2}. En una base normal, un elemento del cuerpo está representado por:
x = \sum\limits_{i = 0}^{n-1}x_{i} \ \beta^{2^{i}}
\hskip4cm
x_{i}\in\{0,1\}
donde \beta\in F_{2^{n}}, se elige tal que: {\beta, \beta^{2}, ..., \beta^{2n-1}} es una base F_{2^{n}}. En una base normal, la raíz cuadrada se calcula por un desplazamiento circular izquierdo, y la elevación al cuadrado por un desplazamiento circular derecho. Los tiempos de cálculo correspondientes son, por tanto, despreciables.
Si la ecuación de segundo grado: \lambda^{2} + \lambda = x tiene soluciones en F_{2^{n}}, una solución viene dada, entonces, por:
\lambda = \sum\limits_{i = 1}^{n-1}\lambda_{i} \ \beta^{2^{i}}
\hskip0,5cm
con: \lambda_{i} = \sum\limits_{k=1}^{i} x_{i}
\hskip1cm
con \ 1\leq i \leq n - 1
El tiempo de cálculo de \lambda es despreciable frente al tiempo de cálculo de una multiplicación o de una inversión dentro del cuerpo. Como el tiempo de cálculo de una solución de la ecuación de segundo grado es despreciable, puede efectuarse la prueba del modo siguiente: se calcula un candidato \lambda a partir de x y se prueba si \lambda^{2} + \lambda = x. Si este no es el caso, la ecuación no tiene solución en F_{2^{n}}.
En base polinómica, se utiliza la representación:
x = \sum\limits_{i = 0}^{n-1}x_{i} \ T^{i}
con x_{i} \in {0,1}. La raíz cuadrada de x puede calcularse almacenando el elemento \surdT si se observa que:
- en un cuerpo de característica 2, la raíz cuadrada es un morfismo del cuerpo,
\sqrt{\sum_{i \ par} x_{i}T^{i}} = \sum_{i \ par} x_{i} T^{\tfrac{i}{2}}
Reagrupando en x las potencias pares e impares de T y tomando la raíz cuadrada, se llega a:
\sqrt{x} = \sum\limits_{i \ impar} x_{i} T^{\tfrac{i}{2}} + \sqrt{T} \sum\limits_{i \ impar} x_{i} T^{\tfrac{i-1}{2}}
así, para calcular una raíz cuadrada, basta con "reducir" dos vectores a la mitad, y ejecutar después una multiplicación de un valor precalculado por un elemento de longitud n/2. Por este motivo, el tiempo de cálculo de una raíz cuadrada en una base polinómica es equivalente a la mitad del tiempo de cálculo de una multiplicación dentro del cuerpo.
Para la prueba y la resolución de la ecuación de segundo grado, se considera F_{2^{n}} como un espacio vectorial de n dimensiones en F_{2}. La aplicación F definida por:
F: F_{2^{n}}\rightarrow F_{2^{n}}
\lambda\rightarrow\lambda^{2} + \lambda
es entonces un operador lineal de núcleo {0,1}.
Para un x dado, la ecuación \lambda^{2} + \lambda = x tiene sus soluciones en F_{2^{n}} si, y sólo si, el vector x es la imagen de F. Im(F) es un subespacio de F_{2^{n}} de n-1 dimensiones. Para una base dada de F_{2^{n}} y el producto escalar correspondiente, existe un solo vector no trivial ortogonal a todos los vectores de Im(F). Sea w este vector. Se tiene:
\exists\lambda\in F_{2^{n}} : \lambda^{2} + \lambda = x \Leftrightarrow x . w = 0
Así, la ejecución de la prueba puede hacerse adicionando las componentes de x a las cuales corresponden componentes de w iguales a 1. El tiempo de ejecución de esta prueba es despreciable.
Para la resolución de la ecuación de 2º grado: F(\lambda) = \lambda^{2} + \lambda = x en una base polinómica, se propone un método simple y directo que impone el almacenaje de una matriz de n x n. Para eso, se busca un operador lineal G tal que:
\forall x \in Im(F):F(G(x)) = (G(x))^{2} + G(x) = x
Sea \gamma \inF_{2}^{n} un vector tal que \gamma \notinIm(F) y se define G por:
10
Dado que
x = \sum_{i = 1}^{n - 1} x_{1} F(T^{i})\in Im(F)
entonces G(x) es solución de la ecuación de 2º grado Una implementación consiste en precalcular la matriz que representa G en la base {1, T, ....., T^{n-1}). En característica 2, la multiplicación de una matriz por un vector se reduce a la adición de las columnas de la matriz a las cuales corresponden una componente del vector igual a 1. Se deduce que este método de resolución de una ecuación de 2º grado consume como media n/2 adiciones dentro del cuerpo F_{2^{n}}.
Se describe seguidamente la aplicación de los principios expuestos a la multiplicación escalar.
Sean P\in E (F_{2^{n}}) un punto de orden r impar, c un entero aleatorio y m la parte entera de log_{2} (r). Se calcula el producto [c]P de un punto por un escalar utilizando la aplicación de división de un punto por 2.
Se demuestra que:
Para cualquier entero c, existe un número racional de la forma:
\sum\limits_{i = 0}^{m}\frac{c_{i}}{2^{i}}
\hskip0,5cm
c_{i} = \in\{0,1\}
tal que:
C = \sum\limits_{i = 0}^{m} \frac{c_{i}}{2^{i}}
\hskip0,5cm
(mod \ r)
Sea <P> el grupo cíclico generado por P. Como se tiene el isomorfismo de anillos:
P = Z/rZ
k[P] \rightarrow k
La multiplicación escalar puede calcularse por:
[c]P = \sum\limits_{i = 0}^{m} \left[\frac{c_{i}}{2^{i}}\right]P
utilizando divisiones por 2 y adiciones. El algoritmo bien conocido de doblamiento-adición puede utilizarse para estos cálculos. Para esto basta reemplazar en el algoritmo los doblamientos por divisiones por 2. Hay que realizar log_{2}(r) divisiones por 2 y, como media, 1/2 log_{2}(r) adiciones. Existen mejoras del algoritmo de doblamiento-adición que solamente exigen 1/3 log_{2}(r) adiciones como media.
Por consiguiente, se obtiene una citada multiplicación escalar utilizando una división por dos tal como la definida anteriormente por las operaciones siguientes:
-
si el citado escalar de la multiplicación se indica por S_{i}, se eligen m+1 valores So...Sm \in {0,1} para definir S por:
S = \sum\limits_{i = 0}^{m} \ S_{i} \left(\frac{r+1}{2}\right)^{i}
-
siendo r el orden impar antes citado y m el entero único comprendido entre log_{2}(r) – 1 y log_{2} (r).
-
se calcula la multiplicación escalar [S]P de un punto P de la citada curva elíptica por el escalar S por aplicación de un algoritmo consistente en determinar la sucesión de puntos (Q_{m+1}, Q_{m}..., Q_{i}...Q_{o}) de la citada curva elíptica E tal que
Q_{m+1} = O (elemento neutro)
Q_{i} = [S_{i}]P + \left[{\frac{1}{2}}\right]Q_{i+1}
\hskip0,5cm
con \ 0 \leq i \leq m
-
el cálculo del último punto Q_{o} de la citada sucesión da el resultado [S]P de la citada multiplicación escalar.
Para adicionar el punto P inicial a un resultado intermedio
Q = \left[\frac{1}{2}\right]Q_{i}
se utiliza el algoritmo siguiente, que es el algoritmo tradicional, ligeramente modificado:
Entrada: P = (x,y) en coordenadas afines y Q = (u, u(u + \lambda_{Q})) representado por (u, \lambda_{Q})
Salida: P + Q = (s, t) en coordenadas afines
Algoritmo
1. Se calcula: \lambda = (y + u(u + \lambda_{Q}))/(x + u)
2. Se calcula: s = \lambda^{2} + \lambda + a + x + u
3. Se calcula: t = (s + x)\lambda + s + y
4. Resultado: (s, t)
Este algoritmo utiliza 1 inversión, 3 multiplicaciones, y 1 raíz cuadrada.
La ganancia de tiempo obtenida reemplazando las operaciones de multiplicación por 2 por divisiones por 2 es importante. En coordenadas afines, la multiplicación por 2 y la adición exigen, ambas: una inversión, dos multiplicaciones, y una raíz cuadrada. Si el escalar de la multiplicación por un escalar está representado por un vector de bits de longitud m y de k componentes no nulas, las operaciones para la multiplicación escalar exigen:
operación doblamiento y adición División por 2 y adición
inversiones m + k k
multiplicaciones 2m + 2k m + 3k
cuadrados m + k k
resolución \lambda^{2} + \lambda = a + x 0 m
raíces cuadradas 0 m
pruebas 0 m
\newpage
Así, utilizando la división por 2, se ahorran m inversiones, m-k multiplicaciones, y m cuadrados, a costa de m resoluciones de 2º grado, m raíces cuadradas y m pruebas.
En base polinómica, puede obtenerse una mejora en tiempo de ejecución próxima al 50%.
En base normal, se estima el tiempo de cálculo de la raíz cuadrada, de la prueba y de la resolución de la ecuación de 2º grado despreciable frente al tiempo de cálculo de una multiplicación o de una inversión. Suponiendo, además, que el tiempo de cálculo de una inversión es equivalente al tiempo de cálculo de 3 multiplicaciones, se llega a una mejora en el tiempo de ejecución del 55%.
La figura 2 ilustra esquemáticamente una aplicación posible de los algoritmos descritos anteriormente, puestos en práctica entre dos entidades A y B que intercambian informaciones a través de un canal de comunicación no protegido. El citado canal de comunicación, puede resumirse aquí en simples conexiones eléctricas establecidas entre las dos entidades el tiempo de una transacción. Éste puede comprender, también, una red de telecomunicación, hertziana u óptica. En este caso, la entidad A es aquí una tarjeta de microcircuito y la entidad B es un servidor. Una vez puestas en relación una con otra por el citado canal de comunicación, las dos entidades van a aplicar un protocolo de construcción de una clave común. Para hacer esto:
-
la entidad A tiene una clave secreta a
-
la entidad B tiene una clave secreta b
Éstas tienen que elaborar una clave secreta x sólo conocida por ellas, a partir de una clave pública constituida por un punto P de orden impar r de una curva elíptica E elegida y no supersingular.
El protocolo puesto en práctica es del tipo de Diffie-Hellmann reemplazando las "multiplicaciones por dos" habituales, denominadas doblamientos de punto, por la operación denominada "división por dos", de acuerdo con la invención descrita anteriormente.
Para hacer esto, el algoritmo es el siguiente:
-
la primera entidad (por ejemplo A) calcula la multiplicación escalar [a]P y envía el punto resultado a la segunda entidad,
-
la segunda entidad (B) calcula la multiplicación escalar [b]P y envía el punto resultado a la primera entidad,
-
las dos entidades calculan, respectivamente, un punto común (C) = (x,y) de la citada curva elíptica (E) efectuando, respectivamente, las multiplicaciones escalares [a] ([b]P) y [b] ([a]P), ambas iguales a [a,b]P,
-
las dos entidades eligen como clave común la coordenada x del citado punto común (C) obtenido por la citada multiplicación escalar [a,b]P, efectuándose, al menos, una de las multiplicaciones escalares precedentes, y preferentemente todas, con la ayuda de divisiones por do predefinidas.
A título de ejemplo más preciso, la figura 7 representa un servidor B unido a una red de comunicación 1 por intermedio de una interfaz de comunicación 2, por ejemplo del tipo módem. De modo análogo, una estación de cálculo 3 está unida a la red 1 por una interfaz de comunicación 4. La estación 3 está equipada con un lector de tarjeta de microcircuto 5, en el cual está insertada la tarjeta de microcircuito A.
La memoria viva 6 del servidor B contiene un programa 7 capaz de ejecutar cálculos criptográficos en curvas elípticas y, en particular, el producto de un punto por un escalar y la división de un punto por 2.
La tarjeta A comprende una unidad central 11, una memoria viva denominada "RAM" 8, una memoria muerta denominada "ROM" 9 y una memoria reinscriptible denominada "EEPROM" 10. Una de las memorias 9 ó 10 contiene un programa 12 capaz de ejecutar cálculos criptográficos en curvas elípticas y, en particular, el producto de un punto por un escalar y la división de un punto por 2.
Los dos programas 7 y 12 tienen una referencia común constituida por una misma curva elíptica (E) y un mismo punto P = (x_{0}, y_{0}) de (E).
Cuando A desea construir en paralelo con B una clave secreta común para proteger un diálogo con B, elige un escalar a y envía a B el producto Q = [a,b]P = (x_{1},y_{1}). En respuesta a este envío, B elige un escalar b y devuelve a A el producto R = [b]P = (x_{2}, y_{2}).
A calcula, entonces, el producto [a]R = [ab]P = (x, y), mientras que B calcula el producto [b]Q = [ab]P = (x,y), y A y B adoptan x como clave secreta común.
\newpage
Estas operaciones pueden representarse por la tabla que seguidamente se indica. Las que se efectúan en el servidor B están indicadas en la columna de la derecha, mientras que las que se efectúan en la tarjeta A están indicadas en la columna de la izquierda, las flechas horizontales simbolizan las transferencias de informaciones a través de la red 1.
1
Otra aplicación posible que pone en juego la invención es susceptible de ser puesta en práctica entre las dos entidades A y B de la figura 7. Se trata de un protocolo de firma de un mensaje M transmitido entre A y B a través del canal no protegido, es decir, la red 1. El objeto de este protocolo, conocido en sus grandes líneas, es aportar la certeza de que el mensaje recibido por una de las entidades ha sido emitido bien por aquélla con la que ésta se corresponde.
Para hacer esto, la entidad emisora (por ejemplo A) tiene dos claves permanentes, una secreta a y otra pública Q = [a]P, siendo P un punto de una curva elíptica (E), siendo P y (E) conocidos y convenidos por A y B. Otra clave pública está constituida por el punto P de orden impar r de la curva elíptica E elegida, no supersingular. Las operaciones puestas en juego implican divisiones por dos, en el sentido definido anteriormente.
De acuerdo con un ejemplo posible:
-
la primera entidad (A) que tiene el citado par de claves permanentes construye un par de claves de utilización única, eligiéndose una (g) arbitrariamente y la otra, [g]P resultante de una multiplicación escalar de la citada clave (g) elegida arbitrariamente por el punto P público de la citada curva elíptica, indicándose las coordenadas de esta clave ([g]P) por (x, y), con 2 \leq g \leq r-2,
-
la primera entidad (A) convierte el polinomio x de la citada clave de utilización única [g]P = (x, y) en un entero i cuyo valor binario está representado por la secuencia de los coeficientes binarios del citado polinomio x,
-
la citada primera entidad (A) calcula una firma (c, d) del mensaje (M) del modo siguiente:
c = i módulo r
d = g^{-1} (M + ac) módulo r,
-
la citada primera entidad envía el citado mensaje (M) y la citada firma (c, d) a la segunda entidad; en recepción
-
la citada segunda entidad (B) verifica si los elementos de la citada firma (c, d) pertenecen cada uno al intervalo [1, r-1],
-
en caso negativo, declara la firma no válida y se detiene,
-
en caso afirmativo, la citada segunda entidad (B) calcula tres parámetros:
h = d^{-1} módulo r
h_{1} = Mh módulo r
h_{2} = ch módulo r
-
la citada segunda entidad calcula un punto T de la citada curva elíptica por la suma de las multiplicaciones escalares de los puntos P y Q por los dos últimos parámetros citados:
T = [h_{1}]P + [h_{2}]Q
si el punto resultante T es el elemento neutro, la citada segunda entidad declara la firma no válida y se detiene
si no, considerando el punto T de coordenadas x' e y': T = (x', y'),
la citada segunda entidad (B) convierte el polinomio x' de este punto en un entero i' cuyo valor binario está representado por la secuencia de los coeficientes binarios del citado polinomio x'
-
la citada segunda entidad (B) calcula c' = i' módulo r, y
-
verifica que c' = c para validar la citada firma o invalidarla en caso contrario, efectuándose, al menos, una citada operación de multiplicación escalar, y preferentemente todas, con la ayuda de divisiones por dos predefinidas.
Estas operaciones pueden representarse por la tabla que seguidamente se indica, donde las operaciones efectuadas en el servidor B están indicadas en la columna de la derecha mientras que las operaciones efectuadas en la tarjeta A están indicadas en la columna de la izquierda, simbolizando la flecha entre las dos columnas las transferencias de informaciones a través de la red 1.
2

Claims (10)

1. Procedimiento de criptografía puesto en práctica entre dos entidades que intercambian informaciones a través de un canal de comunicación no protegido, del tipo que comprende, al menos, una fase operatoria consistente en multiplicar un punto de orden impar de una curva elíptica no supersingular por un entero, en coordenadas afines, caracterizado porque, con objeto de realizar el intercambio de informaciones a través del canal de comunicación no protegido, una fase operatoria de este tipo comprende adiciones y divisiones por dos de puntos de la citada curva elíptica, donde la adición de puntos es una operación conocida, y la división por dos de un punto P se define como el punto único D de orden impar tal que [2]D = P, siendo indicado un punto de este tipo por:
\left[\frac{1}{2}\right]P,
y la operación de división por 2, por:
\left[\frac{1}{2}\right]
2. Procedimiento de acuerdo con la reivindicación 1, en el que: F_{2^{n}} es un cuerpo finito de 2^{n} elementos, E(F_{2^{n}}) es el subgrupo de una curva elíptica E, definido por:
E(F_{2^{n}}) = {(x,y) \in F_{2^{n}} X F_{2}^{n} ly^{2} + xy = x^{3} + \alphax^{2}+ \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
y E[2^{k}] es el conjunto de los puntos P de la citada curva elíptica tales que P, adicionado 2^{k} veces a sí mismo da el elemento neutro O, con k entero superior o igual a 1, caracterizado porque un punto P = (x, y) de la citada curva elíptica da por la citada división por dos el punto
\left[\frac{1}{2}\right]P=(u_{0}, v_{0})
de la citada curva elíptica, obtenido efectuando las operaciones siguientes:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0}+ 1) + y
\bullet si k vale 1, se busca si la ecuación: \lambda^{2}+\lambda = \alpha^{2} + u_{o}^{2} tiene soluciones en F_{2^{n}},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v = u_{0} \ (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P=(u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i} tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u_{1}^{2} tal que u_{1}^{2} = u_{i-1}(\lambda_{1} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n},
\bullet en caso afirmativo se calcula la citada división por dos por
u_{0} = \sqrt{u_{0}{}^{2}}
v = u_{0} (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
3. Procedimiento de acuerdo con la reivindicación 1, en el que: F_{2^{n}} es un cuerpo finito de 2^{n} elementos, E(F_{2^{n}}) es el subgrupo de una curva elíptica E, definido por:
E(F_{2^{n}}) = {(x,y) \in F_{2^{n}} X F_{2^{n}} ly^{2} + xy = x^{3} + \alphax^{2} + \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
y E[2^{k}] es el conjunto de los puntos P de la citada curva elíptica tales que P, adicionado 2^{k} veces a sí mismo da el elemento neutro O, con k entero superior o igual a 1, caracterizado porque un punto P = (x, y) de la citada curva elíptica da por la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0},\lambda_{0})
con \lambda_{0}= u_{0} + v_{0}/u_{0}, obtenido efectuando las operaciones siguientes:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0}+ 1) + y
\bullet si k vale 1, se busca si la ecuación: \lambda^{2}+\lambda = \alpha^{2} + u_{o}^{2} tiene soluciones en F_{2}^{n},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y
\left[\frac{1}{2}\right]P=(u_{0},\lambda_{0})
en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente:
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{1}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i}= u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i = 1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2^{n}}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}^{2}}
 \ 
y
 \ 
\left[\frac{1}{2}\right]P = (u_{0},\lambda_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
4. Procedimiento de acuerdo con la reivindicación 1, en el que: F_{2^{n}} es un cuerpo finito de 2^{n} elementos, E(F_{2^{n}}) es el subgrupo de una curva elíptica E, definido por:
E(F_{2^{n}}) = {(x,y)} \in F_{2^{n}} X F_{2^{n}} ly^{2} + xy = x^{3} + \alphax^{2} + \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
y E[2^{k}] es el conjunto de los puntos P de la citada curva elíptica tales que P, adicionado 2^{k} veces a sí mismo da el elemento neutro O, con k entero superior o igual a 1, caracterizado porque un punto P = (x, y) de la citada curva elíptica representado por (x, \lambda_{p}) con \lambda_{p} = x + y/x da por la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
de la citada curva elíptica obtenido efectuando las operaciones siguientes:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0}+ \lambda_{p} + x + 1)
\bullet si k vale 1, se busca si la ecuación: \lambda^{2}+\lambda = \alpha^{2}+u_{o}^{2} tiene soluciones en F_{2^{n}},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v_{0} = u_{0} (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente;
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{1-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i} = u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i=1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
v_{0} = u_{0} (u_{0} + \lambda_{0})
y
\left[\frac{1}{2}\right]P = (u_{0},v_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
5. Procedimiento de acuerdo con la reivindicación 1, en el que: F_{2^{n}} es un cuerpo finito de 2^{n} elementos, E(F_{2^{n}}) es el subgrupo de una curva elíptica E, definido por:
E(F_{2^{n}}) = {(x,y)} \in F_{2^{n}} X F_{2^{n}} ly^{2} + xy = x^{3} + \alphax^{2} + \beta} \cup {O} \alpha, \beta \in F_{2^{n}}, \beta \neq 0
y E[2^{k}] es el conjunto de los puntos P de la citada curva elíptica tales que P, adicionado 2^{k} veces a sí mismo da el elemento neutro O, con k entero superior o igual a 1, caracterizado porque un punto P = (x, y) de la citada curva elíptica representado por (x, \lambda_{p}) con \lambda_{p} = x + y/x da por la citada división por dos el punto
\left[\frac{1}{2}\right]P = (u_{0}, v_{0})
de la citada curva elíptica representado por (u_{0}, \lambda_{0}) con \lambda_{0} = u_{0} + v_{0}/u_{0} obtenido efectuando las operaciones siguientes:
\bullet se busca un primer valor \lambda_{0} tal que \lambda_{0}^{2} + \lambda_{0} = \alpha + x
\bullet se calcula un segundo valor u_{0}^{2} tal que u_{0}^{2} = x(\lambda_{0}+ \lambda_{p}+x +1)
\bullet si k vale 1, se busca si la ecuación: \lambda^{2}+ \lambda = \alpha^{2}+ u_{o}^{2} tiene soluciones en F_{2}^{n},
\bullet en caso afirmativo se calcula la citada división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y
\left[\frac{1}{2}\right]P=(u_{0}, \lambda_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente:
\bullet si k es mayor que 1, se efectúa un cálculo iterativo consistente en:
buscar un valor \lambda_{i}, tal que \lambda_{i}^{2} + \lambda_{i} = \alpha + u_{i-1}
calcular después el valor u^{2}_{i} tal que u^{2}_{i} = u_{i-1} (\lambda_{i} + \lambda_{i-1} + u_{i-1} + 1)
incrementando i a partir de i=1 hasta obtener el valor u^{2}_{k-1}
\bullet se busca si la ecuación \lambda^{2} + \lambda = \alpha^{2} + u^{2}_{k-1} tiene soluciones en F_{2}^{n}
\bullet en caso afirmativo se calcula la división por dos por:
u_{0} = \sqrt{u_{0}{}^{2}}
y
\newpage
\left[\frac{1}{2}\right]P = (u_{0}, \lambda_{0})
\bullet en caso negativo, se añade x al citado segundo valor u_{0}^{2} y se añade 1 al citado primer valor \lambda_{0}, para calcular la citada división por dos como en la operación precedente.
6. Procedimiento de acuerdo con una de las reivindicaciones precedentes, caracterizado porque se trata de un protocolo de construcción de una clave común a partir de dos claves secretas que pertenecen, respectivamente, a las dos citadas entidades y de una clave pública constituida por un punto P de orden impar r de una curva elíptica E elegida y no supersingular.
7. Procedimiento de acuerdo con la reivindicación 6, caracterizado porque, de modo en sí conocido, siendo a y b las claves secretas de una primera y de una segunda entidades, respectivamente:
-
la primera entidad calcula la multiplicación escalar [a]P y envía el punto resultado a la segunda entidad
-
la segunda entidad calcula la multiplicación escalar [b]P y envía el punto resultado a la primera entidad
-
las dos entidades calculan, respectivamente, un punto común C = (x,y) de la citada curva elíptica (E) efectuando, respectivamente, las multiplicaciones escalares [a] ([b]P) y [b] ([a]P), ambas iguales a [a.b]P,
-
las dos entidades eligen como clave común la coordenada (x) del citado punto común (C) obtenido por la citada multiplicación escalar [a.b]P, efectuándose, al menos, una de las multiplicaciones precedentes y, preferentemente, todas, con la ayuda de divisiones por dos predefinidas.
8. Procedimiento de acuerdo con una de las reivindicaciones 1 a 5, caracterizado porque se trata de un protocolo de firma entre dos entidades a partir de un par de claves permanentes que pertenecen a una de las entidades, una secreta (a) y la otra pública (Q), resultante de la multiplicación escalar de la clave secreta (a) por otra clave pública constituida por un punto (P) de orden impar r de una curva elíptica (E) elegida y no supersingular.
9. Procedimiento de acuerdo con la reivindicación 8, caracterizado por las operaciones siguientes:
-
la primera entidad (A) que tiene el citado par de claves permanentes construye un par de claves de utilización única, eligiéndose una (g) arbitrariamente, y la otra, [g]P resultante de una multiplicación escalar de la citada clave (g) elegida arbitrariamente por el punto P público de la citada curva elíptica, indicándose las coordenadas de esta clave ([g]P) por (x, y), con 2 \leq g \leq r-2,
-
la primera entidad (A) convierte el polinomio x de la citada clave de utilización única [g]P = (x, y) en un entero i cuyo valor binario está representado por la secuencia de los coeficientes binarios del citado polinomio x,
-
la citada primera entidad (A) calcula una firma (c, d) del mensaje (M) del modo siguiente:
c = i módulo r
d = g^{-1} (M + ac) módulo r,
-
la citada primera entidad envía el citado mensaje (M) y la citada firma (c, d) a la segunda entidad; en recepción
-
la citada segunda entidad (B) verifica si los elementos de la citada firma (c, d) pertenecen cada uno al intervalo [1, r-1],
-
en caso negativo, declara la firma no válida y se detiene,
-
en caso afirmativo, la citada segunda entidad (B) calcula tres parámetros:
h = d^{-1} módulo r
h_{1} = Mh módulo r
h_{2} = ch módulo r
-
la citada segunda entidad calcula un punto T de la citada curva elíptica por la suma de las multiplicaciones escalares de los puntos P y Q por los dos últimos parámetros citados:
T = [h_{1}]P + [h_{2}]Q
si el punto resultante T es el elemento neutro, la citada segunda entidad declara la firma no válida y se detiene
si no, considerando el punto T de coordenadas x' e y': T = (x', y'),
-
la citada segunda entidad (B) convierte el polinomio x' de este punto en un entero i' cuyo valor binario está representado por la secuencia de los coeficientes binarios del citado polinomio x'
-
la citada segunda entidad (B) calcula c' = i' módulo r, y
-
verifica que c' = c para validar la citada firma o invalidarla en caso contrario, efectuándose, al menos, una citada operación de multiplicación escalar, y preferentemente todas, con la ayuda de divisiones por dos predefinidas.
10. Procedimiento de acuerdo con las reivindicaciones 7 ó 9, caracterizado porque una citada multiplicación escalar que utiliza divisiones por dos se obtiene por las operaciones siguientes:
-
si el citado escalar de la multiplicación se indica por S_{i}, se eligen m+1 valores So...Sm \in {0,1} para definir S por:
S = \sum\limits_{i = 1}^{m} S_{i} \left(\frac{r+1}{2}\right)^{i}
-
siendo r el orden impar antes citado y m el entero único comprendido entre log_{2}(r) – 1 y log_{2} (r).
se calcula la multiplicación escalar [S]P de un punto P de la citada curva elíptica por el escalar S, por aplicación de un algoritmo consistente en determinar la sucesión de puntos (Q_{m+1}, Q_{m}..., Q_{i}...Q_{o}) de la citada curva elíptica E, tal que
Q_{m+1} = O \ (elemento \ neutro)
Q_{i} = [S_{i}]P + \left[\frac{1}{2}\right]Q_{i+1}
con 0 \leq l \leq m
dando el cálculo del último punto Q_{o} de la citada sucesión, el resultado [S] P de la citada multiplicación escalar.
ES00949685T 1999-07-09 2000-07-07 Procedimiento de calculo para criptografiar una curva eliptica. Expired - Lifetime ES2159274T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9908949 1999-07-09
FR9908949A FR2796177B1 (fr) 1999-07-09 1999-07-09 Procede de cryptographie mis en oeuvre entre deux entites echangeant des informations

Publications (2)

Publication Number Publication Date
ES2159274T1 ES2159274T1 (es) 2001-10-01
ES2159274T3 true ES2159274T3 (es) 2004-05-16

Family

ID=9547945

Family Applications (1)

Application Number Title Priority Date Filing Date
ES00949685T Expired - Lifetime ES2159274T3 (es) 1999-07-09 2000-07-07 Procedimiento de calculo para criptografiar una curva eliptica.

Country Status (8)

Country Link
US (1) US7079650B1 (es)
EP (1) EP1110140B1 (es)
JP (1) JP4704640B2 (es)
CA (1) CA2342737C (es)
DE (2) DE60005284T2 (es)
ES (1) ES2159274T3 (es)
FR (1) FR2796177B1 (es)
WO (1) WO2001004742A1 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7584298A (en) * 1997-05-21 1998-12-11 E.S.P. Communications, Inc. System, method and apparatus for "caller only" initiated two-way wireless communication with caller generated billing
US7200225B1 (en) 1999-11-12 2007-04-03 Richard Schroeppel Elliptic curve point ambiguity resolution apparatus and method
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置
US7298839B2 (en) 2003-07-25 2007-11-20 Microsoft Corporation Squared Weil and Tate pairing techniques for use with elliptic curves
US7769167B2 (en) 2003-07-25 2010-08-03 Microsoft Corporation Weil and Tate pairing techniques using parabolas
US7440569B2 (en) * 2003-07-28 2008-10-21 Microsoft Corporation Tate pairing techniques for use with hyperelliptic curves
KR100530372B1 (ko) * 2003-12-20 2005-11-22 삼성전자주식회사 사이드채널 공격을 방지할 수 있는 타원곡선 암호화 방법
US7483533B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi x-coordinates embedding
US7483534B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi y-coordinates embedding
US7742596B2 (en) * 2004-08-24 2010-06-22 General Dynamics C4 Systems, Inc. Reliable elliptic curve cryptography computation
JP4752313B2 (ja) * 2004-09-30 2011-08-17 ソニー株式会社 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US7598855B2 (en) 2005-02-01 2009-10-06 Location Based Technologies, Inc. Apparatus and method for locating individuals and objects using tracking devices
US20070229350A1 (en) * 2005-02-01 2007-10-04 Scalisi Joseph F Apparatus and Method for Providing Location Information on Individuals and Objects using Tracking Devices
US8243920B2 (en) * 2005-10-28 2012-08-14 Telecom Italia S.P.A. Method for scalar multiplication in elliptic curve groups over binary polynomial fields for side-channel attack-resistant cryptosystems
DE102006002891B4 (de) * 2006-01-20 2009-06-04 Siemens Ag Verfahren, Vorrichtung und System zum Verifizieren von auf einer elliptischen Kurve ermittelten Punkten
KR20080012633A (ko) * 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
US8244468B2 (en) * 2007-11-06 2012-08-14 Location Based Technology Inc. System and method for creating and managing a personalized web interface for monitoring location information on individuals and objects using tracking devices
US8102256B2 (en) 2008-01-06 2012-01-24 Location Based Technologies Inc. Apparatus and method for determining location and tracking coordinates of a tracking device
US9111189B2 (en) * 2007-10-31 2015-08-18 Location Based Technologies, Inc. Apparatus and method for manufacturing an electronic package
US8774827B2 (en) 2007-04-05 2014-07-08 Location Based Technologies, Inc. Apparatus and method for generating position fix of a tracking device in accordance with a subscriber service usage profile to conserve tracking device power
US8497774B2 (en) 2007-04-05 2013-07-30 Location Based Technologies Inc. Apparatus and method for adjusting refresh rate of location coordinates of a tracking device
US8224355B2 (en) 2007-11-06 2012-07-17 Location Based Technologies Inc. System and method for improved communication bandwidth utilization when monitoring location information
US8654974B2 (en) 2007-10-18 2014-02-18 Location Based Technologies, Inc. Apparatus and method to provide secure communication over an insecure communication channel for location information using tracking devices
US20140314229A1 (en) * 2011-12-09 2014-10-23 Morpho Cryptography on a simplified elliptical curve
US20170207918A1 (en) * 2009-06-16 2017-07-20 Morpho Cryptography on an elliptical curve
US8548160B2 (en) * 2010-01-13 2013-10-01 Microsoft Corporation Determination of pairings on a curve using aggregated inversions
US8731187B2 (en) * 2010-12-21 2014-05-20 Microsoft Corporation Computing genus-2 curves using general isogenies
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
CN103124213B (zh) * 2013-03-05 2015-09-16 丁勇 基于椭圆曲线密码的传感器网络密钥管理方法
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
CA2984390A1 (en) * 2016-11-07 2018-05-07 Infosec Global Inc. Elliptic curve isogeny-based cryptographic scheme
US11157240B2 (en) * 2019-02-15 2021-10-26 International Business Machines Corporation Perform cryptographic computation scalar multiply instruction
CN111106937A (zh) * 2019-12-31 2020-05-05 深圳职业技术学院 一种基于随机素数的双通道交换的超奇异椭圆曲线算法的密钥交换方法
WO2021225578A1 (en) 2020-05-04 2021-11-11 Pqsecure Technologies, Llc An efficient hardware architecture for highly secure isogeny-based cryptosystems

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0804758B1 (en) * 1994-07-29 2005-11-09 Certicom Corp. Elliptic curve encryption systems
US6490352B1 (en) * 1999-03-05 2002-12-03 Richard Schroeppel Cryptographic elliptic curve apparatus and method
JP3639153B2 (ja) * 1999-08-16 2005-04-20 日本電信電話株式会社 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体
US20020055962A1 (en) * 1999-11-12 2002-05-09 Richard Schroeppel Automatically solving equations in finite fields
CN1471665A (zh) * 2000-08-29 2004-01-28 NTRU����ϵͳ��˾ 增速密码法与装置
US7257709B2 (en) * 2002-09-03 2007-08-14 Certicom Corp. Method and apparatus for performing validation of elliptic curve public keys

Also Published As

Publication number Publication date
EP1110140A1 (fr) 2001-06-27
DE1110140T1 (de) 2002-02-21
DE60005284T2 (de) 2004-07-01
CA2342737A1 (fr) 2001-01-18
DE60005284D1 (de) 2003-10-23
FR2796177B1 (fr) 2001-10-12
ES2159274T1 (es) 2001-10-01
CA2342737C (fr) 2004-06-01
FR2796177A1 (fr) 2001-01-12
US7079650B1 (en) 2006-07-18
EP1110140B1 (fr) 2003-09-17
JP4704640B2 (ja) 2011-06-15
JP2003504695A (ja) 2003-02-04
WO2001004742A1 (fr) 2001-01-18

Similar Documents

Publication Publication Date Title
ES2159274T3 (es) Procedimiento de calculo para criptografiar una curva eliptica.
US7961873B2 (en) Password protocols using XZ-elliptic curve cryptography
Liardet et al. Preventing SPA/DPA in ECC systems using the Jacobi form
US7379546B2 (en) Method for XZ-elliptic curve cryptography
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
ES2236903T3 (es) Metodo y dispositivo mejorados para la proteccion de programas de codigos publicos contra ataques producidos por la secuencia de operaciones por fallos.
US9425961B2 (en) Method for performing an encryption of an AES type, and corresponding system and computer program product
Akkar et al. A fast and secure implementation of Sflash
US8144864B2 (en) Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
ES2604460T3 (es) Procedimiento para codificar o decodificar con seguridad un mensaje
US20120008780A1 (en) Method for elliptic curve scalar multiplication
ES2379100T3 (es) Procedimiento para la determinación segura de datos
KR20050061544A (ko) 이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화
US20220407719A1 (en) Methods and systems for encrypting rational numbers and adding randomness to rsa cryptosystems using p-adic numbers
ES2287745T3 (es) Procedimiento para la aplicacion asegurada de un algoritmo de criptografia de tipo rsa y componente correspondiente.
Granger et al. A comparison of CEILIDH and XTR
El Mrabet What about vulnerability to a fault attack of the Miller’s algorithm during an identity based protocol?
US20220385448A1 (en) Methods and systems for public and private-key leveled fully homomorphic encryption without bootstrapping with hensel codes
ES2371333T3 (es) Dispositivo y procedimiento de ejecución de un algoritmo criptográfico.
Jalali et al. Optimized supersingular isogeny key encapsulation on armv8 processors
Jalali Efficient implementations of post-quantum isogeny-based cryptography
US20240163085A1 (en) Method for Combined Key Value-Dependent Exchange and Randomization of Two Input Values
Biggs et al. Elliptic curve cryptography
Wilcox A Computational Introduction to Elliptic and Hyperelliptic Curve Cryptography
Weng A low-memory algorithm for point counting on Picard curves