古淳仁,胡懷湘,陳相宇
(中國電子科技集團公司第十五研究所,北京 100083)
隨著信息技術的不斷發展,計算機廣泛應用于各行各業,隨之而來的信息安全問題也越來越受到關注[1-2]。例如私自插入、替換存儲設備或篡改操作系統內核等重要文件可能會使計算機運行惡意代碼,進而嚴重破壞計算機的信息安全[3-4]。
因此,該文提出了一種基于UEFI 的軟硬件度量技術,在執行引導啟動程序前對重要的軟硬件進行度量,并將結果與預期度量值相比對,確定一致才允許啟動。同時引入了“三員”管理機制,以約束系統管理員的行為,降低軟硬件被篡改的風險,提高計算機系統的安全性。
UEFI 是定義操作系統與固件之間軟件界面的技術規范[5-7],它將計算機從啟動到關機的全過程劃分為安全驗證、EFI 預初始化、驅動執行環境、啟動設備選擇、臨時操作系統加載、運行操作系統、災難恢復七個階段[8-9]。該文依據規范在啟動設備選擇階段以模塊化的方式實現“三員”管理模式下的軟硬件度量功能。
為明確硬件存儲設備是否與上一次啟動時保持一致,應獲取存儲設備的唯一標識,將其經過哈希運算后與預期度量值進行比較。若一致,則認為硬件設備度量成功,啟動過程可以繼續;反之若存在某一存儲設備標識映射與所有的預期度量值都不一致,則認為是新插入的設備,記錄并回顯度量失敗的具體設備。
需要說明的是,盡管設備的唯一標識已經可以區分不同的設備,但對唯一標識進行哈希的步驟仍是必要的,原因是不同廠商或不同型號的存儲設備序列號一般為不同長度的字符串,直接存儲會造成存儲空間的浪費,將其無沖突地散列為64 位的整數,既節約存儲空間又保持了數據長度的一致。
但僅通過設備唯一標識的哈希映射來識別存儲設備仍不能認為設備中的軟件是未篡改的。比如,硬盤通過其他計算機修改內核文件或導入不安全程序后再重新插回,由于硬盤唯一標識未改變,所以仍然可以度量成功。因此硬件度量功能應當與軟件度量或硬盤加密技術配合使用。其中,硬盤加密技術已十分成熟[10-12],市面常見的通用兼容機固件普遍具備這項功能,因此該文只研究軟件度量技術。
區別于硬盤加密,軟件度量功能的對象是可以選擇的文件個體,而非某硬盤或某硬盤分區,并且僅對目標文件進行校驗[13],不進行加密操作。為了防止重要的程序被替換或篡改,可以將其作為度量的目標文件,如引導程序、內核文件等二進制可執行文件和啟動配置文件等。
讀取目標文件并度量后,將實際度量結果與預期度量值進行比較,若所有目標文件的度量值均與預期度量值保持一致,則表示文件未改動,允許繼續啟動;否則記錄并回顯度量失敗的具體文件,拒絕執行后續的啟動步驟,最后提供更新預期度量值或關閉計算機的交互選項。
通常情況下,計算機固件一般提供設置基本輸入輸出系統(Basic Input Output System,BIOS)密碼功能[14],而不為BIOS 設置多個用戶,單一系統管理員擁有全部管理權限。若僅單純地加入軟硬件度量功能,那么系統管插入或替換硬盤后更新預期度量值即可順利啟動,也就失去了度量功能存在的意義。單一管理員模式依賴絕對可信的管理員,這在具有保密需求的計算機系統中存在較大的安全隱患。因此該文引入了“三員”管理模式,建立了區別于系統管理員賬戶的安全管理員賬戶和審計管理員賬戶,將度量值的管理權限與日志的管理權限從系統管理員賬戶中剝離,并分別授予安全管理員和審計管理員,以充分發揮軟硬件度量功能。
“三員”指系統管理員、安全管理員和審計管理員[15]。三類管理員權限劃分如表1 所示,系統管理員保管機箱鑰匙,負責維護計算機設備,擁有變更存儲硬件和調整啟動選項的權限,但以上操作會導致開機后度量結果不符合預期度量值,因此計算機無法順利啟動;安全管理員具有修改預期度量值的權限,若系統管理員對系統作出的軟硬件調整為合規操作,則可以向安全管理員提出申請,由安全管理員更新預期度量值,更新后實際度量值與預期值一致,計算機可以順利啟動;審計管理員擁有管理系統日志的權限,更新預期度量值的操作會在系統中留下記錄日志,這些日志只允許被審計管理員查看和修改,用于對管理員行為的跟蹤和審查。

表1 管理員類別與相應權限
三類管理員的權限相互分離,相互制約,可以有效地規避單一管理員模式引起的安全風險。
文中引入“三員”管理模式后的軟硬件度量流程如下:
步驟1:系統上電開機后,UEFI 運行至啟動設備選擇階段末期,所有必要的設備驅動均已加載完成,即將執行預設啟動項。此時進行軟硬件度量,并臨時保存實際度量值。在開機交互界面用戶會面臨兩個選擇:按熱鍵主動進入UEFI 固件設置界面或跳過設置直接根據默認啟動項引導操作系統。若按下熱鍵,則進入步驟2,否則進入步驟6。
步驟2:輸入管理員賬戶和密碼。輸入系統管理員賬戶和密碼進入步驟3;或輸入安全管理員賬戶和密碼進入步驟4;或輸入正確的審計管理員賬戶和密碼進入步驟5。
步驟3:可以調整計算機系統啟動選項。退出后進入步驟6。
步驟4:可以更新存儲設備和目標文件的預期度量值,若更新預期度量值則記錄操作日志。退出后進入步驟6。
步驟5:可以查看和刪除操作日志。退出后進入步驟6。
步驟6:退出固件設置界面,比較所有項目的實際度量值是否與預期度量值一致,若所有項目度量成功則進入步驟7,否則記錄度量失敗的項目并進入步驟8。
步驟7:向用戶回顯軟硬件度量成功,繼續執行啟動流程,加載并運行操作系統。
步驟8:向用戶回顯度量失敗的項目,并提供交互選項:登錄安全管理員賬戶以更新度量值,或放棄啟動并關機。若選擇前者則進入步驟2,若選擇后者則關閉計算機。
以上流程如圖1 所示。

