Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20211126SE16 (оперативное обновление 10)
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1) с установленным обновлением БЮЛЛЕТЕНЬ № 20211019SE81 (оперативное обновление 3)
  • Astra Linux Common Edition 2.12.45

Введение

Пакет softhsm2 предоставляет набор инструментов для работы с программно моделируемыми ключевыми носителями (токенами). Использует собственную интерфейсную библиотеку. Являясь интерфейсом командной строки к библиотеке PKCS#11, может также применяться для работы с физическими ключевыми носителями используя другие библиотеки (в том числе интерфейсные библиотеки производителей).

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

Установка пакетов и предварительная настройка

Инструментарий softhsm представлен пакетом softhsm2. Установка пакета может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:

sudo apt install softhsm2
Для работы с эмулируемыми ключевыми носителями, так же, как и для работы с физическими носителями, следует установить пакеты с инструментами. Например, пакеты gnutls-bin или opensc. Далее предполагается, что установлен пакет opensc.

В состав пакета входит интерфейсная библиотека libsofthsm2.so. Эта библиотека может использоваться так же, как библиотеки производителей токенов, например с инструментом pkcs11-tool. На платформе x86-64 библиотека находится в файле /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so (также при установке создается ссылка на библиотеку  /usr/lib/softhsm/libsofthsm2.so). На других платформах найти библиотеку можно выполнив команду:

find /usr -name libsofthsm2.so
При установке пакета создается системный конфигурационный файл /etc/softhsm/softhsm2.conf (доступен для чтения только суперпользователю) и образец пользовательского конфигурационного файла /usr/share/doc/softhsm2-common/examples/softhsm2.conf.sample.

Данные и настройки softhsm индивидуальны для каждого пользователя ОС и по умолчанию хранятся в двух подкаталогах домашнего каталога пользователя:

  • подкаталог .softhsm-tokens — каталог хранения данных (токенов);
  • подкаталог .config/softhsm2 — каталог хранения конфигурационного файла.

Иное размещение конфигурационного файла может быть указано в переменной окружения SOFTHSM2_CONF, иное место хранения данных может быть задано в конфигурационном файле.

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

mkdir -p ~/.softhsm-tokens ~/.config/softhsm2
В качестве образца для создания пользовательского конфигурационного файла можно использовать образец /usr/share/doc/softhsm2-common/examples/softhsm2.conf.sample, изменив в нем значение параметра directories.tokendir на каталог в домашний каталоге пользователя, например:
cp /usr/share/doc/softhsm2-common/examples/softhsm2.conf.sample ~/.config/softhsm2/softhsm2.conf
sed -i "s~^directories.tokendir =.*~directories.tokendir = /home/$USER/.softhsm-tokens~" ~/.config/softhsm2/softhsm2.conf
При выполнении вышеуказанных команд значение параметра directories.tokendir будет заменено на подкаталог в домашнем каталоге текущего пользователя:

directories.tokendir = /home/<имя_пользователя>/.softhsm-tokens

Пользовательский конфигурационный файл размещается в домашнем каталоге: ~/.config/softhsm2/softhsm2.conf. Подробнее про параметры настройки см. man softhsm2.conf.

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

softhsm2-util --show-slots
Вывод команды покажет наличие одного слота с не инициализированным ключевым носителем:

Available slots:
Slot 0
    Slot info:
        Description:      SoftHSM slot ID 0x0
        Manufacturer ID:  SoftHSM project
        Hardware version: 2.4
        Firmware version: 2.4
        Token present:    yes
    Token info:
        Manufacturer ID:  SoftHSM project
        Model:            SoftHSM v2
        Hardware version: 2.4
        Firmware version: 2.4
        Serial number:
        Initialized:      no
        User PIN init.:   no
        Label:

Ключевой носитель перед использованием необходимо инициализировать:

softhsm2-util --init-token --slot 0 --label "<метка_ключевого_носителя>" --pin "<PIN-код_ключевого_носителя>" --so-pin "<SO-PIN-код_ключевого_носителя>"

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

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

Инструмент p11tool (пакеты gutls-bin и libengine-pkcs11-openssl) Инструмент pkcs11-tool (пакет opensc)

 После инициализации токена автоматически добавится новый пустой слот с не инициализированным токеном.

Дальнейшая работа с токенами softhsm не отличается от работы с аппаратными токенами, причем команда softhsm2-util поддерживает использование интерфейсных модулей других производителей, что дает возможность использовать её для работы с токенами этих производителей.

Для полного удаления токенов следует удалить содержимое каталога ~/.softhsm-tokens:

rm -rf ~/.softhsm-tokens/*

Справка по опциям команды softhsm2-util

Usage: softhsm2-util [ACTION] [OPTIONS]
Action:
  --delete-token    Delete the token at a given slot.
                    Use with --token or --serial.
                    WARNING: Any content in token will be erased.
  -h                Shows this help screen.
  --help            Shows this help screen.
  --import <path>   Import a key pair from the given path.
                    The file must be in PKCS#8-format.
                    Use with --slot or --token or --serial, --file-pin,
                    --label, --id, --no-public-key, and --pin.
  --init-token      Initialize the token at a given slot.
                    Use with --slot or --token or --serial or --free,
                    --label, --so-pin, and --pin.
                    WARNING: Any content in token will be erased.
  --show-slots      Display all the available slots.
  -v                Show version info.
  --version         Show version info.
Options:
  --aes             Used to tell import to use file as is and import it as AES.
  --file-pin <PIN>  Supply a PIN if the file is encrypted.
  --force           Used to override a warning.
  --free            Use the first free/uninitialized token.
  --id <hex>        Defines the ID of the object. Hexadecimal characters.
                    Use with --force if multiple key pairs may share
                    the same ID.
  --label <text>    Defines the label of the object or the token.
  --module <path>   Use another PKCS#11 library than SoftHSM.
  --no-public-key   Do not import the public key.
  --pin <PIN>       The PIN for the normal user.
  --serial <number> Will use the token with a matching serial number.
  --slot <number>   The slot where the token is located.
  --so-pin <PIN>    The PIN for the Security Officer (SO).
  --token <label>   Will use the token with a matching token label.

  • Нет меток