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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline techMarine  
#1 Оставлено : 9 ноября 2016 г. 11:47:44(UTC)
techMarine

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день.
Работаю над клиентом для СМЭВ (в частности АСУР НСИ) и подобных систем. В требованиях стоит формирование хеша по ГОСТ Р 34.11-94. Подпись по ГОСТ Р 34.10-2001. Ключ экспортирован утилитой P12FromGostCSP.
клиент для Windows на С++

Собрал OpenSSL 1.0.2j + gost engine в static lib. openssl.cnf настроен по дефолту, как в README.gost
В качестве soap фреймворка использую gSoap

На выходе получаю сформированных soap пакет с подписями и хешем сформированными по правилам, описанных в руководствах.
Хеш пересчитываю "вручную" через консольную утилиту openSSL - сходится
Проверка подписи открытым ключом также проходит.

Со стороны сервиса приходит ответ, "Некорректная цифровая подпись, или цифровая подпись отсутствует (Подпись №1 не прошла проверку)". При этом, клиент на WCF + криптоПРО отрабатывает отлично. Техподдержка молчит.

Был бы благодарен за наводку в какую сторону копать.
Offline buzikove  
#2 Оставлено : 14 ноября 2016 г. 10:18:35(UTC)
buzikove

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

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

Сказал(а) «Спасибо»: 1 раз
День добрый.
Решаю такую же задачу, тоже на gSoap, но под Linux. Правда, я на более раннем этапе.
В Вашем случае я бы начал с того, что Wireshark-ом посмотрел бы траффик, что именно уходит на сервер в одном и другом случае.
Offline techMarine  
#3 Оставлено : 14 ноября 2016 г. 10:38:37(UTC)
techMarine

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый.
Без wireShark не удалось бы дойти до текущего результата.
SOAP-пакет формируется правильно, проблема именно в алгоритмах формирования подписи и хеша.

На данный момент, я решил прекратить разработку текущей версии сервиса и перейти к "рекомендуемым" средствам (С# + КриптоПРО)
Остановился из-за того, что не смог привести к единообразию результаты хеш-функций от криптоПРО (генерируемые WCF) и хеш от openSSL.
Максимум к чему удалось придти - одинаковый хеш от
openssl dgst -md_gost94
и утилиты cpverify.

Не сразу обратил внимание, в README.GOST от openssl указано, что по ГОСТу хеш представляется в little-endian. OpenSSL дает лишь дамп хеша, по идее его нужно преобразовать, тогда хеши от утилиты cpverify и openssl будут идентичны. Но хеш, получаемый от WCF отличается от генерируемого openSSL. И соответсвенно, ЭП от OpenSSL не проходит проверку средставми КриптоПРО и ЭП от криптоПРО не проходит проверку от OpenSSL. Вот на этом этапе я остановился.

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