亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

應(yīng)用于虛擬化場(chǎng)景的安全通信方法及設(shè)備與流程

文檔序號(hào):11156213閱讀:447來(lái)源:國(guó)知局
應(yīng)用于虛擬化場(chǎng)景的安全通信方法及設(shè)備與制造工藝

本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種應(yīng)用于虛擬化場(chǎng)景的安全通信方法及設(shè)備。



背景技術(shù):

在UNIX/Linux類(lèi)操作系統(tǒng)下,用戶空間進(jìn)程的網(wǎng)絡(luò)通信一般是通過(guò)本機(jī)內(nèi)核協(xié)議棧提供的套接字(socket)抽象接口完成。一般來(lái)說(shuō)是在創(chuàng)建套接字描述符時(shí)決定選擇使用哪種通信協(xié)議。多數(shù)情況下,在讀寫(xiě)數(shù)據(jù)前還會(huì)執(zhí)行一系列控制操作以選擇網(wǎng)絡(luò)通信的對(duì)端、建立連接以及設(shè)置其它參數(shù)。

在沒(méi)有使用虛擬化技術(shù)的條件下,限制網(wǎng)絡(luò)通信的一般性做法要么基于系統(tǒng)調(diào)用過(guò)濾或者基于報(bào)文過(guò)濾,再輔以用IPC(Inter Process Communication,進(jìn)程間通信)機(jī)制控制指定進(jìn)程的網(wǎng)絡(luò)操作。一種可能的限制子進(jìn)程進(jìn)行網(wǎng)絡(luò)通信的方法如下:

a)父進(jìn)程先準(zhǔn)備好與子進(jìn)程的進(jìn)程間通信通道A。

b)父進(jìn)程創(chuàng)建子進(jìn)程。

c)限制子進(jìn)程只能使用收發(fā)數(shù)據(jù)的系統(tǒng)調(diào)用。

d)父進(jìn)程創(chuàng)建若干個(gè)套接字描述符,設(shè)置好所有通信參數(shù)。

e)父進(jìn)程通過(guò)通道A將套接字描述符傳遞給子進(jìn)程。

f)子進(jìn)程使用父進(jìn)程提供的套接字描述符進(jìn)行網(wǎng)絡(luò)通信。

但是虛擬化場(chǎng)景下,以上方式中的父進(jìn)程通常運(yùn)行于物理機(jī)上,而子進(jìn)程則通常運(yùn)行于對(duì)應(yīng)的虛擬機(jī)內(nèi),而虛擬機(jī)和物理機(jī)具有各自獨(dú)立的操作系統(tǒng)內(nèi)核(Kernel)。由于套接字描述符是由各個(gè)操作系統(tǒng)內(nèi)核獨(dú)立維護(hù)的,因此不能跨越不同的操作系統(tǒng)內(nèi)核直接傳遞,因此無(wú)法直接實(shí)現(xiàn)套接字描述符在父進(jìn)程和子進(jìn)程之間的直接傳遞。此外,由于有些系統(tǒng)調(diào)用可能同時(shí)用于收發(fā)數(shù)據(jù)或者進(jìn)行系統(tǒng)控制,因此簡(jiǎn)單的系統(tǒng)調(diào)用過(guò)濾無(wú)法達(dá)到很好的限制效果,系統(tǒng)性能和通信安全性不高。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)的目的是提供一種應(yīng)用于虛擬化場(chǎng)景的安全通信方法及設(shè)備,以解決現(xiàn)有技術(shù)中系統(tǒng)性能和通信安全性不高的問(wèn)題。

為實(shí)現(xiàn)上述目的,本申請(qǐng)?zhí)峁┝艘环N應(yīng)用于虛擬化場(chǎng)景的安全通信方法,該方法包括:

在虛擬機(jī)的子進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),判斷所述系統(tǒng)調(diào)用的屬性;

若所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用;

若所述系統(tǒng)調(diào)用為控制平面的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用,請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

進(jìn)一步地,所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用,包括:

虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí),其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

所述虛擬機(jī)的子進(jìn)程根據(jù)所述映射關(guān)系由所述物理機(jī)內(nèi)部標(biāo)識(shí)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),其中所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

所述虛擬機(jī)的子進(jìn)程根據(jù)所述虛擬機(jī)內(nèi)部標(biāo)識(shí)獲取套接字描述符,并使用該套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用。

進(jìn)一步地,所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用,包括:

若所述數(shù)據(jù)平面的系統(tǒng)調(diào)用為讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用,所述虛擬機(jī)的子進(jìn)程在使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),采用批處理的方式將數(shù)據(jù)由虛擬機(jī)的內(nèi)核空間傳輸至物理機(jī)的內(nèi)核空間。

進(jìn)一步地,所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用、請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng) 調(diào)用結(jié)果,包括:

若所述控制平面的系統(tǒng)調(diào)用為影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用;否則,所述虛擬機(jī)的子進(jìn)程請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

進(jìn)一步地,所述虛擬機(jī)的子進(jìn)程請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用之后,還包括:

獲取物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回的所述控制平面的系統(tǒng)調(diào)用的執(zhí)行結(jié)果。

進(jìn)一步地,在判斷所述系統(tǒng)調(diào)用的屬性之前,還包括:

創(chuàng)建用于標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道的套接字描述符。

進(jìn)一步地,創(chuàng)建用于標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道的套接字描述符,包括:

虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求,其中所述創(chuàng)建請(qǐng)求包括虛擬機(jī)內(nèi)部標(biāo)識(shí)、套接字參數(shù)和進(jìn)程控制信息,所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

所述物理機(jī)的父進(jìn)程根據(jù)套接字參數(shù)和進(jìn)程控制信息創(chuàng)建所述套接字描述符,執(zhí)行信道連接操作,并記錄物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系,其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

