Алгоритм базисного преобразования криптографической решётки

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Алгоритм базисного преобразования криптографической решётки (LLL) — это алгоритм уменьшения решётки за полиномиальное время, изобретенный Арьеном Ленстра, Хендриком Ленстра и Ласлом Ловасом в 1982.[1] Задан базис с n-мерными натуральными координатами для рёшетки L, являющаяся дискретной подгруппой Rn с . Алгоритм LLL рассчитывает LLL-уменьшенный базис решётки за время

где является наибольшей длинной из в соответствии с евклидовой нормой, то есть

.[2][3]

Первоначальные приложения должны были предоставить алгоритмы полиномиального времени для факторизации полиномов с рациональными коэффициентами, для нахождения одновременных рациональных приближений к действительным числам и для решения задачи целочисленного линейного программирования в фиксированных измерениях.

LLL reduction[править]

Точное определение LLL-уменьшенного выглядят следующим образом : Учитывая базис

определить его ортогональный базис процесса Грама – Шмидта

и коэффициенты Грамма-Шмидта

, for any .

Тогда базис есть LLL-уменьшение, если существует параметр принадлежащий интервалу (0.25,1] такой, что имеют место следующий условия:

  1. (уменьшенный размер) Для . По определению это свойство гарантирует уменьшение длины упорядоченного базиса.
  2. (Условие Л. Ласло) k = 1,2,..,n .

Здесь, оценивая величину параметра ,можно сделать вывод, насколько хорошо базис уменьшается. Большие значения параметра приводят к более сильным сокращениям основания. Первоначально А. Ленстра, Х. Ленстра и Л. Ловас продемонстрировали алгоритм LLL-уменьшения для .Обратите внимание, что хотя LLL-уменьшение хорошо определено для , сложность за полиномиальное время гарантируется только для параметра принадлежит .

Алгоритм LLL вычисляет LLL-уменьшенные базисы. Не существует известного эффективного алгоритма для вычисления базиса, в котором векторы базисов настолько коротки, насколько это возможно, для решёток с размерами, превышающими 4.[4] Однако базис с уменьшенной LLL является настолько коротким, насколько это возможно, в том смысле, что абсолютные границы таким образом, что первый базисный вектор не более чем в раз меньше самого короткого вектора в решётке, второй базисный вектор также находится в пределах второго последовательного минимума и так далее.

Алгоритм LLL[править]

Описание данного алгоритма основано на( Hoffstein, Pipher & Silverman 2008 , теорема 6.68).[5]

На вход:

базис решётки ,
параметр , так что , наиболее частая величина которого, есть

Действия:

Выполните Грам-Шмидта, но не производите нормировку: Определить , который всегда должен использовать самые актуальные значения . Пусть пока делать для j от до 0 делать if do Обновить "орто" величины и и связанные с ними по мере необходимости. (Собственный метод состоит в том, чтобы пересчитывать всегда при любых изменениях changes.) конец если конец для если тогда иначе Поменять местами и . Обновить "орто" величины и связанные с ними по мере необходимосит. конец если конец пока

На выход: LLL уменьшенный базис

Свойства LLL-уменьшенного базиса[править]

Пусть является -LLL-уменьшенным базисом в решётке .Из определения LLL-уменьшенного базиса мы можем получить несколько других полезных свойств о{\ displaystyle \ mathbf {B}} .

  1. Первый вектор в базе не может быть намного больше самого короткого ненулевого вектора :{\ displaystyle || \ mathbf {b} _ {1} || \ leq (2 / ({\ sqrt {4 \ delta -1}})) ^ {n-1} \ cdot \ lambda _ {1} ( {\ mathcal {L}})}: . В частности, для , это даёт.[6]
  2. Первый вектор в базисе также ограничен определителем решётки: . In particular, for , в частности для .
  3. Произведение норм векторов в базисе не может быть намного больше, чем определитель решетки: пусть, тогда .

Пример[править]

Ниже приведён пример из W. Bosma.[7]

На вход:

Пусть дан базис решётки ,с заданными столбцами

Тогда по алгоритму LLL получаем следующее:

  1. Для делать:
    1. Для положить а так же
  2. Здесь шаг 4 алгоритма LLL пропускается, поскольку свойство уменьшенного размера выполняется для
  3. Пока делать
    1. Уменьшить длину , не забывая корректировать при этом и согласно подпрограмме сокращения в шаге 4: для ВЫПОЛНИТЬ подпрограмму сокращения RED(3,1):
      1. а также
      2. Положить

      Для ВЫПОЛНИТЬ подпрограмму сокращения RED(3,2):

      1. and
      2. Положить
    2. Если , то
      1. Заменить и

Применить SWAP, продолжить алгоритм с базой решетки, которая задается столбцами

