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

Уведомление

Icon
Error

19 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline Максим Коллегин  
#21 Оставлено : 18 августа 2015 г. 18:35:55(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 31 раз
Поблагодарили: 702 раз в 611 постах
Код:
Index: SignDocument.cs
===================================================================
--- SignDocument.cs	(revision 4822)
+++ SignDocument.cs	(revision 4823)
@@ -119,6 +119,10 @@
                 new XmlDsigEnvelopedSignatureTransform();
             reference.AddTransform(env);
 
+            XmlDsigSmevTransform smev =
+                new XmlDsigSmevTransform();
+            reference.AddTransform(smev);
+            
             // Добавляем transform для канонизации.
             XmlDsigC14NTransform c14 = new XmlDsigC14NTransform();
             reference.AddTransform(c14);
Знания в базе знаний, поддержка в техподдержке
thanks 2 пользователей поблагодарили Максим Коллегин за этот пост.
stdevol оставлено 19.08.2015(UTC), wide оставлено 09.09.2015(UTC)
Offline kavcbm  
#22 Оставлено : 31 августа 2015 г. 10:03:33(UTC)
kavcbm

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

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

Удалено.

Отредактировано пользователем 2 сентября 2015 г. 8:05:22(UTC)  | Причина: проблема решена

Offline wide  
#23 Оставлено : 4 сентября 2015 г. 11:46:58(UTC)
wide

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

Группы: Участники
Зарегистрирован: 25.07.2012(UTC)
Сообщений: 5
Мужчина
Откуда: программинг

Сказал «Спасибо»: 2 раз
Немного возвращаясь к структуре СМЭВ 3. Я так понял, что СМЭВ 3 представляет из себя сервис через который общаются Потребитель и Поставщик Вида сведений. А где добыть адрес этого сервиса? Для тестовой, продуктивная и среды разработки? Есть ли РСМЭВ? Если есть, то и их адреса хотелось бы посмотреть.
Offline NIC  
#24 Оставлено : 5 октября 2015 г. 17:08:46(UTC)
NIC

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 2 постах
Добрый день!

На данный момент при подписи происходит подпись с идентификатором алгоритма

urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411

Однако СМЭВ хочет

urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411

который не был обнаружен в CPSignedXml.

Подскажите пожалуйста, планируется ли его внедрение?

PS. Обнаружил что есть подобная тема про java трехлетней давности http://www.cryptopro.ru/....aspx?g=posts&t=4864 из которой следует что это два одинаковых алгоритма.

В общем хотелось бы иметь возможность указать в варианте желаемом СМЭВ-ом :)

PS2.

В общем вот сообщение от СМЭВ

"ЭП-ОВ не соответствует подписанным данным: org.apache.xml.security.signature.XMLSignatureException: The requested algorithm urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411 does not exist. Original Message was: null
Original Exception was java.lang.NullPointerException"

Сначала подумал что ошибка с SignatureMethod. Вписал туда руками требуемое значение так как тип элемента - строка. Та же ошибка. Обнаружил что DigestMethod имеет подобный формат, но на ручное изменение уже сам cryptopro выдает ошибку "Невозможно создать объект хэш-алгоритма.".

В связи с перепиской со СМЭВ вопрос временно снимается.

Отредактировано пользователем 6 октября 2015 г. 12:04:21(UTC)  | Причина: Не указана

Offline khomenko  
#25 Оставлено : 7 октября 2015 г. 11:52:40(UTC)
Михаил Хоменко

Статус: Активный участник

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

Поблагодарили: 15 раз в 14 постах
Здравствуйте,

Не совсем понял вопрос.
Указанные вами идентификаторы относятся к различным алгоритмам.
Идентификатор urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411 не может быть указан как алгоритм подписи в узле SignatureMethod.
Данный идентификатор указывается в узле DigestMethod

алгоритма хеширования:
новый urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411
старый http://www.w3.org/2001/04/xmldsig-more#gostr3411
алгоритм подписи:
новый urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411
старый http://www.w3.org/2001/0...#gostr34102001-gostr3411

