• No se han encontrado resultados

Aritmética Computacional Factorización de enteros con Curvas Elípticas Avance de Proyecto

N/A
N/A
Protected

Academic year: 2022

Share "Aritmética Computacional Factorización de enteros con Curvas Elípticas Avance de Proyecto"

Copied!
8
0
0

Texto completo

(1)

Aritm´etica Computacional

Factorizaci´on de enteros con Curvas El´ıpticas Avance de Proyecto

Sa´ul Zapotecas Mart´ınez Cuauhtemoc Mancillas L´opez Centro de Investigaci´on y Estudios Avanzados - IPN

E-mail: {zapoteca,mancilla}@cs.computacion.cinvestav.mx 4 de Abril de 2006

1. Introducci´on

Dentro de los m´etodos de encriptaci´on, el esquema de llave p´ublica se basa en la aritm´etica modular. El algo- ritmo RSA es un criptosistema que utiliza el esquema de llave publica y consiste en calcular dos n´umeros primos grandes, cuyo producto N es el modulo que se utiliza en dicha aritm´etica.

La seguridad de RSA radica en la dificultad de la factorizaci´on de n´umeros grandes: es f´acil saber si un n´umero es primo, pero es extremadamente dif´ıcil obtener la factorizaci´on en n´umeros primos de un entero relativamente gigante, debido no a la dificultad de los algoritmos existentes, sino al consumo de recursos f´ısicos que provocan dichos algoritmos. Es claro, que si se pudiese encontrar a los factores primos de N, dicho esquema quedar´ıa vul- nerable, desnudo, sin secreto alguno.

El problema en este enfoque radica en encontrar p y q que es el problema a resolver. A mediados de los 80’s Miller y Koblitz introdujeron las curvas el´ıpticas a la criptograf´ıa, y mas tarde Lenstra mostr´o como factorizar n´umeroa enteros con curvas el´ıpticas.

2. Factorizaci´on por curvas el´ıpticas

Una curva El´ıptica E se define como una ecuaci´on:

E : y2 = x3+ ax − b (1)

donde a y b est´an en alg´un apropiado conjunto (n´umeros racionales, n´umeros complejos, enteros mod n, etc.).

En este caso se usaran n´umeros enteros mod n.

(2)

El algoritmo para la factorizaci´on de un entero n en sus factores p, q, con curvas el´ıpticas es el siguiente:

1. Elegir la curva el´ıptica E : y2= (x3+ ax − b) mod n.

Es decir, definir el punto P (x, y) y las constantes a, b que satisfagan (1).

Para realizar esto, se recomienda generar aleatoriamente x, y y a, para posteriormente encontrar la constante b con la formula:

b = (x3− y2+ ax) mod n

con esto se define la curva eliptica que pasa por el punto P (x, y) teniendo las constantes a, b.

2. Generar puntos sobre la curva.

Para la primera interaci´on, el punto P (x, y) generado aleatoriamente, toma el papel de P1 y de P2 ie) P1(x1, y1) = P (x, y) y P2(x2, y2) = P (x, y)

Para los casos subsecuentes se generan puntos sobre la curva de la forma siguiente:

P1+ P2= P3 = (x3, y3) donde

x3 := (m2− x1− x2) mod n y3 := (m(x3− x1) − y1) mod n y

m = dy

dx = 3x22+ a 2y2

Si gcd(dx, n) = 1 entonces:1 P1 = P2 P2 = P3

Generar siguiente punto en caso contrario:

f actor = gcd(dx, n) Ir al paso 3

3. Regresa los factores de n.

p = f actor q = n/f actor

1 −1 −1

(3)

3. Algoritmo de Euclides Extendido

Este algoritmo es el que se utiliza en el proyecto, ya que tiene la capacidad de encontrar el gcd y si gcd(x, y) = 1 entonces obtener x1mod y adem´as de y1mod x. El algoritmo es el siguiente:

1. if (b = 0){

d = a; x = 1; y = 0;

return(d, x, y);

}

2. x2 = 1; x1 = 0; y2 = 0; y1= 0;

3. while(b > 0){

q = a/b; r = a mod b; x = x2− qx1; y = y2− qy1; a = b; b = r; x2 = x1; x1 = x; y2= y1; y1 = y;

}

4. d = a; x = x2; y = y2; return(d, x, y)

4. Implementaci´on en Software

La implementaci´on en software se realiz´o en Maple ver. 10, el c´odigo de este programa se adjunta a este docu- mento, y en esta secci´on solo se muestran los resultados obtenidos.

En la figura 1 se muestra los resultado al implementar el algoritmo de factorizaci´on por curvas el´ıpticas, en este programa se implementa, el algoritmo extendido de Euclides y el algoritmo de factorizaci´on.

B´asicamente el programa, genera dos numeros primos n1 y n2, realiza la multiplicaci´on de estos N = n1 · n2, de esta forma se obtiene el n´umero que se va a factorizar. En seguida se define la curva el´ıptica con la ecuci´on (1), un paso extra es verificar si fue correctamente generada (no tiene porque no serlo), y de eta forma se an obtenido los 4 parametros que son los que recibe el procedimiento Factorizar, y cuyo objetivo es encontrar los factores de N , en efecto, el resultado que devuelve este procedimiento es la multiplicaci´on ´unica de los primos n1 y n2.

