何旺宇,王中華,李亞暉
(1.中國航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所,西安 710065; 2.機(jī)載彈載計(jì)算機(jī)航空科技重點(diǎn)實(shí)驗(yàn)室,西安 710068)
隨著信息技術(shù)的高速發(fā)展,嵌入式系統(tǒng)被廣泛應(yīng)用于工業(yè)、交通、軍事以及航天等領(lǐng)域[1],成為國家基礎(chǔ)設(shè)施與武器裝備的重要組成部分。嵌入式計(jì)算機(jī)作為執(zhí)行命令的重要單元,容易受到信息攻擊,面臨著病毒入侵、木馬注入、內(nèi)部人員非法操作等多種安全問題[2-4],因此,需要在平臺內(nèi)嵌入可信平臺模塊(Trusted Platform Module,TPM)或可信密碼模塊(Trusted Cryptography Module,TCM)[5-6]以保證其底層硬件環(huán)境和平臺運(yùn)行安全可信,從而實(shí)現(xiàn)可信啟動[7-8]。然而對于多個(gè)協(xié)同工作的嵌入式計(jì)算機(jī)而言,如果在其內(nèi)部使用TCM芯片,則會造成能耗和技術(shù)管理上的問題。TCM嵌入會導(dǎo)致計(jì)算機(jī)安全防護(hù)產(chǎn)生較大的時(shí)間與能耗開銷[6,9],模塊更新升級與后期維護(hù)也會造成人力和物力方面的負(fù)擔(dān)。此外,由于每個(gè)TCM模塊對應(yīng)多個(gè)證書和密鑰類型,因此配置多個(gè)TCM模塊會帶來證書與密鑰的生成、更新和撤銷等管理問題[10]。
本文通過引入TCM和虛擬可信密碼模塊(Virtual Trusted Cryptography Module,VTCM),提出一種分布式可信度量方法。將多臺協(xié)同工作的嵌入式計(jì)算機(jī)構(gòu)建為工作域,將每臺嵌入式計(jì)算機(jī)作為計(jì)算節(jié)點(diǎn),選取計(jì)算節(jié)點(diǎn)嵌入TCM完成可信啟動,其他計(jì)算節(jié)點(diǎn)利用VTCM和TCM驗(yàn)證配置信息進(jìn)行分布式可信度量,從而實(shí)現(xiàn)域內(nèi)所有嵌入式平臺的可信啟動。
近年來,針對嵌入式系統(tǒng)平臺的可信啟動問題,國內(nèi)外學(xué)者進(jìn)行大量研究并取得一定成果。文獻(xiàn)[11]指出獨(dú)立TPM芯片不適用于資源受限的嵌入式系統(tǒng),將基于軟件的TPM放置在受保護(hù)執(zhí)行區(qū)域更合適。文獻(xiàn)[12]提出一種基于嵌入式可信模塊的嵌入式設(shè)備可信啟動方法,在Bootloader啟動前對通信設(shè)備進(jìn)行初始化,建立與嵌入式可信計(jì)算模塊的連接與認(rèn)證,用可信計(jì)算模塊度量Bootloader,再用其度量操作系統(tǒng)內(nèi)核。文獻(xiàn)[13]設(shè)計(jì)基于Vxworks嵌入式操作系統(tǒng)的可信平臺,通過TPM完成對該系統(tǒng)可信的完整性度量,增強(qiáng)了嵌入式平臺安全性。文獻(xiàn)[14]采用雙內(nèi)核架構(gòu)建立無額外硬件的嵌入式信任根模型,在VTCM基礎(chǔ)上實(shí)現(xiàn)了FLASH+PMON+可信內(nèi)核的軟件信任根,為構(gòu)建嵌入式系統(tǒng)信任根提供可行的低成本方法。文獻(xiàn)[15]建立基于國產(chǎn)處理器的嵌入式可信平臺,在不增加額外硬件的情況下,大幅提高系統(tǒng)性能。文獻(xiàn)[16]提出用于多個(gè)嵌入式系統(tǒng)完整性驗(yàn)證的架構(gòu),在數(shù)據(jù)中心等服務(wù)器站點(diǎn)獲取嵌入式系統(tǒng)代碼,通過用戶應(yīng)用程序在遠(yuǎn)程站點(diǎn)對其進(jìn)行檢查,使用計(jì)算得到的散列值驗(yàn)證系統(tǒng)完整性,并顯示系統(tǒng)是否被更改,然而該方法不能保證系統(tǒng)可信啟動。文獻(xiàn)[17]針對PDA等手持計(jì)算機(jī)系統(tǒng)提出一種安全平臺體系結(jié)構(gòu)PERSEUS,該結(jié)構(gòu)采用虛擬機(jī)實(shí)現(xiàn)不同安全級別應(yīng)用程序之間的隔離。與此類似,文獻(xiàn)[18-19]提出嵌入式Xen平臺,在TPM嵌入式硬件平臺上運(yùn)行多個(gè)VTCM虛擬機(jī)實(shí)例,但基于虛擬機(jī)的體系結(jié)構(gòu)對系統(tǒng)資源要求較高,不適用于資源受限、強(qiáng)實(shí)時(shí)性的嵌入式系統(tǒng)[9]。
在上述研究中,無論用硬件還是軟件構(gòu)建嵌入式系統(tǒng)環(huán)境,均主要針對單個(gè)嵌入式系統(tǒng)平臺。關(guān)于多個(gè)協(xié)同工作的嵌入式系統(tǒng)平臺分布式可信度量,目前國內(nèi)外研究較少。因此,本文針對工作域內(nèi)多個(gè)嵌入式計(jì)算機(jī)的可信啟動問題,提出一種基于VTCM的分布式可信度量方法,在域內(nèi)1個(gè)可信計(jì)算節(jié)點(diǎn)嵌入TCM模塊,在其他非可信計(jì)算節(jié)點(diǎn)利用VTCM插件實(shí)現(xiàn)分布式可信度量,從而保證域內(nèi)所有嵌入式計(jì)算機(jī)安全可信。
本文利用TCM和VTCM插件完成對系統(tǒng)各計(jì)算節(jié)點(diǎn)分布式可信度量和域內(nèi)管理密鑰生成,基于VTCM的分布式可信度量過程如圖1所示。嵌入式平臺上電后,首先通過啟動網(wǎng)絡(luò)交換機(jī)加載以太網(wǎng)驅(qū)動,為實(shí)現(xiàn)分布式可信度量提供數(shù)據(jù)傳輸通道,然后在嵌入TCM的計(jì)算節(jié)點(diǎn)完成本地系統(tǒng)平臺可信度量,同時(shí)在其他非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM插件計(jì)算操作系統(tǒng)鏡像和應(yīng)用鏡像等本地平臺操作系統(tǒng)(OS)資源的哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code,HMAC),并通過以太網(wǎng)將其發(fā)送給可信計(jì)算節(jié)點(diǎn)驗(yàn)證。在進(jìn)行可信度量過程中,TCM和每個(gè)VTCM通過信息交互生成域內(nèi)管理密鑰GK,并用于域內(nèi)不同計(jì)算節(jié)點(diǎn)管理組件之間數(shù)據(jù)傳輸,以保證域內(nèi)傳輸數(shù)據(jù)安全。

