На практике обмен ключами по алгоритму Диффи-Хеллмана происходит по следующей схеме.
1. Два участника обмена договариваются о двух числах. Один выбирает большое простое число, а другой – целое число, меньшее числа первого участника. Переговоры они могут вести открыто, и это никак не отразится на безопасности.
2. Каждый из двух участников, независимо друг от друга, генерит другое число, которое они будут хранить в тайне. Эти числа выполняют роль секретного ключа. Далее в вычислениях используются секретный ключ и два предыдущих целых числа. Результат вычислений посылается участнику обмена, и он играет роль открытого ключа.
3. Участники обмена обмениваются открытыми ключами. Далее они, используя собственный секретный ключ и открытый ключ партнера, конфиденциально вычисляют ключ сессии. Каждый партер вычисляет один и тот же ключ сессии.
4. Ключ сессии может использоваться как секретный ключ для другого алгоритма шифрования, например DES. Никакое третье лицо, контролирующее обмен, не сможет вычислить ключ сессии, не зная один из секретных ключей.
Самое сложное в алгоритме Диффи-Хеллмана обмена ключами – это понять, что в нем фактически два различных независимых цикла шифрования. Алгоритм Диффи-Хеллмана применяется для обработки небольших сообщений от отправителя получателю. Но в этом маленьком сообщении передается секретный ключ для расшифровки большого сообщения.
Сильная сторона алгоритма Диффи-Хеллмана заключается в том, что никто не сможет скомпрометировать секретное сообщение, зная один или даже два открытых ключа получателя и отправителя. В качестве секретных и открытых ключей используются очень большие целые числа. Алгоритм Диффи-Хеллмана основан на полезных для криптографии свойствах дискретных логарифмов. Безопасность алгоритма основана на значительной сложности вычисления дискретных логарифмов по сравнению с возведением в степень натуральных чисел. Несмотря на то что несколько лет назад срок действия патента истек, алгоритм широко используется. Особенно в протоколе IPSec, где алгоритм Диффи-Хеллмана применяется совместно с алгоритмом аутентификации RSA для обмена ключом сессии, который используется для шифрования трафика по туннелю IPSec.
Спустя год после появления алгоритма Диффи-Хеллмана Рон Ривест (Ron Rivest), Ади Шамир (Adi Shamir) и Леонард Адлеман (Leonard Adleman) предложили другой вариант построения криптографической системы с открытым ключом. Их предложение теперь известно как алгоритм RSA. Имя алгоритма образовано из первых букв фамилий авторов алгоритма. RSA очень похож на алгоритм Диффи-Хеллмана тем, что он основан на факторизации (разложении числа на сомножители) и перемножении больших целых чисел. Но RSA работает значительно быстрее алгоритма Диффи-Хеллмана. Благодаря RSA асимметричные криптосистемы разделись на два класса: системы распределения открытых ключей (Public