Автор работы: Пользователь скрыл имя, 05 Января 2013 в 18:51, курсовая работа
Цель: изучить принципы работы алгоритмов шифрования с применением асимметричных криптосистем и разработать программное средства для реализации алгоритма шифрования дешифрования на примере алгоритма Эль-Гамаля.
Задачи:
1. Изучить теоретические аспекты шифрования информации с применением алгоритмов асимметричных криптосистем
2. Разработать программное средство для реализации шифрования и дешифрования информации на примере алгоритма Эль-Гамаля.
ВВЕДЕНИЕ 3
Исторические основы криптологии 3
Криптология в современном мире 4
ГЛАВА I. 7
1 Криптология 7
1.1 Основные понятия криптологии 7
1.2 Требования к криптосистемам 9
2 Криптосистемы с открытым ключом 10
3 Асимметричная (открытая) методология. 13
4 Порядок использования систем с асимметричными ключами: 14
5 Идея криптосистемы с открытым ключом 17
6 Схема шифрования с открытым ключом 20
7 Научная основа 22
8 Основные принципы построения криптосистем с открытым ключом 23
9 Криптография с несколькими открытыми ключами 24
10 Криптоанализ алгоритмов с открытым ключом 26
11 Особенности системы 28
11.1 Применение 28
11.2 Преимущества 29
11.3 Недостатки 29
12 Виды асимметричных шифров 30
13 Система RSA 30
13.1 История 31
13.2 Описание алгоритма 33
13.3 Алгоритм создания открытого и секретного ключей 34
13.4 Шифрование и расшифрование 35
13.4.1 Схема RSA 35
13.5 Цифровая подпись 36
13.6 Скорость работы алгоритма RSA 38
13.7 Криптоанализ RSA 39
13.8 Применение RSA 40
14 Алгоритм Эль-Гамаля 41
14.1 Общие сведения 41
14.2 Шифрование сообщений 41
14.3 Работа в режиме шифрования 43
14.3.1 Шифрование 44
14.3.2 Расшифрование 44
14.3.3 Схема шифрования 45
ГЛАВА II. 45
15 Практическая часть. 45
16 Заключение 48
17 Список литературы: 50
Длина симметричного ключа, бит Длина несимметричного ключа, бит
56 384
64 512
80 768
112 1792
128 2304
RSA (Rivest-Shamir-Adleman, Ривест — Шамир — Адлеман)
DSA (Digital Signature Algorithm)
Elgamal (Шифросистема Эль-Гамаля)
Diffie-Hellman (Обмен ключами Диффи — Хелмана)
ECDSA (Elliptic Curve Digital Signature Algorithm) — алгоритм с открытым ключом для создания цифровой подписи.
ГОСТ Р 34.10-2001
Rabin
Luc
McEliece
Williams System (Криптосистема Уильямса)
Самым распространенным алгоритмом ассиметричного шифрования является алгоритм RSA. Он был предложен тремя исседователями-математиками Рональдом Ривестом (R.Rivest) , Ади Шамиром (A.Shamir) и Леонардом Адльманом (L.Adleman) в 1977-78 годах. Разработчикам данного алгоритма удалось эффективно воплотить идею односторонних функций с секретом. Стойкость RSA базируется на сложности факторизации больших целых чисел. Современное состояние алгоритмов факторизации (разложения на множители) позволяет решать эту задачу для чисел длиной до 430 бит; исходя из этого, ключ длиной в 512 бит считается надежным для защиты данных на срок до 10 лет, а в 1024 бита – безусловно надежным. Несмотря на то, что отсутствует математически доказанное сведение задачи раскрытия RSA к задаче разложения на множители, система выдержала испытание практикой и является признанным стандартом de-facto в промышленной криптографии, а также официальным стандартом ряда международных организаций. С другой стороны, свободное распространение программного обеспечения, основанного на RSA, ограничено тем, что алгоритм RSA защищен в США рядом патентов. RSA можно применять как для шифрования/расшифровывания, так и для генерации/проверки электронно-цифровой подписи.
Опубликованная в ноябре 1976 года статья Уитфилда Диффи и Мартина Хеллмана «Новые направления в криптографии» перевернула представление о криптографических системах, заложив основы криптографии с открытым ключом. Разработанный впоследствии алгоритм Диффи-Хеллмана-Меркля позволял двум сторонам получить общий секретный ключ, используя незащищенный канал связи. Однако этот алгоритм не решал проблему аутентификации. Без дополнительных средств, один из пользователей не мог быть уверен, что он обменялся ключами именно с тем пользователем, который ему был нужен.
Изучив эту статью, трое ученых Рональд Райвест (Ronald Linn Rivest), Ади Шамир (Adi Shamir) и Леонард Адлеман (Leonard Adleman) из Массачусетского Технологического Института (MIT) приступили к поискам математической функции, которая бы позволяла реализовать сформулированную Уитфилдом Диффи и Мартином Хеллманом модель криптографической системы с открытым ключом. После работы над более чем 40 возможными вариантами, им удалось найти алгоритм, основанный на различии в том, насколько легко находить большие простые числа и насколько сложно раскладывать на множители произведение двух больших простых чисел, получивший впоследствии название RSA. Система была названа по первым буквам фамилий её создателей.
Описание RSA было опубликовано в августе 1977 года в журнале Scientific American. Авторы RSA поддерживали идею её активного распространения. В свою очередь, Агентство национальной безопасности (США), опасаясь использования этого алгоритма в негосударственных структурах, на протяжении нескольких лет безуспешно требовало прекращения распространения системы. Ситуация порой доходила до абсурда — например, когда программист Адам Бек (Adam Back) описал на языке Perl алгоритм RSA, состоящий из пяти строк, правительство США запретило распространение этой программы за пределами страны. Люди, недовольные подобным ограничением, в знак протеста напечатали текст этой программы на своих футболках.
В 1983 году MIT был выдан патент 4405829 США, срок действия которого истёк 21 сентября 2000 года.
В 1977 году создателями RSA была зашифрована фраза «The Magic Words are Squeamish Ossifrage» («Волшебные слова — это брезгливый ягнятник»). За расшифровку была обещана награда в 100 долларов США. Лишь в конце 1995 года удалось практически реализовать раскрытие шифра RSA для 500-значного ключа. На протяжении полугода более 600 добровольцев жертвовали процессорное время 1600 машин (две из которых были факс-машинами). Координирование проходило через Интернет, и это был один из первых подобных проектов распределённых вычислений. Полученную награду победители пожертвовали в фонд свободного программного обеспечения.
В декабре 1997 года была обнародована информация, согласно которой британский математик Клиффорд Кокс (Clifford Cocks), работавший в центре правительственной связи (GCHQ) Великобритании, описал криптосистему аналогичную RSA в 1973 году.
Криптографические системы с открытым ключом используют так называемые необратимые функции, которые обладают следующим свойством:
Под однонаправленностью
понимается не теоретическая
В основу криптографической системы с открытым ключом RSA положена задача умножения и разложения составных чисел на простые сомножители, которая является вычислительно однонаправленной задачей (см. также Тест простоты, Факторизация) .
В криптографической системе с открытым ключом каждый участник располагает как открытым ключом (англ. public key), так и закрытым ключом (англ. private key). Каждый ключ — это часть информации. В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и закрытый ключ самостоятельно. Закрытый ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их. Открытый и закрытый ключи каждого участника обмена сообщениями образуют «согласованную пару» в том смысле, что они являются взаимно обратными, т.е
сообщения , где — множество допустимых сообщений.
RSA-ключи генерируются следующим образом:
Число e называется открытой экспонентой (англ. public exponent)
Время, необходимое для шифрования с использованием быстрого возведения в степень, пропорционально числу единичных бит в e.
Слишком малые значения e, например 3, потенциально могут ослабить безопасность схемы RSA.
или: , где k — некоторое целое число.
Примечание: Можно вычислять и так (e*d) mod ((p-1)*(q-1)) = 1. Результат операции i mod j — остаток от целочисленного деления i на j, то есть если имеем (d*3) mod 20 = 1. Значит d будет, например 7. (Может быть и другим, например 27).
Обычно, оно вычисляется при помощи расширенного алгоритма Евклида.
Предположим, сторона хочет послать стороне сообщение .
Сообщением являются целые числа лежащие от до , т.е .
Алгоритм:
Взять открытый ключ стороны
Взять открытый текст
Передать шифрованное сообщение:
Алгоритм:
Принять зашифрованное сообщение
Применить свой секретный ключ для расшифровки сообщения:
Пример
Этап Описание операции Результат операции
Генерация ключей Выбрать два простых числа
Вычислить модуль
Вычислить функцию Эйлера
Выбрать открытую экспоненту
Вычислить секретную экспоненту
Опубликовать открытый ключ
Сохранить секретный ключ
Шифрование Выбрать текст для зашифровки
Вычислить шифротекст
Расшифрование Вычислить исходное сообщение
Система RSA может использоваться не только для шифрования, но и для цифровой подписи.
Предположим, что стороне нужно отправить стороне ответ , подтверждённый цифровой подписью.
Алгоритм:
Взять открытый текст
Создать цифровую подпись с помощью своего секретного ключа
Передать пару , состоящую из сообщения и подписи.
Алгоритм:
Принять пару
Взять открытый ключ стороны
Проверить подлинность подписи:
подпись верная
Поскольку цифровая подпись
обеспечивает как аутентификацию автора
сообщения, так и подтверждение
целостности содержимого
Важное свойство цифровой подписи заключается в том, что её может проверить каждый, кто имеет доступ к открытому ключу ее автора. Один из участников обмена сообщениями после проверки подлинности цифровой подписи может передать подписанное сообщение ещё кому-то, кто тоже в состоянии проверить эту подпись. Например, сторона может переслать стороне электронный чек. После того как сторона проверит подпись стороны на чеке, она может передать его в свой банк, служащие которого также имеют возможность проверить подпись и осуществить соответствующую денежную операцию.
Заметим, что подписанное сообщение не зашифровано. Оно пересылается в исходном виде и его содержимое не защищено. Путём совместного применения представленных выше схем шифрования и цифровой подписи в системе RSA можно создавать сообщения, которые будут и зашифрованы, и содержать цифровую подпись. Для этого автор сначала должен добавить к сообщению свою цифровую подпись, а затем — зашифровать получившуюся в результате пару (состоящую из самого сообщения и подписи к нему) с помощью открытого ключа принадлежащего получателю. Получатель расшифровывает полученное сообщение с помощью своего секретного ключа. Если проводить аналогию с пересылкой обычных бумажных документов, то этот процесс похож на то, как если бы автор документа поставил под ним свою печать, а затем положил его в бумажный конверт и запечатал, с тем чтобы конверт был распечатан только тем человеком, кому адресовано сообщение.
Поскольку генерация ключей происходит значительно реже операций, реализующих шифрование, расшифрование, а также создание и проверку цифровой подписи, задача вычисления представляет основную вычислительную сложность. Эта задача может быть разрешена с помощью алгоритма быстрого возведения в степень. Таким образом для вычисления требуется операций умножения по модулю.