NTRUEncryptкриптосистема с открытым ключом, также известная как Алгоритм шифрования NTRU представляет собой решетчатую альтернативу RSA и ECC и основан на задаче кратчайшего вектора в решетке (которая, как известно, не может быть взломана с помощью квантовых компьютеров ).
Он основан на предполагаемой сложности факторизации определенных многочленов в усеченном кольце многочленов в частное двух многочленов с очень маленькими коэффициентами. Взлом криптосистемы тесно связан, хотя и не эквивалентен, с алгоритмической проблемой редукции решетки в некоторых решетках. Чтобы предотвратить некоторые опубликованные атаки, необходим тщательный выбор параметров.
Поскольку и для шифрования, и для дешифрования используется только простое полиномиальное умножение, эти операции выполняются очень быстро по сравнению с другими схемами асимметричного шифрования, такими как RSA, ElGamal и криптография с эллиптической кривой. Однако NTRUEncrypt еще не прошел сопоставимый объем криптографического анализа в развернутой форме.
Связанный алгоритм - это NTRUSign алгоритм цифровой подписи.
В частности, операции NTRU основаны на объектах в усеченном кольце многочленов со сверточным умножением, и все полиномы в кольце имеют целое коэффициенты и степень не выше N-1:
NTRU на самом деле параметризованное семейство криптосистем; каждая система определяется тремя целочисленными параметрами (N, p, q), которые представляют максимальную степень для всех многочленов в усеченном кольце R, a малый модуль и большой модуль, соответственно, где предполагается, что N является простым, q всегда больше, чем p, и p и q являются взаимно простыми ; и четыре набора многочленов и (полиномиальная часть закрытого ключа, многочлен для генерации открытого ключа, сообщения и маскирующего значения соответственно), все степени не более .
Криптосистема с открытым ключом NTRUEncrypt - относительно новая криптосистема. Первая версия системы, которая называлась просто NTRU, была разработана примерно в 1996 году тремя математиками (Джеффри Хоффштейн, Джилл Пайфер и Джозеф Х. Сильверман ). В 1996 году эти математики вместе с основали NTRU Cryptosystems, Inc. и получили патент (срок действия которого истек) на криптосистему.
Последние десять лет люди работали над улучшением криптосистемы. С момента первой презентации криптосистемы были внесены некоторые изменения для улучшения как производительности системы, так и ее безопасности. Большинство улучшений производительности было сосредоточено на ускорении процесса. Вплоть до 2005 года можно найти литературу, описывающую сбои дешифрования NTRUEncrypt. Что касается безопасности, начиная с первой версии NTRUEncrypt, были введены новые параметры, которые кажутся безопасными для всех известных в настоящее время атак и разумного увеличения вычислительной мощности.
Теперь система полностью соответствует стандартам IEEE P1363 в соответствии со спецификациями решетчатой криптографии с открытым ключом (IEEE P1363.1 ). Из-за скорости криптосистемы с открытым ключом NTRUEncrypt (см. http://bench.cr.yp.to для результатов тестирования) и низкого использования памяти (см. ниже), она может использоваться в таких приложениях, как мобильные устройства и смарт-карты. В апреле 2011 года NTRUEncrypt был принят в качестве стандарта X9.98 для использования в индустрии финансовых услуг.
Для отправки секретного сообщения от Алисы Бобу требуется генерация открытый и закрытый ключ. Открытый ключ известен как Алисе, так и Бобу, а закрытый ключ известен только Бобу. Чтобы сгенерировать пару ключей, два полинома f и g со степенью не выше и с коэффициентами в {-1,0,1} обязательны. Их можно рассматривать как представления классов вычетов многочленов по модулю в R. Многочлен должен удовлетворять дополнительному требованию, согласно которому существуют обратные по модулю q и по модулю p (вычисленные с использованием алгоритма Евклида ), что означает, что и должен удерживаться. Поэтому, когда выбранный f необратим, Боб должен вернуться и попробовать другой f.
И f, и (и ) - закрытый ключ Боба. Открытый ключ h генерируется, вычисляя величину
Пример : в в этом примере параметры (N, p, q) будут иметь значения N = 11, p = 3 и q = 32, и поэтому многочлены f и g имеют степень не выше 10. Параметры системы (N, p, q) известны всем. Многочлены выбираются случайным образом, поэтому предположим, что они представлены как
Используя алгоритм Евклида, вычисляется обратное к f по модулю p и по модулю q, соответственно
Которая создает открытый ключ h (известный как Алисе, так и Бобу), вычисляя продукт
Алиса, которая хочет отправить секретное сообщение Бобу, помещает свое сообщение в форму многочлена m с коэффициентами {-1,0,1}. В современных приложениях шифрования полином сообщения может быть переведен в двоичное или троичное представление. После создания полинома сообщения Алиса случайным образом выбирает полином r с небольшими коэффициентами (не ограничиваясь набором {-1,0,1}), который предназначен для скрытия сообщения.
С открытым ключом Боба h вычисляется зашифрованное сообщение e :
Этот зашифрованный текст скрывает сообщения Алисы и может быть безопасно отправлен Бобу.
Пример : Предположим, что Алиса хочет отправить сообщение, которое может быть записано как полином
и что случайно выбранное «ослепляющее значение» может быть выражено как
Зашифрованный текст e, представляющий ее зашифрованное сообщение Бобу, будет иметь вид
Любой, кто знает r, может вычислить сообщение m, вычислив e- rh; так что r не должна открываться Алисой. Помимо общедоступной информации, Боб знает свой закрытый ключ. Вот как он может получить m : сначала он умножает зашифрованное сообщение e и часть своего закрытого ключа f
Переписывая многочлены, это уравнение фактически представляет следующие вычисления:
Вместо того, чтобы выбирать коэффициенты a между 0 и q - 1, они выбираются в интервал [-q / 2, q / 2], чтобы предотвратить некорректное восстановление исходного сообщения, поскольку Алиса выбирает координаты своего сообщения m в интервале [-p / 2, p / 2]. Это означает, что все коэффициенты уже лежат в интервале [-q / 2, q / 2], потому что многочлены r, g, fи m и простое число p имеют коэффициенты, которые малы по сравнению к q. Это означает, что все коэффициенты остаются неизменными при уменьшении по модулю q и что исходное сообщение может быть восстановлено должным образом.
Следующим шагом будет вычисление a по модулю p:
потому что .
Зная b Боб может использовать другую часть своего закрытого ключа , чтобы восстановить сообщение Алисы путем умножения b и
потому что свойство требуется для .
Пример : зашифрованное сообщение e от Алисы Бобу умножается на многочлен f
где Боб использует интервал [-q / 2, q / 2] вместо интервала [0, q - 1] для коэффициентов полинома a, чтобы предотвратить некорректное восстановление исходного сообщения.
Уменьшение коэффициентов a mod p приводит к
, что равно .
На последнем этапе результат умножается на из закрытого ключа Боба, чтобы получить исходное сообщение m
Это действительно исходное сообщение, которое Алиса отправила Бобу!
С момента предложения NTRU было проведено несколько атак на криптосистему с открытым ключом NTRUEncrypt. Большинство атак сосредоточено на полном взломе путем поиска секретного ключа f вместо простого восстановления сообщения m . Если известно, что f имеет очень мало ненулевых коэффициентов, Ева может успешно провести атаку грубой силой , попробовав все значения для f . Когда Ева хочет узнать, является ли f ´ секретным ключом, она просто вычисляет . Если у него небольшие коэффициенты, это может быть секретный ключ f, и Ева может проверить, является ли f ´ секретным ключом, используя его для расшифровки сообщения, которое она зашифровала сама. Ева также может попробовать значения g и проверить, имеет малые значения.
Можно организовать атаку встречей посередине, которая будет более мощной. Это может сократить время поиска на квадратный корень. Атака основана на том свойстве, что .
Ева хочет найти и таким образом, чтобы и имеет свойство
Если f имеет d и Nd нулей, тогда Ева создает все возможные и , в котором оба они имеют длину (например, охватывает самые низкие коэффициенты f и наивысшие) с d / 2 шт. Затем она вычисляет для всех и упорядочивает их по ячейкам на основе первых k координат. После этого она вычисляет все и упорядочивает их в ячейках не только на основе первых k координат, но также на основе того, что произойдет, если вы добавите 1 к первым k координатам. Затем вы проверяете подборки, содержащие как , так и и посмотрите, имеет ли свойство держится.
Атака сокращения решетки - один из самых известных и наиболее практичных методов взлома NTRUEncrypt. В некотором смысле это можно сравнить с факторизацией модуля в RSA. Наиболее часто используемый алгоритм для атаки сокращения решетки - алгоритм Ленстры-Ленстра-Ловаса. Поскольку открытый ключ h содержит как f, так и g, можно попытаться получить их из h . Однако слишком сложно найти секретный ключ, если параметры NTRUEncrypt выбраны достаточно надежно. Атака редукции решетки становится сложнее, если размер решетки увеличивается, а самый короткий вектор становится длиннее.
Атака с выбранным шифротекстом также является методом, который восстанавливает секретный ключ f и тем самым приводит к полному взлому. В этой атаке Ева пытается получить собственное сообщение из зашифрованного текста и тем самым пытается получить секретный ключ. В этой атаке Ева никак не взаимодействует с Бобом.
Как это работает :
Первая Ева создает зашифрованный текст такое, что и Когда Ева записывает шаги для расшифровки e (без фактического вычисления значений, поскольку она не знает f), она находит :
В котором успех h, что
Пример :
Тогда K становится .
Уменьшение коэффициентов многочленов a mod p действительно уменьшает коэффициенты . После умножения на , Ева находит:
Поскольку c был выбран в качестве кратное p, m можно записать как
Это означает, что .
Теперь, если f и g имеют несколько коэффициентов, которые одинаковы в тех же факторов, K имеет несколько ненулевых коэффициентов и, следовательно, мал. Пробуя разные значения K, злоумышленник может восстановить f.
. Шифрованием и дешифрованием сообщения согласно NTRUEncrypt злоумышленник может проверить, является ли функция f правильным секретным ключом или нет.
Использование последних предложенных параметров (см. ниже) криптосистема с открытым ключом NTRUEncrypt безопасна для большинства атак. Однако продолжается борьба между производительностью и безопасностью. Трудно повысить безопасность без снижения скорости, и наоборот.
Один из способов ускорить процесс без ущерба для эффективности алгоритма - внести некоторые изменения в секретный ключ f . Сначала постройте f так, чтобы , в котором F - небольшой полином (то есть коэффициенты {-1,0, 1}). Построив f таким образом, f обратимо по модулю p. Фактически , что означает, что Бобу не нужно фактически вычислять обратное, и что Бобу не нужно проводить второй этап дешифрования. Следовательно, построение f таким образом экономит много времени, но не влияет на безопасность NTRUEncrypt, потому что легче найти , но f по-прежнему трудно восстановить. В этом случае f имеет коэффициенты, отличные от -1, 0 или 1, из-за умножения на p. Но поскольку Боб умножает на p, чтобы сгенерировать открытый ключ h, а затем уменьшает зашифрованный текст по модулю p, это не повлияет на метод шифрования.
Во-вторых, f может быть записано как произведение нескольких полиномов, так что полиномы имеют много нулевых коэффициентов. Таким образом, нужно проводить меньше вычислений.
В большинстве коммерческих приложений NTRUEncrypt используется параметр N = 251. Чтобы избежать решетчатых атак, атак грубой силы и атак типа «встречу посередине», f и g должны иметь около 72 ненулевых коэффициентов.
Согласно последним исследованиям, следующие параметры считаются безопасными:
N | q | p | |
---|---|---|---|
Средняя безопасность | 167 | 128 | 3 |
Стандартная безопасность | 251 | 128 | 3 |
Высокая безопасность | 347 | 128 | 3 |
Высокая безопасность | 503 | 256 | 3 |