Алгоритм базисного преобразования криптографической решётки (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. Проверено 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.