Quadratic Sieve, algoritmos y ejemplos

343 visualizaciones

Publicado el

Quadratic sieve con algoritmos y ejemplos sencillos

Publicado en: Ingeniería
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
343
En SlideShare
0
De insertados
0
Número de insertados
5
Acciones
Compartido
0
Descargas
14
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Quadratic Sieve, algoritmos y ejemplos

  1. 1. Quadratic Sieve: Concepto, ALgoritmo y Ejemplos Daniel Cam Urquizo dancourbano@gmail.com Ingenier´ıa informatica Algebra universal para C.C Universidad Nacional de Trujillo 12 de junio de 2014 1. Introducci´on Estos algoritmos tienden a no ser tan eficiente cuando se trata de factorizar un n´umero general de que es un producto de dos n´umeros primos , cada uno de los cua- les son aproximadamente del mismo tama˜no , sin embargo , existen algoritmos que Factor n´umero como estos en aproximadamente la misma cantidad de tiempo como estos son factores cualquier n´umero del mismo tama˜no . Tales algoritmos de facto- rizaci´on se llaman de prop´osito general, ya que, la velocidad no depende del tama˜no de los factores primos, el n´umero de factores primos, o la forma del n´umero. En la pr´actica, los mejores algoritmos de factorizaci´on de prop´osito general conocidos son la criba cuadr´atica y el tamiz campo de n´umero. Versi´on tamiz de segundo grado se han utilizado para definir todos los registros generales de factorizaci´on entre 1981 y 1994, la m´as grande fue la factorizaci´on del n´umero 129 d´ıgitos conocen como RSA -129 El campo de n´umero de asint´oticamente m´as r´apido es relativamente nuevo en comparaci´on con el tamiz cuadr´atica, y no se cree que es pr´actico en primero. No fue sino hasta despu´es de RSA -129 que los nfs convirtieron en lo suficientemente desarrollados como para factorizar n´umeros enteros grandes algunos de manera efi- ciente. Uno de los ingredientes necesarios para el ´exito de nfs fue la implementaci´on de algunas rutinas de ´algebra lineal muy r´apidos. En 1994, se utiliz´o nfs para fac- torizar un n´umero de 130 d´ıgitos conocido como RSA- 130, rompiendo el r´ecord qs en un d´ıgito . Los investigadores que realizaron este tamizado calim para RSA -130 se podr´ıan haber hecho en menos de 15 % del tiempo de permanencia en el tiempo empleado en el n´umero 129 d´ıgitos. El m´etodo descrito mediante el algoritmo de Quadratic sieve creado por Carl Pomerance en 1981, hizo posible por primera vez factorizar n´umeros de m´as cien d´ıgitos. Tuvo gran suceso cuando factorizo un entero de 129 d´ıgitos, conocido como RSA-129 cuya factorizaci´on fue considerado como un descubrimiento por los creadores del RSA. 2. Definici´on Es un algoritmo de factorizaci´on de enteros y, en la pr´actica, el segundo m´etodo m´as r´apido conocido (despu´es de Number field Sieve). Es todav´ıa el m´as r´apido para enteros que tienen 100 o menos d´ıgitos decimales, y es considerado mucho m´as sencillo que la NFS. Es un algoritmo de factorizaci´on de prop´osito general, lo que 1
  2. 2. significa que su tiempo de ejecuci´on ´unicamente depende el tama˜no del entero a ser factorizado, y no sobre una estructura especial o propiedades. 2.1. Teorema: Principio B´asico. Si n es un n´umero factorizado, el quadratic sieve intenta encontrar dos n´umeros xey tal que x ≡ ±y (m´od n) y x2 (m´od n). Esto deber´ıa implicar que(x−y)(x+y) ≡ 0modn, y nosotros calculamos (x − y, n) usando el algoritmo de Euclides para ver si es una divisi´on no trivial. Hay por lo menos un 1 2 de posibilidad de que el factor sea no trivial. Nuestro primer paso para hacerlo es definir: Q(x) = (x + | √ n|)2 –n = x2 − n. cY calcular Q(x1), Q(x2), . . . Q(xk). Determinando el xi, ser´a explicado asi: de las evaluaciones de Q(x), queremos recoger un subconjunto que Q(xi1), Q(xi2), . . . Q(xir) es un cuadrado, y2 . Entonces notamos que para todo x, Q(x) ≡ x2 (m´od n). as´ı que lo que tenemos es: Q(xi1)Q(xi2)...Q(xir) ≡ (xi1xi2...xir)2 (m´od n) Y si las condiciones anteriores de retenci´on, entonces tienen factores de n. Demostraci´on. Sea d = mcd(x − y, n), implica que d es un divisor de n entonces 1 ≤ d ≤, si d = n entonces n|(x−y) entonces x ≡ y (m´od n), donde es contrario con la hip´otesis. Si d = 1 entonces n no divide a x−y. pero n divide x2 –y2 = (x−y)(x+y) por hip´otesis, entonces n debe por lo tanto dividir el segundo factor x + y, por el lema de Euclides. En otras palabras x ≡ −y (m´od n), que es otra vez contrario a la hip´otesis. Esta demostraci´on que 1 < d < n, asi d es un factor no-trivial de n, esto es lo que necesitamos para demostrar. 3. Proposito La criba cuadr´atica se utiliza actualmente como un algoritmo eficiente para facto- rizar enteros compuestos. La idea es encontrar varias relaciones de la forma: (Xi)2 = un producto de peque˜nos n´umeros primos (m´od n) Si usted consigue bastantes relaciones de esa forma, a continuaci´on, algunos de ellos se pueden combinar para dar una congruencia x2 ≡ y2 (m´od n) 4. Algoritmo General Entrada : Un n´umero entero compuesto n que no sea una potencia prima. Salida : Factor no trivial d. Seleccionar el factor base p1, p2, ...pt donde pi = −1, pj, j ≥ 2 es el j − 1 ´esimo primo p, para el cual n es un residuo cuadrativo modulo p; Hallar m = | √ n|; i ← 1: while i ≤ t + 1 do Hallar b = q(x) = (x + m)2 − n; // x = 0, ±1, ±2, ... Testar cuando b es pt − suave. Si no lo es, escoger nuevo x e ir al paso anterior; if b = t j=1 p eij j then ai ←(x+m); 2
  3. 3. i x q(x) factorizaci´on q (x) ai vi 1 0 -312 {{-1,1},{2,3},{3,1},{13,1}} 157 }1,1,1,0,1,0} 2 1 3 {{3,1}} 158 }0,0,1,0,0,0} 3 -1 -625 {{-1,1},{5,4}} 156 {1,0,0,0,0,0} 4 2 320 {{2,6},{5,1}} 159 {0,0,0,1,0,0} 5 -2 -936 {{-1,1},{2,3},{3,2},{13,1}} 155 {1,1,0,0,1,0} 6 4 960 {{2,6},{3,1},{5,1}} 161 {0,0,1,1,0,0} 7 -6 -2100 {{-1,1},{2,4},{3,3},{5,1}} 151 {1,0,1,1,0,0} Cuadro 1: Matriz de bucle bi ← b; vi ← (vi1 , vi2 , ..., vit ) donde vij = eij (m´od 2), 1≤ j ≤ t ; end if i ← i + 1 end while En Z2 hallar φ = T ⊆ 1,2,3,...,t+1 tal que i∈T vi=0; Hallar x= i∈T ai (m´od n); for j, 1 ≤ j ≤ t do lj = i∈T eij 2 ; end for y= t j=1 p lj j (m´od n); if x ≡ ±y (m´od n) then En Z2 hallar φ = T ⊆ 1, 2, 3, ..., t + 1 tal que i∈T vi=0; Ir a computar otro x; end if d=mcd(x-y,n); retornar d 5. Algoritmo Paso a Paso Algoritmo: M´etodo Quadratic sieve se explicar´a con un ejemplo 1. Algoritmo de factorizaci´on de quadratic sieve para el numero 24961 Estableciendo la base de factores con la que se va a trabajar y se obtiene al aplicar el simbolo Jacobi, cuya posible respuesta es 1 y -1, a cada uno con n a partir de -1 s=p1, p2, ..., pt={-1,2,3,5,13,23} El tama˜no de s es t=6 Hallando m, donde m= √ 24961=157 Luego hallando el cuadro 1 segun se muestra Siguiendo los pasos dentro del primer bucle para cada i hallamos un q(x), donde x comenzar´a a usar el positivo como negativo de sus valores que comenzara en 0 e ir´a aumentando, como tambi´en tomar valores entre un m ± X (donde X puede ser un rango de 20 o m´as dependiendo, lo cual veremos mas adelante), cada vez que se cumpla que b es un primo-suave asignar´a valores a ai y bi y tambien la matriz vi con los valores del exponente para cada Pj en modulo 2. El algoritmo requiere identificar aquellas filas que resultan combinaci´on lineal de otras en la matriz formada por los vi obtenidos de los exponentes de los primos en la base de factorial s. 3
  4. 4. A =           1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0           Las filas de la matriz A (donde sus elementos est´an en mod 2) que cumplen e∈T vij = 0 {1, 2, 5}, {2, 4, 6}, {3, 6, 7}, {1, 4, 5, 6}, {2, 3, 4, 7}, {1, 3, 4, 5, 7}, {1, 2, 3, 5, 6, 7} Es decir si yo multiplico cada uno de las de las filas como combinacion lineal tendr´e 0, estas son las que cumplen. Se comienza a estudiar cada uno de estos grupos de filas, As´ı, T ⊆ {1, 2, ..., t+1} Sea T ⊆= {1, 2, 5} x = i∈T ai (m´od n) = 3844930 Para cada j, 1 ≤ j ≤ t, se calcula lj= ( ey i∈t)2 l( 1 )=1 l(2)=3 l(3)=2 l(4)=0 l(5)=1 l(6)=0 Sea y = t j=1 p tj j (m´od n) = 24025 Se debe comprobar si x ≡ ±y (m´od n). Si es asi se debe comprobar otro subcon- junto de T. Se cumple que 936≡ ± 24025 Se debe probar por tanto con el siguiente T. Sea T ⊆= {2,4,6} x = ai i∈T (m´od n) = 4044642 Para cada j,1≤ j ≤ t, se calcula lj= ( ey i∈t)2 . Asi se tiene los siguientes valores: l(1)=0 l(2)=6 l(3)=1 l(4)=1 l(5)=0 l(6)=0 Sea y = t j=1 p tj j (m´od n) = 960 Se debe comprobar si x ≡ ±y (m´od n). Si es asi se debe comprobar otro subcon- junto de T. Se cumple que 960 ≡ ± 960 Se debe probar con el siguiente T Sea T ⊆={3,6,7} x = ai i∈T (m´od n) = 3792516 Para cada j,1≤ j ≤ t, se calcula lj= ( ey i∈t)2 . Asi se tiene los siguientes valores: l(1)=1 4
  5. 5. i xi q(x) 2 3 5 7 13 vi 1 4122 147875 0 0 3 1 2 }0,0,1,1,0} 2 4150 454272 7 1 0 1 2 }1,1,0,1,0} 3 4187 687960 3 3 1 2 1 {1,1,1,0,1} 4 4241 1143072 5 6 0 2 0 {1,0,0,0,0} 5 4407 3380000 5 0 4 0 2 {1,0,0,0,0} Cuadro 2: Matriz de bucle l(2)=5 l(3)=2 l(4)=3 l(5)=0 l(6)=0 Sea y = t j=1 p tj j (m´od n) = 13922 Se debe comprobar si x ≡ ±y (m´od n). Si es asi se debe comprobar otro subconjunto de T. Se cumple que 23405 ≡ ± 13922. Se ha llegado a la soluci´on final Dos factores no triviales 24961 son 109 x 229 6. Prueba con n´umero de 6 d´ıgitos El n´umero con el que vamos a trabajar es n=16843009. El n´umero entero m´as pr´oximo de su ra´ız es 4104. Si tomamos la base del factor de S como {2, 3, 5, 7, 13} obtenidos por la evaluaci´on de el s´ımbolo Jacobi donde se aceptan cuyo valor sea 1 al realizar Jacobi(n, i), donde i es un n´umero primo que ira aumentando hasta un cierto valor, los primeros posibles valores de x se daran como un rango entre 4104+310 como factores de y = f(x) : x=4105, y = 24 .3.167; x=4106,y = 33 .601 x=4017,y = 23 .5.13.47, sin embargo en x= 4122 y y=147875 =53 ,7,132 y apartir de all´ı se encuentran los primeros 5 Primos suaves de yi = f(xi) = x2 i − n, pues sus factores que se des- componen est´an dentro de la base de factores, estos se incluyen, caso contrario no, obteniendose el cuadro 2: Lo que tenemos que hacer ahora es buscar las combinaciones de filas en el ´ulti- mo conjunto de columnas (los exponentes vi (mod 2)) que suman cero. Al hacerlo hemos garantizado una combinaci´on de valores que dan incluso exponentes y por lo tanto un cuadrado perfecto para y. por lo tanto una combinaci´on sumando a cero. Esta combinaci´on producir´a un conjunto de bases de factores a una potencia par y los valores de x correspondientes se multiplican. Un m´etodo para obtener el vector que multiplica las columnas es aumentar una matriz identidad y luego hacer una reducci´on escalonada, de tal manera que aquellas filas que tengan 0´s hasta el tama˜no de la matriz original, se toman la siguiente posicion hasta el final convirtiendose en uno de los posibles valores para resolver la combinacion lineal. En nuestro ejemplo, esto resulta ser f´acil: Podemos ver que las filas 4 y 5 son id´enticos en los exponentes (mod 2) de la matriz y por lo que la adici´on es el vector cero (mod 2). Obteniendo: x = x4.x5= 4241.4497 = 19071777 y = y4 −y5=1143072.3380000= (25 ,33 ,52 ,71 ,131)2 Podemos ver que x2 ≡ 16054517 ≡ y (m´od n). Estableciendo z = 25 ,33 ,52 ,71 ,131, donde nosotros calculamos d=mcd(x-z,n) donde d = 257 que es factor de n. Si tomamos ahora a S=2,3,5,7,13,17 entonces tenemos dos relaciones para los valores 5
  6. 6. peque˜nos de j como x=4129, y=205632= 26 ,33,7,17y x=4133,y=248680=23 ,33 ,5,13,17 multiplicando tenemos en mod 2 el vector (1,0,1,1,1,0). Cuando esto se agrega a la segunda, tercera y cuarta filas de la matriz anterior se tiene el vector cero (mod 2) y por lo que tomar: x= 4129.4133.4159.4187.4241 = 1260289859516184521, z = 212 ,38 ,5,73 ,132 ,17, donde y = z2 . Nosotros vemos que x2 ≡ y = z2 mod n, ahora mcd(x-z,n)=65537, que es otro factor de n 6

×