factorización de número enteros

Upload: sandy-garcia

Post on 08-Jul-2015

1.042 views

Category:

Documents


1 download

TRANSCRIPT

. Factorizacin de nmero enteros

5.1. Introduccin Los criptosistemas de clave pblica estn basados en un problema que de alguna manera es difcil de resolver. Difcil en este caso se refiere a los requisitos computacionales para encontrar una solucin que es la concepcin del problema. Estos problemas se llaman problemas duros. Algunos de los ms conocidos ejemplos son factorizados, teoremademostracin y el problema del vendedor viajante . Hay dos clases de grandes problemas que interesan a los criptgrafos, P y NP. Simplemente formulemos, un problema si este esta en P puede resolverse en tiempo polinmico ,mientras si el problema est en NP puede verificarse la validez de una solucin propuesta en tiempo polinmico.. Casa problema en P est en NIP, pero nosotros no sabemos s P=NP o no. Por ejemplo, el problema de multiplicar dos nmeros est en P. Es decir el numero de operaciones de bit requeridos para multiplicar dos nmeros de bit de longitud k es al menos k', un polinomio. El problema de hallar un factor de un nmero est en NP, porque una solucin sugerida puede verificarse en tiempo polinmico. Sin embargo, no es conocido si este problema est en P. La factorizacin es el acto de subdividir un entero en un grupo de enteros ms pequeos( los factores) qu, cuando multiplicados juntos, forma el entero original. Por ejemplo, los factores de 15 son 3 y 5; el problema de la factorizacin consiste en encontrar 3 y 5 cuando nos dan 15. La factorizacin de un primo requiere un entero subdividido en factores que son nmeros primos; cada entero tiene una factorizacin de primos nicos. Multiplicando dos nmeros primos enteros es fcil, pero hasta donde sabemos, factorizar el producto de dos (o ms) nmeros primos es mucho ms difcil. La factorizacin es el fundamento, presumiblemente de un problema duro en que algunos criptosistemas de clave pblica basan su seguridad, incluso el algoritmo RSA. La factorizacin de un mdulo de RSA habra permitido a un atacante deducir la clave privada; as, cualquiera que pueda factorizar el mdulo puede desencriptar los mensajes y falsificar las firmas. La seguridad del algoritmo de RSA depende del problema de la factorizacin siendo difcil y no hay presencia de ningn otro tipo de ataque. Ha habido recientemente evidencia que la ruptura del criptosistema de RSA no es equivalente a la factorizacin . Esto no ha sido probado esta factorizacin debe ser difcil, y all queda la posibilidad que un mtodo de factorizacin rpido y fcil pueda descubrirse, sin embargo investigadores de la factorizacin consideran esta posibilidad remota. No es necesariamente cierto que un nmero grande sea ms difcil de factorizar que un nmero ms pequeo. Por ejemplo, el nmero 101000 es fcil de factorizar, mientras el nmero de 155-dgitos RSA-155 se factoriz despus de siete meses de clculos extensos. Lo que es en general verdad es que un nmero con factores primos grandes es ms difcil de factorizar que un nmero con factores primos pequeos (todava, el tiempo de ejecucin de algunos algoritmos de factorizacin, depende de el tamao del nmero nicamente y no

de el tamao de sus factores primos). Esto es porque el tamao del mdulo en el algoritmo de RSA determina cmo obtener un uso real del criptosistema RSA. Un mdulo de RSA es el producto de dos nmeros primos grandes; con un mdulo ms grande, el primo se ha vuelto ms grande y un atacante necesitar ms tiempo para factorizarlo. Recordemos que un nmero con factores primos grandes puede poseer ciertas propiedades hacindolo fcil de factorizar. Por ejemplo, ste es el caso de los factores primos estn muy cerca el uno del otro. El descomponer en factores es un campo de investigacin muy activo entre matemticos e informticos. En este captulo trataremos diversos mtodos de factorizacin, desde la criba de Eratstenes hasta los mtodos de factorizacin ms modernos como pueden ser NFS,MPQS,CFRAC. El descomponer en factores ha llegado a ser ms fcil durante los ltimos 15 aos, sto se debe a tres razones: el hardware ha llegado a ser de ms alcance las ordenadores son mas baratos y abundantes mejoran descomponer en factores

