Главная // Актуальные документы // ПриказСПРАВКА
Источник публикации
М.: Стандартинформ, 2020
Примечание к документу
Документ
введен в действие с 01.04.2021.
Название документа
"Р 1323565.1.033-2020. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Использование российских алгоритмов электронной подписи в протоколах и форматах сообщений на основе XML"
(утв. и введены в действие Приказом Росстандарта от 17.11.2020 N 1112-ст)
"Р 1323565.1.033-2020. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Использование российских алгоритмов электронной подписи в протоколах и форматах сообщений на основе XML"
(утв. и введены в действие Приказом Росстандарта от 17.11.2020 N 1112-ст)
Утверждены и введены в действие
Приказом Федерального
агентства по техническому
регулированию и метрологии
от 17 ноября 2020 г. N 1112-ст
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
ИСПОЛЬЗОВАНИЕ РОССИЙСКИХ АЛГОРИТМОВ ЭЛЕКТРОННОЙ ПОДПИСИ
В ПРОТОКОЛАХ И ФОРМАТАХ СООБЩЕНИЙ НА ОСНОВЕ XML
Information technology. Cryptographic data security.
Using Russian algorithms of digital signature algorithms
with XML-based protocols and messages
Р 1323565.1.033-2020
Дата введения
1 апреля 2021 года
1 РАЗРАБОТАНЫ Обществом с ограниченной ответственностью "КРИПТО-ПРО" (ООО "КРИПТО-ПРО")
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации"
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 17 ноября 2020 г. N 1112-ст
4 ВВЕДЕНЫ ВПЕРВЫЕ
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
В настоящих рекомендациях определяются способы использования российских государственных криптографических алгоритмов подписи и хэширования для создания электронной подписи XML-документов, определенной в
[1], а также способы передачи в XML-документах значения кода аутентификации сообщения на основе хэш-функции HMAC, описанного в
Р 50.1.113. Введены также новые универсальные идентификаторы ресурсов (URI) и XML-элементы.
Примечание - Основная часть настоящих рекомендаций дополнена
приложениями А -
Б.
В настоящих рекомендациях описываются идентификаторы алгоритмов
ГОСТ Р 34.10-2012,
ГОСТ Р 34.10-2001,
ГОСТ Р 34.11-2012 и
ГОСТ Р 34.11-94, используемые при создании электронной подписи XML-документов, а также идентификаторы алгоритмов вычисления кода аутентификации сообщения на основе хэш-функции HMAC, определенного в
Р 50.1.113. Помимо этого, в данных рекомендациях определены способы передачи информации о ключевом материале в XML-документе, а также идентификаторы пространств имен, префиксы и определения XML-схемы подписываемого XML-документа.
XML-документы, содержащие электронную подпись, созданную с использованием российских государственных криптографических алгоритмов подписи и хэширования, могут быть переданы в рамках взаимодействия по протоколам, где используются сообщения формата XML: SOAP, WS-Security и другие.
В настоящих рекомендациях использованы нормативные ссылки на следующие стандарты и рекомендации по стандартизации:
ГОСТ Р 34.10-2001 <*> Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
--------------------------------
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
ГОСТ Р 34.11-94 <**> Информационная технология. Криптографическая защита информации. Функция хэширования
--------------------------------
ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования
Р 50.1.113-2016 Информационная технология. Криптографическая защита информации. Криптографические алгоритмы, сопутствующие применению алгоритмов электронной цифровой подписи и функции хэширования
Р 1323565.1.023-2018 "Информационная технология. Криптографическая защита информации. Использование алгоритмов
ГОСТ Р 34.10-2012,
ГОСТ Р 34.11-2012 в сертификате, списке аннулированных сертификатов (CRL) и запросе на сертификат PKCS#10 инфраструктуры открытых ключей X.509"
Примечание - При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных стандартов и рекомендаций по стандартизации в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный стандарт (рекомендации по стандартизации), на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт (рекомендации по стандартизации), на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта (рекомендаций по стандартизации) с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный стандарт (рекомендации по стандартизации), на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт (рекомендации по стандартизации) отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3 Термины, определения и сокращения
3.1 Термины и определения
В настоящих рекомендациях применены следующие термины с соответствующими определениями.
3.1.1 XML-документ: Электронный документ, сформированный при помощи расширяемого языка разметки XML.
3.1.2 XML-схема: Описание структуры XML-документа.
3.1.3 XML-элемент: Часть XML-документа или XML-схемы, ограниченная тегами.
3.1.4 определение XML-схемы: Часть XML-схемы, описывающая отдельный элемент (имя элемента и его тип).
3.1.5 пространство имен XML: Пространство имен, используемое для описания элементов в XML-схеме и служащее для обеспечения их уникальности в XML-документе.
3.1.6 XML-префикс: Префикс, указываемый перед именем XML-элемента и/или его типа с целью исключения пересечения одноименных элементов из различных пространств имен XML.
3.1.7 XML-атрибут: Часть XML-элемента, состоящая из имени атрибута и значения атрибута, сформированных в соответствии с определением XML-схемы данного XML-элемента.
Примечание - В настоящих рекомендациях для краткости установлено, что термины "XML-элемент" и "элемент", "XML-атрибут" и "атрибут", а также "XML-префикс" и "префикс" являются синонимами.
3.1.8 сообщение: Строка символов произвольной конечной длины.
3.1.9 формат сообщения: Совокупность правил формирования и интерпретации сообщения.
3.1.10
код аутентификации сообщения на основе хэш-функции (hash-based message authentication code; HMAC): Механизм обеспечения аутентичности информации на основе симметричного ключа, построенный с использованием хэш-функции. |
3.1.11
электронная цифровая подпись (signature): Строка бит, полученная в результате процесса формирования подписи. |
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.
3.1.12
ключ проверки подписи: Элемент данных, математически связанный с ключом подписи и используемый проверяющей стороной в процессе проверки цифровой подписи. |
3.1.13
ключ подписи: Элемент секретных данных, специфичный для субъекта и используемый только данным субъектом в процессе формирования цифровой подписи. |
3.1.14
хэш-функция: Функция, отображающая строки бит в строки бит фиксированной длины и удовлетворяющая следующим свойствам: 1) по данному значению функции сложно вычислить исходные данные, отображаемые в это значение; 2) для заданных исходных данных сложно вычислить другие исходные данные, отображаемые в то же значение функции; 3) сложно вычислить какую-либо пару исходных данных, отображаемых в одно и то же значение. |
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности с действующими отечественными нормативными документами и опубликованными научно-техническими изданиями установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.
3.1.15
| | ИС МЕГАНОРМ: примечание. В официальном тексте документа, видимо, допущена опечатка: имеется в виду статья 3.1.5 ГОСТ Р 34.11-2012, а не статья 3.1.15 ГОСТ Р 34.11-2012. | |
хэш-код: Строка бит, являющаяся выходным результатом хэш-функции. |
В настоящих рекомендациях используют следующие обозначения:
OID | - | строка или последовательность десятичных цифр, однозначно идентифицирующая объект; |
URI | - | унифицированный (единообразный) идентификатор ресурса; |
URN | - | единообразное название ресурса; |
XML | - | расширяемый язык разметки. |
Пространства имен XML, их префиксы и идентификаторы, соответствующие используемым в рамках данных рекомендаций XML-схемам, введены в
разделе 5.
В
разделе 6 настоящих рекомендаций описывается элемент ds:Signature, содержащий значение подписи XML-документа и информацию об алгоритмах и их параметрах, необходимых для формирования данного значения. Также настоящие рекомендации устанавливают, что элемент ds:Signature может содержать информацию об используемом алгоритме вычисления кода аутентификации сообщения на основе хэш-функции (HMAC) и значение HMAC <*>. Элемент ds:Signature описывается определениями, соответствующими трем XML-схемам: DS-схеме, DSIG11-схеме и CPXMLSEC-схеме.
--------------------------------
<*> В настоящих рекомендациях в целях оптимизации и исключения дублирования элементов описываемых структур при работе с HMAC название элемента ds:Signature не отражает тип хранящихся в нем данных: алгоритм вычисления HMAC и значение HMAC указываются в элементах ds:SignatureMethod и ds:SignatureValue соответственно.
Определения CPXMLSEC-схемы вводятся в настоящих рекомендациях впервые и являются расширением DS-схемы с целью обеспечения возможности использования национальных стандартов
ГОСТ Р 34.10-2012 и
ГОСТ Р 34.11-2012. Для описания CPXMLSEC-схемы используются элементы из XS-схемы, описанной в
[2] и
[3]. Определения из DS-схемы и DSIG11-схемы описаны в соответствии с
[1].
Примечание - В настоящих рекомендациях некоторые комментарии в определениях DS-схемы и DSIG11-схемы были опущены в связи с упоминанием в них элементов, не используемых при формировании электронной подписи XML-документов с использованием российских криптографических алгоритмов подписи, хэширования и вычисления значения HMAC. Поскольку комментарии в определении XML-схемы не являются семантически значимыми, определения DS-схемы и DSIG11-схемы, описанные в настоящих рекомендациях, считаются идентичными определениям, описанным в
[1].
В
разделе 7 настоящих рекомендаций устанавливаются требования к содержимому элементов, описываемых в
разделе 6, и их представлению:
1) В
7.1 устанавливаются требования к содержимому элементов и его представлению для создания и проверки электронной подписи XML-документа с использованием российских государственных криптографических алгоритмов подписи и хэширования.
2) В
7.2 устанавливаются требования к содержимому элементов и его представлению для вычисления значения HMAC XML-документа с использованием алгоритмов, определенных в
Р 50.1.113.
3) В
7.3 устанавливаются требования к содержимому элементов и его представлению для передачи ключевой информации в подписываемом XML-документе.
5 Пространства имен XML и XML-префиксы
В настоящих рекомендациях используются XML-элементы из четырех различных XML-схем, каждой из которых соответствует одно пространство имен XML. При создании подписи XML-документа или вычислении значения HMAC в соответствии с настоящими рекомендациями должен использоваться следующий идентификатор основного пространства имен XML (точка в конце предложения не является частью идентификатора): urn:ietf:params:xml:ns:cpxmlsec. Остальные пространства имен являются внешними, и их идентификаторы указываются дополнительно в заголовке XML-схемы.
Примечание - Пространство имен XML однозначно соответствует одной XML-схеме, таким образом, употребление в тексте названия XML-схемы идентифицирует также соответствующее пространство имен. Названия XML-схем представлены в таблице 1.
Таблица 1
XML-схемы, идентификаторы пространств имен XML и префиксы
Название XML-схемы | Идентификатор пространства имен XML | Префикс |
DS-схема | http://www.w3.org/2000/09/xmldsig# | ds |
DSIG11-схема | http://www.w3.org/2009/xmldsig11# | dsig11 |
XS-схема | http://www.w3.org/2001/XMLSchema | xs |
CPXMLSEC-схема | urn:ietf:params:xml:ns:cpxmlsec | cpxmlsec |
Примечание - В настоящих рекомендациях XS-схема является вспомогательной и применяется для описания определений из других XML-схем. Поэтому определения элементов XS-схемы в данных рекомендациях не приводятся.
Чтобы исключить пересечения одноименных элементов из различных пространств имен XML, в настоящих рекомендациях XML-элементы из различных XML-схем помечены с помощью префиксов, определенных в
таблице 1. Каждый из предложенных в
таблице 1 префиксов для своего пространства имен выбран произвольно и может быть заменен иным во всех элементах без изменения семантической значимости XML-документа.
Указание пространств имен XML и префиксов в XML-документе не должно иметь разрывов строк и пробелов.
Пример заголовка CPXMLSEC-схемы для использования с определениями остальных XML-схем, приведенными в
разделе 6 настоящих рекомендаций:
<xs:schema xmlns:cpxmlsec="urn:ietf:params:xml:ns:cpxmlsec" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dsig11="http://www.w3.org/2009/xmldsig11#" targetNamespace="urn:ietf:params:xml:ns:cpxmlsec" elementFormDefault="qualified" version="0.4"> |
6 Определение XML-схемы для элемента Signature XML-документа
Элемент ds:Signature является одним из корневых элементов XML-документа и содержит следующую информацию:
- при формировании подписи XML-документа: значение подписи и информацию об алгоритмах и их параметрах, необходимых для формирования электронной подписи XML-документа;
- при вычислении значения HMAC XML-документа: информацию об используемом алгоритме вычисления HMAC и значение HMAC.
Элемент ds:Signature содержит следующие дочерние элементы.
- Элемент ds:SignedInfo (см.
6.1). Данный элемент содержит информацию об используемых алгоритмах и других параметрах, необходимых для формирования подписи XML-документа или значения HMAC.
- Элемент ds:SignatureValue (см.
6.2). Данный элемент содержит значение электронной подписи XML-документа или значение HMAC.
- Элемент ds:KeyInfo (см.
6.3). Данный элемент содержит информацию о ключе проверки подписи и его значение или информацию о симметричном ключе, используемом при вычислении значения HMAC.
- Элемент ds:Object. Данный элемент может содержать информацию, для которой формируется значение подписи или вычисляется значение HMAC.
Элемент ds:Signature описывается следующим определением XML-схемы.
<xs:element name="Signature" type="ds:SignatureType"/> <xs:complexType name="SignatureType"> <xs:sequence> <xs:element ref="ds:SignedInfo"/> <xs:element ref="ds:SignatureValue"/> <xs:element ref="ds:KeyInfo" minOccurs="0"/> <xs:element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="Id" type="ID" use="optional"/> </xs:complexType> |
Полное описание всех дочерних элементов элемента ds:Signature представлено в
[1].
Элемент ds:SignedInfo является дочерним элементом элемента ds:Signature и содержит в себе информацию об используемых алгоритмах и других параметрах, необходимых для формирования подписи XML-документа или значения HMAC. Элемент ds:SignedInfo содержит следующие дочерние элементы.
- Элемент ds:SignatureMethod (см.
6.1.1). Данный элемент содержит информацию об используемом алгоритме подписи или алгоритме HMAC.
- Элемент ds:Reference (см.
6.1.2). Данный элемент используется для указания на данные, с которыми выполняются преобразования.
- Элемент ds:CanonicalizationMethod. Данный элемент содержит информацию об используемом алгоритме приведения к каноническому виду данных, находящихся в элементе ds:SignedInfo.
Элемент ds:SignedInfo описывается следующим определением XML-схемы.
<xs:element name="SignedInfo" type="ds:SignedInfoType"/> <xs:complexType name="SignedInfoType"> <xs:sequence> <xs:element ref="ds:CanonicalizationMethod"/> <xs:element ref="ds:SignatureMethod"/> <xs:element ref="ds:Reference" maxOccurs="unbounded"/> </xs:sequence" <xs:attribute name="Id" type="ID" use="optional"/> </xs:complexType> |
Полное описание элемента ds:SignedInfo представлено в
[1].
6.1.1 Элемент SignatureMethod
Элемент ds:SignatureMethod является дочерним элементом элемента ds:SignedInfo и определяет алгоритм, используемый для создания и проверки подписи XML-документа или алгоритм, используемый для вычисления значения HMAC. Для этого в атрибут Algorithm элемента ds:SignatureMethod помещается идентификатор, соответствующий используемому алгоритму.
Идентификаторы российских криптографических алгоритмов хэширования и подписи и правила их включения в элемент ds:SignatureMethod описаны в
7.1.2.
Идентификаторы российских криптографических алгоритмов вычисления HMAC описаны в
7.2.
Элемент ds:SignatureMethod описывается следующим определением XML-схемы.
<xs:element name="SignatureMethod" type="ds:SignatureMethodType"/>
<xs:complexType name="SignatureMethodType" mixed="true">
<xs:sequence>
<xs:element name="HMACOutputLength" minOccurs="0"
type="ds:HMACOutputLengthType"/>
<xs:any namespace="##other" minOccurs="0"maxOccurs="unbounded"/>
<!-- (0,unbounded) elements from (1,1) external namespace -->
</xs:sequence>
<xs:attribute name="Algorithm" type="anyURI" use="required"/>
</xs:complexType>
Полное описание элемента ds:SignatureMethod представлено в
[1].
Элемент ds:Reference является дочерним элементом элемента ds:SignedInfo и может содержать атрибуты Id, URI и Type, описывающие данные, с которыми выполняются операции хэширования и другие преобразования. Элемент ds:Reference содержит следующие дочерние элементы.
- Элемент ds:Transforms. Данный элемент содержит список преобразований данных, указанных в атрибутах элемента ds:Reference.
- Элемент ds:DigestMethod (см.
6.1.2.1). Данный элемент используется для указания используемого алгоритма хэширования данных, указанных в атрибутах элемента ds:Reference.
- Элемент ds:DigestValue (см.
6.1.2.2). Данный элемент содержит значение хэш-кода от данных, указанных в атрибутах элемента ds:Reference.
Элемент ds:Reference описывается следующим определением XML-схемы.
<xs:element name="Reference" type="ds:ReferenceType"/> <xs:complexType name="ReferenceType"> <xs:sequence> <xs:element ref="ds:Transforms" minOccurs="0"/> <xs:element ref="ds:DigestMethod"/> <xs:element ref="ds:DigestValue"/> </xs:sequence> <xs:attribute name="Id" type="ID" use="optional"/> <xs:attribute name="URI" type="anyURI" use="optional"/> <xs:attribute name="Type" type="anyURI" use="optional"/> </xs:complexType> |
Полное описание элемента ds:Reference представлено в
[1].
6.1.2.1 Элемент DigestMethod
Элемент ds:DigestMethod является дочерним элементом элемента ds:Reference и имеет атрибут Algorithm, содержащий идентификатор алгоритма хэширования данных, указанных в атрибутах элемента ds:Reference.
Идентификаторы российских криптографических алгоритмов хэширования и правила их включения в элемент ds:DigestMethod описаны в
7.1.1.
Элемент ds:DigestMethod описывается следующим определением XML-схемы.
<xs:element name="DigestMethod" type="ds:DigestMethodType"/> <xs:complexType name="DigestMethodType" mixed="true"> <xs:sequence> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="Algorithm" type="anyURI" use="required"/> </xs:complexType> |
Полное описание элемента ds:DigestMethod представлено в
[1].
6.1.2.2 Элемент DigestValue
Элемент ds:DigestValue является дочерним элементом элемента ds:Reference и должен содержать значение хэш-кода, представленное в соответствии с
7.1.1. Значение хэш-кода должно быть вычислено от данных, указанных в атрибутах элемента ds:Reference, описанного в
6.1.2.
Элемент ds:DigestValue описывается следующим определением XML-схемы.
<xs:element name="DigestValue" type="ds:DigestValueType"/> <xs:simpleType name="DigestValueType"> <xs:restriction base="base64Binary"/> </xs:simpleType> |
6.2 Элемент SignatureValue
Элемент ds:SignatureValue является дочерним элементом элемента ds:Signature и должен содержать значение электронной подписи XML-документа или значение HMAC.
Содержимое элемента ds:SignatureValue при использовании российских криптографических алгоритмов подписи и хэширования описано в
7.1.2.
Содержимое элемента ds:SignatureValue при использовании российских криптографических алгоритмов вычисления HMAC описано в
7.2.
Элемент ds:SignatureValue описывается следующим определением XML-схемы.
<xs: element name="SignatureValue" type="ds:SignatureValueType"/> <xs:complexType name="SignatureValueType"> <xs:simpleContent> <xs:extension base="base64Binary"> <xs:attribute name="Id" type="ID" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> |
Полное описание элемента ds:SignatureValue представлено в
[1].
Элемент ds:KeyInfo является дочерним элементом элемента ds:Signature и позволяет передать в XML-документе информацию о ключе проверки подписи и его значение или информацию о симметричном ключе, используемом при вычислении значения HMAC.
В случае если в XML-документе требуется передать ключ проверки подписи, необходимо использовать один из следующих дочерних элементов элемента ds:KeyInfo.
1) Элемент ds:KeyValue (см.
7.3.1). Данный элемент позволяет передать значение ключа проверки подписи и его параметры.
2) Элемент ds:RetrievalMethod (см.
6.3.2). Данный элемент позволяет передать ссылку на расположение ключа проверки подписи, если ключ находится вне подписываемого XML-документа.
3) Элемент ds:X509Data (см.
6.3.3). Данный элемент позволяет передать X.509-сертификат (см. Р 1323565.1.023-2018,
подраздел 4.2), содержащий ключ проверки подписи.
4) Элемент dsig11:DEREncodedKeyValue (см.
6.3.4). Данный элемент позволяет передать значение ключа проверки подписи и его параметры.
Примечание - Элементы ds:KeyValue и dsig11:DEREncodedKeyValue позволяют передать одну и ту же информацию, но с использованием различных подходов к ее представлению: использование элемента ds:KeyValue позволяет передавать значение ключа проверки подписи и его параметры в отдельных дочерних элементах. Использование элемента dsig11:DEREncodedKeyValue позволяет передавать значение ключа проверки подписи и его параметры в составе структуры SubjectPublicKeyInfo, описанной в
Р 1323565.1.023.
В случае если в XML-документе требуется передать информацию о симметричном ключе, используемом при вычислении значения HMAC, необходимо использовать элемент ds:RetrievalMethod, являющийся дочерним элементом элемента ds:KeyInfo. Описание элемента ds:RetrievalMethod представлено в
6.3.2.
Примечание - Настоящие рекомендации устанавливают возможность передачи сведений о расположении симметричного ключа, используемого при вычислении значения HMAC, в элементе ds:RetrievalMethod. При этом процедуры выработки указанного ключа и его распределения выходят за область действия данных рекомендаций.
Элемент ds:KeyInfo описывается следующим определением XML-схемы.
<xs:element name="KeyInfo" type="ds:KeyInfoType"/> <xs:complexType name="KeyInfoType" mixed="true"> <xs:choice maxOccurs="unbounded"> <xs:element ref="ds:KeyName"/> <xs:element ref="ds:KeyValue"/> <xs:element ref="ds:RetrievalMethod"/> <xs:element ref="ds:X509Data"/> <xs:element ref="ds:PGPData"/> <xs:element ref="ds:SPKIData"/> <xs:element ref="ds:MgmtData"/> <!-- <xs:element ref="dsig11:DEREncodedKeyValue"/> --> <!-- DEREncodedKeyValue (XMLDsig 1.1) will use the any element --> <xs:any processContents="lax" namespace="##other"/> <!-- (1,1) elements from (0,unbounded) namespaces --> </xs:choice> <xs:attribute name="Id" type="ID" use="optional"/> </xs:complexType> |
Полное описание элемента ds:KeyInfo представлено в
[1].
Элемент ds:KeyValue является дочерним элементом элемента ds:KeyInfo и позволяет передать ключ проверки подписи в подписываемом XML-документе.
Настоящие рекомендации устанавливают следующие дополнительные дочерние элементы элемента ds:KeyValue, описанные в
6.3.1.1:
- элемент cpxmlsec:GOSTR34102012-256-KeyValue;
- элемент cpxmlsec:GOSTR34102012-512-KeyValue;
- элемент cpxmlsec:GOSTR34102001KeyValue.
Элемент ds:KeyValue описывается следующим определением XML-схемы.
<xs:element name="KeyValue" type = "ds:KeyValueType"/> <xs:complexType name="KeyValueType" mixed="true"> <xs:choice> <xs:element ref="ds:DSAKeyValue"/> <xs:element ref="ds:RSAKeyValue"/> <!--<xs:element ref="cpxmlsec:GOSTR34102012-256-KeyValue "/> <xs:element ref="cpxmlsec:GOSTR34102012-512-KeyValue"/> <xs:element ref="cpxmlsec:GOSTR34102001KeyValue"/>--> <!--cpxmlsec:GOSTR34102012-256-KeyValue, cpxmlsec:GOSTR34102012-512-KeyValue, cpxmlsec:GOSTR34102001KeyValue will use the any element --> <xs:any namespace="##other" processContents="lax"/> </xs:choice> </xs:complexType> |
Полное описание элемента ds:KeyValue представлено в
[1].
6.3.1.1 Элементы GOSTR34102012-256-KeyValue, GOSTR34102012-512-KeyValue и GOSTR34102001 KeyValue
Элементы cpxmlsec:GOSTR34102012-256-KeyValue, cpxmlsec:GOSTR34102012-512-KeyValue и cpxmlsec:GOSTR34102001KeyValue являются дочерними элементами элемента ds:KeyValue, имеют тип cpxmlsec:GOSTKeyValueType и каждый из них состоит из двух дочерних элементов:
- элемент cpxmlsec:NamedCurve, содержащий идентификатор эллиптической кривой;
- элемент cpxmlsec:PublicKey, содержащий значение ключа проверки подписи.
Данные элементы принадлежат пространству имен с префиксом cpxmlsec, идентификатор которого и правила включения в CPXMLSEC-схему описаны в
разделе 5. Элементы cpxmlsec:NamedCurve и cpxmlsec:PublicKey имеют типы dsig11:NamedCurveType и dsig11:ECPointType соответственно, определения которых принадлежат к DSIG11-схеме и описаны в
[1].
Требования к содержимому элементов cpxmlsec:GOSTR34102012-256-KeyValue, cpxmlsec:GOSTR34102012-512-KeyValue, cpxmlsec:GOSTR34102001KeyValue и их дочерних элементов описаны в
7.3.2 -
7.3.4.
Элементы cpxmlsec:GOSTR34102012-256-KeyValue, cpxmlsec:GOSTR34102012-512-KeyValue и cpxmlsec:GOSTR34102001KeyValue описываются следующим определением CPXMLSEC-схемы.
<xs:element name="GOSTR34102012-256-KeyValue"
type="cpxmlsec:GOSTKeyValueType"/>
<xs:element name="GOSTR34102012-512-KeyValue"
type="cpxmlsec:GOSTKeyValueType"/>
<xs:element name="GOSTR34102001KeyValue"
type="cpxmlsec:GOSTKeyValueType"/>
<xs:complexType name="GOSTKeyValueType">
<xs:sequence>
<xs:element name="NamedCurve"
type="dsig11:NamedCurveType"/>
<xs:element name="PublicKey"
type="dsig11:ECPointType"/>
</xs:sequence>
</xs:complexType>
6.3.2 Элемент RetrievalMethod
Элемент ds:RetrievalMethod является дочерним элементом элемента ds:KeyInfo и позволяет дать ссылку на ключевую информацию, которая располагается в месте, отличном от подписываемого XML-документа. Для этого используются его атрибуты URI и Туре.
Элемент ds:RetrievalMethod имеет дочерний элемент ds:Transforms, используемый для преобразования данных, на которые указывают атрибуты элемента ds:RetrievalMethod.
Элемент ds:RetrievalMethod описывается следующим определением XML-схемы.
<xs:element name="RetrievalMethod" type="ds:RetrievalMethodType"/> <xs:complexType name="RetrievalMethodType"> <xs:sequence> <xs:element ref="ds:Transforms" minOccurs="0"/> </xs:sequence> <xs:attribute name="URI" type="anyURI"/> <xs:attribute name="Type" type="anyURI" use="optional"/> </xs:complexType> |
Полное описание элементов ds:RetrievalMethod и ds:Transforms представлено в
[1].
Элемент ds:X509Data является дочерним элементом элемента ds:KeyInfo и позволяет передать сведения о X.509-сертификате, при помощи которого было сформировано значение электронной подписи XML-документа, либо сам сертификат с ключом проверки подписи.
Элемент ds:X509Data описывается следующим определением XML-схемы.
<xs:element name="X509Data" type="ds:X509DataType"/>
<xs:complexType name="X509DataType">
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element name="X509IssuerSerial"
type="ds:X509IssuerSerialType"/>
<xs:element name="X509SKI" type="base64Binary"/>
<xs:element name="X509SubjectName" type="string"/>
<xs:element name="X509Certificate" type="base64Binary"/>
<xs:element name="X509CRL" type="base64Binary"/>
<!-- < xs:element ref="dsig11:X509Digest"/> -->
<!-- The X509Digest element (XMLDSig 1.1) will use the
any element -->
<xs:any namespace="##other" processContents="lax"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
Полное описание элемента ds:X509Data представлено в
[1].
6.3.4 Элемент DEREncodedKeyValue
Элемент dsig11:DEREncodedKeyValue является расширением определения XML-схемы элемента ds:KeyInfo, описанного в
6.3, и позволяет передать ключ проверки подписи. Требования к содержимому элемента dsig11:DEREncodedKeyValue описаны в
7.3.1.
Элемент dsig11:DEREncodedKeyValue описывается следующим определением XML-схемы.
<!-- targetNamespace="http://www.w3.org/2009/xmldsig11#" -->
<xs:element name="DEREncodedKeyValue"
type="dsig11:DEREncodedKeyValueType"/>
<xs:complexType name="DEREncodedKeyValueType">
<xs:simpleContent>
<xs:extension base="base64Binary">
<xs:attribute name="Id" type="ID" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Полное описание элемента dsig11:DEREncodedKeyValue представлено в
[1].
7 Использование российских криптографических алгоритмов
В данном разделе настоящих рекомендаций устанавливаются требования к содержимому элементов, описываемых в
разделе 6, и его представлению при использовании российских государственных криптографических алгоритмов подписи, хэширования и вычисления HMAC.
7.1 Использование российских криптографических алгоритмов при создании подписи XML-документов
7.1.1 Использование алгоритма хэширования в элементе DigestMethod
7.1.1.1 Использование алгоритма хэширования
ГОСТ Р 34.11-2012 с длиной хэш-кода 256 бит в элементе DigestMethod
Для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 256 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256.
Примечание - В настоящих рекомендациях для всех идентификаторов российских криптографических алгоритмов перенос строки внутри значения идентификатора и точка в его конце не учитываются.
Пример элемента ds:DigestMethod для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 256 бит:
<ds:DigestMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" /> |
Значение 256-битного хэш-кода, представленного в виде последовательности из 32 байт в порядке little-endian и в кодировке base64, описанной в
[4], должно быть помещено в содержимое элемента ds:DigestValue, описанного в
6.1.2.2.
7.1.1.2 Использование алгоритма хэширования
ГОСТ Р 34.11-2012 с длиной хэш-кода 512 бит в элементе DigestMethod
Для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 512 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512.
Пример элемента ds:DigestMethod для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 512 бит:
<ds:DigestMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512" /> |
Значение 512-битного хэш-кода, представленного в виде последовательности из 64 байт в порядке little-endian и в кодировке base64, должно быть помещено в содержимое элемента ds:DigestValue.
7.1.1.3 Использование алгоритма хэширования ГОСТ Р 34.11-94,
раздел 6, в элементе DigestMethod
Для обеспечения возможности использования и долговременного (архивного) хранения XML-документов, подписанных при помощи алгоритма, определенного в ГОСТ Р 34.11-94,
раздел 6, а также проверки электронной подписи в элемент ds:DigestMethod необходимо помещать следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411.
Элемент ds:DigestMethod может содержать дочерний элемент cpxmlsec:NamedParameters, определяющий параметры для алгоритма хэширования.
Элемент cpxmlsec:NamedParameters имеет атрибут URI, содержащий параметры алгоритма хэширования. Параметры, задаваемые идентификаторами OID, рекомендуется кодировать в соответствии с
[5]. Допускается использование идентификаторов OID-параметров, определенных в [
6, подраздел 8.2].
Если элемент cpxmlsec: NamedParameters отсутствует, приложение должно использовать параметры, соответствующие идентификатору набора параметров id-GostR3411-94-CryptoProParamSet, определенному в
[6].
Элемент cpxmlsec:NamedParameters описывается следующим определением XML-схемы.
<xs:element name="NamedParameters"
type="cpxmlsec:NamedParametersType"/>
Пример элемента ds:DigestMethod для алгоритма хэширования, определенного в ГОСТ Р 34.11-94,
раздел 6:
<ds:DigestMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"> <!-- id-GostR3411-94-CryptoProParamSet --> <cpxmlsec:NamedParameters URI="urn:oid:1.2.643.2.2.30.1" /> </ds:DigestMethod> |
Значение 256-битного хэш-кода, представленного в виде последовательности из 32 байт в порядке little-endian и в кодировке base64, должно быть помещено в содержимое элемента ds:DigestValue.
7.1.2 Использование алгоритма подписи в элементе SignatureMethod
7.1.2.1 Использование алгоритма подписи
ГОСТ Р 34.10-2012 с длиной ключа 256 бит в элементе SignatureMethod
Для алгоритма подписи, определенного в
ГОСТ Р 34.10-2012, с ключом подписи 256 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256.
Пример элемента ds:SignatureMethod с указанием алгоритма подписи, определенного в
ГОСТ Р 34.10-2012, с ключом подписи 256 бит:
<ds:SignatureMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" /> |
Значение подписи, сформированное в соответствии с алгоритмом, определенным в
ГОСТ Р 34.10-2012, с ключом подписи 256 бит должно быть представлено в соответствии с
Р 1323565.1.023 в кодировке base64 и помещено в элемент ds:SignatureValue.
7.1.2.2 Использование алгоритма подписи
ГОСТ Р 34.10-2012 с длиной ключа 512 бит в элементе SignatureMethod
Для алгоритма подписи, определенного в
ГОСТ Р 34.10-2012, с ключом подписи 512 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512.
Пример элемента ds:SignatureMethod с указанием алгоритма, определенного в
ГОСТ Р 34.10-2012, с ключом подписи 512 бит:
<ds:SignatureMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512" /> |
Значение подписи, сформированное в соответствии с алгоритмом, определенным в
ГОСТ Р 34.10-2012, с ключом подписи 512 бит должно быть представлено в соответствии с
Р 1323565.1.023 в кодировке base64 и помещено в элемент ds:SignatureValue.
7.1.2.3 Использование алгоритма подписи ГОСТ Р 34.10-2001,
подраздел 6.1, в элементе SignatureMethod
Для обеспечения возможности использования и долговременного (архивного) хранения XML-документов, подписанных при помощи алгоритма, определенного в ГОСТ Р 34.10-2001,
подраздел 6.1, а также проверки электронной подписи в элемент ds:SignatureMethod необходимо помещать следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411.
Пример элемента ds:SignatureMethod с указанием алгоритма, определенного в ГОСТ Р 34.10-2001,
подраздел 6.1:
<ds:SignatureMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" /> |
Значение подписи, сформированное в соответствии с алгоритмом, определенным в ГОСТ Р 34.10-2001,
подраздел 6.1, с ключом подписи 256 бит должно быть представлено в соответствии с
Р 1323565.1.023 в кодировке base64 и помещено в элемент ds:SignatureValue.
7.2 Использование российских криптографических алгоритмов при вычислении значения HMAC
в XML-документе
Алгоритм хэширования, определенный в
ГОСТ Р 34.11-2012, может быть использован в качестве алгоритма вычисления HMAC в соответствии с [
1, пункт 6.3.1] и Р 50.1.113-2016,
пункт 4.1.1.
7.2.1 Использование алгоритма хэширования ГОСТ Р 34.11-2012 с длиной хэш-кода 256 бит в элементе SignatureMethod
Для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 256 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr34112012-256.
Пример элемента ds:SignatureMethod с заданным алгоритмом хэширования, определенным в
ГОСТ Р 34.11-2012 с длиной хэш-кода 256 бит:
<ds:SignatureMethod Algorithm> "urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr34112012-256"/> |
Результат работы алгоритма HMAC_GOSTR3411_2012_256, определенного в Р 50.1.113-2016,
пункт 4.1.1, должен быть представлен в виде последовательности из 32 байт в порядке little-endian в кодировке base64 и помещен в элемент ds:SignatureValue, описанный в
6.2.
7.2.2 Использование алгоритма хэширования ГОСТ Р 34.11-2012 с длиной хэш-кода 512 бит в элементе SignatureMethod
Для алгоритма хэширования, определенного в
ГОСТ Р 34.11-2012, с длиной хэш-кода 512 бит должен использоваться следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr34112012-512.
Пример элемента ds:SignatureMethod с заданным алгоритмом хэширования
ГОСТ Р 34.11-2012 с длиной хэш-кода 512 бит:
<ds:SignatureMethod Algorithm= "urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr34112012-512"/> |
Результат работы алгоритма HMAC_GOSTR3411_2012_512, определенного в Р 50.1.113-2016,
пункт 4.1.2, должен быть представлен в виде последовательности из 64 байт в порядке little-endian в кодировке base64 и помещен в элемент ds:SignatureValue.
7.3 Передача информации о ключевом материале
Для передачи информации о ключевом материале алгоритмов, определенных в
ГОСТ Р 34.10-2012 и в ГОСТ Р 34.10-2001,
подраздел 6.1, могут быть использованы любые подходящие способы, определенные в
[1]. Настоящие рекомендации дополнительно определяют способ передачи ключей проверки подписи алгоритма
ГОСТ Р 34.10-2012 в элементе dsig11:DEREncodedKeyValue, описанном в
6.3.4, и в дочерних элементах элемента ds:KeyValue, описанного в
6.3.1.
7.3.1 Передача ключа проверки подписи в элементе DEREncodedKeyValue
Настоящие рекомендации устанавливают возможность передачи ключа проверки подписи, соответствующего алгоритму
ГОСТ Р 34.10-2012, с длиной 256 бит или 512 бит в элементе dsig11:DEREncodedKeyValue, описанном в
6.3.4. Настоящие рекомендации также устанавливают возможность передачи ключа проверки подписи, соответствующего алгоритму, определенному в ГОСТ Р 34.10-2001,
подраздел 6.1, в элементе dsig11:DEREncodedKeyValue, описанном в
6.3.4.
Для создания электронной подписи, соответствующей алгоритму
ГОСТ Р 34.10-2012, и проверки электронной подписи, соответствующей алгоритму, определенному в ГОСТ Р 34.10-2001,
подраздел 6.1, ключ проверки подписи и его параметры, передаваемые в элементе dsig11:DEREncodedKeyValue, должны быть помещены в структуру SubjectPublicKeyInfo (см.
Р 1323565.1.023) и закодированы в соответствии с
Р 1323565.1.023.
Пример элемента dsig11:DEREncodedKeyValue:
<dsig11:DEREncodedKeyValue> <!-- значение ключа проверки подписи --> </dsig11:DEREncodedKeyValue> |
7.3.2 Передача ключа проверки подписи алгоритма ГОСТ Р 34.10-2012 с длиной ключа 256 бит в элементе GOSTR34102012-256-KeyValue
Настоящие рекомендации устанавливают возможность передачи информации о местонахождении ключа проверки подписи, соответствующего алгоритму
ГОСТ Р 34.10-2012, с длиной 256 бит. Для передачи информации о местонахождении ключа в атрибут Type элементов ds:Reference или ds:RetrievalMethod, описанных в
6.1.2 и
6.3.2 соответственно, помещается следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:types:gostr34102012-256-keyvalue.
Для передачи ключа проверки подписи в подписываемом XML-документе необходимо представить ключ в формате, описанном для поля subjectPublicKey структуры SubjectPublicKeyInfo (см.
Р 1323565.1.023), но без представления в OCTET STRING и кодирования в DER. Данное представление должно быть закодировано в base64 и помещено в дочерний элемент cpxmlsec:PublicKey элемента cpxmlsec:GOSTR34102012-256-KeyValue аналогично элементу ds:RSAKeyValue, описанному в
[1]. Определение XML-схемы для элементов cpxmlsec:GOSTR34102012-256-KeyValue и cpxmlsec:PublicKey описано в
6.3.1.1.
Для передачи идентификатора эллиптической кривой (параметров ключа проверки подписи) в подписываемом XML-документе используется атрибут URI элемента cpxmlsec:NamedCurve, описанного в
6.3.1.1. Параметры, задаваемые идентификаторами OID, рекомендуется кодировать в соответствии с
[5]. Настоящие рекомендации допускают использование идентификаторов OID параметров, определенных в
Р 1323565.1.023.
Пример элемента cpxmlsec:GOSTR34102012-256-KeyValue:
<cpxmlsec:GOSTR34102012-256-KeyValue> <!-- id-GostR3410-2001-CryptoPro-A-ParamSet --> <cpxmlsec:NamedCurve URI="urn:oid:1.2.643.2.2.35.1" /> <cpxmlsec:PublicKey> <!-- значение ключа проверки подписи --> </cpxmlsec:PublicKey> </cpxmlsec:GOSTR34102012-256-KeyValue> |
7.3.3 Передача ключа проверки подписи алгоритма ГОСТ Р 34.10-2012 с длиной ключа 512 бит в элементе GOSTR34102012-512-KeyValue
Настоящие рекомендации устанавливают возможность передачи информации о местонахождении ключа проверки подписи, соответствующего алгоритму
ГОСТ Р 34.10-2012, с длиной 512 бит. Для передачи информации о местонахождении ключа в атрибут Type элементов ds:Reference или ds:RetrievalMethod, описанных в
6.1.2 и
6.3.2 соответственно, помещается следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:types:gostr34102012-512-keyvalue.
Для передачи ключа проверки подписи в подписываемом XML-документе необходимо представить ключ в формате, описанном для поля subjectPublicKey структуры SubjectPublicKeyInfo (см.
Р 1323565.1.023), но без представления в OCTET STRING и кодирования в DER. Данное представление должно быть закодировано в base64 и помещено в дочерний элемент cpxmlsec:PublicKey элемента cpxmlsec:GOSTR34102012-512-KeyValue аналогично элементу ds:RSAKeyValue, описанному в
[1]. Определение XML-схемы для элементов cpxmlsec:GOSTR34102012-512-KeyValue и cpxmlsec:PublicKey описано в
6.3.1.1.
Для передачи идентификатора эллиптической кривой (параметров ключа проверки подписи) в подписываемом XML-документе используется атрибут URI элемента cpxmlsec:NamedCurve, описанного в
6.3.1.1. Параметры, задаваемые идентификаторами OID, рекомендуется кодировать в соответствии с
[5]. Настоящие рекомендации допускают использование идентификаторов OID параметров, определенных в
Р 1323565.1.023.
Пример элемента cpxmlsec:GOSTR34102012-512-KeyValue:
<cpxmlsec:GOSTR34102012-512-KeyValue> <!-- id-tc26-gost-3410-12-512-paramSetA --> <cpxmlsec:NamedCurve URI="urn:oid:1.2.643.7.1.2.1.2.1" /> <cpxmlsec:PublicKey> <!-- значение ключа проверки подписи --> </cpxmlsec:PublicKey> </cpxmlsec:GOSTR34102012-512-KeyValue> |
7.3.4 Передача ключа проверки подписи алгоритма ГОСТ Р 34.10-2001, подраздел 6.2, в элементе GOSTR34102001KeyValue
Для обеспечения возможности использования и долговременного (архивного) хранения XML-документов, подписанных при помощи алгоритма, определенного в ГОСТ Р 34.10-2001,
подраздел 6.1, а также проверки электронной подписи в атрибут URI элементов ds:RetrievalMethod или ds:Reference для передачи информации о местонахождении ключа проверки подписи необходимо помещать следующий идентификатор: urn:ietf:params:xml:ns:cpxmlsec:types:gostr34102001-keyvalue.
Для передачи ключа проверки подписи, соответствующего алгоритму ГОСТ Р 34.10-2001,
подраздел 6.1, необходимо представить ключ в формате, описанном для поля subjectPublicKey структуры SubjectPublicKeyInfo для GostR3410-2012-256-PublicKey (см.
Р 1323565.1.023), но без представления в OCTET STRING и кодирования в DER. Данное представление должно быть закодировано в base64 и помещено в дочерний элемент cpxmlsec:PublicKey элемента cpxmlsec:GOSTR34102001KeyValue аналогично элементу ds:RSAKeyValue, описанному в
[1]. Определение XML-схемы для элементов cpxmlsec:GOSTR34102001KeyValue и cpxmlsec:PublicKey описано в
6.3.1.1.
Для передачи идентификатора эллиптической кривой (параметров ключа проверки подписи) в подписываемом XML-документе используется атрибут URI элемента cpxmlsec:NamedCurve, описанного в
6.3.1.1. Параметры, задаваемые идентификаторами OID, рекомендуется кодировать в соответствии с
[5]. Настоящие рекомендации допускают использование идентификаторов OID параметров, определенных в [
6, подраздел 8.4].
Пример элемента cpxmlsec:GOSTR34102001KeyValue:
<cpxmlsec:GOSTR34102001KeyValue> <!-- id-GostR3410-2001-CryptoPro-A-ParamSet --> <cpxmlsec:NamedCurve URI="urn:old:1.2.643.2.2.35.1"/> <cpxmlsec:PublicKey> <!-- значение ключа проверки подписи --> </cpxmlsec:PublicKey> </cpxmlsec:GOSTR34102001KeyValue> |
(справочное)
В данном приложении приводится полная CPXMLSEC-схема, содержащая названия элементов и атрибутов, используемые пространства имен XML и типы данных, устанавливаемые настоящими рекомендациями.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Declare helper entities to avoid overrunning right margin of text
while importing
schemata.-->
<!DOCTYPE schema [
<!ENTITY xmldsiguri
"http://www.w3.org/TR/2008/REC-xmldsig-core-20080610">
]>
<xs:schema
xmlns:cpxmlsec="urn:ietf:params:xml:ns:cpxmlsec"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dsig11="http://www.w3.org/2009/xmldsig11#"
targetNamespace="urn:ietf:params:xml:ns:cpxmlsec"
element FormDefault="qualified"
version="0.4">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"/>
<xs:import namespace="http://www.w3.org/2009/xmldsig11#"/>
<xs:element name="NamedParameters"
type="cpxmlsec:NamedParametersType"/>
<xs:complexType name="NamedParametersType">
<xs:attribute name="URI" type="xs:anyURI" use="required"/>
</xs:complexType>
<xs:complexType name="GOSTKeyValueType">
<xs:sequence>
<xs:element name="NamedCurve"
type="dsig11:NamedCurveType"/>
<xs:element name="PublicKey" type="dsig11:ECPointType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="GOSTR34102012-256-KeyValue"
type="cpxmlsec:GOSTKeyValueType" />
<xs:element name="GOSTR34102012-512-KeyValue"
type="cpxmlsec:GOSTKeyValueType" />
<xs:element name="GOSTR34102001KeyValue"
type="cpxmlsec:GOSTKeyValueType" />
</xs:schema>
(справочное)
В данном приложении содержатся основные примеры использования российских алгоритмов электронной подписи при создании электронной подписи XML-документов.
Примечание - В настоящих рекомендациях все приведенные подписанные XML-документы имеют структуру, представленную родительскими и дочерними элементами. Для удобства чтения XML-документа каждый из элементов, кроме первого, имеет отступ. Число отступов увеличивается на один для каждого вложенного (дочернего) элемента. В данных рекомендациях один отступ принято считать равным трем пробелам. Значения подписи, содержащиеся в примерах, получены с учетом этой особенности и могут измениться, если число пробелов в одном отступе уменьшить или увеличить.
Б.1 Подпись XML-документа с использованием алгоритма, определенного в ГОСТ Р 34.10-2012, с длиной хэш-кода 256 бит в элементе DigestMethod
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018,
приложение А.
Координата x ключа проверки подписи сертификата равна:
0x971566CEDA436EE7678F7E07E84EBB7217406C0B4747AA8FD2AB1453C3D0DFBA
Координата y равна:
0xAD58736965949F8E59830F8DE20FC6C0D177F6AB599874F1E2E24FF71F9CE643
Соответствующий ключ подписи d равен:
0xBFCF1D623E5CDD3032A7C6EABB4A923C46E43D640FFEAAF2C3ED39A8FA399924
Число k равно:
0x5782C53F110C596F9155D35EBD25A06A89C50391850A8FEFE33B0E270318857C
Число

