杜晉奇, 吳秋新
(北京信息科技大學 a.計算機學院;b.理學院,北京 100192)
TCM的固件是芯片TCM內的軟件系統,或稱為TCM的操作系統,對TCM功能體系的構建發揮關鍵作用,是TCM的重要組成部分。理論上講,TCM固件應該實現國標相關規范[1]的全部功能命令和相關協議功能,是可信計算平臺功能構建和安全應用支撐的基礎。如果固件設計未能符合協議規范要求,存在重大紕漏,就可能因此給用戶造成損失。因此對其進行協議的符合性測試以期驗證其功能及性能是十分必要的。
現以可信計算國家標準《可信計算密碼模塊支撐平臺功能與接口規范》[1]及TCG相關文檔為參考標準[2-5],設計并實現了一個TCM固件自動測試工具。
固件協議符合性測試應該是標準的黑盒測試,測試人員按照TCM協議制定測試規范、設計測試用例,按照黑盒測試的方法進行全面的、深入的測試,驗證固件與協議的每一條款項是否符合及符合程度、給出固件與協議的符合程度的客觀評測結果。文獻[6]提出了一種有效的可信密碼模塊的符合性測試方法,在功能層采用建立擴展有限狀態機模型然后通過等價類劃分法從EFSM模型獲得完整的測試用例集[7]。文獻[8]中作者針對 TPM接口命令測試方法進行研究的合性測試方案,該方案針對TPM,并且未給出芯片穩定性測試方案。
在詳細研究 TCM協議的基礎上設計測試工具及測試流程,對芯片固件進行嚴格的、量化測試,以確認該版本芯片固件是否符合該協議,以及在多大程度上符合該協議。
TCM芯片是一個含有密碼運算部件和存儲部件的小型SoC(片上系統),它嵌入在計算機的主板上,提供有關可信測量計算、可信測量存儲、信任鏈建立、可信測量報告等體現“可信”事件的功能,還提供密碼學操作、密鑰管理、身份標識等應用功能。是利用可信計算技術構建通用的終端硬件平臺,建立可信的信任鏈傳遞模式,可以增強計算機體系結構的安全性[7]。
固件是TCM這個片上系統的單任務操作系統。包括初始化模塊,負責初始化芯片;單任務 OS核心管理模塊,主要管理芯片和主板通信和管理芯片內部的Flash區域的數據,并提供安全算法接口等;TCM命令管理模塊,主要實現 TCM協議功能,并且向上層TSM提供標準TCM命令接口,處理TCM命令調用請求。
TCM命令接口函數的參數分為非授權參數(前半部分),授權參數(后半部分)和輸出結果參數(最后一個)。命令的參數沒有授權部分的稱作非授權命令,只有一個授權部分的命令稱為單授權命令,有兩個授權部分的稱為雙授權命令,如表1所示。

表1 TCM命令結構
所有命令接口函數非授權參數的前三個參數都一樣,即,tag,paraSize和ordinal。tag是命令類型標記,值固定, 非授權命令的 tag 值為 TCM_TAG_RQU_COMMAND;單授權命令的 tag值為:TCM_TAG_RQU_AUTH1_COMMAND;雙授權命令tag值為 TCM_TAG_RQU_AUTH2_COMMA ND;paraSize為命令長度值,是包括所有授權及非授權參數的總長;ordinal是命令號,每個命令都有自己對應的唯一的 ordinal。其它非授權參數,需要參考其數據結構,根據命令協議規范的要求,給定其中每一項的值。
根據以上資料及TCM規范分析,主要將對命令處理模塊進行可靠性測試、功能性測試及穩定性測試。
驗證當輸入參數中的某個參數值發生錯誤,TCM能返回期望的值。還包括TCM芯片處于各個工作狀態時命令執行情況。主要考察單個參數輸入錯誤的情況及部分命令相互依賴情況。每一個命令接口需要覆蓋所有TCM工作狀態,也就是說需要考慮 TCM在 enable/disable,owner/unowner,active/deactived等狀態下是否有效;相同命令在不同工作狀態下返回值不同。如TCM_NV_DefineSpace命令在TCM芯片處于enabled ,active,owner,狀態時如果輸入參數全部正確,將返回TCM_SUCCESS;如果芯片處于disabled,active,owner狀態則返回TCM_DISABLED。輸入參數的測試數據取值包含正向值和反向值,其中正向值應該覆蓋所有符合條件的測試數據;反向值又分有效反向值和無效反向值,有效反向值為實際存在的但不符合此參數要求的數據;無效反向值是此數據本身就是無效的,此類數據取典型值。
功能性測試主要考察TCM的固件命令處理模塊的基本功能是否符合規范命令中actions的要求。一個功能的開始運行往往依賴于另一個功能的執行完成,例如加載密鑰的實現必須依賴于生成密鑰的完成[8]。通過研究actions提煉出命令之間的依賴關系,進行測試點的選取及測試用例設計。TCM命令的執行會對芯片內部的 TCM_PERMANE NT_FLAGS及TCM_STCLEAR_FLAGS等標志位進行置位,后續命令在執行時會判斷一些標志位的狀態進而決定做何種操作及返回何種結果。這些要求在命令 actions中都有詳細說明。例如TCM_NV_DefineSpace 命令的actions中有如下一條:
If pubInfo -〉 nvIndex == TCM_NV_INDEX_LOCK and tag ==TCM_TAG_RQU_COMMAND
Set TCM_PERMANENT_FLAGS -〉 nvLocked to TRUE Return TCM_SUCCESS。
對應測試用例設計如表2所示。

