專利名稱:用于隔離計算環(huán)境的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算環(huán)境的安全領(lǐng)域,更具體地,涉及用于隔離計算環(huán)境以保護(hù)在該被隔離的計算環(huán)境中執(zhí)行的軟件應(yīng)用的方法和系統(tǒng)。
背景技術(shù):
當(dāng)前,眾所周知,在計算環(huán)境中通常保存有大量明文形式的軟件代碼和數(shù)據(jù)。為了防止被以任何未授權(quán)的形式訪問而導(dǎo)致執(zhí)行完整性和/或數(shù)據(jù)機(jī)密性受到破壞,一些軟件代碼和數(shù)據(jù)需要在隔離的安全計算環(huán)境中運(yùn)行。強(qiáng)隔離是備用設(shè)備服務(wù)配置平臺的重要安全要求,所述備用設(shè)備服務(wù)配置平臺比如是云計算中的服務(wù)器。虛擬機(jī)(VM)已經(jīng)作為隔離平臺被廣泛應(yīng)用,在應(yīng)用中通過各個虛擬機(jī)之間的自然分離來提供安全隔離。在Amazon Web Services(AffS)中,EC2機(jī)器實(shí)例(AMI)是一個虛擬機(jī),AWS強(qiáng)烈推薦用戶使用強(qiáng)認(rèn)證手段來訪問該虛擬機(jī)。然而,因?yàn)椴僮飨到y(tǒng)(OS)本身可以被利用為攻擊源,在這種情況下,例如通過外圍設(shè)備的直接IO訪問,就可以很容易擊破這種隔離,所以這種所謂的虛擬機(jī)之間的隔離并不能形成真正的安全隔離。
在現(xiàn)有的研究中,一些研究人員提出了平臺安全的虛擬化方法。例如,在X.Chen, Τ.Garfinkel, Ε.C. Lewis, P.Subrahmanyam, C. Α. Waldspurger, D.Boneh, J. Dwoskin, 禾口 D. R. Ports 發(fā)表的"Overshadow a virtualization-basedapproach to retrofitting protection in commodity operating systems,,中,論述了通過遮蔽(overshadow) CPU 虛擬化技術(shù)來控制內(nèi)存管理單元(MMU),從而甚至在服務(wù)于應(yīng)用的OS內(nèi)核時,也能夠?qū)崿F(xiàn)進(jìn)程間的隔離。這種實(shí)現(xiàn)進(jìn)程隔離的方式的原理在于,用于CPU虛擬化的虛擬機(jī)監(jiān)控器(VMM) 或系統(tǒng)管理程序是計算平臺中權(quán)限最高的軟件,它們可以在服務(wù)于應(yīng)用的OS內(nèi)核的任何其它進(jìn)程之間進(jìn)行干預(yù),從而實(shí)現(xiàn)進(jìn)程間的隔離。然而,在上述Overshadow的實(shí)現(xiàn)方法中,對于傳送在不同平臺上的計算的10設(shè)備,該虛擬機(jī)監(jiān)控器不能簡單地確定將遮蔽內(nèi)存頁用于外部通信。另外,輸入/輸出設(shè)備可以通過獨(dú)立連接和來自CPU的異步控制訪問主內(nèi)存。在處理器制造商設(shè)計出輸入/輸出MMU(IOMMU)之前,這些輸入/輸出設(shè)備可以相當(dāng)自由地訪問內(nèi)存。業(yè)界已經(jīng)認(rèn)識到如果不對輸入/輸出設(shè)備訪問內(nèi)存加以管理,則可能給服務(wù)器虛擬化帶來嚴(yán)重威脅。例如,設(shè)備驅(qū)動器的軟件錯誤,可能導(dǎo)致服務(wù)器和它服務(wù)的所有應(yīng)用的癱瘓。在一些現(xiàn)有技術(shù)方案中,10處理器制造商把所有10設(shè)備重新連接到北橋的 I0MMU。該重新連接使得CPU能夠控制內(nèi)存位置,設(shè)備通過策略訪問這個內(nèi)存位置。例如, Intel公司的方案是對虛擬機(jī)監(jiān)控器中的IOMMU表進(jìn)行編程,以確定內(nèi)存中的某個位置是否可以讓設(shè)備訪問。也有其它方案是禁止10設(shè)備訪問內(nèi)核所在的內(nèi)存位置。然而,這些10 禁用方法不能應(yīng)用于應(yīng)用軟件,因?yàn)閼?yīng)用軟件具有需要由設(shè)備輸入/輸出的數(shù)據(jù),該輸入/ 輸出是直接的,并且不能被簡單地禁止。
發(fā)明內(nèi)容
鑒于上述問題,本發(fā)明的目的是提供一種利用RTCB來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法和系統(tǒng),其能夠在運(yùn)行受保護(hù)進(jìn)程時,針對分配給該受保護(hù)進(jìn)程的內(nèi)存空間,撤銷分配有該內(nèi)存空間且在該受保護(hù)進(jìn)程的安全進(jìn)程策略之外的所有其它進(jìn)程訪問該內(nèi)存空間的權(quán)限和/或禁止任意IO設(shè)備訪問該內(nèi)存空間,從而真正的安全隔離。根據(jù)本發(fā)明的一個方面,提供一種利用根信任計算基(RTCB)來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法,包括初始化受保護(hù)進(jìn)程;對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用;監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù);并且監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。此外,在一個或多個實(shí)施例中,初始化受保護(hù)進(jìn)程的步驟還可以包括初始化所述受保護(hù)進(jìn)程的安全訪問策略集,使得所述安全訪問策略集中僅僅包含所述受保護(hù)進(jìn)程的身份。此外,在一個或多個實(shí)施例中,控制所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境以防止所述動態(tài)計算環(huán)境被非法使用的步驟還可以包括當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中,并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中;并且將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的內(nèi)存空間的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括當(dāng)任意一個進(jìn)程要求分配一個新內(nèi)存空間時,僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間。此外,優(yōu)選地,在一個或多個實(shí)施例中,當(dāng)該任意進(jìn)程是受保護(hù)進(jìn)程時,所述方法還可以包括將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集;撤銷其它進(jìn)程通過MMU訪問該受保護(hù)進(jìn)程所使用的內(nèi)存空間的權(quán)限;并且通知IOMMU不允許任意外圍設(shè)備訪問該受保護(hù)進(jìn)程的內(nèi)存空間。此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,將所述受保護(hù)進(jìn)程的身份從該內(nèi)存空間的安全訪問策略集中刪除;當(dāng)該內(nèi)存空間的安全訪問策略集為空時,擦除該內(nèi)存空間中記錄的所有信息;并且清除該內(nèi)存空間的安全訪問策略集。此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括當(dāng)所述受保護(hù)進(jìn)程所釋放的內(nèi)存空間是其所使用的最后一個內(nèi)存空間時,還可以清除所述受保護(hù)進(jìn)程的安全訪問策略集,并且終止所述受保護(hù)進(jìn)程。此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括禁止該其它進(jìn)程裝載該保護(hù)進(jìn)程的MMU表。此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括當(dāng)該其它進(jìn)程是內(nèi)核,且該受保護(hù)進(jìn)程陷入該其它進(jìn)程時,為該其它進(jìn)程裝載只含有內(nèi)核內(nèi)存信息的偽MMU表。 此外,在一個或多個實(shí)施例中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還可以包括如果當(dāng)前處理的其它進(jìn)程是一個受保護(hù)進(jìn)程,且該其它進(jìn)程在所述受保護(hù)進(jìn)程的內(nèi)存空間的安全訪問策略集中,則允許該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間;否則,阻止該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間。此外,在一個或多個實(shí)施例中,使用輸入/輸出內(nèi)存管理單元(IOMMU)來對任意外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制的步驟可以包括禁止任意外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間;以及在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作。此外,在一個或多個實(shí)施例中,禁止所有外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間的步驟還可以包括當(dāng)利用MMU為所述受保護(hù)進(jìn)程成功分配一個內(nèi)存空間后,通知IOMMU更新任意外圍設(shè)備的IOMMU表,以撤銷并永久禁止任意外圍設(shè)備通過IOMMU表訪問所述受保護(hù)進(jìn)程新分配的內(nèi)存空間的權(quán)限。此外,在一個或多個實(shí)施例中,在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作的步驟還可以包括 在所述受保護(hù)進(jìn)程需要將信息從外圍設(shè)備輸入至該受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間時, 將該外圍設(shè)備輸入的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中;利用該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對在該所述IO緩存區(qū)中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換;以及將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。此外,在一個或多個實(shí)施例中,在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作的步驟還可以包括 在該受保護(hù)進(jìn)程需要向外圍設(shè)備輸出信息時,利用該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰,對所述受保護(hù)進(jìn)程所要輸出的信息進(jìn)行輸出型密碼轉(zhuǎn)換;將經(jīng)過輸出型密碼轉(zhuǎn)換后的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中;將存儲在所述IO緩存區(qū)中的內(nèi)容信息輸出到該外圍設(shè)備。此外,所述在該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰是進(jìn)程密鑰或系統(tǒng)密鑰。根據(jù)本發(fā)明的另一方面,提供了一種利用根信任計算基(RTCB)來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的系統(tǒng),包括初始化單元,用于初始化受保護(hù)進(jìn)程的安全訪問策略集,使得該安全訪問策略集僅僅包含該受保護(hù)進(jìn)程的身份;動態(tài)計算環(huán)境保護(hù)單元,用于對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用;內(nèi)存管理單元(MMU)監(jiān)控單元,用于監(jiān)控MMU的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù);以及輸入輸出內(nèi)存管理單元(IOMMU)監(jiān)控單元,用于監(jiān)控IOMMU的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。此外,所述動態(tài)計算環(huán)境保護(hù)單元還可以包括安全訪問策略集添加單元,用于當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中,并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中;以及安全訪問策略集設(shè)置單元,用于將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的內(nèi)存空間的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。此外,所述MMU監(jiān)控單元還可以包括內(nèi)存空間分配單元,用于當(dāng)任意一個進(jìn)程要求分配一個新內(nèi)存空間時,僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間; 以及內(nèi)存空間刪除單元,用于當(dāng)所述受保護(hù)進(jìn)程要求刪除一個內(nèi)存空間時,刪除該內(nèi)存空間。此外,所述內(nèi)存空間分配單元還可以包括安全訪問策略集設(shè)置單元,用于在該任意進(jìn)程是受保護(hù)進(jìn)程時,將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集;撤銷單元,用于撤銷其它進(jìn)程通過MMU訪問該受保護(hù)進(jìn)程所使用的內(nèi)存空間的權(quán)限;以及通知單元,用于通知IOMMU不允許任意外圍設(shè)備訪問該受保護(hù)進(jìn)程的內(nèi)存空間。此外,所述內(nèi)存空間刪除單元還可以包括身份刪除單元,用于當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,將所述受保護(hù)進(jìn)程的身份從該內(nèi)存空間的安全訪問策略集中刪除;信息擦除單元,用于當(dāng)該內(nèi)存空間的安全訪問策略集為空時,擦除該內(nèi)存空間中記錄的所有信息;以及安全訪問策略集清除單元,用于清除該內(nèi)存空間的安全訪問策略集。此外,當(dāng)所述受保護(hù)進(jìn)程所釋放的內(nèi)存空間是其所使用的最后一個內(nèi)存空間時, 所述安全訪問策略集清除單元清除所述受保護(hù)進(jìn)程的安全訪問策略集。在這種情形下,所述系統(tǒng)還可以包括終止單元,用于終止所述受保護(hù)進(jìn)程。此外,所述MMU監(jiān)控單元還可以包括MMU表裝載禁止單元,用于禁止該其它進(jìn)程裝載該受保護(hù)進(jìn)程的MMU表。此外,優(yōu)選地,所述MMU監(jiān)控單元還可以包括偽MMU表裝載單元,用于當(dāng)該其它進(jìn)程是內(nèi)核,且該受保護(hù)進(jìn)程陷入該其它進(jìn)程時,為該其它進(jìn)程裝載只含有內(nèi)核內(nèi)存信息的偽MMU表。此外,所述MMU監(jiān)控單元還可以包括MMU訪問控制單元,用于如果當(dāng)前處理的其它進(jìn)程是一個受保護(hù)進(jìn)程,且該其它進(jìn)程在所述受保護(hù)進(jìn)程的內(nèi)存空間的安全訪問策略集中,則允許該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間;否則,阻止該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間。此外,所述IOMMU監(jiān)控單元可以包括內(nèi)存空間訪問禁止單元,用于禁止任意外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間;以及IO交互處理單元,用于在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作。 此外,優(yōu)選地,IO交互處理單元還可以包括輸入/輸出型密碼轉(zhuǎn)換單元,用于對要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息進(jìn)行輸出/輸入型密碼轉(zhuǎn)換;以及IO緩存區(qū), 用于存儲要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息,并將信息寫入到外圍設(shè)備或從外圍設(shè)備讀取,其中,在向外圍設(shè)備寫入信息時,利用在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對所述受保護(hù)進(jìn)程要輸出到外圍設(shè)備的信息進(jìn)行輸出型密碼轉(zhuǎn)換;將經(jīng)過輸出型密碼轉(zhuǎn)換后的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中,以及將存儲在所述IO緩存區(qū)中的信息輸出到該外圍設(shè)備,以及在從外圍設(shè)備讀取信息時,將通過該外部IO設(shè)備讀取的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中;利用與在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對在所述IO緩存區(qū)中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換;以及將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。此外,所述 在該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰是進(jìn)程密鑰或系統(tǒng)密鑰。為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個或多個方面包括后面將詳細(xì)說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明了本發(fā)明的某些示例性方面。 然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
通過參考以下結(jié)合附圖的說明及權(quán)利要求書的內(nèi)容,并且隨著對本發(fā)明的更全面理解,本發(fā)明的其它目的及結(jié)果將更加明白及易于理解。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的利用RTCB對受保護(hù)進(jìn)程計算環(huán)境進(jìn)行隔離保護(hù)的方法的總體流程圖;圖2示出了根據(jù)本發(fā)明實(shí)施例的向受保護(hù)進(jìn)程的安全訪問策略集中添加另一進(jìn)程的身份的過程的流程圖;圖3示出了根據(jù)本發(fā)明實(shí)施例的任意一個進(jìn)程要求分配新內(nèi)存空間時MMU監(jiān)控單元進(jìn)行的處理的過程的流程圖;圖4示出了根據(jù)本發(fā)明實(shí)施例的釋放受保護(hù)進(jìn)程使用的內(nèi)存空間的過程的流程圖;圖5示出了根據(jù)本發(fā)明實(shí)施例的MMU監(jiān)控單元對其它進(jìn)程進(jìn)行的關(guān)于MMU表的操作的過程的流程圖;圖6示出了根據(jù)本發(fā)明實(shí)施例的在其它進(jìn)程訪問受保護(hù)進(jìn)程的內(nèi)存空間時MMU監(jiān)控單元進(jìn)行的操作的過程的流程圖;圖7示出了根據(jù)本發(fā)明實(shí)施例的使用IOMMU來對外圍設(shè)備與所述受保護(hù)進(jìn)程間交互進(jìn)程控制的過程的流程圖;圖8示出了根據(jù)本發(fā)明實(shí)施例的在需要與外圍設(shè)備進(jìn)行IO交互時進(jìn)行輸入輸出控制的過程的一個示例的流程圖;圖9示出根據(jù)本發(fā)明實(shí)施例的利用RTCB對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的系統(tǒng)的方框示意圖;圖10示出了根據(jù)本發(fā)明實(shí)施例的動態(tài)計算環(huán)境保護(hù)單元的方框示意圖;圖11示出了根據(jù)本發(fā)明實(shí)施例的MMU監(jiān)控單元的方框示意圖;圖12示出了根據(jù)本發(fā)明實(shí)施例的IOMMU監(jiān)控單元的方框示意圖;圖13是根據(jù)本發(fā)明實(shí)施例的圖12中示出的IOMMU監(jiān)控單元中的IO交互處理單元的方框示意圖。在所有附圖中相同的標(biāo)號指示相似或相應(yīng)的特征或功能。
具體實(shí)施方式
首先介紹一下根據(jù)本發(fā)明的計算環(huán)境,根據(jù)本發(fā)明的計算環(huán)境通常包括具有開放架構(gòu)的計算硬件(例如但不限于,Intel X86架構(gòu))和軟件棧。
通常,所述硬件架構(gòu)包括信任平臺模塊(TPM)、程序控制單元(P⑶)、內(nèi)存管理單元(MMU)和輸入/輸出內(nèi)存管理單元(IOMMU)。在啟動計算平臺的軟件棧時,該信任平臺模塊可以測量根信任計算基(RTCB,Root Trusted Computing Base),并且將測量結(jié)果存儲到信任平臺模塊中,以供將來驗(yàn)證。信任平臺模塊測量、存儲和驗(yàn)證RTCB的方法和裝置是本領(lǐng)域的常規(guī)技術(shù),這里不再描述。例如, 參見本申請人提交的美國專利申請(代理案卷號為EMC08-17 (08182))。程序控制單元(P⑶)包括一個或多個中央處理單元(CPU)和一系列微指令。程序控制單元可以根據(jù)程序代碼的指令在所述平臺上執(zhí)行所述程序代碼。內(nèi)存管理單元(MMU)用于在運(yùn)行進(jìn)程時進(jìn)行物理內(nèi)存訪問管理。如果啟動一個進(jìn)程P,則內(nèi)存管理單元使得程序控制單元能夠利用內(nèi)存管理單元表(MMU表)中存儲的地址信息來訪問物理內(nèi)存位置。輸入/輸出內(nèi)存管理單元(IOMMU)使得輸入/輸出設(shè)備能夠利用輸入/輸出內(nèi)存管理單元表(I0MMU表)中存儲的地址信息訪問物理內(nèi)存位置。所述計算環(huán)境中的軟件棧通常包括根信任計算基(RTCB)、內(nèi)存管理單元表(MMU 表)、輸入/輸出內(nèi)存管理單元表(I0MMU表)、輸入/輸出緩存區(qū)(IOB)、密鑰緩存區(qū)(KB)、 受保護(hù)進(jìn)程(PP)和安全訪問策略集(AP)。根信任計算基(RTCB)是計算平臺上的整個軟件包中權(quán)限最大的軟件棧,它直接在硬件上執(zhí)行,能夠攔截程序控制并執(zhí)行各個保護(hù)步驟。對于每個進(jìn)程P,RTCB可以維護(hù)一個內(nèi)存管理單元表(MMU表),它的數(shù)據(jù)結(jié)構(gòu)通常是p. MT = (P. MT. Self,P. MT. Others)。在程序控制單元執(zhí)行進(jìn)程P時,根信任計算基授權(quán)進(jìn)程P獨(dú)占使用內(nèi)存管理單元表來訪問內(nèi)存位置。該內(nèi)存位置在P. MT中以如下方式設(shè)定P. MT. Self指向進(jìn)程P的代碼和數(shù)據(jù),而P. MT. Others指向不屬于進(jìn)程P的其它進(jìn)程的代碼和數(shù)據(jù)。對于每個具有內(nèi)存訪問功能的IO設(shè)備D,RTCB還可以維護(hù)一個輸入/輸出內(nèi)存管理單元表(IOMMU表),該IOMMU表被表示為D. IOT。在給定時間間隔內(nèi),RTCB授權(quán)10設(shè)備 D獨(dú)占使用輸入/輸出內(nèi)存管理單元表來訪問內(nèi)存位置,該內(nèi)存位置在D. IOT中設(shè)定。對于每個輸入/輸出設(shè)備D,RTCB還可以維護(hù)一個輸入/輸出緩存區(qū)(IOB),該緩存區(qū)中存儲有多個內(nèi)存頁。在受保護(hù)進(jìn)程PP進(jìn)行輸入輸出操作時使用這個緩存區(qū),它被標(biāo)記為D. IOB。D. IOB的物理地址存儲在D. IOT中。D. IOB可以由RTCB或IO設(shè)備D更新。對于每個受保護(hù)進(jìn)程PP,RTCB可以維護(hù)密鑰緩存區(qū)(KB),該密鑰緩存區(qū)用于保存 PP. KB. Sys和PP. KB. self。PP. KB. Sys保存由RTCB控制并使用的密鑰,即RTCB用來對數(shù)據(jù)進(jìn)行加密的系統(tǒng)密鑰。在第一次運(yùn)行進(jìn)程時,PP. KB. Sys可以隨機(jī)生成,而在多次運(yùn)行時, 該P(yáng)P. KB. Sys不是隨機(jī)生成的,而是從已有的文件加載的。PP. KB. self是進(jìn)程密鑰,RTCB 一般把這個密鑰設(shè)成空值,這意味著如果用PP. KB. self這個密鑰,不對受保護(hù)進(jìn)程PP的輸入輸出做任何保護(hù)。受保護(hù)進(jìn)程(PP)是請求RTCB隔離保護(hù)的軟件應(yīng)用。對于每個受保護(hù)進(jìn)程PP,RTCB 會給PP分配一個安全訪問策略集AP,在該安全訪問策略集AP中存儲進(jìn)程的身份。在其身份在同一個“安全訪問策略集”中的進(jìn)程,具有可以共享內(nèi)存空間的屬性。RTCB可維護(hù)多個安全訪問策略集。一般這個安全訪問策略集可以分為這兩種(1)每個受保護(hù)進(jìn)程擁有 RTCB設(shè)置的唯一的“安全訪問策略集”;(2)根據(jù)進(jìn)程的父子關(guān)系,設(shè)置相應(yīng)的“安全訪問策略集”。其中,在策略(2)中,例如,如果一個保護(hù)進(jìn)程PP復(fù)制了一個子進(jìn)程PP,則該子進(jìn)程 PP屬于父進(jìn)程PP所在的安全訪問策略集?,F(xiàn)在參照附圖描述各個實(shí)施例,其中在整個附圖中,相同的參考標(biāo)記被用來指代相同元件。在下面的描述中,出于說明的目的,為了提供對一個或多個實(shí)施例的全面理解, 闡述了許多具體細(xì)節(jié)。然而,很明顯,也可以在沒有這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)這些實(shí)施例。在其它例子中,為了便于描述一個或多個實(shí)施例,公知的結(jié)構(gòu)和設(shè)備以方框圖的形式示
出ο圖1示出了根據(jù)本發(fā)明實(shí)施例的利用RTCB為受保護(hù)進(jìn)程的計算環(huán)境進(jìn)程隔離保護(hù)的方法的總體流程圖。如圖1所示,首先,在步驟SllO中,初始化受保護(hù)進(jìn)程。例如,初始化所述受保護(hù)進(jìn)程的安全訪問策略集,使得所述安全訪問策略集中僅僅包含所述受保護(hù)進(jìn)程的身份。這里,所述身份例如可以是用于唯一標(biāo)識該進(jìn)程的進(jìn)程標(biāo)識符或者其它標(biāo)識。具體地,在輸入一個進(jìn)程后,如果希望該進(jìn)程是受保護(hù)進(jìn)程,則需要利用RTCB來將該進(jìn)程創(chuàng)建為受保護(hù)進(jìn)程PP。然后,RTCB為該受保護(hù)進(jìn)程分配一個安全訪問策略集。此外,根據(jù)該安全訪問策略集,RTCB為該進(jìn)程創(chuàng)建該安全訪問策略集的標(biāo)識符(GID)。此外,對于內(nèi)存空間,例如每個內(nèi)存頁,RTCB還維護(hù)以下兩種屬性PAGE_0WNER以及REFFERENCE_COUNT。其 中,PAGE_ OWNER表明該內(nèi)存頁屬于哪個安全訪問策略集,該P(yáng)AGE_0WNER的值是該安全訪問策略集的標(biāo)識符GID,其缺省值例如為-1。而REFFERENCE_COUNT表明該內(nèi)存頁被安全訪問策略集中的進(jìn)程引用的次數(shù),其缺省值是0。此外,RTCB還根據(jù)該受保護(hù)進(jìn)程PP的定義,分別設(shè)置MMU表、密鑰緩存區(qū)KB和該安全訪問策略集的安全訪問策略AP中與該受保護(hù)進(jìn)程PP對應(yīng)的代碼、數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu),例如,生成與該受保護(hù)進(jìn)程PP對應(yīng)的MMU表中的數(shù)據(jù)結(jié)構(gòu)PP. MT,其中,PP. MT = (PP. MT. Self, PP. MT. Others),PP. MT. Self 指向受保護(hù)進(jìn)程 PP 的代碼和數(shù)據(jù),而 PP. MT. Others 指向不在受保護(hù)進(jìn)程PP的安全訪問策略集中的其它進(jìn)程的代碼和數(shù)據(jù)。此時,RTCB為該進(jìn)程分配一個唯一的進(jìn)程標(biāo)識符PID,保存該進(jìn)程PP的MMU表的真實(shí)基地址REAL_CR3,并且給每個PP創(chuàng)建一個假的MMU表shadow_CR3,該假的MMU表shadow_CR3中只存儲由服務(wù)于該P(yáng)P的內(nèi)核部分的內(nèi)存頁映射。結(jié)果是,利用RTCB記錄了受保護(hù)進(jìn)程PP的以下相關(guān)信息(1)受保護(hù)進(jìn)程PP的 ID,它主要是利用受保護(hù)進(jìn)程PP的MMU表的基地址來標(biāo)識;(2)受保護(hù)進(jìn)程PP的系統(tǒng)密鑰, 艮口,上述RTCB維護(hù)的PP. KB. Sys中的密鑰信息。這個密鑰信息在受保護(hù)進(jìn)程PP第一次運(yùn)行時可以隨機(jī)產(chǎn)生,而在該受保護(hù)進(jìn)程多次運(yùn)行時,是從一個已知文件中加載的,以保證受保護(hù)進(jìn)程PP能夠透明地正常運(yùn)行;(3)受保護(hù)進(jìn)程PP的安全訪問策略集;(4)受保護(hù)進(jìn)程 PP占用的內(nèi)存空間,例如占用了多少內(nèi)存頁,它由一個字段表示。其中,安全訪問策略集的定義是可配置的,其通常采用下面的兩種策略(1)每個 PP屬于一個單獨(dú)的安全訪問策略集;(2)根據(jù)進(jìn)程的父子關(guān)系,將父進(jìn)程PP的安全訪問策略集確定為是子進(jìn)程PP的安全訪問策略集。例如,如果一個進(jìn)程PP復(fù)制了一個子進(jìn)程,則該父進(jìn)程PP的安全訪問策略集是所復(fù)制出的子進(jìn)程的安全訪問策略集。
然后,在步驟S120中,利用安全訪問策略集來對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)環(huán)境被非法使用。關(guān)于利用安全訪問策略集來對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制的過程將在下面參照圖2來進(jìn)行詳細(xì)描述。隨后,在步驟S130中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)。關(guān)于監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的具體過程將在下面參照圖3到圖6進(jìn)行詳細(xì)描述。此 外,在步驟S140中,監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。關(guān)于監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制的具體過程將在下面參照圖7和圖8來進(jìn)行詳細(xì)描述。在對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行上述隔離后,受保護(hù)進(jìn)程可以在隔離的計算環(huán)境中進(jìn)行計算處理,從而可以防止受到非法入侵。圖2示出了根據(jù)本發(fā)明實(shí)施例的向受保護(hù)進(jìn)程的安全訪問策略集中添加另一進(jìn)程的身份的過程的流程圖。如圖2中所示,當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,首先,在步驟S210中,將該另一其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中,并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中。例如,如果在進(jìn)行進(jìn)程2添加之前,受保護(hù)進(jìn)程1的安全訪問策略集為{進(jìn)程1的身份},所使用的內(nèi)存空間的安全訪問策略集為{進(jìn)程1的身份},則在進(jìn)行添加后, 受保護(hù)進(jìn)程1的安全訪問策略集變?yōu)閧進(jìn)程1的身份,進(jìn)程2的身份},所使用的內(nèi)存空間的安全訪問策略集為{進(jìn)程1的身份,進(jìn)程2的身份}。然后,在步驟S220中,將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。例如,在上述示例的情形下,將進(jìn)程2的安全訪問策略集設(shè)置為{進(jìn)程1的身份,進(jìn)程2的身份},進(jìn)程2所使用的內(nèi)存空間的安全訪問策略集設(shè)置為{進(jìn)程1的身份,進(jìn)程2的身份}。下面將參照圖3到圖6來具體描述關(guān)于監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的具體過程。圖3示出了根據(jù)本發(fā)明實(shí)施例的任意一個進(jìn)程要求分配新內(nèi)存空間時MMU監(jiān)控單元進(jìn)行的處理的過程的流程圖。如圖3所示,首先,在步驟S310中,當(dāng)任意一個進(jìn)程要求分配一個新的內(nèi)存空間時,僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間。然后,在步驟S320中,判斷該任意進(jìn)程是否是一個受保護(hù)進(jìn)程。如果該任意進(jìn)程是受保護(hù)進(jìn)程,則進(jìn)行到步驟S330。否則,流程結(jié)束。在步驟S330中,將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集。接著,在步驟S340中,撤銷其它進(jìn)程通過MMU訪問分配給該任意進(jìn)程使用的內(nèi)存空間的權(quán)限。具體地,對于所請求分配的內(nèi)存空間,例如內(nèi)存頁P(yáng)A,RTCB遍歷在該任意進(jìn)程的安全訪問策略集之外的所有進(jìn)程Q的MMU表,獲取使用了該內(nèi)存頁P(yáng)A的那些進(jìn)程Q。然后,RTCB刪除內(nèi)存空間在所述進(jìn)程Q的MMU表中的映射,從而禁止其它進(jìn)程通過MMU訪問分配給該任意進(jìn)程使用的內(nèi)存空間。然后,在步驟S350中,通知IOMMU不允許任意外圍設(shè)備通過IOMMU訪問該受保護(hù)進(jìn)程的內(nèi)存空間。然后,流程結(jié)束。圖4示出了根據(jù)本發(fā)明實(shí)施例的釋放受保護(hù)進(jìn)程使用的內(nèi)存空間的過程的流程圖。如圖4所示,當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,首先,在步驟S410中, 將所述受保護(hù)進(jìn)程的身份從該要釋放的內(nèi)存空間的安全訪問策略集中刪除。然后,在步驟S420中,判斷該內(nèi)存空間的安全訪問策略集是否為空集。當(dāng)該內(nèi)存空間的安全訪問策略集為空集時,流程進(jìn)行到步驟S430。否則,流程結(jié)束。在步驟S430中,擦除在該內(nèi)存空間中記錄的所有信息。然后,在步驟S440中,清除該內(nèi)存空間的安全訪問策略集,也就是說,使得該內(nèi)存空間不再擁有安全訪問策略集,從而恢復(fù)所有其它進(jìn)程通過MMU訪問該內(nèi)存空間的權(quán)限。此外,在恢復(fù)所有其它進(jìn)程通過MMU 訪問該內(nèi)存頁的權(quán)限后,還可以包括從RTCB刪除內(nèi)存空間的所有信息。具體地,刪除對應(yīng)于該內(nèi)存空間,例如內(nèi)存頁P(yáng)A的PA號、PP. ID、進(jìn)程Q和/或IO設(shè)備D的信息。此外,優(yōu)選地,還可以在步驟S450中,判斷所述受保護(hù)進(jìn)程所要求釋放的內(nèi)存空間是否是其所使用的最后一個內(nèi)存空間。如果是最后一個內(nèi)存空間,則進(jìn)行到步驟S460。 否則,流程結(jié)束。這里要說明的是,判斷所述受保護(hù)進(jìn)程所要求釋放的內(nèi)存空間是否是該受保護(hù)進(jìn)程所使用的最后一個內(nèi)存空間可以采用多種方式實(shí)現(xiàn)。例如,可以首先將要求釋放內(nèi)存空間的受保護(hù)進(jìn)程所使用的內(nèi)存空間數(shù)減1,然后判斷減1后的所使用的內(nèi)存空間數(shù)是否為 0。如果該值為0,則判斷為該要求釋放的內(nèi)存空間是該受保護(hù)進(jìn)程所使用的最后一個內(nèi)存空間。否則,則判斷為該要釋放的內(nèi)存空間不是該受保護(hù)進(jìn)程所使用的最后一個內(nèi)存空間。 此外,還可以直接判斷該要求釋放內(nèi)存空間的受保護(hù)進(jìn)程當(dāng)前使用的內(nèi)存空間數(shù)是否為1, 在當(dāng)前所使用的內(nèi)存空間數(shù)為1時,判斷為該要求釋放的內(nèi)存空間是該受保護(hù)進(jìn)程所使用的最后一個內(nèi)存空間?;蛘?,還可以采用其它公知方式來判斷為該要求釋放的內(nèi)存空間是否是該受保護(hù)進(jìn)程所使用的最后一個內(nèi)存空間。在步驟S460中,清除該受保護(hù)進(jìn)程的安全訪問策略集,也就是,使得該受保護(hù)進(jìn)程不再擁有安全訪問策略集。然后,在步驟S470中,終止所述受保護(hù)進(jìn)程,即,使得該進(jìn)程不再是受保護(hù)進(jìn)程。圖5示出了根據(jù)本發(fā)明實(shí)施例的MMU監(jiān)控單元對其它進(jìn)程進(jìn)行的關(guān)于MMU表的操作的過程的流程圖。如圖5所示,首先,在步驟S510中,禁止其它進(jìn)程裝載受保護(hù)進(jìn)程的MMU表。也就是說,禁止利用受保護(hù)進(jìn)程的MMU表中的信息來替換其它進(jìn)程的MMU表。然后,優(yōu)選地,可以在步驟S520中判斷該其它進(jìn)程是否是內(nèi)核進(jìn)程以及該受保護(hù)進(jìn)程是否陷入該其它進(jìn)程。如果該其它進(jìn)程是內(nèi)核進(jìn)程且該受保護(hù)進(jìn)程陷入該其它進(jìn)程, 則流程進(jìn)行到步驟S530。否則,流程結(jié)束。在步驟S530中,為該其它進(jìn)程裝載只含有內(nèi)核信息的偽MMU表,從而使得該其它進(jìn)程可以利用該偽MMU表進(jìn)行訪問。也就是說,可以利用與受保護(hù)進(jìn)程的MMU表中的信息不同的信息來替換該其它進(jìn)程的MMU表中的信息,以禁止該其它進(jìn)程利用MMU表中的信息來訪問該受保護(hù)進(jìn)程的內(nèi)存空間。例如,RTCB將該受保護(hù)進(jìn)程PP的假的頁表的基地址 shadow_CR3 (即,只有一個內(nèi)核空間映射的MMU表)裝載到進(jìn)程Q的MMU中。并且,允許該其它進(jìn)程利用該假頁表的基地址shad0W_CR3來進(jìn)行訪問。這是因?yàn)?,?dāng)所獲取的可以訪問該內(nèi)存空間的進(jìn)程Q是內(nèi)核進(jìn)程且該受保護(hù)進(jìn)程陷入該進(jìn)程Q時,也就是說,當(dāng)該受保護(hù)進(jìn)程陷入內(nèi)核進(jìn)程時,由于所述進(jìn)程Q是內(nèi)核進(jìn)程, 當(dāng)受保護(hù)進(jìn)程PP陷入內(nèi)核請求系統(tǒng)調(diào)用服務(wù)時,該進(jìn)程Q的MMU所裝載的頁表不會變化。 在這種情況下,當(dāng)PCU從受保護(hù)進(jìn)程PP切換到進(jìn)程Q時,RTCB將該受保護(hù)進(jìn)程PP的假的頁表的基地址shadoW_CR3 (即,只有一個內(nèi)核空間映射的MMU表)裝載到進(jìn)程Q的MMU中。 這樣,在進(jìn)程Q調(diào)用操作來將新頁表裝載到MMU表時,由于該頁表不是受保護(hù)進(jìn)程的真實(shí)頁表,從而進(jìn)程Q的上述操作被拒絕。由此,進(jìn)程Q將不能訪問分配給受保護(hù)進(jìn)程PP的內(nèi)存空間。此外,如果Q要強(qiáng)行裝載受保護(hù)進(jìn)程的真實(shí)頁表的基地址real_CR3,會被RTCB截獲且拒絕此操作。最后,當(dāng)PCU從進(jìn)程Q返回到受保護(hù)進(jìn)程PP時,內(nèi)存空間(例如,內(nèi)存頁) 的MMU會被替換為受保護(hù)進(jìn)程PP自己的真實(shí)MMU表。按照這種方式,可以禁止作為內(nèi)核進(jìn)程的進(jìn)程Q訪問分配給受保護(hù)進(jìn)程PP的內(nèi)存空間。圖6示出了根據(jù)本發(fā)明實(shí)施例的在其它進(jìn)程訪問受保護(hù)進(jìn)程的內(nèi)存空間時MMU監(jiān)控單元進(jìn)行的操作的過程的流程圖。如圖6所示,首先,在步驟S610中,判斷該其它進(jìn)程是否是一個受保護(hù)進(jìn)程。如果是受保護(hù)進(jìn)程,則進(jìn)行到步驟S620。否則,進(jìn)行到步驟S640,在步驟S640中阻止該其它進(jìn)程訪問該內(nèi)存空間,流程結(jié)束。 在步驟S620中,判斷該其它進(jìn)程是否在受保護(hù)進(jìn)程的安全訪問策略集中。例如, 可以檢查該其它進(jìn)程的身份是否在該受保護(hù)進(jìn)程的安全訪問策略集中。當(dāng)判斷為在安全訪問策略集中,則進(jìn)行到步驟S620,允許該其它進(jìn)程訪問該受保護(hù)進(jìn)程的內(nèi)存空間。否則,在步驟S640中,阻止該其它進(jìn)程訪問該受保護(hù)進(jìn)程的內(nèi)存空間。圖7示出了根據(jù)本發(fā)明實(shí)施例的使用IOMMU來對外圍設(shè)備與所述受保護(hù)進(jìn)程間交互進(jìn)程控制的過程的流程圖。如圖7所示,首先,在步驟S710中,在任何時候,都禁止任意外圍設(shè)備通過IOMMU 來訪問該受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間。例如,當(dāng)利用MMU為所述受保護(hù)進(jìn)程成功分配一個內(nèi)存空間后,通知IOMMU更新任意外圍設(shè)備的IOMMU表,以撤銷并永久禁止任意外圍設(shè)備通過IOMMU表訪問所述受保護(hù)進(jìn)程新分配的內(nèi)存空間的權(quán)限。此外,在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,則在步驟S720中,允許該外圍設(shè)備使用IOMMU表來訪問所述受保護(hù)進(jìn)程的IO緩存區(qū)。圖8示出了根據(jù)本發(fā)明實(shí)施例的在需要與外圍設(shè)備進(jìn)行IO交互時進(jìn)行輸入輸出控制的過程的一個示例的流程圖。在受保護(hù)進(jìn)程進(jìn)行計算環(huán)境隔離后,如果需要與例如IO設(shè)備的外圍設(shè)備進(jìn)行輸入輸出交互,則如圖8中所示,首先,在步驟S810中,判斷所述受保護(hù)進(jìn)程是要進(jìn)行讀操作還是寫操作。在步驟S810中判斷為要進(jìn)行讀操作時,即從外部IO設(shè)備讀取信息時,流程進(jìn)行到步驟S820。在步驟S810中判斷為要進(jìn)行寫操作時,即向外部IO設(shè)備寫入信息時,流程進(jìn)行到步驟S850。
在步驟S820中,將通過外部IO設(shè)備讀取的信息存儲在與該外部IO設(shè)備對應(yīng)且在 IOMMU表中設(shè)置的IO緩存區(qū)中。然后,流程進(jìn)行到步驟S830。在步驟S830中,利用受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰對在所述IO緩存區(qū)中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換。其中,在密鑰策略集中設(shè)置的密鑰可以是進(jìn)程密鑰或系統(tǒng)密鑰。所述進(jìn)程密鑰例如是由進(jìn)程控制使用的密鑰,即,密鑰緩存區(qū)中存儲的p. KB. self。所述系統(tǒng)密鑰例如是由RTCN控制使用的密鑰,S卩,密鑰緩存區(qū)中存儲的P. KB. sys。 這里,所述輸入型密碼轉(zhuǎn)換例如可以是解密過程等。然后,流程進(jìn)行到步驟S840。 在步驟S840中,將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。當(dāng)在步驟S810判斷為要進(jìn)行寫操作時,在步驟S850中,利用在受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對存儲在所述受保護(hù)進(jìn)程的輸出緩存區(qū)中的要輸出到外部IO設(shè)備的信息進(jìn)行輸出型密碼轉(zhuǎn)換。其中,在密鑰策略集中設(shè)置的密鑰可以是進(jìn)程密鑰或系統(tǒng)密鑰。所述進(jìn)程密鑰例如是由進(jìn)程控制使用的密鑰,即,密鑰緩存區(qū)中存儲的pp. KB. self。所述系統(tǒng)密鑰例如是由RTCB控制使用的密鑰,即,密鑰緩存區(qū)中存儲的PP. KB. sys。這里,所述輸出型密碼轉(zhuǎn)換例如可以是加密過程等。然后,流程進(jìn)行到步驟S860。在步驟S860中,將經(jīng)過輸出型密碼轉(zhuǎn)換后的內(nèi)容存儲在與該外部IO設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中。然后,在步驟S870中,將經(jīng)過輸出型密碼轉(zhuǎn)換后的內(nèi)容從與該外部IO設(shè)備對應(yīng)的IO緩存區(qū)輸出到該外部IO設(shè)備。這里要說明的是,在讀取或?qū)懭雰?nèi)容信息的過程中,可以基于應(yīng)用的密碼策略集來確定是使用進(jìn)程密鑰還是使用系統(tǒng)密鑰。如上參照圖1-圖8描述了根據(jù)本發(fā)明的利用RTCB來為受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法。本發(fā)明的上述用RTCB來為受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法,可以采用軟件實(shí)現(xiàn),也可以采用硬件實(shí)現(xiàn),或采用軟件和硬件組合的方式實(shí)現(xiàn)。圖9示出了根據(jù)本發(fā)明實(shí)施例的利用RTCB對受保護(hù)進(jìn)程計算環(huán)境進(jìn)行隔離保護(hù)的計算環(huán)境隔離系統(tǒng)900的方框示意圖。如圖9所示,所述系統(tǒng)900包括初始化單元910、動態(tài)計算環(huán)境保護(hù)單元920、MMU 監(jiān)控單元930和IOMMU監(jiān)控單元940。在操作時,初始化單元910首先始化所述受保護(hù)進(jìn)程的安全訪問策略集,使得所述安全訪問策略集中僅僅包含所述受保護(hù)進(jìn)程的身份。例如,在輸入一個進(jìn)程后,如果希望該進(jìn)程是受保護(hù)進(jìn)程,則需要利用RTCB來將該進(jìn)程創(chuàng)建為受保護(hù)進(jìn)程PP。然后,RTCB為該受保護(hù)進(jìn)程分配安全訪問策略集的標(biāo)識符(GID),并且記錄了受保護(hù)進(jìn)程PP的以下相關(guān)信息(1)受保護(hù)進(jìn)程PP的ID,它主要是利用受保護(hù)進(jìn)程PP的MMU表的基地址表示;(2)受保護(hù)進(jìn)程PP的系統(tǒng)密鑰,即,上述RTCB維護(hù)的PP. KB. Sys中的密鑰信息,這個密鑰信息在受保護(hù)進(jìn)程PP第一次運(yùn)行時可以隨機(jī)產(chǎn)生,而在該受保護(hù)進(jìn)程多次運(yùn)行時,是從一個已知文件中加載的,以保證受保護(hù)進(jìn)程PP能夠透明地正常運(yùn)行;(3)受保護(hù)進(jìn)程PP的安全訪問策略集;(4)受保護(hù)進(jìn)程PP占用的內(nèi)存空間,例如占用了多少內(nèi)存頁,它由一個字段表示。然后,動態(tài)計算環(huán)境保護(hù)單元920使用受保護(hù)進(jìn)程的安全訪問策略集來對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用。內(nèi)存管理單元(MMU)管理進(jìn)程對所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間的訪問權(quán)限;以及輸入輸出內(nèi)存管理單元(IOMMU)管理輸入輸出(IO)設(shè)備對所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間的訪問權(quán)限。MMU監(jiān)控單元930用于監(jiān)控內(nèi)存管理單元(MMU)的使用,對該受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間進(jìn)行隔離保護(hù)。IOMMU監(jiān)控單元940用于監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行隔離保護(hù)。圖10示出了根據(jù)本發(fā)明實(shí)施例的動態(tài)計算環(huán)境保護(hù)單元1000的方框示意圖。如圖10所示,動態(tài)計算環(huán)境保護(hù)單元1000包括安全訪問策略集添加單元1010和安全訪問策略集設(shè)置單元1020。當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,安全訪問策略集添加單元1010將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中,并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中。安全訪問策略集設(shè)置單元1020將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的內(nèi)存空間的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。圖11示出了根據(jù)本發(fā)明實(shí)施例的MMU監(jiān)控單元1100的方框示意圖。如圖11所示,所述MMU監(jiān)控單元1100可以包括內(nèi)存空間分配單元1110和內(nèi)存空間刪除1120。當(dāng)任意一個進(jìn)程要求分配一個新內(nèi)存空間時,內(nèi)存空間分配單元1010僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間。當(dāng)所述受保護(hù)進(jìn)程要求刪除一個內(nèi)存空間時,內(nèi)存空間刪除單元1120刪除該內(nèi)存空間。此外,在一個或多個實(shí)施例中,所述內(nèi)存空間分配單元1110還可以包括安全訪問策略集設(shè)置單元1111、撤銷單元1112和通知單元1113。在該任意進(jìn)程是受保護(hù)進(jìn)程時,安全訪問策略集設(shè)置單元1111將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集。然后,撤銷單元1112撤銷其它進(jìn)程通過MMU訪問該任意進(jìn)程所使用的內(nèi)存空間的權(quán)限。例如,對于所請求分配的內(nèi)存空間,例如內(nèi)存頁P(yáng)A,RTCB遍歷在該任意進(jìn)程的安全訪問策略集之外的所有進(jìn)程Q的MMU表,獲取使用了該內(nèi)存頁P(yáng)A的那些進(jìn)程Q。然后,RTCB刪除內(nèi)存空間在所述進(jìn)程Q的MMU表中的映射,從而禁止其它進(jìn)程通過MMU訪問分配給該任意進(jìn)程使用的內(nèi)存空間。在撤銷所有其它進(jìn)程的訪問權(quán)限后,通知單元1113通知IOMMU不允許任意外圍設(shè)備訪問該受保護(hù)進(jìn)程的內(nèi)存空間。此外,在一個或多個實(shí)施例中,所述內(nèi)存空間刪除單元1120還可以包括身份刪除單元1121、信息擦除單元1122以及安全訪問策略集清除單元1123。當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,身份刪除單元1121將所述受保護(hù)進(jìn)程的身份從該內(nèi)存空間的安全訪問策略集中刪除。當(dāng)該內(nèi)存空間的安全訪問策略集為空時,信息擦除單元1122擦除該內(nèi)存空間中記錄的所有信息。并且,安全訪問策略集清除單元1123清除該內(nèi)存空間的安全訪問策略集。此外,當(dāng)所述受保護(hù)進(jìn)程所釋放的內(nèi)存空間是最后一個內(nèi)存空間時,安全訪問策略集清除單元1123還清除受保護(hù)進(jìn)程的安全訪問策略集。在這種情形下,所述系統(tǒng)還可以包括終止單元,用于終止所述受保護(hù)進(jìn)程。
此外,在一個或多個實(shí)施例中,所述MMU監(jiān)控單元1100還可以包括MMU表裝載禁止單元1130,用于禁止該其它進(jìn)程裝載該受保護(hù)進(jìn)程的MMU表。也就是說,禁止利用受保護(hù)進(jìn)程的MMU表中的信息來替換其它進(jìn)程的MMU表。此外,在一個或多個實(shí)施例中,所述MMU監(jiān)控單元還可以包括偽MMU表裝載單元 1140,用于當(dāng)該其它進(jìn)程是內(nèi)核,且該受保護(hù)進(jìn)程陷入該其它進(jìn)程時,為該其它進(jìn)程裝載只含有內(nèi)核內(nèi)存信息的偽MMU表。 此外,在一個或多個實(shí)施例中,所述MMU監(jiān)控單元還可以包括MMU訪問控制單元 1150,用于如果當(dāng)前處理的其它進(jìn)程是一個受保護(hù)進(jìn)程,且該其它進(jìn)程在所述受保護(hù)進(jìn)程的內(nèi)存空間的安全訪問策略集中,則允許該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間;否則,阻止該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間。圖12示出了根據(jù)本發(fā)明實(shí)施例的IOMMU監(jiān)控單元1200的方框示意圖。如圖12中所述,IOMMU監(jiān)控單元1200包括內(nèi)存空間訪問禁止單元1210以及IO交互處理單元1220。內(nèi)存空間訪問禁止單元1210用于禁止任意外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間。IO交互處理單元1220用于在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作。圖13是根據(jù)本發(fā)明實(shí)施例的圖12中示出的IOMMU監(jiān)控單元1200中的IO交互處理單元1220的方框示意圖。如圖12所示,IO交互處理單元1220可以包括輸入/輸出型密碼轉(zhuǎn)換單元1221和IO緩存區(qū)1222。輸入/輸出型密碼轉(zhuǎn)換單元1221用于對要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息進(jìn)行輸出/輸入型密碼轉(zhuǎn)換。IO緩存區(qū)1222用于存儲要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息,并將信息寫入到外圍設(shè)備或從外圍設(shè)備讀取。在向外圍設(shè)備寫入信息時,利用在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,輸入/輸出型密碼轉(zhuǎn)換單元1221對所述受保護(hù)進(jìn)程要輸出到外圍設(shè)備的信息進(jìn)行輸出型密碼轉(zhuǎn)換;將經(jīng)過輸出型密碼轉(zhuǎn)換后的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的 IO緩存區(qū)1222中,以及將存儲在所述IO緩存區(qū)1222中的信息輸出到該外圍設(shè)備。在從外圍設(shè)備讀取信息時,將通過該外部IO設(shè)備讀取的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)1222中。然后,輸入/輸出型密碼轉(zhuǎn)換單元1221 利用與在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對在所述IO緩存區(qū)1222中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換;以及將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。此外,優(yōu)選地,所述IO交互處理單元1220還可以包括密鑰選擇單元1223,用于在所述在輸出或輸入信息的過程中,基于應(yīng)用的密碼策略集來確定是使用進(jìn)程密鑰還是使用系統(tǒng)密鑰。根據(jù)本示例的方法和系統(tǒng),可以在受保護(hù)進(jìn)程進(jìn)行計算時,針對分配給受保護(hù)進(jìn)程的內(nèi)存空間,撤銷分配使用該內(nèi)存空間的所有其它進(jìn)程通過MMU訪問該內(nèi)存空間的權(quán)限和/或禁止任意IO設(shè)備訪問該內(nèi)存頁,從而保證了受保護(hù)進(jìn)程PP的內(nèi)存空間都不能被其它進(jìn)程Q和任意IO設(shè)備訪問,由此實(shí)現(xiàn)真正的安全隔離。這里提到的其他進(jìn)程是指不在受保護(hù)進(jìn)程安全訪問集中的進(jìn)程。
18
此外,利用根據(jù)本發(fā)明實(shí)施例的利用RTCB為受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離的方法,可以防止泄露受保護(hù)進(jìn)程PP的內(nèi)存空間中的內(nèi)容信息,并且在受保護(hù)進(jìn)程PP運(yùn)行終止時釋放該受保護(hù)進(jìn)程PP所占用的內(nèi)存空間,從而使得這些內(nèi)存頁可以在某個時刻重新被其它進(jìn)程Q和任意IO設(shè)備D使用。此外,利用根據(jù)本發(fā)明實(shí)施例的方法和系統(tǒng),可以防止在從外部IO設(shè)備輸入到受保護(hù)進(jìn)程PP和從受保護(hù)進(jìn)程PP輸出到外部IO設(shè)備時導(dǎo)致的信息泄露。如上參照圖1到圖13以示例的方式描述根據(jù)本發(fā)明的利用RTCB為受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法和系統(tǒng)。但是,本領(lǐng)域技術(shù)人員應(yīng)該明白的是,可以使用由計算機(jī)處理器執(zhí)行的代碼實(shí)現(xiàn)根據(jù)本文所描述的技術(shù)。例如,實(shí)施例可以使用下述代碼實(shí)現(xiàn)這里的技術(shù),其中所述代碼在任何一種計算機(jī)可讀介質(zhì)上由數(shù)據(jù)存儲系統(tǒng)的處理器執(zhí)行,所述計算機(jī)可讀介質(zhì)具有多種不同形式的任何一種,包括易失性和非易失性、可移除和非可移除介質(zhì),所述代碼以信息存儲的任何方法或技術(shù)實(shí)現(xiàn),例如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。計算機(jī)存儲介質(zhì)包括但不限于RAM、ROM、EEPR0M、閃存或其他存儲器技術(shù)、CD-ROM、DVD或其他光學(xué)存儲、磁帶、磁盒、磁盤存儲或其他磁存儲設(shè)備,或者能夠用來存儲期望信息以及能夠被數(shù)據(jù)存儲系統(tǒng)處理器訪問的任何其他介質(zhì)。要理解的是,本文描述的實(shí)施例可以采用硬件、軟件、固件、中間件、微代碼或上述的組合實(shí)現(xiàn)。對于硬件實(shí)現(xiàn),處理單元可以在一個或多個下述部件中實(shí)現(xiàn)專用集成電路 (ASIC)、數(shù)字信號處理(DSP)、數(shù)字信號處理設(shè)備(DSPD)、可編程邏輯設(shè)備(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、被設(shè)計來執(zhí)行這里所描述的功能的其它電子單元、或上述部件的組合。當(dāng)所述實(shí)施例以軟件、固件、中間件或微代碼、程序代碼或代碼段實(shí)現(xiàn)時,它們可以存儲在機(jī)器可讀介質(zhì)中,比如存儲組件中。代碼段可以表示過程、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包、類、或指令、數(shù)據(jù)結(jié)構(gòu)或程序語句的任何組合。一個代碼段可以通過傳遞和/或接收信息、數(shù)據(jù)、自變量、參數(shù)或存儲器內(nèi)容,耦合到另一代碼段或硬件電路。 信息、自變量、參數(shù)、數(shù)據(jù)等可以經(jīng)由任何合適的機(jī)制傳遞、轉(zhuǎn)發(fā)或發(fā)送,所述任何合適的機(jī)制包括存儲器共享、消息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)取τ谲浖?shí)現(xiàn),本文所描述的技術(shù)可以利用執(zhí)行本文所述的功能的模塊(例如, 過程,函數(shù)等)實(shí)現(xiàn)。所述軟件代碼可以存儲在存儲器單元中,并且由處理器執(zhí)行。所述存儲器單元可以在所述處理器內(nèi)部或外部實(shí)現(xiàn),在外部實(shí)現(xiàn)的情況下,所述存儲器單元可以通過本領(lǐng)域中公知的各種手段,可通信地耦合到所述處理器。本領(lǐng)域普通技術(shù)人員將認(rèn)識到,可以使用多種不同技術(shù)中的任何一種來代表信息和信號。例如,上面的說明書中引用的數(shù)據(jù)、指令、命令、信息、信號、比特、符號和芯片可以用電壓、電流、電磁波、磁場或粒子、光場或粒子或它們的任意組合來表示。此外,本領(lǐng)域普通技術(shù)人員將認(rèn)識到,結(jié)合這里公開的實(shí)施例描述的多種示例性邏輯塊、模塊、電路和算法步驟可以被實(shí)現(xiàn)為電子硬件、計算機(jī)軟件或二者的組合。為了清楚圖示硬件和軟件的可相互轉(zhuǎn)換性,多種示例性組件、塊、模塊、電路和步驟已經(jīng)在上文寬泛地就其功能進(jìn)行了描述。這些功能是被實(shí)現(xiàn)為硬件還是軟件取決于具體應(yīng)用和整個系統(tǒng)的設(shè)計限制。有經(jīng)驗(yàn)的技術(shù)人員可以針對每個具體應(yīng)用以多種方式實(shí)現(xiàn)這里描述的功能,但是這些實(shí)施決定不應(yīng)被理解為引起對本發(fā)明實(shí)施例的范圍的偏離。結(jié)合這里公開的實(shí)施例描述的多種示例性邏輯塊、模塊和電路可以被實(shí)現(xiàn)為被設(shè)計成執(zhí)行這里描述的功能的通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、或者其他可編程邏輯器件、分立門或晶體管邏輯、分立硬件組件、 或他們的任何組合,或者以上述形式執(zhí)行。還可以使用計算設(shè)備的組合(例如,DSP和微處理器的組合、多個微處理器、或者任何其他這樣的配置)來實(shí)現(xiàn)邏輯。結(jié)合這里公開的實(shí)施例描述的方法、序列和/或算法可以直接以硬件、由處理器執(zhí)行的軟件模塊、或者二者組合的形式實(shí)現(xiàn)。軟件模塊可以駐留在RAM存儲器、閃存、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移除盤、CD-ROM、或者本領(lǐng)域公知的任何其他形式的存儲介質(zhì)中。示例性存儲介質(zhì)耦合到處理器中,使得處理器可以從存儲介質(zhì)讀取信息,并向存儲介質(zhì)寫入信息。在替代方案中,存儲介質(zhì)可以集成到處理器。處理器和存儲介質(zhì)可以駐留在ASIC中。盡管前面公開的內(nèi)容示出了本發(fā)明的示例性實(shí)施例,但是應(yīng)當(dāng)注意,在不背離權(quán)利要求限定的本發(fā)明的范圍的前提下,可以進(jìn)行多種改變和修改。根據(jù)這里描述的發(fā)明實(shí)施例的方法權(quán)利要求的功能、步驟和/或動作不需以任何特定順序執(zhí)行。此外,盡管本發(fā)明的元素可以以個體形式描述或要求,但是也可以設(shè)想多個,除非明確限制為單數(shù)。盡管已經(jīng)結(jié)合詳細(xì)示出并描述的優(yōu)選實(shí)施例公開了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對于上述本發(fā)明所提出的利用RTCB對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法和系統(tǒng),還可以在不脫離本發(fā)明內(nèi)容的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。
權(quán)利要求
1.一種利用根信任計算基(RTCB)來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法, 包括初始化受保護(hù)進(jìn)程;對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用; 監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù);并且監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。
2.如權(quán)利要求1所述的方法,其中,初始化受保護(hù)進(jìn)程的步驟還包括初始化所述受保護(hù)進(jìn)程的安全訪問策略集,使得所述安全訪問策略集中僅僅包含所述受保護(hù)進(jìn)程的身份。
3.如權(quán)利要求1所述的方法,其中,控制所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境,以防止所述動態(tài)計算環(huán)境被非法使用的步驟還包括當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中,并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中;并且將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的內(nèi)存空間的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。
4.如權(quán)利要求1所述的方法,其中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還包括當(dāng)任意一個進(jìn)程要求分配一個新內(nèi)存空間時,僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間。
5.如權(quán)利要求4所述的方法,還包括當(dāng)該任意進(jìn)程是受保護(hù)進(jìn)程時,將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集;撤銷其它進(jìn)程通過MMU訪問該受保護(hù)進(jìn)程所使用的內(nèi)存空間的權(quán)限;并且通知IOMMU不允許任意外圍設(shè)備訪問該受保護(hù)進(jìn)程的內(nèi)存空間。
6.如權(quán)利要求1所述的方法,其中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還包括當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,將所述受保護(hù)進(jìn)程的身份從該內(nèi)存空間的安全訪問策略集中刪除;當(dāng)該內(nèi)存空間的安全訪問策略集為空時,擦除該內(nèi)存空間中記錄的所有信息;并且清除該內(nèi)存空間的安全訪問策略集。
7.如權(quán)利要求6所述的方法,還包括當(dāng)所述受保護(hù)進(jìn)程所釋放的內(nèi)存空間是其所使用的最后一個內(nèi)存空間時,清除所述受保護(hù)進(jìn)程的安全訪問策略集,并且終止所述受保護(hù)進(jìn)程。
8.如權(quán)利要求1所述的方法,其中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還包括禁止該其它進(jìn)程裝載該保護(hù)進(jìn)程的MMU表。
9.如權(quán)利要求8所述的方法,還包括當(dāng)該其它進(jìn)程是內(nèi)核,且該受保護(hù)進(jìn)程陷入該其它進(jìn)程時,為該其它進(jìn)程裝載只含有內(nèi)核內(nèi)存信息的偽MMU表。
10.如權(quán)利要求1所述的方法,其中,監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù)的步驟還包括如果當(dāng)前處理的其它進(jìn)程是一個受保護(hù)進(jìn)程,且該其它進(jìn)程的身份在所述受保護(hù)進(jìn)程的內(nèi)存空間的安全訪問策略集中,則允許該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間;否則,阻止該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間。
11.如權(quán)利要求1所述的方法,其中,使用輸入/輸出內(nèi)存管理單元(IOMMU)來對任意外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制包括禁止任意外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間;以及在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作。
12.如權(quán)利要求11所述的方法,其中,禁止所有外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間的步驟還包括當(dāng)利用MMU為所述受保護(hù)進(jìn)程成功分配一個內(nèi)存空間后,通知IOMMU更新任意外圍設(shè)備的IOMMU表,以撤銷并永久禁止任意外圍設(shè)備通過IOMMU表訪問所述受保護(hù)進(jìn)程新分配的內(nèi)存空間的權(quán)限。
13.如權(quán)利要求11所述的方法,其中,在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作的步驟還包括在所述受保護(hù)進(jìn)程需要將信息從外圍設(shè)備輸入至該受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間時,將該外圍設(shè)備輸入的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中;利用該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對在該所述IO緩存區(qū)中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換;以及將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。
14.如權(quán)利要求11所述的方法,其中,在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作的步驟還包括在該受保護(hù)進(jìn)程需要向外圍設(shè)備輸出信息時,利用該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰,對所述受保護(hù)進(jìn)程所要輸出的信息進(jìn)行輸出型密碼轉(zhuǎn)換;將經(jīng)過輸出型密碼轉(zhuǎn)換后的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO 緩存區(qū)中;將存儲在所述IO緩存區(qū)中的內(nèi)容信息輸出到該外圍設(shè)備。
15.如權(quán)利要求13或14所述的方法,其中,所述在該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰是進(jìn)程密鑰或系統(tǒng)密鑰。
16.一種利用根信任計算基(RTCB)來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的系統(tǒng),包括初始化單元,用于初始化受保護(hù)進(jìn)程的安全訪問策略集,使得該安全訪問策略集僅僅包含該受保護(hù)進(jìn)程的身份;動態(tài)計算環(huán)境保護(hù)單元,用于對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用;內(nèi)存管理單元(MMU)監(jiān)控單元,用于監(jiān)控MMU的使用, 對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù);以及輸入輸出內(nèi)存管理單元(IOMMU)監(jiān)控單元,用于監(jiān)控IOMMU的使用,對外圍設(shè)備通過 IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。
17.如權(quán)利要求16所述的系統(tǒng),其中,所述動態(tài)計算環(huán)境保護(hù)單元還包括安全訪問策略集添加單元,用于當(dāng)所述受保護(hù)進(jìn)程要求在其安全訪問策略集中添加另一其它進(jìn)程的身份時,將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程的安全訪問策略集中, 并且將該其它進(jìn)程的身份添加到所述受保護(hù)進(jìn)程所使用的內(nèi)存空間的安全訪問策略集中; 以及安全訪問策略集設(shè)置單元,用于將該其它進(jìn)程的安全訪問策略集以及該其它進(jìn)程所使用的內(nèi)存空間的安全訪問策略集設(shè)置為與所述受保護(hù)進(jìn)程的安全訪問策略集相同。
18.如權(quán)利要求16所述的系統(tǒng),其中,所述MMU監(jiān)控單元還包括內(nèi)存空間分配單元,用于當(dāng)任意一個進(jìn)程要求分配一個新內(nèi)存空間時,僅僅為該進(jìn)程分配一個未擁有安全訪問策略集的新內(nèi)存空間;以及內(nèi)存空間刪除單元,用于當(dāng)所述受保護(hù)進(jìn)程要求刪除一個內(nèi)存空間時,刪除該內(nèi)存空間。
19.如權(quán)利要求18所述的系統(tǒng),其中,所述內(nèi)存空間分配單元還包括安全訪問策略集設(shè)置單元,用于在該任意進(jìn)程是受保護(hù)進(jìn)程時,將該新內(nèi)存空間的安全訪問策略集設(shè)置為作為受保護(hù)進(jìn)程的該任意進(jìn)程的安全訪問策略集;撤銷單元,用于撤銷其它進(jìn)程通過MMU訪問該受保護(hù)進(jìn)程所使用的內(nèi)存空間的權(quán)限;以及通知單元,用于通知IOMMU不允許任意外圍設(shè)備訪問該受保護(hù)進(jìn)程的內(nèi)存空間。
20.如權(quán)利要求1所述的系統(tǒng),其中,所述內(nèi)存空間刪除單元還包括身份刪除單元,用于當(dāng)所述受保護(hù)進(jìn)程要求釋放一個內(nèi)存空間時,將所述受保護(hù)進(jìn)程的身份從該內(nèi)存空間的安全訪問策略集中刪除;信息擦除單元,用于當(dāng)該內(nèi)存空間的安全訪問策略集為空時,擦除該內(nèi)存空間中記錄的所有信息;以及安全訪問策略集清除單元,用于清除該內(nèi)存空間的安全訪問策略集。
21.如權(quán)利要求20所述的系統(tǒng),其中,當(dāng)所述受保護(hù)進(jìn)程所釋放的內(nèi)存空間是其所使用的最后一個內(nèi)存空間時,所述安全訪問策略集清除單元清除所述受保護(hù)進(jìn)程的安全訪問策略集,并且,所述系統(tǒng)還包括終止單元,用于終止所述受保護(hù)進(jìn)程。
22.如權(quán)利要求16所述的系統(tǒng),其中,所述MMU監(jiān)控單元還包括MMU表裝載禁止單元,用于禁止該其它進(jìn)程裝載該受保護(hù)進(jìn)程的MMU表。
23.如權(quán)利要求22所述的系統(tǒng),其中,所述MMU監(jiān)控單元還包括偽MMU表裝載單元,用于當(dāng)該其它進(jìn)程是內(nèi)核,且該受保護(hù)進(jìn)程陷入該其它進(jìn)程時,為該其它進(jìn)程裝載只含有內(nèi)核內(nèi)存信息的偽MMU表。
24.如權(quán)利要求16所述的系統(tǒng),其中,所述MMU監(jiān)控單元還包括MMU訪問控制單元,用于如果當(dāng)前處理的其它進(jìn)程是一個受保護(hù)進(jìn)程,且該其它進(jìn)程在所述受保護(hù)進(jìn)程的內(nèi)存空間的安全訪問策略集中,則允許該當(dāng)前處理的其它進(jìn)程通過MMU 訪問所述受保護(hù)進(jìn)程的內(nèi)存空間;否則,阻止該當(dāng)前處理的其它進(jìn)程通過MMU訪問所述受保護(hù)進(jìn)程的內(nèi)存空間。
25.如權(quán)利要求16所述的系統(tǒng),其中,所述IOMMU監(jiān)控單元包括內(nèi)存空間訪問禁止單元,用于禁止任意外圍設(shè)備通過IOMMU來訪問所述受保護(hù)進(jìn)程的計算環(huán)境的內(nèi)存空間;以及IO交互處理單元,用于在所述受保護(hù)進(jìn)程需要與外圍設(shè)備進(jìn)行IO交互時,允許該外圍設(shè)備使用IOMMU表來協(xié)作所述受保護(hù)進(jìn)程完成IO操作。
26.如權(quán)利要求25所述的系統(tǒng),其中,IO交互處理單元還包括輸入/輸出型密碼轉(zhuǎn)換單元,用于對要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息進(jìn)行輸出/輸入型密碼轉(zhuǎn)換;IO緩存區(qū),用于存儲要向外圍設(shè)備寫入或從外圍設(shè)備讀取的信息,并將信息寫入到外圍設(shè)備或從外圍設(shè)備讀取,其中,在向外圍設(shè)備寫入信息時,利用在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對所述受保護(hù)進(jìn)程要輸出到外圍設(shè)備的信息進(jìn)行輸出型密碼轉(zhuǎn)換;將經(jīng)過輸出型密碼轉(zhuǎn)換后的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中,以及將存儲在所述IO 緩存區(qū)中的信息輸出到該外圍設(shè)備,以及在從外圍設(shè)備讀取信息時,將通過該外部IO設(shè)備讀取的信息存儲在與該外圍設(shè)備對應(yīng)且在IOMMU表中設(shè)置的IO緩存區(qū)中;利用與在該受保護(hù)進(jìn)程的密鑰策略集中設(shè)置的密鑰,對在所述IO緩存區(qū)中緩存的信息進(jìn)行輸入型密碼轉(zhuǎn)換;以及將經(jīng)過輸入型密碼轉(zhuǎn)換后的信息存儲在所述受保護(hù)進(jìn)程的輸入緩存區(qū)中,以供所述受保護(hù)進(jìn)程使用。
27.如權(quán)利要求26所述的系統(tǒng),其中,所述在該受保護(hù)進(jìn)程的密碼策略集中設(shè)置的密鑰是進(jìn)程密鑰或系統(tǒng)密鑰。
全文摘要
本發(fā)明提供了一種利用根信任計算基(RTCB)來對受保護(hù)進(jìn)程的計算環(huán)境進(jìn)行隔離保護(hù)的方法,包括初始化受保護(hù)進(jìn)程;對所述受保護(hù)進(jìn)程的動態(tài)計算環(huán)境進(jìn)行控制,以防止所述動態(tài)計算環(huán)境被非法使用;監(jiān)控內(nèi)存管理單元(MMU)的使用,對所述受保護(hù)進(jìn)程的內(nèi)存空間進(jìn)行隔離保護(hù);并且監(jiān)控輸入/輸出內(nèi)存管理單元(IOMMU)的使用,對外圍設(shè)備通過IOMMU進(jìn)行的與所述受保護(hù)進(jìn)程間的交互操作進(jìn)行控制。利用上述方法,能夠在運(yùn)行受保護(hù)進(jìn)程時,針對分配給該受保護(hù)進(jìn)程的內(nèi)存空間,禁止在該受保護(hù)進(jìn)程的安全訪問策略集之外的所有其它進(jìn)程通過MMU訪問該內(nèi)存空間和/或禁止任意IO設(shè)備訪問該內(nèi)存空間,從而形成真正的安全隔離。
文檔編號G06F21/00GK102375947SQ20101026238
公開日2012年3月14日 申請日期2010年8月25日 優(yōu)先權(quán)日2010年8月16日
發(fā)明者張京城, 張逢喆, 楊子夜, 毛文波, 臧斌宇, 陳海波 申請人:伊姆西公司