Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Информация

Данная статья предназначена в первую очередь для разработчиков, чьи программные продукты должны работать на компьютерах под управлением ОС Astra Linux Special Edition в условиях применения Замкнутой Программной Среды (ЗПС). Для того, чтобы ЗПС позволила запуск добавляемых разработчиками файлов (исполняемых файлов и библиотек), эти файлы должны быть подписаны. Далее описывается процедура подписывания файлов.

См. также статью Инструменты для выполнения подписания файлов DLL и проверки подписи.



Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5)
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

  • Astra Linux Common Edition 2.12


Подготовительные действия

Предупреждение

Все действия осуществляются от имени непривилегированного пользователя, если не указано иное.


Информация

Далее в статье:

  • Название организации принято за ORG;
  • Предполагается, что подписываемый файл test_elf находится в том же каталоге, что и ключи, используемые для подписания.
  • Ознакомиться с разделом 16. ОГРАНИЧЕНИЕ ПРОГРАММНОЙ СРЕДЫ документации "Руководство по КСЗ. Часть 1 РУСБ.10015-01 97 01-1";
  • Изучить программную документацию:
    • man bsign;
    • man gpg.
  • Изучить дополнительные информационные материалы

  • Убедиться в наличии и доступности комплекта ключей. Ключи могут быть:
    • Получены от ООО "РусБИТех-Астра" (далее - изготовитель) по запросу. Это ключи, подписанные ключами изготовителя. См. статью Как получить ключи для подписи СПО. Эти ключи могут использоваться для проверки всех типов подписей.
    • Созданы самостоятельно (самоподписанные ключи). Эти ключи могут использоваться для проверки подписей в расширенных атрибутах и, в обновлениях начиная с Astra Linux Special Edition 1.8, отсоединенных подписей. Наличие подписи изготовителя в этих ключах не проверяется.

Регистрация ключей, полученных от изготовителя

  • Если комплект ключей получен в виде ISO-образа - примонтировать этот образ. Если комплект ключей получен в виде архива — распаковать архив.

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

    Модуль gpg и модуль digsig_verif - абсолютно не связаны и независимы. Список импортированных ключей в gpg никак не влияет на проверку исполняемых файлов при включении режима замкнутой программной среды (ЗПС).

  • Импортировать в таблицу ключей пользователя секретный ключ, для чего:

    • Импортировать предустановленные ключи изготовителя, если это не было сделано ранее. Импортировать ключи следует в порядке их подписания, т.е. сначала ключ, которым выполнялась подпись, затем - подписанный ключ:
      Command
      gpg --import /etc/digsig/primary_key_2018.gpg
      gpg --import /etc/digsig/partners_rbt_root_key_2018.gpg
    • Перейти в каталог с полученными ключами и импортировать ключи из полученного комплекта ключей. Для выполнения операции импорта понадобится указать пароль. В Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5) запрос пароля не производится. Пароль находится в этом же каталоге в файле ORG_password.txt. Будьте аккуратны при копировании в буфер обмена — символ перевода строки будет распознан соответственно. Во избежание ошибок при вводе пароля рекомендуется указать файл с паролем с помощью опции при выполнении команды импорта:
      Command
      gpg --import --pinentry-mode=loopback --passphrase-file=ORG_password.txt ORG_secret.gpg
      В примере выше опция --passphrase-file позволяет не запрашивать пароль, а прочитать его  из файла, указанного в этой опции.
    • Проверить список импортированных ключей и запомнить идентификатор ключа ORG_secret_key_id:

      Command
      gpg --list-secret-keys

      Идентификатор ключа в выводе команды представлен строкой из сорока шестнадцатиричных цифр (строкой из 8 символов и указывается через обратную косую черту ("слэш") после алгоритма в Astra Linux Special Edition 1.5).

Создание и регистрация самоподписанных ключей

  1. Для создания самоподписанных ключей:
    1. Создать файл с параметрами ключей, например:
      Блок кода
      Key-Type:GOST_R34.10-2012
      %no-protection
      Name-Real:<название_организации>
      Name-Comment: No comments
      Name-Email: <адрес_электронной_почты>
    2. Выполнить генерацию ключей:
      Command
      gpg --gen-key --batch <имя_файла_с_параметрами>

