Почему SSH не использует протокол блокировки? - PullRequest
5 голосов
/ 18 февраля 2011

Кажется, что SSH дизайнеры очень заботились о человеке в средней атаке.

Их подход состоял в том, чтобы сохранить отпечаток пальца открытого ключа сервера при первом подключении к серверу (и надеяться, что пользователь не подключится из зараженной сети в первый раз, например, если у него есть вирус в компьютере). Затем пользователь использует отпечаток пальца для проверки открытого ключа сервера при следующем подключении к этому серверу.

На практике я обнаружил, что многие пользователи просто игнорируют предупреждения о несоответствующих отпечатках пальцев и предполагают, что это связано с переустановкой сервера. Просто MITM-атака настолько сложна и редка, что вы никогда не беспокоитесь об этом. Более того, много раз пользователь хочет использовать ssh на разных компьютерах, и он не стал бы импортировать все отпечатки пальцев на любой компьютер, с которым он может захотеть использовать SSH (эй, вы можете посмотреть, почему мой сайт не работает, я Я в панике! Я не в офисе, я заскочу в ближайшее интернет-кафе и посмотрю).

Чтобы быть справедливым, можно использовать DNSSEC и использовать DNS серверы в качестве CA. Однако я никогда не видел, чтобы это использовалось на практике. И вообще, это не обязательная часть протокола.

Много лет я думал, что нельзя избежать MITM без общего секрета, но я недавно читал превосходную «Практическую криптографию» Брюса Шнейра, там он упоминает протокол блокировки .

  1. Алиса посылает Бобу свой открытый ключ.
  2. Боб посылает Алисе свой открытый ключ.
  3. Алиса шифрует свое сообщение, используя открытый ключ Боба. Она отправляет половину зашифрованного сообщения Бобу.
  4. Боб шифрует свое сообщение, используя открытый ключ Алисы. Он отправляет половину зашифрованного сообщения Алисе.
  5. Алиса отправляет вторую половину своего зашифрованного сообщения Бобу.
  6. Боб складывает две половины сообщения Алисы и расшифровывает его своим закрытым ключом. Боб отправляет Алисе вторую половину своего зашифрованного сообщения.
  7. Алиса складывает две половины сообщения Боба и расшифровывает его своим закрытым ключом.

Теперь, Мэллори должен отправить что-то Бобу на шаге (3) протокола, после того, как он получит половину сообщения Алисы, даже если он не сможет расшифровать его, пока не получит все от Алисы в (5). Он должен сфабриковать сообщение для Боба, и Боб, вероятно, заметит, что он фабрикует, скажем, после того, как он ls свой домашний каталог.

Почему SSH не использовал такую ​​схему? Похоже, действительно соответствует его целям. Для этого не требуется никакой другой сущности, и это значительно усложняет атаки MITM.

Это что-то присуще? Недостаток в моем понимании проблемы? Или просто дизайнер подумал, что дополнительная безопасность не стоит усложнять протокол?

PS: Если вы думаете, что это вызовет слишком много служебных данных, вы можете заставить пользователей протокола использовать блокировку только для первых 10K данных в соединении, поэтому на практике это не будет иметь большого значения, но MITM будет труднее, тем не менее.

Обновление: Атака по протоколу блокировки, описанная здесь здесь , не означает, что атака MITM возможна, это означает, что если во время связи отправляется один пароль, MITM может его перехватить, и пользователь увидит только время ошибка выхода.

Обновление 2: Дело Евгения, поднять действительно.Протокол блокировки не позволяет аутентификацию.То есть вы все еще не можете быть уверены, что если вы подключаетесь к example.com, это действительно example.com, а не malicious.com, подражающий example.com.Вы не можете знать это без, скажем, DNSSEC.Так, например, если вы SSH отправляетесь в бункеры ракет и пишете launch_missile -time now (без, скажем, использования ls, чтобы убедиться, что сервер действительно является сервером в бункерах ракет), возможно, выфактически написал это на вредоносном сервере, и теперь враг знает, что вы собираетесь запустить против него ракеты.Этот тип атаки действительно не будет предотвращен протоколом блокировки.

Однако, если я правильно понимаю протокол, гораздо более опасная атака и очень практичная атака могут быть предотвращены.Если используется протокол блокировки, даже если вы ничего не знаете о example.com, невозможно, чтобы вы SSH подключились к вашему серверу, и кто-то подслушивал весь сеанс SSH.Я думаю, что этот тип атаки гораздо более вероятен.

Может быть, SSH не волнует атака MITM?Я думаю, что нет, смотрите, например, Часто задаваемые вопросы по замазке :

Эти раздражающие подсказки ключа хоста - весь смысл SSH.Без них все криптографические технологии, которые SSH использует для защиты вашего сеанса, не делают ничего, кроме как усложняют работу злоумышленника;вместо того, чтобы сидеть между вами и сервером с перехватчиком пакетов, злоумышленник должен фактически подорвать маршрутизатор и начать модифицировать пакеты, возвращаясь назад и вперед.Но это не намного сложнее, чем просто нюхать;и без проверки ключа хоста он не будет полностью обнаружен клиентом или сервером.

Он явно говорит об атаке MITM, а не об аутентификации сервера.Я думаю, что использование протокола блокировки явно предотвратит атаку, упомянутую в FAQ по замазке, и я до сих пор не понимаю, почему они его не использовали.

1 Ответ

1 голос
/ 18 февраля 2011

Я не вижу, как протокол блокировки предотвращает MITM.

Проблема не в том, как обмениваться ключами, а в том, как им доверять. Вы правильно указываете, что люди игнорируют предупреждения о том, что ключи не совпадают. Это действительно самый большой недостаток, но описанный вами протокол не решает проблему проверки происхождения ключа. SSL использует сертификаты X.509 и PKI для проверки доверия. SSH также может использовать сертификаты, но почти никакое программное обеспечение SSH не поддерживает их.

...