Криптография на решётках

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

Криптография на решётках — подход к построению алгоритмов асимметричного шифрования с использованием задач теории решёток, то есть задач оптимизации на дискретных аддитивных подгруппах, заданных на множестве ℝn.

Наряду с другими методами постквантовой криптографии, считается перспективным в связи с возможностями квантового компьютера взламывать широко используемые асимметричные системы шифрования, основанные на двух типах задач теории чисел: задачах факторизации целых чисел и задачах дискретного логарифмирования. Сложность взлома алгоритмов, построенных на решётках, крайне велика, самые лучшие алгоритмы могут решить эту задачу с трудом за экспоненциальное время. По состоянию на середину 2010-х годов неизвестно ни одного квантового алгоритма, способного справиться лучше обычного компьютера.

Предпосылки создания

Шаблон:Чистить раздел В 1995 году Питер Шор продемонстрировал полиномиальный алгоритм для взлома криптографических систем с открытым ключом при использовании квантового компьютера, тем самым определив период существования данных систем до возникновения квантовых вычислителей достаточной размерности.

В 1996 году Лов Гровер продемонстрировал общий метод поиска в базе данных позволяющий производить расшифровку симметричных алгоритмов шифрования, эквивалентную двукратному уменьшению ключа шифра.

В 2001 году группа специалистов IBM продемонстрировала выполнение алгоритма факторизации Шора для числа 15. Число было разложено на множители 3 и 5 при помощи квантового компьютера с 7 кубитами, построенного из 1810 молекул, состоящих из пяти атомов фтора и двух атомов углерода, с записью информации посредством радиосигналов и считыванием методами ядерного магнитного резонанса[1].

Начиная со второй половины 1990-х годов возникла необходимость поиска криптостойких к квантовым компьютерам задач для постквантовой эпохи шифрования, в качестве одного из подходов было предложено использовать решётки в ℝn — дискретные подгруппы вещественного векторного пространства, линейные оболочки которых совпадают с ним:

L={∑i=1nλibi∣λi∈ℤ}

Вычислительно сложные задачи

Синей точкой обозначен самый короткий вектор

Задача нахождения кратчайшего вектора (SVP, Шаблон:Lang-en) — найти в заданном базисе решётки ненулевой вектор по отношению к определённой нормали[2].

Задача нахождения (приблизительно) идеального кратчайшего вектора (ISVP, Шаблон:Lang-en) не считается NP-сложной. Однако, нет известных решёток, основанных на методе редукции, значительно более эффективных на идеальных структурах, чем на общих[3].

Ещё одна задача — нахождение (приблизительно) кратчайшего независимого вектора (SIVP, Шаблон:Lang-en), в которой дан базис решётки B и требуется найти n линейно независимых векторов[4].

Синяя точка — найденный вектор, красная точка — заданный вектор

Задача нахождения ближайшего вектора (CVP, Шаблон:Lang-en) — нахождение вектора в решётке по заданному базису и некоторому вектору, не принадлежащему решётке, при этом максимально схожего по длине с заданным вектором.

LLL-алгоритм

Шаблон:Основная статья

Пример работы LLL алгоритма. Красным изображён новый базис.

Все эти задачи разрешимы за полиномиальное время с помощью известного LLL-алгоритма изобретённого в 1982 году Арьеном Ленстрой, Хендриком Ленстрой и Ласло Ловасом[5].

В заданном базисе 𝐁={𝐛1,𝐛2,…,𝐛d}, с n-мерными целыми координатами, в решётке L из ℝn, где  d≤n, LLL-алгоритм находит более короткий (примерноШаблон:Уточнить) ортогональный базис за время:

O(d5nlog3B),

где B — это максимальная длина вектора bi в этом пространстве.

Основные криптографические конструкции и их стойкость

Шифрование

Шаблон:Нп3 — криптосистема основанная на CVP, а именно на односторонней функции с потайным входом опирающуюся на сложность редукции решётки. Была опубликована в 1997 году. Зная базис, можно сгенерировать вектор близкий к заданной точке, но зная это вектор нам необходим исходный базис, чтобы найти исходную точку. Алгоритм был проверен в 1999 году.

Реализация GGH

GGH состоит из открытого и секретного ключа.

Секретный ключ — это базис B решётки L и унимодулярная матрица U.

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

Для некоторого M, пространство сообщения состоит из вектора (λ1,...,λn), где −M<λi<M.

Шифрование

Задано сообщение m=(λ1,...,λn), искажение e, открытый ключ B′:

v=∑λibi′

В матричном виде:

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 убирается, из соображений приближения. Сообщение:

m=m⋅U⋅U−1
Пример

Выберем решётку L⊂ℝ2 с базисом B:

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).

NTRUEncrypt — криптосистема основанная на SVP, является альтернативой RSA и ECC. В вычислении используется кольцо многочленов.

Подпись

Схема подписи GGH впервые предложена 1995 году и опубликована в 1997 году Голдрихом, основана на сложности нахождения ближайшего вектора. Идея заключалась в использовании решёток, для которых «плохой» базис, векторы длинные и почти параллельные, является открытым и «хороший» базис с короткими и почти ортогональными векторами, является закрытым. По их методу, сообщение необходимо хешировать в пространство, натянутое на решётку, а подпись для данного хэша в этом пространстве является ближайшим узлом решётки. Схема не имела формального доказательства безопасности, и её базовый вариант был взломан в 1999 году Нгуэном (Nguyen). В 2006 году модифицированная версия была снова взломана Нгуэном и Реджевом (Regev).

NTRUSign — специальная, более эффективная версия подписи GGH, отличающаяся меньшим ключом и размером подписи. Она использует только решётки подмножества множества всех решёток, связанных с некоторыми полиномиальными кольцами. NTRUSign была предложена на рассмотрение в качестве стандарта IEEE P1363.1.

Примечания

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

Шаблон:Rq Шаблон:Криптографические алгоритмы с парой открытый/закрытый ключ