什么是内核模块签名
驱动可以直接编译进内核镜像,也可以单独编译成ko文件(内核模块),然后再进行加载。内核从3.7后开始支持模块签名,该功能使能以后,内核只允许加载特定的key签名的模块。
内核开启模块签名
[*] Enable loadable module support --->
[*] Module signature verificaTIon
[*] Require modules to be validly signed
[*] AutomaTIcally sign all modules
对应的选项如下:
CONFIG_MODULE_SIG=y
表示开启了签名机制,但是这时候模块签名或不签名都可以使用
CONFIG_MODULE_SIG_FORCE=y
如果上述配置项使能,则模块必须有正确的签名才能正常使用。
CONFIG_MODULE_SIG_ALL=y
对所有模块进行签名
如何签名
1. 获取秘钥
公匙:signing_key.x509
私匙:signing_key.priv // 新版版本kernel为signing_key.pem
上面的秘钥编译后生成在
2.进行签名
Linux kernel 4.3.3及更高的版本使用如下命令签名
$(KDIR)/scripts/sign-file sha512 $(PWD)/signing_key.pem $(PWD)/signing_key.x509 $(PWD)/hello.ko
老版本kernel使用
perl $(KDIR)/scripts/sign-file sha512 $(PWD)/signing_key.priv $(PWD)/signing_key.x509 $(PWD)/hello.ko
查看签名情况
hexdump -C
未签名
00020a90 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00020aa0 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
00020ab0 00 00 00 00 00 00 00 00 d8 10 01 00 00 00 00 00 |................|
00020ac0 b0 04 00 00 00 00 00 00 1f 00 00 00 2e 00 00 00 |................|
00020ad0 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................|
00020ae0 09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 |................|
00020af0 00 00 00 00 00 00 00 00 88 15 01 00 00 00 00 00 |................|
00020b00 f1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00020b10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00020b20
签名成功
00020cf0 10 7c 4b 7d 54 62 ec f3 47 ec ce 2a 3a a0 c7 8a |.|K}Tb..G..*:...|
00020d00 36 b3 e3 34 34 5f 68 83 50 65 8e 3d 20 c2 99 c6 |6..44_h.Pe.= ...|
00020d10 e6 93 3c 25 42 6c b5 0e c3 26 a6 9c 7f 1f d9 f7 |..<%Bl...&......|
00020d20 1c 6c 2b e4 18 fc 4f 68 a3 9d 4c 0e db de 5e d1 |.l+...Oh..L...^.|
00020d30 be 2a 90 94 e8 06 b1 16 e7 6b 60 27 78 0e cf f2 |.*.......k`'x...|
00020d40 f9 9b d2 a0 f6 1e c8 e6 14 e8 24 50 97 32 89 8c |..........$P.2..|
00020d50 f3 be 96 f8 01 06 01 1e 14 00 00 00 00 00 02 02 |................|
00020d60 7e 4d 6f 64 75 6c 65 20 73 69 67 6e 61 74 75 72 |~Module signatur|
00020d70 65 20 61 70 70 65 6e 64 65 64 7e 0a |e appended~.|
00020d7c
审核编辑:刘清
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)