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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline thpg  
#21 Оставлено : 6 мая 2021 г. 15:08:38(UTC)
thpg

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: Alexcrool Перейти к цитате
- В качестве сертификата при шифровании подается сертификат ФСС.

Так-так, а раньше что, шифровали отправку своим, клиентским?

Да нет, вроде сертификатом ФСС и шифровалось в 1.1

Отредактировано пользователем 6 мая 2021 г. 15:16:46(UTC)  | Причина: Не указана

Offline Alexcrool  
#22 Оставлено : 7 мая 2021 г. 5:38:34(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
По многочисленным просьбам нуждающихся выкладываю ВЕСЬ проект. В нем есть готовый exe. Постарался расписать, что нужно для работы. Ну яснее просто некуда!
Рабочий, проверил перед опубликованием. CryptoFss.rar (1,316kb) загружен 35 раз(а).

P.S. Господа, если для решения поставленной задачи вы не знаете и не понимаете что делать, то в этом случае нужно учиться, разбираться, изучать материал. Получить готовый пример это хорошо, много раз так делал и сам, но так вы никогда не станете высококвалифицированным специалистом.
thanks 3 пользователей поблагодарили Alexcrool за этот пост.
thpg оставлено 07.05.2021(UTC), Рафик оставлено 12.07.2021(UTC), Дима2505 оставлено 06.10.2021(UTC)
Offline Alexcrool  
#23 Оставлено : 7 мая 2021 г. 5:56:35(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Автор: thpg
Цитата:
Так-так, а раньше что, шифровали отправку своим, клиентским?
Да нет, вроде сертификатом ФСС и шифровалось в 1.1


Все верно! Но при отправке сообщений в 1.1. в запрос с шифрованным сообщением в тег <X509Certificate> вставляли сертификат пользователя, которым было зашифровано сообщение.

В 2.0. этот сертификат вставляется в ранее подписанное сообщение в разделе <Header><X509Certificate>
перед шифрованием. А в сообщение с зашифрованным сообщением в раздел <X509Certificate> уже ставим сертификат ФСС.

СПЕЦИФИКАЦИЯ
5.2. Структура зашифрованного сообщения
В блоке <soapenv:Header> исходного шифруемого сообщения необходимо добавить блок <X509Certificate>, содержащий публичный ключ сертификата отправителя. Структура сообщения для шифрования после этого будет выглядеть следующим образом:
- EncryptionMethod – в качестве параметра содержит определение алгоритма шифрования;
- KeyInfo – содержит информацию об секретном ключе, сгенерированном для данного информационного взаимодействия (CipherValue) и публичный сертификат сертификат ФСС, на котором были зашифрованы данные при направлении запросов в Фонд, или публичный сертификат пользователя, на котором были зашифрованы данные при формировании ответа в системе ФСС на запрос пользователю (X509Certificate);
- CipherData – зашифрованное сообщение.

Так написано в спецификации. ничего не выдумано. все четко

