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

Уведомление

Icon
Error

6 Страницы«<3456>
Опции
К последнему сообщению К первому непрочитанному
Offline fomenko  
#41 Оставлено : 19 июля 2013 г. 12:51:01(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Странно,у меня при выполнении канонизации на C# над вашим шаблоном
следующим образом

Код:

    XmlDsigExcC14NTransform xmlTransform = new XmlDsigExcC14NTransform();
    xmlTransform.LoadInput(xmlDocument);
    MemoryStream memoryStream = (MemoryStream)xmlTransform.GetOutput();


к SignedInfo namespace не добавляется. Сейчас буду разбираться, из-за чего так происходит
Offline dmishin  
#42 Оставлено : 19 июля 2013 г. 12:57:17(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Есть разные стандарты приведения к каноническому виду.

Здесь указан http://www.w3.org/2001/10/xml-exc-c14n#

Отредактировано пользователем 19 июля 2013 г. 13:00:45(UTC)  | Причина: Не указана

Offline fomenko  
#43 Оставлено : 23 июля 2013 г. 14:59:58(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Научился получать подписи, не содержащие <Object><SignatureProperties>
т.е. для шаблонов
вида
Цитата:

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::dsig:Signature)</XPath>
</Transform>
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" />
<DigestValue>wMqeedhkBl4FMJ3bjYZjwLFdkwOsK/a0AaNjt+o+pxk=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>




Теперь пытаюсь получить подпись для шаблона, содержащего <Object>

Цитата:

<Signature Id="statCardSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" />
<Reference URI="#signaturePropertiesc133ab11-1b5d-4c56-838a-fb7a9186bbbf" Type="http://www.w3.org/2000/02/xmldsig#SignatureProperty">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::Object)</XPath>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>tcGOpnQbOFpUFvE2L5qaaEk82hs=</DigestValue>
</Reference>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::dsig:Signature)</XPath>
</Transform>
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" />
<DigestValue>KycTFRh4625xIFcvgsQq/j0RV7sE8vTLbdxhbP882ak=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
<Object>
<SignatureProperties Id="signaturePropertiesc133ab11-1b5d-4c56-838a-fb7a9186bbbf">
<SignatureProperty Target="#statCardSignature">
<SignDate xmlns="">23.07.2013</SignDate>
</SignatureProperty>
</SignatureProperties>
</Object>
</Signature>



однако полученный SignatureValue верификацию не проходит.

На данный момент использую следующий алгоритм:
1) канонизирую SignedInfo
2)считаю хэш от SignedInfo
3)подписываю хэш от SignedInfo (переворачивание и енкодинг в base64 присутствуют)
4)вставляю полученное значение в SignatureValue

Он работает при отсутствии тэга Object и второго Reference в SignedInfo

Вопрос следующий- меняется ли как-то алгоритм получения SignatureValue при наличие тэгов Object и в чем может быть еще ошибка?
Offline fomenko  
#44 Оставлено : 23 июля 2013 г. 15:35:40(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Переформилирую вопрос: как понять из описания Reference, от каких данных берется хэш в DigestValue этого Reference?
Например для каких данных берется хэш для Reference следующего вида:
Цитата:

<Reference URI="#signaturePropertiesc133ab11-1b5d-4c56-838a-fb7a9186bbbf" Type="http://www.w3.org/2000/02/xmldsig#SignatureProperty">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::Object)</XPath>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>tcGOpnQbOFpUFvE2L5qaaEk82hs=</DigestValue>
</Reference>


Я не понимаю, на что именно указывает XPath, написанный в <Transform><XPath>: на данные от которых берется хэш или на данные, от которых хэш не берется.

Отредактировано пользователем 23 июля 2013 г. 15:36:16(UTC)  | Причина: Не указана

Offline Fomich  
#45 Оставлено : 23 июля 2013 г. 16:34:53(UTC)
Fomich

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

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

