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

Уведомление

Icon
Error

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

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

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

Прошу подсказать в правильности алгоритма проверки подписи ГОСТ Р 34.10-2012 тк получаю ошибку Invalid Signature. (0x80090006)

Есть хэш (Base64Url(Header) || ‘.’ || Base64Url(Payload))
Цитата:
$header = 'eyJraWQiOiI2ZjdiNGJhOC02OGM5LTQzYzgtYTA2Yi05MjdhODhmNjBmZjgiLCJ0eXAiOiJKT1NFIiwiYWxnIjoiZ29zdDM0LjEwLTIwMTIifQ';
$body = 'eyJudW1iZXIiOiI3IiwiZGF0ZSI6IjIwMjAtMDktMTAiLCJkaWdlc3RTaWduYXR1cmVzIjpbXSwiYmFua1N0YXR1cyI6IkFDQ0VQVEVEIiwiYmFua0NvbW1lbnQiOm51bGwsImV4dGVybmFsSWQiOiJmYWU0NjA4Zi1lMTdkLTRmOTQtYTAxOC04YmU2MTJlZmRmNDAiLCJhbW91bnQiOiIxMDAwMC4wMCIsIm9wZXJhdGlvbkNvZGUiOiIwMSIsImRlbGl2ZXJ5S2luZCI6ItGN0LvQtdC60YLRgNC-0L3QvdC-IiwicHJpb3JpdHkiOiI1IiwidXJnZW5jeUNvZGUiOiJOT1JNQUwiLCJ2b0NvZGUiOm51bGwsInB1cnBvc2UiOiJUcmFuc0lkX1NiZXIgW2ZhZTQ2MDhmLWUxN2QtNGY5NC1hMDE4LThiZTYxMmVmZGY0MF0g0J7Qv9C70LDRgtCwINC_0L4g0LTQvtCz0L7QstC-0YDRgyDQvtGCIDIwMjAtMDctMjAg4oSW0K_QoDAxNDA1ODMyMSIsImRlcGFydG1lbnRhbEluZm8iOm51bGwsInBheWVyTmFtZSI6ItCe0J7QniBcItCi0J4t0J_QsNGA0YLQvdC10YAtNDI2LTAxXCIiLCJwYXllcklubiI6IjUwMTUxMDAxMTAiLCJwYXllcktwcCI6bnVsbCwicGF5ZXJBY2NvdW50IjoiNDA3MDI4MTA3NDA2MTI0NDExOTQiLCJwYXllckJhbmtCaWMiOiIwNDQ1MjUyMjUiLCJwYXllckJhbmtDb3JyQWNjb3VudCI6IjMwMTAxODEwNDAwMDAwMDAwMjI1IiwicGF5ZWVOYW1lIjoi0J7QntCeIFwi0J_QkNCg0KLQndCV0KAtNDI2XCIiLCJwYXllZUlubiI6IjUwNDg1NDk1MDMiLCJwYXllZUtwcCI6bnVsbCwicGF5ZWVBY2NvdW50IjoiNDA3MDI4MTA4NDA5Njc3NDA0MTEiLCJwYXllZUJhbmtCaWMiOiIwNDQ1MjUyMjUiLCJwYXllZUJhbmtDb3JyQWNjb3VudCI6IjMwMTAxODEwNDAwMDAwMDAwMjI1IiwiY3J1Y2lhbEZpZWxkc0hhc2giOm51bGwsInZhdCI6eyJ0eXBlIjoiSU5DTFVERUQiLCJyYXRlIjoiMjAiLCJhbW91bnQiOiIxNjY2LjY3In0sImluY29tZVR5cGVDb2RlIjpudWxsfQ';
$hash = $header . '.' . $body;


Подпись:
Цитата:
$sgn = 'Lsiy6NhMOFCduPk_3n2PdnYxJe1m3nHQfd3H1nwQvQZdbgOKR0d9kkyfkFeTSoZDUGl9Mqcx5G-Djk7oDZzGAw';
$sgn = base64url_decode($sgn)


