Как стать автором
Обновить

Комментарии 16

Почему с криптопро и смэвом всегда всё не слава богу? Идут годы, меняются детали, не меняется главное — люди не прекращают пердолиться с этими вопросами снова и снова

Два года прошло вот с этой статьи: habrahabr.ru/post/282225

С тех пор у меня в личке отписались десятки людей, которые вообще не могут понять, что происходит и как подступиться к задаче. Учитывая что о своих проблемах пишут только самые активные — в реальности таких людей должно быть, сотни

Имхо, правильный способ — сделать такое SDK, которое бы своим API показывало, как решать типичные вопросы. У людей не должно возникать вообще никаких вопросов по поводу самого типового сценария использования, это должен быть 1 метод апи, который работает железно.
Здравствуйте, Олег!

Я читал Вашу статью про Побег из КриптоПро. Такое нельзя пропускать.
Безусловно мощно и полезно. Спасибо Вам!

Но есть одна загвоздка, когда дело касается промышленного общения через СМЭВ, то речь идет о квалифицированной ЭП, а значит, как одно из требований, выработанной на СКЗИ от разработчика лицензиата ФСБ. И тут не убежишь, предусмотрена ответственность.

В остальном для тестов и кейсов, что называется, для себя, то тут конечно можно достигнуть существенной экономии на лицензиях.

По поводу сложностей в использовании:
правильный способ — сделать такое SDK, которое бы своим API показывало, как решать типичные вопросы.


Это было бы идеально.

Но тут все усложняется тем, что лицензированный разработчик СКЗИ, например, КриптоПро — это одна организация, а ФГУП НИИ «Восход», на мощностях, которого подняты Головной удостоверяющий центр Минкомсвязь и СМЭВ — другая.

У каждой есть своя документация, SDK и API, примеры, форум, портал технической поддержки и ситуационный центр.
Причем есть конкретные примеры и инструкции, которые пересекаются, как например у КриптоПро для СМЭВ.

Информации, конечно, много, разобраться сложно, но можно.

Мне сразу вспоминается статья Каково оно учить JavaScript в 2016. Вот где зоопарк :-)

А вообще для разработчиков Open Source разбираться в чем-то таком должно доставлять какое-то свое особое удовольствие :-)
> И тут не убежишь, предусмотрена ответственность.

Конечно же убежишь, у меня получилось. Рассказываю как: 1) Увольняешься из компании, которая занимается этой лабудой 2) PROFIT

> А вообще для разработчиков Open Source

Для разработчиков Free Software — может быть да. Но государственные заказы — это не Free, и даже не Open, а иногда ещё и серкетка

> Информации, конечно, много, разобраться сложно, но можно.

Разобраться в Apache Kafka можно минут за 30. То есть, от того момента как ты на Википедии прочитал, что такое Kafka, до того как у тебя начнут ходить сообщения, может пройти всего минут 30.

Этого не происходит со СМЭВ, и у меня есть альтернативные объяснения, что происходит.

— СМЭВ, его документация, и его SDK сделаны отвратительно

— Крипто ПРО (по крайней мере Java-версия) сделаны отвратительно

— Почти все работы по координации и администрированию этих (и других связанных) проектов сделаны отвратительно

Этому уже никак не поможшь. Весь этот код можно только облить напалмом, сжечь, останки поместить в свинцовый гроб, замуровать в бетонный саркофаг с толщиной стенки сто метров, закопать на глубине 3 километров, и сверху насадить еловый лес, чтобы никто никогда не догадался, что ЭТО когда-то существовало.
Да. Под Open Source я имел в виду в широком понимании, например, Open-Source JDK — Oracle в части публичных классов и предоставляемых APIs и различные компоненты и библиотеки с лицензией свободного программного обеспечения.

Apache Kafka это конкретный инструмент со своим набором функций, tutorials и manuals, для которого тщательно обстругиваются сообществом.

С RabbitMQ у меня тоже сообщения за день начали ходить.

Другое дело, когда речь идет о целой распределенной инфраструктуре – Public Key Infrastructure.

Куда можно отнести СКЗИ и СМЭВ, как разные ее составные инструменты, компоненты, системы.

Инфраструктура с открытым ключом вбирает в себя технологии и знания из совершенно разных областей, с которыми требуется разбираться.

Начиная с наборов различных стандартов X. группы PKIX, стандартов криптографии PKCS#, способов описания структур данных на ASN.1 с древовидной идентификацией OID и наборов криптографических алгоритмов до принципов работы Центров регистрации и сертификации, протоколов взаимодействия, стандартов ЭП. И заканчивая Java Cryptography Architecture (если используем Java) и знаниями в области XML (для XMLDSig и СМЭВ) и инструментов для работы с ним применительно к платформе.

Дикая смесь и много чего еще, к которой добавляются описания и интерфейсы конкретных реализаций СКЗИ, СМЭВ, программно-аппаратных комплексов для УЦ и защиты и хранения ключей.

Поэтому временные затраты на то, чтобы разобраться не сопоставимы.
Разработчику, которому нужно послать сообщение по СМЭВу, для выполнения этой задачи совершенно не нужна никакая криптография. Ему нужна функция sendMessage(что, куда).

Всё остальное можно скрыть под капотом, и эта подкапотная часть будет подходить почти для всех аналогичных проектов. Обычно все именно так и делают.

Ибо никому обычно не нужна вся эта муть с разными реализациями криптографии, от неё можно отбрехаться на уровне ТЗ.

Трюк с запугиванием умными словами у тебя не получился :-)

