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

Уведомление

Icon
Error

4 Страницы«<234
Опции
К последнему сообщению К первому непрочитанному
Offline DonCossack  
#61 Оставлено : 24 февраля 2020 г. 12:04:42(UTC)
DonCossack

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!
У меня получилось подписать блок xml, когда убрал из него все символьные узлы, оставив один с типом integer. Выход не очень, конечно, но работает : Сначала я изменяю в системе данные в с полным блоком xml без подписи, а потом формирую запрос с подписью с одним узлом integer.
Попробуйте сформировать запрос с пустым блоком xml и проверить его на сайте. Если пройдет, то дело в блоке body. Пример рабочего запроса постараюсь выложить завтра
Online two_oceans  
#62 Оставлено : 25 февраля 2020 г. 4:48:40(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,128
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 75 раз
Поблагодарили: 257 раз в 241 постах
Автор: angora Перейти к цитате
Добрый день. Тоже бьемся с подписью XML. Проверка justsign.me говорит что подпись недействительна.
GetHashStream взят из приведенных выше примеров кода, разве что константы алгоритмов заменены на PROV_GOST_2012_256 (80) и ALG_SID_GR3411_2012_256 (33)

Далее куски кода взяты миксом из ранее приведенных в треде, и из предоставленного поставщиком услуги файла примера (который кстати проходит валидацию, разве что ругается что сертификат кривой):
...
Судя по коду, с каноникализацией там не все гладко, но оригинальный-то файл проверку проходит !

Дайджест проверил, вроде результат как совпадает и с cpverify, и с vipnethashcalc
Есть у кого мысли, в чем дело может быть, где нестыковка ?
Добрый день. Нестыковок может быть миллион. Пример, который подписан кем-то скорее всего проходил через каноникализацию, а тут в теме в основном все полагаются на то, что каноникализация уже выполнена при генерации кода. У Вас много объявлений пространств в самом конверте - некоторые из них при каноникализации спустятся в Body, причем в разные места. Кроме того, хэш от SignedInfo нигде в файле не фигурирует, но из него идет значение SignatureValue (которое каждый раз разное, то есть проверить простым сравнением не получится) и проблема может оказаться именно в SignedInfo при совпадении хэшей. Или текст может портится уже после того как Вы посчитали хэш утилитами - такое в этой теме тоже было.

Приложите пожалуйста файл, который не проходит проверку. По частичному коду вряд ли кто разберет что там вообще происходит, да и собственно само Body не приведено. Ниже отмечу 2 пункта, которые вроде бы и не должны влиять на проверку ЭП, но как информация к размышлению.

1. Особенно мне нравится что Signature с префиксом ds, а ее "внутренности" SignedInfo SignatureValue KeyInfo без префикса (и соответственно с лишним объявлением пространства, обратите внимание что для SignedInfo объявление нужно, но для других пропускается если одинаковый префикс). Ясно, половину скопировали из одного источника, половину из другого. Использование в одной подписи разных префиксов конечно не запрещено (формально не должно повлиять), но сужает количество сервисов в которых файл пройдет проверку, так как некоторые сервисы могут закэшировать префикс от тега Signature (как у меня в программе было раньше) и внезапно не найти нужных "внутренностей" с таким префиксом в подписи. Если Вам прям позарез не надо разные префиксы, постарайтесь не менять их в пределах одной подписи.

2. Интересно что в подписи появился трансформ enveloped-signature. Для справки: подпись в документе xml по положению тега Signature и подписываемого тега может быть enveloped (подпись внутри подписываемого тега), enveloping (подписываемый тег внутри подписи), detached (подпись и подписываемый тег независимы, подпись может быть как в этом же документе, так и в другом). трансформ enveloped-signature удаляет подпись из подписанного тега при проверке. Способ с помещение подписи в тег Security - это вариант detached, при нем не нужен трансформ enveloped-signature (удалять нечего). Это все наводит на мысль, что на самом деле либо а) Вам нужен другой способ прикрепления подписи в Body либо б) трансформ лишний либо в) в документе будет несколько подписей и трансформ удаляет другую подпись.

Отредактировано пользователем 25 февраля 2020 г. 8:12:52(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
angora оставлено 25.02.2020(UTC)
Offline angora  
#63 Оставлено : 25 февраля 2020 г. 9:53:59(UTC)
angora

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: two_oceans Перейти к цитате
Нестыковок может быть миллион. Пример, который подписан кем-то скорее всего проходил через каноникализацию, а тут в теме в основном все полагаются на то, что каноникализация уже выполнена при генерации кода. У Вас много объявлений пространств в самом конверте - некоторые из них при каноникализации спустятся в Body, причем в разные места. Кроме того, хэш от SignedInfo нигде в файле не фигурирует, но из него идет значение SignatureValue (которое каждый раз разное, то есть проверить простым сравнением не получится) и проблема может оказаться именно в SignedInfo при совпадении хэшей. Или текст может портится уже после того как Вы посчитали хэш утилитами - такое в этой теме тоже было.


Добрый день. Спасибо за ответ.

Я уже с пакетом и так, и сяк. В том варианте что привел - тело взято в том виде, как оно в примере от поставщика услуги.
Что касается дублирования префиксов, то все равно не очень понятно что именно проходит каноникализацию - файл целиком или конкретный блок файла который подписывается.

В аттачах: req_Service1.xml - пример того самого пакета от поставщика услуги, который верифицируется
1.xml - мое художество для примера


Файлы аттачиться на форум не хотят, придется в теле класть

Вот это мой который кривой:
Код:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:rar="http://fns.smev.fsrar.ru/serviceLicSA/rev111111" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:smev="http://smev.gosuslugi.ru/rev111111" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><wsse:Security soap:actor="http://smev.gosuslugi.ru/actors/smev"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="SenderCertificate">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</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"></SignatureMethod><Reference URI="#body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform></Transforms><DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></DigestMethod><DigestValue>TZKHOfd9/OvDG2ze8aNfu5xP2AKvP9xY4r+ZOpMJwAg=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">lfgykMpNiQ+xKEk9PXmezh13KrujpZ7hI8YA/XrkD/3KbMJHoZ/B4DhcDfJXeuKc8PbANzbS2FreHEVZGSQxxQ==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><wsse:SecurityTokenReference><wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></KeyInfo></ds:Signature></wsse:Security></soap:Header><soap:Body wsu:Id="body">ABCDEFGH</soap:Body></soap:Envelope>


Вот рабочий из примера поставщика услуги:
Код:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:rar="http://fns.smev.fsrar.ru/serviceLicSA/rev111111" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:smev="http://smev.gosuslugi.ru/rev111111" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <wsse:Security soap:actor="http://smev.gosuslugi.ru/actors/smev">
      <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="SenderCertificate">MIIIMDCCB92gAwIBAgIRAeyQFwEaq+aeSE0sjLkHTL0wCgYIKoUDBwEBAwIwggFbMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGNyeXB0b3Byby5ydTEYMBYGBSqFA2QBEg0xMDM3NzAwMDg1NDQ0MRowGAYIKoUDA4EDAQESDDAwNzcxNzEwNzk5MTELMAkGA1UEBhMCUlUxGDAWBgNVBAgMDzc3INCc0L7RgdC60LLQsDEVMBMGA1UEBwwM0JzQvtGB0LrQstCwMS8wLQYDVQQJDCbRg9C7LiDQodGD0YnRkdCy0YHQutC40Lkg0LLQsNC7INC0LiAxODElMCMGA1UECgwc0J7QntCeICLQmtCg0JjQn9Ci0J4t0J/QoNCeIjFrMGkGA1UEAwxi0KLQtdGB0YLQvtCy0YvQuSDQv9C+0LTRh9C40L3QtdC90L3Ri9C5INCj0KYg0J7QntCeICLQmtCg0JjQn9Ci0J4t0J/QoNCeIiDQk9Ce0KHQoiAyMDEyICjQo9CmIDIuMCkwHhcNMTkxMjA1MTY0NzUyWhcNMjAwMzA1MTY1NzUyWjCB3DEZMBcGA1UECwwQ0KHQu9C10YHQsNGA0LrQsDEgMB4GA1UECgwX0J7QntCeINCg0LDQt9Cx0L7RgNC60LAxJTAjBgNVBAkMHNCi0LDQvCDQt9CwINCz0LDRgNCw0LbQsNC80LgxJjAkBgNVBAcMHdCh0LDQvdC60YIt0J/QtdGC0LXRgNCx0YPRgNCzMQswCQYDVQQGEwJSVTEVMBMGA1UEKgwM0JDQvdC00YDQtdC5MRcwFQYDVQQEDA7Qn9GD0LfQuNC60L7QsjERMA8GA1UEAwwIYW5kcnl1eGEwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARAf/lvaemjXiiTn3BS0SLVPkbUUt0BqgUjVlEZb3JE5l4lcLnGIxm5H7zAxsiCPmHBcLtwgSlGfQcyzPC3XSbjE6OCBO8wggTrMA4GA1UdDwEB/wQEAwID+DAfBgkrBgEEAYI3FQcEEjAQBggqhQMCAi4ACAIBAQIBADAdBgNVHQ4EFgQUrmsMyfwugYlkHNQ637h59BSmYh0wJgYDVR0lBB8wHQYIKwYBBQUHAwQGCCsGAQUFBwMCBgcqhQMCAiIGMDIGCSsGAQQBgjcVCgQlMCMwCgYIKwYBBQUHAwQwCgYIKwYBBQUHAwIwCQYHKoUDAgIiBjCBpwYIKwYBBQUHAQEEgZowgZcwOAYIKwYBBQUHMAGGLGh0dHA6Ly90ZXN0Y2EyMDEyLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMFsGCCsGAQUFBzAChk9odHRwOi8vdGVzdGNhMjAxMi5jcnlwdG9wcm8ucnUvYWlhL2ZmZTQ2ODYwOTJjOGVjODExMzE5YmI5NjM1ZTM1ODQxZjE4MTJkOWIuY3J0MB0GA1UdIAQWMBQwCAYGKoUDZHECMAgGBiqFA2RxATArBgNVHRAEJDAigA8yMDE5MTIwNTE2NDc1MlqBDzIwMjAwMzA1MTY0NzUyWjCCARoGBSqFA2RwBIIBDzCCAQsMNNCh0JrQl9CYICLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDQuMCkMMdCf0JDQmiAi0JrRgNC40L/RgtC+0J/RgNC+INCj0KYiINCy0LXRgNGB0LjQuCAyLjAMT9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQpC8xMjQtMzM4MCDQvtGCIDExLjA1LjIwMTgMT9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQpC8xMjgtMzU5MiDQvtGCIDE3LjEwLjIwMTgwLAYFKoUDZG8EIwwh0KHQmtCX0JggItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiMGAGA1UdHwRZMFcwVaBToFGGT2h0dHA6Ly90ZXN0Y2EyMDEyLmNyeXB0b3Byby5ydS9jZHAvZmZlNDY4NjA5MmM4ZWM4MTEzMTliYjk2MzVlMzU4NDFmMTgxMmQ5Yi5jcmwwggGXBgNVHSMEggGOMIIBioAU/+RoYJLI7IETGbuWNeNYQfGBLZuhggFdpIIBWTCCAVUxIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MRgwFgYFKoUDZAESDTEwMzc3MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMQswCQYDVQQGEwJSVTEYMBYGA1UECAwPNzcg0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxLzAtBgNVBAkMJtGD0LsuINCh0YPRidGR0LLRgdC60LjQuSDQstCw0Lsg0LQuIDE4MSUwIwYDVQQKDBzQntCe0J4gItCa0KDQmNCf0KLQni3Qn9Cg0J4iMWUwYwYDVQQDDFzQotC10YHRgtC+0LLRi9C5INCz0L7Qu9C+0LLQvdC+0Lkg0KPQpiDQntCe0J4gItCa0KDQmNCf0KLQni3Qn9Cg0J4iINCT0J7QodCiIDIwMTIgKNCj0KYgMi4wKYIRAdE5xgDlqVW1So99yFUKb2YwCgYIKoUDBwEBAwIDQQDAJAF46sTFkPzdzg6tr/O1isYTbu4nDrADnS5sGJ4u0rCPmzuUTcL+KelLyv5wN+6W3P/MxKAR7lrojvfTrzB8</wsse:BinarySecurityToken>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" /><Reference URI="#body"><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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" /><DigestValue>TrWguyPOPBv1+D/UZXVSHcMYpN0lkyfNv+G9VkGkcg4=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">U80EG+uX2+GXvRn/TeePS1IC4wTZUz0k8EXvNXwPlKOM39VF6wN+RXfjGELctXhw/oozpHbjEPwHTEjXQ6U6Zg==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><wsse:SecurityTokenReference><wsse:Reference URI="#SenderCertificate" /></wsse:SecurityTokenReference></KeyInfo></ds:Signature></wsse:Security>
  </soap:Header>
  <soap:Body wsu:Id="body">
    <rar:ServiceLicSA>
      <smev:Message>
        <smev:Sender>
          <smev:Name>Service Number One</smev:Name>
          <smev:Code>Service1</smev:Code>
        </smev:Sender>
        <smev:Recipient>
          <smev:Name>Service Number Two</smev:Name>
          <smev:Code>SRV000001</smev:Code>
        </smev:Recipient>
        <smev:Originator>
          <smev:Name>Service Number One</smev:Name>
          <smev:Code>Service1</smev:Code>
        </smev:Originator>
      </smev:Message>
      <smev:MessageData>
<smev:AppData>PD94bWwgdmVyc2lvbj0iMS4wIj8+PHF1ZXJ5IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGFjdGlvbj0iMSIgc2VuZGVyX3JlZ2lvbj0iMCIgdmVyc2lvbj0iMS4wMyI+PGluc2VydERhdGE+PHVuaXQ+PHVuaXRfaW5uPjcxNzgwMDIyMzE8L3VuaXRfaW5uPjx1bml0X2twcD4xMTAwMDAwMDY8L3VuaXRfa3BwPjxkZXRhaWxzPjxpc19wcmltYXJ5PmZhbHNlPC9pc19wcmltYXJ5Pjx1bml0X2Z1bGw+0KTQmNCQ0KEg0J/QvtC70L3QvtC1INC90LDQt9CyPC91bml0X2Z1bGw+PHVuaXRfYnJpZWY+ItCa0L7QvNC/0LDQvdC40Y8g0KTQmNCQ0KEiPC91bml0X2JyaWVmPjx1bml0X2VtYWlsPnNoYWFAbmlhYy5ydTwvdW5pdF9lbWFpbD48dW5pdF9waG9uZT4xMjM0NTc4PC91bml0X3Bob25lPjxhY3Rpdml0eV9mb3JtX2lkPjE8L2FjdGl2aXR5X2Zvcm1faWQ+PGlzX3ZpbF90b3duPnRydWU8L2lzX3ZpbF90b3duPjxpc193aXRob3V0X25ldD5mYWxzZTwvaXNfd2l0aG91dF9uZXQ+PGlzX2NhdGVyPmZhbHNlPC9pc19jYXRlcj48aXNFQTE2XzU+ZmFsc2U8L2lzRUExNl81Pjxsb2NhdGlvbj48eD4zMC4xMTExMTE8L3g+PHk+NjAuMTExMTExPC95PjwvbG9jYXRpb24+PC9kZXRhaWxzPjxmYWN0QWRkcmVzcz48cmVnaW9uX2NvZGU+YzJkZWIxNmEtMDMzMC00ZjA1LTgyMWYtMWQwOWM5MzMzMWU2PC9yZWdpb25fY29kZT48cmFpb25fY29kZT44Mzk5ODc0RC1GNzExLTRFQ0QtQjc3My01RUEyNEIzQkY3Rjk8L3JhaW9uX2NvZGU+PGNpdHlfY29kZT4xMTBkNmFkOS0wYjY0LTQ3Y2YtYTJlZS03ZTkzNTIyODc5OWM8L2NpdHlfY29kZT48cHVua3RfY29kZT5DMEUyRTZBRC05MTYxLTRBOUItOENEMy1CNTE5NEZFNTNGODc8L3B1bmt0X2NvZGU+PHN0cmVldF9jb2RlPmNmMWRjZTMzLWY4NDctNDRiNS05M2FkLWVlOGZhNjRjYmZmZDwvc3RyZWV0X2NvZGU+PGhvdXNlX2NvZGU+RDkwMTgwMEQtMDAzMy00ODc3LUE3RUYtRDFERTVCOUVBOEIwPC9ob3VzZV9jb2RlPjxyb29tX2NvZGU+RUU2RTgxNkYtODJCRC00M0FFLUE0RDgtMDAwMEI1RjQ1OEY2PC9yb29tX2NvZGU+PHJvb20+MTk2PC9yb29tPjwvZmFjdEFkZHJlc3M+PGxlZ2FsQWRkcmVzcz48cmVnaW9uX2NvZGU+YzJkZWIxNmEtMDMzMC00ZjA1LTgyMWYtMWQwOWM5MzMzMWU2PC9yZWdpb25fY29kZT48cmFpb25fY29kZT44Mzk5ODc0RC1GNzExLTRFQ0QtQjc3My01RUEyNEIzQkY3Rjk8L3JhaW9uX2NvZGU+PGNpdHlfY29kZT4xMTBkNmFkOS0wYjY0LTQ3Y2YtYTJlZS03ZTkzNTIyODc5OWM8L2NpdHlfY29kZT48cHVua3RfY29kZT5DMEUyRTZBRC05MTYxLTRBOUItOENEMy1CNTE5NEZFNTNGODc8L3B1bmt0X2NvZGU+PHN0cmVldF9jb2RlPmNmMWRjZTMzLWY4NDctNDRiNS05M2FkLWVlOGZhNjRjYmZmZDwvc3RyZWV0X2NvZGU+PGhvdXNlX2NvZGU+RDkwMTgwMEQtMDAzMy00ODc3LUE3RUYtRDFERTVCOUVBOEIwPC9ob3VzZV9jb2RlPjxyb29tX2NvZGU+RUU2RTgxNkYtODJCRC00M0FFLUE0RDgtMDAwMEI1RjQ1OEY2PC9yb29tX2NvZGU+PHJvb20+MTk2PC9yb29tPjwvbGVnYWxBZGRyZXNzPjwvdW5pdD48L2luc2VydERhdGE+PC9xdWVyeT4=</smev:AppData>
      </smev:MessageData>
    </rar:ServiceLicSA>
  </soap:Body>
</soap:Envelope>

Отредактировано пользователем 25 февраля 2020 г. 10:34:13(UTC)  | Причина: Не указана

Offline angora  
#64 Оставлено : 25 февраля 2020 г. 10:00:15(UTC)
angora

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: two_oceans Перейти к цитате
Добрый день. Нестыковок может быть миллион. Пример, который подписан кем-то скорее всего проходил через каноникализацию, а тут в теме в основном все полагаются на то, что каноникализация уже выполнена при генерации кода. У Вас много объявлений пространств в самом конверте - некоторые из них при каноникализации спустятся в Body, причем в разные места. Кроме того, хэш от SignedInfo нигде в файле не фигурирует, но из него идет значение SignatureValue (которое каждый раз разное, то есть проверить простым сравнением не получится) и проблема может оказаться именно в SignedInfo при совпадении хэшей. Или текст может портится уже после того как Вы посчитали хэш утилитами - такое в этой теме тоже было.



Добрый. Файлы напрочь не хотят аттачиться, летит ошибка в консоли и все.
enveloped-signature в итоге взят из примера поставщика услуги, который таки признается валидным

Вот файл который у меня получился (естественно в реальном файле все идет без пробелов и переводов строки)

Код:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:rar="http://fns.smev.fsrar.ru/serviceLicSA/rev111111" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:smev="http://smev.gosuslugi.ru/rev111111" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<wsse:Security soap:actor="http://smev.gosuslugi.ru/actors/smev">
			<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="SenderCertificate">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</wsse:BinarySecurityToken>
			<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
				<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
					<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
					<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
					<Reference URI="#body">
						<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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
						<DigestValue>TZKHOfd9/OvDG2ze8aNfu5xP2AKvP9xY4r+ZOpMJwAg=</DigestValue>
					</Reference>
				</SignedInfo>
				<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">lfgykMpNiQ+xKEk9PXmezh13KrujpZ7hI8YA/XrkD/3KbMJHoZ/B4DhcDfJXeuKc8PbANzbS2FreHEVZGSQxxQ==</SignatureValue>
				<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
					<wsse:SecurityTokenReference>
						<wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
					</wsse:SecurityTokenReference>
				</KeyInfo>
			</ds:Signature>
		</wsse:Security>
	</soap:Header>
	<soap:Body wsu:Id="body">ABCDEFGH</soap:Body>
</soap:Envelope>


Вот как бы рабочий пример поставщика:
Код:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:rar="http://fns.smev.fsrar.ru/serviceLicSA/rev111111" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:smev="http://smev.gosuslugi.ru/rev111111" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<wsse:Security soap:actor="http://smev.gosuslugi.ru/actors/smev">
			<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="SenderCertificate">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</wsse:BinarySecurityToken>
			<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
				<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
					<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
					<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" />
					<Reference URI="#body">
						<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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" />
						<DigestValue>TrWguyPOPBv1+D/UZXVSHcMYpN0lkyfNv+G9VkGkcg4=</DigestValue>
					</Reference>
				</SignedInfo>
				<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">U80EG+uX2+GXvRn/TeePS1IC4wTZUz0k8EXvNXwPlKOM39VF6wN+RXfjGELctXhw/oozpHbjEPwHTEjXQ6U6Zg==</SignatureValue>
				<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
					<wsse:SecurityTokenReference>
						<wsse:Reference URI="#SenderCertificate" />
					</wsse:SecurityTokenReference>
				</KeyInfo>
			</ds:Signature>
		</wsse:Security>
	</soap:Header>
	<soap:Body wsu:Id="body">
		<rar:ServiceLicSA>
			<smev:Message>
				<smev:Sender>
					<smev:Name>Service Number One</smev:Name>
					<smev:Code>Service1</smev:Code>
				</smev:Sender>
				<smev:Recipient>
					<smev:Name>Service Number Two</smev:Name>
					<smev:Code>SRV000001</smev:Code>
				</smev:Recipient>
				<smev:Originator>
					<smev:Name>Service Number One</smev:Name>
					<smev:Code>Service1</smev:Code>
				</smev:Originator>
			</smev:Message>
			<smev:MessageData>
				<smev:AppData>PD94bWwgdmVyc2lvbj0iMS4wIj8+PHF1ZXJ5IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGFjdGlvbj0iMSIgc2VuZGVyX3JlZ2lvbj0iMCIgdmVyc2lvbj0iMS4wMyI+PGluc2VydERhdGE+PHVuaXQ+PHVuaXRfaW5uPjcxNzgwMDIyMzE8L3VuaXRfaW5uPjx1bml0X2twcD4xMTAwMDAwMDY8L3VuaXRfa3BwPjxkZXRhaWxzPjxpc19wcmltYXJ5PmZhbHNlPC9pc19wcmltYXJ5Pjx1bml0X2Z1bGw+0KTQmNCQ0KEg0J/QvtC70L3QvtC1INC90LDQt9CyPC91bml0X2Z1bGw+PHVuaXRfYnJpZWY+ItCa0L7QvNC/0LDQvdC40Y8g0KTQmNCQ0KEiPC91bml0X2JyaWVmPjx1bml0X2VtYWlsPnNoYWFAbmlhYy5ydTwvdW5pdF9lbWFpbD48dW5pdF9waG9uZT4xMjM0NTc4PC91bml0X3Bob25lPjxhY3Rpdml0eV9mb3JtX2lkPjE8L2FjdGl2aXR5X2Zvcm1faWQ+PGlzX3ZpbF90b3duPnRydWU8L2lzX3ZpbF90b3duPjxpc193aXRob3V0X25ldD5mYWxzZTwvaXNfd2l0aG91dF9uZXQ+PGlzX2NhdGVyPmZhbHNlPC9pc19jYXRlcj48aXNFQTE2XzU+ZmFsc2U8L2lzRUExNl81Pjxsb2NhdGlvbj48eD4zMC4xMTExMTE8L3g+PHk+NjAuMTExMTExPC95PjwvbG9jYXRpb24+PC9kZXRhaWxzPjxmYWN0QWRkcmVzcz48cmVnaW9uX2NvZGU+YzJkZWIxNmEtMDMzMC00ZjA1LTgyMWYtMWQwOWM5MzMzMWU2PC9yZWdpb25fY29kZT48cmFpb25fY29kZT44Mzk5ODc0RC1GNzExLTRFQ0QtQjc3My01RUEyNEIzQkY3Rjk8L3JhaW9uX2NvZGU+PGNpdHlfY29kZT4xMTBkNmFkOS0wYjY0LTQ3Y2YtYTJlZS03ZTkzNTIyODc5OWM8L2NpdHlfY29kZT48cHVua3RfY29kZT5DMEUyRTZBRC05MTYxLTRBOUItOENEMy1CNTE5NEZFNTNGODc8L3B1bmt0X2NvZGU+PHN0cmVldF9jb2RlPmNmMWRjZTMzLWY4NDctNDRiNS05M2FkLWVlOGZhNjRjYmZmZDwvc3RyZWV0X2NvZGU+PGhvdXNlX2NvZGU+RDkwMTgwMEQtMDAzMy00ODc3LUE3RUYtRDFERTVCOUVBOEIwPC9ob3VzZV9jb2RlPjxyb29tX2NvZGU+RUU2RTgxNkYtODJCRC00M0FFLUE0RDgtMDAwMEI1RjQ1OEY2PC9yb29tX2NvZGU+PHJvb20+MTk2PC9yb29tPjwvZmFjdEFkZHJlc3M+PGxlZ2FsQWRkcmVzcz48cmVnaW9uX2NvZGU+YzJkZWIxNmEtMDMzMC00ZjA1LTgyMWYtMWQwOWM5MzMzMWU2PC9yZWdpb25fY29kZT48cmFpb25fY29kZT44Mzk5ODc0RC1GNzExLTRFQ0QtQjc3My01RUEyNEIzQkY3Rjk8L3JhaW9uX2NvZGU+PGNpdHlfY29kZT4xMTBkNmFkOS0wYjY0LTQ3Y2YtYTJlZS03ZTkzNTIyODc5OWM8L2NpdHlfY29kZT48cHVua3RfY29kZT5DMEUyRTZBRC05MTYxLTRBOUItOENEMy1CNTE5NEZFNTNGODc8L3B1bmt0X2NvZGU+PHN0cmVldF9jb2RlPmNmMWRjZTMzLWY4NDctNDRiNS05M2FkLWVlOGZhNjRjYmZmZDwvc3RyZWV0X2NvZGU+PGhvdXNlX2NvZGU+RDkwMTgwMEQtMDAzMy00ODc3LUE3RUYtRDFERTVCOUVBOEIwPC9ob3VzZV9jb2RlPjxyb29tX2NvZGU+RUU2RTgxNkYtODJCRC00M0FFLUE0RDgtMDAwMEI1RjQ1OEY2PC9yb29tX2NvZGU+PHJvb20+MTk2PC9yb29tPjwvbGVnYWxBZGRyZXNzPjwvdW5pdD48L2luc2VydERhdGE+PC9xdWVyeT4=</smev:AppData>
			</smev:MessageData>
		</rar:ServiceLicSA>
	</soap:Body>
</soap:Envelope>

Отредактировано пользователем 25 февраля 2020 г. 10:33:41(UTC)  | Причина: Не указана

Online two_oceans  
#65 Оставлено : 25 февраля 2020 г. 10:29:07(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,128
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 75 раз
Поблагодарили: 257 раз в 241 постах
Автор: angora Перейти к цитате
Добрый. Файлы напрочь не хотят аттачиться, летит ошибка в консоли и все.
enveloped-signature в итоге взят из примера поставщика услуги, который таки признается валидным

Вот файл который у меня получился (естественно в реальном файле все идет без пробелов и переводов строки)
Через файлообменник, например, или хотя бы через вставку кода чтобы страницу форума не перекашивало - наверху над сообщением справа от кнопки цитаты: кнопка "Выберите тип подсветки кода" - "Plain Text". Сейчас оба примера искажены и не проходят проверку. Хотя SignatureValue верное (если в SignedInfo выкинуть табуляции и переводы строк), но DigestValue не сходятся. Промежуточный вывод - неверное Body идет на вычисление хэша. Пример верного несколько сообщений выше, но если что вот с поправкой на Ваш тестовый запрос:
Код:
<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="body">ABCDEFGH</soap:Body>
Хэш: RuP7pvipMMoiFcFVCKnVePJwXSJSoNNvGvezdLnQN7M= вместо TZKHOfd9/OvDG2ze8aNfu5xP2AKvP9xY4r+ZOpMJwAg=

Отредактировано пользователем 27 февраля 2020 г. 7:01:26(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
angora оставлено 25.02.2020(UTC)
Offline angora  
#66 Оставлено : 25 февраля 2020 г. 10:35:15(UTC)
angora

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: two_oceans Перейти к цитате
Хэш: RrR9ig8k4ZisKhsMpmYIY7Iqb8yKv+l1MjFg1kJ9eV0= вместо TZKHOfd9/OvDG2ze8aNfu5xP2AKvP9xY4r+ZOpMJwAg=



Опс, то есть body тоже нужно все префиксы переносить ?
Online two_oceans  
#67 Оставлено : 25 февраля 2020 г. 10:42:54(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,128
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 75 раз
Поблагодарили: 257 раз в 241 постах
Автор: angora Перейти к цитате
Опс, то есть body тоже нужно все префиксы переносить ?
Конечно, фрагмент перед каноникализацией должен быть "самодостаточный", то есть содержать как минимум все объявления пространств имен, используемые во фрагменте (в именах тегов или атрибутов). При эксклюзивной каноникализации неиспользуемые будут выкинуты, используемые спущены вниз. В данном случае в soap:Body используется префикс soap, а в wsu:Id префикс wsu, Body самый верхний тег фрагмента (и эти стало быть префиксы нигде выше не объявлены), так что их требуется объявить. Если же где-то в потомках Body будет снова использован wsu, то объявление уже не требуется. Если пространство смэв будет использоваться ниже боди, то оно объявляется не в боди, а там где первый раз используется.
Еще интереснее когда теги одного уровня использующие один префикс, но выше префикс не был объявлен так что в каждом теге будет объявление.

Порядок объявлений префиксов в одном теге: по алфавиту по префиксам (не по адресу префикса). Объявления идут раньше других атрибутов, атрибуты с префиксами сортируются по алфавиту но не по самому префиксу, а по адресу для префикса, затем по локальному имени атрибута. Однако к счастью обычно такое редко встречается, большинство атрибутов без префиксов.

Отредактировано пользователем 25 февраля 2020 г. 10:54:44(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
angora оставлено 25.02.2020(UTC)
Offline angora  
#68 Оставлено : 25 февраля 2020 г. 14:23:54(UTC)
angora

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: two_oceans Перейти к цитате
Порядок объявлений префиксов в одном теге: по алфавиту по префиксам (не по адресу префикса). Объявления идут раньше других атрибутов, атрибуты с префиксами сортируются по алфавиту но не по самому префиксу, а по адресу для префикса, затем по локальному имени атрибута. Однако к счастью обычно такое редко встречается, большинство атрибутов без префиксов.


Ура, спасибо огромное, пакет подписался и прошел верификацию. Это видимо еще не последний бубен - теперь нужно обертку с заголовками делать, там прилетят еще префиксы, но свет уже виден.
Кстати дайджест у меня получился почему-то другой для тех же данных, но совпал с тем что выдает утилита vipnet.
Online two_oceans  
#69 Оставлено : 26 февраля 2020 г. 10:34:37(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,128
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 75 раз
Поблагодарили: 257 раз в 241 постах
Автор: angora Перейти к цитате
но свет уже виден. Кстати дайджест у меня получился почему-то другой для тех же данных, но совпал с тем что выдает утилита vipnet.
Пожалуйста. Меня порадовал Ваш оптимизм: без нормальной функции каноникализации уже видите свет.
Для справки - какое значение дайджеста получилось у Вас? Дайджест может отличаться порядком байт, у меня в программе дайджест без переворота, а значение подписи с переворотом. Если же копнуть поглубже, то похоже этот вариант не соответствует стандарту (так как без переворота как я ни вчитывался дайджест должен быть little endian, а стандарт предписывает подавать big endian на base64 кодирование). Однако с гост-2012 это почему-то не вызывает ошибки, я сдался и сделал "как все" чтобы проверять файлы.

UPD. Не буду новое сообщение писать, действительно получается хэш как у Вас. Скопировал похоже не из того файла, вот вывод консоли.
Код:
46E3FBA6F8A930CA2215C15508A9D578F2705D2252A0D36F1AF7B374B9D037B3
RuP7pvipMMoiFcFVCKnVePJwXSJSoNNvGvezdLnQN7M=

Отредактировано пользователем 27 февраля 2020 г. 7:02:12(UTC)  | Причина: Не указана

Offline angora  
#70 Оставлено : 26 февраля 2020 г. 12:19:24(UTC)
angora

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: two_oceans Перейти к цитате
Автор: angora Перейти к цитате
но свет уже виден. Кстати дайджест у меня получился почему-то другой для тех же данных, но совпал с тем что выдает утилита vipnet.
Пожалуйста. Меня порадовал Ваш оптимизм: без нормальной функции каноникализации уже видите свет.
Для справки - какое значение дайджеста получилось у Вас? Дайджест может отличаться порядком байт, у меня в программе дайджест без переворота, а значение подписи с переворотом. Если же копнуть поглубже, то похоже этот вариант не соответствует стандарту (так как без переворота как я ни вчитывался дайджест должен быть little endian, а стандарт предписывает подавать big endian на base64 кодирование). Однако с гост-2012 это почему-то не вызывает ошибки, я сдался и сделал "как все" чтобы проверять файлы.


У меня получился дайджест RuP7pvipMMoiFcFVCKnVePJwXSJSoNNvGvezdLnQN7M=
Ключевой вопрос здесь в том, что получившийся файл прошел верификацию (что будет когда дойдем до обмена с поставщиком услуги еще увидим)

Пока еще неясно что с линуксовой версией, пока заставить работать считыватель под этой системой не удалось - ошибки при установке пакетов deb, считыватель полу-видится софтом
Offline kdz1  
#71 Оставлено : 1 апреля 2020 г. 19:41:50(UTC)
kdz1

Статус: Участник

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

Отлаживаю каноникализер для модуля подписи электронной трудовой книжки (ЭТК).
xmlcan-2020401.zip (106kb) загружен 12 раз(а).
Принимаю баги.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
4 Страницы«<234
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.