圖1 基于VTCM的分布式可信度量過程Fig.1 Distributed trusted measurement process based on VTCM
工作域內(nèi)嵌入式系統(tǒng)上電后,嵌入TCM的可信計(jì)算節(jié)點(diǎn)先完成本地系統(tǒng)可信度量,同時(shí)在非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM插件,計(jì)算得到本地系統(tǒng)資源HMAC并發(fā)送給TCM,由TCM將該HMAC與預(yù)先存儲的HMAC進(jìn)行對比,若驗(yàn)證成功則啟動系統(tǒng),否則將中斷系統(tǒng)啟動并在可信計(jì)算節(jié)點(diǎn)打印錯(cuò)誤信息。
在上述流程中,VTCM作為插件嵌入到Boot引導(dǎo)程序(存放在ROM中以防止被篡改),VTCM插件主要包括網(wǎng)卡驅(qū)動程序以及HMAC和通信3個(gè)模塊。網(wǎng)卡驅(qū)動程序主要由初始化程序、關(guān)閉網(wǎng)絡(luò)設(shè)備程序、發(fā)送數(shù)據(jù)包程序以及接收數(shù)據(jù)包程序等組成;HMAC模塊用于系統(tǒng)和應(yīng)用鏡像的簽名值計(jì)算;通信模塊負(fù)責(zé)與TCM保持通信并監(jiān)聽上層應(yīng)用請求。與TPM[20-21]相比,VTCM沒有加密算法引擎、密鑰生成器以及隨機(jī)數(shù)生成器等模塊,功能較單一,可考慮在后續(xù)應(yīng)用中對其功能進(jìn)行擴(kuò)展。VTCM和TCM分布式可信度量過程如圖2所示,具體如下:

