Реализация системы распространения ключей на основе алгоритма Диффи-Хеллмана (длиной 256 бит)

Автор работы: Пользователь скрыл имя, 24 Мая 2010 в 03:27, Не определен

Описание работы

ВВЕДЕНИЕ 3
Глава 1. Система открытого распределения ключей 4
1.1. История создания системы распределения ключей. 4
1.2. Система распределение ключей Диффи-Хеллмана 6
1.3. Описание средств разработки. 7
Глава 2. Программная реализация открытого распространения ключей Диффи-Хеллмана. 9
2.1. Математические основы алгоритмов используемых в работе. 9
2.1.1. Сложение и вычитание 9
2.1.2. Умножение «в столбик». 10
2.1.3. Возведение целого числа в квадрат. 12
2.1.4. Деление. Вычисление остатка. 13
2.1.5. Тест Рабина— Миллера 16
2.1.6. Модульное возведение в степень 18
2.1.7. Генерация простого числа 20
2.1.8. Разложение числа на простые множители. 23
2.1.9. Нахождение первообразного корня. 24
Глава 3. Оценка алгоритма. 27
3.1. Оценка стойкости алгоритма. 27
3.2. Оценка скорости работы алгоритма. 27
ЗАКЛЮЧЕНИЕ 29
Литература. 30

Файлы: 1 файл

ИЗ.doc

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

Министерство  образования и науки Российской Федерации 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Реализация  системы распространения ключей на основе

алгоритма Диффи-Хеллмана

(длиной 256 бит) 
 
 
 
 
 
 
 
 
 
 
 

Выполнил: Денисов А. П.

Проверил: Корниенко В. Т. 
 
 
 
 
 

2010

 

