Протоколы безопасного сетевого взаимодействия

       

Заголовок сообщения PKI


Все PKI-сообщения требуют определенной информации для возможности адресации и идентификации транзакций. Некоторая необходимая информация содержится в заголовке транспортного уровня; однако если PKI-сообщение защищено, то данная информация защищена тоже (например, безопасность транспортного уровня может не предполагаться).

Для данной информации используется следующая структура данных:

PKIHeader ::= SEQUENCE { pvno INTEGER { ietf-version2 (1) }, sender GeneralName, -- идентификация отправителя

recipient GeneralName, -- идентификация ожидаемого получателя

messageTime [0] GeneralizedTime OPTIONAL, -- время создания данного сообщения -- (используется, если отправитель -- считает, что транспорт должен быть -- "соответствующим", например, что для -- получателя важно время)

protectionAlg [1] AlgorithmIdentifier OPTIONAL, -- алгоритм, используемый для вычисления -- защищенных битов

senderKID [2] KeyIdentifier OPTIONAL, recipKID [3] KeyIdentifier OPTIONAL, -- идентифицирует конкретные ключи, -- используемые для защиты

transactionID [4] OCTET STRING OPTIONAL, -- идентифицирует транзакцию; должно быть -- одним и тем же соответственно в -- сообщениях запроса, ответа и -- подтверждения

senderNonce [5] OCTET STRING OPTIONAL, recipNonce [6] OCTET STRING OPTIONAL, -- nonces, используемые для защиты от -- replay-атак, senderNonce вставляется -- создателем данного сообщения; -- recipNonce является nonce, предвари- -- тельно вставленным в соответствующее -- сообщение ожидаемым получателем -- данного сообщения

freeText [7] PKIFreeText OPTIONAL, -- может быть использовано для указания -- контекстно-зависимых инструкций

generalInfo [8] SEQUENCE SIZE (1..MAX) OF InfoTypeAndValue OPTIONAL -- может быть использовано для указания -- контекстно-зависимой информации } PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String -- текст представлен как UTF-8 String -- (замечание: каждый UTF8String должен -- включать RFC 1766 language tag для -- указания языка, на котором -- представлен текст)


Поле pvno для данной версии спецификации фиксировано.

Поле sender содержит имя отправителя PKIMessage.

Данное имя (в сочетании с senderKID, если оно используется) должно применяться для проверки защиты сообщения. Если об отправителе ничего не известно (например, в сообщении начальной регистрации, когда конечный участник может не знать собственный DN, e-mail, IP адрес и т.д.), то поле sender должно содержать значение NULL; это означает, что последовательность RDN имеет нулевую длину. В таком случае поле senderKID должно содержать идентификатор (например, номер), указывающий получателю на информацию о соответствующем разделяемом секрете, который используется для проверки сообщения.

Поле recipient содержит имя получателя PKIMessage. Данное имя (в сочетании с recipKID, если он используется) должно применяться для проверки защиты сообщения.

Поле protectionAlg указывает алгоритм, используемый для защиты сообщения. Если биты защиты не применяются (заметим, что PKIProtection является OPTIONAL), то данное поле должно быть опущено; если биты защиты применяются, то данное поле также должно использоваться.

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

Поле transactionID в заголовке сообщения может использоваться для того, чтобы допускать корреляцию с предыдущим запросом. Например, в случае с RA может существовать много отложенных на данный момент запросов.

Поля senderNonce и recipNonce защищают PKIMessage от replay-атак.

В поле messageTime указывается время создания сообщения. Это помогает конечным участникам корректировать свое локальное время в соответствии с временем центральной системы.

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

Поле generalInfo может применяться для передачи получателю дополнительных данных для машинной обработки.


Содержание раздела