Криптосистема Миччанчо
Криптосистема Миччанчо — криптосистема, основанная на схеме шифрования GGH, была предложена в 2001 году профессором Университета Калифорнии в Сан-Диего Даниелем Миччанчо.
Схему шифрования GGH опирается на криптографию на решётках, которая считается перспективной для использования в постквантовых системах (поскольку криптосистемы, использующие факторизацию целых чисел, дискретное логарифмирование, дискретное логарифмирование на эллиптических кривых могут быть эффективно взломаны квантовым компьютером при применении алгоритмом Шора). Криптосистема Миччанчо, по факту, является улучшением схемы шифрования GGH, с уменьшением требований к размеру ключа и шифротекста в [math]\displaystyle{ N }[/math] раз без ухудшения безопасности системы, где [math]\displaystyle{ N }[/math] — размерность решётки. Для типичных криптосистем составляет несколько сотен. В 2004 году Кристоф Людвиг эмпирически показал, что для безопасного использования требуется [math]\displaystyle{ N \ge 782 }[/math], к тому же, создание ключа и его дешифровка занимает непозволительно много времени, а сам размер ключа должен быть больше 1 МБ. По этой причине данная криптосистема не может быть использована на практике[1][2][3][4].
Основные понятия и обозначения
Пусть [math]\displaystyle{ \Beta = \{\mathbf{b}_1, ..., \mathbf{b}_N\} }[/math], где [math]\displaystyle{ \mathbf{b}_i \in \mathbb{R}^M, i = \overline{1, N} }[/math] — набор из [math]\displaystyle{ N }[/math] линейно независимых векторов и компоненты каждого из векторов представляют собой целые числа, а [math]\displaystyle{ B }[/math] — матрица из этих векторов размера [math]\displaystyle{ M \times N }[/math]. Далее, теория строится для [math]\displaystyle{ M = N }[/math]. Решёткой будем называть множество [math]\displaystyle{ \mathcal{L}(\Beta) = \{\Beta x \mid x \in \mathbb{Z}^M\} }[/math][5].
В силу того, что базис [math]\displaystyle{ \Beta }[/math] может быть не уникальным, принято выбирать в качестве базиса эрмитову нормальную форму, которая для каждой отдельно взятой решётки уникальна. Это значит, что матрица, составленная из векторов базиса, есть верхняя треугольная, все диагональные элементы строго положительны, а остальные элементы удовлетворяют [math]\displaystyle{ 0 \le b_{ij} \lt b_{ii} }[/math]. Данный вид матриц обладает следующими полезными свойствами. Во-первых, через ортогонализацию Грама — Шмидта такая матрица приводится к диагональному виду с элементами [math]\displaystyle{ b_{ii} }[/math] на диагонали. Во-вторых, детерминант такой матрицы равен произведению её диагональных элементов, то есть [math]\displaystyle{ \det(\Beta) = \prod_{i=1}^n b_{ii} }[/math][5].
Из последнего также следует важное свойство целочисленных решёток:
Пусть произвольные вектора [math]\displaystyle{ v }[/math] и [math]\displaystyle{ w }[/math] таковы, что [math]\displaystyle{ v_i \equiv w_i\ \mod \det(\Beta) }[/math]. В этом случае [math]\displaystyle{ v \in \mathcal{L}(\Beta) }[/math] тогда и только тогда, когда [math]\displaystyle{ w \in \mathcal{L}(\Beta) }[/math].
Пусть [math]\displaystyle{ \mathcal{P}(\Beta^*) = \{ \sum_{i} x_i \mathbf{b_i^*}\ |\ 0 \le x_i \lt 1 \} }[/math] — прямой параллелепипед, где [math]\displaystyle{ x_i }[/math] — целочисленные координаты, [math]\displaystyle{ \mathbf{b_i^*} }[/math] — ортогонализованные по процессу Грама — Шмидта базисные векторы, [math]\displaystyle{ i = \overline{1, N} }[/math]. Пространство [math]\displaystyle{ \mathbb{R}^N }[/math] может быть замощено такими параллелепипедами. Тогда для любого [math]\displaystyle{ v \in \mathbb{Z}^N }[/math] существует уникальный вектор [math]\displaystyle{ w \in \mathcal{P}(\Beta^*) }[/math]. Такой вектор называется редуцированным для вектора [math]\displaystyle{ v \in \mathbb{Z}^N }[/math] по модулю [math]\displaystyle{ \Beta }[/math]. Он получается нахождением относительной позиции [math]\displaystyle{ v }[/math] в [math]\displaystyle{ z + \mathcal{P}(\Beta^*) }[/math], где [math]\displaystyle{ z \in \mathcal{L}(\Beta) }[/math][5].
Данный вектор может быть найден по следующему алгоритму:
- Найти [math]\displaystyle{ \alpha_i = \frac{\langle v, b_i^*\rangle}{\langle b_i^*, b_i^*\rangle} }[/math]
- Вычислить искомый вектор по формуле [math]\displaystyle{ w = v - \lfloor \alpha_i \rfloor \mathbf{b_i} \in \mathcal{P}(\Beta^*) }[/math][6].
Методология
В криптосистемах на решётках ключами являются базисы. Пусть [math]\displaystyle{ \Beta }[/math] и [math]\displaystyle{ \mathrm{R} }[/math] — публичный и приватный базисы одной и той же решётки [math]\displaystyle{ \mathcal{L} = \mathcal{L}(\Beta) = \mathcal{L}\mathrm(R) }[/math]. Отличие данной криптосистемы от системы шифрования GGH заключается в более оптимальном выборе односторонней функции. Важная особенность функции в криптосистеме Миччанчо — детерминированность. В следующем разделе строится общий класс функций вида GGH.[7]
Класс односторонних функций вида GGH
Для схемы шифрования GGH односторонняя функция принимает вид [math]\displaystyle{ c = \Beta x + \epsilon }[/math], где [math]\displaystyle{ c }[/math] — шифротекст, [math]\displaystyle{ x }[/math] — целочисленный вектор и [math]\displaystyle{ \epsilon }[/math] — вектор ошибки длиной не более [math]\displaystyle{ \rho }[/math], [math]\displaystyle{ \frac{1}{2} \min_i(\mathbf{b_i^*}) \ll \rho = \frac{1}{2} \min_i(\mathbf{r_i^*}) }[/math]. Последнее необходимо для того, чтобы ошибка не создавала сильных искажений при вычислении с приватным базисом и, наоборот, для вычислений с публичным. Предполагается, что сообщение [math]\displaystyle{ m }[/math] кодируется в [math]\displaystyle{ \epsilon }[/math], а [math]\displaystyle{ x }[/math] выбирается случайно[5].
Семейство односторонних функций GGH-вида [math]\displaystyle{ f_{\beta, \gamma} }[/math], параметризованное алгоритмами [math]\displaystyle{ \gamma }[/math] и [math]\displaystyle{ \beta }[/math], удовлетворяет:
- [math]\displaystyle{ \beta }[/math] принимает на вход приватный базис [math]\displaystyle{ \mathrm{R} }[/math], а выводит публичный базис [math]\displaystyle{ \Beta }[/math] для той же решётки.
- [math]\displaystyle{ \gamma }[/math] получает [math]\displaystyle{ \Beta }[/math] и [math]\displaystyle{ \epsilon }[/math], а возвращает коэффициенты точки решётки [math]\displaystyle{ x }[/math]
- Тогда [math]\displaystyle{ f_{\beta, \gamma} }[/math] отображает множество векторов короче [math]\displaystyle{ \rho }[/math] следующим образом: [math]\displaystyle{ f_{\beta, \gamma}(\epsilon) = \beta(\mathsf{R}) \gamma(\mathsf{R}, \epsilon) + \epsilon }[/math][5]
Если вектор ошибки имеет длину меньше [math]\displaystyle{ \rho }[/math], тогда приватный базис [math]\displaystyle{ \mathrm{R} }[/math] может быть использован для нахождения точки [math]\displaystyle{ \Beta x }[/math], ближайшей к [math]\displaystyle{ f_{\beta, \gamma}(\epsilon) }[/math], и, соответственно, восстановления [math]\displaystyle{ \epsilon }[/math] (задача нахождения ближайшего вектора)[5].
Выбор публичного базиса
Пусть известен «хороший» приватный базис [math]\displaystyle{ \mathrm{R} }[/math], то есть с помощью него возможно решить проблему задачу нахождения ближайшего вектора в [math]\displaystyle{ \mathcal{L}\mathrm(R) }[/math], что то же самое — расшифровать шифротекст. Задача — сгенерировать из [math]\displaystyle{ \mathrm{R} }[/math] такой публичный базис [math]\displaystyle{ \Beta }[/math], чтобы минимизировать в нём информацию об [math]\displaystyle{ \mathrm{R} }[/math]. В обычной схеме шифрования GGH для нахождения [math]\displaystyle{ \Beta }[/math] применяется набор случайных преобразований к [math]\displaystyle{ \mathrm{R} }[/math]. Криптосистема Миччанчо использует в качестве публичного базиса [math]\displaystyle{ \Beta }[/math] эрмитову нормальную форму, то есть [math]\displaystyle{ \Beta = HNF(\mathrm{R}) }[/math] (HNF — Hermite Normal Form). Она уникальна для конкретно заданной решётки, как уже говорилось выше . Это ведёт к тому, что если есть какой-то другой базис для данной решётки [math]\displaystyle{ \Beta' }[/math], то [math]\displaystyle{ \Beta = HNF(\mathrm{R}) = HNF(\mathrm{\Beta'}) }[/math]. Значит, [math]\displaystyle{ \Beta }[/math] содержит об [math]\displaystyle{ \mathrm{R} }[/math] не больше информации, чем о [math]\displaystyle{ \Beta' }[/math], на чём и базируется безопасность данной криптосистемы[5].
Прибавление «случайной» точки решётки
Далее, требуется сымитировать прибавление случайной точки решётки [math]\displaystyle{ \Beta x }[/math]. В идеале, эта точка должна выбираться равномерно произвольно среди всех точек решётки. Однако это невозможно ни с практической, ни с теоретической точки зрения. Почти такой же результат получается при использовании редуцированного вектора. Вектор ошибки [math]\displaystyle{ \epsilon }[/math] уменьшается по модулю публичного базиса [math]\displaystyle{ \Beta }[/math], чтобы получить шифротекст [math]\displaystyle{ c \in \mathcal{P}(\Beta^*) }[/math], вместо прибавления случайного вектора. В итоге односторонняя функция задаётся как [math]\displaystyle{ f(\epsilon) = \epsilon\pmod{\Beta} }[/math], где [math]\displaystyle{ \Beta = HNF(\mathrm{R}) }[/math]. Благодаря верхней треугольной формы матрицы [math]\displaystyle{ \Beta }[/math] данная функция очень проста с вычислительной точки зрения. Применяя рассуждения для вычисления редуцированного вектора, может быть найдена формула [math]\displaystyle{ x_i = \lfloor \frac{\epsilon_i - \sum_{j\gt i} b_{ij} x_j}{b_{ii}} \rfloor }[/math], начиная с [math]\displaystyle{ x_N }[/math], что даёт уникальную точку в параллелепипеде [math]\displaystyle{ \mathcal{P}(\Beta^*) }[/math][5].
Резюме
Пусть [math]\displaystyle{ \mathrm{R} }[/math] — приватный базис, причём [math]\displaystyle{ \rho = \frac{1}{2} \min_i(\mathbf{r_i^*}) }[/math] является относительно большим, [math]\displaystyle{ \Beta }[/math] — публичный базис и [math]\displaystyle{ \Beta = HNF(\mathrm{R}) }[/math]. Базис [math]\displaystyle{ \Beta }[/math] порождает функцию [math]\displaystyle{ f(\epsilon) = \epsilon\pmod{\Beta} }[/math], которая переводит вектора длины меньше [math]\displaystyle{ \rho }[/math] в соответствующий [math]\displaystyle{ \Beta }[/math] прямой параллелепипед [math]\displaystyle{ \mathcal{P}(\Beta^*) }[/math]. Ключевые моменты:
- Даже если изначально [math]\displaystyle{ f(\epsilon) }[/math] близка к точке [math]\displaystyle{ \epsilon }[/math], после операции редукции получается вектор, близкий к другим точкам решётки.
- Чтобы восстановить [math]\displaystyle{ \epsilon }[/math] по [math]\displaystyle{ f(\epsilon) }[/math], необходимо решить задачу задачу нахождения ближайшего вектора, для которой доказана NP-сложность. Поэтому восстановить [math]\displaystyle{ \epsilon }[/math], имея только [math]\displaystyle{ \Beta }[/math], почти невозможно, даже для квантовых компьютеров. Однако она эффективно решается, если известен базис [math]\displaystyle{ \mathrm{R} }[/math].
- Ближайшая точка к [math]\displaystyle{ f(\epsilon) }[/math] — центр параллелепипеда, в котором содержится [math]\displaystyle{ f(\epsilon) }[/math], а он находится легко, зная базис [math]\displaystyle{ \mathrm{R} }[/math][5].
Теоретический анализ
Безопасность
Новая функция данной криптосистемы настолько же безопасна, насколько функция в схеме шифрования GGH. Следующая теорема утверждает, что определённая выше функция, как минимум не хуже любой другой GGH-вида функции[5].
Имеет место следующее утверждение: для любых функций [math]\displaystyle{ \beta, \gamma }[/math] и для любого алгоритма, который для [math]\displaystyle{ f(\epsilon) }[/math] находит об [math]\displaystyle{ \epsilon }[/math] какую-то частичную информацию с ненулевой вероятностью, существует эффективный алгоритм со входом [math]\displaystyle{ f_{\beta, \gamma}(\epsilon) }[/math] способный восстановить такую же информацию с такой же вероятностью успеха[5].
Доказательство: пусть [math]\displaystyle{ A }[/math] — алгоритм способный взломать [math]\displaystyle{ f }[/math]. Даны публичный базис [math]\displaystyle{ \Beta }[/math] = [math]\displaystyle{ \beta(\epsilon) }[/math] и шифротекст [math]\displaystyle{ c = \Beta \gamma + \epsilon }[/math]. Алгоритма взлома должен попытаться найти какую-нибудь информацию об [math]\displaystyle{ \epsilon }[/math]. Во-первых, [math]\displaystyle{ \Beta' = HNF(\mathrm{B}) }[/math] и [math]\displaystyle{ c' = c \pmod{B'} }[/math]. Из теоретических результатов в предыдущем разделе следует, что [math]\displaystyle{ \Beta' = HNF(\mathrm{R}) }[/math] и [math]\displaystyle{ c' = \Beta \gamma + \epsilon \pmod{B'} = \epsilon \pmod{B'} }[/math]. Поэтому [math]\displaystyle{ B' }[/math] и [math]\displaystyle{ c' }[/math] имеют правильное распределение. Применяя к ним алгоритм [math]\displaystyle{ A }[/math], получается утверждение теоремы[5].
Асимптотические оценки памяти
Пусть для приватного ключа выполняется [math]\displaystyle{ |r_{ij}| \lt poly(N) }[/math], тогда размер, занимаемый ключом, оценивается [math]\displaystyle{ O(N^2\ \lg N^2) }[/math]. Используя неравенство Адамара, а также то, что для публичного базиса и шифротекста GGH системы выполняются оценки [math]\displaystyle{ O(N^2\ \lg(\det(\mathcal{L}))) = O(N^2\ \lg(N)) }[/math] и [math]\displaystyle{ O(N\ \lg(\det(\mathcal{L}))) = O(N\ \lg(N)) }[/math], следует, что оценки на публичный базис и шифротекст нашей системы [math]\displaystyle{ O(N^2\ \lg(N)) }[/math] и [math]\displaystyle{ O(N\ \lg(N)) }[/math][5][7].
Асимптотические оценки времени исполнения
Теоретически, ожидается ускорение работы алгоритма по сравнению с GGH по двум причинам (эмпирические результаты приведены ниже). Во-первых, время шифрования для GGH систем сильно зависит от размера публичного ключа. Теоретические оценки на занимаемую ключом память указывают на её уменьшение, а следовательно и на ускорение шифрования. При этом время работы GGH сравнимо со временем работы схемы RSA. Во-вторых, для генерации ключа исходный алгоритм применяет алгоритм Ленстры — Ленстры — Ловаса к матрицам большой размерности с большими значения элементов, в то время как система Миччанчо использует достаточно простой алгоритм нахождения эрмитовой нормальной формы. Для дешифровки используется алгоритм Бабая[8], с некоторыми потерями по памяти и точности, но улучшением по времени его можно заменить на более простой алгоритм округления[9], однако в данной части ускорения по времени исполнения не ожидается.
Эмпирическая оценка безопасности системы
На практике для безопасности данной системы требуется [math]\displaystyle{ N \ge 782 }[/math]. При предположении, что улучшение времени достигает максимальных асимптотических оценок, минимальное необходимое [math]\displaystyle{ N }[/math] должно быть больше [math]\displaystyle{ 2093 }[/math]. Далее было показано, что публичный ключ должен быть не менее 1MB. Более того, время генерации ключа занимает порядка дня. Процедура шифрования, действительно довольно быстра. Однако дешифровка нестабильна из-за алгоритма Бабая. Это можно преодолеть, но тогда она будет занимать 73 минуты для [math]\displaystyle{ N = 800 }[/math], не включая ортогонализацию. Если выполнить этот шаг заранее, то к расходам на память прибавляется 4.8 MB для той же размерности. Из этих результатов следует, что криптосистема Миччанчо неприменима на практике[1][2][3][4].
Примечания
- ↑ 1,0 1,1 Christoph Ludwig. The Security and Efficiency of Micciancio's Cryptosystem (англ.) // IACR Cryptology : Article. — 2004.
- ↑ 2,0 2,1 T. Plantard, M. Rose, W. Susilo. Improvement of Lattice-Based Cryptography Using CRT. — Quantum Communication and Quantum Networking: First International Conference. — 2009. — С. 275—282. — ISBN 9783642117305.
- ↑ 3,0 3,1 M. Rose, T. Plantard, F. Susilo. Improving BDD Cryptosystems in General Lattices. — Information Security Practice and Experience: 7th International Conference. — 2011. — С. 152—167. — ISBN 9783642210303. Архивная копия от 22 февраля 2019 на Wayback Machine
- ↑ 4,0 4,1 Thomas Richard Rond. Advances in the GGH lattice-based cryptosystem . Master Thesis (2016).
- ↑ 5,00 5,01 5,02 5,03 5,04 5,05 5,06 5,07 5,08 5,09 5,10 5,11 5,12 Daniele Micciancio. Improving lattice-based cryptosystems using the Hermite normal form (англ.) // International Cryptography and Lattices Conference. — 2001. — С. 126—145. — doi:10.1007/3-540-44670-2_11. Архивировано 20 июля 2020 года.
- ↑ Steven Galbraith. Cryptosystems Based on Lattices (англ.) // Cambridge University Press : Paper. — 2012. Архивировано 12 февраля 2020 года.
- ↑ 7,0 7,1 Oded Goldreich, Shafi Goldwasser and Shai Halevi. Public-Key Cryptosystems from Lattice Reduction Problems (англ.) // Advances in Cryptology - CRYPTO. — 1997. Архивировано 16 июля 2019 года.
- ↑ Oded Regev. CVP Algorithm (англ.) : Lattices in Computer Science. — 2004. Архивировано 1 ноября 2020 года.
- ↑ Noah Stephens-Davidowitz. Babai’s Algorithm (англ.) : NYU, Lattices mini-course. — 2016. Архивировано 29 октября 2019 года.
Литература
- Daniele Micciancio, Oded Regev Lattice-based cryptography // Post Quantum Cryptography. — 2009.
- Daniele Micciancio Improving lattice-based cryptosystems using the Hermite normal form // Lecture notes in Сomputer Science. — 2001.
- Christoph Ludwig The Security and Efficiency of Micciancio’s Cryptosystem // IACR Cryptology. — 2004.