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