равно:
0x054D1DABB161D63424F8DABB2800708B00F78DA7582699E8F2F0A521C7CE8144
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?> <root> <DataToSign Id="ToSign">Data</DataToSign> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC- xml-c14n-20010315" /> <SignatureMethod Algorithm="urn:ietf:params:xml:ns: cpxmlsec:algorithms:gostr34102012-gostr34112012-256" /> <Reference URI="#ToSign"> <Transforms> <Transform Algorithm="http:// www.w3.org/TR/2001/REC-xml- c14n-20010315" /> </Transforms> <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms: gostr34112012-256" /> <DigestValue>9QLsxPPo7LlX6IXqwzjcNDmbFuCCGivQ1s61hcPuITM=</DigestValue> </Reference> </SignedInfo> <SignatureValue>jcQJhWtWbTCV7bjFky5vGXXUFigc74FXRi79lZnFHK7pMjpeiN2H + 3xyQ4O//nzs1Ln/oqwzvu9zpaH3Q0BPaw==</SignatureValue> <KevInfo> <KeyValue> <GOSTR34102012-256-KeyValue xmlns="urn:ietf:params:xml:ns:cpxmlsec"> <NamedCurve URI="urn:oid:1.2.643.2.2.36.0" /> <PublicKey>ut/Qw1MUq9KPqkdHC2xAF3K7TugHfo9n525D2s5mFZdD5pwf90/i4vF0m Fmr9nfRwMYP4o0Pg1mOn5RlaXNYrQ==</PublicKey> </GOSTR34102012-256-KeyValue> </KeyValue> </KeyInfo> </Signature> </root> |
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
77u/PD94bWwgdmVyc21vbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48cm9vdD4NCiAgIDxEYXRhVG9TaWdu IElkPSJUb1NpZ24iPkRhdGE8L0RhdGFUb1NpZ24+DQogICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgPENhbm9u aWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwt YzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJ1cm46aWV0 ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAxMi1nb3N0cjM0MTEyMDEy LTI1NiIgLz4NCiAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjVG9TaWduIj4NCiAgICAgICAgICAgIDxUcmFu c2Zvcm1zPg0KICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn L1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPg0KICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPg0K ICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09InVybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B4 bWxzZWM6YWxnb3JpdGhtczpnb3N0cjM0MTEyMDEyLTI1NiIgLz4NCiAgICAgICAgICAgIDxEaWdlc3RWYWx1 ZT45UUxzeFBQbzdMbFg2SVhxd3pqY05EbWJGdUNDR2l2UTFzNjFoY1B1SVRNPTwvRGlnZXN0VmFsdWU+DQog ICAgICAgICA8L1JlZmVyZW5jZT4NCiAgICAgIDwvU2lnbmVkSW5mbz4NCiAgICAgIDxTaWduYXR1cmVWYWx1 ZT5qY1FKaFd0V2JUQ1Y3YmpGa3k1dkdYWFVGaWdjNzRGWFJpNzlsWm5GSEs3cE1qcGVpTjJIKzN4eVE0Ty8v bnpzMUxuL29xd3p2dTl6cGFIM1EwQlBhdz09PC9TaWduYXR1cmVWYWx1ZT4NCiAgICAgIDxLZXlJbmZvPg0K ICAgICAgICAgPEtleVZhbHVlPg0KICAgICAgICAgICAgPEdPU1RSMzQxMDIwMTItMjU2LUtleVZhbHVlIHht bG5zPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjIj4NCiAgICAgICAgICAgICAgIDxOYW1lZEN1 cnZlIFVSST0idXJuOm9pZDoxLjIuNjQzLjIuMi4zNi4wIiAvPg0KICAgICAgICAgICAgICAgPFB1YmxpY0tl eT51dC9RdzFNVXE5S1Bxa2RIQzJ4QUYzSzdUdWdIZm85bjUyNUQyczVtRlpkRDVwd2Y5MC9pNHZGMG1GbXI5 bmZSd01ZUDRvMFBnMW1PbjVSbGFYTllyUT09PC9QdWJsaWNLZXk+DQogICAgICAgICAgICA8L0dPU1RSMzQx MDIwMTItMjU2LUtleVZhbHVlPg0KICAgICAgICAgPC9LZXlWYWx1ZT4NCiAgICAgIDwvS2V5SW5mbz4NCiAg IDwvU2lnbmF0dXJlPg0KPC9yb290Pg== |
Б.2 Подпись XML-документа с использованием алгоритма, определенного в ГОСТ Р 34.10-2012, с длиной хэш-кода 512 бит в элементе DigestMethod
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018,
приложение А.
Координата x ключа проверки подписи сертификата равна:
0x07134627CE7FC6770953ABAA4714B38AF8DE764B8870A502C2F4CC2D05541459A18DA3B9D4EBC09BC 06CB2EA1856A03747561CF04C34382111539230A550F1913 |
Координата y равна:
0x7E08A434CB2FA300F8974E3FF69A4BCDF36B6308ElD7A56144693A35E11CBDl4D502916E680E35FE1E 6ABBA85BD4DAE7065308B16B1CCABFE3D91CE0655B0FFD |
Соответствующий ключ подписи d равен:
0x3FC01CDCD4EC5F972EB482774C41E66DB7F380528DFE9E67992BA05AEE462435757530E641077CE587 B976C8EEB48C48FD33FD175F0C7DE6A44E014E6BCB074B |
Число k равно:
0x72ABB44536656BF1618CE10BF7EADD40582304A51EE4E2A25A0A32CB0E773ABB23B7D8FDD8FA5EEE91 B4AE452F2272C86E1E2221215D405F51B5D5015616E1F6 |
Число

