Algoritmo Lenstra-Lenstra-Lovas

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 19 de marzo de 2020; las comprobaciones requieren 3 ediciones .

El algoritmo Lenstra-Lenstra-Lovas ( LLL-algorithm , LLL-algorithm ) es un algoritmo de reducción de base reticular desarrollado por Arjen Lenstra , Hendrik Lenstra y Laszlo Lovas en 1982 [1] . En tiempo polinomial, el algoritmo transforma una base en una red (subgrupo ) en la base casi ortogonal más corta en la misma red. A partir de 2019, el algoritmo Lenstra-Lenstra-Lovas es uno de los más eficientes para calcular la base reducida en redes de alta dimensión . Es relevante principalmente en problemas que se reducen a encontrar el vector de red más corto.

Historia

El algoritmo fue desarrollado por los matemáticos holandeses Arjen Lenstra y Hendrik Lenstra junto con el matemático húngaro Laszlo Lovas en 1982 [1] [2] .

El principal requisito previo para la creación del algoritmo LLL fue que el proceso de Gram-Schmidt solo funciona con vectores cuyos componentes son números reales . Para un espacio vectorial , el proceso de Gram-Schmidt permite transformar una base arbitraria en una ortonormal (“ideal”, a la que tiende el algoritmo LLL). Pero el proceso de Gram-Schmidt no garantiza que en la salida cada uno de los vectores sea una combinación lineal entera de la base original. Por lo tanto, el conjunto de vectores resultante puede no ser la base de la red original. Esto llevó a la necesidad de crear un algoritmo especial para trabajar con celosías [3] .

Inicialmente, el algoritmo se utilizó para factorizar polinomios con coeficientes enteros , calcular aproximaciones diofánticas de números reales y resolver problemas de programación lineal en espacios de dimensión fija , y más tarde para criptoanálisis [4] [2] .

Reducción de base

Una red en el espacio euclidiano  es un subgrupo del grupo generado por vectores linealmente independientes de , llamado base de la red. Cualquier vector de celosía se puede representar mediante una combinación lineal entera de vectores base [5] . La base de una red se define de forma ambigua: la figura muestra dos bases diferentes de la misma red.

La reducción de base consiste en llevar la base de la red a una forma especial que satisfaga ciertas propiedades. La base reducida debe ser, si es posible, la más corta entre todas las bases de la red y cercana a la ortogonal (lo que se expresa en el hecho de que los coeficientes finales de Gram-Schmidt no deben ser mayores que ) [3] .

Sea como resultado de la transformación de la base mediante el proceso de Gram-Schmidt , se obtiene la base , con los coeficientes de Gram-Schmidt definidos como sigue:

, para todos los que .

Entonces, una base (ordenada) se denomina base reducida -LLL (donde el parámetro está en el intervalo ) si cumple las siguientes propiedades [3] :

  1. Para todos los que . (condición de reducción)
  2. Para presas: . (Condición de Lova)

Aquí está la norma del vector , es el producto escalar de vectores.

Inicialmente, Lenstra, Lenstra y Lovas demostraron el funcionamiento del algoritmo para el parámetro en su artículo . Aunque el algoritmo sigue siendo correcto para , su operación en tiempo polinomial está garantizada solo para en el intervalo [1] .


Propiedades de base reducida

Sea una base sobre la red  reducida por el algoritmo LLL con el parámetro . Varias propiedades pueden derivarse de la definición de tal base . Sea  la norma del vector de red más corto, entonces:

  1. El vector de primera base no puede ser significativamente más largo que el vector distinto de cero más corto :. En particular, porque resulta [6] .
  2. El primer vector base está limitado por el determinante de la red :. En particular, porque resulta [3] .
  3. El producto de normas vectoriales no puede ser mucho mayor que el determinante de la red:. En particular, para [3] .

La base transformada por el método LLL es casi la más corta posible, en el sentido de que existen límites absolutos tales que el primer vector base no es más largo que el vector de red más corto, de manera similar, el segundo vector base no es más largo que un factor del segundo, el vector de red más corto, y así sucesivamente (que se deriva directamente de la propiedad 1) [6] .

Algoritmo

Entrada [7] :

base de celosía (consiste en vectores linealmente independientes), parámetro c , con mayor frecuencia (la elección del parámetro depende de la tarea específica).

