1c внешний отчет зашифрован
Для всех типовых конфигурациях 1С, работающих на платформе 8.3, реализованы следующие механизмы, связанные с ЭЦП:
§ Подписание документов и произвольных файлов цифровой подписью
§ Проверка подписанных файлов и документов
§ Выгрузка документов и подписей в файлы
§ Загрузка документов и подписей из файлов
§ Шифрование файлов с возможностью открытия указанному списку лиц
Для начала нужно подготовить компьютер для работы, т.е. выбрать провайдера, скачать дистрибутив программы поддержки криптографии в 1С и заключить договор на получение реальной электронной подписи, получить сертификаты для шифрования 1С. В примере из статьи выбор пал на провайдера КриптоПро, так как он предоставляет тестовые сертификаты и программные продукты криптографии имеют бесплатный период функционирования).
Для получения и установки ЭЦП для 1С необходимо установить программный продукт «КриптоПро CSP 4.0». Продукт можно скачать на сайте программы в разделе «Продукты СКЗИ КриптоПро CSP/TLS/JSP» пункт «Загрузка файлов».
Возможно протестировать механизм ЭЦП бесплатно, для этого разработчики КриптоПро создали тестовый центр сертификации, который создаст вам бесплатный сертификат, но только для тестирования, расшифровать документ с помощью него навряд ли получится, но чтобы что-то зашифровать в 1С и поставить подпись он годится вполне).
В соответствии с вашей операционной системой вы можете скачать нужный вам дистрибутив, пример показан на рисунке ниже.
Рис. Установка КриптоПро
После установки дистрибутива можно получить тестовые сертификаты (далее просто ключи), для этого нужно проделать следующие шаги:
1. скачиваем и устанавливаем программу КриптоПро ЭЦП Browser plug-in;
2. перейти на раздел сайта КриптоПро;
4. при переходе на сайт у вас появится окно — Подтверждение доступа, нужно согласиться.
5. В следующем окне заполняем данные, их можно заполнить как угодно. Далее из выпадающего списка выбираем пункт Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider или Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider (на данный момент алгоритмом шифрования, имеющим юридическую силу, признается последний), далее ставим галочку — “Пометить ключ как экспортируемый” и в последнем пункте пишем имя нашего сертификата.
6. Далее появится окно, в котором нужно в произвольном направлении двигать мышкой что бы у нас произошла генерация случайно последовательности
7. в следующем окне нажимаем на — Установить этот сертификат
Рис. Настройки ключа
Рис. Сохранение ключа, можно в реестре
Рис. Установка ключа
Рис. Успешное завершение сохранения ключа
Далее, чтобы проверить установленные сертификаты в системе нужно:
1. Зайти в КриптоПро через панель управления
2. Открыть вкладку “Сервис”
3. Нажать “Просмотреть сертификаты в контейнере”
4. Нажать копку “Обзор” и смотрим все сертификаты в системе какие есть на данный момент.
Рис. Вызов остнастки КриптоПро
Рис. Проверка, что сертификат установлен
Проверка надежности защиты с помощью декомилятора модулей 1С
Посмотрим теперь, удастся ли обойти защиту. Покопавшись немного в интернете, я наткнулся на «декомпилятор модулей» (скачать можно по ссылке), который якобы способен снять пароль. Декомпилятор представляет собой внешнюю обработку на обычных формах. Хорошо, пробуем. Начнем все с той же внешней обработки, на модуль которой я установил пароль.
Запускаем 1С в режиме предприятия и открываем обработку с декомпилятором через «Файл» – «Открыть». Замечу, что обработка, которую я нашел, написана на обычных формах, и запускать ее нужно под толстым клиентом:
Пробуем открыть модуль в конфигураторе, и он прекрасно открывается.
На форумах пишут, что иногда нужно запускать 1С от имени администратора, если выходит ошибка.
Теперь осталось проверить, как декомпилятор справится с общими модулями. Сохраняем конфигурацию в файл.
Выбираем в обработке:
Загружаем конфигурацию из файла и проверяем защиту. Защита полностью снята.
Тестирование проводилось на платформе 8.3.9.1818, конфигурация «Бухгалтерия предприятия 3.0.44.188».
Самое интересное, что модуль данного «декомпилятора» тоже защищен. Но обработка не позволяет снять защиту с самой себя.
Данный материал предоставлен только в ознакомительных целях с целью обзора механизма защиты платформы 1С. Запрещено использовать данный материал для получения доступа к защищенным авторским правом разработкам.
Компания, в которой я работаю, разрабатывает (в том числе и я) свою собственную отраслевую конфигурацию (автоматизация швейного и ткацкого производства). На сегодняшний день конфигурация находится в стадии бурного развития — внедрили пяти клиентам, еще три на подходе. У клиентов масса пожеланий и мы их, по мере возможностей, реализовываем, и вообще готовим нашу конфигурацию к официальному представлению и размещению на сайте 1С.
И с недавних пор, появилась необходимость защищать нашу конфигурацию от воровства (различных швейных предприятий в Ивановской области немерено), мы провели небольшое исследование о методах защиты кода в 1С и результатами я спешу поделиться.
Создание отчета с помощью Универсального отчета
Универсальный отчет — механизм типовых конфигураций, позволяющий облегчить разработку отчетов в системе. Этот способ был самым популярным до появления СКД. Метод так же основан на построителе отчетов. В идеале, отчет должен быть построен по регистру накопления.
Универсальный отчет имеет большой функционал, удобный интерфейс настроек, привычный пользователю:
2. Применение ЭЦП в 1С
Рассмотрим использование механизма криптографии в 1С. Для шифрования и подписания документов ЭЦП в 1С нам понадобится включение механизма шифрования, т.е. перейти в “Администрирование”-> “Обмен электронными документами-> Настройки электронной подписи и шифрования“. Также чтобы помимо возможности подписывать документы и иметь возможность шифровать данные нужно установить константу “Использовать шифрование“ , сделать это всегда можно через меню “Все функции”-> “Константы-> Использовать шифрование“ (иначе пункты меню Зашифровать и Расшифровать будут скрыты в программе, а останется лишь опция Подписать).
Рис. Настройки ЭЦП
Рис. Включение опции шифрования 1С
После установки КриптоПро в списке доступных должен появиться провайдер КриптоПро
Рис. Установленные программы криптопровайдеров
Нажимаем на кнопку добавить и добавляем ранее полученный тестовый/рабочий сертификат по кнопке “Добавить”->“Использовать для подписи и шифования”. Далее потребуется ввести пароль, который вы указывали для ключа при его создании. Если по данному сертификату возможна подпись и/или шифрование, то он успешно добавится. Далее можно нажать кнопку “Проверить” , чтобы проверить какие из двух операций по нему доступны.
Рис. Успешно добавленный сертификат
Рис. Успешно добавленный сертификат в списке сертификатов
Рис. Проверка возможностей сертификата
Для проверки работоспособности системы шифрования/расшифрования нужно зайти в справочник Файлы.
Рис. Команда входа в справочник Файлы
Данные в справочнике Файлы мы можем полполнять как вручную файлами из файловой системы, так и, например, посредством массовой рассылки отчетов и писем. Ниже на примере 1С ЗУП 3.1 приводятся настройки формирования отчета Штатное расписание в файлы базы данных.
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
После нажатия “Зашифровать в 1С” из меню появится окно выбора сертификатов, которыми будет производиться шифрование 1С файла.
Рис. Шифрование/расшифрование файла
Рис. Подбор сертификата для шифрования 1С
Рис. Файл успешно зафшифрован
Как видно из рисунка, файл успешно зашифрован и при открытии в 1С для просмотра или редактирования будет автоматически произведена его расшифровка, без расшифровки открытие файла вызовет ошибку.
Подпишем документ Word, это делается практически аналогично шифрованию.
Рис. Подписание файла
Теперь сохраним файл на диск вместе с ЭЦП, выбрав “сохранить вместе с электронной подписью”.
Как видно мы подписали документ отсоединенной подписью. Подпись может быть также и присоединенной к файлу, главное отличие этого формата в том, что когда вы подписываете документ остается того же формата и размера, а после подписания с ним будет идти отдельный файл специального формата (в данном случае.p7s) который будет считаться самой подписью.
Вас могут заинтересовать следующие статьи:
Как защитить модуль внешней обработки от "чайника" знают все - поставить на него пароль. А что делать если основную ценность обработки представляет не только модуль но и макет табличного документа содержащий множество различных секций, который Вы рисовали не одну ночь. За примером далеко ходить не надо - посмотрите на любую форму Госкомстата :)
Ну что, поехали - постановка задачи: защитить макет табличного документа внешней обработки.
1). Сохраняем наш супер-макет табличного документа в MXL-файл - МойМакет.mxl
2). Удаляем его из обработки.
3). Архивируем МойМакет.mxl с помощью архиватора в формате ZIP, ОБЯЗАТЕЛЬНО С ПАРОЛЕМ - МойСекретныйПароль, получаем файл МойМакет.zip
4). Добавляем в нашу обработку макет типа Двоичные данные, называем его ШифрованныйМакет и загружаем в него файл МойМакет.zip
5). В форме обработки:
Процедура КнопкаВыполнитьНажатие ( Кнопка )
Печать ( "ШифрованныйМакет" );
КонецПроцедуры
6). Модуль обработки:
Процедура Печать ( ИмяМакета ) экспорт
// Извлекаем файл ZIP из макета и сохраняем во временный файл
ИмяВременногоФайлаZIP = ПолучитьИмяВременногоФайла ( "zip" );
ДвоичныеДанные = ПолучитьМакет ( ИмяМакета );
ДвоичныеДанные . Записать ( ИмяВременногоФайлаZIP );
// Извлекаем из ZIP-архива MXL-файл и сохраняем его во временный файл
ЧтениеZIP = Новый ЧтениеZipФайла ( ИмяВременногоФайлаZIP , "МойСекретныйПароль" );
ЭлементZIPАрхива = ЧтениеZIP . Элементы . Найти ( ИмяMXLфайла );
ЧтениеZIP . Извлечь ( ЭлементZIPАрхива , КаталогВременныхФайлов (), РежимВосстановленияПутейФайловZIP . НеВосстанавливать );
ЧтениеZIP . Закрыть ();
// Получаем макет табличного документа из M X L-файла
Макет = Новый ТабличныйДокумент ;
Макет . Прочитать ( КаталогВременныхФайлов ()+ ИмяMXLфайла );
// Заметаем следы
УдалитьФайлы ( КаталогВременныхФайлов ()+ ИмяMXLфайла );
УдалитьФайлы ( ИмяВременногоФайлаZIP );
// Показываем результирующий табличный документ пользователю
Табличныйдокумент = Новый ТабличныйДокумент ;
ОбластьМакета = Макет . ПолучитьОбласть ( "Область1|Область2" );
Для Счетчик1 = 1 по 10 цикл
Табличныйдокумент . Вывести ( ОбластьМакета );
Для Счетчик2 = 1 по 4 цикл
Табличныйдокумент . Присоединить ( ОбластьМакета );
КонецЦикла;
КонецЦикла;
Табличныйдокумент . Защита = Истина ;
Табличныйдокумент . Показать ();
7). А теперь самое главное: ставим пароль на модуль нашей внешней обработки - МойСекретныйПароль, иначе все наши выкрутасы с шифрованием-дешифрованием - коту под хвост :)
Конечно кто-то скажет, что данную защиту можно взломать, и конечно он окажется прав, потому что взломать можно ЛЮБУЮ ЗАЩИТУ. Идеальной защиты не существует, как впрочем, и ничего идеального .
Отчеты 1С 8.3 — это специальный объект метаданных, предназначенный для формирования удобного для пользователя представления данных из таблиц базы данных 1С.
Разберемся, как настроить отчеты, для чего они нужны, чем отличаются внешние отчеты от встроенных и чем отличаются отчеты от обработки.
Использование внешних компонент
Неплохой метод для случаев, когда ценность представляет сам код (какой-либо уникальный алгоритм, например), а не вся конфигурация. Так как вынесение проверки легальности запуска конфигурации во внешнюю компоненту поможет не более чем установка пароля на модуль.
К плюсам данного метода следует отнести высокую надежность скрытия кода: восстановить 1С код из скомпилированной DLL-ки написанной на C++, например, — это та еще задача.
К минусам же, относиться необходимость переписать код 1С на другом языке (что тоже, зачастую, задача нетривиальная) и большие трудности с отладкой.
Создание и настройка отчетов в 1С 8.3
Для того чтобы создать или настроить отчет, необходимо знать встроенный язык программирования 1С 8.3 и язык запросов 1С. Как ни крути, в основе создания практически любого отчета лежит первоначальный запрос, который получает данные. Эти данные мы обрабатываем и выводим в удобной пользователю форме.
Отчеты — это главное в любой информационной системе, поэтому фирма 1С обратила на разработку отчетов пристальное внимание и создала большое количество конструкторов и механизмов для их создания.
Рассмотрим основные методики создания отчетов
Чем отчет отличается от обработки
На самом деле — практически ничем. Главное различие — назначение использования объекта: отчеты нужны для отображения информации, а обработки — для изменения информации.
Основные различия в свойствах: в отчетах можно указать Основную схему компоновки данных (СКД) и указать настройки для сохранения параметров отчетов.
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Наверняка каждый разработчик заботится о том, чтобы его программы были защищены от нелегального распространения. Особенно если эта разработка – коммерческий, тиражируемый продукт.
Создатели системы 1С: Предприятие 8 позаботились о защите кода. К сожалению, пароль на доступ можно установить только на модули объектов, общие модули, модули обработок и отчетов. В том числе и внешних. Но и этого немало, так как можно значимые процедуры и функции разместить в модуле и потом к ним обращаться.
В данной статье я хочу разобраться, как установить защиту и снять её, если Вы забыли пароль.
Установка защиты на модуль 1C
Возьмем любой модуль любого объекта. Я взял навскидку первый же документ – «Авансовый отчет». Если поставить курсор на текст кода модуля, в главном меню появится пункт «Текст». В этом пункте есть подпункт «Установить пароль».
Программа меня тут же предупредила о том, что нельзя защитить модуль, имеющий директивы препроцессора:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Что же, посмотрим, во что это выльется. Устанавливаем пароль.
Игнорируем ошибку и сохраняем конфигурацию. Интересно, откроется ли документ. Запускаем программу в режиме «Предприятия».
Все оказалось хуже, чем я предполагал. Документ полностью не рабочий. Провести его не удалось, постоянно программа ругается на какие-то незаполненные поля, которых ни в шапке формы, ни в таблице нет.
Попробовал для чистоты эксперимента на других документах, тот же результат. Например, в приходной накладной становится недоступным поле «Договор».
Вывод однозначный: не все модули можно защитить. Однако ничего Вам не мешает вынести функции и процедуры с директивами препроцессора в отдельный модуль.
Осталось проверить обработки. Возьмем для интереса внешнюю. Защита прошла без проблем.
Штатные средства
Начнем со штатных средств защиты своего кода от копирования. Это можно сделать двумя способами.
Установить пароль на текст модуля.
Меню «Текст» -> «Установить пароль…».
Исключить текст модуля из поставки конфигурации.
Меню «Конфигурация» -> «Поставка конфигурации» -> «Настройка поставки…», нужно выбрать модули, которые требуется скрыть и не забыть включить пункт «Файл поставки может использоваться для обновления».
После этого нужно зайти в меню «Конфигурация» -> «Поставка конфигурации» -> «Комплект поставки…» и сформировать CF-файл со скрытыми от просмотра текстами модулей.
При использовании этих методов код модуля превращается в байт-код, который можно декомпилировать (если захотеть) и некоторые инструменты в помощь начинающим есть в свободном доступе (правда они, насколько я знаю, предоставляют только базовые возможности).
Кроме этого, штатными средствами не удастся спрятать код модуля формы (хотя код модуля объекта спрятать можно).
Отчеты на основе Системы компоновки данных
Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой фирмой 1С. Система компоновки данных (СКД) появилась в платформе 1С в версии 8.1.
СКД позволяет создать несложные отчеты вообще без строчки программирования, потому что он имеет очень гибкий и функциональный конструктор создания схемы компоновки данных:
Во всех последних конфигурациях все отчеты написаны с использованием системы компоновки данных.
Чем отличаются внешние отчеты от встроенных
Как написано в документации — ничем. Механизм внешних отчетов был создан для того, чтобы отлаживать отчеты в процессе разработке.
Единственное отличие при разработке решения — Вы не можете обратиться к внешнему отчету «по имени», в отличие от встроенного отчета.
Как сделать отчет в 1С с помощью макета
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Создание с помощью макета — самый рутинный способ. Однако к нему часто прибегают от безысходности, т.к. в этом способе разработчик полностью прописывает кодом каждое действие, а значит, мы можем сделать всё что угодно. Этим не могут похвастаться другие механизмы.
Но в этом случае все пунктики, меню и прочие «бантики» придется прописывать вручную, что очень трудоёмко.
3. Проверка корректности ЭЦП в КриптоАРМ
Проверим корректность подписи можно с помощью программы КриптоАрм, тем самым это может служить доказательством, что документ не был кем-то подменен и был отправлен именно тем лицом, от которого мы ожидали его получить. Сначала надо скачать и установить КриптоАРМ, также снова следует обратить внимание, что для запуска необходимо обладать правами администратора.
Рис. Окно установщика КриптоАРМ
При первом запуске программа автоматически определяет установленные ключи.
Рис. КриптоАРМ определил, что ключ является действующим
Далее проведем непосредственно саму проверку ЭЦП, для этого потребуется выбрать файл, к которому относится подпись. В нашем случае это печатная форма Штатное расписание (Т-3 ) в виде pdf , выбираем его и сразу убеждаемся , что подпись верна.
Рис. Окно проверки подписи в КриптоАРМ
Рис. Указываем файл документа/отчета для проверки подписи в КриптоАРМ
Рис. Проверка подписи прошла успешно
Специалист компании ООО «Кодерлайн»
Цыганков Владимир Александрович
Решения сторонних разработчиков
Есть компании которые профессионально занимаются вопросом защиты интелектуальной собственности разработчиков на 1С. Примером можно привести компанию WiseAdvice.
Суть их метода сводится к вынесению части кода в отдельную обработку, которая храниться в каком-либо зашифрованном хранилище. Доступ к это части кода осуществляется при помощи специальной внешней компоненты, которая и определяет доступ к зашифрованной обработке.
К плюсам такого подхода относится высока надежность защиты кода (во многих подобных решениях код в расшифрованном виде появляется только в оперативной памяти и только в момент исполнения этого самого кода) и отсутствие необходимости переводить код 1С в код какого-либо другого языка программирования.
А к минусам стоит отнести саму необходимость выносить код во внешние обработки и некоторые другие сложности связанные с использованием подобных систем.
Делая вывод, можно сказать, что нет абсолютно надежного способа защитить свою конфигурацию от нежелательного запуска (поправьте, если не так). В то же время для защиты частей кода от копирования есть немало надежных решений.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 4, средняя оценка: 4,75 из 5)
Обфускация кода 1С
Обфускация — приведение кода в нечитаемый вид. Это можно сделать как при помощи специальных обработок (в недавнем обзоре интересного есть подобный пример), так и при помощи специальных сервисов (Нетленка 1С, например).
Также этот обфускацию можно использовать совместно со штатными средствами — обфускации подвергается байт-код скомпилированных модулей 1С.
Плюсами данного способа является простота (вставил код — получил абракадабру) и возможно зашифровать любой код.
А к минусам относится низка степень защиты — на любой обфускатор можно создать деобфускатор.
Создание отчета с помощью конструктора выходной формы
Конструктор выходной формы — встроенный в платформу механизм, который облегчает разработку отчета. Конструктор доступен только для обычных форм.
Конструктору указывается запрос и все необходимые параметры будущего отчета, а он, в свою очередь, генерирует модули и формы отчета. Механизм основан на объекте встроенного языка 1С 8.2 — ПостроительОтчетов.
2. Применение ЭЦП в 1С
Рассмотрим использование механизма криптографии в 1С. Для шифрования и подписания документов ЭЦП в 1С нам понадобится включение механизма шифрования, т.е. перейти в “Администрирование”-> “Обмен электронными документами-> Настройки электронной подписи и шифрования“. Также чтобы помимо возможности подписывать документы и иметь возможность шифровать данные нужно установить константу “Использовать шифрование“ , сделать это всегда можно через меню “Все функции”-> “Константы-> Использовать шифрование“ (иначе пункты меню Зашифровать и Расшифровать будут скрыты в программе, а останется лишь опция Подписать).
Рис. Настройки ЭЦП
Рис. Включение опции шифрования 1С
После установки КриптоПро в списке доступных должен появиться провайдер КриптоПро
Рис. Установленные программы криптопровайдеров
Нажимаем на кнопку добавить и добавляем ранее полученный тестовый/рабочий сертификат по кнопке “Добавить”->“Использовать для подписи и шифования”. Далее потребуется ввести пароль, который вы указывали для ключа при его создании. Если по данному сертификату возможна подпись и/или шифрование, то он успешно добавится. Далее можно нажать кнопку “Проверить” , чтобы проверить какие из двух операций по нему доступны.
Рис. Успешно добавленный сертификат
Рис. Успешно добавленный сертификат в списке сертификатов
Рис. Проверка возможностей сертификата
Для проверки работоспособности системы шифрования/расшифрования нужно зайти в справочник Файлы.
Рис. Команда входа в справочник Файлы
Данные в справочнике Файлы мы можем полполнять как вручную файлами из файловой системы, так и, например, посредством массовой рассылки отчетов и писем. Ниже на примере 1С ЗУП 3.1 приводятся настройки формирования отчета Штатное расписание в файлы базы данных.
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
После нажатия “Зашифровать в 1С” из меню появится окно выбора сертификатов, которыми будет производиться шифрование 1С файла.
Рис. Шифрование/расшифрование файла
Рис. Подбор сертификата для шифрования 1С
Рис. Файл успешно зафшифрован
Как видно из рисунка, файл успешно зашифрован и при открытии в 1С для просмотра или редактирования будет автоматически произведена его расшифровка, без расшифровки открытие файла вызовет ошибку.
Подпишем документ Word, это делается практически аналогично шифрованию.
Рис. Подписание файла
Теперь сохраним файл на диск вместе с ЭЦП, выбрав “сохранить вместе с электронной подписью”.
Как видно мы подписали документ отсоединенной подписью. Подпись может быть также и присоединенной к файлу, главное отличие этого формата в том, что когда вы подписываете документ остается того же формата и размера, а после подписания с ним будет идти отдельный файл специального формата (в данном случае.p7s) который будет считаться самой подписью.
Читайте также: