Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добрый день. Коллеги, прошу помощи, что-то я уже всю голову сломал в чем дело. Вкратце ситауция такая: уже почти год мучаюсь с добавлением поддержки гост-2012 в свою программу для подписи по форматам СМЭВ. Сначала не было верных примеров, реализовал и отложил задачу. Потом примеры появились, но не проходили проверку. Потом исправил ошибку с указанием алгоритма гост-2001 для вычисления хэша SignedInfo и SignatureValue по гост-2012 в xmldsig стало проходить проверку. Тем не менее, хэши гост-2012 из signedinfo не сходятся. А если при проверке хэши не сходятся, то и подписать верно не получится. Как бы понятно, что вариантов немного: или функция хэширования дает неверный результат или неверный алгоритм хэша или неправильный endian или неправильный текст. Если смотреть методом исключения, то вроде как что неверная функция хэша отпадает (82801) и неверный endian отпадает (проверено оба), значение возвращаемое функцией также верное, как я понимаю для гост-2012 даже не предусмотрено установки параметров хэша. По логике остаются трансформы для получения текста. Да дело оказалось в тексте, но не в трансформах, а в замене адресов пространств СМЭВ, когда у отправителя и получателя разные версии конверта СМЭВ 3 (например, у одного 1.2, у другого 1.1). На верное подписание эта ошибка не влияет.Отредактировано пользователем 19 августа 2019 г. 13:15:22(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Спасибо за оперативный ответ. Честно говоря, свою программу я начал писать именно из-за того, что .Net и Java мне не хотелось осваивать. Поэтому наверно советом воспользоваться не получится. Отредактировано пользователем 19 августа 2019 г. 13:16:18(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Короче получается какое-то вообще сумасшествие: перепроверил снова документ с подписью гис гмп по гост-2012 и смэв по гост-2001 через инструмент смэв. Получилось что гис гмп подпись неверная, а смэв верная. Там же проверил 2 других запроса в котором только гост-2012, оба прошли проверку и в инструменте смэв и в моей программе. Выходит подпись гис гмп и правда битая, буду разбираться техподдержками сиэв (почему смэв подписал ответ с битой подписью или испортил подпись гис гмп) и гис гмп (почему битая).
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
На заметку пилящим интеграцию через СМЭВ 3 - пришел ответ поддержки СМЭВ о том, что со стороны гис гмп как ни странно все верно и "подпись ответа в SendResponseRequest верна". Проблема в том, что ответ гис гмп был отправлен в конверте смэв 3 версии 1.2, а запрос на получение ответа GetResponseRequest отправлен в версии 1.1, поэтому СМЭВ ответил GetResponseResponse как будто ответ был в версии 1.1. При этом (уже своими словами) адреса пространств в SenderProvidedResponseData в ответе гис гмп не благословлены отдельным объявлением адреса и потому за счет изменения адресов пространств в вышестоящих тегах стали не по версии 1.2, а версии 1.1 и из-за этого проверка дает ошибку целостности ЭП. Другими словами, ЭП нарушается при формировании ответа СМЭВ, если были разные версии конверта СМЭВ 3 у отправителя и получателя. Немного в шоке от такого понимания кроссверсионности конверта. И правда, если в тексте, полученном после трансформов, поменять 1.1 на 1.2, то хэш сходится. В ответе много неиспользуемых объявления пространств с версией 1.2 (все выкидываются про эксклюзивной каноникализации), то есть надо по лишнему объявлению во вложенном теге подписываемого тега или в самой подписи надо догадаться что ответ был в другой версии конверта СМЭВ и заменить адрес пространства имен подписанного элемента. Отредактировано пользователем 19 августа 2019 г. 12:53:36(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close