Разработка программного средства реализации шифрования с применением асимметричных криптосистем

Автор работы: Пользователь скрыл имя, 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

Содержимое работы - 1 файл

Курсовая работа.doc

— 526.50 Кб (Скачать файл)

С появлением систем с  открытым ключом понятие о защите информации, а вместе с ним функции  криптографии значительно расширились. Если раньше основной задачей криптографических  систем считалось надежное шифрование информации, в настоящее время область применения криптографии включает также цифровую подпись(аутентификацию), лицензирование, нотаризацию (свидетельствование), распределенное управление, схемы голосования, электронные деньги и многое другое . Наиболее распространенные функции криптографических систем с открытым ключом - шифрование и цифровая подпись, причем роль цифровой подписи в последнее время возросла по сравнению с традиционным шифрованием: некоторые из систем с открытым ключом поддерживают цифровую подпись, но не поддерживают шифрование.

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

Из-за особенностей алгоритмов, лежащих в основе систем с открытым ключом, их быстродействие при обработке  единичного блока информации обычно в десятки раз меньше, чем быстродействие систем с симметричным ключом на блоке той же длины. Для повышения эффективности систем с открытым ключом часто применяются смешанные методы, реализующие криптографические алгоритмы обоих типов. При шифровании информации выбирается случайный симметричный ключ, вызывается алгоритм с симметричным ключом для шифрования исходного текста. а затем алгоритм с открытым ключом для шифрования симметричного ключа. По коммуникационному каналу передается текст, зашифрованный симметричным ключом, и симметричный ключ, зашифрованный открытым ключом. Для расшифровки действия производятся в обратном порядке: сначала при помощи секретного ключа получателя расшифровывается симметричный ключ, а затем при помощи симметричного ключа -полученный по каналу зашифрованный текст. Для формирования электронной подписи по подписываемому тексту вычисляется его однонаправленная хэш-функция(дайджест) [one-way hash function, digest], представляющая собой один короткий блок информации, характеризующий весь текст в целом; задача восстановления текста по его хэш-функции или подбора другого текста, имеющего ту же хэш-функцию, практически неразрешима. При непосредственном формировании подписи, вместо шифрования секретным ключом каждого блока текста секретный ключ применяется только к хэш-функции; по каналу передается сам текст и сформированная подпись хэш-функции. Для проверки подписи снова вычисляется хэш-функция от полученного по каналу текста, после чего при помощи открытого ключа проверяется, что подпись соответствует именно данному значению хэш-функции. Алгоритмы вычисления однонаправленных хэш-функций, как правило, логически тесно связаны с алгоритмами шифрования с симметричным ключом.

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

  1. Асимметричная (открытая) методология.

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

Все асимметричные криптосистемы  являются объектом атак путем прямого  перебора ключей, и поэтому в них  должны использоваться гораздо более длинные ключи, чем те, которые используются в симметричных криптосистемах, для обеспечения эквивалентного уровня защиты. Это сразу же сказывается на вычислительных ресурсах, требуемых для шифрования, хотя алгоритмы шифрования на эллиптических кривых могут смягчить эту проблему. Брюс Шнейер в книге "Прикладная криптография: протоколы, алгоритмы и исходный текст на C" приводит в таблице № 1 следующие данные об эквивалентных длинах ключей.

 
|Длина симметричного ключа |Длина  асимметричного ключа | 
|56 бит |384 бит | 
|64 бита |512 бит | 
|80 бит |768 бит | 
|112 бит |1792 бита | 
|128 бит |2304 бита |

Таблица № 1. 

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

В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные  ключи были сопоставимы в отношении  уровня безопасности, который они  обеспечивают. 
Если используется короткий сеансовый ключ (например, 40-битовый DES), то не имеет значения, насколько велики асимметричные ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем. 

  1. Порядок использования систем с асимметричными ключами:

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

2. Создается  электронная подпись текста с  помощью вычисления его хэш-  функции. Полученное значение  шифруется с использованием асимметричного  секретного ключа отправителя,  а затем полученная строка  символов добавляется к передаваемому  тексту (только отправитель может создать электронную подпись).

3. Создается  секретный симметричный ключ, который  будет использоваться для шифрования  только этого сообщения или  сеанса взаимодействия (сеансовый ключ), затем при помощи симметричного алгоритма шифрования/расшифровки и этого ключа шифруется исходный текст вместе с добавленной к нему электронной подписью - получается зашифрованный текст (шифр-текст).

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

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

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

Поэтому открытый асимметричный ключ получателя "подписывается" у центра сертификатов. Это означает, что центр сертификатов использовал  свой асимметричный секретный ключ для шифрования асимметричного отркытого  ключа получателя. Только центр сертификатов знает асимметричный секретный ключ, поэтому есть гарантии того, что открытый асимметричный ключ получателя получен именно от него.

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

8. Теперь шифруется  сеансовый ключ с использованием  асимметричного алгоритма шифрования-расшифровки  и асимметричного ключа получателя

