Протокол обмена ключами Диффи–Хеллмана не обеспечивает аутентичности согласованного ключа. Активный противник, внедренный в канал связи между двумя пользователями А и Б, может манипулировать сообщениями протокола и начать атаку “человек посередине” (man-in-the-middle attack).
В ходе этой атаки Злоумышленник перехватывает и блокирует первое сообщение от А к Б, т. е. число gа, маскируется под А и посылает Б следующее сообщение.
Злоумышленник (под именем А) — Б: gm = gm (mod p).
Б, следуя инструкциям протокола, возвращает Злоумышленнику (под именем А) число gb. Это число снова перехватывается и блокируется Злоумышленником. Теперь Злоумышленник и Б согласовали между собой ключ gb m =(mod p), хотя Б считает, что он разделил этот ключ с А.
Аналогично Злоумышленник, имитируя Б, может согласовать другой ключ с А (т.е. число ga m(mod p)). Впоследствии Злоумышленник может использовать оба ключа для чтения и подмены “секретных” сообщений, которыми обмениваются А и Б, или поочередно имитировать этих пользователей.
|
|
Атака на протокол обмена ключами Диффи–Хеллмана вполне реальна, поскольку этот протокол не предусматривает проверки аутентичности источника сообщений. Для того чтобы ключи были согласованы только между А и Б, обе стороны должны быть уверены друг в друге.
Минусы программной реализации, снижающие стойкость:
-при вычислении функции step(), описанной выше, появляется прямая зависимость времени вычисления от количества единиц (при бинарном представлении) в степени. Что может дать представление о количестве единиц в секретном ключе.
- в программном продукте не реализована полная очистка оперативной памяти.
- секретные ключи хранятся в открытом виде на диске.
- не реализована возможность вычисления хэш, в результате чего возможна модификация ключей.
Оценка скорости работы алгоритма
Оценка производилась на компьютере:
Тип ЦП AMD Sempron, 1666 MHz,2400+
Чипсет системной платы nVIDIA nForce2 Ultra 400
Системная память 1024 Мб (DDR SDRAM)
Наиболее долгой является операция генерации большого простого числа p, такого что p-1 раскладывается на простые множители, причем разложение должно иметь один большой простой множитель, и нахождение первообразного корня. Этот процесс является вероятностным и может привести к неопределенной отсрочке.
Результаты тестирования программы приведены в таблице 1.
Таблица 1.
Тест на время реализации базовых операций программного продукта
Время генерации, сек. | Количество проверенных значений, ед. | Скорость проверки значений, ед./сек.
| ||
16 | 2700 | 168,8 | ||
34 | 7400 | 217,6 | ||
26 | 4400 | 169,2 | ||
160 | 23300 | 145,6 | ||
48 | 10000 | 208,3 | ||
83 | 17600 | 212,0 | ||
4 | 400 | 100,0 | ||
137 | 23900 | 174,5 | ||
5 | 600 | 120,0 | ||
| Среднее значение: | 168,5 |
Основная нагрузка для проверки скорости работы лежит на функции вычисления степени по модулю. Скорость работы алгоритма зависит от выбранной степени, чем больше единиц в бинарном представлении степени, тем дольше будет происходить операция возведения в степень по модулю.
Заключение
В ходе курсовой работы был изучен алгоритм распределения ключей Диффи-Хеллмана и реализован на языке программирования С++. Полученный программный продукт отвечает требованиям, предъявляемым к системе открытого распространения ключей Диффи-Хеллмана.
У программного продукта есть недостатки:
-при вычислении функции step(), описанной выше, появляется прямая зависимость времени вычисления от количества единиц (при бинарном представлении) в степени. Что может дать представление о количестве единиц в секретном ключе.
- в программном продукте не реализована полная очистка оперативной памяти.
- секретные ключи хранятся в открытом виде на диске.
- не реализована возможность вычисления хэш, в результате чего возможна модификация ключей.
- не реализована аппаратная система.
Таким образом, поставленная в работе цель была выполнена, решены необходимые задачи и на основании их сделаны соответствующие выводы.
Литература
1. Аграновский А.В., Хади Р.А. Практическая криптография. Алгоритмы и их программирование. М.: Солон-Пресс, 2002 г. – 256 с.
2. Галуев Г.А. Математические основы криптологии. Учебно-методическое пособие. Таганрог, 2003 г. 79 с.
3. Дебора Керр Computerworld #39/1996 Тайна открытого ключа. http://www.osp.ru/cw/1996/39
4. Завгородний В. И. Комплексная защита информации в компьютерных системах. М.: Логос, 2001 г. – 264 с.
5. Кнут Д.Э. Искусство программирования. Т. 2. Получисленные алгоритмы. М. СПб. – Киев: Вильямс, 2000 г. – 832 с.
6. Молдовян Н. А., Молдовян А. А., Еремеев М. А.. Криптография. От примитивов к синтезу алгоритмов. С-Пб.: БХВ-Петербург, 2004 г. – 505 с.
7. Маховенко Е. Б. Теоретико-числовые методы в криптографии. М.: Гелиос АРВ, 2006 г. – 320 с.
8. Нильс Фюргесон, Брюс Шнайер. Практическая криптография. Киев: Диалектика, 2004 г. – 432 с.
9. Рябко Б. Я., Фионов А. Н. Криптографические методы защиты информации. Учебное пособие. М.: Горячая линия – Телеком, 2005 г. – 232 с.
10. Смарт Н. Криптография. М.: Техносфера, 2006 г. – 528 с.
11. Шнайер Б.. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке С. М.: Триумф, 2002 г. – 816 с.