王效武,劉 英,閆 石
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
隨著互聯(lián)網(wǎng)的快速普及和發(fā)展,網(wǎng)絡(luò)安全的形勢與挑戰(zhàn)也日益嚴(yán)峻。安全隱私認(rèn)知調(diào)查統(tǒng)計,有92.5%的用戶會把隱私放在手機(jī)或個人電腦中,因此手機(jī)或電腦成為泄漏人們隱私的手雷。
如何主動防御,保護(hù)個人隱私、知識產(chǎn)權(quán)、商業(yè)機(jī)密乃至國家安全,阻擋泄密之矛,需要主動防御的可信計算之盾。在完善網(wǎng)絡(luò)安全法的同時,需積極加快安全可信關(guān)鍵技術(shù)的攻關(guān)與應(yīng)用推廣[1]。
2005 年12 月,在沈昌祥院士倡導(dǎo)下,我國可信芯片、可信計算產(chǎn)品的相關(guān)廠商和科研機(jī)構(gòu)成立了“可信計算密碼支撐平臺聯(lián)合工作組”。近年來,國家973 計劃、國家自然科學(xué)基金、相關(guān)部委科研基金等國家有關(guān)基金大力支持,可信計算技術(shù)在信息系統(tǒng)安全保護(hù)建設(shè)中得到了應(yīng)用與實踐。例如,在我國信息系統(tǒng)等級保護(hù)建設(shè)、重要信息系統(tǒng)安全改造中,可信計算技術(shù)和產(chǎn)品對構(gòu)建高安全等級信息系統(tǒng)發(fā)揮了重要的可信保障作用[2]。
目前,可信技術(shù)已應(yīng)用于個人計算機(jī)、手機(jī)、門禁監(jiān)控、智能電網(wǎng)[3]、信息系統(tǒng)等多個領(lǐng)域,在人們的生活、工作中得到了廣泛應(yīng)用??尚庞嬎阈湃误w系隨著技術(shù)的發(fā)展在不斷完善,尤其是關(guān)于軟件全生命周期的可信證明需要進(jìn)一步的思考。
可信計算的目標(biāo)是證明一個實體是否可信。關(guān)于什么是“可信”,可信計算組織(Trusted Computing Group,TCG)將其定義為如果一個實體的行為是以預(yù)期的方式完成預(yù)期的目標(biāo),那么該實體是可信的。從該定義可以看出,如果一個實體想要被確認(rèn)為可信的,那么它的行為需要有可控性,同時結(jié)果是可以預(yù)測的。可信計算的基本思想是先在系統(tǒng)中建立一個信任根,以這個信任根為起點(diǎn)再建立一條信任鏈,從硬件平臺、操作系統(tǒng)到應(yīng)用,通過一條信任鏈一級測量一級,一級驗證一級,把信任關(guān)系延伸至整個系統(tǒng),從而確保信息系統(tǒng)總是以預(yù)期的方式在運(yùn)行,確保整個計算機(jī)系統(tǒng)的可信。信任鏈傳遞機(jī)制如圖1 所示。
圖1 信任鏈傳遞機(jī)制
可信度量根的核心(Core Root of Trust for Measurement,CRTM)內(nèi)置于可信平臺模塊(Trusted Platform Module,TPM)[4]芯片內(nèi)部,完整性度量值也存儲于TPM 中,由TPM 為其提供物理保護(hù)。TPM 可以完成可信度量及存儲、密鑰生成、加密、簽名等功能。TPM 作為可信根是最先啟動的部件,是信任狀態(tài)傳遞的發(fā)起者,因此被系統(tǒng)默認(rèn)為可信。TPM 啟動并完成自檢,而后由CRTM 對BIOS、操作系統(tǒng)加載器進(jìn)行完整性度量,并提取平臺配置寄存器(Platform Configuration Register,PCR)中的基準(zhǔn)值進(jìn)行驗證,驗證無誤則啟動操作系統(tǒng),并對其進(jìn)行完整性驗證,然后對各應(yīng)用軟件進(jìn)行動態(tài)度量,完成信任鏈的傳遞。
計算系統(tǒng)中,應(yīng)用軟件一般較多且為最常變化的部分。應(yīng)用軟件的數(shù)量較大時,會增加TPM的負(fù)擔(dān),對系統(tǒng)的啟動時間影響較大,從而影響用戶的使用體驗。業(yè)務(wù)軟件常常需要更新?lián)Q代或新增、刪除等,處于時時變化的狀態(tài),會對信任鏈的穩(wěn)定帶來風(fēng)險,因此需要改善對業(yè)務(wù)軟件的度量方式。
可信度量值采集主要有兩個階段,分別為開通階段和使用階段。
在開通階段,設(shè)備的硬件平臺、操作系統(tǒng)已安裝完成,部分應(yīng)用軟件也已安裝完成,可信狀態(tài)還未啟用。采用完整性度量值采集工具,采集硬件、BIOS、系統(tǒng)、應(yīng)用程序的可信度量初始值,并寫入TPM的PCR 基準(zhǔn)庫中。圖2 為開通階段應(yīng)用程序的度量值采集流程[5]。
圖2 應(yīng)用軟件的度量值采集流程
在使用階段,軟件因使用需求進(jìn)行刪除、更新升級、新增等變化。軟件刪除的同時,需刪除對應(yīng)的PCR 基準(zhǔn)庫中的基準(zhǔn)值。軟件更新升級需重新采集PCR 基準(zhǔn)值,并更新基準(zhǔn)庫,流程同圖2。新增軟件采用同樣的流程采集度量基準(zhǔn)值,并在基準(zhǔn)庫中增加相應(yīng)的基準(zhǔn)值。
從采集流程分析,存在兩方面的問題。
(1)相同的軟件在不同的設(shè)備上都進(jìn)行度量值采集,軟件量較多或較復(fù)雜時,采集時間較長,可能長達(dá)幾個小時。它的工作如果由用戶來進(jìn)行,對于成千上萬的用戶而言是巨大的重復(fù)工作,且用戶體驗會很差。
(2)采集時,系統(tǒng)默認(rèn)這些應(yīng)用程序是可信的,并未對這些程序進(jìn)行安全性檢測。如果攜帶病毒、木馬、安全漏洞、非法后門等,將會對系統(tǒng)安全產(chǎn)生致命的威脅。
按照可信證明的定義:計算實體向?qū)Φ葘嶓w報告自身狀態(tài)的可信信息,以使對方驗證其狀態(tài)是否符合預(yù)期的過程。軟件全生命周期可信證明包括3個階段:(1)來源可信,即軟件的來源是可預(yù)期的;(2)加載可信,即軟件加載過程中,進(jìn)程軌跡是可預(yù)期的;(3)運(yùn)行可信,軟件運(yùn)行過程中,運(yùn)行行為是可預(yù)期的。
軟件來源可信是目前最欠缺的。軟件加載可信已有較為成熟的研究,運(yùn)行可信的證明最復(fù)雜。武漢大學(xué)提出了一種基于行為監(jiān)控的可信證明模型,通過引入行為監(jiān)控代理,對程序行為進(jìn)行度量和證明,使遠(yuǎn)程證明具備動態(tài)性。通過對系統(tǒng)進(jìn)程信息的獲取和監(jiān)視,監(jiān)控系統(tǒng)中的進(jìn)程,使行為可預(yù)見。該方法不僅監(jiān)控特定的程序,而且對所有正在運(yùn)行的程序?qū)嵤┍O(jiān)控。遠(yuǎn)程證明不只是在平臺接入時實施,在全部通信過程中也進(jìn)行動態(tài)的遠(yuǎn)程證明。然而,要驗證證明程序的行為可信性,需要在質(zhì)詢方事先存儲大量的程序行為預(yù)期信息,且不同的環(huán)境、不同的輸入程序運(yùn)行的行為也可能不同,可見這是一項異常復(fù)雜且不易實施的工作。
如果在軟件創(chuàng)建期間就規(guī)范和評測軟件的行為,并使軟件的行為不可隨意改變,那么軟件的行為就是可預(yù)期的。因此,軟件來源的可信證明是最重要的階段,也是目前急需完善的階段。
軟件源的管理需要規(guī)范化,通過對軟件測評中心、軟件認(rèn)證中心、軟件可信管維中心的建立,實現(xiàn)對軟件“創(chuàng)建-采集-認(rèn)證-使用”全過程的可信管控。它的可信管控模型如圖3 所示。
模型的主要內(nèi)容如下。
①軟件廠家完成軟件的制作后,將程序、源代碼及使用需求、規(guī)范性文件一起提交給軟件測評中心,申請軟件測評。
②軟件測評中心首先對使用需求、規(guī)范性文件進(jìn)行合理性審查,形成軟件測試大綱,并依據(jù)測試大綱對軟件進(jìn)行行為正確性和安全性測試,包括對源代碼的白盒測試,避免非法后門、安全漏洞、違規(guī)行為等。軟件測評中心對軟件的安全負(fù)重要責(zé)任,因此這個環(huán)節(jié)需要進(jìn)行非常專業(yè)的全面測試。
圖3 軟件源的可信管控模型
③軟件完成測評和回歸后,由軟件測評中心將程序文件、版本號及安裝使用說明提交到軟件認(rèn)證中心,申請可信認(rèn)證。
④在軟件認(rèn)證中心部署可信采集設(shè)備,對程序進(jìn)行模擬安裝和測試運(yùn)行。在此過程中進(jìn)行軟件運(yùn)行軌跡提取和度量特征值采集,并完成程序文件的簽名,生成新的文件即軟件可信表征文件。
⑤軟件認(rèn)證中心將新生成的可信表征文件發(fā)送給軟件廠家,并同時將可信證明信息同步給可信軟件管維中心。可信證明信息主要包括可信簽名證書、軟件版本號等信息。
⑥可信認(rèn)證后的軟件發(fā)送給軟件廠家后,用戶可以按需采購。如果為非贏利性軟件,軟件廠家可將軟件可信表征文件同步給可信軟件管維中心,寫入可信軟件池中。
⑦可信軟件管維中心將可信軟件及可信證明信息寫入可信軟件池中,并對外發(fā)布,提供給合法的可信計算平臺用戶下載使用。
⑧用戶獲得軟件可信表征文件后,首先到可信軟件管維中心下載可信證明信息,對軟件進(jìn)行驗簽,并提取文件中的度量基準(zhǔn)值寫入PCR 基準(zhǔn)庫,依據(jù)PCR 基準(zhǔn)值對軟件進(jìn)行度量,通過度量后軟件可正常運(yùn)行和使用。
從流程中可以看出:(1)軟件的度量特征值采集是由軟件認(rèn)證中心統(tǒng)一完成的,用戶不需要重復(fù)繁瑣的采集工作;(2)先由測評中心進(jìn)行安全認(rèn)定和行為認(rèn)定,通過測評后由測評中心直接提交到軟件認(rèn)證中心進(jìn)行統(tǒng)一簽名,一個版本一個簽名,確定軟件版本,認(rèn)可安全性和軟件行為,并保證軟件行為不可更改,為運(yùn)行可信奠定基礎(chǔ);(3)可信證明信息及可信軟件是由可信軟件管維中心公開發(fā)布的,由可信第三方進(jìn)行管理和維護(hù),較大程度提高了軟件源的可信度。
軟件可信封裝是在軟件認(rèn)證中心完成的。軟件認(rèn)證中心通過可信采集設(shè)備對程序文件進(jìn)行可信認(rèn)證。可信認(rèn)證包括軟件可信度量基準(zhǔn)值的采集和軟件的認(rèn)證簽名兩方面內(nèi)容。將采集到的進(jìn)程軌跡、度量基準(zhǔn)值及簽名數(shù)據(jù)添加到程序文件最后形成新的文件,即軟件可信表征文件,格式設(shè)計如圖4所示。
圖4 軟件可信表征格式設(shè)計
軟件可信表征由程序?qū)嶓w、版本號、進(jìn)程軌跡、度量基準(zhǔn)值和可信簽名5 個數(shù)據(jù)項組成。程序?qū)嶓w為軟件測評中心測評認(rèn)定后的程序文件;版本號為軟件版本編號,具有唯一性,與程序?qū)嶓w相對應(yīng),能體現(xiàn)創(chuàng)建時間、生產(chǎn)廠家、測評單位以及認(rèn)證單位等信息,便于用戶對照使用和歷史追溯;進(jìn)程軌跡,軟件運(yùn)行中有若干個進(jìn)程,一個進(jìn)程嵌入一個進(jìn)程,在采集階段捕捉每一個進(jìn)程及進(jìn)程邏輯關(guān)系,形成進(jìn)程軌跡;度量基準(zhǔn)值,是對程序?qū)嶓w及進(jìn)程的完整性度量,形成一系列基準(zhǔn)值,度量基準(zhǔn)值與進(jìn)程軌跡相對應(yīng);可信簽名,采用可信公鑰算法對程序?qū)嶓w、版本號、進(jìn)程軌跡、度量基準(zhǔn)值等數(shù)據(jù)項的簽名。格式說明詳見表1。
表1 軟件可信表征格式說明
基于可信表征的軟件可信度量流程,如圖5所示。
圖5 基于可信表征的軟件度量流程
①提取軟件可信表征文件和可信證明信息中的版本號進(jìn)行一致性比對,不一致則結(jié)束流程;
②提取可信證明信息中的可信簽名證書,對軟件可信表征文件進(jìn)行簽名驗簽,未通過驗簽則結(jié)束流程;
③提取軟件可信表征文件中的進(jìn)程軌跡和基準(zhǔn)值寫入PCR 基準(zhǔn)庫;
④提取軟件可信表征文件中的程序?qū)嶓w,安裝程序并執(zhí)行,通過進(jìn)程監(jiān)控工具對其進(jìn)行全程監(jiān)控,捕捉每一個釋放的進(jìn)程;
⑤通過動態(tài)度量模塊對每一個捕捉到的進(jìn)程進(jìn)行動態(tài)度量,結(jié)合PCR 基準(zhǔn)庫中的度量值和進(jìn)程軌跡進(jìn)行正確性鑒別,如果不正確終止程序的運(yùn)行;
⑥所有可信鑒別情況寫入安全審計。
基于目前可信計算信任鏈和度量基準(zhǔn)值采集流程存在的問題,提出了軟件源的可信管控模型,實現(xiàn)了軟件的安全認(rèn)定、度量基準(zhǔn)值的統(tǒng)一采集、可信第三方的集中管控,為軟件運(yùn)行可信奠定了基礎(chǔ),降低了可信度量值采集工作的復(fù)雜度,對軟件源的可信管控實施具有一定的指導(dǎo)意義。此外,進(jìn)行了軟件可信表征格式和基于可信表征的可信度量流程設(shè)計,將軟件源的可信延伸至軟件加載的可信和軟件運(yùn)行的可信,較大程度提升了軟件全生命周期的可信證明強(qiáng)度。