Articulo de referencia

tamiz de campo de número general

En teoría de números , el cribado general de campos numéricos ( GNFS ) es el algoritmo clásico más eficiente conocido para factorizar enteros mayores que 100 "}},"i":0}}]}">10¹⁰...

En teoría de números , el cribado general de campos numéricos ( GNFS ) es el algoritmo clásico más eficiente conocido para factorizar enteros mayores que 10¹⁰⁰ . Heurísticamente , su complejidad para factorizar un entero n ( que consta de ⌊log₂ n ⌋ + 1 bits) es de la forma

exp(((64/9)1/3+o(1))(registronorte)1/3(registroregistronorte)2/3)=Lnorte[1/3,(64/9)1/3]{\displaystyle {\begin{aligned}&\exp \left(\left((64/9)^{1/3}+o(1)\right)\left(\log n\right)^{1/3}\left(\log \log n\right)^{2/3}\right)\\[5pt]={}&L_{n}\left[1/3,(64/9)^{1/3}\right]\end{aligned}}}

en notaciones Big-O y L. [ 1 ] Es una generalización de la criba de cuerpos numéricos especiales : mientras que esta última solo puede factorizar números de una forma especial determinada, la criba de cuerpos numéricos generales puede factorizar cualquier número, excepto potencias de primos (que son triviales de factorizar tomando raíces).

El principio del cribado de campos numéricos (tanto especial como general) puede entenderse como una mejora del cribado racional o cuadrático, más sencillos . Al utilizar estos algoritmos para factorizar un número grande n , es necesario buscar números suaves (es decir, números con factores primos pequeños) de orden . El tamaño de estos valores es exponencial con respecto a n (véase más adelante). El cribado general de campos numéricos, por otro lado, logra buscar números suaves que son subexponenciales con respecto a n . Dado que estos números son más pequeños, es más probable que sean suaves que los números analizados en algoritmos anteriores. Esta es la clave de la eficiencia del cribado de campos numéricos. Para lograr esta aceleración, el cribado de campos numéricos debe realizar cálculos y factorizaciones en campos numéricos . Esto da como resultado muchos aspectos bastante complejos del algoritmo, en comparación con el cribado racional, más sencillo.

El tamaño de la entrada al algoritmo es log₂ n ,  es decir, el número de bits en la representación binaria de n . Cualquier elemento del orden n c para una constante c es exponencial en log n  . El tiempo de ejecución del algoritmo de criba de cuerpos numéricos es superpolinomial, pero subexponencial con respecto al tamaño de la entrada.

Campos numéricos

Supongamos que f es un polinomio de grado k sobreQ{\textstyle \mathbb {Q} }(los números racionales), y r es una raíz compleja de f . Entonces, f ( r )  =  0 , que se puede reordenar para expresar r k como una combinación lineal de potencias de r menores que k . Esta ecuación se puede usar para eliminar cualquier potencia de r con exponente ek . Por ejemplo, si f ( x ) = + 1 y r es la unidad imaginaria i , entonces + 1 = 0 , o = −1 . Esto nos permite definir el producto complejo :          

(a+bi)(do+di)=ado+(ad+bdo)i+(bd)i2=(adobd)+(ad+bdo)i.{\displaystyle {\begin{aligned}(a+bi)(c+di)&=ac+(ad+bc)i+(bd)i^{2}\\[4pt]&=(ac-bd)+(ad+bc)i.\end{aligned}}}

En general, esto conduce directamente al cuerpo de los números algebraicos.Q[r]{\textstyle \mathbb {Q} [r]}, que puede definirse como el conjunto de números complejos dado por:

ak1rk1++a1r1+a0r0, dónde a0,,ak1Q.{\displaystyle a_{k-1}r^{k-1}+\cdots +a_{1}r^{1}+a_{0}r^{0},{\text{ donde }}a_{0},\ldots ,a_{k-1}\in \mathbb {Q} .}

