本技術(shù)涉及計(jì)算機(jī),特別涉及一種內(nèi)存管理方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及計(jì)算機(jī)程序。
背景技術(shù):
1、在高級(jí)精簡(jiǎn)指令集設(shè)備(advanced?risc?machines,arm)硬件架構(gòu)中,可以基于信任區(qū)(trustzone)技術(shù)將硬件資源劃分為富執(zhí)行環(huán)境(rich?execution?environment,ree)側(cè)和可信執(zhí)行環(huán)境(trusted?execution?environment,tee)側(cè),tee側(cè)的安全性高于ree側(cè),處理器能夠工作在ree側(cè),也能夠工作在tee側(cè),且能夠在ree側(cè)和tee側(cè)之間來回切換。ree側(cè)包括多個(gè)虛擬機(jī)(virtual?machine,vm),每個(gè)vm中運(yùn)行有客戶操作系統(tǒng)(guest?os)。然而,當(dāng)前的arm架構(gòu)中沒有定義內(nèi)存加密實(shí)現(xiàn)方案,無法在原生架構(gòu)上為每個(gè)vm分配密鑰,以對(duì)該vm對(duì)應(yīng)的物理內(nèi)存區(qū)間中的數(shù)據(jù)進(jìn)行加解密。換言之,在arm架構(gòu)沒有定義“一虛擬機(jī)一密鑰的”的內(nèi)存加密方案的情況下,無法對(duì)每個(gè)vm存儲(chǔ)在物理內(nèi)存中的數(shù)據(jù)進(jìn)行加密保護(hù),制約了arm架構(gòu)在機(jī)密計(jì)算應(yīng)用中的大規(guī)模發(fā)展。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種內(nèi)存管理方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及計(jì)算機(jī)程序,能夠在不更改原生架構(gòu)的情況下,對(duì)物理內(nèi)存中的多個(gè)加密內(nèi)存區(qū)間進(jìn)行管理,以實(shí)現(xiàn)“一虛擬機(jī)一密鑰的”的內(nèi)存加密。所述技術(shù)方案如下。
2、第一方面,提供了一種內(nèi)存管理方法,所述方法包括:
3、接收內(nèi)存分配請(qǐng)求,所述內(nèi)存分配請(qǐng)求用于請(qǐng)求為目標(biāo)虛擬機(jī)vm分配內(nèi)存區(qū)間;通過操作系統(tǒng)內(nèi)核獲取多個(gè)加密內(nèi)存區(qū)間的大小、物理地址和分配情況,所述分配情況用于指示所述加密內(nèi)存區(qū)間是否已被分配,所述多個(gè)加密內(nèi)存區(qū)間對(duì)應(yīng)不同的密鑰;基于所述多個(gè)加密內(nèi)存區(qū)間的大小和分配情況,從所述多個(gè)加密內(nèi)存區(qū)間中選擇一個(gè)加密內(nèi)存區(qū)間作為目標(biāo)加密內(nèi)存區(qū)間;基于所述目標(biāo)加密內(nèi)存區(qū)間的物理地址,將所述目標(biāo)加密內(nèi)存區(qū)間分配給所述目標(biāo)vm。
4、由于操作系統(tǒng)內(nèi)核負(fù)責(zé)創(chuàng)建和管理物理機(jī)中運(yùn)行的多個(gè)vm,且操作系統(tǒng)內(nèi)核可以訪問物理內(nèi)存,因此,本技術(shù)將多個(gè)加密內(nèi)存區(qū)間的大小和物理地址指示給操作系統(tǒng)內(nèi)核,使得操作系統(tǒng)內(nèi)核在創(chuàng)建vm時(shí),從物理內(nèi)存劃分的多個(gè)加密內(nèi)存區(qū)間中為vm分配對(duì)應(yīng)的加密內(nèi)存區(qū)間,從而在操作系統(tǒng)內(nèi)核中確定vm和加密內(nèi)存區(qū)間的對(duì)應(yīng)關(guān)系。如此,當(dāng)任一vm經(jīng)過操作系統(tǒng)內(nèi)核來訪問物理內(nèi)存時(shí),操作系統(tǒng)內(nèi)核可以直接將該vm的虛擬地址映射到該加密內(nèi)存區(qū)間的物理地址上,從而在物理內(nèi)存中基于該物理地址在對(duì)應(yīng)的加密內(nèi)存區(qū)間中讀寫數(shù)據(jù),此過程無需改變硬件架構(gòu),可以適用于不同的處理器架構(gòu)。
5、可選地,所述通過操作系統(tǒng)內(nèi)核獲取多個(gè)加密內(nèi)存區(qū)間的大小、物理地址和分配情況之前,所述方法還包括:讀取啟動(dòng)固件中的加密內(nèi)存配置信息,所述加密內(nèi)存配置信息用于指示所述多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大?。换谒龆鄠€(gè)加密內(nèi)存區(qū)間的數(shù)量和大小,從物理內(nèi)存中劃分出所述多個(gè)加密內(nèi)存區(qū)間;將所述多個(gè)加密內(nèi)存區(qū)間的大小和物理地址指示給所述操作系統(tǒng)內(nèi)核。
6、也即是,對(duì)物理機(jī)的啟動(dòng)固件進(jìn)行相應(yīng)修改,以將加密內(nèi)存配置信息寫在啟動(dòng)固件中。如此,物理機(jī)上電啟動(dòng)后,先運(yùn)行啟動(dòng)固件時(shí),即可讀取啟動(dòng)固件中的加密內(nèi)存配置信息,并從物理內(nèi)存中劃分多個(gè)加密內(nèi)存區(qū)間。
7、可選地,處理器在劃分多個(gè)加密內(nèi)存區(qū)間后,可以將該多個(gè)內(nèi)存加密區(qū)間標(biāo)記為保留(reserved)狀態(tài),以使得操作系統(tǒng)正常啟動(dòng)運(yùn)行時(shí),不受高級(jí)特權(quán)代碼(比如hypervisor)的影響。
8、可選地,所述基于所述多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大小,從物理內(nèi)存中劃分出所述多個(gè)加密內(nèi)存區(qū)間之后,所述方法還包括:將所述多個(gè)加密內(nèi)存區(qū)間的物理地址指示給內(nèi)存控制器,以使所述內(nèi)存控制器生成并存儲(chǔ)所述多個(gè)加密內(nèi)存區(qū)間對(duì)應(yīng)的密鑰。
9、在物理機(jī)中運(yùn)行多個(gè)vm的情況下,內(nèi)存控制器在多個(gè)vm訪問物理內(nèi)存時(shí),執(zhí)行虛擬內(nèi)存區(qū)間和物理內(nèi)存區(qū)間之間的內(nèi)存地址轉(zhuǎn)換,并在物理內(nèi)存中執(zhí)行數(shù)據(jù)讀寫操作。因此,在從物理內(nèi)存中劃分出多個(gè)加密內(nèi)存區(qū)間之后,還需將多個(gè)加密內(nèi)存區(qū)間的物理地址指示給內(nèi)存控制器,以使內(nèi)存控制器生成并存儲(chǔ)該多個(gè)加密內(nèi)存區(qū)間對(duì)應(yīng)的密鑰。
10、其中,內(nèi)存控制器為多個(gè)加密內(nèi)存區(qū)間生成的密鑰不同,即一個(gè)加密內(nèi)存區(qū)間對(duì)應(yīng)一個(gè)密鑰。如此,在將該加密內(nèi)存區(qū)間分配給vm后,可以保證該vm的數(shù)據(jù)是采用一個(gè)唯一的密鑰進(jìn)行加密存儲(chǔ)的,實(shí)現(xiàn)了“一虛擬機(jī)一密鑰”的內(nèi)存加密方案。
11、可選地,所述讀取啟動(dòng)固件中的加密內(nèi)存信息之前,所述方法還包括:顯示配置界面,所述配置界面用于指示用戶輸入所述多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大??;從所述配置界面中獲取所述多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大小,并將所述多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大小寫入所述啟動(dòng)固件中。
12、由于啟動(dòng)固件為物理機(jī)啟動(dòng)后最先運(yùn)行的程序,因此,將多個(gè)加密內(nèi)存區(qū)間的數(shù)量和大小寫入啟動(dòng)固件,可以在物理機(jī)上電啟動(dòng)后最先執(zhí)行加密內(nèi)存配置操作。
13、可選地,所述將所述目標(biāo)加密內(nèi)存區(qū)間分配給所述目標(biāo)vm之后,所述方法還包括:通過所述操作系統(tǒng)內(nèi)核更新所述目標(biāo)加密內(nèi)存區(qū)間的分配情況,以指示所述目標(biāo)加密內(nèi)存區(qū)間已被分配。
14、可選地,所述方法還包括:響應(yīng)于所述目標(biāo)vm的關(guān)閉請(qǐng)求,釋放所述目標(biāo)加密內(nèi)存區(qū)間,并通過所述操作系統(tǒng)內(nèi)核更新所述目標(biāo)加密內(nèi)存區(qū)間的分配情況,以指示所述目標(biāo)加密內(nèi)存區(qū)間未被分配。
15、由此可見,在操作系統(tǒng)內(nèi)核存儲(chǔ)多個(gè)加密內(nèi)存區(qū)間的大小和物理地址的情況下,操作系統(tǒng)內(nèi)核在目標(biāo)vm創(chuàng)建時(shí)可以直接為目標(biāo)vm分配加密內(nèi)存區(qū)間,以確定目標(biāo)vm和目標(biāo)加密內(nèi)存區(qū)間的對(duì)應(yīng)關(guān)系;操作系統(tǒng)內(nèi)核可以在目標(biāo)vm運(yùn)行時(shí)訪問對(duì)應(yīng)的目標(biāo)加密內(nèi)存區(qū)間,以實(shí)現(xiàn)數(shù)據(jù)讀寫;操作系統(tǒng)內(nèi)核還可以在目標(biāo)vm關(guān)閉時(shí),及時(shí)釋放目標(biāo)加密內(nèi)存區(qū)間的內(nèi)存資源。也即是,本技術(shù)借助操作系統(tǒng)內(nèi)核來對(duì)物理內(nèi)存進(jìn)行分配和管理,而在進(jìn)行內(nèi)存訪問時(shí),直接基于物理地址進(jìn)行尋址即可,無需攜帶vm的關(guān)聯(lián)信息,也就無需拓展總線。
16、可選地,物理機(jī)的硬件資源被劃分為富執(zhí)行環(huán)境ree側(cè)和可信執(zhí)行環(huán)境tee側(cè),所述ree側(cè)包括多個(gè)vm,所述目標(biāo)vm為所述多個(gè)vm中的任意一個(gè)vm。
17、基于本技術(shù)的技術(shù)構(gòu)思,即使ree側(cè)的安全性低于tee側(cè),也可以為運(yùn)行在ree側(cè)的多個(gè)vm的數(shù)據(jù)通過加密內(nèi)存區(qū)間來提供保護(hù),保證了ree側(cè)多個(gè)vm的數(shù)據(jù)安全性。
18、第二方面,提供了一種內(nèi)存管理裝置,所述內(nèi)存管理裝置具有實(shí)現(xiàn)上述第一方面中內(nèi)存管理方法行為的功能。所述內(nèi)存管理裝置包括至少一個(gè)模塊,該至少一個(gè)模塊用于實(shí)現(xiàn)上述第一方面所提供的內(nèi)存管理方法的步驟。
19、第三方面,提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括處理器和存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)執(zhí)行上述第一方面所提供的內(nèi)存管理方法的計(jì)算機(jī)程序。所述處理器被配置為用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的計(jì)算機(jī)程序,以實(shí)現(xiàn)上述第一方面所述的內(nèi)存管理方法的步驟。
20、可選地,所述計(jì)算機(jī)設(shè)備還可以包括通信總線,該通信總線用于該處理器與存儲(chǔ)器之間建立連接。
21、第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有指令,當(dāng)所述指令在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面所述的內(nèi)存管理方法的步驟。
22、第五方面,提供了一種包含指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述指令在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面所述的內(nèi)存管理方法的步驟?;蛘哒f,提供了一種計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面所述的內(nèi)存管理方法的步驟。
23、上述第二方面、第三方面、第四方面和第五方面所獲得的技術(shù)效果與第一方面中對(duì)應(yīng)的技術(shù)手段獲得的技術(shù)效果近似,在這里不再贅述。