El algoritmo de cálculo de orden ( algoritmo de cálculo de índice ) es un algoritmo probabilístico para calcular el logaritmo discreto en un anillo de residuos módulo un número primo . La complejidad de encontrar el logaritmo discreto es la base de muchos algoritmos relacionados con la criptografía . Ya que resolver este problema usando grandes números requiere una gran cantidad de recursos que ninguna computadora moderna puede proporcionar . Un ejemplo de tal algoritmo es GOST R 34.10-2012 .
Maurice Krajczyk propuso por primera vez la idea básica de este algoritmo en su libro "Théorie des Nombres" en 1922. Después de 1976, el problema del logaritmo discreto se vuelve importante en matemáticas y criptoanálisis. Esto se debe a la creación del criptosistema Diffie-Hellman . En este sentido, en 1977, R. Merkle retomó las discusiones sobre este algoritmo. Dos años más tarde, fue publicado por primera vez por los colegas de Merkel. Finalmente, en 1979, Adlerman lo optimizó, investigó la complejidad y lo presentó en la forma que conocemos hoy. Actualmente, el algoritmo de cálculo de órdenes y sus versiones mejoradas proporcionan la forma más rápida de calcular logaritmos discretos en algunos grupos finitos.
Para un número primo dado y dos enteros y se requiere encontrar un entero que satisfaga la comparación:
donde es un elemento del grupo cíclico generado por el elemento .
Entrada : g - generador de un grupo cíclico de orden n , a - de un subgrupo cíclico, p - un número primo, c - parámetro de confiabilidad, generalmente tomado igual a 10 o un número cercano a este valor (utilizado para implementar el algoritmo en una computadora, si una persona decide, entonces no se configura).
Tarea : encontrar x tal que .
Salida : .
Resuelve la ecuación:
Elige una base factorial Sea k = 7 Calcula
Tomamos el logaritmo y denotamos Y obtenemos el sistema de ecuaciones
lo resolvemos
Efectivamente, por lo tanto ,
Encontramos k tal que
Como consecuencia
Tomamos el logaritmo de esta expresión y obtenemos
Respuesta :
En este algoritmo, el número de iteraciones depende tanto del tamaño de p como del tamaño de la base factorial. Pero elegimos la base de factores de antemano y su tamaño es fijo. Por tanto, la complejidad final está determinada únicamente por el tamaño del número primo y es igual a: , donde , son algunas constantes que dependen de cálculos intermedios, en particular, de la elección de la base factorial.
Un algoritmo de cálculo de orden acelerado, cuya esencia es usar una tabla de índice.
La complejidad computacional se reduce a , en comparación con el algoritmo original.