- •Требования к алгоритмам шифрования
- •Симметричные криптосистемы
- •Блочные шифры
- •Сеть Файстеля
- •Общая характеристика гост 28147-89
- •Ключевая информация
- •Основной шаг криптопреобразования
- •Базовые циклы криптографических преобразований.
- •Основные режимы шифрования
- •Выработка имитовставки к массиву данных
- •Криптографическая стойкость гост 28147-89
- •Общая схема алгоритма.
- •Rijndael (aes). Основные параметры
- •Rijndael. Общая схема
- •Нелинейное преобразование
- •Выработка ключевых элементов
- •Основные требования к алгоритмам асимметричного шифрования
- •Криптоанализ алгоритмов с открытым ключом
- •Основные способы использования алгоритмов с открытым ключом
- •Алгоритм обмена ключами Диффи-Хеллмана
- •Протокол генерации ключей алгоритма Диффи-Хеллмана
- •Алгоритм rsa
- •Электронная подпись rsa
- •Алгоритм ЭльГамаля
- •Требования к хэш-функциям
- •Функция sha-1
- •Функция хэширования гост р 34.11 – 94
- •Электронная цифровая подпись
- •Прямая и арбитражная цифровые подписи
- •Симметричное шифрование, арбитр не видит сообщение:
- •Шифрование открытым ключом, арбитр не видит сообщение:
- •Российский стандарт цифровой подписи гост 34.10
- •Код аутентичности сообщения
Электронная подпись rsa
Система электронной подписи RSA получается при "смене мест" ключей e и d, т.е. шифрование сообщения для получения подписи производится с помощью ключа KR = {d,n}. Цифровой подписью сообщения является число s: S = M d mоd (n), которое передается вместе с сообщением.
Проверка подлинности подписанного сообщения [M,S]: M =Se mod (n)
Равенство чисел принятого сообщения и расшифрованной подписи доказывает, что сообщение M было подписано обладателем секретного ключа d, соответствующего ключу проверки подписи e, т.е. авторизует сообщение.
Протокол работы пары абонентов сети общей связи с алгоритмом RSA выглядит так.
1. Абоненты A (отправитель) и B (получатель) генерируют независимо друг от друга пары простых чисел: pa, qa и pb, qb
2. Вычисляют произведение больших простых чисел:Na = pa * qa и Nb = pb * qb
3. Вычисляют ключи: Ea и Da и Eb и Db
4. Числа Na, Nb и Ea, Eb помещаются в общедоступный справочник и получают статус открытых ключей; числа Da, Db сохраняются в качестве закрытых ключей;
5. Обмен зашифрованными сообщениями:
А посылает В C a = Ma Eb mоd(Nb), зашифрованное открытым ключом пользователя B.
В посылает А Cb = Mв Ea mоd(Na), зашифрованное открытым ключом пользователя A .
6. Расшифрование: пользователь А → Mв = Cb Da mоd(Na)
пользователь В → Ma = Ca Db mоd(Nb)
Формирование цифровой подписи:
1. Абоненты подписывают и шифруют сообщения:
А → Sa = Ma Da mоd(Na) C a = Ma Eb mоd(Nb);
В → Sb = Mb Db mоd(Nb) Cb = Mb Ea mоd(Na).
2. Передают А → В: Sa, C a В → А: Sb, Cb.
3. Расшифровывают А: Mb = Сb Da mоd(Na), В: Ma = Сa Db mоd(Nb)
4. Проверяют подлинность подписи
В: Ma = Sa Ea mоd(Na), А: Mb = Sb Eb mоd(Nb)
В случае равенства значений принятых и расшифрованных Ma и Mb сообщения считаются переданными без искажения, а пользователи А и В аутентифицированы.
Алгоритм ЭльГамаля
Алгоритм Эль-Гамаля может использоваться для формирования электронной подписи или для шифрования данных. Он базируется на трудности вычисления дискретного логарифма. Для генерации пары ключей сначала берется простое число p и два случайных числа g и x, каждое из которых меньше p. Затем вычисляется:
y = gx mod p
Открытым ключом являются y, g, и p. при этом числа g и p можно сделать общими для группы пользователей. Секретным ключом является x.
Схема шифрования
Модификация алгоритма позволяет шифровать сообщения. Для шифрования сообщения M, выбираем случайное секретное число k, взаимно простое с p – 1 (т.е. НОД этих чисел равен 1). После этого вычисляем:
a = gk mod p
b = yk M mod p
Пара чисел a и b является шифротекстом. Причем, длина шифротекста вдвое длинней открытого текста.
Для расшифрования a и b, вычисляем:
M = b/ax mod p
Учитывая тот факт, что:
ax ≡ gkx (mod p)
и
b/ax ≡ yk M/ax ≡ gxk M/gxk ≡ M (mod p) ,
то вышеприведенные формулы верны.
Схема подписи.
Для подписания сообщения M, вначале выберем случайное число k, такое, что k взаимно простое с p – 1. После чего вычисляем:
a = gk mod p
и, используя расширенный алгоритм Евклида, решаем уравнение относительно числа b :
M = (xa + kb) mod (p – 1)
Подписью является пара чисел: a и b. Случайное число k должно держаться в строгом секрете и являться уникальным для каждого подписываемого сообщения М.
Для проверки правильности подписи, проверяется следующее равенство:
ya ab mod p = gM mod p
В этой системе открытого шифрования та же степень защиты, что для алгоритма RSA с модулем N из 200 знаков, достигается уже при модуле P из 150 знаков. Это позволяет в 5-7 раз увеличить скорость обработки информации. Однако, в таком варианте открытого шифрования нет подтверждения подлинности сообщений.
