◆蒲 江 田 楠 周 躍 溫太行
基于保護環模型的可信固件安全策略研究
◆蒲 江1田 楠1周 躍1溫太行2
(1.中國人民解放軍91977部隊 北京 100841;2.中國人民解放軍91911部隊 浙江 316000)
目前計算機中廣泛使用的傳統BIOS產品存在較大的安全風險。BIOS產品存在安全漏洞,可能被惡意者利用實施對計算機系統的攻擊;惡意者也可能通過網絡綜合利用各種手段,將惡意代碼植入計算機BIOS中。因此要實現信息安全各個環節的可控和可信,設計和開發自主可信的安全固件系統就成為必需的環節和必經之路。本文分析了安全固件的安全需求,設計了一種適合于安全固件系統開發的可信固件保護環策略模型。
固件系統;可信固件;保護環
計算機固件在系統安全防護中處于一種基礎地位,對于計算終端和操作系統的安全能夠起到重要的保護作用。然而計算機固件安全的重要性在過去很長一段時間內卻長期被忽視[1]。伴隨計算機固件安全威脅事件的逐漸增加,安全向硬件和固件延伸的趨勢及可信計算的發展,重新審視計算機固件的安全地位,對計算機固件安全問題進行系統性的研究是非常有必要的。
傳統BIOS的設計和實現從一開始就沒有考慮安全問題,其設計和生產完全是從應用需求出發,導致現有的BIOS產品存在較大的安全風險。因此需要研究基于EFI/UEFI規范的新一代安全BIOS產品開發的理論和方法。針對可信計算需求,準確定位BIOS在可信計算終端中的作用和地位,研究基于保護環模型的計算機固件系統安全策略,以實現可信BIOS產品。
定義:
CVE(Common Vulnerabilities and Exposures)是全球信息安全界對計算機安全漏洞和脆弱性統一命名的權威知識庫。
CVE文檔中對漏洞的定義是:存在于軟件中的錯誤,這種錯誤能夠被攻擊者直接利用以獲取對系統或網絡的訪問權限。
CVE文檔中對脆弱性的定義是:存在于軟件中的系統配置選項或配置錯誤,該配置選項或錯誤能夠被攻擊者用于非法訪問系統信息,或作為進一步獲取訪問或進入主機和網絡系統的跳板。
文獻[2]給出一種外延更寬的安全漏洞定義。安全漏洞是存在于計算機系統、網絡系統的硬件、軟件或與系統相關的安全過程和控制方式中的設計或實現缺陷,可被有意或無意地利用從而危害組織或個人的財產或操作過程。
本文所指的固件漏洞采用文獻[2]給出的安全漏洞概念。固件BIOS安全威脅是指利用固件BIOS系統存在的漏洞,從而導致對計算機BIOS、操作系統等軟件以及硬件設備和數據實施破壞的可能情形和事件。固件系統安全威脅可指來自固件系統的威脅,也可指對固件系統構成的威脅。
針對BIOS的安全威脅具有一個共同特征,即都是通過破壞BIOS代碼或數據的完整性實現對BIOS系統和計算機系統的攻擊或破壞[2]。
(1)固件安全需求1:固件系統代碼和數據的完整性保護要求。
TCG可信計算要求從可信硬件開始,從底層到上層軟件,每一步驟的執行都通過信任傳遞,建立可信鏈。信任傳遞是通過完整性度量來實現的。完整性度量能夠阻止內部、外部的非可信代碼的加載執行,保證BIOS只執行來自可信任的BIOS廠商、設備驅動廠商或可信任用戶的代碼。
(2)固件安全需求2:作為可信計算的核心測量根,完成對操作系統執行前環境的可信度量過程。
當遭遇不可預知的故障或攻擊導致BIOS部分代碼或數據完整性被破壞時,BIOS系統自身必須具備安全可靠的自恢復機制。恢復過程中同樣需要對所提供的恢復內容進行可信度量,這個過程稱為可信恢復。
(3)固件安全需求3:固件的可信恢復能力的要求。
可信固件是指能夠提供自身完整性保護能力,包含可信計算的核心度量根,負責完成操作系統執行前環境的可信度量過程,并具有對自身進行可信恢復操作能力的固件系統。
對固件系統的保護,綜前所述主要是固件系統的完整性保護。因此針對固件系統的代碼和數據類型特點,對其代碼和數據劃分了完整性級別,提出了對固件的代碼和數據進行完整性保護的可信固件保護環模型[3]。
保護環模型中,劃分了兩類數據項:受保護數據項(PDI)和不受保護數據項(NDI)。數據集合DATA為:
PDS = Set of PDI
NDS = Set of NDI
DATA = PDS ∪ NDS
固件中的代碼劃分為3類:核心可信代碼(CTC)、普通可信代碼(OTC)和非可信代碼(UTC)。代碼集合CODE為:
CTS = Set of CTC
OTS = Set of OTC
UTS = Set of UTC
CODE= CTS ∪ OTS ∪ UTS
其中,PDS是固件運行所需的最小數據集合,CTS是固件運行所需的最小代碼集合,CTS和PDS構成一個最小可執行的固件系統。
定義允許的操作集合為:
OPERATION = {r,m,e}
操作r允許對數據讀取,操作m允許對數據修改,操作e允許代碼執行。
定義代碼完整性認證函數、代碼可執行函數和代碼類屬認證函數:
AI(c) = 0,c ∈ CODE 且c是不完整的;
AI(c) = 1,c ∈ CODE 且c是完整的;
AE(c) = e,c ∈ CODE 且c是允許執行的;
AE(c) = ┓e,c ∈ CODE 且c是禁止執行的;
AC(c) = CT,c ∈ CTS;
AC(c) = OT,c ∈ OTS;
AC(c) = UT,c ∈ UTS;
可信固件的保護環模型核心策略是通過保護固件系統運行所需的關鍵代碼和數據的完整性,保證有一個最小可用的固件系統。模型策略是通過以下強制實施規則來保障的。
(1)MER1:只有完整的可信代碼才允許加載執行,即
c∈CODE AE(c)=e=>AI(c)=1 and (AC(c)=CT or AC(c)=OT)
(2)MER2:只有核心可信代碼才允許修改受保護的數據項,即c∈CODE d∈PDS c m d=>AC(c)=CT and AI(c)=1
(3)MER3:用戶必須經過認證才能使用CTC或OTC訪問或修改數據。
(4)MER4:在保證最小系統可用性的前提下,允許安全管理員對CTC、OTC、UTC進行轉換,或對PDI、NDI轉換。
(5)MER5:系統中所有對代碼的可信測量、對用戶的認證和對PDI的修改操作必須記錄。
(6)MER6:CTC負責提供對PDI修改訪問的仲裁保護,并在PDI完整性受到破壞時,啟動可信恢復過程。
如圖1是保護環模型的環結構示意圖。
CTS和PDS構成第一層環,是固件系統的最小可執行系統。OTS和NDI構成第二層環,其中NDI不受保護,即使被破壞也不影響固件系統的正常運行;OTC完整性被破壞,會影響部分非關鍵或附加功能的正常應用,但不妨礙BIOS的正常運行和引導操作系統。環外的UTC由于不可信,即使嵌入BIOS中也不會加載執行。

圖1 可信固件保護環模型環結構
假設保護環模型的初始狀態是可信的。在系統執行過程中MER1~6能夠保護代碼和數據的完整性不受到破壞,因此固件系統運行的隨后狀態都是可信的。
[1]陳文欽.BIOS Inside:BIOS研發技術剖析[M].臺灣地區:旗標出版股份有限公司,2001.
[2]Adelstein F, illerman M, Kozen D. Malicious Code Detection for Open Firmware[C]. Computer Security Applications Conference, 2002, Proceedings 18th Annual 9-13 Dec.2002.
[3]袁新哲,胡昌振,戴斌.Windows NT/2000 典型漏洞特征分析及知識表達方法[J].探測與控制學報,2003.