999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Grub的對Initrd簽名驗證的分析與實現

2023-09-20 02:20:30
信息記錄材料 2023年8期
關鍵詞:用戶

陳 劍

(浙江訊飛智能科技有限公司 浙江 杭州 311202)

0 引言

在Linux系統的安全啟動中,通常會使用用戶密鑰來確保內核和Initrd文件的完整性和安全性。對于內核鏡像,有許多方法可以進行簽名驗證,但對于單獨的Initrd文件進行簽名驗證的方法卻比較少見。這是因為Initrd文件通常被認為是內核鏡像的一部分,因此它的安全性往往被忽略。然而在一些場景下,需要對單獨的Initrd鏡像進行簽名驗證,這就需要使用一些技術和工具來實現[1]。Grub是一款廣泛使用的內核引導工具。歷經多年發展,Grub已經成為一個功能強大、穩定可靠的多操作系統引導工具。

本文的方案是創建一個grub.efi的可執行文件,其中包含用戶公鑰,以及所需的模塊和基本配置,在執行時將加載已簽名的grub.cfg配置文件,該配置文件將加載已簽名的Initrd和內核文件。Grub的簽名驗證機制是基于 GPG(GNU Privacy Guard)的數字簽名驗證。

1 Grub及Initrd背景介紹

Linux內核通過配置能掛載一個早期根文件系統來實現系統初始化,這種方法叫做初始RAM盤(Initrd)。通過這個早期根文件系統,來引導存儲到其他分區的根文件系統,它是現代操作系統加載時必不可少的文件之一。

操作系統加載器是計算機啟動時運行的第一個程序,它負責加載內核軟件并將控制權轉交給操作系統內核。在早年PC領域尚不成熟時,各種各樣的操作系統紛繁復雜,Grub這樣一款小巧強大的多系統引導工具應運而生,它最初于1995年由Erich Boleyn創建,它可以加載常見的各種開源操作系統,現在是GNU計劃的一部分,由Grub開發團隊維護[2]。

Grub到今天已經成長為一個非常強大和靈活的工具,具有許多好的特性。例如:(1)支持模塊化。它能夠將許多功能放在動態加載的模塊中,常見的有命令模塊(command.lst)、加密模塊(crypto.lst)、文件系統模塊(crypto.lst)等,這種設計能夠使核心映像文件更小,以更靈活的方式進行構建。本文的簽名驗證將使用Grub提供的verify模塊。(2)支持友好可讀的配置文件。該配置文件可作為預設命令,也支持將配置文件嵌入到Grub映像中。這能夠使得對Grub的開發更靈活高效。(3)提供靈活的命令接口。Grub的命令與Bash命令行非常相似,可根據上下文使用TAB完成命令、設備、分區和目錄中的文件,對用戶更友好。本文的介紹基于grub2.06。

2 對Initrd簽名驗證的意義

內核在進行初始化時,進入用戶空間環境之前系統需要提供一個文件系統。為此,內核需要知道文件系統的存儲位置以及該設備的驅動程序。當設備驅動程序作為組件包含在內核可執行文件中時,可能導致映像文件過大而無法在內存有限的計算機上啟動,可能導致設備探測不存在或硬件沖突以至于系統崩潰或其他問題[3]。為了避免將文件系統直接編碼到內核文件中所出現的這些問題,Initrd(initial RAM disk)機制得以產生,它是一個臨時的根文件系統,現在被稱為早期用戶空間。這個根文件系統能夠進行硬件檢測、模塊加載和設備探測,這些功能是加載真正的根文件系統前所必需的,如圖1所示。

Initrd作為內核啟動初始化時的臨時根文件系統,很可能成為攻擊者進行惡意活動的目標。若沒有對Initrd進行正確的簽名驗證,使之被篡改或惡意替換,攻擊者可能會在引導過程中注入惡意代碼或獲取系統的敏感信息等,從而對系統進行攻擊或進行其他惡意行為,系統安全性將無法得到保障。加載簽名后的Initrd,確保了它的來源和完整性,如果簽名驗證失敗,系統將會拒絕啟動,并給出錯誤提示,從而保護系統免受惡意軟件或黑客攻擊,提高系統的安全性和可靠性[4]。

3 Grub下對Initrd簽名驗證的實現流程

3.1 Grub端的環境搭建及配置

Grub端的環境搭建及配置如圖2所示。

圖2 Grub端的環境搭建及配置

對Grub源碼包進行編譯,以取得Grub開發環境,如圖3所示。

圖3 Grub源碼包的編譯

(1)運行./bootstrap。該腳本文件包含一些用于構建Grub引導程序的腳本和配置文件,運行后將生成configure、configure.ac等配置文件。