Подписывание файлов

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

Доступные инструменты для подписывания файлов:

  • начиная с обновления Astra Linux Special Edition 1.8 — инструмент bsign-integrator;
  • инструмент bsign, применение которого описано далее;
  • инструменты bsign-dll и bsign-dot-net.

Доступные методы подписания файлов зависят от наличия ключей:

  • При наличии ключей подписанных изготовителем можно использовать все типы подписей.
  • При наличии только самоподписанных ключей можно использовать подписи в расширенных атрибутах и, начиная с обновления Astra Linux Special Edition 1.8, отсоединенные подписи.
    Предупреждение
    При применении самоподписанных ключей для создания встраиваемой подписи подписание и проверка подписи командами bsign (bsign-integrator) выполняются без ошибок, однако в ЗПС такая не может быть проверена и работать не будет.

Для подписания файлов:

  • Архивы и пакеты (deb-файлы) необходимо предварительно распаковать для анализа содержащихся в них файлов.
  • Убедиться в пригодности файла для подписания, проверив его тип. Проверить тип файла можно с помощью команды file. Например, для файла /bin/bash:

    Command
    Titlefile /bin/bash
    /bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=30bada4dfa11f45a96a5993d4c2fd41a27a61663, stripped
    Для файла формата PE:
    Command
    Titlefile SampleRes.dll

    SampleRes.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows

    Если тип файла не ELF, то:

    • в Astra Linux Special Edition 1.8 для 
    • в Аstra Linux c установленным актуальным оперативным обновлением для подписания файлов формата PE можно использовать bsign, явно задавая тип подписи;
    • в более ранних обновлениях bsign может не поддерживать подписи для формата файлов PE, и в таких случаях следует использовать процедуру создания встраиваемой подписи из статьи Инструменты для выполнения подписания файлов DLL и проверки подписи;

    • для подписания файлов иных форматов следует использовать подписи в расширенных атрибутах и отсоединенные подписи.
  • Подписание тестового ELF-файла test_elf с помощью команды bsign:

    Command
    bsign -s test_elf

    Если тип подписи не указан явно (см. далее), то начиная с версии bsign 1.4.1 по умолчанию используется встраиваемая подпись (-E). В версиях 1.2.1 — 1.4.1 тип подписи автоматически определяется в зависимости от формата файла (ELF или PE). В более ранних обновлениях используется встраиваемая подпись и, в некоторых версиях, подпись в расширенных атрибутах

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

    Command
    bsign -s --pgoptions="--default-key=ORG_secret_key_id" test_elf

    Для подписания файлов форматов отличных от ELF следует дополнительно указать опцию, определяющую тип подписи. См. ЗПС: инструмент bsign и ЗПС: инструмент bsign-integrator.

    Предупреждение

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

    1. Сохранить пароль в файле (в примере ниже - в файле ORG_password.txt.
    2. Использовать команду bsign со следующими опциями:

      Command
      bsign -N -s --pgoptions="--batch --pinentry-mode=loopback --passphrase-file=ORG_password.txt --default-key=ORG_secret_key_id" test_elf

      где опция -N запрещает запрос пароля командой bsign, а значение опции --pgoptions предписывает использовать пароль, сохраненный в файле, без интерактивного запроса.

     

После того, как файл подписан, можно проверить подпись:

Command

bsign -w test_elf

Для удобства подписания deb-пакетов, можно воспользоваться данной инструкцией.

Запуск подписанных файлов на клиентских машинах

Далее под клиентской машиной подразумевается машина, на которой:

  1. Включен ЗПС.
  2. Используются подписанные файлы.

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

Для того, чтобы подписанные файлы могли использоваться на клиентских машинах при включенной ЗПС ЗПС ключи для проверки подписей должны быть скопированы на клиентскую машину и загружены в ядро ОС этой машины. Подробную информацию о настройке ЗПС на клиентских машинах см. в статье Ограничения программной среды в Astra Linux Special Edition x.8.