Криптосистема Нидеррайтера
Криптосистема Нидеррайтера — криптосистема с открытыми ключами, основанная на теории алгебраического кодирования, разработанная в 1986 году Харальдом НидеррайтеромШаблон:Source-ref. В отличие от криптосистемы McEliece, в криптосистеме Нидеррайтера используется проверочная матрица кода. Криптосистема Нидеррайтера позволяет создавать цифровые подписи и является кандидатом для постквантовой криптографии, поскольку устойчива к атаке с использованием алгоритма Шора.
Используемый в криптосистеме Нидеррайтера алгоритм основан на сложности декодирования полных линейных кодов.
Несмотря на то, что данная криптосистема была взломана, некоторые её модификации остаются криптостойкимиШаблон:Source-ref
Алгоритм работы
Генерация ключа
- Алиса выбирает код над полем Галуа , исправляющий ошибок. Этот код должен обладать эффективным алгоритмом декодированияШаблон:Source-ref.
- Алиса генерирует проверочную матрицу кода .
- Алиса выбирает случайную невырожденную матрицу над полем и некоторую матрицу перестановки Шаблон:Source-ref.
- Алиса вычисляет матрицу
- Открытым ключом Алисы является пара . Закрытым ключом является набор .
Шифрование сообщения
В данном случае сообщения — это все векторы с координатами из поля с весом, не превосходящим . Таким образом, сообщениями являются все возможные ошибки, которые выбранный код в состоянии исправитьШаблон:Source-ref.
Предположим, что Боб хочет отправить сообщение Алисе, чей открытый ключ .
- Боб представляет своё сообщение в виде двоичной последовательности длины , имеющей вес, не превосходящий .
- Боб вычисляет шифротекст по формуле: . Таким образом, шифротекстом в криптосистеме Нидеррайтера является зашумленный синдром шифруемого вектора ошибкиШаблон:Source-ref.
Расшифровывание сообщения
После получения сообщения , Алиса выполняет следующие действия:
- Алиса вычисляет . Заметим, что, так как — матрица перестановки, вес совпадает с весом и не превосходит , и потому алгоритм декодирования для может найти вектор ошибки, соответствующий синдрому Шаблон:Source-ref.
- Алиса использует алгоритм быстрого декодирования для кода , чтобы найти Шаблон:Source-ref.
- Алиса вычисляет сообщение .
Оригинальная криптосистема и её модификации
В оригинальной криптосистеме Нидеррайтер предлагал использовать коды Рида-Соломона и не использовал матрицу перестановки . Однако такая система оказалась нестойкой и была взломана Сидельниковым и Шестаковым в 1992 годуШаблон:Source-ref. Авторы показали, что возможно угадать структуру закрытого ключа по открытому и подобрать такие матрицы и , что . После этого для повышения криптостойкости системы было предложено использовать матрицу перестановки . Кроме того, появились различные модификации системы, например:
- использующие различные метрики, отличные от классической хэмминговой, например, ранговуюШаблон:Source-ref: примером этого является модифицированная система GPTШаблон:Source-ref
- использующие коды со специфическими свойствами. Так, модификации, основанные на кодах Гоппы, все ещё остаются криптостойкимиШаблон:Source-ref.
Преимущества и недостатки системы
Преимущества
- В отличие от McEliece, в криптосистеме Нидеррайтера не используются случайные параметры. Таким образом, результат шифрования одного и того же текста будет одинаковым. Этот факт позволяет использовать именно систему Нидеррайтера, а не McEliece, для создания электронно-цифровой подписи.
- Размер открытого ключа в криптосистеме Нидеррайтера в раз меньше, чем в McElieceШаблон:Source-ref.
- По сравнению с RSA, скорость шифрования выше приблизительно в 50 раз, а дешифрования — в 100 разШаблон:Source-ref.
Недостатки
- Для шифрования произвольного сообщения необходим алгоритм перевода в -арный вектор длиной веса не более .
- Размер ключей больше, чем в классических криптосистемах с открытым ключом (RSA, Схема Эль-Гамаля, ГОСТ Р 34.10-2012).
- Размер шифротекста намного больше, чем размер шифруемого сообщения (если сообщение размера переводится в вектор длиной и шифруется, то получается шифротекст размером , что не менее, чем в 2 раза превосходит ).
Ниже в таблице приведены различные параметры для криптосистем McEliece, Нидеррайтера и RSA, наглядно показывающие их преимущества и недостаткиШаблон:Source-ref.
McEliece
|
Криптосистема Нидеррайтера
|
RSA
| |
|---|---|---|---|
Размер открытого ключа
|
67072 | 32750 | 256 |
Количество бит
|
512 | 276 | 1024 |
Число бинарных операций
|
514 | 50 | 2402 |
Число бинарных операций
|
5140 | 7863 | 738112 |
Эквивалентность криптостойкости системы Нидеррайтера и системы McEliece
Как показано в оригинальной статье о системе СидельниковаШаблон:Source-ref, атака на систему Нидеррайтера может быть полиномиально сведена к атаке на систему McEliece и обратно.
Пусть известен синдром . Тогда можно вычислить вектор с некоторым таким, что . Вектор будет рассматриваться как шифротекст в системе McEliece. Если найдена криптографическая атака со сложностью для системы McEliece, то есть известен алгоритм вычисления вектора , который является секретной информацией в этой системе, то вектор , являющийся секретом для системы Нидеррайтера, можно представить в виде . Таким образом, сложность определения совпадает со сложностью определения .
Если же известна криптоатака со сложностью для системы Нидеррайтера, то возможно, используя в качестве шифротекста вектор , вычислить векторы и .
Построение цифровой подписи
В 2001 году Николя Куртуа, Мэттью Финиаз и Николя Сандриер показалиШаблон:Source-ref, что криптосистема Нидеррайтера может быть использована для создания электронной подписи.
Подпись сообщения
Пусть — открытый ключ криптосистемы Нидеррайтера, использующей -линейный код. Для подписи документа необходимо:
- Выбрать хеш-функцию , дающей символов на выходе. Таким образом, результат данной хеш-функции можно представить в виде синдрома и попытаться декодировать;
- Вычислить хеш ;
- Для каждого вычислить ;
- Найти наименьший номер такой, что синдром будет возможно декодировать. Пусть — результат декодирования синдрома ;
- Подписью документа является пара .
Проверка подписи
- Вычислить ;
- Вычислить ;
- Сравнить и : если они совпадают — подпись верна.
Пример работы системы
Пусть для кодирования был выбран код Рида-Соломона над полем Галуа , построенным по модулю неприводимого многочлена , с порождающим многочленом
Тогда, порождающая матрица кода:
Проверочная матрица кода:
Заметим, что расстояние данного кода , то есть число исправляемых ошибок .
Генерация ключей
Пусть выбрана матрица . Тогда обратная к ней матрица
Пусть выбрана матрица перестановки
В этом случае открытым ключом системы будет матрица:
Шифрование
Пусть выбранное сообщение было представлено в виде вектора веса 2.
Зашифрованное сообщение:
Расшифровывание
Принятый вектор
Для него вычислим декодируемый синдром
Используя алгоритм декодирования кода Рида-Соломона, декодируем .
Получится вектор
После чего вычислим исходный вектор