Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
Я вообще скажем так полный нуб в криптографии. И тем более в нюансах CPro, но вот пориходится использовать подпись в одном проекте.
Значит API НСИС
Там требуется - взять URL, сконкатенировать с солью и меткой времени, подписать полученную строку в формате RAW + их внутренний ID серта.
Одно приложение на Windows использует COM объект Cades-что-то там (потом смогу посмотреть если надо и укажу что конкретно) и им подписывает, получает 64-байтовую RAW подпись, она проходит потом проверку.
Надо сделать с нуля другое приложение, на Linux и только с базовой установкой СSP.
Сверили, что сертификат точно используется какой надо (по тумбпринту и серийному номеру)
Мы попробовали 2мя путями в лоб и оба не прошли
Первый был очевидный
1. положить нужную строку в файл, скажем src.txt 2. вызвать `csptest -keys -sign GOST12_256 -cont <MYCONTAINER> -keytype exchange -in src.txt -out src.sig; cat src.sig | base64`
Вроде это и есть RAW, требуемое по документации. Но это НЕ прокатило. Ругается сайт. Тех поддержка говорит, что подписываемый контент мы формируем верно, серт что надо. Но вот подпись у них проверку ну не проходит.
Дальше уже пошли метания, биения в бубен которые ни к чему не привели.
Появилась мысль, что нужна CADES и что `csptest` его не использует. Техподдержка не может толком ответить нужен CADES или нет вижу только, что COM объект в Windows решении используется со словом CADES в названии...
Стали делать cryptcp -sign -der -cadesbes ... но потом не понятно как извлечь RAW из полученного PKCS7, ну попробовали, так наудачку закинуть EncryptedDigest который через openssl смогли там идентифицировать и дернуть - но это я так понял не RAW в общем он тоже не подошел.
В общем очень надеюсь, что кто-то знает что с этим делать. Прямо замучились....
P.S. мне еще пишет ТП "правильно ли вы хэшируете?", я считал, что csptest сам в процессе подписания хэширует сырой контент, может я ошибся и надо еще было отдельно хэшировать?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
Ну похоже там именно CADES нужна и возникает резонный вопрос как же делать RAW с Cades на Linux, и настоятельно желательно или чисто консольными утилитами, либо минимальным кодингом на golang, сам пакет c cades-pki я поставил. Но я так понимаю, что csptest с ним не работает, а cryptcp не делает RAW...
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,521
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 618 раз в 428 постах
|
Здравствуйте. С точки зрения безопасности этот протокол вызывает вопросы. Вероятно, имеется в виду RawSignature. Чисто технически, кажется, что вам надо заменить base64 на hexdump в духе: Код:csptest -keys -sign GOST12_256 -cont <MYCONTAINER> -keytype exchange -in src.txt -out src.sig; cat src.sig | hexdump -e '/1 "%02X"'
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
Нет, у них там именно base64
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,521
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 618 раз в 428 постах
|
Может, у вас перенос строки в конце файла, который пытаетесь подписать? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
Тоже уже проверял. Пока ощущение тупика и что какая то магия. В требованиях нет ничего про cades например.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,839   Сказал «Спасибо»: 584 раз Поблагодарили: 2316 раз в 1814 постах
|
Автор: comdiv  Тоже уже проверял. Пока ощущение тупика и что какая то магия. В требованиях нет ничего про cades например. такой вариант: в Windows и Linux подпишите src.txt и пришлите всё для проверки (что отправляли\сертификат) и нет ли проблемы в кодировании base64? urlsafe? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
На Windows сейчас пока не могу сделать Прикрепляю raw.src (что подписываю) - там нет ни переносов ни символов вне ASCII - и на Windows и на Linux будет одинаково Прикрепляю raw.bin (это результат команды) csptest -keys -sign GOST12_256 -cont <CONTAINER_NAME> -keytype exchange -in raw.src -out raw.binПрикрепляю raw.base64 (это собственно raw.bin) но в base64 (без переносов) base64 -w 0 raw.binПрикрепляю raw.cer (это сертификат которым собственно подписываем) Я убеждался что подпись верна через csptest -keys -verify GOST12_256 -in raw.src -signature raw.bin -cert raw.cer  raw.zip (3kb) загружен 1 раз(а).
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.11.2018(UTC) Сообщений: 12  Откуда: Екатеринбург Сказал(а) «Спасибо»: 1 раз
|
Все, разобрался - в документации их требуется big-endian, а CSP выдает по умолчанию little-endian
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close