Во вложении пример запроса создаваемом примеров WCF клиента для СМЭВ 2.*
request.xml (4kb) загружен 26 раз(а).
Offline NIC  
#26 Оставлено : 13 октября 2015 г. 10:04:24(UTC)
NIC

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 5 раз в 2 постах
Добрый день!

В общем по прошлому вопросу: начал с переделки метода подписи от версии 2.5.5, в итоге взял пример из документации и частично стало работать. Именно частично, часть подписей распознается СМЭВ, а часть - нет. Пока нашел одно отличие: в примере отсутствует раздел создания трансформации СМЭВ, но вставка этого кода не помогла. В общем вложенный файл requestNoValid имеет корректную подпись если проверять следующим кодом:

// Проверка подписи под XML документом.
public static Boolean VerifyXmlFile(XmlElement xmlElement, XmlElement signature)
{
// Создаем объект SignedXml для проверки подписи документа.
SignedXml signedXml = new SignedXml(xmlElement);

// Загружаем первую подпись в SignedXml
signedXml.LoadXml(signature);

// Проверяем подпись.
return signedXml.CheckSignature();

}

Однако http://smev3.gosuslugi.ru/portal/checkxmlform.jsp выдает "ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП".

При том файл requestValid, сформированный абсолютно так же, вполне проходит проверку.

requestNoValid.xml (5kb) загружен 43 раз(а).

requestValid.xml (5kb) загружен 74 раз(а).


В общем крипто-про считает хэш отличающийся от хэша СМЭВ.

Пример из СМЭВ:

<ns2:AckTargetMessage xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CALLER" accepted="true">0e8cfc01-5e81-11e4-a9ff-d4c9eff07b77</ns2:AckTargetMessage>

имеет <ds:DigestValue>PXd1LeLr8ng039jaMgcrumvN/MkvDxFKSqH+phrHVrI=</ds:DigestValue>

Такой же блок при подписи крипто-про.нет имеет хэш

<DigestValue>FDG4ZCuMfJo1h/7tE9twBfePvTfq+gl+9TpGRu3dtdQ=</DigestValue>

Полные пакеты во вложении.

Просьба прокомментировать ситуацию.

requestAckSMEV.xml (3kb) загружен 53 раз(а).

requestAckCryptoPro.xml (5kb) загружен 46 раз(а).

Добавил XmlDsigEnvelopedSignatureTransform сошлось. Бардак какой-то :)

Отредактировано пользователем 13 октября 2015 г. 17:50:16(UTC)  | Причина: Не указана

thanks 4 пользователей поблагодарили NIC за этот пост.
TheBorusik оставлено 16.05.2016(UTC), ShurikEv оставлено 05.08.2016(UTC), vadimromanov оставлено 29.11.2016(UTC), Anvarov оставлено 06.12.2016(UTC)
Offline stdevol  
#27 Оставлено : 11 ноября 2015 г. 17:57:46(UTC)
stdevol

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

Группы: Участники
Зарегистрирован: 30.10.2012(UTC)
Сообщений: 22
Откуда: Moscow

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Добрый день.

Подписываем сообщение следующим образом:
Код:

 public XmlElement GetXmlSignature(XmlElement xmlElement, string referenceUri)
        {
            if (xmlElement == null)
                throw new ArgumentNullException(nameof(xmlElement));

            var certificate = CertificateUtils.Instance.GetCertificate();
            
            var keyInfo = CreateKeyInfo(certificate);
            var reference = new Reference { Uri = referenceUri };

            reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            reference.AddTransform(new XmlDsigExcC14NTransform());
            reference.AddTransform(new XmlDsigSmevTransform());
            

            reference.DigestMethod = GostDigestMethod;
            var signedXml = new SignedXml(xmlElement)
            {
                SigningKey = certificate.PrivateKey,
                KeyInfo = keyInfo
            };

            signedXml.SignedInfo.SignatureMethod = @"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
            signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;

            signedXml.AddReference(reference);

            signedXml.ComputeSignature();

            XmlElement xmlDigitalSignature = signedXml.GetXml();

            CheckSignature(xmlElement, xmlDigitalSignature);

            return xmlDigitalSignature;
        }


Валидация СМЭВа не проходит: "ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП".

