Криптосистема Нидеррайтера
— криптосистема с
открытыми ключами
, основанная на
теории алгебраического кодирования
, разработанная в 1986 году Харальдом Нидеррайтером
. В отличие от
криптосистемы McEliece
, в криптосистеме Нидеррайтера используется
проверочная матрица кода
. Криптосистема Нидеррайтера позволяет создавать
цифровые подписи
и является кандидатом для
постквантовой криптографии
, поскольку устойчива к атаке с использованием
алгоритма Шора
.
Используемый в криптосистеме Нидеррайтера алгоритм основан на
сложности
декодирования полных
линейных кодов
.
Несмотря на то, что данная криптосистема была взломана, некоторые её
остаются криптостойкими
Алгоритм работы
Генерация ключа
-
Алиса выбирает
код
над
полем Галуа
, исправляющий
ошибок. Этот код должен обладать эффективным алгоритмом декодирования
.
-
Алиса генерирует
проверочную матрицу
кода
.
-
Алиса выбирает
случайную
невырожденную матрицу
над полем
и некоторую
матрицу перестановки
.
-
Алиса вычисляет
матрицу
-
Открытым ключом
Алисы является пара
.
Закрытым ключом
является набор
.
Шифрование сообщения
В данном случае сообщения — это все
векторы с координатами из поля
с весом, не превосходящим
. Таким образом, сообщениями являются все возможные ошибки, которые выбранный код в состоянии
исправить
.
Предположим, что Боб хочет отправить сообщение Алисе, чей открытый ключ
.
-
Боб представляет своё сообщение в виде двоичной последовательности
длины
, имеющей вес, не превосходящий
.
-
Боб вычисляет шифротекст по формуле:
. Таким образом, шифротекстом в криптосистеме Нидеррайтера является зашумленный
синдром
шифруемого вектора ошибки
.
Расшифровывание сообщения
После получения сообщения
, Алиса выполняет следующие действия:
-
Алиса вычисляет
. Заметим, что, так как
—
матрица перестановки
, вес
совпадает с весом
и не превосходит
, и потому алгоритм декодирования для
может найти вектор ошибки, соответствующий синдрому
.
-
Алиса использует алгоритм быстрого декодирования для кода
, чтобы найти
.
-
Алиса вычисляет сообщение
.
Оригинальная криптосистема и её модификации
В оригинальной криптосистеме Нидеррайтер предлагал использовать
коды Рида-Соломона
и не использовал матрицу перестановки
. Однако такая система оказалась нестойкой и была взломана
и Шестаковым в 1992 году
. Авторы показали, что возможно угадать структуру закрытого ключа по открытому и подобрать такие матрицы
и
, что
.
После этого для повышения
криптостойкости
системы было предложено использовать матрицу перестановки
. Кроме того, появились различные модификации системы, например:
-
использующие различные метрики, отличные от классической
хэмминговой
, например,
ранговую
: примером этого является модифицированная система GPT
-
использующие коды со специфическими свойствами. Так, модификации, основанные на кодах
Гоппы
, все ещё остаются криптостойкими
.
Преимущества и недостатки системы
Преимущества
-
В отличие от McEliece, в криптосистеме Нидеррайтера не используются случайные параметры. Таким образом, результат шифрования одного и того же текста будет одинаковым. Этот факт позволяет использовать именно систему Нидеррайтера, а не McEliece, для создания
электронно-цифровой подписи
.
-
Размер открытого ключа в криптосистеме Нидеррайтера в
раз меньше, чем в McEliece
.
-
По сравнению с
RSA
, скорость шифрования выше приблизительно в 50 раз, а дешифрования — в 100 раз
.
Недостатки
-
Для шифрования произвольного сообщения необходим алгоритм перевода в
-арный вектор длиной
веса не более
.
-
Размер ключей больше, чем в классических криптосистемах с открытым ключом (
RSA
,
Схема Эль-Гамаля
,
ГОСТ Р 34.10-2012
).
-
Размер шифротекста намного больше, чем размер шифруемого сообщения (если сообщение размера
переводится в вектор длиной
и шифруется, то получается шифротекст размером
, что не менее, чем в 2 раза превосходит
).
Ниже в таблице приведены различные параметры для криптосистем McEliece, Нидеррайтера и RSA, наглядно показывающие их преимущества и недостатки
.
|
McEliece
-
n=1024, k=524, t=101
-
бинарный код
|
Криптосистема Нидеррайтера
-
n=1024, k=524, t=101
-
бинарный код
|
RSA
-
1024-битные модули
-
e=17
|
Размер открытого ключа
-
в байтах
|
67072
|
32750
|
256
|
Количество бит
-
полезной информации
|
512
|
276
|
1024
|
Число бинарных операций
-
для шифрования
|
514
|
50
|
2402
|
Число бинарных операций
-
для расшифровывания
|
5140
|
7863
|
738112
|
Эквивалентность криптостойкости системы Нидеррайтера и системы McEliece
Как показано в оригинальной статье о
системе Сидельникова
, атака на систему Нидеррайтера может быть полиномиально сведена к атаке на
систему McEliece
и обратно.
Пусть известен
синдром
. Тогда можно вычислить вектор
с некоторым
таким, что
. Вектор
будет рассматриваться как шифротекст в системе McEliece. Если найдена
криптографическая атака
со сложностью
для системы McEliece, то есть известен алгоритм вычисления вектора
, который является секретной информацией в этой системе, то вектор
, являющийся
секретом
для системы Нидеррайтера, можно представить в виде
. Таким образом, сложность определения
совпадает со сложностью определения
.
Если же известна криптоатака со сложностью
для системы Нидеррайтера, то возможно, используя в качестве шифротекста вектор
, вычислить векторы
и
.
Построение цифровой подписи
В 2001 году Николя Куртуа, Мэттью Финиаз и Николя Сандриер показали
, что криптосистема Нидеррайтера может быть использована для создания
электронной подписи
.
Подпись сообщения
Пусть
— открытый ключ криптосистемы Нидеррайтера, использующей
-линейный код.
Для подписи документа
необходимо:
-
Выбрать
хеш-функцию
, дающей
символов на выходе. Таким образом, результат данной
хеш-функции
можно представить в виде синдрома и попытаться декодировать;
-
Вычислить
хеш
;
-
Для каждого
вычислить
;
-
Найти наименьший номер
такой, что синдром
будет возможно декодировать. Пусть
— результат декодирования синдрома
;
-
Подписью документа
является пара
.
Проверка подписи
-
Вычислить
;
-
Вычислить
;
-
Сравнить
и
: если они совпадают — подпись верна.
Пример работы системы
Пусть для кодирования был выбран
код
Рида-Соломона
над полем Галуа
, построенным по модулю
неприводимого многочлена
, с порождающим многочленом
Тогда,
порождающая матрица
кода:
Проверочная матрица кода:
Заметим, что расстояние данного кода
, то есть число исправляемых ошибок
.
Генерация ключей
Пусть выбрана матрица
. Тогда
обратная
к ней матрица
Пусть выбрана матрица перестановки
В этом случае открытым ключом системы будет матрица:
Шифрование
Пусть выбранное сообщение было представлено в виде вектора
веса 2.
Зашифрованное сообщение:
Расшифровывание
Принятый вектор
Для него вычислим
декодируемый синдром
Используя
алгоритм декодирования кода Рида-Соломона
, декодируем
.
Получится вектор
После чего вычислим исходный вектор
См. также
Примечания
-
(англ.)
//
— 1986. — Vol. 15, Iss. 2. — P. 159—166.
-
↑
//
—
М.
: 2009. — Т. 1, вып. 2. — С. 121—127. — ISSN
-
↑
,
Gabidulin E.
,
,
(англ.)
//
—
,
Springer Science+Business Media
, 2014. — Vol. 70, Iss. 1. — P. 231—239. — ISSN
;
—
-
,
//
— 1992. — Т. 4, вып. 3. — С. 57—63. — ISSN
;
-
Габидулин Э. М.
//
— 1985. — Т. 21, вып. 1. — С. 3—16.
-
↑
,
(англ.)
//
:
International Conference on the Theory and Applications of Cryptology and Information Security, Beijing, China, October 18-22, 1998, Proceedings
— Berlin:
, 1998. — P. 187—199. — (
; Vol. 1514) —
ISBN 978-3-540-65109-3
— ISSN
;
—
-
//
— 1994. — Т. 4, вып. 3. — С. 191—207. — ISSN
;
-
,
,
(англ.)
//
:
7th International Conference on the Theory and Application of Cryptology and Information Security, Gold Coast, Australia, December 9-13, 2001, Proceedings
/
— London:
Springer Science+Business Media
, 2001. — P. 157—174. — (
; Vol. 2248) —
ISBN 978-3-540-42987-6
— ISSN
;
—
Литература
-
(англ.)
//
:
Third International Workshop, PQCrypto 2010, Darmstadt, Germany, May 25-28, 2010. Proceedings
/
— Berlin:
, 2010. — P. 61—72. — (
; Vol. 6061) —
ISBN 978-3-642-12928-5
— ISSN
;
—
-
,
,
II Криптология //
— Новосибирск:
НГУ
, 2013. — С. 41—49. — 100 с. —
ISBN 978-5-4437-0184-4
-
Шнайер Б.
Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. —
М.
: Триумф, 2002. — 816 с. —
3000 экз.
—
ISBN 5-89392-055-4
.