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

Уведомление

Icon
Error

6 Страницы«<23456>
Опции
К последнему сообщению К первому непрочитанному
Offline fomenko  
#31 Оставлено : 18 июля 2013 г. 17:49:17(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Исходный xml(не влезло в первое сообщение):


<?xml version="1.0"?>
<metadate>
<test>3432</test>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference>
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>rQRcvnfGVu2YI/ryIGYaeBmwFPtMTYYKudSvD8mzbEs=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>WWfSqQzHUl/mEGxxi7dT7A+GUZZn2aQpGAImtVKwvx9CMPhl5Cz4kr+kXQTuqEJS
dXjhadNwgjUXVmp8V64pWQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIJCDCCCLegAwIBAgIKMrkd5gAAAAABvDAIBgYqhQMCAgMwggEfMRgwFgYFKoUD
ZAESDTEwMzc3MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkw
NwYDVQQJDDDRg9C7LiDQodGD0YnRkdCy0YHQutC40Lkg0LLQsNC7LCDQtC4xNiwg
0YHRgtGALjUxHzAdBgkqhkiG9w0BCQEWEHFjYUBjcnlwdG9wcm8ucnUxCzAJBgNV
BAYTAlJVMRkwFwYDVQQIDBDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+
0YHQutCy0LAxJTAjBgNVBAoMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIx
JTAjBgNVBAMMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIwHhcNMTMwNDMw
MTA0MjAwWhcNMTQwNDMwMTA1MjAwWjCCAjcxFjAUBgUqhQNkAxILMDMwMDc3MTYz
MDQxGDAWBgUqhQNkARINMTAyNTkwMDc1NjY4MzEaMBgGCCqFAwOBAwEBEgwwMDU5
MDMwMzc2MzUxHzAdBgkqhkiG9w0BCQEWEHNhdmluQHByb2dub3oucnUxCzAJBgNV
BAYTAlJVMSkwJwYDVQQIHiAANQA5ACAEHwQ1BEAEPARBBDoEOAQ5ACAEOgRABDAE
OTETMBEGA1UEBx4KBB8ENQRABDwETDEjMCEGA1UECh4aBBcEEAQeACAAIgQfBCAE
HgQTBB0EHgQXACIxbTBrBgNVBAseZAQdBDAEPwRABDAEMgQ7BDUEPQQ4BDUAIARA
BDUESAQ1BD0EOAQ5ACAENAQ7BE8AIAQ/BEAEMAQyBD4EPgRFBEAEMAQ9BDgEQgQ1
BDsETAQ9BEsERQAgBD4EQAQzBDAEPQQ+BDIxOTA3BgNVBAMeMAQhBDAEMgQ4BD0A
IAQYBDMEPgRABEwAIAQSBDAEOwQ1BD0EQgQ4BD0EPgQyBDgERzExMC8GA1UECR4o
BCEENQRABDMENQRPACAEFAQwBD0ESQQ4BD0EMAAsACAENAAuADUALDEzMDEGA1UE
DB4qBCAEQwQ6BD4EMgQ+BDQEOARCBDUEOwRMACAEPwRABD4ENQQ6BEIEPgQyMS0w
KwYDVQQqHiQEGAQzBD4EQARMACAEEgQwBDsENQQ9BEIEOAQ9BD4EMgQ4BEcxEzAR
BgNVBAQeCgQhBDAEMgQ4BD0wYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIe
AQNDAARAptIc8Uvt06FqU+n2xywKZfOxVT+rGgNqC1bFgyYVZvyrpagD+47l+ccH
w2B3tMiEfJg7e9cxO3uA42Jc031HYKOCBLUwggSxMA4GA1UdDwEB/wQEAwIE8DAm
BgNVHSUEHzAdBggrBgEFBQcDBAYHKoUDAgIiBgYIKwYBBQUHAwIwHQYDVR0OBBYE
FGWDOImN/wbKqmKJoWmrRXRRQ+6uMIIBYAYDVR0jBIIBVzCCAVOAFFsekWCWn5rt
V7Wqp2PxLUdw2FwYoYIBJ6SCASMwggEfMRgwFgYFKoUDZAESDTEwMzc3MDAwODU0
NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkwNwYDVQQJDDDRg9C7LiDQ
odGD0YnRkdCy0YHQutC40Lkg0LLQsNC7LCDQtC4xNiwg0YHRgtGALjUxHzAdBgkq
hkiG9w0BCQEWEHFjYUBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRkwFwYDVQQI
DBDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxJTAjBgNV
BAoMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIxJTAjBgNVBAMMHNCe0J7Q
niAi0JrQoNCY0J/QotCeLdCf0KDQniKCEALOtaYgvCieTja3fEdCH7UwggEBBgNV
HR8EgfkwgfYwUaBPoE2GS2h0dHA6Ly9jZHAuY3J5cHRvcHJvLnJ1L3JhL2NkcC81
QjFFOTE2MDk2OUY5QUVENTdCNUFBQTc2M0YxMkQ0NzcwRDg1QzE4LmNybDBPoE2g
S4ZJaHR0cDovL3EuY3J5cHRvcHJvLnJ1L3JhL2NkcC81QjFFOTE2MDk2OUY5QUVE
NTdCNUFBQTc2M0YxMkQ0NzcwRDg1QzE4LmNybDBQoE6gTIZKaHR0cDovL3EyLmNy
eXB0b3Byby5ydS9yYS9jZHAvNUIxRTkxNjA5NjlGOUFFRDU3QjVBQUE3NjNGMTJE
NDc3MEQ4NUMxOC5jcmwwQAYIKwYBBQUHAQEENDAyMDAGCCsGAQUFBzABhiRodHRw
Oi8vcXMuY3J5cHRvcHJvLnJ1L29jc3Avb2NzcC5zcmYwKwYDVR0QBCQwIoAPMjAx
MzA0MzAxMDQyMDBagQ8yMDE0MDQzMDEwNDIwMFowEwYDVR0gBAwwCjAIBgYqhQNk
cQEwNAYFKoUDZG8EKwwp0JrRgNC40L/RgtC+0J/RgNC+IENTUCAo0LLQtdGA0YHQ
uNGPIDMuNikwggEzBgUqhQNkcASCASgwggEkDCsi0JrRgNC40L/RgtC+0J/RgNC+
IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHRgtC+0LLQtdGA0Y/R
jtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg0LLQ
tdGA0YHQuNC4IDEuNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC1
0YLRgdGC0LLQuNGPIOKEliDQodCkLzEyMS0xODU5INC+0YIgMTcuMDYuMjAxMgxP
0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKE
liDQodCkLzEyOC0xODIyINC+0YIgMDEuMDYuMjAxMjAIBgYqhQMCAgMDQQBPzeSP
Y2fQmcyC1BjQ5w7Kpi+QrT1WJLATNkgpjyxqzrTWXyhBKIv2IQwZCk0W+A9f85XG
hjh85TPAVZCGjnYI</X509Certificate>
</X509Data>
</KeyInfo>
</Signature></metadate>

