Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ4-5 Шифрование и расшифрование данных симметр...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
523.78 Кб
Скачать

Задание 7. Шифрование и расшифрование с помощью системы ElGamal

1. Научитесь шифровать и расшифровывать тексты, используя алгоритм ElGamal.

Технология работы

  1. Выберем p=23, g=5, =6.

  2. Вычислим h = 56 mod 23 = 8.

  3. Открытый ключ (23,5,8), закрытый ключ 6.

  4. Допустим, что шифруется числовая информация М=7.

  5. Пусть выбрано r=10.

  6. Вычислим c1 = 510 mod 23 = 9 и c2 = 7810 mod 23 = 21. Таким образом, криптотекст имеет вид С = (9,21).

  7. Осуществим дешифрование: D(9,21) = 21(96) -1 mod 23 = 7.

Обмен ключами. Классическая симметричная криптосистема основывается на наличии закрытого канала для обмена секретными ключами. Этот канал должен быть надежно защищен от посягательств криптоаналитика противника, что создает серьезную проблему в реализации подобных систем. В асимметричных криптосистемах проблемы пересылки секретного ключа не существует, так как он является личной собственностью каждого абонента сети, а открытые ключи для шифрования имеют общедоступный статус.

На первых порах, когда появились криптосистемы с открытым ключом, была выдвинута идея о закате классических криптосистем. Но оказалось, что «хоронить» симметричные системы рановато. Дело в том, что они работают на несколько порядков быстрее, чем асимметричные системы. Фактор скорости шифрования/дешифрования становится определяющим при передаче больших объемов информации. В связи с этим обстоятельством возникла идея объединить достоинства обоих криптосистем: секретный ключ передается по открытому каналу с помощью криптосистемы с открытым ключом, а основная масса передаваемых сообщений шифруется классическими методами.

Для реализации процедуры обмена секретными ключами между абонентами сети по открытым каналам необходимо придерживаться определенного протокола.

Протокол – это последовательность установленных правил, в соответствии с которой осуществляется обмен сообщениями между участниками протокола для достижения определенной цели

Рассмотрим один из возможных вариантов обмена секретным ключом между абонентами по открытому каналу, предложенный Диффи и Хеллманом:

  1. Абонент А выбирает большое простое число р и некоторый примитивный элемент g по модулю р, которые пересылает абоненту В по открытому каналу.

  2. Затем абонент А выбирает целое случайное число в границах от 1 до р1, а абонент В выбирает целое случайное число в тех же границах.

  3. Абонент А вычисляет значение g mod p и посылает его абоненту В. В свою очередь, абонент В вычисляет значение g mod p и посылает его абоненту А.

  4. Принятое сообщение абонент А возводит в степень по модулю р, а абонент В возводит принятое сообщение в степень по тому же модулю. Так как каждый из абонентов вычисляет одно и то же число (g) mod p = (g) mod p = g mod p, то оно и принимается в качестве секретного ключа в симметричной криптосистеме.

В качестве примера рассмотрим следующий случай:

  • Абонент А выбрал p=97, g=5 и открыто переслал их абоненту В.

  • Затем А выбрал =12, а В выбрал =63.

  • Абонент А вычисляет 512 mod 97 = 42 и посылает его В.

  • Абонент В вычисляет 563 mod 97 = 75 и посылает его А.

  • Оба абонента вычисляют 7512 mod 97 = 4263 mod 97 = 21. Это и есть секретный ключ.

Цифровая подпись – это сообщение, которое формируется из открытого текста М по определенному алгоритму, затем шифруется и вместе с зашифрованным или открытым текстом передается адресату

Основным назначением цифровой подписи является задача убедить получателя сообщения в том, что оно поступило от известного ему абонента и не подделано. Область использования цифровой подписи чрезвычайно широка: от проведения финансовых и банковских безбумажных операций до контроля за выполнением международных договоров и охраны авторских прав. Особо важное значение имеет проблема подписи при безбумажной передаче сообщений.

