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