El producto de cualesquiera dos de estos valores se puede calcular tomando el producto como polinomios, luego reduciendo cualquier potencia de r con exponente ek como se describió anteriormente, obteniendo un valor de la misma forma. Para asegurar que este campo sea realmente k -dimensional y no colapse a un campo aún más pequeño, es suficiente que f sea un polinomio irreducible sobre los racionales. De manera similar, se puede definir el anillo de enterosOQ[r]{\textstyle \mathbb {O} _ {\mathbb {Q} [r]}}como subconjunto deQ[r]{\textstyle \mathbb {Q} [r]}que son raíces de polinomios mónicos con coeficientes enteros. En algunos casos, este anillo de enteros es equivalente al anilloZ[r]{\textstyle \mathbb {Z} [r]}Sin embargo, existen muchas excepciones. [ 2 ]

Método

Elección de polinomios

Se eligen dos polinomios f ( x ) y g ( x ) de grados pequeños d y e , que tienen coeficientes enteros, que son irreducibles sobre los racionales y que, cuando se interpretan módulo n , tienen una raíz entera común m . No se conoce una estrategia óptima para elegir estos polinomios; un método simple es obtener f a partir de la expansión en base m de n para una elección apropiada de m . Más precisamente: para cualquier elección de m , escribir n en base m es, por definición, encontrar dígitosa0,a1,,ad{\textstyle a_{0},a_{1},\ldots ,a_{d}}dónde0ai<metro{\textstyle 0\leq a_{i}<m}para cada i , tal que

norte=admetrod++a1metro+a0{\displaystyle n=a_{d}m^{d}+\cdots +a_{1}m+a_{0}},

lo que a su vez significa que m es una raíz del polinomioF(incógnita)=adincógnitad++a1incógnita+a0{\textstyle f(x)=a_{d}x^{d}+\cdots +a_{1}x+a_{0}}módulo n . Para los propósitos del cribado general de cuerpos numéricos, primero fijamos un grado apropiado d y luego realizamos la expansión anterior para una serie de valores m de orden n 1/ d , después de lo cual elegimos el polinomio f como aquel cuyos coeficientes son en conjunto los más pequeños entre los candidatos obtenidos de esta manera. Luego simplemente establecemosgramo(incógnita)=incógnitametro{\textstyle g(x)=xm}.

Mejorar la elección de polinomios

La elección del polinomio puede afectar drásticamente el tiempo necesario para completar el resto del algoritmo. El método de selección de polinomios basado en la expansión de n en base m, mostrado anteriormente, resulta subóptimo en muchas situaciones prácticas, lo que ha impulsado el desarrollo de métodos mejores.

Murphy y Brent sugirieron uno de esos métodos; [ 3 ] introducen una puntuación de dos partes para polinomios, basada en la presencia de raíces módulo primos pequeños y en el valor promedio que toma el polinomio sobre el área de tamizado.

Los mejores resultados reportados [ 4 ] fueron logrados por el método de Thorsten Kleinjung , [ 5 ] que permite g ( x ) = ax  + b  , y realiza búsquedas sobre a compuesta de pequeños factores primos congruentes con 1 módulo 2d y sobre coeficientes principales de f que son divisibles por 60.

Generación de pares de relaciones (cribado)

Consideremos los anillos de cuerpos numéricos Z [ r₁ ] y Z [ r₂ ] , donde r₁ y r₂ son raíces de los polinomios f y g . Dado que f es de grado d con coeficientes enteros, si a y b son enteros, también lo será b d · f ( a / b ), que llamamos r . De manera similar, s = b e · g ( a / b ) es un entero. El objetivo es encontrar valores enteros de a y b que simultáneamente hagan que r y s sean suaves con respecto a la base de primos elegida. Si a y b son pequeños, entonces r y s también lo serán, aproximadamente del tamaño de m , y tenemos una mayor probabilidad de que sean suaves al mismo tiempo. El enfoque más conocido actualmente para esta búsqueda es el cribado reticular ; para obtener rendimientos aceptables, es necesario utilizar una base de factores grande. Estos pares también se denominan "relaciones". [ 6 ]

Postprocesamiento

