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

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline komex  
#1 Оставлено : 26 сентября 2014 г. 14:16:16(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Здравсвуйте. Пытаюсь реализовать механизм подписи своих сообщений и проверки подписи входящих сообщений СМЭВ. В документации сказано, что в формировании подписи используется ГОСТ Р 34.10-2001.

Подпись пытался делать одной из команд:
Код:
$ /opt/cprocsp/bin/amd64/cryptcp -sign -nocert -nochain data.xml
$ /opt/cprocsp/bin/amd64/cryptcp -signf -nocert -nochain data.xml


Пример подписи из одного документа: qts+m7XdoIbgCJsWyQOptmRpuPOo6K3ebwmbqidx5SidkxhLY8ZK+tysJPAh4NU9tB9kN7NTmOHLBIRh0V7eMA==
У меня же подпись получается намного больше по размерам.


Кроме необычно большой подписи также не получается выполнить и проверку подписи запросов из примеров.

Проверку выполняю следующим образом:
Код:
$ /opt/cprocsp/bin/amd64/cryptcp -vsignf -nochain -f key.pem data.xml


Получаю такой вывод результата:

Цитата:
CryptCP 3.41 (c) "Crypto-Pro", 2002-2013.
Command prompt Utility for file signature and encryption.

The following certificate will be used:
RDN:Инженер-проект. I кат., Бобкова Светлана Михайловна, ГУП ВЦКП «Жилищное Хозяйство», Санкт-Петербург, RU, s.m.bobkova@vckp.spb.ru
Valid from 25.11.2011 08:38:00 to 25.11.2012 08:47:00

Folder './':
data.xml... Signature verifying...
Error: Invalid cryptographic message type.
/dailybuildsbranches/CSP_3_6r4/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:2010: 0x80091004
[ErrorCode: 0x80091004]


В каком направлении смотреть, что бы можно было правильно подписывать сообщения и проверять подписи?

Отредактировано пользователем 26 сентября 2014 г. 14:17:13(UTC)  | Причина: Опечатка в теме сообщения.

thanks 1 пользователь поблагодарил komex за этот пост.
pavelpat оставлено 14.04.2015(UTC)
Offline Андрей Писарев  
#2 Оставлено : 26 сентября 2014 г. 17:00:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
cryptcp - создает файл CMS (pkcs#7) (подпись + сертификат и т.д.), а в XML используется "значение подписи"
Техническую поддержку оказываем тут
Наша база знаний
Offline komex  
#3 Оставлено : 26 сентября 2014 г. 17:03:58(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Автор: Андрей * Перейти к цитате
cryptcp - создает файл CMS (pkcs#7) (подпись + сертификат и т.д.), а в XML используется "значение подписи"


Спасибо за ответ. Но разве ключ -nocert не исключает сертификат из подписи? Как тогда получить "значение подписи"? Поиск по форуму ничего не дал.
Offline Максим Коллегин  
#4 Оставлено : 27 сентября 2014 г. 2:49:17(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Исключает, но pkcs7 не превращается в RAW подпись. Для СМЭВ есть несколько решений в блоге и на форуме для КриптоПро .NET и JCP.
Знания в базе знаний, поддержка в техподдержке
Offline komex  
#5 Оставлено : 27 сентября 2014 г. 11:51:01(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Да, решения для .Net и Java я видел. Но дело в том, что мы их не используем. Есть ли возможность сделать подпись через пакет cryptcp? Если да, то как?
Offline Максим Коллегин  
#6 Оставлено : 27 сентября 2014 г. 13:21:11(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
А чем вы формируете xml?
Знания в базе знаний, поддержка в техподдержке
Offline komex  
#7 Оставлено : 28 сентября 2014 г. 0:08:43(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Автор: maxdm Перейти к цитате
А чем вы формируете xml?


На PHP. Есть библиотеки, которые отвечают за подписание и проверку ЭЦП. Но дело в том, что они не работают с ГОСТ. Поэтому нужно сделать свою реализацию.
Проблема не в формировании XML, а именно подписании и проверке. Можно ли как-то выполнить задачу с помосью набора команд cryptcp?
Offline Максим Коллегин  
#8 Оставлено : 28 сентября 2014 г. 1:06:11(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Нельзя, но чистую подпись можно получить csptest, ее нужно будет только перевернуть.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
komex оставлено 29.09.2014(UTC)
Offline komex  
#9 Оставлено : 29 сентября 2014 г. 12:52:09(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Автор: maxdm Перейти к цитате
Нельзя, но чистую подпись можно получить csptest, ее нужно будет только перевернуть.


Спасибо за ответ. Пытаюсь сделать подпись, но что-то не получается.

Код:
$ ./csptest -keyset -sign GOST -verifycontext -container RaUser-60002963-592a-4e32-96c8-8e7304f7b424 -in ~/data.xml                   
CSP (Type:75) v3.9.8000 KC1 Release Ver:3.9.8171 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 10694307
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Container name: "RaUser-60002963-592a-4e32-96c8-8e7304f7b424"
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
An error occurred in running the program.
/dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/csptest/ctkey.c:3207:SignHash()
Error number 0x8009000d (2148073485).
Key does not exist.

Total: 
[ErrorCode: 0x8009000d]


Не хватает какого-то ключа (видимо, закрытого). Что еще нужно добавить, что бы получилось подписать?

P.S. Убрал ключ -verifycontext (как в примере) и получил следующий вывод:

Цитата:
CSP (Type:75) v3.9.8000 KC1 Release Ver:3.9.8171 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 32718499
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Container name: "RaUser-60002963-592a-4e32-96c8-8e7304f7b424"
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x1f59d23
Hash object created with alg: GOST 0x801E
The data buffer has been hashed.
An error occurred in running the program.
/dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/csptest/ctkey.c:3207:SignHash()
Error number 0x80090016 (2148073494).
Keyset does not exist

Total:
[ErrorCode: 0x80090016]


Отсутствует ключ для подписи? Или что это значит?

Отредактировано пользователем 29 сентября 2014 г. 15:33:04(UTC)  | Причина: Не указана

Offline komex  
#10 Оставлено : 29 сентября 2014 г. 17:21:48(UTC)
komex

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

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

Сказал «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Вроде с подписанием справился, спасибо товарищу Zester Offline из ветки Проверка подписи СМЭВ при помощи csptest.

Осталось реализовать проверку подписи. Есть сообщение, есть подпись сообщения и есть публичный сертификат. В своем посте #12, Zester Offline пишет, что это можно сделать так:

Код:
$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -verify GOST -in SignedInfo_canon.txt -signature SignatureValue.txt -certificate Cert.cer -keytype exchange


Но у меня csptest ругается на ключ -certificate. Как указать, что брать сертификат нужно из файла Cert.cer? Или обязательно нужно каждый раз его импортировать?

Отредактировано пользователем 29 сентября 2014 г. 17:22:25(UTC)  | Причина: Опечатка в номере сообщения

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