Схема шифрования GGH

Материал из testwiki
Перейти к навигации Перейти к поиску

Схема шифрования GGH (Шаблон:Lang-en) — асимметричная криптографическая система, основанная на решётках. Также существует схема подписи GGH.

Криптосистема опирается на решения задачи нахождения кратчайшего вектора и задачи нахождения ближайшего вектора. Схема шифрования GGH, опубликованная в 1997 году учёными Oded Goldreich, Shafi Goldwasser и Shai Halevi, использует одностороннюю функцию с потайным входом, ведь учитывая любой базис решётки, легко генерировать вектор, близкий к точке решётки. Например, взяв точку решётки и добавив небольшой вектор ошибки. Для возвращения из вектора ошибки в исходную точку решетки необходим специальный базис. В 1999 году Phong Q. Nguyen[1] сделал уточнение к оригинальной схеме шифрования GGH, что позволило решить четыре из пяти задачи GGH и получить частичную информацию о последней. Хотя GGH может быть безопасным при определенном выборе параметров, его эффективность по сравнению с традиционными криптосистемами с открытым ключом остается спорной[2]. Зачастую при шифровании требуется высокая размерность решётки, в то время как размер ключа растет примерно квадратично относительно размера решётки[2].

Единственной решётчатой схемой, которая справляется с высокими размерностями, является NTRU[3].

Алгоритм

GGH включает в себя открытый ключ и закрытый ключ[4]. Закрытым ключом является основание B решетки L с унимодулярной матрицей U.

Открытый ключ является ещё одним основанием решётки L вида B′=UB.

Пусть пространство сообщений М состоит из векторов (m1,...,mn), принадлежащих интервалу −M<mi<M.

Шифрование

Дано сообщение m=(m1,...,mn), ошибка e и открытый ключ B′:

v=∑mibi′

В матричной записи:

v=m⋅B′

Нужно помнить, что m состоит из целочисленных значений, b′ является точкой решётки, поэтому v также является точкой решётки. Тогда зашифрованный текст:

c=v+e=m⋅B′+e

Расшифровка

Для расшифровки шифротекста вычисляется:

c⋅B−1=(m⋅B′+e)B−1=m⋅U⋅B⋅B−1+e⋅B−1=m⋅U+e⋅B−1

Для удаления e⋅B−1, если он достаточно мал, используется метод округления Бабая[5] .

Тогда, чтобы получить текст:

m=m⋅U⋅U−1

Анализ безопасности

В этом разделе рассматривается несколько способов атаки криптосистемы[6].

Атака округлением

Атака округлением — наиболее очевидная атака данной криптографической системы, кроме атаки грубой силы — поиска вектора ошибки e.Ее суть заключается в использовании открытого ключа B для инвертирования функции таким же образом, как и при использовании закрытого ключа R. А именно, зная c=B⋅v+e, можно вычислить B−1⋅c=v+B−1⋅e. Таким образом, можно найти вектор d=B−1⋅e. При размерности ниже 80 LLL алгоритм способен правильно определять основание, однако начиная с размерности 100 и выше, данная атака хуже, чем тривиальный перебор вектора ошибок.


Атака штурмом

Данный алгоритм — очевидное уточнение атаки округлением. Здесь используется лучший алгоритм аппроксимации задачи кратчайших векторов. В частности, вместо алгоритма округления Babai используется алгоритм ближайшей плоскости. Он работает следующим образом. Дана точка c и уменьшенный базиc B = {b1,…bn} для LLL. Рассматриваются все аффинные пространства Hk = {k⋅bn+∑i=0n−1ai⋅bi} : ai∈ℛ} . Для всех k∈𝒵 находится гиперплоскость Hk, ближайшая к точке c. Далее на (n - 1)-мерное пространство, которое охватывается B = {b1,…bn}, проектируется точка c−k⋅bn. Это дает новую точку c′и новый базис B′ = {b1,…bn}. Теперь алгоритм рекурсивно переходит к поиску точки p′ в этой (n - 1)-мерной решетки, близкой к c′. Наконец, алгоритм устанавливает p=p′+k⋅bn. Данный метод работает гораздо быстрее предыдущего. Тем не менее, его рабочая нагрузка также растет экспоненциально с размерностью решетки. Эксперименты показывают, что при использовании LLL в качестве алгоритма сокращения решетки требуется некоторое время на поиск, начиная с размеров 110-120. Атака становится неосуществимой, начиная с размеров 140-150.