Todo esto supone un beneficio a la persona que pretende romper el criptosistema del RSA,que como hemos visto anteriormente se basa en la factorizacin de nmeros primos. Antes de desarrollar este tema en profundidad veamos que es un numero primo, un nmero primo es aquel que su nica factorizacin, aparte del orden de los factores es p=1*p. Como hemos mencionado anteriormente en estas lneas, decidir si un nmero es primo o no, no es una pregunta que resulte fcil de responder, ya que basta con considerar nmeros grandes. Antes de desarrollar los mtodos de factorizacin de nmeros enteros ,veamos unos criterios para decidir si un numero es primo o no, los tests de primalidad. 5.2. Tests de primalidad El problema de la primalidad consiste en determinar, de forma aleatoria, nmeros primos grandes. El problema surge, entre otras razones porque el criptosistema del RSA necesita, para ser implementado, dos nmeros primos grandes P y Q, de longitud considerable grande, es decir alrededor de 200 dgitos. Para resolver este problema se recurre a los test de primalidad. Definicin. Un entero p > 1 se dice que es primo si sus nicos divisores son 1 y el propio p, es decir, si no tiene divisores propios. (Obsrvese que 1 no es primo. El nmero primo ms pequeo es el 2, y todos los dems primos 3, 5, 7, 11, . . . , son impares.) Un entero n > 1 se dice que es compuesto si admite divisores propios, es decir, si se puede

expresar de la forma

Definicin Un test de primalidad es un criterio para decidir si un numero dado es o no primo Lema Un entero n > 1 es compuesto si, y slo si, es divisible por algn primo . Demostracin: Si n es divisible por algn primo p con 1 < se cumple que n es compuesto. Recprocamente, si n es compuesto, es n = ab donde 1 < a , b < n; al menos uno de los dos (a b) ha de ser menor o igual que (de lo contrario, ab > n) y dicho factor ha de ser divisible por algn primo , el cual tambin divide a n. Este mtodo es efectivo para enteros pequeos, ya que no hay que considerar demasiados nmeros primos, pero cuando n se hace grande se necesita demasiado tiempo: por el teorem de los Nmeros Primos, el nmero de primos viene dado por

5.2.1.

Test de primalidad de Fermat

Quiz la forma ms conocida de sospechar que un nmero es primo, es aplicar la identidad conocida por el Teorema pequeo de Fermat y consiste en la siguiente afirmacin: Si es un nmero primo y entonces En efecto esto lo cumple cualquier nmero primo, es decir, si encontramos a un nmero y un nmero tal que no cumpla la igualdad, entonces es compuesto, sin embargo, la afirmacin recproca no se cumple, es decir, existen nmeros que cumplen la igualdad y no son primos. . En resumen estrictamente hablando, el mtodo de Fermat no da el 100% de certeza para poder encontrar nmeros primos. Si n es compuesto y pasa el test de Fermat de base a, se dice que n es un pseudoprimo respecto de la base b. Un entero compuesto que sea pseudoprimo respecto de todas las bases se llama nmero de Carmichael, la existencia de estos nmeros impide que se pueda disear un test de primalidad prctico basado en el test de Fermat. Teorema (Alford,Granville,Pomerance,1992) Existen infinitos nmeros de Carmichael.

Ejemplos de nmeros de Carmichael son : 561=3*11*17 1105=5*13*17

5.2.2.

Test de primalidad de Miller Rabin

Sean n y b enteros, con n impar y (b, n) = 1. Sea n - 1 = 2kn0, con no impar, y sean x0=bn0,x1=x02,,xk=x2k-1=b2kn0 =1 (mod n) Si n es primo, x0=1 o -1 {x0,......,xk-1} Cuando se cumple esta condicin se dice que n pasa el Test de Miller-Rabin de base b. Si n es compuesto y pasa el test de Miller-"bin de base b, se dice que n es pseudoprimo fuerte respecto de la base b. Teorema. Si n es compuesto, el nmero de bases 1 < b < n respecto de las cuales es pseudoprimo fuerte es < ( n) / 4 Test de primalidad de Miller-Rabin. Dado un entero impar n, sean b1,.........., bt enteros del intervalo 1 < bi < n tomados aleatoriamente. Entonces 1 para algn , n es compuesto, - Si (bi, n) - Si n no pasa el test de Miller-Rabin para algn bi, n es compuesto. -Si n pasa el test de Miller-Rabin para todos los bi, la probabilidad de que no sea primo es < (l/ 4)t. 5.2.3. Test de primalidad de Solovay Strassen Sean n y b enteros, con n impar y (b, n) = (b/n) (mod n). 1. Si n es primo, b(n-1)/2 Cuando se cumple esta igualdad se dice que n pasa el Test de Solovay-Strassen de base b. Si n es compuesto y pasa el test de Solovay-Strassen de base b, se dice que n es pseudoprimo de Euler respecto de la base b. Teorema. Si n es compuesto, el nmero de bases 1 1 puede ser descompuesto, de forma nica, como producto de primos. Esto permite reducir muchos problemas que se plantean al trabajar con nmeros enteros a cuestiones sobre nmeros primos. El segundo resultado importante es el Teorema de Euclides sobre la existencia de infinitos nmeros primos. Adems de existir infinitos nmeros primos, estos se distribuyen de forma bastante irregular entre los enteros y hemos incluido algunos resultados que nos permiten predecir dnde pueden encontrarse nmeros primos o dnde aparecen frecuentemente. Lema

Sea p primo y sean a y b enteros cualesquiera. Entonces: 1. p | a p y a son primos entre s. 2. p | ab p | a p | b Demostracin: 1. Por definicin d = mcd(a,p) | p, por lo que, al ser p primo, debe ser d = 1 d= p. a. Si d= p, como d | a se tiene que p | a b. Si d=1 los nmeros a y p son primos entre s. 2. Supongamos que p | ab. Si p no divide a a, del apartado (1) se deduce que mcd(a, p) = 1. La identidad de Bezout nos dice entonces que 1= au + pv para algunos enteros u y v, por lo que b = aub + pvb. Como suponemos que p | ab, divide tambin a aub y como divide evidentemente a pvb, tambin divide a b como queramos probar. Los dos apartados pueden fallar si p no es primo: por ejemplo, para p = 4, a = 6 y b = 10. El Lema puede ser generalizado para el producto de cualquier nmero de factores. Corolario . Si p es primo y p | a1a2 ak, entonces p divide a ai para algn i=1, 2, . . . , k. Demostracin: Haremos induccin en k. 1. Si k = 1 la hiptesis es que p | a1, por lo que la conclusin es cierta. 2. Supongamos ahora que k > 1 y que el resultado es cierto para todos los productos de k1 factores. Si denotamos por a al producto a = a1a2 ak-1 y b = ak entonces a1a2 ak = ab y por tanto, p | ab. Por el Lema se tiene que p | a o bien p | b. En el primero de los casos, la hiptesis de induccin nos dice que p | ai para algn i = 1, . . . , k-1; en el segundo de los casos p | ak. En cualquiera de los casos p | ai para algn i, como se pretenda probar. Una aplicacin directa de este corolario es la siguiente. Corolario. Si p es primo y p | ak, entonces p | a y, por tanto, pk | ak. El siguiente resultado, conocido como Teorema Fundamental de la Aritmtica explica la importancia de los nmeros primos. Teorema [Teorema Fundamental de la Aritmtica] Cada entero n >1 admite una descomposicin en factores primos n = p1e1 p2e2 pkek donde p1, p2, . . . , pk son primos distintos y e1, e2, . . . , ek enteros positivos. Esta factorizacin es nica, independientemente de las permutaciones de sus factores. (Por ejemplo, 200 admite la descomposicin en factores primos 23 52 o, alternativamente, 52 23 si permutamos sus factores, pero no admite ninguna otra factorizacin posible.) Demostracin: 1. Existencia: Utilizaremos el principio de induccin completa para probar la existencia de la descomposicin en factores primos. Como hemos asumido que n > 1, comenzaremos la induccin por n = 2.

a. Si n = 2, la requerida factorizacin es n = 21. b. Asumamos ahora que n > 2 y que cualquier entero estrictamente contenido entre 1 y n admite una descomposicin en factores primos. Si n es primo entonces n = n1 es la factorizacin buscada, por lo que podemos asumir que n es compuesto. En dicho caso n = ab con 1 < a , b < n. Por la hiptesis de induccin, a y b admiten descomposiciones en factores primos. Sustituyendo estas en la ecuacin n = ab y asociando las potencias de cada factor primo pi, obtenemos una descomposicin en factores primos de n. 2. Unicidad: Para probar que es nica, supongamos que n admite las factorizaciones n = p1e1 p2e2 pkek = q1 f1 q2 f2 qh fh donde p1, p2 pk , q1, q2 qh son dos conjuntos diferentes de primos, y los exponentes ei (1 i k) y fj (1 j h) son todos positivos. La primera factorizacin prueba que p1 | n, por lo que el Corolario (aplicado a la segunda factorizacin) nos dice que p1| qj para algn j = 1, . . ., h. Permutando el orden de los factores primos de la segunda factorizacin, podemos asumir que j=1, es decir, que p1| q1. Como q1 es primo, se sigue que p1= q1, por lo que cancelando dicho factor primo de ambas factorizaciones obtenemos que p1e1-1 p2e2 pkek = q1 f1-1 q2 f2 qh fh Reiterando este razonamiento, vamos emparejando primos en ambas factorizaciones y cancelndolos hasta que eliminemos todos los primos de una de las factorizaciones. Si una de ellas se elimina antes que la otra, el resto de la factorizacin que nos queda es una factorizacin de 1 como producto de primos pi o qj, lo cual es imposible ya que pi, qj > 1. Se tiene entonces que ambas factorizaciones se cancelan simultneamente, por lo que debemos cancelar cada copia ei de cada factor primo pi con el mismo nmero fi de copias de qi; es decir, k = h, cada pi = qi (salvo permutacin de los factores) y cada ei = fi, por lo que la descomposicin en factores primos de un entero n es nica. Teorema [Teorema de Euclides] Existen infinitos nmeros primos. Demostracin: Lo demostraremos por reduccin al absurdo. Suponemos que slo existe un nmero finito de primos y llegamos a una contradiccin, por lo que debe existir una cantidad infinita de ellos. Supongamos que slo existen los primos p1, p2, . . . , pk y sea m = p1 p2 pk + 1. Como m es un entero mayor que 1, el Teorema Fundamental de la Aritmtica nos asegura que es divisible por algn primo p (incluyendo la posibilidad de que m = p ). Segn nuestra hiptesis, el primo p ha de ser uno de los nicos primos que existen p1, p2, . . . , pk, por lo que p divide al producto p1 p2 pk. Como p divide a m y a p1 p2 pk debe dividir a m - p1 p2 pk= 1, lo cual es imposible. Deducimos de aqu que nuestra hiptesis es falsa, por lo que deben existir infinitos nmeros primos 5.2.1 La criba de Eratstenes Es una forma sistemtica de construir la lista de los nmeros primos existentes hasta un entero dado n. Se escribe, en primer lugar, la lista de enteros 2, 3, . . . , n en orden creciente. Subrayamos el 2 (que es primo) y eliminamos todos los mltiplos de 2 tales como 4, 6, 8, . .

. (por ser compuestos). El primer entero, posterior a 2, que no ha sido eliminado es 3. Obsrvese que no ha sido eliminado por no ser divisible por ningn primo anterior, por lo que podemos asegurar que es primo. Lo subrayamos y eliminamos todos sus mltiplos 6, 9, 12, . . . En la siguiente etapa subrayamos 5 y eliminamos todos sus mltiplos 10, 15, 20, . . . Continuamos de esta forma hasta que todos los elementos de la lista hayan sido o bien subrayados o bien eliminados. En cada etapa, el primer entero que no ha sido eliminado debe ser primo, ya que de lo contrario habra resultado eliminado por ser mltiplo de alguno de los primos anteriores, por lo que slo los primos aparecern subrayados y, recprocamente, todos los primos de la lista aparecern subrayados, por lo que al finalizar el proceso, aparecen subrayados todos los primos p n. (De hecho, podemos detener el proceso cuando eliminamos todos los mltiplos de los primos )Se da a continuacin la tabla de los 100 primeros nmeros primos. 2 3 5 7 11 71 73 79 83 89 151 157 163 179 181 191 257 263 269 283 293 307 379 383 389 419 421 431 499 503 509 13 97 167 193 271 311 397 433 521 17 101 173 197 277 313 401 439 523 19 103 23 29 107 31 109 223 337 457 37 113 227 347 461 41 127 229 349 463 43 47 131 233 353 467 53 137 239 359 479 59 139 241 367 487 61 149 251 373 491 67

199 211 281 317 331 409 443 449 541