所述物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回所述套接字描述符的創(chuàng)建成功響應(yīng),其中,所述創(chuàng)建成功響應(yīng)包括物理機(jī)內(nèi)部標(biāo)識(shí);

所述虛擬機(jī)的子進(jìn)程根據(jù)所述創(chuàng)建成功響應(yīng)創(chuàng)建所述套接字描述符,記錄所述物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)映射關(guān)系,設(shè)置套接字抽象層的配置。

進(jìn)一步地,虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求之前,還包括:

確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道為受限通信信 道。

基于本申請(qǐng)的另一方面,還提供了一種應(yīng)用于虛擬化場(chǎng)景的安全通信設(shè)備,該設(shè)備包括:

判斷裝置,用于在虛擬機(jī)的子進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),判斷所述系統(tǒng)調(diào)用的屬性;

數(shù)據(jù)處理裝置,用于在所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用;

控制處理裝置,用于在所述系統(tǒng)調(diào)用為控制平面的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用,請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

進(jìn)一步地,所述數(shù)據(jù)處理裝置,用于在所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用時(shí),控制虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí),其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述映射關(guān)系由所述物理機(jī)內(nèi)部標(biāo)識(shí)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),其中所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);以及控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述虛擬機(jī)內(nèi)部標(biāo)識(shí)獲取套接字描述符,并使用該套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用。

進(jìn)一步地,所述數(shù)據(jù)處理裝置,用于在所述數(shù)據(jù)平面的系統(tǒng)調(diào)用為讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程在使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),采用批處理的方式將數(shù)據(jù)由虛擬機(jī)的內(nèi)核空間傳輸至物理機(jī)的內(nèi)核空間。

進(jìn)一步地,所述控制處理裝置,用于在所述控制平面的系統(tǒng)調(diào)用為影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用;否則,控制所述虛擬機(jī)的子進(jìn)程請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

進(jìn)一步地,所述控制處理裝置,還用于控制所述虛擬機(jī)的子進(jìn)程在請(qǐng) 求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用之后,獲取物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回的所述控制平面的系統(tǒng)調(diào)用的執(zhí)行結(jié)果。

進(jìn)一步地,該設(shè)備還包括:

創(chuàng)建裝置,用于在判斷所述系統(tǒng)調(diào)用的屬性之前,創(chuàng)建用于標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道的套接字描述符。

進(jìn)一步地,所述創(chuàng)建裝置,用于控制虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求,其中所述創(chuàng)建請(qǐng)求包括虛擬機(jī)內(nèi)部標(biāo)識(shí)、套接字參數(shù)和進(jìn)程控制信息,所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);控制所述物理機(jī)的父進(jìn)程根據(jù)套接字參數(shù)和進(jìn)程控制信息創(chuàng)建所述套接字描述符,執(zhí)行信道連接操作,并記錄物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系,其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);控制所述物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回所述套接字描述符的創(chuàng)建成功響應(yīng),其中,所述創(chuàng)建成功響應(yīng)包括物理機(jī)內(nèi)部標(biāo)識(shí);以及控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述創(chuàng)建成功響應(yīng)創(chuàng)建所述套接字描述符,記錄所述物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)映射關(guān)系,設(shè)置套接字抽象層的配置。

進(jìn)一步地,所述創(chuàng)建裝置,還用于在控制虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求之前,確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道為受限通信信道。

與現(xiàn)有技術(shù)相比,本申請(qǐng)的技術(shù)方案通過(guò)將系統(tǒng)調(diào)用分割為數(shù)據(jù)平面的系統(tǒng)調(diào)用和控制平面的系統(tǒng)調(diào)用,使得虛擬機(jī)內(nèi)的子進(jìn)程只能執(zhí)行數(shù)據(jù)平面的套接字操作,而物理機(jī)中的父進(jìn)程則負(fù)責(zé)控制平面的套接字操作,由此達(dá)到數(shù)據(jù)收發(fā)與系統(tǒng)控制的分割,使得子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的通信過(guò)程不會(huì)影響系統(tǒng)的全局配置,同時(shí)借助于虛擬化技術(shù)帶來(lái)的安全優(yōu)勢(shì),提供更加安全可靠的受限通信,提高系統(tǒng)性能。

此外,通過(guò)內(nèi)部標(biāo)識(shí)的方式傳遞套接字描述符,克服了無(wú)法在不同操作系統(tǒng)內(nèi)核之間直接傳遞套接字描述符的問(wèn)題,為方案的實(shí)現(xiàn)提供了便捷,減少了系統(tǒng)開(kāi)銷(xiāo),使得系統(tǒng)性能得到了提高。

附圖說(shuō)明

通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:

圖1為本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信方法的流程圖;

圖2為本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信方法中傳遞套接字描述符的具體處理流程圖;

圖3為本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信方法中創(chuàng)建套接字描述符的具體處理流程圖;

圖4為本申請(qǐng)實(shí)施例提供的一種應(yīng)用于虛擬化場(chǎng)景的安全通信設(shè)備的結(jié)構(gòu)示意圖;

圖5為本申請(qǐng)實(shí)施例提供的一種優(yōu)選的應(yīng)用于虛擬化場(chǎng)景的安全通信設(shè)備的結(jié)構(gòu)示意圖;

圖6為本申請(qǐng)實(shí)施例中建立虛擬機(jī)子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端的TCP連接的流程圖;

附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。

具體實(shí)施方式

下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。

在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電 可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

圖1示出了本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信方法,該方法包括以下步驟:

步驟S101,在虛擬機(jī)的子進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),判斷所述系統(tǒng)調(diào)用的屬性;

步驟S102,若所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用。

步驟S103,若所述系統(tǒng)調(diào)用為控制平面的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用、請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