Атака внедрения

Еще одним способом, который часто используется для аппроксимации задачи нахождения ближайшего вектора, является вложение n базисных векторов и точки c, для которой необходимо найти близкую точку решетки в (n + 1)-мерной решетке

B′=(⋮⋮⋮⋯⋮cb1b2⋯bn⋮⋮⋮⋱⋮100⋯0)

Затем используется алгоритм сокращения решетки для поиска кратчайшего ненулевого вектора в L(B′), в надежде, что первые n элементов в этом векторе будут ближайшими точками к c. Проведенные над этой атакой эксперименты (используя LLL как инструмент для поиска кратчайших векторов) указывают на то, что она работает до размерностей около 110-120, что лучше, чем атака округлением, которая становится хуже тривиального поиска уже после размерности равной 100.

Оценка эффективности атак[7]

Оценка атаки округлением

Пусть в каждом измерении n создано пять закрытых базисов. Каждый базис выбирается как Ri= 4|n|⋅I+ rand(±4), где I — тождественная матрица, а rand(±4)— квадратная матрица, члены которой выбираются равномерно из диапазона −4,...,4. Для каждого базиса Ri вычисляется значение σi = (γi8ln⁡(2n/ε))−1, где γi — евклидова норма наибольшей строки Ri−1, а ε=10−5. Для каждого закрытого базиса Riгенерируется пять открытых базисов Bij

work−loadij = (πe)n/2⋅σin⋅orth−defect∗(Bij)det|Bij|, где orth−defect∗ — двойной дефект ортогональности: orth−defect∗(B)=|det(B)|⋅∏i‖bî‖, где bî обозначает строку матрицы B−1.

Округление

Оценка атаки штурмом

Для оценки атаки штурмом использовались такие же открытый и закрытый базисы, как и в атаке округлением.

Штурм

Оценка атаки внедрением

Так как нельзя говорить о «рабочей нагрузке» атаки внедрением, было измерено максимальное значение σ (связанное с вектором ошибок), для которого эта атака работает. Для этих экспериментов использовались те же закрытые базисы R и открытые базисы Bij, что и для предыдущих двух атак. Затем использовался каждый открытый базис для оценки функции на нескольких точках, используя несколько различных значений σ и проверялось, восстанавливает ли атака внедрения зашифрованное сообщение.

Внедрение

Пример

Пусть L⊂ℝ2 решетка с основанием B и обратным ему B−1:

B=(7003) и B−1=(170013)

С унимодулярной матрицей:

U=(2335) и
U−1=(5−3−32)

Получаем:

B′=UB=(1492115)

Пусть сообщение m=(3,−7)и вектор ошибок e=(1,−1). Тогда зашифрованный текст:

c=mB′+e=(−104,−79)

Для расшифровки необходимо:

cB−1=(−1047,−793)

Это округляется до (−15,−26).

И сообщение восстанавливается с:

m=(−15,−26)U−1=(3,−7).

Источники и дополнительная литература

  • Oded Goldreich, Shafi Goldwasser, and Shai Halevi. Public-key cryptosystems from lattice reduction problems. In CRYPTO ’97: Proceedings of the 17th Annual International Cryptology Conference on Advances in Cryptology, pages 112—131, London, UK, 1997. Springer-Verlag.
  • Phong Q. Nguyen. Cryptanalysis of the Goldreich-Goldwasser-Halevi Cryptosystem from Crypto ’97. In CRYPTO ’99: Proceedings of the 19th Annual International Cryptology Conference on Advances in Cryptology, pages 288—304, London, UK, 1999. Springer-Verlag.

Примечания

Шаблон:Примечания