一種基于國產(chǎn)tcm的動態(tài)度量方法
【專利摘要】本發(fā)明公開了一種基于國產(chǎn)TCM的動態(tài)度量方法,通過TCM安全模塊對進程的程序區(qū)段進行分頁度量;當度量異常時,內核模塊立即向用戶告警,并暫停程序執(zhí)行;用戶根據(jù)告警信息做出自己的選擇——恢復執(zhí)行程序還是停止執(zhí)行。該一種基于國產(chǎn)TCM的動態(tài)度量方法與現(xiàn)有技術相比,有效提高文件的安全性能,降低文件被攻擊的概率,實時監(jiān)護個人終端,降低安全風險,實用性強,易于推廣。
【專利說明】
一種基于國產(chǎn)TCM的動態(tài)度量方法
技術領域
[0001]本發(fā)明涉及信息安全技術領域,尤具體地說是一種實用性強、基于國產(chǎn)TCM的動態(tài)度量方法。
【背景技術】
[0002]隨著國產(chǎn)處理器的硬件性能提升,國家對研制自主可控的國產(chǎn)計算機越來越重視。硬件方面,目前我國擁有多種自主研制的CPU(如龍芯、飛騰、申威),也擁有研制相應主板的核心技術和成熟工藝,更兼有TCM這一核心國家安全可信部件,TcM安全芯片,是一種安全芯片,能有效保護PC,防止非法用戶訪問電腦。一些計算機的其他部件(如內存、硬盤)也早已國產(chǎn)化。軟件方面,已有自主研制的B1S(如昆侖固件)。以中標麒麟為首的國產(chǎn)操作系統(tǒng)提供了 windows的替代品,其上的國產(chǎn)軟件也逐漸豐富起來。
[0003]雖然自主可控的軟硬件平臺杜絕了x86系列計算機的安全后門,但是我國的安全防護技術仍然十分薄弱。以可信技術為支撐的安全可控軟硬件技術正逐步發(fā)展起來,已成為我國個人終端抵御外界入侵的天然屏障。本發(fā)明基于安全可信技術開發(fā),利用Iinux內核關鍵技術實現(xiàn),提供一種對運行的進程的動態(tài)監(jiān)控。
[0004]傳統(tǒng)安全技術都是執(zhí)行前對程序文件進行靜態(tài)檢測,而忽視了程序運行之后程序區(qū)被篡改的可能。一些黑客故意使用惡意工具啟動被攻擊程序,而不是直接啟動被攻擊程序,從而獲得修改被攻擊程序的內存的可能,這將產(chǎn)生極大的安全隱患。鑒于存在的問題,本發(fā)明提出一種基于國產(chǎn)TCM的動態(tài)度量方法。
【發(fā)明內容】
[0005]本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、基于國產(chǎn)TCM的動態(tài)度量方法。
[0006]—種基于國產(chǎn)TCM的動態(tài)度量方法,通過TCM安全模塊對進程的程序區(qū)段進行分頁度量;當度量異常時,內核模塊立即向用戶告警,并暫停程序執(zhí)行;用戶根據(jù)告警信息做出自己的選擇恢復執(zhí)行程序還是停止執(zhí)行。
[0007]該方法通過以下三個模塊實現(xiàn):
內核度量模塊,負責對進程的程序區(qū)段的分頁度量及運行控制,并向用戶匯報度量結果;
守護進程模塊,負責接收內核度量模塊的相關消息,并做相關處理;
用戶管理模塊,提供一個圖形用戶界面,以供用戶操作與配置。
[0008]該動態(tài)度量方法的具體過程為:
通過用戶管理模塊,用戶首先選擇一個程序,向守護進程發(fā)出收集預期值的請求;守護進程自動完成預期值收集,并反饋給用戶收集結果;用戶在用戶管理模塊查看預期值,并添加額外的動態(tài)庫,完善預期值的收集,并保存到預期值數(shù)據(jù)庫;
當用戶執(zhí)行收集過預期值的程序時,內核會捕捉到進程啟動,開始解析數(shù)據(jù)庫中的相關預期值,并分配一個線程度量該進程;內核實時匯報度量信息到守護進程,用戶亦可通過用戶管理模塊來查看該信息;
當度量發(fā)現(xiàn)異常時,內核度量模塊掛起被度量進程,然后匯報異常情況;用戶收到異常告警后,做出決策,這里的決策包括嘗試修復、忽視異常、停止進程,其中嘗試修復是指通知內核修正被污染的程序區(qū)段。
[0009]所述內核度量模塊完成以下處理動作:
初始化工作:包括初始化線程池、全局變量和同步鎖,這里的線程池是指每一個程序啟動之后,內核啟動一個線程去度量該進程,此時內核模塊創(chuàng)建一個線程池;全局變量用于儲存預期值,該預期值用于度量進程時使用,從數(shù)據(jù)庫中讀??;同步鎖用于線程和被度量進程之間的同步處理;
捕捉工作:將內核關鍵函數(shù)與鉤子函數(shù)對應掛接;
度量工作:度量線程首先獲取進程程序區(qū)段的頁框,將其映射到高端內存中去,即高端映射;執(zhí)行完這一步之后,度量線程收集進程程序區(qū)的代碼信息,然后對每一頁調用TCM安全模塊進行哈希值計算,對比預期值,即分頁度量;
反饋和異常處理工作:度量線程每度量一頁,會向守護進程匯報度量結果;在哈希值與預期值不一致時,即度量失敗時,內核模塊立即暫停該進程的執(zhí)行,從而達到控制惡意代碼運行的效果;守護進程接收到異常信息,向用戶管理模塊告警,由用戶來決定如何處理該異常。
[00?0] 所述內核關鍵函數(shù)是指sys_execve、do_group_exit,這兩個函數(shù)分別用于進程創(chuàng)建和銷毀,鉤子函數(shù)的作用是捕捉進程創(chuàng)建和銷毀的消息;每當新程序啟動時,就分配線程池中的一個線程與該進程綁定,以用于度量該進程,當進程結束時,就釋放該線程到線程池。
[0011]所述度量工作過程是循環(huán)度量,即每隔一定時間會度量一遍進程的所有程序區(qū)段;
所述守護進程模塊完成以下處理動作:
消息處理:解析由用戶管理模塊和內核度量模塊發(fā)送過來的消息以及封裝并發(fā)送守護進程模塊的消息;
收集預期值:收集程序運行時程序區(qū)段的分頁哈希值;
管理預期值:刪除不再使用的預期值和添加缺失的預期值;
度量異常處理:收集內核模塊發(fā)送過來的異常消息,并向用戶管理模塊轉發(fā);
管理日志:完成日志的維護和管理。
[0012]所述收集預期值是指使用Iinux的Idd工具獲取程序運行時所加載的動態(tài)庫;然后使用readelf工具可獲得elf格式文件的程序區(qū)段,這里的elf格式是指動態(tài)庫和可執(zhí)行程序的文件格式;最后通過調用TCM安全模塊計算出程序區(qū)段的每頁的哈希值,即預期值。
[0013]所述日志包括預期值收集日志、預期值管理日志、異常產(chǎn)生日志、異常處理日志、程序度量運行日志。
[0014]所述用戶管理模塊提供的圖形界面包括使用預期值管理操作界面、動態(tài)度量過程控制界面、日志管理界面。
[0015]本發(fā)明的一種基于國產(chǎn)TCM的動態(tài)度量方法,具有以下優(yōu)點: 本發(fā)明的一種基于國產(chǎn)TCM的動態(tài)度量方法,有效提高文件的安全性能,降低文件被攻擊的概率,實時監(jiān)護個人終端,降低安全風險,實用性強,易于推廣。
【附圖說明】
[0016]附圖1為本發(fā)明內核度量模塊處理流程圖。
[0017]附圖2為本發(fā)明守護進程模塊功能架構圖。
[0018]附圖3為本發(fā)明整體架構圖。
【具體實施方式】
[0019]下面結合附圖和具體實施例對本發(fā)明作進一步說明。
[0020]如附圖1所示,本發(fā)明提供一種基于國產(chǎn)TCM的動態(tài)度量方法,通過TCM安全模塊對進程的程序區(qū)段進行分頁度量;當度量異常時,內核模塊立即向用戶告警,并暫停程序執(zhí)行;用戶根據(jù)告警信息做出自己的選擇一一恢復執(zhí)行程序還是停止執(zhí)行。
[0021 ]該方法通過以下三個模塊實現(xiàn):
內核度量模塊,負責對進程的程序區(qū)段的分頁度量及運行控制,并向用戶匯報度量結果;
守護進程模塊,負責接收內核度量模塊的相關消息,并做相關處理;
用戶管理模塊,提供一個圖形用戶界面,以供用戶操作與配置。
[0022]如附圖1、圖2、圖3所示,該動態(tài)度量方法的具體過程為:
通過用戶管理模塊,用戶首先選擇一個程序,向守護進程發(fā)出收集預期值的請求;守護進程自動完成預期值收集,并反饋給用戶收集結果;用戶在用戶管理模塊查看預期值,并添加額外的動態(tài)庫,完善預期值的收集,并保存到預期值數(shù)據(jù)庫;
當用戶執(zhí)行收集過預期值的程序時,內核會捕捉到進程啟動,開始解析數(shù)據(jù)庫中的相關預期值,并分配一個線程度量該進程;內核實時匯報度量信息到守護進程,用戶亦可通過用戶管理模塊來查看該信息;
當度量發(fā)現(xiàn)異常時,內核度量模塊掛起被度量進程,然后匯報異常情況;用戶收到異常告警后,做出決策,這里的決策包括嘗試修復、忽視異常、停止進程,其中嘗試修復是指通知內核修正被污染的程序區(qū)段。
[0023]所述“內核度量模塊”的主要功能及流程如附圖1所示:
初始化工作:每一個程序啟動之后,內核需要啟動一個線程去度量該進程。為了降低度量線程的創(chuàng)建和銷毀所帶來的資源開銷,內核模塊很有必要事先創(chuàng)建一個線程池。全局變量主要是儲存預期值。該預期值用于度量進程時使用,需要事先從數(shù)據(jù)庫中讀取。同步鎖主要用于線程和被度量進程之間的同步處理。
[0024]捕捉工作:所述內核關鍵函數(shù)是指sys_execve、do_group_exit。這兩個函數(shù)分別是進程創(chuàng)建和銷毀的必經(jīng)之路。鉤子函數(shù)的作用就是捕捉進程創(chuàng)建和銷毀的消息。每當新程序啟動時,就分配線程池中的一個線程與該進程綁定,以用于度量該進程。當進程結束時,就釋放該線程到線程池。
[0025]度量工作:度量線程會首先獲取進程程序區(qū)段的頁框,將其映射到高端內存中去,即高端映射。執(zhí)行完這一步之后,度量線程才能收集進程程序區(qū)的代碼信息,然后對每一頁調用TCM安全模塊進行哈希值計算,對比預期值,即分頁度量。該過程是循環(huán)度量,即每隔一定時間會度量一遍進程的所有程序區(qū)段。
[0026]反饋和異常處理工作:度量線程每度量一頁,會向守護進程匯報度量結果。在哈希值與預期值不一致時,即度量失敗時,內核模塊會立即暫停該進程的執(zhí)行,從而達到控制惡意代碼運行的效果。守護進程接收到異常信息,會向用戶管理模塊告警,由用戶來決定如何處理該異常。處理方法有嘗試修復、忽視異常、停止進程等。
[0027]所述“守護進程模塊”的主要功能及流程如附圖2所示:
守護進程的存在是很有必要的:因為有些被度量程序在圖形界面啟動之前就已經(jīng)啟動,必須由守護進程對內核模塊消息做相應處理(此時用戶管理模塊還未能啟動,因為圖形庫未加載)。
[0028]消息處理:主要負責解析由用戶管理模塊和內核度量模塊發(fā)送過來的消息以及封裝并發(fā)送守護進程模塊的消息。
[0029]收集預期值:主要負責收集程序運行時程序區(qū)段的分頁哈希值。使用Iinux的Idd工具可以獲取程序運行時所加載的動態(tài)庫。然后使用readelf工具可獲得elf格式文件(動態(tài)庫和可執(zhí)行程序的文件格式)的程序區(qū)段。最后通過調用TCM安全模塊計算出程序區(qū)段的每頁的哈希值,即預期值。
[0030]管理預期值:負責刪除不再使用的預期值和添加缺失的預期值。在收集完預期值之后,有些動態(tài)庫可能未被收集到,尤其是使用dlopen打開的動態(tài)庫。可通過該功能添加未收集到的動態(tài)庫。
[0031]度量異常處理:主要是收集內核模塊發(fā)送過來的異常消息,并向用戶管理模塊轉發(fā)。用戶管理模塊收到異常信息后,會下發(fā)異常處理命令到守護進程,再由守護進程轉發(fā)給內核度量模塊。
[0032]管理日志:負責各種日志的維護和管理。日志包括預期值收集日志、預期值管理日志、異常產(chǎn)生日志、異常處理日志、程序度量運行日志。
[0033]所述“用戶管理模塊”主要是提供一個圖形界面供用戶使用。用戶可操作該界面使用預期值管理、動態(tài)度量過程控制、日志管理功能。
[0034]上述【具體實施方式】僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述【具體實施方式】,任何符合本發(fā)明的一種基于國產(chǎn)TCM的動態(tài)度量方法的權利要求書的且任何所述技術領域的普通技術人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。
【主權項】
1.一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,通過TCM安全模塊對進程的程序區(qū)段進行分頁度量;當度量異常時,內核模塊立即向用戶告警,并暫停程序執(zhí)行;用戶根據(jù)告警信息做出自己的選擇一一恢復執(zhí)行程序還是停止執(zhí)行。2.根據(jù)權利要求1所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,該方法通過以下三個模塊實現(xiàn): 內核度量模塊,負責對進程的程序區(qū)段的分頁度量及運行控制,并向用戶匯報度量結果; 守護進程模塊,負責接收內核度量模塊的相關消息,并做相關處理; 用戶管理模塊,提供一個圖形用戶界面,以供用戶操作與配置。3.根據(jù)權利要求2所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,該動態(tài)度量方法的具體過程為: 通過用戶管理模塊,用戶首先選擇一個程序,向守護進程發(fā)出收集預期值的請求;守護進程自動完成預期值收集,并反饋給用戶收集結果;用戶在用戶管理模塊查看預期值,并添加額外的動態(tài)庫,完善預期值的收集,并保存到預期值數(shù)據(jù)庫; 當用戶執(zhí)行收集過預期值的程序時,內核會捕捉到進程啟動,開始解析數(shù)據(jù)庫中的相關預期值,并分配一個線程度量該進程;內核實時匯報度量信息到守護進程,用戶亦可通過用戶管理模塊來查看該信息; 當度量發(fā)現(xiàn)異常時,內核度量模塊掛起被度量進程,然后匯報異常情況;用戶收到異常告警后,做出決策,這里的決策包括嘗試修復、忽視異常、停止進程,其中嘗試修復是指通知內核修正被污染的程序區(qū)段。4.根據(jù)權利要求3所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述內核度量模塊完成以下處理動作: 初始化工作:包括初始化線程池、全局變量和同步鎖,這里的線程池是指每一個程序啟動之后,內核啟動一個線程去度量該進程,此時內核模塊創(chuàng)建一個線程池;全局變量用于儲存預期值,該預期值用于度量進程時使用,從數(shù)據(jù)庫中讀??;同步鎖用于線程和被度量進程之間的同步處理; 捕捉工作:將內核關鍵函數(shù)與鉤子函數(shù)對應掛接; 度量工作:度量線程首先獲取進程程序區(qū)段的頁框,將其映射到高端內存中去,即高端映射;執(zhí)行完這一步之后,度量線程收集進程程序區(qū)的代碼信息,然后對每一頁調用TCM安全模塊進行哈希值計算,對比預期值,即分頁度量; 反饋和異常處理工作:度量線程每度量一頁,會向守護進程匯報度量結果;在哈希值與預期值不一致時,即度量失敗時,內核模塊立即暫停該進程的執(zhí)行,從而達到控制惡意代碼運行的效果;守護進程接收到異常信息,向用戶管理模塊告警,由用戶來決定如何處理該異常。5.根據(jù)權利要求4所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述內核關鍵函數(shù)是指sys_execve、do_group_exit,這兩個函數(shù)分別用于進程創(chuàng)建和銷毀,鉤子函數(shù)的作用是捕捉進程創(chuàng)建和銷毀的消息;每當新程序啟動時,就分配線程池中的一個線程與該進程綁定,以用于度量該進程,當進程結束時,就釋放該線程到線程池。6.根據(jù)權利要求4所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述度量工作過程是循環(huán)度量,即每隔一定時間會度量一遍進程的所有程序區(qū)段。7.根據(jù)權利要求3所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述守護進程模塊完成以下處理動作: 消息處理:解析由用戶管理模塊和內核度量模塊發(fā)送過來的消息以及封裝并發(fā)送守護進程模塊的消息; 收集預期值:收集程序運行時程序區(qū)段的分頁哈希值; 管理預期值:刪除不再使用的預期值和添加缺失的預期值; 度量異常處理:收集內核模塊發(fā)送過來的異常消息,并向用戶管理模塊轉發(fā); 管理日志:完成日志的維護和管理。8.根據(jù)權利要求7所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述收集預期值是指使用Iinux的Idd工具獲取程序運行時所加載的動態(tài)庫;然后使用readelf工具可獲得elf格式文件的程序區(qū)段,這里的elf格式是指動態(tài)庫和可執(zhí)行程序的文件格式;最后通過調用TCM安全模塊計算出程序區(qū)段的每頁的哈希值,即預期值。9.根據(jù)權利要求7所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述日志包括預期值收集日志、預期值管理日志、異常產(chǎn)生日志、異常處理日志、程序度量運行日志。10.根據(jù)權利要求3所述的一種基于國產(chǎn)TCM的動態(tài)度量方法,其特征在于,所述用戶管理模塊提供的圖形界面包括使用預期值管理操作界面、動態(tài)度量過程控制界面、日志管理界面。
【文檔編號】G06F21/56GK105912929SQ201610215411
【公開日】2016年8月31日
【申請日】2016年4月8日
【發(fā)明人】趙瑞東, 王曉明, 馮磊, 郭猛善
【申請人】山東超越數(shù)控電子有限公司