专栏中心

EEPW首页 > 专栏 > 征程 6X release 版本内核模块安全加载

征程 6X release 版本内核模块安全加载

发布人:地平线开发者 时间:2025-02-07 来源:工程师 发布文章

01 概述


征程 6X 系统在 release 编译时支持内核模块签名验证,仅加载使用正确密钥进行数字签名的内核模块。禁止加载未签名的内核模块或使用错误密钥签名的内核模块,客户需要替换成自己的 key 进行签名。


模块签名启用后,Linux 内核将仅加载使用正确密钥进行数字签名的内核模块。禁止加载未签名的内核模块或使用错误密钥签名的内核模块来进一步强化系统安全。


关于内核模块签名的介绍请看下文。



02 配置


2.1 内核配置选项


在 menuconfig 中选中 CONFIG_MODULE_SIG,对应生成的 config 就被默认选中相关配置来支持模块签名。


图片


2.2 配置说明


项目描述
CONFIG_MODULE_SIG_FORCE对于严格的方法,必须存在有效的签名
CONFIG_MODULE_SIG_ALL内核模块不自动签名,该选项自动签名所有模块


用于签名的\哈希算法\ :SHA-512… code:: textCONFIG_MODULE_SIG_SHA512CONFIG_MODULE_SIG_HASH=“sha512”



03 密钥签名


执行签名可执行程序,使用密钥对内核模块进行签名。


3.1 Make Module_Install 签名


将内核配置为对模块进行签名,则此签名将在内核编译 make modules_install 时进行签名了。


3.2 手动对 ko 签名


指定需要的证书(包括公钥)和私钥、哈希算法以及内核模块。


通过 sign-file(可执行程序)使用密钥对要安装到内核的模块进行签名,命令格式如下:


sign-file sha512 module_signature.pem module_signature.x509 xx.ko


手动 ko 签名实例

SDK 整编时有封装好的脚本可以用来自动签名,对于不用 modules_install 进行安装的模块,可以用如下脚本:


sign_ko.sh xxx.ko # 传入驱动
sign_ko.sh dir # 传入驱动所在目录



只用 AppSDK 时,需要直接使用下面的命令:


./sign-file sha512 module_signature.pem module_signature.x509 xx.ko


3.3 发布版本中的签名


发布版本中会把签名密钥文件放在 AppSDK 中,给发布版本提供 ko 的时候可以直接用这些签名文件:


ls AppSDK/module_sig/
module_signature.pem module_signature.x509 sign-file


发布包里面也有 AppSDK 目录。


3.4 密钥

证书 (含公钥)\ :module_signature.x509
私钥\ :module_signature.pem


3.5 定制修改签名机制


要替换固定 key,将新的 key 替换源码目录中的 build_tools/hobot_tools/keys/下的私钥和证书即可,如下:


build_tools/hobot_tools/keys$ ls module_signature.*module_signature.pem module_signature.x509


可以通过 openssl 创建自己的密钥对 .openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform PEM -out module_signature.pem -keyout module_signature.pem${OUTPUT_BUILD_DIR}/kernel/certs/extract-cert module_signature.pem module_signature.x509 # 生成证书
其中 x509.genkey 可以用 linux 下 certs/default_x509.genkey;extract-cert 工具是在支持模块签名编译中生成的。
#. 当 key 替换或者修改签名机制的时候,需要对工程目录进行清理:
删除生成目录中的内容,rm out/* -rf。
#. 清理完成后,重新编译系统去烧录验证。
#. 通过 strip 命令去去除内核模块的签名。


aarch64-linux-gnu-strip -g ~/nfs/module_sig_test.ko



3.6 签名结果确认


1.dmesg | grep -i x.*509使用新配置的内核重新启动。在 dmesg 的输出中,您应该能够确认加载了正确的证书:

root@hobot:~# dmesg | grep -i x.*509
[ 0.333727] Asymmetric key parser ‘x509’ registered
[ 2.068923] Loading compiled-in X.509 certificates
[ 2.152800] Loaded X.509 cert ‘Build time autogenerated kernel key: 4e24f188419c7e1d5305f1d0ae2339286e1835c2’
[ 39.117796] [I|MIPI|hobot_mipi_csi_stl.c+252]:[RX4][STL]: module 509 reg done


2.cat /proc/keys

如果启用了 CONFIG_KEYS_DEBUG_PROC_KEYS,那么 root用户可以在/proc/keys 文件中查看证书:

root@hobot:~# cat /proc/keys
…
0c5ec4d5 I------ 1 perm 1f030000 0 0 asymmetri Build time autogenerated kernel key: 4e24f188419c7e1d5305f1d0ae2339286e1835c2: X509.rsa 6e1835c2 []


3.hexdump -C hobot-pcie.ko | tail

内核模块在末尾附加了数字签名。一个简单的 hexdump 可以确认签名是否存在。

root@hobot:/mnt# hexdump -C hobot-pcie.ko |tail
00014d10  58 df 8f 8e fb 98 2a 76  72 b6 44 8c 97 cb 95 81  |X.....*vr.D.....|
00014d20  d7 1e 8b 8c 48 b8 64 54  13 bc d6 63 78 d3 1b 51  |....H.dT...cx..Q|
00014d30  00 2e 0b 3b 84 6b 35 f2  3b 19 b8 d3 3a 27 be bd  |...;.k5.;...:'..|
00014d40  21 08 2c 17 3c e3 3c 76  21 23 fc b4 c0 e7 eb 82  |!.,.<.<v!#......|
00014d50  13 5f 2d 69 b2 f4 45 d8  af 90 34 f2 69 9c fa e2  |._-i..E...4.i...|
00014d60  2e 02 e9 34 ce 46 f1 97  a1 00 00 02 00 00 00 00  |...4.F..........|
00014d70  00 00 00 02 a9 7e 4d 6f  64 75 6c 65 20 73 69 67  |.....~Module sig|
00014d80  6e 61 74 75 72 65 20 61  70 70 65 6e 64 65 64 7e  |nature appended~|
00014d90  0a                                 |.|


在 ko 文件的末尾有 module signature appended 的字样代表签名成功。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 算法 自动驾驶 算法工具链 地平线 征程5

相关推荐

Ouster推出 Rev8 OS 激光雷达系列 原生彩色激光雷达正式落地

实时训练驾驶人工智能

PID算法

资源下载 2007-02-16

ADI:传感技术助力未来自动驾驶的发展

视频 2020-03-16

面向算法硬件加速的FPGA实现方法

高阶智驾要落地,线控底盘为什么必须执行得准

地平线征程 6 系列集成 Cadence Tensilica Vision DSP,实现规模化量产,合作加速智能驾驶解决方案部署

携手ADI赢得未来

视频 2019-11-08

自动驾驶正推动汽车行业加速布局人形机器人

曲面显示屏取代传统汽车挡风玻璃

自动驾驶的现状与未来(节选)

视频 2020-03-16

加快实现自动驾驶(完整小组讨论)

视频 2020-06-12

数字PID控制算法之一

资源下载 2007-12-28

掘金自动驾驶,不要把大坑当机会

汽车电子 2026-04-17

加密算法之MD5算法

简单实用的单片机CRC 快速算法

资源下载 2007-02-16

76-81GHz自动驾驶CMOS RADAR

视频 2018-05-31

2035年自动驾驶出租车市场规模将达1680亿美元

汽车电子 2026-04-21

恩智浦第三代雷达收发器助力高性能成像雷达规模量产,赋能L2+至L4级自动驾驶

CRC算法原理及C语言实现

资源下载 2007-02-16
更多 培训课堂
更多 焦点
更多 视频

技术专区