一種在虛擬化環(huán)境中提供密碼服務(wù)的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種在虛擬化環(huán)境中提供密碼服務(wù)的方法和系統(tǒng)。通過虛擬密碼設(shè)備管理器管理宿主機(jī)上可用的密碼計(jì)算資源,并提供虛擬的密碼運(yùn)算設(shè)備,供客戶虛擬機(jī)訪問;客戶虛擬機(jī)向虛擬的密碼運(yùn)算設(shè)備提出密碼服務(wù)請(qǐng)求,虛擬密碼設(shè)備管理器使用虛擬機(jī)自省方法主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,如果檢查通過,則在虛擬密碼設(shè)備管理器中完成密碼運(yùn)算,并將運(yùn)算結(jié)果返回給客戶虛擬機(jī);如果檢查未通過則不完成密碼運(yùn)算服務(wù)。本發(fā)明提供了在虛擬化環(huán)境中為客戶虛擬機(jī)提供密碼運(yùn)算服務(wù)的方案,可以在虛擬密碼設(shè)備管理器上對(duì)每個(gè)客戶虛擬機(jī)的虛擬密碼設(shè)備進(jìn)行按需分配,同時(shí)對(duì)客戶虛擬機(jī)對(duì)虛擬密碼設(shè)備的訪問進(jìn)行審計(jì)和主動(dòng)的檢查。
【專利說明】一種在虛擬化環(huán)境中提供密碼服務(wù)的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)安全【技術(shù)領(lǐng)域】,特別涉及一種在虛擬化環(huán)境中提供密碼服務(wù)的方法和系統(tǒng)。
【背景技術(shù)】
[0002]在計(jì)算機(jī)與通訊系統(tǒng)中,數(shù)據(jù)機(jī)密性通常通過對(duì)數(shù)據(jù)進(jìn)行加密實(shí)現(xiàn),即使用公開的密碼算法和只有授權(quán)訪問對(duì)象才知道的密鑰來對(duì)數(shù)據(jù)進(jìn)行變換計(jì)算,其有效性依賴于密鑰的保密性。在公鑰密碼技術(shù)應(yīng)用中,發(fā)送方利用指定接受者的公鑰對(duì)郵件或其他數(shù)據(jù)加密,能夠保證擁有該對(duì)應(yīng)私鑰的用戶才能夠解密。而且,擁有私鑰的用戶還能夠使用私鑰對(duì)數(shù)據(jù)進(jìn)行數(shù)字簽名,任意接收方可以利用公鑰驗(yàn)證數(shù)字簽名的正確性,保證文檔發(fā)送者的身份和文檔的不可篡改。上述安全功能的基礎(chǔ)仍是密鑰的安全性,即用戶所持有的私鑰不會(huì)泄露、不會(huì)被攻擊者非法訪問。很多密碼算法在假設(shè)密鑰安全的前提下進(jìn)行大量的密碼分析仍然保持了很高的安全性,并被廣泛應(yīng)用。然而,在實(shí)際環(huán)境中,各種原因都可能造成密鑰的泄露,如密鑰管理員的疏忽、不當(dāng)?shù)能浖?shí)現(xiàn)、滲透攻擊等。
[0003]在計(jì)算機(jī)系統(tǒng)中,敏感數(shù)據(jù)分布在整個(gè)內(nèi)存空間(包括內(nèi)核及用戶空間),各種軟件漏洞使得內(nèi)存空間泄露給未授權(quán)對(duì)象,這可能會(huì)造成密鑰的丟失。比如,2014年4月曝出的OpenSSLHeartbleed漏洞,允許遠(yuǎn)程攻擊者在不需要任何權(quán)限的情況下獲取私鑰。該漏洞是由于對(duì)請(qǐng)求包疏于檢查引發(fā)的緩沖區(qū)被過度的讀取造成的。
[0004]基于硬件的保護(hù)機(jī)制(比如usb key)把密鑰存儲(chǔ)在硬件中,密碼計(jì)算過程也在硬件中,所以密鑰對(duì)操作系統(tǒng)是不可見,極大地提高了密鑰的安全性。但是附加的硬件設(shè)備提高了成本。雖然硬件密碼設(shè)備能夠很好地保護(hù)密鑰數(shù)據(jù),但是硬件密碼設(shè)備只能被動(dòng)地接收請(qǐng)求、計(jì)算、返回結(jié)果,難以了解調(diào)用者的詳細(xì)信息。一旦調(diào)用者被攻擊者入侵,就可以任意地調(diào)用硬件密碼設(shè)備的計(jì)算服務(wù)。
[0005]隨著AMD和Intel相繼推出支持硬件虛擬化的產(chǎn)品,虛擬化技術(shù)得到廣泛應(yīng)用。企業(yè)利用虛擬化,可以減少資金成本、降低空間需求、提高可用性、提升業(yè)務(wù)的靈活適應(yīng)力、提高安全性。通過虛擬化技術(shù),可以在一套物理硬件上運(yùn)行多個(gè)客戶虛擬機(jī)。虛擬化隔離了客戶虛擬機(jī),提供了另一層次的軟件隔離。即使暴露于Internet的客戶虛擬機(jī)被感染,也不會(huì)對(duì)整個(gè)虛擬化平臺(tái)的安全性造成威脅,更不能威脅運(yùn)行在同一套物理硬件上的其他客戶虛擬機(jī)。
[0006]虛擬化平臺(tái)一個(gè)重要的組成部分是虛擬機(jī)監(jiān)控器(Virtual Machine Monitor,VMM),它的主要作用是管理宿主機(jī)的資源,以使在其之上運(yùn)行的客戶虛擬機(jī)可以共享宿主機(jī)上的物理資源。根據(jù)VMM的具體實(shí)現(xiàn)方法不同,VMM還可以包含設(shè)備驅(qū)動(dòng)(宿主機(jī)的硬件設(shè)備驅(qū)動(dòng)程序)和設(shè)備模型(給客戶虛擬機(jī)提供模擬的設(shè)備)。
[0007]VMI,即Virtual Machine Introspect1n,是一種在VMM中監(jiān)測(cè)客戶虛擬機(jī)運(yùn)行狀態(tài)的技術(shù)。在進(jìn)行VMI時(shí),客戶虛擬機(jī)的運(yùn)行狀態(tài)可被廣義地定義為包括處理器寄存器、內(nèi)存、磁盤、網(wǎng)絡(luò)及任何硬件級(jí)狀態(tài)。在虛擬化技術(shù)中,客戶虛擬機(jī)操作系統(tǒng)相當(dāng)于一個(gè)進(jìn)程運(yùn)行在宿主機(jī)系統(tǒng)上,該進(jìn)程的用戶虛擬內(nèi)存空間就是客戶虛擬機(jī)操作系統(tǒng)的物理內(nèi)存空間。VMI實(shí)現(xiàn)檢測(cè)客戶虛擬機(jī)運(yùn)行狀態(tài)的基本原理是:通過客戶虛擬機(jī)頁(yè)表、客戶虛擬機(jī)與宿主機(jī)地址映射表等實(shí)現(xiàn)對(duì)客戶虛擬機(jī)系統(tǒng)內(nèi)存結(jié)構(gòu)的解析,并通過操作宿主機(jī)虛擬地址,語(yǔ)義上操縱客戶虛擬機(jī)的內(nèi)存空間。
[0008]VMI可以在不修改客戶虛擬機(jī)配置、不影響客戶虛擬機(jī)運(yùn)行的前提下,準(zhǔn)確查看客戶虛擬機(jī)的運(yùn)行狀態(tài),如運(yùn)行進(jìn)程號(hào)、內(nèi)存使用情況等。本發(fā)明利用VMI技術(shù)實(shí)現(xiàn)對(duì)客戶虛擬機(jī)調(diào)用密碼服務(wù)的進(jìn)程等運(yùn)行狀態(tài)的主動(dòng)檢查。
【發(fā)明內(nèi)容】
[0009]本發(fā)明針對(duì)上述的計(jì)算機(jī)與通訊系統(tǒng)中的數(shù)據(jù)安全問題,提出一種在虛擬化環(huán)境中提供密碼服務(wù)的方法和系統(tǒng)。該方案設(shè)計(jì)一個(gè)虛擬密碼設(shè)備管理器,用于管理宿主機(jī)上可用的密碼計(jì)算資源(可以是外接硬件設(shè)備,也可以是自身提供的軟件實(shí)現(xiàn)),給每個(gè)客戶虛擬機(jī)分配虛擬的密碼設(shè)備,同時(shí)對(duì)客戶虛擬機(jī)對(duì)虛擬密碼設(shè)備的訪問進(jìn)行主動(dòng)的檢查和審計(jì)。
[0010]具體來說,本發(fā)明采用的技術(shù)方案如下:
[0011]一種提供密碼服務(wù)的方法,該方法在虛擬化環(huán)境中提供密碼服務(wù),其步驟包括:
[0012]I)設(shè)置一虛擬密碼設(shè)備管理器,用于管理宿主機(jī)上可用的密碼計(jì)算資源,并提供虛擬的密碼運(yùn)算設(shè)備,供客戶虛擬機(jī)訪問;
[0013]2)客戶虛擬機(jī)向虛擬的密碼運(yùn)算設(shè)備提出密碼服務(wù)請(qǐng)求,虛擬密碼設(shè)備管理器使用虛擬機(jī)自省(VMI)方法,通過分析客戶虛擬機(jī)內(nèi)存空間的數(shù)據(jù)來主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,如果檢查通過,則在虛擬密碼設(shè)備管理器中完成密碼運(yùn)算,并將運(yùn)算結(jié)果返回給客戶虛擬機(jī);如果檢查未通過則不完成密碼運(yùn)算服務(wù)。
[0014]進(jìn)一步地,所述虛擬密碼設(shè)備管理器可以在基于Xen的虛擬化系統(tǒng)實(shí)現(xiàn),也可以在基于VMware ESX/ESXi和Hyper-V的虛擬化系統(tǒng)實(shí)現(xiàn),還可以在基于KVM-QEMU的虛擬化系統(tǒng)中實(shí)現(xiàn)。虛擬密碼設(shè)備管理器提供主動(dòng)檢查和審計(jì)服務(wù);提供密碼運(yùn)算服務(wù);管理和檢查來自客戶虛擬機(jī)的密碼服務(wù)請(qǐng)求行為,配置檢查類型,制定各種檢查規(guī)則,為密碼服務(wù)配置密碼運(yùn)算實(shí)體。所述虛擬密碼設(shè)備管理器提供的虛擬密碼設(shè)備具有以下特點(diǎn):
[0015]a)通過模擬的接口(如PCI接口)為客戶虛擬機(jī)提供密碼服務(wù);
[0016]b)將密鑰數(shù)據(jù)從客戶虛擬機(jī)中隔離出來;
[0017]c)在執(zhí)行密碼服務(wù)之前,在不修改客戶虛擬機(jī)配置、不影響客戶虛擬機(jī)運(yùn)行的前提下,主動(dòng)檢查訪問密碼服務(wù)的進(jìn)程的各種信息,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容等。檢查所依據(jù)的信息是通過VMI技術(shù)來實(shí)現(xiàn),而不是訪問進(jìn)程主動(dòng)發(fā)送來的,具有更高的可靠性。此外,也可以同時(shí)檢查訪問進(jìn)程主動(dòng)發(fā)送來的憑證(如,訪問密碼服務(wù)的口令)。檢查不成功,則不完成服務(wù)。
[0018]d)審計(jì)所有對(duì)密碼服務(wù)進(jìn)行訪問的行為。即,記錄執(zhí)行密碼服務(wù)的相關(guān)信息,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因等。
[0019]這種結(jié)構(gòu)下,可以靈活地進(jìn)行以下配置:
[0020]I)虛擬密碼設(shè)備管理器實(shí)際進(jìn)行密碼運(yùn)算的實(shí)體;
[0021]2)每個(gè)客戶虛擬機(jī)可以使用的虛擬密碼設(shè)備;
[0022]3)對(duì)于每一個(gè)虛擬密碼設(shè)備,訪問密碼服務(wù)時(shí)的檢查方法。
[0023]本發(fā)明中,審計(jì)主要是進(jìn)行“記錄”,檢查側(cè)重于主動(dòng)的“查”,未通過檢查就不完成服務(wù)。
[0024]進(jìn)一步地,虛擬密碼設(shè)備管理器中的密碼運(yùn)算,可以由虛擬密碼設(shè)備管理器內(nèi)部的軟件實(shí)現(xiàn),也可以調(diào)用物理的硬件實(shí)現(xiàn)。支持密碼運(yùn)算的實(shí)體可以是虛擬密碼設(shè)備管理器訪問的物理實(shí)體,比如加密機(jī)/卡、TPM(TPM:Trusted Platform Module,可信賴平臺(tái)模塊)等。每個(gè)虛擬密碼設(shè)備配置的密碼運(yùn)算實(shí)體可以不同,即可以同時(shí)為多個(gè)虛擬密碼設(shè)備分別配置不同的實(shí)體。
[0025]進(jìn)一步地,可以為不同的客戶虛擬機(jī)配置相同的虛擬密碼設(shè)備來實(shí)現(xiàn)客戶虛擬機(jī)間的密鑰共享,調(diào)用相同的密鑰進(jìn)行密鑰計(jì)算服務(wù);或者每個(gè)客戶虛擬機(jī)可以按需配置多個(gè)不同的密鑰,客戶虛擬機(jī)根據(jù)服務(wù)類型調(diào)用不同的密鑰進(jìn)行密鑰計(jì)算服務(wù)。
[0026]進(jìn)一步地,步驟2)所述主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,檢查內(nèi)容包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容等。采用的檢查條件可以是如下條件的任意組合:來自特定的客戶虛擬機(jī)、來自特定客戶虛擬機(jī)的特定進(jìn)程、該進(jìn)程屬于客戶虛擬機(jī)操作系統(tǒng)的特定賬戶、在特定的時(shí)間、特定的請(qǐng)求服務(wù)類型及內(nèi)容、訪問的憑證(口令一類的能表明自己身份的標(biāo)識(shí))、當(dāng)前活動(dòng)的進(jìn)程只在預(yù)定的進(jìn)程列表中。主動(dòng)檢查的條件,在虛擬密碼設(shè)備管理器中可動(dòng)態(tài)配置完成,如通過配置策略,限定某一時(shí)間段某一客戶虛擬機(jī)可以請(qǐng)求什么服務(wù);限定客戶虛擬機(jī)中可以提出請(qǐng)求的進(jìn)程標(biāo)識(shí);動(dòng)態(tài)調(diào)整檢測(cè)條件的數(shù)量等。
[0027]進(jìn)一步地,發(fā)生密碼服務(wù)請(qǐng)求后,無論該請(qǐng)求是否正常響應(yīng)并完成,還是由于主動(dòng)檢查不通過而終止此次請(qǐng)求,虛擬密碼設(shè)備管理器都將會(huì)把所有密碼服務(wù)行為寫入審計(jì)日志,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因等。
[0028]一種采用上述方法的提供密碼服務(wù)的系統(tǒng),包括宿主機(jī)、客戶虛擬機(jī)和虛擬密碼設(shè)備管理器以及可選的外接密碼運(yùn)算物理實(shí)體;所述虛擬密碼設(shè)備管理器管理宿主機(jī)上可用的密碼計(jì)算資源,并提供虛擬的密碼運(yùn)算設(shè)備以供客戶虛擬機(jī)訪問;所述客戶虛擬機(jī)通過所述虛擬的密碼設(shè)備請(qǐng)求密碼服務(wù);所述虛擬密碼設(shè)備管理器響應(yīng)客戶虛擬機(jī)的密碼服務(wù)請(qǐng)求,使用虛擬機(jī)自省方法,通過分析客戶虛擬機(jī)內(nèi)存空間的數(shù)據(jù)來主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,如果檢查通過,則在虛擬密碼設(shè)備管理器中完成密碼運(yùn)算,并將運(yùn)算結(jié)果返回給客戶虛擬機(jī),如果檢查未通過則不完成密碼運(yùn)算服務(wù)。
[0029]進(jìn)一步地,所述提供密碼服務(wù)的系統(tǒng)還包括可選的外接的提供密碼運(yùn)算的物理實(shí)體,由所述虛擬密碼設(shè)備管理器進(jìn)行管理;虛擬密碼設(shè)備管理器可以采用內(nèi)部的軟件實(shí)現(xiàn)密碼運(yùn)算,也可以調(diào)用所述外接的提供密碼運(yùn)算的物理實(shí)體實(shí)現(xiàn)密碼運(yùn)算。
[0030]本發(fā)明設(shè)計(jì)了一種在虛擬化環(huán)境中為客戶虛擬機(jī)(VM)提供密碼運(yùn)算服務(wù)的方法和系統(tǒng),客戶虛擬機(jī)的操作系統(tǒng)可以通過訪問模擬的密碼設(shè)備接口,請(qǐng)求密碼服務(wù),可以在虛擬密碼設(shè)備管理器上對(duì)每個(gè)客戶虛擬機(jī)的虛擬密碼設(shè)備進(jìn)行按需分配。而實(shí)際的密碼服務(wù)則可以在虛擬密碼設(shè)備管理器端,由軟件實(shí)現(xiàn),也可以由任何可以提供密碼運(yùn)算的設(shè)備提供,比如加密卡/機(jī)、TPM。另外,在請(qǐng)求密碼服務(wù)前,還需要對(duì)使用密碼服務(wù)的進(jìn)程進(jìn)行檢查。
[0031]本發(fā)明通過把密鑰作為虛擬化資源的一部分,可以為客戶虛擬機(jī)模擬出一個(gè)虛擬密碼設(shè)備供客戶虛擬機(jī)使用。該虛擬密碼設(shè)備在客戶虛擬機(jī)看來就是一個(gè)標(biāo)準(zhǔn)的外設(shè),但由虛擬密碼設(shè)備管理器來管理;并且,由于密碼計(jì)算不在客戶虛擬機(jī)上完成的,所以客戶虛擬機(jī)的操作系統(tǒng)也不需要知道關(guān)于密鑰的信息,這樣,即使客戶虛擬機(jī)的操作系統(tǒng)被攻破,也不會(huì)泄露密鑰信息。當(dāng)客戶虛擬機(jī)中的請(qǐng)求密碼服務(wù)的進(jìn)程需要進(jìn)行加解密或者數(shù)字簽名運(yùn)算時(shí),通過虛擬密碼設(shè)備管理器和客戶虛擬機(jī)間的通信信道向虛擬密碼設(shè)備管理器提出請(qǐng)求,虛擬密碼設(shè)備管理器對(duì)此次請(qǐng)求密碼服務(wù)進(jìn)行主動(dòng)檢查,檢查包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容。檢查由VMI完成,具有很高的可靠性,在檢查通過后,響應(yīng)該客戶虛擬機(jī)中的請(qǐng)求密碼服務(wù)的進(jìn)程的請(qǐng)求,進(jìn)行密鑰計(jì)算,并將結(jié)果返回給客戶虛擬機(jī)。在整個(gè)過程中,客戶虛擬機(jī)中的請(qǐng)求密碼服務(wù)的進(jìn)程從不接觸密鑰,虛擬密碼設(shè)備管理器只將結(jié)果返回給客戶虛擬機(jī)。發(fā)生密碼服務(wù)請(qǐng)求后,無論該請(qǐng)求是否正常響應(yīng)并完成,還是由于主動(dòng)檢查不通過終止此次請(qǐng)求,虛擬密碼設(shè)備管理器都將會(huì)把所有密碼服務(wù)行為寫入審計(jì)日志,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因等。
[0032]本發(fā)明中,虛擬密碼設(shè)備管理器提供的虛擬密碼設(shè)備只提供密鑰計(jì)算及存儲(chǔ)功能。相比而言,可信賴平臺(tái)模塊(TPM:Trusted Platform Module)是一個(gè)含有密碼運(yùn)算部件和存儲(chǔ)部件的小型片上的系統(tǒng),由CPU、存儲(chǔ)器、I/O、密碼運(yùn)算器、隨機(jī)數(shù)產(chǎn)生器部件組成。虛擬TPM(vTPM:Virtual TPM)是在虛擬化環(huán)境中模擬硬件TPM。本發(fā)明和其區(qū)別在于:1)本發(fā)明不需要特定的TPM芯片支持,只是在普通的計(jì)算機(jī)系統(tǒng)上面就可以;2)本發(fā)明中密碼運(yùn)算可以是軟件代碼實(shí)現(xiàn),算法更新升級(jí)更容易;3)本發(fā)明設(shè)計(jì)的提供密碼服務(wù)的結(jié)構(gòu)也可以由虛擬密碼設(shè)備管理器來調(diào)用硬件的方式實(shí)現(xiàn)密碼運(yùn)算,如TPM ;4)本發(fā)明可以有更為全面的審計(jì)和主動(dòng)檢查,只有在主動(dòng)檢查通過后,密碼請(qǐng)求服務(wù)才會(huì)繼續(xù)進(jìn)行下去,檢查不通過,本次密碼服務(wù)終止并記錄本次事件到審計(jì)日志中。
【專利附圖】
【附圖說明】
[0033]圖1是實(shí)施例中在虛擬化環(huán)境中提供密碼服務(wù)的示意圖。
[0034]圖2是Virt1體系結(jié)構(gòu)的示意圖。
[0035]圖3是虛擬機(jī)自省在虛擬平臺(tái)的位置的示意圖。
[0036]圖4是虛擬機(jī)自省機(jī)制原理的示意圖。
【具體實(shí)施方式】
[0037]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面通過具體實(shí)施例和附圖,對(duì)本發(fā)明做進(jìn)一步說明。
[0038]本實(shí)施例是一個(gè)利用軟件來實(shí)現(xiàn)密碼計(jì)算的虛擬密鑰設(shè)備實(shí)例。
[0039]圖1是采用本發(fā)明方法的在虛擬化環(huán)境中提供密碼服務(wù)的示意圖。設(shè)計(jì)一個(gè)虛擬密碼設(shè)備virt1-ct, virt1-ct的主要目標(biāo)是計(jì)算過程中的所有密鑰和敏感中間狀態(tài)不能被客戶虛擬機(jī)訪問。密鑰以文件的形式存儲(chǔ)在宿主機(jī)的磁盤中,在給客戶虛擬機(jī)分配密鑰實(shí)體時(shí),需要指定密鑰文件的路徑。計(jì)算時(shí),可以根據(jù)客戶虛擬機(jī)發(fā)來的消息,直接調(diào)用密碼算法實(shí)現(xiàn)軟件來進(jìn)行相應(yīng)的密碼運(yùn)算操作,也可以調(diào)用外接物理設(shè)備完成密碼運(yùn)算,比如加密卡/機(jī)、TPM。
[0040]本實(shí)施例使用的虛擬密碼設(shè)備管理器是在KVM-QEMU虛擬化平臺(tái)中實(shí)現(xiàn)的,虛擬密碼設(shè)備管理器集成在QEMU進(jìn)程中,同時(shí)需要KVM的資源管理接口支持。KVM是Linux內(nèi)核的一個(gè)模塊,基于硬件虛擬化技術(shù)實(shí)現(xiàn)客戶虛擬機(jī)加速的功能。KVM模塊是整個(gè)KVM-QEMU虛擬化平臺(tái)的核心,它初始化處理器,并通過1ctl系統(tǒng)調(diào)用提供一系列的VMM管理接口,比如創(chuàng)建VM、映射VM的物理地址、給VM分配虛擬CPU(vCPU)等。QEMU進(jìn)程提供客戶虛擬機(jī)平臺(tái)的模擬,調(diào)用KVM的接口來執(zhí)行客戶虛擬機(jī)的代碼。KVM模塊的工作主要是可以通過操作客戶虛擬機(jī)控制數(shù)據(jù)結(jié)構(gòu)(virtual-machine control data structures, VMCS)捕捉Guest的10指令(包括Port 10和mmap 10)以及實(shí)現(xiàn)中斷虛擬化。
[0041]在實(shí)施例中,采用Virt1技術(shù)完成虛擬密碼設(shè)備管理器和客戶虛擬機(jī)之間計(jì)算請(qǐng)求和結(jié)果的傳遞,Virt1的基本結(jié)構(gòu)框架如圖2所示:其中前端驅(qū)動(dòng)(frondend,如virt1-blk、virt1_net等)是在客戶虛擬機(jī)中存在的驅(qū)動(dòng)程序模塊,而后端處理程序(backend)是在QEMU中實(shí)現(xiàn)的。在本實(shí)施例中,前端驅(qū)動(dòng)是virt1-ct,而后端處理程序調(diào)用密碼算法實(shí)現(xiàn)軟件(在本實(shí)施例中,使用OpenSSL軟件包)來進(jìn)行相應(yīng)的密碼操作。
[0042]在這前后端驅(qū)動(dòng)之間,還定義了兩層來支持客戶虛擬機(jī)與QEMU之間的通信。其中,包括虛擬隊(duì)列(virtqueues)接口,它在概念上將前端驅(qū)動(dòng)程序附加到后端處理程序,虛擬隊(duì)列通過調(diào)用下層virt1-ring使前端驅(qū)動(dòng)程序與后端處理程序在相同應(yīng)用二進(jìn)制接口(ABI Applicat1n Binary Interface)下,能夠相互發(fā)送及接受數(shù)據(jù)。因此,虛擬隊(duì)列被視為客戶虛擬機(jī)和VMM的銜接點(diǎn)。virt1-ct在初始化的時(shí)候?qū)嵗?1對(duì)虛擬隊(duì)列virtqueues, 30對(duì)用于傳遞密碼服務(wù)消息;另I對(duì)預(yù)留為VMM和VM之間傳遞設(shè)備管理消息的管理通道。每一對(duì)虛擬隊(duì)列都分別連接VMM和VM,可以支持VM向VMM發(fā)送消息、和VM從VMM接受消息。
[0043]virt1-ring實(shí)現(xiàn)了環(huán)形緩沖區(qū)(ring buffer),用于保存前端驅(qū)動(dòng)和后端處理程序執(zhí)行的信息,并且它可以一次性保存前端驅(qū)動(dòng)的多次1/0請(qǐng)求,并且交由后端驅(qū)動(dòng)去批量處理,在本實(shí)施例中,客戶虛擬機(jī)動(dòng)態(tài)申請(qǐng)內(nèi)存,并把地址通過PCI配置接口發(fā)送給虛擬密碼設(shè)備管理器,虛擬密碼設(shè)備管理器通過添加一個(gè)偏移得到該內(nèi)存區(qū)域的虛擬地址。兩者通過該共享的內(nèi)存區(qū)域進(jìn)行通信。
[0044]在本實(shí)例中除了傳遞密碼服務(wù)消息,還需要用virt1的信道來管理所有的虛擬設(shè)備,包括初始化設(shè)備、配置設(shè)備等。虛擬密碼設(shè)備由virt1-ct驅(qū)動(dòng),后者利用PCI接口被客戶虛擬機(jī)操作系統(tǒng)識(shí)別。virt1-ct驅(qū)動(dòng)包括2部分,virt1-ct-pci部分和virt1-ct-token部分。掛載虛擬密碼設(shè)備的客戶虛擬機(jī)啟動(dòng)時(shí),virt1-ct-pci驅(qū)動(dòng)的probe函數(shù)被觸發(fā),并通過register_virt1_driver向virt1_ct注冊(cè),表示該虛擬設(shè)備對(duì)應(yīng)于virt1-ct驅(qū)動(dòng)程序。virt1-ct-token完成密碼令牌的功能調(diào)用接口,一個(gè)虛擬密碼設(shè)備對(duì)應(yīng)于一個(gè)virt1-ct-token。virt1-ct-token進(jìn)一步需要一個(gè)私鑰文件作為參數(shù)(在本實(shí)施例中,使用PEM格式文件)。為了給客戶虛擬機(jī)提供添加虛擬密碼設(shè)備支持,需要給QEMU啟動(dòng)命令同時(shí)添加virt1-ct-pci和至少一個(gè)virt1-ct-token選項(xiàng)。
[0045]本實(shí)施例中監(jiān)控客戶虛擬機(jī)運(yùn)行狀況相關(guān)的狀態(tài)數(shù)據(jù),如內(nèi)存使用情況,磁盤空間的使用情況,以及操作系統(tǒng)日志文件的數(shù)據(jù)等,完成主動(dòng)檢查密碼服務(wù)請(qǐng)求合法性所采取的方法是虛擬機(jī)自省(VMI)技術(shù),通過VMI技術(shù)可以獲得被監(jiān)控的客戶虛擬機(jī)運(yùn)行狀況相關(guān)的狀態(tài)數(shù)據(jù),圖3是虛擬自省在虛擬平臺(tái)的位置的示意圖。
[0046]本實(shí)施例中,虛擬機(jī)自省工具使用開源的IibVMI來實(shí)現(xiàn),該方案支持KVM-QEMU虛擬化平臺(tái),運(yùn)行在KVM-QEMU中,可以直接分析客戶虛擬機(jī)的物理內(nèi)存來得到客戶虛擬機(jī)的語(yǔ)義信息。LibVMI是提供虛擬機(jī)內(nèi)省(VMI)功能的程序庫(kù),其基本原理如圖4所示:
[0047]DVMI請(qǐng)求查看一個(gè)內(nèi)核符號(hào);
[0048]2) LibVMI查找內(nèi)核符號(hào)所對(duì)應(yīng)的虛擬地址;
[0049]3)通過內(nèi)核頁(yè)表里的映射關(guān)系直接找到正確的頁(yè)表;
[0050]4)通過頁(yè)表映射找到正確的數(shù)據(jù)頁(yè);
[0051]5)數(shù)據(jù)頁(yè)返回給LibVMI庫(kù);
[0052]6) LibVMI庫(kù)將帶有讀/寫權(quán)限的數(shù)據(jù)表的指針和偏移量返回給VMI應(yīng)用程序(可能映射過程中,需要映射多頁(yè))
[0053]虛擬密碼設(shè)備管理器通過配置LibVMI的監(jiān)控程序,使得一旦有訪問密鑰的行為,就發(fā)出VMI請(qǐng)求,對(duì)客戶虛擬機(jī)的物理內(nèi)存進(jìn)行分析,獲取調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容等,并且寫入審計(jì)日志;也可以動(dòng)態(tài)配置規(guī)則,在指定的時(shí)間段,發(fā)現(xiàn)符合虛擬客戶端標(biāo)識(shí)的特定進(jìn)程發(fā)起了密碼運(yùn)算請(qǐng)求,可以主動(dòng)的拒絕此次訪問并將該行為寫入審計(jì)日志。通過靈活配置監(jiān)控程序,使得在有密碼服務(wù)請(qǐng)求時(shí)調(diào)用LibVMI讀取物理內(nèi)存完成主動(dòng)檢查,只有在檢查通過后,才完成密碼服務(wù)請(qǐng)求,檢查不通過則終止此次請(qǐng)求。所有提出密碼服務(wù)請(qǐng)求的行為,無論該請(qǐng)求是否正常響應(yīng)并完成,還是終止此次請(qǐng)求,都將寫入審計(jì)日志,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因等。
[0054]以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求所述為準(zhǔn)。
【權(quán)利要求】
1.一種提供密碼服務(wù)的方法,其特征在于,所述方法在虛擬化環(huán)境中提供密碼服務(wù),包括如下步驟: 1)設(shè)置一虛擬密碼設(shè)備管理器,用于管理宿主機(jī)上可用的密碼計(jì)算資源,并提供虛擬的密碼運(yùn)算設(shè)備,供客戶虛擬機(jī)訪問; 2)客戶虛擬機(jī)向虛擬的密碼運(yùn)算設(shè)備提出密碼服務(wù)請(qǐng)求,虛擬密碼設(shè)備管理器使用虛擬機(jī)自省方法,通過分析客戶虛擬機(jī)內(nèi)存空間的數(shù)據(jù)來主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效;如果檢查通過,則在虛擬密碼設(shè)備管理器中完成密碼運(yùn)算,并將運(yùn)算結(jié)果返回給客戶虛擬機(jī);否則不完成密碼運(yùn)算服務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于:所述虛擬密碼設(shè)備管理器可在基于乂的的虛擬化系統(tǒng)實(shí)現(xiàn),也可在基于7麻^1~6 28X728X1和的虛擬化系統(tǒng)實(shí)現(xiàn),還可在基于XV1-證的虛擬化系統(tǒng)中實(shí)現(xiàn)。
3.如權(quán)利要求1所述的方法,其特征在于:所述虛擬密碼設(shè)備管理器中支持密碼運(yùn)算的實(shí)體是虛擬密碼設(shè)備管理器可以訪問的物理實(shí)體,或者是通過在虛擬密碼設(shè)備管理器內(nèi)部的軟件實(shí)現(xiàn);每個(gè)虛擬密碼設(shè)備配置的密碼運(yùn)算實(shí)體相同或者不同。
4.如權(quán)利要求1所述的方法,其特征在于:不同的客戶虛擬機(jī)配置相同的密鑰來實(shí)現(xiàn)客戶虛擬機(jī)間的密鑰共享,調(diào)用該相同的密鑰進(jìn)行密鑰計(jì)算服務(wù);或者每個(gè)客戶虛擬機(jī)按需配置多個(gè)不同的密鑰,客戶虛擬機(jī)根據(jù)服務(wù)類型調(diào)用不同的密鑰進(jìn)行密鑰計(jì)算服務(wù)。
5.如權(quán)利要求1所述的方法,其特征在于:^^2)所述主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,檢查內(nèi)容包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容;采用的檢查條件是如下條件的任意組合:來自特定的客戶虛擬機(jī)、來自特定客戶虛擬機(jī)的特定進(jìn)程、該進(jìn)程屬于客戶虛擬機(jī)操作系統(tǒng)的特定賬戶、在特定的時(shí)間、特定的請(qǐng)求服務(wù)類型及內(nèi)容、訪問的憑證、當(dāng)前活動(dòng)的進(jìn)程只在預(yù)定的進(jìn)程列表中;主動(dòng)檢查的條件在虛擬密碼設(shè)備管理器中動(dòng)態(tài)配置完成。
6.如權(quán)利要求1所述的方法,其特征在于:發(fā)生密碼服務(wù)請(qǐng)求后,無論該請(qǐng)求是否正常響應(yīng)并完成,還是由于主動(dòng)檢查不通過而終止此次請(qǐng)求,虛擬密碼設(shè)備管理器都把所有密碼服務(wù)行為寫入審計(jì)日志,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因。
7.一種采用權(quán)利要求1所述方法的提供密碼服務(wù)的系統(tǒng),其特征在于,包括宿主機(jī)、客戶虛擬機(jī)和虛擬密碼設(shè)備管理器;所述虛擬密碼設(shè)備管理器管理宿主機(jī)上可用的密碼計(jì)算資源,并提供虛擬的密碼運(yùn)算設(shè)備以供客戶虛擬機(jī)訪問;所述客戶虛擬機(jī)通過所述虛擬密碼設(shè)備請(qǐng)求密碼服務(wù);所述虛擬密碼設(shè)備管理器響應(yīng)客戶虛擬機(jī)的密碼服務(wù)請(qǐng)求,使用虛擬機(jī)自省方法,通過分析客戶虛擬機(jī)內(nèi)存空間的數(shù)據(jù)來主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,如果檢查通過,則在虛擬密碼設(shè)備管理器中完成密碼運(yùn)算,并將運(yùn)算結(jié)果返回給客戶虛擬機(jī),如果檢查未通過則不完成密碼運(yùn)算服務(wù)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于:還包括外接的提供密碼運(yùn)算的物理實(shí)體,由所述虛擬密碼設(shè)備管理器進(jìn)行管理;虛擬密碼設(shè)備管理器可以在內(nèi)部使用軟件實(shí)現(xiàn)密碼運(yùn)算,也可以調(diào)用該外接的提供密碼運(yùn)算的物理實(shí)體實(shí)現(xiàn)密碼運(yùn)算。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于:所述主動(dòng)檢查客戶虛擬機(jī)提出的密碼服務(wù)請(qǐng)求是否有效,采用的檢查條件是如下條件的任意組合:來自特定的客戶虛擬機(jī)、來自特定客戶虛擬機(jī)的特定進(jìn)程、該進(jìn)程屬于客戶虛擬機(jī)操作系統(tǒng)的特定賬戶、在特定的時(shí)間、訪問之前的憑證、當(dāng)前活動(dòng)的進(jìn)程只在預(yù)定的進(jìn)程列表中;主動(dòng)檢查的條件在虛擬密碼設(shè)備管理器中動(dòng)態(tài)配置完成。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于:發(fā)生密碼服務(wù)請(qǐng)求后,無論該請(qǐng)求是否正常響應(yīng)并完成,還是由于主動(dòng)檢查不通過而終止此次請(qǐng)求,虛擬密碼設(shè)備管理器都把所有密碼服務(wù)行為寫入審計(jì)日志,包括調(diào)用密碼服務(wù)的進(jìn)程所在客戶虛擬機(jī)的標(biāo)識(shí)、進(jìn)程標(biāo)識(shí)、運(yùn)行該進(jìn)程的用戶標(biāo)識(shí)、所在客戶虛擬機(jī)操作系統(tǒng)完整性、進(jìn)程可執(zhí)行文件的完整性、請(qǐng)求服務(wù)時(shí)間、請(qǐng)求服務(wù)類型及內(nèi)容、密鑰標(biāo)識(shí)、密碼運(yùn)算結(jié)果、失敗原因。
【文檔編號(hào)】G06F21/31GK104461678SQ201410609724
【公開日】2015年3月25日 申請(qǐng)日期:2014年11月3日 優(yōu)先權(quán)日:2014年11月3日
【發(fā)明者】林璟鏘, 荊繼武, 管樂, 汪婧, 李冰雨, 王躍武, 潘無窮 申請(qǐng)人:中國(guó)科學(xué)院信息工程研究所