《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于國產(chǎn)平臺的可信系統(tǒng)研究
基于國產(chǎn)平臺的可信系統(tǒng)研究
2014年微型機(jī)與應(yīng)用第21期
肖思瑩1,2,趙麗娜1,2,陳小春1,2,張 超1,2
(1.中電科技(北京)有限公司,北京 100083; 2.中國電子科技集團(tuán)公司信息化工程總體研究中心,北京 100083 )
摘要: 設(shè)計了一套基于國產(chǎn)技術(shù)的可信計算系統(tǒng)。該系統(tǒng)采用了基于龍芯處理器的計算機(jī)硬件平臺和國民技術(shù)LPC接口的可信密碼模塊(Trusted Cryptography Module,TCM),實(shí)現(xiàn)了符合UEFI標(biāo)準(zhǔn)的可信固件,完成了操作系統(tǒng)上的TCM驅(qū)動(TCM Device Driver,TDD)以及TCM服務(wù)模塊(TCM Service Module,TSM),總體實(shí)現(xiàn)了基于國產(chǎn)龍芯平臺的固件層和操作系統(tǒng)上層對國產(chǎn)可信密碼模塊及其服務(wù)模塊的支持。完成了對TDD以及TSM接口的測試,提供了TCM管理工具以實(shí)現(xiàn)對TCM的基本管理功能。
Abstract:
Key words :

  摘 要: 設(shè)計了一套基于國產(chǎn)技術(shù)的可信計算系統(tǒng)。該系統(tǒng)采用了基于龍芯處理器的計算機(jī)硬件平臺和國民技術(shù)LPC接口的可信密碼模塊(Trusted Cryptography Module,TCM),實(shí)現(xiàn)了符合UEFI標(biāo)準(zhǔn)的可信固件,完成了操作系統(tǒng)上的TCM驅(qū)動(TCM Device Driver,TDD)以及TCM服務(wù)模塊(TCM Service Module,TSM),總體實(shí)現(xiàn)了基于國產(chǎn)龍芯平臺的固件層和操作系統(tǒng)上層對國產(chǎn)可信密碼模塊及其服務(wù)模塊的支持。完成了對TDD以及TSM接口的測試,提供了TCM管理工具以實(shí)現(xiàn)對TCM的基本管理功能。

  關(guān)鍵詞:可信計算;龍芯;可信密碼模塊;可信固件;可信服務(wù)模塊

0 引言

  國際上主流的可信計算平臺是基于X86處理器與TPM芯片,符合TCG規(guī)范的軟硬件系統(tǒng)。由于TPM芯片內(nèi)一般存儲與密鑰相關(guān)的重要敏感信息,若我國直接采用則會有重要信息被他人掌握的風(fēng)險,因此可信計算系統(tǒng)的國產(chǎn)化應(yīng)用成為必須。

  參考文獻(xiàn)[1]中提出的可信計算機(jī)制是基于TPM芯片的,參考文獻(xiàn)[2]中的兼容方案是基于虛擬TCM進(jìn)行驗證的,參考文獻(xiàn)[3]~[8]中的可信軟件棧都是基于TPM或者在X86平臺實(shí)現(xiàn)的。參考文獻(xiàn)[9]對比了TCM控制模塊與TPM模塊的不同之處,參考文獻(xiàn)[10]中研究的可信技術(shù)是基于嵌入式平臺的,參考文獻(xiàn)[11]中的UEFI BIOS也是基于TPM,并在X86平臺上實(shí)現(xiàn)的。

  而本文采用基于國產(chǎn)龍芯3A處理器的主板TCM芯片以及中標(biāo)麒麟操作系統(tǒng)構(gòu)建可信終端基礎(chǔ)系統(tǒng),并在此之上開發(fā)了國產(chǎn)可信固件和操作系統(tǒng)上層的可信服務(wù)模塊,實(shí)現(xiàn)了完整的國產(chǎn)可信計算平臺。龍芯平臺不同于X86平臺,它是基于MIPS架構(gòu)的處理器,采用精簡指令集并擴(kuò)展了龍芯指令集。TPM芯片使用RSA作為加密算法及簽名算法,使用SHA1作為摘要算法。而TCM使用SMS4作為加密算法,使用SM2作為簽名算法,摘要算法則采用256位的SM3算法。操作系統(tǒng)方面大多數(shù)政企使用Windows系統(tǒng),如今政府對國外操作系統(tǒng)的限制采購,為國產(chǎn)操作系統(tǒng)創(chuàng)造了良好的契機(jī)并為TCM的廣泛使用打下基礎(chǔ)。

