Подписание и проверка электронной цифровой подписи бизнес-сообщений

Формирование и проверка ЭЦП осуществляется в порядке, установленном законодательством Республики Казахстан.

Для формирования ЭЦП БВУ-участники должны использовать регистрационные свидетельства, выпускаемые УЦ АО «НПК». Подробная информация по выпуску регистрационных свидетельств, описания технических аспектов алгоритмов подписания, а также корневые сертификаты УЦ АО «НПК» доступны по ссылке https://npck.kz/udostoveryayushhij-czentr

Для работы с регистрационными свидетельствами УЦ АО «НПК» БВУ-участнику необходимо использовать программное средство криптографической защиты информации «ТУМАР-CSP». При необходимости, сотрудниками АО «НПК» обеспечивается консультационная поддержка по вопросам выпуска и применения регистрационных свидетельств, а также инструкции по установке и настройке ПО «ТУМАР-CSP».

По запросу может быть предоставлен проект (пример) подписания и проверки подписи на Kotlin, а также docker-контейнер с реализованным подписанием и проверкой подписи для запуска, что позволит упростить процесс реализации работы с ЭЦП.

Для этого необходимо обратиться к Сагадиеву Адилбеку (sagadiyev.a@kisc.kz)

Важно! Предоставляемые примеры кода и сервисы (в Docker-контейнере) являются вспомогательными (необязательными к использованию). Они предназначены для ознакомления и упрощения начала работы с ЭЦП, АО «НПК» не несет ответственности за их корректную работу, эффективность и производительность. Не рекомендуем использовать данный сервис в production среде.

Рекомендуется самостоятельно реализовать полноценную работу с ЭЦП на стороне банка.

Подписание сообщения

Бизнес-часть всех сообщений подписывается в обязательном порядке.

Данные подписываются, применяя алгоритм подписания СТ РК ГОСТ Р 34.10-2015 (512).

После выполнения подписи xml файла - его НЕЛЬЗЯ форматировать, нужно отправлять неизмененным.

Иначе подпись будет невалидна и будет возвращен HTTP-статус 401

Подписание бизнес части сообщения осуществляется посредством XML-подписи (XML-Signature) по спецификации консорциума W3C XMLDSIG (XML-Signature Syntax and Processing). Полученный результат помещается в теге <Document> → <Signature>.

Структуру подписи сообщения описывает таблица ниже.

ПолеОписание

Signature

Подпись сообщения

SignedInfo

Сведения о подписи: включает в себя алгоритм канонизации, алгоритм подписи и один или несколько элементов Reference

CanonicalizationMethod

Метод канонизации (определяет конкретный набор правил для упрощения и структурирования экземпляра XML до подписания)

SignatureMethod

Алгоритм, используемый для создания подписи.

Данные подписываются, применяя алгоритм подписания СТ РК ГОСТ Р 34.10-2015 (512)

Reference

Определяет данные, которые подписываются, и содержит информацию о них, такую как URI (или хэш) подписываемых данных и информацию о применяемом алгоритме хэширования

Содержит алгоритм формирования цифровой подписи, список преобразований, может содержать идентификатор подписываемого объект

Transforms

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

DigestMethod

Определяет алгоритм хэширования, который используется для создания хэш-значения для данных, подлежащих подписи

DigestValue

Элемент содержит само значение хэша, которое было вычислено для данных, указанных в элементе Reference. Значение хэша представляет собой результат применения алгоритма хэширования (определенного в элементе DigestMethod) к подписываемым данным

SignatureValue

Это значение, полученное путем применения алгоритма подписи к канонизированным данным, подписанным закрытым ключом. Это элемент, содержащий фактическое значение подписи

KeyInfo

Этот элемент содержит информацию о ключе, используемом для создания подписи.

X509Data

Идентификатор ключа или сертификат X509 (идентификатор сертификата или список отозванных сертификатов)

X509Certificate

Сертификат, закодированный в base64.

Пример подписи:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Document
	xmlns:ns0="urn:iso:std:iso:20022:tech:xsd:xxx.nnn.nnn.nn">
	<!-- Содержимое сообщения -->
	<ds:Signature
		xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
		<ds:SignedInfo>
			<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
			<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:pkigovkz:xmlsec:algorithms:gostr34102015-gostr34112015-512"/>
			<ds:Reference URI="">
				<ds:Transforms>
					<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
					<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
				</ds:Transforms>
				<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:pkigovkz:xmlsec:algorithms:gostr34112015-512"/>
				<ds:DigestValue>5Db4igpZm5S0qUWJIta7W6T8YBOa8r...
</ds:DigestValue>
			</ds:Reference>
		</ds:SignedInfo>
		<ds:SignatureValue>ZvbD3pMlj9H2RXCxcV9/pcQ7Iayxgmz...
        </ds:SignatureValue>
		<ds:KeyInfo>
			<ds:X509Data>
				<ds:X509Certificate>MIIEtjCCBB6gAwIBAgIUYEeZfcJ...
</ds:X509Certificate>
			</ds:X509Data>
		</ds:KeyInfo>
	</ds:Signature>
</Document>

Проверка ЭЦП сообщений

Проверка подлинности ЭЦП сообщения осуществляется следующим образом:

  1. Извлекается регистрационное свидетельство из структуры заголовка бизнес-сообщения (из тега <Document> → <Signature> → <KeyInfo> → <X509Data> → <X509Certificate>).

  2. Извлеченное регистрационное свидетельство проверяется на то, что оно действительно выпущено промышленным УЦ АО «НПК».

Корневые регистрационные свидетельства УЦ доступны по ссылке https://npck.kz/sertifikaty/ (Корневые регистрационные свидетельства (сертификаты) УЦ НПК и список отозванных регистрационных свидетельств (сертификатов) пользователей УЦ НПК, Алгоритм ГОСТ 34.310-2015)

  1. Проверяется срок действия регистрационного свидетельства.

  2. Проверяется отозванность регистрационного свидетельства – должно быть не отозвано на момент подписи.

  3. Проверяются области использования ключа.

Для ЭЦП должны присутствовать области использования ключа Digital Signature, Non-Repudiation

  1. Проверяются политики применения ключа OID policy. OID политики будет предоставлен сотрудником АО «НПК» БВУ-участникам пилотного проекта до его начала.

  2. Проверяется алгоритм формирования подписи (подпись сформирована с применением алгоритма СТ РК ГОСТ Р 34.10-2015 (512)).

  3. Проверяется корректность электронной подписи.

  4. Подпись сформирована с использованием регистрационного свидетельства, полученного как описано в пункте 1. текущего раздела. Необходимо сверять открытый ключ в ЭЦП с системным. Системный открытый ключ будет предоставлен сотрудником АО «НПК» БВУ-участникам пилотного проекта до его начала.

Last updated