Secuencia de acciones [4] :

  1. En primer lugar, se crea una copia de la base original, que se ortogonaliza de modo que durante el transcurso del algoritmo se compare la base actual con la copia resultante en cuanto a ortogonalidad ( ).
  2. Si cualquier coeficiente de Gram-Schmidt (c ) es mayor en valor absoluto que , entonces la proyección de uno de los vectores de la base actual sobre el vector de una base ortogonalizada con un número diferente es más de la mitad . Esto significa que es necesario restar del vector el vector multiplicado por el redondeado (el redondeo es necesario, ya que el vector de la red sigue siendo el vector de la misma red solo cuando se multiplica por un número entero, lo que se deriva de su definición). Luego se hace más pequeño , ya que ahora la proyección sobre será menos de la mitad . Por lo tanto, se verifica el cumplimiento de la primera condición de la definición de una base LLL reducida.
  3. Recalculado para .
  4. Para , se comprueba la 2ª condición, introducida por los autores del algoritmo como la definición de una base LLL-reducida [1] . Si no se cumple la condición, se intercambian los índices de los vectores marcados. Y se vuelve a comprobar la condición para el mismo vector (ya con un nuevo índice).
  5. Recalculado por y para
  6. Si queda alguna que sobrepase en valor absoluto (ya con otra ), entonces debemos volver al punto 2.
  7. Cuando se verifican todas las condiciones y se realizan cambios, el algoritmo termina.

En el algoritmo  : redondeo según las reglas de las matemáticas. El proceso del algoritmo, descrito en pseudocódigo [7] :

orto (realizar el proceso de Gram-Schmidt sin normalización); determinar , siempre implicando los valores más actuales asignados hasta el momento : para j de a 0 : si , entonces :; Actualizar valorespara; condición final ; fin de ciclo ; if , then : else : intercambio y lugares; Actualizar valorespara; para; ; condición final ; fin de ciclo .

Datos de salida: base reducida: .

Complejidad computacional

La entrada contiene una base de vectores dimensionales con .

Si los vectores base consisten en componentes enteros, el algoritmo aproxima la base casi ortogonal más corta en tiempo polinomial , donde  es la longitud máxima en la norma euclidiana , es decir, . El bucle principal del algoritmo LLL requiere iteraciones y funciona con números de longitud . Dado que los vectores de longitud se procesan en cada iteración , como resultado, el algoritmo requiere operaciones aritméticas. El uso de algoritmos ingenuos para la suma y multiplicación de números enteros da como resultado operaciones bit a bit [3] .

En el caso de que la red tenga una base con componentes racionales, estos números racionales primero deben convertirse en números enteros multiplicando los vectores base por los denominadores de sus componentes (el conjunto de denominadores está limitado a algún número entero ). Pero entonces las operaciones ya se realizarán en números enteros que no excedan . Como resultado, habrá un máximo de operaciones de bits . Para el caso en que la red se da en , la complejidad del algoritmo sigue siendo la misma, pero aumenta el número de operaciones de bits. Dado que en la representación por computadora cualquier número real se reemplaza por uno racional debido a la limitación de la representación de bits, la estimación resultante también es válida para redes reales [3] .

Al mismo tiempo, para dimensiones inferiores a 4, el problema de la reducción de la base se resuelve de manera más eficiente mediante el algoritmo de Lagrange [8] .

Ejemplo

Un ejemplo dado por Wib Bosma [9] .

Deje que la base de la red (como un subgrupo ) esté dada por las columnas de la matriz:

En el transcurso del algoritmo, se obtiene lo siguiente:

  1. Proceso de ortogonalización de Gram-Schmidt
    1. , y
    2. , por lo tanto y , entonces y
  2. Para tenemos y , entonces vamos al siguiente paso.
  3. cuando tenemos:
    1. significa ahora
    2. significa ahora
    3. , por lo que cambian de lugar.
  4. Ahora volvemos al paso 1, mientras que la matriz intermedia tiene la forma

Datos de salida: base reducida por el método Lenstra-Lenstra-Lovas:

Aplicación

El algoritmo se usa a menudo dentro del método MIMO (codificación de señal espacial) para decodificar señales recibidas por múltiples antenas [10] , y en criptosistemas de clave pública : criptosistemas basados ​​en el problema de la mochila , RSA con configuraciones específicas, NTRUEncrypt , etc. . El algoritmo se puede utilizar para encontrar soluciones enteras en varios problemas de teoría de números, en particular, para encontrar las raíces de un polinomio en números enteros [11] .

En el proceso de ataques a criptosistemas de clave pública ( NTRU ), el algoritmo se utiliza para encontrar el vector de red más corto, ya que el algoritmo finalmente encuentra un conjunto completo de vectores más cortos [12] .

En el criptoanálisis RSA con un exponente CRT pequeño , la tarea, como en el caso de NTRU, se reduce a encontrar el vector de base reticular más corto que se encuentra en tiempo polinomial (desde la dimensión base) [13] .

En problemas de mochila, en particular, para atacar el criptosistema Merkle-Hellman, el algoritmo LLL busca una base de red reducida [14] .

Variaciones y generalizaciones

El uso de aritmética de punto flotante en lugar de una representación exacta de números racionales puede acelerar significativamente el algoritmo LLL a costa de errores numéricos muy pequeños [15] .

Implementaciones del algoritmo

Programáticamente, el algoritmo se implementa en el siguiente software:

Notas

  1. ↑ 1 2 3 4 AK Lenstra, H. W. Lenstra Jr., L. Lovász. Factorización de polinomios con coeficientes racionales // Mathematische Annalen . - 1982. - S. 515-534 . — ISSN 4 . -doi : 10.1007/ BF01457454 .
  2. 1 2 El algoritmo LLL, 2010 , 1 La historia del algoritmo LLL.
  3. ↑ 1 2 3 4 5 6 7 Galbraith, Steven. 17. Reducción de celosía // Matemáticas de criptografía de clave pública  (inglés) . - 2012. Archivado el 20 de septiembre de 2015 en Wayback Machine .
  4. 1 2 Xinyue, Deng. Introducción al algoritmo LLL  //  Instituto de Tecnología de Massachusetts. - Pág. 9-10 . Archivado desde el original el 8 de diciembre de 2019.
  5. Cherednik I. V. Base de celosía no negativa  // 3.ª ed. — Discreto. Mat., 2014. - T. 26 . - S. 127-135 .
  6. 1 2 Regev, Oded. Lattices en Ciencias de la Computación: Algoritmo LLL  // Universidad de Nueva York. Archivado desde el original el 20 de marzo de 2021.
  7. ↑ 1 2 Hoffstein, Jeffrey; Pipher, Jill; Silverman , JH Introducción a la criptografía matemática  . — Springer, 2008. - Pág. 411. - ISBN 978-0-387-77993-5 .
  8. Nguyen, Phong Q., Stehlé, Damien. Revisión de la reducción de la base de celosía de baja dimensión  //  Transacciones ACM en algoritmos. — Pág. 1–48 . -doi : 10.1145/ 1597036.1597050 .
  9. Bosma, Wieb. 4. LLL  // Álgebra informática. - 2007. Archivado el 8 de mayo de 2019.
  10. Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi. Un multiprocesador de reducción de celosía personalizado para detección MIMO // Simposio internacional IEEE sobre circuitos y sistemas (ISCAS) de 2015. - 2015. - arXiv : 1501.04860 . -doi : 10.1109 / ISCAS.2015.7169312 .
  11. D. Simón. Aplicaciones seleccionadas de LLL en teoría de números  // Conferencia LLL+25. — Caen, Francia. Archivado el 6 de mayo de 2021.
  12. Abderrahmane, Nitaj. Criptoanálisis de NTRU con dos claves públicas  // Asociación Internacional para la Investigación Criptológica. — Caen, Francia. Archivado desde el original el 21 de diciembre de 2019.
  13. Bleichenbacher, Daniel y May, Alexander. Nuevos ataques a RSA con pequeños exponentes CRT secretos  // Asociación internacional para la investigación criptológica. — Darmstadt, Alemania. Archivado desde el original el 24 de junio de 2021.
  14. Liu, Jiayang, Bi, Jingguo y Xu, Songyan. Un ataque mejorado a los criptosistemas básicos Merkle-Hellman Knapsack  // IEEE. — Pekín 100084, China. Archivado desde el original el 17 de junio de 2021.
  15. El algoritmo LLL, 2010 , 4 Progreso en LLL y ​​Reducción de celosía.
  16. El equipo de desarrollo de la FPLLL. FPLLL, una biblioteca de reducción de celosía . — 2016. Archivado el 17 de febrero de 2020.
  17. Matrices integrales y celosías . GAP . Consultado el 10 de diciembre de 2019. Archivado desde el original el 19 de diciembre de 2019.
  18. LLLBases -- reducción de celosía (bases de Lenstra-Lenstra-Lovasz) . Macaulay2 . Consultado el 10 de diciembre de 2019. Archivado desde el original el 10 de diciembre de 2019.
  19. Reducción de LLL . magma _ Consultado el 10 de diciembre de 2019. Archivado desde el original el 10 de diciembre de 2019.
  20. Relaciones enteras/LLL . arce _ Consultado el 10 de diciembre de 2019. Archivado desde el original el 18 de septiembre de 2020.
  21. LatticeReduce . Documentación de Wolfram Language . Consultado el 10 de diciembre de 2019. Archivado desde el original el 10 de diciembre de 2019.
  22. MÓDULO: LLL . NTL . Consultado el 10 de diciembre de 2019. Archivado desde el original el 17 de agosto de 2018.
  23. Vectores, matrices, álgebra lineal y conjuntos . PARI/GP . Consultado el 10 de diciembre de 2019. Archivado desde el original el 18 de diciembre de 2019.
  24. módulo pymatgen.core.lattice . pymatgen _ Consultado el 27 de diciembre de 2019. Archivado desde el original el 18 de diciembre de 2019.
  25. Matrices densas sobre el anillo de enteros . sabio _ Consultado el 18 de diciembre de 2019. Archivado desde el original el 6 de mayo de 2021.

Literatura