Статус: Новичок
Группы: Участники
Зарегистрирован: 15.02.2021(UTC) Сообщений: 5 
|
Пришла беда откуда не ждали - ФСС вводит спецификацию 2.0. Результат - алгоритмы отработанные для спецификации 1 не работают для спецификации 2. Открываю спецификацию 2, ищу отличия от вер. 1. Цитата из спецификации: "CALG_DH_GR3410_12_256_EPHEM - идентификатор алгоритма обмена ключей по Диффи-Хеллману на базе закрытого ключа эфемерной пары." Где я должен указать этот идентификатор, нужно ли мне его указывать? Цитата из спецификации: "Возможные параметры шифратора GostJCE/CBC/ISO10126Padding". Сразу пугает слово "ВОЗМОЖНЫЕ". Смотрю в отладчике параметры шифратора на работающем алгоритме для спецификации 1. Mode = CFB; Padding = None; Аналога для GostJCE не нахожу. Это провайдер? Где же мне его найти в КриптоПро CSP? меняю параметры шифратора на: Mode = CBC; Padding = ISO10126Padding; Ответ сервиса: "Не удалось расшифровать сообщение." Кто виноват, мне понятно. Что делать?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,536  Откуда: Иркутская область Сказал(а) «Спасибо»: 105 раз Поблагодарили: 375 раз в 354 постах
|
Добрый день. Спецификация похоже для как обычно Джавы, на которой пишут свою сторону разработчики спецификации. Для дотнета (и других средств подписания/шифрования) эти "GostJCE" все "абракадабра" для которой надо подобрать адекватные названия уже из дотнета. Снова придется методом тыка и сравнения с программой самого ФСС.
На уровне предположений (пока не читал спецификацию 2.0): что алгоритм это вот все то, что раньше делали вручную по схеме обмена ключей - теперь это запихано на стороне ФСС в штатную функцию. "CALG_" это обычно самый нижний уровень функций. И ключевая пара теперь эфемерная (создается на короткое время; опять же предположу, что отправителю теперь не нужен долговременный ключ и сертификат - тогда вместо сертификата требуется указать открытый ключ эфемерной пары). То есть либо тоже запихиваем в стандарт (по идее для этого уже должен быть провайдер) либо опять же подбираем параметры при которых это может работать с прошлой версией (с долговременными ключами - какая-то вырезка открытого ключа из сертификата, может быть).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,601  Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 613 раз в 580 постах
|
Здравствуйте. Автор: zzz17  CALG_DH_GR3410_12_256_EPHEM - идентификатор алгоритма обмена ключей по Диффи-Хеллману на базе закрытого ключа эфемерной пары." Где я должен указать этот идентификатор, нужно ли мне его указывать? "Возможные параметры шифратора GostJCE/CBC/ISO10126Padding". Аналога для GostJCE не нахожу.
CALG_DH_GR3410_12_256_EPHEM - идентификатор алгоритма выработки ключа обмена, должен быть в WinCryptEx.h. Вероятно, указывается при создании эфемерного ключа с участием открытого ключа другой стороны для экспорта ключа шифрования (для вставки в сообщение в адрес получателя) или с участием закрытого ключа для импорта блоба ключа шифрования (на стороне получателя). Из JCPxml (java-библиотека в составе JCP провайдера) GostJCE - это GOST28147. Алгоритм зарегистрирован, например, в jcp.xml в составе JCPxml.jar. Соответственно, алгоритм шифрования данных - GOST28147/CBC/ISO10126Padding Отредактировано пользователем 15 февраля 2021 г. 13:40:47(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.10.2019(UTC) Сообщений: 4  Сказал(а) «Спасибо»: 1 раз
|
Добрый день. zzz17, получилось у Вас отправить в ФСС зашифрованный запрос по спецификации 2.0? На .net тоже не работает вариант для спецификации 1.1. Ошибка от ФСС: "не удалось расшифровать запрос".
Может работники КриптоПро будут столь любезны и поделятся рабочим примером как используя КриптоПро.Net SDK зашифровать данные для ФСС по спецификации 2.0? Из известных мне ранее разработчиков, писавших софт для 1.1, еще ни у кого не получилось отправить запрос по спецификации 2.0 (сервис страхователя для получения ЭЛН 2.0).
Готов купить пример (где и с кем обсудить?). С другой стороны, фирме Крипто Про должно быть выгодно поделиться этим примером бесплатно, чтобы те, кто строит инфраструктуру выбрали в качестве провайдера КриптоПро CSP и КриптоПро.Net в качестве средства доступа к КриптоПро CSP.
Мы вот купили КриптоПро.Net для каждого АРМ, с которого обращаются в ФСС. Даже по спецификации ФСС 1.1 не получилось реализовать все силами только КриптоПро.Net SDK для ключа ГОСТ-2012. Пришлось добавлять в проект opensource GostCryptograhy (MIT) для того, чтобы было возможным дешифровать ответ.
Причем темы на этом форуме появляются относительно ЭЛН ФСС, однако ответы только в стиле - "сто раз обсуждалось, ищите". А решения находились не на этом форуме, что странно, а на cyberforum, github и в переписке с коллегами. Наверное, так быть не должно?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.02.2021(UTC) Сообщений: 5 
|
Добрый день, Alex AD! Нет, пока спецификацию 2.0 победить не удалось.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
У кого-нибудь получилось отправить шифрованный запрос на ФСС по 2.0?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.02.2021(UTC) Сообщений: 5 
|
Добрый день, Alexcrool!
Я посмотрел пример по указанной вами ссылке. Есть дата - 2019 г. Это спецификация 1. Номер спецификации подтверждается и фрагментом заготовки xml-файла: <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" Для спецификации 2: <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Content".
Что мы имеем? В форуме КриптоПро большое количество ссылок на примеры построения приложений для спецификации 1 с использованием: - высокоуровневых функций Крипто API на языках С#(КриптоПро NET), java (КриптоПро Java CSP). Здесь нет эфемерной пары(явно). Параметры шифратора CFB/None. - низкоуровневых функций Крипто API на языках С, Delphi. Здесь идет игра с эфемерной парой, с согласованием ключа на алгоритме Диффи-Хеллмана. Параметры шифратора GostJCE/CBC/ISO10126Padding.
Становится понятна фраза из спецификации 2: "Возможные параметры шифратора GostJCE/CBC/ISO10126Padding". Действительно, возможны эти параметры, возможны другие.
Выводы: 1. Спецификация 2 (как документ) ничем не отличается от спецификации 1. Новые параграфы спецификации 2 в разделе "шифрование" описывают частный случай реализации шифрования и не содержат полезной информации. 2. В спецификация 2 нет данных об изменениях сделанных в алгоритме/параметрах шифрования, поэтому на основе спецификации 2 невозможно сделать работающее приложение.
Какой то чудак решил, что с сервисами ФСС могут работать только "правильные" компании? Как бы дело не закончилось большим скандалом.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
Я тоже в итоге пришел к такому выводу. И сделал запрос в 1С. Там раздел больничные листы в "зарплаты и кадры" реализован. Очень надеюсь на сотрудничество с ними!!!
А все таки как думаете, играть нужно с параметрами шифрования? CFB,CBC,Padding... остальное вроде по API не убавить не прибавить
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.02.2021(UTC) Сообщений: 5 
|
Играться можно. Но в IT-секторе есть устоявшиеся правила. Разработчик при изменении алгоритмов обязан доводить информацию до всех заинтересованных сторон.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
Шифрование делаю в первый раз. Хочу спросить... Решил проверить а шифрует ли программа. применил код
s := ASOAPRequest.DocumentElement.XML; Buffer := TEncoding.Unicode.GetBytes(s);
DataLen := Length(Buffer); BufLen := length(Buffer);
Win32Check(CryptEncrypt(hSessionKey, 0, True, 0, nil, @BufLen, 0)); SetLength(Buffer, BufLen); Win32Check(CryptEncrypt(hSessionKey, 0, True, 0, @Buffer[0], @DataLen, BufLen));
// allocate buffer space DataLen := Length(Buffer); // decrypt buffer to to string Win32Check(CryptDecrypt(hSessionKey, 0, True, 0, @Buffer[0], @DataLen)); s := TEncoding.Unicode.GetString(Buffer, 0, DataLen);
но вместо xml <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" .... получаю это: 肤ଅ툄連penv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" .... hSessionKey ключ который собираю по спецификации 2.0. Это нормально? может поэтому фсс выдает ошибку "Не могу расшифровать"
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.11.2020(UTC) Сообщений: 21
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 1 раз в 1 постах
|
Автор: zzz17  Какой то чудак решил, что с сервисами ФСС могут работать только "правильные" компании? Как бы дело не закончилось большим скандалом.
Я тоже пришел к такому выводу в https://github.com/AlexM...stCryptography/issues/39Цитата: Похоже на то, что государственный фонд нас принуждает для собственных разработок делать заказ в "правильных" (неправильные просто не знают как зашифровать) фирмах по разработке ПО.
Одно радует: ФСС планировали начать работу только по спецификации 2.0 с 1 февраля 2021 года. До сих пор работает и 1.1, что пока спасает. Но что делать с 2.0 - не знаю.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
Я разобрался со спецификацией 2.0. После оценки, понял, что она составлена немного не корректно, но она верная, нужно просто внимательно читать и сопоставлять примеры с представленной структурой. Все отличие от 1.1: - в атрибутах тегов xml документе. Проверьте правильность подготовленного документа. Особенно атрибуты "ds:" и "xenc:". Они должны быть везде где есть их описание. - В качестве сертификата при шифровании подается сертификат ФСС. Все как написано в спецификации. - Перед шифрованием в подготовленный подписанный документ необходимо вставить блок со сертификатом <X509Certificate>, для шифрования ответа. сертификат вставляется так же как и ФСС.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.11.2020(UTC) Сообщений: 21
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Alexcrool  Я разобрался со спецификацией 2.0. После оценки, понял, что она составлена немного не корректно, но она верная У Вас получилось отправить зашифрованный запрос в ФСС и получить ответ по спецификации 2.0?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
Цитата:Да. Я же это написал сообщением выше! Приложил доработанный модуль, выложенный 3 года назад ( Шифрование XML), под спецификацию 2.0. P.S. Работает с заранее подготовленными схемами (см. ссылку), но схема должна соответствовать спецификации 2.0!  Crypto.rar (9kb) загружен 42 раз(а).Отредактировано пользователем 15 апреля 2021 г. 4:33:05(UTC)
| Причина: Не указана
|
 4 пользователей поблагодарили Alexcrool за этот пост.
|
reash оставлено 15.04.2021(UTC), alex_nur оставлено 15.04.2021(UTC), vova2282 оставлено 28.04.2021(UTC), thpg оставлено 06.05.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.11.2020(UTC) Сообщений: 21
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 1 раз в 1 постах
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
а что там понимать? Я выложил адаптированный под 2.0 модуль. Качаешь пример 3-летней давности. Копируешь файл из моего вложения в пример с заменой файла. В делфи компилируешь приложение. запускаешь. Если не работает, значит подготовленные xml (regiemk_fss_encrypt_body.xml и regiemk_fss_sign_envelope.xml) документы из примера не соответствуют 2.0. правишь и все.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.11.2020(UTC) Сообщений: 21
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Alexcrool  а что там понимать? Я выложил адаптированный под 2.0 модуль. Качаешь пример 3-летней давности. Копируешь файл из моего вложения в пример с заменой файла. В делфи компилируешь приложение. запускаешь. Если не работает, значит подготовленные xml (regiemk_fss_encrypt_body.xml и regiemk_fss_sign_envelope.xml) документы из примера не соответствуют 2.0. правишь и все. У меня проект на C#.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2019(UTC) Сообщений: 27   Сказал «Спасибо»: 3 раз Поблагодарили: 9 раз в 3 постах
|
Принципы шифрования для всех едины. Последовательность действий (шифрования и расшифрования)тут представлена в полном объеме. Ищи что делает каждый оператор из примера (читай комменты), ищи аналог на C#. Я первый раз шифрованием занимался. Тоже лес темный. Никто не отвечал на форумах, если обращал внимание на мои посты. Все сам, все сам. Желаю успехов!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.11.2017(UTC) Сообщений: 10  Сказал(а) «Спасибо»: 3 раз Поблагодарили: 4 раз в 4 постах
|
Господа, номера больничных со снилсами с тестового контура у кого-нибудь есть "лишние"? Отредактировано пользователем 6 мая 2021 г. 19:33:20(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close