равно:
0x33DEF8422879AA68482339BC65E5DCA9A5D77E80C5C0371DB13D3B88F4CCA8A89ED3CE85849231DD61 B35E4B47A3722317663859A2BE088C1BB6EEC87410DAF2 |
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod
Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:
gostr34102012-gostr34112012-512" />
<Reference URI="#ToSign">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</Transforms>
<DigestMethod
Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512" />
<DigestValue>wiOFD9D7zKHNlo58t/9tUtCJA5ZO9vmDhMlt3HIkyXZvQxIp5PE+txwsIAV
fUIOULvGTFxAZlwuHTB+qD5s54g==</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>dn+oWg6n3wJ20kBmO1GvURc4SuZ3h3nKXYWy4uHdmeS2nlTlNWFKca4fTBlc+
fpnCS8IEVNFX25Ndh4UXJLLNl2/L0wtancFiA+xRYzFgzUGW+pWIfyfvBdsSspbweZyJUWajqN3lDR
ZDchycEApNlqDpTtes8BpNrXSh+Cpg+c=</SignatureValue>
<KeyInfo>
<KeyValue>
<GOSTR34102012-512-KeyValue
xmlns="urn:ietf:params:xml:ns:cpxmlsec">
<NamedCurve URI="urn:oid:1.2.643.7.1.2.1.2.2" />
<PublicKey>ExkPVQojORURgkPDBM9hdXQDaoWhLssGvAm8Tp072hiaRUFV0MJMLyxQCo
e4ZOeNrzhLcaSrUwl3xn/OJ0YTB/0PW2XgHNnjv8oca7EIUwbn2tRbqLtqHv41DmhukQ
LVFL0c4TU6aURhpdfhCGNr881LmvY/Tpf4AKMvyzSkCH4=</PublicKey>
</GOSTR34102012-512-KeyValue>
</KeyValue>
</KeyInfo>
</Signature>
</root>
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48cm9vdD4NCiAgIDxEYXRhVG9TaWdu IElkPSJUb1NpZ24iPkRhdGE8L0RhdGFUb1NpZ24+DQogICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgPENhbm9u aWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwt YzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgIDxTaWduYXRlcmVNZXRob2QgQWxnb3JpdGhtPSJlcm46aWV0 ZjpwYXJhbXM6eGlsOm5zOmNweGlsc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAxMi1nb3N0cjM0MTEyMDEy LTUxMiIgLz4NCiAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjVG9TaWduIj4NCiAgICAgICAgICAgIDxUcmFu c2ZvcmlzPg0KICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn LlRSLzIwMDEvUkVDLXhtbCljMTRuLTIwMDEwMzElIiAvPg0KICAgICAgICAgICAgPC9UcmFuc2ZvcmlzPg0K ICAgICAgICAgICAgPERpZ2VzdElldGhvZCBBbGdvcml0aG09InVybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B4 bWxzZWM6YWxnb3JpdGhtczpnb3N0cjM0MTEyMDEyLTUxMiIgLz4NCiAgICAgICAgICAgIDxEaWdlc3RWYWxl ZT53aU9GRDlEN3pLSE5sbzU4dC85dFV0Q0pBNVpPOXZtRGhNbHQzSElreVhadlF4SXA1UEUrdHh3c0lBVmZV SU9VTHZHVEZ4QVpsd3VIVEIrcUQ1czU0Zz09PC9EaWdlc3RWYWxlZT4NCiAgICAgICAgIDwvUmVmZXJlbmNl Pg0KICAgICAgPC9TaWduZWRJbmZvPg0KICAgICAgPFNpZ25hdHVyZVZhbHVlPmRuK29XZzZuM3dKMjBrQmlP MUd2VVJjNFNlWjNoM25LWFlXeTRlSGRtZVMybmxUbE5XRktjYTRmVEJsYytmcG5DUzhJRVZORlgyNU5kaDRV WEpMTE5sMi9MMHd0YW5jRmlBK3hSWXpGZ3pVRlcrcFdJZnlmdkJkc1NzcGJ3ZVp5SlVXYWpxTjNsRFJaRGNo eWNFQXBObHFEcFR0ZXM4QnBOclhTaCtDcGcrYz08L1NpZ25hdHVyZVZhbHVlPg0KICAgICAgPEtleUluZm8+ DQogICAgICAgICA8S2V5VmFsdWU+DQogICAgICAgICAgICA8R09TVFIzNDEwMjAxMi0lMTItS2V5VmFsdWUg eG1sbnM9InVybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B4bWxzZWMiPg0KICAgICAgICAgICAgICAgPE5hbWVk Q3VydmUgVVJJPSJlcm46b2lkOjEuMi42NDMuNy4xLjIuMS4yLjIiIC8+DQogICAgICAgICAgICAgICA8UHVi bGljS2V5PkV4alBWUW9qT1JVUmdrUERCTTloZFhRRGFvV2hMc3NHdkFtOFRwMDcyaGlhUlVGVjBNSklMeXhR Q29lNFpPZU5yemhMY2FTclV3bDN4bi9PSjBZVEIvMFBXMlhnSE5uanY4b2NhN0VJVXdibjJ0UmJxTHRxSHY0 MURtaHVrUUxWRkwwYzRUVTZhVVJocGRmaENHTnI4ODFMbXZZLlRwZjRBS0l2eXpTa0NIND08LlBlYmxpY0tl eT4NCiAgICAgICAgICAgIDwvR09TVFIzNDEwMjAxMi01MTItS2V5VmFsdWU+DQogICAgICAgICA8L0tleVZh bHVlPg0KICAgICAgPC9LZXlJbmZvPg0KICAgPC9TaWduYXRlcmU+DQo8L3Jvb3Q+ |
Б.3 Подпись XML-документа с использованием алгоритма, определенного в ГОСТ Р 34.10-2001, подраздел 6.1, в элементе SignatureMethod
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в [
7, подраздел 4.2].
Координата x ключа проверки подписи сертификата равна:
0x577E324FE70F2B6DF45C437A0305E5FD2C89318C13CD0875401A026075689584
Координата y равна:
0x601AEACABC660FDFB0CBC7567EBBA6EA8DE40FAE857C9AD0038895B916CCEB8F
Соответствующий ключ подписи d равен:
0x0B293BE050D0082BDAE785631A6BAB68F35B42786D6DDA56AFAF169891040F77
Число k равно:
0x5782C53F110C596F9155D35EBD25A06A89C50391850A8FEFE33B0E270318857C
Число

