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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline vshev  
#1 Оставлено : 16 июля 2020 г. 17:23:54(UTC)
vshev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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]


Кто виноват и что делать?

Спасибо
Offline Дмитрий Пичулин  
#2 Оставлено : 16 июля 2020 г. 17:32:15(UTC)
pd

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,001
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 26 раз
Поблагодарили: 165 раз в 143 постах
Что-то непохоже на base64, кто такой формат base64 съедает?
Знания в базе знаний, поддержка в техподдержке
Offline vshev  
#3 Оставлено : 16 июля 2020 г. 18:20:13(UTC)
vshev

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Дмитрий Пичулин Перейти к цитате
Что-то непохоже на base64, кто такой формат base64 съедает?


там 3 компоненты
- заголовок (алгоритм подписи и отпечаток ключа)
- тело
- подпись

все это соединено через "." (заголовок.тело.подпись)

более подробно - на jwt.io

все по отдельности - прекрасно "раскодируется" через "openssl enc -base64 -d" или base64decode.org

вопрос - именно в "расшифровке" подписи (qlqnNrBgfKcbAWyGVpsMCYXW_UfodO_ak3ZWtzLFqkxOnAxUkSSDRvn7rwDhhoTz_8lhxtRpPf7eJvPczdetjQ) с помощью публичного ключа.
Offline vpArth  
#4 Оставлено : 18 июля 2020 г. 17:28:47(UTC)
vpArth

Статус: Новичок

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

А как подписывал? cryptcp -sign?
Offline Андрей *  
#5 Оставлено : 18 июля 2020 г. 18:52:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Автор: 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) загружен 7 раз(а).

Snimok ehkrana ot 2020-07-18 19-51-38.png (33kb) загружен 5 раз(а).

Отредактировано пользователем 18 июля 2020 г. 20:17:06(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 18 июля 2020 г. 18:54:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Цитата:
{
"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) загружен 5 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 18 июля 2020 г. 19:06:33(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Цитата:
/opt/cprocsp/bin/amd64/cryptcp -verify JWT.input.txt.sgn JWT.input.txt


что в файлах?
Техническую поддержку оказываем тут
Наша база знаний
Offline vshev  
#8 Оставлено : 18 июля 2020 г. 21:18:20(UTC)
vshev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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
Offline vshev  
#9 Оставлено : 18 июля 2020 г. 21:20:36(UTC)
vshev

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: vpArth Перейти к цитате
А как подписывал? cryptcp -sign?


без понятия, как подписано. прилетел токен, нужно проверить подпись - подписали этим сертификатом, или "левая" подпись.

в заголовке "отпечатки" сертификата совпадают с присланным (отдельно прислали почтой архив с сертификатом)
Offline Андрей *  
#10 Оставлено : 18 июля 2020 г. 22:48:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Автор: 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 ждёт.
Техническую поддержку оказываем тут
Наша база знаний
Offline vshev  
#11 Оставлено : 18 июля 2020 г. 23:01:59(UTC)
vshev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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) загружен 5 раз(а).), "кодируется" в base64 и "цепляется" через "."
2) "раскодированная" из base64 подпись - 64 байта ( JWT.input.txt.sgn (1kb) загружен 2 раз(а).)
3) первоначально пытался проверить гостовским плагином к openssl ( ver.sh (1kb) загружен 0 раз(а).), но тоже не получилось. порекомендовали использовать криптопро.
4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост"
5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used")
Offline Андрей *  
#12 Оставлено : 18 июля 2020 г. 23:11:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Пример для проверки 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 и "объединенные строки через точку - не нужно передавать утилите)


Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
vshev оставлено 18.07.2020(UTC)
Offline Андрей *  
#13 Оставлено : 18 июля 2020 г. 23:15:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Автор: vshev Перейти к цитате

1) по теории - да, подписывается приватным ключем хэш "заголовок"."тело" ( JWT.input.txt (1kb) загружен 5 раз(а).), "кодируется" в base64 и "цепляется" через "."
2) "раскодированная" из base64 подпись - 64 байта ( JWT.input.txt.sgn (1kb) загружен 2 раз(а).)
3) первоначально пытался проверить гостовским плагином к openssl ( ver.sh (1kb) загружен 0 раз(а).), но тоже не получилось. порекомендовали использовать криптопро.
4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост"
5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used")


5) cryptcp работает с RAW? поиск сертификата - по его серийному и прочее - это из CMS, здесь же - чистая подпись, нужно явно указывать, какой сертификат использовать и при этом - другой утилите...
Техническую поддержку оказываем тут
Наша база знаний
Offline vshev  
#14 Оставлено : 18 июля 2020 г. 23:17:12(UTC)
vshev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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]
Offline vshev  
#15 Оставлено : 18 июля 2020 г. 23:19:44(UTC)
vshev

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Автор: vshev Перейти к цитате

1) по теории - да, подписывается приватным ключем хэш "заголовок"."тело" ( JWT.input.txt (1kb) загружен 5 раз(а).), "кодируется" в base64 и "цепляется" через "."
2) "раскодированная" из base64 подпись - 64 байта ( JWT.input.txt.sgn (1kb) загружен 2 раз(а).)
3) первоначально пытался проверить гостовским плагином к openssl ( ver.sh (1kb) загружен 0 раз(а).), но тоже не получилось. порекомендовали использовать криптопро.
4) "госдеповские" алгоритмы (rsha) - прекрасно работают и "проверяются" на аналогичном проекте. а тут - "нас обязали использовать гост"
5) cryptcp дергает ранее импортированный публичный ключ подписанта из "реестра" ("The following certificate will be used")


5) cryptcp работает с RAW? поиск сертификата - по его серийному и прочее - это из CMS, здесь же - чистая подпись, нужно явно указывать, какой сертификат использовать и при этом - другой утилите...


гуглил как раз по вопросу проверки подписи, и советовали как раз cryptcp
Offline Андрей *  
#16 Оставлено : 18 июля 2020 г. 23:23:14(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Cms содержит подписи, сертификаты..
RAW - само значение подписи
Техническую поддержку оказываем тут
Наша база знаний
Offline vshev  
#17 Оставлено : 18 июля 2020 г. 23:34:14(UTC)
vshev

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
спасибо, технически вопрос решен.

остался вопрос лицензирования. в бухгалтерии куплено (и используется) виндовая версия (и, подозреваю, не одна).

для использования линуксового csptest - нужна еще одна версия или мы можем использовать в рамках купленной виндовой версии? есть ли ограничения (количество запущенных нод (активных и ожидающих), процессоры \ потоки, пользователи итд)?
Offline Андрей *  
#18 Оставлено : 18 июля 2020 г. 23:38:14(UTC)
Андрей *

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

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

Сказал «Спасибо»: 343 раз
Поблагодарили: 1371 раз в 1059 постах
Проверка не требует лицензии.
Техническую поддержку оказываем тут
Наша база знаний
Offline lab2  
#19 Оставлено : 11 августа 2020 г. 10:25:54(UTC)
lab2

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

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

Сказал(а) «Спасибо»: 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?
столкнулись с подобной проблемой, пока ищем сертификат),
нужен контрольный пример
спасибо

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