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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Zester  
#1 Оставлено : 5 апреля 2013 г. 16:56:49(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Добрый день!
Как проверить подпись из заголовка СМЭВ при помощи утилиты csptest.exe ?

Пробую следующий вызов:
Код:
csptest -sfsign -verify GOST -in SignedInfo_canon.txt -signature SignatureValue.txt -my "E = aaa@aaa.org"


на выходе получаю:
Код:
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:READY,ENABLED.
#0: 
Subject: OID.1.2.643.3.131.1.1=7733506820, E=aaa@aaa.org
Valid  : 05.03.2012 - 05.03.2013
Issuer : CN=test-ca

An error occurred in running the program.
.\signtsf.c:651:Signature was NOT verified

Error number 0x8009310b (2148086027).
Встречено неверное значение тега ASN1.

Total: SYS: 0,047 sec USR: 0,000 sec UTC: 0,110 sec
[ErrorCode: 0x8009310b]


в файле SignedInfo_canon.txt
Код:
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></ds:SignatureMethod>
<ds:Reference URI="#body">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></ds:DigestMethod>
<ds:DigestValue>AcwMpu3vrMlU98lc0wJgH3Y+SD6xYyw7CwH+v6UboRo=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>


в файле SignatureValue.txt 64 байта с подписью

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

Offline Максим Коллегин  
#2 Оставлено : 5 апреля 2013 г. 21:51:38(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 734 раз в 632 постах
никак
Знания в базе знаний, поддержка в центре поддержки
Offline Zester  
#3 Оставлено : 8 апреля 2013 г. 10:02:37(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Автор: maxdm Перейти к цитате
никак

Но, ведь, существует команда подписания, подходящего СМЭВ:
Код:
csptest -keyset -sign GOST -in SignedInfo_canon.txt -out SignatureValue.txt -password 1234 -container Ant


почему же нет обратной команды?Brick wall
Offline Zester  
#4 Оставлено : 8 апреля 2013 г. 11:36:12(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Я выполнил команду подписания:
Код:
csptest.exe -keyset -sign GOST -in SignedInfo_canon.txt -out SignatureValue.txt -password 111111 -container RRR


в консоле на выходе получил:
Код:
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:READY,ENABLED.
AcquireContext: OK. HCRYPTPROV: 1344064
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Container name: "RRR"

Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x14f080
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
Signature length 64 found.
Signature was done.
Output file (SignatureValue.txt) has been saved
Signature saved into file SignatureValue.txt


Keys in container:
  exchange key
Total: SYS: 0,047 sec USR: 0,031 sec UTC: 0,188 sec
[ErrorCode: 0x00000000]


далее я выполнил команду проверки (поправьте если она не правильная):
Код:
csptest.exe -keyset -verify GOST -in SignedInfo_canon.txt -signature SignatureValue.txt -password 111111 -container RRR > verify_shot.txt

в консоле на выходе получил:
Код:
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:READY,ENABLED.
AcquireContext: OK. HCRYPTPROV: 1344088
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
An error occurred in running the program.
.\ctkey.c:2705:No Imported Key.
Error number 0x0 (0).
Операция успешно завершена.


Total: SYS: 0,016 sec USR: 0,000 sec UTC: 0,078 sec
[ErrorCode: 0x00000001]

Уж очень меня предложение .\ctkey.c:2705:No Imported Key. смущает.
Что бы это значило?

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

Offline Максим Коллегин  
#5 Оставлено : 8 апреля 2013 г. 11:44:41(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 734 раз в 632 постах
Для проверки подписи нужно указывать файл открытого ключа (полученный с помощью -export).
Повторюсь, csptest не нужно использовать для решения этой задачи.
Подпись СМЭВ будет сделать очень проблематично. Для этого проще использовать Java или .NET
Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Zester оставлено 08.04.2013(UTC)
Offline Zester  
#6 Оставлено : 8 апреля 2013 г. 12:09:50(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Получилось! Отвечу себе сам. Нужен публичный ключ или ключ обмена.
Выполнять команду подписания нужно так:
Код:
"c:\Program Files\Crypto Pro\CSP\csptest.exe" -keyset -sign GOST -in SignedInfo_canon.txt -out SignatureValue.txt -password 111111 -container RRR -export public.key -keytype exchange

(в моём случае используется ключ обмена)