равно:
0xEF3E03620C2B0E87E43F503A839AB7868071EA28CA38AABD915D56A5F74400F4
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-cl4n-20010315"/>
<SignatureMethod
Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/>
<Reference URI ="#ToSign">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-cl4n-20010315"/>
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"/>
<DigestValue>FVQbzF2djfNNJO3JG0OLfSODlZkibTcUmF2DS4nnuPY=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>n2UHtdu25fPzJNYyojbNTq52VlD3UBVQqI5xNhdYopDpMjpeiN2H+3xyQ4O//
nzslLn/oqwzvu9zpaH3Q0BPaw==</SignatureValue>
<KeyInfo>
<KeyValue>
<GOSTR34102001KeyValue xmlns="urn:ietf:params:xml:ns:cpxmlsec">
<NamedCurve URI="urn:oid:1.2.643.2.2.36.0" />
<PublicKey>hJVodWACGkBlCM0TjDGJLP3lBQN6Q1z0bSsP508yfleP68wWuZWIA9CafIW
uD+SN6qa7flbHy7DfD2a8yuoaYA==</PublicKey>
</GOSTR34102001KeyValue>
</KeyValue>
</KeyInfo>
</Signature>
</root>
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48cm9vdD4NCiAgIDxEYXRhVG9TaWdu IElkPSJUb1NpZ24iPkRhdGE8L0RhdGFUb1NpZ24+DQogICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgPENhbm9u aWNhbG16YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwt YzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJ1cm46aWV0 ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAwMS1nb3N0cjM0MTEiIC8+ DQogICAgICAgICA8UmVmZXJlbmNlIFVSST0iI1RvU2lnbiI+DQogICAgICAgICAgICA8VHJhbnNmb3Jtcz4N CiAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAx LlJFQyl4bWwtYzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4NCiAgICAgICAg ICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFs Z29yaXRobXM6Z29zdHIzNDExIiAvPg0KICAgICAgICAgICAgPERpZ2VzdFZhbHVlPkZWUWJ6RjJkamZOTkpP M0pHME9MZlNPRGxaa2liVGNVbUYyRFM0bm51UFk9PC9EaWdlc3RWYWx1ZT4NCiAgICAgICAgIDwvUmVmZXJl bmNlPg0KICAgICAgPC9TaWduZWRJbmZvPg0KICAgICAgPFNpZ25hdHVyZVZhbHVlPm4yVUh0ZHUyNWZQekpO WXlvamJOVHE1MlYxRDNVQlZRcUk1eE5oZFlvcERwTWpwZWlOMkgrM3h5UTRPLy9uenMxTG4vb3F3enZ1OXpw YUgzUTBCUGF3PT08L1NpZ25hdHVyZVZhbHVlPg0KICAgICAgPEtleUluZm8+DQogICAgICAgICA8S2V5VmFs dWU+DQogICAgICAgICAgICA8R09TVFIzNDEwMjAwMUtleVZhbHVlIHhtbG5zPSJ1cm46aWV0ZjpwYXJhbXM6 eG1sOm5zOmNweG1sc2VjIj4NCiAgICAgICAgICAgICAgIDxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjIu NjQzLjIuMi4zNi4wIiAvPg0KICAgICAgICAgICAgICAgPFB1YmxpY0tleT5oSlZvZFdBQ0drQjFDTTBUakRH SkxQM2xCUU42UTF6MGJTc1A1MDh5ZmxlUDY4d1d1WldJQTlDYWZJV3VEK1NONnFhN2ZsYkh5N0RmRDJhOHl1 b2FZQT09PC9QdWJsaWNLZXk+DQogICAgICAgICAgICA8L0dPU1RSMzQxMDIwMDFLZXlWYWx1ZT4NCiAgICAg ICAgIDwvS2V5VmFsdWU+DQogICAgICA8L0tleUluZm8+DQogICA8L1NpZ25hdHVyZT4NCjwvcm9vdD4= |
Б.4 Подпись XML-документа с передачей X.509-сертификата в элементе KeyInfo
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018,
приложение А.
Координата x ключа проверки подписи сертификата равна:
0x971566CEDA436EE7678F7E07E84EBB7217406C0B4747AA8FD2AB1453C3D0DFBA
Координата y равна:
0xAD58736965949F8E59830F8DE20FC6C0D177F6AB599874F1E2E24FF71F9CE643
Соответствующий ключ подписи d равен:
0xBFCF1D623E5CDD3032A7C6EABB4A923C46E43D640FFEAAF2C3ED39A8FA399924
Число k равно:
0x5782C53F110C596F9155D35EBD25A06A89C50391850A8FEFE33B0E270318857C
Число