И сертификат (ключ):
Цитата:
$cert = '-----BEGIN CERTIFICATE-----
MIIEcTCCBB6gAwIBAgIKd6K4zdda7gm/ATAKBggqhQMHAQEDAjCCAWsxGzAZBgNV
BAgMEjc3INCzLtCc0L7RgdC60LLQsDEYMBYGA1UEBwwP0LMu0JzQvtGB0LrQstCw
MRowGAYIKoUDA4EDAQESDDAwNzcwNzA4Mzg5MzEmMCQGA1UECQwd0YPQuy4g0JLQ
sNCy0LjQu9C+0LLQsCwg0LQuMTkxGDAWBgUqhQNkARINMTAyNzcwMDEzMjE5NTEL
MAkGA1UEBhMCUlUxKzApBgNVBAoMItCf0JDQniDQodCx0LXRgNCx0LDQvdC6ICjQ
otCV0KHQoikxQzBBBgNVBAsMOtCU0LXQv9Cw0YDRgtCw0LzQtdC90YIg0LHQtdC3
0L7Qv9Cw0YHQvdC+0YHRgtC4ICjQotCV0KHQoikxMjAwBgNVBAMMKdCf0JDQniDQ
odCx0LXRgNCx0LDQvdC6INCj0KYgKNCi0JXQodCiIFEpMSEwHwYJKoZIhvcNAQkB
FhJjYXNicmZAc2JlcmJhbmsucnUwHhcNMTkxMTA1MTQxMTAwWhcNMjEwMjA1MTQx
MjU1WjCCATQxHzAdBgNVBAoMFtCh0LHQtdGA0KLQtdGF0KLQtdGB0YIxCzAJBgNV
BAYTAlJVMRwwGgYDVQQIDBM3NyDQsy4g0JzQvtGB0LrQstCwMRgwFgYDVQQHDA/Q
sy7QnNC+0YHQutCy0LAxJjAkBgNVBAkMHdGD0LsuINCS0LDQstC40LvQvtCy0LAs
INC0LjE5MRowGAYIKoUDA4EDAQESDDAwNzcwNzA4Mzg5MzEYMBYGBSqFA2QBEg0x
MDI3NzAwMTMyMTk1MSEwHwYDVQQDDBjQkNCR0KEg0LHQtdC3INC40LzQtdC90Lgx
SzBJBgNVBAsMQtCi0LXRgdGC0L7QstC+0LUg0L/QvtC00YDQsNC30LTQtdC70LXQ
vdC40LUg0KHQsdC10YDQotC10YXQotC10YHRgjBmMB8GCCqFAwcBAQEBMBMGByqF
AwICIwIGCCqFAwcBAQICA0MABEDX37dM9i+lFT5ICLvZmX2aDyBfF3DcKLAxTvaC
qcIeC+0fwRP50F80a4XgvULeLPSte7x1yxTJCGDnITY2HVt7o4HPMIHMMDAGByqF
AwN7AwEEJQwjU0JUSjRCN1Jh0KLQtdGB0YJf0KHQkdCR0J7Qm18yMDEy0J0wCQYD
VR0TBAIwADAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFOIHMvk6MmgJzlyIklyV
brm0HitQMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3dsLnNiZXJiYW5rLnJ1
L2NhL3Rlc3RfMjAxMng1MDkuY3JsMB8GA1UdIwQYMBaAFER+sfJUNI8vPMx8c81k
E7FatnguMAoGCCqFAwcBAQMCA0EACFnB37fU7PZCnnT6aboDkwjFmcTy7lT3l86l
b+75JEEUyufQeFX7xpwzOgdbKh6bd+wDoihoa6PPJatIwSncLg==
-----END CERTIFICATE-----';


Код проверки:
Цитата:
$cp = new \CPCertificate();
$cp->Import($cert);

$hd = new \CPHashedData();
$hd->set_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
$hd->Hash(bin2hex($hash));

$rs = new \CPRawSignature();
$rs->VerifyHash($hd, bin2hex($sgn), $cp);


Нужно ли переводить подпись и хэш в bin2hex?
Нужно ли выполнять base64_decode?