Реализовать алгоритм шагов снова.

  1. .
  2. .
  3. Для ВЫПОЛНИТЬ подпрограмму сокращения RED(2,1):
    1. and
    2. Положить
  4. Если , то
  5. Заменить и

ВЫХОД: LLL уменьшенный базис

Использование алгоритма LLL[править]

Алгоритм LLL нашел множество других применений в алгоритмах обнаружения MIMO [8] и криптоанализе схем шифрования с открытым ключом : криптосистемы ранцев , RSA с конкретными настройками, NTRUEncrypt и так далее. Алгоритм может быть использован для поиска целочисленных решений многих задач.[9]

В частности, алгоритм LLL образует ядро одного из алгоритмов целочисленных отношений . Например, если считается, что r = 1.618034 является (слегка округленным) корнем неизвестного квадратного уравнения с целыми коэффициентами, можно применить LLL-сокращение к решетке в натянутый на и . Первый вектор в сокращенном базисе будет представлять собой целочисленную линейную комбинацию этих трех, поэтому обязательно имеет вид ; но такой вектор «короткий», только если a, b, c малы и ещё меньше. Таким образом, первые три записи этого короткого вектора, вероятно, будут коэффициентами целочисленного квадратичного полинома, у которого r является корнем. В этом примере алгоритм LLL находит самый короткий вектор как [1, -1, -1, 0.00025], действительно имеет корень, равный золотому сечению , 1.6180339887....

Другие области применения алгоритма LLL[править]

LLL применятеся в

  • Arageli как функция lll_reduction_int
  • fpLLL как отдельная реализация
  • GAP как функция LLLReducedBasis
  • Macaulay2 как функция LLL в пакете LLLBases
  • Magma как функции LLL and LLLGram (используя грамм-матрицу)
  • Maple как функция IntegerRelations[LLL]
  • Mathematicaкак функция LatticeReduce
  • Number Theory Library (NTL) как функцияLLL
  • PARI/GP как функцияqflll
  • Pymatgen как функция analysis.get_lll_reduced_lattice
  • SageMath как метод LLL driven by fpLLL and NTL

См. также[править]

Источники[править]

  1. Lenstra, A. K.[en]; Lenstra, H. W., Jr.[en]; Lovász, L.[en] Factoring polynomials with rational coefficients (неопр.) // Mathematische Annalen. — 1982. — Vol. 261. — № 4. — С. 515—534. — DOI:10.1007/BF01457454
  2. Galbraith, Steven chapter 17 // Mathematics of Public Key Cryptography. — 2012.
  3. Nguyen, Phong Q.; Stehlè, Damien An LLL Algorithm with Quadratic Complexity (англ.) // SIAM J. Comput.[en] : journal. — 2009. — Vol. 39. — № 3. — С. 874—903. — DOI:10.1137/070705702
  4. Nguyen, Phong Q.; Stehlé, Damien Low-dimensional lattice basis reduction revisited (англ.) // ACM Transactions on Algorithms[en] : journal. — 2009. — Vol. 5. — № 4. — С. 1—48. — DOI:10.1145/1597036.1597050
  5. Introduction to Mathematical Cryptography Errata. Проверено 5 мая 2015.
  6. Lattices in Computer Science: LLL Algorithm. New York University. Проверено 1 февраля 2019.
  7. Bosma, Wieb 4. LLL. Lecture notes. Проверено 28 февраля 2010.
  8. Shahabuddin, Shahriar et al., "A Customized Lattice Reduction Multiprocessor for MIMO Detection", in Arxiv preprint, January 2015.
  9. D. Simon Selected applications of LLL in number theory (неопр.) // LLL+25 Conference. — Caen, France: 2007.

Ссылки[править]

  • Napias, Huguette A generalization of the LLL algorithm over euclidean rings or orders (англ.) // J. The. Nombr. Bordeaux : journal. — 1996. — Vol. 8. — С. 387—396. — DOI:10.5802/jtnb.176
  • Cohen, Henri A course in computational algebraic number theory. — Springer, 2000. — Т. 138. — (GTM). — ISBN 3-540-55640-0.
  • Borwein, Peter[en] Computational Excursions in Analysis and Number Theory. — 2002. — ISBN 0-387-95444-9.
  • Luk, Franklin T.; Qiao, Sanzheng A pivoted LLL algorithm (неопр.) // Lin. Alg. Appl.. — 2011. — Vol. 434. — № 11. — С. 2296—2307. — DOI:10.1016/j.laa.2010.04.003
  • Hoffstein, Jeffrey; Pipher, Jill; Silverman, J.H. An Introduction to Mathematical Cryptography. — Springer, 2008. — ISBN 978-0-387-77993-5.