1 國產(chǎn)可信系統(tǒng)架構(gòu)設(shè)計

  國產(chǎn)可信計算平臺主板由龍芯3A處理器、AMD RS780E北橋、SB710南橋、RTL8111DL千兆網(wǎng)卡等構(gòu)成,集成了豐富的通用接口,采用標(biāo)準(zhǔn)ATX尺寸。

  本系統(tǒng)采用國民技術(shù)研發(fā)的LPC接口的TCM芯片。TCM芯片是可信計算的基礎(chǔ),支持信任鏈建立、可信度量等功能的實(shí)現(xiàn),增強(qiáng)了計算機(jī)的安全性。

  本文實(shí)現(xiàn)的可信固件支持龍芯國產(chǎn)處理器,具有圖形化用戶配置界面。它不僅用于初始化硬件設(shè)備,安裝及引導(dǎo)操作系統(tǒng),提供硬件設(shè)備的調(diào)試診斷等功能,還以TCM為基礎(chǔ),在硬件、固件和軟件之間構(gòu)建信任鏈,實(shí)現(xiàn)可信計算功能。此可信固件包括CPU代碼、芯片組代碼、設(shè)備代碼等基礎(chǔ)功能代碼,實(shí)現(xiàn)了可信度量、TCM驅(qū)動接口和TCM配置管理等可信功能模塊。

  在操作系統(tǒng)階段,TCM系統(tǒng)驅(qū)動以模塊形式載入并直接與TCM芯片進(jìn)行通信,其主要完成對TCM芯片的驅(qū)動和管理等功能,并向上層服務(wù)模塊提供訪問接口。

  TCM服務(wù)模塊是基于TCM的操作系統(tǒng)上層軟件模塊,為應(yīng)用軟件提供訪問TCM的軟件接口[1]。TSM通過調(diào)用TCM系統(tǒng)驅(qū)動對TCM資源進(jìn)行分配并向上層應(yīng)用提供接口??尚沤K端體系架構(gòu)如圖1所示。

001.jpg

2 TCM支持

  2.1 TCM的功能與架構(gòu)

  TCM是可信計算平臺的硬件模塊,為可信計算平臺提供密碼運(yùn)算功能,具有受保護(hù)的存儲空間[2]。TCM芯片提供了加密解密、數(shù)字簽名、摘要值計算、消息驗證碼計算等功能,并向固件層、操作系統(tǒng)等提供安全支持,實(shí)現(xiàn)安全存儲、完整性度量、可信報告等功能。

  TCM的封裝形式分為直插式和嵌入式,其邏輯組成部分包括:輸入輸出接口、SMS4引擎、SM2引擎、SM3引擎、隨機(jī)數(shù)產(chǎn)生器、HMAC引擎、易失存儲、非易失存儲、PCR寄存器[2]。

  2.2 TCM驅(qū)動的設(shè)計與實(shí)現(xiàn)

  TCM驅(qū)動分為固件層的驅(qū)動和操作系統(tǒng)層的驅(qū)動。

  TCM的固件層驅(qū)動符合UEFI規(guī)范,是非驅(qū)動模型類驅(qū)動,分為驅(qū)動層和接口層,發(fā)布了兩個協(xié)議。驅(qū)動層實(shí)現(xiàn)TCM的初始化、使能/禁止、數(shù)據(jù)傳遞等,接口層是為了屏蔽TCM硬件差異,通過調(diào)用驅(qū)動層的協(xié)議為固件的可信功能模塊提供訪問TCM的軟件接口。

  TCM的系統(tǒng)驅(qū)動為模塊化驅(qū)動,設(shè)計為PNP方式注冊,主要完成對TCM的初始化、使能管理以及數(shù)據(jù)收發(fā)等功能。它通過接收來自TCM設(shè)備驅(qū)動庫(TCM Device Driver Lib,TDDL)的字節(jié)流并發(fā)送給TCM芯片,實(shí)現(xiàn)為TCM服務(wù)模塊中的可信功能模塊提供訪問TCM的接口,完成可信度量、存儲度量結(jié)果等功能。

  系統(tǒng)內(nèi)核應(yīng)配置為支持模塊化的驅(qū)動,另需修改內(nèi)核drivers/char/目錄下的Kconfig文件,使得當(dāng)Linux配置內(nèi)核時,能夠?qū)CM驅(qū)動進(jìn)行配置。

  source "drivers/char/tcmdV1.1/Kconfig"

  修改內(nèi)核drivers/char目錄下Makefile文件,增加驅(qū)動目標(biāo)文件,用于生成tcm.ko和tcm_tis.ko模塊。

  obj-$(CONFIG_TCG_TCM)+=tcmdV1.1/

  編譯系統(tǒng)內(nèi)核時,TCM驅(qū)動即可同時編譯生成可加載的模塊。

