内核模块 签名机制

模块签名机制

不开启签名机制时,内核模块可以任意加载到内核。默认不开启。开启后,内核会拒绝没有签名的模块。模块签名机制开启的内核配置方法:

不开启签名机制时,内核模块可以任意加载到内核。默认不开启。
开启后,内核会拒绝没有签名的模块。
--------------------
配置文件使能(方法一):直接添加
    CONFIG_MODULE_SIG
    CONFIG_MODULE_SIG_FORCE
    CONFIG_MODULE_SIG_ALL

uboot bootargs 参数使能(方法二):
    添加参数:module.sig_enforce=1
menuconfig 配置:
    Enable loadable module support
        [*] Module signature verification
        [*] Require modules to be validly signed
        [*] Automatically sign all modules
        Which hash algorithm should modules be signed with? (Sign modules with SHA-1)
编译内核、模块:make && make install && make modules && make modules_install
判断是否开启:dmesg | grep 509

密钥对签名:内核根目录

certs/signing_key.x509:公钥。会插入内核并随之一起启动。
certs/signing_key.pem:插入编译的模块,在加载时验证。
--------------------
添加签名:[perl] scripts/sign-file sha1 signing_key.pem signing_key.x509 hello.ko
    scripts/sign-file:签名文件
    sha1:编译内核时指定的签名算法
    signing_key.pem:私钥
    signing_key.x509:公钥
    hello.ko:要签名的模块
查看签名:hexdump –C hello.ko | tail
删除签名:strip --strip-debug hello.ko
Linux内核模块编译、加载、运行机制分析、版本控制、许可声明、内核污染、模块传参、模块签名机制、out-of-tree动态模块编译及Makefile模板编写,尽在《Linux内核编程》,详情点击:王利涛老师个人淘宝店:Linux内核编程