Научная статья DOI: 10.18287/2541-7525-2021-27-1-62-73
УДК 519.7 Дата: поступления статьи: 11.12.2020
после рецензирования: 20.01.2021 принятия статьи: 28.02.2021
С.М. Рацеев
Ульяновский государственный университет, г. Ульяновск, Российская Федерация E-mail: ratseevsm@mail.ru. ORCID: https://orcid.org/0000-0003-4995-9418
О.И. Череватенко Ульяновский государственный педагогический университет имени И.Н. Ульянова, г. Ульяновск, Российская Федерация E-mail: choi2008@mail.ru. ORCID: https://orcid.org/0000-0003-3931-9425
В.А. Чернявская
Ульяновский государственный педагогический университет имени И.Н. Ульянова, г. Ульяновск, Российская Федерация E-mail: vera.chernya@yandex.ru. ORCID: https://orcid.org/0000-0001-9875-2232
О НЕКОТОРЫХ КРИПТОСИСТЕМАХ, ОСНОВАННЫХ НА АЛГЕБРАИЧЕСКИХ КОДАХ
АННОТАЦИЯ
В 1978 г. Мак-Элис построил первую кодовую криптосистему с открытым ключом, которая основана на применении помехоустойчивых кодов. При этом эффективные атаки на секретные ключи этой криптосистемы до сих пор не найдены. В работе приводятся описания классической и модернизированной криптосистем Мак-Элиса и Нидеррайтера, а также примеры их практического применения на основе кодов Гоппы с использованием алгоритма Паттерсона. Также приводятся алгоритмы двухшаговых протоколов аутентификации с нулевым разглашением на основе кодовых криптосистем.
Ключевые слова: криптосистема Мак-Элиса; помехоустойчивые коды; коды Гоппы; декодирование кода.
Цитирование. Рацеев С.М., Череватенко О.И., Чернявская В.А. О некоторых криптосистемах, основанных на алгебраических кодах // Вестник Самарского университета. Естественнонаучная серия. 2021. Т. 27, № 1. С. 62-73. DOI: http://doi.org/10.18287/2541-7525-2021-27-1-62-73.
Информация о конфликте интересов: авторы и рецензенты заявляют об отсутствии конфликта интересов.
© Рацеев С.М., 2021
Сергей Михайлович Рацеев — доктор физико-математических наук, доцент, профессор кафедры информационной безопасности и теории управления, Ульяновский государственный университет, 432017, Российская Федерация, г. Ульяновск, ул. Льва Толстого, 42.
©c Череватенко О.И., 2021 Ольга Ивановна Череватенко — кандидат физико-математических наук, доцент, доцент кафедры высшей математики, Ульяновский государственный педагогический университет имени И.Н. Ульянова, 432071, Российская Федерация, г. Ульяновск, пл. Ленина, 4/5.
©c Чернявская В.А., 2021 Вера Алексеевна Чернявская — студент кафедры информационной безопасности и теории управления, Ульяновский государственный университет, 432017, Российская Федерация, г. Ульяновск, ул. Льва Толстого, 42.
Введение
В 1978 г. Мак-Элисом предложена первая криптосистема, основанная на алгебраических блоковых кодах [1]. В ее основе лежит маскировка быстрого алгоритма декодирования посредством умножения исходной порождающей матрицы О на случайную невырожденную матрицу, которая, в частности, является секретным ключом криптосистемы. Полученный результат (открытый ключ) представляет собой порождающую матрицу, имеющую вид случайно выбранных линейно независимых векторов. Злоумышленник, имеющий только открытый ключ, вынужден использовать сложный алгоритм неалгебраического декодирования (МР-полная задача). Законный пользователь, знающий секретный ключ, снимает действие маскировки и применяет быстрый алгебраический алгоритм декодирования (полиномиально разрешимая задача). Данная криптосистема на данный момент остается криптостойкой, так как нет ни одного эффективного алгоритма нахождения секретного ключа. Более того, данная криптосистема является одним из претендентов на официальную постквантовую криптосистему [2].
Криптосистема Мак-Элиса при использовании кодов Гоппы считается криптостойкой. Для декодирования кодов Гоппы хорошо известен алгоритм Паттерсона [3]. Но он применим только для двоичных кодов Гоппы. При этом заметим, что любой алгоритм декодирования обобщенных кодов Рида — Соломона можно применить и для кодов Гоппы над любым полем. Для обобщенных кодов Рида — Соломона и кодов Гоппы подобные алгоритмы рассматривались в работах [4-7].
1. Криптосистема Мак-Элиса
Классическая криптосистема. Пусть О — порождающая матрица [п, к, ¿¡-кода над ОГ(д), исправляющего Ь и менее ошибок (в оригинальной статье предлагается использовать двоичные сепарабельные коды Гоппы), С — невырожденная матрица порядка к над полем ОГ(д), Р и Б — перестановочная и диагональная матрицы порядка п соответственно (для двоичных кодов матрица Б не используется).
Матрица О = С ■ О ■ Р ■ Б является открытым ключом абонента А, как и параметры п, к, Ь. Маскирующие матрицы С, Р, Б и порождающая матрица О являются секретным ключом абонента А. В силу того, что матрицы С, Р, Б невырождены, матрица О является порождающей матрицей эквивалентного кода. Предположим, что абонент В хочет передать абоненту А сообщение х длины к с компонентами из ОГ(д). Алгоритм шифрования, предложенный Мак-Элисом, выглядит следующим образом.
1. Случайным равновероятным образом генерируется вектор ошибок е длины п над ОГ(д) веса не более Ь.
2. Абонент В вычисляет шифрованное сообщение у = хО + е, которое по открытому каналу связи передает абоненту А.
Вектор ошибок е, генерируемый на первом шаге, является случайным параметром шифра, который значительно усложняет криптоанализ. При 'шЬ(е) = Ь сложность дешифрования будет максимальной. Также заметим, что при каждом таком шифровании вектор е должен генерироваться заново. Для расшифрования сообщения абонент А совершает следующие действия.
1. Умножение полученного вектора на матрицу (РБ)-1: у = уБ-1Р-1. При этом у = уБ-1 Р-1 = = хСО + X = ХО + е, где х = хС, 'шЬ(еУ) = 'шЬ(е).
2. Декодирование вектора X на основе вектора у, т. е. получение вектора х = хС.
3. Нахождение исходного сообщения х путем умножения вектора X на С-1: х = хХС-1.
Замечание 1. Пусть О и Н — порождающая и проверочная матрицы некоторого линейного кода, С и Б — невырожденные квадратные матрицы подходящих размеров (для вычисления СО, БН). Порождающие матрицы СО и О задают один и тот же линейный код, так как ОН т = О, тогда и только тогда, когда СОНТ = О. Аналогично проверочные матрицы Н и БН задают один и тот же линейный код. Это значит, что для декодирования вектора X на втором шаге приведенного выше алгоритма применяется проверочная матрица Н (если она необходима), соответствующая матрице О.
Модернизированная криптосистема. Для того чтобы уменьшить объем параметров криптосистемы Мак-Элиса, имеется модернизированная версия данной криптосистемы [8], которая использует порождающую матрицу О в канонической форме: О = (1и, Якх(п-к)). В этом случае вместо хранения к х п элементов достаточно хранить только матрицу Q размера к х (п — к). Более того, для
алгоритмов кодирования и декодирования требуется меньшее число операций. Также вместо матриц О, Г, Б в качестве секретного ключа хранится только перестановка элементов множества Ь и многочлен С(х) кода Г{Ь,С).
Как утверждается в работе [8], криптостойкость модернизированной версии эквивалентна криптостойкости классической версии криптосистемы Мак-Элиса. Итак, сначала вычисляется открытый ключ С криптосистемы на основе параметров д,т,п,г.
1. Случайным образом генерируется многочлен С{х) степени г над полем СЕ(дт) (например, можно сгенерировать неприводимый многочлен).
2. Случайным образом выбираются п элементов поля СЕ(дт), не являющиеся корнями многочлена С{х), которые определяют множество Ь. Если С{х) неприводим, то можно взять любые различные п элементов поля СЕ(дт).
3. Вычисляется проверочная матрица Н' над полем СЕ{дт) размера г х п на основе Ь и С{х), г = = deg С{х).
4. С помощью элементарных преобразований строк матрица Н' приводится к систематическому виду ОН' (некоторые столбцы такой матрицы образуют единичную матрицу, а невырожденная матрица О является произведением соответствующих матриц элементарных преобразований), а затем с помощью перестановки столбцов приводится к виду Н = {0Тп-к)хк, 1п-к), т. е. матрица ОН' справа умножается на перестановочную матрицу Р: Н = ОН'Р. К множеству Ь применяется такая же перестановка (обозначение Ь оставим прежним).
5. На основе матрицы Н вычисляется порождающая матрица С в канонической форме: С = = {1к, Якх(п-к)).
В итоге матрица С является открытым ключом криптосистемы. Как видно из алгоритма, для получения Н требуется некоторая невырожденная матрица О и перестановочная матрица Р. Заметим, что если п = дт, то Ь = СЕ(дт). Также в качестве С{х) чаще всего выбирают неприводимый многочлен над СЕ(дт). Множество Ь для данной криптосистемы является случайным и держится в секрете. Алгоритм шифрования в модернизированной версии не отличатся от классической, разве что на него требуется меньшее число операций. Для того чтобы абоненту В передать абоненту А сообщение х длины к с компонентами из СЕ{д), требуется выполнить следующие шаги.
1. Абонент В случайным равновероятным образом генерирует вектор ошибок е длины п над СЕ {д) веса не более Ь.
2. Абонент В получает шифрованное сообщение у = хС + е = х{1,0) + е = (х,х0) + е, которое по открытому каналу связи передает абоненту А.
Для расшифрования сообщения абонент А совершает следующие действия.
1. По вектору у вычисляется синдромный вектор Б (синдромный многочлен Б(х)).
2. С помощью алгоритма декодирования полиномиальной сложности находится вектор е веса не более Ь, который имеет синдром Б.
3. После этого вычисляется кодовый вектор и = у — е, из которого извлекается сообщение х (из первых к позиций вектора и).
Есть несколько оснований для использования кодов Гоппы в криптосистеме Мак-Элиса: 1) существуют быстрые алгоритмы полиномиальной сложности декодирования кодов Гоппы; 2) код Гоппы легко генерировать, но очень сложно обнаружить «замаскированный» код Гоппы; 3) код Гоппы можно построить с помощью любого неприводимого многочлена над СЕ{2т), при этом порождающая матрица кода будет иметь «почти случайный» вид.
Заметим, что для любой фиксированной длины п существует «очень много» различных кодов Гоппы. Пусть N{д, в, г) — число неэквивалентных неприводимых кодов Гоппы над полем СЕ(д) длины с/ и степени г многочлена С{х). Точной формулы для N{д,в,г) пока неизвестно. В работе [9] приводятся верхние границы для N{д,в,г), которые являются точными для некоторых небольших значений параметров. Например, число двоичных неприводимых кодов Гоппы длины п = 128 и степенью неприводимого многочлена г =10 оценивается сверху числом N{2,7,10) = 1037499670492467 > 1015. А для числа N{2, 7,15) (т. е. для кодов той же длины 128 с неприводимым многочленом С{х) степени 15) уже выполнено равенство N{2, 7,15) = 23765478069520611201643781 > 2 ■ 1025. Если увеличить длину
кодов до n = 4096 (чтобы обеспечивался должный уровень криптостойкости системы Мак-Элиса), то для данной границы уже при r = 7 получаем N(2,12, 7) = 13728607731106143 > 1016.
Заметим, что криптосистема Мак-Элиса требует очень большого объема памяти для своих параметров. Для примера, чтобы добиться 80-битной криптостойкости, для алгоритма RSA необходим 1024-битный ключ, при этом для криптосистемы Мак-Элиса требуется ключ размера не менее 450 кбит для достижения той же степени криптостойкости.
Пример 1 (классическая криптосистема Мак-Элиса). Рассмотрим расширение поля GF(2) С GF(24).
Пусть поле ОЕ(24) строится на основе примитивного многочлена р(х) элемент поля ОЕ(24):
x4 + x + 1, а — примитивный
а0 =
а = а10 = а12 = а14 =
1
2
1
1 +а
а +а 1 +а +а 1 +а +а 1
+а3
+а3 = +а3 =
1000, а1 = а = 0100,
0010, а3 = а3 = 0001,
1100, а5 = а +а2 = 0110,
0011, а7 = 1 +а +а3 = 1101,
1010, а9 = а +а3 = 0101,
1110, а11 = а +а2 +а3 = 0111,
1111, а13 = 1 +а2 +а3 = 1011,
1001, а15 = 1 = 1000.
x2 + x + а3. Так как след элемента а3 в поле
Пусть Ь = ОЕ(24) = {0,1,а,а2,...,а14}, О(х) ОЕ(24) не равен нулю, то многочлен О(х) в этом поле не имеет корней. Поэтому из неприводимости О(х) над ОЕ(24) следует, что код Г(Ь, О) является сепарабельным, т. е. он исправляет до двух ошибок. Проверочная матрица Н кода Г(Ь, О) примет такой вид:
H
G(0)-0G(0)-
G(1)-1 1G(1)-1
С(а)-1 аО(а)-1
С(а14)-1 а14С(а14)-1
12
12 12
а9 а4 а а8 а6 а3 а6 а а2
а12 а8 а6 а14 а13 а11 1 а11 а13
1 0 0 1 0 1 0 0 0 0 0 0 1 0
1 0 1 1 1 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 1 0 1 0 1 1 1 0
0 1 1 0 0 0 1 1 1 0 0 0 0 1
0 0 1 1 0 1 1 0 1 0 1 1 0 1
1 1 1 0 0 0 0 1 0 1 0 0 0 0
1 1 1 1 1 0 1 1 0 1 1 0 1 1
0 0 1 0 1 1 1 1 0 1 1 1 1 0
14
а а6
а а8
а а5
1 1 1 1 0 0
0 0
Так как все строки матрицы Н линейно независимы, то п — к = 8, к = 8. Выписав построчно фундаментальную систему решений системы однородных линейных уравнений НХ = О, находим порождающую матрицу кода Г(Ь, О):
/101 101 1 100000000\ 1001010011000000 1110010010100000 0101110010010000 0010111010001000 0100111000000100 1010110000000010 \1 101001000000001/
Абонент А генерирует невырожденную матрицу С и перестановочную матрицу Р:
G
C =
( 1 1 0 0 0 0 0 1 \ 00000001 0 0 0 0 0 1 1 0 1110 10 10 1110 10 0 1 01010101 0 0 0 0 1 0 1 0 00010110
C-1 =
( 1 1 0 1 1 1 0 1 \ 0 0 0 1 1 1 0 1 11010010 00100001 0 10 110 10 0 11110 0 0 0 10 110 0 0 01000000
2
а
4
а
6
а
(
1
)
1
P
где a — подстаноЕ абонент A вычисляет матрицу:
( 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ea(0) ^ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
eff(1) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
eCT(15) / 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 )
01 2 со 4 5 6 7 8 9 10 11 12 13 14 15 ^
4 10 13 9 0 7 15 3 14 11 5 1 8 2 12 6
на множестве {0,1, ., 15} (строки и столбцы нумеруем с ну
G = CGP
0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0
0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1
0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1
0 0 0 1 0 1 0 1 1 0 1 1 1 0 1 0
1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1
0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0
0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1
1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1
Параметры п = 16, к = 8, Ь = 2 и матрица С? являются открытым ключом абонента А.
Предположим, что абонент В хочет передать абоненту А сообщение х = (0,1, 1, 1,0, 0,1, 1), которое нужно предварительно зашифровать на открытом ключе абонента А. Абонент В генерирует вектор ошибок веса два и вычисляет:
у = хС + (0,0,0,1, 0, 0,0,1, 0, 0,0,0,0, 0, 0,0) =
= (1,1,0,0, 0,1,1,1,0, 0,1,1,0,0,1, 0).
Сообщение у передается абоненту А по открытому каналу связи. Для расшифрования сообщения у абонент А проделывает следующие действия. Сначала вектор у умножается на Р-1 = РТ:
У = уР-1 = (0,1,0,0,1,1, 0,0,1,1,1,1,0,0,0,1),
т. е. элементы в векторе у переставляются в соответствии с перестановкой а. Для декодирования у применим алгоритм Паттерсона (см. [3; 4]). По вектору у вычисляется синдромный многочлен
S(x) =
15 ~
Vi
1111
+ -7 + -J + -7 +
i=0 i
+--8 +--—-q +--—Tn +--"Тд = a9 + a5x (mod G(x)).
Вычисляется T(x) = (a9 + a5x) 1 = 1 + a x (mod G(x)). Учитывая, что s(x) = ^J~x = a9 + x (mod G(x)), вычисляется p(x):
p(x) = \J T (x) + x = \J 1 + a3x = = (1)8 + (a3)8(a9 + x) = a14 + a9x (mod G(x)). Полагается r = deg G(x) = 2, r_i(x) = G(x), ro (x) = p(x), v_i(x) = 0, vo(x) = 1. При j = 0 выполнено:
degr_i(x) = 2 >2, degro(x) = 2, поэтому с точностью до константы a(x) = r2(x) + xvo(x) = a13 + x + a3x2.
a=
Корнями многочлена а(х) являются Х1 = а4 = а5, Х2 = а6 = а7, поэтому ошибки в векторе у содержатся на 5-й и 7-й позициях. После исправления двух ошибок в векторе у новый вектор примет вид
у = (0,1,0,0,1,0,0,1,1,1,1,1,0,0,0,1) = хСО = хо.
Так как столбцы матрицы О с номерами 7, 9-15 (нумеруя с нуля) образуют единичную матрицу, то из вектора у извлекаем вектор X = (1,1,1,1,0, 0, 0,1). Осталось вычислить:
х = хс-1 = (0,1,1,1,0,0,1,1). 2. Криптосистема Нидеррайтера
Другим важным примером кодовых криптосистем является схема Нидеррайтера [10]. Открытым ключом в этой криптосистеме являются параметры п,к,Ь и матрица Iх = СНРБ, где Н — проверочная матрица алгебраического [п, к, ¿]-кода над ОЕ(д) (в оригинальной статье предлагалось использовать обобщенные коды Рида — Соломона, но такой вариант взломан), С — невырожденная матрица порядка п — к над полем ОЕ(д), Р и Б — перестановочная и диагональная матрицы порядка п соответственно (для двоичных кодов матрица Б не используется). Маскирующие матрицы С, Р, Б и проверочная матрица Н являются секретным ключом абонента А.
Предположим, что абонент В хочет передать абоненту А сообщение е длины п над ОЕ(д) веса не более Ь, т. е. сообщения в этом случае не являются кодовыми словами, а представляют собой всевозможные векторы ошибок, которые этот код в состоянии исправлять (как помещать открытые тесты в векторы-ошибок см., напр., [11]). Шифрованное сообщение длины п — к получается следующим образом: у = еНТ.
При этом наибольшая стойкость будет при тЬ(е) = Ь. Для расшифрования сообщения абонент А совершает следующие действия.
1. Абонент А умножает полученный вектор на (СТ)-1:
5 = у(СТ )-1 = еБРТ НТ СТ (СТ )-1 = еБРТ НТ = ХНТ, где X = еБРТ, тЬ(е) = тЬ(е).
2. В смежном классе с синдромом 5 теперь с помощью алгоритма декодирования вычисляется вектор ошибок X (здесь можно применить любой алгоритм декодирования, который по синдромному вектору находит вектор ошибок: алгоритм Сугиямы, Берлекэмпа — Месси и т. д.).
3. Нахождение исходного сообщения е путем умножения вектора X на РБ-1: е = ХРБ-1.
Заметим, что на втором шаге алгоритма расшифрования вычисляется вектор ошибок по синдромному вектору, а не по искаженному вектору.
Приведем также модификацию алгоритма расшифрования сообщения у = еНТ.
1. Умножение полученного вектора у на (СТ)-1:
5 = у(СТ )-1 = еБРТ НТ = XHT,
где X = еБРТ, wt(X) = тЬ(е).
2. Нахождение какого-либо вектора X, который является решением относительно х уравнения 5 = = хНТ (т. е. X и X имеют одинаковые синдромы и поэтому принадлежат одному смежному классу, причем и = X — X — кодовое слово, поэтому X = и + X. Следовательно, X является вектором вида X = гО + X для некоторого неизвестного информационного вектора г).
3. Нахождение вектора ошибок X с помощью алгоритма декодирования, примененного для вектора X.
4. Нахождение исходного сообщения е путем умножения вектора X на РБ-1: е = XРБ-1.
Заметим, что 5 = хНТ — синдромный вектор и что X является одним из решений уравнения 5 = = хНТ относительно х. Нахождение какого-либо решения этого уравнения является простой задачей, так как это система из п — к линейных уравнений с п неизвестными. Но нахождение из всех решений вектора минимального веса является очень сложной задачей.
Если использовать коды Гоппы, то многочлен О(х) может выступать дополнительным секретным параметром.
Теорема 1 ([12]). Пусть H — двоичная матрица размера (n — к) х n, S = eHT — ненулевой синдромный вектор, wt(e) ^ t. Тогда нахождение двоичного вектора e веса не более t с синдромом S является NP-полной задачей.
В работе [13] показано, что стойкости криптосистем Мак-Элиса и Нидеррайтера эквивалентны, поэтому любую эффективную атаку на одну из схем можно легко преобразовать в атаку на другую схему.
Для криптосистемы Нидеррайтера также имеется модернизированный вариант (с использованием кодов r(L,G)) для уменьшения объема хранимой информации. Алгоритм выработки открытого ключа H для модернизированной криптосистемы имеет следующий вид.
1. Случайным образом генерируется многочлен G(x) степени r над полем GF(qm) (например, можно сгенерировать неприводимый многочлен).
2. Случайным образом выбираются n элементов поля GF(qm), не являющиеся корнями многочлена G(x), которые определяют множество L. Если G(x) неприводим, то можно взять любые различные n элементов поля GF(qm).
3. Вычисляется проверочная матрица H' размера r х n на основе L и G(x).
4. С помощью элементарных преобразований строк и перестановки столбцов матрица H' приводится к каноническому виду H = CH'P = (QTn-k)xk, In-k). L также умножается на P справа.
5. На основе матрицы H вычисляется порождающая матрица G в канонической форме: G =
= (Ik, Qkx(n-k)).
Шифрование сообщения в модернизированной криптосистеме совпадает с классической версией y = = eHT, разве что необходимо выполнить меньшее число операций. Для расшифрования сообщения необходимо выполнить следующие действия.
1. Вычисляется S = y(CT)-1 = ePTH'T = êH'T, где ê = ePT, wt(e) = wt(e).
2. С помощью алгоритма декодирования по синдромному вектору S находится вектор ê, после чего вычисляется e = êP.
Пример 2 (классическая криптосистема Нидеррайтера). Рассмотрим, как и в примере 1, расширение
ОЕ (2) С ОЕ (24), Ь = ОЕ (24) = {0,1,а,а2,... ,а14}, многочлен О(х) с проверочной матрицей Н. Матрицы С и Р возьмем из примера 1. Абонент А вычисляет матрицу:
00 11
x2 + x + а, код r(L, G)
Hê = CHP =
1 0 0 0 1 0 1
1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1
0 0 1
100
010 0 0 1
00 11 01
001 1 1 1
0
0
0 0 11
1
10 110 0 110 0
1000 1011
10
11 11 0 0 0 1
1
0 0 1/
Параметры п, к, Ь и матрица Н являются открытым ключом абонента А.
Абонент В помещает сообщение х в вектор ошибок е длины п веса не более Ь = 2. Пусть
е = (0,0,1, 0,0,0,0, 0, 0,0,1, 0, 0, 0,0,0). Абонент В шифрует сообщение е с помощью открытого ключа Н:
у = еН = (0, 0,0,1,0,1,1,1).
Шифрованное сообщение у передается по открытому каналу связи абоненту А.
Абонент А, получив сообщение у, расшифровывает его следующим образом. Сначала происходит умножение вектора у на матрицу (СТ)-1 = (С-1 )Т:
5 = у(СТ)-1 = (1,1,0,1, 0,1,1,0).
Зафиксируем частное решение X системы уравнений хНТ = 5:
X = (0, 0, 0,0,1,1,1, 0,0,0,0, 0, 0,0,0, 0).
После применения к вектору х алгоритма декодирования, например алгоритма Паттерсона:
Б (х) = а13 + а7х, Т (х) = Б-1(х) = а14 + ах,
р(х) = \] Т (х) + х = а8 + а2х, а(х) = г2(х) + х^(х) = а + х + а4х, Х1 = 1 = а1, Х2 = а12 = а1з, получаем вектор ошибок е:
е = (0,1, 0, 0,0,0,0, 0, 0,0,0, 0, 0,1,0,0). Для нахождения вектора е осталось вычислить:
е = еР = (0,0,1,0, 0, 0,0,0,0, 0,1,0,0,0, 0, 0).
3. Современная кодовая криптосистема
Рассмотрим современную кодовую криптосистему [14; 15] на основе кодов Гоппы, которая использует идеи крипосистем Мак-Элиса и Нидеррайтера.
Генерация ключа. Абонент А производит следующую последовательность действий.
1. Генерация случайным образом неприводимого многочлена О(х) € ОЕ(2т) степени г =
2. Случайным образом выбирается множество Ь = {а1, а2,..., ап} различных элементов поля ОЕ (2т).
3. Вычисляется проверочная матрица Н' размера г х п на основе множества Ь и многочлена О(х): (Н % = а^1О(а^ )-1.
4. Пусть в1,..., @т — базис пространства ОЕ(2т) над ОЕ(2) (например, если а — примитивный элемент поля ОЕ(2т), то можно взять вг = а®-1, I = 1,...,т). Каждый элемент матрицы Н' заменяется двоичным вектором-столбцом длины т с компонентами из поля ОЕ(2), где данный столбец является координатным столбцом элемента матрицы Н' в базисе @1,...,@т. Тем самым получим двоичную матрицу Н размера гт х п над ОЕ(2).
5. С помощью элементарных преобразований строк матрица Не приводится к систематическому виду Н = (1п-к, Я(п-к),к). Если это невозможно, то происходит переход в шаг 1.
После таких манипуляций открытым ключом абонента А являются п, к, Н = (1п-к, Я). Секретным ключом являются параметры Ь и О(х) неприводимого (следовательно, сепарабельного) кода Гоппы Г(Ь, О) длины п и размерности к = п — тг.
Шифрование сообщения. Пусть Н — некоторая хеш-функция (например, с длиной свертки 256), е — двоичный открытый текст веса Алгоритм шифрования абонентом В сообщения е на основе открытого ключа абонента В имеет следующий вид.
1. Вычисление двоичного вектора со =
еНТ = е(1п-к, Я)Т длины тг.
2. Вычисление значения хеш-функции от е: С1 = Н(е).
Шифрованным сообщением будет являться пара (со, С1).
Расшифрование сообщения. После получения сообщения (с0,с1) для его расшифрования абонент А проделывает следующие шаги.
1. Вектор со дополняется к = п — гт нулями до длины п: V = (со, 0,..., 0).
2. С помощью алгоритма декодирования находится (единственный) кодовый вектор и € Г(Ь, О), находящийся на расстоянии Хэмминга до вектора V не более т. е. ¿(и, V) ^ £ (ниже приводится этому обоснование).
3. Вычисляется вектор е = V — и.
4. Если юЬ(е) = еНТ = со и Н(е) = С1, то е = е — исходный открытый текст.
Заметим, что на втором шаге алгоритма расшифрования синдром вектора V совпадает с со: уНТ =
= со. Действительно, уН Т = , Q(n-k),k)Т = VI ^тп I = со. Поэтому векторы е и V имеют
V Qk,(n-k) )
одинаковые синдромы, значит, принадлежат одному смежному классу. Следовательно, искомый кодовый вектор равен и = V — е.
Замечание 2. Алгоритмы шифрования и расшифрования можно модернизировать следующим образом. Пусть х — исходный двоичный открытый текст, длина которого совпадает с длиной сверок хеш-функции Н. Генерируется случайный двоичный вектор (ошибок) е длины п веса Ь, вычисляются со = = еНТ, С1 = Н(е), у = хфс1. Шифрованным сообщением будет являться пара (со, у). Для расшифрования производятся следующие действия: V = (со, 0,..., 0), находится кодовый вектор и € Г(Ь, О) со свойством ¿(и, у) ^ Ь, вычисляются е = V — и, с1 = Н(е). Тогда х = у ф с1.
4. Протоколы аутентификации на основе кодовых криптосистем
Построение протоколов аутентификации с нулевым разглашением можно реализовать, используя известные алгоритмы открытого шифрования. В качестве секретной информации, которой владеет доказывающая сторона А, будет использоваться секретный ключ х асимметричного шифра. Пусть Бх — алгоритм расшифрования на секретном ключе х, Еу — алгоритм шифрования на открытом ключе у. Проверяющая сторона шифрует некоторое сообщение М на открытом ключе у и передает криптограмму С = Еу (М) абоненту А. Абонент А демонстрирует владение секретной информацией х тем, что расшифровывает сообщение своим секретным ключом: М = Бх(С) и передает сообщение М проверяющей стороне В. Для проверяющей стороны В это не несет никакой дополнительной информации о секретном ключе х, так как у В до этого было то же самое сообщение М. При этом при построении протоколов с нулевым разглашением знания нужен некоторый механизм, который позволит владельцу секретного ключа (доказывающему А) до передачи восстановленного сообщения М проверяющему В убедиться в том, что последнее уже известно проверяющему В.
В качестве такого механизма могут использоваться алгоритмы хеширования (хеш-функции). Данный механизм используется в протоколах с нулевым разглашением, описанных в стандарте [16].
В стандарте [16] регламентируется формирование запроса в виде пары значений (С,Н), где С — шифртекст, полученный путем шифрования некоторого сообщения М по открытому ключу доказывающего А, и Н — значение хеш-функции, вычисленное от сообщения М с использованием некоторой хеш-функции Н: Н = Н(М). Получая запрос (С, Н), доказывающий имеет возможность убедиться в том, что восстановленное им из шифртекста С сообщение М известно проверяющему. Для этого достаточно вычислить значение хеш-функции от восстановленного сообщения и сравнить его со значением второго элемента запроса.
В соответствии с [16] двухшаговый протокол с нулевым разглашением знания включает следующие шаги.
1. Проверяющий В выбирает произвольное сообщение М и, используя алгоритм открытого шифрования Еу и открытый ключ у доказывающего, зашифровывает сообщение М: С = Еу (М). Затем, используя хеш-функцию Н, вычисляет значение хеш-функции от : Н = Н(М). После этого он отправляет доказывающему А пару значений (С, Н) в качестве своего запроса.
2. Доказывающий А расшифровывает криптограмму С, используя свой личный секретный ключ х, в результате чего получает сообщение М = Бх(С). Затем он вычисляет значение хеш-функции от М: Н = Н(М), сравнивает значения ^ и Н, если Н = Н, то отправляет проверяющему значение М в качестве своего ответа.
3. Если выполнено равенство М = М, то проверяющий В принимает доказательство; если равенство не выполнено, то отвергает.
Протокол аутентификации на основе классической криптосистемы Мак-Элиса. Абонент А фиксирует порождающую матрицу О некоторого [п, к, ¿]-кода над ОЕ(д), исправляющего Ь и менее ошибок, невырожденную матрицу 5 порядка к над полем ОЕ(д), перестановочную и диагональную матрицы Р и Б порядка п.
Матрица С? = 5ОРБ является открытым ключом абонента А, как и параметры п, к, Ь. Маскирующие матрицы 5, Р, Б и порождающая матрица О являются секретным ключом абонента А.
Протокол аутентификации имеет следующий вид.
1. Проверяющий B генерирует случайное сообщение M длины k с компонентами из GF(q), а также вектор ошибок e длины n над GF(q) веса не более t. Вычисляет C = MG + e, H = h(M) и отправляет доказывающему A пару значений (C,H).
2. Доказывающий A вычисляет C' = CD—^Pдекодирует вектор M' на основе вектора C', вычисляет M = M'S-1, вычисляет H = h(M). Если H = H, то отправляет проверяющему значение M в качестве своего ответа.
3. После этого проверяющий B проверяет равенство M = M.
Аналогичным образом можно использовать любую кодовую криптосистему в качестве основы для протокола аутентификации.
Выводы
Рассмотренная в работе тема является актуальной, так как затрагивает вопрос существования постквантовых криптосистем с открытым ключом. Приведены некоторые вариации кодовых криптосистем, включая некоторые современные модификации на основе кодов Гоппы. Приводится пример декодирования кода Гоппы на основе алгоритма Паттерсона. Также в работе предложен вариант протокола аутентификации на основе кодовых криптосистем. Представленный протокол имеет нулевое разглашение знания.
Литература
[1] McEliece R.J. A Public-Key Cryptosystem Based On Algebraic Coding Theory // DSN Progress Report. 1978. Vol. 42-44. P. 114-116.
[2] Status Report on the First Round of the NIST Post-Quantum Cryptography Standardization Process. National Institute of Standards and Technology. Internal Report 8240. January, 2019. 27 p. DOI: http://doi.org/10.6028/NIST.IR.8240.
[3] Patterson N.J. The algebraic decoding of Goppa codes // IEEE Transactions on Information Theory. 1975. Vol. 21, №. 2. P. 203-207. DOI: https://doi.org/10.1109/TIT.1975.1055350.
[4] Рацеев С.М. Об алгоритмах декодирования кодов Гоппы // Челяб. физ.-матем. журн. 2020. Т. 5, № 3. С. 327-341. DOI: https://doi.org/10.47475/2500-0101-2020-15307.
[5] Рацеев С.М., Череватенко О.И. О простом алгоритме декодировании кодов БЧХ, кодов Рида — Соломона и кодов Гоппы // Вестник СибГУТИ. 2020. № 3 (51). С. 3-14. URL: https:// www.elibrary.ru/item.asp?id=44408789; http://vestnik.sibsutis.ru/showpapper.php?act=showpapper&id=950
[6] Рацеев С.М., Череватенко О.И. Об алгоритмах декодирования обобщенных кодов Рида — Соломона // Системы и средства информатики. 2020. Т. 30, № 4. С. 83-94. DOI: https://doi.org/10.14357/08696527200408.
[7] Рацеев С.М., Череватенко О.И. Об алгоритмах декодирования обобщенных кодов Рида — Соломона на случай ошибок и стираний // Вестник Самарского университета. Естественнонаучная серия. 2020. Т. 26, № 3. С. 17-29. DOI: https://doi.org/10.18287/2541-7525-2020-26-3-17-29.
[8] Bhaskar Biswas, Nicolas Sendrier. McEliece Cryptosystem Implementation: Theory and Practice // Buchmann J., Ding J. (eds.) Post-Quantum Cryptography. PQCrypto 2008. Lecture Notes in Computer Science. Vol. 5299. Springer, Berlin; Heidelberg, 2008. DOI: https://doi.org/10.1007/978-3-540-88403-3_4.
[9] Fitzpatrick P., Ryan J.A. Counting irreducible Goppa codes. Conference: Workshop on Coding and Cryptography (WCC). Versaille, France. Volume: 2003. March, 2003. URL: https://www.researchgate.net/publication/276265397_Counting_irreducible_Goppa_codes.
[10] Niederreiter H. Knapsack-type cryptosystems and algebraic coding theory // Problems of Control and Information Theory. 1986. Vol. 15, № 2. P. 159-166.
[11] Bernstein Daniel J., Buchmann Johannes, Dahmen Erik (eds.) Post-Quantum Cryptography. Berlin, Heidelberg: Springer-Verlag, 2009. DOI: http://dx.doi.org/10.1007/978-3-540-88702-7_4.
[12] Berlekamp E., McEliece R.J., Tilborg H. Van. On the inherent intractability of certain coding // IEEE Transactions on Information Theory. 1978. Vol. IT-24, № 3. Р. 384-386. DOI: https://doi.org/10.1109/TIT.1978.1055873.
[13] Сидельников В.М. Криптография и теория кодирования // Московский университет и развитие криптографии в России: материалы конференции. Москва: МГУ, 2002. 22 с.
[14] Wang W., Szefer J., Niederhagen R. FPGA-based key generator for the niederreiter cryptosystem using binary Goppa codes. In: Fischer W., Homma N. (eds.) Cryptographic Hardware and Embedded Systems - CHES 2017 // CHES 2017. Lecture Notes in Computer Science. Vol. 10529. Р. 253-274. Springer, Cham. DOI: https://doi.org/10.1007/978-3-319-66787-4_13.
[15] Bernstein D., Chou T., Lange T., Maurich I., Misoczki R., Niederhagen R., Persichetti E., Peters C., Schwabe P., Sendrier N., Szefer J., Wang W. Classic McEliece: conservative code-based cryptography. Project documentation. URL: https://classic.mceliece.org/nist/mceliece-20190331.pdf, свободный. Яз. англ. (дата обращения: 02.12.2020).
[16] ISO/IEC 9798-5:2009(E) «Information technology - Security techniques - Entity authentication - Part 5: Mechanisms using zero-knowledge technique». URL: https://www.iso.org/standard/50456.html.
DOI: 10.18287/2541-7525-2021-27-1-62-73 Submited: 11.12.2020
Revised: 20.01.2021 Accepted: 28.02.2021
S.M. Ratseev
Ulyanovsk State University, Ulyanovsk, Russian Federation E-mail: ratseevsm@mail.ru. ORCID: https://orcid.org/0000-0003-4995-9418
O.I. Cherevatenko
Ulyanovsk State University of Education, Ulyanovsk, Russian Federation E-mail: chai@pisem.net. ORCID: https://orcid.org/0000-0003-3931-9425
V.A. Chernyavskaya Ulyanovsk State University, Ulyanovsk, Russian Federation E-mail: vera.chernya@yandex.ru. ORCID: https://orcid.org/0000-0001-9875-2232
ON SOME CRYPTOSYSTEMS BASED ON ALGEBRAIC CODES
ABSTRACT
In 1978 McEliece built the first public key cryptosystem based on error-correcting codes. At the same time, effective attacks on the secret keys of this cryptosystem have not yet been found. The work describes the classical and modernized cryptosystems of McEliece and Niederreiter, also examples of their practical application based on Goppa codes using the Patterson algorithm. Also the algorithms of two-step authentication protocols with zero disclosure based on error-correcting codes are given.
Key words: McEliece cryptosystem; error-correcting codes; Goppa codes; code decoding.
Citation. Ratseev S.M., Cherevatenko O.I., Chernyavskaya V.A. On some cryptosystems based on algebraic codes. Vestnik Samarskogo universiteta. Estestvennonauchnaia seriia = Vestnik of Samara University. Natural Science Series, 2021, vol. 27, no. 1, pp. 62-73. DOI: http://doi.org/10.18287/2541-7525-2021-27-1-62-73. (In Russ.)
Information about the conflict of interests: authors and reviewers declare no conflict of interests.
© Ratseev S.M., 2021
Sergey Mihaylovich Ratseev — Doctor of Physical and Mathematical Sciences, associate professor, Department of Information Security and Control Theory, Ulyanovsk State University, 42, Leo Tolstoy Street, Ulyanovsk, 432017, Russian Federation.
©c Cherevatenko O.I., 2021 Olga Ivanovna Cherevatenko — Candidate of Physical and Matheatical Sciences, associate professor, Department of Higher Mathematics, Ulyanovsk State University of Education, 4/5, Lenin Square, Ulyanovsk, 432063, Russian Federation.
©c Chernyavskaya V.A., 2021 Vera Alekseevna Chernyavskaya — student of the Department of Information Security and Control Theory, Ulyanovsk State University, 42, Leo Tolstoy Street, Ulyanovsk, 432017, Russian Federation.
References
[1] McEliece R.J. A Public-Key Cryptosystem Based On Algebraic Coding Theory. DSN Progress Report, 1978, no. 42-44, pp. 114-116.
[2] Status Report on the First Round of the NIST Post-Quantum Cryptography Standardization Process. National Institute of Standards and Technology. Internal Report 8240. January, 2019, 27 p. DOI: https://doi.org/10.6028/NIST.IR.8240
[3] Patterson N.J. The algebraic decoding of Goppa codes. IEEE Transactions on Information Theory, 1975, vol. 21, no. 2, pp. 203-207. DOI: https://doi.org/10.1109/TIT.1975.1055350.
[4] Ratseev S.M. On decoding algorithms for Goppa codes. Chelyabinskiy Fiziko-Matematicheskiy Zhurnal = Chelyabinsk Physical and Mathematical Journal, 2020, vol. 5, no. 3, pp. 327-341. DOI: https://doi.org/10.47475/2500-0101-2020-15307. (In Russ.)
[5] Ratseev S.M., Cherevatenko O.I. On a simple algorithm for decoding BCH codes, Reed-Solomon codes, and Goppa codes. Vestnik SibGUTI, 2020, № 3 (51), pp. 3-14. Available at: https://www.elibrary.ru/item.asp?id=44408789; http://vestnik.sibsutis.ru/showpapper.php?act=showpapper&id=950. (In Russ.)
[6] Ratseev S.M., Cherevatenko O.I. On decoding algorithms for generalized Reed-Solomon codes. Sistemy i Sredstva Informatiki = Systems and Means of Informatics, 2020, vol. 30, issue 4, pp. 83-94. DOI: https://doi.org/10.14357/08696527200408. (In Russ.)
[7] Ratseev S.M., Cherevatenko O.I. On decoding algorithms for generalized Reed-Solomon codes with errors and erasures. Vestnik Samarskogo universiteta. Estestvennonauchnaia seriia = Vestnik of Samara University. Natural Science Series, 2020, vol. 26, no. 3, pp. 17-29. DOI: https://doi.org/10.18287/2541-7525-2020-26-3-17-29. (In Russ.)
[8] Bhaskar Biswas, Nicolas Sendrier. McEliece Cryptosystem Implementation: Theory and Practice. In: Buchmann J., Ding J. (eds.) Post-Quantum Cryptography. PQCrypto 2008. Lecture Notes in Computer Science, 2008, vol 5299, pp. 47-62. Springer, Berlin; Heidelberg. DOI: https://doi.org/10.1007/978-3-540-88403-3_4.
[9] Fitzpatrick P., Ryan J.A. Counting irreducible Goppa codes. Workshop on Coding and Cryptography (WCC). At: Versaille, France. Voleume: 2003. Available at: https://www.researchgate.net/publication/276265397_Counting_irreducible_Goppa_codes.
[10] Niederreiter H. Knapsack-type cryptosystems and algebraic coding theory. Problems of Control and Information Theory, 1986, vol. 15, no. 2, pp. 159-166.
[11] Bernstein Daniel J.; Buchmann Johannes; Dahmen Erik (eds.) Post-Quantum Cryptography. Berlin; Heidelberg: Springer-Verlag, 2009, pp. 95-145. DOI: http://dx.doi.org/10.1007/978-3-540-88702-7_4.
[12] Berlekamp E., McEliece R.J., Tilborg H. Van. On the inherent intractability of certain coding. IEEE Transactions on Information Theory, 1978, vol. IT-24, no. 3, May 1978, pp. 384-386. DOI: https://doi.org/10.1109/TIT.1978.1055873.
[13] Sidelnikov V.M. Cryptography and coding theory. In: Materials of the conference «Moscow State University and Development of Cryptography in Russia». Moscow: MGU, 2002, 22 p. (In Russ.)
[14] Wang W., Szefer J., Niederhagen R. FPGA-based key generator for the niederreiter cryptosystem using binary Goppa codes. In: Fischer W., Homma N. (eds.) Cryptographic Hardware and Embedded Systems - CHES 2017. CHES 2017. Lecture Notes in Computer Science, 2017, vol. 10529, pp. 253-274. Springer, Cham. DOI: https://doi.org/10.1007/978-3-319-66787-4_13.
[15] Bernstein D., Chou T., Lange T., Maurich I., Misoczki R., Niederhagen R., Persichetti E., Peters C., Schwabe P., Sendrier N., Szefer J., Wang W. Classic McEliece: conservative code-based cryptography. Project documentation. Available at: https://classic.mceliece.org/nist/mceliece-20190331.pdf (accessed: 02.12.2020).
[16] ISO/IEC 9798-5:2009(E) Information technology - Security techniques - Entity authentication - Part 5: Mechanisms using zero-knowledge technique. Available at: https://www.iso.org/standard/50456.html.