◆趙 進 武宗濤
(海軍計算技術研究所 北京 100841)
基于可信固件的軟件分發系統研究與設計
◆趙 進 武宗濤
(海軍計算技術研究所 北京 100841)
內網環境下計算機終端部署著大量工作軟件,必須進行嚴格的管控保證軟件安裝和更新。傳統機制是基于操作系統部署軟件維護程序,實現對終端工作軟件安裝和更新等管理。這種方式下維護軟件運行于操作系統之上,容易被卸載和中止。本文基于可信固件研究設計了在終端可信固件層部署軟件分發系統,實現軟件分發功能。該系統能夠保證計算機在上電開機及操作系統啟動后根據策略,對工作軟件進行安裝、完整性檢測及更新。
可信固件;軟件;分發系統;設計
內網環境下,計算機終端運行著大量軟件程序,創建和存放著重要數據,必須進行嚴格的管理,以保證終端軟件及時安裝和更新[1]。隨著信息化進程的快速發展,內網信息安全防護已經逐步由核心與主干的防護,轉向網絡內部的每一個終端的防護[2]。因此,對內網環境下計算機終端進行統一的軟件更新和維護成為亟待解決的問題。
傳統的終端軟件維護方法是在操作系統中安裝和運行特定的軟件維護程序,實現對終端軟件安裝和更新的管控[3]。但是,這種安全軟件運行于操作系統之上,容易被用戶卸載和中止。另一方面,當內網終端重裝系統或更換硬盤后,需要重新安裝大量軟件,才能重建用戶所需的計算環境[4][5]。
在國際上,可信計算是由可信計算組織(Trusted Computing Group,TCG)進行推動和開發,基本的思路是在計算機主板上配備“信任根”(可信密碼芯片)。該信任根的可信性由物理安全和管理安全確保;通過該信任根構建信任鏈,能夠建立從信任根到硬件平臺,從硬件平臺到操作系統,從操作系統到應用的認證,把信任擴展到整個可信計算領域。
固件是計算機中不可缺少的重要部件,是連接計算機基礎硬件和系統軟件的橋梁。在可信計算機系統中的固件,稱之為可信固件[8]。計算機開機后,可信密碼芯片首先會對可信固件進行主動的可信度量,保證固件的完整性。在此基礎上,固件會對計算機的關鍵硬件和核心軟件進行度量,保證硬件不被替換、系統軟件不被篡改。同時,固件能夠直接對操作系統中的特定路徑和文件進行操作,包括查看、修改、刪除。因此,如果在固件中部署可以在系統中自動運行的軟件分發客戶端,將能夠保證用戶計算機方便、快捷、可靠地進行軟件更新[6]。
本文第一節研究設計了基于可信固件的軟件分發系統總體架構;第二節研究設計了軟件分發系統服務器功能;第三節研究設計了軟件分發客戶端功能;第四節介紹了軟件分發系統工作流程;第五節對全文進行了總結。
基于可信固件的軟件分發系統主要包括軟件分發服務器和內網終端兩個部分,如圖1所示。
其中,軟件分發服務器的主要作用是各種硬件平臺、各種操作系統的內網終端進行統一軟件分發管理。軟件分發服務器與部署在可信固件中的軟件分發客戶端進行交互,實現對終端信息的自動收集、解析判斷、選擇和推送軟件、軟件自動或提示安裝。
內網環境的計算機終端需要在可信固件中部署軟件分發客戶端。在計算機終端開機后,可信固件將驗證計算機關鍵硬件和核心軟件的完整性,特別是軟件分發客戶端是否已經部署。如果軟件分發客戶端未能部署或運行,可信固件將對其進行恢復。軟件分發客戶端將收集終端的軟硬件信息,發送到軟件分發服務器。軟件分發服務器將會根據給定的安全軟件安裝策略,將適配的軟件和安裝腳本推送到終端。軟件分發客戶端將根據安裝腳本對軟件進行安裝。
圖2展示了軟件分發服務器的主要功能,包括終端身份認證服務、軟件倉庫服務、遠程軟件推送服務、終端分組管理服務、安全策略配置服務、日志記錄服務,其具體功能包括。
身份驗證服務存儲了客戶端的終端標識,并將對客戶端的身份進行驗證。計算機終端接入網絡后,能夠自動向終端管理維護系統發送硬件平臺信息,包括整機信息、CPU信息、主板序列號、BIOS信息、終端標識。這些信息一方面用于對終端進行身份認證,另一方面也會用于根據硬件平臺和操作系統對終端自動選擇合適版本。
軟件倉庫服務保存了所有終端需要安裝的軟件,每個軟件在入庫時都需要經過測試和驗證,并配套了完整性度量值、安裝和卸載腳本。
遠程軟件推送管理服務針對每臺終端或一組終端配置需要的安裝的軟件。如根據部門需求,配置相應的軟件安裝策略。
終端分組管理服務能夠將計算機終端與使用者信息進行綁定。使用者信息包括姓名、部門、編號等信息。管理員能夠根據終端類型、操作系統類型、部門、對終端進行分類,實現分組管理。
安全策略配置能夠對每臺終端或一組終端進行安全策略配置,如相應用戶的密級、權限等。
日志記錄服務能夠記錄到每一臺終端軟件安裝的狀態。如果終端出現異常,會立即向管理員報警并采取相應的安全措施。

