Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Приветствую. Возникла необходимость проверить гост-2012 подпись jwt-токена. Цитата:ew0KICAiYWxnIjogImdvc3QzNC4xMC0yMDEyIiwNCiAgImtpZCI6ICI1OTRFMTAxQTBCRjYwREU3Q0RGNDdBQTZBRjhCMjRGNDAxOTE2RkIzIg0KfQ.eyJxcmNJZCI6IkFTMTAwMDFUMDY1RkhNNk44VDZSUEVKMzdVQjMzSVVRIiwidHJ4SWQiOiJBMDE5MjExMjk1MjE3MjAxMDAwMDA0NTcwNkZERDk5RiIsImFtb3VudCI6NTAwMDAsIm9wZXJhdGlvbklkIjozNzQxODUzNCwic3RhdHVzIjoiY29tcGxldGVkIiwib3BlcmF0aW9uVGltZXN0YW1wIjoiMjAyMC0wNy0xMFQxMToyOTo1MS45MDZaIn0.qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ
После "раскодирования" (base64) непосредственно подписи попытка ее сверки (расшифровка) с помощью публичного сертификата подписанта выдает следующую ошибку Код:/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt
CryptCP 5.0 (c) "Crypto-Pro", 2002-2020.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
...
Certificate chains are checked.
Folder './':
JWT.input.txt.sgn... Signature verifying...
Error: Invalid cryptographic message type.
/dailybuildsbranches/CSP_5_0r2i/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:2028: 0x80091004
[ErrorCode: 0x80091004]
Кто виноват и что делать? Спасибо
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC) Сообщений: 1,128 Откуда: КРИПТО-ПРО
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 187 раз в 161 постах
|
Что-то непохоже на base64, кто такой формат base64 съедает? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Дмитрий Пичулин  Что-то непохоже на base64, кто такой формат base64 съедает? там 3 компоненты - заголовок (алгоритм подписи и отпечаток ключа) - тело - подпись все это соединено через "." (заголовок.тело.подпись) более подробно - на jwt.io все по отдельности - прекрасно "раскодируется" через "openssl enc -base64 -d" или base64decode.org вопрос - именно в "расшифровке" подписи (qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ) с помощью публичного ключа.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.07.2020(UTC) Сообщений: 1
|
А как подписывал? cryptcp -sign?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Автор: vshev  Автор: Дмитрий Пичулин  Что-то непохоже на base64, кто такой формат base64 съедает? там 3 компоненты - заголовок (алгоритм подписи и отпечаток ключа) - тело - подпись все это соединено через "." (заголовок.тело.подпись) более подробно - на jwt.io все по отдельности - прекрасно "раскодируется" через "openssl enc -base64 -d" или base64decode.org вопрос - именно в "расшифровке" подписи (qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ) с помощью публичного ключа. в base64 закодировано:  Snimok ehkrana ot 2020-07-18 19-47-49.png (13kb) загружен 10 раз(а).  Snimok ehkrana ot 2020-07-18 19-51-38.png (33kb) загружен 8 раз(а).Отредактировано пользователем 18 июля 2020 г. 20:17:06(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Цитата:{ "qrcId": "AS10001T065FHM6N8T6RPEJ37UB33IUQ", "trxId": "A0192112952172010000045706FDD99F", "amount": 50000, "operationId": 37418534, "status": "completed", "operationTimestamp": "2020-07-10T11:29:51.906Z" }  Snimok ehkrana ot 2020-07-18 19-53-33.png (73kb) загружен 7 раз(а). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Цитата:/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt что в файлах? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *  Цитата:/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt что в файлах? JWT.input.txt == "сообщение" (заголовок и тело) токена Цитата:ew0KICAiYWxnIjogImdvc3QzNC4xMC0yMDEyIiwNCiAgImtpZCI6ICI1OTRFMTAxQTBCRjYwREU3Q0RGNDdBQTZBRjhCMjRGNDAxOTE2RkIzIg0KfQ.eyJxcmNJZCI6IkFTMTAwMDFUMDY1RkhNNk44VDZSUEVKMzdVQjMzSVVRIiwidHJ4SWQiOiJBMDE5MjExMjk1MjE3MjAxMDAwMDA0NTcwNkZERDk5RiIsImFtb3VudCI6NTAwMDAsIm9wZXJhdGlvbklkIjozNzQxODUzNCwic3RhdHVzIjoiY29tcGxldGVkIiwib3BlcmF0aW9uVGltZXN0YW1wIjoiMjAyMC0wNy0xMFQxMToyOTo1MS45MDZaIn0 JWT.input.txt.sgn == "подпись" токена (раскодированно-из-base64) Цитата:qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: vpArth  А как подписывал? cryptcp -sign? без понятия, как подписано. прилетел токен, нужно проверить подпись - подписали этим сертификатом, или "левая" подпись. в заголовке "отпечатки" сертификата совпадают с присланным (отдельно прислали почтой архив с сертификатом)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Автор: vshev  Автор: Андрей *  Цитата:/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt что в файлах? JWT.input.txt == "сообщение" (заголовок и тело) токена JWT.input.txt.sgn == "подпись" токена (раскодированно-из-base64) Цитата:qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ "сообщение" (заголовок и тело) токена - именно это было прохешировано и подписано? "подпись" 62 байта при декодировании или у меня неправильно софт декодирует? _ - на что заменяется? cryptcp каким образом узнает о сертификате (задача - получить открытый ключ для проверки подписи)? Цитата: Error: Invalid cryptographic message type.
на вход CMS ждёт. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *  Автор: vshev  Автор: Андрей *  Цитата:/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt что в файлах? JWT.input.txt == "сообщение" (заголовок и тело) токена JWT.input.txt.sgn == "подпись" токена (раскодированно-из-base64) Цитата:qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ "сообщение" (заголовок и тело) токена - именно это было прохешировано и подписано? "подпись" 62 байта при декодировании или у меня неправильно софт декодирует? _ - на что заменяется? cryptcp каким образом узнает о сертификате (задача - получить открытый ключ для проверки подписи)? Цитата: Error: Invalid cryptographic message type.
на вход CMS ждёт. 1) по теории - да, подписывается приватным ключем хэш "заголовок"."тело" (  JWT.input.txt (1kb) загружен 7 раз(а).), "кодируется" в base64 и "цепляется" через "." 2) "раскодированная" из base64 подпись - 64 байта (  JWT.input.txt.sgn (1kb) загружен 5 раз(а).) 3) первоначально пытался проверить гостовским плагином к openssl (  ver.sh (1kb) загружен 1 раз(а).), но тоже не получилось. порекомендовали использовать криптопро. 4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост" 5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used")
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Пример для проверки RAW ЭП через консольную утилиту csptest Цитата:"C:\Program Files (x86)\Crypto Pro\CSP\csptest.exe" -keys -verify GOST12_256 -in k:\data -signature k:\data.sign -cert k:\sign.cer
.... Hash object created with alg: GOST12_256 0x8021 The data buffer has been hashed. Signature was verified OK
Total: SYS: 1,172 sec USR: 0,281 sec UTC: 1,868 sec [ErrorCode: 0x00000000] замените на свои данные: k:\data - то, что хешировалось и подписывалось (а не какие-то объединенные данные) k:\data.sign - сама RAW-подпись k:\sign.cer - сертификат, который подписывали p.s. данные в бинарном виде (base64 и "объединенные строки через точку - не нужно передавать утилите)
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
vshev оставлено 18.07.2020(UTC)
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Автор: vshev  1) по теории - да, подписывается приватным ключем хэш "заголовок"."тело" (  JWT.input.txt (1kb) загружен 7 раз(а).), "кодируется" в base64 и "цепляется" через "." 2) "раскодированная" из base64 подпись - 64 байта (  JWT.input.txt.sgn (1kb) загружен 5 раз(а).) 3) первоначально пытался проверить гостовским плагином к openssl (  ver.sh (1kb) загружен 1 раз(а).), но тоже не получилось. порекомендовали использовать криптопро. 4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост" 5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used") 5) cryptcp работает с RAW? поиск сертификата - по его серийному и прочее - это из CMS, здесь же - чистая подпись, нужно явно указывать, какой сертификат использовать и при этом - другой утилите... |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *  Пример для проверки RAW ЭП через консольную утилиту csptest Цитата:"C:\Program Files (x86)\Crypto Pro\CSP\csptest.exe" -keys -verify GOST12_256 -in k:\data -signature k:\data.sign -cert k:\sign.cer
.... Hash object created with alg: GOST12_256 0x8021 The data buffer has been hashed. Signature was verified OK
Total: SYS: 1,172 sec USR: 0,281 sec UTC: 1,868 sec [ErrorCode: 0x00000000] замените на свои данные: k:\data - то, что хешировалось и подписывалось (а не какие-то объединенные данные) k:\data.sign - сама RAW-подпись k:\sign.cer - сертификат, который подписывали p.s. данные в бинарном виде (base64 и "объединенные строки через точку - не нужно передавать утилите)
$ /opt/cprocsp/bin/amd64/csptest -keys -verify GOST12_256 -in JWT.input.txt -signature JWT.input.txt.sgn -cert 123.cer CSP (Type:80) v5.0.10006 KC1 Release Ver:5.0.11823 OS:Linux CPU:AMD64 FastCode:READY:SSSE3,AVX. AcquireContext: OK. HCRYPTPROV: 22175971 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP Public key imported from cert file: 123.cer Hash object created with alg: GOST12_256 0x8021 The data buffer has been hashed. Signature was verified OK Total: SYS: 0.010 sec USR: 0.010 sec UTC: 0.030 sec [ErrorCode: 0x00000000]
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *  Автор: vshev  1) по теории - да, подписывается приватным ключем хэш "заголовок"."тело" (  JWT.input.txt (1kb) загружен 7 раз(а).), "кодируется" в base64 и "цепляется" через "." 2) "раскодированная" из base64 подпись - 64 байта (  JWT.input.txt.sgn (1kb) загружен 5 раз(а).) 3) первоначально пытался проверить гостовским плагином к openssl (  ver.sh (1kb) загружен 1 раз(а).), но тоже не получилось. порекомендовали использовать криптопро. 4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост" 5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used") 5) cryptcp работает с RAW? поиск сертификата - по его серийному и прочее - это из CMS, здесь же - чистая подпись, нужно явно указывать, какой сертификат использовать и при этом - другой утилите... гуглил как раз по вопросу проверки подписи, и советовали как раз cryptcp
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Cms содержит подписи, сертификаты.. RAW - само значение подписи |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.07.2020(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
спасибо, технически вопрос решен.
остался вопрос лицензирования. в бухгалтерии куплено (и используется) виндовая версия (и, подозреваю, не одна).
для использования линуксового csptest - нужна еще одна версия или мы можем использовать в рамках купленной виндовой версии? есть ли ограничения (количество запущенных нод (активных и ожидающих), процессоры \ потоки, пользователи итд)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 10,092   Сказал «Спасибо»: 372 раз Поблагодарили: 1483 раз в 1144 постах
|
Проверка не требует лицензии. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2019(UTC) Сообщений: 37  Сказал(а) «Спасибо»: 20 раз Поблагодарили: 2 раз в 1 постах
|
Автор: vshev 
$ /opt/cprocsp/bin/amd64/csptest -keys -verify GOST12_256 -in JWT.input.txt -signature JWT.input.txt.sgn -cert 123.cer
проверяемые данные и подпись - есть в теме, можете выложить и сертификат 123.cer? столкнулись с подобной проблемой, пока ищем сертификат), нужен контрольный пример спасибо
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.11.2020(UTC) Сообщений: 1 
|
Автор: Андрей *  Пример для проверки RAW ЭП через консольную утилиту csptest Цитата:"C:\Program Files (x86)\Crypto Pro\CSP\csptest.exe" -keys -verify GOST12_256 -in k:\data -signature k:\data.sign -cert k:\sign.cer
.... Hash object created with alg: GOST12_256 0x8021 The data buffer has been hashed. Signature was verified OK
Total: SYS: 1,172 sec USR: 0,281 sec UTC: 1,868 sec [ErrorCode: 0x00000000] замените на свои данные: k:\data - то, что хешировалось и подписывалось (а не какие-то объединенные данные) k:\data.sign - сама RAW-подпись k:\sign.cer - сертификат, который подписывали p.s. данные в бинарном виде (base64 и "объединенные строки через точку - не нужно передавать утилите)
Подскажите, пожалуйста, почему при запуске этой команды мне выдается ошибка csptest: unrecognized option `-cert' Если убрать этот параметр, то говорит: An error occurred in running the program. /dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/ctkey.c:3445:No Imported Key. Пытаюсь проверить подпись xml файла из СМЭВ. Работаю под linux.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close