【】本發(fā)明實施例涉及虛擬機,具體地涉及一種數(shù)據(jù)處理方法、宿主機和虛擬機。
背景技術(shù)
0、
背景技術(shù):
1、隨著云計算技術(shù)的普及,越來越多的開發(fā)者和企業(yè)都選擇將自己的應(yīng)用程序托管到云計算平臺的數(shù)據(jù)中心中。企業(yè)用戶可以通過租用云計算平臺提供的云服務(wù),避免購買硬件和軟件的成本,借助云服務(wù)提供商已經(jīng)構(gòu)建好的基礎(chǔ)設(shè)施,可以輕松部署自己的應(yīng)用。然而在云計算環(huán)境下,數(shù)據(jù)安全始終是一大難題。近年來,云計算場景下的數(shù)據(jù)安全問題受到廣泛關(guān)注。如何保證云租戶的數(shù)據(jù)機密性將成為云計算行業(yè)未來發(fā)展的一個重要課題。
2、目前,云服務(wù)提供商主要采用系統(tǒng)虛擬化技術(shù)對外提供服務(wù),因此機密虛擬機已經(jīng)成為保障云計算數(shù)據(jù)隱私和保護數(shù)據(jù)安全的核心手段和關(guān)鍵技術(shù)。
3、機密虛擬機具備數(shù)據(jù)安全功能,但是由于機密虛擬機的私有內(nèi)存與宿主機的虛擬機監(jiān)控器存在硬件隔離,使得宿主機無法訪問私有內(nèi)存,因此宿主機和機密虛擬機之間需要通過回彈緩沖區(qū)(bounce?buffer)實現(xiàn)數(shù)據(jù)的拷貝,而采用回彈緩沖區(qū)進(jìn)行數(shù)據(jù)拷貝會增加額外的i/o數(shù)據(jù)處理的開銷,從而降低了機密虛擬機的輸入輸出(input/output,i/o)性能。
技術(shù)實現(xiàn)思路
0、
技術(shù)實現(xiàn)要素:
1、有鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)處理方法、宿主機和虛擬機,用以消除額外的i/o數(shù)據(jù)處理的開銷,從而提升虛擬機的i/o性能。
2、第一方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備,所述計算機設(shè)備包括:宿主機和虛擬機,所述虛擬機運行在所述宿主機上,所述計算機設(shè)備包括私有內(nèi)存和共享內(nèi)存;
3、所述方法包括:
4、所述虛擬機根據(jù)源應(yīng)用的有效載荷生成密文數(shù)據(jù)和驗證標(biāo)簽,并將所述密文數(shù)據(jù)和所述驗證標(biāo)簽存儲至所述共享內(nèi)存;
5、所述虛擬機對所述密文數(shù)據(jù)和所述驗證標(biāo)簽進(jìn)行封裝生成數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)頭、所述密文數(shù)據(jù)和所述驗證標(biāo)簽,所述數(shù)據(jù)頭存儲于所述私有內(nèi)存中;
6、所述宿主機從所述共享內(nèi)存拷貝所述密文數(shù)據(jù)和所述驗證標(biāo)簽,并通過回彈緩沖區(qū)從所述私有內(nèi)存中拷貝所述數(shù)據(jù)頭。
7、第二方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備,所述計算機設(shè)備包括:宿主機和虛擬機,所述虛擬機運行在所述宿主機上,所述計算機設(shè)備包括私有內(nèi)存和共享內(nèi)存;
8、所述方法包括:
9、所述宿主機將獲取的數(shù)據(jù)包刷新到所述共享內(nèi)存,所述數(shù)據(jù)包包括數(shù)據(jù)頭、密文數(shù)據(jù)和驗證標(biāo)簽;
10、所述虛擬機對從所述共享內(nèi)存存儲至所述私有內(nèi)存的數(shù)據(jù)頭進(jìn)行解析,以確定出目標(biāo)應(yīng)用;
11、所述虛擬機若對所述驗證標(biāo)簽驗證成功,對所述密文數(shù)據(jù)進(jìn)行解密得到有效載荷,并將所述有效載荷存儲至所述私有內(nèi)存中,以通過所述私有內(nèi)存將所述有效載荷發(fā)送至目標(biāo)應(yīng)用。
12、第三方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備的虛擬機,所述計算機設(shè)備包括私有內(nèi)存和共享內(nèi)存;
13、所述方法包括:
14、根據(jù)源應(yīng)用的有效載荷生成密文數(shù)據(jù)和驗證標(biāo)簽,并將所述密文數(shù)據(jù)和所述驗證標(biāo)簽存儲至所述共享內(nèi)存;
15、對所述密文數(shù)據(jù)和所述驗證標(biāo)簽進(jìn)行封裝生成數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)頭、所述密文數(shù)據(jù)和所述驗證標(biāo)簽,所述數(shù)據(jù)頭存儲于所述私有內(nèi)存中。
16、在一種可能的實現(xiàn)方式中,所述根據(jù)源應(yīng)用的有效載荷生成密文數(shù)據(jù)和驗證標(biāo)簽之前,還包括:
17、將所述有效載荷存儲至寄存器;
18、所述根據(jù)源應(yīng)用的有效載荷生成密文數(shù)據(jù)和驗證標(biāo)簽,包括:
19、對從所述寄存器中讀取的有效載荷進(jìn)行加密計算生成所述密文數(shù)據(jù),并將所述密文數(shù)據(jù)存儲至所述寄存器;
20、對根據(jù)從所述寄存器中讀取的密文數(shù)據(jù)生成所述驗證標(biāo)簽。
21、第四方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備的宿主機,所述計算機設(shè)備包括私有內(nèi)存和共享內(nèi)存;
22、所述方法包括:
23、從所述共享內(nèi)存拷貝所述密文數(shù)據(jù)和所述驗證標(biāo)簽,并通過回彈緩沖區(qū)從所述私有內(nèi)存中拷貝所述數(shù)據(jù)頭。
24、第五方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備的宿主機,所述計算機設(shè)備包括共享內(nèi)存;
25、所述方法包括:
26、將獲取的數(shù)據(jù)包刷新到所述共享內(nèi)存,所述數(shù)據(jù)包包括數(shù)據(jù)頭、密文數(shù)據(jù)和驗證標(biāo)簽。
27、在一種可能的實現(xiàn)方式中,所述將獲取的數(shù)據(jù)包刷新到所述共享內(nèi)存之前,還包括:
28、通過所述輸入輸出設(shè)備,接收初始數(shù)據(jù)包;
29、根據(jù)設(shè)置的刷新規(guī)則對所述初始數(shù)據(jù)包進(jìn)行預(yù)處理。
30、在一種可能的實現(xiàn)方式中,所述根據(jù)設(shè)置的刷新規(guī)則對所述數(shù)據(jù)包進(jìn)行預(yù)處理,包括:
31、檢測所述初始數(shù)據(jù)包是否存在緩存的同流數(shù)據(jù)包;
32、若檢測出所述初始數(shù)據(jù)包存在同流數(shù)據(jù)包,判斷所述初始數(shù)據(jù)包的狀態(tài)信息與同流數(shù)據(jù)包的狀態(tài)信息是否一致;
33、若判斷出所述初始數(shù)據(jù)包的狀態(tài)信息與同流數(shù)據(jù)包的狀態(tài)信息一致,將所述初始數(shù)據(jù)包與所述同流數(shù)據(jù)包進(jìn)行合并,生成所述數(shù)據(jù)包。
34、在一種可能的實現(xiàn)方式中,所述方法還包括:
35、若判斷出所述初始數(shù)據(jù)包的狀態(tài)信息與同流數(shù)據(jù)包的狀態(tài)信息不一致,將所述緩存的同流數(shù)據(jù)包作為所述數(shù)據(jù)包。
36、在一種可能的實現(xiàn)方式中,所述初始數(shù)據(jù)包的數(shù)據(jù)頭包括推標(biāo)志;所述方法還包括:若檢測出所述初始數(shù)據(jù)包不存在同流數(shù)據(jù)包,判斷所述推psh標(biāo)志是否置位;
37、若判斷出所述psh標(biāo)志置位時,將所述初始數(shù)據(jù)包作為所述數(shù)據(jù)包。
38、第六方面提供了一種數(shù)據(jù)處理方法,所述數(shù)據(jù)處理方法基于計算機設(shè)備的虛擬機,所述計算機設(shè)備包括私有內(nèi)存和共享內(nèi)存;
39、所述方法包括:
40、對從所述共享內(nèi)存存儲至所述私有內(nèi)存的數(shù)據(jù)頭進(jìn)行解析,以確定出目標(biāo)應(yīng)用;
41、若對所述驗證標(biāo)簽驗證成功,對所述密文數(shù)據(jù)進(jìn)行解密得到有效載荷,并將所述有效載荷存儲至所述私有內(nèi)存中,以通過所述私有內(nèi)存將所述有效載荷發(fā)送至目標(biāo)應(yīng)用。
42、在一種可能的實現(xiàn)方式中,所述若對驗證標(biāo)簽驗證成功,對所述密文數(shù)據(jù)進(jìn)行解密得到有效載荷之前,還包括:
43、從所述共享內(nèi)存中讀取所述密文數(shù)據(jù)和所述驗證標(biāo)簽,并將所述密文數(shù)據(jù)和所述驗證標(biāo)簽存儲至寄存器;
44、若對驗證標(biāo)簽驗證成功,對所述密文數(shù)據(jù)進(jìn)行解密得到有效載荷,包括:
45、所述對從所述寄存器中讀取的驗證標(biāo)簽進(jìn)行驗證;
46、若對所述驗證標(biāo)簽驗證成功,對從所述寄存器中讀取的密文數(shù)據(jù)進(jìn)行解密得到所述有效載荷。
47、第七方面提供了一種虛擬機,包括:前端驅(qū)動程序模塊、網(wǎng)絡(luò)協(xié)議棧模塊和端到端加解密模塊;
48、所述端到端加解密模塊,用于根據(jù)源應(yīng)用的有效載荷生成密文數(shù)據(jù)和驗證標(biāo)簽,并將所述密文數(shù)據(jù)和所述驗證標(biāo)簽存儲至共享內(nèi)存中;
49、所述網(wǎng)絡(luò)協(xié)議棧模塊,用于對所述密文數(shù)據(jù)和所述驗證標(biāo)簽進(jìn)行封裝生成數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)頭、所述密文數(shù)據(jù)和所述驗證標(biāo)簽,所述數(shù)據(jù)頭存儲于私有內(nèi)存中;
50、所述前端驅(qū)動程序模塊,用于向宿主機的后端驅(qū)動程序模塊發(fā)送第一通知信息。
51、在一種可能的實現(xiàn)方式中,所述虛擬機還包括i/o數(shù)據(jù)安全保護模塊;
52、所述i/o數(shù)據(jù)安全保護模塊,用于將所述有效載荷存儲至寄存器;
53、所述端到端加解密模塊具體用于對從所述寄存器中讀取的有效載荷進(jìn)行加密計算生成所述密文數(shù)據(jù);
54、所述i/o數(shù)據(jù)安全保護模塊,還用于將所述密文數(shù)據(jù)存儲至所述寄存器;
55、所述端到端加解密模塊具體用于根據(jù)從所述寄存器中讀取的密文數(shù)據(jù)生成所述驗證標(biāo)簽。
56、第八方面提供了一種宿主機,包括:后端驅(qū)動程序模塊;
57、所述后端驅(qū)動程序模塊,用于根據(jù)接收到的所述虛擬機的前端驅(qū)動程序模塊發(fā)送的第一通知信息,從共享內(nèi)存拷貝所述密文數(shù)據(jù)和所述驗證標(biāo)簽,并通過回彈緩沖區(qū)從私有內(nèi)存中拷貝所述數(shù)據(jù)頭。
58、第九方面提供了一種虛擬機,包括:前端驅(qū)動程序模塊、網(wǎng)絡(luò)協(xié)議棧模塊和端到端加解密模塊;
59、所述前端驅(qū)動程序模塊,用于向宿主機的后端驅(qū)動程序模塊發(fā)送第二通知信息,以供所述后端驅(qū)動程序模塊根據(jù)所述第二通知信息,將獲取的數(shù)據(jù)包刷新到共享內(nèi)存,所述數(shù)據(jù)包包括數(shù)據(jù)頭、密文數(shù)據(jù)和驗證標(biāo)簽;
60、所述網(wǎng)絡(luò)協(xié)議棧模塊,用于對從所述共享內(nèi)存存儲至私有內(nèi)存的數(shù)據(jù)頭進(jìn)行解析,以確定出目標(biāo)應(yīng)用;
61、所述端到端加解密模塊,用于若對驗證標(biāo)簽驗證成功,對所述密文數(shù)據(jù)進(jìn)行解密得到有效載荷,并將所述有效載荷存儲至所述私有內(nèi)存中,以通過所述私有內(nèi)存將所述有效載荷發(fā)送至目標(biāo)應(yīng)用。
62、在一種可能的實現(xiàn)方式中,所述虛擬機還包括i/o數(shù)據(jù)安全保護模塊;
63、所述i/o數(shù)據(jù)安全保護模塊,用于從所述共享內(nèi)存中讀取所述密文數(shù)據(jù)和所述驗證標(biāo)簽,并將所述密文數(shù)據(jù)和所述驗證標(biāo)簽存儲至寄存器;
64、所述端到端加解密模塊具體用于對從所述寄存器中讀取的驗證標(biāo)簽進(jìn)行驗證,若對所述驗證標(biāo)簽驗證成功,對從所述寄存器中讀取的密文數(shù)據(jù)進(jìn)行解密得到所述有效載荷。
65、第十方面提供了一種一種宿主機,包括:后端驅(qū)動程序模塊;
66、所述后端驅(qū)動程序模塊,用于根據(jù)接收到的虛擬機的前端驅(qū)動程序模塊發(fā)送的第二通知信息,將獲取的數(shù)據(jù)包刷新到共享內(nèi)存,所述數(shù)據(jù)包包括數(shù)據(jù)頭、密文數(shù)據(jù)和驗證標(biāo)簽。
67、在一種可能的實現(xiàn)方式中,所述后端驅(qū)動程序模塊用于通過所述輸入輸出設(shè)備,接收初始數(shù)據(jù)包;根據(jù)設(shè)置的刷新規(guī)則對所述初始數(shù)據(jù)包進(jìn)行預(yù)處理。
68、在一種可能的實現(xiàn)方式中,所述后端驅(qū)動程序模塊包括i/o數(shù)據(jù)預(yù)處理模塊;
69、所述i/o數(shù)據(jù)預(yù)處理模塊,用于檢測所述初始數(shù)據(jù)包是否存在緩存的同流數(shù)據(jù)包;若檢測出所述初始數(shù)據(jù)包存在同流數(shù)據(jù)包,判斷所述初始數(shù)據(jù)包的狀態(tài)信息與同流數(shù)據(jù)包的狀態(tài)信息是否一致;若判斷出所述初始數(shù)據(jù)包的狀態(tài)信息與同流數(shù)據(jù)包的狀態(tài)信息一致,將所述初始數(shù)據(jù)包與所述同流數(shù)據(jù)包進(jìn)行合并,生成所述數(shù)據(jù)包。
70、第十一方面提供了一種宿主機,包括:一個或多個處理器;存儲器;以及一個或多個計算機程序,其中所述一個或多個計算機程序被存儲在所述存儲器中,所述一個或多個計算機程序包括指令,當(dāng)所述指令被所述宿主機執(zhí)行時,使得所述宿主機執(zhí)行第四方面的實現(xiàn)方式中的數(shù)據(jù)處理方法或者第五方面或者第五方面的任一可能的實現(xiàn)方式中的數(shù)據(jù)處理方法。
71、本發(fā)明實施例提供的技術(shù)方案中,虛擬機將生成的密文數(shù)據(jù)和驗證標(biāo)簽存儲至共享內(nèi)存中,宿主機可從共享內(nèi)存拷貝密文數(shù)據(jù)和驗證標(biāo)簽,且數(shù)據(jù)頭存儲于私有內(nèi)存中,宿主機可通過回彈緩沖區(qū)從私有內(nèi)存中拷貝數(shù)據(jù)頭,無需采用回彈緩沖區(qū)拷貝密文數(shù)據(jù)和驗證標(biāo)簽,消除了采用回彈緩沖區(qū)拷貝密文數(shù)據(jù)和驗證標(biāo)簽而產(chǎn)生的額外的i/o數(shù)據(jù)處理的開銷,從而提升了虛擬機的i/o性能。
72、本發(fā)明實施例提供的技術(shù)方案中,宿主機可將獲取的數(shù)據(jù)包刷新到共享內(nèi)存,消除了采用回彈緩沖區(qū)進(jìn)行數(shù)據(jù)拷貝而產(chǎn)生的額外的i/o數(shù)據(jù)處理的開銷,從而提升了虛擬機的i/o性能。