
- •Литература
- •Введение
- •1. Цель и содержание работы
- •2. Методика выполнения работы
- •2.1. Шифры одноразового блокнота и замены Краткие теоретические сведения
- •Задание 1. Шифрование и расшифрование одноразовым блокнотом
- •Технология работы
- •Краткие теоретические сведения
- •Задание 2. Шифрование и расшифрование шифром Цезаря
- •Технология работы
- •Задание 3. Шифрование и расшифрование шифром Вижинера
- •Технология работы
- •2.2. Шифры перестановки Краткие теоретические сведения
- •Задание 4. Шифрование и расшифрование шифром простой перестановки
- •Технология работы
- •2.3. Шифрование с помощью аналитических преобразований Краткие теоретические сведения
- •Задание 5. Шифрование и расшифрование с помощью аналитических преобразований
- •Технология работы
- •2.4. Криптосистемы с открытым ключом Краткие теоретические сведения
- •Задание 6. Шифрование и расшифрование с помощью алгоритма rsa
- •Технология работы
- •Задание 7. Шифрование и расшифрование с помощью системы ElGamal
- •Технология работы
- •2.5. Генератор надежных паролей
- •Задание 8. Разработка генератора надежных паролей
- •Технология работы
- •1. Разработка формы:
- •2. Разработка программного кода:
- •3. Компиляция и запуск программы:
- •Краткие сведения из теории чисел
Задание 6. Шифрование и расшифрование с помощью алгоритма rsa
1. Научитесь шифровать и расшифровывать тексты, используя алгоритм RSA.
Технология работы
Выберем два взаимно простых числа p=3 и q=11.
Вычислим n=pq=311=33.
Находим функцию Эйлера (n)=(33)=(p1)(q1)=20.
Случайным образом выберем число е, взаимно простое с 20 и не превышающее его, например, е=7. Используя расширенный алгоритм Эвклида, легко проверить, что НОД(7,20)=1.
Вычислим число d, удовлетворяющее условию 7d 1 (mod 20). Таким числом является d=3.
Публикуем открытый ключ (е,n)=(7,33), а расшифровку поступающих сообщений будем осуществлять секретным ключом d=3.
Представим шифруемое сообщение как последовательность целых чисел с помощью соответствия: A=1, B=2, ..., Z=26. Такая криптосистема в состоянии зашифровать буквы латинского алфавита, рассматриваемые как блоки.
Пусть передается сообщение САВ, которое кодируется в виде (3,1,2). Абонент, передающий это сообщение, шифрует его открытым ключом:
RSA(C) = RSA(3) = 37 = 2187 = 9 (mod 33);
RSA(A) = RSA(1) = 17 = 1 (mod 33);
RSA(B) = RSA(2) = 27 = 128 = 29 (mod 33).
Таким образом, криптотекст представляет собой (9,1,29).
Попытаемся расшифровать его, используя секретный ключ d=3:
93 = 729 = 3 (mod 33);
13 = 1 (mod 33);
293 = 24389 = 2 (mod 33).
Таким образом, получен открытый текст (3,1,2).
Этот пример носит чисто иллюстративный характер, поэтому в нем достаточно легко найти секретный ключ путем перебора. На практике это осуществить невозможно, так как рекомендуются следующие длины шифруемых блоков: 512–768 бит – для частных лиц; 1024 бит – для коммерческой информации; 2048 бит – для секретной информации.
Система ЭльГамаля. Эта вероятностная криптосистема была предложена в 1984 г.
Генерирование ключей. Выбирается большое простое число р, а также число g, 1<g<p1, имеющее в мультипликативной группе Zp* большой порядок. В идеальном случае g является первичным корнем по модулю р.
Каждый абонент выбирает себе случайное число в промежутке от 1 до p1, и вычисляет h = g mod p.
Открытый ключ: р, g, h.
Секретный ключ: .
Шифрование осуществляется блоками. Каждый блок открытого текста М преобразуется в криптотекст С следующим образом:
выбирается случайное число r такое, что 1rp1;
вычисляется С = (с1,с2), где с1 = gr mod p и с2 = Mhr mod p.
Другими словами, криптотекст имеет длину в два раза большую, чем открытый текст.
Дешифрование. Имея секретный ключ и криптотекст С=(с1,с2), вычисляют:
D(C) = с2(с1)-1 mod p.
Корректность. Проверка равенства D(C) = М выполняется непосредственно путем подстановки формул шифрования. Идея криптосистемы достаточно прозрачна: сообщение М маскируется в виде с2, а вместе с ней посылается подсказка с1, которая позволяет получить М из с2.
Эффективность. Возведение в степень выполняется с помощью эффективного бинарного метода.
Надежность. Сформулируем задачу раскрытия системы ЭльГамаля:
Задано: p, g, h, c1, c2, где 1<g<p1, h = g mod p, c1 = gr mod p, c2 = Mhr mod p для некоторых , r, M Zp*.
Вычислить: М.
Для вскрытия открытого текста М необходимо определить секретный ключ , который можно найти дискретным логарифмированием выражения h = g mod p. Но эффективных алгоритмов решения этой задачи до сих пор не найдено.