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