Offline fomenko  
#32 Оставлено : 18 июля 2013 г. 17:50:59(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз

2) получаю хэш и подписываю(клиент javascript)

Код:

   function generateSignatureValue(base64Hash) {

            var oStore = CreateObject("CAPICOM.Store");
            oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);



            try {
                var certificate = oStore.Certificates.Item(4);
                //certificate.Export(0)
                          
                 //получаю хэш от SignedInfo
                var hashObject = CreateObject("CAdESCOM.HashedData");
                hashObject.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
                hashObject.DataEncoding = CADESCOM_BASE64_TO_BINARY;
                hashObject.Hash(base64Hash);
         
                //хэш получается 5F2DDD82A85B2E0FD7D98A8CF1E6C4799CBA476B4303088D32194E3E3F7E0FB9
                //подписываю и переворачиваю
                var rawSignature = CreateObject("CAdESCOM.RawSignature");
                var signatureHex = rawSignature.SignHash(hashObject, certificate);
                var reversedSignatureString = utils.reverse(utils.hexToString(signatureHex));


                oStore.Close();
                //кодирую в base64
                return B64.encode(reversedSignatureString);
                
                

            } catch (e) {
                alert(e);
            }

        };


потом вставляю полученное значение в SignatureValue исходного xml и не могу верифицировать подпись.
Алгоритм правильный или я что-то не учел? В чем может быть проблема, 2 день бьюсь уже, не получается верифицировать.

