Подсистема шифрования данных + пример реализации: решение Keystore для хранения паролей

23.06.15

Разработка - Защита ПО и шифрование

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

Скачать исходный код

Наименование Файл Версия Размер
Конфигурация хранения паролей Keystore + подсистема шифрования информации
.cf 109,80Kb
22
.cf 1.0 109,80Kb 22 Скачать

Вашему вниманию предлагается подсистема шифрования данных в 1С.

В поставляемой конфигурации реализован механизм симметричного шифрования, описанный в статье //infostart.ru/public/363830/

Подсистема может использоваться как для интеграции в другие конфигурации, так и в качестве самостоятельного решения для хранения паролей (реализовано как пример использования инструмента, которым сам стал пользоваться).

В поставку входит конфигурация, содержащая в себе:

  1. Функциональность шифрования данных и ограничения доступа к системе (см. далее);
  2. Функциональность для хранения паролей доступа (см. далее);
  3. Библиотеку универсальных функций и процедур (//infostart.ru/public/319157/);
  4. Универсальный механизм обработки событий записи объектов (//infostart.ru/public/321709/);
  5. Библиотеку универсальной обработки асинхронных вызовов (//infostart.ru/public/363216/)

 

Описание подсистемы

I. Ключ шифрования

В  конфигурации предусмотрена константа "Контейнер ключа шифрования" с типом Хранилище значения. Если при входе в систему хранилище является пустым, то шифрование считается выключенным. В этом случае конфигурация ведет себя как стандартное решение для хранения информации, тогда ключ шифрования не запрашивается.

С помощью обработки "Изменение ключа шифрования" можно установить значение ключа шифрования, который будет применяться для шифрования информации и ограничения доступа в систему (при изменении ключа производятся последовательно дешифровка информации по старому ключу и зашифровка информации по новому ключу). Также введенным ключом шифруется строка пустого УИД, помещаемая в зашифрованном виде в константу "Контейнер ключа шифрования".

После включения шифрования посредством установки ключа при входе в систему помимо стандартной авторизации, необходимо указать ключ шифрования (один на информационную базу). Если с помощью введенного ключа не удастся расшифровать контейнер, сеанс завершится. если ключ указан правильно, его значение помещается в параметр сеанса и используется для шифрования и расшифровки конфиденциальной информации.

Ключ шифрования не хранится ни в информационной базе, ни в конфигурации, поэтому извлечь из информационной базы зашифрованную информацию без подбора ключа практически невозможно.

II. Организация новых объектов шифрования в подсистеме

Для организации шифрования произвольной информации необходимо сделать следующее:

  1. Определиться с составом объектов ссылочного типа, информация в которых подлежит шифрованию (в приводимом решении используется два справочника "Ресурсы" и "Стандарты доступа"). Выбранные объекты указать в качестве составных типов для определяемого типа "Объект шифрования".
  2. В модуль объекта каждого из объектов шифрования добавить следующие экспортные процедуры и функции (без параметров):
    • Функция ПроверитьЗаполнениеШифруемыхРеквизитов (возвращает Истина, если реквизиты объекта заполнены информацией, подлежащей шифрованию, в противном случае Ложь);
    • Функция ПодготовитьИнформациюДляШифрования (возвращает строку, подлежащую шифрованию; если нужно зашифровать табличную часть или множество других реквизитов, всю информацию можно поместить в произвольную универсальную коллекцию и воспользоваться функцией ЗначениеВСтрокуВнутр);
    • Процедура ОчиститьШифруемыеРеквизиты (удаляет из объекта информацию, подлежащую шифрованию);
    • Процедура ВосстановитьЗашифрованныеРеквизиты (расшифровывает и восстанавливает в объекте ранее зашифрованную информацию);
  3. Добавить в подписки на события "Перед записью объекта шифрования" и "При записи объекта шифрования" объекты шифрования в качестве источника.
  4. Настроить демонстрацию пользователю зашифрованной информации в формах объектов шифрования

III. Механизм шифрования

Механизм шифрования, как уже было написано выше, работает, если установлен ключ шифрования. Механизм шифрования информации в подсистеме представляет собой следующую последовательность действий:

  1. Перед записью объекта шифрования, если в дополнительных свойствах объекта не установлен флаг "Не шифровать", проверяется наличие информации для зашифровки (Функция ПроверитьЗаполнениеШифруемыхРеквизитов).
  2. Если шифруемые реквизиты заполнены, производится формирование строки, которая будет зашифрована (Функция ПодготовитьИнформациюДляШифрования)
  3. Информация для шифрования помещается в дополнительные свойства объекта, а реквизиты шифрования очищаются (Процедура ОчиститьШифруемыеРеквизиты), т.о. шифруемая информация в объекте больше не хранится.
  4. При записи, если не произошел какой-либо отказ, вышеописанные изменения фиксируются, информация шифруется с помощью ключа шифрования симметричным алгоритмом (см. подробно //infostart.ru/public/363830/) и помещается в Хранилище значения, которое записывается в регистр сведений "Данные шифрования".
  5. При проведении дешифровки (Процедура ВосстановитьЗашифрованныеРеквизиты) значения реквизитов шифрования восстанавливаются.

Для удобства использования в конфигурации предусмотрены две общие команды "Зашифровать информацию по всем объектам" и "Расшифровать информацию по всем объектам".

IV. Описание решения Keystore для хранения паролей

Основой решения является справочник "Ресурсы" (форма элемента представлена на скриншоте).

При заполнении информации в справочнике можно выделить следующие блоки:

  1. Общая информация (наименование, код, интернет-ссылка для web-ресурсов);
  2. Нормативно-справочная информация (аналитические разрезы учета ресурсов по соответствующим справочникам):
    • Владелец (провайдер) ресурса (лицо, обеспечивающее доступ к ресурсу);
    • Вид (произвольная классификация видов ресурсов - например: домен, личный кабинет, рабочее место, электронная почта и т.п.);
    • Объект (для ресурсов, жестко привязанных к некоторому физическому объекту, например, зданию, помещению, земельному участку и т.п.)
  3. Авторизация:
    • логин (учетная запись) - можно указать в форме строки или ссылки на справочник "Учетные записи" (справочник создан для ресурсов, использующих одинаковые логины)
    • пароль (можно указать в форме строки или ссылки на справочник "Стандарты доступа", описание см. ниже)
    • Число вариантов (для периодически изменяемых паролей размер исторической памяти)
  4. Справочно: Даты получения и прекращения доступа к ресурсу
  5. Идентификаторы: табличное поле на отдельной закладке, в котором можно хранить значения различной идентификационной информации, связанной с соответствующим ресурсом (не являющейся логином), например, номер договора, код клиента и т.п.

Поле "Пароль" является шифруемым реквизитом справочника. На форме элемента предусмотрена кнопка открытия значения, при нажатии на которую, если значение заполнено (не зашифровано), то оно и открывается, в противном случае открывается расшифрованное значение, хранящееся в регистре сведений "Данные шифрования".

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

 

Надеюсь, кому-нибудь пригодится.

Принимаются пожелания по доработке. 

Шифрование хранение паролей защита информации криптография

См. также

Запрет глобального поиска в конфигурации

Защита ПО и шифрование Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

Представляю вам микрорасширение, которое запрещает глобальный поиск по вашей конфигурации.

1 стартмани

09.02.2023    2249    9    aximo    4    

2

Как защитить pdf файл

Защита ПО и шифрование Абонемент ($m)

Для установки защиты pdf документа, полученного в 1С, написано консольное приложение на c#., использующее одну зависимость pdfSharp.dll. В результате работы приложения ограничены операции над документом и записаны метаданные. С помощью аргументов командной строки можно управлять работой приложения.

2 стартмани

30.01.2023    1701    1    olevlasam    3    

3

Универсальный синтаксический анализатор ASN.1 для декодирования .key, .cer, .der, .p7m, .p7s, .crt, .pem

Защита ПО и шифрование Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Универсальный синтаксический анализатор ASN.1, который может декодировать любую допустимую структуру ASN.1 DER или BER, независимо от того, закодирована ли она в кодировке Base64 (распознаются необработанные base64, защита PEM и begin-base64) или в шестнадцатеричном кодировании.

1 стартмани

04.12.2022    3035    12    keyn5565`    0    

13

Шифрование строки на основе мастер-пароля в 1С Предприятие 8.3.19

Защита ПО и шифрование Платформа 1С v8.3 Абонемент ($m)

Демонстрация возможностей шифрования строки на основе мастер-пароля в 1С Предприятие 8.3.19. AES без zip файла, RSA, PKDF2. (c использованием библиотеки С# через com).

2 стартмани

31.08.2022    3878    7    vit59    2    

6

Обфускатор байт-кода

Защита ПО и шифрование Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка, позволяющая запутывать и шифровать байт-код, поставлять модули без исходных текстов и т.д. Протестировано на платформе 8.3.23.1739.

10 стартмани

16.06.2022    10481    82    ZhokhovM    12    

41

Как уберечь конструкторскую документацию от воровства конкурентами?

Защита ПО и шифрование Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Как уберечь конструкторскую документацию от воровства конкурентами? Недавно столкнулся с этой проблемой. Заказчик серьёзно обеспокоен утечкой информации о конструкторских разработках в адрес конкурентов, за счет подкупа исполнителей, занимающихся производством по конструкторской документации, операторов технологического оборудования и обрабатывающих центров по изготовлению деталей и сборочных единиц.

2 стартмани

09.03.2022    5698    3    ge_ni    9    

2

Защита конфигураций, обработок, расширений 1С онлайн, управление версиями

Защита ПО и шифрование Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Система построена на веб платформе, все управление происходит на сайте в личном кабинете пользователя.

1 стартмани

27.12.2021    4604    2    idm80    11    

9
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lex27119 23.06.15 12:57 Сейчас в теме
2. SergeySST 2 31.03.16 09:36 Сейчас в теме
Аналогичную публикацию видел у Павла Чистова
3. lihomanov 83 13.03.21 18:17 Сейчас в теме
Добрый день! во вложении запрос на решение.
Прикрепленные файлы:
Решение.txt
Оставьте свое сообщение