- •Министерство образования и науки Российской Федерации
- •В.И. Аверченков, м.Ю. Рытов, с.А. Шпичак
- •Брянск Издательство бгту
- •Isbn 978-5-89838-596-5
- •Редактор издательства т.И. Королева
- •Темплан 2011г., п. 57
- •1. Введение в криптографию 10
- •2. Стойкость криптографических систем 34
- •3. Принципы построения симметричных криптографических алгоритмов 61
- •4. Принципы построения асимметричных криптографических алгоритмов 98
- •5. Криптографические хэш-функции и электронно-цифровая подпись 133
- •6. Организация сетей засекреченной связи 160
- •7.Криптоанализ и перспективные направления в криптографии 183
- •Предисловие
- •1. Введение в криптографию
- •1.1. Краткая история развития криптографических методов.
- •1.2. Основные понятия криптографии
- •1.2.1. Термины и определения
- •1.2.2. Классификация шифров
- •1.2.3. Характер криптографической деятельности
- •Контрольные вопросы
- •2. Стойкость криптографических систем
- •2.1. Модели шифров и открытых текстов
- •2.1.1. Алгебраические модели шифров.
- •2.1.2. Вероятностные модели шифров.
- •2.1.3. Математические модели открытых сообщений.
- •2.2. Криптографическая стойкость шифров
- •2.2.1. Теоретико-информационный подход к оценке криптостойкости шифров
- •2.2.2. Практическая стойкость шифров.
- •2.3. Имитостойкость и помехоустойчивость шифров
- •2.3.1. Имитостойкость шифров. Имитация и подмена сообщения
- •2.3.2. Способы обеспечения имитостойкости
- •2.3.3. Помехостойкость шифров
- •2.3.4. Практические вопросы повышения надежности.
- •Контрольные вопросы
- •3. Принципы построения симметричных криптографических алгоритмов
- •3.1. Виды симметричных шифров. Особенности программной и аппаратной реализации.
- •3.2. Принципы построения блочных шифров
- •3.2.1. Базовые шифрующие преобразования
- •3.2.2. Сеть Файстеля
- •3.3. Современные блочные криптоалгоритмы
- •3.3.1. Основные параметры блочных криптоалгоритмов.
- •3.3.2. Алгоритм des
- •3.3.3. Блочный шифр tea
- •Var key:tLong2x2;
- •Var y,z,sum:longint; a:byte;
- •Inc(sum,Delta);
- •3.3.4. Международный алгоритм idea
- •3.3.5. Алгоритм aes (Rijndael)
- •InverseSubBytes(s);
- •InverseShiftRows(s);
- •InverseSubBytes(s) End;
- •3.4. Принципы построения поточных шифров
- •3.4.1. Синхронизация поточных шифрсистем
- •3.4.2. Структура поточных шифрсистем
- •3.4.3.Регистры сдвига с обратной связью
- •3.4.4. Алгоритм Берленкемпа-Месси
- •3.4.5. Усложнение линейных рекуррентных последовательностей
- •3.5. Современные поточные криптоалгоритмы
- •3.5.1. Алгоритм Гиффорда
- •3.5.2. Алгоритм a5
- •3.6. Режимы использования шифров
- •Контрольные вопросы
- •4. Принципы построения асимметричных криптографических алгоритмов
- •4.1. Математические основы асимметричной криптографии
- •4.1.1. Свойства операций
- •4.1.2. Функция Эйлера. Поле. Теоремы Эйлера - Лагранжа и Ферма
- •4.1.3. Конечные поля
- •4.1.4. Основные алгоритмы
- •Алгоритм разложения чисел на простые множители.
- •4.1.5. Алгоритмы нахождения нод и мультипликативного обратного по модулю
- •4.1.6. Китайская теорема об остатках
- •4.1.7. Символы Лежандра и Якоби. Извлечение корней
- •4.2. Примеры современных асимметричных шифров
- •4.2.1. Криптосистема rsa
- •4.2.2. Взаимосвязь компонентов rsa
- •Слабые моменты реализации rsa
- •4.2.3. Криптосистема Эль-Гамаля
- •4.2.4. Криптосистема Рабина
- •4.2.5. Рюкзачные криптосистемы
- •4.2.6. Шифрсистема Мак-Элиса
- •Контрольные вопросы
- •5. Криптографические хэш-функции и электронно-цифровая подпись
- •5.1. Криптографические хэш-функции
- •5.1.1. Блочно-итерационные и шаговые функции
- •5.1.2. Ключевые функции хэширования
- •5.1.3 Бесключевые функции хэширования
- •5.1.4. Схемы использования ключевых и бесключевых функций
- •5.2. Электронно-цифровая подпись
- •5.2.1. Задачи и особенности электронно-цифровой подписи
- •5.2.2. Асимметричные алгоритмы цифровой подписи на основе rsa
- •5.2.3. Алгоритм цифровой подписи Фиата – Фейге – Шамира
- •5.2.4. Алгоритм цифровой подписи Эль-Гамаля
- •5.2.5. Алгоритм цифровой подписи Шнорра
- •5.2.6. Алгоритм цифровой подписи Ниберга-Руппеля
- •5.2.7. Алгоритм цифровой подписи dsa
- •5.2.8. Симметричные (одноразовые) цифровые подписи
- •Контрольные вопросы
- •6. Организация сетей засекреченной связи
- •6.1. Протоколы распределения ключей
- •6.1.1. Передача ключей с использованием симметричного шифрования
- •6.1.2. Передача ключей с использованием асимметричного шифрования
- •6.1.3. Открытое распределение ключей
- •6.1.4. Предварительное распределение ключей
- •6.1.5. Схемы разделения секрета
- •6.1.6. Способы установления ключей для конференц-связи
- •6.2. Особенности использования вычислительной техники в криптографии
- •6.2.1. Методы применения шифрования данных в локальных вычислительных сетях
- •6.2.2. Обеспечение секретности данных при долгосрочном хранении.
- •6.2.4. Обеспечение секретности ключей при долгосрочном хранении
- •6.2.5. Защита от атак с использованием побочных каналов
- •7.1.2. Атаки на хэш-функции и коды аутентичности
- •7.1.3. Атаки на асимметричные криптосистемы
- •7.2. Перспективные направления в криптографии
- •7.2.1. Эллиптические кривые
- •7.2.2. Эллиптические кривые над конечными полями
- •7.2.3. Алгоритм цифровой подписи ec-dsa
- •7.2.4. Квантовая криптография
- •Контрольные вопросы
- •Приложение
- •Заключение
- •Список использованной и рекомендуемой литературы
- •Учебное издание
- •Аверченков Владимир Иванович Рытов Михаил Юрьевич Шпичак Сергей Александрович
5.2.6. Алгоритм цифровой подписи Ниберга-Руппеля
Данный алгоритм также базируется на сложности дискретного логарифмирования и является примером схемы с восстановлением сообщения.
Все схемы подписи с восстановлением сообщения используют не однонаправленную хэш-функцию H, а открытую функцию избыточности F, которая является легко обратимой. В качестве простого примера можно взять F(M) = (M||M)2.
Параметры системы совпадают с параметрами P, Q, G системы Эль-Гамаля.
Закрытый ключ x – целое число из интервала 1 < x < Q – 1. Открытый ключ определяется формулой Y = Gx (mod P).
Алгоритм подписи Ниберга-Руппеля состоит в следующем:
Берут случайное число k из промежутка 1 < k < Q – 1 и вычисляют R = Gk mod P.
Находят Е = F(M) · R (mod P).
Определяют S = x · E + k (mod Q).
Подпись представляет собой пару (E, S). Исходя из этой пары нам нужно:
- убедиться в том, что подпись принадлежит пользователю с открытым ключом Y;
- восстановить сообщение M.
В процедуре проверки подписи Ниберга-Руппеля по паре (E, S) и открытому ключу отправителя Y вычисляют:
U1 = GSY-E (mod P) = R.
U2 = E(U1)-1 (mod P).
После этого убеждаются, что U2 является значением функции избыточности U2 = F(M). Если это равенство ложно, то подпись отклоняют. В противном случае восстанавливают сообщение по правилу M = f -1(U2) и принимают подпись.
Пример. Параметры домена Q = 101, P = 607 и G = 601.
Чтобы зафиксировать ключевую пару, положим x = 3 и
Y = Gx (mod P) = 6013 (mod 607) = 391.
Чтобы подписать сообщение M = 12 (в нашем примере M должно лежать на отрезке [0, 15]), выбираем эфемерный закрытый ключ k = 45 и вычисляем
R = Gk (mod P) = 60145 (mod 607) = 143.
Допустим, F(M) = M + 24 · M. Тогда F(M) = 204 и
E = F(M) · R (mod P) = 204 · 143 (mod 607) = 36,
S = x · E + k (mod Q) = 3 · 36 + 45 (mod 101) = 52.
Подписью является пара (E, S) = (36, 52).
Проверка подписи и восстановление сообщения. Вычисляется
U1 = GSY-E (mod P) = 60152 · (39136)-1 (mod 607) = 195 · 284 (mod 607) = 143 = R.
Далее находим
U2 = E(U1)-1 (mod P) = 36 · (143)-1 (mod 607) = 36 · 208 (mod 607) = 204.
Теперь необходимо убедиться, что найденное число U2 представимо в виде M + 24 · M для некоторого целого числа M [0, 15]. U2 действительно так представимо, поэтому подпись корректна. Сообщение M = 12 восстанавливается из уравнения
M + 24 · M = 204.
5.2.7. Алгоритм цифровой подписи dsa
Рассмотрим данный алгоритм более подробно, так как на его основе построен стандарт цифровой подписи DSS. DSA – алгоритм подписи с дополнением, в котором собственно подпись состоит из двух 160-битовых целых чисел R и S. Число R является функцией 160-разрядного случайного числа k, которое называют эфемерным ключом, изменяемым с каждым новым сообщением. Число S – функция от сообщения, секретного ключа x, принадлежащего подписывающему лицу, числа R и эфемерного ключа k. Аналогично алгоритму Эль-Гамаля здесь есть несколько параметров домена. Для из задания сначала фиксируется 160-битовое простое число Q, а затем выбирается такое большое простое число P, лежащее между 2512 и 22048, что P – 1 делится на Q. Наконец генерируется случайное число H < P и вычисляется
Если G = 1, то переходят к другому случайному H до тех пор, пока не получат G 1.
Этим обеспечивается выполнение следующего условия: G – порождающий элемент группы порядка Q, то есть
GQ = 1 (mod P).
После выбора параметров домена (P, Q, G) каждый пользователь генерирует свой собственный закрытый подписывающий ключ x, удовлетворяющий неравенству 0 < x < Q. Соответствующим открытым ключом служит число Y, вычисляемое по правилу
Y = Gx (mod P).
Процедура выбора пользовательской ключевой пары существенно проще, чем в RSA, поскольку она требует всего лишь одного возведения в степень в числовом поле.
Подписание сообщения осуществляется по следующему алгоритму:
- вычисляют значение хэш-функции H = H(M),
- выбирают случайный эфемерный ключ k, 0 < k < Q,
- определяют R = (Gk (mod P)) (mod Q),
- находят
Подписью сообщения M служит пара (R, S), имеющая в общей сложности 320 двоичных знаков.
Для проверки подписи (R, S) на сообщении M делают так:
- вычисляют значение хэш-функции H = H(M),
- определяют A = H/S (mod Q) и B = R/S (mod Q),
- находят
V = (GAYB (mod P))(mod Q),
где Y – открытый ключ автора сообщения.
- Подпись считается корректной только тогда, когда V = R.
Пример. Параметры домена Q = 13, P = 4Q + 1 = 53 и G = 16.
Предположим, что ключевая пара имеет вид x = 3 и Y = Gx (mod P) = 163 (mod 53) = 15. Если мы хотим подписать сообщение с хэш-значением H = 5, то сначала нужно выбрать эфемерный ключ k = 2 и найти
R = (Gk (mod P)) (mod Q) = (162 (mod 53))(mod 13) = 44 mod 13 = 5,
S = (H + xR)/k (mod Q) = (5 + 3 · 5) · 2-1 (mod 13) = (5 + 3 · 5) · 7 (mod 13) = 10.
Для проверки подписи получатель определяет
A = H/S (mod Q) = 5 · 10-1 (mod 13) = 5 · 4 = 7,
B = R/S (mod Q) = 5 · 10-1 (mod 13) = 7,
V = (GAYB (mod P))(mod Q) = (167 · 157 (mod 53)) (mod 13) = (49 · 42 (mod 53))(mod 13) = 5.
Ввиду равенства V = R = 5 делаем вывод о корректности подписи.