Почему SSH не использует протокол блокировки?
Кажется, что SSH
дизайнеры очень заботились о человеке в середине атаки.
Их подход состоял в том, чтобы сохранить отпечаток пальца открытого ключа сервера при первом подключении к серверу (и надеяться, что пользователь не подключится из зараженной сети в первый раз, например, если у него есть вирус в компьютер). Затем пользователь использует отпечаток для проверки открытого ключа сервера в следующий раз, когда он подключится к этому серверу.
На практике я обнаружил, что многие пользователи просто игнорируют предупреждения о несоответствующих отпечатках пальцев и предполагают, что это связано с переустановкой сервера. Просто MITM-атака настолько сложна и редка, что вы никогда не беспокоитесь об этом. Более того, много раз пользователь хочет использовать ssh на разных компьютерах, и он не стал бы импортировать все отпечатки пальцев на любой компьютер, который мог бы использовать SSH
с (эй, вы можете посмотреть, почему мой сайт не работает, я в панике! Я не в офисе, я заскочу в ближайшее интернет-кафе и посмотрю).
Чтобы быть справедливым, можно использовать DNSSEC
и использовать DNS
серверы как CA
, Однако я никогда не видел, чтобы это использовалось на практике. И вообще, это не обязательная часть протокола.
Много лет я думал, что нельзя избежать MITM без общего секрета, но недавно я читал превосходную "Практическую криптографию" Брюса Шнейра, там он упоминает протокол блокировки.
- Алиса посылает Бобу свой открытый ключ.
- Боб посылает Алисе свой открытый ключ.
- Алиса зашифровывает свое сообщение, используя открытый ключ Боба. Она отправляет половину зашифрованного сообщения Бобу.
- Боб шифрует свое сообщение, используя открытый ключ Алисы. Он отправляет половину зашифрованного сообщения Алисе.
- Алиса отправляет вторую половину своего зашифрованного сообщения Бобу.
- Боб складывает две половины сообщения Алисы и расшифровывает его своим закрытым ключом. Боб отправляет вторую половину своего зашифрованного сообщения Алисе.
- Алиса соединяет две половины сообщения Боба и расшифровывает его своим закрытым ключом.
Теперь Мэллори должна что-то отправить Бобу на шаге (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? Я думаю, что нет, см. Например Putty FAQ:
Эти раздражающие подсказки ключа хоста - вот и весь смысл SSH. Без них вся криптографическая технология, используемая SSH для защиты вашего сеанса, не делает ничего, кроме как усложнение работы злоумышленника; вместо того, чтобы сидеть между вами и сервером с перехватчиком пакетов, злоумышленник должен фактически подорвать маршрутизатор и начать модифицировать пакеты, возвращаясь назад и вперед. Но это не намного сложнее, чем просто нюхать; и без проверки ключа хоста он будет полностью не обнаружен клиентом или сервером.
Он явно говорит о MITM-атаке, а не о проверке подлинности сервера. Я думаю, что использование протокола блокировки явно предотвратит атаку, упомянутую в FAQ по замазке, и я до сих пор не понимаю, почему они его не использовали.
1 ответ
Я не вижу, как протокол блокировки предотвращает MITM.
Проблема не в том, как обменяться ключами, а в том, как им доверять. Вы правильно указываете, что люди игнорируют предупреждения о том, что ключи не совпадают. Это действительно самый большой недостаток, но протокол, который вы описываете, не решает проблему проверки происхождения ключа. SSL использует сертификаты X.509 и PKI для проверки доверия. SSH также может использовать сертификаты, но почти никакое программное обеспечение SSH не поддерживает их.