一種基于頁表檢查機(jī)制的存儲(chǔ)器訪問權(quán)限控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及微處理器微結(jié)構(gòu)技術(shù)領(lǐng)域中的存儲(chǔ)器安全訪問技術(shù),特別是涉及一種基于頁表檢查機(jī)制的存儲(chǔ)器訪問權(quán)限控制方法。
【背景技術(shù)】
[0002]現(xiàn)代微處理器一般都支持分頁式存儲(chǔ)管理,通過硬件和操作系統(tǒng)協(xié)同實(shí)現(xiàn)虛擬存儲(chǔ)系統(tǒng)。在分頁式存儲(chǔ)管理中,將程序的虛地址空間和物理地址空間都劃分為同樣大小的頁面(可能有多種頁面粒度),利用頁表記錄虛地址頁號(hào)與物理頁號(hào)之間的映射關(guān)系,實(shí)現(xiàn)從虛地址到物理地址的代換。為了克服采用分頁式存儲(chǔ)管理引起的訪問存儲(chǔ)器器次數(shù)增加的缺點(diǎn),在微處理器中硬件實(shí)現(xiàn)地址代換緩沖(Translat1n Look-aside Buffer,TLB),保存最近經(jīng)常使用的頁表信息,也稱為“頁表?xiàng)l目(Page Table Entry, PTE) ”,以實(shí)現(xiàn)快速的虛實(shí)地址代換,避免多次訪問存儲(chǔ)器。
[0003]為了實(shí)現(xiàn)對(duì)存儲(chǔ)器的訪問權(quán)限控制,一般會(huì)對(duì)微處理器設(shè)置多種運(yùn)行模式,如特權(quán)模式、虛擬機(jī)模式、內(nèi)核模式、用戶模式等,并設(shè)置相應(yīng)的訪問權(quán)限,如:可讀、可寫、可執(zhí)行等。這些訪問權(quán)限控制信息也作為頁表?xiàng)l目的一部分,在利用頁表進(jìn)行虛實(shí)地址地址代換時(shí),進(jìn)行訪問權(quán)限檢查,如果合法可以根據(jù)訪問的虛地址得到相應(yīng)的物理地址,否則作為一種非法越權(quán)訪問,禁止繼續(xù)訪問。
[0004]但是,現(xiàn)有存儲(chǔ)器訪問權(quán)限控制機(jī)制中,沒有對(duì)頁表?xiàng)l目本身的合法性進(jìn)行檢查,認(rèn)為頁表?xiàng)l目本身是安全可信的。但實(shí)際上,頁表?xiàng)l目主要由操作系統(tǒng)進(jìn)行管理,而操作系統(tǒng)本身并不一定是安全可信的,如果操作系統(tǒng)由于某種漏洞受到攻擊,就可能對(duì)頁表進(jìn)行惡意修改。如果頁表?xiàng)l目本身遭到惡意修改,對(duì)一些非法越權(quán)訪問進(jìn)行了授權(quán),現(xiàn)有存儲(chǔ)器訪問權(quán)限控制機(jī)制就難以應(yīng)對(duì),會(huì)出現(xiàn)安全風(fēng)險(xiǎn)和漏洞。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是提供一種基于頁表檢查機(jī)制的存儲(chǔ)器訪問權(quán)限控制方法,能夠避免因?yàn)轫摫項(xiàng)l目遭到惡意修改而授權(quán)一些非法越權(quán)訪問所引發(fā)的安全風(fēng)險(xiǎn)和漏洞。
[0006]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種基于頁表檢查機(jī)制的存儲(chǔ)器訪問權(quán)限控制方法,將頁表裝填進(jìn)入代換緩沖時(shí),對(duì)頁表?xiàng)l目的物理頁號(hào)和訪問權(quán)限控制信息進(jìn)行合法性檢查,將檢查結(jié)果作為頁表?xiàng)l目的內(nèi)容一起寫入代換緩沖;當(dāng)指令流或數(shù)據(jù)流存儲(chǔ)器訪問命中代換緩沖,如果頁表?xiàng)l目的檢查結(jié)果是非法的,則觸發(fā)代換緩沖安全故障,硬件保存現(xiàn)場(chǎng)后,跳到代換緩沖安全故障特權(quán)入口程序進(jìn)行處理,并禁止繼續(xù)訪問存儲(chǔ)器。
[0007]所述合法性檢查是指通過特權(quán)軟件設(shè)置物理地址界標(biāo),將物理地址空間劃分為多個(gè)不同的區(qū)間,結(jié)合處理器模式設(shè)置不同的存儲(chǔ)訪問權(quán)限,以實(shí)現(xiàn)預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略;在裝填代換緩沖時(shí),先判斷裝填代換緩沖的頁表?xiàng)l目物理頁號(hào)所在物理地址區(qū)間,再判斷頁表?xiàng)l目的讀寫訪問權(quán)限是否符合預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略,如果不符合預(yù)期則檢查結(jié)果為非法。
[0008]所述代換緩沖安全故障特權(quán)入口程序是通過代換緩沖條目刷新的方式,將非法的代換緩沖頁表?xiàng)l目清除,并禁止繼續(xù)訪問存儲(chǔ)器。
[0009]所述檢查結(jié)果采用1位或多位編碼進(jìn)行表示,具體編碼方式與預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略設(shè)計(jì)相關(guān)。
[0010]所述物理地址界標(biāo)保存在微處理器內(nèi)部控制狀態(tài)寄存器中,僅特權(quán)軟件能夠訪問內(nèi)部控制狀態(tài)寄存器,并進(jìn)行配置修改;所述物理地址界標(biāo)根據(jù)預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略進(jìn)行靈活配置,根據(jù)分級(jí)分域管理策略的具體需求進(jìn)行設(shè)置。
[0011]所述預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略根據(jù)處理器運(yùn)行模式進(jìn)行設(shè)置,或根據(jù)虛擬機(jī)號(hào)和/或用戶進(jìn)程號(hào)進(jìn)行設(shè)置。
[0012]所述特權(quán)軟件獨(dú)立于操作系統(tǒng),位于操作系統(tǒng)和硬件之間,具有最高特權(quán),是微處理器系統(tǒng)基本的可信根,采用多種軟硬件安全機(jī)制來保證該特權(quán)軟件是安全可信的。
[0013]有益效果
[0014]由于采用了上述的技術(shù)方案,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下的優(yōu)點(diǎn)和積極效果:本發(fā)明在現(xiàn)有基于頁表訪問權(quán)限檢查機(jī)制進(jìn)行存儲(chǔ)器訪問權(quán)限控制的基礎(chǔ)上,新增了對(duì)頁表?xiàng)l目本身合法性的檢查,即在將頁表裝填進(jìn)入TLB時(shí),對(duì)頁表?xiàng)l目的物理頁號(hào)PFN和訪問權(quán)限控制信息進(jìn)行合法性檢查,主要是檢查頁表?xiàng)l目?jī)?nèi)容與設(shè)計(jì)預(yù)期的存儲(chǔ)器訪問權(quán)限管理策略是否一致,如果不一致則認(rèn)為頁表?xiàng)l目是非法的,禁止繼續(xù)訪問,可以有效防止因?yàn)轫摫項(xiàng)l目遭到惡意修改而授權(quán)一些非法越權(quán)訪問所引發(fā)的安全風(fēng)險(xiǎn)和漏洞。
【附圖說明】
[0015]圖1是數(shù)據(jù)TLB (簡(jiǎn)稱DTB)頁表?xiàng)l目的內(nèi)容示意圖;
[0016]圖2是DTB裝填相關(guān)的微處理器內(nèi)部控制狀態(tài)寄存器示意圖;
[0017]圖3是頁表?xiàng)l目物理地址界標(biāo)的示意圖;
[0018]圖4是根據(jù)物理地址界標(biāo)對(duì)物理地址空間劃分示意圖;
[0019]圖5是頁表?xiàng)l目的物理頁地址范圍檢查流程圖;
[0020]圖6是數(shù)據(jù)流訪問DTB進(jìn)行地址代換與裝填流程示意圖。
【具體實(shí)施方式】
[0021]下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明作各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請(qǐng)所附權(quán)利要求書所限定的范圍。
[0022]本發(fā)明的實(shí)施方式涉及一種基于頁表檢查機(jī)制的存儲(chǔ)器訪問權(quán)限控制方法,將頁表裝填進(jìn)入代換緩沖時(shí),對(duì)頁表?xiàng)l目的物理頁號(hào)和訪問權(quán)限控制信息進(jìn)行合法性檢查,將檢查結(jié)果作為頁表?xiàng)l目的內(nèi)容一起寫入代換緩沖;當(dāng)指令流或數(shù)據(jù)流存儲(chǔ)器訪問命中代換緩沖,如果頁表?xiàng)l目的檢查結(jié)果是非法的,則觸發(fā)代換緩沖安全故障,硬件保存現(xiàn)場(chǎng)后,跳到代換緩沖安全故障特權(quán)入口程序進(jìn)行處理,并禁止繼續(xù)訪問存儲(chǔ)器。
[0023]其中,所述合法性檢查是指通過特權(quán)軟件設(shè)置物理地址界標(biāo),將物理地址空間劃分為多個(gè)不同的區(qū)間,結(jié)合處理器模式設(shè)置不同的存儲(chǔ)訪問權(quán)限,以實(shí)現(xiàn)預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略;在裝填代換緩沖時(shí),先判斷裝填代換緩沖的頁表?xiàng)l目物理頁號(hào)所在物理地址區(qū)間,再判斷頁表?xiàng)l目的讀寫訪問權(quán)限是否符合預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略,如果不符合預(yù)期則檢查結(jié)果為非法。所述代換緩沖安全故障特權(quán)入口程序是通過代換緩沖條目刷新的方式,將非法的代換緩沖頁表?xiàng)l目清除,并禁止繼續(xù)訪問存儲(chǔ)器。
[0024]所述的頁表?xiàng)l目的內(nèi)容,除了常見的虛頁號(hào)、物理頁號(hào)、存儲(chǔ)器訪問權(quán)限等信息夕卜,新增了對(duì)頁表?xiàng)l目的物理頁號(hào)PFN和訪問權(quán)限控制信息進(jìn)行合法性檢查的結(jié)果信息,該結(jié)果信息可以是1位,也可以是多位編碼表示,可以根據(jù)具體需求進(jìn)行設(shè)置,與預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略設(shè)計(jì)相關(guān)。物理地址界標(biāo)保存在微處理器內(nèi)部控制狀態(tài)寄存器中,僅特權(quán)軟件可以訪問內(nèi)部控制狀態(tài)寄存器,并進(jìn)行配置修改。物理地址界標(biāo)可以根據(jù)預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略進(jìn)行靈活配置,可以根據(jù)分級(jí)分域管理策略的具體需求進(jìn)行設(shè)置,具體數(shù)量不限,可以為1個(gè),也可以為多個(gè)。預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略與設(shè)計(jì)需求相關(guān),可以根據(jù)需求設(shè)計(jì)相應(yīng)的管理策略。除了根據(jù)處理器運(yùn)行模式進(jìn)行管理策略設(shè)置外,還可以根據(jù)虛擬機(jī)號(hào)、用戶進(jìn)程號(hào)等進(jìn)行管理策略設(shè)置。比如可以根據(jù)虛擬機(jī)號(hào),為不同的虛擬機(jī)設(shè)計(jì)相應(yīng)的存儲(chǔ)器訪問權(quán)限管理策略,實(shí)現(xiàn)不同虛擬機(jī)之間的安全隔離;還可以根據(jù)用戶進(jìn)程號(hào)為不同用戶進(jìn)程設(shè)計(jì)相應(yīng)的存儲(chǔ)器訪問權(quán)限管理策略,實(shí)現(xiàn)不同用戶進(jìn)程之間的安全隔離;還可以結(jié)合處理器模式、虛擬機(jī)號(hào)、用戶進(jìn)程號(hào)等的組合,實(shí)現(xiàn)多種組合的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略,滿足不同設(shè)計(jì)需求。其中,所述特權(quán)軟件獨(dú)立于操作系統(tǒng),位于操作系統(tǒng)和硬件之間,具有最高特權(quán),是微處理器系統(tǒng)基本的可信根,采用多種軟硬件安全機(jī)制來保證該特權(quán)軟件是安全可信的。
[0025]根據(jù)設(shè)計(jì)需求,設(shè)計(jì)預(yù)期的存儲(chǔ)器訪問權(quán)限分級(jí)分域管理策略,該策略只能通過位于操作系統(tǒng)和硬件之間的特權(quán)軟件進(jìn)行設(shè)置,操作系統(tǒng)不可對(duì)該特權(quán)軟件進(jìn)行修改。為了實(shí)現(xiàn)預(yù)期的存儲(chǔ)器訪問權(quán)限管理策略,設(shè)置一組物理地址界標(biāo),將物理地址空間劃分為多個(gè)不同的區(qū)域,針對(duì)各種處理器模式等,設(shè)置相應(yīng)的訪問權(quán)限。根據(jù)物理地址界標(biāo)和訪問權(quán)限設(shè)置,將頁表?xiàng)l目PTE裝填進(jìn)入TLB時(shí),對(duì)頁表?xiàng)l目的物理頁號(hào)PFN和訪問權(quán)限控制信息進(jìn)行合法性檢查,將檢查的結(jié)果信息BD (BD位為1表示頁表?xiàng)l目非法)寫入頁表?xiàng)l目PTE中。當(dāng)以虛地址訪問存儲(chǔ)器時(shí),先訪問TLB,如果命中TLB條目(不命中時(shí)需要進(jìn)行T