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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline pushist1y  
#1 Оставлено : 24 января 2013 г. 18:56:32(UTC)
pushist1y

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

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

Сказал(а) «Спасибо»: 4 раз
Здравствуйте. Столкнулся со следующей проблемой. Подписываю Body-элемент SOAP-пакета .NET-объектом SignedXml (пытаюсь наладить взаимодействие с РНиП)
Код:


            X509Store store = new X509Store(StoreName.My);
            
            store.Open(OpenFlags.ReadOnly);
            
            var signingCerts = store.Certificates.Find(X509FindType.FindByThumbprint,
                                    "ea dc a4 4f c1 f0 9a 8a f5 c3 1e 2e 13 55 06 92 30 dd 41 7a", true);            
            if (signingCerts.Count<=0) return unsignedMessage;
            store.Close();

            var signingCert = signingCerts[0];

            var signedXml = new SignedXml(xDoc);
            signedXml.SigningKey = signingCert.PrivateKey;
            signedXml.KeyInfo = new KeyInfo();
            signedXml.KeyInfo.AddClause(new KeyInfoX509Data(signingCert));
            signedXml.SignedInfo.SignatureMethod = signingCert.PrivateKey.SignatureAlgorithm;
            Reference reference = new Reference();
            reference.Uri = "#body";
            var env = new XmlDsigExcC14NTransform();
            reference.AddTransform(env);
            reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
            signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/2001/10/xml-exc-c14n#";            
            signedXml.AddReference(reference);
            signedXml.ComputeSignature();
            XmlElement xmlDigitalSignature = signedXml.GetXml();


Каждый запуск кода на одном и том же XML-е даёт разное значение подписи (SignatureValue), при этом хэш (DigestValue) не меняется. После каждого запуска верифицирую <Signature> тем же SignedXml - верификация проходит успешно. В чём подвох?

Весь пакет, если интересно:
Код:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" s:mustUnderstand="1">http://roskazna.ru/SmevUnifoService/UnifoTransferMsg</Action>
    <ActivityId xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics" CorrelationId="bd8e5aef-4f13-48e1-811a-3a43da9c543c">2ecf1093-ad57-40b4-b076-53afe9df9016</ActivityId>
    <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo3WXH7uaAS9GvpKrOm37OLwAAAAAMSpf+KrOX0mc8ar55bB98aMUxqiBizJKojhhlCoMRJUACQAA</VsDebuggerCausalityData>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<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" id="Cert">[Сертификат]</wsse:BinarySecurityToken>
<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:gostr34102001-gostr3411" />
<Reference URI="#body">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
<DigestValue>kAaM4srbIgOfz9AFbHwVIHqEKAGoQNSWBWDN/MsIRd8=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>nERC1VZIGhK+zgxUbZJg4dExpEdg8KXHPfcOqlEdWa3lDXxwOb3vyG9NthZGNZCDO9KTBuEqrrjmPjd43ERJzw==</SignatureValue>
<KeyInfo>
<X509Data><X509Certificate>[Сертификат]</X509Certificate></X509Data>
</KeyInfo></Signature></wsse:Security>
</s:Header>
  <s:Body id="body">
    <UnifoTransferMsg xmlns="http://roskazna.ru/SmevUnifoService/">
      <Message xmlns="http://smev.gosuslugi.ru/rev110801">
        <Sender>
          <Code>00408</Code>
          <Name>ООО «Научно-производственный центр Бюджетного учёта»</Name>
        </Sender>
        <Recipient>
          <Code>0000000000</Code>
          <Name>UNIFO</Name>
        </Recipient>
        <Originator>
          <Code>0000000001</Code>
          <Name>External Organization</Name>
        </Originator>
        <TypeCode>5</TypeCode>
        <Date>2013-01-01T00:00:00</Date>
      </Message>
      <MessageData xmlns="http://smev.gosuslugi.ru/rev110801">
        <AppData>
          <exportData xmlns="http://rosrazna.ru/xsd/SmevUnifoService">
            <DataRequest xmlns="http://roskazna.ru/xsd/PGU_DataRequest">
              <PostBlock xmlns="">
                <ID>254510</ID>
                <TimeStamp>2013-01-01T00:00:00</TimeStamp>
                <SenderIdentifier>00002</SenderIdentifier>
              </PostBlock>
            </DataRequest>
          </exportData>
        </AppData>
      </MessageData>
    </UnifoTransferMsg>
  </s:Body>
</s:Envelope>
Offline Андрей Писарев  
#2 Оставлено : 24 января 2013 г. 22:33:22(UTC)
Андрей *

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

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

Сказал «Спасибо»: 582 раз
Поблагодарили: 2316 раз в 1814 постах
Все верно.
Подпись по ГОСТ Р 34.11/34.10-2001 каждый раз разная для одних и тех же исходных данных.


1. FAQ

2. Одна из веток форума: Общие вопросы » Повторяемость ГОСТ Р 34.10-2001

Отредактировано пользователем 24 января 2013 г. 22:39:04(UTC)  | Причина: ссылка

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
pushist1y оставлено 30.01.2013(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.