Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Nicky711  
#1 Оставлено : 26 мая 2018 г. 21:35:01(UTC)
Nicky711

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.05.2018(UTC)
Сообщений: 8
Российская Федерация

Есть спецификация на формирование документов для отправки в РПН: https://docs.fsrpn.ru/tech_specs.rtf

Цитата:
Блок подписи размещается как дочерний для элемента DATA_PACKET_NI, на одном уровне с прикладными данными.
Значение подписи должно рассчитываться для содержимого элемента DATA_PACKET_NI и его составных элементов.

В процессе создания электронной подписи информационной системы должны использоваться следующие алгоритмы для расчета хеш-сумм, формирования подписи и каноникализации:
Расчет хэш-сумм: ГОСТ Р 34.11-94, http://www.w3.org/2001/04/xmldsig-more#gostr3411
Формирования подписи: ГОСТ Р 34.10-2001, http://www.w3.org/2001/0...#gostr34102001-gostr3411
Каноникализация: Exclusive XML Canonicalization от 18 July 2002, http://www.w3.org/2001/10/xml-exc-c14n#

Формирование блока электронной подписи, соответствующей блоку структурированных данных осуществляется в следующем порядке:
1. Формирование шаблона документа:
1.1. Создается элемент Signature;
1.2. К элементу Signature добавляется дочерний элемент SignedInfo;
1.3. К элементу SignedInfo добавляется дочерний элемент CanonicalizationMethod;
1.4. К элементу SignedInfo добавляется дочерний элемент SignatureMethod;
1.5. К элементу SignedInfo добавляется первый дочерний элемент Reference;
1.6. К элементу Reference добавляется дочерний элемент Transforms;
1.7. К элементу Transforms элемента Reference добавляется дочерний элемент Transform (два элемента);
1.8. К элементу Reference добавляется элемент DigestMethod;
1.9. К элементу Reference добавляется элемент DigestValue;
1.10. К элементу Signature добавляется дочерний элемент SignatureValue;
1.11. К элементу Signature добавляется дочерний элемент KeyInfo;
1.12. К элементу KeyInfo добавляется дочерний элемент X509Data;
1.13. К элементу X509Data добавляется дочерний элемент X509Certificate.
2. Установка предопределенных значений
2.1. Для элемента CanonicalizationMethod и для второго элемента Transform элемента Reference значения атрибута Algorithm устанавливается в «http://www.w3.org/2001/10/xml-exc-c14n#».
Для первого элемента Transform алгоритм выставляется значение "http://www.w3.org/2000/09/xmldsig#enveloped-signature".
2.2. Для элементов DigestMethod первого значения атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr3411".
2.3. Для элемента SignatureMethod значение атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411".
2.5. Атрибут URI элемента Reference оставляем пустым
3. Установка подписи
3.1. Открытый ключ подписи, закодированный по алгоритму «http://www.w3.org/2000/09/xmldsig#base64», после удаления символов не входящих в алфавит Base64, добавляется к элементу X509Certificate как дочерний текстовый узел.
3.2. Подписывается документ, далее полученное значение кодируется по алгоритму «http://www.w3.org/2000/09/xmldsig#base64» и добавляется как дочерний текстовый узел к элементу DigestValue первого элемента Reference.
3.3. Элемент SignedInfo трансформируется в соответствии с алгоритмом «http://www.w3.org/2001/10/xml-exc-c14n#». Затем на основании полученной строки и ключа подписи формируется значение ЭП в соответствии с алгоритмом «http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411». Полученное значение ЭП кодируется в соответствии с алгоритмом «http://www.w3.org/2000/09/xmldsig#base64», символы не входящие в алфавит Base64 удаляются и полученное значение добавляется как дочерний текстовый узел к элементу SignatureValue.

Во вложении открытый ключ для шифрования (rpn.cer) и корневой сертификат УЦ (adi.cer)

Для шифрование файлов используется ГОСТ 28147-89 (симметричное шифрование) и DER-кодировка.




Реализовано с использованием Crypto API на Delphi. Исходники: TestSign.zip (9kb) загружен 44 раз(а). (собираются в Delphi 2007 и выше, нужен JwaWinCrypt.pas из jedi)
Подписанный файл проходит валидацию на dss.cryptopro.ru/Verify/Verify/
На сервисе Росприроднадзора (https://lk.fsrpn.ru/#/reporting/list) зашифрованный файл успешно расшифровывается, но при проверке подписи происходит ошибка.

Нужна помощь.

Подписанный xml выглядит примерно так:
Код:
<?xml version="1.0" encoding="utf-8"?>
<DATA_PACKET_NI Version="1.6" Program="" INN="" KPP="" OGRN="" ..........>
    <ORG_INFO>
       ..................
    </ORG_INFO><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</DATA_PACKET_NI>

Отредактировано пользователем 27 мая 2018 г. 11:48:10(UTC)  | Причина: Не указана

Offline xK0te  
#2 Оставлено : 18 июля 2018 г. 14:26:02(UTC)
xK0te

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.06.2018(UTC)
Сообщений: 1

добрый день, получилось ли исправить проблему?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.