摘 要: 設(shè)計(jì)了一套基于國(guó)產(chǎn)技術(shù)的可信計(jì)算系統(tǒng)。該系統(tǒng)采用了基于龍芯處理器的計(jì)算機(jī)硬件平臺(tái)和國(guó)民技術(shù)LPC接口的可信密碼模塊(Trusted Cryptography Module,TCM),實(shí)現(xiàn)了符合UEFI標(biāo)準(zhǔn)的可信固件,完成了操作系統(tǒng)上的TCM驅(qū)動(dòng)(TCM Device Driver,TDD)以及TCM服務(wù)模塊(TCM Service Module,TSM),總體實(shí)現(xiàn)了基于國(guó)產(chǎn)龍芯平臺(tái)的固件層和操作系統(tǒng)上層對(duì)國(guó)產(chǎn)可信密碼模塊及其服務(wù)模塊的支持。完成了對(duì)TDD以及TSM接口的測(cè)試,提供了TCM管理工具以實(shí)現(xiàn)對(duì)TCM的基本管理功能。
關(guān)鍵詞:可信計(jì)算;龍芯;可信密碼模塊;可信固件;可信服務(wù)模塊
0 引言
國(guó)際上主流的可信計(jì)算平臺(tái)是基于X86處理器與TPM芯片,符合TCG規(guī)范的軟硬件系統(tǒng)。由于TPM芯片內(nèi)一般存儲(chǔ)與密鑰相關(guān)的重要敏感信息,若我國(guó)直接采用則會(huì)有重要信息被他人掌握的風(fēng)險(xiǎn),因此可信計(jì)算系統(tǒng)的國(guó)產(chǎn)化應(yīng)用成為必須。
參考文獻(xiàn)[1]中提出的可信計(jì)算機(jī)制是基于TPM芯片的,參考文獻(xiàn)[2]中的兼容方案是基于虛擬TCM進(jìn)行驗(yàn)證的,參考文獻(xiàn)[3]~[8]中的可信軟件棧都是基于TPM或者在X86平臺(tái)實(shí)現(xiàn)的。參考文獻(xiàn)[9]對(duì)比了TCM控制模塊與TPM模塊的不同之處,參考文獻(xiàn)[10]中研究的可信技術(shù)是基于嵌入式平臺(tái)的,參考文獻(xiàn)[11]中的UEFI BIOS也是基于TPM,并在X86平臺(tái)上實(shí)現(xiàn)的。
而本文采用基于國(guó)產(chǎn)龍芯3A處理器的主板TCM芯片以及中標(biāo)麒麟操作系統(tǒng)構(gòu)建可信終端基礎(chǔ)系統(tǒng),并在此之上開發(fā)了國(guó)產(chǎn)可信固件和操作系統(tǒng)上層的可信服務(wù)模塊,實(shí)現(xiàn)了完整的國(guó)產(chǎn)可信計(jì)算平臺(tái)。龍芯平臺(tái)不同于X86平臺(tái),它是基于MIPS架構(gòu)的處理器,采用精簡(jiǎn)指令集并擴(kuò)展了龍芯指令集。TPM芯片使用RSA作為加密算法及簽名算法,使用SHA1作為摘要算法。而TCM使用SMS4作為加密算法,使用SM2作為簽名算法,摘要算法則采用256位的SM3算法。操作系統(tǒng)方面大多數(shù)政企使用Windows系統(tǒng),如今政府對(duì)國(guó)外操作系統(tǒng)的限制采購(gòu),為國(guó)產(chǎn)操作系統(tǒng)創(chuàng)造了良好的契機(jī)并為TCM的廣泛使用打下基礎(chǔ)。
1 國(guó)產(chǎn)可信系統(tǒng)架構(gòu)設(shè)計(jì)
國(guó)產(chǎn)可信計(jì)算平臺(tái)主板由龍芯3A處理器、AMD RS780E北橋、SB710南橋、RTL8111DL千兆網(wǎng)卡等構(gòu)成,集成了豐富的通用接口,采用標(biāo)準(zhǔn)ATX尺寸。
本系統(tǒng)采用國(guó)民技術(shù)研發(fā)的LPC接口的TCM芯片。TCM芯片是可信計(jì)算的基礎(chǔ),支持信任鏈建立、可信度量等功能的實(shí)現(xiàn),增強(qiáng)了計(jì)算機(jī)的安全性。
本文實(shí)現(xiàn)的可信固件支持龍芯國(guó)產(chǎn)處理器,具有圖形化用戶配置界面。它不僅用于初始化硬件設(shè)備,安裝及引導(dǎo)操作系統(tǒng),提供硬件設(shè)備的調(diào)試診斷等功能,還以TCM為基礎(chǔ),在硬件、固件和軟件之間構(gòu)建信任鏈,實(shí)現(xiàn)可信計(jì)算功能。此可信固件包括CPU代碼、芯片組代碼、設(shè)備代碼等基礎(chǔ)功能代碼,實(shí)現(xiàn)了可信度量、TCM驅(qū)動(dòng)接口和TCM配置管理等可信功能模塊。
在操作系統(tǒng)階段,TCM系統(tǒng)驅(qū)動(dòng)以模塊形式載入并直接與TCM芯片進(jìn)行通信,其主要完成對(duì)TCM芯片的驅(qū)動(dòng)和管理等功能,并向上層服務(wù)模塊提供訪問接口。
TCM服務(wù)模塊是基于TCM的操作系統(tǒng)上層軟件模塊,為應(yīng)用軟件提供訪問TCM的軟件接口[1]。TSM通過調(diào)用TCM系統(tǒng)驅(qū)動(dòng)對(duì)TCM資源進(jìn)行分配并向上層應(yīng)用提供接口??尚沤K端體系架構(gòu)如圖1所示。
2 TCM支持
2.1 TCM的功能與架構(gòu)
TCM是可信計(jì)算平臺(tái)的硬件模塊,為可信計(jì)算平臺(tái)提供密碼運(yùn)算功能,具有受保護(hù)的存儲(chǔ)空間[2]。TCM芯片提供了加密解密、數(shù)字簽名、摘要值計(jì)算、消息驗(yàn)證碼計(jì)算等功能,并向固件層、操作系統(tǒng)等提供安全支持,實(shí)現(xiàn)安全存儲(chǔ)、完整性度量、可信報(bào)告等功能。
TCM的封裝形式分為直插式和嵌入式,其邏輯組成部分包括:輸入輸出接口、SMS4引擎、SM2引擎、SM3引擎、隨機(jī)數(shù)產(chǎn)生器、HMAC引擎、易失存儲(chǔ)、非易失存儲(chǔ)、PCR寄存器[2]。
2.2 TCM驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)
TCM驅(qū)動(dòng)分為固件層的驅(qū)動(dòng)和操作系統(tǒng)層的驅(qū)動(dòng)。
TCM的固件層驅(qū)動(dòng)符合UEFI規(guī)范,是非驅(qū)動(dòng)模型類驅(qū)動(dòng),分為驅(qū)動(dòng)層和接口層,發(fā)布了兩個(gè)協(xié)議。驅(qū)動(dòng)層實(shí)現(xiàn)TCM的初始化、使能/禁止、數(shù)據(jù)傳遞等,接口層是為了屏蔽TCM硬件差異,通過調(diào)用驅(qū)動(dòng)層的協(xié)議為固件的可信功能模塊提供訪問TCM的軟件接口。
TCM的系統(tǒng)驅(qū)動(dòng)為模塊化驅(qū)動(dòng),設(shè)計(jì)為PNP方式注冊(cè),主要完成對(duì)TCM的初始化、使能管理以及數(shù)據(jù)收發(fā)等功能。它通過接收來(lái)自TCM設(shè)備驅(qū)動(dòng)庫(kù)(TCM Device Driver Lib,TDDL)的字節(jié)流并發(fā)送給TCM芯片,實(shí)現(xiàn)為TCM服務(wù)模塊中的可信功能模塊提供訪問TCM的接口,完成可信度量、存儲(chǔ)度量結(jié)果等功能。
系統(tǒng)內(nèi)核應(yīng)配置為支持模塊化的驅(qū)動(dòng),另需修改內(nèi)核drivers/char/目錄下的Kconfig文件,使得當(dāng)Linux配置內(nèi)核時(shí),能夠?qū)CM驅(qū)動(dòng)進(jìn)行配置。
source "drivers/char/tcmdV1.1/Kconfig"
修改內(nèi)核drivers/char目錄下Makefile文件,增加驅(qū)動(dòng)目標(biāo)文件,用于生成tcm.ko和tcm_tis.ko模塊。
obj-$(CONFIG_TCG_TCM)+=tcmdV1.1/
編譯系統(tǒng)內(nèi)核時(shí),TCM驅(qū)動(dòng)即可同時(shí)編譯生成可加載的模塊。
3 可信固件的設(shè)計(jì)與實(shí)現(xiàn)
本文實(shí)現(xiàn)的可信固件采用C語(yǔ)言開發(fā),符合UEFI規(guī)范,高度模塊化,具有高可擴(kuò)展性。它的啟動(dòng)過程分為4個(gè)階段,其基礎(chǔ)功能的啟動(dòng)和工作流程如圖2所示。
可信計(jì)算的功能包括身份認(rèn)證、可信度量、配置管理等。可信固件從結(jié)構(gòu)上設(shè)計(jì)為兩大模塊:Stage1和Stage2。其中Stage1負(fù)責(zé)最小可用硬件平臺(tái)的初始化,實(shí)現(xiàn)TCM在此階段的驅(qū)動(dòng)以及可信度量所需要的接口。Stage1對(duì)Stage2進(jìn)行完整性度量后將控制權(quán)交給Stage2。
Stage2實(shí)現(xiàn)了基礎(chǔ)UEFI BIOS的驅(qū)動(dòng)分發(fā)及啟動(dòng)操作系統(tǒng)的工作,并完成了TCM在此階段的驅(qū)動(dòng)以及可信度量所需要的接口,還實(shí)現(xiàn)了TCM配置管理的功能模塊。在這一階段還可以實(shí)現(xiàn)對(duì)硬件設(shè)備、操作系統(tǒng)文件的度量。Stage2完成對(duì)OS Loader和重要文件的完整性度量后,將控制權(quán)交給OS Loader引導(dǎo)操作系統(tǒng),BIOS啟動(dòng)階段的信任鏈傳遞過程就結(jié)束了。
固件中的所有可信計(jì)算相關(guān)的功能必須由TCM來(lái)提供支持,TCM的驅(qū)動(dòng)接口分別用于在Stage1階段和Stage2階段對(duì)TCM進(jìn)行訪問。
最終實(shí)現(xiàn)的可信固件的配置功能有對(duì)用戶、TCM開關(guān)、TCM度量等的管理。
4 服務(wù)模塊的設(shè)計(jì)與實(shí)現(xiàn)
TSM是在操作系統(tǒng)上層為支持TCM提供基本資源的主要模塊,通過調(diào)用TCM接口實(shí)現(xiàn)可信計(jì)算功能,如提供TCM的同時(shí)存取,管理TCM資源,并在適當(dāng)?shù)臅r(shí)候釋放TCM資源[3-4]。
TSM為應(yīng)用程序提供TCM功能接口,其層次結(jié)構(gòu)如圖3所示,全部運(yùn)行于用戶模式,其中TDDL、TSM核心服務(wù)(TSM Core Service,TCS)屬于系統(tǒng)進(jìn)程,TSM服務(wù)提供者(TSM Service Provider,TSP)屬于用戶進(jìn)程[5-6]。
4.1 設(shè)備驅(qū)動(dòng)庫(kù)
TDDL提供一個(gè)標(biāo)準(zhǔn)接口,常駐用戶模式,并通過調(diào)用TCM設(shè)備驅(qū)動(dòng)與TCM芯片交互。此模塊提供了密鑰管理等簡(jiǎn)單的功能來(lái)管理有限的TCM資源。由于TCM每次只能處理一個(gè)進(jìn)程,來(lái)自上層的服務(wù)都需通過TDDL向TCM發(fā)送請(qǐng)求,TDDL可將多任務(wù)進(jìn)行單線程化。
4.2 TSM核心服務(wù)
TCS提供線程用以訪問TCM,TCS允許多線程訪問。經(jīng)TCS轉(zhuǎn)換為TCM可以識(shí)別的字節(jié)流后,可實(shí)現(xiàn)上層應(yīng)用與TCM的通信。TCS各組成部分的作用詳見表1。
TCS一般作為一個(gè)系統(tǒng)進(jìn)程存在,可以提供服務(wù)給多個(gè)TSP。如果進(jìn)程未開啟時(shí)有來(lái)自TSP的請(qǐng)求則會(huì)返回通信錯(cuò)誤。如果多個(gè)TSP都基于同一個(gè)平臺(tái),則TCS保證它們都將得到相同的服務(wù)。
4.3 TSM服務(wù)提供者
TSP是TSM最上層的模塊,上層應(yīng)用通過訪問TSP的接口來(lái)獲得TCM的資源和功能,應(yīng)用程序在調(diào)用時(shí)需先創(chuàng)建各個(gè)類的工作對(duì)象。TSP各類接口的作用詳見表2。
5 系統(tǒng)測(cè)試與分析
5.1 系統(tǒng)集成
在國(guó)產(chǎn)硬件平臺(tái)上配置本文開發(fā)的可信固件和支持模塊開發(fā)的中標(biāo)麒麟操作系統(tǒng)。在操作系統(tǒng)上安裝本文設(shè)計(jì)實(shí)現(xiàn)的TCM驅(qū)動(dòng)以及TCM服務(wù)模塊,進(jìn)行系統(tǒng)測(cè)試。
加載TCM驅(qū)動(dòng)后運(yùn)行OS層的TCM管理工具,圖4、圖5分別是管理工具加載TCM驅(qū)動(dòng)和啟動(dòng)Tcsd的運(yùn)行界面。
5.2 可信固件測(cè)試與分析
加入可信功能模塊的固件在其設(shè)置選項(xiàng)中可使能TCM或禁止TCM,使能TCM后會(huì)對(duì)BIOS、硬件外設(shè)、OS核心文件進(jìn)行度量,在不同情形下固件啟動(dòng)時(shí)間如表3所示。
因?yàn)閷?duì)五類設(shè)備度量失敗后操作人員的反應(yīng)時(shí)間大約為1 s,所以度量失敗的情況比度量成功多出近5 s。根據(jù)參考文獻(xiàn)[10]給出的數(shù)據(jù),在X86平臺(tái)下,關(guān)閉可信測(cè)量的固件啟動(dòng)時(shí)間為29 s,而國(guó)產(chǎn)平臺(tái)下關(guān)閉可信功能后的啟動(dòng)時(shí)間為13.5 s,優(yōu)于X86平臺(tái)。
5.3 驅(qū)動(dòng)測(cè)試與分析
加載驅(qū)動(dòng)模塊TDD后,對(duì)TCM指令進(jìn)行測(cè)試,運(yùn)行測(cè)試程序測(cè)試TCM自檢、TCM使能、獲取TCM屬性信息等命令,結(jié)果如表4所示。
以TCM自檢為例,發(fā)送數(shù)據(jù)中0x0 0xc1表示發(fā)送標(biāo)志位,0x0 0x00x0 0xa表示發(fā)送數(shù)據(jù)長(zhǎng)度,為10 B,0x0 0x0 0x80 0x50表示自檢命令碼。接收到的數(shù)據(jù)中0x0 0xc4表示接收數(shù)據(jù)位,0x0 0x00x0 0xa表示接收數(shù)據(jù)長(zhǎng)度,0x0 0x00x00x0表示自檢成功。
5.4 TCM管理
本文完成固件層與OS層的TCM管理工具并實(shí)現(xiàn)TCM啟動(dòng)、自檢、使能禁止等管理功能。
表5、表6分別是讀取PCR、TCM管理功能執(zhí)行結(jié)果。
5.5 服務(wù)模塊測(cè)試與分析
使用TSM接口的測(cè)試工具,對(duì)各類TSPI進(jìn)行測(cè)試。部分接口測(cè)試結(jié)果如表7所示。
表7給出了獲取PCR值、設(shè)置PCR值、選擇PCR索引號(hào)接口的測(cè)試結(jié)果,返回結(jié)果為成功。
6 結(jié)束語(yǔ)
本文構(gòu)建了基于國(guó)產(chǎn)龍芯CPU、國(guó)民技術(shù)TCM硬件平臺(tái)的可信系統(tǒng),開發(fā)了固件中的可信功能模塊,實(shí)現(xiàn)了支持國(guó)產(chǎn)平臺(tái)的操作系統(tǒng)上層TCM驅(qū)動(dòng)、TCM服務(wù)模塊、TCM管理工具以及TSM測(cè)試工具,實(shí)現(xiàn)了從固件層到操作系統(tǒng)上層的可信鏈的傳遞,有效地保證了平臺(tái)硬件及相關(guān)系統(tǒng)軟件的安全可信性,為國(guó)產(chǎn)可信系統(tǒng)的研究與實(shí)現(xiàn)提供了一定的參考經(jīng)驗(yàn)。
參考文獻(xiàn)
[1] 羅捷,嚴(yán)飛,余發(fā)江,等. 可信計(jì)算平臺(tái)模塊密碼機(jī)制研究[J].計(jì)算機(jī)應(yīng)用, 2008,28(8):1907-1915.
[2] 張興,黃寧宇,祝璐. 可信密碼模塊軟件棧兼容方案設(shè)計(jì)[J]. 武漢大學(xué)學(xué)報(bào), 2010,25(5):618-621.