
- •Московский технический университет связи и информатики
- •«Комплексное обеспечение информационной безопасности инфокоммуникационных сетей и систем»
- •210700 «Инфокоммуникационные технологии и системы связи»
- •Введение в современные криптографические алгоритмы Предисловие
- •Математические основы (теория чисел)
- •1.1 Простые числа
- •1.2 Наибольший общий делитель
- •1.3 Модулярная арифметика
- •2. Криптография с открытым ключом
- •2.1 Алгоритм rsa
- •2.2 Электронная цифровая подпись (эцп)
- •2.2.1 Алгоритм формирования подписи Эль-Гамаля
- •2.2.2 Алгоритм dsa (Digital Signature Algorithm)
- •2.3 Алгоритм формирования общего ключа по схеме Диффи-Хеллмана
- •3. Симметричная система шифрования
- •3.1 Потоковые шифры
- •3.2 Генераторы псевдослучайных чисел
- •3.3 Блочные шифры
- •3.4 Сети Файстеля
- •3.5 Режимы шифрования
- •3.5.1 Электронная кодовая книга (ecb)
- •3.5.2 Сцепление блоков по шифротексту (cbc)
- •3.5.3 Обратная загрузка шифротекста (cfb)
- •1. Задания по теории чисел
- •2.Задания по алгоритмам с открытыми ключами
- •3.Задания по симметричной системе шифрования генераторы псевдослучайных чисел
- •Задание по блочным шифрам
- •Задание по хэш-функциям
2.2 Электронная цифровая подпись (эцп)
Электронная цифровая подпись (ЭЦП) или цифровая подпись. Последний вариант является прямым переводом английского словосочетания digital signature. Термин «цифровая подпись» более удобен и точен.
Общеизвестно, что цифровая подпись файлов или электронных почтовых сообщений выполняется с использованием криптографических алгоритмов, использующих несимметричные ключи: собственно для подписи используется «секретный ключ», а для проверки чужой подписи — «открытый». Ключи представляют собой числа достаточно большой длины (от 512 до 4096 бит), математически связанные между собой.
Цифровая подпись сообщения (файлы, электронные письма, сетевые пакеты и прочие наборы данных) - это последовательность бит фиксированной длины, формирующаяся по тексту сообщения с использованием секретного ключа его создателя. Корректность подписи проверяется с помощью открытого ключа. Обычно вместе с сообщением подписываются и некоторые его «реквизиты»: дата и время создания сообщения, (возможно) номер версии сообщения, время «жизни» сообщения. Цифровая подпись отправляется вместе с сообщением, и, обычно, становится неотъемлемой его частью. Получатель сообщения должен располагать копией открытого ключа отправителя. Схемы распространения открытых ключей могут быть разными: от простого личного обмена ключами до сложной многоуровневой «инфраструктуры открытых ключей» (public key infrastructure - PKI). Если при проверке цифровой подписи получатель устанавливает ее корректность, то может быть уверен не только в неизменности и «актуальности» сообщения, но - что самое важное - и в том, что сообщение «подписал» действительно его автор или отправитель
На сегодняшний день придумано и реализовано не так много алгоритмов цифровой подписи:
алгоритм подписи Ривеста-Шамира-Адельмана (RSA);
алгоритм Шнорра;
алгоритм DSA, являющийся федеральным стандартом на цифровую подпись в США; на него похож "старый" российский стандарт на цифровую подпись ГОСТ Р 34.10-94.
алгоритм Эль-Гамаля
алгоритм на основе эллиптических кривых
2.2.1 Алгоритм формирования подписи Эль-Гамаля
Для генерации пары ключей сначала выбирается простое число p и два случайных числа g и x, оба эти числа должны быть меньше p. Затем вычисляется y:
Y=gx MOD p
Открытым ключом являются g, y, p. Закрытым ключом является x.
Подпись Эль-Гамаля
Чтобы подписать сообщение M, сначала выбирается случайное число k, взаимно простое с p-1 и g<p (g может быть образующей по модулю p)
Вычисляется у= gx MOD p
затем вычисляется :
a(подпись)=gk MOD p
Далее для нахождения b(подпись) решается следующее уравнение:
M=(xa+kb) MOD (p-1)
Подписью является пара чисел: a и b. Случайное значение k должно храниться в секрете. Для проверки подписи нужно убедиться, что
yaab MOD p = gm MOD p
Проверка
Подпись считается правильной, если yaab MOD p = gM MOD p
Пример:
Выбираем 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. Вычисляем:
a= gk MOD p= 29 MOD 11 = 6
Далее, решая уравнение, находим b.
M=(ax+kb) MOD (p-1)
5=(8*6+9*b)MOD 10
Решением будет b=3, а подпись представляет пару чисел:
a=6, b=3.
Для проверки подписи убедимся, что:
yaab MOD p =gM MOD p
3663 MOD 11 = 25 MOD 11