for(t=0;t<=31;t++)st[t]=b[t];
step(b);
x=rav(b);
if(x==0) flag=0;
}
}
}
}
if(flag==1){
break;
}
}
}
3.1. Оценка криптостойкости алгоритма
Протокол обмена ключами Диффи–Хеллмана не обеспечивает аутентичности согласованного ключа. Активный противник, внедренный в канал связи между двумя пользователями А и Б, может манипулировать сообщениями протокола и начать атаку “человек посередине” (man-in-the-middle attack).
В ходе этой атаки Злоумышленник перехватывает и блокирует первое сообщение от А к Б, т. е. число gа , маскируется под А и посылает Б следующее сообщение.
Злоумышленник (под именем А) — Б: gm = gm (mod p).
Б , следуя инструкциям протокола, возвращает Злоумышленнику (под именем А) число gb. Это число снова перехватывается и блокируется Злоумышленником. Теперь Злоумышленник и Б согласовали между собой ключ gb m =(mod p) , хотя Б считает , что он разделил этот ключ с А.
Аналогично Злоумышленник, имитируя Б, может согласовать другой ключ с А (т.е. число ga m(mod p)). Впоследствии Злоумышленник может использовать оба ключа для чтения и подмены “секретных” сообщений, которыми обмениваются А и Б, или поочередно имитировать этих пользователей.
Атака на протокол обмена ключами Диффи–Хеллмана вполне реальна, поскольку этот протокол не предусматривает проверки аутентичности источника сообщений. Для того чтобы ключи были согласованы только между А и Б, обе стороны должны быть уверены друг в друге.
Минусы программной реализации, снижающие стойкость:
-при вычислении функции step(), описанной выше, появляется прямая зависимость времени вычисления от количества единиц (при бинарном представлении) в степени. Что может дать представление о количестве единиц в секретном ключе.
- в программном продукте не реализована полная очистка оперативной памяти.
- секретные ключи хранятся в открытом виде на диске.
- не реализована возможность вычисления хэш, в результате чего возможна модификация ключей.
3.2. Оценка скорости работы алгоритма
Оценка производилась на компьютере:
Тип ЦП 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( ), описанной выше, появляется прямая зависимость времени вычисления от количества единиц (при бинарном представлении) в степени. Что может дать представление о количестве единиц в секретном ключе.
- в программном продукте не реализована полная очистка оперативной памяти.
- секретные ключи хранятся в открытом виде на диске.
- не реализована возможность вычисления хэш, в результате чего возможна модификация ключей.
- не реализована аппаратная система.
Таким образом, поставленная в работе цель была выполнена, решены необходимые задачи и на основании их сделаны соответствующие выводы.