- •Лабораторная работа №1 Основы криптографической защиты информации Введение
- •1. Цель работы
- •2. Краткие сведения из теории
- •2.1. Симметричные криптосистемы
- •2.1.1.Шифры перестановки
- •2.2. Шифры простой замены
- •2.3. Шифры сложной замены
- •2.4. Гаммирование
- •2.5.1. Схема шифрования Эль Гамаля
- •2.5.2. Криптосистема шифрования данных rsa
- •2.5. Асимметричные криптосистемы
- •3. Задание к работе
2.5. Асимметричные криптосистемы
2.5.1. Схема шифрования Эль Гамаля
Алгоритм шифрования Эль Гамаля основан на применении больших чисел для генерации открытого и закрытого ключа, криптостойкость же обусловлена сложностью вычисления дискретных логарифмов.
Последовательность действий пользователя:
Получатель сообщения выбирает большое, простое число P и большое целое число G, причем P > G.
Получатель выбирает секретный ключ - случайное целое число X < P.
Вычисляется открытый ключ Y= G x mod P.
Получатель выбирает случайное целое число K, 1< K< P-1, такое, что числа К и (Р-1) являются взаимно простыми.
Шифрование сообщения (M): a= GK mod P, b=Y K M mod P, где пара чисел (a,b) является шифротекстом.
Надо придумать сообщение М, зашифровать его, а потом с помощью секретного ключа Х расшифровать сообщение.
Шифрование
Допустим что нужно зашифровать сообщение
.Произведем генерацию ключей :
пусть
.
Выберем
-
случайное целое число
такое,что
.Вычислим
.Итак , открытым является тройка
,а
закрытым ключом является число
.
Выбираем случайное целое число
такое,
что 1 < k < (p − 1). Пусть
.Вычисляем число
.Вычисляем число
.Полученная пара
является
шифротекстом.
Расшифрование
Необходимо получить сообщение
по
известному шифротексту
и
закрытому ключу
.Вычисляем M по формуле :

Получили исходное сообщение
.
2.5.2. Криптосистема шифрования данных rsa
Предложена в 1978 году авторами Rivest, Shamir и Aldeman и основана на трудности разложения больших целых чисел на простые сомножители.
Последовательность действий пользователя:
Получатель выбирает 2 больших простых целых числа p и q, на основе которых вычисляет N=pq; M=(p-1)(q-1).
Получатель выбирает целое случайное число d, которое является взаимопростым со значением М, и вычисляет значение е из условия ed=1/(mod M).
d и N публикуются как открытый ключ, е и М являются закрытым ключом.
Если S –сообщение и его длина: 1<Len(S)<N, то зашифровать этот текст можно как S’=Sd(mod N), то есть шифруется открытым ключом.
Получатель расшифровывает с помощью закрытого ключа: S=S’e(mod N).
Представить шифруемое сообщение как последовательность целых чисел в диапазоне 0…32. Пусть буква А изображается числом 1, буква Б- числом 2, буква В- числом 3 и т.д. Тогда сообщение будет принимать вид числовой последовательности, которое зашифровывается с помощью открытого ключа. Надо расшифровать его с помощью закрытого ключа.
Зашифруем сообщение «САВ». Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).
Выберем p=3 и q=11.
Определим n=3*11=33.
Найдем (p-1)(q-1)=20. Следовательно, в качестве d, взаимнопростое с 20, например, d=3.
Выберем число е. В качестве такого числа может быть взято любое число, для которого удовлетворяет соотношение (е*3)(mod20)=1, например 7.
Представим шифруемое сообщение как последовательность целых чисел с помощью отображения: А1, В2, С3. Тогда сообщение принимает вид (3,1,2). Зашифруем сообщение с помощью ключа {7,33}. ШТ1 = (37) (mod 33) = 2187 (mod 33) = 9, ШТ2 = (17) (mod 33) = 1 (mod 33) = 1, ШТ3 = (27) (mod 33) = 128 (mod 33) = 29.
Расшифруем полученное зашифрованное сообщение (9,1,29) на основе закрытого ключа {3,33}: ИТ1 = (93) (mod 33) = 729 (mod 33) = 3, ИТ2 = (13) (mod 33) = 1 (mod 33) = 1, ИТ3 = (293) (mod 33) = 24389 (mod 33) = 2.
Итак в реальных системах алгоритм RSA реализуется следующим образом: каждый пользователь выбирает два больших числа, и в соответствии с описанным выше алгоритмом выбирает два простых числа e и d. Как результат умножения первых двух чисел (p и q) устанавливается n.
{e,n} образует открытый ключ, а {d,n} – закрытый (хотя можно взять и наоборот).
Открытый ключ публикуется и доступен каждому, кто желает послать владельцу ключа сообщение, которое зашифровывается указанным алгоритмом. После шифрования, сообщение невозможно раскрыть с помощью открытого ключа. Владелец же закрытого ключа без труда может расшифровать принятое сообщение.
