Вы наверняка знаете, что такое алгоритм асимметричного шифрования, который используется в обмене шифрованными сообщениям, в частности в протоколе https. Если кто не в курсе, прочитайте статью в Википедии:
Криптосистема с открытым ключом
В этой же статье описана атака на соединение с помощью посредника, контролирующего все исходящие и входящие соединения между двумя узлами, которые устанавливают защищенное соединение. Сейчас устранение этой уязвимости решается с помощью обмена сертификатами открытых ключей, что очень неудобно. Хотелось бы иметь защищенную возможность обмениваться ключами через сеть. Казалось бы, поиски решения схожи с задачей нахождения вечного двигателя, однако здесь все же есть несколько лазеек.
Я предлагаю вашему вниманию алгоритм валидации ключа выбранного сервера, который, возможно, поможет свести вероятность подмены ключей к минимуму: