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