Статус: Участник
Группы: Участники
Зарегистрирован: 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== У меня же подпись получается намного больше по размерам.
MIAGCSqGSIb3DQEHAqCAMIACAQExDDAKBgYqhQMCAgkFADCABgkqhkiG9w0BBwGg gCSABIICljxkczpTaWduZWRJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBB bGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRu IyI+PC9kczpDYW5vbmljYWxpemF0aW9uTWV0aG9kPjxkczpTaWduYXR1cmVNZXRo b2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWct bW9yZSNnb3N0cjM0MTAyMDAxLWdvc3RyMzQxMSI+PC9kczpTaWduYXR1cmVNZXRo b2Q+PGRzOlJlZmVyZW5jZSBVUkk9IiNJZC04MDliOTU5OC00NDZhLTQxODctYjBi My1jYzg3YTg3YmQ2NzMiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxn b3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMi PjwvZHM6VHJhbnNmb3JtPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9k IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1v cmUjZ29zdHIzNDExIj48L2RzOkRpZ2VzdE1ldGhvZD48ZHM6RGlnZXN0VmFsdWU+ L0RpQkhVSVNFZnQvSzRnK3pKNFRYZW1Hd3krbjBzd1RYYUI2WUphc3pqND08L2Rz OkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz4KAAAA AAAAMYIEYTCCBF0CAQEwggGbMIIBizEaMBgGCCqFAwOBAwEBEgwwMDc4MTUwMDA4 NzAxGDAWBgUqhQNkARINMTAzNzg0MzA0MjkwNzEcMBoGCSqGSIb3DQEJARYNY2FA aWFjLnNwYi5ydTEwMC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQ uSDRhtC10L3RgtGAMSgwJgYDVQQKDB/QodCf0LEg0JPQo9CfIMKr0KHQn9CxINCY 0JDQpsK7MUowSAYDVQQJDEHQotGA0LDQvdGB0L/QvtGA0YLQvdGL0Lkg0L/QtdGA LiDQtC4gNiDQu9C40YIuINCQINC/0L7QvC4gN9CdIDjQnTEmMCQGA1UEBwwd0KHQ sNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxKTAnBgNVBAgMIDc4INCh0LDQvdC6 0YIt0J/QtdGC0LXRgNCx0YPRgNCzMQswCQYDVQQGEwJSVTEtMCsGA1UEAwwk0KPQ piDQodCf0LEg0JPQo9CfIMKr0KHQn9CxINCY0JDQpsK7AgopeZ3UAAAAACjeMAoG BiqFAwICCQUAoIICXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 DQEJBTEPFw0xNDA5MTgwNzE2MzdaMC8GCSqGSIb3DQEJBDEiBCAqArW3YvxDb0CD 43jzjdgL4Tou72BOy+jzY0xwpMNcCTCCAfAGCyqGSIb3DQEJEAIvMYIB3zCCAdsw ggHXMIIB0zAIBgYqhQMCAgkEIKJZFLWURSGHw7N36URkxVW+YBfJqFX+ArF71cC4 MElWMIIBozCCAZOkggGPMIIBizEaMBgGCCqFAwOBAwEBEgwwMDc4MTUwMDA4NzAx GDAWBgUqhQNkARINMTAzNzg0MzA0MjkwNzEcMBoGCSqGSIb3DQEJARYNY2FAaWFj LnNwYi5ydTEwMC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDR htC10L3RgtGAMSgwJgYDVQQKDB/QodCf0LEg0JPQo9CfIMKr0KHQn9CxINCY0JDQ psK7MUowSAYDVQQJDEHQotGA0LDQvdGB0L/QvtGA0YLQvdGL0Lkg0L/QtdGALiDQ tC4gNiDQu9C40YIuINCQINC/0L7QvC4gN9CdIDjQnTEmMCQGA1UEBwwd0KHQsNC9 0LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt 0J/QtdGC0LXRgNCx0YPRgNCzMQswCQYDVQQGEwJSVTEtMCsGA1UEAwwk0KPQpiDQ odCf0LEg0JPQo9CfIMKr0KHQn9CxINCY0JDQpsK7AgopeZ3UAAAAACjeMAoGBiqF AwICEwUABEB1mBPAVzOINPOvjH8s3k698hRbl7mlSchBGSa+e2uCuCQ3sdE8ujKo 8lrzIxn3c008LMQTdMnfST4Ue0lALIIDAAAAAAAA
Кроме необычно большой подписи также не получается выполнить и проверку подписи запросов из примеров. Проверку выполняю следующим образом: Код:$ /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.ruValid 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)
| Причина: Опечатка в теме сообщения.
|
1 пользователь поблагодарил komex за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,323 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
cryptcp - создает файл CMS (pkcs#7) (подпись + сертификат и т.д.), а в XML используется "значение подписи" |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Автор: Андрей * cryptcp - создает файл CMS (pkcs#7) (подпись + сертификат и т.д.), а в XML используется "значение подписи" Спасибо за ответ. Но разве ключ -nocert не исключает сертификат из подписи? Как тогда получить "значение подписи"? Поиск по форуму ничего не дал.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Исключает, но pkcs7 не превращается в RAW подпись. Для СМЭВ есть несколько решений в блоге и на форуме для КриптоПро .NET и JCP. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Да, решения для .Net и Java я видел. Но дело в том, что мы их не используем. Есть ли возможность сделать подпись через пакет cryptcp? Если да, то как?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Автор: maxdm А чем вы формируете xml? На PHP. Есть библиотеки, которые отвечают за подписание и проверку ЭЦП. Но дело в том, что они не работают с ГОСТ. Поэтому нужно сделать свою реализацию. Проблема не в формировании XML, а именно подписании и проверке. Можно ли как-то выполнить задачу с помосью набора команд cryptcp?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Нельзя, но чистую подпись можно получить csptest, ее нужно будет только перевернуть. |
|
1 пользователь поблагодарил Максим Коллегин за этот пост.
|
komex оставлено 29.09.2014(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Вроде с подписанием справился, спасибо товарищу
Zester
из ветки Проверка подписи СМЭВ при помощи csptest. Осталось реализовать проверку подписи. Есть сообщение, есть подпись сообщения и есть публичный сертификат. В своем посте #12,
Zester
пишет, что это можно сделать так: Код:$ /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)
| Причина: Опечатка в номере сообщения
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close