什么是内核模块签名?内核如何开启模块签名

嵌入式技术

1332人已加入

描述

什么是内核模块签名

驱动可以直接编译进内核镜像,也可以单独编译成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

上面的秘钥编译后生成在/cert目录下


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 .ko | tail


未签名

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


审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分