Algoritmo de Gelfond-Shanks

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 28 de diciembre de 2019; las comprobaciones requieren 9 ediciones .

El algoritmo Gelfond-Shanks ( ing.  Baby-step paso gigante ; también llamado algoritmo de pasos grandes y pequeños ; también puede encontrar muy a menudo el algoritmo de coincidencia de nombres , por ejemplo, en el libro de Vasilenko "Number-Theoretic Algorithms of Cryptography" ) - en teoría de grupos, un algoritmo determinista de logaritmos discretos en el grupo multiplicativo del anillo de residuos módulo un número primo. Fue propuesto por el matemático soviético Alexander Gelfond en 1962 y Daniel Shanks en 1972 [1] [2] [3] .

El método simplifica teóricamente la solución del problema del logaritmo discreto, sobre cuya complejidad computacional se construyen muchos criptosistemas de clave pública . Se refiere a los métodos de reunión en el medio .

Alcance

El problema del logaritmo discreto es de gran interés para la construcción de criptosistemas de clave pública . En el supuesto de una complejidad computacional extremadamente alta para resolver este problema, dichos algoritmos criptográficos se basan, por ejemplo, en RSA , DSA , Elgamal , Diffie-Hellman , ECDSA , GOST R 34.10-2001 , Rabin y otros. En ellos, el criptoanalista puede obtener la clave privada tomando el logaritmo discreto de la clave pública (conocido por todos), y usándolo para convertir el texto cifrado en el texto del mensaje. Sin embargo, cuanto más difícil sea encontrarlo (cuantas más operaciones necesites hacer para encontrar el logaritmo discreto), más seguro es el criptosistema. Una forma de aumentar la complejidad del problema del logaritmo discreto es crear un criptosistema basado en un grupo con un orden grande (donde el logaritmo será módulo un número primo grande). En el caso general, tal problema se resuelve mediante enumeración exhaustiva , pero este algoritmo permite en algunos casos simplificar la búsqueda del exponente (reducir el número de pasos) al calcular módulo un número primo, en el caso más favorable, por la raíz cuadrada de veces [4] , pero esta reducción aún no es suficiente para resolver el problema en una computadora electrónica en un tiempo razonable (la cuestión de resolver el problema del logaritmo discreto en tiempo polinomial en una computadora personal aún está abierta) [5] .

Problema de logaritmos discretos

Sea dado un grupo cíclico con generador que contenga elementos. Un número entero (en el rango de a ) se denomina logaritmo en base discreta de un elemento si la relación es verdadera:

La tarea del logaritmo discreto es determinar para dado .

Formalmente, el problema del logaritmo discreto se plantea de la siguiente manera [6] :

siempre que no exista, y también puede ser un número primo o un número compuesto.

Teoría

La idea del algoritmo es elegir la relación óptima de tiempo y memoria , es decir, en una búsqueda mejorada del exponente.

Sean dados un grupo de orden cíclico , un generador del grupo y algún elemento del grupo . La tarea se reduce a encontrar un número entero para el cual

El algoritmo de Gelfond-Shanks se basa en la representación en la forma , donde , y enumeración de y . La restricción de y se deriva del hecho de que el orden del grupo no excede , lo que significa que los rangos indicados son suficientes para obtener todos los posibles del medio intervalo . Esta representación es equivalente a la igualdad

 

 

 

 

(una)

El algoritmo realiza cálculos previos para diferentes valores y los almacena en una estructura de datos que permite una búsqueda eficiente, y luego itera sobre todos los valores posibles y verifica si coincide con algún valor . Así, se encuentran índices y que satisfacen la relación (1) y nos permiten calcular el valor [7] .

Algoritmo

Entrada : Un grupo de orden cíclico , un generador y algún elemento .

Salida : Un número que satisface .

  1. Calcular ← .
  2. Para cualquier lugar ≤ ≤ :
    1. Escriba en la tabla ( , ). (Ver la sección de Implementación)
    2. ← •
  3. Para cualquier lugar ≤ ≤ :
    1. Calcula _
    2. Compruebe si la tabla contiene.
    3. En caso afirmativo, devuelva  - .
    4. Si no, continúa con el bucle [1] [2] [7] .

Justificación del algoritmo

Es necesario probar que necesariamente existen los mismos elementos en las tablas, es decir, existen tales y , que . Esta igualdad tiene lugar en el caso de , o . Porque , la desigualdad se cumple . Para pares diferentes y tenemos , ya que de lo contrario resultaría que con la elección indicada sólo es posible en el caso de , y, por tanto, . Así, las expresiones toman todos los valores en el rango de a , que, debido a que contiene todos los valores posibles de a . Por lo tanto, para algunos y se cumple la igualdad [2] .