Con suficientes pares de este tipo, mediante la eliminación gaussiana , se pueden obtener productos de ciertos r y de los correspondientes s que sean cuadrados simultáneamente. Se requiere una condición ligeramente más estricta: que sean normas de cuadrados en nuestros cuerpos numéricos, pero esta condición también se puede lograr con este método. Cada r es una norma de a r 1 b y, por lo tanto, el producto de los factores correspondientes ar 1 b es un cuadrado en Z [ r 1 ], con una "raíz cuadrada" que se puede determinar (como producto de factores conocidos en Z [ r 1 ]); normalmente se representará como un número algebraico irracional . De manera similar, el producto de los factores ar 2 b es un cuadrado en Z [ r 2 ], con una "raíz cuadrada" que también se puede calcular. Cabe señalar que el uso de la eliminación gaussiana no proporciona el tiempo de ejecución óptimo del algoritmo. En su lugar, se utilizan algoritmos de resolución de matrices dispersas como Block Lanczos o Block Wiedemann .     

Dado que m es una raíz tanto de f como de g mod n , existen homomorfismos de los anillos Z [ r 1 ] y Z [ r 2 ] al anillo Z / n Z (los enteros módulo n ), que mapean r 1 y r 2 a m , y estos homomorfismos mapearán cada "raíz cuadrada" (típicamente no representada como un número racional) a su representante entero. Ahora bien, el producto de los factores a mb mod n se puede obtener como un cuadrado de dos maneras, una para cada homomorfismo. Así, se pueden encontrar dos números x e y , con x 2y 2 divisible por n y nuevamente con una probabilidad de al menos un medio obtenemos un factor de n al encontrar el máximo común divisor de n y xy .     

El paso de posprocesamiento implica grandes cantidades de datos generados a partir de los dos pasos anteriores. Prácticamente se realiza dividiéndolo en tres fases: [ 6 ]

  1. El filtrado consiste en examinar las relaciones para encontrar una colección suficiente para construir una matriz. Este paso puede fallar si no se proporcionan suficientes relaciones, y es difícil estimar de antemano cuántas se necesitan. Utilizar más relaciones de las necesarias suele facilitar los pasos posteriores, ya que produce una matriz más pequeña.
  2. El álgebra lineal busca un grupo de vectores que se encuentren en el espacio nulo de la matriz muy grande producida en el paso anterior.
  3. Raíz cuadrada, que se puede calcular sobre cualquier solución del paso anterior.

computación distribuida

GNFS implica grandes cantidades de computación y requiere alguna forma de computación distribuida para completarse en plazos prácticos dados los grandes números como RSA-768 . Los siguientes pasos se pueden realizar en paralelo: [ 7 ]

  • El tamizado, que podría producir relaciones duplicadas y requiere grandes cantidades de computación.
  • Eliminación de relaciones duplicadas y eliminación de relaciones únicas.
  • El álgebra lineal, que requiere enormes cantidades de cálculos.

La prueba de caracteres cuadráticos se puede aplicar a los resultados de la resolución de matrices para identificar soluciones verdaderas. En el caso de RSA-768, 460 de 512 fueron verdaderas. Ocho de ellas fueron seleccionadas para el paso cuadrado, lo que produjo 5 factorizaciones idénticas en el paso final después de una cantidad relativamente pequeña de cálculos. [ 7 ]

Una descripción más detallada de un esfuerzo distribuido se puede encontrar en RSA-240, DLP-240 y RSA-250, utilizando el software CADO-NFS. Los archivos de reproducción completos se proporcionan en un repositorio enlazado desde el apéndice del artículo. [ 8 ]

Implementaciones

Algunas implementaciones se centran en una clase más pequeña de números. Estas se conocen como técnicas de cribado de campos numéricos especiales (SNFS, por sus siglas en inglés), como las utilizadas en el proyecto Cunningham .

