Алгоритм базисного преобразования криптографической решётки
Алгоритм базисного преобразования криптографической решётки (LLL) — это алгоритм уменьшения решётки за полиномиальное время, изобретенный Арьеном Ленстра, Хендриком Ленстра и Ласлом Ловасом в 1982.[1] Задан базис с n-мерными натуральными координатами для рёшетки L, являющаяся дискретной подгруппой Rn с . Алгоритм LLL рассчитывает LLL-уменьшенный базис решётки за время
где является наибольшей длинной из в соответствии с евклидовой нормой, то есть
Первоначальные приложения должны были предоставить алгоритмы полиномиального времени для факторизации полиномов с рациональными коэффициентами, для нахождения одновременных рациональных приближений к действительным числам и для решения задачи целочисленного линейного программирования в фиксированных измерениях.
LLL reduction[править]
Точное определение LLL-уменьшенного выглядят следующим образом : Учитывая базис
определить его ортогональный базис процесса Грама – Шмидта
и коэффициенты Грамма-Шмидта
- , for any .
Тогда базис есть LLL-уменьшение, если существует параметр принадлежащий интервалу (0.25,1] такой, что имеют место следующий условия:
- (уменьшенный размер) Для . По определению это свойство гарантирует уменьшение длины упорядоченного базиса.
- (Условие Л. Ласло) 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}} .
- Первый вектор в базе не может быть намного больше самого короткого ненулевого вектора :{\ displaystyle || \ mathbf {b} _ {1} || \ leq (2 / ({\ sqrt {4 \ delta -1}})) ^ {n-1} \ cdot \ lambda _ {1} ( {\ mathcal {L}})}: . В частности, для , это даёт.[6]
- Первый вектор в базисе также ограничен определителем решётки: . In particular, for , в частности для .
- Произведение норм векторов в базисе не может быть намного больше, чем определитель решетки: пусть, тогда Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \prod_{i=1}^n ||\mathbf{b}_i || \le 2^{n(n-1)/4} \cdot \det(\mathcal L)} .
Пример[править]
Ниже приведён пример из W. Bosma.[7]
На вход:
Пусть дан базис решётки ,с заданными столбцами
Тогда по алгоритму LLL получаем следующее:
- Для делать:
- Для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle j=1} положить а так же Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{2}^{*}= b_{2}- \mu_{2,1}b_{1}^{*}= \begin{bmatrix}-1\\0\\2\end{bmatrix}- \frac{1}{3}\begin{bmatrix}1\\1\\1\end{bmatrix}=\begin{bmatrix}\frac{-4}{3}\\\frac{-1}{3}\\\frac{5}{3} \end{bmatrix}.}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle B_{2}= \langle b_{2}^{*}, b_{2}^{*} \rangle = \begin{bmatrix}\frac{-4}{3}\\\frac{-1}{3}\\\frac{5}{3}\end{bmatrix} \begin{bmatrix}\frac{-4}{3}\\\frac{-1}{3}\\\frac{5}{3}\end{bmatrix}= \frac{14}{3}.}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mathbf{k}:=2}
- Здесь шаг 4 алгоритма LLL пропускается, поскольку свойство уменьшенного размера выполняется для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{2,1}}
- Пока Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle k \leq 3}
делать
- Уменьшить длину Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{3} }
, не забывая корректировать при этом Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,1}}
и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,2}}
согласно подпрограмме сокращения в шаге 4: для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mid \mu_{3,1}\mid >\frac{1}{2}}
ВЫПОЛНИТЬ подпрограмму сокращения RED(3,1):
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle r = \lfloor 0.5 + \mu_{3,l} \rfloor =5} а также Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{3} = b_{3}- 5b_{1}= \begin{bmatrix}3\\5\\6\end{bmatrix}- \begin{bmatrix}5\\5\\5\end{bmatrix} =\begin{bmatrix}-2\\0\\1\end{bmatrix} }
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,1}= \mu_{3,l} - r\mu_{1,1} = \frac{-1}{3}\left(< \frac{1}{2}\right) }
- Положить Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,1}= \mu_{3,1} - r= \frac{14}{3}-5= \frac{-1}{3}}
Для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mid \mu_{3,2}\mid >\frac{1}{2}} ВЫПОЛНИТЬ подпрограмму сокращения RED(3,2):
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle r = \lfloor 0.5 + \mu_{3,2} \rfloor =1} and Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{3} = b_{3}- b_{2}= \begin{bmatrix}3\\5\\6\end{bmatrix}- \begin{bmatrix}-1\\0\\2\end{bmatrix} =\begin{bmatrix}4\\5\\4\end{bmatrix} }
- Положить Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,2}= \mu_{3,2} - r\mu_{2,2} = \frac{13}{14}-1= \frac{-1}{14}}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,2}= \mu_{3,2} - 1 = \frac{-1}{14}\left(< \frac{1}{2}\right) }
- Если Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle B_{3} < \left(\frac{3}{4}- \mu_{3,2}^2\right)B_{2} }
, то
- Заменить Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{3}} и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{2}}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle k := 2}
- Уменьшить длину Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{3} }
, не забывая корректировать при этом Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,1}}
и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{3,2}}
согласно подпрограмме сокращения в шаге 4: для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mid \mu_{3,1}\mid >\frac{1}{2}}
ВЫПОЛНИТЬ подпрограмму сокращения RED(3,1):
Применить SWAP, продолжить алгоритм с базой решетки, которая задается столбцами
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \begin{bmatrix} 1 & 4& -1\\ 1 & 5 & 0\\ 1 & 4 & 2 \end{bmatrix} }
Реализовать алгоритм шагов снова.
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{1}^{*}= b_{1}= \begin{bmatrix}1\\1\\1\end{bmatrix}, B_{1}= 3}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{2,1}= \frac{\langle b_{2}, b_{1}^{*} \rangle}{B_{1}}= \frac{\begin{bmatrix}4\\5\\4\end{bmatrix} \begin{bmatrix}1\\1\\1\end{bmatrix}}{3} =\frac{13}{3}\left(>\frac{1}{2}\right)}
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{2}^{*}= b_{2}- \mu_{2,1}b_{1}^{*}= \begin{bmatrix}4\\5\\4\end{bmatrix}- \frac{13}{3}\begin{bmatrix}1\\1\\1\end{bmatrix} =\begin{bmatrix}\frac{-1}{3}\\\frac{2}{3}\\\frac{-1}{3}\end{bmatrix}} .
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle B_{2}= \langle b_{2}^{*}, b_{2}^{*} \rangle = \frac{2}{3}} .
- Для Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mid \mu_{2,1}\mid >\frac{1}{2}}
ВЫПОЛНИТЬ подпрограмму сокращения RED(2,1):
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle r = \lfloor 0.5 + \mu_{2,l} \rfloor =4} and Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{2} = b_{2}- 4b_{1}= \begin{bmatrix}4\\5\\4\end{bmatrix}- \begin{bmatrix}4\\4\\4\end{bmatrix}=\begin{bmatrix}0\\1\\0\end{bmatrix} }
- Положить Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mu_{2,1}= \mu_{2,1} - 4\mu_{1,1}= \frac{13}{3}- 4= \frac{1}{3}\left(< \frac{1}{2}\right)}
- Если Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle B_{2} < \left(\frac{3}{4}- \mu_{2,1}^2\right)B_{1} } , то
- Заменить Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{2}} и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle b_{1}}
ВЫХОД: LLL уменьшенный базис
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \begin{bmatrix} 0 & 1& -1\\ 1 & 0 & 0\\ 0 & 1 & 2 \end{bmatrix} }
Использование алгоритма LLL[править]
Алгоритм LLL нашел множество других применений в алгоритмах обнаружения MIMO [8] и криптоанализе схем шифрования с открытым ключом : криптосистемы ранцев , RSA с конкретными настройками, NTRUEncrypt и так далее. Алгоритм может быть использован для поиска целочисленных решений многих задач.[9]
В частности, алгоритм LLL образует ядро одного из алгоритмов целочисленных отношений . Например, если считается, что r = 1.618034 является (слегка округленным) корнем неизвестного квадратного уравнения с целыми коэффициентами, можно применить LLL-сокращение к решетке в Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle R^4} натянутый на Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle [1,0,0,10000r^2], [0,1,0,10000r],} и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle [0,0,1,10000]} . Первый вектор в сокращенном базисе будет представлять собой целочисленную линейную комбинацию этих трех, поэтому обязательно имеет вид Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle [a,b,c,10000(ar^2+br+c)]} ; но такой вектор «короткий», только если a, b, c малы и Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle ar^2+br+c} ещё меньше. Таким образом, первые три записи этого короткого вектора, вероятно, будут коэффициентами целочисленного квадратичного полинома, у которого r является корнем. В этом примере алгоритм LLL находит самый короткий вектор как [1, -1, -1, 0.00025], действительно Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle x^2-x-1} имеет корень, равный золотому сечению , 1.6180339887....
Другие области применения алгоритма LLL[править]
LLL применятеся в
- Arageli как функция
lll_reduction_int - fpLLL как отдельная реализация
- GAP как функция
LLLReducedBasis - Macaulay2 как функция
LLLв пакетеLLLBases - Magma как функции
LLLandLLLGram(используя грамм-матрицу) - Maple как функция
IntegerRelations[LLL] - Mathematicaкак функция
LatticeReduce - Number Theory Library (NTL) как функция
LLL - PARI/GP как функция
qflll - Pymatgen как функция
analysis.get_lll_reduced_lattice - SageMath как метод
LLLdriven by fpLLL and NTL
См. также[править]
Источники[править]
- ↑ Lenstra, A. K.[en]; Lenstra, H. W., Jr.[en]; Lovász, L.[en] Factoring polynomials with rational coefficientsнеопр. // Mathematische Annalen. — 1982. — том 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. — том 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. — том 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. — том 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. — том 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.