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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline egor_bon  
#1 Оставлено : 30 августа 2013 г. 21:00:47(UTC)
egor_bon

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

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

Сказал(а) «Спасибо»: 1 раз
Доброго времени суток.
Столкнулись с проблемой валидации полученной подписи на сервисе Минкомсвязи http://195.245.214.33:7777/esv/SignatureTool.asmx?wsdl (документация на http://smev.gosuslugi.ru сервис SID0003318).
Валидацию даже не проходит сгенерированная подпись из примера "Создание и проверка подписи документа XML по шаблону" документации.
Выдает ошибку - "Входные данные не являются подписанным сообщением".
После ряда экспериментов было выявлено, что проблема похоже в xml:id, т.е. если указывать просто id (без намспэйса xml) возвращается уже ошибка "Электронная подпись недействительна" (что логично из-за удаления префикса xml:).
С другой стороны, при попытке подписать тэг с аттрибутом id (без намспэйса xml) приводит к ошибке при подписи:
An error was encountered while processing an XML digital signature. (0x800705BA)
При этом, если использовать вариант без ссылки на подписываемый элемент ( <Reference URI="">) - то все подписывается и валидируется на данном сервисе.
Есть ли выход из данной ситуации?
Offline Максим Коллегин  
#2 Оставлено : 30 августа 2013 г. 23:32:23(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Каким методом проверяете?
и зачем namespace xml?

