敬 軍,郝福珍,徐東華
(華北計算技術(shù)研究所,北京100083)
我國不斷加大信息技術(shù)研發(fā)和產(chǎn)業(yè)發(fā)展投入,自主信息技術(shù)發(fā)展迅速,部分自主關(guān)鍵軟硬件取得突破,功能性能已經(jīng)接近國際主流產(chǎn)品水平,并在一些領(lǐng)域推廣使用?!笆晃濉焙笃?,國家又啟動“核高基”重大科技專項,將自主信息技術(shù)和產(chǎn)業(yè)發(fā)展推上了快車道,為我國信息系統(tǒng)向自主可控發(fā)展創(chuàng)造了戰(zhàn)略機遇,同時對信息系統(tǒng)安全性也提出了更高的要求。然而,傳統(tǒng)的信息安全技術(shù)主要是采用被動防御手段,對新型的安全威脅往往無法及時發(fā)現(xiàn),帶有嚴(yán)重的滯后性,無法有效地解決國產(chǎn)自主平臺下應(yīng)用程序執(zhí)行所面臨的安全性問題。
可信計算技術(shù)[1]被認(rèn)為是最有可能從根本上解決計算機系統(tǒng)安全問題的一種方案,它采取主動防御的方式、從終端入手解決安全問題,其核心思想是:以信任根為核心(提供密碼操作和安全存儲),把核心信任根模塊(core root of trust module,CRTM)作為起點,采取基于可信平臺模塊的信任鏈傳遞技術(shù),并依靠其提供的完整性度量和驗證服務(wù),按照計算機系統(tǒng)的啟動運行過程,一級驗證一級,一級信任一級的方式,實現(xiàn)信任鏈的傳遞,構(gòu)建系統(tǒng)的可信安全狀態(tài),可以從根本上保證計算機系統(tǒng)的安全性[2-3]。
為了有效的保護(hù)國產(chǎn)平臺下應(yīng)用程序的安全性,本文根據(jù)可信計算的基本原理,在國產(chǎn)自主平臺下設(shè)計并實現(xiàn)了可信執(zhí)行環(huán)境。在分析國產(chǎn)自主平臺自身的特點與問題的基礎(chǔ)上,利用LSM[4](Linux security module)簡化可信執(zhí)行環(huán)境攔截應(yīng)用程序的實現(xiàn),運用軟硬件結(jié)合二級計算方式計算哈希值以提升可信驗證的性能,保證應(yīng)用程序執(zhí)行可信性,為國產(chǎn)自主平臺的安全可控提供了一種有效的防護(hù)性措施。
可信執(zhí)行環(huán)境,是為保護(hù)應(yīng)用程序執(zhí)行,建立在操作系統(tǒng)之上的安全環(huán)境[5]。它在應(yīng)用程序執(zhí)行前,對其進(jìn)行完整性度量,保護(hù)應(yīng)用程序執(zhí)行的可信性,實現(xiàn)信任鏈從可信操作系統(tǒng)到可信應(yīng)用程序的傳遞。其總體框架可以概括如圖1所示,主要過程為:
(1)對操作系統(tǒng)上運行的應(yīng)用程序,提取其核心組件信息內(nèi)容;然后依據(jù)提取的應(yīng)用程序的核心組件信息內(nèi)容,建立維護(hù)可信文件列表,并通過硬件信任根模塊對可信文件列表進(jìn)行存儲保護(hù)。
(2)在應(yīng)用程序啟動運行時,可信執(zhí)行環(huán)境可以截獲其啟動消息,完成對其運行的攔截,依據(jù)可信文件列表對應(yīng)用程序進(jìn)行完整性度量,判斷應(yīng)用程序是否處于可信狀態(tài)。
(3)根據(jù)應(yīng)用程序是否處于可信狀態(tài),執(zhí)行不同的處理:如果處于可信狀態(tài),則允許應(yīng)用程序執(zhí)行;如果處于不可信狀態(tài),則利用可信備份文件對應(yīng)用程序進(jìn)行恢復(fù)。
國產(chǎn)自主平臺下可信執(zhí)行環(huán)境,在硬件方面以國產(chǎn)可信密碼模塊(trusted cryptography module,TCM)[6]為基礎(chǔ),通過TCM服務(wù)模塊(tcm service module,TSM)向上提供的可信服務(wù),保證可信驗證的各項操作。整個可信執(zhí)行環(huán)境可以分為3個主要的功能模塊:可信攔截模塊、可信監(jiān)控驗證模塊和可信配置管理模塊,如圖2所示。
1.2.1 可信攔截模塊
可信攔截模塊的主要功能是對應(yīng)用程序的啟動進(jìn)行自動攔截,提取應(yīng)用程序的核心組件信息作為可信驗證的數(shù)據(jù)。
在國產(chǎn)操作系統(tǒng)下,對應(yīng)用程序進(jìn)行攔截一般有兩種方案,一種是直接修改系統(tǒng)調(diào)用函數(shù),這種方法需要修改大量的內(nèi)核代碼,容易造成內(nèi)核代碼的混亂,可能導(dǎo)致操作系統(tǒng)運行的不穩(wěn)定,影響用戶正常使用;另一種是利用LSM這種通用訪問控制框架,它在特定的內(nèi)核數(shù)據(jù)結(jié)構(gòu)中加入了安全字段,用于存放安全屬性,并在內(nèi)核源代碼中的關(guān)鍵點插入了安全鉤子函數(shù)[7-9],只需要重載LSM框架在應(yīng)用程序執(zhí)行時插入的HOOK函數(shù),便可以實現(xiàn)應(yīng)用程序的攔截。為了降低對操作系統(tǒng)運行穩(wěn)定性的影響,該模塊在實現(xiàn)時采用的是第二種方案。
1.2.2 可信監(jiān)控驗證模塊
可信監(jiān)控驗證模塊是可信執(zhí)行環(huán)境中的核心模塊,其主要功能是依據(jù)可信文件列表對攔截到的應(yīng)用程序進(jìn)行完整性度量。完整性度量的過程是,對應(yīng)用程序核心組件進(jìn)行哈希計算,與可信文件列表中的基準(zhǔn)值進(jìn)行比對,如果一致,則應(yīng)用程序可信,允許執(zhí)行,如果不一致,則提醒用戶。對應(yīng)用程序進(jìn)行完整性度量,其關(guān)鍵是計算應(yīng)用程序核心組件的哈希值。
目前國產(chǎn)信息系統(tǒng)中廣泛使用的國產(chǎn)TCM芯片是國民技術(shù)TCM芯片,它采用兼容標(biāo)準(zhǔn)8051指令集的8位CPU內(nèi)核,計算能力有限。采用SM3算法[10]計算哈希值的速率在1 Mbps左右,理論上計算1 M字節(jié)數(shù)據(jù)內(nèi)容耗時需要8s。當(dāng)應(yīng)用程序的核心文件大小超過1M時,如果僅僅采用TCM硬件實現(xiàn)的SM3進(jìn)行計算,耗時較長,對應(yīng)用程序的正常啟動影響較大。
在確保驗證正確性的前提下,為了提升驗證的性能,本文在可信監(jiān)控驗證模塊實現(xiàn)了一種度量引擎。該度量引擎采用哈希值軟硬件相結(jié)合的二級計算方式,加快對核心組件信息的哈希計算,可有效縮短度量引起的延時。
1.2.3 可信配置管理模塊
可信配置管理模塊的主要功能是輔助可信監(jiān)控驗證模塊執(zhí)行,對一些重要的信息內(nèi)容進(jìn)行管理維護(hù),保證可信執(zhí)行環(huán)境的正常運行,包括3個功能模塊:文件配置管理模塊,主要用來管理維護(hù)可信文件列表、備份恢復(fù)文件等核心數(shù)據(jù),提供對這些數(shù)據(jù)的基本操作功能;可信策略配置管理模塊,主要為用戶提供可配置的安全策略,簡化用戶可信驗證的操作;TCM配置管理模塊,主要對TCM進(jìn)行管理,方便用戶及時掌握可信執(zhí)行環(huán)境硬件核心的運行情況。
本文對應(yīng)用程序的執(zhí)行過程做了詳細(xì)研究:當(dāng)execve()函數(shù)獲取應(yīng)用程序執(zhí)行的消息后,會陸續(xù)執(zhí)行sys_execve()、do_execve()、open_exec()、prepare_binprm()、search_binary_h(yuǎn)andler()等一系列系統(tǒng)函數(shù),來完成對應(yīng)用程序的加載執(zhí)行。LSM框架在系統(tǒng)函數(shù)search_binary_h(yuǎn)andler()中提供加入了安全鉤子函數(shù)bprm_check_security(struct linux_binprm*bprm),為了實現(xiàn)對應(yīng)用程序的啟動攔截,本文重點重載了該安全鉤子函數(shù),其關(guān)鍵代碼如下:
2.2.1 度量引擎
度量引擎采用哈希值軟硬件結(jié)合的二級計算方式加快哈希值的計算速率。為了兼顧用戶對執(zhí)行效率以及抗攻擊能力的要求,軟算法(軟件實現(xiàn)算法)可以選用MD5或SHA1,用戶可以根據(jù)實際需要通過配置管理模塊對其進(jìn)行配置;硬算法(硬件實現(xiàn)算法)仍然選用TCM芯片提供的SM3算法,整個哈希計算的過程如圖3所示。
圖3 度量引擎計算過程
在調(diào)用度量引擎進(jìn)行哈希計算時,首先將待校驗的數(shù)據(jù)輸入到軟件實現(xiàn)的MD5(或SHA1)算法,得到16字節(jié)(或20字節(jié))的校驗值,接著將該校驗值送入TCM芯片中利用SM3算法進(jìn)行第二次計算,得到最終32字節(jié)的哈希值,作為可信完整性度量的使用數(shù)據(jù)。
2.2.2 可信文件列表
在可信執(zhí)行環(huán)境下,可信驗證的判斷依據(jù)就是可信文件列表。在可信文件列表中記錄著應(yīng)用程序執(zhí)行完整性度量所需要的核心信息,是可信執(zhí)行環(huán)境下進(jìn)行可信驗證的基礎(chǔ)。它被TCM芯片所保護(hù),其讀寫操作必須通過TCM的驗證。
本文對可信文件列表的格式做了定義,其每一項內(nèi)容都包含應(yīng)用程序的執(zhí)行路徑(4097字節(jié))、軟算法標(biāo)識(4字節(jié))、應(yīng)用程序核心文件哈希值(32字節(jié))、應(yīng)用程序核心文件的存儲備份路徑(4097字節(jié)),如圖4所示。其中,軟算法標(biāo)識記錄了度量引擎在計算哈希值時具體使用的軟算法。
圖4 可信文件列表格式
2.2.3 可信驗證過程
在可信執(zhí)行環(huán)境下,可信驗證的具體執(zhí)行過程如圖5所示,并按照下面步驟進(jìn)行:
(1)利用可信攔截模塊攔截應(yīng)用程序;
(2)在可信文件列表中查找應(yīng)用程序存儲的核心組件的哈希值;
(3)在可信文件列表中,查找度量引擎在哈希計算時使用的軟算法標(biāo)識,并根據(jù)軟算法標(biāo)識,調(diào)用度量引擎計算應(yīng)用程序核心組件的哈希值;
(4)比較兩個哈希值,判斷應(yīng)用程序的完整性是否發(fā)生變化;
(5)如果完整性未發(fā)生變化,則允許應(yīng)用程序繼續(xù)執(zhí)行;否則根據(jù)可信配置管理模塊中的可信策略對應(yīng)用程序進(jìn)行更新、恢復(fù)、禁止等操作。
2.3.1 文件配置管理
可信文件列表和備份恢復(fù)文件信息是整個可信執(zhí)行環(huán)境的數(shù)據(jù)中心,是可信執(zhí)行環(huán)境運行的基本保證。由于其信息占用空間較大,國產(chǎn)TCM芯片的存儲空間有限,這些文件只能存儲在系統(tǒng)磁盤上,為了便于管理維護(hù),文件配置管理模塊通過訪問控制界面向用戶提供了以下功能:
圖5 可信驗證執(zhí)行流程
(1)存儲路徑選擇:根據(jù)用戶磁盤分配情況的不同,用戶可以自定義這些核心文件在磁盤上的存儲路徑;
(2)清除冗余信息:當(dāng)應(yīng)用程序卸載之后,可以通過此功能清除相應(yīng)冗余內(nèi)容,節(jié)省磁盤的空間;
(3)查看操作記錄:追蹤可信文件列表和備份恢復(fù)文件的更改操作記錄,便于對執(zhí)行環(huán)境安全性進(jìn)行審計。
2.3.2 策略配置管理
可信安全策略模塊定義了可信執(zhí)行環(huán)境進(jìn)行可信驗證時的一些可信安全策略,用戶可以根據(jù)需要自定義安全策略,簡化用戶在可信驗證時的操作。在模塊中,可以配置使用的可信安全策略如下:
(1)[HASH_ARITHMETIC=MD5|SHA1]:對于度量引擎中使用哈希算法的選擇由該策略決定。決定默認(rèn)狀態(tài)下度量引擎執(zhí)行哈希計算時使用的算法類型。
(2)[STOP_NOT_EXIST=ON|OFF]:對于不在可信文件列表中的應(yīng)用程序是否允許繼續(xù)執(zhí)行由該策略決定。如果啟用該策略,任何不在可信文件列表中的應(yīng)用程序?qū)⒈唤箚?;如果禁用該策略,則將決策權(quán)交由用戶,由用戶決定信任與否。
(3)[STOP_UNTRUSTED=ON|OFF]:對于在可信文件列表中的應(yīng)用程序,當(dāng)完整性度量未通過時是否允許繼續(xù)執(zhí)行由該策略決定。如果啟用該策略,對于完整性度量未通過的應(yīng)用程序?qū)⒈唤箚?;如果禁用該策略,則將決策權(quán)交由用戶,由用戶決定信任與否。
2.3.3 TCM配置管理
TCM是整個可信執(zhí)行環(huán)境運行的硬件基礎(chǔ),是可信執(zhí)行環(huán)境能夠正常運行的核心。TCM配置管理模塊向用戶提供交互界面,通過調(diào)用TSM提供的接口[5]實現(xiàn)對TCM的訪問、配置和管理,具體功能有:對TCM的初始化,查看TCM工作狀態(tài)、PCR值等基本信息,修改TCM的功能狀態(tài),操作對TCM進(jìn)行使能、禁止、自測等。
為了驗證國產(chǎn)自主平臺下構(gòu)建可信執(zhí)行環(huán)境的方法,本文設(shè)計了兩項實驗內(nèi)容:功能測試和性能測試。
實驗環(huán)境軟硬件配置為:操作系統(tǒng)為Neo Kylin_DT(2.0);內(nèi)核版本為Linux 2.6.27.41;處理器選用的是龍芯3A,主頻1GHZ;TCM芯片選用的是國民技術(shù)TCM。
測試準(zhǔn)備:由于測試中會修改應(yīng)用程序的核心文件,為了不對系統(tǒng)造成影響,我們選用自己開發(fā)的應(yīng)用程序Test作為測試程序。
測試方案:啟動攔截測試。啟動測試程序Test,測試可信執(zhí)行環(huán)境是否可以自動攔截到該應(yīng)用程序的啟動加載;可信驗證。替換應(yīng)用程序Test的二進(jìn)制執(zhí)行文件,并再次執(zhí)行,測試可信執(zhí)行環(huán)境是否可以檢測到對應(yīng)用程序Test的修改。
測試結(jié)果:當(dāng)?shù)谝淮螁訙y試程序Test時,可信執(zhí)行環(huán)境向用戶提示發(fā)現(xiàn)未知應(yīng)用程序,成功對其進(jìn)行了攔截;信任執(zhí)行應(yīng)用程序Test,然后替換應(yīng)用程序Test的二進(jìn)制執(zhí)行文件,可信執(zhí)行環(huán)境向用戶提示,應(yīng)用程序被破壞是否繼續(xù)執(zhí)行,成功檢測到了應(yīng)用程序的變化。
結(jié)論:可信執(zhí)行環(huán)境可以準(zhǔn)確地攔截應(yīng)用程序,并及時檢測其變化情況,可以有效地保護(hù)應(yīng)用程序的安全執(zhí)行。
測試準(zhǔn)備:為了測試可信執(zhí)行環(huán)境的性能,體現(xiàn)度量引擎計算的優(yōu)勢,需要執(zhí)行應(yīng)用程序的核心文件較大,為此我們選擇應(yīng)用程序ps作為測試程序。
測試方案:對應(yīng)用程序啟動影響主要源于度量引擎對應(yīng)用程序核心文件哈希值的計算。執(zhí)行應(yīng)用程序Test和ps,對度量引擎計算哈希值的時間進(jìn)行了統(tǒng)計記錄,將其與僅用硬算法SM3計算同樣數(shù)據(jù)的所需時間作對比,如表1所示。
表1 應(yīng)用程序啟動時間記錄
從表1中可以看出可信執(zhí)行環(huán)境對應(yīng)用程序啟動的影響較??;同時對同樣大小數(shù)據(jù)的哈希值計算,通過度量引擎計算所需的時間比僅通過硬算法SM3計算所需時間縮短了很多。
結(jié)論:可信執(zhí)行環(huán)境對應(yīng)用程序正常啟動造成的影響在可接受的范圍內(nèi),使用軟硬結(jié)合的哈希值計算方法,有效地提高了可信執(zhí)行環(huán)境的性能。
本文在國產(chǎn)自主平臺下,設(shè)計并實現(xiàn)了可信執(zhí)行環(huán)境,解決了傳統(tǒng)信息安全技術(shù)安全防護(hù)滯后的問題,增強了國產(chǎn)自主平臺下對應(yīng)用程序的安全保護(hù)。可信執(zhí)行環(huán)境通過重載LSM框架在內(nèi)核中的HOOK函數(shù),簡化實現(xiàn)了對應(yīng)用程序的攔截;采用哈希值軟硬件結(jié)合的二級計算方式計算哈希值,加快哈希值計算速度,完成對應(yīng)用程序的可信驗證,對應(yīng)用程序的正常啟動影響較小,有效地保護(hù)了國產(chǎn)自主平臺下應(yīng)用程序的安全性。
[1]Trusted Computing Group.TCG.TCG specification architecture overview version 1.4[EB/OL].http://www.trustedcomputingfroup.org/home/,2007.
[2]ZHANG Huanguo,HE Yanxiang,ZHAO Bo,et al.Research and development of the trusted computing of China[J].Communications of the CCF,2010,2010,6(9):8-14(in Chinese).[張煥國,何炎祥,趙波,等.我國可信計算研究與發(fā)展[J].中國計算機學(xué)會通訊,2010,6(9):8-14.]
[3]SHEN Changxiang,ZHANG Huanguo.Research and development of the trusted computing[J].Science China,2010,40(2):139-166(in Chinese).[沈昌祥,張煥國.可信計算的研究與發(fā)展[J].中國科學(xué),2010,40(2):139-166.]
[4]Wright C,Cowan C,Morris J,et al.Linux security modules:General security support for the Linux kernel[C].Proc of the 11th USENIX Security Symp.San Francisco,2002:17-31.
[5]FAN Yaoxue,YU Zong.Research and design of trusted running environment based on windows[J].Computer Engineering and Design,2010,31(13):2955-2958(in Chinese).[范耀學(xué),余綜.基于Windows系統(tǒng)的可信執(zhí)行環(huán)境的研究與設(shè)計[J].計算機工程與設(shè)計,2010,31(13):2955-2958.]
[6]FENG Dengguo,YUAN Wengong,JIN Gang.Functionality and interface specification of cryptographic support platform for trusted computing[EB/OL].http://www.oscca.gov.cn/News/200801/News_1132.htm,2007(in Chinese).[馮登國,袁文恭,金剛,等.可信計算密碼支撐平臺功能與接口規(guī)范[EB/OL].http://www.oscca.gov.cn/News/200801/News_1132.htm,2007.]
[7]SHE Ying,CHEN Shuyu.Research and implementation of dynamic and multiple security policies on LSM[J].Computer Engineering and Design,2007,28(17):4108-4111(in Chinese).[佘影,陳蜀宇.基于LSM的動態(tài)多策略研究與實現(xiàn)[J].計算機工程與設(shè)計,2007,28(17):4108-4111.]
[8]WU Xian,QIAN Peide.Building Linux security module based on LSM[J].Computer Engineering and Design,2008,29(24):6281-6284(in Chinese).[吳嫻,錢培德.基于LSM框架構(gòu)建Linux安全模塊[J].計算機工程與設(shè)計,2008,29(24):6281-6284.]
[9]LIU Weipeng,HU Jun,LV Huijun,et al.Mandatory access control mechanism of executable program under LSM[J].Computing Engineering,2008,34(7):160-162(in Chinese).[劉威鵬,胡俊,呂輝軍,等.LSM框架下可執(zhí)行程序的強制訪問控制機制[J].計算機工程,2008,34(7):160-162.]
[10]XU Ri,MAO Ming,GAO Xianwei.Integrity measurement and cryptographic meachanism of cryptographic support platform for trusted computing[J].Communications Technology,2009,42(4):111-113(in Chinese).[徐日,毛明,高獻(xiàn)偉.可信計算密碼支持平臺完整性度量和密碼機制的研究[J].通信技術(shù),2009,42(4):111-113.]