- •Оглавление
- •ВВЕДЕНИЕ
- •1.1. Предмет криптографии и основные определения
- •1.2. Математические основы криптографии
- •1.3. Математическая модель шифра
- •1.4. Классификация шифров
- •1.5. Обзор истории криптографии
- •Появление шифров
- •Становление криптографии как науки
- •Криптография в Новое время
- •Научная криптология
- •2.1. Понятие подстановки
- •2.2. Математическая модель шифра подстановок
- •2.3. Сравнимость
- •2.4. Примеры классических шифров подстановок
- •2.5. Математическая модель шифра перестановок
- •2.6. Маршрутные перестановки как пример шифра перестановок
- •ГЛАВА 3 Характеристики открытых текстов. Вероятностный подход
- •3.2. Вероятностный подход к анализу текстов
- •Частоты букв европейских языков, в %
- •Частоты символов русского языка, в %
- •Сочетаемость букв русского языка
- •Чередование гласных и согласных для текста длиной 105 знаков
- •Буква
- •Буква
- •4.1. Теоретико-информационный подход к анализу текстов
- •4.2. Комбинаторный подход к анализу текстов
- •Современные симметричные криптосистемы
- •5.1. Математическая модель шифра замены
- •5.2. Классификация шифров замены
- •ГЛАВА 6 Принципы построения симметричных шифров
- •6.1. Принципы построения поточных шифров
- •6.2. Принципы построения блочных шифров
- •ГЛАВА 7 Математические основы асимметричной криптографии
- •7.1. История и основные определения асимметричной криптографии
- •7.2. Основы теории простых чисел
- •7.3. Функция Эйлера
- •ГЛАВА 8 Теоремы асимметричной криптографии и алгоритм RSA
- •8.1. Основные теоремы асимметричной криптографии
- •8.2. Алгоритм RSA
- •9.1. Задачи асимметричной криптографии
- •10.1. Понятие электронной подписи
- •10.2. Алгоритм электронной подписи на основе алгоритма RSA
- •ГЛАВА 11 Управление криптографическими ключами
- •11.1. Задачи управления криптографическими ключами
- •11.2. Генерация ключей
- •11.3. Хранение ключей
- •Заключение
- •Список рекомендованной литературы
ГЛАВА 10 Аутентификация информации.
Подтверждение подлинности источника информации
Понятие электронной подписи. Алгоритм электронной подписи на основе алгоритма RSA.
10.1. Понятие электронной подписи
Криптографическое преобразование данных, обеспечивающее подлинность источника информации, называется электронной подписью. Точнее, электронная подпись (общепринятое сокращение ЭП) позволяет решить следующие две задачи:
1)осуществить аутентификацию источника сообщения;
2)установить целостность сообщения.
Выполнение задачи 2 предполагает использование хэш-функций в качестве составляющей алгоритмов ЭП. Таким образом, когда мы будем рассматривать алгоритмы ЭП, мы обязательно будем ссылаться на используемые алгоритмы вычисления хэш-значения.
Приведем более точное определение ЭП, следуя Брюсу Шнайеру. Электронная подпись – это математическое преобразование данных
сиспользованием секретного ключа и выполнением следующих условий:
1.Создать ЭП можно только с использованием личного секретного
ключа.
2.Проверить ЭП может любой, имеющий доступ к открытому
ключу.
3.Любое изменение подписанных данных делает ЭП недействитель-
ной.
Заметим, что алгоритмы ЭП отличаются от алгоритмов асимметричного шифрования тем, что зашифрование данных производится на открытом ключе, а расшифрование – на секретном. При ЭП, наоборот, подпись создается с использованием секретного ключа, а проверяется с использо-
72
ванием открытого. Зашифрование и подписывание данных может быть осуществлено независимо друг от друга. Зашифрованное сообщение может не подписываться, а подписанное сообщение может передаваться в открытом виде. Но как дополнительную степень защиты часто используют шифрование и ЭП одновременно.
Рассмотрим общую схему создания и проверки ЭП (рис. 10.1).
|
Пользователь A |
|
|
|
|
|
||||||||
|
|
|
|
Пользователь B |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОткрA |
|
СекрB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
СекрA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОткрB |
||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОткрA ОткрB
Общедоступное хранилище открытых ключей
Рис. 10.1. Ключевая информация в алгоритмах ЭП
Предположим, что имеются два пользователя – A и B. Каждый пользователь вырабатывает по паре взаимосвязанных между собой ключей: секретный и открытый. Открытые ключи находятся в некотором общедоступном хранилище. Это может быть, например, общедоступный каталог или сайт в Интернете.
После того как Пользователь A подписал сообщение с использованием своего секретного ключа СекрA, он передает это сообщение Пользователю B.
Получив подписанное сообщение от Пользователя A, Пользователь B находит в общедоступном хранилище его открытый ключ (ОткрA) и проверяет с его использованием электронную подпись.
Такой алгоритм кажется очень простым, однако он таит в себе очень серьезную проблему. Схема будет работать, только если пользователи A и B безоговорочно доверяют друг другу, но в этом случае вообще не возникает необходимости использования ЭП.
73
Предположим, что в описанную выше схему внедряется злоумышленник – Пользователь C. Он также имеет пару взаимосвязанных между собой ключей – СекрC и ОткрC.
Пользователь C попадает в общедоступное хранилище и заменяет открытый ключ Пользователя A на свой собственный открытый ключ, не меняя при этом идентификатор Пользователя A. Затем он может перехватить сообщение от Пользователя A к Пользователю B, изменить его и заменить ЭП на свою собственную, то есть полученную с использование ключа СекрC. Пользователь B, получив сообщение, возьмет в общедоступном хранилище ключ ОткрA (так он думает, ведь идентификатор пользователя не изменился), а на самом деле – ключ ОткрC. Проверив ЭП с использованием этого ключа, Пользователь B удостоверится в подлинности подписи, то есть в том, что сообщение отправлено Пользователем A.
Для решения этой проблемы необходимо присутствие в схеме «третьего лица», или посредника, который будет подтверждать принадлежность открытого ключа ОткрA именно Пользователю A. Такой посредник называется Удостоверяющим центром отрытых ключей, или Центром сертификации открытых ключей. Если сравнивать процедуру ЭП с обычной собственноручной подписью, то удостоверяющий центр подобен канцелярии, которая заверяет подписи на бумажных документах печатями.
Удостоверяющий центр, или Центр сертификации, – это электрон-
ная служба, которая является гарантом принадлежности открытого ключа пользователю.
Удостоверение принадлежности открытого ключа пользователю осуществляется выдачей пользователю сертификата открытого ключа – цифрового документа, содержащего сведения о пользователе, его открытый ключ и ЭП самого Удостоверяющего центра.
Сертификаты распространяются вместе с открытыми ключами пользователей, в результате чего Пользователь B, получив подписанное сообщение от Пользователя A, может обратиться к сертификату, в котором указано, что ключ ОткрA действительно принадлежит Пользователю A. Но может ли Пользователь B доверять подписи самого Удостоверяющего центра? Да, может, если она, в свою очередь, заверена надежным Удостоверяющим центром. Если и такого доверия нет, можно подняться еще одним звеном выше и
74
продолжать такие проверки до тех пор, пока не будет получена подпись действительно надежного Удостоверяющего центра. Кроме того, пользователь, имеющий возможность проверить открытый ключ непосредственно у его владельца, может сам выступать в роли Удостоверяющего центра, подписывая своим секретным ключомчужой открытый ключ.
10.2. Алгоритм электронной подписи на основе алгоритма RSA
В качестве простого примера рассмотрим алгоритм электронной цифровой подписи, основанный на уже знакомом нам RSA.
Пусть в обмене участвуют два пользователя – Отправитель (О) и Получатель (П).
Каждый из них имеет по паре ключей, которые выбираются в соответствии с Основной теоремой асимметричной криптографии:
у Отправителя: секретный ключ {dO, nO }, открытый ключ
{eО, nО};
у Получателя: секретный ключ {dП, nП }, открытый ключ
{eП, nП }.
Отправитель и Получатель обмениваются открытыми ключами любым открытым способом. После осуществления обмена открытыми ключами
Отправитель:
1.Вырабатывает хэш-значение S сообщения M.
2.Зашифровывает S на своем секретном ключе по алгоритму RSA:
SШ = SdО (mod nО ).
3. Присоединяет зашифрованное хэш-значение к сообщению:
M||SШ .
4.Зашифровывает полученное сообщение на открытом ключе Получателя:
Ш= (M ||SШ )eП (mod nП ).
5.Отправляет сообщение Ш Получателю.
75
Получатель:
1. Расшифровывает сообщение Ш на своем секретном ключе:
M||SШ = Ш dП (mod nП ).
2.Отделяет зашифрованное хэш-значение SШ .
3.Расшифровывает SШ на открытом ключе Отправителя:
S = (SШ )eО (mod nО ).
4.Вычисляет хэш-значение сообщения M самостоятельно.
5.Сравнивает полученное хэш-значение с расшифрованным. В случае совпадения подлинность Отправителя установлена.
76
