Протоколы Internet


Протокол TLS версия 0 - часть 28


В качестве дополнительных определены наборы CipherSuites TLS, которые включают в себя новые алгоритмы обмена ключами. Сервер пошлет сообщение обмена ключами тогда и только тогда, когда тип сертификата, ассоциированный с алгоритмов обмена ключами, не предоставил достаточно информации клиенту, чтобы осуществить пересылку предмастерного секретного кода.

Согласно настоящему закону США об экспорте, модули RSA больше 512 бит не могут использоваться для ключевого обмена в программах, экспортируемых из США. Более длинные ключи RSA, зашифрованные в сертификатах, могут быть использованы для подписи более коротких ключей RSA в случае метода ключевого обмена RSA_EXPORT.

Структура этого сообщения:

enum { rsa, diffie_hellman } KeyExchangeAlgorithm;

struct { opaque rsa_modulus; opaque rsa_exponent;} ServerRSAParams;

rsa_modulus

Модуль временного RSA-ключа сервера.

rsa_exponent

Общедоступный показатель временного RSA-ключа сервера.

struct { opaque dh_p;

opaque dh_g

1>;

opaque dh_Ys

1>;} ServerDHParams; /* Временные DH параметры */

dh_p

Простой модуль, используемый для операции Diffie-Hellman.

dh_g

Генератор, используемый для операции Diffie-Hellman.

dh_Ys

Общедоступное значение (gX mod p) метода Diffie-Hellman для сервера.

struct { select (KeyExchangeAlgorithm) {

case diffie_hellman:

ServerDHParams params;

Signature signed_params;

case rsa:

ServerRSAParams params;

Signature signed_params; };

} ServerKeyExchange;

Params

Параметры ключевого обмена сервера.

signed_params

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

md5_hash

MD5(ClientHello.random + ServerHello.random + ServerParams);

sha_hash

SHA(ClientHello.random + ServerHello.random + ServerParams);

enum { anonymous, rsa, dsa } SignatureAlgorithm;

select (SignatureAlgorithm)

{ case anonymous: struct { };

case rsa:

digitally-signed struct

{

opaque md5_hash[16];

opaque sha_hash[20];




Начало  Назад  Вперед