杜晉奇, 吳秋新
(北京信息科技大學(xué) a.計(jì)算機(jī)學(xué)院;b.理學(xué)院,北京 100192)
TCM的固件是芯片TCM內(nèi)的軟件系統(tǒng),或稱為TCM的操作系統(tǒng),對(duì)TCM功能體系的構(gòu)建發(fā)揮關(guān)鍵作用,是TCM的重要組成部分。理論上講,TCM固件應(yīng)該實(shí)現(xiàn)國(guó)標(biāo)相關(guān)規(guī)范[1]的全部功能命令和相關(guān)協(xié)議功能,是可信計(jì)算平臺(tái)功能構(gòu)建和安全應(yīng)用支撐的基礎(chǔ)。如果固件設(shè)計(jì)未能符合協(xié)議規(guī)范要求,存在重大紕漏,就可能因此給用戶造成損失。因此對(duì)其進(jìn)行協(xié)議的符合性測(cè)試以期驗(yàn)證其功能及性能是十分必要的。
現(xiàn)以可信計(jì)算國(guó)家標(biāo)準(zhǔn)《可信計(jì)算密碼模塊支撐平臺(tái)功能與接口規(guī)范》[1]及TCG相關(guān)文檔為參考標(biāo)準(zhǔn)[2-5],設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)TCM固件自動(dòng)測(cè)試工具。
固件協(xié)議符合性測(cè)試應(yīng)該是標(biāo)準(zhǔn)的黑盒測(cè)試,測(cè)試人員按照TCM協(xié)議制定測(cè)試規(guī)范、設(shè)計(jì)測(cè)試用例,按照黑盒測(cè)試的方法進(jìn)行全面的、深入的測(cè)試,驗(yàn)證固件與協(xié)議的每一條款項(xiàng)是否符合及符合程度、給出固件與協(xié)議的符合程度的客觀評(píng)測(cè)結(jié)果。文獻(xiàn)[6]提出了一種有效的可信密碼模塊的符合性測(cè)試方法,在功能層采用建立擴(kuò)展有限狀態(tài)機(jī)模型然后通過等價(jià)類劃分法從EFSM模型獲得完整的測(cè)試用例集[7]。文獻(xiàn)[8]中作者針對(duì) TPM接口命令測(cè)試方法進(jìn)行研究的合性測(cè)試方案,該方案針對(duì)TPM,并且未給出芯片穩(wěn)定性測(cè)試方案。
在詳細(xì)研究 TCM協(xié)議的基礎(chǔ)上設(shè)計(jì)測(cè)試工具及測(cè)試流程,對(duì)芯片固件進(jìn)行嚴(yán)格的、量化測(cè)試,以確認(rèn)該版本芯片固件是否符合該協(xié)議,以及在多大程度上符合該協(xié)議。
TCM芯片是一個(gè)含有密碼運(yùn)算部件和存儲(chǔ)部件的小型SoC(片上系統(tǒng)),它嵌入在計(jì)算機(jī)的主板上,提供有關(guān)可信測(cè)量計(jì)算、可信測(cè)量存儲(chǔ)、信任鏈建立、可信測(cè)量報(bào)告等體現(xiàn)“可信”事件的功能,還提供密碼學(xué)操作、密鑰管理、身份標(biāo)識(shí)等應(yīng)用功能。是利用可信計(jì)算技術(shù)構(gòu)建通用的終端硬件平臺(tái),建立可信的信任鏈傳遞模式,可以增強(qiáng)計(jì)算機(jī)體系結(jié)構(gòu)的安全性[7]。
固件是TCM這個(gè)片上系統(tǒng)的單任務(wù)操作系統(tǒng)。包括初始化模塊,負(fù)責(zé)初始化芯片;單任務(wù) OS核心管理模塊,主要管理芯片和主板通信和管理芯片內(nèi)部的Flash區(qū)域的數(shù)據(jù),并提供安全算法接口等;TCM命令管理模塊,主要實(shí)現(xiàn) TCM協(xié)議功能,并且向上層TSM提供標(biāo)準(zhǔn)TCM命令接口,處理TCM命令調(diào)用請(qǐng)求。
TCM命令接口函數(shù)的參數(shù)分為非授權(quán)參數(shù)(前半部分),授權(quán)參數(shù)(后半部分)和輸出結(jié)果參數(shù)(最后一個(gè))。命令的參數(shù)沒有授權(quán)部分的稱作非授權(quán)命令,只有一個(gè)授權(quán)部分的命令稱為單授權(quán)命令,有兩個(gè)授權(quán)部分的稱為雙授權(quán)命令,如表1所示。
表1 TCM命令結(jié)構(gòu)
所有命令接口函數(shù)非授權(quán)參數(shù)的前三個(gè)參數(shù)都一樣,即,tag,paraSize和ordinal。tag是命令類型標(biāo)記,值固定, 非授權(quán)命令的 tag 值為 TCM_TAG_RQU_COMMAND;單授權(quán)命令的 tag值為:TCM_TAG_RQU_AUTH1_COMMAND;雙授權(quán)命令tag值為 TCM_TAG_RQU_AUTH2_COMMA ND;paraSize為命令長(zhǎng)度值,是包括所有授權(quán)及非授權(quán)參數(shù)的總長(zhǎng);ordinal是命令號(hào),每個(gè)命令都有自己對(duì)應(yīng)的唯一的 ordinal。其它非授權(quán)參數(shù),需要參考其數(shù)據(jù)結(jié)構(gòu),根據(jù)命令協(xié)議規(guī)范的要求,給定其中每一項(xiàng)的值。
根據(jù)以上資料及TCM規(guī)范分析,主要將對(duì)命令處理模塊進(jìn)行可靠性測(cè)試、功能性測(cè)試及穩(wěn)定性測(cè)試。
驗(yàn)證當(dāng)輸入?yún)?shù)中的某個(gè)參數(shù)值發(fā)生錯(cuò)誤,TCM能返回期望的值。還包括TCM芯片處于各個(gè)工作狀態(tài)時(shí)命令執(zhí)行情況。主要考察單個(gè)參數(shù)輸入錯(cuò)誤的情況及部分命令相互依賴情況。每一個(gè)命令接口需要覆蓋所有TCM工作狀態(tài),也就是說需要考慮 TCM在 enable/disable,owner/unowner,active/deactived等狀態(tài)下是否有效;相同命令在不同工作狀態(tài)下返回值不同。如TCM_NV_DefineSpace命令在TCM芯片處于enabled ,active,owner,狀態(tài)時(shí)如果輸入?yún)?shù)全部正確,將返回TCM_SUCCESS;如果芯片處于disabled,active,owner狀態(tài)則返回TCM_DISABLED。輸入?yún)?shù)的測(cè)試數(shù)據(jù)取值包含正向值和反向值,其中正向值應(yīng)該覆蓋所有符合條件的測(cè)試數(shù)據(jù);反向值又分有效反向值和無效反向值,有效反向值為實(shí)際存在的但不符合此參數(shù)要求的數(shù)據(jù);無效反向值是此數(shù)據(jù)本身就是無效的,此類數(shù)據(jù)取典型值。
功能性測(cè)試主要考察TCM的固件命令處理模塊的基本功能是否符合規(guī)范命令中actions的要求。一個(gè)功能的開始運(yùn)行往往依賴于另一個(gè)功能的執(zhí)行完成,例如加載密鑰的實(shí)現(xiàn)必須依賴于生成密鑰的完成[8]。通過研究actions提煉出命令之間的依賴關(guān)系,進(jìn)行測(cè)試點(diǎn)的選取及測(cè)試用例設(shè)計(jì)。TCM命令的執(zhí)行會(huì)對(duì)芯片內(nèi)部的 TCM_PERMANE NT_FLAGS及TCM_STCLEAR_FLAGS等標(biāo)志位進(jìn)行置位,后續(xù)命令在執(zhí)行時(shí)會(huì)判斷一些標(biāo)志位的狀態(tài)進(jìn)而決定做何種操作及返回何種結(jié)果。這些要求在命令 actions中都有詳細(xì)說明。例如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。
對(duì)應(yīng)測(cè)試用例設(shè)計(jì)如表2所示。
表2 TCM_NV_DefineSpace功能性測(cè)試用例
此部分用例主要用于檢驗(yàn) TCM芯片在極限條件下的工作穩(wěn)定性。如連續(xù)發(fā)送4條TCM_CreateCounter命令創(chuàng)建最多個(gè)數(shù)的計(jì)數(shù)器,4條TCM_APCreate命令建立最多個(gè)數(shù)的授權(quán)會(huì)話及發(fā)送64次TCM_NV_DefineSpace創(chuàng)建64個(gè)NV空間等。將全部測(cè)試向量以不同次序的批處理方式在多臺(tái)機(jī)器上連續(xù)運(yùn)行多天也屬穩(wěn)定性測(cè)試范疇。
圖1是測(cè)試用例的運(yùn)行過程。
表3、表4和表5分別舉例說明了可靠性、功能性及穩(wěn)定性測(cè)試的結(jié)果。
表3 可靠性測(cè)試結(jié)果舉例
表4 功能性測(cè)試結(jié)果舉例
表5 穩(wěn)定性測(cè)試結(jié)果舉例
設(shè)計(jì)一共實(shí)現(xiàn)測(cè)試用例2 400余例,在一款TCM芯片上測(cè)試表明,通過率在90 %左右,說明此款芯片固件基本符合TCM協(xié)議標(biāo)準(zhǔn)。
按照TCM國(guó)標(biāo)命令規(guī)范標(biāo)準(zhǔn)提出了一個(gè)針對(duì)某款型號(hào)的TCM芯片固件的協(xié)議符合性測(cè)試的設(shè)計(jì)方案,并且實(shí)現(xiàn)了此方案。這樣的測(cè)試方法主要是通過分析 TCM命令接口及其actions進(jìn)行測(cè)試用例設(shè)計(jì),用例覆蓋全面,檢錯(cuò)性高。適用于TCM芯片固件修改升級(jí)后的協(xié)議符合性檢測(cè)。符合性驗(yàn)證測(cè)試實(shí)施結(jié)果表明,該方案具備良好的可行性,也具備良好的檢錯(cuò)功能。今后的工作主要是對(duì)測(cè)試用例包進(jìn)行維護(hù),包括增加新的測(cè)試用例,改進(jìn)已有的用例及刪除冗余用例。
圖1 測(cè)試用例運(yùn)行過程
[1] 國(guó)家密碼管理局.可信計(jì)算密碼支撐平臺(tái)功能與接口規(guī)范[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] 朱海衛(wèi),施蕾.淺議可信計(jì)算的發(fā)展[J].信息安全與通信保密,2009(03):79-81.
[7] 李昊,馮登國(guó).可信密碼模塊符合性測(cè)試方法與實(shí)施[J].武漢大學(xué)學(xué)報(bào),2009,55(01): 31-34.
[8] 崔奇,馬楠,劉賢剛.TPM接口命令標(biāo)準(zhǔn)符合性測(cè)試的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(02):129-132.