5. Generaci´on de la curva el´ıptica en VHDL

Tomando en cuenta que la ecuaci´on de una curva el´ıptica es:

y2= x3+ ax + b mod n

S´ı se propone un punto (x,y) y la constante “a” todos estos valores mod n, s´olo se calcula el valor de “b” de la siguiente manera:

y2− x3− ax = b

(4)

Figura 1: Factorizaci´on de n´umeros enteros

(5)

Figura 2: Multiplicador modular de 16x16

Como se observa el valor de b puede ser negativo, lo que hace m´as compleja la aritm´etica, ya que hay que trabajar con valores con signo.

Lo primero que se realiz´o fue un multiplicador modular, se muestra en la figura 2.

El multiplicador est´a dividido en dos partes:

1. Multiplicaci´on.

2. Reducci´on.

A continuaci´on se detallan ambas partes del multiplicador.

1. Multiplicaci´on. Este bloque solo se realiza con una entidad del c¸ore generador”, es decir, un multiplicador con signo de 16x16 bits que entrega a la salida 32 bits.

2. Reducci´on. Como se est´a trabajando con una curva el´ıptica modular, la salida del multiplicador al ser de 32 bits no pertenece al campo por lo que hay que obtener su valor en el campo n. Para este fin se emplea el algoritmo de reducci´on sin restauraci´on.

Como el proyecto consiste en factorizar n´umeros en 2 factores primos utilizando curvas el´ıpticas, durante el algoritmo se hace uso de multiplicaciones modulares, para este fin puede utilizarse el multiplicador desarrollado ya que permite que el m´odulo var´ıe.

Algoritmo de reducci´on con restauraci´on

El algoritmo minimiza el n´umero de operaciones necesarias para obtener el m´odulo, en este caso restas. Ya que la forma m´as trivial de obtener el m´odulo es haciendo restas sucesivas hasta que el resultado sea menor que el m´odulo. Lo que realiza el algoritmo de reducci´on es restar “k” veces el m´odulo para de esta forma ahorar restas, esto se logra aplicandose un corrimiento al m´odulo de “k” bits, es decir “k” es el n´umero de bits del m´odulo.

(6)

Figura 3: Reductor modular

Pseudo c´odigo del algoritmo de reducci´on con restauraci´on:

1. R0=t;

2. n := 2kn 3. for i=1 to k do:

4. Ri:= Ri−1;

5. if Ri≺ 0 then Ri:= Ri−1; 4. n:=n/2;

5. end 6. return RK;

El pseudo c´odigo para la reducci´on es f´acil de implementar como una funci´on de VHDL, el bloque representa- tivo se muestra en la figura 3.

Para el c´alculo de la curva el´ıptica se reciben 3 par´ametros, y se calcula b de la siguiente forma:

a2 = a2 a3 = a2∗ a y2 = y ∗ y ax = a ∗ x y2x3 = y2 − ax b = x3 − y2x3

(7)

Figura 4: Reporte de sintesis

Figura 5: Simulasi´on con ModelSim

6. Implentaci´on en hardware

El dipositivo que se esta utilizando es un Virtex2P XC2VP40.El reporte de la s´ıntesis se muestra en la figura 4.

Los resultados obtenidos en la simulaci´on de la primera parte del proyecto se muestran en la figura 5.

Para corroborar los resultados en la figura 6 se muestra una sucesi´on de comandos en maple para calcular el valor de “b” y comparalo con lo arrojado por el ModelSim.

Observando las figuras 5 y 6 se puede observar que el funcionamiento de la generaci´on de la curva el´ıptica es correcta ya que arroja un 2 que es el resultado obtenido por maple.

(8)

Figura 6: C´alculos con Maple

7. ¿Qu´e falta para completar el proyecto?

Una vez contando con la curva el´ıptica, ahora lo que se tiene que hacer es implementar el algoritmo de b´usqueda de los factores del n´umero de entrada. Se inicio la programaci´on del algoritmo extendido de Euclides en VHDL para obtener el GCD ya que se requiere en el algoritmo, de esta forma se puede decir que se lleva un bu´en avance y el proyecto se terminar´a en el tiempo establecido.

Referencias

Documento similar

2.- Aunque, para elaborar un comentario completo, debemos formular varias preguntas, en los ejercicios pedagógicos es preferible que reduzcamos, sobre todo al principio,

"No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

La construcción explícita se desarrolla con el objetivo geométrico de des- cribir lugares que por la aplicación de evaluación determinen subvariedades lineales generales, de

We define three invoultions on the moduli space M(GL(n, C)) d and the corresponing involutions on Sym h T ∗ X [Lemma 4.3.14] that will be used in the study of orthogonal and

 Promocionar la solicitud de proyectos por parte de nuestros grupos, informando sobre posibles nuevas oportunidades de conseguir financiación.  Desarrollar la