通過(guò)將系統(tǒng)調(diào)用分割為數(shù)據(jù)平面的系統(tǒng)調(diào)用和控制平面的系統(tǒng)調(diào)用,使得虛擬機(jī)內(nèi)的子進(jìn)程只能執(zhí)行數(shù)據(jù)平面的套接字操作,而物理機(jī)中的父進(jìn)程則負(fù)責(zé)控制平面的套接字操作,由此達(dá)到數(shù)據(jù)收發(fā)與系統(tǒng)控制的分割,使得子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的通信過(guò)程不會(huì)影響系統(tǒng)的全局配置,同時(shí)借助于虛擬化技術(shù)帶來(lái)的安全優(yōu)勢(shì),提供更加安全可靠的受限通信,提高系統(tǒng)性能。

在此,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,上述方法的執(zhí)行主體可以包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備包括但不限于個(gè)人計(jì)算機(jī)、觸控終端等實(shí)現(xiàn);所述網(wǎng)絡(luò)設(shè)備包括但不限于如網(wǎng)絡(luò)主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或基于云計(jì)算的計(jì)算機(jī)集合等實(shí)現(xiàn)。在此,云由基于云計(jì)算(Cloud Computing)的大量主機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)虛擬計(jì)算機(jī)。

為了保證數(shù)據(jù)平面和控制平面的分割,在操作系統(tǒng)實(shí)現(xiàn)的層面上,這種分割可以用兩個(gè)系統(tǒng)調(diào)用的功能子集表示。多數(shù)系統(tǒng)調(diào)用只屬于特定平面,但也有些系統(tǒng)調(diào)用橫跨兩個(gè)平面,需要做進(jìn)一步的功能細(xì)分。以下分別對(duì)常用的數(shù)據(jù)平面和控制平面的系統(tǒng)調(diào)用及其相應(yīng)的功能進(jìn)行了說(shuō)明,具體如下:

數(shù)據(jù)平面:

控制平面:

對(duì)于橫跨兩個(gè)平面的系統(tǒng)調(diào)用,例如getsockopt()、setsockopt()和ioctl()等,對(duì)于涉及數(shù)據(jù)平面的操作,可以由虛擬機(jī)的子進(jìn)程來(lái)執(zhí)行,而對(duì)于涉及控制平面的操作,則直接由所述虛擬機(jī)的子進(jìn)程禁止其執(zhí)行或者請(qǐng)求物理機(jī)的父進(jìn)程來(lái)執(zhí)行。此外,對(duì)于getsockname()或者getpeername()這兩個(gè)系統(tǒng)調(diào)用,還可能由虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程返回偽造的系統(tǒng)調(diào)用結(jié)果。

在虛擬化場(chǎng)景下,父進(jìn)程通常運(yùn)行于物理機(jī)上,而子進(jìn)程則通常運(yùn)行于對(duì)應(yīng)的虛擬機(jī)內(nèi),虛擬機(jī)和物理機(jī)具有各自獨(dú)立的操作系統(tǒng)內(nèi)核。由于套接字描述符是由各個(gè)操作系統(tǒng)內(nèi)核獨(dú)立維護(hù)的,因此不能跨越不同的操作系統(tǒng)內(nèi)核直接傳遞,因此無(wú)法直接實(shí)現(xiàn)套接字描述符在父進(jìn)程和子進(jìn)程之間的直接傳遞。為解決上述問(wèn)題,本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信方法中通過(guò)內(nèi)部標(biāo)識(shí)的方式傳遞套接字描述符。具體地,所述步驟S102中虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用,包括以下步驟:

步驟S201,虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí),其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

步驟S202,所述虛擬機(jī)的子進(jìn)程根據(jù)所述映射關(guān)系由所述物理機(jī)內(nèi)部標(biāo)識(shí)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),其中所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);

步驟S203,所述虛擬機(jī)的子進(jìn)程根據(jù)所述虛擬機(jī)內(nèi)部標(biāo)識(shí)獲取套接字描述符,并使用該套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用。

操作系統(tǒng)中套接字描述符是VFS(Virtual File System,虛擬文件系統(tǒng))架構(gòu)中的一個(gè)文件描述符(File Descriptor,fd),它對(duì)某種網(wǎng)絡(luò)協(xié)議的一條通信信道,用于標(biāo)識(shí)本機(jī)的某一進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道。以TCP(Transmission Control Protocol,傳輸控制協(xié)議)為例,套接字描述符即表示一個(gè)TCP連接,該套接字描述符表示的信息可以通過(guò)IP(Internet Protocol,網(wǎng)間互聯(lián)協(xié)議)地址、端口和協(xié)議來(lái)表示,即采用以下5元組 來(lái)(源IP、源端口、目標(biāo)IP、目標(biāo)端口、TCP協(xié)議號(hào))。相應(yīng)地,對(duì)于其它的協(xié)議,也可以采用類(lèi)似的表示方式。

但是,這種表示方式僅適用于已經(jīng)建立好的TCP連接,在建立好連接之后套接字會(huì)被分配一個(gè)對(duì)應(yīng)的文件描述符。而對(duì)于還未建立好的TCP連接,套接字還未對(duì)應(yīng)到具體協(xié)議上,因此無(wú)法采用上述的方式來(lái)表示對(duì)應(yīng)的套接字描述符。因此,可以使用基于相應(yīng)操作系統(tǒng)內(nèi)核的內(nèi)部標(biāo)識(shí)來(lái)表示對(duì)應(yīng)的套接字描述符。在實(shí)際應(yīng)用中,所述內(nèi)部標(biāo)示的一種可行的實(shí)現(xiàn)方式為sockfs(套接字偽文件系統(tǒng))中的inode號(hào),這種數(shù)字編號(hào)在操作系統(tǒng)內(nèi)能夠唯一標(biāo)識(shí)一個(gè)連接的信道,無(wú)論當(dāng)前有多少個(gè)進(jìn)程在使用這條信道。

