Articulo de referencia

Factorización de curvas elípticas de Lenstra

La factorización de curvas elípticas de Lenstra o método de factorización de curvas elípticas ( ECM ) es un algoritmo rápido, de tiempo de ejecución subexponencial, para la fact...

La factorización de curvas elípticas de Lenstra o método de factorización de curvas elípticas ( ECM ) es un algoritmo rápido, de tiempo de ejecución subexponencial, para la factorización de enteros , que emplea curvas elípticas . Para la factorización de propósito general , ECM es el tercer método de factorización más rápido conocido. El segundo más rápido es el método de cribado cuadrático de polinomios múltiples , y el más rápido es el método de cribado de cuerpos numéricos generales . La factorización de curvas elípticas de Lenstra recibe su nombre de Hendrik Lenstra . Es un algoritmo de factorización de grupos algebraicos .

En la práctica, ECM se considera un algoritmo de factorización de propósito especial, ya que es el más adecuado para encontrar factores pequeños. ActualmenteSigue siendo el mejor algoritmo para divisores que no superan los 50 a 60 dígitos , ya que su tiempo de ejecución está dominado por el tamaño del factor más pequeño p en lugar del tamaño del número n a factorizar. Con frecuencia, ECM se utiliza para eliminar factores pequeños de un entero muy grande con muchos factores; si el entero restante sigue siendo compuesto, entonces solo tiene factores grandes y se factoriza utilizando técnicas de propósito general. El factor más grande encontrado utilizando ECM hasta ahora tiene 83 dígitos decimales y fue descubierto el 7 de septiembre de 2013 por R. Propper. [ 1 ] Aumentar el número de curvas probadas mejora las posibilidades de encontrar un factor, pero no son lineales con el aumento en el número de dígitos.

Algoritmo

Fondo

El método de factorización de curvas elípticas de Lenstra utiliza una curva elíptica módulo n (es decir, el número a factorizar) y la multiplica por un punto aleatorio P en ella. La multiplicación se basa en la multiplicación de puntos de curvas elípticas , que a su vez es simplemente la suma repetida de puntos de curvas elípticas, descrita en el artículo sobre curvas elípticas . Esta suma formaría un grupo en el caso no modular y en el caso en que n es primo, porqueZ/norteZ{\displaystyle \mathbb {Z} /n\mathbb {Z} }(los enteros módulonorte{\displaystyle n}) forma un grupo cuando n es primo.

