專利名稱:一種基于絕對座標體系的操作系統客體重用測試方法
技術領域:
本發明涉及一種基于絕對座標體系的操作系統客體重用測試方法。尤其指一種基于絕對座標體系的操作系統進程用戶內存、磁盤客體重用測試方法。本發明屬于信息安全及計算機操作系統領域。
背景技術:
對于客體重用,國標(GB17859-1999)作了明確規定“在計算機信息系統可信計算基的空閑存儲客體空間中,對客體初始指定、分配或再分配一個主體之前,撤銷該客體所含信息的所有授權。當主體獲得對一個已被釋放的客體的訪問權時,當前主體不能獲得原主體活動所產生的任何信息。”防止操作系統中存在客體重用現象是開發高可信級別操作系統的重要內容。
在操作系統環境中,客體的種類主要有內存、系統緩存、寄存器、磁盤空間等。由于現代操作系統普遍實施了進程隔離和內核空間保護,操作系統的客體重用測試主要針對進程用戶空間內存和磁盤空間進行。另外,操作系統語境下的主體指的是進程。
在設計測試工具時,必須要特別注意以下2個問題1.客體重用問題存在于主體之間,只有在主體徹底釋放了存儲空間后,此空間才可能被系統分配給其它主體。操作系統中大多數存儲客體的釋放與分配一般采用“靜態”的處理方式,即操作系統以固定大小的塊為單位(例如內存頁面)進行存儲空間的分配與釋放。主體在申請存儲空間時的大小并不固定,在申請空間時先查看主體已經占有的存儲塊中是否有足夠的空間,若有則從中劃分而不向系統申請新的存儲塊;在釋放時,如果同一存儲塊中還有其它內容則并不將存儲塊交還給系統而繼續占有。由此可見,當主體申請或釋放某塊存儲區域不一定會觸發操作系統為其進行存儲塊的分配與釋放。為此,在進行客體重用測試時,測試重用存儲空間前必須確保以前的主體已經徹底地釋放了目標存儲空間。
2.在不同主體之間進行對比測試時,必須確保進行檢查的是同一塊存儲區域,這就要求測試采用一個統一的絕對坐標體系。在操作系統中,系統被進行了抽象,用來標識存儲空間的往往是一些邏輯坐標,例如內存虛擬地址等。在不同主體間,相同地址的存儲空間往往指向不同的物理位置。在進行客體重用測試時,必須采用如內存物理地址一類的絕對坐標體系作為比對的基準。目前,對于操作系統客體重用的檢測只有一般化的方法步驟指導,未見解決以上問題的明確技術手段的報道。
發明內容
為了克服現有的技術的不足,本發明提供一種基于絕對座標體系的操作系統客體重用測試方法,包含進程用戶空間內存客體重用檢測方法和磁盤空間客體重用檢測方法。
本發明解決其技術問題所采用的技術方案是使用內存物理地址作為參照座標體系對是否存在進程用戶內存區域客體重用現象進行檢測;以驅動程序的形式實現查頁表計算內存物理地址,并為測試程序提供輸入輸出接口,測試程序輸入內存虛擬地址,驅動程序進行轉換后輸出其對應物理地址;磁盤空間客體重用測試采用窮盡的方式保證新文件獲得的物理塊包含有原文件的物理塊。
進程用戶空間內存客體重用檢測方法將測試在同一塊物理內存區域在被某個進程使用(寫)過后再被分配給另一個進程時,后者不能從中獲得前者的使用活動信息(讀出前者寫入的數據)。
磁盤空間客體重用檢測方法將測試一塊磁盤空間被某個文件使用并釋放后分配給另一文件后是否可能包含有原文件的數據。
進程用戶空間內存客體重用檢測方法相應的測試過程步驟如下
步驟1、系統為進程A分配一塊內存,在其中寫入特征碼,徹底釋放此塊內存;步驟2、將進程A分配內存的虛擬地址轉換成一個物理地址,將其傳遞給進程B;步驟3、系統根據物理地址為進程B分配同一塊內存或原內存的一部分,進程B讀出此區域進行特征碼驗證,若有相同部分表示存在客體重用;磁盤空間客體重用檢測方法相應的測試過程步驟如下步驟1、在一個空文件系統中創建一個文件A,在其中寫入特征碼直到充滿整個文件系統;步驟2、刪除文件A,創建文件B,在其中寫入不同的特征碼直到文件占有所有的文件系統物理塊,但在最后獲得的物理塊中不要寫滿。
步驟3、檢查整個文件系統的有效存儲空間中是否存在文件A中的特征碼,若有則表明存在客體重用問題。
本發明的有益效果是在進程用戶空間內存客體重用測試中使用內存物理地址作為測試目標依據,可保障測試的準確,避免對不同內存區域進行客體重用測試;以驅動程序形式實現的物理地址計算可使得測試無須修改系統內核代碼即可進行。在磁盤空間客體重用檢測中采用窮盡的方式可大大方便測試的進行,無須在文件A與B間對比物理塊號。文件A與B均占有相同的物理塊(同一文件系統所有的物理塊)。未寫滿的物理塊一定曾經屬于過文件A,而其它塊都已寫滿了不同的特征碼。無論未寫滿塊具體是哪一塊,只要窮盡檢查文件系統的所有塊即可。在檢查過程中,只要有一個塊(也只可能有一個)中包含有原特征碼,就說明了文件A中的信息殘留到了文件B所占有的物理塊中。實際測試時在一個小尺寸的文件系統上進行,窮盡操作將能很快完成。
下面結合附圖和實施例對本發明進一步說明。
圖1為進程用戶內存客體重用測試說明2為磁盤空間客體重用測試說明3為進程用戶內存客體重用測試工作流程4為磁盤空間客體重用測試工作流程圖具體實施方式
一種基于絕對座標體系的操作系統客體重用測試方法,包含進程用戶空間內存客體重用檢測方法和磁盤空間客體重用檢測方法。對于用戶空間內存客體的重用測試,測試工具應測試在同一塊物理內存區域在被某個進程使用(寫)過后再被分配給另一個進程時,后者不能從中獲得前者的使用活動信息(讀出前者寫入的數據)。對于磁盤空間客體重用的檢測,測試工具應測試一塊磁盤空間被某個文件使用并釋放后分配給另一文件后是否可能包含有原文件的數據。
1.進程用戶空間內存客體重用檢測方法相應的測試過程步驟如下步驟1、系統為進程A分配一塊內存,在其中寫入特征碼,徹底釋放此塊內存(使得系統能將其分配給其它進程);在進程中要使得自己的一塊內存區域能夠被分配給其它進程不能簡單地通過調用使用常見的內存釋放用戶函數保證,例如C語言中的free函數。現代操作系統,如Linux和Windows等,為進程分配或釋放內存空間是以長度固定的頁為單位進行,在Linux中,頁長為4k,分配/釋放系統調用為brk。當進程調用free時,存放待釋放內存區域的頁面可能還存放了進程的其它數據(當待釋放內存區域較小時,這種可能性非常大!),在這種情況下頁面不為空,進程不會調用brk函數進行頁釋放。由于此頁已經被分配給了當前進程,其它進程分配內存時不可能在此頁面內進行(進程隔離),所以調用free函數進行內存釋放只是一局部性(進程內)的釋放,不一定會觸發brk系統調用徹底釋放內存區域供其它內存使用。C語言中的分配函數malloc和alloc也類似。
要進行內存區域的徹底釋放,最徹底的辦法是結束進程。在進程結束后,其占用的所有頁面將被徹底釋放。
步驟2、將進程A分配內存的虛擬地址轉換成一個物理地址將其傳遞給進程B;虛擬地址到物理地址的轉換是實現客體重用的關鍵。在計算機系統中,地址轉換工作一般是由硬件部件進行,例如內存管理單元MMU(Memory ManagementUnit)部件。轉換的依據是內核態的頁表,在進程用戶態無法直接進行地址轉換。為此,可以以驅動程序的形式實現查頁表計算物理地址,并為應用提供地址輸入輸出接口。測試進程可在用戶態通過調用接口函數進行地址轉換。進程A通過接口獲得目標內存區域的物理地址。使用驅動程序實現地址轉換能在無需更改目標操作系統內核的情況下訪問內核頁表,大大方便了測試方法的實施,并保證其能在無源碼操作系統平臺上實施。
步驟3、系統根據物理地址為進程B分配同一塊內存或原內存的一部分,進程B讀出此區域進行特征碼驗證,若有相同部分表示存在客體重用。
在進程A結束后,在進程B中重復進行分配內存空間操作,直到獲得了同一塊內存或原內存的一部分(依據物理地址)。在新獲得的內存區域中檢查是否存在特征碼,若存在進程A設定的特征碼則說明系統存在進程用戶空間內存客體重用問題。
在進行實際測試時要注意盡量關閉系統的后臺服務進程,使系統中其它內存分配操作的數量降到最低,避免進程A釋放的內存空間被非進程B的其它進程占有。此外,進程B要在進程A結束前起動,否則進程A釋放的內存空間可能會被進程B的代碼段占用。
2、磁盤空間客體重用檢測方法對于磁盤空間客體重用問題,不同主體間的磁盤客體重用測試可等價于測試一個磁盤空間被某個文件釋放后分配給另一文件后是否可能包含有原文件的數據。與內存空間類似,作為一種典型的塊設備,操作系統是以固定大小的物理塊為單位對磁盤進行操作的。例如在Linux中,ext2/ext3文件系統默認情況下的物理塊大小為1024字節,對文件的磁盤空間分配和釋放都以物理塊為單位。
為文件分配磁盤物理塊由文件寫操作所觸發的。當系統發現文件當前所占有的頁面中的空閑區域無法容納要寫入的數據時,操作系統為文件分配新的物理塊。
在測試中,要保證新文件獲得的物理塊包含有原文件的物理塊可采用窮盡的方式,即將同一文件系統(邏輯驅動器)上的所有物理塊都分配給新文件,其中必然包含原文件所釋放的物理塊。物理塊的徹底釋放可通過刪除文件保證。
相應的測試過程步驟如下步驟1、在一個空文件系統中創建一個文件A,在其中寫入特征碼直到充滿整個文件系統;步驟2、刪除文件A,創建文件B,在其中寫入不同的特征碼直到文件占有所有的文件系統物理塊,但在最后獲得的物理塊中不要寫滿。例如可向文件B中寫入長度為(文件系統物理塊×物理塊大小-物理塊大小/2)的新特征碼。如果存在文件A的數據殘留,必然是在未寫滿塊中;步驟3、檢查整個文件系統的有效存儲空間中是否存在文件A中的特征碼,若有則表明存在客體重用問題。
采用這種窮盡的方式可大大方便測試的進行,無須在文件A與B間對比物理塊號。文件A與B均占有相同的物理塊(同一文件系統所有的物理塊)。未寫滿的物理塊一定曾經屬于過文件A,而其它塊都已寫滿了不同的特征碼。無論未寫滿塊具體是哪一塊,只要窮盡檢查文件系統的所有塊即可。在檢查過程中,只要有一個塊(也只可能有一個)中包含有原特征碼,就說明了文件A中的信息殘留到了文件B所占有的物理塊中。實際測試時在一個小尺寸的文件系統上進行,窮盡操作將能很快完成。
如圖1所示,在進行系統進程用戶內存客體重用測試時,需要運行2個測試進程A和B。測試進程A分配一塊內存,在其中寫入特征碼,然后將此塊內存的虛擬地址提供給內核地址轉換驅動模塊,最后進程退出以徹底釋放此塊內存。內核地址轉換驅動模塊將進程A分配內存的虛擬地址轉換成一個物理地址將其傳遞給測試進程B,進程B重復進行分配內存空間操作,將其獲得的內存虛擬地址也通過內核地址轉換驅動模塊轉換為物理地址后與進程A中曾經分配的內存物理地址進行比對,直到獲得了同一塊內存或原內存的一部分。在新獲得的內存區域中檢查是否存在特征碼,若存在進程A設定的特征碼則說明系統存在進程用戶空間內存客體重用問題。
如圖2所示,在進行磁盤空間客體重用測試時,首先創建一個小尺寸的新文件系統(磁盤分區),通過一個測試進程在其中創建一個文件A,在其中寫入特征碼直到充滿整個文件系統。然后刪除文件A使其釋放占有的磁盤空間(整個文件系統)并創建文件B,在文件B中寫入不同的特征碼直到文件占有所有的文件系統物理塊,但在最后獲得的物理塊中不要寫滿,可向文件B中寫入長度為(文件系統物理塊×物理塊大小-物理塊大小/2)的新特征碼。最后檢查整個文件系統的有效存儲空間中是否存在文件A中的特征碼,若有則表明存在客體重用問題。
圖3為進程用戶內存客體重用測試工作流程圖。如圖3所示,它包括以下步驟1)測試進程A分配一塊內存;2)在其中寫入特征碼;3)將分配內存的虛擬地址轉換成一個物理地址將其傳遞給測試進程B;4)進程A退出以徹底釋放此塊內存。內核地址轉換驅動模塊;5)進程B分配內存空間;6)將其獲得的內存虛擬地址也通過內核地址轉換驅動模塊轉換為物理地址后與進程A中曾經分配的內存物理地址進行比對,如果同為進程A所分配的內存空間或為其一部分直到獲得了同一塊內存或原內存的一部分則轉到第7步,否則回到第5步重復進行分配內存空間操作;7)在新獲得的內存區域中檢查是否存在特征碼,若存在進程A設定的特征碼則說明系統存在進程用戶空間內存客體重用問題。
圖4為磁盤空間客體重用測試工作流程圖。如圖4所示,它包括以下步驟
1)創建一個小尺寸的新的磁盤分區;2)在其中創建一個文件A;3)在文件A中寫入特征碼直到充滿整個磁盤分區;4)刪除文件A使其釋放占有的磁盤空間;5)創建文件B,在文件B中寫入長度為(磁盤分區物理塊×物理塊大小-物理塊大小/2)的新特征碼;6)最后檢查整個文件系統的有效存儲空間中是否存在文件A中的特征碼,若有則表明存在客體重用問題。
權利要求
1.一種基于絕對座標體系的操作系統客體重用測試方法,包含進程用戶空間內存客體重用檢測方法和磁盤空間客體重用檢測方法,其特征是使用內存物理地址作為參照座標體系對是否存在進程用戶內存區域客體重用現象進行檢測;以驅動程序的形式實現查頁表計算內存物理地址,并為測試程序提供輸入輸出接口,測試程序輸入內存虛擬地址,驅動程序進行轉換后輸出其對應物理地址;磁盤空間客體重用測試采用窮盡的方式保證新文件獲得的物理塊包含有原文件的物理塊。
2.根據權利要求1所述的一種基于絕對座標體系的操作系統客體重用測試方法,進程用戶空間內存客體重用檢測方法測試過程步驟如下步驟1、系統為進程A分配一塊內存,在其中寫入特征碼,徹底釋放此塊內存;步驟2、將進程A分配內存的虛擬地址轉換成一個物理地址將其傳遞給進程B;步驟3、系統根據物理地址為進程B分配同一塊內存或原內存的一部分,進程B讀出此區域進行特征碼驗證,若有相同部分表示存在客體重用現象。
3.根據權利要求1所述的一種基于絕對座標體系的操作系統客體重用測試方法,磁盤空間客體重用檢測方法的測試過程步驟如下步驟1、在一個空文件系統中創建一個文件A,在其中寫入特征碼直到充滿整個文件系統;步驟2、刪除文件A,創建文件B,在其中寫入不同的特征碼直到文件占有所有的文件系統物理塊;步驟3、檢查整個文件系統的有效存儲空間中是否存在文件A中的特征碼,若有則表明存在客體重用問題。
全文摘要
本發明公開了一種基于絕對座標體系的操作系統客體重用測試方法,其特征是使用內存物理地址作為參照座標體系對是否存在進程用戶內存區域客體重用現象進行檢測;以驅動程序的形式實現查頁表計算內存物理地址,并為測試程序提供輸入輸出接口,測試程序可輸入內存虛擬地址,驅動程序進行轉換后輸出其對應物理地址;在磁盤空間客體重用測試中,采用窮盡的方式將同一文件系統(邏輯驅動器)上的所有物理塊都分配給新文件,其中必然包含原文件所釋放的物理塊。本發明實現結構簡單,測試實施方便,無需更改目標操作系統內核代碼,測試結果準確;能有效地對目標操作系統中是否存在進程用戶內存、磁盤空間客體重用現象進行檢測。
文檔編號G06F11/36GK1746863SQ20051011442
公開日2006年3月15日 申請日期2005年10月25日 優先權日2005年10月25日
發明者余科技, 李小軍, 徐秋芬 申請人:北京啟明星辰信息技術有限公司