Перехват ключа шифрования VPN

При использовании VPN. Правда, что COPM использует перехват ключа шифрования и атака типа: "человек по середине", то трафик будет записан в открытом виде. При каких условиях такое реализуемо?


Ответы (1 шт):

Автор решения: Pak Uula

Это будет возможно, если разработчики VPN решения - совсем зелёные юнцы, которые понятия не имеют о аутентификации сервера и сертификатах.

Атака MiM возможна только в том случае, когда клиент не запрашивает сертификат сервера. Тогда действительно можно в точке обмена трафиком перенаправить пакеты, адресованные на IP адрес / порт VPN сервера, на поддельный сервер, и этот сервер увидит весь трафик клиента.

В реальной жизни разработчики VPN снабжают сервера приватными ключами, а клиентам выдают сертификат сервера. В ходе handshake сервер демонстрирует, что знает секретный ключ, ещё до передачи каких-либо данных клиента. Если же сервер не знает приватный ключ, то он считается поддельным, и соединение не устанавливается.

Пример: конфигурационный файл клиента OpenVPN. В этом файле два сертификата, они используются для аутентификации сервера, приватный ключ клиента - используется для аутентификации клиента, и общий ключ шифрования. Общий ключ - это тяжелое наследие прошлого, при наличии сертификатов и TLS аутентификации он не используется.

В принципе, одного общего ключа было бы достаточно для защиты от MiM - если сервер не знает этот ключ, то он не может расшифровать пакеты клиента, следовательно это поддельный сервер. Но общий ключ очень уязвим. Достаточно один раз его скомпрометировать, и будут скомпрометированы все клиенты разом. Поэтому сервера аутентифицируются по сертификату, а сессионный ключ для каждого подключения генерируется случайным образом, чтобы защититься от MiM.

dev tun
proto tcp
remote <IPADDRESS> <PORT>
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
<ca>
-----BEGIN CERTIFICATE-----
сертификат "удостоверяющего центра" OpenVPN
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
Сертификат сервера, выданный "удостоверяющим центром" 
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
Приватный ключ пользователя, используется как идентификатор пользователя.
-----END PRIVATE KEY-----
</key>
<tls-crypt>
-----BEGIN OpenVPN Static key V1-----
Это наследие тяжелого прошлого, общий секрет клиента и сервера.
Используется для шифрования трафика.
-----END OpenVPN Static key V1-----
</tls-crypt>
→ Ссылка