(2)運行./configure。該腳本文件根據當前系統的環境和用戶的配置選項來生成 Makefile。configure 腳本會檢查系統環境,包括操作系統類型、處理器架構、編譯器等,并設置一些環境變量。它也能夠讀取用戶提供的選項,例如安裝路徑、編譯選項等,根據這些選項生成Makefile。其中with-platform需要被顯示指定為efi,該選項用于指定要構建的平臺的類型,以便在編譯過程中生成適當的代碼。這是因為Grub可以在不同平臺上運行,并且不同的平臺可能需要不同的代碼來支持它們的硬件、固件和操作系統。target需要被顯示指定為x86_64,該選項用于指定主機平臺。

(3)運行make進行編譯。編譯成功后會生成Grub-mkimage、Grub-install等可執行文件。

如上文所述,Grub支持友好可讀的配置文件。配置文件從存放位置看有兩種:(1)嵌入式配置文件。在編譯Grub映像時該配置文件將集成到映像內部,在映像得到運行時,該配置文件的命令將被順序執行。一般該文件會配置設備根、用戶口令、環境變量等。這種方式的配置文件可以在進入正常模式之前被預先加載,這樣能夠在外部配置文件無法找到的情況下,也能夠確保應用程序的正常運行,可以避免配置文件被意外刪除或者被惡意篡改,從而提高核心映像的安全性和可靠性。(2)外部配置文件。外部配置文件一般存放在/boot/grub/grub.cfg或/boot/grub/menu.lst(取決于GRUB版本和Linux發行版),并由root用戶編輯。一般情況下,該配置文件是由grub-mkconfig自動生成的,不需要開發人員修改。

外部配置文件一般包括指定一些環境變量、包含必要的模塊、給出圖形菜單等功能[5]。

本文的嵌入式配置文件如圖4所示。首先指定root變量。環境變量可以用于控制啟動過程中各種配置參數的值,Grub有三個核心變量,分別是:cmdpath、prefix、root,核心變量不依賴于任何可加載模塊。Root變量用于指定根文件系統所在的設備或者分區。Search.fs_uuid表示找出第一個設備id為d9002a0f-1c87-4e61-9fff-a4d5d19ef880并將其賦值給root變量。Check_signatures變量用于控制 GRUB 是否對加載的文件強制執行數字簽名驗證。Grub僅支持gpg方式的簽名驗證,使用分離式簽名,簽名文件在同級目錄下。當該變量被設置為enforce時,在Grub下加載的所有文件將被默認檢查簽名文件。一般在Grub下要加載的文件有config文件、kernels文件及Initrd文件等。Export用于導出環境變量,以使其對于使用"configfile"命令載入的配置文件可見。Configurefile用于指出外部配置文件的位置。本文將其放在/boot/grub/grub.cfg.t。(hd0,gpt2)表示第一個硬盤的第二個gpt分區表,即為文件系統根目錄。若執行出錯或未找到外部配置文件,將打印報錯信息并重啟。

圖4 嵌入式配置文件

本文的外部配置文件編寫如圖5所示。外部配置文件只需要完成系統啟動功能即可。配置文件中的腳本語句可在Shell命令行中執行。在Grub中啟動操作系統時,需要指定內核文件、根設備以及Initrd文件。命令linux用于從文件加載內核,同時需要給出root根設備的參數,本文使用UUID的方式獲取到根設備。在執行linux命令后用Initrd命令將Initrd文件加載,Initrd命令只能在linux命令后使用。在準備好相應的參數后,即可執行boot命令啟動操作系統。

圖5 外部配置文件的編寫

3.2 編譯及運行效果

Grub2僅支持gpg方式的簽名驗證。在編譯生成grub.efi映像時,公鑰文件可作為編譯選項,這樣可將公鑰嵌入在映像內部,在映像運行被運行后,當需要進行簽名驗證時,該被嵌入的公鑰將被隱式引用。

GPG是一款開源密碼學軟件,發展至今已經較為完善,應用廣泛,它是基于 PGP(pretty good privacy)機制的加密及簽名軟件,可以極大地保證網絡用戶傳輸及使用數據的安全性。

在操作系統進行引導時,被加載的文件有Initrd、linux內核及外部配置文件,這三個文件都需要經過正確的簽名驗證。步驟如下:

(1)生成GPG公私鑰對。如圖6所示。

圖6 GPG公私鑰對

--gen-key用于產生公私鑰對,成功產生后將得到公鑰id,公私鑰文件存儲在本地密鑰環中,使用時將自動調用。

(2)對文件進行簽名

如圖7所示,編寫腳本文件,定義存儲公鑰id的變量,使用GPG的—detach-sign選項對文件進行簽名。簽名成功后將在同級目錄生成*.sig簽名文件。圖中的腳本語句對grub.cfg.test進行的簽名操作,內核文件vmlinuz和Initrd文件同理。對這些文件簽名后的目錄如圖8所示。

圖7 腳本文件

圖8 文件簽名后的目錄