Отредактировано пользователем 30 августа 2013 г. 23:34:40(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline egor_bon  
#3 Оставлено : 31 августа 2013 г. 14:52:52(UTC)
egor_bon

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

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

Сказал(а) «Спасибо»: 1 раз
Проверяем методом VerifyXMLSignature сервиса Минкомсвязи.
Namespace xml для аттрибута id подписываемого элемента устанавливаем как в примере "Создание и проверка подписи документа XML по шаблону" документации по КриптоПро ЭЦП Browser plugin.
Если namespace не указать, то при подписи происходит ошибка - An error was encountered while processing an XML digital signature. (0x800705BA)
Offline Новожилова Елена  
#4 Оставлено : 3 сентября 2013 г. 14:47:53(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Здравствуйте! Можете выложить документ?
Offline egor_bon  
#5 Оставлено : 3 сентября 2013 г. 17:33:29(UTC)
egor_bon

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

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте, Елена.

В документации по метод рекомендациям СМЭВ версии 2.5.6 написано:

Значение подписи должно рассчитываться для содержимого элемента
smev:AppData и его составных элементов. При этом для привязки подписи к элементу
smev:AppData используется атрибут Id.
<smev:AppData Id="AppData">...</smev:AppData>

Соответственно формируем такой шаблон для подписи и пытаемся его подписать:

Код:
  
  //... Создание oSignedXML

  var sContent = '<smev:AppData xmlns:smev="http://smev.gosuslugi.ru/rev120315" Id="AppData"><testA>A</testA><testB>B</testB><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="#AppData"><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></smev:AppData>';

 var sSignedMessage = "";
 try {
   oSignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE;
   oSignedXML.Content = sContent;
   sSignedMessage = oSignedXML.Sign(signContext.oSigner);
 } catch (err) {
   alert("Failed to create signature. Error: " + GetErrorMessage(err));
   return;
 }


Получаем ошибку: An error was encountered while processing an XML digital signature. (0x800705BA)

Если вместо аттрибута Id указываем xml:id, то подпись проходит успешно:
Код:
  
  //... Создание oSignedXML

  var sContent = '<smev:AppData xmlns:smev="http://smev.gosuslugi.ru/rev120315" xml:id="AppData"><testA>A</testA><testB>B</testB><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="#AppData"><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></smev:AppData>';

 var sSignedMessage = "";
 try {
   oSignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE;
   oSignedXML.Content = sContent;
   sSignedMessage = oSignedXML.Sign(signContext.oSigner);
 } catch (err) {
   alert("Failed to create signature. Error: " + GetErrorMessage(err));
   return;
 }


Получаем такой подписанный документ:
Код:

<smev:AppData xmlns:smev="http://smev.gosuslugi.ru/rev120315" xml:id="AppData"><testA>A</testA><testB>B</testB><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="#AppData"><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>ALV4HdPCUpzciIaPRi3pn46zz2ARIG1wjlrS1wWYkso=</DigestValue></Reference></SignedInfo><SignatureValue>M4MUtOrGkX0h4XA9/rTnDREz8VdkCN0x4ztFH+xouenVz/HbS6yZD4nrCSA77HmT
zt4HDgP0KdOJzo3JYq6VRA==</SignatureValue><KeyInfo><X509Data>
<X509Certificate>MIIDODCCAuegAwIBAgIKbF1PdwACAASa9jAIBgYqhQMCAgMwZTEgMB4GCSqGSIb3
DQEJARYRaW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpD
UllQVE8tUFJPMR8wHQYDVQQDExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTEz
MDcxMTA4NDE0NloXDTE0MTAwNDA3MDk0MVowdzEdMBsGCSqGSIb3DQEJARYOdGVz
dG92QHRlc3Quc3UxDzANBgNVBAMMBlRlc3RvdjEMMAoGA1UECwwDRGV2MQwwCgYD
VQQKDANLQ0sxDjAMBgNVBAcMBVBlbnphMQwwCgYDVQQIDANQTloxCzAJBgNVBAYT
AlJVMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQBJFqTF0M3cV
GSly5M9A6/5OobSMDsmSqLNwodfdKdmdu0wA84HMmrqPzC4qxq9SSq8tmnvvE96t
5bOQ2fCf6cSjggFjMIIBXzAOBgNVHQ8BAf8EBAMCBPAwEwYDVR0lBAwwCgYIKwYB
BQUHAwIwHQYDVR0OBBYEFAjX+bzAZTmIM+zSd76pk3vkSp2CMB8GA1UdIwQYMBaA
FG2PXgXZX6yRF5QelZoFMDg3ehAqMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93
d3cuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvVGVzdCUyMENlbnRlciUyMENSWVBU
Ty1QUk8oMikuY3JsMIGgBggrBgEFBQcBAQSBkzCBkDAzBggrBgEFBQcwAYYnaHR0
cDovL3d3dy5jcnlwdG9wcm8ucnUvb2NzcG5jL29jc3Auc3JmMFkGCCsGAQUFBzAC
hk1odHRwOi8vd3d3LmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3BraS1zaXRlX1Rl
c3QlMjBDZW50ZXIlMjBDUllQVE8tUFJPKDIpLmNydDAIBgYqhQMCAgMDQQB+vev8
KCxhq1fqxzV3drVnrPIzcVxodVMLi37WpjrTKgRGGk3kbOiB4LOsuaKNfVnfE2Ye
Z2mt/E3QFkouxd1m</X509Certificate>
</X509Data></KeyInfo></Signature></smev:AppData>


Но он не проходит валидацию на сервисе Минкомсвязи http://195.245.214.33:7777/esv/SignatureTool.asmx?wsdl (документация на http://smev.gosuslugi.ru сервис SID0003318)
методом VerifyXMLSignature. Результат:
Код:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <VerifyXMLSignatureResponse xmlns="http://esv.server.rt.ru">
         <VerifyXMLSignatureResult>
            <Code>2</Code>
            <Description>Входные данные не являются подписанным сообщением</Description>
         </VerifyXMLSignatureResult>
      </VerifyXMLSignatureResponse>
   </soap:Body>
</soap:Envelope>


Т.е. получается, что плагин не может подписать элемент с аттрибутом Id( только с xml:id), а в свою очередь сервис проверки не может проверить документ с аттрибутом xml:id .
Получается патовая ситуация.

Пытаемся уже сформировать подпись вручную (с расчетом хэша и отдельно подписи), но столкнулись с другой проблемой метод oRawSignature.SignHash требует на вход
oCertificate, а не oSigner. А нам нужно подписать сразу несколько документов, и чтобы пароль не вводить каждый раз по вашему совету использовали OSigner.KeyPin .
А тут получается нужно будет каждый раз вводить пароль.

Очень надеемся на Вашу помощь.
Offline Новожилова Елена  
#6 Оставлено : 3 сентября 2013 г. 18:37:36(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Здравствуйте!
Насколько я помню, атрибут Id для подписи СМЭВ должен иметь пространство имен http://docs.oasis-open.o...ecurity-utility-1.0.xsd. Пример создания подписи сообщений для СМЭВ (с атрибутом Id) можно посмотреть здесь: http://cpdn.cryptopro.ru...mples-sign-xml-smev.html

Кстати, на сайт выложена новая версия плагина.
Offline egor_bon  
#7 Оставлено : 3 сентября 2013 г. 20:31:31(UTC)
egor_bon

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

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

Сказал(а) «Спасибо»: 1 раз
В предыдущем посте Вы описали подпись ИС(информационной системы), которая как Вы правильно заметили соответствует стандарту OASIS Standard 200401. Она накладывается на весь soap Body.
Но в СМЭВ еще используются подписи физических лиц, которыми подписываются вложения(в бинарном формате) и xml-блок AppData (в формате xmldsig).
Выдержка из документации по метод рекомендациям СМЭВ версии 2.5.6 о подписи физических лиц:
Значение подписи должно рассчитываться для содержимого элемента
smev:AppData и его составных элементов. При этом для привязки подписи к элементу
smev:AppData используется атрибут Id.
<smev:AppData Id="AppData">...</smev:AppData>

Подпись ИС ставится на сервере, а вот подпись физического лица - на клиенте. Но как уже было описано выше - сделать это в нужном для СМЭВ виде плагин не может:
При подписи с привязкой к элементу <smev:AppData Id="AppData"> (в Reference указываем URI="#AppData") происходит ошибка - An error was encountered while processing an XML digital signature. (0x800705BA).
Offline Новожилова Елена  
#8 Оставлено : 10 сентября 2013 г. 14:05:05(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Здравствуйте! Проблему воспроизвели, будем смотреть, что можно сделать.
Offline Новожилова Елена  
#9 Оставлено : 9 декабря 2013 г. 18:43:55(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
С атрибутами id непростая ситуация. В спецификации явно не написано, должен ли атрибут называться "Id" или "id".
Поэтому следует явно указать, какой именно атрибут Id вы будете использовать.

Это можно сделать через DTD:
Код:
<!ATTLIST someElement Id ID #IMPLIED>


В вашем случае в начало документа нужно добавить что-то такое:
Код:
<!DOCTYPE test [<!ATTLIST smev:AppData Id ID #IMPLIED>]>


Либо можно использовать атрибут xml:id, см. http://www.w3.org/TR/xml-id/
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.