但是,由于在物理機(jī)和虛擬機(jī)的操作系統(tǒng)內(nèi)核不同,因此需要在信道建立時(shí)生成物理機(jī)內(nèi)部標(biāo)識(shí)和虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系。即,物理機(jī)操作系統(tǒng)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)上記錄有對(duì)應(yīng)的虛擬機(jī)內(nèi)部標(biāo)識(shí),反之,虛擬機(jī)操作系統(tǒng)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)上同樣記錄有對(duì)應(yīng)的物理機(jī)內(nèi)部標(biāo)識(shí)。例如,虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí)之后,根據(jù)映射關(guān)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),通過(guò)該虛擬機(jī)內(nèi)部標(biāo)識(shí)即可查找到對(duì)應(yīng)的文件描述符,即套接字描述符,從而確定唯一的信道。由此,在虛擬機(jī)的子進(jìn)程和物理機(jī)的父進(jìn)程之間,僅需要傳遞兩者的內(nèi)部標(biāo)識(shí)即可實(shí)現(xiàn)在不同操作系統(tǒng)內(nèi)核之間的傳遞套接字描述符。

對(duì)于特定的數(shù)據(jù)平面的系統(tǒng)調(diào)用,例如讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用,出于性能考慮,數(shù)據(jù)不會(huì)再每次復(fù)制到虛擬機(jī)內(nèi)核中就立即傳輸給物理機(jī)內(nèi)核,而是以一個(gè)批處理的方式將數(shù)據(jù)發(fā)送給物理機(jī)內(nèi)核,具體實(shí)現(xiàn)方式與TCP棧的發(fā)送邏輯類(lèi)似。具體地,在步驟S102中,若所述數(shù)據(jù)平面的系統(tǒng)調(diào)用為讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用,所述虛擬機(jī)的子進(jìn)程在使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),采用批處理的方式將數(shù)據(jù)由虛擬機(jī)的內(nèi)核空間傳輸至物理機(jī)的內(nèi)核空間。通過(guò)批處理的方式,可以降低系統(tǒng)開(kāi)銷(xiāo),提高數(shù)據(jù)傳輸?shù)男省?/p>

進(jìn)一步地,步驟S103中所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用、請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回 偽造的系統(tǒng)調(diào)用結(jié)果,具體包括:若所述控制平面的系統(tǒng)調(diào)用為影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用,則所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用;否則,所述虛擬機(jī)的子進(jìn)程請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

在實(shí)際應(yīng)用中,虛擬機(jī)的子進(jìn)程在執(zhí)行各種系統(tǒng)調(diào)用時(shí),若系統(tǒng)調(diào)用屬于控制平面,則會(huì)對(duì)其進(jìn)行安全檢查?;诎踩珯z查的結(jié)果,由三種可能的結(jié)果:1、禁止執(zhí)行,例如影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用,如某些ioctl()調(diào)用。2、允許執(zhí)行,向物理機(jī)的父進(jìn)程發(fā)送消息,請(qǐng)求父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用,如一些不會(huì)影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用。3、返回偽造的結(jié)果,主要包括用于獲取本端地址以及網(wǎng)絡(luò)通信對(duì)端地址的getsockname()和getpeername()調(diào)用。上述結(jié)果,除了受到系統(tǒng)調(diào)用本身的功能的影響,還可能受到為虛擬機(jī)的子進(jìn)程所設(shè)置的權(quán)限,以及操作系統(tǒng)的其它配置的影響。

在前述第二種情況下,虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送消息,請(qǐng)求父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用之后,還包括:獲取物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回的所述控制平面的系統(tǒng)調(diào)用的執(zhí)行結(jié)果,使得子進(jìn)程能夠根據(jù)執(zhí)行結(jié)果執(zhí)行相關(guān)的配置,保證受限通信的安全性。

在一次完整的安全通信過(guò)程中,在執(zhí)行其它的系統(tǒng)調(diào)用之前,會(huì)首先執(zhí)行socket()調(diào)用來(lái)創(chuàng)建套接字描述符用以標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道。因此,所述應(yīng)用于虛擬化場(chǎng)景的安全通信方法在判斷所述系統(tǒng)調(diào)用的屬性之前,還包括:創(chuàng)建用于標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道的套接字描述符。由于其中涉及信道連接的建立,其處理過(guò)程與其它系統(tǒng)調(diào)用存在區(qū)別,其具體步驟如圖3所示,包括:

步驟S301,虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求,其中所述創(chuàng)建請(qǐng)求包括虛擬機(jī)內(nèi)部標(biāo)識(shí)、套接字參數(shù)和進(jìn)程控制信息。所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí),可以是虛擬機(jī)操作系統(tǒng)的sockfs的inode號(hào);所述套接字參數(shù)包括虛擬機(jī)的子進(jìn)程需要建立連接的網(wǎng)絡(luò)通信對(duì)端的地址,如IP地址和端口 號(hào);所述進(jìn)程控制信息是出于限制特定進(jìn)程的通信的設(shè)計(jì),可以是子進(jìn)程的PID(Process Identification,進(jìn)程識(shí)別號(hào)),通過(guò)PID來(lái)識(shí)別該進(jìn)程是有相應(yīng)的權(quán)限(例如是否允許與特定的網(wǎng)絡(luò)通信對(duì)端建立連接),從而特定進(jìn)程進(jìn)行限制。

步驟S302,所述物理機(jī)的父進(jìn)程根據(jù)套接字參數(shù)和進(jìn)程控制信息創(chuàng)建所述套接字描述符,執(zhí)行信道連接操作,并記錄物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)映射關(guān)系。所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí),可以是物理機(jī)操作系統(tǒng)的sockfs的inode號(hào),所述信道的連接參數(shù)包括信道兩端的地址,以TCP連接為例,即源IP、源端口、目標(biāo)IP和目標(biāo)端口等;所述執(zhí)行信道連接操作,包括向指定目標(biāo)地址建立TCP連接、設(shè)置信道的各種連接參數(shù)等。