將Initrd.img-5.15.0-60-generic.sig與vmlinuz-5.15.0-60-generic.sig放至/boot目錄下(與Initrd和vmlinuz同級),將grub.cfg.test.sig放至/boot/efi目錄下(與grub.cfg.test同級),簽名文件環境即配置完成。如果在同級目錄下沒有相應的簽名文件,將會加載失敗,即無法通過簽名驗證,無法成功地進行引導。

Grub-mkimage用于生成Grub啟動映像文件,該命令支持多種不同的選項和參數,可以根據不同的需求生成不同的啟動映像文件,用戶可以選擇在啟動映像中包含支持特定文件系統的模塊,或者選擇在啟動映像中包含特定的內核參數來生成最合適的Grub可執行映像。

簽名驗證的公鑰嵌入在映像文件內部,在進行簽名驗證時將隱式讀取該公鑰值。在編譯映像文件時由編譯選項指定公鑰文件。編譯選項中指定的公鑰文件首先需要由公鑰id導出生成公鑰文件。如圖9所示。

圖9 公鑰id導出生成公鑰文件

使用Grub-mkimage編譯Grub映像時,公鑰文件由-k指定。-c選項用于執行嵌入式配置文件,上文已做過介紹。-p選項用于指定prefix環境變量。-d選項用于指定映像模塊所在的目錄。-O用于指定目標編譯平臺。需要包含的模塊用MODULES變量進行定義,該腳本包含了一些必要的模塊,例如分區模塊(part_gpt)、文件系統模塊(fat、ext2)、加密模塊(gcry_sha512、gcry_rsa)等。正確執行該腳本后,即可得到grub.efi映像程序,如圖10所示。

圖10 grub.efi映像程序

在得到grub.efi可執行映像程序后,將其放在/boot/efi/grub.efi處(gpt1分區),即可在OVMF固件shell下運行。若配置文件、簽名文件等都正確配置,運行grub.efi后,將正確加載配置文件中指定的內核,如圖11所示。

圖11 正確加載的配置文件

若某一文件的簽名文件不存在或簽名錯誤,則無法進入系統,并打印報錯log,如圖12所示。

圖12 報錯的log

4 結語

本文闡述了在Grub環境下對Initrd做簽名驗證的方案及其實現細節。相比于常見的將Initrd編碼進內核并進行簽名驗證的方式,本文提出了對單獨的Initrd做簽名驗證的方法和實現細節。現代操作系統一般將Initrd單獨安排,該方案使操作系統加載時更加安全可靠。

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 亚洲av综合网| 亚洲码一区二区三区| 国产欧美日韩资源在线观看| 视频一本大道香蕉久在线播放 | 十八禁美女裸体网站| 18禁色诱爆乳网站| 呦女亚洲一区精品| 欧美日韩va| 一区二区三区国产精品视频| 伊人久久大香线蕉综合影视| 日韩国产高清无码| 老熟妇喷水一区二区三区| 久久永久免费人妻精品| 久久国产精品影院| 99热最新网址| 国产日本欧美在线观看| 99999久久久久久亚洲| 亚洲热线99精品视频| 亚洲成人网在线观看| 香蕉久久永久视频| 免费国产一级 片内射老| 日本不卡在线视频| www.91中文字幕| 国产不卡国语在线| 国产精品毛片一区| 亚洲欧美日韩成人在线| 日韩av高清无码一区二区三区| 亚洲VA中文字幕| 特黄日韩免费一区二区三区| 亚洲第一香蕉视频| 一级毛片免费的| 综合五月天网| 超清人妻系列无码专区| 国产99精品视频| 亚洲毛片网站| 亚洲日产2021三区在线| 色国产视频| 99精品国产自在现线观看| 国产91精品久久| 久久这里只有精品66| 91在线视频福利| 2021国产精品自产拍在线观看| 国产精品林美惠子在线播放| 91精品视频网站| 国产精品开放后亚洲| 在线免费不卡视频| 国产乱人乱偷精品视频a人人澡| 亚洲永久色| 久久天天躁夜夜躁狠狠| 亚洲综合精品香蕉久久网| 中文字幕久久波多野结衣| 毛片久久网站小视频| 亚洲综合色婷婷中文字幕| 九九九久久国产精品| 美女亚洲一区| 国产免费黄| 亚洲日本韩在线观看| 亚洲精品动漫| 99在线国产| 中文字幕亚洲无线码一区女同| 99视频精品全国免费品| 国产精品99一区不卡| 欧洲亚洲一区| 久久久受www免费人成| 国产精品无码一区二区桃花视频| 88国产经典欧美一区二区三区| 久久性妇女精品免费| 免费看美女自慰的网站| 无码啪啪精品天堂浪潮av| 成年人视频一区二区| 国产白浆视频| 无码福利日韩神码福利片| 亚洲熟女偷拍| 在线精品自拍| 精品一區二區久久久久久久網站| 日韩AV手机在线观看蜜芽| 日韩小视频在线观看| 国产女人在线观看| 日韩免费毛片视频| 国产乱论视频| 一级毛片网| 91po国产在线精品免费观看|