Как зашифровать базу 1с
Для всех типовых конфигурациях 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. Нажать копку “Обзор” и смотрим все сертификаты в системе какие есть на данный момент.
Рис. Вызов остнастки КриптоПро
Рис. Проверка, что сертификат установлен
2. Применение ЭЦП в 1С
Рассмотрим использование механизма криптографии в 1С. Для шифрования и подписания документов ЭЦП в 1С нам понадобится включение механизма шифрования, т.е. перейти в “Администрирование”-> “Обмен электронными документами-> Настройки электронной подписи и шифрования“. Также чтобы помимо возможности подписывать документы и иметь возможность шифровать данные нужно установить константу “Использовать шифрование“ , сделать это всегда можно через меню “Все функции”-> “Константы-> Использовать шифрование“ (иначе пункты меню Зашифровать и Расшифровать будут скрыты в программе, а останется лишь опция Подписать).
Рис. Настройки ЭЦП
Рис. Включение опции шифрования 1С
После установки КриптоПро в списке доступных должен появиться провайдер КриптоПро
Рис. Установленные программы криптопровайдеров
Нажимаем на кнопку добавить и добавляем ранее полученный тестовый/рабочий сертификат по кнопке “Добавить”->“Использовать для подписи и шифования”. Далее потребуется ввести пароль, который вы указывали для ключа при его создании. Если по данному сертификату возможна подпись и/или шифрование, то он успешно добавится. Далее можно нажать кнопку “Проверить” , чтобы проверить какие из двух операций по нему доступны.
Рис. Успешно добавленный сертификат
Рис. Успешно добавленный сертификат в списке сертификатов
Рис. Проверка возможностей сертификата
Для проверки работоспособности системы шифрования/расшифрования нужно зайти в справочник Файлы.
Рис. Команда входа в справочник Файлы
Данные в справочнике Файлы мы можем полполнять как вручную файлами из файловой системы, так и, например, посредством массовой рассылки отчетов и писем. Ниже на примере 1С ЗУП 3.1 приводятся настройки формирования отчета Штатное расписание в файлы базы данных.
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
Рис. Настройка рассылки отчетов в файлы, 1С ЗУП 3 1 (продолжение)
После нажатия “Зашифровать в 1С” из меню появится окно выбора сертификатов, которыми будет производиться шифрование 1С файла.
Рис. Шифрование/расшифрование файла
Рис. Подбор сертификата для шифрования 1С
Рис. Файл успешно зафшифрован
Как видно из рисунка, файл успешно зашифрован и при открытии в 1С для просмотра или редактирования будет автоматически произведена его расшифровка, без расшифровки открытие файла вызовет ошибку.
Подпишем документ Word, это делается практически аналогично шифрованию.
Рис. Подписание файла
Теперь сохраним файл на диск вместе с ЭЦП, выбрав “сохранить вместе с электронной подписью”.
Как видно мы подписали документ отсоединенной подписью. Подпись может быть также и присоединенной к файлу, главное отличие этого формата в том, что когда вы подписываете документ остается того же формата и размера, а после подписания с ним будет идти отдельный файл специального формата (в данном случае.p7s) который будет считаться самой подписью.
3. Проверка корректности ЭЦП в КриптоАРМ
Проверим корректность подписи можно с помощью программы КриптоАрм, тем самым это может служить доказательством, что документ не был кем-то подменен и был отправлен именно тем лицом, от которого мы ожидали его получить. Сначала надо скачать и установить КриптоАРМ, также снова следует обратить внимание, что для запуска необходимо обладать правами администратора.
Рис. Окно установщика КриптоАРМ
При первом запуске программа автоматически определяет установленные ключи.
Рис. КриптоАРМ определил, что ключ является действующим
Далее проведем непосредственно саму проверку ЭЦП, для этого потребуется выбрать файл, к которому относится подпись. В нашем случае это печатная форма Штатное расписание (Т-3 ) в виде pdf , выбираем его и сразу убеждаемся , что подпись верна.
Рис. Окно проверки подписи в КриптоАРМ
Рис. Указываем файл документа/отчета для проверки подписи в КриптоАРМ
Рис. Проверка подписи прошла успешно
Специалист компании ООО «Кодерлайн»
Цыганков Владимир Александрович
Вас могут заинтересовать следующие статьи:
Наверно, многие из разработчиков когда-нибудь сталкивались с необходимостью зашифровать данные в 1С. Однажды и я столкнулся с этой проблемой. В сети предлагается множество способов организации шифрования сторонними методами, я же хотел бы рассмотреть шифрование встроенными методами.
В данной статье рассматривается шифрование строк. Разбираемые алгоритмы применимы к любым значениям, которые возможно преобразовать в строку и обратно. Например, таблицу значений можно преобразовать в строку методом ЗначениеВСтрокуВнутр и методом ЗначениеИзСтрокиВнутр получить обратно таблицу значений.
В 1С есть два встроенных варианта использования шифрования:
1. Использование электронной подписи (асимметричное шифрование) имеет сложный механизм применения - в настоящей статье не рассматривается.
2. Использование запароленного zip-архива (симметричное шифрование) - рассматривается в настоящей статье.
Для анализа использования алгоритма приведу примеры универсальных функций, выполняющих шифрование и дешифровку данных (функции выполняются на сервере):
Функция ПолучитьЗашифрованныеДанные возвращает хранилище значения с зашифрованными двоичными данными.
ДанныеШифрования - Строка для зашифровки;
КлючШифрования - Ключ симметричного шифрования (пароль zip-архива);
ИдентификаторДанных - Строка - Произвольное идентификационное значение (необязательный параметр)
Механизм шифрования заключается в следующей последовательности действий:
- Шифруемая строка записывается в текстовый файл
- Текстовый файл помещается в архив с паролем (метод шифрования можно выбрать, в данном случае используется AES-256)
- Записанный архив в зашифрованном виде переводится в двоичные данные
- Двоичные данные помещаются в хранилище значения, которое возвращается функцией (в дальнейшем, хранилище значения можно поместить в реквизит какого-либо объекта или регистра и хранить в СУБД до появления необходимости в расшифровке)
- Созданные файлы удаляются
Функция ПолучитьРасшифрованныеДанные возвращает расшифрованное строковое значение.
ХранилищеДанных -Хранилище значения с зашифрованными данными (значение возвращенное функцией ПолучитьЗашифрованныеДанные);
КлючШифрования - Ключ сииметричного шифрования (пароль zip-архива; такой же, как для функции ПолучитьЗашифрованныеДанные);
ИдентификаторДанных - Строка - Произвольное идентификационное значение (необязательный параметр)
Механизм дешифрования заключается в следующей последовательности действий:
Когда думаешь о том, что данные твоей фирмы будут «лежать» далеко, на третьей стороне, да еще и, возможно, у этой стороны к ним будет доступ, начинается признак паранойи. С другой стороны, понимаешь, что у этой третьей стороны созданы все условия для надежного и безопасного хранения этих данных: резервирование питание и каналов связи, системы пожаротушения, охрана, кондиционирование Построить уровня III может себе позволить далеко не каждая организация. К счастью, компромисс существует и сегодня мы поговорим о нем. Для обеспечения безопасности хранимых на виртуальном сервере данных нужно выполнить всего два простых шага.
Шаг 1: изменяем пароль CloudAdmin
Платформа Xelent сообщает клиенту пароль административного пользователя CloudAdmin в панели управления сервером — сделано это для удобства.
Рис. 1. Пароль пользователя. Любителям подключаться к чужим серверам: данный VDS удален сразу после написания этой статьи!
Но настоящий параноик не будет спокойно спать, если есть в незашифрованном виде пароль от его сервера. Поэтому первым делом, что нужно сделать — это изменить пароль администратора (CloudAdmin) на виртуальном сервере. Процедура изменения пароля такая же, как и на локальной машине — через панель управления (рис. 2).
Рис. 2. Воспользуйтесь ссылкой Изменить пароль для смены пароля учетной записи
После изменения пароля закройте окно RDP, смените пароль в настройках удаленного подключения и снова подключитесь к серверу.
Шаг 2: используем прозрачное шифрование для защиты базы 1С
Для защиты личных данных можно использовать контейнеры — виртуальные зашифрованные диски. Такие контейнеры можно создать программами вроде VeraCrypt (форк популярного TrueCrypt). Но на сервере использовать контейнеры не очень удобно, поскольку виртуальный диск нужно смонтировать, прежде чем можно будет получить доступ к информации на нем.
А если виртуальный сервер с 1С выключают на ночь для экономии средств, то это означает, что админ должен утром успеть подмонтировать контейнер — до того момента, как пользователи начнут обращаться к базе.
Выход есть — прозрачное шифрование. При этом файлы зашифровываются и расшифровываются «на лету» — в процессе работы с ними. Файлы остаются зашифрованными, а пользователи и программы работают с ними, как с обычными файлами. Например, если зашифровать папку 1c_base, то 1С даже не поймет, что база зашифрована. Зато данные на диске виртуальной машины будут зашифрованы. Войти сотрудники провайдера тоже не смогут, ведь пароль вы сменили.
В Windows традиционно для организации прозрачного шифрования используется шифрованная файловая система — EFS (Encrypting File System).
EFS предназначена, чтобы один пользователь не мог получить доступ к файлам (зашифрованным) другого пользователя. Зачем нужно было создавать EFS, если NTFS поддерживает разграничение прав доступа? Хотя NTFS и является довольно безопасной файловой системой, но со временем появились различные утилиты, игнорирующие права доступа NTFS. Появилась необходимость в дополнительной защите. Такой защитой должна была стать EFS. Мы же будем ее использовать для защиты данных от якобы нечестных сотрудников облачного провайдера.
EFS удобна тем, что входит в состав Windows и для шифрования файлов вам не нужно дополнительное программное обеспечение — все необходимое уже есть в Windows.
Чтобы зашифровать файлы не нужно совершать предварительные действия, поскольку при первом шифровании файла для пользователя автоматически создается сертификат шифрования и закрытый ключ.
Включить шифрование очень просто: откройте свойства папки, в которой находится база 1С, на вкладке Общие нажмите кнопку Другие и включите атрибут Шифровать содержимое для защиты данных (рис. 3).
Рис. 3. Включение шифрования EFS
Конечно, у нашего решения есть недостатки. Первый — это то, что пользователи должны работать под одной учетной записью — под той, которую вы использовали для шифрования каталога с базой 1С. Второй — теоретически есть возможность расшифровки файлов программами вроде Advanced EFS Data Recovery, но на практике оказалось, что результаты работы этой программы не такие уж и хорошие — достаточно установить сложный пароль, чтобы программа не справилась со своей задачей.
Приведенное решение — не панацея, но оно позволяет существенно обезопасить хранимые на виртуальном сервере данные.
Windows Server от Microsoft — самая популярная операционная система в мире для серверного оборудования. Она применяется для организации файловых каталогов, службы DNS, службы веб-приложений и т. д. Мы предлагаем нашим клиентам арендовать виртуальный server VDS/VPS на базе Windows Server.
Знакомил студентов с шифрованием (и хешированием) данных штатными средства платформы «1С:Предприятие 8». Материалы превратились в четыре лабораторные работы: Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера; Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера с использованием контрольной (хеш) суммы; Метод симметричного шифрования; Использование хеш-суммы для контроля изменения значений справочника.
Приложенные pdf-файлы с лабораторными работами представляют собой описание последовательности действий (с заданием, программным кодом и скриншотами).
Лабораторная работа №1. Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера.
Описание работы
В лабораторной работе рассмотрен пример реализации шифрования и расшифровки произвольных текстовых полей справочников с помощью метода Виженера (материалы работы базируются на публикации «Шифрование и расшифровка строковых полей справочников методом Виженера (с улучшениями)»).
Порядок работы
1. Должен быть реализован функционал шифрования и расшифровки по паролю, заданному пользователем.
2. Зашифрованные данные должны храниться в полях исходных данных, т.е. длина зашифрованного текста должна быть равной длине исходного текста, дополнительных таблиц быть не должно.
3. Список полей для шифрования и расшифровки должен быть настраиваемым и не зависеть от конфигурации 1С.
4. Шифрование должно выполняться средствами платформы 1С без внешних компонент, com-объектов и т.д. (для исключения зависимости от операционной системы).
Лабораторная работа №2. Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера с использованием контрольной (хеш) суммы.
Описание работы
Использование метода Вижинера без контроля используемого пароля может при расшифровке испортить данные. Цель данной работы научиться работать с контрольной (хеш) суммой. В лабораторной работе рассмотрен пример реализации шифрования и расшифровки произвольных текстовых полей справочников с проверкой зашифрованных данных с помощью контрольной (хеш) суммы (исходные материалы доступны по ссылке 1 и ссылке 2).
Порядок работы
1. Должен быть реализован функционал шифрования и расшифровки по паролю, заданному пользователем.
2. Зашифрованные данные должны храниться в полях исходных данных, т.е. длина зашифрованного текста должна быть равной длине исходного текста, дополнительных таблиц быть не должно.
3. Список полей для шифрования и расшифровки должен быть настраиваемым и не зависеть от конфигурации 1С.
4. Шифрование должно выполняться средствами платформы 1С без внешних компонент, com-объектов и т.д. (для исключения зависимости от операционной системы).
5. При шифровании должна вычисляться контрольная хеш-сумма на основании пользовательского пароля одним из четырех алгоритмов (на выбор пользователя). Данная хеш-сумма должна сохраняться в хранилище общих настроек конфигурации.
6. При расшифровке указанный пользователем паролем должен проверяться на равенство с ранее сохранённой хеш-суммой и, в случае несовпадения, не позволять пользователю расшифровать данные (чтобы не испортить их).
Часть кода лабораторной работы №2 базируется на 1-й лабораторной работе, но есть и отличия:
Описание работы
Цель данной работы научиться использовать метод симметричного шифрования, который расшифрует только при правильном пароле. В лабораторной работе рассмотрен пример реализации шифрования и расшифровки произвольных текстовых полей справочника (материалы работы базируются на публикации «Симметричное шифрование в 1С»).
Порядок работы
1. Должен быть реализован функционал шифрования и расшифровки по паролю, заданному пользователем.
2. Зашифрованные данные должны храниться в реквизитах соответствующих элементах справочника.
3. Шифрование должно выполняться исключительно средствами платформы 1С.
Ниже приведен программный код, реализованный в данной лабораторной работе:
Описание работы
Часто в работе пользователей с данными возникает ситуация, когда пользователь хочет быть уверен, что его данные не изменялись другими пользователями. При этом данных бывает очень много и пользователь не может быстро вручную проверить все данные на предмет отсутствия внесения в них несанкционированных изменений (материалы работы базируются на публикации "Хеширование данных с ключом по алгоритму SHA-1 штатными средствами 1С").
Ниже приведен программный код, реализованный в данной лабораторной работе:
К публикации приложена база 1С, в которой реализованы все четыре лабораторные работы. Конфигурация должна работать на любой платформе более-менее современной платформе «1С:Предприятие 8» (режим совместимости специально установил как «Версия 8.3.10»). Разработка и тестирование осуществлялись на базе учебной платформы «1С:Предприятие 8.3, учебная версия» (8.3.16.1224).
Обфускация помогает в ситуации, когда сложному клиенту необходимо передать «Полнофункциональную разработку» с некоторыми ограничениями (до момента оплаты, например):
Конечно, 100% защиту может дать только механизм внешних компонент 1С и трудоемкость обфускации минимальна по отношению к созданию внешней компоненты (достаточно обфусцировать несколько ключевых функций). После оплаты восстанавливаем исходный модуль, сопровождение идет в штатном режиме. Трудоемкость восстановления исходных модулей в ручном режиме на основании обфусцированных сопоставима по трудоемкости с разработкой аналогичных.
ПРИМЕР
Исходный код:
Результат:
Обфускация — имя переменной УИД
Обфускация — имя переменной случайное число + шифрование строк
или
Обфускация — имя переменной УИД + шифрование строк
Возможности обработки:
1.Обфускация модуля/модуля формы/функции – приложения по заданным параметрам. Обфусцируются переменные:
- описанные в конструкции переменные
- описанные как параметры функции/процедуры
- анализ контекста выполнения НЕ выполняется
2. Реализовано разбивка/шифрование строк по заданным параметрам.
3. При шифровании строк «По умолчанию» функция возврата пароля шифрования «прячется» в обрабатываемом модуле. Ее можно заменить своей функцией, возвращающей аппаратно-зависимый пароль (метка диска, имя машины, наличие сетевого адреса и все, что подскажет Ваша фантазия), тем самым исключить хранение пароля в модуле, реализовать простейшую защиту от несанкционированного использования защищенного модуля.
Соответственно без пароля/неправильном пароле функционал модуля будет недоступен/потерян (в случае шифрования строк).
Порядок работы:
1. В поле «Текст модуля исходный» копируем преобразуемый модуль
2. На вкладке «Параметры шифрования» определяем параметры шифрования строк, при необходимости свою функцию получения пароля
3. Нажимаем кнопку «Обработать»
4. Забираем обфусцированный модуль
Особенности/ограничения:
1. Обфусцированный модуль в режиме шифрования строк/разбивки может выполняться МЕДЛЕННЕЙ исходного в НЕСКОЛЬКО РАЗ, если зашифрованные строки находятся внутри циклов.
По быстродействию хочу поставить акцент:
Вызов функции получения пароля происходит при развертывании каждой части шифрованной строки.
Если это модуль формы, мы можем значительно ускорить выполнение кода, определив пароль один раз при инициализации модуля. Хранить в переменной модуля/реквизите формы, возвращая эту переменную при вызове функции. Это будет ЗНАЧИТЕЛЬНО быстрее, чем вычисление пароля каждый раз (или используя другие варианты оптимизации кэширования повторного использования значений и т.д).
По умолчанию это формирование строки из кодов символов, пароля, указанного при обфускации: Символ(КодN1)+Символ(КодN2).
Эта функция заменяемая. Как вариант, указываем функцию получения значения пароля из модуля «Повтор используемых значений».
По умолчанию новый модуль генерируется универсально. Вычисление пароля происходит при КАЖДОМ вызове расшифровки строки.
Поскольку при обфускации нет возможности автоматически определить, что обрабатываем — модуль формы/модуль приложения, то пока этот нюанс обрабатываем самостоятельно. Правка минимальна.
2. При установке режима шифрования строк разбиваются/шифруются ВСЕ строковые переменные модуля.
3. Имена функций НЕ обрабатываются.
4. Перенос директив препроцессора, обработка областей модуля НЕ ТЕСТИРОВАЛАСЬ,
5. НЕ анализируются и обрабатываются «как есть» переменные, которым задано наименование глобального контекста 1С или зарезервированного слова 1С.
Пример:
Если в коде объявлена переменная «Символ», «КодСимвола», то используются ОДНОИМЕННЫЕ функции. Исходный код 1С обрабатывает корректно (хотя есть одноименные функции глобального контекста). При обсфукации вызов функции «Символ» будет заменен новым именем переменной «Символ», и в модуле возникнет синтаксическая ошибка.
5. Используются функции шифровки/дешифровки, доработанные с Infostart … Публикацию, к сожалению, уже не смог найти.
Обработку обфускации модуля формы/программного модуля 1С «Шифрование24» можно скачать ЗДЕСЬ
"+" простота реализации, отсутствие внешних компонент
"-" низкое быстродействие
Читайте также: