Firmar un módulo después de la compilación del kernel

Firmar un módulo después de la compilación del kernel

Construí un kernel en tmpfs y luego reinicié.

Ahora veo un mensaje cuando compilo el módulo de terceros,

NO SIGN [M] XXXX.ko

¿Cómo puedo firmarlo? El par de claves generado durante rpmbuildya se perdió, supongo.

Respuesta1

Sorprendentemente, esto carecía de documentación. Encontré este archivofirma-módulo.txt, que forma parte de la documentación del kernel de RHEL6. En este documento se muestra cómo generar claves de firma, asumiendo que desea firmar todos sus módulos como parte de una compilación del kernel:

cat >genkey <<EOF
%pubring kernel.pub
%secring kernel.sec
Key-Type: DSA
Key-Length: 512
Name-Real: A. N. Other
Name-Comment: Kernel Module GPG key
%commit
EOF
make scripts/bin2c
gpg --homedir . --batch --gen-key genkey
gpg --homedir . --export --keyring kernel.pub keyname |
 scripts/bin2c ksign_def_public_key __initdata >crypto/signature/key.h

También el artículo de Linux Journal titulado:Módulos de kernel firmadostiene algunos buenos detalles y pasos sobre cómo hacer partes de esto, pero no pude encontrar las herramientas del espacio de usuario extract_pkeyy moda las que hace referencia.

Tal vez quieras husmearEl sitio de Greg Kroah, puede que encuentres algo útil en alguna de sus presentaciones.

Referencias

Respuesta2

Vaya al directorio fuente del kernel y haga (ejemplo):

./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko

Verifique cuál es el algoritmo de resumen que usa su kernel abriendo .config y leyéndolo en CONFIG_MODULE_SIGlos valores de configuración:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"

información relacionada