En la teoría computacional de números , el algoritmo de cálculo de índices es un algoritmo probabilístico para calcular logaritmos discretos . Dedicado al logaritmo discreto endóndeSi es un número primo, el cálculo de índices conduce a una familia de algoritmos adaptados a cuerpos finitos y a algunas familias de curvas elípticas . El algoritmo recopila relaciones entre los logaritmos discretos de primos pequeños, los calcula mediante un procedimiento de álgebra lineal y, finalmente, expresa el logaritmo discreto deseado con respecto a los logaritmos discretos de primos pequeños.
Descripción
En términos generales, el problema del logaritmo discreto nos pide encontrar un x tal quedonde se dan g , h y el módulo n .
El algoritmo (que se describe en detalle a continuación) se aplica al grupodonde q es primo. Requiere una base de factores como entrada. Esta base de factores suele elegirse como el número −1 y los primeros r primos, comenzando por 2. Desde el punto de vista de la eficiencia, queremos que esta base de factores sea pequeña, pero para resolver el logaritmo discreto para un grupo grande, necesitamos que la base de factores sea (relativamente) grande. En las implementaciones prácticas del algoritmo, estos objetivos contradictorios se comprometen de una u otra forma.
El algoritmo se realiza en tres etapas. Las dos primeras dependen únicamente del generador g y del módulo primo q , y hallan los logaritmos discretos de una base de factores de r primos pequeños. La tercera etapa halla el logaritmo discreto del número deseado h en función de los logaritmos discretos de la base de factores.
La primera etapa consiste en buscar un conjunto de r relaciones linealmente independientes entre la base factorial y la potencia del generador g . Cada relación aporta una ecuación a un sistema de ecuaciones lineales con r incógnitas, concretamente los logaritmos discretos de los r números primos de la base factorial. Esta etapa es fácilmente paralelizable y se puede distribuir entre varios ordenadores.
La segunda etapa resuelve el sistema de ecuaciones lineales para calcular los logaritmos discretos de la base factorial. Un sistema de cientos de miles o millones de ecuaciones implica un cálculo significativo que requiere grandes cantidades de memoria y no es fácilmente paralelizable, por lo que normalmente se utiliza una supercomputadora . Esto se consideró un paso menor en comparación con los demás para cálculos de logaritmos discretos más pequeños. Sin embargo, los registros de logaritmos discretos más grandes [ 1 ] [ 2 ] solo fueron posibles trasladando el trabajo del álgebra lineal al método de cribado (es decir, aumentando el número de ecuaciones y reduciendo el número de variables).
La tercera etapa busca una potencia s del generador g que, cuando se multiplica por el argumento h , puede factorizarse en términos de la base del factor g s h = (−1) f 0 2 f 1 3 f 2 ··· p r f r .
Finalmente, en una operación demasiado simple para ser realmente llamada una cuarta etapa, los resultados de la segunda y tercera etapas pueden reorganizarse mediante manipulación algebraica simple para calcular el logaritmo discreto deseado x = f 0 log g (−1) + f 1 log g 2 + f 2 log g 3 + ··· + f r log g p r − s .
La primera y la tercera etapa son sorprendentemente paralelas, y de hecho la tercera etapa no depende de los resultados de las dos primeras, por lo que puede realizarse en paralelo con ellas.
La elección del tamaño de la base de factores r es crucial, y los detalles son demasiado complejos para explicarlos aquí. Cuanto mayor sea la base de factores, más fácil será encontrar relaciones en la etapa 1 y completar la etapa 3, pero se necesitarán más relaciones para pasar a la etapa 2, y esta última será más difícil. La disponibilidad relativa de ordenadores adecuados para los diferentes tipos de cálculos requeridos en las etapas 1 y 2 también es importante.
Aplicaciones en otros grupos
La ausencia de la noción de elementos primos en el grupo de puntos sobre curvas elípticas imposibilita encontrar una base de factores eficiente para ejecutar el método del cálculo de índices, tal como se presenta aquí, en estos grupos. Por lo tanto, este algoritmo es incapaz de resolver logaritmos discretos de manera eficiente en grupos de curvas elípticas. Sin embargo, para tipos especiales de curvas (las llamadas curvas elípticas supersingulares ) existen algoritmos especializados para resolver el problema más rápidamente que con los métodos genéricos. Si bien el uso de estas curvas especiales puede evitarse fácilmente, en 2009 se demostró que para ciertos campos el problema del logaritmo discreto en el grupo de puntos sobre curvas elípticas generales sobre estos campos puede resolverse más rápidamente que con los métodos genéricos. Los algoritmos son, de hecho, adaptaciones del método del cálculo de índices. [ 3 ]
Asimismo, no se conocen algoritmos para descomponer eficientemente los números enteros en miembros de un subgrupo objetivo. En consecuencia, es imposible determinar de manera eficiente una fracción del orden del grupo donde se encuentra la solución del logaritmo discreto, a diferencia de lo que ocurre con el rho de Pollard o el canguro de Pollard .
El algoritmo
Entrada: Generador de logaritmos discretos, móduloy argumento. Base de factor, de longitud. Producción:de tal manera que.
- relaciones ← lista_vacía
- para
- Utilizando un algoritmo de factorización de enteros optimizado para números suaves , intenta factorizar(residuo euclidiano) usando la base del factor, es decir, encontrares tal que
- Cada vez que se encuentra una factorización:
- Almacenary el calculadoes como vector(esto se llama una relación)
- Si esta relación es linealmente independiente de las demás relaciones:
- Añádelo a la lista de relaciones
- Si hay al menosrelaciones, bucle de salida
- Formar una matriz cuyas filas sean las relaciones
- Obtenga la forma escalonada reducida de la matriz.
- El primer elemento de la última columna es el logaritmo discreto dey el segundo elemento es el logaritmo discreto deetcétera
- para
- Intenta tener en cuentasobre la base del factor
- Cuando se encuentra una factorización:
- Producción
Complejidad
Suponiendo una selección óptima de la base de factores, el tiempo de ejecución esperado (usando la notación L ) del algoritmo de cálculo de índices se puede expresar como .
Historia
La idea básica del algoritmo se debe a Western y Miller (1968), [ 4 ] que en última instancia se basa en ideas de Kraitchik (1922). [ 5 ] Las primeras implementaciones prácticas siguieron a la introducción en 1976 del criptosistema Diffie-Hellman , que se basa en el logaritmo discreto. La tesis doctoral de Merkle en la Universidad de Stanford (1979) fue reconocida por Pohlig (1977) y Hellman y Reyneri (1983), quienes también realizaron mejoras a la implementación. [ 6 ] [ 7 ] Adleman optimizó el algoritmo y lo presentó en su forma actual. [ 8 ]
La familia Index Calculus
El cálculo de índices inspiró una gran familia de algoritmos. En campos finitosconpara algunos principiante, los algoritmos de última generación son el Number Field Sieve para logaritmos discretos,, cuandoes grande en comparación con, [ 9 ] el tamiz de campo de funciones ,, [ 9 ] y Joux, [ 10 ]para, cuandoes pequeño en comparación cony el tamiz de campo numérico en alto grado,paracuandoes de lado medio. El logaritmo discreto en algunas familias de curvas elípticas se puede resolver en tiempopara, pero el caso general sigue siendo exponencial.
Enlaces externos
- Logaritmos discretos en cuerpos finitos y su significado criptográfico , por Andrew Odlyzko
- Problema del logaritmo discreto , por Chris Studholme, incluyendo el artículo del 21 de junio de 2002 titulado "El problema del logaritmo discreto".
- A. Menezes; P. van Oorschot; S. Vanstone (1997). Manual de criptografía aplicada . CRC Press . págs. 107–109 . ISBN 0-8493-8523-7.
Notas
- ^ Thorsten Kleinjung, Claus Diem, Arlen K. Lenstra, Christine Priplata, Colin Stahlke, "Cálculo de un logaritmo discreto de campo primo de 768 bits" , sprint IACR, 2017
- ^ Joshua Fried, Pierrick Gaudry, Nadia Heninger, Emmanuel Thome, "Un cálculo de logaritmo discreto snfs oculto en kilobits" , primavera de IACR, julio de 2016
- ^ Diem, C (2010). "Sobre el problema de logaritmos discretos en curvas elípticas". Composición Matemática .
- ↑ Western y Miller (1968) Tablas de índices y raíces primitivas , Tablas matemáticas de la Royal Society, vol. 9, Cambridge University Press.
- ↑ M. Kraitchik, Théorie des nombres , Gauthier--Villards, 1922
- ↑ Pohlig, S. Aspectos algebraicos y combinatorios de la criptografía . Informe técnico n.° 6602-1, Laboratorios de Electrónica de Stanford, Stanford, California, octubre de 1977.
- ↑ ME Hellman y JM Reyneri, Cálculo rápido de logaritmos discretos en GF (q), Avances en criptología – Actas de Crypto, 1983
- ↑ L. Adleman, Un algoritmo subexponencial para el problema del logaritmo discreto con aplicaciones a la criptografía , En 20º Simposio Anual sobre Fundamentos de la Informática, 1979
- ^ Barbulescu , Razvan (2013). Algoritmos para logaritmos discretos en campos finitos (Doctor). Universidad de Lorena.
- ^ Joux, Antoine (agosto de 2013). Lange, Tanja ; Lauter, Kristin ; Lisoněk, Petr (eds.). Un nuevo algoritmo de cálculo de índices con complejidad.en características muy pequeñas . Áreas seleccionadas en criptografía — SAC 2013. Notas de clase en ciencias de la computación. Vol. 8282. Burnaby, BC, Canadá: Springer. págs. 355–379 . doi : 10.1007/978-3-662-43414-7_18 . ISBN 978-3-662-43414-7.
- teoría de grupos