圖2 TCM和VTCM分布式可信度量過程Fig.2 TCM and VTCM distributed trusted measurement process
1)TCM和每個(gè)VTCM分別預(yù)置身份標(biāo)識(Identification,ID)和秘密信息,同時(shí)TCM存儲每個(gè)VTCM預(yù)置的IDi、秘密值Si以及正確的系統(tǒng)資源值HMACSi(OSi)′,TCM的預(yù)置秘密信息為S0。其中,Si(0≤i≤n)為32位的隨機(jī)數(shù),S1~Sn為n個(gè)VTCM預(yù)置的秘密信息,其分別存儲在TCM和VTCM的安全空間區(qū)域內(nèi),H為哈希函數(shù)。
2)啟動具有嵌入TCM硬件模塊的計(jì)算節(jié)點(diǎn)并完成本地系統(tǒng)平臺的可信度量。
3)非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM插件,VTCM發(fā)送IDi到TCM。
4)TCM生成隨機(jī)數(shù)k,利用秘密值S0和對稱加密算法E(x)對k進(jìn)行加密得到ES0(k),發(fā)送ES0(k)到各VTCM。
5)VTCM對收到的ES0(k)解密后得到隨機(jī)數(shù)k,利用本地系統(tǒng)資源值和秘密信息Si計(jì)算Vi=H(k⊕HMACSi(OSi))(1≤i≤n),并發(fā)送Vi到TCM。
6)TCM計(jì)算V′i=(k⊕HMACSi(OSi)′)(1≤i≤n),再與Vi進(jìn)行異或運(yùn)算,由結(jié)果是否為0判斷Vi與V′i是否相等。若兩者不相等則返回VTCM,度量結(jié)果驗(yàn)證失敗,終止相應(yīng)非可信計(jì)算節(jié)點(diǎn)操作系統(tǒng)啟動運(yùn)行;若兩者相等則TCM生成1個(gè)隨機(jī)數(shù)r,計(jì)算SK=HMACr(S0)和ES0(r),然后發(fā)送ID0、IDi和ES0(r)到VTCM。
7)VTCM對收到的ES0(r)進(jìn)行解密后得到隨機(jī)數(shù)r,計(jì)算SK=HMACr(S0)和Zi=H(ID0‖IDi‖r‖Si),發(fā)送IDi和Zi到TCM。
8)TCM計(jì)算Z′i=H(ID0‖IDi‖r‖Si),通過異或運(yùn)算,由結(jié)果是否為0判斷Zi與Z′i是否相等,若兩者相等則表示VTCM已成功收到r。
TCM通過對每個(gè)VTCM進(jìn)行完整性度量判斷其是否可信。VTCM根據(jù)TCM度量結(jié)果判斷是否可以安全啟動系統(tǒng)。此外,通過TCM分發(fā)過程,VTCM安全獲得域內(nèi)管理密鑰GK=HMACr(S0)。
本文采用BAN邏輯分析對分布式可信度量方法進(jìn)行形式化證明。假設(shè)TCM是主體A,VTCM是主體B,證明過程如下:
1)協(xié)議形式化
消息1:A?IDi。
消息2:B?ES0(k)。
消息3:A?Vi=H(k⊕HMACSi(OSi))。
消息4:B?ID0,IDi,ES0(r)。
消息5:A?IDi,Zi=H(ID0‖IDi‖r‖Si)。
2)安全目標(biāo)
目標(biāo)1:A|≡HMACSi(OSi)。
目標(biāo)2:A|≡Zi。
3)初始假設(shè)