Estimación de la complejidad de un algoritmo

Supongamos que necesitamos resolver , donde y  son números enteros positivos menores que . Una forma es iterar secuencialmente desde hasta , comparando el valor con . En el peor de los casos, necesitamos pasos (cuando ). En promedio tomará pasos. De lo contrario, podemos representar como . Así, el problema se reduce a encontrar y . En este caso, puede reescribir la tarea como o . Ahora podemos iterar sobre todos los valores posibles en el lado derecho de la expresión. En este caso, estos son todos los números desde hasta . Estos son los llamados grandes pasos. Se sabe que uno de los valores obtenidos para  es el requerido. Podemos registrar todos los valores del lado derecho de la expresión en una tabla. Luego podemos calcular los valores posibles para el lado izquierdo para diferentes valores de . Estos son todos los números desde uno de los cuales es el deseado, y junto con el valor correcto del lado derecho da el resultado deseado para . Así, la tarea se reduce a ordenar los distintos valores del lado izquierdo y buscarlos en la tabla. Si el valor deseado se encuentra en la tabla, entonces hemos encontrado y, por lo tanto, el correspondiente . Esta ilustración demuestra la velocidad del algoritmo. En promedio, las operaciones se realizan. En el peor de los casos, se requieren operaciones [3] .

Ejemplo

A continuación se muestra un ejemplo de cómo resolver el problema del logaritmo discreto con un orden de grupo pequeño. En la práctica, los criptosistemas utilizan grupos de orden superior para mejorar la fuerza criptográfica .

Que se sepa . Al principio, crearemos y completaremos la tabla para los "grandes pasos". Elijamos ← ( ). Luego se ejecutará de a .

una 2 3 cuatro 5
veinte 9 19 12 diez

Encontremos un valor adecuado para que los valores de ambas tablas coincidan

una 2 3 cuatro
· quince 6 7 12

Se puede ver que en la segunda tabla para , dicho valor ya está en la primera tabla. Encuentre [2] .

Implementación

Hay una forma de mejorar el rendimiento del algoritmo de Gelfond-Shanks. Consiste en utilizar un esquema eficiente de acceso a tablas. La mejor manera es usar una tabla hash . Debe hacer hash en el segundo componente y luego realizar una búsqueda de hash en la tabla en el bucle principal en . Dado que acceder y agregar elementos a una tabla hash lleva tiempo ( una constante ), esto asintóticamente no ralentiza el algoritmo.

El tiempo de ejecución del algoritmo se estima como , que es mucho mejor que el tiempo de ejecución de la enumeración exhaustiva de exponentes [4] .

Características

Notas

  1. 1 2 D. Mangos. La infraestructura de un campo cuadrático real y sus aplicaciones. Actas de la Conferencia de Teoría de Números. - Universidad de Colorado, Boulder, 1972. - S. pp. 217-224. .
  2. 1 2 3 4 IA Pankratova. Métodos teóricos de números en criptografía: libro de texto. - Tomsk: TSU, 2009. - S. 90-98. — 120 s. .
  3. 1 2 3 VI Nechaev. Elementos de criptografía. Fundamentos de la Teoría de la Seguridad de la Información . - M. : Escuela Superior, 1999. - S.  61 -67. — 109 pág. — ISBN 5-06-003644-8 . .
  4. 12 DC Terr . Una modificación del algoritmo de paso de gigante paso de bebé de Shanks . — Matemáticas de la Computación. - 2000. - T. 69. - S. 767-773. .
  5. Vasilenko O. N. Algoritmos teóricos de números en criptografía . - Moscú: MTSNMO , 2003. - S. 163-185. — 328 pág. — ISBN 5-94057-103-4 . Copia archivada (enlace no disponible) . Fecha de acceso: 23 de noviembre de 2016. Archivado desde el original el 27 de enero de 2007.   .
  6. Yan, Song Y. Pruebas de primalidad y factorización de enteros en criptografía de clave pública . - 2. - Springer, 2009. - S. 257-260. — 374 pág. — ISBN 978-0-387-77267-7 . .
  7. 1 2 3 4 5 6 Glukhov M. M., Kruglov I. A., Pichkur A. B., Cheremushkin A. V. Introducción a los métodos criptográficos de teoría numérica. - 1ª ed.- San Petersburgo. : Lan, 2010. - S. 279-298. — 400 s. Con. - ISBN 978-5-8114-1116-0 . .

Literatura