ЗЫ почему-то не получилось написать все в одном сообщении
Offline dmishin  
#33 Оставлено : 19 июля 2013 г. 7:42:20(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
1. В XML лежит сертификат тот которым подписывали хеш?
2. CADESCOM_HASH_ALGORITHM_CP_GOST_3411 == 100 ?
3. Пробовали использовать вспомогательные функции те что я выкладывал тут http://www.cryptopro.ru/...s&m=40073#post40073? (кажется с некоторыми библиотеками base64 была проблема)

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

Offline fomenko  
#34 Оставлено : 19 июля 2013 г. 9:23:33(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
1) ключ тотже
2)CADESCOM_HASH_ALGORITHM_CP_GOST_3411 == 100

3) пробую переписать Javascript, как у вас

на строчке
hashObject.SetHashValue(utils.stringToHex(utils.base64.decode(base64Hash)));
пишет "Parameter incorrect"
У вас в примере hashObject это CreateObject("CAdESCOM.HashedData") или какой-то свой объект?

также уточните , пожалуйста, что именно поступает в функцию в параметре base64Hash?

Offline dmishin  
#35 Оставлено : 19 июля 2013 г. 10:18:48(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Как я понял в вашем случае вы в аргумент передаете не хеш в base64, а данные signedInfo в base64 от которых вы потом берете хеш (hashObject.Hash(base64Hash))

Так что делать hashObject.SetHashValue() не требуется и метод generateSignatureValue, который вы выложили на первый взгляд корректный, за исключением наименования аргумента (скорее что-то типа base64SignedInfo)

Исключите ошибки в сторонних библиотеках. Просто попробуйте вставить функции для работы с HEX и base64 из той темы (как заведомо корректные).
thanks 1 пользователь поблагодарил dmishin за этот пост.
fomenko оставлено 19.07.2013(UTC)
Offline fomenko  
#36 Оставлено : 19 июля 2013 г. 11:39:56(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
применил ваши функции. Хэш стал совпадать по длине, но все равно не верефицируется.

Подозреваю у меня ошибка либо при канокализации, либо при взятии хэша.

dmishin,пожалуйста, не могли бы вы посчитать хэш(hashObject.Value) на своем алгоритме от следующего xml, чтобы я мог использовать его как эталон при отладке?

Код:

<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>

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

Offline dmishin  
#37 Оставлено : 19 июля 2013 г. 12:01:46(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Я сразу попробовал взять хеш от данных в base64 что вы скидывали - он совпал.
Сейчас посчитаю от этих данных - 1P5x3aDSrLM/Mxq1GHJYzjQPK/9XaN/5WPQzaPy8l+c=

А после канонизации: hLssiRKfyz7LYrR6zGAVsllIt50KW3uEJB1c0HvsPkw=

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

Offline fomenko  
#38 Оставлено : 19 июля 2013 г. 12:15:53(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
правильно понимаю, что hLssiRKfyz7LYrR6zGAVsllIt50KW3uEJB1c0HvsPkw=
это у вас получилось значение, после канинизирования signedInfoXml, приведения ее в base64 и затем взятия хэша от полученного значения без дальнейших преобразований?
Offline dmishin  
#39 Оставлено : 19 июля 2013 г. 12:17:14(UTC)
dmishin

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

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

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

Цитата:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference URI="">
<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="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<X509Data/>
</KeyInfo>
</Signature>
Offline dmishin  
#40 Оставлено : 19 июля 2013 г. 12:25:12(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: fomenko Перейти к цитате
правильно понимаю, что hLssiRKfyz7LYrR6zGAVsllIt50KW3uEJB1c0HvsPkw=
это у вас получилось значение, после канинизирования signedInfoXml, приведения ее в base64 и затем взятия хэша от полученного значения без дальнейших преобразований?


Хэш берется не от base64 а по сырым данным.
(В случае с хешом полученным в javascript там явным образом указывается что на входе base64)

Это значение я получил канонизировав xml.
Но нельзя производить канонизацию только этого значения. Надо канонизировать SignedInfo в контексте signature, т.к. там добавляются неймспейсы.

Например канонизированный вид SignedInfo от шаблона, который я скинул выглядит так:

Цитата:
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></SignatureMethod><Reference URI=""><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="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></DigestMethod><DigestValue></DigestValue></Reference></SignedInfo>


Как видите <SignedInfo> преобразовался в <SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

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

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