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

Термин Определение
Протокол Диффи-Хеллмана

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


 

Он был опубликован в 1976 году и послужил началом эры асимметричной криптографии. Его суть проста: два человека (для удобства назовем их пользователь Алиса и пользователь Боб) хотят получить общий ключ для симметричной криптосистемы. Тогда они договариваются и выбирают два больших числа g и p. Эти числа известны им обоим. Затем первый пользователь  в тайне генерирует большое секретное число a, а второй — большое число b. А далее они просто вычисляют общий ключ по формулам с помощью своих чисел.

Таким образом при работе алгоритма каждая сторона:

- Генерирует случайное натуральное число a — закрытый ключ

- Совместно с удалённой стороной устанавливает открытые параметры p и g, где p является случайным простым числом, а g является первообразным корнемпо модулюp (также является простым числом)

- Вычисляет открытый ключ A, используя преобразование над закрытым ключом A = gamod p

- Обменивается открытыми ключами с удалённой стороной

- Вычисляет общий секретный ключ K, используя открытый ключ удаленной стороны B и свой закрытый ключ aK = Bamod p

К получается равным с обеих сторон.

Гениальность идеи заключается в том, что для получения ключа им не понадобится много времени, в то время как злоумышленнику придется решать задачу дискретного логарифмирования. Таким образом, протокол Диффи-Хеллмана отлично противостоит пассивному нападению, но в случае реализации атаки «человек посередине» он не устоит. В самом деле, в этом протоколе ни А, ни Б не могут достоверно определить, кем является их собеседник, поэтому вполне возможно представить следующую ситуацию, при которой они на самом деле общаются с лицом, выдающим себя за другого. И тогда вместо протокола Диффи-Хеллмана мы получаем ситуацию, при которой  третье лицо получает один ключ общий с А и Б, которые принимают его друг за друга. Следовательно, оно может получать все их сообщения и расшифровывать их, зная ключ, при этом А и Б могут долгое время не замечать подлога.  

Как бороться с такой уязвимостью? Самый логичный и простой ответ: нужна взаимная аутентификация. И тут на помощь приходит ЭЦП.  Если Боб знает открытый ключ Алисы, и он абсолютно точно уверен, что это ключ Алисы, то для защиты от атаки «человек посередине» Алисе достаточно подписать своим закрытым ключом число на шаге 1. Но все еще остается одно НО - чрезмерное увеличение размера сообщений за счет добавления подписи.

Вот потому и был придуман протокол MQV, избавляющий Диффи-Хеллман от уязвимости и при этом не использующий ЭЦП.