Necytij
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго дня, дамы, господа, ikalichkin. Отвечаю публично, так как вы правы, вопросы ведь звучат. Заключение: я недокопался до варианта обхода проверки ИТС в случае использования NCALayer. Её сделали двухшаговой, первая половина внутри конфигурации 1С, вторая половина проверки во внешней компоненте. Суть: К обработке ОбменЭСФ, начиная примерно с 3.0.49.2 добавили макет WSCrypto. Представляющий из себя zip архив с внешней компонентой. Там две библиотеки. x86 и x64. Выполняют роль прокладки между NCALayer и 1С. Потому что NCALayer работает на WebSocket, а 1С не умеет её сама. Если я правильно понимаю, эта самая прокладка всё что умеет полезного: 1. Просить NCALayer подписать одну XML RAW вариантом и аналогично просить подписать массив XML 2. Просить NCALayer подписать одну XML каким-то другим вариантом (я видел описание CMS и TSP, какой тут реализован не знаю) и аналогично массив XML 3. Получить от NCALayer данные ключа (ИИН-БИН и т.п.) Если обманывать проверку ИТС сугубо внутри конфигурации, то сыпется либо на том, что а) тикет обращения в тех поддержку 1С не получен - отрабатывается в 1С в скрытом модуле ЭлектронноеВзаимодействиеССервисами вызывается ИнтернетПоддержкаПользователей.ТикетАутентификацииНаПорталеПоддержки(serviceNick), если там не получилось, то просит тикет в kz-зоне https://pk.1capp.kz/rest/ticket/get далее получаем-проверяем токен в 1С по БИНу (тут хранится по какой организации до когда можно пользоваться системой) в https://pk.1capp.kz/service/esf/v1/checkForOptionAvailability , либо б) проверка на валидность тикета в момент обращения к функции ПолучитьПараметрыКомпонентыЭСФ также в ЭлектронноеВзаимодействиеССервисами - проверка что он вообще какой-то получен , либо в) при передаче управления на выбор ключа в ВК происходит еще один вызов pk.1capp.kz, где проверяется, что тикет действительный, и только после этого пользователь может подписать свой документ или даже просто предоставить ключ для входа 3. Кто будет смотреть код: Тикет в портал поддержки 1С не путайте с тикетом авторизационным в сервисе ИС ЭСФ. Библиотека WSCrypto написана по методике Native API. Т.о. у неё нельзя легко посмотреть через декомпиляцию что и как она делает. Хотя специалисты в этом, скорее всего скажут, что я очень не прав. Но это им легко, а не каждому встречному 1Снику. У меня нет знаний в программировании С++ и/или декомпиляции и/или дебаггинге-профайлинге Си. Считаю, что сообщество не может получить долговременное решение, кроме как создавать своё - внешняя компонента полноценная под работу с GOST2015 или внешняя компонента + модуль для NCALayer или сервис подписи + немного кода на 1С. Но и версию свою нужно будет поддерживать в актуальном состоянии при обновлении библиотек kalkan. Т.к. если мы а) корректируем внешнюю компоненту, убирая проверку, то это нужно будет над каждой версией пыхтеть/патчить и проверять работу патча. Хотя может они и будут редко её менять, но каждый раз будет остановка прямой отправки, пока не выйдет новое лекарство и не будет поставлено. б) создаем свою внешнюю компоненту но пользуем java bundle-модуль от Рейтинга, то можно поменять имена методов и обфусцировать код модуля NCALayer, что не позволит быстро подобрать ключи к обновлению, и отправка в этот момент тоже встанет и надолго. Кроме того, MadMax123 смог расшифровать модуль от 3.0.52.1, красавчик! Очень интересно как, у меня знаний мало на тему криптографии и декомпиляции, поэтому может быть и не пойму, но очень интересно. У меня не получилось открыть эту версию общего модуля, но, боюсь, мы можем в какой-то момент времени остаться и без текста этого модуля, потому что Рейтинг применили более навороченный метод обфускации. Я думаю в другую сторону - всю работу по составлению XML 1С делает без использования внешних библиотек. Всё что нужно от NCALayer - это автоматизацию обновления криптобиблиотек от НУЦ и возможность просто и быстро подстраиваться под изменения методов процедуры подписи, определения данных в ЭЦП, и т.д., т.е. работу с ключами. Кроме NCALayer есть другие проекты, позволяющие их внедрять и подписывать и проверять свои подписи: NCANode, gokalkan, pykalkan, Nkalkan, возможно еще проекты есть, это те что я легко нашёл. Все распростаняются на бесплатной основе. В справке только у NCANode v3 есть прямое указание, что она умеет работать с GOST 2015. Два НО: 1. маленькое НО. они требуют получения вручную SDK от НУЦ - что в принципе не сложно, и именно этой политикой НУЦ обуславливалось первоначальное требование указать БИН и прочие данные перед установкой криптобиблиотеки в 1С. В принципе, никто не мешает точно также раздавать нелегально, как это делалось ранее через обработку ESF_1.8, но это будет нарушение лицензионного соглашения, при том, что библиотеки от НУЦ тоже нужно будет перодически обновлять. Есть информация насколько злые дядьки в НУЦ? Могут ли начать преследование за распространение их библиотек в составе своего проекта? Как минимум требования они свои такие выставляют, и каждый из вышеназванных проектов поубирал библиотеки НУЦ из своих репозитариев. Можно также как сделали Рейтинг - подготовить форму с текстом письма, чтобы каждая фирма отправила письмо в НУЦ о том, что ей нужна SDK... формально, считаю, такого письма будет достаточно. 2. Большое НО либо а) Нужно дописать вышеуказанные проекты до своей внешней компоненты 1С, это не так сложно, если сам проект рабочий. Нужна прокладка по созданию объектов и вызов готовых функций. Но моя работа и семейные дела сейчас не позволяют мне изучить в необходимой мере C++ и допилить проекты. Хотя я надеялся, что это получится осуществить к середине ноября. либо б) запилить докер-файл с NCANode(докер тоже придётся обновлять периодически, но, я думаю, это не так сложно будет и не так часто) и в 1С прикрутить возможность общаться с установленным локально или на сервере 1С по http API. Тоже прикольное решение, потому что тогда не нужно пилить внешнюю компоненту, нужно будет перехватить вызов типовой ВК от Рейтинга, и вместо этого обратиться к личному http сервису подписи. Есть активисты, имеющие опыт в этих сферах или большое желание поработать над большим НО? Или все будем как хомячки ждать пока придёт некий герой в белом плаще или когда нас сожрут с г..ном? p.s. А еще, я думаю, что сайт ИС ЭСФ с конца следующей недели и всю следующую будет регулярно падать. Так как те, кто не может себе позволить, либо очень не хочет заплатить за ИТС или 1С даже вовсе не обновляет, будут вынуждены заходить на сайт и отправлять оттуда. Сайт и так на ладан дыщит обычно. p.s.s. 3.0.51.1 (скорее всего и 3.0.52.1 - не пробовал) немного мешает устанавливать криптобиблиотеку на клиентском компьютере (кнопка в 1С в Настройке ЭСФ) при условии, что библиотека уже установлена в базе, но нет актуальной ИТС - будет говорить, что нужно библиотеку обновить = переподписать соглашение. Можно запилить расширение вернув из функции ПолучитьВерсиюКомпонентыНаСайте() вместо проверки реально актуальной версии - результат из ВерсияВнешнегоМодуляКриптографии() = версия библиотеки из базы. После 26 ноября, если всё будет так как обещают, то эта информация будет неактуальной. Если старый метод еще будет какое-то время работать, то такая доработка может какое-то время пригодиться. |