(полученного от центр сертификатов и расшифрованного).

9. Зашифрованный  сеансовый ключ присоединяется  к зашифрованному тексту

(который включает  в себя также добавленную ранее  электронную подпись).

10. Весь полученный  пакет данных (зашифрованный текст,  в который входит помимо исходного текста его электронная подпись, и зашифрованный сеансовый ключ) передается получателю. Так как зашифрованный сеансовый ключ передается по незащищенной сети, он является очевидным объектом различных атак. 

11. Получатель  выделяет зашифрованный сеансовый ключ из полученного пакета. 

12. Теперь получателю  нужно решить проблему с расшифровкой  сеансового ключа. 

13. Получатель  должен иметь асимметричный открытый  ключ центра выдачи сертификатов. 

14. Используя  свой секретный асимметричный  ключ и тот же самый асимметричный алгоритм шифрования получатель расшифровывает сеансовый ключ. 

15. Получатель  применяет тот же самый симметричный  алгоритм шифрования- расшифровки  и расшифрованный симметричный (сеансовый)  ключ к зашифрованному тексту  и получает исходный текст вместе с электронной подписью. 

16. Получатель  отделяет электронную подпись  от исходного текста. 

17. Получатель  запрашивает у центр сертификатов  асимметричный открытый ключ  отправителя. 

18. Как только  этот ключ получен, получатель  расшифровывает его с помощью открытого ключа центр сертификатов и соответствующего асимметричного алгоритма шифрования-расшифровки. 

19. Затем расшифровывается  хэш-функция текста с использованием  открытого ключа отправителя  и асимметричного алгоритма шифрования-расшифровки. 

20. Повторно  вычисляется хэш-функция полученного  исходного текста. 

21. Две эти  хэш-функции сравниваются для  проверки того, что текст не  был изменен.

  1. Идея криптосистемы с открытым ключом

 

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

Но сама односторонняя  функция бесполезна в применении: ею можно зашифровать сообщение, но расшифровать нельзя. Поэтому криптография с открытым ключом использует односторонние функции с лазейкой. Лазейка — это некий секрет, который помогает расшифровать. То есть существует такой y, что зная f(x) и y, можно вычислить x. К примеру, если разобрать часы на множество составных частей, то очень сложно собрать вновь работающие часы. Но если есть инструкция по сборке (лазейка), то можно легко решить эту проблему.

Понять идеи и методы криптографии с открытым ключом помогает следующий пример —  хранение паролей в компьютере. Каждый пользователь в сети имеет свой пароль. При входе он указывает имя и вводит секретный пароль. Но если хранить пароль на диске компьютера, то кто-нибудь его может считать (особенно легко это сделать администратору этого компьютера) и получить доступ к секретной информации. Для решения задачи используется односторонняя функция. При создании секретного пароля в компьютере сохраняется не сам пароль, а результат вычисления функции от этого пароля и имени пользователя. Например, пользователь Алиса придумала пароль «Гладиолус». При сохранении этих данных вычисляется результат функции f(ГЛАДИОЛУС), пусть результатом будет строка РОМАШКА, которая и будет сохранена в системе. В результате файл паролей примет следующий вид:

Имя f(имя_пароль)

АЛИСА РОМАШКА 

БОБ НАРЦИСС 

Вход в систему  теперь выглядит так:

Имя: АЛИСА 

Пароль: ГЛАДИОЛУС 

Когда Алиса  вводит «секретный» пароль, компьютер  проверяет, даёт или нет функция, применяемая к ГЛАДИОЛУС, правильный результат РОМАШКА, хранящийся на диске компьютера. Стоит изменить хотя бы одну букву в имени или в пароле, и результат функции будет совершенно другим. «Секретный» пароль не хранится в компьютере ни в каком виде. Файл паролей может быть теперь просмотрен другими пользователями без потери секретности, так как функция практически необратимая.

В предыдущем примере  используется односторонняя функция  без лазейки, поскольку не требуется  по зашифрованному сообщению получить исходное. В следующем примере  рассматривается схема с возможностью восстановить исходное сообщение с помощью «лазейки», то есть труднодоступной информации. Для шифрования текста можно взять большой абонентский справочник, состоящий из нескольких толстых томов (по нему очень легко найти номер любого жителя города, но почти невозможно по известному номеру найти абонента). Для каждой буквы из шифруемого сообщения выбирается имя, начинающееся на ту же букву. Таким образом букве ставится в соответствие номер телефона абонента. Отправляемое сообщение, например «КОРОБКА», будет зашифровано следующим образом:

Сообщение Выбранное имя Криптотекст 

К Королёв 5643452

О Орехов 3572651

Р Рузаева 4673956

O Осипов 3517289

Б Батурин 7755628

К Кирсанова 1235267

А Арсеньева 8492746

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

Информация о работе Разработка программного средства реализации шифрования с применением асимметричных криптосистем