Kernel/signature/rpm

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

Проверка целостности RPM пакетов

Получение RPM ключей и утилит

Актуальные RPM ключи ALT Linux Team находятся в пакете alt-rpmkeys, он установится автоматически вместе с утилитами из alt-rpmkeys-utils:

 # apt-get update
 # apt-get install -y alt-rpmkeys-utils

Проверка целостности пакета с ядром

Пример успешной проверки

Проверка, что RPM пакет подписан ALT Linux Team:

 $ alt-rpmkeys-checksig kernel-image-std-def-5.15.82-alt1.x86_64.rpm
 ALT Sisyphus <alt-sisyphus@altlinux.org>

В случае успеха, утилита выведет кем подписан пакет (это будет email из домена altlinux.org) и код возврата будет 0 (код успешного завершения).

Пример неуспешной проверки (чужая подпись)

На примере пакета подписанного другим дистрибутивом:

 $ alt-rpmkeys-checksig gpgme-1.15.1-2.fc34.x86_64.rpm
 gpgme-1.15.1-2.fc34.x86_64.rpm:
     Header V4 RSA/SHA256 Signature, key ID 45719a39: NOKEY
     Header SHA1 digest: OK (a16f31f5fac1f230566f97a911467a4cc408ac84)
     Verify signature: BAD PARAMETERS (273 0x55a0a804b1a7 1 (nil) (nil))
     V4 RSA/SHA256 Signature, key ID 45719a39: NOKEY
     MD5 digest: OK (9a61f0ec71eb59a33d6ef08c8b95f8a1)
 alt-rpmkeys-checksig: gpgme-1.15.1-2.fc34.x86_64.rpm: signature verification failed

Обратите внимание на текст signature verification failed, при этом утилита вернет код неуспешного завершения (не 0).

Пример неуспешной проверки (измененный пакет)

В случае искажения содержимого пакета. (Для примера добавим лишний байт к данным.)

 $ head -1c /dev/zero >> kernel-image-std-def-5.15.82-alt1.x86_64.rpm
 $ alt-rpmkeys-checksig kernel-image-std-def-5.15.82-alt1.x86_64.rpm
 kernel-image-std-def-5.15.82-alt1.x86_64.rpm:
     Header V4 RSA/SHA512 Signature, key ID da2773bb: OK
     Header SHA1 digest: OK (ef0a801f684333573e0b5d5feb6666eb007b67de)
     MD5 digest:: BAD Expected(3eafda2aac88ee0adebc7d976ce8e044) != (ca048ae433df388d89bed3fe59074f4c)
     V4 RSA/SHA512 Signature, key ID da2773bb: BAD
 alt-rpmkeys-checksig: kernel-image-std-def-5.15.82-alt1.x86_64.rpm: signature verification failed

Как и в предыдущем случае текст signature verification failed и код неуспешного завершения.

Пример неуспешной проверки (отсутствие подписи)

Допустим, вы собирали пакет локально и он не подписан.

 $ alt-rpmkeys-checksig example-1.0-alt1.x86_64.rpm
 alt-rpmkeys-checksig: example-1.0-alt1.x86_64.rpm: signature not found

В этом случае текст signature not found и код неуспешного завершения.