内核模块签名机制
linux内核从3.7 开始加入模块签名检查机制, 校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证, 模块签名验证并非强制使用, 可在编译内核时配置是否开启。
CONFIG_MODULE_SIG: Module signature verification
开启该选项后,内核加载该模块时会对内核模块的签名进行检查。默认情况下,在加载没有签名或签名不正确的内核模块时,仅打印一条提示信息,将内核标记为tainted,然后继续加载该模块。
CONFIG_MODULE_SIG_FORCE: Require modules to be validly signed
开启该选项后,在加载无签名或签名不正确的内核模块时,内核会直接拒绝加载签名有问题的内核模块。
CONFIG_MODULE_SIG_ALL:Automatically sign all modules
kbuild在执行make modules_install时对所有的内核模块进行签名,若该选项未设置,则需要手动调用scripts/sign-file对内核模块进行签名
CONFIG_MODULE_SIG_HASH: 设置签名算法
包括:
- CONFIG_MODULE_SIG_SHA1:sha1
- CONFIG_MODULE_SIG_SHA