5.2.4. Шифрование и расшифрование сообщений

5.2.4. Шифрование и расшифрование сообщений

Шифрование и расшифрование сообщений осуществляются в соответствии со спецификацией WS Encryption 1.1. Шифрование сообщений выполняется после их подписания.

Шифрование сообщения осуществляется следующим образом.

1. В заголовок транспортного конверта сообщения добавляется элемент wsse:Security. Данный элемент должен предшествовать элементу wsse:Security, содержащему электронную подпись, если таковой имеется.

2. Сертификат открытого ключа, с помощью которого шифруется сообщение, включается в элемент wsse:Security/wsse:BinarySecurityToken. Сертификат соответствует стандарту X.509 (указывается в атрибуте ValueType) и кодируется с использованием стандарта кодирования Base64 (указывается в атрибуте EncodingType).

3. В элементе wsse:Security/xenc:EncryptedKey/ds:KeyInfo указывается ссылка на сертификат открытого ключа.

4. Бизнес-сообщение, содержащееся в элементе soap:Body шифруется в соответствии со спецификацией XML Encryption 1.1. Зашифрованное сообщение помещается в элемент xenc:EncryptedData, который заменяет исходное бизнес-сообщение.

5. В элементе wsse:Security/xenc:EncryptedKey/xenc:ReferenceList указывается ссылка на зашифрованное сообщение.

Расшифрование сообщения осуществляется следующим образом.

1. Если в заголовке транспортного конверта сообщения содержится элемент wsse:Security/xenc:EncryptedKey, то сообщение является зашифрованным и требуется его расшифрование.

2. Для сертификата открытого ключа, ссылка на который указана в элементе wsse:Security/xenc:EncryptedKey/ds:KeyInfo, определяется закрытый ключ для расшифрования сообщения.

3. Данные, ссылка на которые указана в элементе wsse:Security/xenc:EncryptedKey/xenc:ReferenceList, дешифруются с помощью закрытого ключа. Результат помещается в сообщение вместо зашифрованных данных.

4. Из сообщения удаляется элемент wsse:Security, содержащий сведения о шифровании сообщения.

5. В случае невозможности расшифровать сообщение формируется сообщение об ошибке в соответствии с требованиями раздела 5.2.5 Стандарта.

Структура элемента wsse:Security, содержащего сведения о шифровании сообщения, описана в Таблицах 5.5 - 5.6.

ТАБЛИЦА 5.5. СТРУКТУРА ЭЛЕМЕНТА WSSE:SECURITY, СОДЕРЖАЩЕГО СВЕДЕНИЯ О ШИФРОВАНИИ СООБЩЕНИЯ

N
Элемент
Описание
Область значений
Мн.
а)
Признак обязательности интерпретации (@soap:mustUnderstand)
признак того, что получатель сообщения должен обработать элемент согласно спецификации. Атрибут имеет фиксированное значение "true"
логическое значение
1
1
Сертификат открытого ключа (wsse: BinarySecurityToken)
сертификат открытого ключа, используемого для шифрования сообщения
строка символов, закодированная с помощью Base64
1
а)
Идентификатор (@wsu:Id)
уникальный идентификатор элемента в сообщении
идентификатор элемента документа
1
б)
Вид (@ValueType)
стандарт сертификата открытого ключа. Атрибут имеет фиксированное значение, аналогичное описанному в Приложении 1
унифицированный идентификатор ресурса
1
в)
Кодировка (@EncodingType)
схема кодирования сертификата открытого ключа. Атрибут имеет фиксированное значение, аналогичное описанному в Приложении 1
унифицированный идентификатор ресурса
1
2
Сведения о зашифрованных данных (xenc:EncryptedKey)
сведения о зашифрованных данных
структура сведений описана в Таблице 5.6
1

ТАБЛИЦА 5.6. СТРУКТУРА СВЕДЕНИЙ О ЗАШИФРОВАННЫХ ДАННЫХ (XENC:ENCRYPTEDKEY)

N
Элемент
Описание
Область значений
Мн.
1
Метод шифрования (xenc:EncryptionMethod)
сведения о методе шифрования
определяется областями значений вложенных элементов
1
а)
Алгоритм (@Algorithm)
идентификатор алгоритма шифрования
унифицированный идентификатор ресурса
1
2
Сведения о ключе (ds:KeyInfo)
сведения об открытом ключе, используемом для шифрования
определяется областями значений вложенных элементов
1
2.1
Ссылка на токен (wsse:SecurityToken Reference)
сведения о местонахождении ключа
определяется областями значений вложенных элементов
1
2.1.1
Ссылка (wsse:Reference)
элемент, содержащий идентификатор местонахождения ключа
отсутствует
1
а)
Идентификатор (@URI)
идентификатор местонахождения ключа. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1
идентификатор элемента документа
1
б)
Вид (@ValueType)
стандарт сертификата ключа. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1
унифицированный идентификатор ресурса
1
3
Список ссылок (xenc:ReferenceList)
список ссылок на зашифрованные данные
определяется областями значений вложенных элементов
1
3.1
Ссылка на данные (xenc:DataReference)
ссылка на зашифрованные данные
отсутствует
1
а)
Идентификатор (@URI)
идентификатор зашифрованных данных
идентификатор элемента документа
1

Структура зашифрованных данных представлена в Таблице 5.7.

ТАБЛИЦА 5.7. СТРУКТУРА ЗАШИФРОВАННЫХ ДАННЫХ (XENC:ENCRYPTEDDATA)

N
Элемент
Описание
Область значений
Мн.
а)
Идентификатор (@Id)
идентификатор зашифрованных данных
идентификатор элемента документа
1
1
Метод шифрования (xenc:EncryptionMethod)
сведения о методе шифрования
отсутствует
1
а)
Алгоритм (@Algorithm)
идентификатор алгоритма шифрования
унифицированный идентификатор ресурса
1
2
Зашифрованные данные (xenc:CipherData)
элемент, содержащий зашифрованные данные
определяется областями значений вложенных элементов
1
2.1
Зашифрованное значение (xenc:CipherValue)
зашифрованные данные
строка символов, закодированная с помощью Base64
1