Обеспечение защиты каждой стороны, участвующей в обмене данными, осуществляется с помощью ведения специальных протоколов. Для верификации сообщения протокол должен содержать следующие обязательные положения:

  • отправитель сообщения вносит в передаваемое сообщение свою цифровую подпись, представляющую собой дополнительную информацию, зависящую от передаваемых данных, имени получателя сообщения и некоторой закрытой информации, которой обладает только отправитель;

  • получатель сообщения должен иметь возможность удостовериться, что полученная в составе сообщения подпись есть правильная подпись отправителя;

  • получение правильной подписи отправителя возможно только при использовании закрытой информации, которой обладает отправитель;

  • для исключения возможности повторного использования устаревших сообщений подпись должна зависеть от времени.

Общая схема использования цифровой подписи включает в себя:

  1. Вероятностный алгоритм генерирования ключей. Каждый абонент А сети генерирует случайную пару ключей (КА,КА), где КА – открытый ключ, а КА – секретный ключ.

  2. Алгоритм подписи SIGN. Получив на входе произвольное сообщение М и секретный ключ КА, этот алгоритм формирует шифрованное слово S = SIGN(M,КА), которое называется подписью абонента А на сообщении М. Когда А хочет послать кому-то сообщение М и при этом убедить получателя в том, что оно действительно принадлежит А, то он передает пару (S,M).

  3. Алгоритм подтверждения подписи CHECK. Получатель сообщения М, желая убедиться в том, что оно действительно отправлено абонентом А, включает этот алгоритм, используя общедоступный ключ КА. Проверка считается успешной, если CHECK(КА,M,S) = 1.

Для любого сообщения М и для каждой пары ключей (К,К) должно выполняться соотношение:

CHECK(К,M,SIGN(M, К)) = 1.

Выполнение этого условия означает корректность системы цифровой подписи. Все указанные алгоритмы должны быть эффективными.

Стойкость такой системы подписи означает, что лишь законный собственник секретного ключа К может для сообщения М выработать такую подпись S, которая прошла бы проверку CHECK(К,M,S) = 1. Если такую же подпись S находит противник, то говорят, что он подделывает (фальсифицирует) подпись легального абонента на сообщении М.

Любую асимметричную криптосистему можно преобразовать в систему цифровой подписи следующим образом: пусть Е и D – соответственно алгоритмы шифрования и дешифрования, К и К – открытый и секретный ключи, а М – произвольное сообщение. Тогда:

SIGN(M,К) = DK(M) и

 1, если EK(S) = M;

CHECK(К,M,S) = 

 0, в противном случае.

В качестве примера рассмотрим систему цифровой подписи ЭльГамаля:

  1. Генерирование ключей. Выбирается большое простое число р, а также число g, 1<g<p1, имеющее в мультипликативной группе Zp* большой порядок. Каждый абонент выбирает себе случайное число в промежутке от 1 до p1, и вычисляет h = g mod p.

  • Открытый ключ: р, g, h.

  • Секретный ключ: .

  1. Подписывание. Абонент А вырабатывает свою подпись S под сообщением М следующим образом:

  • выбирает случайное простое число r такое, что 1rp1;

  • вычисляет s1 = gr mod p;

  • вычисляет r = r1 mod (p1);

  • вычисляет s2 = (Мs1)r mod (p1);

  • формирует подпись S = (s1,s2) и передает ее вместе с открытым текстом М.

3. Подтверждение подписи. Абонент В проверяет подпись:

gMhs1 s1s2 (mod p).

Очевидно, что при передаче открытого текста М, который не нужно шифровать, а требуется только присоединить к нему цифровую подпись, рассмотренный подход не является оптимальным, так как длина подписи равна длине открытого текста.

Естественным способом устранения этого недостатка является использование так называемой хэш-функции h(M), которая из исходного текста М произвольной длины формирует дайджест сообщения фиксированной длины W = h(M) (например, в программе PGP дайджест сообщения имеет длину 160 или 128 бит).

Дайджест – это криптографически стойкая односторонняя хэш-функция, чем-то похожая на «контрольную сумму», т.е. представляет собой определенную «выжимку» из сообщения М.

Хэш-функция h(M), формирующая дайджест, должна удовлетворять следующим требованиям:

  1. быть быстро вычислимой для любого сообщения М;

  2. не должна приводить к коллизиям, т.е. для разных сообщений М1 и М2 не должно выполняться равенство h(М1) = h(М2);

  3. по заданному образу W = h(M) невозможно эффективно найти такое М, что h(М) = h(М). Это не что иное, как свойство односторонности хэш-функции.

В качестве хэш-функции можно взять функцию h, сконструированную на основе RSA-функции:

h(М) = RSA(h(M1...Ml1)h(Ml)),

где длинное сообщение М разбивается на блоки фиксированной длины, соответствующей выбранной длине дайджеста: M=M1...Ml1Ml.

В настоящее время наибольшее распространение получили следующие алгоритмы получения дайджеста:

SHA (Алгоритм защищенного хэширования) – 160-битовый алгоритм хэширования, разработанный Агенством национальной безопасности США по заказу Национального института стандартов и технологий (NIST).

MD5, представленный в общее пользование RSA Data Security, Inc., является 128-битовым хэш-алгоритмом. Он был практически взломан в 1996 г. немецким криптографом Хансом Доббертином. В нем обнаружены настолько серьезные слабые места, что его использование на практике является весьма рискованным.

Полученный дайджест отправитель сообщения шифрует своим секретным ключом, присодиняет его к открытому тексту и передает все это получателю.

Получатель может проверить правильность цифровой подписи, используя открытый ключ отправителя для расшифровки дайджеста сообщения. Это доказывает, что тот, кто указан в качестве отправителя сообщения, является его создателем, и что сообщение не было подвергнуто фальсификации, так как только отправитель владеет своим закрытым ключом, использованным для формирования цифровой подписи. Подделка цифровой подписи невозможна, и отправитель не может впоследствии отрицать ее подлинность. Рис. 3 иллюстрирует процесс осуществления цифровой подписи.

В 1991 г. NIST предложил в качестве стандарта цифровой подписи систему DSA (Digital Signature Algorithm), названный стандартом DSS (Digital Signature Standard). Суть его заключается в следующем.

1. Генерирование ключей:

  • Выбирается большое простое число р такое, что р1 имеет достаточно большой простой делитель q. Стандарт требует, чтобы 2512<p<21024 и q>2160.

  • Выбирается в группе Zp* произвольное h число порядка q.

  • Параметры р, q, h не составляют секрета и являются общими для всех абонентов сети.

  • Абонент А выбирает целое случайное число в диапазоне от 0 до q1, и вычисляет b = h mod p. Его ключи формируются следующим образом:

открытый ключ: b такое, что b = h mod p;

секретный ключ: .

2. Подписывание. Алгоритм подписи использует хэш-функцию h, в качестве которой DSS предлагает функцию SHA с длиной 160 бит. Для выработки своей подписи S для сообщения М, абонент А:

  • выбирает случайное простое число r такое, что 0rq1;

  • вычисляет r = r1 mod q;

  • вычисляет s1 = (hr mod p) mod q;

  • вычисляет s2 = ((h(М)+s1)r) mod q;

  • формирует подпись S = (s1,s2) и передает ее вместе с открытым текстом М.

3. Подтверждение подписи. Абонент В, получив сообщение М с подписью S = (s1,s2), выполняет следующее:

  • вычисляет s = s21 mod q;

  • вычисляет u1 = (h(М)s) mod q;

  • вычисляет u2 = (s1s) mod q;

  • вычисляет t = (hu1bu2 mod p) mod q;

  • проверяет равенство t = s1.