步驟S303,所述物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回所述套接字描述符的創(chuàng)建成功響應(yīng),其中所述創(chuàng)建成功響應(yīng)包括物理機(jī)內(nèi)部標(biāo)識(shí)。

步驟S304,所述虛擬機(jī)的子進(jìn)程根據(jù)所述創(chuàng)建成功響應(yīng)創(chuàng)建所述套接字描述符,記錄所述物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)映射關(guān)系,設(shè)置套接字抽象層的配置。通過(guò)在虛擬機(jī)的VFS中為該套接字分配一個(gè)文件描述符從而完成套接字描述符的創(chuàng)建。在虛擬機(jī)中,由此獲取到物理機(jī)內(nèi)部標(biāo)識(shí),與虛擬機(jī)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)已有的虛擬機(jī)內(nèi)部標(biāo)識(shí)匹配獲得物理機(jī)內(nèi)部標(biāo)識(shí)和虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系,用于后續(xù)執(zhí)行系統(tǒng)調(diào)用時(shí)通過(guò)內(nèi)部標(biāo)識(shí)傳遞套接字描述符。所述設(shè)置套接字抽象層的配置是指設(shè)置該套接字發(fā)送隊(duì)列、接收隊(duì)列等套接字抽象層的各種必要配置。

此外,在虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求之前,還包括:確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道為受限通信信道。本實(shí)施例中采用的方式為:設(shè)置sock_dataplane標(biāo)志位,在創(chuàng)建套接字描述符時(shí),若創(chuàng)建請(qǐng)求中指定了sock_dataplane標(biāo)志位,則表示希望建立一個(gè)受限通信信道,因此通過(guò)讀取該sock_dataplane標(biāo)志位的值即可確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道是否為受限通信信道。

基于本申請(qǐng)的另一方面圖,還提供了一種應(yīng)用于虛擬化場(chǎng)景的安全通 信設(shè)備,該設(shè)備的結(jié)構(gòu)如圖4所示,包括判斷裝置410、數(shù)據(jù)處理裝置420和控制處理裝置430。具體地,所述判斷裝置410用于在虛擬機(jī)的子進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),判斷所述系統(tǒng)調(diào)用的屬性;所述數(shù)據(jù)處理裝置420用于在所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用;所述控制處理裝置430用于在所述系統(tǒng)調(diào)用為控制平面的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用、請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

通過(guò)將系統(tǒng)調(diào)用分割為數(shù)據(jù)平面的系統(tǒng)調(diào)用和控制平面的系統(tǒng)調(diào)用,使得虛擬機(jī)內(nèi)的子進(jìn)程只能執(zhí)行數(shù)據(jù)平面的套接字操作,而物理機(jī)中的父進(jìn)程則負(fù)責(zé)控制平面的套接字操作,由此達(dá)到數(shù)據(jù)收發(fā)與系統(tǒng)控制的分割,使得子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的通信過(guò)程不會(huì)影響系統(tǒng)的全局配置,同時(shí)借助于虛擬化技術(shù)帶來(lái)的安全優(yōu)勢(shì),提供更加安全可靠的受限通信,提高系統(tǒng)性能。

在此,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,所述安全通信設(shè)備可以包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備包括但不限于個(gè)人計(jì)算機(jī)、觸控終端等實(shí)現(xiàn);所述網(wǎng)絡(luò)設(shè)備包括但不限于如網(wǎng)絡(luò)主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或基于云計(jì)算的計(jì)算機(jī)集合等實(shí)現(xiàn)。在此,云由基于云計(jì)算(Cloud Computing)的大量主機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)虛擬計(jì)算機(jī)。

為了保證數(shù)據(jù)平面和控制平面的分割,在操作系統(tǒng)實(shí)現(xiàn)的層面上,這種分割可以用兩個(gè)系統(tǒng)調(diào)用的功能子集表示。多數(shù)系統(tǒng)調(diào)用只屬于特定平面,但也有些系統(tǒng)調(diào)用橫跨兩個(gè)平面,需要做進(jìn)一步的功能細(xì)分。系統(tǒng)調(diào)用的具體屬性劃分可參考前文表格。

對(duì)于橫跨兩個(gè)平面的系統(tǒng)調(diào)用,例如getsockopt()、setsockopt()和ioctl()等,對(duì)于涉及數(shù)據(jù)平面的操作,可以由虛擬機(jī)的子進(jìn)程來(lái)執(zhí)行,而對(duì)于涉及控制平面的操作,則直接由所述虛擬機(jī)的子進(jìn)程禁止其執(zhí)行或者請(qǐng)求物理機(jī)的父進(jìn)程來(lái)執(zhí)行。此外,對(duì)于getsockname()或者getpeername()這兩個(gè) 系統(tǒng)調(diào)用,還可能由虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程返回偽造的系統(tǒng)調(diào)用結(jié)果。

在虛擬化場(chǎng)景下,父進(jìn)程通常運(yùn)行于物理機(jī)上,而子進(jìn)程則通常運(yùn)行于對(duì)應(yīng)的虛擬機(jī)內(nèi),虛擬機(jī)和物理機(jī)具有各自獨(dú)立的操作系統(tǒng)內(nèi)核。由于套接字描述符是由各個(gè)操作系統(tǒng)內(nèi)核獨(dú)立維護(hù)的,因此不能跨越不同的操作系統(tǒng)內(nèi)核直接傳遞,因此無(wú)法直接實(shí)現(xiàn)套接字描述符在父進(jìn)程和子進(jìn)程之間的直接傳遞。為解決上述問(wèn)題,本申請(qǐng)實(shí)施例提供的應(yīng)用于虛擬化場(chǎng)景的安全通信設(shè)備中通過(guò)內(nèi)部標(biāo)識(shí)的方式傳遞套接字描述符。具體地,所述數(shù)據(jù)處理裝置420用于在所述系統(tǒng)調(diào)用為數(shù)據(jù)平面的系統(tǒng)調(diào)用時(shí),控制虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí),其中所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述映射關(guān)系由所述物理機(jī)內(nèi)部標(biāo)識(shí)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),其中所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí);以及控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述虛擬機(jī)內(nèi)部標(biāo)識(shí)獲取套接字描述符,并使用該套接字描述符執(zhí)行所述數(shù)據(jù)平面的系統(tǒng)調(diào)用。