равно:
0x054D1DABB161D63424F8DABB2800708B00F78DA7582699E8F2F0A521C7CE8144
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod
Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" />
<Reference URI="#ToSign">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" />
<DigestValue>9QLsxPPo7LlX6IXqwzjcNDmbFuCCGivQ1s61hcPuITM=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>jcQJhWtWbTCV7bjFky5vGXXUFigc74FXRi79lZnFHK7pMjpeiN2H+3xyQ4O//
nzslLn/oqwzvu9zpaH3Q0BPaw==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIICYjCCAg+gAwIBAgIBATAKBggqhQMHAQEDAjBWMSkwJwYJKoZIhvcN
AQkBFhpHb3N0UjM0MTAtMjAxMkBleGFtcGxlLmNvbTEpMCcGAlUEAxMgR29zdFIzNDEwLT
IwMTIgKDI1NiBiaXQpIGV4YW1wbGUwHhcNMTMxMTA1MTQwMjM3WhcNMzAxMTAxMTQwMjM3
WjBWMSkwJwYJKoZIhvcNAQkBFhpHb3N0UjM0MTAtMjAxMkBleGFtcGxlLmNvbTEpMCcGA1
UEAxMgR29zdFIzNDEwLTIwMTIgKDIlNiBiaXQpIGV4YWlwbGUwZjAfBggqhQMHAQEBATAT
BgcqhQMCAiQABggqhQMHAQECAgNDAARAut/Qw1MUq9KPqkdHC2xAF3K7TugHfo9n525D2s
5mFZdD5pwf90/i4vF0mFmr9nfRwMYP4o0PglmOn5RlaXNYraOBwDCBvTAdBgNVHQ4EFgQU
1fIeN1HaPbw+XWUzbkJ+kHJUT0AwCwYDVR0PBAQDAgHGMA8GA1UdEwQIMAYBAf8CAQEwfg
YDVR0BBHcwdYAU1fIeN1HaPbw+XWUzbkJ+kHJUT0ChWqRYMFYxKTAnBgkqhkiG9w0BCQE
WGkdvc3RSMzQxMC0yMDEyQGV4YWlwbGUuY29tMSkwJwYDVQQDEyBHb3N0UjM0MTAtMjAx
MiAoMjU2IGJpdCkgZXhhbXBsZYIBATAKBggqhQMHAQEDAgNBAF5bm4BbARR6hJLEoWJkO
sYV3Hd7kXQQjz3CdqQfmHrz6TI6Xojdh/t8ckODv/587NS5/6KsM77vc6Wh90NAT2s=</
X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</root>
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
77u/PD94bWwgdmVyc21vbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48cm9vdD4NCiAgIDxEYXRhVG9TaWdu IElkPSJUb1NpZ24iPkRhdGE8L0RhdGFUb1NpZ24+DQogICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgPENhbm9 uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWw tYzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgIDxTaWduYXRlcmVNZXRob2QgQWxnb3JpdGhtPSJ1cm46aWV 0ZjpwYXJhbXM6eGlsOm5zOmNweGlsc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAxMilnb3N0cjM0MTEyMDE yLTI1NiIgLz4NCiAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjVG9TaWduIj4NCiAgICAgICAgICAgIDxUcmF uc2Zvcm1zPg0KICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3J nL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPg0KICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPg0 KICAgICAgICAgICAgPERpZ2VzdEl1dGhvZCBBbGdvcml0aG09InVybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B 4bWxzZWM6YWxnb3JpdGhtczpnb3N0cjM0MTEyMDEyLTI1NiIgLz4NCiAgICAgICAgICAgIDxEaWdlc3RWYWx 1ZT45UUxzeFBQbzdMbFg2SVhxd3pqY05EbWJGdUNDR2l2UTFzNjFoY1B1SVRNPTwvRGlnZXN0VmFsdWU+DQo gICAgICAgICA8LlJlZmVyZW5jZT4NCiAgICAgIDwvU2lnbmVkSW5mbz4NCiAgICAgIDxTaWduYXR1cmVWYWx 1ZT5qY1FKaFd0V2JUQ1Y3YmpGa3k1dkdYWFVGaWdjNzRGWFJpNzlsWm5GSEs3cE1qcGVpTjJIKzN4eVE0Ty8 vbnpzMUxuL29xd3p2dTl6cGFIM1EwQlBhdz09PC9TaWduYXRlcmVWYWxlZT4NCiAgICAgIDxLZXlJbmZvPg0 KICAgICAgICAgPFg1MDlEYXRhPg0KICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT5NSUlDWWpDQ0FnK2d Bd0lCQWdJQkFUQUtCZ2dxaFFNSEFRRURBakJXTVNrd0p3WUpLb1pJaHZjTkFRa0JGaHBIYjNOMFVqTTBNVEF 0TWpBeE1rQmxlR0Z0Y0d4bExtTnZiVEVwTUNjR0ExVUVBeE1nUjI5emRGSXpOREV3TFRJd0lUSWdLREkxTml CaWFYUXBJR1Y0WVcxd2JHVXdIaGNOTVRNeE1UQTFNVFF3TWpNM1doY05NekF4TVRBeE1UUXdNak0zV2pCV01 Ta3dKdl1KS29aSWh2Y05BUWtCRmhwSGIzTjBVak0wTVRBdE1qQXhNa0JsZUdGdGNHeGxMbU52YIRFcElDY0d BMVVFQXhNZ1IyOXpkRkl6TkRFd0xUSXdNVElnS0RJMU5pQmlhWFFwSUdWNFlXMXdiR1V3WmpBZkJnZ3FoUUl IQVFFQkFUQVRCZ2NxaFFNQ0FpUUFCZ2dxaFFNSEFRRUNBZ05EQUFSQXV0LlF3MUlVcTlLUHFrZEhDMnhBRjN LN1R1Z0hmbzluNTI1RDJzNWlGWmRENXB3ZjkwL2k0dkYwbUZtcjluZlJ3TVlQNG8wUGcxbU9uNVJsYVhOWXJ hT0J3RENCdlRBZEJnTlZIUTRFRmdRVTFmSWVOMUhhUGJ3K1hXVXpia0ora0hKVVQwQXdDd1lEVlIwUEJBUUR BZ0hHTUE4R0ExVWRFdlFJTUFZQkFmOENBUUV3ZmdZRFZSMEJCSGN3ZFlBVTFmSWVOMUhhUGJ3KlhXVXpia0 ora0hKVVQwQ2hXcVJZTUZZeEtUQW5CZ2txaGtpRzl3MEJDUUVXR2tkdmMzUlNNelF4TUMweU1ERXlRR1Y0WV cxd2JHVXVZMjl0TVNrd0p3WURWUVFERXlCSGIzTjBVak0wTVRBdE1qQXhNaUFvTWpVMklHSnBkQ2tnWlhoaG JYQnNaWUlCQVRBS0JnZ3FoUUlIQVFFREFnTkJBRjVibTRCYkFSUjZoSkxFbldKa09zWVYzSGQ3alhRUWp6M0 NkcVFmbUhyejZUSTZYb2pkaC90OGNrT0R2LzU4N05TNS82S3NNNzd2YzZXaDkwTkFUMnM9PC9YNTA5Q2VydG lmaWNhdGU+DQogICAgICAgICA8LlglMDlEYXRhPg0KICAgICAgPC9LZXlJbmZvPg0KICAgPC9TaWduYXRlcm U+DQo8L3Jvb3Q+ |
Б.5 Подпись XML-документа с ключом проверки подписи ГОСТ Р 34.10-2012 256 бит в элементе DEREncodedKeyValue
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018,
приложение А.
Координата x ключа проверки подписи сертификата равна:
0x971566CEDA436EE7678F7E07E84EBB7217406C0B4747AA8FD2AB1453C3D0DFBA
Координата y равна:
0xAD58736965949F8E59830F8DE20FC6C0D177F6AB599874F1E2E24FF71F9CE643
Соответствующий ключ подписи d равен:
0xBFCF1D623E5CDD3032A7C6EABB4A923C46E43D640FFEAAF2C3ED39A8FA399924
Число k равно:
0x5782C53F110C596F9155D35EBD25A06A89C50391850A8FEFE33B0E270318857C
Число

