文/張換梅
可信密碼模塊(Trusted Cryptography Module, TCM)是基于我國自主密碼算法的另外一種形式的TPM。作為可信計算密碼支撐平臺必備的關(guān)鍵基礎(chǔ)部件,為可信計算平臺提供密碼運(yùn)算功能,具有受保護(hù)的存儲空間。TCM中與用戶相關(guān)的密鑰涉及對稱密鑰和非對稱密鑰,由于可信軟件棧TSS為TCG針對TPM所設(shè)計,只提供了一種密鑰(RSA密鑰)創(chuàng)建服務(wù)接口,對TCM同時實現(xiàn)兩種密鑰創(chuàng)建服務(wù)的兼容性有所阻礙。
在TCM中,密碼相關(guān)的部件有SMS4引擎、SM2(ECC)引擎、SM3引擎、隨機(jī)數(shù)產(chǎn)生器、HMAC引擎等,同時也提供了用于保障安全通信與授權(quán)數(shù)據(jù)驗證的密碼協(xié)議。TCM平臺密鑰采用了對稱密碼算法SMS4和非對稱密碼算法SM2(ECC)。
TCM的密鑰體系定義了五種密鑰類型。
(1)密碼模塊密鑰(EK) 非對稱密鑰,可信密碼模塊的初始密鑰,由廠商生成。
(2)平臺身份密鑰(PIK) 為256位的SM2密鑰,可信密碼模塊的身份密鑰。必須在TCM內(nèi)部生成。
(3)平臺加密密鑰(PEK)為256位的SM2密鑰,由密鑰管理中心KMC生成。
(4)存 儲 主 密 鑰(SMK),為128位SMS4對稱密鑰,用于保護(hù)平臺身份密鑰和用戶密鑰的主密鑰。只能在TCM內(nèi)部生成。
(5)用戶密鑰(User Key,UK),可以是對稱密鑰也可以是非對稱密鑰,用于實現(xiàn)用戶所需的密碼功能,包括保密性、完整性保護(hù)和身份認(rèn)證等。
UK的生成通過調(diào)用TCM_CreateWrapKey來創(chuàng)建用戶密鑰,包括存儲密鑰、簽名密鑰并設(shè)置相應(yīng)的授權(quán)數(shù)據(jù)。
但TCM同時支持非對稱算法SM2與對稱算法SMS4。TCM的一次服務(wù)響應(yīng)只能根據(jù)用戶需求創(chuàng)建一種密鑰。TCM可以根據(jù)用戶的需求生成兩種密鑰:使用SM2算法產(chǎn)生非對稱密鑰,然后用父密鑰加密該子密鑰進(jìn)行安全存儲;或者使用SMS4算法產(chǎn)生對稱密鑰并用父密鑰對其加密存儲。由于可信軟件棧TSS為TCG針對TPM所設(shè)計,只提供了一個密鑰創(chuàng)建服務(wù)接口,對TCM同時實現(xiàn)兩種密鑰創(chuàng)建服務(wù)的兼容性有所阻礙。針對這種情況,本文采用以下解決方案:
圖1:UK生成流程圖
在TSS重構(gòu)過程中,不添加密鑰創(chuàng)建接口,在應(yīng)用程序中增設(shè)選擇性變量Flag,執(zhí)行如下代碼:
由于密鑰創(chuàng)建的流程相對復(fù)雜,選擇性變量Flag需要傳入多個子函數(shù),需要在若干函數(shù)接口中增設(shè)接收參數(shù),更改了許多接口定義,過于復(fù)雜。采取該方案后,能夠保證TSS的上層服務(wù)接口定義基本不變,上層密鑰應(yīng)用無需做明顯改動,就可以實現(xiàn)用戶密鑰的生成功能。
在TCM中同時支持非對稱密鑰SM2和對稱密鑰SMS4兩種類型的用戶密鑰生成。本文提出一種在TSS重構(gòu)過程中,不添加密鑰創(chuàng)建接口,在應(yīng)用程序中增設(shè)選擇性變量Flag的方案,通過參數(shù)確定生成的密鑰類型,因此SMS4密鑰與SM2密鑰的生成在TSP層共用一樣的接口調(diào)用流程。圖1為兩種體系通用的密鑰生成流程圖。
表1:FC7環(huán)境下的TCM與TrouSers配置方法
圖2:CreateWrapKey在TSS層的運(yùn)行結(jié)果
圖3:CreateWrapKey在TCM Emulator內(nèi)的測試結(jié)果
圖4:文件SMS4.key存儲生成的密鑰
實驗環(huán)節(jié)仿真系統(tǒng)的模擬平臺為:Linux操作系統(tǒng),F(xiàn)edora 7版本。
TCM在本質(zhì)上是物理硬件芯片,實現(xiàn)起來具有一定的復(fù)雜性。因此在測試過程中使用可信密碼模塊TCM的模擬器TCM_emulator-0.3版本。TCM_emulator-0.3這種模擬器實現(xiàn)了可信密碼支撐平臺所定義的核心安全功能模塊,能夠滿足實驗過程中的需求。模擬器的實現(xiàn),為可信計算課題的研究提供了良好的開發(fā)和測試平臺,同時也降低了實驗成本。
對于上層可信軟件棧TSS,使用TSS_For_TCM,目的在于實現(xiàn)基于TCM設(shè)計的上層應(yīng)用可以不做修改或作少量修改而通過其使用TCM的服務(wù)。
仿真實驗思路為:加載TCM_Emulator,啟用TSS_For_TCM,運(yùn)行針對TCM設(shè)計的上層應(yīng)用,獲得應(yīng)用層、TCS層、內(nèi)核層的測試數(shù)據(jù)信息。
在Fedora 7下連接TSS_For_TCM與TCM_emulator-0.3的過程如表1所示。
圖5:CreateWrapKey在TSS層的實驗結(jié)果
圖6:CreateWrapKey在TCM Emulator內(nèi)的測試結(jié)果
圖7:文件ECC.key存儲生成的密鑰
在TPM中僅支持RSA一種類型密鑰的生成,而在TCM中則同時支持非對稱密鑰SM2和對稱密鑰SMS4兩種類型的生成。在測試過程中,先以SMS4類型密鑰的生成為例,與SM2密鑰的生成在TSP層共用一樣的接口調(diào)用流程。
(1)對稱密鑰使用SMS4密碼算法,利用CreateWrapKey命令在TSS層的運(yùn)行結(jié)果如圖2所示。
(2)對稱密鑰利用CreateWrapKey命令在TCM Emulator內(nèi)的測試結(jié)果如圖3所示。
(3)所生成的密鑰被文件SMS4.key存儲,如圖4所示。
(1)非對稱密鑰利用ECC密鑰算法,利用兩種密鑰的通用命令CreateWrapKey在TSS層的實驗結(jié)果如圖5所示。
(2)非對稱密鑰利用CreateWrapKey命令在TCM Emulator內(nèi)的測試結(jié)果如圖6所示。
(3)所生成的密鑰被文件ECC.key存儲,如圖7所示。
本文首先闡述了TCM的密鑰算法與密鑰機(jī)制,針對UK的特殊性提出了一種對兩種用戶密鑰UK的兼容性生成方案,并對生成過程設(shè)計出其流程,最后在Linux操作系統(tǒng)下利用使用可信密碼模塊TCM的模擬器TCM_emulator-0.3版本對用戶密鑰的生成過程進(jìn)行了仿真實現(xiàn)。