專利名稱:基于行為的軟件可信度量系統及方法
技術領域:
本發明涉及可信計算方法,尤指一種基于預期行為和實際行為比較的基于行為的 軟件可信度量系統及方法。
背景技術:
可信計算(TrustedComputing, TC)是一項由可信計算組織(Trusted Computing Group, TCG,前稱為TCPA)推動和開發的技術,TCG定義可信為一個實體是可信的,如果它 的行為總是以預期的方式達到預期的目標。可信計算的主要思想是在硬件平臺上引入安全 芯片(可信平臺模塊)來提高終端系統的安全性,也就是說在每個微機終端植入一個信任 根,從信任根開始到硬件平臺,到操作系統內核層,再到應用層,構建信任關系,一級認證一 級,一級信任一級,并以此為基礎,擴大到網絡上,建立相應的信任鏈,從而確保整個網絡的 可信。即信任鏈的擴展方法是“邊度量,邊傳遞”。可見,可信度量是可信計算的基礎。TCG組織自成立以來,制定并公布了一系列規范,其中,規范架構概覽對完整性度 量、存儲和報告進行了詳細的描述。規范中給出的完整性度量是指獲得影響平臺完整性 (可信性)的平臺屬性的度量值,并把度量值的摘要存入平臺配置寄存器中的這樣一個過 程。完整性度量、存儲和報告三者是分不開的,完整性報告是指對外證明記錄在平臺配置寄 存器中的完整性度量值的過程。完整性度量、存儲和報告的觀念是,允許平臺進入任何可能 的狀態,包括不受歡迎的狀態和不安全的狀態,但是,不允許平臺謊報它所處的狀態。可以 用另外一個獨立的過程來評估完整性狀態并確定合理的響應。TCM(Trusted Cryptography Module)是我國依照TPM標準制造的可信芯片,為了 規范企業廠商對TCM的使用,2007年底,由國家密碼管理局頒布了《可信計算密碼支撐平臺 功能與接口規范》,主要以國內密碼算法為基礎,結合國內安全需求與產業市場,借鑒國際 先進的可信計算技術框架與技術理念并自主創新。規范中指出,完整性度量與存儲是指計 算部件的度量值,記錄該事件到事件日志,并把度量值記入可信密碼模塊內相應的平臺配 置寄存器(PCR)中。無論是TCG規范還是我國的可信計算規范,都只描述了系統啟動期間的可信度量 方法,即從系統加電開始到操作系統啟動之前靜態代碼和數據的度量。于是,一些企業和科 研院所開始探索操作系統及其之上的軟件可信度量方法和技術。2003年,IBM根據TCG規范,提出了完整性度量框架IMAantegrity Measurement Architecture)。IMA是一個支持Linux的執行架構,該框架的目的是為了解決分布式應用 之間——尤其是在分布式運行時間環境當中,建立信任關系的難題。該可信平臺的工作過 程是系統啟動后,把控制權交給一個不變基;不變基將度量BIOS的完整性,通過計算一個 SHAl確保其內容的哈希值,把結果保存在TPM中;接下來度量下一個啟動程序的代碼,同樣 計算哈希值,確保其可信;這個過程是個遞歸過程,以保證系統是步步為營的啟動起來的。2005年,卡內基梅隆大學和IBM沃森研究中心提出了為分布式系統建立可信環境 的BIND(Binding Instruction and Data)框架。BIND把代碼的完整性證明細化為關鍵代碼段的完整性證明,并為關鍵代碼段產生的每一組數據生成一個認證器。認證器附著到相 應的數據上,從而實現關鍵代碼段的完整性證明與其所產生的輸出數據的綁定。因此,BIND 可以通過關鍵代碼段以及其輸入數據的完整性證明來達到系統完整性證明的目的。但是, 由于系統由程序員自己決定度量點并在度量點插入BIND提供的hook函數接口,雖然提高 了度量精度,卻增加了程序員編寫程序的負擔。而且它無法應對系統運行時的許多攻擊。2006年,賓夕法尼亞州立大學的耶格(T. Jaeger)、IBM沃森研究中心的塞勒和 加州大學伯克利分校的山克(U. Shankar)提出了基于信息流的I3RIMA(Policy-Reduced Integrity Measurement Architecture)完整性度量體系結構,并研究了 SE-Linux為基礎 的原型系統。PRIMA項目的研究工作在IMA研究成果的基礎上對IMA的一個擴展和增強,引 入CW-Lite信息流模型來處理組件依賴關系,在基于信息流的系統完整性動態度量方面進 行了卓有成效的嘗試。PRIMA的實現思路如下在系統啟動時,MAC策略和可信的主體集被 度量。通過這些度量,遠程方能夠構建一個信息流圖。遠程方能夠驗證所有來自于可信主 體(該主體在運行時間被驗證運行著可信的代碼)或具有經過過濾器接口過濾過的來自于 非可信主體所有流行目標應用和可信應用信息。而后,度量運行時間的信息。根據信息流 圖,僅需要度量所需要依賴的代碼。其他代碼都假定為不可信的。而后還需要度量在加載 代碼和加載該代碼主體之間的映射,從而遠程方能夠驗證該主體執行了預期的代碼。PRIMA 僅僅要求附加地度量MAC策略和在加載時間的可信主體,以及代碼和MAC策略主體之間的 匹配問題,由于不再需要度量不可信的主體,從而就可以減少一部分度量值。PRIMA結構充 分體現了安全操作系統對于可信應用的支持上的典型工作。馬里蘭大學提出的Copilot運用一個獨立于主機的硬件協處理器來實現對主機 預定內存區域的完整性度量.CoPilot的缺點在于設計實現復雜,需要進行多次對內存的 映射操作,而且只能先設定度量周期,如果其度量周期長于進程完整性被損壞的時間,也可 能發現不了這樣的破壞。LKIM以及后繼的工作針對系統內核進行度量,它在靜態度量的基礎上,定義一系 列變量表示系統的狀態,這些變量值發生變化的時候,重新進行度量,從而實現動態度量的 目的。但是它強調的靜態度量加上狀態變量不能表示真正的動態的度量,而且它度量針對 的是Linux內核,對普通的進程無能為力。國內,人民大學提出一個基于TPM安全芯片的進程運行時完整性度量的體系結構 及其原型系統I^atos-RIP,用以度量進程從創建到死亡的整個生命周期中的完整性。北京工業大學從軟件行為學的角度,給出了一個可信動態度量及證明模型。該模 型基于拓展行為跡的度量機制和行為度量信息基的驗證機制,提出了若干用于可信計算行 為動態度量的定理,進而給出對軟件行為可信的判定方法和模型。可信度量經過10年的研究,從多個角度對可信度量進行探索,有基于代碼的 度量(BIND)、基于角色的度量(PRIMA)、基于信息流的度量(PRIMA)、基于周期的度量 (Copilot)、基于進程的度量(Patos-RIP)、基于內存的度量、基于軟件行為的度量等等。然 而,TCG所提出的可信,盡管提出了行為可預期的超前概念,但其核心思想仍然局限在如何 驗證程序代碼是由可信賴的供應商提供或者由可信賴的管理者來安裝、維護。對于上層應 用軟件在運行過程中的動態可信度量,尚沒有比較成熟的度量模型和解決方案。因此,本發明遵循TCG的可信思想,不僅對軟件的加載代碼進行驗證,還將為軟件建立預期行為樹和實際行為預期樹,在驗證預期行為樹可行的基礎上,通過比較軟件的預 期和實際的行為軌跡、行為發生時的環境上下文、環境參數等,來實現對軟件的可信度量。
發明內容
本發明的目的是提出一種基于行為的軟件可信度量方法,對軟件預期行為的合理 性、軟件加載之前代碼的完整性、軟件運行過程中實際行為與預期行為的偏差進行度量,以 保證軟件生命周期的可信,從而達到保護整個信息系統的可信的目標。為了實現上述目的,一種基于行為的軟件可信度量系統,其特征在于所述的應用 系統包括以下部分基礎層,由基于可信計算芯片硬件的可信操作系統組成,是一個可信計 算平臺,為核心層的可信度量和可信判定提供基礎支撐;核心層,由可信度量和可信判定兩 部分組成,其中,可信度量部分負責收集信息,由完整性度量模塊、預期行為獲取模塊、實際 行為獲取模塊組成;可信判定部分負責對可信度量部分得到的信息按照判定規則進行判 定,由完整性驗證模塊、預期行為驗證模塊、行為對比模塊組成;應用層,負責軟件裝載和運 行。軟件包括源程序軟件和可執行程序軟件。軟件供應方是指軟件供應商,或者是指基于可信計算芯片的可信計算平臺。一種使用上述系統的基于行為的軟件可信度量方法,其包括以下步驟一、從軟件供應方獲得軟件;二、在軟件裝載之前,所述完整性驗證模塊借助完整性度量模塊度量軟件內容的 完整性;三、完整性檢查通過后,所述預期行為獲取模塊獲取軟件的預期行為;四、所述預期行為驗證模塊驗證軟件預期行為的合理性;五、安裝軟件,運行軟件;六、軟件運行過程中,所述實際行為獲取模塊獲取軟件的實際行為;七、所述行為對比模塊比較預期行為和實際行為的差異,判斷軟件的可信性。在所述步驟三中預期行為獲取模塊使用反匯編靜態分析技術在不運行軟件的情 況下分析軟件的可執行程序代碼,對程序的可執行語句進行控制流分析,并提取程序可達 的所有執行路徑,確定程序的控制結構,從而得到軟件的預期行為。在所述步驟三中,得到軟件的預期行為的具體操作步驟為①對軟件的可執行程 序利用反匯編技術將可執行程序轉換為匯編語言源程序;②掃描匯編語言源程序,找到所 有系統調用指令,并把每個系統調用指令之間的所有指令記錄為指令塊IB ;③記錄系統調 用的名稱SysCallName ;④記錄系統調用上下文SCC ;⑤如果系統調用涉及文件調用參數, 那么收集文件名稱、可執行文件、系統文件、配置文件、腳本文件、數據文件、大小、更新日 期、操作類型、文件完整性的哈希值;⑥用控制流圖對分支指令進行形式化表示;⑦建立預 期行為樹。在所述步驟六中運用鉤子機制,監視軟件運行過程中系統調用事件的發生,記錄 系統調用序列,以監視軟件的實際運行狀態以及提取實際行為。在所述步驟二中,軟件完整性驗證是指驗證軟件的代碼、文件、數據等沒有被篡改 過。
在所述步驟七中,對比規則是①實際行為樹在每添加一個節點后,與預期行為樹 相比,該樹仍然是預期行為樹的一顆子樹;②把實際行為樹的新增邊的信息與預期行為樹 的對應邊信息進行比較,分別判斷系統它們的系統調用名稱SysCallName、系統上下文值 SCCV和文件完整性哈希值是否相等。如果滿足這兩個規則,則說明軟件在按照預期行為方 式實現預期目標,否則軟件存在安全隱患,報告給可信操作系統,阻止其運行并回退到安全 狀態。在所述步驟四中,行為合理性包括行為可行性、行為之間的依賴關系滿足性。與現有技術相比,本發明的有益效果是在軟件加載到系統之前,不僅驗證了代碼 和數據的完整性,還驗證了軟件預期行為的合理性,并且在軟件加載到系統之后,通過對比 軟件的實際行為和已知的預期行為的差異,實現了軟件運行期間的動態度量,從而保證了 軟件是按照“預期行為達到了預期目標”。
圖1為基于行為的軟件可信度量整體架構示意圖;圖2為預期行為樹示例;
具體實施例方式為使本發明的特征及優點得到更清楚的了解,以下結合附圖,作詳細說明如下如 圖1所示,描述了本發明的可信度量架構示意圖,分為3層,最低層是基礎層,是可信計算平 臺,由基于可信計算芯片硬件的可信操作系統組成;中間層是核心層,由可信度量和可信判 定兩部分組成,其中,可信度量部分負責收集信息,可信判定部分負責對可信度量部分得到 的信息按照判定規則進行判定;最上層是應用層,負責軟件裝載和運行。軟件在裝載之前,完整性度量模塊接收軟件供應者提供的TPM/TCM身份密鑰并計 算軟件代碼的哈希值(分別采用SHAl算法或MD5算法得到一個120bit的數值),傳遞給 可信判定部分的完整性驗證模塊。可信計算平臺預先保存著一份各個軟件供應者的TPM/ TCM身份密鑰以及它們能夠提供的軟件代碼的哈希值序列表,所以,完整性驗證模塊的判定 規則就是直接在表中查找完整性度量模塊獲得的TPM/TCM身份密鑰和哈希值,如果找到, 則表明軟件是完整可信的,否則,阻止軟件裝載。軟件通過完整性驗證后,預期行為獲取模塊使用軟件逆向工程技術的靜態分析技 術在不運行軟件的情況下分析軟件的可執行程序代碼,對程序的可執行語句進行控制流分 析,并提取程序可達的所有執行路徑,確定程序的控制結構,從而推斷軟件的預期行為,建 立預期行為樹。具體步驟是①對軟件的可執行程序進行逆向工程,利用反匯編技術將可 執行程序轉換為匯編語言源程序(常用的靜態分析工具是W32DASM、IDA和HIEW等);② 掃描匯編語言源程序,找到所有系統調用指令,并把每個系統調用指令之間的所有指令記 錄為指令塊IB ;③記錄系統調用的名稱SysCallName ;④記錄系統調用上下文SCC,它是指
一個函數調用名稱序列 <FuncNamel, FuncName2, FuncName3,......>,表示 FuncNamel 調用
FuncName2, FuncName2調用FuncName3......,系統調用上下文值SCCV的計算公式是SCCV =
Hash(SCC);⑤如果系統調用涉及文件調用參數,那么收集文件名稱、類型(可執行文件、系 統文件、配置文件、腳本文件、數據文件)、屬性(大小、更新日期)、操作類型(讀、寫)、文件完整性的哈希值FIH ;⑥用控制流圖對分支指令進行形式化表示CFG = <V,E>,其中V = Ivi I Vi對應指令塊IBJ,E = Kvi, Vj> I指令塊IBi到IB^之間存在控制權轉移};⑦建立預 期行為樹,示例如圖2所示,每條邊的信息表示EI = <SysCalIName, SCCV,FIH>。預期行為 樹的信息存儲和報告通過TPM/TCM的可信存儲和報告機制實現。預期行為樹可具體存儲成 一個堆棧或數組。預期行為驗證模塊負責分析預期行為獲取模塊收集的信息,以判定軟件的預期行 為是否合理、合法、可行。具體地實施是根據軟件來源的TPM/TCM信息和EI,結合信息系統 自身的訪問控制等安全策略,驗證軟件是否有權進行系統調用,是否有權訪問和執行系統 文件。如果通過驗證,則軟件可裝載到信息系統當中,否則,拒絕軟件裝載。接下來,軟件將裝載到信息系統當中,開始動態運行。我們運用鉤子機制,監視軟 件運行過程中系統調用事件的發生,記錄系統調用序列。以源代碼開放的Linux操作系統 為例,Linux安全模塊LSM(Linux Security Module)提供了一系列安全相關的鉤子函數實 現。可采用程序植入的方式,通過改寫與行為監控相關的鉤子函數,實現對軟件運行過程中 所發出的系統調用的動態攔截,以監視軟件的實際運行狀態以及提取實際行為特征。當有 系統調用發生時,事件感知器ES會被觸發,經事件適配器EA識別后,由事件分發器ED啟動 方法集MS中相應的特征提取方法去提取當前軟件系統調用行為的名稱SysCallName、系統 調用上下文SCC以及被調用文件的名稱、類型、屬性、操作類型(讀、寫)、文件完整性的哈希 值FIH,然后計算出SCCH,類似預期行為樹的建立過程,建立實際行為樹,再經TPM進行完整 性保護之后上報給行為對比模塊。行為對比模塊負責對比實際行為與預期行為的差異。對比規則是①實際行為樹 在每添加一個節點后,與預期行為樹相比,該樹仍然是預期行為樹的一顆子樹;②把實際行 為樹的新增邊的信息與預期行為樹的對應邊信息進行比較,分別判斷系統它們的系統調用 名稱SysCallName、系統上下文值SCCV和文件完整性哈希值是否相等。如果滿足這兩個規 則,則說明軟件在按照預期行為方式實現預期目標,否則軟件存在安全隱患,報告給可信操 作系統,阻止其運行并回退到安全狀態。以上所述的實例對本發明的各個部分的實現方式作了詳細的說明,但是本發明的 具體實現形式并不局限于此,對于本技術領域的一般技術人員來說,在不背離本發明所述 方法的精神和權利要求范圍的情況下對它進行的各種顯而易見的改變都在本發明的保護 范圍之內。
權利要求
1.一種基于行為的軟件可信度量系統,其特征在于所述的應用系統包括以下部分 基礎層,由基于可信計算芯片硬件的可信操作系統組成,是一個可信計算平臺,為核心層的可信度量和可信判定提供基礎支撐;核心層,由可信度量和可信判定兩部分組成,其中,可信度量部分負責收集信息,由完 整性度量模塊、預期行為獲取模塊、實際行為獲取模塊組成;可信判定部分負責對可信度量 部分得到的信息按照判定規則進行判定,由完整性驗證模塊、預期行為驗證模塊、行為對比 模塊組成;應用層,負責軟件裝載和運行。
2.如權利要求1所述的基于行為的軟件可信度量系統,其特征在于軟件包括源程序 軟件和可執行程序軟件。
3.如權利要求1所述的基于行為的軟件可信度量系統,其特征在于軟件供應方是指 軟件供應商,或者是指基于可信計算芯片的可信計算平臺。
4.一種使用權利要求1-3任一項所述系統的基于行為的軟件可信度量方法,其特征在 于其包括以下步驟一、從軟件供應方獲得軟件;二、在軟件裝載之前,所述完整性驗證模塊借助完整性度量模塊度量軟件內容的完整性;三、完整性檢查通過后,所述預期行為獲取模塊獲取軟件的預期行為;四、所述預期行為驗證模塊驗證軟件預期行為的合理性;五、安裝軟件,運行軟件;六、軟件運行過程中,所述實際行為獲取模塊獲取軟件的實際行為;七、所述行為對比模塊比較預期行為和實際行為的差異,判斷軟件的可信性。
5.如權利要求4所述的方法,其特征在于在所述步驟三中預期行為獲取模塊使用反 匯編靜態分析技術在不運行軟件的情況下分析軟件的可執行程序代碼,對程序的可執行語 句進行控制流分析,并提取程序可達的所有執行路徑,確定程序的控制結構,從而得到軟件 的預期行為。
6.如權利要求5所述的方法,其特征在于在所述步驟三中,得到軟件的預期行為的具 體操作步驟為①對軟件的可執行程序利用反匯編技術將可執行程序轉換為匯編語言源程 序;②掃描匯編語言源程序,找到所有系統調用指令,并把每個系統調用指令之間的所有指 令記錄為指令塊;③記錄系統調用的名稱;④記錄系統調用上下文;⑤如果系統調用涉及 文件調用參數,那么收集文件名稱、可執行文件、系統文件、配置文件、腳本文件、數據文件、 大小、更新日期、操作類型、文件完整性的哈希值;⑥用控制流圖對分支指令進行形式化表 示;⑦建立預期行為樹。
7.如權利要求4所述的方法,其特征在于在所述步驟六中運用鉤子機制,監視軟件 運行過程中系統調用事件的發生,記錄系統調用序列,以監視軟件的實際運行狀態以及提 取實際行為。
8.如權利要求4所述的方法,其特征在于在所述步驟二中,軟件完整性驗證是指驗證 軟件的代碼、文件、數據等沒有被篡改過。
9.如權利要求6所述的方法,其特征在于在所述步驟七中,以相同于預期行為樹的建立過程,建立實際行為樹,而對比規則是①實際行為樹在每添加一個節點后,與預期行為 樹相比,該樹仍然是預期行為樹的一顆子樹;②把實際行為樹的新增邊的信息與預期行為 樹的對應邊信息進行比較,分別判斷系統它們的系統調用名稱、系統上下文值和文件完整 性哈希值是否相等;如果滿足這兩個規則,則說明軟件在按照預期行為方式實現預期目標, 否則軟件存在安全隱患,報告給可信操作系統,阻止其運行并回退到安全狀態。
10.如權利要求4所述的方法,其特征在于在所述步驟四中,行為合理性包括行為可 行性、行為之間的依賴關系滿足性。
全文摘要
本發明公開了一種基于行為的軟件可信度量系統及方法,本發明的系統由基礎層、核心層和用戶層三個層次組成,通過在軟件裝載之前事先提取軟件的預期行為,與軟件實際運行中的行為進行比較來實現軟件的可信度量。本方法解決了軟件運行時的可信度量問題,以保證“預期行為達到預期目標”。
文檔編號G06F21/00GK102073816SQ201010618258
公開日2011年5月25日 申請日期2010年12月31日 優先權日2010年12月31日
發明者蘭雨晴, 李紅娟, 韓濤 申請人:蘭雨晴