表2 TCM_NV_DefineSpace功能性測試用例
此部分用例主要用于檢驗 TCM芯片在極限條件下的工作穩定性。如連續發送4條TCM_CreateCounter命令創建最多個數的計數器,4條TCM_APCreate命令建立最多個數的授權會話及發送64次TCM_NV_DefineSpace創建64個NV空間等。將全部測試向量以不同次序的批處理方式在多臺機器上連續運行多天也屬穩定性測試范疇。
圖1是測試用例的運行過程。
表3、表4和表5分別舉例說明了可靠性、功能性及穩定性測試的結果。

表3 可靠性測試結果舉例

表4 功能性測試結果舉例

表5 穩定性測試結果舉例
設計一共實現測試用例2 400余例,在一款TCM芯片上測試表明,通過率在90 %左右,說明此款芯片固件基本符合TCM協議標準。
按照TCM國標命令規范標準提出了一個針對某款型號的TCM芯片固件的協議符合性測試的設計方案,并且實現了此方案。這樣的測試方法主要是通過分析 TCM命令接口及其actions進行測試用例設計,用例覆蓋全面,檢錯性高。適用于TCM芯片固件修改升級后的協議符合性檢測。符合性驗證測試實施結果表明,該方案具備良好的可行性,也具備良好的檢錯功能。今后的工作主要是對測試用例包進行維護,包括增加新的測試用例,改進已有的用例及刪除冗余用例。

圖1 測試用例運行過程
[1] 國家密碼管理局.可信計算密碼支撐平臺功能與接口規范[EB/OL].(2007-12-01).[2008-11-26]. http://www.oscca.gov.cn/Doc/6/News_1132.htm.
[2] Trusted Computing Group. TPM Main Specification:Design Principles V1.2 [EB/OL].(2007-06-01).[2008-12-09]. http://www. trustedcomputinggroup.org.
[3] Trusted Computing Group. TCG TPM Main Specification, Version 1.2 Revision 94,Part 1,Design Principles[DB/OL].(2007-06-01).[2008-12-09]. http://www.trustedcomputinggroup.org.
[4] Trusted Computing Group. TCG TPM Main Specification, Version 1.2 Revision 94,Part 2,TPM Structures[DB/OL]. (2007-06-01).[2008-12-09].http://www.trustedcomputinggroup.org.
[5] Trusted Computing Group. TCG TPM Main Specification, Version 1.2 Revision 94, Part 3, TPM Commands[DB/OL]. (2007-06-01).[2008-12-09].http://www.trustedcomputinggroup.org.
[6] 朱海衛,施蕾.淺議可信計算的發展[J].信息安全與通信保密,2009(03):79-81.
[7] 李昊,馮登國.可信密碼模塊符合性測試方法與實施[J].武漢大學學報,2009,55(01): 31-34.
[8] 崔奇,馬楠,劉賢剛.TPM接口命令標準符合性測試的設計與實現[J].計算機工程,2009,35(02):129-132.