Отредактировано пользователем 7 мая 2021 г. 5:57:51(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Alexcrool за этот пост.
thpg оставлено 07.05.2021(UTC)
Offline two_oceans  
#24 Оставлено : 11 мая 2021 г. 10:36:37(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 318 раз в 300 постах
Я только не совсем понимаю, если теперь сертификат отправителя внутри зашифрованного сообщения, то как они получают ключ согласования для расшифровки. Регистрируете сертификат отправителя заранее?
Offline Alexcrool  
#25 Оставлено : 11 мая 2021 г. 10:47:38(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Я тебе точно не отвечу. Я не особо в теме. Но сообщение, подписанное, шифруется сертификатом ФСС с помощью асимметричного ключа. Почитай про это отдельно.
А сертификат отправителя он у них есть из реестра МО (добро пожаловать в ЕГИСЗ).
P.S. Поидее процесс расшифровки в ФСС, такой же как и у нас, после получения ответа. Посмотри алгоритм расшифровки и поймешь как получается ключ.

Отредактировано пользователем 11 мая 2021 г. 10:54:36(UTC)  | Причина: Не указана

Offline two_oceans  
#26 Оставлено : 11 мая 2021 г. 12:24:04(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 318 раз в 300 постах
Почитаю, поразбираюсь, что поменялось. Вообще фраза про гост шифрование ассиметричным ключом сразу выглядит как ересь, так как гост-89 (он же магма) симметричный алгоритм, а Кузнечика (не знаю точно какой он) текущие сертифицированные версии КриптоПро не поддерживают. С этим даже разбираться не надо, точка. Других алгоритмов шифрования по гост насколько знаю нет. Посмотрю, может там с эфемерным ключом что-то интересное делается.

Отредактировано пользователем 11 мая 2021 г. 12:41:44(UTC)  | Причина: Не указана

Offline Alexcrool  
#27 Оставлено : 12 мая 2021 г. 4:11:22(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Посмотри. Потом расскажешь. Мне тоже стало интересно послушать че к чему. Правда я в шифровании ничего не понимаю. В гостах не разбираюсь. Главное работает, а как хз. Если распишешь, буду рад почитать.
P.S. А в общем, тему бы перенести. А то я исходник в Delphi выложил, а тут тема .NET

Отредактировано пользователем 12 мая 2021 г. 4:13:08(UTC)  | Причина: Не указана

Offline two_oceans  
#28 Оставлено : 13 мая 2021 г. 8:11:26(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,351
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 318 раз в 300 постах
Посмотрел, не так чтобы совсем до деталей, но действительно фокус в эфемерной ключевой паре. Генерируется эфемерная ключевая пара. Ключ согласования (симметричный) вырабатывается с участием закрытой части эфемерной пары и открытого ключа из сертификата ФСС. Далее (как и раньше) генерируется сессионный ключ (симметричный). Данные (подписанный файл) шифруются сессионным ключом. Сессионный ключ шифруется ключом согласования. К зашифрованному сессионному симметричному ключу в блоб прикрепляется открытая часть эфемерной пары, после чего эфемерная пара, сессионный ключ, ключ согласования уничтожаются.

Та самая открытая часть эфемерной пары (прикрепленная в блоб к зашифрованному сессионному ключу) заменяет открытый ключ из сертификата отправителя, поэтому для расшифровки не нужен сертификат отправителя. ФСС с помощью закрытого ключа из контейнера ФСС и открытой части эфемерной пары получают ключ согласования. Так как он симметричный то им можно и шифровать и расшифровывать - расшифровывает им сессионный ключ. Он тоже симметричный - расшифровывает им данные.

Однако для ответного сообщения сертификат потребуется (и потому его втиснули в подписанное сообщение), так как закрытая часть эфемерной пары уже уничтожена отправителем запроса и если ФСС зашифрует на открытом ключе эфемерной пары, отправитель запроса не сможет расшифровать ответ.

Итого: в процессе шифрования/расшифрования запроса участвуют эфемерная ключевая пара + пара ФСС, сессионный ключ. Для ответа - другая эфемерная ключевая пара + пара отправителя запроса, другой сессионный ключ. Раньше были и для запроса и для ответа пара отправителя запроса + пара ФСС, сессионный ключ.

На первый взгляд, контейнер и сертификат отправителя теперь не участвуют в шифровании сообщения, но это как раз те детали куда еще не смотрел. Если правда так, то наверно возможно зашифровать по старому, просто прикрепить ключ из сертификата вместо открытого ключа эфемерной пары (изменить только подготовку блоба).
Offline Alexcrool  
#29 Оставлено : 13 мая 2021 г. 9:36:14(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Круто! В общем ФСС немного усложнив процесс шифрования повысил безопасность сообщений гулящие по открытой среде интернет.
Offline evarlamov  
#30 Оставлено : 14 июля 2021 г. 8:31:26(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Пытаюсь разобраться с примером от Alexcrool (#22)
Все собрал, скомпилировал, но вот незадача: при запросе ругается на незарегистрированный класс, который находится в c14n.dll

И зарегистрировать эту dll не удается (точка входа DllRegisterServer не найдена).
Если вы использовали этот вариант, как с этим справились?
Offline Alexcrool  
#31 Оставлено : 16 июля 2021 г. 4:18:23(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Это внешняя dll. Она должна лежать в папке с скомпилированным *.exe. Просто скопируй ее из папки с проектом туда, куда создается исполняемый файл программы.
Offline evarlamov  
#32 Оставлено : 16 июля 2021 г. 6:48:39(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Спасибо, разобрался. Прошел еще ступеньку :)
Теперь следующая засада: сервис с подписанием на запросы отвечает, но с подписанием и шифрованием стабильно выдает 500 ошибку сервера.
Подскажете, куда копать?
Offline Alexcrool  
#33 Оставлено : 16 июля 2021 г. 7:07:46(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Сложно сказать. только что проверил. все работает. на тестовом контуре.
кроме кода 500 должно еще что-то быть написано в ошибке.
Offline evarlamov  
#34 Оставлено : 16 июля 2021 г. 11:05:38(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Может ли это быть связано с тем, что я использую тестовый сертификат (оформил на себя, как на частное лицо), у которого атрибута ОГРН нет?
Offline Alexcrool  
#35 Оставлено : 19 июля 2021 г. 4:17:06(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Очень может быть. БЛ выдаются мед. организациям включенные в реестр ФРМО. Без ОГРН скорее всего тебя сервер и отфутболивает с 500. Иначе вернул бы код ошибки информационного взаимодействия, которые перечислены в спецификации.
Offline thpg  
#36 Оставлено : 19 июля 2021 г. 6:14:21(UTC)
thpg

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

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

Сказал(а) «Спасибо»: 3 раз
Ошибка 500 это ответ SOAP об ошибке. Если отправка просто html вручную, то надо включить чтение контента при ошибке 500, чтобы увидеть описание ошибки.
Offline evarlamov  
#37 Оставлено : 21 июля 2021 г. 10:57:36(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Спасибо за рекомендации. Все еще домучиваю вариант из №22
Добрался до того, что могу отправить и получить ответ на шифрованное сообщение.
Расшифровать никак не получается, получаю "Плохие данные".

У меня с сертификатами такова ситуация:
- сертификат FSS_TEST_CERT_2021.cer (полученный здесь https://lk-test.fss.ru/cert.html). Им я шифрую отправляемое сообщение (EncryptSOAPRequest).
- сертификат (назовем его MY.cer) полученный в cryptopro.ru (он установлен в контейнере и, видимо, используется для формирования запроса в ФСС).

Правильно ли я понимаю, что ФСС высылает мне ответ, шифруя его моим открытым ключом (от MY.cer)?

Что можно проверить, если расшифровка не проходит?
У меня ошибка возникает на этом месте:
Цитата:

// Получение сессионного ключа импортом сессионного ключа ФСС (отправителя) на ключе согласования
CheckCryptoCall(CryptImportKey(ACryptoProvider, @remoteSessionKeyBlob[0], Length(remoteSessionKeyBlob), hAgreeKey, 0, @hSessionKey));


Offline Alexcrool  
#38 Оставлено : 21 июля 2021 г. 11:11:35(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
нет. не правильно понимаешь. Если бы ФСС отправил тебе шифрованное сообщения, значит ты ему все отправил правильно и он его принял. "Плохие данные" - это ответ ФСС на твое сообщение. Он не смог его разобрать, расшифровать.
Что значит ошибка возникает на этом месте? не компилирует или при ответе с фсс на этой точке выдает плохие данные?
Если ты не правил мой пример, то при получении ответа он далжен сохраниться в файл (responseDoc.SaveToFile('Resp'+MethodName+'.xml');) посмотри его что там пришло. Если полноценное xml сообщение. то хз. Если ошибка "Плохие данные", то ты ничего не отправил ... путного
Offline evarlamov  
#39 Оставлено : 21 июля 2021 г. 11:20:54(UTC)
evarlamov

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
В файле нормальное xml-содержимое. RespGetNewLNNum.xml (16kb) загружен 2 раз(а).

Я решил, что ФСС получил мое сообщение, вернул шифрованный ответ (видим его в файлике RespGetNewLNNum). И лишь, когда я пытаюсь его расшифровать, получаю ошибку:
sample.png (16kb) загружен 7 раз(а).
Offline Alexcrool  
#40 Оставлено : 21 июля 2021 г. 11:48:06(UTC)
Alexcrool

Статус: Участник

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 8 раз в 3 постах
Еще раз, для тех кто в танке ... пример рабочий, проверил еще раз только что. значит, что неверно подставляешь нужные параметры. поехали ...
1. модуль fmMain - функция GetNewLNNum. тут заполняется req.ogrn := 'ОГРН твоей организации';
2. модуль fmMain - ePoviderContainer.text = 'Имя контейнера пользователя который будет подписывать сообщение'. имя контейнера смотри через КриптоПро - сервис - посмотреть сертификат в контейнере. копируешь имя ключевого контейнер и вставляешь в это поле
3. т.к. все работает через объявленные фсс сервисы, то идет их перехват перед отправкой (для создания подписанного+шифрованного сообщения) и после получения (для расшифровки). смотрим что бы среда проходила эти события
т.к. в примере подпись и подпись+шифрование разделены. проверь что обработчик идет именно в модуль с шифрованием "WSLnCryptoV20"
RIO.OnBeforeExecute := TCrypto.FssOnBeforeExecute;
RIO.OnAfterExecute := TCrypto.FssOnAfterExecute;

4. процедура FssOnBeforeExecute - EncryptSOAPRequest(hCryptoProvider, 'FSS_TEST_CERT_2021.cer', signEnvelopeDoc);- тут надо передать сертификаты фсс. он должен лежать в корне с программой (НЕ С ПРОЕКТОМ). там где компилируется экзешник.
5. процедура EncryptSOAPRequest - заполняем переменные сертификатами:
CertUser := GetCertificate(FCryptoProvider, 'твойже сертификат открытый ключ'); - тут передаем открытый ключ своего сертификата из КОНТЕЙНЕРА. для примера он файловый (как от фсс) нужно его сохранить в DER формате из хранилища
// Получение отправителя. нам нужно для получения сертификата который вставим в запрос
CertFSS := GetCertificate(FCryptoProvider, ARemoteCertPath); - тут получаем сам сертификат acc который передавали шагом выше.
6. процедура расшифровки FssOnAfterExecute - тут в инициализации криптопровайдера проверь что бы былла ссылка на имя контейнера из FssOnBeforeExecute.
7. ну и по шагово пройди через все строки. с подфункций. должно работать. Если сертификаты верные
8. проверил еще раз на всякий. Успех.
Удачи. больше помочь нечем

Отредактировано пользователем 21 июля 2021 г. 11:48:40(UTC)  | Причина: Не указана

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