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) демонстрируют неопределенное предупреждение о безопасности, и большинство людей не понимают и просто игнорируют, согласно некоторым тестам.