假設(shè)3:A|≡#(k,r)。
假設(shè)4:A|≡B|?IDi,Si,HMACSi(OSi)(1≤i≤n)。
假設(shè)5:B|≡A|?IDi,Si,HMACSi(OSi)′(1≤i≤n)。
4)分析推理及結(jié)論
(1)證明A|≡HMACSi(OSi)
由假設(shè)1和消息3以及BAN邏輯消息含義規(guī)則式[22]可以推導(dǎo)出:
A|≡B|~Vi
(1)
由假設(shè)3和新鮮規(guī)則式[22]推導(dǎo)出:
A|≡#(Vi),即A|≡#(HMACSi(OSi))
(2)
由隨機(jī)數(shù)驗(yàn)證規(guī)則式[22]推導(dǎo)出:
A|≡B|≡HMACSi(OSi)
(3)
由假設(shè)5和仲裁規(guī)則式[22]推導(dǎo)出:
A|≡HMACSi(OSi)
(4)
(2)證明A|≡Zi
由假設(shè)1、消息5以及BAN邏輯消息含義規(guī)則式推導(dǎo)出:
A|≡B|~Zi
(5)
由假設(shè)3和新鮮規(guī)則式推導(dǎo)出:
A|≡#(Zi)
(6)
由隨機(jī)數(shù)驗(yàn)證規(guī)則式推導(dǎo)出:
A|≡B|≡Zi
(7)
由假設(shè)5和仲裁規(guī)則式推導(dǎo)出:
A|≡Zi
(8)
經(jīng)過BAN邏輯形式化分析,協(xié)議預(yù)期目標(biāo)得到證明,即TCM相信其收到的配置信息HMACSi(OSi)和需要驗(yàn)證的信息Zi均為VTCM發(fā)送。
對上述TCM和VTCM分布式可信度量方法的安全性分析如下:
1)防竊聽和非法讀取
由于哈希函數(shù)的單向性以及隨機(jī)數(shù)k、r的可變性,因此即使攻擊者得到通信信息也無法從中得到IDi對應(yīng)的秘密信息Si以及用其加密的信息。
2)防假冒攻擊
TCM發(fā)送到VTCM的信息經(jīng)過加密算法加密,且加密內(nèi)容為隨機(jī)數(shù),攻擊者無法偽造TCM發(fā)送的信息ES0(k)和ES0(r)。
VTCM在第1次發(fā)送ID后,其與TCM的每次會話都會計(jì)算哈希函數(shù)值并進(jìn)行認(rèn)證,且每次認(rèn)證時(shí)會更新隨機(jī)數(shù)k和r,因此,攻擊者假冒VTCM發(fā)送的偽造信息無法通過驗(yàn)證。
3)防重放攻擊
由于協(xié)議目的是在嵌入TCM的可信計(jì)算節(jié)點(diǎn)驗(yàn)證VTCM所在計(jì)算節(jié)點(diǎn)的系統(tǒng)資源HMAC是否正確,因此應(yīng)確保攻擊者無法獲取HMAC。本文協(xié)議VTCM計(jì)算Vi=H(k⊕HMACSi(OSi)) (1≤i≤n),發(fā)送Vi給TCM,從而攻擊者就不會獲取到VTCM所計(jì)算的本地系統(tǒng)資源HMACSi(OSi),且由于每次所用k為隨機(jī)數(shù),因而即使攻擊者得到之前發(fā)送的Vi,也無法在TCM端通過驗(yàn)證,有效防止了重放攻擊。
4)防中間人攻擊
當(dāng)TCM和VTCM之間存在中間人時(shí),中間人能竊聽TCM和VTCM之間通信,還可將信息進(jìn)行篡改后發(fā)送給另外兩方。而采用本文方法即使中間人得到通信信息,也無法從中得到IDi對應(yīng)的秘密信息Si以及用其加密的信息。即使中間人篡改TCM發(fā)送的ES0(k)、ES0(r)或者VTCM發(fā)送的Vi、Zi,也無法在TCM端通過驗(yàn)證。
在11臺嵌入式開發(fā)板上對本文提出的分布式可信度量方法進(jìn)行可行性驗(yàn)證。開發(fā)板搭載P2020子卡和TPM子卡,P2020子卡包括P2020處理器、100 MHz以太網(wǎng)等對外接口,TPM子卡以Xilinx公司FPGA XC7K325TFBG676芯片為控制核心。開發(fā)板外圍包括時(shí)鐘、電源、復(fù)位、JTAG、PROM、Flash、CCM3310S電路及兩路RS232串行通信接口。TPM子卡通過SPI總線與CPU模塊進(jìn)行通信。所有開發(fā)板固化相同鏡像,鏡像大小為783 280 Byte。
在11臺嵌入式開發(fā)板中,10臺為客戶端(非可信計(jì)算節(jié)點(diǎn)),1臺為服務(wù)器(可信計(jì)算節(jié)點(diǎn)),非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM應(yīng)用,可信計(jì)算節(jié)點(diǎn)運(yùn)行TCM應(yīng)用,在應(yīng)用層對分布式可信度量的時(shí)間開銷進(jìn)行測試。測試過程如下:
1)系統(tǒng)啟動后,VTCM和TCM建立通信連接,VTCM發(fā)送ID到TCM。
2)TCM接收到ID后生成隨機(jī)數(shù)k,對其進(jìn)行AES加密得到E(k),將E(k)發(fā)送到VTCM。
3)VTCM對收到的E(k)進(jìn)行解密后得到隨機(jī)數(shù)k,利用本地系統(tǒng)資源值計(jì)算得到Vi=H(k⊕HMACSi(OSi)) (1≤i≤10),并發(fā)送Vi到TCM。
4)TCM計(jì)算V′i=(k⊕HMACSi(OSi)′) (1≤i≤10),然后再與Vi進(jìn)行異或運(yùn)算,若運(yùn)算結(jié)果為0,則在可信計(jì)算節(jié)點(diǎn)輸出VTCM驗(yàn)證成功,計(jì)算從可信計(jì)算節(jié)點(diǎn)和非可信計(jì)算節(jié)點(diǎn)開始建立通信連接到TCM驗(yàn)證成功所用時(shí)間。
經(jīng)多次測試,單個(gè)VTCM分布式可信度量平均時(shí)間開銷為574 ms,其中加解密以及通信傳輸數(shù)據(jù)時(shí)間為56 ms,計(jì)算客戶端系統(tǒng)資源HMAC時(shí)間為518 ms。將系統(tǒng)資源值大小修改為10個(gè)不同的值進(jìn)行系統(tǒng)資源值大小對分布式可信度量與VTCM計(jì)算HMAC時(shí)間開銷的影響測試,結(jié)果如圖3所示。

