Этот алгоритм предполагает, что два абонента дистанционно будут генерировать ключ для шифрования в дальнейшем, например, каким-либо симметричным алгоритмом. Алгоритм Диффи-Хеллмана (1976 год) использует функцию дискретного возведения в степень.
Последовательность действий в алгоритме Диффи-Хелмана:
1. Сначала генерируются два больших простых числа n и q. Эти два числа не обязательно хранить в секрете.
2. Далее один из партнеров P1 генерирует случайное число x и посылает другому участнику будущих обменов P2 значение A = qx mod n.
3. По получении А партнер P2 генерирует случайное число у и посылает P2 вычисленное значение B = qy mod n.
4. Партнер P1, получив В, вычисляет Kx = Bx mod n.
5.Партнер P2, получив A вычисляет Ky = Ay mod n.
6. Алгоритм гарантирует, что числа Ky и Kx равны и могут быть использованы в качестве секретного ключа для шифрования.
Как видно из алгоритма, даже «перехватив» числа А и В, вычислить Kx или Ky невозможно.
Пример. Представим итерации алгоритма в виде последовательности действий партнеров в табличной форме (табл. 2.1). Таблица 2.1
Совместным ключом для шифрования будет 5.