Обмен ключами по алгоритму Диффи-Хеллмана

Предположим, что обоим абонентам известны некоторые два числа a и p. Они, впрочем, известны и всем остальным заинтересованным лицам. Например, они могут быть просто фиксировано "зашиты" в программное обеспечение. Для того, чтобы создать неизвестный более никому секретный ключ, оба абонента генерируют случайные или простые псевдослучайные числа: первый абонент – число x, второй абонент – число y. Затем первый абонент вычисляет значение (ax) mod p и пересылает его второму, а второй вычисляет (ay) mod p и передает первому. Злоумышленник получает оба этих значения, но модифицировать их (вмешаться в процесс передачи) не может. На втором этапе первый абонент на основе имеющегося у него x и полученного по сети (ay) mod p вычисляет значение (((ay) mod p)x)mod p, а второй абонент на основе имеющегося у него y и полученного по сети (ax) mod p вычисляет значение (((ax) mod p)y)mod p. На самом деле операция возведения в степень переносима через операцию взятия модуля по простому числу (то есть коммутативна в конечном поле), то есть у обоих абонентов получилось одно и то же число: ((ax*y) mod p. Его они и могут использовать в качестве секретного ключа, поскольку здесь злоумышленник снова встретится с проблемой RSA при попытке выяснить по перехваченным (ax) mod p и (ay) mod p сами числа x и y – это очень и очень ресурсоемкая операция, если числа a,p,x,y выбраны достаточно большими.

Необходимо еще раз отметить, что алгоритм Диффи-Хеллмана работает только на линиях связи, надежно защищенных от модификации. Если бы он был применим на любых открытых каналах, то давно снял бы проблему распространения ключей и, возможно, заменил собой всю асимметричную криптографию. Однако, в тех случаях, когда в канале возможна модификация данных, появляется очевидная возможность вклинивания в процесс генерации ключей "злоумышленника-посредника" по той же самой схеме, что и для асимметричной криптографии.

Пример:

С помощью общего ключа абоненты могут осуществлять обмен информацией, не зная секретного ключа своего абонента.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: