Evmctl

Материал из ALT Linux Wiki

evmctl - программа для создания и проверки цифровых подписей для IMA/EVM, а также для добавления ключей в набор ключей ядра. Распространяется по лицензии GPL2.0+.

Памятка: ГОСТ алгоритмы поддерживаются в ima-evm-utils с версии v1.2 (2019-07-24), поддержка ГОСТ алгоритмов в ядре Линукс — хэш по ГОСТ 34.11 с версии 5.0 (2019-03-03), ЭЦП по ГОСТ 34.10 с версии 5.2 (2019-07-07). Видео презентация на Linux Security Summit 2019[1]

Установка

Установить пакет ima-evm-utils

apt-get install ima-evm-utils

Для создания ключей также потребуется программа openssl

apt-get install openssl

Использование

Описание ima-evm-utils находится в файле /usr/share/doc/ima-evm-utils-1.0/README, а так же в man evmctl.

Ниже примеры использования.

Подписи в старом формате v1 (RSA ключи)

Импорт RSA-ключа, подпись файла с помощью этого ключа и проверка подписи файла:

  1. Создание RSA-ключей (для подписей типа v1) и копирование их в каталог /etc/keys, в котором находятся ключи используемые по-умолчанию
    openssl genrsa -out privkey_evm.pem 1024
    openssl rsa -pubout -in privkey_evm.pem -out pubkey_evm.pem
    mkdir /etc/keys
    cp {pubkey_evm.pem,privkey_evm.pem} /etc/keys
  2. Импорт созданного публичного ключа в набор ключей ядра (keyring):
    evmctl import --rsa /etc/keys/pubkey_evm.pem $evm_id
  3. IMA + EVM подпись (формата v1, что характеризуется опцией --rsa) произвольного файла ключом /etc/keys/privkey_evm.pem:
    evmctl sign --imasig --rsa <название файла>
  4. Проверка EVM подписи (IMA не проверяется) по публичному ключу /etc/keys/pubkey_evm.pem:
    evmctl verify <название файла>
    В случае соответствия подписи будет выдано сообщение - Verification is OK.

Подписи в новом формате v2 (RSA ключ и x509 сертификат)

  • Пример конфига для генерации ключа и сертификата от организации "IMA-CA" положить в файл test-ca.conf:
    [ req ]
    distinguished_name = req_distinguished_name
    prompt = no
    string_mask = utf8only
    x509_extensions = v3_ca
    
    [ req_distinguished_name ]
    O = IMA-CA
    CN = IMA/EVM certificate signing key
    emailAddress = ca@ima-ca
    
    [ v3_ca ]
    basicConstraints=CA:TRUE
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid:always,issuer
  • Генерация 2048-битного ключа и x509 сертификата (на 10000 дней) с использованиев этого конфига:
    $ openssl req -verbose -new -nodes -utf8 -sha1 -days 10000 -batch -x509 \
          -config test-ca.conf \
          -newkey rsa:2048 \
          -out x509_evm.der -outform DER \
          -keyout privkey_evm.pem
    На выходе файл privkey_evm.pem с приватным ключем и x509_evm.der с публичным сертификатом. Их можно положить в каталог /etc/keys.
  • IMA + EVM подпись (формата v2, что характеризуется отутствием опции --rsa) произвольного файла ключом privkey_evm.pem:
    evmctl sign --imasig <название файла>
  • Проверка EVM подписи (IMA не проверяется) по публичному сертификату x509_evm.der:
    evmctl verify <название файла>
    В случае соответствия подписи будет выдано сообщение - Verification is OK.

Ссылки

Страница проекта на sourceforge.net