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
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
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}}
\hskip4cmx_{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,5cmcon: \lambda_{i} = \sum\limits_{k=1}^{i} x_{i}
\hskip1cmcon \ 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:
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,5cmc_{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,5cmcon \ 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
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.
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.
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.
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)
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)
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 |
-
1999
- 1999-07-09 FR FR9908949A patent/FR2796177B1/fr not_active Expired - Lifetime
-
2000
- 2000-07-07 DE DE60005284T patent/DE60005284T2/de not_active Expired - Lifetime
- 2000-07-07 US US09/786,756 patent/US7079650B1/en not_active Expired - Lifetime
- 2000-07-07 CA CA002342737A patent/CA2342737C/fr not_active Expired - Lifetime
- 2000-07-07 DE DE1110140T patent/DE1110140T1/de active Pending
- 2000-07-07 ES ES00949685T patent/ES2159274T3/es not_active Expired - Lifetime
- 2000-07-07 JP JP2001510082A patent/JP4704640B2/ja not_active Expired - Fee Related
- 2000-07-07 WO PCT/FR2000/001979 patent/WO2001004742A1/fr active IP Right Grant
- 2000-07-07 EP EP00949685A patent/EP1110140B1/fr not_active Expired - Lifetime
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 |