Никакого Open Source сообщества не нужно, чтобы догадаться о наличии метода sendMessage(что, куда) — для этого нужен всего лишь 1 программист, который хоть раз попробовал воспользоваться шнягой, которую он написал.

То, что этот вопрос не проработан, навевает самые печальные мысли. Например о том, что писалось всё это силами десятка год-назад-студентов за еду.
Просто для интересу прошёл на портал (https://smev3.gosuslugi.ru/portal/)

Увидел следующее:

* Рекомендуемая версия библиотек для сборки клиента СМЭВ 3. Схема версии 1.1.
* Рекомендуемая версия библиотек для сборки клиента СМЭВ 3. Схема версии 1.2.

Самые важные ссылки расположены в самой жопе сайта, а сверху идёт всякий мусор (как и было всю дорогу, впрочем). Чудно.

Кстати о мусоре. Методические рекомендации, не в маркдауне в гите, а в вордовских файлах. Ченжлог в начале документа. Прямо как в 2001 году оказался, верхом на машине времени. Внутри всё тот же позор, что и раньше. Судя по ченжлогу, несколько допиленный.

Вернемся к «библиотекам». Открываю ссылку — там какой-то зип-архив. В корне всё так же нет LICENSE.txt.

Ни тебе публичного гита, чтобы посмотреть конкретные коммиты. Ни лицензии. Ни ченжлога. Ни-че-го.

Прошли годы, ага.

Необучаемые.

Вроде ко мне это уже и не относится никак, а от ярости руки трясутся, когда на всё это смотришь.

Там в документах имена каких-то «инженеров» написаны. Инженеры они, значит. Вот бы им выдать люлей размером с дом.
olegchir, а как же путь Бусидо́ 武士道

Путь воина, который без ропота вступит в противоборство с самым отвратительным API или его отсутствием и разберется со всеми сложностями?! :-)

Полезность здравой критики оспаривать не стану. :-)
ПОЛНОСТЬЮ ПОДДЕРЖИВАЮ!

Ядро линукс пересобрать легче чем установить смэв. Я до этого никогда не работал в гос секторе. Но тут пришлось. И в этой статье пишут как у них все круто сделано? это отвратительнейшая из программ когда либо созданный. что криптопро что смэв.

делаю докер контейнер для этого всего. и обертку к нему на python. чтобы у пользователя было 1 функция sent_message.

у меня впервые возникло желание убить человека. когда я начал пробывать пользоваться этим говном. я потратил на него неделю. НЕДЕЛЮ, КАРЛ!
С ним хэш стал совпадать, а подпись успешно проходить валидацию.

Вот это кстати, полная засада.

Реализация трансформатора не должна меняться.

Каждая релизная версия трансформатора должна иметь уникальное имя.

Если эти два требования не соблюдаются — то можно ЭЦП не использовать, он не выполняет своей функции.
ggo,
реализованная в SmevTransformSpi трансформация нормализует по заданным правилам XML документ перед тем, как будет посчитан его хэш и поставлена электронная подпись.

Так что трансформация может быть какой угодно и на основные функции ЭП — защита от подмены информации и однозначное установление ее автора, трансформация не влияет.
Насколько я понимаю, перед тем как xml будет подписан к нему применяются разные трансформации, и уже результат подается на вход подписания.
Если одна и та же трансформация, но из разных версий, дает разные результаты, то встает вопрос, как третья сторона будет доказывать или опровергать корректность подписи? Экспериментировать с доступными версиями трансформатора?
Класс SmevTransformSpi может дорабатываться, но набор правил трансформации, реализованных в нем, для конкретной версии схемы СМЭВ остается неизменным.
Уважаемые коллеги,
Всем привет!

Пара важных дополнений:
1) Я привел пример, как сначала подписать SOAP запрос, который можно еще корректировать в его части не подлежащей подписанию, а затем отправить.

Мне поступил вопрос, как на лету сделать бесшовный вызов веб сервиса СМЭВ с подписанным запросом и так же проверить ответ.
Хочу посоветовать мощную статью Aleksey Sushko на Old council
Apache CXF и ЭЦП для SOAP сообщений СМЭВ

В этой статье про квинтэссенцию использования технологии расширения SOAP запросов — WS-Security, Apache WSS4J и реализации JAX-WS — Apache CXF и все это на ГОСТ алгоритмах.
Мне в свое время очень помогло, за что еще раз спасибо Алексею.

2) Я сообщил в ФГУП НИИ «Восход» об опечатке в документе Методические рекомендации по работе с ЕСМЭВ версия 3.4.0.3.
НЛО прилетело и опубликовало эту надпись здесь
m1ld, да плотная работа в этом направлении ведется.

— в документе Методические рекомендации по работе с ЕСМЭВ версия 3.4.0.3 есть термин Каталог типов данных и атрибутов (КТДА).

— создан специальный модуль Руководство пользователя Модуля «Каталог типов данных и атрибутов» (СМЭВ.КТДА), в ктоором уполномоченный пользователь может заводить и согласовывать новые атрибуты и посмотреть существующие утвержденные.

— разработана целая концепция для решения проблемы взаимодействия именно в части унификации набора согласованных и используемых сущностей Концепция по использованию КТДА

В свете последних событий и ухода сертификационных органов от Java, как реализовать подпись на, к примеру, libxml2, libxmlsec1?

Каноникализация там есть, а вот что делать с трансформацией СМЭВ3 ума не приложу 🤷‍♂️

Зарегистрируйтесь на Хабре, чтобы оставить комментарий