Hasta 2007, la implementación de referencia era un conjunto de software desarrollado y distribuido por CWI en los Países Bajos, disponible únicamente bajo una licencia relativamente restrictiva. En 2007, Jason Papadopoulos desarrolló una implementación más rápida del procesamiento final como parte de msieve, que es de dominio público. Ambas implementaciones ofrecen la posibilidad de distribuirse entre varios nodos de un clúster con una interconexión suficientemente rápida.

  • GGNFS (GNU GPL) por Chris Monico, última actualización 2005. Puede realizar todos los pasos. Maneja aproximadamente 160 dígitos para SNFS y 135 dígitos para GNFS. Incluye estas partes también bajo GNU GPL:
    • pol5: Selección polinómica por Kleinjung 2005
    • lasieve4: Tamizado en celosía por Franke y Kleinjung 2001 2004
  • Factor de gnfs , código C++ de Chris DiBona y Chris Card, última actualización 2024. Licencia GNU GPL.
  • CADO-NFS , implementación en C/C++ de todos los pasos realizada por un gran equipo en INRIA . Última actualización: 2025 (a fecha de 2025). Licencia GNU LGPL.
  • msieve . Contiene código de procesamiento final, una selección polinómica optimizada para números pequeños y una implementación de la criba lineal. Dominio público.
  • kmGNFS . Implementación básica de todos los pasos por Christos Bakogiannis y Nikolaos Karapanos, última actualización 2009.
  • YAFU . Implementación de todos los pasos por Ben Buhrow. Última actualización: 2025 (a fecha de 2025). Dominio público.

Informática de voluntarios

Un proyecto llamado NFSNET se desarrolló desde 2002 [ 9 ] hasta al menos 2007. Utilizaba computación distribuida voluntaria en Internet . [ 10 ] Paul Leyland del Reino Unido y Richard Wackerbarth de Texas participaron. [ 11 ]

Un intento más reciente, denominado NFS@Home , sigue en funcionamiento a fecha de septiembre de 2025. Históricamente, ha utilizado versiones modificadas de msieve. Generalmente, emplea filtros de campo numérico especiales.

Notas

  1. Pomerance, Carl (diciembre de 1996). "A Tale of Two Sieves" (PDF) . Notices of the AMS . Vol.  43, n.º  12, págs. 1473–1485 . 
  2. Ribenboim, Paulo (1972). Números algebraicos . Wiley-Interscience. ISBN 978-0-471-71804-8.
  3. Murphy, B.; Brent, RP (1998), "Sobre polinomios cuadráticos para el tamiz de cuerpos numéricos" , Australian Computer Science Communications , 20 : 199–213
  4. Franke, Jens (2006), Sobre RSA 200 y proyectos más grandes (PDF)
  5. Kleinjung, Thorsten (octubre de 2006). "Sobre la selección polinomial para la criba de cuerpos numéricos general" (PDF) . Matemáticas de la Computación . 75 (256): 2037–2047 . Bibcode : 2006MaCom..75.2037K . doi : 10.1090/S0025-5718-06-01870-9 . Consultado el 13 de diciembre de 2007 .
  6. 1 2 "readme.nfs de msieve" .
  7. 1 2 "Nos complace anunciar la factorización de RSA768, el siguiente número de 768 bits y 232 dígitos de la lista de desafíos de RSA:" .
  8. F. Boudot et al, "Comparación de la dificultad de la factorización y el logaritmo discreto: un experimento de 240 dígitos", 10 de junio de 2020.
  9. Paul Leyland (12 de diciembre de 2003). "NFSNET: el primer año" . Presentación en el taller EIDMA-CWI sobre factorización de números grandes . Recuperado el 9 de agosto de 2011 .
  10. "Bienvenido a NFSNET" . 23 de abril de 2007. Archivado del original el 22 de octubre de 2007. Consultado el 9 de agosto de 2011 .
  11. "Acerca de NFSNET" . Archivado del original el 9 de mayo de 2008. Consultado el 9 de agosto de 2011 .

Referencias

  • Arjen K. Lenstra y H. W. Lenstra, Jr. (eds.). "El desarrollo del tamiz de cuerpos numéricos". Lecture Notes in Math. (1993) 1554. Springer-Verlag.
  • Richard Crandall y Carl Pomerance . Números primos: una perspectiva computacional (2001). 2.ª edición, Springer. ISBN 0-387-25282-7. Sección 6.2: Tamiz de campo numérico, págs.  278–301.
  • Matthew E. Briggs: Introducción al cribado de campos numéricos generales, 1998