равно:
0x054D1DABB161D63424F8DABB2800708B00F78DA7582699E8F2F0A521C7CE8144
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod
Algorithm="urn:letf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" />
<Reference URI="#ToSign">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" />
<DigestValue>9QLsxPPo7LlX6IXqwzjcNDmbFuCCGivQls61hcPuITM=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>jcQJhWtWbTCV7bjFky5vGXXUFigc74FXRi79lZnFHK7pMjpeiN2H+3xyQ4O//
nzslLn/oqwzvu9zpaH3Q0BPaw==</SignatureValue>
<KeyInfo>
<DEREncodedKeyValue xmlns="http://www.w3.org/2009/xmldsigll#">JMGYwHwYIKoUDB
wEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIDQwAEQLrf0MNTFKvSj6pHRwtsQBdyu07oB36PZ+d
uQ9rOZhWXQ+acH/dP4uLxdJhZq/Z30cDGD+KND4NZjp+UZWlzWK0=
</DEREncodedKeyValue>
</KeyInfo>
</Signature>
</root>
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48cm9vdD4NCiAgIDxEYXRhVG9TaWdu IElkPSJUb1NpZ24iPkRhdGE8L0RhdGFUb1NpZ24+DQogICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgPENhbm9u aWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwt YzE0bi0yMDAxMDMxNSIgLz4NCiAgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJ1cm46aWV0 ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAxMi1nb3N0cjM0MTEyMDEy LTI1NiIgLz4NCiAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjVG9TaWduIj4NCiAgICAgICAgICAgIDxUcmFu c2ZvcmlzPg0KICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn L1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPg0KICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPg0K ICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09InVybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B4 bWxzZWM6YWxnb3JpdGhtczpnb3N0cjM0MTEyMDEyLTI1NiIgLz4NCiAgICAgICAgICAgIDxEaWdlc3RWYWx1 ZT45UUxzeFBQbzdMbFg2SVhxd3pqY05EbWJGdUNDR2l2UTFzNjFoYlBlSVRNPTwvRGlnZXN0VmFsdWU+DQog ICAgICAgICA8LlJlZmVyZW5jZT4NCiAgICAgIDwvU2lnbmVkSW5mbz4NCiAgICAgIDxTaWduYXR1cmVWYWx1 ZT5qYlFKaFd0V2JUQlY3YmpGa3kldkdYWFVGaWdjNzRGWFJpNzlsWm5GSEs3cElqcGVpTjJIKzN4eVE0Ty8v bnpzMUxuL29xd3p2dTl6cGFIMlEwQlBhdz09PC9TaWduYXRlcmVWYWxlZT4NCiAgICAgIDxLZXlJbmZvPg0K ICAgICAgICAgPERFUkVuY29kZWRLZXlWYWxlZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxk c2lnMTEjIj5NR1l3SHdZSUtvVURCd0VCQVFFd0V3WUhLblVEQWdJa0FBWUlLblVEQndFQkFnSURRd0FFUUxy ZjBNTlRGS3ZTajZwSFJ3dHNRQmR5dTA3b0IzNlBaK2RlUTlyTlpoVlhRK2FjSC9kUDRlTHhkSmhacS9aMzBj REdEK0tORDROWmpwKlVaV2x6V0swPTwvREVSRW5jb2RlZEtleVZhbHVlPg0KICAgICAgPC9LZXlJbmZvPg0K ICAgPC9TaWduYXRlcmU+DQo8L3Jvb3Q+ |
| W3C XMLDSIG | Eastlake, D., Reagle, J., and D. Solo, XML Signature Syntax and Processing Version 1.1, W3C Recommendation, 2013 |
| W3C XMLSCHEMA-1 | Thompson, H., Beech, D. Maloney, M. and N. Mendelsohn, XML Schema Part 1: Structures Second Edition, W3C Recommendation, 2004 |
| W3C XMLSCHEMA-2 | Biron, Paul and A. Malhotra, XML Schema Part 2: Datatypes Second Edition, W3C Recommendation, 2004 |
| IETF RFC 4648 | Josefsson, S., The Base16, Base32, and Base64 Data Encodings, IETF RFC 4648, 2008 |
| IETF RFC 3061 | Mealling, M., A URN Namespace of Object Identifiers, IETF RFC 3061, 2001 |
| IETF RFC 4357 | Popov, V., Kurepkin, I., and S. Leontiev, Additional Cryptographic Algorithms for Use with GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms, IETF RFC 4357, 2006 |
| IETF RFC 4491 | Leontiev, S. Shefanovski, D., Using the GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms with the Internet X.509 Public Key Infrastructure. Certificate and CRL Profile, IETF RFC 4491, 2006 |
УДК 681.3.06:006.354 | |
Ключевые слова: криптография, синтаксис, сообщения, электронная подпись |