3.1.11
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.
3.1.12
3.1.13
3.1.14
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности с действующими отечественными нормативными документами и опубликованными научно-техническими изданиями установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.
3.1.15
В настоящих рекомендациях используют следующие обозначения:
Пространства имен 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-документе.
В настоящих рекомендациях используются XML-элементы из четырех различных XML-схем, каждой из которых соответствует одно пространство имен XML. При создании подписи XML-документа или вычислении значения HMAC в соответствии с настоящими рекомендациями должен использоваться следующий идентификатор основного пространства имен XML (точка в конце предложения не является частью идентификатора): urn:ietf:params:xml:ns:cpxmlsec. Остальные пространства имен являются внешними, и их идентификаторы указываются дополнительно в заголовке XML-схемы.
Примечание - Пространство имен XML однозначно соответствует одной XML-схеме, таким образом, употребление в тексте названия XML-схемы идентифицирует также соответствующее пространство имен. Названия XML-схем представлены в таблице 1.
Таблица 1
Примечание - В настоящих рекомендациях XS-схема является вспомогательной и применяется для описания определений из других XML-схем. Поэтому определения элементов XS-схемы в данных рекомендациях не приводятся.
Чтобы исключить пересечения одноименных элементов из различных пространств имен XML, в настоящих рекомендациях XML-элементы из различных XML-схем помечены с помощью префиксов, определенных в таблице 1. Каждый из предложенных в таблице 1 префиксов для своего пространства имен выбран произвольно и может быть заменен иным во всех элементах без изменения семантической значимости XML-документа.
Указание пространств имен XML и префиксов в XML-документе не должно иметь разрывов строк и пробелов.
Пример заголовка CPXMLSEC-схемы для использования с определениями остальных XML-схем, приведенными в разделе 6 настоящих рекомендаций:
Элемент 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-схемы.
Полное описание всех дочерних элементов элемента 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-схемы.
Полное описание элемента ds:SignedInfo представлено в [1].
Элемент 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-схемы.
Полное описание элемента ds:Reference представлено в [1].
Элемент ds:DigestMethod является дочерним элементом элемента ds:Reference и имеет атрибут Algorithm, содержащий идентификатор алгоритма хэширования данных, указанных в атрибутах элемента ds:Reference.
Идентификаторы российских криптографических алгоритмов хэширования и правила их включения в элемент ds:DigestMethod описаны в 7.1.1.
Элемент ds:DigestMethod описывается следующим определением XML-схемы.
Полное описание элемента ds:DigestMethod представлено в [1].
Элемент ds:DigestValue является дочерним элементом элемента ds:Reference и должен содержать значение хэш-кода, представленное в соответствии с 7.1.1. Значение хэш-кода должно быть вычислено от данных, указанных в атрибутах элемента ds:Reference, описанного в 6.1.2.
Элемент ds:DigestValue описывается следующим определением XML-схемы.
Элемент ds:SignatureValue является дочерним элементом элемента ds:Signature и должен содержать значение электронной подписи XML-документа или значение HMAC.
Содержимое элемента ds:SignatureValue при использовании российских криптографических алгоритмов подписи и хэширования описано в 7.1.2.
Содержимое элемента ds:SignatureValue при использовании российских криптографических алгоритмов вычисления HMAC описано в 7.2.
Элемент ds:SignatureValue описывается следующим определением XML-схемы.
Полное описание элемента 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-схемы.
Полное описание элемента 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-схемы.
Полное описание элемента ds:KeyValue представлено в [1].
Элементы 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>
Элемент ds:RetrievalMethod является дочерним элементом элемента ds:KeyInfo и позволяет дать ссылку на ключевую информацию, которая располагается в месте, отличном от подписываемого XML-документа. Для этого используются его атрибуты URI и Туре.
Элемент ds:RetrievalMethod имеет дочерний элемент ds:Transforms, используемый для преобразования данных, на которые указывают атрибуты элемента ds:RetrievalMethod.
Элемент ds:RetrievalMethod описывается следующим определением XML-схемы.
Полное описание элементов 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].
Элемент dsig11:DEREncodedKeyValue является расширением определения XML-схемы элемента ds:KeyInfo, описанного в 6.3, и позволяет передать ключ проверки подписи. Требования к содержимому элемента dsig11:DEREncodedKeyValue описаны в 7.3.1.
Элемент dsig11:DEREncodedKeyValue описывается следующим определением XML-схемы.
<!-- targetNamespace="/template/go.php?url=https://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].
В данном разделе настоящих рекомендаций устанавливаются требования к содержимому элементов, описываемых в разделе 6, и его представлению при использовании российских государственных криптографических алгоритмов подписи, хэширования и вычисления HMAC.
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 бит:
Значение 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 бит:
Значение 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:
Значение 256-битного хэш-кода, представленного в виде последовательности из 32 байт в порядке little-endian и в кодировке base64, должно быть помещено в содержимое элемента ds:DigestValue.
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 бит:
Значение подписи, сформированное в соответствии с алгоритмом, определенным в ГОСТ Р 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 бит:
Значение подписи, сформированное в соответствии с алгоритмом, определенным в ГОСТ Р 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:
Значение подписи, сформированное в соответствии с алгоритмом, определенным в ГОСТ Р 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 бит:
Результат работы алгоритма 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 бит:
Результат работы алгоритма HMAC_GOSTR3411_2012_512, определенного в Р 50.1.113-2016, пункт 4.1.2, должен быть представлен в виде последовательности из 64 байт в порядке little-endian в кодировке base64 и помещен в элемент ds:SignatureValue.
Для передачи информации о ключевом материале алгоритмов, определенных в ГОСТ Р 34.10-2012 и в ГОСТ Р 34.10-2001, подраздел 6.1, могут быть использованы любые подходящие способы, определенные в [1]. Настоящие рекомендации дополнительно определяют способ передачи ключей проверки подписи алгоритма ГОСТ Р 34.10-2012 в элементе dsig11:DEREncodedKeyValue, описанном в 6.3.4, и в дочерних элементах элемента ds:KeyValue, описанного в 6.3.1.
Настоящие рекомендации устанавливают возможность передачи ключа проверки подписи, соответствующего алгоритму ГОСТ Р 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:
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:
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:
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-схема, содержащая названия элементов и атрибутов, используемые пространства имен XML и типы данных, устанавливаемые настоящими рекомендациями.
<?xml version="1.0" encoding="windows-1251"?>
<!-- Declare helper entities to avoid overrunning right margin of text
while importing
schemata.-->
<!DOCTYPE schema [
<!ENTITY xmldsiguri
"/template/go.php?url=https://www.w3.org/TR/2008/REC-xmldsig-core-20080610">
]>
<xs:schema
xmlns:cpxmlsec="urn:ietf:params:xml:ns:cpxmlsec"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema"
xmlns:dsig11="/template/go.php?url=https://www.w3.org/2009/xmldsig11#"
targetNamespace="urn:ietf:params:xml:ns:cpxmlsec"
element FormDefault="qualified"
version="0.4">
<xs:import namespace="/template/go.php?url=https://www.w3.org/2000/09/xmldsig#"/>
<xs:import namespace="/template/go.php?url=https://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-документ в кодировке base64 выглядит следующим образом:
Б.2 Подпись XML-документа с использованием алгоритма, определенного в ГОСТ Р 34.10-2012, с длиной хэш-кода 512 бит в элементе DigestMethod
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018, приложение А.
Координата x ключа проверки подписи сертификата равна:
Координата y равна:
Соответствующий ключ подписи d равен:
Число k равно:
Число
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="windows-1251"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="/template/go.php?url=https://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="/template/go.php?url=https://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="/template/go.php?url=https://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 выглядит следующим образом:
Б.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="windows-1251"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="/template/go.php?url=https://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod
Algorithm="/template/go.php?url=https://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="/template/go.php?url=https://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 выглядит следующим образом:
Для создания подписи XML-документа, представленного в данном примере, был использован сертификат, полностью идентичный сертификату в Р 1323565.1.023-2018, приложение А.
Координата x ключа проверки подписи сертификата равна:
0x971566CEDA436EE7678F7E07E84EBB7217406C0B4747AA8FD2AB1453C3D0DFBA
Координата y равна:
0xAD58736965949F8E59830F8DE20FC6C0D177F6AB599874F1E2E24FF71F9CE643
Соответствующий ключ подписи d равен:
0xBFCF1D623E5CDD3032A7C6EABB4A923C46E43D640FFEAAF2C3ED39A8FA399924
Число k равно:
0x5782C53F110C596F9155D35EBD25A06A89C50391850A8FEFE33B0E270318857C
Число
0x054D1DABB161D63424F8DABB2800708B00F78DA7582699E8F2F0A521C7CE8144
Подписанный XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="windows-1251"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="/template/go.php?url=https://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="/template/go.php?url=https://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="/template/go.php?url=https://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 выглядит следующим образом:
Б.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="windows-1251"?>
<root>
<DataToSign Id="ToSign">Data</DataToSign>
<Signature xmlns="/template/go.php?url=https://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="/template/go.php?url=https://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="/template/go.php?url=https://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="/template/go.php?url=https://www.w3.org/2009/xmldsigll#">JMGYwHwYIKoUDB
wEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIDQwAEQLrf0MNTFKvSj6pHRwtsQBdyu07oB36PZ+d
uQ9rOZhWXQ+acH/dP4uLxdJhZq/Z30cDGD+KND4NZjp+UZWlzWK0=
</DEREncodedKeyValue>
</KeyInfo>
</Signature>
</root>
Подписанный XML-документ в кодировке base64 выглядит следующим образом:
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/prikaz/66/r_45114.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||