Возможен ли "человек посередине" для VPN при первом подключении клиента к серверу?
Согласно http://en.wikipedia.org/wiki/Secure_Shell, ssh уязвим к атаке "человек посередине" при установлении первого соединения с сервером.
SSH также поддерживает аутентификацию на основе пароля, которая шифруется автоматически генерируемыми ключами. В этом случае злоумышленник может подражать законной стороне, запрашивать пароль и получать его (атака "человек посередине"). Однако это возможно только в том случае, если обе стороны никогда ранее не проходили аутентификацию, поскольку SSH запоминает ключ, который когда-то использовала удаленная сторона.
VPN страдает от той же "слабости"?
1 ответ
Если VPN-сервер аутентифицирован с использованием ключа, который известен клиенту, то проблем нет - ключ уже известен (и предположительно является доверенным), и клиент может быть уверен, что он подключился к легитимному серверу.
То же самое относится и к SSH. Формулировка в википедии не совсем верна - чтобы первое соединение было надежным, клиент должен знать действительный ключ сервера. Это не важно, если "они аутентифицировались раньше". Важно, чтобы клиент доверял ключу.
Как можно доверять ключу на клиенте? Когда сертификат X.509 используется в SSL/TLS, он проверяется в соответствии со сложными правилами, и цепочка сертификатов создается в соответствии с доверенным корневым сертификатом. Если цепочка не может быть построена, то сертификат конечного объекта не является доверенным. В SSH нет цепочек сертификатов, и единственный способ, которым клиент может доверять серверу, - это когда клиент получает ключ сервера, переданный с использованием какого-либо другого механизма (голосовой вызов или бумажный носитель или USB-накопитель или отдельное соединение SSL/TLS, что угодно).