Не подскажете в чём ошибка? request.xml (5kb) загружен 27 раз(а).Во вложении сообщение.
thanks 1 пользователь поблагодарил stdevol за этот пост.
Kilya оставлено 20.02.2017(UTC)
Offline zakke  
#28 Оставлено : 25 ноября 2015 г. 16:58:42(UTC)
zakke

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

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

Добрый день!
Пытаемся подписать сообщения AcqRequest из примеров СМЭВ 3:

Код:

        private static void SignXmlFile(string FileName,
            string SignedFileName, AsymmetricAlgorithm Key,
            X509Certificate Certificate)
        {
            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;
            doc.Load(new XmlTextReader(FileName));
        
            SignedXml signedXml = new SignedXml(doc);
            signedXml.SigningKey = Key;

            Reference reference = new Reference();
            reference.Uri = "#SIGNED_BY_CALLER";

#pragma warning disable 612
            reference.DigestMethod = CPSignedXml.XmlDsigGost3411UrlObsolete;
#pragma warning restore 612

            XmlDsigSmevTransform smev =
                new XmlDsigSmevTransform();
            reference.AddTransform(smev);

            XmlDsigExcC14NTransform c14 = new XmlDsigExcC14NTransform();
            reference.AddTransform(c14);
            
            signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
#pragma warning disable 612
            signedXml.SignedInfo.SignatureMethod = CPSignedXml.XmlDsigGost3410UrlObsolete;
#pragma warning disable 612

            signedXml.AddReference(reference);
            KeyInfo keyInfo = new KeyInfo();
            keyInfo.AddClause(new KeyInfoX509Data(Certificate));
            signedXml.KeyInfo = keyInfo;
            signedXml.ComputeSignature();

            XmlElement xmlDigitalSignature = signedXml.GetXml();
            doc.GetElementsByTagName("AckRequest", NSNamespaceUrl)[0].AppendChild(doc.CreateNode(XmlNodeType.Element, "ns", "CallerInformationSystemSignature", NSNamespaceUrl));
            doc.GetElementsByTagName("CallerInformationSystemSignature", NSNamespaceUrl)[0].AppendChild(
                doc.ImportNode(xmlDigitalSignature, true));

            // При наличии стартовой XML декларации ее удаляем
            // (во избежание повторного сохранения)
            if (doc.FirstChild is XmlDeclaration)
            {
                doc.RemoveChild(doc.FirstChild);
            }
 doc_signed.xml (5kb) загружен 45 раз(а).
            using (XmlTextWriter xmltw = new XmlTextWriter(SignedFileName,
                new UTF8Encoding(false)))
            {
                xmltw.WriteStartDocument();
                doc.WriteTo(xmltw);
            }
        }


Однако при проверке XML-сообщения на соответствие схемам сервиса СМЭВ получаем ошибку "ЭЦП не подтверждена: null".
В чем может быть проблема?
doc_signed.xml (5kb) загружен 45 раз(а).

Отредактировано пользователем 25 ноября 2015 г. 16:59:18(UTC)  | Причина: Не указана

Offline dez  
#29 Оставлено : 4 декабря 2015 г. 9:45:15(UTC)
dez

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

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

Поблагодарили: 1 раз в 1 постах
Автор: maxdm Перейти к цитате
Выложили новую версию с поддержкой smev transform.


для java добавили поддержку трансформера?
Offline kkklll  
#30 Оставлено : 15 декабря 2015 г. 13:40:59(UTC)
kkklll

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Автор: zakke Перейти к цитате
Добрый день!
Пытаемся подписать сообщения AcqRequest из примеров СМЭВ 3:

Код:

            XmlDsigSmevTransform smev =
                new XmlDsigSmevTransform();
            reference.AddTransform(smev);

            XmlDsigExcC14NTransform c14 = new XmlDsigExcC14NTransform();
            reference.AddTransform(c14);


Однако при проверке XML-сообщения на соответствие схемам сервиса СМЭВ получаем ошибку "ЭЦП не подтверждена: null".
В чем может быть проблема?


поменяйте порядок трансформации (смэв в конце)
thanks 1 пользователь поблагодарил kkklll за этот пост.
Kilya оставлено 20.02.2017(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
19 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.