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

где
является наибольшей длинной из
в соответствии с евклидовой нормой, то есть
.[2][3]
Первоначальные приложения должны были предоставить алгоритмы полиномиального времени для факторизации полиномов с рациональными коэффициентами, для нахождения одновременных рациональных приближений к действительным числам и для решения задачи целочисленного линейного программирования в фиксированных измерениях.
LLL reduction[править]
Точное определение LLL-уменьшенного выглядят следующим образом : Учитывая базис

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

и коэффициенты Грамма-Шмидта
, for any
.
Тогда базис
есть LLL-уменьшение, если существует параметр
принадлежащий интервалу (0.25,1] такой, что имеют место следующий условия:
- (уменьшенный размер) Для
. По определению это свойство гарантирует уменьшение длины упорядоченного базиса.
- (Условие Л. Ласло) k = 1,2,..,n
.
Здесь, оценивая величину параметра
,можно сделать вывод, насколько хорошо базис уменьшается. Большие значения параметра
приводят к более сильным сокращениям основания. Первоначально А. Ленстра, Х. Ленстра и Л. Ловас продемонстрировали алгоритм LLL-уменьшения для
.Обратите внимание, что хотя LLL-уменьшение хорошо определено для
, сложность за полиномиальное время гарантируется только для параметра
принадлежит
.
Алгоритм LLL вычисляет LLL-уменьшенные базисы. Не существует известного эффективного алгоритма для вычисления базиса, в котором векторы базисов настолько коротки, насколько это возможно, для решёток с размерами, превышающими 4.[4] Однако базис с уменьшенной LLL является настолько коротким, насколько это возможно, в том смысле, что абсолютные границы
таким образом, что первый базисный вектор не более чем в
раз меньше самого короткого вектора в решётке, второй базисный вектор также находится в пределах
второго последовательного минимума и так далее.
Описание данного алгоритма основано на( Hoffstein, Pipher & Silverman 2008 , теорема 6.68).[5]
На вход:
базис решётки
,
параметр
, так что
, наиболее частая величина которого, есть 
Действия:
Выполните Грам-Шмидта, но не производите нормировку:
Определить
, который всегда должен использовать самые актуальные значения
.
Пусть
пока
делать
для j от
до 0 делать
if
do
Обновить "орто" величины и и связанные с ними
по мере необходимости.
(Собственный метод состоит в том, чтобы пересчитывать всегда
при любых изменениях
changes.)
конец если
конец для
если
тогда
иначе
Поменять местами
и
.
Обновить "орто" величины и связанные с ними
по мере необходимосит.
конец если
конец пока
На выход: LLL уменьшенный базис
Свойства LLL-уменьшенного базиса[править]
Пусть
является
-LLL-уменьшенным базисом в решётке
.Из определения LLL-уменьшенного базиса мы можем получить несколько других полезных свойств о{\ displaystyle \ mathbf {B}}
.
- Первый вектор в базе не может быть намного больше самого короткого ненулевого вектора :{\ displaystyle || \ mathbf {b} _ {1} || \ leq (2 / ({\ sqrt {4 \ delta -1}})) ^ {n-1} \ cdot \ lambda _ {1} ( {\ mathcal {L}})}:
. В частности, для
, это даёт
.[6]
- Первый вектор в базисе также ограничен определителем решётки:
. In particular, for
, в частности для
.
- Произведение норм векторов в базисе не может быть намного больше, чем определитель решетки: пусть
, тогда
.
Ниже приведён пример из W. Bosma.[7]
На вход:
Пусть дан базис решётки
,с заданными столбцами

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

Реализовать алгоритм шагов снова.
.
.
- Для
ВЫПОЛНИТЬ подпрограмму сокращения RED(2,1):
and
- Положить
- Если
, то
- Заменить
и
ВЫХОД: 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 применятеся в
- ↑ 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
- ↑ Galbraith, Steven chapter 17 // Mathematics of Public Key Cryptography. — 2012.
- ↑ 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
- ↑ 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
- ↑ Introduction to Mathematical Cryptography Errata. Brown University Mathematics Dept.. Проверено 5 мая 2015.
- ↑ Lattices in Computer Science: LLL Algorithm. New York University. Проверено 1 февраля 2019.
- ↑ Bosma, Wieb 4. LLL. Lecture notes. Проверено 28 февраля 2010.
- ↑ Shahabuddin, Shahriar et al., "A Customized Lattice Reduction Multiprocessor for MIMO Detection", in Arxiv preprint, January 2015.
- ↑ 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.