- •Министерство образования и науки Российской Федерации
- •В.И. Аверченков, м.Ю. Рытов, с.А. Шпичак
- •Брянск Издательство бгту
- •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.4. Алгоритм цифровой подписи Эль-Гамаля
Схема цифровой подписи Эль-Гамаля основана на сложности вычисления дискретных логарифмов в конечном поле.
Так же как и для шифрования Эль-Гамаля выбираются параметры системы:
P – большое простое число (порядка 1024-2048 бит).
Q – простой делитель числа P – 1 (порядка 160 бит).
G – порождающий элемент мультипликативной группы
Секретным ключом является:
x – целое случайное число в диапазоне 2 ≤ x ≤ P – 2.
Открытый ключ Y вычисляется по формуле:
Y = Gx (mod P).
Подпись для сообщения M вычисляется при помощи следующего алгоритма:
Выбрать случайный эфемерный сеансовый ключ k, 2 ≤ k ≤ P – 2, взаимно простой с P – 1, НОД(k, P – 1) = 1.
Вычислить R = Gk (mod P).
Вычислить S = (M - xR)k -1 (mod P – 1).
Подписью сообщения M служит пара (R, S).
Если сообщениe M большое, то при вычислении S используют его хэш-значение H(M).
Алгоритм проверки подписи заключается в проверке сравнения:
.
Основным достоинством данной схемы является возможность выработки цифровых подписей для большого числа сообщений с использованием одного секретного ключа.
Пример. Выберем P = 11 и G = 2, а закрытый ключ x = 8.
Вычислим:
Y = Gx mod P = 28 mod 11 = 3.
Открытым ключом являются Y = 3, G = 2, и P = 11. Чтобы подписать M = 5, сначала выберем случайное k = 9. Убеждаемся, что НОД(9, 10) = 1. Вычисляем:
R = Gk mod P = 29 mod 11 = 6.
Далее с помощью расширенного алгоритма Евклида находим k – 1 = 9 mod (11 – 1) и S:
S = (M - xR)k -1 (mod P – 1) = (5 – 8 · 6) 9 mod (11 – 1) = 3.
Подпись составит пару (6, 3).
Для проверки подписи убедимся, что:
36·63 mod 11 = 25 mod 11.
Схема Эль-Гамаля послужила образцом для построения большого семейства во многом сходных по своим свойствам схем подписи. В их основе лежит проверка сравнения вида:
в котором тройка (A, B, C) совпадает с одной из перестановок чисел M, S, R.
Например, исходная схема Эль-Гамаля получается при
A = M, B = – R и C = S.
Еще одно достоинство данного семейства является возможность уменьшения длины подписи путем замены пары чисел (R, S) на пару чисел (R mod Q, S mod Q). При этом проверочное равенство по модулю P следует заменить на модифицированное равенство по модулю Q:
.
На основе семейства данных схем построены стандарты цифровой подписи DSS и ГОСТ Р34.10-94.
Кроме того, данное семейство может быть модифицировано для работы с группой точек эллиптической кривой.
5.2.5. Алгоритм цифровой подписи Шнорра
Принадлежит семейству цифровых подписей на дискретных логарифмах и интересна с точки зрения практического применения в смарт-картах для реализации процедуры аутентификации. Алгоритм также может быть обобщен на эллиптические кривые.
Параметры системы совпадают с параметрами P, Q, G системы Эль-Гамаля.
Закрытый ключ x – целое число из и
нтервала 1 < x < Q – 1. Открытый ключ определяется формулой Y = Gx (mod P). Чтобы подписать сообщение в алгоритме Шнорра поступают следующим образом:
- Выбирают эфемерный ключ k из промежутка 1 < k < Q – 1.
- Вычисляют соответствующий открытый ключ R = Gk mod P.
- Находят E = H(M||R). Значение функции зависит как от сообщения, так и от эфемерного ключа.
- Вычисляют S = k + x · E (mod Q).
Полученная таким образом пара (E, S) является искомой подписью.
Для проверки подписи вычисляют:
R’ = GSY-E (mod P) и H(M||R’).
Подпись корректна, если верно равенство E = H(M||R’).
(Возможен вариант, в котором закрытый ключ вычисляется по формуле Y = G-x (mod P) и тогда проверочное уравнение принимает форму R’ ≡ GSYE (mod P).)
Пример. Параметры домена Q = 101, P = 607 и G = 601.
Чтобы зафиксировать ключевую пару, положим x = 3 и
Y = Gx (mod P) = 6013 (mod 607) = 391.
Затем генерируем эфемерный ключ k = 65 и вычисляем.
R = Gk (mod P) = 60165 (mod 607) = 223.
Теперь находим хэш-значение E = H(M||R). Допустим, что при этом получилось E = 93. Тогда вторая компонента подписи выглядит как
S = k + x · E (mod Q) = 65 + 3 · 93 (mod 101) = 41.
При проверке подписи (E, S) теоретически можно вычислить
R’ YE (mod P) = 223 · 39193 (mod 607) = 172.
GS (mod P) = 60141(mod 607) = 172.
Но так как R’ не передается напрямую, а только в виде свертки E = H(M||R), придется вычислять:
R’ = GSY-E (mod P) = 60141 · (39193)-1 (mod 607) = 172 · (537)-1 (mod 607) = 223.
Соответственно совпадут и хэш-значения H(M||R) = H(M||R’) = 93.