NTRUEncrypt
(
аббревиатура
Nth-degree TRUncated polynomial ring или Number Theorists aRe Us) — это
криптографическая система с открытым ключом
, ранее называвшаяся
NTRU
.
Криптосистема NTRUEncrypt, основанная на
решёточной криптосистеме
, создана в качестве альтернативы
RSA
и
криптосистемам на эллиптических кривых (ECC)
. Стойкость алгоритма обеспечивается трудностью поиска
, которая более стойкая к атакам, осуществляемым на
квантовых компьютерах
. В отличие от своих конкурентов
RSA
,
ECC
,
Elgamal
, алгоритм использует операции над
кольцом
усечённых многочленов степени, не превосходящей
:
-
Такой
многочлен
можно также представить вектором
-
Как и любой молодой алгоритм,
NTRUEncrypt
плохо изучен, хотя и был официально утверждён для использования в сфере финансов комитетом
Accredited Standards Committee X9
.
Существует реализации NTRUEncrypt с
открытым исходным кодом
.
История
NTRUEncrypt, изначально называвшийся NTRU, был изобретён в
1996 году
и представлен миру на конференциях
,
Конференция RSA
,
. Причиной, послужившей началом разработки алгоритма в
1994 году
, стала статья
, в которой говорилось о лёгкости взлома существующих алгоритмов на квантовых компьютерах, которые, как показало время, не за горами
. В этом же году, математики Jeffrey Hoffstein, Jill Pipher и Joseph H. Silverman, разработавшие систему вместе с основателем компании NTRU Cryptosystems, Inc. (позже переименованной в SecurityInnovation), Даниелем Лиеманом (Daniel Lieman) запатентовали своё изобретение.
Кольца усечённых многочленов
NTRU оперирует над многочленами степени не превосходящей
-
где коэффициенты
— целые числа. Относительно операций сложения и умножения по модулю многочлена
такие многочлены образуют кольцо
R
, называемое
кольцом усечённых многочленов
, которое изоморфно
факторкольцу
NTRU использует кольцо усечённых многочленов
R
совместно с
делением по модулю
на
взаимно простые числа
p
и
q
для уменьшения коэффициентов многочленов.
В работе алгоритма также используются обратные многочлены в кольце усечённых многочленов. Следует отметить, что не всякий многочлен имеет обратный, но если обратный полином существует, то его легко вычислить.
В качестве примера будут выбраны следующие параметры:
Обозначения параметров
|
N
|
q
|
p
|
Значения параметров
|
11
|
32
|
3
|
Генерация открытого ключа
Для передачи сообщения от Алисы к Бобу необходимы открытый и закрытый ключи. Открытый знают как Боб, так и Алиса, закрытый ключ знает только Боб, который он использует для генерации открытого ключа. Для этого Боб выбирает два «маленьких» полинома
f
g
из
R
. «Малость» полиномов подразумевается в том смысле, что он маленький относительно произвольного полинома по модулю
q
: в произвольном полиноме коэффициенты должны быть примерно равномерно распределены по модулю
q
, а в малом полиноме они много меньше
q
. Малость полиномов определяется с помощью чисел
df
и
dg
:
-
Полином
f
имеет
df
коэффициентов равных «
1
» и
df-1
коэффициентов равных «
-1
», а остальные — «
0
». В этом случае говорят, что
-
Полином
g
имеет
dg
коэффициентов равных «
1
» и столько же равных «
-1
», остальные — «
0
». В этом случае говорят, что
Причина, по которой полиномы выбираются именно таким образом, заключается в том, что
f
, возможно, будет иметь обратный, а
g
— однозначно нет (
g
(1) = 0, а нулевой элемент не имеет обратного).
Боб должен хранить эти полиномы в секрете. Далее Боб вычисляет обратные полиномы
и
, то есть такие, что:
-
и
.
Если
f
не имеет обратного полинома, то Боб выбирает другой полином
f
.
Секретный ключ — это пара
, а открытый ключ
h
вычисляется по формуле:
-
-
Пример
Для примера возьмем
df
=4, а
dg
=3. Тогда в качестве полиномов можно выбрать
-
-
Далее для полинома
f
ищутся обратные полиномы по модулю
p
=3 и
q
=32:
-
-
Заключительным этапом является вычисление самого открытого ключа
h
:
-
Шифрование
Теперь, когда у Алисы есть открытый ключ, она может отправить зашифрованное сообщение Бобу. Для этого нужно сообщение представить в виде полинома
m
с коэффициентами по модулю
p
, выбранными из диапазона (-
p
/2,
p
/2]. То есть
m
является «малым» полиномом по модулю
q
. Далее Алисе необходимо выбрать другой «малый» полином
r
, который называется «ослепляющим», определяемый с помощью числа
dr
:
-
Полином
r
имеет
dr
коэффициентов равных «
1
» и столько же равных «
-1
», остальные — «
0
». В этом случае говорят, что
Используя эти полиномы, зашифрованное сообщение получается по формуле:
-
При этом любой, кто знает (или может вычислить) ослепляющий полином
r
, сможет прочесть сообщение
m
.
-
Пример
Предположим, что Алиса хочет послать сообщение, представленное в виде полинома
-
и выбрала «ослепляющий» полином, для которого
dr
=3:
-
Тогда шифротекст
e
, готовый для передачи Бобу будет:
-
Расшифрование
Теперь, получив зашифрованное сообщение
e
, Боб может его расшифровать, используя свой секретный ключ. Вначале он получает новый промежуточный полином:
-
Если расписать шифротекст, то получим цепочку:
-
и окончательно:
-
После того, как Боб вычислил полином
a
по модулю q, он должен выбрать его коэффициенты из диапазона (-
q
/2,
q
/2] и далее вычислить полином
b
, получаемый из полинома
a
приведением по модулю p:
-
так как
.
Теперь, используя вторую половину секретного ключа и полученный полином
b
, Боб может расшифровать сообщение:
-
Нетрудно видеть, что
-
Таким образом полученный полином
c
действительно является исходным сообщением
m
.
Пример
:
Боб получил от Алисы шифрованное сообщение
e
-
Используя секретный ключ
f
Боб получает полином
a
-
с коэффициентами, принадлежащими промежутку (-
q
/2,
q
/2]. Далее преобразует полином
a
в полином
b
, уменьшая коэффициенты по модулю p.
-
Заключительный шаг — перемножение полинома
b
со второй половиной закрытого ключа
-
-
Который является исходным сообщением, которое передавала Алиса.
Стойкость к атакам
Полный перебор
Первая из возможных атак —
атака перебором
. Тут возможно несколько вариантов перебора: либо перебирать все
, и проверять на малость коэффициенты полученных результатов
, которые, по задумке, должны были быть малыми, либо перебирать все
, также проверяя на малость коэффициенты результата
. На практике пространство
меньше пространства
, следовательно стойкость определяется пространством
. А стойкость отдельного сообщения определяется пространством
.
Встреча посередине
Существует более оптимальный вариант перебора
встреча посередине
, предложенный
. Этот метод уменьшает количество вариантов до квадратного корня:
Стойкости закрытого ключа =
=
,
И стойкости отдельного сообщения =
=
.
Атака «встреча посередине» позволяет разменять время, необходимое для вычислений на память, необходимую для хранения временных результатов. Таким образом, если мы хотим обеспечить стойкость системы
, нужно выбрать ключ размера
.
Атака на основе множественной передачи сообщения
Довольно серьёзная атака на отдельное сообщение, которую можно избежать, следуя простому правилу — не пересылать многократно одно и то же сообщение. Суть атаки заключается в нахождении части коэффициентов ослепляющего многочлена
r
. А остальные коэффициенты можно просто перебрать, тем самым прочитав сообщение. Так как зашифрованное одно и то же сообщение с разными ослепляющими многочленами это
, где i=1, … n.
Можно вычислить выражение
, которое в точности равно
. Для достаточно большого количества переданных сообщений (скажем, для
n
= 4, 5, 6), можно восстановить, исходя из малости коэффициентов, большую часть ослепляющего многочлена
.
Атака на основе решётки
Рассмотрим
решётку
, порождённую строками матрицы размера 2
N
×2
N
с детерминантом
, состоящей из четырёх блоков размера
N
×
N
:
-
Так как открытый ключ
, то
, следовательно в этой решётке содержится вектор
размера 2
N
, в котором идут сначала коэффициенты вектора
f
, помноженные на коэффициент
, затем коэффициенты вектора
g
. Задача поиска такого вектора, при больших
N
и правильно подобранных параметрах, считается трудно разрешимой.
Атака на основе подобранного шифротекста
Атака на основе подобранного шифротекста
является наиболее опасной атакой. Её предложили Éliane Jaulmes и Antoine Joux
в 2000 году на конференции CRYPTO.
Суть этой атаки заключается в подборе такого многочлена
a(x)
, чтобы
. При этом Ева не взаимодействует ни с Бобом, ни с Алисой.
Если взять шифротекст
, где
, то получим многочлен
. Так как коэффициенты многочленов
f
и
g
принимают значения «0», «1» и «-1», то коэффициенты многочлена
a
будут принадлежать множеству {-2py , -py , 0, py, 2py}. Если
py
выбрать таким, что
, то при сведении по модулю полинома
a(x)
приведутся только коэффициенты равные
-2py
или
2py
. Пусть теперь
i
-ый коэффициент равен
2py
, тогда многочлен
a(x)
после приведения по модулю запишется как:
-
,
а многочлен
b(x)
:
-
,
окончательно вычислим:
-
.
Теперь, если рассмотреть все возможные
i
, то вместо отдельных
, можно составить полином
K
и расшифрованное сообщение примет вид:
-
,
или, секретный ключ:
-
,
Вероятность таким образом отыскать составляющие ключа составляет порядка 0,1 … 0,3 для ключа размера 100. Для ключей большого размера (~500) эта вероятность очень мала. Применив данный метод достаточное количество раз, можно полностью восстановить ключ.
Для защиты от атаки такого типа используется расширенный метод шифрования
NTRU-FORST
. Для шифрования используется ослепляющий многочлен
, где
H
— криптографически-стойкая
хеш-функция
, а
R
— случайный набор
бит
. Получив сообщение, Боб расшифровывает его. Далее Боб шифрует только что расшифрованное сообщение, таким же образом, что и Алиса. После сверяет его на соответствие с полученным. Если сообщения идентичные, то Боб принимает сообщение, иначе отбраковывает.
Параметры стойкости и быстродействие
Несмотря на то, что существуют быстрые алгоритмы поиска обратного полинома, разработчики предложили для коммерческого применения в качестве секретного ключа
f
брать:
-
,
где
F
— малый полином. Таким образом выбранный ключ обладает следующими преимуществами:
-
f
всегда имеет обратный по модулю
p
, а именно
.
-
Так как
нам больше не нужно при расшифровке умножать на обратный полином
, и он выпадает из разряда секретного ключа.
Одно из
от 6 октября 2016 на
Wayback Machine
показало, что
NTRU
на 4 порядка быстрее
RSA
и на 3 порядка —
ECC
.
Как уже упоминалось ранее разработчики, для обеспечения высокой стойкости алгоритма, предлагают использовать только рекомендованные параметры, обозначенные в таблице:
Рекомендованные параметры
Обозначение
|
N
|
q
|
p
|
df
|
dg
|
dr
|
Гарантированная стойкость
|
NTRU167:3
|
167
|
128
|
3
|
61
|
20
|
18
|
Умеренный уровень стойкости
|
NTRU251:3
|
251
|
128
|
3
|
50
|
24
|
16
|
Стандартный уровень стойкости
|
NTRU503:3
|
503
|
256
|
3
|
216
|
72
|
55
|
Высочайший уровень стойкости
|
NTRU167:2
|
167
|
127
|
2
|
45
|
35
|
18
|
Умеренный уровень стойкости
|
NTRU251:2
|
251
|
127
|
2
|
35
|
35
|
22
|
Стандартный уровень стойкости
|
NTRU503:2
|
503
|
253
|
2
|
155
|
100
|
65
|
Высочайший уровень стойкости
|
Примечания
-
(неопр.)
. Дата обращения: 15 марта 2022.
13 августа 2016 года.
-
(неопр.)
. Дата обращения: 1 ноября 2011.
19 ноября 2011 года.
-
(неопр.)
. Дата обращения: 30 октября 2011. Архивировано из
18 июня 2010 года.
-
(неопр.)
. Дата обращения: 30 октября 2011.
30 ноября 2011 года.
-
(неопр.)
. Дата обращения: 30 октября 2011.
9 апреля 2016 года.
-
J. H. Silverman,
от 24 марта 2012 на
Wayback Machine
, NTRU Cryptosystems Technical Report # 014.
-
J. H. Silverman,
от 14 мая 2012 на
Wayback Machine
, NTRU Cryptosystems Technical Report # 009.
-
Jaulmes É., Joux A.
//Annual International Cryptology Conference. – Springer, Berlin, Heidelberg, 2000. – С. 20-35.
Ссылки
-
-
-
Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman.
. In Algorithmic Number Theory (ANTS III), Portland, OR, June 1998, J.P. Buhler (ed.), Lecture Notes in Computer Science 1423,
Springer-Verlag
, Berlin, 1998, 267—288.
-
Howgrave-Graham, N., Silverman, J.H. & Whyte, W.,
.
-
J. Hoffstein, J. Silverman.
. Public-Key Cryptography and Computational Number Theory (Warsaw, September 11-15, 2000), DeGruyter, to appear.
-
A. C. Atici, L. Batina, J. Fan & I. Verbauwhede.
от 28 сентября 2011 на
Wayback Machine
.
|
Алгоритмы
|
|
Теория
|
|
Стандарты
|
|
Темы
|
|