Введение
Как бы ни были сложны и надежны криптографические системы — их слабое мест при практической реализации — проблема распределения ключей. Для того, чтобы был возможен обмен конфиденциальной информацией между двумя субъектами ИС, ключ должен быть сгенерирован одним из них, а затем каким-то образом опять же в конфиденциальном порядке передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы.
Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены системы с открытым ключом.
Суть их состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым, а другой закрытым. Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне.
Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату.
1. Цель работы
Исследование и анализ основных методов ассимметричных криптосистем
2. Краткие сведения из теории
В самом определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени.
Поэтому чтобы гарантировать надежную защиту информации, к системам с открытым ключом (СОК) предъявляются два важных и очевидных требования:
1. Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
2. Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.
Схема шифрования Эль Гамаля. Алгоритм шифрования Эль Гамаля основан на применении больших чисел для генерации открытого и закрытого ключа, криптостойкость же обусловлена сложностью вычисления дискретных логарифмов.
Последовательность действий пользователя:
1. Получатель сообщения выбирает два больших числа P и G, причем PG.
2. Получатель выбирает секретный ключ — случайное целое число XP.
3. Вычисляется открытый ключ Y= G x mod P.
4. Получатель выбирает целое число K, 1 K P-1.
5. Шифрование сообщения (M): a= GK mod P, b=Y K M mod P, где пара чисел (a,b) является шифротекстом.
Криптосистема шифрования данных RSA. Предложена в 1978 году авторами Rivest, Shamir и Aldeman и основана на трудности разложения больших целых чисел на простые сомножители.
Они воспользовались тем фактом, что нахождение больших простых чисел в вычислительном отношении осуществляется легко, но разложение на множители произведения двух таких чисел практически невыполнимо. Доказано (теорема [Dhatch]абина), что раскрытие шифра RSA эквивалентно такому разложению. Поэтому для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время.
Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек).
В настоящее время алгоритм RSA используется во многих стандартах, среди которых SSL, S-HHTР, S-MIME, S/WAN, STT и РCT.
Последовательность действий пользователя:
1. Получатель выбирает 2 больших простых целых числа p и q, на основе которых вычисляет N=pq; M=(p-1)(q-1).
2. Получатель выбирает целое случайное число d, которое является взаимопростым со значением М, и вычисляет значение е из условия ed=1(mod M).
3. d и N публикуются как открытый ключ, е и М являются закрытым ключом.
4. Если S –сообщение и его длина: 1
5. Получатель расшифровывает с помощью закрытого ключа: S=S’e(mod N).
ПримерЗашифруем сообщение САВ. Для простоты будем использовать маленькие числа (на практике применяются гораздо большие).
1. Выберем р=3 и q=11.
2. Определим n=3*11=33.
3. Найдем (р-1)(q-1)=20. Следовательно, в качестве d, взаимно простое с 20, например, d=3.
4. Выберем число е. В качестве такого числа может быть взято любое число, для которого удовлетворяется соотношение (е*3) (mod 20) = 1, например 7.
5. Представим шифруемое сообщение как последовательность целых чисел с помощью отображения: А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.
6. [Dhatch]асшифруем полученное зашифрованное сообщение (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. Как результат умножения первых двух чисел (р и q) устанавливается n.
{e,n} образует открытый ключ, а {d,n} — закрытый (хотя можно взять и наоборот).
Открытый ключ публикуется и доступен каждому, кто желает послать владельцу ключа сообщение, которое зашифровывается указанным алгоритмом. После шифрования, сообщение невозможно раскрыть с помощью открытого ключа. Владелец же закрытого ключа без труда может расшифровать принятое сообщение.
3. Порядок выполнения работы
Основные шаги шифрования текстового файла методом гаммирования.
1. Получить от пользователя ключ, имя входного и выходного файла.
2. Инициализировать генератор случайных чисел с помощью ключа. Открыть указанные файлы.
3. Прочитать строку из файла.
4. Получить случайное число.
5. Получить ASCII-код очередного символа строки и увеличить его на случайное число, полученное на шаге 4.
6. Проверить правильность (допустимый диапазон) нового ASCII-кода.
7. В выходную строку записать очередной символ, соответствующий ASCII-коду, полученному на шаге 6.
8. Если не достигли конца входной строки, то перейти к шагу 4.
9. Записать полученную строку в выходной файл.
10. Если не достигнут конец файла, то перейти к шагу 3.
11. Закрыть файлы.
4. Задание к работе
На языке VBA, С++ или C# написать программу шифрования и дешифрования текстового файла методом, указанным преподавателем.
Содержание отчета
1. Название работы.
2. Цель работы.
3. Блок-схему алгоритма шифрования.
4. Тексты программ.
5. Вопросы для самопроверки
1. Алгоритм шифрации двойным квадратом. Шифр Enigma.
2. Алгоритм шифрования DES.
3. Алгоритм шифрования ГОСТ 28147-89.
4. Алгоритм шифрования RSA.
5. Алгоритм шифрования Эль Гамаля.
6. Задачи и алгоритмы электронной подписи.
7. Задачи распределения ключей.
Рекомендуемая литература
8. Жельников В. Криптография от папируса до компьютера. М.: ABF, 1997. – 336c.
9. Зубанов Ф. WINDOWS NT-выбор “профи”. – М.: Издательский отдел “Русская Редакция” ТОО “Chanel Trading Ltd.”, 1996.
10. Баричев С. Криптография без секретов. М.: ДИАЛОГ-МИФИ, — 1995.
11. Алгоритм шифрования ГОСТ 28147-89. — Центр информационных технологий citforum.ru, 1998.
12. Медведовский И.Д., Семьянов П.В., Платонов В.В. Атака через Internet. — СПб.: Мир и семья.-1997.
13. Вакка Дж. Секреты безопасности в Internet. – К.: Диалектика, 1997.
Дополнительно
14. ftp://ftp.kiae.su/msdos/crypto/pgp
15. http://drago.centerline.com:8080/franl/pgp/…
16. Yahoo — Computers, Security-and-Encryption
Лабораторная работа №5
Статьи к прочтению:
Урок 0. Введение в асимметричную криптографию. Шифр RSA
Похожие статьи:
-
Тема: программирование алгебраических алгоритмов
Введение Для обеспечения защиты информации в настоящее время не существует какого-то одного технического приема или средства, однако общим в решении…
-
Тема: программирование арифметических алгоритмов
Лабораторная работа №1 Введение По мере развития и усложнения средств, методов и форм автоматизации процессов обработки информации повышается зависимость…