Утилита evmctl#

Описание#

Утилита evmctl служит для создания и проверки цифровых подписей, которые используются подсистемой контроля целостности ядра Linux IMA/EVM (Integrity Measurement Architecture and Extended Verification Module), а также для импорта ключей в системное хранилище («keyring»).

Синтаксис утилиты:

evmctl <options> <command>

Где:

  • <options> - опции;

  • <command> - команда.

Опции#

Часто используемые опции утилиты представлены в таблице ниже.

Опции evmctl#

Опция

Описание

-a, --hashalgo

Использовать заданный алгоритм хеширования

-k, --key

Задать путь к ключу для подписи; по умолчанию /etc/keys/{privkey,pubkey}_evm.pem

-r, --recursive

Выполнять рекурсивное подписание всех элементов каталога

-s, --imasig

Подписать файл сигнатурой IMA

-v

Вывести подробную информацию о ходе выполнения

-h, --help

Вывести справочную информацию

Команды#

Часто используемые команды утилиты представлены в таблице ниже.

Команды evmctl#

Команда

Описание

sign

Подписать файл

ima_sign

Подписать файл сигнатурой IMA

ima_verify

Проверить совпадение подписи файла

Пример использования#

В качестве примера приведен сценарий подписи и проверки соответствия подписи файла.

Предварительные условия#

Перед выполнением основного сценария выполните следующие команды:

  1. Опционально. Установите утилиту evmctl:

    dnf install ima-evm-utils
    
  2. Опционально. Установите утилиту openssl (подробнее о работе утилиты - в разделе «Утилита openssl»):

    dnf install openssl
    
  3. Создайте конфигурационный файл test-ca.conf, который будет использоваться для генерации сертификата:

    cat 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
    
  4. Выполните команду, чтобы сгенерировать 2048-битный RSA-ключ и сертификат x509 (срок действия: 100 дней), используя конфигурационный файл из шага 3:

    openssl req -verbose -new -nodes -utf8 -sha1 -days 100 -batch -x509 \
          -config test-ca.conf \
          -newkey rsa:2048 \
          -out x509_evm.der -outform DER \
          -keyout privkey_evm.pem
    
  5. Проверьте, что файлы созданы с помощью команды:

    ls
    

    Пример вывода команды:

    original-ks.cfg  privkey_evm.pem  test-ca.conf  x509_evm.der
    
  6. Создайте каталог:

    mkdir -p /etc/keys/
    
  7. Скопируйте файлы: privkey_evm.pem, test-ca.conf, x509_evm.der — в созданный каталог:

    cp test-ca.conf x509_evm.der privkey_evm.pem /etc/keys/
    

Основной сценарий#

Чтобы подписать файл и проверить его подпись с помощью утилиты evmctl, выполните:

  1. Создайте файл test.txt:

    touch test.txt
    
  2. Подпишите файл test.txt:

    evmctl sign --imasig test.txt 
    
  3. Проверьте совпадение вычисляемой и сохраненной подписей файла test.txt c выводом подробной информации о ходе выполнения:

    evmctl ima_verify -v test.txt
    

    Убедитесь, что в выводе присутствует строка, свидетельствующая о соответствии подписей:

    test.txt: verification is OK 
    

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

man evmctl

Или:

evmctl --help

Или:

evmctl -h