Поблагодарили: 2 раз в 2 постах
Reference URI вроде как указывает на <SignatureProperties Id="signaturePropertiesc133ab11-1b5d-4c56-838a-fb7a9186bbbf">...</SignatureProperties>. Вот от него надо получить, применив XPath, хэш.
Вроде же в шарпе есть класс который работает с XPath... Что он возвращает?
Offline fomenko  
#46 Оставлено : 24 июля 2013 г. 8:50:31(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Спасибо, разобрался. на вход первой Transform приходит нодесет по URI из соотвествующей Reference, а на вход алгоритму хэширования приходит результат последнего Transform.
Offline fomenko  
#47 Оставлено : 24 июля 2013 г. 9:37:45(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Посчитал DigestValue для обоих Reference. Хэши считаются корректно и не захватывают при расчете SignatureValue(которое заменяется мной на заново посчитанное), однако верифицировать карточку новым SignatureValue не удается.
Думаю проблема в канонизации xml. Просьба к тем, к кого есть работающий алгоритм канонизации, прогоните, пожалуйста, у себя следующий xml
Цитата:

<Signature Id="statCardSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" /><Reference URI="#signatureProperties7fe7b021-db75-4fbc-9adf-10e88930015c" Type="http://www.w3.org/2000/02/xmldsig#SignatureProperty"><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::Object)</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>VtJy0CMCBZ7D85Ebkm0lU9vnvZM=</DigestValue></Reference><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::dsig:Signature)</XPath></Transform></Transforms><DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" /><DigestValue>TRkTgMWiFEnKfEANQgkYJwK89Q8Ms/2aJ4IUuI4VHMw=</DigestValue></Reference></SignedInfo></Signature>

C# класс по канонизации работает криво(в частности не пробрасывает xmlns="http://www.w3.org/2000/09/xmldsig#" и не заменяет \r на \n), так что сейчас канонизацию провожу руками и ,видимо, упускаю пробросить какой-то namespace.
Offline dmishin  
#48 Оставлено : 24 июля 2013 г. 9:44:06(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: fomenko Перейти к цитате
Посчитал DigestValue для обоих Reference. Хэши считаются корректно и не захватывают при расчете SignatureValue(которое заменяется мной на заново посчитанное), однако верифицировать карточку новым SignatureValue не удается.
Думаю проблема в канонизации xml. Просьба к тем, к кого есть работающий алгоритм канонизации, прогоните, пожалуйста, у себя следующий xml
Цитата:

<Signature Id="statCardSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" /><Reference URI="#signatureProperties7fe7b021-db75-4fbc-9adf-10e88930015c" Type="http://www.w3.org/2000/02/xmldsig#SignatureProperty"><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::Object)</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>VtJy0CMCBZ7D85Ebkm0lU9vnvZM=</DigestValue></Reference><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::dsig:Signature)</XPath></Transform></Transforms><DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" /><DigestValue>TRkTgMWiFEnKfEANQgkYJwK89Q8Ms/2aJ4IUuI4VHMw=</DigestValue></Reference></SignedInfo></Signature>

C# класс по канонизации работает криво(в частности не пробрасывает xmlns="http://www.w3.org/2000/09/xmldsig#" и не заменяет \r на \n), так что сейчас канонизацию провожу руками и ,видимо, упускаю пробросить какой-то namespace.


<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod><SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"></SignatureMethod><Reference Type="http://www.w3.org/2000/02/xmldsig#SignatureProperty" URI="#signatureProperties7fe7b021-db75-4fbc-9adf-10e88930015c"><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>not(ancestor-or-self::Object)</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod><DigestValue>VtJy0CMCBZ7D85Ebkm0lU9vnvZM=</DigestValue></Reference><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>not(ancestor-or-self::dsig:Signature)</XPath></Transform></Transforms><DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"></DigestMethod><DigestValue>TRkTgMWiFEnKfEANQgkYJwK89Q8Ms/2aJ4IUuI4VHMw=</DigestValue></Reference></SignedInfo>
thanks 1 пользователь поблагодарил dmishin за этот пост.
fomenko оставлено 24.07.2013(UTC)
Offline fomenko  
#49 Оставлено : 24 июля 2013 г. 12:27:33(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Проблема была в том, что в тэги XPath также надо подставлять xmlns="http://www.w3.org/2000/09/xmldsig#". Попробовал Java-либу по канонизации(http://santuario.apache.org), она проставила их.
Однако в SignedInfo она тоже упорно не хочет писать xmlns="http://www.w3.org/2000/09/xmldsig#". Пришлось дописывать руками.
Offline dmishin  
#50 Оставлено : 24 июля 2013 г. 12:57:38(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Моя каноникализация оказалась тоже некорректной? (XPath без неймспейса)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
6 Страницы«<3456>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.