Работа с бинарными файлами, форматом ASN1 и криптографией в 1С8 [infostart.ru]

Bot

Администратор
Команда форума
23 Янв 2020
201,945
3,138
113
Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.
Спойлер: Работа с форматом ASN1 в 1С8
Работа с форматом ASN1 в 1С8
Формат ASN.1 (Abstract Syntax Notation - язык для описания абстрактного синтаксиса данных) до сих пор используется, хоть и придуман был в 1984 году. Это байт-ориентированный формат, позволяющий в двоичном виде сохранить структурированные данные. Формат открытый.

Сертификаты криптографии, ЭЦП, подписанные ЭЦП файлы записываются в формате ASN.1.

Работать в 1С8 с бинарными файлами на низком уровне проблематично. Например, если загрузить файл в строку, то некоторые байты не буду читаться (символ с кодом 0 – обрезает строку), некоторые символы не выводятся. Но есть возможность любой бинарный файл прочитать в кодировке BASE64, далее из BASE64 можно получить массив байт (число от 0 до 255). С таким массивом уже можно работать дальше. Биты каждого байта можно получить математическими операциями. Естественно, это не оптимальный по скорости метод, но позволяет избежать запуск внешних компонент.

Особенности криптографии в 1С8

В 1С8 включен блок криптографии. Определены следующие объекты: Сертификат криптографии, Криптографический провайдер (Менеджер криптографии). Определены операции получения ЭЦП (подписывание данных), проверки ЭЦП, шифрования, расшифрования и т.д.

Есть 2 варианта операции подписи данных:

  1. ЭЦП добавляется в исходный файл (чтобы потом работать с таким файлом, нужно извлечь из него ЭЦП),
  2. ЭЦП создается в отдельном файле.
В 1С8 операция подписывания данных (метод Подписать у менеджера криптографии) создает отдельный файл или возвращает двоичные данные с ЭЦП (2 вариант). Многие крипто-программы работают только по 1 варианту (если не большинство).
Включение ЭЦП в исходный файл - нетривиальная задача для 1С, простая конкатенация не подойдет. Упрощенно: подписанный файл создается в формате ASN.1 на основании файла ЭЦП с 3 вложенными структурами, в последней из которых добавляется байтовый массив исходных данных.

На практике получилось создать функцию на 1С8.2, которая получает ЭЦП через Менеджер криптографии 1С и полученную ЭЦП включает в исходные данные. Никакие внешние компоненты не использовались, только функции 1С. Результат был проверен несколькими программами, например КриптоАРМ (использовался КриптоПро CSP).