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

23.06.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Конфигурация хранения паролей Keystore + подсистема шифрования информации
.cf 109,80Kb ver:1.0
22
22 Скачать (3 SM) Купить за 2 450 руб.

Вашему вниманию предлагается подсистема шифрования данных в 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    2698    11    aximo    5    

2

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

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

2 стартмани

30.01.2023    2126    2    olevlasam    3    

3

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

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

1 стартмани

04.12.2022    3558    16    keyn5565`    0    

14

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

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

2 стартмани

31.08.2022    4440    9    vit59    2    

6

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

Обработка, позволяющая запутывать и шифровать байт-код, поставлять модули без исходных текстов и т.д. Работает только в файловом варианте с версии платформы 8.3.18 из-за асинхронных конструкций "Асинх" и "Ждать". Протестировано на платформе 8.3.25.1394.

10 стартмани

16.06.2022    12632    104    ZhokhovM    12    

45

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

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

2 стартмани

09.03.2022    6110    3    ge_ni    9    

2

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

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

1 стартмани

27.12.2021    5075    2    idm80    12    

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
Оставьте свое сообщение