Cuando se utilizan números modulares en lugar de todo el rango de enteros, la suma de dos puntos en la misma curva elíptica implicaría tomar la pendiente modular de una cuerda que unePAG{\displaystyle P}yQ{\displaystyle Q}y por lo tanto la división entre clases de residuos módulonorte{\displaystyle n}, realizado utilizando el algoritmo euclidiano extendido . En particular, la división por algúnvmodnorte{\displaystyle v{\bmod {n}}}incluye el cálculo de lamcd(v,norte){\displaystyle \gcd(v,n)}. Suponiendo que calculamos una pendiente de la forma/v{\displaystyle u/v}conmcd(,v)=1{\displaystyle \gcd(u,v)=1}, entonces siv=0modnorte{\displaystyle v=0{\bmod {n}}}, el resultado de la suma de puntos será{\displaystyle \infty }, el punto "en el infinito" correspondiente a la intersección de la línea "vertical" que unePAG(incógnita,y),PAG(incógnita,y){\displaystyle P(x,y),P'(x,-y)}y la curva. Sin embargo, simcd(v,norte)1,norte{\displaystyle \gcd(v,n)\neq 1,n}, entonces la suma de puntos no producirá un punto significativo en la curva; pero, más importante aún,mcd(v,norte){\displaystyle \gcd(v,n)}es un factor no trivial denorte{\displaystyle n}: lo que significa que hemos factorizado el número con éxito.

Los métodos de multiplicación habituales, como la multiplicación por duplicado, siguen siendo válidos. No se requiere la suma sucesiva simple.

Proceso

El método de factorización de curvas elípticas de Lenstra para encontrar un factor de un número natural dado.norte{\displaystyle n}Funciona de la siguiente manera:

  1. Elige una curva elíptica aleatoria sobreZ/norteZ{\displaystyle \mathbb {Z} /n\mathbb {Z} }(los enteros módulonorte{\displaystyle n}), con ecuación de la formay2=incógnita3+aincógnita+b(modnorte){\displaystyle y^{2}=x^{3}+ax+b{\pmod {n}}}junto con un punto no trivialPAG(incógnita0,y0){\displaystyle P(x_{0},y_{0})}en él.
    Esto se puede hacer eligiendo primero al azar.incógnita0,y0,aZ/norteZ{\displaystyle x_{0},y_{0},a\in \mathbb {Z} /n\mathbb {Z} }y luego configurandob=y02incógnita03aincógnita0(modnorte){\displaystyle b=y_{0}^{2}-x_{0}^{3}-ax_{0}{\pmod {n}}}para asegurar que el punto esté en la curva.
  2. Como se mencionó anteriormente, hemos definido la suma y la multiplicación de un punto en la curva. Con suficientes sumas repetidas, deberíamos poder provocar un fallo en la suma, encontrando así un factor. Como resultado, calculamos[k]PAG{\displaystyle [k]P}en la curva elíptica (modnorte{\displaystyle {\bmod {n}}}), dóndek{\displaystyle k}es el producto de muchos números pequeños.
    • k puede ser un producto de primos pequeños elevados a potencias pequeñas, como en el algoritmo p-1 , o el factorialB¡{\displaystyle B!}para algunos no demasiado grandeB{\displaystyle B}Esto se puede hacer de manera eficiente, un pequeño factor a la vez. Por ejemplo, para obtener[B¡]PAG{\displaystyle [B!]P}, primero calcular[2]PAG{\displaystyle [2]P}, entonces[3]([2]PAG){\displaystyle [3]([2]P)}, entonces[4]([3¡]PAG){\displaystyle [4]([3!]P)}, etcétera.B{\displaystyle B}se elige que sea lo suficientemente pequeño como para queB{\displaystyle B}La suma de puntos se puede realizar en un tiempo razonable.
  3. Comprueba el resultado de la suma.
    • Si terminamos todos los cálculos anteriores sin encontrar elementos no invertibles (modnorte{\displaystyle {\bmod {n}}}), significa que el orden de las curvas elípticas (módulo primos) no es lo suficientemente suave , por lo que debemos intentarlo de nuevo con una curva y un punto de partida diferentes.
    • Si nos encontramos con unpag=mcd(v,norte)1{\displaystyle p=\gcd(v,n)\neq 1}Hemos terminado: es un factor no trivial denorte{\displaystyle n}.

La complejidad temporal depende del tamaño del factor primo más pequeño del número y puede representarse mediante exp[( 2  + o (1)) ln p ln ln p ]      , donde p es el factor más pequeño de n , oLpag[12,2]{\displaystyle L_{p}\left[{\frac {1}{2}},{\sqrt {2}}\right]}, en notación L .

Explicación

Si p y q son dos divisores primos de n , entonces y 2  = x 3 +   ax  + b (mod n )    implica la misma ecuación también módulo p  y módulo q .  Estas dos curvas elípticas más pequeñas con la{\displaystyle \boxplus }-adición son ahora grupos genuinos . Si estos grupos tienen N p y N q elementos, respectivamente, entonces para cualquier punto P en la curva original, por el teorema de Lagrange , k  >  0 es mínimo tal quekPAG={\displaystyle kP=\infty }en la curva módulo p implica que k divide a N p ; además,nortepagPAG={\displaystyle N_{p}P=\infty }La afirmación análoga se cumple para la curva módulo q . Cuando la curva elíptica se elige aleatoriamente, entonces N p y N q son números aleatorios cercanos a p  +  1 y q  +  1, respectivamente (véase más abajo). Por lo tanto, es improbable que la mayoría de los factores primos de N p y N q sean los mismos, y es bastante probable que al calcular eP , encontremos algún kP que sea módulo p  pero no módulo q ,  o viceversa. Cuando esto ocurre, kP no existe en la curva original, y en los cálculos encontramos algún v con mcd( v , p )  = p  o mcd( v , q ) = q ,    pero no ambos. Es decir, mcd( v , n )  dio un factor no trivial de n . 

ECM es esencialmente una mejora del antiguo algoritmo p 1.   El algoritmo p 1   encuentra factores primos p tales que p 1   es b-potencia suave para valores pequeños de b . Para cualquier e , un múltiplo de p 1,   y cualquier a relativamente primo a p , por el pequeño teorema de Fermat tenemos a e 1 ( mod p )   . Entonces mcd ( a e 1, n )    probablemente producirá un factor de n . Sin embargo, el algoritmo falla cuando p  1 tiene factores primos grandes, como es el caso de los números que contienen primos fuertes , por ejemplo.

ECM sortea este obstáculo al considerar el grupo de una curva elíptica aleatoria sobre el campo finito Z p , en lugar de considerar el grupo multiplicativo de Z p que siempre tiene orden p 1.   

El orden del grupo de una curva elíptica sobre Z p varía (de forma bastante aleatoria) entre p  +  1 2 p   y p  +  1  +  2 p según el teorema de Hasse , y es probable que sea suave para algunas curvas elípticas. Aunque no hay prueba de que se encontrará un orden de grupo suave en el intervalo de Hasse, utilizando métodos probabilísticos heurísticos , el teorema de Canfield-Erdős-Pomerance con elecciones de parámetros adecuadamente optimizadas y la notación L , podemos esperar probar L [ 2 /2, 2 ] curvas antes de obtener un orden de grupo suave. Esta estimación heurística es muy fiable en la práctica.

Ejemplo de uso

El siguiente ejemplo proviene de Trappe y Washington (2006) , con algunos detalles añadidos.

Queremos tener en cuentanorte=455839{\displaystyle n=455839}. Elegimos la curva elípticay2=incógnita3+5incógnita5{\displaystyle y^{2}=x^{3}+5x-5}, con el puntoPAG=(1,1){\displaystyle P=(1,1)}sobre él, y tratemos de calcular el punto(10¡)PAG{\displaystyle (10!)P}.

La pendiente de la línea tangente en algún puntoA=(incógnita,y){\displaystyle A=(x,y)}en la curva esλ=3incógnita2+52y (metrood norte){\displaystyle \lambda ={\frac {3x^{2}+5}{2y}}\ (\mathrm {mod} \ n)}. Usandoλ{\displaystyle \lambda }, podemos calcular el punto2A{\displaystyle 2A}. Si el valor deλ{\displaystyle \lambda }no existe, como resultado dey{\displaystyle y}no tener un inverso modular , entoncesmcd(norte,y){\displaystyle \gcd(n,y)}es un factor no trivial denorte{\displaystyle n}.

Primero, calculamos2¡PAG{\displaystyle 2!P}. Usando duplicación de puntos , tenemosλ(PAG)=λ(1,1)=4{\displaystyle \lambda (P)=\lambda (1,1)=4}, por lo tanto, las coordenadas del punto2PAG=(incógnita,y){\displaystyle 2P=(x',y')}son

incógnita=422(1)=14{\displaystyle x'=4^{2}-2(1)=14}
y=4(114)1=53{\displaystyle y'=4(1-14)-1=-53}

cediendo el punto2PAG=(14,53){\displaystyle 2P=(14,-53)}.

A continuación, calculamos3¡PAG{\displaystyle 3!P}. Tenemosλ(2PAG)=λ(14,53)=593/106 (metrood norte){\displaystyle \lambda (2P)=\lambda (14,-53)=-593/106\ (\mathrm {mod} \ n)}. Desdemcd(106,455839)=1{\displaystyle \gcd(106,455839)=1}, el inverso modular de 106 existe. Usando el algoritmo euclidiano extendido , podemos obtener queλ=593/106=322522 (metrood 455839){\displaystyle \lambda =-593/106=322522\ (\mathrm {mod} \ 455839)}.

Dado esto, podemos calcular las coordenadas de2(2PAG){\displaystyle 2(2P)}, tal como lo hicimos anteriormente. Las coordenadas del punto4PAG=(incógnita,y){\displaystyle 4P=(x',y')}son

incógnita=32252222(14)=259851(mod455839){\displaystyle x'=322522^{2}-2(14)=259851{\pmod {455839}}}
y=322522(14259851)(53)=116255(mod455839){\displaystyle y'=322522(14-259851)-(-53)=116255{\pmod {455839}}}

Esto produce4PAG=(259851,116255){\displaystyle 4P=(259851,116255)}.

Después de esto, podemos calcular3(2PAG)=4PAG+2PAG{\displaystyle 3(2P)=4P+2P}usando la suma de puntos . La línea que une4PAG{\displaystyle 4P}y2PAG{\displaystyle 2P}tiene pendienteλ=116308/259837=206097 (metrood norte){\displaystyle \lambda =116308/259837=206097\ (\mathrm {mod} \ n)}, por lo tanto las coordenadas de6PAG=(incógnita,y){\displaystyle 6P=(x',y')}son

incógnita=206097214259851=179685(mod455839){\displaystyle x'=206097^{2}-14-259851=179685{\pmod {455839}}}
y=206097(14179685)(53)=427131(mod455839){\displaystyle y'=206097(14-179685)-(-53)=427131{\pmod {455839}}}

cediendo el punto6PAG=(179685,427131){\displaystyle 6P=(179685,427131)}

Podemos calcular puntos de manera similar4¡PAG{\displaystyle 4!P},5¡PAG{\displaystyle 5!P}y así sucesivamente, pero la computación8¡PAG{\displaystyle 8!P}requiere invertir 599 (mod 455839) , lo cual no es posible porquemcd(599,455839)=5991{\displaystyle \gcd(599,455839)=599\neq 1}. Por lo tanto, 599 es un divisor de 455839. Después de una división rápida, tenemos 455839 = 599 × 761 .

La razón por la que esto funciona es que la curva (mod 599) tiene 640 = 2 7 ·5 puntos, mientras que (mod 761) tiene 777 = 3 ·7 ·37 puntos. Además, 640 y 777 son los enteros positivos más pequeños k tales que kP = en las curvas (mod 599) y (mod 761), respectivamente. Como 8! es un múltiplo de 640 pero no de 777, tenemos 8! P = en la curva (mod 599), pero no en la curva (mod 761), por lo que la suma repetida falló aquí, dando como resultado la factorización.

El algoritmo, con coordenadas proyectivas

Antes de considerar el plano proyectivo sobre(Z/norteZ)/,{\displaystyle (\mathbb {Z} /n\mathbb {Z} )/\sim ,}Consideremos primero un espacio proyectivo 'normal' sobreR{\displaystyle \mathbb {R} }En lugar de puntos, se estudian líneas que pasan por el origen. Una línea puede representarse como un punto distinto de cero.(incógnita,y,z){\displaystyle (x,y,z)}, bajo una relación de equivalencia ~ dada por:(incógnita,y,z)(incógnita,y,z){\displaystyle (x,y,z)\sim (x',y',z')}⇔ Existe c ≠ 0 tal que x' = c x , y' = c y y z' = c z . Bajo esta relación de equivalencia, el espacio se denomina plano proyectivo.PAG2{\displaystyle \mathbb {P} ^{2}}; puntos, denotados por(incógnita:y:z){\displaystyle (x:y:z)}, corresponden a líneas en un espacio tridimensional que pasan por el origen. Nótese que el punto(0:0:0){\displaystyle (0:0:0)}no existe en este espacio ya que para trazar una línea en cualquier dirección posible se requiere al menos uno de x',y' o z' ≠ 0. Ahora observe que casi todas las líneas pasan por cualquier plano de referencia dado, como el plano ( X , Y ,1), mientras que las líneas precisamente paralelas a este plano, que tienen coordenadas ( X,Y ,0), especifican direcciones de forma única, como 'puntos en el infinito' que se utilizan en el plano afín ( X,Y ) sobre el que se encuentra.

La coordenada (incógnita:y:z){\displaystyle (x:y:z)}corresponde a (incógnita/z:y/z){\displaystyle (x/z:y/z)}en el espacio afín. [ 2 ]

En el algoritmo, solo la estructura de grupo de una curva elíptica sobre el campoR{\displaystyle \mathbb {R} }se utiliza. Dado que no necesariamente necesitamos el campoR{\displaystyle \mathbb {R} }, un campo finito también proporcionará una estructura de grupo en una curva elíptica. Sin embargo, considerando la misma curva y operación sobre(Z/norteZ)/{\displaystyle (\mathbb {Z} /n\mathbb {Z} )/\sim }Si n no es primo, no se obtiene un grupo. El método de la curva elíptica utiliza los casos de fallo de la ley de adición.

Ahora enunciamos el algoritmo en coordenadas proyectivas. El elemento neutro viene dado entonces por el punto en el infinito.(0:1:0){\displaystyle (0:1:0)}Sea n un entero (positivo) que se va a factorizar y consideremos la curva elíptica (un conjunto de puntos con alguna estructura).mi(Z/norteZ)={(incógnita:y:z)PAG2 | y2z=incógnita3+aincógnitaz2+bz3}{\displaystyle E(\mathbb {Z} /n\mathbb {Z} )=\{(x:y:z)\in \mathbb {P} ^{2}\ |\ y^{2}z=x^{3}+axz^{2}+bz^{3}\}}.

  1. ElegirincógnitaPAG,yPAG,aZ/norteZ{\displaystyle x_{P},y_{P},a\in \mathbb {Z} /n\mathbb {Z} }con a ≠ 0.
  2. Calcularb=yPAG2incógnitaPAG3aincógnitaPAG{\displaystyle b=y_{P}^{2}-x_{P}^{3}-ax_{P}}La curva elíptica E está entonces en forma de Weierstrass dada pory2=incógnita3+aincógnita+b{\displaystyle y^{2}=x^{3}+ax+b}y utilizando coordenadas proyectivas la curva elíptica viene dada por la ecuación homogéneaZY2=incógnita3+aZ2incógnita+bZ3{\displaystyle ZY^{2}=X^{3}+aZ^{2}X+bZ^{3}}Tiene sentido.PAG=(incógnitaPAG:yPAG:1){\displaystyle P=(x_{P}:y_{P}:1)}.
  3. Elija un límite superiorBZ{\displaystyle B\in \mathbb {Z} }para esta curva elíptica.
    • Nota: Solo encontrará factores p si el orden de grupo g de la curva elíptica E sobreZ/pagZ{\displaystyle \mathbb {Z} /p\mathbb {Z} }(denotado por#mi(Z/pagZ){\displaystyle \#E(\mathbb {Z} /p\mathbb {Z} )}) es B-suave , lo que significa que todos los factores primos denorte{\displaystyle n}tienen que ser menores o iguales a B.
  4. Calculark=ldometro(1,,B){\displaystyle k={\rm {lcm}}(1,\dots ,B)}.
  5. CalcularkPAG:=PAG+PAG++PAG{\displaystyle kP:=P+P+\cdots +P}(la multiplicación es una suma repetida) en el anillomi(Z/norteZ){\displaystyle E(\mathbb {Z} /n\mathbb {Z} )}.
    • Si el cálculo se realiza correctamente, devuelvekPAG=(0:1:0){\displaystyle kP=(0:1:0)}Esto significa que g no es B -suave o que n es primo. Vuelve al paso 2 para elegir otra curva.
    • Si el cálculo falla en algún punto, significa que se puede encontrar un divisor no trivial. Puede fallar porque la suma y la multiplicación no están bien definidas si n no es primo, pero esto solo ocurre cuando se intenta una inversión de un residuo v en particular . En este caso, el factor se encuentra comomcd(v,norte){\displaystyle \gcd(v,n)}como se indicó anteriormente.

En el punto 5 se dice que, bajo las circunstancias adecuadas, se puede encontrar un divisor no trivial. Como se señala en el artículo de Lenstra (Factoring Integers with Elliptic Curves), la suma requiere la suposiciónmcd(incógnita1incógnita2,norte)=1{\displaystyle \gcd(x_{1}-x_{2},n)=1}. SiPAG,Q{\displaystyle P,Q}no lo son(0:1:0){\displaystyle (0:1:0)}y distintos (de lo contrario, la suma funciona de manera similar, pero es un poco diferente), entonces la suma funciona de la siguiente manera:

  • Para calcular:R=PAG+Q;{\displaystyle R=P+Q;}PAG=(incógnita1:y1:1),Q=(incógnita2:y2:1){\displaystyle P=(x_{1}:y_{1}:1),Q=(x_{2}:y_{2}:1)},
  • λ=(y1y2)(incógnita1incógnita2)1{\displaystyle \lambda =(y_{1}-y_{2})(x_{1}-x_{2})^{-1}},
  • incógnita3=λ2incógnita1incógnita2{\displaystyle x_{3}=\lambda ^{2}-x_{1}-x_{2}},
  • y3=λ(incógnita1incógnita3)y1{\displaystyle y_{3}=\lambda (x_{1}-x_{3})-y_{1}},
  • R=PAG+Q=(incógnita3:y3:1){\displaystyle R=P+Q=(x_{3}:y_{3}:1)}.

Si la suma falla, esto se deberá a un error de cálculo.λ.{\displaystyle \lambda .}En particular, porque(incógnita1incógnita2)1{\displaystyle (x_{1}-x_{2})^{-1}}no siempre se puede calcular si n no es primo (y por lo tantoZ/norteZ{\displaystyle \mathbb {Z} /n\mathbb {Z} }no es un campo). Sin hacer uso deZ/norteZ{\displaystyle \mathbb {Z} /n\mathbb {Z} }Siendo un campo, se podría calcular:

  • λ=y1y2{\displaystyle \lambda '=y_{1}-y_{2}},
  • incógnita3=λ2incógnita1(incógnita1incógnita2)2incógnita2(incógnita1incógnita2)2{\displaystyle x_{3}'={\lambda '}^{2}-x_{1}(x_{1}-x_{2})^{2}-x_{2}(x_{1}-x_{2})^{2}},
  • y3=λ(incógnita1(incógnita1incógnita2)2incógnita3)y1(incógnita1incógnita2)3{\displaystyle y_{3}'=\lambda '(x_{1}(x_{1}-x_{2})^{2}-x_{3}')-y_{1}(x_{1}-x_{2})^{3}},
  • R=PAG+Q=(incógnita3(incógnita1incógnita2):y3:(incógnita1incógnita2)3){\displaystyle R=P+Q=(x_{3}'(x_{1}-x_{2}):y_{3}':(x_{1}-x_{2})^{3})}y simplificar si es posible.

Este cálculo siempre es válido y si el mcd de la coordenada Z con n ≠ (1 o n ), entonces cuando la simplificación falla, se encuentra un divisor no trivial de n .

Variante de dos etapas

De forma análoga a la variante de dos etapas del algoritmo p − 1 de Pollard , Lenstra ECM también puede realizarse en dos etapas. Esto permite ahorrar un factor de tiempo de O(log p ). [ 2 ]

Algoritmo ECM de dos etapas. [ 2 ]

  • Entrada: número a factorizar n , límites enterosB1B2{\displaystyle B_{1}\leq B_{2}}.
  • Salida: un factor de n o fallo.

Preparación.

  1. Elija una curva elíptica aleatoria E mod n .
  2. Elige un puntoPAG=(incógnita0:y0:z0){\displaystyle P=(x_{0}:y_{0}:z_{0})}en la curva.

(Una opción conveniente es la de Suyama)σ{\displaystyle \sigma }parametrización, que solo requiere que se extraiga un número aleatorio.)

Etapas.

  1. Calcular un puntoQ:=pagB1pagregistroB1/registropagPAG{\textstyle Q:=\prod _{p\leq B_{1}}p^{\left\lfloor \log B_{1}/\log p\right\rfloor }P}en la E. El producto significa que se recorre cada primo.pagB1{\displaystyle p\leq B_{1}}; desempeña el mismo papel que el grandek{\displaystyle k}visto en los algoritmos anteriores.
    • Utilizando el producto de todas las potencias primas menores queB1{\displaystyle B_{1}}en lugar deB1¡{\displaystyle B_{1}!}reduce la complejidad asintótica enO(registroB1){\displaystyle O(\log B_{1})}. [ 3 ]
  2. Para cada primo p ,B1pagB2{\displaystyle B_{1}\leq p\leq B_{2}},
    • Calcular un punto(incógnitapag:ypag:zpag)=pagQ{\displaystyle (x_{p}:y_{p}:z_{p})=pQ}uno .
    • Calculargramo:=mcd(norte,zpag){\displaystyle g:=\operatorname {gcd} \left(n,z_{p}\right)}. Sigramo1{\displaystyle g\neq 1}, produccióngramo{\displaystyle g}y salir.
  3. Si se prueban todos los números primos dentro del rango sin obtener ningún factor, informe de un fallo.

Es posible que la etapa 1 produzca un factor como el que se ha comentado anteriormente: un denominador no invertible implica un factor.B1{\displaystyle B_{1}}es funcionalmente lo mismo queB{\displaystyle B}de la versión estándar, por lo que también sucede cuando el orden del grupo g es B-suave . En otras palabras, se busca un divisor primo p tal quesPAG{\displaystyle sP}es el elemento neutral demi(Z/pagZ){\displaystyle E(\mathbb {Z} /p\mathbb {Z} )}en la etapa 1.

La segunda etapa es muy similar a la segunda etapa de p-1 y p+1. Es una continuación del trabajo de la etapa 1 y se puede describir utilizando términos matemáticos muy similares. Relaja la condición de tal manera que se puede encontrar un factor cuando g es(B1,B2){\displaystyle (B_{1},B_{2})}-suave, o en otras palabras el factor primo más grande de g es como máximoB2{\displaystyle B_{2}}y el segundo más pequeño es como máximoB1{\displaystyle B_{1}}.

Para alcanzar la etapa 2, se espera que exista un número primo p entreB1{\displaystyle B_{1}}yB2{\displaystyle B_{2}}de tal manera quepagQ=(0:1:0)modpag{\displaystyle pQ=(0:1:0)\mod p}; buscar una inversión fallida la produciría después de un mcd. Equivalentemente, se busca un divisor primo q tal quesPAG{\displaystyle sP}tiene orden primo pequeño enmi(Z/qZ){\displaystyle E(\mathbb {Z} /q\mathbb {Z} )}. Comprobando un pequeño pedido desPAG{\displaystyle sP}se realiza en la etapa 2 mediante computación(ls)PAG{\displaystyle (ls)P}módulo n para cada primo l . [ 2 ]

Lo anterior describe el enfoque "ingenuo", que es susceptible de optimización por emparejamiento de primos y extensión de Brent-Suyama. Sin embargo, también está disponible una etapa 2 de multiplicación de polinomios mucho más rápida en la tesis de Peter Montgomery de 1992. [ 2 ] Este nuevo enfoque se encuentra en GMP-ECM y Prime95. [ 4 ] Este enfoque se extendió posteriormente a p-1 y p+1 (Montgomery y Kruppa 2008). [ 5 ]

Curvas retorcidas de Edwards

El uso de curvas de Edwards requiere menos multiplicaciones modulares y menos tiempo que el uso de curvas de Montgomery o Weierstrass (otros métodos utilizados). Además, con las curvas de Edwards se pueden encontrar más números primos.

Definición. Dejek{\displaystyle k}ser un campo en el que20{\displaystyle 2\neq 0}y dejara,dk{0}{\displaystyle a,d\in k\setminus \{0\}}conad{\displaystyle a\neq d}Luego, la curva retorcida de Edwards.mimi,a,d{\displaystyle E_{E,a,d}}es dado poraincógnita2+y2=1+dincógnita2y2.{\displaystyle ax^{2}+y^{2}=1+dx^{2}y^{2}.}Una curva de Edwards es una curva de Edwards retorcida en la quea=1{\displaystyle a=1}.

Existen cinco formas conocidas de construir un conjunto de puntos en una curva de Edwards: el conjunto de puntos afines, el conjunto de puntos proyectivos, el conjunto de puntos invertidos, el conjunto de puntos extendidos y el conjunto de puntos completados.

El conjunto de puntos afines viene dado por:

{(incógnita,y)A2:aincógnita2+y2=1+dincógnita2y2}{\displaystyle \{(x,y)\in \mathbb {A} ^{2}:ax^{2}+y^{2}=1+dx^{2}y^{2}\}}.

La ley de adición viene dada por

(mi,F),(gramo,h)(mih+Fgramo1+dmigramoFh,Fhamigramo1dmigramoFh).{\displaystyle (e,f),(g,h)\mapsto \left({\frac {eh+fg}{1+degfh}},{\frac {fh-aeg}{1-degfh}}\right).}

El punto (0,1) es su elemento neutro y el inverso de(mi,F){\displaystyle (e,f)}es(mi,F){\displaystyle (-e,f)}.

Las demás representaciones se definen de forma similar a como la curva proyectiva de Weierstrass se deriva de la afín.

Cualquier curva elíptica en forma de Edwards tiene un punto de orden 4. Por lo tanto, el grupo de torsión de una curva de Edwards sobreQ{\displaystyle \mathbb {Q} }es isomorfo a cualquieraZ/4Z,Z/8Z,Z/12Z,Z/2Z×Z/4Z{\displaystyle \mathbb {Z} /4\mathbb {Z} ,\mathbb {Z} /8\mathbb {Z} ,\mathbb {Z} /12\mathbb {Z} ,\mathbb {Z} /2\mathbb {Z} \times \mathbb {Z} /4\mathbb {Z} }oZ/2Z×Z/8Z{\displaystyle \mathbb {Z} /2\mathbb {Z} \times \mathbb {Z} /8\mathbb {Z} }.

Los casos más interesantes para ECM son:Z/12Z{\displaystyle \mathbb {Z} /12\mathbb {Z} }yZ/2Z×Z/8Z{\displaystyle \mathbb {Z} /2\mathbb {Z} \times \mathbb {Z} /8\mathbb {Z} }, ya que obligan a que los órdenes de grupo de la curva módulo primos sean divisibles por 12 y 16 respectivamente. Las siguientes curvas tienen un grupo de torsión isomorfo aZ/12Z{\displaystyle \mathbb {Z} /12\mathbb {Z} }:

  • incógnita2+y2=1+dincógnita2y2{\displaystyle x^{2}+y^{2}=1+dx^{2}y^{2}}con punto(a,b){\displaystyle (a,b)}dóndeb{2,1/2,0,±1},a2=(b2+2b){\displaystyle b\notin \{-2,-1/2,0,\pm 1\},a^{2}=-(b^{2}+2b)}yd=(2b+1)/(a2b2){\displaystyle d=-(2b+1)/(a^{2}b^{2})}
  • incógnita2+y2=1+dincógnita2y2{\displaystyle x^{2}+y^{2}=1+dx^{2}y^{2}}con punto(a,b){\displaystyle (a,b)}dóndea=212+1,b=(1)22+1{\displaystyle a={\frac {u^{2}-1}{u^{2}+1}},b=-{\frac {(u-1)^{2}}{u^{2}+1}}}yd=(2+1)3(24+1)(1)6(+1)2,{0,±1}.{\displaystyle d={\frac {(u^{2}+1)^{3}(u^{2}-4u+1)}{(u-1)^{6}(u+1)^{2}}},u\notin \{0,\pm 1\}.}

Cada curva de Edwards con un punto de orden 3 se puede escribir de las formas que se muestran arriba. Curvas con grupo de torsión isomorfo aZ/2Z×Z/8Z{\displaystyle \mathbb {Z} /2\mathbb {Z} \times \mathbb {Z} /8\mathbb {Z} }yZ/2Z×Z/4Z{\displaystyle \mathbb {Z} /2\mathbb {Z} \times \mathbb {Z} /4\mathbb {Z} }puede ser más eficiente para encontrar números primos. [ 6 ]

Implementaciones de software

GMP-ECM de Paul Zimmerman es una implementación de propósito general del algoritmo Lenstra basada en la biblioteca aritmética de precisión múltiple de GNU . Se ha actualizado continuamente, siendo la última versión a septiembre de 2025 la 7.0.6 de julio de 2024. Permite curvas Montgomery, Weierstrass y Hessiana (retorcida). Puede ejecutar la etapa 1 para un subconjunto de curvas Montgomery en una GPU CUDA , y la implementación anterior de Cyril Bouvier en 2012 fue reemplazada por la implementación más reciente de Seth Troisi en 2021. La versión 7.0.6 también incluye una implementación del método HECM (descrito a continuación), los métodos p-1 y p+1, y prueba de primalidad usando APRCL. [ 7 ] GMP-ECM se usa en SageMath .

Daniel J. Bernstein y sus colaboradores publicaron una serie de implementaciones basadas en curvas elípticas de Twisted Edwards entre 2008 y 2010. Todas afirman superar el rendimiento de la versión contemporánea de GMP-ECM, siendo la más reciente EECM-MPFQ de 2008. Bernstein también ofrece dos implementaciones para GPU, siendo CUDA-EECM de 2009 la más reciente y rápida. [ 6 ] [ 8 ]

Prime95 incluye una implementación de Lenstra ECM para curvas de Montgomery y Edwards. Se utiliza para el subproyecto ECM de Great Internet Mersenne Prime Search , que busca factorizar números de Mersenne compuestos no menores que 2¹²¹³ . [ 9 ] Puede producir una salida de etapa 1 compatible con GMP-ECM, así como consumir la salida de etapa 1 de GMP-ECM. [ 10 ] Es más rápido que GMP-ECM en la etapa 1. [ 11 ]

John Wloka y sus colaboradores publicaron en 2020 ecmongpu, una implementación de las etapas 1 y 2 de Lenstra ECM basada en curvas elípticas de Twisted Edwards. Su artículo informa sobre el rendimiento para factorizar módulos de hasta 448 bits de longitud (entre 2⁴⁴⁷ y 2⁴⁴⁸ - 1). [ 12 ]

Todo el software mencionado anteriormente es de código abierto. Además, el software de código abierto PARI/GP y el sistema propietario Magma (sistema de álgebra computacional) también contienen "buenas implementaciones de ECM", según Paul Zimmerman. [ 11 ] Una implementación de software anterior de 16 bits [ 13 ] es giantint, de Richard Crandall. [ 11 ]

Método de curvas hiperelípticas (HECM)

Hay avances recientes en el uso de curvas hiperelípticas para factorizar números enteros. Cosset muestra en su artículo (de 2010) que se puede construir una curva hiperelíptica con género dos (por lo que una curvay2=F(incógnita){\displaystyle y^{2}=f(x)}con f de grado  5), lo que da el mismo resultado que usar dos curvas elípticas "normales" al mismo tiempo. Al utilizar la superficie de Kummer, el cálculo es más eficiente. Las desventajas de la curva hiperelíptica (frente a una curva elíptica) se compensan con esta alternativa de cálculo. Por lo tanto, Cosset afirma, en términos generales, que usar curvas hiperelípticas para la factorización no es peor que usar curvas elípticas.

Versión cuántica (GEECM)

Bernstein , Heninger , Lou y Valenta proponen GEECM, una versión cuántica de ECM con curvas de Edwards. [ 14 ] Utiliza el algoritmo de Grover para duplicar aproximadamente la longitud de los primos encontrados en comparación con EECM estándar, suponiendo una computadora cuántica con suficientes cúbits y de velocidad comparable a la de la computadora clásica que ejecuta EECM.

Referencias

  1. 50 factores más importantes encontrados por ECM .
  2. 1 2 3 4 5 Zimmermann, Paul; Dodson, Bruce (2006). "20 años de ECM" (PDF) . Teoría algorítmica de números . Notas de clase en ciencias de la computación. Vol.  4076. págs. 525–542 . doi : 10.1007/11792086_37 . ISBN  978-3-540-36075-9.HAL
  3. Galbraith, Steven (2012). "Prueba de primalidad y factorización de enteros mediante grupos algebraicos". Matemáticas de la criptografía de clave pública ( PDF) . Cambridge University Press. págs. 261–268 . Consultado el 16 de agosto de 2025 . 
  4. https://www.mersenne.org/download/whatsnew_3019b11.txt "Etapa 2 de ECM que utiliza una multiplicación polinómica rápida similar al programa GMP-ECM. Si se dispone de mucha memoria para la etapa 2, esta implementación será sustancialmente más rápida."
  5. Montgomery, Peter L.; Kruppa, Alexander (2008). "Algoritmos de factorización mejorados de la etapa 2 a P ± 1" (PDF) . Teoría algorítmica de números . Notas de clase en informática. Vol. 5011. págs. 180–195 . doi : 10.1007/978-3-540-79456-1_12 . ISBN   978-3-540-79455-4.
  6. ^ Berstein , Daniel J.; Birkner, Peter; Lange, Tanja ; Peters, Christiane (9 de enero de 2008). "ECM utilizando curvas de Edwards" (PDF) . Archivo ePrint de criptología .(Véase la parte superior de la página 30 para ver ejemplos de dichas curvas).
  7. "ZIMMERMANN Paul / ecm · GitLab" . GitLab .
  8. "EECM: ECM usando curvas de Edwards" .
  9. ^ "Progreso de GIMPS ECM - PrimeNet" . www.mersenne.org .
  10. undoc.txt y ECMSTAGE2=
  11. 1 2 3 Zimmerman, Paul. "Software ECM" .
  12. Wloka, Jonas; Richter-Brockmann, Jan; Stahlke, Colin; Kleinjung, Thorsten; Priplata, Christine; Güneysu, Tim (2020). Revisiting ECM on GPUs . 19th International Conference on Cryptology and Network Security. Vol. 12579. pp. 299– 319. doi : 10.1007/978-3-030-65411-5_15 .  
  13. Bernstein, DJ. "gigante" .
  14. Bernstein DJ, Heninger N., Lou P., Valenta L. (2017) Post-quantum RSA . En: Lange T., Takagi T. (eds), Post-Quantum Cryptography . PQCrypto 2017. Lecture Notes in Computer Science, vol 10346. Springer, Cham
  • Bernstein, Daniel J.; Birkner, Peter; Lange, Tanja; Peters, Christiane (2013). "ECM utilizando curvas de Edwards" . Matemáticas de la Computación . 82 (282): 1139– 1179. doi : 10.1090/S0025-5718-2012-02633-0 . SEÑOR 3008853 . 
  • Bosma, W.; Hulst, MPM van der (1990). Prueba de primalidad con ciclotomía . Doctor en Filosofía. Tesis, Universiteit van Amsterdam. OCLC 256778332 . 
  • Brent, Richard P. (1999). "Factorización del décimo número de Fermat" . Matemáticas de la Computación . 68 (225): 429– 451. Bibcode : 1999MaCom..68..429B . doi : 10.1090/S0025-5718-99-00992-8 . MR 1489968 . 
  • Cohen, Henri (1993). Un curso de teoría algebraica computacional de números . Textos de posgrado en matemáticas. Vol.  138. Berlín: Springer-Verlag. doi : 10.1007/978-3-662-02945-9 . ISBN 978-0-387-55640-6. MR 1228206 . S2CID 118037646 .  
  • Cosset, R. (2010). " Factorización con curvas de género 2". Matemáticas de la Computación . 79 (270): 1191– 1208. arXiv : 0905.2325 . Bibcode : 2010MaCom..79.1191C . doi : 10.1090/S0025-5718-09-02295-9 . MR 2600562. S2CID 914296 .  
  • Lenstra, AK ; Lenstra Jr., HW, eds. (1993). El desarrollo de la criba de cuerpos numéricos . Lecture Notes in Mathematics. Vol.  1554. Berlín: Springer-Verlag. pp. 11–42 . doi : 10.1007/BFb0091534 . ISBN  978-3-540-57013-4MR 1321216 . 
  • Lenstra Jr., HW (1987). "Factoring integers with elliptic curves" (PDF) . Annals of Mathematics . 126 (3): 649– 673. doi : 10.2307/1971363 . hdl : 1887/2140 . JSTOR 1971363. MR 0916721 .  
  • Pomerance, Carl ; Crandall, Richard (2005). Números primos: una perspectiva computacional (segunda  edición). Nueva York: Springer. ISBN 978-0-387-25282-7MR 2156291 .​ 
  • Pomerance, Carl (1985). «El algoritmo de factorización de criba cuadrática». Avances en criptología, Actas de Eurocrypt '84 . Notas de clase en informática. Vol.  209. Berlín: Springer-Verlag. pp. 169–182 . doi : 10.1007/3-540-39757-4_17 . ISBN  978-3-540-16076-2. SR 0825590 . 
  • Pomerance, Carl (1996). "Un cuento de dos tamices" (PDF) . Notices of the American Mathematical Society . 43 (12): 1473– 1485. MR 1416721 . 
  • Silverman, Robert D. (1987). "The Multiple Polynomial Quadratic Sieve" . Mathematics of Computation . 48 (177): 329– 339. doi : 10.1090/S0025-5718-1987-0866119-8 . MR 0866119 . 
  • Trappe, W.; Washington, LC (2006). Introducción a la criptografía con teoría de la codificación (Segunda  edición). Saddle River, NJ: Pearson Prentice Hall. ISBN 978-0-13-186239-5. MR 2372272 . 
  • Samuel S. Wagstaff, Jr. (2013). El placer de factorizar . Providence, RI: American Mathematical Society. pp. 173–190 . ISBN  978-1-4704-1048-3.
  • Watras, Marcin (2008). Criptografía, análisis numérico y números muy grandes . Bydgoszcz: Wojciechowski-Steinhagen. PL:5324564.
  • Factorización mediante el método de curva elíptica , una aplicación WebAssembly que utiliza ECM y cambia al método de criba cuadrática autoinicializable cuando es más rápido.
  • GMP-ECM se archivó el 12 de septiembre de 2009 en Wayback Machine ; es una implementación eficiente de ECM.
  • ECMNet , una implementación cliente-servidor sencilla que funciona con varios proyectos de factorización.
  • pyecm , una implementación en Python de ECM.
  • El proyecto de computación distribuida yoyo@Home, subproyecto ECM, es un programa para la factorización de curvas elípticas que se utiliza para encontrar factores para diferentes tipos de números.
  • Código fuente del algoritmo de factorización de curvas elípticas de Lenstra. Código fuente del algoritmo de factorización de curvas elípticas simple en C y GMP.
  • EECM-MPFQ: Una implementación de ECM que utiliza curvas de Edwards, escrita con la biblioteca de campos finitos MPFQ.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Lenstra_elliptic-curve_factorization&oldid=1354915451 "