Основной предпосылкой для создания ЛЛЛ-алгоритма послужило то, что
процесс Грама ― Шмидта
работает только с векторами, компоненты которых являются
вещественными числами
. Для
векторного пространства
процесс Грама ― Шмидта позволяет преобразовать произвольный
базис
в
ортонормированный
(«идеал», к которому стремится ЛЛЛ-алгоритм). Но процесс Грама ― Шмидта не гарантирует того, что на выходе каждый из векторов будет
целочисленной
линейной комбинацией
исходного базиса. Таким образом, полученный в результате набор векторов может и не являться базисом исходной решётки. Это привело к необходимости создания специального алгоритма для работы с решётками
.
Редукция базиса заключается в приведении
к особому виду, удовлетворяющему некоторым свойствам. Редуцированный базис должен быть, по возможности, наиболее коротким среди всех базисов решётки и близким к ортогональному (что выражается в том, что итоговые коэффициенты Грама — Шмидта должны быть не больше
)
.
Пусть в результате преобразования базиса
с помощью
процесса Грама ― Шмидта
получен базис
, с коэффициентами Грама — Шмидта, определяемыми следующим образом:
, для всех
таких, что
.
Тогда (упорядоченный) базис
называется
-ЛЛЛ-редуцированным базисом (где параметр
находится в промежутке
), если он удовлетворяет следующим свойствам
:
Для всех
таких, что
. (условие уменьшения размера)
Изначально Ленстра, Ленстра и Ловас в своей статье продемонстрировали работу алгоритма для параметра
. Несмотря на то что алгоритм остаётся корректным и для
, его работа за
полиномиальное время
гарантируется только для
в промежутке
.
Свойства редуцированного базиса
Пусть
— сокращённый алгоритмом ЛЛЛ с параметром
базис на
решётке
. Из определения такого базиса можно получить несколько свойств
. Пусть
—
норма
кратчайшего вектора решётки, тогда:
Произведение норм векторов не может быть сильно больше определителя решётки:
. В частности,
для
.
Базис, преобразованный методом ЛЛЛ, почти самый короткий из всех возможных, в том смысле, что существуют абсолютные границы
такие, что первый базисный вектор не более чем в
раз длиннее самого короткого вектора решётки, аналогично, второй вектор базиса не более чем в
раз превосходит второй кратчайший вектор решётки и так далее (что прямо следует из свойства 1)
.
Алгоритм
Входные данные
:
базис решётки
(состоит из линейно независимых векторов),
параметр
c
, чаще всего
(выбор параметра зависит от конкретной задачи).
Последовательность действий
:
Сначала создается копия исходного базиса, которая ортогонализуется для того, чтобы по ходу алгоритма текущий базис сравнивался с полученной копией на предмет ортогональности (
).
Если какой-либо коэффициент Грама — Шмидта
(с
) по модулю больше
, то проекция одного из векторов
текущего базиса на вектор
ортогонализованного базиса с другим номером составляет больше половины
. Это говорит о том, что необходимо вычесть из вектора
вектор
, домноженный на округленный
(округление нужно, так как вектор решётки остается вектором этой же решётки только при умножении на целое число, что следует из её определения). Тогда
станет меньше
, так как теперь проекция
на
будет меньше половины
. Таким образом производится проверка соответствию 1-му условию из определения ЛЛЛ-редуцированного базиса.
Пересчитывается
для
.
Для
проверяется 2-е условие, введенное авторами алгоритма как определение ЛЛЛ-редуцированного базиса
. Если условие не выполнено, то индексы проверяемых векторов меняются местами. И условие проверяется снова для того же вектора (уже с новым индексом).
Пересчитываются
для
и
для
Если остался какой-либо
, по модулю превышающий
(уже с другим
), то надо вернуться к пункту 2.
Когда все условия проверены и сделаны изменения, алгоритм завершает работу.
В алгоритме
— округление по правилам математики. Процесс алгоритма, описанный на псевдокоде
:
ortho
(выполнить процесс Грама — Шмидта без нормировки);
определить,всегда подразумевая наиболее актуальные значения присвоитьпока:дляjотдо0:если, то:
;
Обновить значения для ;
конецусловия;
конеццикла;
если, то:иначе:
поменять и местами;
Обновить значения для ; для ;
;
конецусловия;
конеццикла.
Если вектора базиса состоят из целочисленных компонент, алгоритм приближает кратчайший почти
ортогональный базис
за
полиномиальное время
, где
— максимальная длина
по
евклидовой норме
, то есть
. Основной цикл алгоритма ЛЛЛ требует
итераций и работает с числами длины
. Так как на каждой итерации происходит обработка
векторов длины
, в итоге алгоритм требует
арифметических операций. Применение наивных алгоритмов сложения и умножения целых чисел даёт в итоге
битовых операций
.
В случае, когда у решётки задан базис с рациональными компонентами, эти рациональные числа сначала необходимо преобразовать в целые путем умножения базисных векторов на знаменатели их компонент (множество знаменателей ограничено некоторым целым числом
). Но тогда операции будут производиться уже над целыми числами, не превышающими
. В итоге будет максимум
битовых операций
. Для случая, когда решётка задана в
,
сложность алгоритма
остается такой же, но увеличивается количество битовых операций. Так как в компьютерном представлении любое вещественное число заменяется рациональным в силу ограниченности битового представления, полученная оценка верна и для вещественных решёток
.
В то же время для размерностей меньше чем 4 задача редукции базиса более эффективно решается
.
Пример
Пример, приводимый Вибом Босмой
.
Пусть базис решётки
(как подгруппа
), задан столбцами матрицы:
По ходу алгоритма получается следующее:
Процесс ортогонализации Грама-Шмидта
,
и
, поэтому
и
, тогда
и
При
имеем
и
, поэтому переходим к следующему шагу.
При
имеем:
, значит
, теперь
, значит
, теперь
, поэтому
и
меняются местами.
Теперь возвращаемся к шагу 1, при этом промежуточная матрица
имеет вид
Выходные данные: базис, редуцированный методом Ленстры — Ленстры — Ловаса:
Применение
Алгоритм часто применяется в рамках метода
MIMO
(пространственное кодирования сигнала) для декодирования сигналов, полученных несколькими антеннами
, и в
криптосистемах с открытым ключом
:
,
RSA
с конкретными настройками,
NTRUEncrypt
и так далее. Алгоритм может быть использован для нахождения целых решений в разных задачах теории чисел, в частности для поиска корней многочлена в целых числах
.
В процессе атак на криптосистемы с открытым ключом (
NTRU
) алгоритм используется для поиска кратчайшего вектора решётки, так как алгоритм в результате находит целый набор кратчайших векторов
.
В криптоанализе
задача, так же как в случае с NTRU, сводится к поиску кратчайшего вектора базиса решётки, который находится за полиномиальное (от размерности базиса) время
.
Использование арифметики на
числах с плавающей запятой
вместо точного представления рациональных чисел может значительно ускорить работу ЛЛЛ-алгоритма ценой совсем небольших численных ошибок
.
Реализации алгоритма
Программно алгоритм реализован в следующем программном обеспечении:
В
SageMath
как метод
LLL
, реализованный в fpLLL и NTL
.
Примечания
↑
A. K. Lenstra, H. W. Lenstra Jr., L. Lovász.
Factoring polynomials with rational coefficients //
Mathematische Annalen
. — 1982. —
С. 515—534
. —
ISSN
. —
doi
:
.
↑
, 1 The History of the LLL-Algorithm.
↑
Galbraith, Steven.
17. Lattice Reduction
//
(англ.)
. — 2012.
20 сентября 2015 года.
↑
Xinyue, Deng.
(англ.)
// Massachusetts Institute of Technology. —
P. 9—10
.
8 декабря 2019 года.
Чередник И. В.
(рус.)
// 3-е изд. — Дискрет. матем., 2014. —
Т. 26
. —
С. 127—135
.
↑
Regev, Oded.
// New York University.
20 марта 2021 года.
↑
Hoffstein, Jeffrey; Pipher, Jill; Silverman, J.H.
An Introduction to Mathematical Cryptography
(англ.)
. —
(англ.)
(
, 2008. — P. 411. —
ISBN 978-0-387-77993-5
.
Nguyen, Phong Q., Stehlé, Damien.
(англ.)
// ACM Transactions on Algorithms. —
P. 1–48
. —
doi
:
.
Bosma, Wieb.
// Computer Algebra. — 2007.
8 мая 2019 года.
Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi.
A customized lattice reduction multiprocessor for MIMO detection // 2015 IEEE International Symposium on Circuits and Systems (ISCAS). — 2015. —
arXiv
:
. —
doi
:
.
D. Simon.
// LLL+25 Conference. — Caen, France.
6 мая 2021 года.
Abderrahmane, Nitaj.
// International Association for Cryptologic Research. — Caen, France.
21 декабря 2019 года.
Bleichenbacher, Daniel and May, Alexander.
// International Association for Cryptologic Research. — Darmstadt, Germany.
24 июня 2021 года.
Liu, Jiayang, Bi, Jingguo and Xu, Songyan.
// IEEE. — Beijing 100084, China.
17 июня 2021 года.
, 4 Progress on LLL and Lattice Reduction.
The FPLLL development team.
. — 2016.
17 февраля 2020 года.
(неопр.)
.
GAP
. Дата обращения: 10 декабря 2019.
19 декабря 2019 года.
(неопр.)
.
Macaulay2
. Дата обращения: 10 декабря 2019.
10 декабря 2019 года.
(неопр.)
.
Magma
. Дата обращения: 10 декабря 2019.
10 декабря 2019 года.
(неопр.)
.
Maple
. Дата обращения: 10 декабря 2019.
18 сентября 2020 года.
(неопр.)
.
Wolfram Language Documentation
. Дата обращения: 10 декабря 2019.
10 декабря 2019 года.
(неопр.)
.
NTL
. Дата обращения: 10 декабря 2019.
17 августа 2018 года.
(неопр.)
.
PARI/GP
. Дата обращения: 10 декабря 2019.
18 декабря 2019 года.
(неопр.)
.
pymatgen
. Дата обращения: 27 декабря 2019.
18 декабря 2019 года.
(неопр.)
.
sage
. Дата обращения: 18 декабря 2019.
6 мая 2021 года.
Литература
Huguette, Napias.
// J. The. Nombr. Bordeaux. — 1996. —
doi
:
.
Cohen, Henri.
A course in computational algebraic number theory
(англ.)
. —
(англ.)
(
, 2000. — Vol. 138. — (GTM). —
ISBN 3-540-55640-0
.