в консоле на выходе получил:
Код:
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:READY,ENABLED.
AcquireContext: OK. HCRYPTPROV: 1344144
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Container name: "RRR"

Exchange key is available. HCRYPTKEY: 0x14f9f8
Exporting AT_KEYEXCHANGE key
Output file (public.key) has been saved
Public key ALG_ID: 0x2e23 was exported into file public.key
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
Signature length 64 found.
Signature was done.
Output file (SignatureValue.txt) has been saved
Signature saved into file SignatureValue.txt


Keys in container:
  exchange key
Total: SYS: 0,063 sec USR: 0,031 sec UTC: 0,188 sec
[ErrorCode: 0x00000000]


команда подписания такая:
Код:
"c:\Program Files\Crypto Pro\CSP\csptest.exe" -keyset -verify GOST -in SignedInfo_canon.txt -signature SignatureValue.txt -password 111111 -container RRR -import public.key  -keytype exchange


в консоле на выходе получил:
Код:
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:READY,ENABLED.
AcquireContext: OK. HCRYPTPROV: 1344168
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Blob key ALG_ID: 0x2E23 (imported from file public.key)
Imported key ALG_ID: 0x2E23 (11811)
OID : 1.2.643.2.2.19  Name : ГОСТ Р 34.10-2001
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
Signature was verified OK


Total: SYS: 0,016 sec USR: 0,000 sec UTC: 0,078 sec
[ErrorCode: 0x00000000]


Подпись размера 64 байта в файле SignatureValue.txt
сертификат в контейнере в реестре RRR
публичный ключ (типа exchange) в файле public.key
(при чём при подписании была создана не только подпись, но и публичный ключ)

Такая нехитрая комбинация команд позволяет подписать и проверить подписью XMLDSig, которая используется в СМЭВ.
Доброго всем здоровья, коллегиDancing
thanks 2 пользователей поблагодарили Zester за этот пост.
komex оставлено 29.09.2014(UTC), pavelpat оставлено 14.04.2015(UTC)
Offline Zester  
#7 Оставлено : 8 апреля 2013 г. 12:18:37(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Цитата:
Повторюсь, csptest не нужно использовать для решения этой задачи.
Подпись СМЭВ будет сделать очень проблематично. Для этого проще использовать Java или .NET


maxdm, что вы имеете в виду? Можете более развёрнуто ответить?


Цитата:
Для проверки подписи нужно указывать файл открытого ключа (полученный с помощью -export).
спасибо, догадалсяBoo hoo!

maxdm, в нашей организации проект СМЭВ Поставщика и Потребителя почти завершён на Perl. Можете посоветовать как "прикрутить" CryptoPro
для задачи подписания и проверки подписи XMLDsig конверта SOAP? Очень необходимоBrick wall

Есть замысел пойти по простому пути: подписывать и проверять вызовом из Perl команды консоли (system(команда)).

Какие подводные камни таит это решение?

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

Offline Максим Коллегин  
#8 Оставлено : 8 апреля 2013 г. 14:03:01(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 734 раз в 632 постах
Можно конечно и так..
Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Zester оставлено 08.04.2013(UTC)
Offline Zester  
#9 Оставлено : 8 апреля 2013 г. 14:42:53(UTC)
Zester

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

Группы: Участники
Зарегистрирован: 20.06.2012(UTC)
Сообщений: 30
Мужчина
Чехия
Откуда: Москва

Сказал «Спасибо»: 4 раз
Поблагодарили: 4 раз в 2 постах
Порекомендуйте, пожалуйста, как организовать использование сертификатов для проверки подписи во входящих SOAP-конвертах
на стороне сервиса(т.е. Поставщика)?
Во входящем SOAP-конверте в заголовке содержится сертификат и подпись.
Для каждого SOAP-конверта нужно создать контейнер, прописать туда поступивший сертификат, сгенерировать публичный ключ,
проверить подпись, удалить контейнер?
Или обычно как-то иначе организовывают процесс проверки подписи SOAP-сервисом?
Offline Максим Коллегин  
#10 Оставлено : 8 апреля 2013 г. 14:55:36(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 734 раз в 632 постах
Открытые ключи импортируются в VerifyContext, создавать контейнер не нужно.
Т.е импортируем открытый ключ из сертификат, проверяем подпись, проверяем сертификат.
Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Zester оставлено 08.04.2013(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.