圖2 軟件分發服務器功能
計算機終端的可信固件中除了可完成硬件初始化和操作系統引導等基本功能的固件核心鏡像外,還包括了三個部分,一是度量檢測固件模塊,二是加載安裝固件模塊,三是軟件分發客戶端,如圖3所示。
度量檢測固件模塊將在開機過程中對操作系統中是否部署軟件分發客戶端進行檢測。如果軟件分發客戶端被損壞,則進行自動恢復。
加載安裝固件模塊的主要作用是在固件開機過程中對軟件分發客戶端的軟件文件進行恢復。
軟件分發客戶端是運行在終端操作系統中的程序,能夠實時獲取終端軟硬件信息,并根據預制的安全策略,安裝軟件和更新系統補丁。客戶端由固件模塊進行持久化守護,包括軟件下載模塊、軟件安裝模塊、身份驗證模塊和策略執行模塊。
(1)軟件下載模塊用于客戶端從服務端下載軟件文件和補丁。
(2)軟件安裝模塊用于對下載的軟件和補丁進行安裝。
(3)身份驗證模塊使用終端的硬件信息,生成終端標識,用于進行身份驗證。身份驗證碼模塊還將對服務端的身份進行驗證。
(4)策略執行模塊用于執行服務端的安全策略,包括必須安裝的程序、不能安裝的程序、到期后必須卸載的軟件。

圖3 軟件分發客戶端功能
本文研究設計提出的內網終端軟件分發系統工作流程如圖4所示。
(1)開始。用戶啟動計算機。
(2)開機上電。在開機過程中,將加載持久化守護平臺的固件驅動模塊。持久化守護驅動模塊該模塊首先識別硬盤和文件系統,并檢測監控恢復子模塊是否已寫入文件系統。如果未寫入,監控恢復子模塊將被寫入文件系統。
(3)加載可信固件驅動。在操作系統啟動后,監控恢復子模塊將檢測終端管理系統客戶端是否寫入操作系統并已經啟動。
(4)檢測守護模塊。持久化守護驅動模塊該模塊首先識別硬盤和文件系統,并檢測監控恢復子模塊是否已寫入文件系統。如果未寫入,監控恢復子模塊將被寫入文件系統。
(5)客戶端執行指令。終端管理客戶端對終端進行管理完成軟件分發等功能。
(6)結束.終端安全管理系統工作流程結束。

圖4 軟件分發系統流程圖
本文研究并設計提出了基于可信固件的軟件系統分發系統,能夠在開機過程和操作系統運行過程中,通過可信固件對操作系統中的軟件分發客戶端進行保護,即使更換硬盤、格式化分區,也能夠在安全程序發生異常時進行自動恢復,實現終端中部署的軟件分發代理的持久化存在,提升系統整體的運行效率和穩定性。
[1]趙雨水,左春,楊立,楊泳.軟件發布機制體系結構研究[J].計算機工程與設計,2010.
[2]徐學洲,任聲駿.軟件更新安全解決方案研究[J].大連理工大學學報,2005.
[3]張艷.關于軟件的安全更新研究[J].計算機安全,2010.
[4]邱志聰,王飛.基于CA的安全軟件分發方案[J].計算機工程與應用,2005.
[5]蔣漪漣.應用軟件分發安裝系統的設計與實現[J].微型電腦應用,2009.
[6]楊培,吳灝,金然. BIOS安全防護技術研究[J].計算機工程與設計,2008.
[7]周振柳,李銘,翟偉斌,許榕生.基于UEFI的可信BIOS研究與實現[J].計算機工程,2008.
[8]馮登國,秦宇,汪丹,初曉博.可信計算技術研究[J].計算機研究與發展,2011.