操作系統(tǒng)中套接字描述符是VFS(Virtual File System,虛擬文件系統(tǒng))架構(gòu)中的一個(gè)文件描述符(File Descriptor),它對(duì)某種網(wǎng)絡(luò)協(xié)議的一條通信信道,用于標(biāo)識(shí)本機(jī)的某一進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道。以TCP(Transmission Control Protocol,傳輸控制協(xié)議)為例,套接字描述符即表示一個(gè)TCP連接,該套接字描述符表示的信息可以通過(guò)IP(Internet Protocol,網(wǎng)間互聯(lián)協(xié)議)地址、端口和協(xié)議來(lái)表示,即采用以下5元組來(lái)(源IP、源端口、目標(biāo)IP、目標(biāo)端口、TCP協(xié)議號(hào))。相應(yīng)地,對(duì)于其它的協(xié)議,也可以采用類(lèi)似的表示方式。

但是,這種表示方式僅適用于已經(jīng)建立好的TCP連接,在建立好連接之后套接字會(huì)被分配一個(gè)對(duì)應(yīng)的文件描述符。而對(duì)于還未建立好的TCP連接,套接字還未對(duì)應(yīng)到具體協(xié)議上,因此無(wú)法采用上述的方式來(lái)表示對(duì)應(yīng)的套接字描述符。因此,可以使用基于相應(yīng)操作系統(tǒng)內(nèi)核的內(nèi)部標(biāo)識(shí)來(lái)表示對(duì)應(yīng)的套接字描述符。在實(shí)際應(yīng)用中,所述內(nèi)部標(biāo)示的一種可行的實(shí)現(xiàn)方式為sockfs(套接字偽文件系統(tǒng))中的inode號(hào),這種數(shù)字編號(hào)在操 作系統(tǒng)內(nèi)能夠唯一標(biāo)識(shí)一個(gè)連接的信道,無(wú)論當(dāng)前有多少個(gè)進(jìn)程在使用這條信道。

但是,由于在物理機(jī)和虛擬機(jī)的操作系統(tǒng)內(nèi)核不同,因此需要在信道建立時(shí)生成物理機(jī)內(nèi)部標(biāo)識(shí)和虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系。即,物理機(jī)操作系統(tǒng)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)上記錄有對(duì)應(yīng)的虛擬機(jī)內(nèi)部標(biāo)識(shí),反之,虛擬機(jī)操作系統(tǒng)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)上同樣記錄有對(duì)應(yīng)的物理機(jī)內(nèi)部標(biāo)識(shí)。例如,虛擬機(jī)的子進(jìn)程獲取物理機(jī)的父進(jìn)程提供的物理機(jī)內(nèi)部標(biāo)識(shí)之后,根據(jù)映射關(guān)獲取虛擬機(jī)內(nèi)部標(biāo)識(shí),通過(guò)該虛擬機(jī)內(nèi)部標(biāo)識(shí)即可查找到對(duì)應(yīng)的文件描述符,即套接字描述符,從而確定唯一的信道。由此,在虛擬機(jī)的子進(jìn)程和物理機(jī)的父進(jìn)程之間,僅需要傳遞兩者的內(nèi)部標(biāo)識(shí)即可實(shí)現(xiàn)在不同操作系統(tǒng)內(nèi)核之間的傳遞套接字描述符。

對(duì)于特定的數(shù)據(jù)平面的系統(tǒng)調(diào)用,例如讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用,出于性能考慮,數(shù)據(jù)不會(huì)再每次復(fù)制到虛擬機(jī)內(nèi)核中就立即傳輸給物理機(jī)內(nèi)核,而是以一個(gè)批處理的方式將數(shù)據(jù)發(fā)送給物理機(jī)內(nèi)核,具體實(shí)現(xiàn)方式與TCP棧的發(fā)送邏輯類(lèi)似。具體地,所述數(shù)據(jù)處理裝置420用于在所述數(shù)據(jù)平面的系統(tǒng)調(diào)用為讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程在使用物理機(jī)的父進(jìn)程提供的套接字描述符執(zhí)行所述讀寫(xiě)數(shù)據(jù)的系統(tǒng)調(diào)用時(shí),采用批處理的方式將數(shù)據(jù)由虛擬機(jī)的內(nèi)核空間傳輸至物理機(jī)的內(nèi)核空間。通過(guò)批處理的方式,可以降低系統(tǒng)開(kāi)銷(xiāo),提高數(shù)據(jù)傳輸?shù)男省?/p>

進(jìn)一步地,所述控制處理裝置430用于在所述控制平面的系統(tǒng)調(diào)用為影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用時(shí),控制所述虛擬機(jī)的子進(jìn)程禁止執(zhí)行所述控制平面的系統(tǒng)調(diào)用;否則,控制所述虛擬機(jī)的子進(jìn)程請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用或者返回偽造的系統(tǒng)調(diào)用結(jié)果。

在實(shí)際應(yīng)用中,虛擬機(jī)的子進(jìn)程在執(zhí)行各種系統(tǒng)調(diào)用時(shí),若系統(tǒng)調(diào)用屬于控制平面,則會(huì)對(duì)其進(jìn)行安全檢查。基于安全檢查的結(jié)果,由三種可能的結(jié)果:1、禁止執(zhí)行,例如影響全局配置或者導(dǎo)致信息泄露的系統(tǒng)調(diào)用,如某些ioctl()調(diào)用。2、允許執(zhí)行,向物理機(jī)的父進(jìn)程發(fā)送消息,請(qǐng)求父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用,如一些不會(huì)影響全局配置或者導(dǎo)致 信息泄露的系統(tǒng)調(diào)用。3、返回偽造的結(jié)果,主要包括用于獲取本端地址以及網(wǎng)絡(luò)通信對(duì)端地址的getsockname()和getpeername()調(diào)用。上述結(jié)果,除了受到系統(tǒng)調(diào)用本身的功能的影響,還可能受到為虛擬機(jī)的子進(jìn)程所設(shè)置的權(quán)限,以及操作系統(tǒng)的其它配置的影響。