Оглавление

 

       ВВЕДЕНИЕ

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

     Объектом  исследования является алгоритм распределения  ключей Диффи-Хеллмана.

     Предмет исследования – программная реализация алгоритма распределения ключей Диффи-Хеллмана.

     Цель  работы - построение программного продукта на основе открытого распределения ключей Диффи-Хеллмана. Для ее решения были поставлены следующие задачи:

  1. изучить криптографический алгоритм
  2. построить математическую модель удобную для программирования
  3. обосновать алгоритмическое решение программы
  4. произвести оценку алгоритма
  5. реализовать алгоритм криптосистемы на основе открытого распределения ключей Диффи-Хеллмана на одном из языков программирования
  6. произвести проверку работоспособности и корректности работы программы

 

      

      Глава 1 Система открытого распределения ключей.

      1.1. История создания системы распределения ключей

      В 1970 году Мартин Хеллман, молодой профессор, занимавшийся вопросами проектирования электрических систем в Стенфордском университете в Пало-Альто (шт. Калифорния). Хеллман увлекся проблемой в 1968 году, когда работал в IBM в Пенсильвании, [Завгородный В.И., 2001].

      Хеллман рассказывает, что он прозрел после того, как прочитал статьи Клода Шенона по теории информации и криптографии, которые опубликовались в 1948 и 1949 годах. "До этого я и представить себе не мог, насколько тесно связано шифрование и теория информации", - говорит он.

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

      Пока  Хеллман искал пути для решения  проблемы, некий студент из MIT по имени Уайтфилд Диффи заинтересовался тем же самым. Но поиски Диффи начались значительно раньше. "Я увлекся шифрованием, когда мне было всего десять лет, - вспоминает он. - У меня был учитель, который посвящал проблеме шифрования буквально целые дни. Я шел домой, а там меня ждали книги по этому предмету. Отец приносил мне их из библиотеки колледжа".

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

      А в это самое время Ральф  Меркл, студент Университета Беркли (шт. Калифорния), занимающийся исключительно проектированием электрических систем, бродил по университетскому городку, снедаемый мыслями о шифровании, [Завгородный В.И., 2001].

      "Я  думал о том, как обеспечить  защиту коммуникаций между терминалом  и компьютером, - рассказывает Меркл. - Я понял, что если оба, и терминал, и компьютер, используют случайные числа, восстановить ключ при передаче по открытым линиям связи будет невозможно".

      Пытаясь объединить разрозненные идеи по шифрованию данных, Хеллман продолжал искать единомышленников. Однако получилось наоборот: в сентябре 1973 года его нашел Диффи. Их получасовая встреча плавно перешла в обед у Хеллмана, причем разговоры затянулись далеко за полночь.

      Хеллман и Диффи начали работать над созданием  алгоритма обеспечения защиты транзакций покупки и продажи, выполняемых с домашних терминалов. "Я ломал голову над тем, как получить сообщение и преобразовать его таким образом, чтобы его воспринимали только те, кому предназначено, а посторонним информация была недоступна, - сказал Диффи. - Затем я понял, что при помощи сертификатов и подписи можно создать сообщение, которое сможет прочитать только один человек", [Завгородный В.И., 2001].

      Хеллман и Диффи сообщили, что их первая статья по теории цифровых подписей вышла  в декабре 1975 года. Представлена она была полгода спустя на Национальной компьютерной конференции в Нью-Йорке.

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

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

      В 1976 г. Мерклу удалось при помощи Хеллмана и Диффи справиться с задачей распространения открытого ключа и развить аппарат цифровой подписи. Они создали и запатентовали систему, получившую имя Диффи-Хеллмана. Открытие обеспечило нашему трио внимание со стороны средств массовой информации.

      Но  внимание это улетучилось так  же быстро, как и возникло. Изобретатели опередили свое время: задача, решение  которой они предлагали, еще не была сформулирована, [Завгородный В.И., 2001].

      1.2. Система распределение ключей Диффи-Хеллмана

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

      f(x) = α x(mod p),

      где х — целое число. 1< x <р—1, р — k-битовое простое число, α - первообразный корень по модулю р, [Молдовян Н.А. и др., 2004].

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

      у = α х (mod p).

      Системой Диффи-Хеллмана называется следующий способ использования дискретного возведения в степень для обмена секретными ключами между пользователями сети с применением только открытых сообщений. Выбирается большое простое число р и соответствующий ему первообразный корень а < р. Для обеспечения стойкости рассматриваемой системы открытого шифрования на число р накладывается следующее условие: разложение числа р-1 на множители должно содержать, по крайней мере, один большой простой множитель; размер числа р должен быть не менее 512 бит.

      Механизм  распределения секретных ключей по открытому каналу состоит в  следующем. Каждый абонент выбирает случайный секретный ключ x и вырабатывает открытый ключ у, соответствующий выбранному секретному ключу, в соответствии с формулой

      y = α x (mod p).

      Два абонента А и В могут установить секретную связь без передачи секретного ключа следующим образом. Абонент А берет из справочника открытый ключ уB абонента В и, используя свой секретный ключ хА, вычисляет общий секретный ключ:

      

      Аналогично  поступает абонент В:

      

      Таким образом, оба абонента сформировали одинаковый секретный ключ ZAB без использования какого-либо заранее оговоренного общего секрета. Владея только им известным секретом и используя его в качестве мастер-ключа, данная пара абонентов может зашифровывать направляемые друг другу сообщения. Указанные выше вычисления легко осуществимы для достаточно больших значений р, а, у и х (например, имеющих в двоичном представлении длину 4096 бит и более). Атакующему известны значения и , но для того чтобы вычислить ZAB, он должен решить задачу дискретного логарифмирования и определить либо хA, либо хB. Легко найти большие значения р (более 1024 бит), для которых задача дискретного логарифмирования является трудно решаемой. Если будут найдены вычислительно эффективные методы решения задачи дискретного логарифмирования, то метод Диффи-Хеллмана окажется несостоятельным — в связи с этим говорят, что данный .метод открытого распределения ключей основан на сложности дискретного логарифмирования. В настоящее время в общем случае задача дискретного логарифмирования практически неразрешима, что дает возможность широкого практического применения метода Диффи-Хеллмана и многочисленных систем ЭЦП, основанных на сложности вычисления дискретных логарифмов.

      Не  следует упускать из виду проблему аутентификации открытых ключей. Корректность протоколов с использованием асимметричных шифров может быть обеспечена только в случае, если все открытые ключи в справочнике открытых ключей являются подлинными. Если открытый ключ какого-либо абонента нарушителю удастся подменить, то секретные сообщения, посланные данному абоненту, будут доступны нарушителю. Таким образом, двухключевые шифры обеспечивают решение проблемы распределения секретных ключей, однако проблема аутентификации сохраняется и имеет фундаментальный характер, хотя требование подтверждения подлинности (аутентификации) относится уже к открытому, а не к секретному ключу. В неявном виде аутентификация открытого ключа включает в себя аутентификацию секретного ключа, [Молдовян Н.А. и др., 2004].

      1.3. Описание средств разработки.

      Проект  реализован с помощью среды C++Builder 6, которая позволяет разрабатывать серверы и клиенты Web-служб. C++Builder 6 обеспечивает поддержку клиентов Web-служб, использующих как SOAP encoding, так и Document Literal style. Document Literal style используется в Microsoft. Net Web Services. Предоставляя набор выскокоуровненвых компонент и визардов, включая автоматическую публикацию WSDL-описателей Web-служб в run-time и генерацию кода на основе WSDL (WSDL Importer), C++Builder 6 позволяет разработчикам легко адаптировать существующие приложения для работы в режиме Web-служб и доступа к ним как во внутрикорпоративной сети, так и через Web.

      C++ Builder позволяет задействовать ранее  созданный исходный код на C и  С++. Можно работать с унаследованными  проектами и приложениями третьих  фирм на Borland C++ и Visual C++ внутри  интегрированной среды разработки C++ Builder. Расширенная совместимость с исходным кодом MS Visual C++, включая поддержку исходных текстов MSDN и SDK, позволяет использовать новейшие версии библиотек MFC и ATL. За счет поддержки стандарта C++, RTTI, библиотек STL, RTL, ATL и MFC, позволяет компилировать и собирать проекты, созданные ранее на отличных от C++ Builder средствах разработки для C/C++.

 

Глава 2. Программная реализация открытого 
распространения ключей Диффи-Хеллмана.

      2.1. Математические основы алгоритмов используемых в работе

      При создании программы возник вопрос: каким образом представлять большие  числа? Решение было принято о  том что число можно занести  в массив типа unsigned char в который помещается два шестнадцатеричных числа, которые обрабатываются как 256-разрядные:

Информация о работе Реализация системы распространения ключей на основе алгоритма Диффи-Хеллмана (длиной 256 бит)