3 可信固件的設(shè)計與實(shí)現(xiàn)

  本文實(shí)現(xiàn)的可信固件采用C語言開發(fā),符合UEFI規(guī)范,高度模塊化,具有高可擴(kuò)展性。它的啟動過程分為4個階段,其基礎(chǔ)功能的啟動和工作流程如圖2所示。

002.jpg

  可信計算的功能包括身份認(rèn)證、可信度量、配置管理等??尚殴碳慕Y(jié)構(gòu)上設(shè)計為兩大模塊:Stage1和Stage2。其中Stage1負(fù)責(zé)最小可用硬件平臺的初始化,實(shí)現(xiàn)TCM在此階段的驅(qū)動以及可信度量所需要的接口。Stage1對Stage2進(jìn)行完整性度量后將控制權(quán)交給Stage2。

  Stage2實(shí)現(xiàn)了基礎(chǔ)UEFI BIOS的驅(qū)動分發(fā)及啟動操作系統(tǒng)的工作,并完成了TCM在此階段的驅(qū)動以及可信度量所需要的接口,還實(shí)現(xiàn)了TCM配置管理的功能模塊。在這一階段還可以實(shí)現(xiàn)對硬件設(shè)備、操作系統(tǒng)文件的度量。Stage2完成對OS Loader和重要文件的完整性度量后,將控制權(quán)交給OS Loader引導(dǎo)操作系統(tǒng),BIOS啟動階段的信任鏈傳遞過程就結(jié)束了。

  固件中的所有可信計算相關(guān)的功能必須由TCM來提供支持,TCM的驅(qū)動接口分別用于在Stage1階段和Stage2階段對TCM進(jìn)行訪問。

  最終實(shí)現(xiàn)的可信固件的配置功能有對用戶、TCM開關(guān)、TCM度量等的管理。

4 服務(wù)模塊的設(shè)計與實(shí)現(xiàn)

  TSM是在操作系統(tǒng)上層為支持TCM提供基本資源的主要模塊,通過調(diào)用TCM接口實(shí)現(xiàn)可信計算功能,如提供TCM的同時存取,管理TCM資源,并在適當(dāng)?shù)臅r候釋放TCM資源[3-4]。

003.jpg

  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ū)動庫

  TDDL提供一個標(biāo)準(zhǔn)接口,常駐用戶模式,并通過調(diào)用TCM設(shè)備驅(qū)動與TCM芯片交互。此模塊提供了密鑰管理等簡單的功能來管理有限的TCM資源。由于TCM每次只能處理一個進(jìn)程,來自上層的服務(wù)都需通過TDDL向TCM發(fā)送請求,TDDL可將多任務(wù)進(jìn)行單線程化。

  4.2 TSM核心服務(wù)

  TCS提供線程用以訪問TCM,TCS允許多線程訪問。經(jīng)TCS轉(zhuǎn)換為TCM可以識別的字節(jié)流后,可實(shí)現(xiàn)上層應(yīng)用與TCM的通信。TCS各組成部分的作用詳見表1。

004.jpg

  TCS一般作為一個系統(tǒng)進(jìn)程存在,可以提供服務(wù)給多個TSP。如果進(jìn)程未開啟時有來自TSP的請求則會返回通信錯誤。如果多個TSP都基于同一個平臺,則TCS保證它們都將得到相同的服務(wù)。

  4.3 TSM服務(wù)提供者

  TSP是TSM最上層的模塊,上層應(yīng)用通過訪問TSP的接口來獲得TCM的資源和功能,應(yīng)用程序在調(diào)用時需先創(chuàng)建各個類的工作對象。TSP各類接口的作用詳見表2。

