¿Cómo elegir Curvas El´ıpticas, con sus correspondientes puntos

Anuncio
¿Cómo elegir Curvas Elı́pticas, con sus correspondientes puntos, criptográficamente buenas?
Fijamos un primo p y el cuerpo finito Fq con q = pd .
1. Elijo aleatoriamente una curva elı́ptica E/Fq
Para ello [si p 6= 2] elegimos al azar A, B ∈ Fq . Si 4A3 + 27B 2 6= 0, la curva es y 2 = x3 + Ax + B; si
4A3 + 27B 2 = 0, repetimos. [OBSERVACIÓN 1: NIST fija q = p y A = −3. OBSERVACIÓN 2: Si p = 2,
se adapta el procedimiento para que la curva resultante sea y 2 + xy = x3 + Ax2 + B.]
2. Calculo n := |E(Fq )|.
Usando una de las versiones “optimizadas” del Algoritmo de Schoof.
3. Compruebo que la curva no es anómala.
Es decir, que no tengo q = p = n. Si lo fuese, vuelvo al paso 1.
4. Compruebo que la curva no es débil ante un ataque MOV.
En particular, no quiero que la curva sea supersingular, lo que puedo comprobar calculando la traza.
Pero más en general, debo comprobar que no tengo q l ≡ 1 mod n para un l pequeño, digamos l ≤ K. [Fijar
K = 6 excluye las supersingulares. Se puede ver cómo debe ser un buen K en el libro de Blale, Seroussi y
Smart.] Si resultase que q l ≡ 1 mod n para unl ≤ K, vuelvo al paso 1.
5. Busco un primo r grande de modo que E(Fq ) tenga un subgrupo (necesariamente cı́clico)
de orden r.
Para ello, pruebo a “factorizar fácil” n. Lo que quiero es llegar a n = s · r con r primo y s ≤ B [B una
cota “pequeña” fijada a priori]. Es fácil comprobar si esto es ası́ o no. Si no lo es, vuelvo al paso 1.
6. Busco un punto aleatorio R ∈ E(Fq ), R 6= O.
Para p
ello, elijo x ∈ Fq al azar y compruebo si f (x) = x3 + Ax + B es un cuadrado en Fq . Si lo es,
R = (x, f (x)); si no lo es, pruebo otro x. [Adáptese adecuadamente en el caso p = 2.]
7. Busco un punto aleatorio P ∈ E(Fq ) tal que | < P > | = r.
Calculo el punto P := [s]R. Si P 6= O, este P sirve. Si P = O, vuelvo al paso 6.
NOTA: Leyendo el documento FIPS PUB 186-3, he visto que la NIST dice lo siguiente: Any point of
order n can serve as the base point. Each curve is supplied with a sample base point G = (Gx , Gy ). Users
may want to generate their own base points to ensure cryptographic separation of networks. Parece que
reconocen que utilizar todos “lo mismo” puede ser un problema. Ası́ que dan una buena curva, pero el
generador del grupo te lo buscas tú. Comento esto aquı́, aparte de porque planteasteis la duda, porque los
pasos finales del algoritmo propuesto son una forma de “generar tu propio punto”.
Criptografı́a. MMA. Problemas 2. 17-4-2008
Creo que son fáciles, y desde luego no requieren escribir mucho. Entregadlos junto a las
Prácticas de SAGE-4.
Problema 1) En el caso p = 2, ¿tendrı́a alguna utilidad haber buscado en el paso 1 una curva más general?
Problema 2) En el paso 5, ¿por qué es fácil [es decir, lleva poco tiempo] comprobar si n = s · r con r primo
y s ≤ B?
Problema 3) En el paso 6, explica por qué siempre existe un punto R ∈ E(Fq ), R 6= O. Explica por qué
el procedimiento propuesto para buscar R es eficaz.
Problema 4) En el paso 7, demuestra que, si P 6= O, entonces | < P > | = r.
Problema 5) Podrı́amos haber elegido la curva E del paso 1 y el punto R del paso 6 simultáneamente
haciendo lo que sugerimos en clase cuando trabajábamos sobre un cuerpo arbitrario: elegimos x, y, A ∈ Fq
al azar, y calculamos B := y 2 − x3 − Ax. Discute las ventajas e inconvenientes de este procedimiento
respecto al propuesto.
Typeset by AMS-TEX
Descargar