Задача о кратчайшем векторе: различия между версиями
Irina (обсуждение | вклад) |
KVN (обсуждение | вклад) |
||
(не показано 12 промежуточных версий 1 участника) | |||
Строка 3: | Строка 3: | ||
== Постановка задачи == | == Постановка задачи == | ||
''Точечная решетка'' представляет собой множество всех целочисленных линейных комбинаций <math>\mathcal{L} (\mathbf{b}_1, ..., \mathbf{b}_n) = \Bigg\{ \sum_{i = 1}^n x_i \mathbf{b}_i : x_1, ..., x_n \in \mathbb{Z} \Bigg\}</math> из n линейно независимых векторов <math>\mathbf{b}_1, ..., \mathbf{b}_n \in \mathbb{R}^m</math> в m-мерном евклидовом пространстве. Для удобства вычислений векторы решетки <math>\mathbf{b}_1, ..., \mathbf{b}_n</math> часто предполагаются целыми (или рациональными), так что решетка может быть представлена целочисленной матрицей <math>\mathbf{B} = [\mathbf{b}_1, ..., \mathbf{b}_n] \in \mathbb{ | ''Точечная решетка'' представляет собой множество всех целочисленных линейных комбинаций <math>\mathcal{L} (\mathbf{b}_1, ..., \mathbf{b}_n) = \Bigg\{ \sum_{i = 1}^n x_i \mathbf{b}_i : x_1, ..., x_n \in \mathbb{Z} \Bigg\}</math> из n линейно независимых векторов <math>\mathbf{b}_1, ..., \mathbf{b}_n \in \mathbb{R}^m</math> в m-мерном евклидовом пространстве. Для удобства вычислений векторы решетки <math>\mathbf{b}_1, ..., \mathbf{b}_n</math> часто предполагаются целыми (или рациональными), так что решетка может быть представлена целочисленной матрицей <math>\mathbf{B} = [\mathbf{b}_1, ..., \mathbf{b}_n] \in \mathbb{Z}^{m \times n}</math> (называемой ''базисом'') с порождающими векторами в качестве столбцов. Используя матричную нотацию, точки решетки в <math>\mathcal{L} (\mathbf{B})</math> удобно представить в виде <math>\mathbf{Bx}</math>, где <math>\mathbf{x}</math> – целочисленный вектор. Целые числа ''m'' и ''n'' называются ''размерностью'' и ''рангом'' решетки, соответственно. Заметим, что любая решетка допускает несколько базисов, но все они имеют одинаковые ранг и размерность. | ||
Основными вычислительными задачами на решетках являются ''задача о кратчайшем векторе'' (Shortest Vector Problem, SVP), в которой требуется найти кратчайший ненулевой вектор в данной решетке, и ''задача о ближайшем векторе'' (Closest Vector Problem, CVP), в которой требуется найти точку решетки, ближайшую к заданной цели. Обе задачи могут быть определены относительно любой нормы, но евклидова норма <math>\ | Основными вычислительными задачами на решетках являются ''задача о кратчайшем векторе'' (Shortest Vector Problem, SVP), в которой требуется найти кратчайший ненулевой вектор в данной решетке, и ''задача о ближайшем векторе'' (Closest Vector Problem, CVP), в которой требуется найти точку решетки, ближайшую к заданной цели. Обе задачи могут быть определены относительно любой нормы, но евклидова норма <math>\lVert \mathbf{v} \rVert = \sqrt {\sum_i v^2_i}</math> является наиболее распространенной. Также в приложениях вычислительных наук часто встречаются такие нормы, как норма <math>\ell_1: \lVert \mathbf{v} \rVert _1 = \sum_i |v_i| </math>, и норма <math>max: \lVert \mathbf{v} \rVert _\infty = max_i |v_i|</math>. Далее будет рассматриваться евклидова норма. | ||
Поскольку эффективные алгоритмы для точного решения SVP и CVP в произвольно высокой размерности неизвестны, эти задачи обычно определяются в их аппроксимационной версии, где коэффициент аппроксимации <math>\gamma \ge 1</math> может быть функцией размерности или ранга решетки. | Поскольку эффективные алгоритмы для точного решения задач SVP и CVP в произвольно высокой размерности неизвестны, эти задачи обычно определяются в их аппроксимационной версии, где коэффициент аппроксимации <math>\gamma \ge 1</math> может быть функцией размерности или ранга решетки. | ||
'''Определение 1 (Задача о кратчайшем векторе, <math>SVP_\gamma</math>)'''. Пусть дана решетка <math>\mathcal{L} (\mathbf{B})</math>. Требуется найти ненулевой вектор решетки <math>\mathbf{Bx}</math> (где <math>\mathbf{x} \in \mathbb{Z}^n \backslash \{ \mathbf{0} \}</math>), такой, что <math>\ | '''Определение 1 (Задача о кратчайшем векторе, <math>SVP_\gamma</math>)'''. Пусть дана решетка <math>\mathcal{L} (\mathbf{B})</math>. Требуется найти ненулевой вектор решетки <math>\mathbf{Bx}</math> (где <math>\mathbf{x} \in \mathbb{Z}^n \backslash \{ \mathbf{0} \}</math>), такой, что <math>\lVert \mathbf{Bx} \rVert \le \gamma \cdot \lVert \mathbf{By} \rVert </math> для любого <math>\mathbf{y} \in \mathbb{Z}^n \backslash \{ \mathbf{0} \}</math>. | ||
'''Определение 2 (Задача о ближайшем векторе, <math>CVP_\gamma</math>)'''. Пусть даны решетка <math>\mathcal{L} (\mathbf{B})</math> и целевая точка <math>\mathbf{t}</math>. Требуется найти вектор решетки <math>\mathbf{Bx}</math> (где <math>\mathbf{x} \in \mathbb{Z}^n</math>), такой, что <math>\ | '''Определение 2 (Задача о ближайшем векторе, <math>CVP_\gamma</math>)'''. Пусть даны решетка <math>\mathcal{L} (\mathbf{B})</math> и целевая точка <math>\mathbf{t}</math>. Требуется найти вектор решетки <math>\mathbf{Bx}</math> (где <math>\mathbf{x} \in \mathbb{Z}^n</math>), такой, что <math>\lVert \mathbf{Bx - t} \rVert \le \gamma \cdot \lVert \mathbf{By - t} \rVert</math> для любого <math>\mathbf{y} \in \mathbb{Z}^n</math>. | ||
Строка 21: | Строка 21: | ||
== Основные результаты == | == Основные результаты == | ||
Задача поиска эффективного (за полиномиальное время) решения <math>SVP_\gamma</math> для решеток произвольной размерности была впервые решена при помощи знаменитого ''алгоритма редукции решеток'' Ленстры, Ленстры и Ловаса [11], получившего известность как алгоритм LLL. | |||
Теорема 1. Существует алгоритм решения задачи <math>SVP_\gamma</math> за полиномиальное время для | '''Теорема 1. Существует алгоритм решения задачи <math>SVP_\gamma</math> за полиномиальное время для <math>\gamma = (2 / \sqrt{3})^n</math>, где ''n'' – ранг входной решетки.''' | ||
Алгоритм LLL не ограничивается простым нахождением относительно короткого вектора решетки: он вычисляет так называемый редуцированный базис для входной решетки, т. е. полный базис, состоящий из относительно более коротких векторов решетки. Вскоре после разработки алгоритма LLL Бабай [2] показал, что редуцированные базисы могут быть использованы для эффективного решения | Алгоритм LLL не ограничивается простым нахождением относительно короткого вектора решетки: он вычисляет так называемый ''редуцированный базис'' для входной решетки, т. е. полный базис, состоящий из относительно более коротких векторов решетки. Вскоре после разработки алгоритма LLL Бабай [2] показал, что редуцированные базисы могут быть использованы для эффективного решения задачи <math>CVP_\gamma</math> также в пределах аналогичных коэффициентов аппроксимации. | ||
Следствие 1. Существует алгоритм решения задачи <math>CVP_\gamma</math> за полиномиальное время для | '''Следствие 1. Существует алгоритм решения задачи <math>CVP_\gamma</math> за полиномиальное время для <math>\gamma = O(2 / \sqrt{3})^n</math>, где ''n'' – ранг входной решетки.''' | ||
Дополнительную информацию см. в оригинальных статьях [2, 11] и [12, гл. 2]. Вводные презентации алгоритма LLL также можно найти во многих других текстах, например, [5, глава 16] и [15, глава 27]. Интересно отметить, что CVP по | Дополнительную информацию см. в оригинальных статьях [2, 11] и [12, гл. 2]. Вводные презентации алгоритма LLL также можно найти во многих других текстах, например, [5, глава 16] и [15, глава 27]. Интересно отметить, что CVP по меньшей мере так же сложен, как SVP (см. [12 , глава 2]), в том смысле, что любой алгоритм, решающий задачу <math>CVP_\gamma</math>, может быть эффективно адаптирован для решения задачи <math>SVP_\gamma</math> с тем же коэффициентом аппроксимации. | ||
Известно, что и <math>SVP_\gamma</math>, и <math>CVP_\gamma</math> являются NP-трудными | Известно, что и <math>SVP_\gamma</math>, и <math>CVP_\gamma</math> являются NP-трудными в их точных <math>(\gamma = 1)</math> или даже приближенных версиях для малых значений <math>\gamma</math> – например, при постоянной <math>\gamma</math>, не зависящей от размерности. (Самые актуальные результаты см. в [13, гл. 3 и 4] и [4,10]). Поэтому, скорее всего, не существует эффективного алгоритма для точного решения этих задач в произвольной размерности. Для любой фиксированной размерности ''n'' обе задачи, и SVP, и CVP, могут быть точно решены за полиномиальное время с помощью алгоритма Каннана [9]. Однако время работы зависит от размерности решетки по формуле <math>n^{O(n)}</math>. Используя рандомизацию, можно вероятностно решить точную задачу SVP с затратами <math>2^{O(n)}</math> времени и памяти при помощи алгоритма на основе ''решета'', предложенного Айтаем, Кумаром и Сивакумаром [1]. | ||
Что касается приближенных решений, то алгоритм редукции решетки LLL был улучшен как с точки зрения времени работы, так и с точки зрения гарантии аппроксимации (см. работу [ ] и ссылки в ней). В настоящее время лучший (рандомизированный) алгоритм | Что касается приближенных решений, то алгоритм редукции решетки LLL был улучшен как с точки зрения времени работы, так и с точки зрения гарантии аппроксимации (см. работу [14] и ссылки в ней). В настоящее время лучший (рандомизированный) аппроксимационный алгоритм с полиномиальным временем выполнения достигает коэффициента аппроксимации <math>\gamma = 2^{O(n \; log \; log \; n / log \; n)}</math>. | ||
== Применение == | == Применение == | ||
Строка 45: | Строка 45: | ||
Первыми мотивирующими приложениями редукции базиса решетки были решение целочисленных программ с фиксированным числом переменных и факторизация многочленов с рациональными коэффициентами (см. [11], [8] и [5, гл. 16]). Другие классические приложения – решение случайных экземпляров задач о суммировании подмножеств с низкой плотностью, вскрытие (усеченных) линейных конгруэнтных псевдослучайных генераторов, одновременная диофантова аппроксимация и опровержение гипотезы Мертенса (см. [ ] и [5, гл. 17]). | Первыми мотивирующими приложениями редукции базиса решетки были решение целочисленных программ с фиксированным числом переменных и факторизация многочленов с рациональными коэффициентами (см. [11], [8] и [5, гл. 16]). Другие классические приложения – решение случайных экземпляров задач о суммировании подмножеств с низкой плотностью, вскрытие (усеченных) линейных конгруэнтных псевдослучайных генераторов, одновременная диофантова аппроксимация и опровержение гипотезы Мертенса (см. [8] и [5, гл. 17]). | ||
В последнее время редукция базиса решетки широко использовалась для решения многих задач криптоанализа и теории кодирования, включая взлом нескольких вариантов криптосистемы RSA и алгоритма цифровой подписи DSA, поиск малых решений модулярных уравнений и | В последнее время редукция базиса решетки широко использовалась для решения многих задач криптоанализа и теории кодирования, включая взлом нескольких вариантов криптосистемы RSA и алгоритма цифровой подписи DSA, поиск малых решений модулярных уравнений и списочное декодирование китайской теоремы об остатках (Chinese Reminder Theorem, CRT). Обзор недавних вариантов применения, в основном в области криптоанализа, можно найти в работах [7, 13]. | ||
Последний класс приложений задач с решетками – это разработка криптографических функций (например, устойчивых к столкновениям хэш-функций, схем шифрования с открытым ключом и т.д.), | Последний класс приложений задач с решетками – это разработка криптографических функций (например, устойчивых к столкновениям хэш-функций, схем шифрования с открытым ключом и т.д.), основанная на очевидной неразрешимости задачи <math>SVP_\gamma</math> в пределах малых коэффициентов аппроксимации. В [12, глава 8] и [13] можно найти обзор таких приложений и указатели на соответствующую литературу. Отличительной особенностью многих таких криптографических функций, основанных на решетках, является доказанная сложность их взлома ''в среднем'', базирующаяся на предположении о неразрешимости лежащей в их основе задачи на решетки ''в наихудшем случае''. | ||
== Открытые вопросы == | == Открытые вопросы == | ||
Главной нерешенной задачей в вычислительном исследовании решеток является определение сложности приближенных алгоритмов <math>SVP_\gamma</math> и <math>CVP_\gamma</math> для коэффициентов аппроксимации <math>\gamma = n^c</math>, полиномиальных относительно ранга решетки. А именно: | |||
• Существуют ли алгоритмы с полиномиальным временем выполнения, которые решают задачу <math>SVP_\gamma</math> или <math>CVP_\gamma</math> для полиномиальных коэффициентов | • Существуют ли алгоритмы с полиномиальным временем выполнения, которые решают задачу <math>SVP_\gamma</math> или <math>CVP_\gamma</math> для полиномиальных коэффициентов <math>\gamma = n^c</math>? (Нахождение таких алгоритмов даже для очень большой экспоненты ''c'' стало бы серьезным прорывом в вычислительных науках). | ||
• Существует ли | • Существует ли <math>\epsilon > 0</math>, такое, что аппроксимация <math>SVP_\gamma</math> или <math>CVP_\gamma</math> в пределах <math>\gamma = n^{\epsilon}</math> является NP-трудной? (Самые сильные известные сведения о неаппроксимируемости [4] относятся к коэффициентам вида <math>n^{O(1 / log \; log \; n)}</math>, которые растут быстрее любой полилогарифмической функции, но медленнее любой полиномиальной). | ||
Существует теоретическое | Существует теоретическое свидетельство того, что для больших полиномиальных коэффициентов <math>\gamma = n^c</math> задачи <math>SVP_\gamma</math> и <math>CVP_\gamma</math> не являются NP-трудными. Точнее говоря, обе задачи принадлежат к классу сложности coAM для коэффициента аппроксимации <math>\gamma = O(\sqrt{n/log \; n})</math> (см. [12, гл. 9]). Таким образом, эти задачи не могут быть NP-трудными в пределах таких коэффициентов, если только не нарушается полиномиальная иерархия классов сложности. | ||
== Ссылка на код == | == Ссылка на код == | ||
Строка 119: | Строка 119: | ||
15. Vazirani, V.V.: Approximation Algorithms. Springer (2001) | 15. Vazirani, V.V.: Approximation Algorithms. Springer (2001) | ||
[[Категория: Совместное определение связанных терминов]] |
Текущая версия от 11:49, 7 декабря 2024
Ключевые слова и синонимы
Редукция базиса решетки; алгоритм LLL; задача о ближайшем векторе; задача о минимальном расстоянии
Постановка задачи
Точечная решетка представляет собой множество всех целочисленных линейных комбинаций [math]\displaystyle{ \mathcal{L} (\mathbf{b}_1, ..., \mathbf{b}_n) = \Bigg\{ \sum_{i = 1}^n x_i \mathbf{b}_i : x_1, ..., x_n \in \mathbb{Z} \Bigg\} }[/math] из n линейно независимых векторов [math]\displaystyle{ \mathbf{b}_1, ..., \mathbf{b}_n \in \mathbb{R}^m }[/math] в m-мерном евклидовом пространстве. Для удобства вычислений векторы решетки [math]\displaystyle{ \mathbf{b}_1, ..., \mathbf{b}_n }[/math] часто предполагаются целыми (или рациональными), так что решетка может быть представлена целочисленной матрицей [math]\displaystyle{ \mathbf{B} = [\mathbf{b}_1, ..., \mathbf{b}_n] \in \mathbb{Z}^{m \times n} }[/math] (называемой базисом) с порождающими векторами в качестве столбцов. Используя матричную нотацию, точки решетки в [math]\displaystyle{ \mathcal{L} (\mathbf{B}) }[/math] удобно представить в виде [math]\displaystyle{ \mathbf{Bx} }[/math], где [math]\displaystyle{ \mathbf{x} }[/math] – целочисленный вектор. Целые числа m и n называются размерностью и рангом решетки, соответственно. Заметим, что любая решетка допускает несколько базисов, но все они имеют одинаковые ранг и размерность.
Основными вычислительными задачами на решетках являются задача о кратчайшем векторе (Shortest Vector Problem, SVP), в которой требуется найти кратчайший ненулевой вектор в данной решетке, и задача о ближайшем векторе (Closest Vector Problem, CVP), в которой требуется найти точку решетки, ближайшую к заданной цели. Обе задачи могут быть определены относительно любой нормы, но евклидова норма [math]\displaystyle{ \lVert \mathbf{v} \rVert = \sqrt {\sum_i v^2_i} }[/math] является наиболее распространенной. Также в приложениях вычислительных наук часто встречаются такие нормы, как норма [math]\displaystyle{ \ell_1: \lVert \mathbf{v} \rVert _1 = \sum_i |v_i| }[/math], и норма [math]\displaystyle{ max: \lVert \mathbf{v} \rVert _\infty = max_i |v_i| }[/math]. Далее будет рассматриваться евклидова норма.
Поскольку эффективные алгоритмы для точного решения задач SVP и CVP в произвольно высокой размерности неизвестны, эти задачи обычно определяются в их аппроксимационной версии, где коэффициент аппроксимации [math]\displaystyle{ \gamma \ge 1 }[/math] может быть функцией размерности или ранга решетки.
Определение 1 (Задача о кратчайшем векторе, [math]\displaystyle{ SVP_\gamma }[/math]). Пусть дана решетка [math]\displaystyle{ \mathcal{L} (\mathbf{B}) }[/math]. Требуется найти ненулевой вектор решетки [math]\displaystyle{ \mathbf{Bx} }[/math] (где [math]\displaystyle{ \mathbf{x} \in \mathbb{Z}^n \backslash \{ \mathbf{0} \} }[/math]), такой, что [math]\displaystyle{ \lVert \mathbf{Bx} \rVert \le \gamma \cdot \lVert \mathbf{By} \rVert }[/math] для любого [math]\displaystyle{ \mathbf{y} \in \mathbb{Z}^n \backslash \{ \mathbf{0} \} }[/math].
Определение 2 (Задача о ближайшем векторе, [math]\displaystyle{ CVP_\gamma }[/math]). Пусть даны решетка [math]\displaystyle{ \mathcal{L} (\mathbf{B}) }[/math] и целевая точка [math]\displaystyle{ \mathbf{t} }[/math]. Требуется найти вектор решетки [math]\displaystyle{ \mathbf{Bx} }[/math] (где [math]\displaystyle{ \mathbf{x} \in \mathbb{Z}^n }[/math]), такой, что [math]\displaystyle{ \lVert \mathbf{Bx - t} \rVert \le \gamma \cdot \lVert \mathbf{By - t} \rVert }[/math] для любого [math]\displaystyle{ \mathbf{y} \in \mathbb{Z}^n }[/math].
Решетки веками исследовались математиками на эквивалентном языке квадратичных форм; они являются основным объектом изучения в геометрии чисел – направлении, предложенном Минковским в качестве связующего звена между геометрией и теорией чисел. Математическое введение в решетки см. в работе [3]. В [6, 12] дается введение в решетки с акцентом на вычислительные и алгоритмические вопросы.
Основные результаты
Задача поиска эффективного (за полиномиальное время) решения [math]\displaystyle{ SVP_\gamma }[/math] для решеток произвольной размерности была впервые решена при помощи знаменитого алгоритма редукции решеток Ленстры, Ленстры и Ловаса [11], получившего известность как алгоритм LLL.
Теорема 1. Существует алгоритм решения задачи [math]\displaystyle{ SVP_\gamma }[/math] за полиномиальное время для [math]\displaystyle{ \gamma = (2 / \sqrt{3})^n }[/math], где n – ранг входной решетки.
Алгоритм LLL не ограничивается простым нахождением относительно короткого вектора решетки: он вычисляет так называемый редуцированный базис для входной решетки, т. е. полный базис, состоящий из относительно более коротких векторов решетки. Вскоре после разработки алгоритма LLL Бабай [2] показал, что редуцированные базисы могут быть использованы для эффективного решения задачи [math]\displaystyle{ CVP_\gamma }[/math] также в пределах аналогичных коэффициентов аппроксимации.
Следствие 1. Существует алгоритм решения задачи [math]\displaystyle{ CVP_\gamma }[/math] за полиномиальное время для [math]\displaystyle{ \gamma = O(2 / \sqrt{3})^n }[/math], где n – ранг входной решетки.
Дополнительную информацию см. в оригинальных статьях [2, 11] и [12, гл. 2]. Вводные презентации алгоритма LLL также можно найти во многих других текстах, например, [5, глава 16] и [15, глава 27]. Интересно отметить, что CVP по меньшей мере так же сложен, как SVP (см. [12 , глава 2]), в том смысле, что любой алгоритм, решающий задачу [math]\displaystyle{ CVP_\gamma }[/math], может быть эффективно адаптирован для решения задачи [math]\displaystyle{ SVP_\gamma }[/math] с тем же коэффициентом аппроксимации.
Известно, что и [math]\displaystyle{ SVP_\gamma }[/math], и [math]\displaystyle{ CVP_\gamma }[/math] являются NP-трудными в их точных [math]\displaystyle{ (\gamma = 1) }[/math] или даже приближенных версиях для малых значений [math]\displaystyle{ \gamma }[/math] – например, при постоянной [math]\displaystyle{ \gamma }[/math], не зависящей от размерности. (Самые актуальные результаты см. в [13, гл. 3 и 4] и [4,10]). Поэтому, скорее всего, не существует эффективного алгоритма для точного решения этих задач в произвольной размерности. Для любой фиксированной размерности n обе задачи, и SVP, и CVP, могут быть точно решены за полиномиальное время с помощью алгоритма Каннана [9]. Однако время работы зависит от размерности решетки по формуле [math]\displaystyle{ n^{O(n)} }[/math]. Используя рандомизацию, можно вероятностно решить точную задачу SVP с затратами [math]\displaystyle{ 2^{O(n)} }[/math] времени и памяти при помощи алгоритма на основе решета, предложенного Айтаем, Кумаром и Сивакумаром [1].
Что касается приближенных решений, то алгоритм редукции решетки LLL был улучшен как с точки зрения времени работы, так и с точки зрения гарантии аппроксимации (см. работу [14] и ссылки в ней). В настоящее время лучший (рандомизированный) аппроксимационный алгоритм с полиномиальным временем выполнения достигает коэффициента аппроксимации [math]\displaystyle{ \gamma = 2^{O(n \; log \; log \; n / log \; n)} }[/math].
Применение
Несмотря на большой (экспоненциальный от n) коэффициент аппроксимации, алгоритм LLL нашел множество применений и позволил решить многие алгоритмические задачи вычислительных наук. Количество и разнообразие приложений слишком велики, чтобы составить их полный список. Ниже приведены некоторые из наиболее показательных приложений в различных областях компьютерных наук.
Первыми мотивирующими приложениями редукции базиса решетки были решение целочисленных программ с фиксированным числом переменных и факторизация многочленов с рациональными коэффициентами (см. [11], [8] и [5, гл. 16]). Другие классические приложения – решение случайных экземпляров задач о суммировании подмножеств с низкой плотностью, вскрытие (усеченных) линейных конгруэнтных псевдослучайных генераторов, одновременная диофантова аппроксимация и опровержение гипотезы Мертенса (см. [8] и [5, гл. 17]).
В последнее время редукция базиса решетки широко использовалась для решения многих задач криптоанализа и теории кодирования, включая взлом нескольких вариантов криптосистемы RSA и алгоритма цифровой подписи DSA, поиск малых решений модулярных уравнений и списочное декодирование китайской теоремы об остатках (Chinese Reminder Theorem, CRT). Обзор недавних вариантов применения, в основном в области криптоанализа, можно найти в работах [7, 13].
Последний класс приложений задач с решетками – это разработка криптографических функций (например, устойчивых к столкновениям хэш-функций, схем шифрования с открытым ключом и т.д.), основанная на очевидной неразрешимости задачи [math]\displaystyle{ SVP_\gamma }[/math] в пределах малых коэффициентов аппроксимации. В [12, глава 8] и [13] можно найти обзор таких приложений и указатели на соответствующую литературу. Отличительной особенностью многих таких криптографических функций, основанных на решетках, является доказанная сложность их взлома в среднем, базирующаяся на предположении о неразрешимости лежащей в их основе задачи на решетки в наихудшем случае.
Открытые вопросы
Главной нерешенной задачей в вычислительном исследовании решеток является определение сложности приближенных алгоритмов [math]\displaystyle{ SVP_\gamma }[/math] и [math]\displaystyle{ CVP_\gamma }[/math] для коэффициентов аппроксимации [math]\displaystyle{ \gamma = n^c }[/math], полиномиальных относительно ранга решетки. А именно:
• Существуют ли алгоритмы с полиномиальным временем выполнения, которые решают задачу [math]\displaystyle{ SVP_\gamma }[/math] или [math]\displaystyle{ CVP_\gamma }[/math] для полиномиальных коэффициентов [math]\displaystyle{ \gamma = n^c }[/math]? (Нахождение таких алгоритмов даже для очень большой экспоненты c стало бы серьезным прорывом в вычислительных науках).
• Существует ли [math]\displaystyle{ \epsilon \gt 0 }[/math], такое, что аппроксимация [math]\displaystyle{ SVP_\gamma }[/math] или [math]\displaystyle{ CVP_\gamma }[/math] в пределах [math]\displaystyle{ \gamma = n^{\epsilon} }[/math] является NP-трудной? (Самые сильные известные сведения о неаппроксимируемости [4] относятся к коэффициентам вида [math]\displaystyle{ n^{O(1 / log \; log \; n)} }[/math], которые растут быстрее любой полилогарифмической функции, но медленнее любой полиномиальной).
Существует теоретическое свидетельство того, что для больших полиномиальных коэффициентов [math]\displaystyle{ \gamma = n^c }[/math] задачи [math]\displaystyle{ SVP_\gamma }[/math] и [math]\displaystyle{ CVP_\gamma }[/math] не являются NP-трудными. Точнее говоря, обе задачи принадлежат к классу сложности coAM для коэффициента аппроксимации [math]\displaystyle{ \gamma = O(\sqrt{n/log \; n}) }[/math] (см. [12, гл. 9]). Таким образом, эти задачи не могут быть NP-трудными в пределах таких коэффициентов, если только не нарушается полиномиальная иерархия классов сложности.
Ссылка на код
Алгоритм редукции решетки LLL реализован в большинстве библиотек и пакетов для вычислительной алгебры, например:
• GAP (http://www.gap-system.org)
• LiDIA (http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/)
• Magma (http://magma.maths.usyd.edu.au/magma/)
• Maple (http://www.maplesoft.com/)
• Mathematica (http://www.wolfram.com/products/mathematica/index.html)
• NTL (http://shoup.net/ntl/).
NTL также включает реализацию блочного алгоритма редукции Коркина-Золотарева, которая широко используется в криптоанализе.
См. также
- Криптографическая стойкость обучения
- Метод рюкзака
- Изучение высоких коэффициентов Фурье булевых функций
- Квантовый алгоритм для решения задачи дискретного логарифмирования
- Квантовый алгоритм факторизации
- Задача об упаковке шаров
Литература
1. Ajtai, M., Kumar, R., Sivakumar, D.: A sieve algorithm for the shortest lattice vector problem. In: Proceedings of the thirty- third annual ACM symposium on theory of computing – STOC 2001, Heraklion, Crete, Greece, July 2001, pp 266-275. ACM, New York (2001)
2. Babai, L.: On Lovasz' lattice reduction and the nearest lattice point problem. Combinatorica 6(1), 1-13 (1986). Preliminary version in STACS 1985
3. Cassels, J.W.S.: An introduction to the geometry of numbers. Springer, New York (1971)
4. Dinur, I., Kindler, G., Raz, R., Safra, S.: Approximating CVP to within almost-polynomial factors is NP-hard. Combinatorica 23(2), 205-243 (2003). Preliminary version in FOCS 1998
5. von zur Gathen, J., Gerhard, J.: Modern Comptuer Algebra, 2nd edn. Cambridge (2003)
6. Grotschel, M., Lovasz, L., Schrijver, A.: Geometric algorithms and combinatorial optimization. Algorithms and Combinatorics, vol. 2, 2nd edn. Springer (1993)
7. Joux, A., Stern, J.: Lattice reduction: A toolbox for the cryptanalyst.J.Cryptolo. 11(3), 161-185(1998)
8. Kannan, R.: Annual reviews of computer science, vol. 2, chap. "Algorithmic geometry of numbers", pp. 231-267. Annual Review Inc., Palo Alto, California (1987)
9. Kannan, R.: Minkowski's convex body theorem and integer programming. Math. Oper. Res. 12(3), 415^40 (1987)
10. Khot, S.: Hardness of Approximating the Shortest Vector Problem in Lattices. J. ACM 52(5), 789-808 (2005). Preliminary version in FOCS 2004
11. Lenstra, A.K., Lenstra, Jr., H.W., Lovasz, L.: Factoring polynomials with rational coefficients. Math Ann. 261, 513-534 (1982)
12. Micciancio, D., Goldwasser, S.: Complexity of Lattice Problems: A Cryptographic Perspective. The Kluwer International Series in Engineering and Computer Science, vol. 671. Kluwer Academic Publishers, Boston, Massachusetts (2002)
13. Nguyen, P., Stern, J.: The two faces of lattices in cryptology. In:J.Silverman (ed.) Cryptography and lattices conference – CaLC 2001, Providence, RI, USA, March 2001. Lecture Notes in Computer Science, vol. 2146, pp. 146-180. Springer, Berlin (2001)
14. Schnorr, C.P.: Fast LLL-type lattice reduction. Inform. Comput. 204(1),1-25(2006)
15. Vazirani, V.V.: Approximation Algorithms. Springer (2001)