圖3 系統(tǒng)資源值大小對2種方法的影響Fig.3 Influence of system resource value on two kinds of methods
由圖3可以看出,系統(tǒng)分布式可信度量時(shí)間開銷與VTCM計(jì)算得到HMAC的時(shí)間開銷均隨系統(tǒng)資源值增大而呈線性增長,其中,打印信息、加解密以及通信傳輸數(shù)據(jù)的時(shí)間開銷保持不變。
為測試分布式度量方法的有效性,現(xiàn)修改操作系統(tǒng)代碼中網(wǎng)卡配置信息,構(gòu)建項(xiàng)目后將可執(zhí)行文件固化進(jìn)開發(fā)板,重復(fù)上述測試步驟,得到客戶端系統(tǒng)資源HMAC如表1所示。

表1 網(wǎng)卡配置修改前后的客戶端系統(tǒng)資源HMAC對比Table 1 Comparison of HMAC of client system resources before and after network card configuration modification
由表1可以看出,由于修改前后客戶端系統(tǒng)資源HMAC發(fā)生變化,因此修改后可信計(jì)算節(jié)點(diǎn)驗(yàn)證配置信息失敗,證明分布式度量方法具備有效性。
通過逐漸增加非可信計(jì)算節(jié)點(diǎn)數(shù)量,進(jìn)行非可信計(jì)算節(jié)點(diǎn)數(shù)量對分布式可信度量時(shí)間開銷的影響測試,結(jié)果如圖4所示。可以看出,隨著非可信計(jì)算節(jié)點(diǎn)數(shù)量的增加,系統(tǒng)分布式可信度量時(shí)間開銷逐漸增加。所有非可信計(jì)算節(jié)點(diǎn)固化相同系統(tǒng)鏡像并在啟動過程中同步運(yùn)行,可信計(jì)算節(jié)點(diǎn)循環(huán)接收非可信計(jì)算節(jié)點(diǎn)連接請求,建立連接后開辟新線程,并與相應(yīng)非可信計(jì)算節(jié)點(diǎn)進(jìn)行通信,相較單個(gè)VTCM增加了線程調(diào)度、通信以及TCM端打印輸出信息的時(shí)間開銷。在嵌入式系統(tǒng)中,通常5個(gè)~6個(gè)計(jì)算節(jié)點(diǎn)構(gòu)成1個(gè)可信的安全域。將其中1個(gè)作為可信計(jì)算節(jié)點(diǎn),其他作為非可信計(jì)算節(jié)點(diǎn),非可信計(jì)算節(jié)點(diǎn)并行通過可信度量驗(yàn)證并啟動,TCM端驗(yàn)證1個(gè)非可信計(jì)算節(jié)點(diǎn)系統(tǒng)資源值時(shí)間約為30 ms,完成整個(gè)分布式可信度量過程時(shí)間開銷為707 ms。因此,本文提出的分布式可信度量方法具有嵌入式系統(tǒng)環(huán)境下多個(gè)計(jì)算節(jié)點(diǎn)安全啟動的可行性。

圖4 非可信計(jì)算節(jié)點(diǎn)數(shù)量對分布式可信度量時(shí)間開銷的影響Fig.4 Influence of the number of non trusted computing nodes on the time cost of distributed trusted measurement
本文提出一種基于VTCM的分布式可信度量方法。對已安裝TCM的嵌入式計(jì)算機(jī)進(jìn)行可信度量,在非可信計(jì)算機(jī)上運(yùn)行VTCM計(jì)算得到HMAC并發(fā)送給TCM,由TCM將該HMAC與預(yù)先存儲的相應(yīng)HMAC進(jìn)行對比,若驗(yàn)證成功則啟動操作系統(tǒng),否則中斷系統(tǒng)啟動。實(shí)驗(yàn)結(jié)果表明,該方法滿足嵌入式計(jì)算機(jī)可信啟動過程中的機(jī)密性和安全性要求。后續(xù)將在機(jī)載嵌入式平臺上設(shè)計(jì)和實(shí)現(xiàn)VTCM插件功能,進(jìn)一步對本文提出的分布式可信度量方法進(jìn)行研究,以實(shí)現(xiàn)單個(gè)TCM下多臺嵌入式計(jì)算機(jī)的可信啟動。