專利名稱:由星型信任鏈支持的嵌入式平臺應用程序完整性驗證方法
技術領域:
本發明屬于可信計算平臺領域,特別涉及一種由星型信任鏈支持的嵌入式 平臺應用程序完整性驗證方法。
背景技術:
在計算機運行環境中,"信任"是一個復雜的概念,所有操作的進行過程和 最終結果同合法操作者所預期的是一致的時候,則可以認為這個環境是可信的。
在IS0/IEC 15408標準中,有如下定義 一個可信的組件、操作或過程的行為 在任意操作條件下,其流程和結果總是可預測的,并能很好地抵御應用程序異 常、病毒,以及一定程度上的物理干擾造成的破壞。
可信計算組織(Trusted Computing Group, TCG)致力于軟件安全性和具 有安全、信任能力的硬件運算平臺,旨在從跨平臺和操作系統的硬件組件和軟 件接口方面,促進與廠商獨立的可信計算平臺工作標準的制定。到目前為止, TCG制定的規范涉及個人電腦、網絡、移動設備、軟件棧等多個方面,最新的版 本為Version1.2。 TCG規范要求一個可信平臺至少要包含以下組件1.至少一 個完整性測量的可信計算根(Root of Trust for Measurement, RTM); 2.剛好 一個完整性存儲和報告可信根;3.至少一個可信平臺度量存儲;4.至少一個TCG 確認數據;5.剛好一個可信平臺代理。
可信計算根包含一個核心組件,核心和計算引擎以及其他對象是物理鏈接。 可信計算根必須能提供對自身以及連接電路的物理保護,并能作為一個平臺系統的可信權威,提供身份認證保護、重要數據加密和訪問控制服務。
從可信計算根開始,所有測量過程中的信任都是可預料的,對于處于不適
當環境中的平臺,將否決其存取數據和運行程序的權利。可信計算根包含很多
組件來提供這種水平的信任。
可信計算根測量某些平臺特性,將測量數據記錄入測量存儲日記,并將最
終的結果存入TPM (Trust Platform Module,可信平臺模塊,包含有可信計算 根、可信存儲根和可信報告根三類可信根)。
如果要進行信任傳遞,可信計算根在將平臺控制權傳遞給第二個測量代理 前,度量第二個代理的特征。當檢測通過后,將該代理納入可信邊界,允許把 平臺控制權傳遞給該代理。第二個測量代理可能重復這一步驟度量下一級代 理的特征,存儲測量數據和最終結果,并將控制權傳遞給該測量代理。以此類 推。
TPM每一次測量的結果被保存在16個(或更多,允許根據需要擴展)PCR (Platform Configuration Register,平臺配置寄存器)中。PCR是用于存儲 離散的完整性度量的160位的存儲空間,所有的PCR寄存器都在TPM內一個受 保護的位置。
平臺上有許多完整性測量值,PCR被設計成在寄存器中保存無約束大小的 度量,它通過使用密碼hash把所有的更新散列到PCR中完成以上要求 PCR[i]新值=HASH (PCR[i]舊值 添加值) 以此可以保證①排序對PCR的更新是不可交換的。例如,測量A-〉B和測 量B-〉A結果是不一樣的;②單向性通過給定的PCR值推測輸入信息值計算上 是不可能的。為保障計算機系統的可信,需要從底層硬件到上層應用都是可信的,即除
了 TPM, Bootloader、操作系統都是可信的之外,還要保證應用程序也是可信 的,因此目前本需要一種機制能使信任關系從TPM擴展到上層應用程序。
現有PC機的引導方式 一 般為鏈式結構,即BIOS Boot Block^BIOS+Bootloader^操作系統內核,這種方式在多級測量代理之間很容 易產生信任損失。所以,在運行應用程序時,需要用操作系統對應用程序進行 完整性度量,其信任損失將更大。
而對于嵌入式系統,其系統結構一般相對比較簡單,軟、硬件部件很少更 換或改變,更適合使用星型的信任結構。嵌入式系統的另一個特點是,多數操 作系統內核并不放在文件系統中,而是直接放在存儲器分區中,這樣,操作系 統內核和根文件系統就分成了兩個相對固定的部分。因而對于嵌入式系統來 說,星型信任鏈就要以TPM為可信根,對Bootloader、操作系統內核和根文件 系統分別進行度量,通過完整性驗證后再啟動嵌入式平臺。這種方式下, Bootloader、操作系統內核和根文件系統都是直接被TPM度量過的,可以保證 嵌入式系統啟動時是安全的,沒有被非法修改過的。這種情況下,應用程序被 非法修改仍然可以危害系統安全,所以為了保證重要的應用程序也是安全的, 需要研究在這種星型信任鏈結構的支持下,將信任關系擴展到應用程序的安全 機制。
發明內容
本發明目的在于針對現有技術的不足,提供基于星型信任鏈結構支持的應 用程序信任鏈擴展方案,實現一種既符合TCG規范又適合嵌入式平臺特性的應 用程序可信度驗證方法。本發明一種由星型信任鏈支持的嵌入式平臺應用程序完整性驗證方法,所
述嵌入式平臺設有獨立硬件實現的TPM作為整個平臺的可信測量根,TPM使用硬 連線控制嵌入式平臺的運行;TPM內部采用物理方式集成有可信計算根、可信存 儲根和可信報告根,對其自身以及連接電路有物理保護;TPM與嵌入式平臺 Bootloader、操作系統內核、根文件系統形成星型的信任關系;
對根文件系統中需要進行信任擴展的完整的應用程序,用TPM的可信計算 根進行可信度量,并將所得可信度量值保存于TPM的可信存儲根內;在操作系 統的啟動過程中對應用程序進行完整性度量,再將所得度量值與可信度量值比 較,如果一致則應用程序的完整性驗證通過,否則完整性驗證失敗。
而且,應用程序的完整性驗證通過時,操作系統繼續向下正常啟動;指定 應用程序的完整性驗證失敗時,操作系統向用戶發出提示或停機。
而且,在根文件系統中設置完整性度量程序,在操作系統的自啟動腳本中 使該完整性度量程序在操作系統啟動時自動執行,實現對應用程序進行完整性 度量。
而且,完整性度量程序采用程序配置文件指明需完整性驗證的應用程序。 而且,所述程序配置文件存放在根文件系統中。
而且,根文件系統中存放供用戶指定需完整性驗證的應用程序的專用工具, 該專用工具用于將需完整性驗證的應用程序列表寫入程序配置文件中。
而且,在操作系統的啟動過程中對應用程序進行完整性驗證的具體過程如
下,
1) 操作系統通過自啟動腳本運行起執行完整性度量程序;
2) 完整性度量程序從程序配置文件中讀取需完整性驗證的應用程序;3) 完整性度量程序對應用程序進行完整性度量,計算出度量值,并與TPM 中保存的可信度量值進行比較;
4) 如果比較結果為一致,則認為該應用程序沒有經過任何非法改動,返回 步驟2)開始執行,繼續讀取下一需完整性驗證的應用程序進行完整性度量和比 較;如果比較結果為不一致,則提示用戶,待用戶確認后返回步驟2)開始執行, 繼續讀取下一需完整性驗證的應用程序進行完整性度量和比較;
直到對程序配置文件中記錄的所有需完整性驗證的應用程序都完整性度量 和比較完畢,操作系統繼續運行。
而且,應用程序為可執行文件、庫文件、數據文件或配置文件。 本發明針對嵌入式平臺系統內核不會頻繁改動的特點,使用硬件TPM,基于 星型信任鏈結構對應用程序進行可信度量。其優點是1.星型信任關系不在信 任代理間傳遞,使信任鏈大大縮短,最大可能地避免信任損失;2.在星型信任 鏈支持下,可以方便地對任意類型的文件進行可信度量,以避免運行被病毒或 人為等任何方式損壞的程序;3.正確的度量值保存在TPM中,之后開機即執行 度量,保證度量過程是可信的;4.使用專用工具指定要度量的文件,使用方便 靈活。
圖1為鏈式信任鏈示意圖。
圖2為簡單星型信任鏈示意圖。
圖3為以TPM為可信根的星型信任鏈示意圖。
圖4為本發明以TPM為可信根的星型信任鏈到應用程序的可信擴展示意圖。
具體實施方式
以下結合
本發明的技術方案原理圖1為傳統鏈式信任鏈,信任 傳遞的順序是A檢測B,然后把平臺控制權傳遞給B; B檢測C,然后把平臺控
制權傳遞給C…這樣連續傳遞直到最后一個代理N。圖2提供了簡單星型信任鏈, 以A為可信根,分別檢測B、 C…N。圖3提供了以TPM為可信根建立的星型信任 鏈,即以TPM為可信根對Bootloader (引導程序)、操作系統內核和根文件系統 分別進行度量,通過度量報告判定是否允許嵌入式平臺正常運行。在此基礎上, 本發明提供了由星型信任鏈支持的嵌入式平臺應用程序完整性驗證方法,參見 圖4:對根文件系統中存儲的應用程序分別生成度量報告,從而實現應用程序完 整性驗證方法。
本發明的技術方案實現基于由星型信任鏈支持的嵌入式平臺,所述嵌入式 平臺設有獨立硬件實現的TPM作為整個平臺的可信測量根,TPM使用硬連線控制 嵌入式平臺的運行;TPM內部采用物理方式集成有可信計算根、可信存儲根和可 信報告根,對其自身以及連接電路有物理保護;TPM與嵌入式平臺Bootloader、 操作系統內核、根文件系統形成星型的信任關系。具體實施時,TPM的設置可參 考現有技術,如TCG發布的標準TPM Specification Version 1. 2 Revision 103。
應用程序完整性驗證的實現則包括兩個過程首先,對根文件系統中需要 進行信任擴展的完整的應用程序,預先用TPM的可信計算根進行可信度量,并 將所得可信度量值保存于TPM的可信存儲根內。然后,在操作系統的啟動過程 中對應用程序進行完整性度量,再將所得度量值與可信度量值比較,如果一致 則應用程序的完整性驗證通過,否則完整性驗證失敗。前一過程可以在首次將 完整的應用程序存入根文件系統后進行,或者由用戶根據需要指定被確認是完 整的應用程序,用TPM獲取可信度量作為應用程序信任擴展的基礎。后一過程在每次啟動嵌入式平臺時自動執行,利于保證嵌入式平臺應用安全性。
為了能夠發揮應用程序的完整性驗證的作用,可以設置對應用程序的完整 性驗證通過時,操作系統繼續向下正常啟動;指定應用程序的完整性驗證失敗 時,操作系統向用戶發出提示或停機。
為了方便實現在操作系統的啟動過程中對應用程序進行完整性度量,本發 明提出進一步方案在根文件系統中設置完整性度量程序,在操作系統的自啟 動腳本中使該完整性度量程序在操作系統啟動時自動執行,實現對應用程序進 行完整性度量。完整性度量程序對應用程序進行完整性度量的具體方式應當與
TPM的可信計算根預先對完整的應用程序進行可信度量的具體方式一致,具體實 施時可以采用一樣的Hash函數進行度量運算。在操作系統的啟動過程中對應用 程序進行完整性度量,也可以通過調用TPM可信計算根的Hash函數模塊進行度 量計算實現,但是效率不如完整性度量程序。
為了支持對指定應用程序進行完整性度量,本發明建議在根文件系統中設 置程序配置文件,采用程序配置文件為完整性度量程序指明需完整性驗證的應 用程序。這樣也方便對多個應用程序進行完整性驗證,可以在根文件系統中存 放供用戶指定需完整性驗證的應用程序的專用工具,該專用工具用于將需完整 性驗證的應用程序列表寫入程序配置文件中。操作系統的啟動過程中,完整性 度量程序只需按照程序配置文件中的列表項目,依次提取各應用程序分別進行 度量。
特別指出的是,本發明所涉及應用程序可為可執行文件、庫文件、數據文 件或配置文件等任何類型的文件。本發明實施例提出,完整性度量程序根據程 序配置文件決定對哪些文件進行完整性度量,完整性度量程序和程序配置文件都存放在根文件系統中,只有合法用戶才能使用專用工具修改程序配置文件, 即指定對哪些文件進行度量。指定度量文件的專用工具也存放在根文件系統中。 完整性度量程序、程序配置文件、指定度量文件的專用工具都存在根文件系統 上,所以在啟動嵌入式平臺之前都可被驗證完整性,從而保證其它應用程序文 件的度量可靠性。
一般在根文件系統中存入新的文件后,根文件系統的度量值 會發生變化,本發明提供了結合根文件系統完整性度量的實現方式以供參考 當要指定需要進行信任擴展的應用程序時,合法用戶運行專用工具,指明要度 量的文件名及路徑,然后TPM的可信計算根自動對指定的文件進行可信度量, 可信度量值存入TPM的可信存儲根中。完成可信度量值的保存之后,專用工具
自動修改程序配置文件,保存要度量的文件名及路徑,然后TMP的可信計算根 對根文件系統重新度量,計算得到根文件系統的新度量值,也存入TPM的可信 存儲根中,完成了指定要度量的文件的工作。重新啟動系統時,TPM首先根據新 的度量值進行根文件系統的驗證,之后啟動操作系統,由完整性度量程序對程 序配置文件中所有應用程序文件(包括合法用戶新指定加入的應用程序文件) 進行完整性度量與驗證過程。因為以星型信任結構為基礎進行擴展,使用根文 件系統中保存的完整性度量程序對指定應用程序進行度量,該完整性度量程序 已被驗證是可信的,應用程序的度量值保存在TPM中,使信任關系從TPM擴展 到了應用程序,避免了應用程序中信任強度的減弱,能夠保證應用程序的安全 性。同時,用戶能夠自由指定需要驗證的應用程序,具有很高的靈活性。
為了支持對多個應用程序進行驗證,本發明實施例在操作系統的啟動過程 中對應用程序進行完整性驗證的具體過程如下
1)操作系統通過自啟動腳本運行起執行完整性度量程序;2) 完整性度量程序從程序配置文件中讀取需完整性驗證的應用程序;
3) 完整性度量程序對應用程序進行完整性度量,計算出度量值,并與TPM中保存的可信度量值進行比較;
4) 如果比較結果為一致,則認為該應用程序沒有經過任何非法改動,返回步驟2)開始執行,繼續從程序配置文件中讀取下一需完整性驗證的應用程序進行完整性度量和比較;如果比較結果為不一致,則提示用戶,待用戶確認后返回步驟2)開始執行,繼續讀取下一需完整性驗證的應用程序進行完整性度量和比較;
直到對程序配置文件中記錄的所有需完整性驗證的應用程序都完整性度量和比較完畢,操作系統繼續運行。
權利要求
1. 一種由星型信任鏈支持的嵌入式平臺應用程序完整性驗證方法,所述嵌入式平臺設有獨立硬件實現的TPM作為整個平臺的可信測量根,TPM使用硬連線控制嵌入式平臺的運行;TPM內部采用物理方式集成有可信計算根、可信存儲根和可信報告根,對其自身以及連接電路有物理保護;TPM與嵌入式平臺Bootloader、操作系統內核、根文件系統形成星型的信任關系;其特征在于對根文件系統中需要進行信任擴展的完整的應用程序,用TPM的可信計算根進行可信度量,并將所得可信度量值保存于TPM的可信存儲根內;在操作系統的啟動過程中對應用程序進行完整性度量,再將所得度量值與可信度量值比較,如果一致則應用程序的完整性驗證通過,否則完整性驗證失敗。
2. 根據權利要求1所述的嵌入式平臺應用程序完整性驗證方法,其特征在于 應用程序的完整性驗證通過時,操作系統繼續向下正常啟動;指定應用程序的 完整性驗證失敗時,操作系統向用戶發出提示或停機。
3. 根據權利要求1所述的嵌入式平臺應用程序完整性驗證方法,其特征在于 在根文件系統中設置完整性度量程序,在操作系統的自啟動腳本中使該完整性 度量程序在操作系統啟動時自動執行,實現對應用程序進行完整性度量。
4. 根據權利要求3所述的嵌入式平臺應用程序完整性驗證方法,其特征在于 完整性度量程序采用程序配置文件指明需完整性驗證的應用程序。
5. 根據權利要求4所述的嵌入式平臺應用程序完整性驗證方法,其特征在于 所述程序配置文件存放在根文件系統中。
6. 根據權利要求5所述的嵌入式平臺應用程序完整性驗證方法,其特征在于根文件系統中存放供用戶指定需完整性驗證的應用程序的專用工具,該專用工 具用于將需完整性驗證的應用程序列表寫入程序配置文件中。
7. 根據權利要求4或5或6所述的嵌入式平臺應用程序完整性驗證方法,其特征在于在操作系統的啟動過程中對應用程序進行完整性驗證的具體過程如下,1) 操作系統通過自啟動腳本運行起執行完整性度量程序;2) 完整性度量程序從程序配置文件中讀取需完整性驗證的應用程序;3) 完整性度量程序對應用程序進行完整性度量,計算出度量值,并與TPM 中保存的可信度量值進行比較;4) 如果比較結果為一致,則認為該應用程序沒有經過任何非法改動,返回 步驟2)開始執行,繼續讀取下一需完整性驗證的應用程序進行完整性度量和比 較;如果比較結果為不一致,則提示用戶,待用戶確認后返回步驟2)開始執行, 繼續讀取下一需完整性驗證的應用程序進行完整性度量和比較;直到對程序配置文件中記錄的所有需完整性驗證的應用程序都完整性度量 和比較完畢,操作系統繼續運行。
8. 根據權利要求1或2或3或4或5或6所述的嵌入式平臺應用程序完整性驗 證方法,其特征在于應用程序為可執行文件、庫文件、數據文件或配置文件。
9. 根據權利要求7所述的嵌入式平臺應用程序完整性驗證方法,其特征在于 應用程序為可執行文件、庫文件、數據文件或配置文件。
全文摘要
一種由星型信任鏈支持的嵌入式平臺應用程序完整性驗證方法,所述嵌入式平臺設有獨立硬件實現的TPM作為整個平臺的可信測量根,TPM使用硬連線控制嵌入式平臺的運行;TPM內部采用物理方式集成有可信計算根、可信存儲根和可信報告根,對其自身以及連接電路有物理保護;TPM與嵌入式平臺Bootloader、操作系統內核、根文件系統形成星型的信任關系;其特征在于對根文件系統中需要進行信任擴展的完整的應用程序,用TPM的可信計算根進行可信度量,并將所得可信度量值保存于TPM的可信存儲根內;在操作系統的啟動過程中對應用程序進行完整性度量,再將所得度量值與可信度量值比較,如果一致則應用程序的完整性驗證通過,否則完整性驗證失敗。
文檔編號G06F21/00GK101504704SQ20091006113
公開日2009年8月12日 申請日期2009年3月17日 優先權日2009年3月17日
發明者勇 勞, 路 康, 張煥國, 松 文, 淞 楊, 潘丹鈴, 波 趙, 陳守明, 黃祥梨 申請人:武漢大學