SSL: Как защищены сертификаты против человека в середине атаки?
Мой вопрос касается сертификатов специально в ssl, но я думаю, что вопросы должны применяться ко всем сертификатам. Для ясности я включил SSL-процедуру.
В SSL это то, что я понимаю как процедура:
1) Клиент
- отправляет поддерживаемые криптоалгоритмы
- отправляет клиенту nonce
2) Сервер
- выбирает (и отправляет)
- симметричный алгоритм
- алгоритм открытого ключа
- алгоритм MAC
- отправляет сертификат
- отправляет сервер nonce
3) Клиент
- проверяет сертификат
- Генерирует секретный ключ pre-master (pms)
- шифрует с открытым ключом серверов и отправляет
4) Клиент и сервер
- вычислить секретную секцию (MS) из PMS и nonces
- PMS, нарезанный для генерации двух ключей шифрования и двух макросов
5) Клиент
- отправляет mac всех рукопожатий (чтобы убедиться, что они ранее не были модифицированы)
6) Сервер
- отправляет mac всех рукопожатий
Вопрос
Что останавливает человека в средней атаке на втором шаге? Почему мужчина не может поселиться в середине, скажем, трогательно, захватить сертификат, отправленный сервером, и изменить открытый ключ в нем (к чему-то, к которому у него есть закрытый ключ).
Я предполагаю, что сертификат каким-то образом зашифрован.
Однако сервер не может шифровать сертификат, поскольку клиент еще не имеет открытого ключа. Когда сервер получает ключ от авторитета (например, veri-sign), будет ли ключ предварительно проиндексирован с использованием открытого ключа verisign? Я думаю, что это должно работать, потому что все веб-браузеры должны иметь открытые ключи большинства органов власти.
Ответы
Ответ 1
Нет, сертификат не зашифрован. Но он подписывается центром сертификации (CA). Поскольку они проверяют информацию, содержащуюся в сертификате (особенно URL-адрес, к которому принадлежит сертификат), не должно быть второго действительного сертификата для данного URL.
Сертификат ЦС проверяется на хранилище доверия (например, в вашем браузере). Если этот траст-сервер взломан, или если вы доверяете недействительным сертификатам, то нет защиты от людей в средних атаках.
Ответ 2
Сертификаты подписываются некоторым доверенным органом, таким как Verisign.
Сертификаты для этих корневых полномочий создаются прямо в браузерах при их загрузке. Вы можете просмотреть корневые сертификаты в Firefox, например, перейдя в инструменты → параметры → расширенный → шифрование → посмотреть сертификаты → полномочия.
Если какой-либо из этих корневых центров сертификации скомпрометирован, вы правы, что сертификат может быть подделан, что делает возможным атаку "человек в середине".
Ответ 3
Вы на самом деле указали на слабое место PKI.
Скажите, что Trudy находится посреди вас и вашего банка (bank.com). Trudy может изменить открытый ключ по желанию на шаге 2, но подпись сертификата будет недействительной. Поэтому Труди должен найти способ сгенерировать подпись снова. Можно с уверенностью сказать, что доверенные ЦС не сделают этого для него. Поэтому он должен подписать поддельный CA, которому не доверяет ваш браузер. Это по-прежнему безопасно теоретически.
Однако большинство браузеров (особенно IE 6) демонстрируют неопределенное предупреждение о безопасности, и большинство людей не понимают и просто игнорируют, согласно некоторым тестам.