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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline JfbYtd-7900  
#1 Оставлено : 10 октября 2019 г. 17:33:03(UTC)
JfbYtd-7900

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте! Кто знает? Пожалуйста, подскажите.

Написал программу на JCP по взаимодействию с ФСС (вроде как ФСС работает с JCP). Теперь проделываю то же самое, ну почти :), на CSP. Не получается.

1. Получил тестовый ключ и сертификат. Ключ ГОСТ 2012-256
2. Загрузил ключ в CSP хранилище, получил имя te-457df0ca-7703-4d47-9ae3-e9f050111928.
3. В CSP привязал сертификат.
4. Выгрузил это дело из CSP хранилища в JCP хранилище.

Сторона JCP:
Прогнал через работающую программу JCP взаимодействия с ФСС. Получил ответ от ФСС, getPrivateLN, работает!

Сторона CSP:
Использовал переписав немного движок JCP
1. Входные данные привел к каноникализации как в JCP и при помощи
Код:
cryptcp.x64.exe -hashAlg 1.2.643.7.1.1.2.2 -hash -dir d:\csp_hashes d:\digest.xml

получил хеш в бинарном виде и перевел в base64. Он совпал с тем что в JCP
Код:
<DigestValue>2DVbn5QbieuxPkHrnTJzD6KRzJBEjqEffdfsLnZDrJ8=</DigestValue>

2. Входные данные
Код:
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/><ds:Reference URI="#REGNO_7729015074"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/><DigestValue>2DVbn5QbieuxPkHrnTJzD6KRzJBEjqEffdfsLnZDrJ8=</DigestValue></ds:Reference></ds:SignedInfo>

привел к каноникализации как в JCP и при помощи
Код:
csptest.exe -keyset -sign GOST12_256 -provtype 80 -export d:\public.key -in d:\sign.xml -out d:\sign.xml.hsh -container te-457df0ca-7703-4d47-9ae3-e9f050111928 -password 1234 -keytype exchange
получил подпись в бинарном виде и перевел в base64.
3. Все подставил, соединил, скомпоновал и послал запрос в ФСС и получил оплеуху :)
Код:
ORA-20001: Некорректная подпись головной организации: ЭЦП неверна. INVALID_SIGNATURE ЭП недействительна. Обратитесь к разработчику программного обеспечения, на котором осуществлялось подписание данных.


Запросы получились идентичные (госты в тегах, сами данные и пр.), не считая signValue и это понятно.
1. Свалидировал в CSP то что получил через CSP.
Код:
csptest.exe -keyset -verify GOST12_256 -in d:\sign.xml -signature d:\sign.xml.hsh -password 1234 -container te-457df0ca-7703-4d47-9ae3-e9f050111928 -import d:\public.key  -keytype exchange
- выдало что подпись валидная!

2. Свалидировал в JCP, прочитав бинарный файл того что получил через CSP (d:\sign.xml.hsh) - проверка не прошла!

3. Свалидировал в CSP то что получил через JCP
Код:
csptest.exe -keyset -verify GOST12_256 -in d:\sign.xml -signature d:\jcp_sign.hsh -password 1234 -container te-457df0ca-7703-4d47-9ae3-e9f050111928 -import d:\public.key  -keytype exchange
- проверка не прошла!

Как так получается, что подписи полученные в CSP И JCP отличаются так что не проходят друг у друга проверку?
Offline JfbYtd-7900  
#2 Оставлено : 10 октября 2019 г. 17:47:09(UTC)
JfbYtd-7900

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

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

Поблагодарили: 1 раз в 1 постах
Что интересно в JCP бинарный файл подписи 65 байт из-за лишнего символа в конце, в шестнадцатиричном виде = 04
МEёOюN˜Вц”xЇbТ ¤TдSлzgД‚§qђ¤Ёњз<aЂx}єeы;·ЭS&КAs
шэжл
А в CSP 64 байта
П;ґFиtJ€UQВxаЋњGѕ&кёvґe’*БШЙ‚iЪ…Kь?З§гРqзЮи(ВЪбQwЂ„AП9?ц€ш”о

Нет, это ложный след, повторная генерация подписи в JCP файл 64 байта
3ьф„GM в?†¦*РЖкњ¶±_U
ELъT¬@E&§•ђ«?тEHSї.d™‹Аgџи1;›a'K{‚qo

Отредактировано пользователем 10 октября 2019 г. 17:57:48(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#3 Оставлено : 10 октября 2019 г. 19:33:02(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 291 раз в 271 постах
Какой алгоритм подписи в jcp?
Попробуйте инвертировать порядок байт
Техническую поддержку оказываем тут
Наша база знаний
Offline JfbYtd-7900  
#4 Оставлено : 11 октября 2019 г. 16:37:20(UTC)
JfbYtd-7900

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

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

Поблагодарили: 1 раз в 1 постах
Автор: Санчир Момолдаев Перейти к цитате
Какой алгоритм подписи в jcp?
Попробуйте инвертировать порядок байт


Уф, большое спасибо! :)

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