何旺宇,王中華,李亞暉
(1.中國(guó)航空工業(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],成為國(guó)家基礎(chǔ)設(shè)施與武器裝備的重要組成部分。嵌入式計(jì)算機(jī)作為執(zhí)行命令的重要單元,容易受到信息攻擊,面臨著病毒入侵、木馬注入、內(nèi)部人員非法操作等多種安全問(wèn)題[2-4],因此,需要在平臺(tái)內(nèi)嵌入可信平臺(tái)模塊(Trusted Platform Module,TPM)或可信密碼模塊(Trusted Cryptography Module,TCM)[5-6]以保證其底層硬件環(huán)境和平臺(tái)運(yùn)行安全可信,從而實(shí)現(xiàn)可信啟動(dòng)[7-8]。然而對(duì)于多個(gè)協(xié)同工作的嵌入式計(jì)算機(jī)而言,如果在其內(nèi)部使用TCM芯片,則會(huì)造成能耗和技術(shù)管理上的問(wèn)題。TCM嵌入會(huì)導(dǎo)致計(jì)算機(jī)安全防護(hù)產(chǎn)生較大的時(shí)間與能耗開銷[6,9],模塊更新升級(jí)與后期維護(hù)也會(huì)造成人力和物力方面的負(fù)擔(dān)。此外,由于每個(gè)TCM模塊對(duì)應(yīng)多個(gè)證書和密鑰類型,因此配置多個(gè)TCM模塊會(huì)帶來(lái)證書與密鑰的生成、更新和撤銷等管理問(wèn)題[10]。
本文通過(guò)引入TCM和虛擬可信密碼模塊(Virtual Trusted Cryptography Module,VTCM),提出一種分布式可信度量方法。將多臺(tái)協(xié)同工作的嵌入式計(jì)算機(jī)構(gòu)建為工作域,將每臺(tái)嵌入式計(jì)算機(jī)作為計(jì)算節(jié)點(diǎn),選取計(jì)算節(jié)點(diǎn)嵌入TCM完成可信啟動(dòng),其他計(jì)算節(jié)點(diǎn)利用VTCM和TCM驗(yàn)證配置信息進(jìn)行分布式可信度量,從而實(shí)現(xiàn)域內(nèi)所有嵌入式平臺(tái)的可信啟動(dòng)。
近年來(lái),針對(duì)嵌入式系統(tǒng)平臺(tái)的可信啟動(dòng)問(wèn)題,國(guó)內(nèi)外學(xué)者進(jìn)行大量研究并取得一定成果。文獻(xiàn)[11]指出獨(dú)立TPM芯片不適用于資源受限的嵌入式系統(tǒng),將基于軟件的TPM放置在受保護(hù)執(zhí)行區(qū)域更合適。文獻(xiàn)[12]提出一種基于嵌入式可信模塊的嵌入式設(shè)備可信啟動(dòng)方法,在Bootloader啟動(dòng)前對(duì)通信設(shè)備進(jìn)行初始化,建立與嵌入式可信計(jì)算模塊的連接與認(rèn)證,用可信計(jì)算模塊度量Bootloader,再用其度量操作系統(tǒng)內(nèi)核。文獻(xiàn)[13]設(shè)計(jì)基于Vxworks嵌入式操作系統(tǒng)的可信平臺(tái),通過(guò)TPM完成對(duì)該系統(tǒng)可信的完整性度量,增強(qiáng)了嵌入式平臺(tái)安全性。文獻(xiàn)[14]采用雙內(nèi)核架構(gòu)建立無(wú)額外硬件的嵌入式信任根模型,在VTCM基礎(chǔ)上實(shí)現(xiàn)了FLASH+PMON+可信內(nèi)核的軟件信任根,為構(gòu)建嵌入式系統(tǒng)信任根提供可行的低成本方法。文獻(xiàn)[15]建立基于國(guó)產(chǎn)處理器的嵌入式可信平臺(tái),在不增加額外硬件的情況下,大幅提高系統(tǒng)性能。文獻(xiàn)[16]提出用于多個(gè)嵌入式系統(tǒng)完整性驗(yàn)證的架構(gòu),在數(shù)據(jù)中心等服務(wù)器站點(diǎn)獲取嵌入式系統(tǒng)代碼,通過(guò)用戶應(yīng)用程序在遠(yuǎn)程站點(diǎn)對(duì)其進(jìn)行檢查,使用計(jì)算得到的散列值驗(yàn)證系統(tǒng)完整性,并顯示系統(tǒng)是否被更改,然而該方法不能保證系統(tǒng)可信啟動(dòng)。文獻(xiàn)[17]針對(duì)PDA等手持計(jì)算機(jī)系統(tǒng)提出一種安全平臺(tái)體系結(jié)構(gòu)PERSEUS,該結(jié)構(gòu)采用虛擬機(jī)實(shí)現(xiàn)不同安全級(jí)別應(yīng)用程序之間的隔離。與此類似,文獻(xiàn)[18-19]提出嵌入式Xen平臺(tái),在TPM嵌入式硬件平臺(tái)上運(yùn)行多個(gè)VTCM虛擬機(jī)實(shí)例,但基于虛擬機(jī)的體系結(jié)構(gòu)對(duì)系統(tǒng)資源要求較高,不適用于資源受限、強(qiáng)實(shí)時(shí)性的嵌入式系統(tǒng)[9]。
在上述研究中,無(wú)論用硬件還是軟件構(gòu)建嵌入式系統(tǒng)環(huán)境,均主要針對(duì)單個(gè)嵌入式系統(tǒng)平臺(tái)。關(guān)于多個(gè)協(xié)同工作的嵌入式系統(tǒng)平臺(tái)分布式可信度量,目前國(guó)內(nèi)外研究較少。因此,本文針對(duì)工作域內(nèi)多個(gè)嵌入式計(jì)算機(jī)的可信啟動(dòng)問(wèn)題,提出一種基于VTCM的分布式可信度量方法,在域內(nèi)1個(gè)可信計(jì)算節(jié)點(diǎn)嵌入TCM模塊,在其他非可信計(jì)算節(jié)點(diǎn)利用VTCM插件實(shí)現(xiàn)分布式可信度量,從而保證域內(nèi)所有嵌入式計(jì)算機(jī)安全可信。
本文利用TCM和VTCM插件完成對(duì)系統(tǒng)各計(jì)算節(jié)點(diǎn)分布式可信度量和域內(nèi)管理密鑰生成,基于VTCM的分布式可信度量過(guò)程如圖1所示。嵌入式平臺(tái)上電后,首先通過(guò)啟動(dòng)網(wǎng)絡(luò)交換機(jī)加載以太網(wǎng)驅(qū)動(dòng),為實(shí)現(xiàn)分布式可信度量提供數(shù)據(jù)傳輸通道,然后在嵌入TCM的計(jì)算節(jié)點(diǎn)完成本地系統(tǒng)平臺(tái)可信度量,同時(shí)在其他非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM插件計(jì)算操作系統(tǒng)鏡像和應(yīng)用鏡像等本地平臺(tái)操作系統(tǒng)(OS)資源的哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code,HMAC),并通過(guò)以太網(wǎng)將其發(fā)送給可信計(jì)算節(jié)點(diǎn)驗(yàn)證。在進(jìn)行可信度量過(guò)程中,TCM和每個(gè)VTCM通過(guò)信息交互生成域內(nèi)管理密鑰GK,并用于域內(nèi)不同計(jì)算節(jié)點(diǎn)管理組件之間數(shù)據(jù)傳輸,以保證域內(nèi)傳輸數(shù)據(jù)安全。
圖1 基于VTCM的分布式可信度量過(guò)程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ù)先存儲(chǔ)的HMAC進(jìn)行對(duì)比,若驗(yàn)證成功則啟動(dòng)系統(tǒng),否則將中斷系統(tǒng)啟動(dòng)并在可信計(jì)算節(jié)點(diǎn)打印錯(cuò)誤信息。
在上述流程中,VTCM作為插件嵌入到Boot引導(dǎo)程序(存放在ROM中以防止被篡改),VTCM插件主要包括網(wǎng)卡驅(qū)動(dòng)程序以及HMAC和通信3個(gè)模塊。網(wǎng)卡驅(qū)動(dòng)程序主要由初始化程序、關(guān)閉網(wǎng)絡(luò)設(shè)備程序、發(fā)送數(shù)據(jù)包程序以及接收數(shù)據(jù)包程序等組成;HMAC模塊用于系統(tǒng)和應(yīng)用鏡像的簽名值計(jì)算;通信模塊負(fù)責(zé)與TCM保持通信并監(jiān)聽上層應(yīng)用請(qǐng)求。與TPM[20-21]相比,VTCM沒(méi)有加密算法引擎、密鑰生成器以及隨機(jī)數(shù)生成器等模塊,功能較單一,可考慮在后續(xù)應(yīng)用中對(duì)其功能進(jìn)行擴(kuò)展。VTCM和TCM分布式可信度量過(guò)程如圖2所示,具體如下:
圖2 TCM和VTCM分布式可信度量過(guò)程Fig.2 TCM and VTCM distributed trusted measurement process
1)TCM和每個(gè)VTCM分別預(yù)置身份標(biāo)識(shí)(Identification,ID)和秘密信息,同時(shí)TCM存儲(chǔ)每個(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ù)置的秘密信息,其分別存儲(chǔ)在TCM和VTCM的安全空間區(qū)域內(nèi),H為哈希函數(shù)。
2)啟動(dòng)具有嵌入TCM硬件模塊的計(jì)算節(jié)點(diǎn)并完成本地系統(tǒng)平臺(tái)的可信度量。
3)非可信計(jì)算節(jié)點(diǎn)運(yùn)行VTCM插件,VTCM發(fā)送IDi到TCM。
4)TCM生成隨機(jī)數(shù)k,利用秘密值S0和對(duì)稱加密算法E(x)對(duì)k進(jìn)行加密得到ES0(k),發(fā)送ES0(k)到各VTCM。
5)VTCM對(duì)收到的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)啟動(dòng)運(yùn)行;若兩者相等則TCM生成1個(gè)隨機(jī)數(shù)r,計(jì)算SK=HMACr(S0)和ES0(r),然后發(fā)送ID0、IDi和ES0(r)到VTCM。
7)VTCM對(duì)收到的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),通過(guò)異或運(yùn)算,由結(jié)果是否為0判斷Zi與Z′i是否相等,若兩者相等則表示VTCM已成功收到r。
TCM通過(guò)對(duì)每個(gè)VTCM進(jìn)行完整性度量判斷其是否可信。VTCM根據(jù)TCM度量結(jié)果判斷是否可以安全啟動(dòng)系統(tǒng)。此外,通過(guò)TCM分發(fā)過(guò)程,VTCM安全獲得域內(nèi)管理密鑰GK=HMACr(S0)。
本文采用BAN邏輯分析對(duì)分布式可信度量方法進(jìn)行形式化證明。假設(shè)TCM是主體A,VTCM是主體B,證明過(guò)程如下:
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)過(guò)BAN邏輯形式化分析,協(xié)議預(yù)期目標(biāo)得到證明,即TCM相信其收到的配置信息HMACSi(OSi)和需要驗(yàn)證的信息Zi均為VTCM發(fā)送。
對(duì)上述TCM和VTCM分布式可信度量方法的安全性分析如下:
1)防竊聽和非法讀取
由于哈希函數(shù)的單向性以及隨機(jī)數(shù)k、r的可變性,因此即使攻擊者得到通信信息也無(wú)法從中得到IDi對(duì)應(yīng)的秘密信息Si以及用其加密的信息。
2)防假冒攻擊
TCM發(fā)送到VTCM的信息經(jīng)過(guò)加密算法加密,且加密內(nèi)容為隨機(jī)數(shù),攻擊者無(wú)法偽造TCM發(fā)送的信息ES0(k)和ES0(r)。
VTCM在第1次發(fā)送ID后,其與TCM的每次會(huì)話都會(huì)計(jì)算哈希函數(shù)值并進(jìn)行認(rèn)證,且每次認(rèn)證時(shí)會(huì)更新隨機(jī)數(shù)k和r,因此,攻擊者假冒VTCM發(fā)送的偽造信息無(wú)法通過(guò)驗(yàn)證。
3)防重放攻擊
由于協(xié)議目的是在嵌入TCM的可信計(jì)算節(jié)點(diǎn)驗(yàn)證VTCM所在計(jì)算節(jié)點(diǎn)的系統(tǒng)資源HMAC是否正確,因此應(yīng)確保攻擊者無(wú)法獲取HMAC。本文協(xié)議VTCM計(jì)算Vi=H(k⊕HMACSi(OSi)) (1≤i≤n),發(fā)送Vi給TCM,從而攻擊者就不會(huì)獲取到VTCM所計(jì)算的本地系統(tǒng)資源HMACSi(OSi),且由于每次所用k為隨機(jī)數(shù),因而即使攻擊者得到之前發(fā)送的Vi,也無(wú)法在TCM端通過(guò)驗(yàn)證,有效防止了重放攻擊。
4)防中間人攻擊
當(dāng)TCM和VTCM之間存在中間人時(shí),中間人能竊聽TCM和VTCM之間通信,還可將信息進(jìn)行篡改后發(fā)送給另外兩方。而采用本文方法即使中間人得到通信信息,也無(wú)法從中得到IDi對(duì)應(yīng)的秘密信息Si以及用其加密的信息。即使中間人篡改TCM發(fā)送的ES0(k)、ES0(r)或者VTCM發(fā)送的Vi、Zi,也無(wú)法在TCM端通過(guò)驗(yàn)證。
在11臺(tái)嵌入式開發(fā)板上對(duì)本文提出的分布式可信度量方法進(jìn)行可行性驗(yàn)證。開發(fā)板搭載P2020子卡和TPM子卡,P2020子卡包括P2020處理器、100 MHz以太網(wǎng)等對(duì)外接口,TPM子卡以Xilinx公司FPGA XC7K325TFBG676芯片為控制核心。開發(fā)板外圍包括時(shí)鐘、電源、復(fù)位、JTAG、PROM、Flash、CCM3310S電路及兩路RS232串行通信接口。TPM子卡通過(guò)SPI總線與CPU模塊進(jìn)行通信。所有開發(fā)板固化相同鏡像,鏡像大小為783 280 Byte。
在11臺(tái)嵌入式開發(fā)板中,10臺(tái)為客戶端(非可信計(jì)算節(jié)點(diǎn)),1臺(tái)為服務(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)用層對(duì)分布式可信度量的時(shí)間開銷進(jìn)行測(cè)試。測(cè)試過(guò)程如下:
1)系統(tǒng)啟動(dòng)后,VTCM和TCM建立通信連接,VTCM發(fā)送ID到TCM。
2)TCM接收到ID后生成隨機(jī)數(shù)k,對(duì)其進(jìn)行AES加密得到E(k),將E(k)發(fā)送到VTCM。
3)VTCM對(duì)收到的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)多次測(cè)試,單個(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)資源值大小對(duì)分布式可信度量與VTCM計(jì)算HMAC時(shí)間開銷的影響測(cè)試,結(jié)果如圖3所示。
圖3 系統(tǒng)資源值大小對(duì)2種方法的影響Fig.3 Influence of system resource value on two kinds of methods
由圖3可以看出,系統(tǒng)分布式可信度量時(shí)間開銷與VTCM計(jì)算得到HMAC的時(shí)間開銷均隨系統(tǒng)資源值增大而呈線性增長(zhǎng),其中,打印信息、加解密以及通信傳輸數(shù)據(jù)的時(shí)間開銷保持不變。
為測(cè)試分布式度量方法的有效性,現(xiàn)修改操作系統(tǒng)代碼中網(wǎng)卡配置信息,構(gòu)建項(xiàng)目后將可執(zhí)行文件固化進(jìn)開發(fā)板,重復(fù)上述測(cè)試步驟,得到客戶端系統(tǒng)資源HMAC如表1所示。
表1 網(wǎng)卡配置修改前后的客戶端系統(tǒng)資源HMAC對(duì)比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)證配置信息失敗,證明分布式度量方法具備有效性。
通過(guò)逐漸增加非可信計(jì)算節(jié)點(diǎn)數(shù)量,進(jìn)行非可信計(jì)算節(jié)點(diǎn)數(shù)量對(duì)分布式可信度量時(shí)間開銷的影響測(cè)試,結(jié)果如圖4所示。可以看出,隨著非可信計(jì)算節(jié)點(diǎn)數(shù)量的增加,系統(tǒng)分布式可信度量時(shí)間開銷逐漸增加。所有非可信計(jì)算節(jié)點(diǎn)固化相同系統(tǒng)鏡像并在啟動(dòng)過(guò)程中同步運(yùn)行,可信計(jì)算節(jié)點(diǎn)循環(huán)接收非可信計(jì)算節(jié)點(diǎn)連接請(qǐng)求,建立連接后開辟新線程,并與相應(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)并行通過(guò)可信度量驗(yàn)證并啟動(dòng),TCM端驗(yàn)證1個(gè)非可信計(jì)算節(jié)點(diǎn)系統(tǒng)資源值時(shí)間約為30 ms,完成整個(gè)分布式可信度量過(guò)程時(shí)間開銷為707 ms。因此,本文提出的分布式可信度量方法具有嵌入式系統(tǒng)環(huán)境下多個(gè)計(jì)算節(jié)點(diǎn)安全啟動(dòng)的可行性。
圖4 非可信計(jì)算節(jié)點(diǎn)數(shù)量對(duì)分布式可信度量時(shí)間開銷的影響Fig.4 Influence of the number of non trusted computing nodes on the time cost of distributed trusted measurement
本文提出一種基于VTCM的分布式可信度量方法。對(duì)已安裝TCM的嵌入式計(jì)算機(jī)進(jìn)行可信度量,在非可信計(jì)算機(jī)上運(yùn)行VTCM計(jì)算得到HMAC并發(fā)送給TCM,由TCM將該HMAC與預(yù)先存儲(chǔ)的相應(yīng)HMAC進(jìn)行對(duì)比,若驗(yàn)證成功則啟動(dòng)操作系統(tǒng),否則中斷系統(tǒng)啟動(dòng)。實(shí)驗(yàn)結(jié)果表明,該方法滿足嵌入式計(jì)算機(jī)可信啟動(dòng)過(guò)程中的機(jī)密性和安全性要求。后續(xù)將在機(jī)載嵌入式平臺(tái)上設(shè)計(jì)和實(shí)現(xiàn)VTCM插件功能,進(jìn)一步對(duì)本文提出的分布式可信度量方法進(jìn)行研究,以實(shí)現(xiàn)單個(gè)TCM下多臺(tái)嵌入式計(jì)算機(jī)的可信啟動(dòng)。