博客專欄

EEPW首頁 > 博客 > 征程 6X release 版本內(nèi)核模塊安全加載

征程 6X release 版本內(nèi)核模塊安全加載

發(fā)布人:地平線開發(fā)者 時(shí)間:2025-02-07 來源:工程師 發(fā)布文章

01 概述


征程 6X 系統(tǒng)在 release 編譯時(shí)支持內(nèi)核模塊簽名驗(yàn)證,僅加載使用正確密鑰進(jìn)行數(shù)字簽名的內(nèi)核模塊。禁止加載未簽名的內(nèi)核模塊或使用錯(cuò)誤密鑰簽名的內(nèi)核模塊,客戶需要替換成自己的 key 進(jìn)行簽名。


模塊簽名啟用后,Linux 內(nèi)核將僅加載使用正確密鑰進(jìn)行數(shù)字簽名的內(nèi)核模塊。禁止加載未簽名的內(nèi)核模塊或使用錯(cuò)誤密鑰簽名的內(nèi)核模塊來進(jìn)一步強(qiáng)化系統(tǒng)安全。


關(guān)于內(nèi)核模塊簽名的介紹請看下文。



02 配置


2.1 內(nèi)核配置選項(xiàng)


在 menuconfig 中選中 CONFIG_MODULE_SIG,對應(yīng)生成的 config 就被默認(rèn)選中相關(guān)配置來支持模塊簽名。


圖片


2.2 配置說明


項(xiàng)目描述
CONFIG_MODULE_SIG_FORCE對于嚴(yán)格的方法,必須存在有效的簽名
CONFIG_MODULE_SIG_ALL內(nèi)核模塊不自動簽名,該選項(xiàng)自動簽名所有模塊


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



03 密鑰簽名


執(zhí)行簽名可執(zhí)行程序,使用密鑰對內(nèi)核模塊進(jìn)行簽名。


3.1 Make Module_Install 簽名


將內(nèi)核配置為對模塊進(jìn)行簽名,則此簽名將在內(nèi)核編譯 make modules_install 時(shí)進(jìn)行簽名了。


3.2 手動對 ko 簽名


指定需要的證書(包括公鑰)和私鑰、哈希算法以及內(nèi)核模塊。


通過 sign-file(可執(zhí)行程序)使用密鑰對要安裝到內(nèi)核的模塊進(jìn)行簽名,命令格式如下:


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


手動 ko 簽名實(shí)例

SDK 整編時(shí)有封裝好的腳本可以用來自動簽名,對于不用 modules_install 進(jìn)行安裝的模塊,可以用如下腳本:


sign_ko.sh xxx.ko # 傳入驅(qū)動
sign_ko.sh dir # 傳入驅(qū)動所在目錄



只用 AppSDK 時(shí),需要直接使用下面的命令:


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


3.3 發(fā)布版本中的簽名


發(fā)布版本中會把簽名密鑰文件放在 AppSDK 中,給發(fā)布版本提供 ko 的時(shí)候可以直接用這些簽名文件:


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


發(fā)布包里面也有 AppSDK 目錄。


3.4 密鑰

證書 (含公鑰)\ :module_signature.x509
私鑰\ :module_signature.pem


3.5 定制修改簽名機(jī)制


要替換固定 key,將新的 key 替換源碼目錄中的 build_tools/hobot_tools/keys/下的私鑰和證書即可,如下:


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


可以通過 openssl 創(chuàng)建自己的密鑰對 .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 工具是在支持模塊簽名編譯中生成的。
#. 當(dāng) key 替換或者修改簽名機(jī)制的時(shí)候,需要對工程目錄進(jìn)行清理:
刪除生成目錄中的內(nèi)容,rm out/* -rf。
#. 清理完成后,重新編譯系統(tǒng)去燒錄驗(yàn)證。
#. 通過 strip 命令去去除內(nèi)核模塊的簽名。


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



3.6 簽名結(jié)果確認(rèn)


1.dmesg | grep -i x.*509使用新配置的內(nèi)核重新啟動。在 dmesg 的輸出中,您應(yīng)該能夠確認(rèn)加載了正確的證書:

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

內(nèi)核模塊在末尾附加了數(shù)字簽名。一個(gè)簡單的 hexdump 可以確認(rèn)簽名是否存在。

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 的字樣代表簽名成功。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。




相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