摘 要:在分布式計(jì)算中,一個(gè)重要的問題是如何驗(yàn)證遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的狀態(tài)。以可信計(jì)算聯(lián)盟(Trusted Computing Group)的可信平臺(tái)模塊為基礎(chǔ),提出一種安全驗(yàn)證遠(yuǎn)程計(jì)算機(jī)系統(tǒng)狀態(tài)的方法,并在Windows系統(tǒng)上實(shí)現(xiàn)。通過該遠(yuǎn)程證實(shí)系統(tǒng),遠(yuǎn)程的挑戰(zhàn)者能夠獲得證實(shí)系統(tǒng)(被驗(yàn)證的系統(tǒng))運(yùn)行時(shí)的狀態(tài)。
關(guān)鍵詞:遠(yuǎn)程證實(shí); 安全芯片; 可信平臺(tái)模塊; 可信計(jì)算
中圖分類號(hào):TP309文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2007)06-0127-02
0 引言
在分布式計(jì)算環(huán)境中,一個(gè)基礎(chǔ)問題是如何驗(yàn)證一個(gè)遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的狀態(tài),以便能夠相信它按預(yù)期的方式運(yùn)行。人們不能信任程序,因?yàn)樗梢员桓Z改;同樣的原因也不能信任操作系統(tǒng)。這是一個(gè)安全根問題[1]。
Rick Kennel和Leah H.Jamieson通過讓證實(shí)系統(tǒng)運(yùn)行特定的驗(yàn)證程序,該程序采集證實(shí)系統(tǒng)上與平臺(tái)相關(guān)的特性,使其不能被有效地模擬,得出證實(shí)系統(tǒng)的真實(shí)性[2],但他們的方法沒有驗(yàn)證證實(shí)平臺(tái)上的軟件狀態(tài)。CMU大學(xué)Arvind Seshadri實(shí)現(xiàn)了驗(yàn)證嵌入設(shè)備的方法[3],他們讓嵌入設(shè)備運(yùn)行特定的驗(yàn)證程序,該程序經(jīng)過優(yōu)化而不能被惡意地修改而不被發(fā)覺,通過驗(yàn)證程序采集的信息,驗(yàn)證嵌入式設(shè)備的狀態(tài)。上述方法沒有使用額外的硬件,但不適合PC平臺(tái)。IBM的Reiner Sialer等基于TCG規(guī)范在Linux平臺(tái)下實(shí)現(xiàn)了平臺(tái)的完整性測(cè)量[4]。
可信計(jì)算組織(TCG)定義了一套標(biāo)準(zhǔn)[5],描述怎樣取得系統(tǒng)的完整性測(cè)量值以及將測(cè)量值保存到TPM(Trusted Platform Module, 也稱安全芯片)中的方法:當(dāng)系統(tǒng)上電后,系統(tǒng)將控制權(quán)交給不變根(Boot Block),這個(gè)不變根計(jì)算BIOS的Hash值,用TPM保護(hù)計(jì)算后的Hash值作為BIOS的度量值。這個(gè)測(cè)量過程反復(fù)進(jìn)行,直到OS啟動(dòng)。不過TCG定義的可信啟動(dòng)過程僅到Boot Loader。筆者在TCG標(biāo)準(zhǔn)之上,使用安全芯片,實(shí)現(xiàn)一種讓遠(yuǎn)程挑戰(zhàn)者驗(yàn)證系統(tǒng)運(yùn)行狀態(tài)的方案。
1 問題定義、假設(shè)和威脅模型
本文的目標(biāo)是讓遠(yuǎn)程實(shí)體(挑戰(zhàn)者)能夠驗(yàn)證在另一個(gè)系統(tǒng)上的程序(證實(shí)系統(tǒng))的完整性。具體采用文件內(nèi)容的Hash值表示文件的完整性值。對(duì)文件內(nèi)容做Hash,并用Hash值驗(yàn)證文件沒有被竄改。這是一種簡(jiǎn)單、有效的方法。
1.1 完整性背景
系統(tǒng)的完整性測(cè)量不是一個(gè)新問題。Arbaugh[1]描述了一個(gè)安全啟動(dòng)操作系統(tǒng)的架構(gòu),在這種方式下只有可信系統(tǒng)能夠啟動(dòng)。Outgoing authentication[6]允許證實(shí)密碼協(xié)處理器中的軟件。這兩種方法都對(duì)客戶端環(huán)境要求太嚴(yán)格,前者只能啟動(dòng)完全可信的組件,后者一次只能在密碼協(xié)處理器中實(shí)現(xiàn)一個(gè)應(yīng)用。
隨后的研究集中在使用附加的硬件評(píng)估軟件的完整性。Hollingworth等人研究了獨(dú)立審計(jì)者(Independent auditors)[7];Dyer等人[8]和Molina等人[9]建議在主板上使用第二塊CPU監(jiān)視(monitoring)和對(duì)OS控制。Dyer等人應(yīng)用安全協(xié)處理器保護(hù)和監(jiān)視客戶端系統(tǒng)和它的網(wǎng)絡(luò)訪問。Zhang等人[10]擴(kuò)展這些思想,使用安全協(xié)處理器監(jiān)視客戶系統(tǒng)內(nèi)核的完整性。Molina等人研究了把安全協(xié)處理器作為一個(gè)獨(dú)立的審計(jì)者,它監(jiān)視主機(jī)操作系統(tǒng)的完整性。
最近的研究集中在以安全的方式度量系統(tǒng)的完整性,并能夠讓遠(yuǎn)程對(duì)方驗(yàn)證,稱為認(rèn)證啟動(dòng)(Authenticated boot)。NGSCB[11,12]依賴特殊的硬件來(lái)區(qū)分標(biāo)準(zhǔn)操作系統(tǒng)和可信系統(tǒng)。Garfikel等人[13]建立一個(gè)可信的虛擬機(jī)。虛擬機(jī)監(jiān)視器向遠(yuǎn)方認(rèn)證運(yùn)行在虛擬機(jī)上的軟件。但以上的解決方法如果應(yīng)用在PC上,就會(huì)既昂貴又要求太嚴(yán)。
1.2 假定和威脅模型
筆者假定代碼的測(cè)量足夠描述它的行為。代碼改變能夠反映在測(cè)量中,并且能夠在驗(yàn)證中加以考慮。內(nèi)核代碼加載和卸載改變也是如此。基于惡意的DMA傳輸?shù)膬?nèi)核改變不予考慮,不過配置DMA的代碼被測(cè)量和評(píng)估。同時(shí)假定證實(shí)系統(tǒng)有一個(gè)有效的證書,它綁定證實(shí)系統(tǒng)的身份公鑰AIKpub。測(cè)量數(shù)據(jù)沒有機(jī)密性要求,因此不假定測(cè)量數(shù)據(jù)是機(jī)密的。最后,完整性測(cè)量值的解釋依賴挑戰(zhàn)者。
2 遠(yuǎn)程證實(shí)構(gòu)架
本文基于安全芯片的完遠(yuǎn)程證實(shí)構(gòu)架(圖1)由測(cè)量機(jī)制、完整性挑戰(zhàn)機(jī)制和完整性驗(yàn)證機(jī)制三部分組成。測(cè)量代理、證實(shí)代理和安全芯片安裝在證實(shí)系統(tǒng)上。
(1)證實(shí)系統(tǒng)上的測(cè)量機(jī)制。決定測(cè)量什么、什么時(shí)候測(cè)量和怎樣安全地維護(hù)測(cè)量值。
(2)完整性挑戰(zhàn)機(jī)制。允許授權(quán)的挑戰(zhàn)者接收證實(shí)系統(tǒng)上的測(cè)量值,并驗(yàn)證其新鮮性和完全性。
(3)完整性驗(yàn)證機(jī)制。驗(yàn)證測(cè)量值是完全的、是否竄改的、新鮮的以及驗(yàn)證單個(gè)的測(cè)量項(xiàng)描述了代碼和配置文件。圖1 遠(yuǎn)程證實(shí)示意圖
2.1 測(cè)量機(jī)制
測(cè)量代理測(cè)量文件的Hash值,并收集組成測(cè)量列表。它代表證實(shí)系統(tǒng)的完整性歷史。測(cè)量列表的修改是不能禁止的,但能夠檢測(cè)到。TPM提供一些保護(hù)數(shù)據(jù)的寄存器,稱為PCR。它的值只能被兩個(gè)函數(shù)改變:第一個(gè)是平臺(tái)啟動(dòng)時(shí),它使所有的PCRs歸零;第二個(gè)是TPM_Extend函數(shù),它把一個(gè)160bits的數(shù)n和PCR的索引號(hào)i作為參數(shù),然后累積n和PCR[i]到當(dāng)前的內(nèi)容,即PCR[i]:=SHA1(PCR[i]||n)。PCR的這種特性,使筆者采用PCR維護(hù)測(cè)量列表的完整性。在被測(cè)量文件破壞系統(tǒng)之前,測(cè)量該文件,同時(shí)也累積到PCR之中(TPM_Extend)。這樣,在被測(cè)量軟件取得系統(tǒng)控制權(quán)前,該軟件被記錄下來(lái)。如果是惡意程序取得系統(tǒng)控制后,它太晚而不能隱藏它的存在和其在證實(shí)系統(tǒng)上的Fingerprint。
2.2 完整性挑戰(zhàn)和驗(yàn)證機(jī)制
完整性挑戰(zhàn)機(jī)制描述了挑戰(zhàn)方怎樣安全地獲得證實(shí)系統(tǒng)上的測(cè)量值。在獲得證實(shí)系統(tǒng)的測(cè)量值后,挑戰(zhàn)者只需從可信方獲取測(cè)量值進(jìn)行比較,就能知道并證實(shí)系統(tǒng)是否被修改(是否被惡意攻擊)。
完整性挑戰(zhàn)機(jī)制必須能夠防止如下攻擊:
(1)重放攻擊。一個(gè)惡意的證實(shí)系統(tǒng)能夠重放系統(tǒng)被破壞前的證實(shí)信息(測(cè)量列表+TPM聚集值)。
(2)竄改。一個(gè)惡意的證實(shí)系統(tǒng)或者一個(gè)中間攻擊者能在傳輸測(cè)量列表和TPM聚集值給挑戰(zhàn)者之前或之中時(shí),被竄改。
(3)偽造。一個(gè)惡意的證實(shí)系統(tǒng)或者一個(gè)中間攻擊者能夠用其他系統(tǒng)上的測(cè)量列表和TPM聚集值替換原始的測(cè)量列表和TPM聚集值。
為阻止這些攻擊,根據(jù)TPM的功能,筆者提出如下完整性挑戰(zhàn)協(xié)議:
(1)C:創(chuàng)建一個(gè)160bits的隨機(jī)數(shù)nonce
(2)C => AS : Req,nonce
(3a)AS : 加載AIKpriv到TPM中
(3b)AS : 檢索出Quote=sig{PCR; nonce} AIKpriv
(4a)AS : 檢索出測(cè)量列表ML
(4b)AS=> C: Res (Quote, ML)
(5a)C : 使用cert(AIKpub),驗(yàn)證sig{PCR; nonce} AIKpriv的有效性
(5b)C : 使用PCR驗(yàn)證nonce的新鮮性和測(cè)量列表ML的有效性
其中,C代表挑戰(zhàn)者,AS代表證實(shí)系統(tǒng)。步驟(1)和(2),C創(chuàng)建一個(gè)隨機(jī)的160bits nonce發(fā)送給AS,請(qǐng)求測(cè)量列表。步驟(3),AS加載AIK到TPM中,執(zhí)行TPM的Quote命令,Quote使用AIK簽名選擇的PCR和C提供的nonce。步驟(4),AS檢索出測(cè)量列表ML,然后和Quote的結(jié)果返回給挑戰(zhàn)者C。步驟(5a),C使用可信的證書(AIKpub)驗(yàn)證Quote簽名的有效性。步驟(5b),挑戰(zhàn)者C使用nonce驗(yàn)證quote的新鮮性。然后驗(yàn)證測(cè)量列表ML的有效性(沒有被竄改)。挑戰(zhàn)者使用AIK證書阻止偽造攻擊,使用TPM簽名PCR值阻止竄改攻擊,使用nonce阻止重放攻擊。在獲得真實(shí)的測(cè)量值后,挑戰(zhàn)者可以自己判斷系統(tǒng)的狀態(tài)。
3 實(shí)現(xiàn)
基于上述框架,筆者在Windows平臺(tái)上實(shí)現(xiàn)遠(yuǎn)程證實(shí)模塊。在證實(shí)系統(tǒng)上,測(cè)量代理通過文件過濾驅(qū)動(dòng)實(shí)現(xiàn),測(cè)量列表保存在內(nèi)核空間中。同時(shí)為保證證實(shí)系統(tǒng)上測(cè)量的可信性,首先修改BIOS,讓BIOS測(cè)量MBR和OS中一些關(guān)鍵模塊,這些模塊保證操作系統(tǒng)啟動(dòng)到本文的測(cè)量代理啟動(dòng)。沒有這些保證,測(cè)量代理本身就可能被竄改。測(cè)量代理啟動(dòng)后首先測(cè)量自己,然后監(jiān)控文件操作,進(jìn)行測(cè)量,并把測(cè)量結(jié)果放入測(cè)量列表。測(cè)量代理也為本機(jī)上的其他軟件提供服務(wù),它響應(yīng)請(qǐng)求,返回簽名的測(cè)量列表。應(yīng)用程序也可以調(diào)用測(cè)量代理的測(cè)量操作,把自己加入到測(cè)量列表中。
證實(shí)代理通過系統(tǒng)服務(wù)實(shí)現(xiàn),它主要實(shí)現(xiàn)完整性挑戰(zhàn)協(xié)議的內(nèi)容,并接收挑戰(zhàn)者的請(qǐng)求,執(zhí)行TPM的Quote命令,檢索出測(cè)量列表,然后把結(jié)果返回給挑戰(zhàn)者。
該證實(shí)系統(tǒng)對(duì)系統(tǒng)的影響較小,其中BIOS度量自己和MBR只需3-5s,測(cè)量代理的測(cè)量速度為50Mbps,響應(yīng)挑戰(zhàn)者時(shí)間為300ms。
4 結(jié)束語(yǔ)
本文基于可信平臺(tái)模塊設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)在Windows平臺(tái)上的證實(shí)系統(tǒng)。利用它的遠(yuǎn)程挑戰(zhàn)者可以獲得證實(shí)系統(tǒng)上的真實(shí)測(cè)量值,從而能夠得知系統(tǒng)是否被竄改、是否被攻擊。并且其對(duì)系統(tǒng)的性能影響也是很小的。
本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。