5.3.2. Mtodo de Fermat Otro mtodo interesante por sus aplicaciones tericas, ms que por su eficacia, es el mtodo de factorizacin de Fermat. La idea del mtodo para factorizar un nmero impar, que no sea cuadrado, como producto de dos n=a*b, consiste en expresarle como diferencia de cuadrados: n= x2 y2 ,de modo que se obtiene su factorizacin en la forma: n=(x+y)*(x-y). Es claro que x > n], por lo que en[ n] +l, a continuacin se halla z= a2primer lugar se determina el valor de a= [ -n y se prueba si z es o no un cuadrado. Si fuera un cuadrado, el procedimiento concluye, pues se tiene: z= b2 =a2 -n; es decir, n= a2- b2=(a-b)*(a+b). En caso contrario, se intenta con el siguiente valor de x, que es a+l, y se calcula la diferencia (a+1) 2-n=m2+2*m+I-n=z+2*m+1, repitindose el procedimiento anterior. Ejemplo: Factorizar n=20081 9. Consideremos 200819) +1 =449. Ahora 4492 -200819 =782, que no es un cuadradoa=[( perfecto.

Se intenta con el siguiente valor de a: a=450, 4502-200819= 1681 =412. Por tanto, 200819=4502-412=(450-41)'(450+41) = 491 *409. 5.3.3. Mtodo de Legrende El mtodo de Legendre para factorizar un nmero n, utiliza una distincin entre los nmero primos compuestos con respecto al nmero de soluciones de la congruencia X2= y2(mod n). Para los nmeros primos, la congruencia anterior nicamente tiene como soluciones las triviales: x=+-y(mod n), mientras que si n es compuesto la congruencia anterior admite ms soluciones. No triviales a la congruencia anterior. Como x2-y2 = 0 (mod n), si (x+y) es una solucin no trivial, un factor de n se determina hallando el mcd(x+y,n). 5.3.4. Mtodo p de Pollard El algoritmo Pollards Rho es un algoritmo de factorizacin de propsito especfico para encontrar los factores pequeos de un nmero compuesto. Un algoritmo de propsito especfico es aquel en el que su comportamiento depende de la forma que tiene el nmero a factorizar. En general, el algoritmo encuentra factores de hasta 10 dgitos. Sea f: S S una funcin aleatoria, donde S es un conjunto finito de cardinalidad n y n es el nmero a factorizar. Sea x0 un elemento aleatorio de S y sea la secuencia x0, x1, x2, definida de la siguiente 0. manera: xi+1 = f(xi) para i Como S es un conjunto finito, en algn momento la secuencia va a comenzar a ciclar. El algoritmo de Pollards Rho define la secuencia x0, x1, x2, de la siguiente manera: x0 = 2 xi+1 = 0, f(xi) = xi2 + 1 mod n; para i se intenta encontrar duplicados en la secuencia utilizando el mtodo de Floyd para encontrar ciclos x2m (mod p). Como p / n pero es desconocido, en una secuencia de manera que xm se computan los trminos xi mod n de la secuencia y se prueba si 1 < mcd(xm - x2m, n) < n, en ese caso hemos encontrado un factor no trivial de n (no necesariamente primo). En cambio si d = n quiere decir que el mtodo fall en encontrar un factor de n. El algoritmo: pk para algn p Entrada: un entero n compuesto tal que n . primo, k

Salida:

un factor no trivial de n (no necesariamente primo)

1. Inicializar a := 2, b := 2. 2. Para i = 1, 2, hacer 2.1. Calcular a := a2+1 mod n, b := b2+1 mod n, b := b2+1 mod n. 2.2. Calcular d := mcd(a-b, n). 2.3. if 1 < d < n entonces devolver(d). 2.4. if d = n entonces terminar el algoritmo (no se encontr un factor). Un Ejemplo: Apliquemos el algoritmo de factorizacin Pollards Rho a n = 455459. La siguiente tabla muestra los valores de a, b y d al final de cada iteracin del paso 2. Un factor no trivial de n = 455459 es 743. Por lo tanto 455459 / 743 = 613 es otro factor de n. Proposicin. El tiempo de ejecucin esperado de algoritmo p de Pollard para localizar un factor de p de n es =( p1/2) multiplicaciones modulares; es decir, el tiempo esperado para encontrar un factor no trivial de n es O(n1/4) multiplicaciones modulares. 5.3.5. Metodo p-1 de Pollard Este mtodo de factorizacin puede usarse de forma eficiente para localizar algn factor primo p, de un nmero compuesto n, si se verifica que p-1 es suave (smooth). Un nmero se dice que es suave respecto a una cota B si todos sus factores primos B. son La idea del algoritmo p-1 de Pollard consiste en fijar una cota de suavidad B, y considerar el mnimo comn n. B que son mltiplo Q, de todas las potencias de los primos Si p es un factor primo de n, de modo que p es B-suave, entonces P-1/Q, por lo que para cada a que satisfaga mcd(a,p)=1, por el Teorema de Fermat se tiene a0=1 (mod p). Por tanto, si mcd(a0-l.n)=d, entonces p/d. Es posible que fuera d=n, en cuyo caso el algoritmo falla. Sin embargo, esta situacin probable que ocurra si n tiene al menos dos factores primos grandes distintos. El algoritmo del mtodo p-1 de Pollard de factorizacin es el siguiente: ENTRADA - un entero compuesto n, que no es la potencia de un primo SALIDA - un factor no trivial d de n 1. Seleccionar una cota de suavidad B.

2. n-1 y a Seleccionar un entero aleatoria a que verifique las condiciones 2 mcd(a,n)=1 (si no es as, se ha encontrado un factor no trivial de n) B DO 3. FOR cada primo q 3.1 Calcular FORMULA 3.2 Calcular a=aqt (mod n) 4. Calcular d=mcd(a-1,n) 5. IF d=1 OR d=n THEN terminar el algoritmo con fallo ELSE regresar (d) Ejemplo. Factorizar 17441 1. 2. 3. q 2 3 5 7 11 13 17 19 Seleccionar la cota de suavidad B=19 Se selecciona el entero a=3 Para este paso se obtienen los siguientes valores intermedios l 14 8 6 5 4 3 3 3 a 6045 14642 4291 11939 3150 12446 3587 8151

4. Se calcula d=mcd(8151-1, 17441)=163. 5.Entonces, dos factores no triviales de n=17441 son p=163 y q= 174411163 = 107 (que de hecho son primos). En el algoritmo anterior se puede apreciar que p-1 =l 62=2*34 y q-1 =l 06= 2*53; es decir, p-1 es 19-suave, mientras que q-1 no lo es. Proposicin. El tiempo de ejecucin de algoritmo p-1 de Pollard es O(B In n/in B) multiplicaciones modulares. 5.3.6. Mtodo de Gauss Este mtodo es muy importante ya que es la base para muchos otros mtodos de

factorizacin. Se trata de un mtodo de exclusin, que consiste en encontrar la mayor cantidad posible de residuos cuadrticos (RC) mdulo N, de forma tal de excluir cada vez ms primos como posibles factores de N. De esta forma se reduce tanto el nmero de posibles factores, que nos permite utilizar una tcnica conocida como trial division utilizando aquellos factores que nos quedan. La idea que existe detrs de este mtodo es que como un entero a es residuo cuadrtico de casi la mitad de los primos, entonces el hecho de que a sea RC mdulo N, nos permitir excluir x2 cerca de la mitad de los primos como divisores de N. Esto es porque si a x2 mod p, para cualquier p divisor de N. mod N, entonces implica que a Residuo cuadrtico: Un nmero a es residuo cuadrtico mdulo N, x tal que si x2 mod N. a Reglas para RC y no RC: el producto de dos RC es siempre un RC y el producto de un RC y un no RC no es un RC. Consiste en realizar divisiones del nmero N por los primos pequeos. Se puede tener una tabla con los primos ms bajos hasta un lmite y tener un rpido programa en contraste con el espacio para almacenarlos o generarlos y tener un programa un poco ms lento pero sin demanda de espacio de almacenamiento. Es ventajoso no utilizar slo primos como divisores. Es bueno, por ejemplo, utilizar los enteros 2 y 3 y luego todos los enteros positivos de la forma 6k+1 y 6k-1 como divisores. Estas frmulas incluyen todos los primos y algunos nmeros compuestos; como por ejemplo 25, 35, 49; para realizar las divisiones. Realizar tambin estas divisiones no es desventaja ya que el ciclo en el programa para la generacin de estos nmeros es muy rpido. Aplicndola en el mtodo de Gauss, esta tarea, consiste en realizar divisiones con los primos que resulten de la variacin de los k's en las frmulas obtenidas en la etapa anterior y generada a partir de los RC, utilizando un algoritmo optimizado. Adicionalmente, para mejorar la recorrida de los enteros positivos de las frmulas encontradas, como estos pueden llegar a ser nmeros compuestos, se realizan chequeos rpidos sobre los nmeros tal que no sea necesario realizar divisiones con nmeros grandes. Es as como se chequea divisibilidad por:

Tres: Sumando todos los dgitos y viendo si el resultado es divisible por 3. Cinco: Viendo si el ltimo dgito termina en 0 o 5. Once: Se suman las cifras en posiciones impares, y se restan las de posiciones pares. Finalmente se verifica si el nmero resultante es divisible por 11. Si se cumple alguna de las condiciones aqu presentadas, entonces el nmero es salteado, ya que es un nmero compuesto, y si dividiera a n, se hubiera descubierto antes con alguno de los factores 3, 5 o 11 al recorrerlos originalmente (si el nmero es 3, 5 u 11 no se considera este chequeo).

5.3.7. Factorizacin con curvas elpticas El procedimiento siguiente para factorizar nmeros enteros mediante curvas elpticas debido a A. K. Lennstra y a W. H. Lenstra jr. Sea n un nmero compuesto relativamente primo a 6. En la prctica, n se sabe para tener ningunos pequeos factores principales. Al azar escogemos un parmetro n 0 son enteros positivos. Los valores se obtienen de la computacin sucesiva de:

Una vez introducido este concepto, desarrollaremos en qu consiste la tcnica.

Esta tcnica de y2 mod N fue inspirada en el mtodo de encontrar soluciones no triviales a x2 factorizacin de Legendre, del cual se toma la idea de encontrar residuos cuadrticos pequeos a partir de la expansin como fraccin continua de y de la idea de combinar residuos cuadrticos para obtener otros nuevos. El mtodo de Legendre utiliza la siguiente distincin entre nmeros primos y compuestos: para cada N, primo o compuestos, - y mod N, + y mod N y x y2 mod N tiene las soluciones x la congruencia x2 que llamamos las soluciones triviales. Para un N compuesto, adems existen otras soluciones, que pueden ser utilizadas para calcular eventuales factores de N. y2 As, si N = pq, la congruencia x2 - z mod N, aparte de + z mod N y x mod N tiene un par ms de soluciones x las soluciones triviales. Esto puede ser utilizado para hallar la factorizacin de N = pq. Primero de todo, debemos encontrar la solucin no trivial a la 0 mod pq y como x + y o x congruencia. Luego, como x2 - y2 = (x + y).(x y) y no son divisibles por ambos p y q, entonces uno de ellos es divisible por p y el otro por q. Este factor p puede hallarse utilizando el algoritmo de Euclides entre (x + y, N). La primera parte del mtodo consiste en computar parcialmente la expansin de la fraccin continua de Las siguientes ecuaciones, son las que conforman la base fundamental del mtodo. A partir de ellas, se realizan los clculos necesarios para el algoritmo.

El prximo paso en el mtodo es buscar combinaciones cuadrticas de los Qi completamente factorizados. Esta combinacin, podemos notarlo como: Es 1 son pares. y producida si todos los exponentes Para poder obtener estas combinaciones cuadrticas, debemos generar una matriz con la factorizacin completa de los Qi, y aplicarle el algoritmo de eliminacin Gaussiana mod 2. Cada una de las filas de la matriz, corresponder a un vector de 1's y 0's. Habr un 0 en la posicin i, en caso que el primo Pi no se encuentre o sea un cuadrado. En caso contrario encontraremos en esa posicin un 1. Cada una de las combinaciones encontradas, pueden resultar soluciones triviales o no triviales, con lo cual, debe chequearse de que se trata de una solucin no trivial. En caso que sea trivial la solucin encontrada, se debe descartar y continuar con la bsqueda. Debemos encontrar un conjunto de nmeros denominados Qn como sigue: Qn = ( N Pn2 ) / Qn-1 Donde N es el nmero grande a factorizar, y

Pn = bn-1 * Qn-1 Pn-1 donde bn = [xn] (parte entera inferior) donde xn = 1 / ( xn-1 bi-1 ) Tambin calculamos: An = bn*An-1 + An-2 Para realizar estos clculos, se deber calcular primero: Q0 = 1 A0 = b0 P0 = 0, P1 = [ ] A-1 = 1 x0 = b0 = [ x0 ] y luego Calcular xn en base a xn-1 y bn-1 Calcular bn en base a xn Calcular pn en base a bn-1, qn-1, pn-1 Calcular qn en base a pn, qn-1 Factorizar qn y almacenar su factorizacin (slo los primos elevados a potencias impares). 5.3.9. MPQS Para intentar entender este mtodo de factorizacin veamos primero el Quadratic Sieve, ya que el MPQS es una variante del QS, se diferencian en que toman polinomios diferente como veremos ahora. El mtodo QS fue propuesto por Carl Pomerance extediendo las ideas de Kraitchik y Dixon, fue uno de los algoritmos ms eficientes de los aos 80 hasta principios de los 90. Veamos como funciona el QS, si n es el numero que deseamos factorizar, el QS intenta encontrar dos nmeros tales que x2 y2 mod n y x +- y mod n. Esto implicar que (xy)*(x+y) 0 mod n,y simplemente computando el (x-y,n) usando el algoritmo de Euclides para ver si es o no un factor no trivial de n. Nuestro primer paso ser definir Q(x)=(x+n)2-n=z2-n Y computar Q(x1),,Q(xn),donde los xi sern explicados ms adelante. Desde la evaluacin de los Q(x),nosotros queremos encontrar un subconjunto tal que Q(xi1), ,Q(xin) sea un cuadrado y2.Entonces notar que para todo x, Q(x) 0 mod n. As que nosotros tenemos Q(xi1),,Q(xin) (xi1xin)2 mod n y si las condiciones se cumplen, nosotros tenemos un factor de n. Nosotros necesitamos un camino eficiente para determinar nuestros xi,y para obtener que el producto de los Q(xi) sea un cuadrado. Ahora para probar si el producto es cuadrado, los exponentes de los factores primos del producto necesitan ser todos pares. As necesitaremos

factorizar cada uno de los Q(xi). Por consiguiente, queremos que ellos sean pequeos y factorizar sobre un conjunto fijado de nmeros primos, incluyendo el -1, a este conjunto lo llamaremos base de factores. Para hacer Q(x) pequeo necesitamos seleccionar valores de x cerca de 0,asi nosotros fijamos un limite M y solo considerar valores de x sobre el intervalo de criba [-M,M]. Ahora si x esta en dicho intervalo, y algn primo p divide a Q(x), entonces (x2-[n])2n mod p, as n es un residuo cuadrtico mod p. Una vez que tenemos un conjunto de primos para nuestra base de factores, comenzamos a tomar nmeros x de nuestro intervalo de criba y calculamos Q(x),y verificamos si estn completamente factorizados sobre nuestra base de factores, si es as diremos que es suave en caso contrario no lo consideramos y seguimos con el siguiente elemento de nuestro intervalo de criba. Si Q(x) esta completamente factorizado, entonces podemos tomar los exponentes (mod 2) de los primos en la base de factores dentro de un vector como describiremos ahora. Pondremos todos sus vectores dentro de una matriz A, donde cada fila representa a un Q(xi), y las columnas representan los exponentes mod 2 de los primos de la base de factores. As por ejemplo si nuestra base de factores es {-1,2,3,13,17,19,29} y Q(x)=2*3*172*19,entonces la fila correspondiente ser (0,1,1,0,0,1,0).Recordar que nosotros queremos que el producto de esos Q(xi) sea un cuadrado perfecto, as que queremos que la suma de los exponentes de cada factor primo en la base de factores sea par, y congruente 0 mod 2. Hay varios caminos para obtener un cuadrado perfecto de los Q(xi),cual es bueno, algunos de ellos no nos darn un factor de n. As dados Q(x1),,Q(xk),nosotros deseamos encontrar unas solucin para : Q(x1)e1++Q(xk)ek donde cada ei es uno o cero As si i es la fila correspondiente a Q(xi) entonces nosotros queremos: ie1+.+kek0 mod 2 sto significa que nosotros necesitamos resolver eA=0 siendo e=(e1en),mediante la eliminacin gausiana de esta forma encontraremos un conjunto de soluciones. Por lo tanto nosotros necesitamos encontrar al menos tantos Q(xi) como primos hay en la base de factores. Cada elemento del conjunto de soluciones se corresponde a un subconjunto de los Q(xi),cuyo producto es un cuadrado perfecto. Probamos la solucin de los vectores para ver si de los Q(xi) y los xi son un cuadrado perfecto produce un factor de n haciendo el mcd descrito al principio, si no es as probamos con el siguiente elemento del conjunto de soluciones hasta obtener un factor de n. Como el nombre sugiere el MPQS , usa varios polinomios en vez de Q(x) en el algoritmo, y fue Montgomery el primero que lo sugiri. Esos polinomios son de la forma Q(x)=ax2+2bx+c.donde a, b y c son elegidos segn unas ciertas condiciones. La motivacin de esto es que usando varios polinomios, podemos hacer el intervalo de criba ms pequeo, los cuales hacen mas pequeo a Q(x).

Los coeficientes de nuestro polinomio les escogemos de la siguiente manera, sea a un cuadrado perfecto, entonces tomamos b verificando que 0b