Я прочитал массу документации, связанной с этой проблемой, но все еще не могу собрать все воедино, поэтому я хотел бы задать пару вопросов.
Прежде всего, я кратко опишу процедуру аутентификации, как я ее понимаю, поскольку могу ошибаться в этом отношении: клиент запускает соединение, на которое сервер отвечает комбинацией открытого ключа, некоторых метаданных и цифровой подписи доверенный авторитет. Затем клиент принимает решение, доверяет ли он серверу, шифрует случайный ключ сеанса открытым ключом и отправляет его обратно. Этот сеансовый ключ можно расшифровать только с помощью закрытого ключа, хранящегося на сервере. Сервер делает это, а затем начинается сеанс HTTPS.
Итак, если я прав выше, вопрос в том, как может произойти атака «человек посередине» в таком сценарии? Я имею в виду, что даже если кто-то перехватит ответ сервера (например, www.server.com) с помощью открытого ключа и найдет средства, чтобы заставить меня думать, что это www.server.com, он все равно не сможет расшифровать мой сеансовый ключ. без закрытого ключа.
Говоря о взаимной аутентификации, все ли связано с уверенностью сервера в идентичности клиента? Я имею в виду, что клиент уже может быть уверен, что он общается с нужным сервером, но теперь сервер хочет узнать, кто этот клиент, верно?
И последний вопрос об альтернативе взаимной аутентификации. Если я буду действовать как клиент в описанной ситуации, что, если я отправлю логин / пароль в заголовке HTTP после установления сеанса SSL? На мой взгляд, эту информацию невозможно перехватить, потому что соединение уже защищено, и сервер может полагаться на него для моей идентификации. Я ошибся? Каковы недостатки такого подхода по сравнению с взаимной аутентификацией (важны только вопросы безопасности, а не сложность реализации)?
источник
Сервер отвечает цепочкой сертификатов X.509 и цифровой подписью, подписанной его собственным закрытым ключом.
Верный.
Нет. Клиент и сервер участвуют во взаимном процессе генерации сеансового ключа, при этом сам сеансовый ключ никогда не передается.
Нет.
Нет.
TLS / SSL начинается сессия, но есть несколько шагов первыми.
Маскируясь под сервер и действуя как конечная точка SSL. Клиент должен будет пропустить любой шаг авторизации. К сожалению, единственный шаг авторизации в большинстве сеансов HTTPS - это проверка имени хоста.
См. Выше. Нет сеансового ключа для расшифровки. Само по себе SSL-соединение является безопасным, и тот, с кем вы разговариваете , может быть небезопасным.
Верный.
Нет.
Это так же безопасно, как имя пользователя / пароль, которые намного проще утечь, чем закрытый ключ.
источник
Любой, кто находится на пути между клиентом и сервером, может организовать атаку человека посередине на https. Если вы думаете, что это маловероятно или редко, учтите, что существуют коммерческие продукты, которые систематически расшифровывают, сканируют и повторно шифруют весь ssl-трафик через интернет-шлюз.. Они работают, отправляя клиенту сертификат ssl, созданный «на лету» с деталями, скопированными из «настоящего» сертификата ssl, но подписанный другой цепочкой сертификатов. Если эта цепочка завершается любым из доверенных центров сертификации браузера, этот MITM будет невидим для пользователя. Эти продукты в основном продаются компаниям для «защиты» (полиции) корпоративных сетей и должны использоваться с ведома и согласия пользователей. Технически, однако, ничто не мешает их использованию интернет-провайдерами или любым другим сетевым оператором. (Можно с уверенностью предположить, что у NSA есть хотя бы один ключ подписи доверенного корневого CA ).
Если вы обслуживаете страницу, вы можете включить HTTP-заголовок, указывающий, каким открытым ключом должна быть подписана страница. Это может помочь предупредить пользователей о MITM их «безопасного» соединения, но это метод доверия при первом использовании. Если у Боба еще нет записи о «реальном» контакте открытого ключа, Мэллори просто перезаписывает заголовок pkp в документе. Список веб-сайтов, использующих эту технологию (HPKP) удручающе короток. К их чести, он включает Google и Dropbox. Обычно шлюз, перехватывающий https, просматривает страницы с нескольких крупных доверенных сайтов, использующих HPKP. Если вы не ожидаете увидеть ошибку HPKP, будьте осторожны.
Что касается паролей, все в https-соединении защищено https, за исключением имени домена, которое должно быть открытым, чтобы запрос мог быть перенаправлен. В общем, рекомендуется не помещать пароли в строку запроса, где они могут оставаться в журналах, закладках и т. Д. Но строка запроса не отображается, если не взломан https.
источник
источник
Все, что вы сказали, правильно, за исключением части о сеансовом ключе. Задача центров сертификации - отразить атаку «злоумышленник посередине» - все остальное делается самим SSL. Аутентификация клиента является альтернативой схеме имени пользователя и пароля.
источник