在前述第二種情況下,所述控制處理裝置430還用于控制所述虛擬機(jī)的子進(jìn)程在請(qǐng)求物理機(jī)的父進(jìn)程執(zhí)行所述控制平面的系統(tǒng)調(diào)用之后,獲取物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回的所述控制平面的系統(tǒng)調(diào)用的執(zhí)行結(jié)果,使得子進(jìn)程能夠根據(jù)執(zhí)行結(jié)果執(zhí)行相關(guān)的配置,保證受限通信的安全性。

在一次完整的安全通信過(guò)程中,在執(zhí)行其它的系統(tǒng)調(diào)用之前,會(huì)首先執(zhí)行socket()調(diào)用來(lái)創(chuàng)建套接字描述符用以標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道。因此,本申請(qǐng)實(shí)施例還提供了一種優(yōu)選的應(yīng)用于虛擬化場(chǎng)景的安全通信設(shè)備,其結(jié)構(gòu)如圖5所示,除圖4所示的判斷裝置410、數(shù)據(jù)處理裝置420和控制處理裝置430之外,還包括創(chuàng)建裝置440。具體地,所述創(chuàng)建裝置440用于在判斷所述系統(tǒng)調(diào)用的屬性之前,創(chuàng)建用于標(biāo)識(shí)所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道的套接字描述符。由于其中涉及信道連接的建立,其處理過(guò)程與其它系統(tǒng)調(diào)用存在區(qū)別,因此所述創(chuàng)建裝置,具體用于:

控制虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求,其中所述創(chuàng)建請(qǐng)求包括虛擬機(jī)內(nèi)部標(biāo)識(shí)、套接字參數(shù)和進(jìn)程控制信息。所述虛擬機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于虛擬機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí),可以是虛擬機(jī)操作系統(tǒng)的sockfs的inode號(hào);所述套接字參數(shù)包括虛擬機(jī)的子進(jìn)程需要建立連接的網(wǎng)絡(luò)通信對(duì)端的地址,如IP地址和端口號(hào);所述進(jìn)程控制信息是出于限制特定進(jìn)程的通信的設(shè)計(jì),可以是子進(jìn)程的PID(Process Identification,進(jìn)程識(shí)別號(hào)),通過(guò)PID來(lái)識(shí)別該進(jìn)程是有相應(yīng)的權(quán)限(例如是否允許與特定的網(wǎng)絡(luò)通信對(duì)端建立連接),從而特定進(jìn)程進(jìn)行限制。

控制所述物理機(jī)的父進(jìn)程根據(jù)套接字參數(shù)和進(jìn)程控制信息創(chuàng)建所述套接字描述符,執(zhí)行信道連接操作,并記錄物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī) 內(nèi)部標(biāo)識(shí)映射關(guān)系。所述物理機(jī)內(nèi)部標(biāo)識(shí)為用于表示基于物理機(jī)內(nèi)核的套接字描述符的標(biāo)識(shí),可以是物理機(jī)操作系統(tǒng)的sockfs的inode號(hào),所述信道的連接參數(shù)包括信道兩端的地址,以TCP連接為例,即源IP、源端口、目標(biāo)IP和目標(biāo)端口等;所述執(zhí)行信道連接操作,包括向指定目標(biāo)地址建立TCP連接、設(shè)置信道的各種連接參數(shù)等。

控制所述物理機(jī)的父進(jìn)程向所述虛擬機(jī)的子進(jìn)程返回所述套接字描述符的創(chuàng)建成功響應(yīng),其中所述創(chuàng)建成功響應(yīng)包括物理機(jī)內(nèi)部標(biāo)識(shí)。

控制所述虛擬機(jī)的子進(jìn)程根據(jù)所述創(chuàng)建成功響應(yīng)創(chuàng)建所述套接字描述符,記錄所述物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)映射關(guān)系,設(shè)置套接字抽象層的配置。通過(guò)在虛擬機(jī)的VFS中為該套接字分配一個(gè)文件描述符從而完成套接字描述符的創(chuàng)建。在虛擬機(jī)中,由此獲取到物理機(jī)內(nèi)部標(biāo)識(shí),與虛擬機(jī)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)已有的虛擬機(jī)內(nèi)部標(biāo)識(shí)匹配獲得物理機(jī)內(nèi)部標(biāo)識(shí)和虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系,用于后續(xù)執(zhí)行系統(tǒng)調(diào)用時(shí)通過(guò)內(nèi)部標(biāo)識(shí)傳遞套接字描述符。所述設(shè)置套接字抽象層的配置是指設(shè)置該套接字發(fā)送隊(duì)列、接收隊(duì)列等套接字抽象層的各種必要配置。

此外,所述創(chuàng)建裝置440還用于在虛擬機(jī)的子進(jìn)程向物理機(jī)的父進(jìn)程發(fā)送套接字描述符的創(chuàng)建請(qǐng)求之前,確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道為受限通信信道。本實(shí)施例中采用的方式為:設(shè)置sock_dataplane標(biāo)志位,在創(chuàng)建套接字描述符時(shí),若創(chuàng)建請(qǐng)求中指定了sock_dataplane標(biāo)志位,則表示希望建立一個(gè)受限通信信道,因此通過(guò)讀取該sock_dataplane標(biāo)志位的值即可確定所述虛擬機(jī)的子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的信道是否為受限通信信道。

