Можно ли использовать один открытый ключ для шифрования и дешифрования данных во время установления связи SSL?

Когда сервер отправляет сообщение сертификата клиенту, открытый ключ в сертификате сервера будет использоваться для проверки подлинности сервера (расшифровка с помощью открытого ключа).

Сервер следует за своим сообщением сертификата с сообщением ServerKeyExchange, информация о сеансовом ключе подписывается с использованием того же открытого ключа, который содержится в сертификате сервера (шифрование с открытым ключом).

Итак, я считаю, что открытый ключ можно использовать для шифрования и дешифрования данных, я прав? Если да, мне интересно, почему в учебнике просто говорится, что один ключ (например, открытый ключ) используется для шифрования, а другой (закрытый ключ) используется для дешифрования, а не упоминается, что ключ может использоваться как для шифрования, так и для дешифрования?

[UPDATE2]
Спасибо за помощь, Бруно.

После того, как я снова и снова читал ответы Бруно и RFC4346 (раздел 7.4.2 и 7.4.3), я внезапно почувствовал, что уловил основные моменты. :)
Однако я не уверен, что прав, и надеюсь, что кто-то сможет подтвердить мое следующее понимание. Спасибо.

1. Сертификат сервера
SSL и TLS Essential раздел 3.6.1:
( SSL и TLS Essential: защита сети Автор: Стивен А. Томас)

... открытый ключ в сертификате сервера будет использоваться только для проверки его (серверной) идентичности.

Бруно писал:

Открытый ключ в сертификате сервера не используется для проверки подлинности самого сервера.

Сейчас я согласен с точкой зрения Бруно, потому что сертификат - это всего лишь сообщение, подписанное частным ключом (зашифрованное), которое также содержит чей-то еще (например, клиентский) открытый ключ, поэтому клиент должен использовать свою доверенную копию общедоступного сервера. ключ (обычно веб-браузеры заранее включают десятки этих сертификатов) вместо открытого ключа в сертификате сервера для проверки подлинности сервера.

Верно?

2. Обмен ключами сервера
SSL и TLS Essential, раздел 3.6.2:

... информация о ключе подписывается с использованием открытого ключа, содержащегося в сертификате сервера.

Бруно писал:

Точно так же нельзя что-то подписывать открытым ключом. Вам нужен только один из ключей для подписи, и это закрытый ключ. Вы проверяете подпись соответствующим открытым ключом. ... «подписание открытым ключом» - необычное и вводящее в заблуждение выражение.

Думаю, Бруно прав. Причины следующие:

RFC4346 раздел 7.4.2. Сертификат сервера

Он ДОЛЖЕН содержать ключ, который соответствует методу обмена ключами, как показано ниже.

 Тип ключа сертификата алгоритма обмена ключами

 Открытый ключ RSA RSA; сертификат ДОЛЖЕН
разрешить использование ключа для шифрования.

DHE_DSS Открытый ключ DSS.

Открытый ключ DHE_RSA RSA, который можно использовать для подписи.

DH_DSS ключ Диффи-Хеллмана. Используемый алгоритм
для подписи сертификата ДОЛЖЕН быть DSS.

DH_RSA ключ Диффи-Хеллмана. Используемый алгоритм
для подписи сертификата ДОЛЖЕН быть RSA.

Таким образом, сервер сначала отправляет один из 6 типов открытых ключей в сертификате.


RFC4346 раздел 7.4.3 Сообщение об обмене ключами сервера

Сообщение об обмене ключами сервера отправляется сервером.
...
Это верно для следующих методов обмена ключами:

DHE_DSS
DHE_RSA
DH_anon
...
Это сообщение передает криптографическую информацию, позволяющую клиенту передать секретный ключ премьер-мастера.

Сервер выбирает один из 3 методов обмена ключами и использует свой закрытый ключ для подписи (шифрования) криптографической информации.

Когда клиент получает зашифрованную криптографическую информацию, он будет использовать открытый ключ в сообщении ServerCertificate для проверки (дешифрования)и получить криптографическую информацию в виде обычного текста.

Верно?

9
задан Matt Elson 20 February 2012 в 08:13
поделиться