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

Уведомление

Icon
Error

19 Страницы«<16171819>
Опции
К последнему сообщению К первому непрочитанному
Offline Александр Лавник  
#171 Оставлено : 4 июля 2020 г. 16:43:54(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 773 раз в 715 постах
Автор: Tolmasov Перейти к цитате
Здравствуйте, коллеги!

Стоит задача по переводу подписания запросов для СМЭВ3 с ПО Validata на ПО КриптоПро под .Net. Подпись должна осуществляется по алгоритму ГОСТ 34.10-2012

Функционал на валидате рабочий. Валидата не подписывает xml целиком, а отдельно считает хэш по ГОСТ 34.11-2012 и подписывает его по ГОСТ 34.10-2012. Собственно эти части и нужно перевести на криптопро.

Код:

//inputBytes - это уже каноничный и трансформированный вид сообщения
var inputBytes = System.Text.Encoding.UTF8.GetBytes(xmlSignedInfoCanon);

// Создаем объект для хэширования.
HashAlgorithm myhash = HashAlgorithm.Create("GOST3411");

// Вычисляем хэш от всех прочитанных данных. Хэш считается верно и совпадает с решением на валидате.
byte[] hashValue = myhash.ComputeHash(inputBytes);

// Инициализация крипто-провайдера
Gost3410_2012_256CryptoServiceProvider Gost = (Gost3410_2012_256CryptoServiceProvider)MyCertificate.PrivateKey;
// Подписываем хэш
byte[] signedInfoHashData = Gost.SignHash(hashValue);



Сертификат выпущен тестовым УЦ КриптоПро. Скрин сертификата

Получаю ошибку "ЭП-ОВ не подтверждена: #SIGNED_BY_CONSUMER Ошибка проверки ЭП: Нарушена целостность ЭП"

Подозреваю, что что-то не так делаю.. но не пойму куда копать

Здравствуйте.

Попробуйте побайтово перевернуть полученную подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline Tolmasov  
#172 Оставлено : 4 июля 2020 г. 19:47:28(UTC)
Tolmasov

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

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

Цитата:
Попробуйте побайтово перевернуть полученную подпись.


Если я правильно понял, то представил байтовый массив в обратном порядке. Не помогло, ошибка та же.
Подпись:
Convert.ToBase64String(signedInfoHashData)
"KPBTk0b86091PMXvpYZpmxy9PVApG3HAx/DpgUZjeOeKdgkeQJgHSGm3U6Y+No763P3NrWHwieF3oxhJTag2kw=="

Перевернул:
Convert.ToBase64String(signedInfoHashDataRevers)
"kzaoTUkYo3fhifBhrc393PqONj6mU7dpSAeYQB4JdorneGNGgenwx8BxGylQPb0cm2mGpe/FPHVP6/xGk1PwKA=="

Причем проверка подписанного хэша проходит проверку успешно.
Перевернутую подпись сам провайдер криптопро считает не верным.
Код:
Gost.VerifySignature(hashValue, signedInfoHashData); //true


Код:
Gost.VerifySignature(hashValue, signedInfoHashDataRevers); //false


Однако если проверяю подпись уже всего подписанного xml
Код:

SignedXml signedXml = new SignedXml(xmlDocument);
signedXml.SafeCanonicalizationMethods.Add("urn://smev-gov-ru/xmldsig/transform");
bool resultsing = signedXml.CheckSignature(); //false




Может портал СМЭВ не валидировать подпись, если подписываю сертификатом выданным тестовым УЦ КриптоПро?

Отредактировано пользователем 4 июля 2020 г. 20:29:02(UTC)  | Причина: Не указана

Offline two_oceans  
#173 Оставлено : 23 июля 2020 г. 2:42:06(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день. Снова пока меня не было никто не объяснил, что делаете не так.
Как я понял, Вы либо использовали алгоритмы не те что указаны в SignedInfo либо алгоритм хэша не соответствует алгоритму подписи. Немного странно, что хэш вычислен "GOST3411" (по гост-94 как для подписи по гост-2001).

Если еще актуально, ну и чтобы не повторяли за Вами, напомню шаги XMLDSIG.
1) сначала Вы считаете хэш от подписываемого каноникализированного и трансформированного фрагмента.
2) из хэша вычисленного в пункте 1 формируете структуру SignedInfo. Каноникализируете ее (но не трансформируете). У меня обычно добавляется 1 объявление пространства имен, остальное как было.
3) вычисляете хэш от SignedInfo. Значение хэша от SignedInfo само нигде не фигурирует в итоговом документе, что делает отладку еще сложнее. Алгоритм хэша здесь должен быть согласован с алгоритмом подписания - если ключ гост-2012, то хэш должен быть гост-2012, хэш гост-94 уже не прокатит.
4) подписываете хэш от SignedInfo. Обратите внимание, что тут нежелательно использовать SignHash, так как у Вас может оказаться 2 объекта хэша с разными алгоритмами, но одной длиной хэша (один внутри экземпляра класса Gost с гост-2012, второй myhash с гост-94). В этом случае Вы не получите ошибку о несоответствии алгоритма, но подпись будет неверна. Поэтому корректнее использовать Sign/SignData от inputBytes.
5) подписанное значение указываете в SignatureValue, при необходимости зеркалите массив байтов (меняете первый байт с последним, второй с предпоследним и т.д.) до Base64 кодирования. Вроде бы .Net уже переворачивает в фоновом режиме, но мало ли.


Если Вы проверяете на тестовой страничке портала СМЭВ 3, то там сертификат без разницы каким УЦ выдан. Проверяется чисто математика.
Если Вы отправляете в СМЭВ 3, то сертификат и УЦ имеют значение, а также они должны быть зарегистрированы к конкретной ИС. Можно запросить сертификат для тестовой/среды разработки СМЭВ 3 у тестового УЦ ростелекома через Ситуационный центр, но и аккредитованный УЦ тоже подойдет. Для продуктивной сертификат должен быть от аккредитованного УЦ.

Отредактировано пользователем 23 июля 2020 г. 3:24:57(UTC)  | Причина: Не указана

Offline Соня Базурова  
#174 Оставлено : 20 октября 2020 г. 19:00:28(UTC)
Соня Базурова

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

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

Поблагодарили: 1 раз в 1 постах
Нет ли у кого примера xml пакета отправки сертификата ЭЦП в ГИС ГМП 2.1.1 ?
Отправляю такой пакет:

Код:

<?xml version="1.0" encoding="utf-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:basic="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2">
  <S:Body>
    <ns2:SendRequestRequest>
      <ns2:SenderProvidedRequestData Id="SIGNED_BY_CONSUMER">                       
        <ns2:MessageID>61208680-1313-11eb-ba7f-af54ffe1ca92</ns2:MessageID>
        <basic:MessagePrimaryContent>
          <ic:ImportCertificateRequest xmlns:com="http://roskazna.ru/gisgmp/xsd/Common/2.1.1" xmlns:ic="urn://roskazna.ru/gisgmp/xsd/services/import-certificates/2.1.1" Id="G_0EE01C71-9E47-41F1-B991-12E982FA7659" timestamp="2020-10-20T15:32:31.977+05:00" senderIdentifier="0101d1" senderRole="2">
    <ic:RequestEntry Id="I_61677a90-1313-11eb-b55e-e06d040a5d8a" ownership="0101d1"/>
        </ic:ImportCertificateRequest>
        </basic:MessagePrimaryContent>
<basic:AttachmentHeaderList>
                    <basic:AttachmentHeader>
                        <basic:contentId>I_61677a90-1313-11eb-b55e-e06d040a5d8a</basic:contentId>
                        <basic:MimeType>application/x-x509-ca-cert</basic:MimeType>
                        <basic:SignaturePKCS7>MIIUwgY............Здесь base64 подписи PKCS7 сертификата..........PRQ=</basic:SignaturePKCS7>
                    </basic:AttachmentHeader>
                </basic:AttachmentHeaderList>
        <ns2:TestMessage/>
      </ns2:SenderProvidedRequestData>
      <basic:AttachmentContentList>
                <basic:AttachmentContent>
                    <basic:Id>I_61677a90-1313-11eb-b55e-e06d040a5d8a</basic:Id>                    
                    <basic:Content>MIIJKTCCCN..........Здесь сам сертификат в виде base64........3RlT</basic:Content>
                </basic:AttachmentContent>
            </basic:AttachmentContentList>
    </ns2:SendRequestRequest>
  </S:Body>
</S:Envelope>


возвращается ошибка:

Код:

 <ns2:AsyncProcessingStatus>
  <ns2:OriginalMessageId>61208680-1313-11eb-ba7f-af54ffe1ca92</ns2:OriginalMessageId>
  <ns2:StatusCategory>requestIsRejectedBySmev</ns2:StatusCategory>
  <ns2:StatusDetails>Бизнес-данные сообщения не соответствуют схеме, зарегистрированной в СМЭВ. MessageId = 61208680-1313-11eb-ba7f-af54ffe1ca92</ns2:StatusDetails>
- <ns2:SmevFault xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:InvalidContent">
  <Code>tsmev3:P:TSMEV3_ASYNC_CORE1:TR:ASYNC:PP:BSV:3</Code>
  <Description>SMEV-403:Бизнес-данные сообщения не соответствуют схеме, зарегистрированной в СМЭВ. MessageId = 61208680-1313-11eb-ba7f-af54ffe1ca92</Description>
  <ns3:ValidationError errorPosition="-1">cvc-id.1: There is no ID/IDREF binding for IDREF 'I_61677a90-1313-11eb-b55e-e06d040a5d8a'.</ns3:ValidationError>
  </ns2:SmevFault>
  </ns2:AsyncProcessingStatus>


Подписываю только ветку SenderProvidedRequestData.
Подписывание ветки ImportCertificateRequest, видимо, необязательное - проверку пакет проходит и с подписью, и без.
За основу xml-пакета взят пакет из темы Проблема с подписью для СМЭВ.
Offline two_oceans  
#175 Оставлено : 21 октября 2020 г. 10:34:34(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Вообще на вид сообщение похоже на правду. Правильного вида, к сожалению, нет под рукой - не самый ходовой вид сведений.
Судя по детальному описанию в конце ошибки
Код:
There is no ID/IDREF binding for IDREF 'I_61677a90-1313-11eb-b55e-e06d040a5d8a'
валидатор СМЭВ не смог связать два ID.

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

Offline Соня Базурова  
#176 Оставлено : 21 октября 2020 г. 16:52:43(UTC)
Соня Базурова

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

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

Поблагодарили: 1 раз в 1 постах
По тестовому сценарию получается, что ImportCertificateRequest/RequestEntry/@Id должен быть равен 'I_6e188de4-8491-49ea-8ec6-a09a607d020a'.

По схеме Common.xsd, получается, что RequestEntry/@Id (type="xsd:IDREF") - это "уникальный в пределах запроса идентификатор описания сертификата используемый для поиска самого сертификата в элементе basic:AttachmentContentList запроса СМЭВ".

По схеме smev-message-exchange-basic-1.xsd указано, что элемент AttachmentHeaderList/AttachmentHeader/contentId - идентификатор вложения. Ссылка на соответствующий //AttachmentContent/@Id.

Заполняю эти три идентификатора одинаковым значением I_6e188de4-8491-49ea-8ec6-a09a607d020a, но ошибка всё та же:
cvc-id.1: There is no ID/IDREF binding for IDREF 'I_6e188de4-8491-49ea-8ec6-a09a607d020a'.

Не понимаю, с какой ссылкой должно быть ещё совпадение :(((

Прикреплю файл smev-message-exchange-basic-1.xsd
smev-message-exchange-basic-1.zip (4kb) загружен 2 раз(а).
Offline two_oceans  
#177 Оставлено : 24 октября 2020 г. 13:19:21(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Лично меня смущает что там "//AttachmentContent/@Id", так как собаку ставят перед именем атрибута, но Id в схеме это element (то есть, тег?). Но тогда извлечение должно быть вроде такого "//AttachmentContent/Id/textnode()". Про RequestEntry/@Id вопросов нет, там именно атрибут. Выходит какая-то ерунда: в AttachmentContent должен быть еще и атрибут Id.

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

Offline vyacheslav123456789  
#178 Оставлено : 15 января 2021 г. 1:04:38(UTC)
vyacheslav123456789

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

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

Доброго времени суток. От коллеги (который уже уволился) остался СМЭВ
Сижу разбираюсь, но тема сложная
В итоге получился следующий документ

<smev:GetRequestRequest xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:smevbasic="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:faults="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smev="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2">
<smevbasic:MessageTypeSelector Id="SIGNED_BY_CONSUMER">
<smevbasic:Timestamp>2021-01-15T00:07:06.9541401+04:00</smevbasic:Timestamp>
</smevbasic:MessageTypeSelector>
<smev:CallerInformationSystemSignature>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<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="#SIGNED_BY_CONSUMER">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" />
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" />
<DigestValue>Nq3ZumwSn8VJvbN2dC0eSnzytbje/2NhQnfoOtOStE8=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>qUBhKRML951sSKO/W6vpaMLQ35x46HeKwF14pRH26D9xmL6earCG+EhacSZcK9qUpKmXOtUBBdP2kI+fVjCzYw==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</smev:CallerInformationSystemSignature>
</smev:GetRequestRequest>


При попытке отправить в СМЭВ получаю ошибку:
Data at the root level is invalid. Line 2, position 1.
Не могу понять в чем дело, подскажите пожалуйста хотя бы куда копать

Код подписи, метод CheckSignature() возвращает true

var certificate = GetCertificate(certificateSerial);

var smevSignedXml = new SmevSignedXml(xmlDocument)
{
SigningKey = certificate.PrivateKey,
KeyInfo = new KeyInfo()
};

smevSignedXml.KeyInfo.AddClause(new KeyInfoX509Data(certificate));

Reference reference = new Reference
{
Uri = $"#{id}",
DigestMethod = CPSignedXml.XmlDsigGost3411_2012_256Url
};

reference.AddTransform(new XmlDsigExcC14NTransform());
reference.AddTransform(new XmlDsigSmevTransform());
smevSignedXml.SafeCanonicalizationMethods.Add("urn://smev-gov-ru/xmldsig/transform");
smevSignedXml.AddReference(reference);

smevSignedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
smevSignedXml.SignedInfo.SignatureMethod = CPSignedXml.XmlDsigGost3410_2012_256Url;

smevSignedXml.ComputeSignature();

var signatureXml = smevSignedXml.GetXml();

var binaryData = new XmlDocument();

var keyInfo = binaryData.CreateElement("KeyInfo", "http://www.w3.org/2000/09/xmldsig#");

var X509Data = binaryData.CreateElement("X509Data", "http://www.w3.org/2000/09/xmldsig#");
var X509Certificate = binaryData.CreateElement("ds:X509Certificate", "http://www.w3.org/2000/09/xmldsig#");
X509Certificate.InnerText = Convert.ToBase64String(certificate.RawData);

X509Data.AppendChild(X509Certificate);

keyInfo.AppendChild(X509Data);

signatureXml.InnerXml += binaryData.OuterXml;

var signature = binaryData.CreateElement("Signature", "http://www.w3.org/2000/09/xmldsig#");

signature.InnerXml = signatureXml.InnerXml;

var isValid = smevSignedXml.CheckSignature();

return signature;

Буду очень признателен за любую помощь, времени к сожалению, совсем мало
Offline two_oceans  
#179 Оставлено : 26 января 2021 г. 7:57:16(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день.
Если еще нужно - я первый раз зашел в новом году. С подписью проблем не вижу - проверяется корректно. В коде махинации не особо понятны, но выходит верно.

Если отправляете именно то, что выделено желтым и ничего более прямо в СМЭВ, то проблема проста: нет контейнера SOAP, парсер ругается на то что корневой тег не Soap:Envelope. Выделенный желтым текст должен быть внутри Soap:Envelope / Soap:Body, а Soap:Envelope / Soap:Header оставить пустым. В норме MessageTypeSelector уходит на адаптер СМЭВ, который делает обертки smev:GetRequestRequest и Soap:Envelope / Soap:Body, подписывает MessageTypeSelector и отправляет все в СМЭВ 3. Однако раз часть GetRequestRequest обернули сами и подписываете сами, то надо и самую внешнюю обертку Soap добавить.

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

Offline two_oceans  
#180 Оставлено : 26 января 2021 г. 7:59:01(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
del
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
19 Страницы«<16171819>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.