下面以TCP連接為例,對(duì)建立子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的連接的過(guò)程進(jìn)行詳細(xì)說(shuō)明,其中虛擬機(jī)側(cè)和物理機(jī)側(cè)的處理過(guò)程如圖6所示:

步驟S601,虛擬機(jī)側(cè)根據(jù)應(yīng)用的請(qǐng)求開(kāi)始執(zhí)行socket()系統(tǒng)調(diào)用,以創(chuàng)建socket描述符。

步驟S602,虛擬機(jī)側(cè)根據(jù)sock_dataplane標(biāo)志位確定是否需要?jiǎng)?chuàng)建特殊的socket描述符,以創(chuàng)建一個(gè)受限通信信道,對(duì)子進(jìn)程的通信進(jìn)行限制。若為是,則執(zhí)行下一步,若為否,則按照正常socket的創(chuàng)建流程進(jìn)行后續(xù) 處理。

步驟S603,虛擬機(jī)側(cè)將包含socket的內(nèi)部標(biāo)識(shí)、socket參數(shù)和進(jìn)程控制信息發(fā)送給物理機(jī)的創(chuàng)建請(qǐng)求。在發(fā)送請(qǐng)求后,虛擬機(jī)將其當(dāng)前的子進(jìn)程置于休眠狀態(tài),等待物理機(jī)側(cè)的響應(yīng)。

步驟S604,物理機(jī)側(cè)在接收到創(chuàng)建請(qǐng)求之后,根據(jù)socket參數(shù)創(chuàng)建一個(gè)socket。物理機(jī)側(cè)在接收到創(chuàng)建請(qǐng)求之前,其內(nèi)核與虛擬機(jī)之間保持通信,等待虛擬機(jī)中的創(chuàng)建請(qǐng)求。

步驟S605,物理機(jī)側(cè)在創(chuàng)建完socket后,將該socket插入到當(dāng)前進(jìn)程的打開(kāi)文件描述表中,從而為其分配一個(gè)文件描述符,完成socket描述符的創(chuàng)建。此時(shí),該socket描述符可以通過(guò)物理機(jī)內(nèi)部標(biāo)識(shí)來(lái)確定,因此可以記錄物理機(jī)內(nèi)部標(biāo)識(shí)與所述虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系

步驟S606,物理機(jī)側(cè)在根據(jù)創(chuàng)建的socket描述符以及虛擬機(jī)提供的socket參數(shù)和進(jìn)程控制信息執(zhí)行信道連接操作,例如向指定目標(biāo)地址建立TCP連接、設(shè)置信道的各種連接參數(shù)等。

步驟S607,在物理機(jī)側(cè),若TCP連接成功,則將對(duì)應(yīng)的socket描述符寫(xiě)入物理機(jī)內(nèi)核,若TCP連接失敗,則將禁止建立連接的錯(cuò)誤信息寫(xiě)入物理機(jī)內(nèi)核。

步驟S608,物理機(jī)側(cè)根據(jù)連接的結(jié)果向虛擬機(jī)側(cè)返回對(duì)應(yīng)創(chuàng)建請(qǐng)求的響應(yīng)。

步驟S609,虛擬機(jī)側(cè)在收到響應(yīng)后,根據(jù)響應(yīng)的結(jié)果執(zhí)行后續(xù)步驟。若不允許建立連接,則退出系統(tǒng)調(diào)用;若允許,則執(zhí)行后續(xù)步驟。

步驟S610,虛擬機(jī)側(cè)在根據(jù)響應(yīng)中包含的物理機(jī)內(nèi)部標(biāo)識(shí),將其記錄在socket數(shù)據(jù)結(jié)構(gòu)內(nèi),從而建立物理機(jī)內(nèi)部標(biāo)識(shí)與虛擬機(jī)內(nèi)部標(biāo)識(shí)的映射關(guān)系。

步驟S611,虛擬機(jī)側(cè)設(shè)置socket抽象層的各種必要配置,例如該socket的發(fā)送隊(duì)列和接收隊(duì)列等。

步驟S612,虛擬機(jī)側(cè)為創(chuàng)建的socket在VFS上分配一個(gè)文件描述符,以對(duì)應(yīng)該socket,從而完成socket()調(diào)用,創(chuàng)建socket描述符。

綜上所述,本申請(qǐng)的技術(shù)方案通過(guò)將系統(tǒng)調(diào)用分割為數(shù)據(jù)平面的系統(tǒng) 調(diào)用和控制平面的系統(tǒng)調(diào)用,使得虛擬機(jī)內(nèi)的子進(jìn)程只能執(zhí)行數(shù)據(jù)平面的套接字操作,而物理機(jī)中的父進(jìn)程則負(fù)責(zé)控制平面的套接字操作,由此達(dá)到數(shù)據(jù)收發(fā)與系統(tǒng)控制的分割,使得子進(jìn)程與網(wǎng)絡(luò)通信對(duì)端之間的通信過(guò)程不會(huì)影響系統(tǒng)的全局配置,同時(shí)借助于虛擬化技術(shù)帶來(lái)的安全優(yōu)勢(shì),提供更加安全可靠的受限通信,提高系統(tǒng)性能。

此外,通過(guò)內(nèi)部標(biāo)識(shí)的方式傳遞套接字描述符,克服了無(wú)法在不同操作系統(tǒng)內(nèi)核之間直接傳遞套接字描述符的問(wèn)題,為方案的實(shí)現(xiàn)提供了便捷,減少了系統(tǒng)開(kāi)銷(xiāo),使得系統(tǒng)性能得到了提高。

需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專(zhuān)用集成電路(ASIC)、通用目的計(jì)算機(jī)或任何其他類(lèi)似硬件設(shè)備來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過(guò)處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤(pán)及類(lèi)似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來(lái)實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。

另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過(guò)該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過(guò)廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。

對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括 在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或者硬件來(lái)實(shí)現(xiàn)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1