Assinar um módulo depois da compilação do kernel

5

Eu criei um kernel no tmpfs, então eu reiniciei.

Agora vejo uma mensagem quando compilo o módulo de terceiros

NO SIGN [M] XXXX.ko

Como posso obtê-lo assinado? O par de chaves gerado durante rpmbuild já está perdido, eu acho

    
por daisy 29.04.2013 / 08:46

2 respostas

9

Isso foi surpreendentemente carente de documentação. Eu encontrei este arquivo, module-signing.txt , que é parte do Documentação do Kernel RHEL6. Neste documento, ele mostra como gerar chaves de assinatura, supondo que você queira assinar todos os seus módulos como parte de uma compilação do 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

Também o artigo do Linux Journal intitulado: Signed Kernel Modules tem alguns bons detalhes e passos sobre como fazer pedaços de isso, mas não consegui encontrar as ferramentas de espaço do usuário, extract_pkey e mod que ele faz referência.

Você pode querer procurar no site do Greg Kroah , você pode encontrar algo útil em uma de suas apresentações.

Referências

por 29.04.2013 / 11:00
0

Vá para o diretório de origem do kernel e faça (exemplo):

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

Verifique qual é o algoritmo de resumo que seu kernel está usando abrindo o arquivo .config e lendo-o em CONFIG_MODULE_SIG config values:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"
    
por 16.01.2015 / 12:30