内核模块 签名机制
模块签名机制
不开启签名机制时,内核模块可以任意加载到内核。默认不开启。开启后,内核会拒绝没有签名的模块。模块签名机制开启的内核配置方法:
不开启签名机制时,内核模块可以任意加载到内核。默认不开启。
开启后,内核会拒绝没有签名的模块。
--------------------
配置文件使能(方法一):直接添加
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内核编程