005.jpg

5 系統(tǒng)測試與分析

  5.1 系統(tǒng)集成

  在國產(chǎn)硬件平臺上配置本文開發(fā)的可信固件和支持模塊開發(fā)的中標(biāo)麒麟操作系統(tǒng)。在操作系統(tǒng)上安裝本文設(shè)計實(shí)現(xiàn)的TCM驅(qū)動以及TCM服務(wù)模塊,進(jìn)行系統(tǒng)測試。

  加載TCM驅(qū)動后運(yùn)行OS層的TCM管理工具,圖4、圖5分別是管理工具加載TCM驅(qū)動和啟動Tcsd的運(yùn)行界面。

  5.2 可信固件測試與分析

  加入可信功能模塊的固件在其設(shè)置選項中可使能TCM或禁止TCM,使能TCM后會對BIOS、硬件外設(shè)、OS核心文件進(jìn)行度量,在不同情形下固件啟動時間如表3所示。

008.jpg

  因為對五類設(shè)備度量失敗后操作人員的反應(yīng)時間大約為1 s,所以度量失敗的情況比度量成功多出近5 s。根據(jù)參考文獻(xiàn)[10]給出的數(shù)據(jù),在X86平臺下,關(guān)閉可信測量的固件啟動時間為29 s,而國產(chǎn)平臺下關(guān)閉可信功能后的啟動時間為13.5 s,優(yōu)于X86平臺。

  5.3 驅(qū)動測試與分析

  加載驅(qū)動模塊TDD后,對TCM指令進(jìn)行測試,運(yùn)行測試程序測試TCM自檢、TCM使能、獲取TCM屬性信息等命令,結(jié)果如表4所示。

009.jpg

  以TCM自檢為例,發(fā)送數(shù)據(jù)中0x0 0xc1表示發(fā)送標(biāo)志位,0x0 0x00x0 0xa表示發(fā)送數(shù)據(jù)長度,為10 B,0x0 0x0 0x80 0x50表示自檢命令碼。接收到的數(shù)據(jù)中0x0 0xc4表示接收數(shù)據(jù)位,0x0 0x00x0 0xa表示接收數(shù)據(jù)長度,0x0 0x00x00x0表示自檢成功。

  5.4 TCM管理

  本文完成固件層與OS層的TCM管理工具并實(shí)現(xiàn)TCM啟動、自檢、使能禁止等管理功能。

  表5、表6分別是讀取PCR、TCM管理功能執(zhí)行結(jié)果。

010.jpg

  5.5 服務(wù)模塊測試與分析

  使用TSM接口的測試工具,對各類TSPI進(jìn)行測試。部分接口測試結(jié)果如表7所示。

011.jpg

  表7給出了獲取PCR值、設(shè)置PCR值、選擇PCR索引號接口的測試結(jié)果,返回結(jié)果為成功。

6 結(jié)束語

  本文構(gòu)建了基于國產(chǎn)龍芯CPU、國民技術(shù)TCM硬件平臺的可信系統(tǒng),開發(fā)了固件中的可信功能模塊,實(shí)現(xiàn)了支持國產(chǎn)平臺的操作系統(tǒng)上層TCM驅(qū)動、TCM服務(wù)模塊、TCM管理工具以及TSM測試工具,實(shí)現(xiàn)了從固件層到操作系統(tǒng)上層的可信鏈的傳遞,有效地保證了平臺硬件及相關(guān)系統(tǒng)軟件的安全可信性,為國產(chǎn)可信系統(tǒng)的研究與實(shí)現(xiàn)提供了一定的參考經(jīng)驗。

參考文獻(xiàn)

  [1] 羅捷,嚴(yán)飛,余發(fā)江,等. 可信計算平臺模塊密碼機(jī)制研究[J].計算機(jī)應(yīng)用, 2008,28(8):1907-1915.

  [2] 張興,黃寧宇,祝璐. 可信密碼模塊軟件棧兼容方案設(shè)計[J]. 武漢大學(xué)學(xué)報, 2010,25(5):618-621.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。