日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android内核模块签名,android安装内核module,提示Required key not available

發(fā)布時(shí)間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android内核模块签名,android安装内核module,提示Required key not available 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在調(diào)試一個(gè)驅(qū)動(dòng)的時(shí)候,用insmod加載.ko的時(shí)候,提示Required key not available,第一反應(yīng)是簽名有問題,內(nèi)核模塊也開始使用類似apk的簽名了嗎?查資料后果然是這樣。這個(gè)問題可以說不算是android的問題,而應(yīng)該是linux系統(tǒng)的問題,android本身就是個(gè)linux系統(tǒng)。

下來一步一步分析問題的所在。

內(nèi)核配置

內(nèi)核從3.7后開始支持模塊簽名,這個(gè)功能使能以后,內(nèi)核只允許安裝特定key簽名的模塊。

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

CONFIG_MODULE_SIG=y

表示開啟了簽名機(jī)制,但是這時(shí)候模塊簽名或不簽名都可以使用。

CONFIG_MODULE_SIG_FORCE=y

如果上述配置項(xiàng)使能,則模塊必須有正確的簽名才能正常使用。

CONFIG_MODULE_SIG_ALL=y

內(nèi)核在編譯的時(shí)候,并不會(huì)主動(dòng)去給模塊簽名,除非你把上述配置項(xiàng)打開。

查看內(nèi)核配置文件,發(fā)現(xiàn)上面3個(gè)配置項(xiàng)確實(shí)都打開了,因此肯定是ko簽名的問題。

內(nèi)核如何簽名

在內(nèi)核kernel/kernel下的Makefile中有如下,

signing_key.priv signing_key.x509: x509.genkey

@echo "###"

@echo "### Now generating an X.509 key pair to be used for signing modules."

@echo "###"

@echo "### If this takes a long time, you might wish to run rngd in the"

@echo "### background to keep the supply of entropy topped up.? It"

@echo "### needs to be run as root, and uses a hardware random"

@echo "### number generator if one is available."

@echo "###"

openssl req -new -nodes -utf8 -$(CONFIG_MODULE_SIG_HASH) -days 36500 \

-batch -x509 -config x509.genkey \

-outform DER -out signing_key.x509 \

-keyout signing_key.priv 2>&1

@echo "###"

@echo "### Key pair generated."

@echo "###"

x509.genkey:

@echo Generating X.509 key generation config

@echo? >x509.genkey "[ req ]"

@echo >>x509.genkey "default_bits = 4096"

@echo >>x509.genkey "distinguished_name = req_distinguished_name"

@echo >>x509.genkey "prompt = no"

@echo >>x509.genkey "string_mask = utf8only"

@echo >>x509.genkey "x509_extensions = myexts"

@echo >>x509.genkey

@echo >>x509.genkey "[ req_distinguished_name ]"

@echo >>x509.genkey "O = Magrathea"

@echo >>x509.genkey "CN = Glacier signing key"

@echo >>x509.genkey "emailAddress = slartibartfast@magrathea.h2g2"

@echo >>x509.genkey

@echo >>x509.genkey "[ myexts ]"

@echo >>x509.genkey "basicConstraints=critical,CA:FALSE"

@echo >>x509.genkey "keyUsage=digitalSignature"

@echo >>x509.genkey "subjectKeyIdentifier=hash"

@echo >>x509.genkey "authorityKeyIdentifier=keyid"

其中,x509.genkey是生成key pair時(shí)的配置項(xiàng),signing_key.priv signing_key.x509分別為private key和數(shù)字證書。數(shù)字證書會(huì)打包進(jìn)內(nèi)核,里面有公鑰等,用來解密嘛。每編譯一次,雖然配置文件每次都相同,但是生成的key pair是不同的。

查看簽名信息

利用下面命令查看設(shè)備中的ko文件信息,

hexdump -C my_ko.ko |tail

下面是輸出(內(nèi)核簽名后會(huì)把簽名信息附在模塊的最后面),

00538760? d3 48 70 32 1c 36 75 05? 5f f2 39 84 7d c8 77 2f? |.Hp2.6u._.9.}.w/|

00538770? db 1d b6 1a 18 4b b5 0f? 0f 44 5a f9 c3 1d d7 66? |.....K...DZ....f|

00538780? 08 d5 22 ab 3e f6 4b 38? 81 14 b3 a4 56 ab 22 3d? |..".>.K8....V."=|

00538790? 55 fe cc 2b 9c 82 28 39? 0e 47 df 63 a3 2a bc b4? |U..+..(9.G.c.*..|

005387a0? 73 c9 a2 78 6a 6e 4c f7? 4f 36 b3 45 1b 64 73 b8? |s..xjnL.O6.E.ds.|

005387b0? 1d ca 49 ff 59 6a 99 4b? 5b 13 40 75 01 06 01 1e? |..I.Yj.K[.@u....|

005387c0? 14 00 00 00 00 00 02 02? 7e 4d 6f 64 75 6c 65 20? |........~Module |

005387d0? 73 69 67 6e 61 74 75 72? 65 20 61 70 70 65 6e 64? |signature append|

005387e0? 65 64 7e 0a?????????????????????????????????????? |ed~.|

005387e4

由上面輸出,我們發(fā)現(xiàn)這個(gè)ko已經(jīng)有簽名信息(Module signature appended),為何還是提示key不對(duì)。于是我將編譯機(jī)中版本的my_ko.ko和設(shè)備中的做比較,發(fā)現(xiàn)唯有最后部分不同,我猜一定是兩個(gè)ko的簽名不同,這應(yīng)該就是初步原因。

問題根源

仔細(xì)分析后,得到原因:

原來設(shè)備中的內(nèi)核是后來編譯的,編譯完成后我將內(nèi)核單獨(dú)燒錄進(jìn)設(shè)備(內(nèi)核肯定就放在kernel的分區(qū)),而未改變文件系統(tǒng)(這樣會(huì)造成新kernel中的數(shù)字證書已經(jīng)改變,但是文件系統(tǒng)中的my_ko.ko未改變,而是用以前的內(nèi)核中private key進(jìn)行簽名的)。重新完整燒錄版本后,一切功能正常!

總結(jié)

以上是生活随笔為你收集整理的android内核模块签名,android安装内核module,提示Required key not available的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。