借鑒可信計算思想,從可信增強的角度出發(fā),提出了一個(gè)可信增強的訪(fǎng)問(wèn)控制框架,并給出了該框架的具體實(shí)施流程。該框架在普通Flask的基礎上引入了身份認證和可信監控機制,解決了傳統訪(fǎng)問(wèn)控制中存在的“內部威脅”問(wèn)題,它是在訪(fǎng)問(wèn)控制中引入可信計算的一個(gè)嘗試,具有一定的指導意義。 ---------- 目前,大部分終端平臺信息安全系統主要是由防火墻、入侵監測和病毒防范等組成,但僅靠“堵漏洞、作高墻、防外攻”無(wú)法從根本上解決終端平臺的安全問(wèn)題[1]?v觀(guān)安全操作系統近40年的發(fā)展歷史可以發(fā)現,安全操作系統得到了長(cháng)足的發(fā)展,并在訪(fǎng)問(wèn)控制框架和安全模型方面均取得了豐碩的成果。但是,傳統的訪(fǎng)問(wèn)控制并不能解決“內部威脅”問(wèn)題。造成內部威脅的原因主要是“脆弱性或漏洞攻擊”!按嗳跣曰蚵┒垂簟笔侵竷炔渴跈嘀黧w可以繞過(guò)檢測和訪(fǎng)問(wèn)控制機制,利用自身的權限和已知的系統脆弱性及漏洞,通過(guò)完全合法的操作發(fā)動(dòng)內部攻擊。從技術(shù)上講,這種內部威脅的根源在于傳統的訪(fǎng)問(wèn)控制理論存在的缺陷。傳統的訪(fǎng)問(wèn)控制理論是基于“關(guān)口控制”理論實(shí)施的,即它不會(huì )讓不符合條件的主體對客體進(jìn)行請求的操作,但是主體一旦取得相應的操作權限,它在允許操作范圍內的活動(dòng)行為就可以暢通無(wú)阻。究其原因,主體對客體的訪(fǎng)問(wèn)和行為是根據授權和身份識別來(lái)決定的,授權一旦確定,就不會(huì )再考慮主體的表現,也不會(huì )再考慮主體行為的可信性,直到另外一次授權開(kāi)始。另外,傳統的訪(fǎng)問(wèn)控制也不能保證客體內容的真實(shí)性和完整性。 因此,尋求一種通用的方法對授權操作的行為進(jìn)行監管,控制授權后的信息流失,保證合法主體的行為得到應有的控制和監督,才能使這類(lèi)主體的行為規范可信,預防和控制內部威脅的發(fā)生。目前,隨著(zhù)新的安全技術(shù)的興起,可信計算也成為人們關(guān)注的熱點(diǎn)。從可信計算的概念及其特征可以發(fā)現,通過(guò)引入可信計算解決上述安全問(wèn)題是可行的。 1 可信計算思想 為了提高計算機的安全防護能力,由Intel、惠普、微軟、IBM等業(yè)界大公司牽頭,于1999年成立了可信計算平臺聯(lián)盟TCPA(后于2003年改組為T(mén)CG),并提出了“可信計算”的概念[2]?尚庞嬎阒荚趶挠布w系結構和系統完整性角度來(lái)提高終端計算平臺的安全性,解決終端平臺安全性問(wèn)題。它認為如果終端計算平臺從一個(gè)初始的“可信根”出發(fā),在終端平臺計算環(huán)境的每一次轉換時(shí),這種可信狀態(tài)都可以通過(guò)傳遞的方式保持下去而不被破壞,則該終端平臺就始終是可信的[2]。在可信環(huán)境下不存在不被信任的實(shí)體,因而可以很好地保證平臺本身及上層應用的安全。 信任鏈的傳遞是體現可信的重要手段,它是可信計算平臺的核心機制。系統加電后,在可信硬件平臺的控制下,BIOS會(huì )將信任傳遞給主引導分區,主引導分區將信任傳遞給操作系統裝載器,操作系統裝載器將信任傳遞給操作系統內核模塊,也就是說(shuō)可信鏈的傳遞是分層進(jìn)行的。當低級別的節點(diǎn)驗證到高一級的節點(diǎn)是可信時(shí),低級別節點(diǎn)才會(huì )把可信計算平臺的運行控制權轉交給高一級節點(diǎn)?尚庞嬎闫脚_正是基于這種信任鏈傳遞的機制將可信擴展到了應用程序部分。平臺可信的驗證通過(guò)哈希運算進(jìn)行,在驗證過(guò)程中,各程序的雜湊值將會(huì )被存儲在平臺配置寄存器PCR(Platform. Configuration registers)中,而且在關(guān)機之前這部分PCR的值不會(huì )被重置,只能被擴展。當遠程或本地程序(請求者)需要驗證當前系統是否處于預定義的可信狀態(tài)時(shí),這些PCR的值就會(huì )被讀取。請求者對這些可執行體或數據進(jìn)行雜湊運算,并且與PCR中的預期值進(jìn)行比較。如果相同,則可以判定該系統運行的程序是預先規定的可信程序或者是可信數據。 2 可信增強的Flask訪(fǎng)問(wèn)控制框架的設計與分析 2.1 Flask訪(fǎng)問(wèn)控制框架 Flask是目前業(yè)界關(guān)注度最高的訪(fǎng)問(wèn)控制框架之一,它是由美國國家安全局聯(lián)合猶他州大學(xué)和安全計算公司,以安全策略靈活性為目標設計開(kāi)發(fā)的多訪(fǎng)問(wèn)控制策略支持框架。Flask嚴格分離了策略實(shí)施邏輯和策略決策邏輯。Flask由對象管理器和安全服務(wù)器兩部分組成,對象管理器負責策略實(shí)施邏輯的執行,安全服務(wù)器負責策略決策邏輯的制定。Flask描述了對象管理器和安全服務(wù)器的交互,以及對它們內部組成部分的要求。Flask還借助一個(gè)訪(fǎng)問(wèn)向量緩存(AVC)模塊來(lái)實(shí)現對動(dòng)態(tài)策略和性能要求的支持[3]。 如圖1所示,在Flask訪(fǎng)問(wèn)控制框架下,主體要對客體進(jìn)行操作。首先要將訪(fǎng)問(wèn)請求發(fā)送到對象管理器,對象管理器收集主客體的安全標簽,對訪(fǎng)問(wèn)請求進(jìn)行判斷;對象管理器首先檢查存放在A(yíng)VC中的訪(fǎng)問(wèn)向量,如果存在此訪(fǎng)問(wèn)向量,則直接返回在A(yíng)VC中的訪(fǎng)問(wèn)向量,否則,向安全服務(wù)器提出查詢(xún)請求。在安全服務(wù)器中根據主客體的SID及相應的類(lèi),針對相關(guān)的安全策略對請求進(jìn)行計算,然后返回相應的訪(fǎng)問(wèn)向量決策,同時(shí)把此訪(fǎng)問(wèn)向量存放在A(yíng)VC中。如果策略允許主體在客體上執行預期的操作,則該請求就會(huì )被允許,否則,該請求就會(huì )被拒絕。 2.2 可信增強的Flask訪(fǎng)問(wèn)控制框架設計 盡管Flask安全框架在一定程度上解決了系統的安全問(wèn)題,但其解決的是不讓非法主體對系統資源進(jìn)行惡意的訪(fǎng)問(wèn)控制,而無(wú)法解決合法主體的可信性問(wèn)題,即前言中描述的“內部威脅”問(wèn)題。另一方面,Flask也無(wú)法保證系統中客體內容的完整性和真實(shí)性問(wèn)題。結合可信計算,本文提出了一種可信增強的Flask 訪(fǎng)問(wèn)控制框架,它在普通Flask框架的基礎上加入了身份認證和可信監控機制,如圖2所示。 訪(fǎng)問(wèn)控制中,用戶(hù)身份認證是非常重要的。在用戶(hù)對系統資源進(jìn)行訪(fǎng)問(wèn)控制之前,首先要經(jīng)過(guò)身份認證模塊識別用戶(hù)的身份,訪(fǎng)問(wèn)控制模塊才能根據用戶(hù)的身份和安全策略庫決定用戶(hù)是否能夠訪(fǎng)問(wèn)某個(gè)資源。 可信監控機制用于保障安全策略的正確實(shí)施,它在安全服務(wù)器內實(shí)現。其主要工作有:(1)對主體行為進(jìn)行監控,即在進(jìn)行訪(fǎng)問(wèn)控制之前,確保主體的行為是可信的,不會(huì )給系統造成破壞;(2)對客體進(jìn)行驗證,即根據客體的當前狀態(tài)驗證主體的身份和客體自身的完整性,確?腕w內容的真實(shí)性;(3)監控訪(fǎng)問(wèn)行為,即監控所有與安全相關(guān)的訪(fǎng)問(wèn)企圖,確保訪(fǎng)問(wèn)企圖不被篡改,訪(fǎng)問(wèn)機制不被繞過(guò)。圖3是可信監控機制的示意圖。 可信監控機制可分為可信驗證、可信存儲和可信報告三部分,其中可信驗證必須存在,可信存儲和可信報告可選。為了實(shí)施可信驗證,首先要對進(jìn)行可信驗證的實(shí)體進(jìn)行可信度量,可信度量由度量實(shí)體(或者是度量事件)啟動(dòng),通過(guò)對度量實(shí)體進(jìn)行SHA1運算得到一個(gè)雜湊值,度量實(shí)體會(huì )將這個(gè)雜湊值存儲在內核里的一個(gè)有序度量列表中,同時(shí)將可信度量值報告給存儲在可信硬件里的平臺配置寄存器(PCR),以擴展度量列表?尚膨炞C結合度量列表中存儲的度量值,對主客體進(jìn)行一致性驗證,檢查其是否被篡改或破壞,以確保主客體的可信性和完整性。驗證過(guò)程依賴(lài)于度量列表中存儲的基準度量值與當前狀態(tài)的可信度量值的比較。若當前狀態(tài)的可信度量值符合基準度量值,則認為該實(shí)體(或事件)是可信的[4]。 在加入了身份認證和可信監控之后,訪(fǎng)問(wèn)控制的工作流程如下: (1) 在身份鑒別的控制下,用戶(hù)登錄,啟動(dòng)訪(fǎng)問(wèn)控制模塊; (2) 主體向對象管理器發(fā)送訪(fǎng)問(wèn)請求,要求對相應的客體進(jìn)行請求操作; (3) 對象管理器將訪(fǎng)問(wèn)請求發(fā)送給安全服務(wù)器。請求包括主客體標識以及請求類(lèi)型等; (4) 安全服務(wù)器接收到訪(fǎng)問(wèn)請求之后,啟動(dòng)可信監控機制; (5) 可信監控機制根據主體的當前訪(fǎng)問(wèn)行為,判斷主體的可信性及主體的這次訪(fǎng)問(wèn)行為是否為不良行為。如果主體可信并且這次訪(fǎng)問(wèn)行為完全合法,可信監控機制則會(huì )轉向對客體的驗證,否則,拒絕這次訪(fǎng)問(wèn); (6) 可信監控機制根據訪(fǎng)問(wèn)請求,驗證客體的真實(shí)性和完整性,如果驗證出客體的真實(shí)性和完整性未遭到破壞,可信監控機制則會(huì )將訪(fǎng)問(wèn)控制權轉向安全服務(wù)器的安全決策邏輯的制定,否則,拒絕這次訪(fǎng)問(wèn); (7) 安全服務(wù)器根據當前的訪(fǎng)問(wèn)控制策略庫進(jìn)行訪(fǎng)問(wèn)決策的判定,如果這次訪(fǎng)問(wèn)行為滿(mǎn)足訪(fǎng)問(wèn)控制策略,則允許主體的這次訪(fǎng)問(wèn)行為,否則,拒絕本次訪(fǎng)問(wèn); (8) 安全服務(wù)器將判定結果返回給對象管理器,對象管理器依據決策結果實(shí)施主體對客體的訪(fǎng)問(wèn)控制; (9) 可信監控機制實(shí)施主體對客體操作的監控,如果出現違規行為,則撤銷(xiāo)此次訪(fǎng)問(wèn)。 2.3可信增強的Flask訪(fǎng)問(wèn)控制框架分析 本文通過(guò)對普通Flask訪(fǎng)問(wèn)控制框架加入身份認證和可信監控機制,實(shí)現了一個(gè)可信增強的訪(fǎng)問(wèn)控制框架,通過(guò)實(shí)施這個(gè)可信增強的訪(fǎng)問(wèn)控制框架,可以實(shí)現對操作系統終端平臺的機密性、一致性保障,并且具有較好的可用性。下面就這幾個(gè)方面做簡(jiǎn)要說(shuō)明。 (1) 一致性:通過(guò)在框架中實(shí)施可信監控機制對相應主體和客體(包括文件、目錄、進(jìn)程、套接字等)進(jìn)行一致性驗證。對主、客體的驗證首先要檢查主、客體是否存在預期摘要值,如果不存在,則為其生成預期摘要值(首次執行);否則計算主、客體的當前摘要值,并且與保存的預期摘要值進(jìn)行比較;如果不一致,則拒絕本次訪(fǎng)問(wèn)請求[5]。這樣做可以保證系統資源的一致性,進(jìn)而保證整個(gè)系統的一致性。 (2) 機密性:通過(guò)在框架中實(shí)施強制訪(fǎng)問(wèn)控制對登錄用戶(hù)、系統主體以及敏感信息進(jìn)行處理,有權限的合法可信用戶(hù)以及合法可信主體才可訪(fǎng)問(wèn)相應級別的敏感信息,從而解決了前言中闡述的“內部威脅”問(wèn)題。對于某些由于意外情況而賦予的訪(fǎng)問(wèn)許可,通過(guò)實(shí)施強制訪(fǎng)問(wèn)控制,其實(shí)施范圍也會(huì )限定在有限的區域,并且當再次執行訪(fǎng)問(wèn)控制決策時(shí),也會(huì )由于一致性驗證不成功而拒絕訪(fǎng)問(wèn),從而保證了整個(gè)系統的機密性。 (3) 可用性:身份認證是保證用戶(hù)身份合法性及唯一性的方法,而訪(fǎng)問(wèn)控制的有效性也需要建立在合法主體的基礎之上。該框架在普通Flask框架的基礎上增加了身份認證和可信監控,既解決了用戶(hù)身份的合法性又解決了訪(fǎng)問(wèn)控制實(shí)施的可信性,它在保證機密性、一致性的基礎上,對用戶(hù)透明,不需用戶(hù)干預,具有良好的可用性,并且能與操作系統良好兼容。 3 框架實(shí)現 本文以通用硬件平臺和Linux-2.6.19內核為基礎實(shí)現了此可信增強訪(fǎng)問(wèn)控制框架。由于所用通用平臺,不具備TCG定義的可信根,因此原型中采用在其他項目中開(kāi)發(fā)的具備密碼功能和存儲機制的可信支撐模塊作為可信根。限于篇幅,本節只重點(diǎn)闡述這個(gè)可信增強的訪(fǎng)問(wèn)控制框架在內核的實(shí)施流程。 3.1 內核修改 可信驗證機制是在位于內核空間的安全服務(wù)器內實(shí)施的,其主要在以下幾方面對內核進(jìn)行了修改: (1) 添加了measure系統調用。真實(shí)的可信驗證是在內核中執行的,因此在內核中添加了新的系統調用measure,其主要任務(wù)是識別系統(用戶(hù)或內核級)上的檢測點(diǎn),即與執行相關(guān)的內容載入的地方,并且在這些位置上插入measure系統調用(或在內核里直接調用檢測代碼)。 (2) 添加了一個(gè)checkfile文件。checkfile文件用于存放檢測值列表,包括BIOS、操作系統裝載器、內核以及應用程序的檢測基準值。在初始化可信驗證之前,內核首先要載入檢測值列表文件checkfile,若實(shí)際的啟動(dòng)或者運行過(guò)程與預期的不同,則checkfile的驗證將會(huì )失敗。不允許對 checkfile文件進(jìn)行修改,否則攻擊者將會(huì )隱蔽完整性相關(guān)的行為。checkfile文件使用可信硬件保護。 (3) 在內核代碼中實(shí)現訪(fǎng)問(wèn)控制的關(guān)鍵點(diǎn)上插入監控函數monitor。monitor函數用于監控某些關(guān)鍵的訪(fǎng)問(wèn)控制實(shí)施,對于在訪(fǎng)問(wèn)控制中出現的某些意外攻擊,monitor函數返回一個(gè)錯誤信息,并通知相應主體訪(fǎng)問(wèn)被篡改,需要撤銷(xiāo)此次訪(fǎng)問(wèn)操作。 3.2框架實(shí)施 框架的實(shí)施過(guò)程包括框架的初始化和內核實(shí)施兩個(gè)階段。前一過(guò)程是策略實(shí)施的基礎,包括用戶(hù)身份認證以及可信環(huán)境的建立。用戶(hù)身份認證通過(guò)TCG規范中的雙向認證來(lái)實(shí)施,克服了傳統認證方式的缺陷,使得操作系統與用戶(hù)可以相互認證,從而確保用戶(hù)身份信息正確映射到安全策略中;建立可信環(huán)境的目的在于將可信鏈傳遞到應用層以確保系統加電直至可信增強內核裝載完畢各個(gè)環(huán)節的可信。內核實(shí)施包括策略初始化、主客體的完整性度量及驗證以及安全策略的驗證實(shí)施。策略初始化是將安全策略配置文件解密并導入內核空間;主客體的完整性度量及驗證是對實(shí)施訪(fǎng)問(wèn)控制操作的主客體進(jìn)行雜湊運算,與主客體的度量基準值進(jìn)行比較,以確保主體行為的可信性和客體數據的完整性和真實(shí)性。其具體過(guò)程將在下面具體描述;策略實(shí)施是對通過(guò)了完整性驗證的訪(fǎng)問(wèn)控制依據安全策略庫實(shí)施安全策略裁決的過(guò)程。整個(gè)實(shí)施過(guò)程中前一環(huán)節為下一環(huán)節服務(wù),逐層建立了系統的可信計算基(TCB),從而保證了框架實(shí)施的可信性。主客體的完整性度量是最為關(guān)鍵的步驟,下面將重點(diǎn)介紹。 為了實(shí)現對訪(fǎng)問(wèn)操作涉及的主客體的完整性度量及驗證,本文在Linux內核中加入了一個(gè)checkfile文件專(zhuān)門(mén)存放度量基準值,其格式如下: …… fedb1cff009e115f7f5f7b4533667a787798832d(hd0,1)/xen3.0.2.gz 0b397acac72a31aedc5f63c5f597c462e0815ed5 ftp 59e6215c821e78ef20d75bd6b63dd5a8b2af00ee/bin/hostname …… 當主體發(fā)起對客體的訪(fǎng)問(wèn)請求時(shí),對象管理器將訪(fǎng)問(wèn)請求提交給安全服務(wù)器。安全服務(wù)器首先調用measure對相應的主客體進(jìn)行可信檢測與驗證,也即啟動(dòng)框架中的可信驗證機制checkfile_func()函數來(lái)調用calculate_sha1()函數,以對相應的主客體進(jìn)行完整性度量,并且檢查相應的主客體是否存在于checkfile中。如果不存在,則將已計算出的雜湊值擴展到checkfile中,以作為下次判斷的依據;如果存在,則調用 strcmp()函數將所得的雜湊值與基準值進(jìn)行比較。若不匹配就顯示警告信息,告訴用戶(hù)此次訪(fǎng)問(wèn)操作的主體或客體的完整性已經(jīng)被破壞,訪(fǎng)問(wèn)被拒絕;若匹配,則調用update_checkfile()函數將所計算出的度量值擴展到checkfile文件中,并且在measure系統調用返回前,擴展相應的PCR寄存器,同時(shí)將訪(fǎng)問(wèn)請求移交給安全策略服務(wù)器,由策略服務(wù)器檢查是否滿(mǎn)足安全策略。若不滿(mǎn)足,則拒絕本次訪(fǎng)問(wèn);若滿(mǎn)足則由對象管理器實(shí)施訪(fǎng)問(wèn)決策。在實(shí)施訪(fǎng)問(wèn)控制的過(guò)程中調用monitor監控函數對訪(fǎng)問(wèn)操作進(jìn)行監控。圖4是上述實(shí)施過(guò)程的流程圖。 本文借鑒可信計算思想,從可信增強的角度出發(fā),提出了一個(gè)可信增強的訪(fǎng)問(wèn)控制框架,并給出了該框架的具體實(shí)施流程。文章重點(diǎn)闡述了框架的總體設計和實(shí)施,旨在體現框架的可信增強思想。相比普通的訪(fǎng)問(wèn)控制,它可以確保主體行為的可信性、客體內容的完整性和真實(shí)性,以及訪(fǎng)問(wèn)控制行為的正確性。本文提出的這個(gè)可信增強的框架是對可信計算在訪(fǎng)問(wèn)控制中應用的一個(gè)嘗試,在下一步工作中,將主要針對框架中存在的一些安全隱患和具體實(shí)施細節加以改進(jìn)。 |