Отредактировано пользователем 30 ноября 2020 г. 17:09:25(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 30 ноября 2020 г. 16:45:04(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
https://www.cryptopro.ru...&m=119924#post119924

Обратите внимание на:
Цитата:
$hd->SetHashValue($digest);
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 30 ноября 2020 г. 16:48:33(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
Автор: pz6tnk Перейти к цитате


Нужно ли переводить подпись и хэш в bin2hex?
Нужно ли выполнять base64_encode?


https://docs.cryptopro.r.../irawsignatureverifyhash
Техническую поддержку оказываем тут
Наша база знаний
Offline pz6tnk  
#4 Оставлено : 30 ноября 2020 г. 17:00:53(UTC)
pz6tnk

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

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

Автор: Андрей * Перейти к цитате
https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=119924#post119924

Обратите внимание на:
Цитата:
$hd->SetHashValue($digest);



Я так понимаю, что разница $hd->SetHashValue($digest) и $hd->Hash($hash) как раз в $digest - подготовлен хэш или нет. Как получить $digest средствами КриптоПро?
Offline pz6tnk  
#5 Оставлено : 30 ноября 2020 г. 17:06:41(UTC)
pz6tnk

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

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

Автор: Андрей * Перейти к цитате
Автор: pz6tnk Перейти к цитате


Нужно ли переводить подпись и хэш в bin2hex?
Нужно ли выполнять base64_encode?


https://docs.cryptopro.r.../irawsignatureverifyhash


Разделение hex значения на 2 байта выполнил согласно докам, не помогло, та же ошибка.

Может нудно выполнять проверку через класс CPSignedData?

Отредактировано пользователем 30 ноября 2020 г. 17:08:43(UTC)  | Причина: Не указана

Offline Андрей *  
#6 Оставлено : 30 ноября 2020 г. 17:13:49(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
Подпись корректная и сертификат тот?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 30 ноября 2020 г. 17:24:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
...

Отредактировано пользователем 30 ноября 2020 г. 17:25:27(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline pz6tnk  
#8 Оставлено : 30 ноября 2020 г. 17:29:00(UTC)
pz6tnk

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

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

Автор: Андрей * Перейти к цитате
...


именно две строки с разделителем JWS заголовок.тело

цитата
Цитата:
Подпись вычисляется по алгоритму указанному в Заголовке (Header) в параметре alg, в данном случае gost34.10-2012, и вычисляется от исходных данных: Base64Url(Header) || ‘.’ || Base64Url(Payload).
Offline Андрей *  
#9 Оставлено : 30 ноября 2020 г. 17:39:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах

Snimok ehkrana ot 2020-11-30 18-37-03.png (25kb) загружен 8 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#10 Оставлено : 30 ноября 2020 г. 17:43:37(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
подпись:
E2 8C 2B 8E 8D C4 83 05 D9 8B 9F F3 ED D7 F8 67
67 13 52 DE 66 ED 17 0D D7 DD 7C 6D C7 01 DB 60
D5 E6 30 A8 74 74 D7 29 C4 F9 09 75 39 A4 68 34
05 96 D7 23 7A 13 4E F6 38 E8 E4 8E D0 C9 6C 30

перевернул:
03 C6 9C 0D E8 4E 8E 83 6F E4 31 A7 32 7D 69 50
43 86 4A 93 57 90 9F 4C 92 7D 47 47 8A 03 6E 5D
06 BD 10 7C D6 C7 DD 7D D0 71 DE 66 ED 25 31 76
76 8F 7D DE 3F F9 B8 9D 50 38 4C D8 E8 B2 C8 2E

проверяется.

testX.zip (2kb) загружен 1 раз(а).

Snimok ehkrana ot 2020-11-30 18-42-35.png (25kb) загружен 8 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#11 Оставлено : 30 ноября 2020 г. 17:53:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
Автор: pz6tnk Перейти к цитате

Может нудно выполнять проверку через класс CPSignedData?


CPSignedData проверяет подпись в CMS (ASN.1 структура).
А имеется только RAW (само значение - 32 байта, 64 в hex).
Техническую поддержку оказываем тут
Наша база знаний
Offline pz6tnk  
#12 Оставлено : 1 декабря 2020 г. 12:03:20(UTC)
pz6tnk

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

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

Автор: Андрей * Перейти к цитате
подпись:
E2 8C 2B 8E 8D C4 83 05 D9 8B 9F F3 ED D7 F8 67
67 13 52 DE 66 ED 17 0D D7 DD 7C 6D C7 01 DB 60
D5 E6 30 A8 74 74 D7 29 C4 F9 09 75 39 A4 68 34
05 96 D7 23 7A 13 4E F6 38 E8 E4 8E D0 C9 6C 30

перевернул:
03 C6 9C 0D E8 4E 8E 83 6F E4 31 A7 32 7D 69 50
43 86 4A 93 57 90 9F 4C 92 7D 47 47 8A 03 6E 5D
06 BD 10 7C D6 C7 DD 7D D0 71 DE 66 ED 25 31 76
76 8F 7D DE 3F F9 B8 9D 50 38 4C D8 E8 B2 C8 2E

проверяется.

testX.zip (2kb) загружен 1 раз(а).

Snimok ehkrana ot 2020-11-30 18-42-35.png (25kb) загружен 8 раз(а).


Спасибо большое, заработало. Получается для проверки не нужна лицензия?
Offline Андрей *  
#13 Оставлено : 1 декабря 2020 г. 12:25:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 361 раз
Поблагодарили: 1420 раз в 1094 постах
Автор: pz6tnk Перейти к цитате
Автор: Андрей * Перейти к цитате
подпись:
E2 8C 2B 8E 8D C4 83 05 D9 8B 9F F3 ED D7 F8 67
67 13 52 DE 66 ED 17 0D D7 DD 7C 6D C7 01 DB 60
D5 E6 30 A8 74 74 D7 29 C4 F9 09 75 39 A4 68 34
05 96 D7 23 7A 13 4E F6 38 E8 E4 8E D0 C9 6C 30

перевернул:
03 C6 9C 0D E8 4E 8E 83 6F E4 31 A7 32 7D 69 50
43 86 4A 93 57 90 9F 4C 92 7D 47 47 8A 03 6E 5D
06 BD 10 7C D6 C7 DD 7D D0 71 DE 66 ED 25 31 76
76 8F 7D DE 3F F9 B8 9D 50 38 4C D8 E8 B2 C8 2E

проверяется.

testX.zip (2kb) загружен 1 раз(а).

Snimok ehkrana ot 2020-11-30 18-42-35.png (25kb) загружен 8 раз(а).


Спасибо большое, заработало. Получается для проверки не нужна лицензия?


Да, для проверки ЭП не требуется лицензия.

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