基于內(nèi)存隔離的安全架構(gòu)處理方法及處理器的制造方法
【專(zhuān)利摘要】本發(fā)明涉及到信息安全及微處理器設(shè)計(jì)領(lǐng)域,為保護(hù)應(yīng)用程序中包含的敏感信息的安全。從內(nèi)存頁(yè)的層次提供一個(gè)細(xì)粒度的靈活的隔離的安全執(zhí)行環(huán)境,該方案能動(dòng)態(tài)的映射和管理compartment(隔間)s,從根本上將應(yīng)用程序的敏感信息保護(hù)起來(lái)。本發(fā)明?基于內(nèi)存隔離的安全架構(gòu)處理方法及處理器:在通用處理器中添加一個(gè)硬件模塊,該模塊中包含兩個(gè)部分:(1)物理頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不是一個(gè)隔間compartment以及該物理頁(yè)是否曾經(jīng)被用作隔間compartment;(2)控制表,該表記錄已經(jīng)創(chuàng)建的隔間compartment。本發(fā)明主要應(yīng)用于信息安全及微處理器設(shè)計(jì)場(chǎng)合。
【專(zhuān)利說(shuō)明】
基于內(nèi)存隔離的安全架構(gòu)處理方法及處理器
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及到信息安全及微處理器設(shè)計(jì)領(lǐng)域,特別涉及一種基于內(nèi)存隔離實(shí)現(xiàn)敏 感信息保護(hù)的安全處理器。
【背景技術(shù)】
[0002] 在電子產(chǎn)品飛速發(fā)展的時(shí)代,如何有效保護(hù)敏感信息的安全成為了人類(lèi)在安全計(jì) 算領(lǐng)域面對(duì)的一個(gè)挑戰(zhàn)。隨著信息量的不斷增大,攻擊手段和技術(shù)的不斷提高,安全信息的 防護(hù)困難也越來(lái)越大,現(xiàn)在的系統(tǒng)軟件尤其是操作系統(tǒng)有著上千萬(wàn)行的代碼,每年都能從 這些系統(tǒng)軟件中發(fā)現(xiàn)大量的漏洞要設(shè)計(jì)實(shí)現(xiàn)一個(gè)沒(méi)有任何漏洞的系統(tǒng)軟件是不可能的。所 以要保證信息的安全就必須確保硬件尤其是處理器的安全性。
[0003] 學(xué)術(shù)界提出一種提供安全執(zhí)行環(huán)境的方案是在惡意軟件層使用隔離執(zhí)行的概念, 在隔離的compartment(隔間)中執(zhí)行應(yīng)用程序的代碼,但是這些隔間compartments達(dá)不到 系統(tǒng)軟件層,它們要么完全由硬件管理,要么由有硬件輔助的特殊的安全軟件來(lái)管理,這些 安全方案組件被工業(yè)界所關(guān)注,如亞馬遜的CloudHSM云服務(wù)支持隔離并提供安全執(zhí)行環(huán) 境。
[0004] 本發(fā)明提出了一種基于內(nèi)存隔離的保護(hù)安全應(yīng)用程序的安全架構(gòu)。我們只需要對(duì) 現(xiàn)有架構(gòu)做出很小的改變,添加幾條新指令用于管理隔間compartments,簡(jiǎn)單修改操作系 統(tǒng)、匯編器和鏈接器來(lái)支持該安全架構(gòu),消除了只使用硬件管理和只是用軟件管理的固有 限制。該架構(gòu)采用細(xì)粒度的、靈活的設(shè)計(jì),針對(duì)應(yīng)用程序的安全部分進(jìn)行內(nèi)存隔離,是安全 部分運(yùn)行在一個(gè)獨(dú)立的compartment (隔間)中,非安全部分不能訪(fǎng)問(wèn)compartment (隔間)內(nèi) 的內(nèi)容,從而保證應(yīng)用程序的安全,防止敏感信息的泄露。
[0005] 程序運(yùn)行過(guò)程中的每次訪(fǎng)問(wèn)內(nèi)存,cpu都會(huì)檢測(cè)當(dāng)前是否在安全模式,如果在安全 模式,則檢查訪(fǎng)問(wèn)的地址是不是在一個(gè)compartment (隔間)內(nèi),如果是則允許訪(fǎng)問(wèn),如果不 是compartment(隔間)內(nèi)的地址,則檢查需要訪(fǎng)問(wèn)的是代碼還是數(shù)據(jù),如果是數(shù)據(jù)則讓允許 訪(fǎng)問(wèn),如果是代碼則切換到非安全模式,并允許訪(fǎng)問(wèn),與此相反,如果當(dāng)前處在非安全模式, 則只需檢查訪(fǎng)問(wèn)的地址是不是在一個(gè)compartment(隔間)內(nèi),如果在則拒絕訪(fǎng)問(wèn),如果不在 則許訪(fǎng)問(wèn)。
【發(fā)明內(nèi)容】
[0006] 為克服現(xiàn)有技術(shù)的不足,本發(fā)明旨在保護(hù)應(yīng)用程序中包含的敏感信息的安全。從 內(nèi)存頁(yè)的層次提供一個(gè)細(xì)粒度的靈活的隔離的安全執(zhí)行環(huán)境,該方案能動(dòng)態(tài)的映射和管理 compartment(隔間)s,從根本上將應(yīng)用程序的敏感信息保護(hù)起來(lái)。本發(fā)明采用的技術(shù)方案 是,基于內(nèi)存隔離的安全架構(gòu)處理方法,步驟如下:在通用處理器中添加一個(gè)硬件模塊,該 模塊中包含兩個(gè)部分:(1)物理頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不是一個(gè)隔間 compartment以及該物理頁(yè)是否曾經(jīng)被用作隔間compartment,為保證安全,物理頁(yè)標(biāo)志的 值只能通過(guò)相應(yīng)的指令來(lái)修改;(2)控制表,該表記錄已經(jīng)創(chuàng)建的隔間compartment,包括隔 間compartment所屬程序的ID、隔間compartment的起始地址和大小;
[0007] 添加幾條專(zhuān)用的指令:
[0008] (1)第一條指令用于修改控制表;
[0009] (2)第二條指令用于創(chuàng)建隔間compartment,修改對(duì)應(yīng)物理頁(yè)的標(biāo)志位;
[00? 0] ⑶第三條指令用于進(jìn)入隔間compartment,程序進(jìn)入隔間compartment,修改處理 器的模式為安全模式;
[0011 ] (4)第四條指令用于離開(kāi)隔間compartment,程序執(zhí)行期間離開(kāi)隔間compartment, 修改處理器的模式為普通模式;
[0012] (5)第四條指令用于銷(xiāo)毀隔間compartment,擦除本程序所使用的隔間 compartment內(nèi)的數(shù)據(jù);
[0013] 設(shè)置專(zhuān)用寄存器,用來(lái)記錄當(dāng)前處理器的模式和當(dāng)前使用的控制表的條目entry;
[0014] 對(duì)linux操作系統(tǒng)做簡(jiǎn)單的修改,以使其能夠正確解析新的頭表及獲取相應(yīng)的信 息,為含有安全敏感信息的程序生產(chǎn)一個(gè)唯一的ID號(hào),調(diào)用專(zhuān)用指令將安全應(yīng)用程序的ID 號(hào)以及新增安全段的起始地址和大小存入控制表中;
[0015] 對(duì)匯編器做簡(jiǎn)單的修改,添加幾條新指令,使能夠正確的編譯;
[0016] 對(duì)鏈接器的修改,在鏈接階段,應(yīng)該將含有安全信息的代碼和數(shù)據(jù)分別送入到新 的代碼段comptext和數(shù)據(jù)段compdata,同時(shí)將相應(yīng)的起始地址和大小保存在ELF的頭表中; 修改之后的ELF中包含的段分別如表2所不;
[0018] 表2:安全的ELF程序。
[0019] 對(duì)匯編器做簡(jiǎn)單的修改具體是,根據(jù)匯編器的規(guī)則在記錄匯編指令與二進(jìn)制之間 轉(zhuǎn)換的數(shù)組中添加對(duì)應(yīng)的信息。
[0020] 基于內(nèi)存隔離的安全架構(gòu)處理器,結(jié)構(gòu)是,在通用處理器中設(shè)置有一個(gè)硬件模塊, 所述硬件模塊中包含兩個(gè)部分:(1)物理頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不是一個(gè)隔 間compartment以及該物理頁(yè)是否曾經(jīng)被用作隔間compartment,為保證安全,物理頁(yè)標(biāo)志 的值只能通過(guò)相應(yīng)的指令來(lái)修改;(2)控制表,該表記錄已經(jīng)創(chuàng)建的隔間compartment,包括 隔間compartment所屬程序的ID、隔間compartment的起始地址和大?。?br>[0021] 專(zhuān)用指令模塊,包含如下專(zhuān)用指令:
[0022] (1)第一條指令用于修改控制表;
[0023] (2)第二條指令用于創(chuàng)建隔間compartment,修改對(duì)應(yīng)物理頁(yè)的標(biāo)志位;
[0024] (3)第三條指令用于進(jìn)入隔間compartment,程序進(jìn)入隔間compartment,修改處理 器的模式為安全模式;
[0025] (4)第四條指令用于離開(kāi)隔間compartment,程序執(zhí)行期間離開(kāi)隔間compartment, 修改處理器的模式為普通模式;
[0026] (5)第四條指令用于銷(xiāo)毀隔間compartment,擦除本程序所使用的隔間 compartment內(nèi)的數(shù)據(jù);
[0027]設(shè)置有專(zhuān)用寄存器,用來(lái)記錄當(dāng)前處理器的模式和當(dāng)前使用的控制表的entry(條 目);
[0028]操作系統(tǒng)模塊,包括:
[0029] linux操作系統(tǒng)子模塊,用于對(duì)linux操作系統(tǒng)做簡(jiǎn)單的修改,以使其能夠正確解 析新的頭表及獲取相應(yīng)的信息,為含有安全敏感信息的程序生產(chǎn)一個(gè)唯一的ID號(hào),調(diào)用專(zhuān) 用指令將安全應(yīng)用程序的ID號(hào)以及新增安全段的起始地址和大小存入控制表中;
[0030]匯編器子模塊,對(duì)匯編器做簡(jiǎn)單的修改,添加幾條新指令,使能夠正確的編譯;
[0031 ]鏈接器子模塊,對(duì)鏈接器的修改,在鏈接階段,應(yīng)該將含有安全信息的代碼和數(shù)據(jù) 分別送入到新的代碼段comptext和數(shù)據(jù)段compdata,同時(shí)將相應(yīng)的起始地址和大小保存在 ELF的頭表中;修改之后的ELF中包含的段分別如表2所示;
[0033] 表2:安全的ELF程序。
[0034]本發(fā)明的特點(diǎn)及有益效果是:
[0035]本發(fā)明提出了一種全新的安全處理器設(shè)計(jì)方案,將整個(gè)內(nèi)存空間劃分為安全區(qū)域 和非安全區(qū)域,通過(guò)內(nèi)存隔離的方法為應(yīng)用程序提供一個(gè)安全的運(yùn)行環(huán)境。該方案的可信 計(jì)算基只有硬件,能夠很好地好糊應(yīng)用程序的敏感信息。我們的方案可以用在各種處理器 上,包括但不限于通用處理器、嵌入式處理器、專(zhuān)用處理器。使用了該方案的處理器將可以 很好的保護(hù)應(yīng)用程序在運(yùn)行階段的敏感信息的安全,能夠有效的抵御程序在運(yùn)行時(shí)的攻 擊,極大的提高了程序運(yùn)行時(shí)的安全性。
【附圖說(shuō)明】:
[0036] 圖1:傳統(tǒng)處理器的TCB。
[0037] 圖2:安全處理器的TCB。
[0038]圖3:應(yīng)用程序運(yùn)行的總體流程。
[0039]圖4:應(yīng)用程序訪(fǎng)問(wèn)內(nèi)存的流程。
【具體實(shí)施方式】
[0040] 由于信息技術(shù)的快速發(fā)展,信息安全的重要性與日倶增。要保證信息的安全,必須 確保處理器的安全性,安全處理器是信息安全領(lǐng)域的關(guān)鍵技術(shù)。安全處理器已成為現(xiàn)代信 息安全的基本不見(jiàn),是解決信息系統(tǒng)安全威脅、風(fēng)險(xiǎn)和脆弱性的重要途徑。快速發(fā)展的相關(guān) 技術(shù)帶來(lái)的安全隱患影響到個(gè)人隱私、商業(yè)機(jī)密及國(guó)家安全。為了從根源上防止敏感信息 的泄露,ARM、Intel等公司相繼提出了基于他們自己處理器的安全系統(tǒng)方案。然而,我國(guó)還 缺少相應(yīng)自主可控的解決方案。因此在新技術(shù)、新形勢(shì)的發(fā)展需求下,我們應(yīng)該研究和設(shè)計(jì) 自己的安全處理器架構(gòu)及支撐環(huán)境,防止惡意軟件攻擊,堵住芯片上的"后門(mén)"。
[0041] 本發(fā)明采用敏感信息存儲(chǔ)隔離新技術(shù)提出了一款靈活、低復(fù)雜度的安全處理器架 構(gòu)及支撐環(huán)境。該技術(shù)以硬件為可信計(jì)算基,不信任任何的軟件,即使是惡意軟件獲得了操 作系統(tǒng)的控制權(quán),它也不能獲取甚至破壞敏感信息,進(jìn)而從根源上保護(hù)芯片上的敏感信息, 有效防御惡意軟件的攻擊,確保應(yīng)用程序在安全高效的執(zhí)行。
[0042]本發(fā)明提出一種簡(jiǎn)單、靈活、高效的安全處理器架構(gòu),實(shí)現(xiàn)對(duì)存儲(chǔ)空間的有效硬件 隔離。添加相應(yīng)的硬件模塊來(lái)管理內(nèi)存隔離,同時(shí)與內(nèi)存隔離有關(guān)的任何信息都只能有專(zhuān) 用的指令來(lái)修改,任何軟件不能修改這些關(guān)鍵信息。為了達(dá)到更好的安全性和性能,我們?nèi)?然使用包括操作系統(tǒng)在內(nèi)的軟件,但是我們并不信任任何軟件。
[0043]傳統(tǒng)的安全處理器的可信計(jì)算基包括操作系統(tǒng)以及一些管理軟件,如圖1所示,而 我們的安全處理器的可信計(jì)算基只有硬件,不信任任何的軟件,即使是擁有特權(quán)的操作系 統(tǒng),其可信計(jì)算基如圖2所示。
[0044] 我們將內(nèi)存地址空間分成兩個(gè)部分:安全部分和非安全部分,安全部分中保存的 是敏感信息,即需要保護(hù)的代碼和數(shù)據(jù)。非安全部分中存放的是普通信息。安全處理器中有 兩種模式:一種為普通模式,另一種為安全模式,只有在安全模式下才能訪(fǎng)問(wèn)隔間 compartments內(nèi)的信息。處理器每一次訪(fǎng)問(wèn)內(nèi)存都需要檢測(cè)對(duì)應(yīng)物理地址的標(biāo)志位的值, 如果為0,則允許訪(fǎng)問(wèn),如果是1,則需要檢測(cè)現(xiàn)在處于何種模式下,在普通模式拒絕訪(fǎng)問(wèn)并 拋出異常訪(fǎng)問(wèn)信息,在安全模式下則允許訪(fǎng)問(wèn)。
[0045] 處理器的模式切換和地址標(biāo)志位的改變只能通過(guò)幾條專(zhuān)用的指令來(lái)修改,任何軟 件即使是擁有特權(quán)的操作系統(tǒng)也不能對(duì)處理器的模式和地址標(biāo)志位進(jìn)行修改,這樣就可以 阻止惡意軟件獲取敏感信息。
[0046] 下面結(jié)合圖片和表格及實(shí)例,對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說(shuō)明。應(yīng)該指出,此處所 描述的具體實(shí)施實(shí)例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。為使本發(fā)明的目的、技術(shù) 方案和優(yōu)點(diǎn)更加清晰,本實(shí)例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施 方式和具體的操作過(guò)程。
[0047] 本發(fā)明通過(guò)創(chuàng)建內(nèi)存隔離空間來(lái)為用戶(hù)程序提供安全環(huán)境。處理器的整個(gè)內(nèi)存的 地址空間被劃分為安全區(qū)域和非安全區(qū)域,安全區(qū)域中存放的是安全敏感信息,非安全區(qū) 域中存放的是普通信息。安全處理器對(duì)敏感信息的保護(hù)完全建立在對(duì)內(nèi)存的保護(hù)基礎(chǔ)之 上。目前軟件尤其是大型軟件的代碼量急劇增長(zhǎng),成千上行的代碼中無(wú)可避免的存在著各 種漏洞,所以為保護(hù)存在安全區(qū)域內(nèi)的敏感信息,該架構(gòu)的可信計(jì)算基只有硬件,使用而不 信任操作系統(tǒng)。
[0048]針對(duì)內(nèi)存安全區(qū)域的保護(hù),我們?cè)O(shè)計(jì)了一個(gè)專(zhuān)用的硬件,準(zhǔn)用硬件內(nèi)主要包含兩 個(gè)部件:物理頁(yè)標(biāo)志位和控制表,其中物理頁(yè)標(biāo)志位用于標(biāo)明每一個(gè)物理頁(yè)目前是處在安 全區(qū)域還是非安全區(qū)域;控制表用于記錄每一個(gè)已經(jīng)創(chuàng)建的隔間compartments的起始地址 和大小,為了支持這種安全架構(gòu),我們還需要對(duì)匯編器、鏈接器以及l(fā)inux操作系統(tǒng)做簡(jiǎn)單 的修改。
[0049]我們的安全處理器及其支撐環(huán)境包括以下幾個(gè)部分:
[0050] -,在處理器中添加一個(gè)簡(jiǎn)單的硬件模塊,該模塊中主要包含兩個(gè)部分:(1)物理 頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不是一個(gè)隔間compartment s以及該物理頁(yè)是否曾經(jīng) 被用作隔間compartments,為保證安全,物理頁(yè)標(biāo)志的值只能通過(guò)相應(yīng)的指令來(lái)修改;(2) 控制表,該表記錄已經(jīng)創(chuàng)建的隔間compartments,包括隔間compartments所屬程序的ID、隔 間compartments的起始地址和大小。
[0051] 二,添加幾條專(zhuān)用的指令
[0052] (1)第一條指令用于修改控制表
[0053 ] (2)第一條指令用于創(chuàng)建compartment (隔間)(修改對(duì)應(yīng)物理頁(yè)的標(biāo)志位)
[0054] (3)第二條指令用于進(jìn)入compartment (隔間)(程序進(jìn)入compartment (隔間),修改 處理器的模式為安全模式)
[0055] (4)第三條指令用于離開(kāi)compartment(隔間)(程序執(zhí)行期間離開(kāi)compartment (隔 間),修改處理器的模式為普通模式)
[0056] (5)第四條指令用于銷(xiāo)毀compartment(隔間)(擦除本程序所使用的compartment (隔間)內(nèi)的數(shù)據(jù))
[0057]三,專(zhuān)用寄存器是用來(lái)記錄當(dāng)前處理器的模式和當(dāng)前使用的控制表的entry(條 目)。
[0058]四、對(duì)linux操作系統(tǒng)做簡(jiǎn)單的修改,我們需要修改Linux解析可執(zhí)行文件(以ELF 格式為例)的過(guò)程,當(dāng)頭文信息中含有comptext段或compdata段時(shí),即認(rèn)為該程序?yàn)榘踩?序,linux將以與處理其他段的相同的方式處理comptext段和compdata段,使用hash函數(shù)為 該程序產(chǎn)生一個(gè)ID,并使用內(nèi)嵌匯編的方式保存相應(yīng)的安全信息。修改之后的Linux能夠正 確解析新的頭表及獲取相應(yīng)的信息,為含有安全敏感信息的程序生產(chǎn)一個(gè)唯一的ID號(hào),調(diào) 用專(zhuān)用指令將安全應(yīng)用程序的ID號(hào)以及新增安全段的起始地址和大小存入控制表中。 [0059]五,對(duì)gcc編譯具鏈中的匯編器做簡(jiǎn)單的修改,添加幾條新指令,即只需根據(jù)匯編 器的規(guī)則在記錄匯編指令與二進(jìn)制之間轉(zhuǎn)換的數(shù)組(insns[])中添加對(duì)應(yīng)的信息,使我們 的安全應(yīng)用程序能夠正確的編譯。
[0060]六,對(duì)gcc編譯具鏈中的鏈接器的修改,我們只需修改對(duì)應(yīng)的鏈接腳本即可,在現(xiàn) 有的segment(段)基礎(chǔ)上,添加兩個(gè)新的segment (段),即comptext段和compdata段,分別用 來(lái)存放安全信息的代碼段和數(shù)據(jù)段的內(nèi)容。在鏈接階段,我們應(yīng)該將含有安全信息的代碼 和數(shù)據(jù)分別送入到新的comptext段和compdata段,同時(shí)將相應(yīng)的起始地址和大小保存在 ELF的頭表中。修改之前和修改之后的ELF中包含的段分別如表1和表2所示。
[0064] 表2:安全的ELF程序
[0065] 下面我們將結(jié)合一個(gè)具體的實(shí)例進(jìn)一步解釋本發(fā)明:假設(shè)我們已經(jīng)通過(guò)修改后的 匯編器和鏈接器得到了一個(gè)含有敏感信息的應(yīng)用程序。我們以基于v7架構(gòu)的Cortex-A系列 的一款處理器為基礎(chǔ)進(jìn)行修改,當(dāng)該應(yīng)用程序在該安全處理器上運(yùn)行時(shí),操作系統(tǒng)首先會(huì) 解析該應(yīng)用程序的頭文件,然后就可以得知該應(yīng)用程序是普通應(yīng)用程序還是安全應(yīng)用程 序,如果是普通程序,則按照一般方式進(jìn)行處理,此時(shí)如果訪(fǎng)問(wèn)的物理地址在一個(gè) compartment(隔間)內(nèi)則拒絕訪(fǎng)問(wèn)并拋出異常;如果是安全應(yīng)用程序,則從頭文件信息中讀 取comp的起始地址和大小,并為該應(yīng)用程序產(chǎn)生一個(gè)唯一的ID號(hào),調(diào)用專(zhuān)用指令將其值寫(xiě) 入控制表,在程序運(yùn)行過(guò)程中一定會(huì)遇到缺頁(yè)的情況,當(dāng)缺頁(yè)發(fā)生時(shí)檢查當(dāng)前地址是否在 一個(gè)compartment(隔間)內(nèi),若在compartment(隔間)內(nèi)則調(diào)用專(zhuān)用指令修改對(duì)應(yīng)物理頁(yè)的 標(biāo)志位,若不在compartment(隔間)內(nèi)則直接訪(fǎng)問(wèn)內(nèi)存。程序運(yùn)行過(guò)程中會(huì)遇到一條enter 指令(enter指令表示接下來(lái)的部分是應(yīng)用程序的安全部分),該指令將處理器的模式切換 到安全模式,當(dāng)問(wèn)遇到另一條leave指令時(shí)會(huì)將處理器的模式切換到普通模式,在程序即將 結(jié)束的時(shí)候會(huì)遇到一條release指令時(shí)會(huì)通過(guò)控制表將該程序的compartment (隔間)所在 的物理頁(yè)全部清空。在整個(gè)程序運(yùn)行的過(guò)程中,敏感信息都得到了很好的保護(hù)。
【主權(quán)項(xiàng)】
1. 一種基于內(nèi)存隔離的安全架構(gòu)處理方法,其特征是,步驟如下:在通用處理器中添加 一個(gè)硬件模塊,該模塊中包含兩個(gè)部分:(1)物理頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不 是一個(gè)隔間compartment W及該物理頁(yè)是否曾經(jīng)被用作隔間compartment,為保證安全,物 理頁(yè)標(biāo)志的值只能通過(guò)相應(yīng)的指令來(lái)修改;(2)控制表,該表記錄已經(jīng)創(chuàng)建的隔間 compartment,包括隔間compartment所屬程序的ID、隔間compartment的起始地址和大?。? 添加幾條專(zhuān)用的指令: (1) 第一條指令用于修改控制表; (2) 第二條指令用于創(chuàng)建隔間compartment,修改對(duì)應(yīng)物理頁(yè)的標(biāo)志位; (3) 第Ξ條指令用于進(jìn)入隔間compartment,程序進(jìn)入隔間compartment,修改處理器的 模式為安全模式; (4) 第四條指令用于離開(kāi)隔間compartment,程序執(zhí)行期間離開(kāi)隔間compartment,修改 處理器的模式為普通模式; (5) 第四條指令用于銷(xiāo)毀隔間compartment,擦除本程序所使用的隔間compartment內(nèi) 的數(shù)據(jù); 設(shè)置專(zhuān)用寄存器,用來(lái)記錄當(dāng)前處理器的模式和當(dāng)前使用的控制表的條目entry; 對(duì)linux操作系統(tǒng)做簡(jiǎn)單的修改,W使其能夠正確解析新的頭表及獲取相應(yīng)的信息,為 含有安全敏感信息的程序生產(chǎn)一個(gè)唯一的ID號(hào),調(diào)用專(zhuān)用指令將安全應(yīng)用程序的ID號(hào)W及 新增安全段的起始地址和大小存入控制表中; 對(duì)匯編器做簡(jiǎn)單的修改,添加幾條新指令,使能夠正確的編譯; 對(duì)鏈接器的修改,在鏈接階段,應(yīng)該將含有安全信息的代碼和數(shù)據(jù)分別送入到新的代 碼段comptext和數(shù)據(jù)段compda化,同時(shí)將相應(yīng)的起始地址和大小保存在ELF的頭表中;修改 之后的ELF中包含的段分別如表2所示;表2:安全的ELF程序。2. 如權(quán)利要求1所述的基于內(nèi)存隔離的安全架構(gòu)處理方法,其特征是,對(duì)匯編器做簡(jiǎn)單 的修改具體是,根據(jù)匯編器的規(guī)則在記錄匯編指令與二進(jìn)制之間轉(zhuǎn)換的數(shù)組中添加對(duì)應(yīng)的 ?目息。3. -種基于內(nèi)存隔離的安全架構(gòu)處理器,其特征是,在通用處理器中設(shè)置有一個(gè)硬件 模塊,所述硬件模塊中包含兩個(gè)部分:(1)物理頁(yè)標(biāo)志,用來(lái)標(biāo)明每一個(gè)物理頁(yè)當(dāng)前是不是 一個(gè)隔間compartment W及該物理頁(yè)是否曾經(jīng)被用作隔間compartment,為保證安全,物理 頁(yè)標(biāo)志的值只能通過(guò)相應(yīng)的指令來(lái)修改;(2)控制表,該表記錄已經(jīng)創(chuàng)建的隔間 compartment,包括隔間compartment所屬程序的ID、隔間compartment的起始地址和大小。4.如權(quán)利要求3所述的基于內(nèi)存隔離的安全架構(gòu)處理器,其特征是,還設(shè)置有專(zhuān)用指令 模塊、操作系統(tǒng)模塊和專(zhuān)用寄存器,專(zhuān)用指令模塊包含如下專(zhuān)用指令: (1) 第一條指令用于修改控制表; (2) 第二條指令用于創(chuàng)建隔間compartment,修改對(duì)應(yīng)物理頁(yè)的標(biāo)志位; (3) 第Ξ條指令用于進(jìn)入隔間compartment,程序進(jìn)入隔間compartment,修改處理器的 模式為安全模式; (4) 第四條指令用于離開(kāi)隔間compartment,程序執(zhí)行期間離開(kāi)隔間compartment,修改 處理器的模式為普通模式; (5) 第四條指令用于銷(xiāo)毀隔間compartment,擦除本程序所使用的隔間compartment內(nèi) 的數(shù)據(jù); 專(zhuān)用寄存器,用來(lái)記錄當(dāng)前處理器的模式和當(dāng)前使用的控制表的條目entry; 操作系統(tǒng)模塊,包括: linux操作系統(tǒng)子模塊,用于對(duì)linux操作系統(tǒng)做簡(jiǎn)單的修改,W使其能夠正確解析新 的頭表及獲取相應(yīng)的信息,為含有安全敏感信息的程序生產(chǎn)一個(gè)唯一的ID號(hào),調(diào)用專(zhuān)用指 令將安全應(yīng)用程序的ID號(hào)W及新增安全段的起始地址和大小存入控制表中; 匯編器子模塊,對(duì)匯編器做簡(jiǎn)單的修改,添加幾條新指令,使能夠正確的編譯; 鏈接器子模塊,對(duì)鏈接器的修改,在鏈接階段,應(yīng)該將含有安全信息的代碼和數(shù)據(jù)分別 送入到新的代碼段comptext和數(shù)據(jù)段compdata,同時(shí)將相應(yīng)的起始地址和大小保存在化F 的頭表中;修改之后的ELF中包含的段分別如表2所示;_表2:安全的ELF程序。
【文檔編號(hào)】G06F21/57GK106096429SQ201610682918
【公開(kāi)日】2016年11月9日
【申請(qǐng)日】2016年8月16日 公開(kāi)號(hào)201610682918.8, CN 106096429 A, CN 106096429A, CN 201610682918, CN-A-106096429, CN106096429 A, CN106096429A, CN201610682918, CN201610682918.8
【發(fā)明人】郭煒, 魏繼增, 馮彥朝, 梁凱源
【申請(qǐng)人】天津大學(xué)