Может ли человек посередине не просто взять ключи, обмененные противниками, изменить ключи, а затем снова расшифровать и зашифровать сообщение?
Да, они могут.
Протокол обмена ключами, такой как (версия «учебника») DH , защищен от перехвата (т. Е. Просто наблюдает за тем, что передается по каналу), но полностью разрушается от атак «человек посередине» (MITM), так как Вы заявили.
Сертификаты являются попыткой исправить это, но возникает другая проблема: как вы можете гарантировать, что обе стороны получат правильный сертификат? Очевидно, что вы не можете просто отправить сертификаты по небезопасному каналу, поскольку это снова подвержено атаке MITM.
Решением является наличие альтернативного (полностью) безопасного канала . Это могут быть либо две стороны, встречающиеся лично и обменивающие свои сертификаты физически, либо по некоторому альтернативному доверенному каналу (например, по телефону, если ему можно доверять).
В компьютерных сетях альтернативным каналом обычно является инфраструктура открытого ключа (PKI). Это означает, что ваша операционная система или браузер имеет набор предварительно настроенных корневых сертификатов, из которых подписаны другие сертификаты (и, возможно, даже дополнительные сертификаты, использующие их в качестве промежуточных сертификатов ). Следовательно, когда вы посещаете какой-либо веб-сайт, он представляет подписанный сертификат, который подписывается с использованием (цепочки) сертификатов, которым вы уже доверяете. Затем, используя этот сертификат, возможен обмен аутентифицированным ключом (например, для согласования эфемерного ключа для использования с обычным симметричным шифрованием).
В атаке «человек посередине» вы спрашиваете у Боба его ключ, но Ева перехватывает сообщение и вместо этого отправляет вам свой ключ. Она спрашивает у Боба его ключ, а затем передает сообщения между вами и Бобом, расшифровывает их, читает и / или изменяет их в процессе.
Проблема в том, что вы не знаете, действительно ли у вас есть ключ Боба. Сертификаты обходят это, потому что центр сертификации (CA) дает Бобу сообщение с цифровой подписью, говорящее «ключ Боба - 12345». Вы можете проверить этот сертификат, потому что там не так много CA, так что ваш браузер просто содержит список действительных ключей CA. Теперь, если Ева перехватит вашу попытку начать зашифрованное общение с Бобом, у нее есть два варианта. Если она говорит вам, что ключ Боба - 67890, то либо она не предоставляет сертификат, а вы говорите: «Извините, вам нужно это доказать», либо она предоставляет поддельный сертификат, а вы говорите: «Этот сертификат недействителен». В качестве альтернативы она говорит вам, что ключ Боба - 12345 и предоставляет действительный сертификат этого, но это бесполезно для нее, потому что она не '
источник