Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информ. без. Met_IS_3 в 1.doc
Скачиваний:
3
Добавлен:
08.05.2019
Размер:
443.9 Кб
Скачать

Задание на лабораторную работу

Используя алгоритм шифрования данных в криптосистеме RSA, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.

Порядок выполнения работы

  1. написать на языке программирования функцию шифрования, в которую в качестве параметров передается ключ и символ (или строка символов) исходного текста.

  2. написать функцию дешифрования, в которую в качестве параметров передается ключ и символ (или строка символов) зашифрованного текста.

  3. написать главную функцию, которая организует ввод/вывод исходного текста и по запросу пользователя шифрует исходный или дешифрует зашифрованный текст.

  4. для написания функций шифрования и дешифрования потребуется проверить два больших числа на взаимную простоту, используя алгоритм Евклида; вычислить число, обратное данному, в поле целых чисел, используя расширенный алгоритм Евклида для вычисления обратных величин; определить возведение в степень большого числа по модулю. Алгоритмы выполнения этих задач приведены в приложении.

Оформление отчета

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

Контрольные вопросы

  1. Что понимают под однонаправленной функцией?

  2. Какие параметры защищает криптосистема RSA?

  3. Какие параметры криптосистемы RSA известны противнику?

  4. При каких значениях параметров алгоритма криптосистема RSA станет абсолютно стойкой?

Лабораторная работа №5

Шифрование данных в асимметричных криптосистемах

по схеме Эль-Гамаля

Цель работы: изучить методы шифрования данных по схеме Эль-Гамаля и освоить их практическое применение.

Теоретическое введение

Алгоритм предложен в 1985 году американцем арабского происхождения Эль-Гамалем. Предназначен как для шифрования данных, так и для электронной цифровой подписи.

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

Для генерации пары: открытый ключ, секретный ключ, сначала выбирают некоторое большое простое число Р и некоторое большое целое число Q, причем Q<P. Эти два числа распространяются среди группы пользователей.

Затем выбирают случайное число X<P, которое является секретным ключом.

Далее вычисляется открытый ключ Y по формуле:

Y = QX mod P.

Для зашифровки сообщения М выбирают случайное целое число К так, что

1 < K < P-1, НОД (K, P-1 )=1

Затем вычисляют числа:

a = QK mod P; b = YK M mod P

Пара чисел (a, b) является зашифрованным текстом, таким образом, длина зашифрованного текста вдвое больше длины открытых данных.

Для расшифрования вычисляют (*)

Так как ,

то соотношение (*) справедливо.

Пример: Для простоты возьмем небольшие числа. Пусть Р = 11, Q = 2, X = 8.

Вычисляем Y = QX mod P = 28 mod 11 = 256 mod 11 = 3

Итак, открытый ключ равен 3.

Пусть сообщение М = 5. Выберем некоторое случайное число К = 9. Убедимся, что НОД(К, Р-1) = 1. Действительно, НОД(9, 10) = 1. Вычисляем пару чисел (a, b).

a = QK mod P = 29 mod 11 = 512 mod 11 = 6;

b = YKM mod P = 39*5 mod 11 = 19683*5 mod 11 = 9.

Получаем шифртекст (a, b) = (6, 9).

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

Это выражение можно представить в виде: или .

Решая данное сравнение, находим М = 5.

В реальных схемах шифрования необходимо использовать в качестве модуля P большое целое простое число, имеющее в двоичном представлении длину 512…1024 бит.