圖1 “三員”管理模式下的軟硬件度量流程
為驗證軟硬件度量功能和“三員”管理機制,該文采用EDK2[16]完成固件原型的開發,在開放虛擬機固件[17](Open Virtual Machine Firmware,OVMF)的基礎上進行改造,增加軟硬件度量功能并引入“三員”管理機制。
UEFI BIOS 調用硬件度量過程時,首先遍歷所有外部設備,通過讀取EFI_DEVICE_PATH_PROTO COL 結構體中的Type 和SubType 成員判斷是否為PCI、SATA 或USB 存儲設備,若為存儲設備則調用GetDeviceDescriptor 函數獲取設備描述符,讀取其VendorID、ProductID 以及SerialNumber。其中Serial Number 為長度不均的字符串類型,而VendorID 和ProductID 都是兩個字節長的整數類型,將它們均轉化為字符串類型拼接在SerialNumber 之后,形成未經哈希映射的唯一標識字符串。為盡可能地降低沖突率,采用BKDRHash[18]函數將唯一標識字符串映射為64 位寬的整數,作為存儲設備的度量值。
軟件度量即是對目標文件的度量,該文將目標文件指定為boot 分區中的引導加載程序、啟動配置文件和操作系統內核。通過EFI_SIMPLE_FILE_SY STEM_PROTOCO 依次取 得bootx64.efi 文件、grub.cfg文件和以vmlinuz 為前綴的文件的句柄,然后調用信息摘要算法(Message-Digest Algorithm 5,MDA5)對目標文件依次度量,其中efi 文件與內核文件以二進制文件只讀的方式打開,而cfg 文件以文本文件只讀的方式打開,每一個文件都將生成一個長度為32 的16 進制數值字符串,即目標文件的度量值。
OVMF 的交互界面通過人機接口架構(Human Interface Infrastructure,HII)來實現。其中前端部分修改vfr 文件中的formset 以增加預期度量值管理、日志管理選項標簽以及相應的子結構,并對不同管理員用戶frontpage 中的可選標簽加以動態區分,以設定不同管理員的權限。后端通過實現EFI_HII_CO NFIG_ACCESS_PROTOCOL 接口獲取HiiHandle,即預先在HII 數據庫中注冊的句柄,從而實現觸發與前端操作相對應的函數調用。
首先注冊模塊并編譯為efi 文件,將新生成的efi文件封裝入fd 文件。然后配置QEMU 虛擬機,啟用關聯fd 文件的flash,以物理磁盤作為硬盤,輸出重定向至控制臺。最后進行驗證前的準備工作,以物理機為媒介在虛擬機硬盤的boot 分區建立目錄結構,寫入文件bootx64.efi、grub.cfg 和vmlinuz-4.18.0-348.x86_64,啟動虛擬機后登錄安全管理員賬戶,在固件設置界面更新所有軟硬件預期度量值,保存并關閉虛擬機。配置另一塊啟動磁盤,建立同樣的目錄結構,并寫入bootx64.efi、grub.cfg 和vmlinuz-4.15.0-142.x86_64,即更換了硬盤和操作系統內核。
啟動虛擬機,登錄系統管理員賬戶,觸發熱鍵進入固件設置界面,如圖2 所示,系統管理員無法選中預期度量值管理和日志管理選項卡。

圖2 系統管理員界面
將光標移動到Continue,按下回車鍵繼續啟動。如圖3 所示,硬盤和操作系統內核已更換,因此度量失敗,用戶選擇登錄安全管理員賬戶以更新預期度量值或放棄啟動。

圖3 軟硬件度量失敗
選擇重新登錄,以安全管理員賬戶登錄固件設置界面,安全管理員只擁有管理預期度量值的權限。分別進入Expected Measurement of Hardware 選項卡和Expected Measurement of Software 選項卡,看到硬盤和操作系統內核的實際度量值的確與預期度量值不符,如圖4 和圖5,分別更新它們的預期度量值。

圖4 硬件預期度量值管理
更新預期度量值后保存并退出,將重新比較實際度量值與預期度量值,此時二者一致,度量結果如圖6 所示。

圖6 軟硬件度量成功
最后重啟虛擬機,以審計管理員賬戶登錄固件設置界面,審計管理員只擁有管理日志的權限。進入日志管理選項卡,查看和刪除由于安全管理員賬戶更新預期度量值而產生的日志,如圖7 所示。

圖7 日志管理
對比第三部分所分析的流程,上述操作驗證了固件原型中“三員”管理模式下的軟硬件度量功能。
為防止計算機內重要的存儲設備和軟件程序被篡改,該文提出了一種基于UEFI 規范的軟硬件度量技術,保護了計算機系統的數據安全。同時,引入了“三員”管理機制,有效規避了單一管理員模式下系統管理員違規操作的風險。但是,該文提出的策略還不十分完善,后續的研究中可以在軟硬件度量的基礎上增加對硬盤分區哈希碼的檢查以及配合硬盤加密技術等其他策略,共同保護計算機的信息安全。