專利名稱:數(shù)據(jù)處理設備和數(shù)據(jù)處理方法
技術領域:
本發(fā)明涉及數(shù)據(jù)處理設備和數(shù)據(jù)處理方法,尤其涉及包括基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理設備和在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法。
背景技術:
企業(yè)的日常管理和業(yè)務操作會產(chǎn)生和使用大量數(shù)據(jù)。對這些數(shù)據(jù)進行存儲和各種處理,大大提高了企業(yè)的運營成本。因此,存在這樣的需求一種可信的服務平臺,為企業(yè)提供數(shù)據(jù)存儲和處理服務,使得企業(yè)不必為海量數(shù)據(jù)的存儲和運算處理耗費大量成本。由于企業(yè)數(shù)據(jù)的敏感性,這種提供代存儲和代處理服務的平臺首先需要滿足的條件是保證數(shù)據(jù)的安全性。數(shù)據(jù)的安全性包括以下幾個方面(1)用戶登錄安全;(2)資源訪問安全;(3)數(shù)據(jù)傳輸安全;(4)數(shù)據(jù)存儲安全;以及(5)數(shù)據(jù)處理安全。通常,在數(shù)據(jù)的代存儲和代處理業(yè)務中,用戶數(shù)據(jù)的存儲和處理都在服務端進行。 數(shù)據(jù)的傳輸和存儲的安全問題都可以通過加密來解決。但是對數(shù)據(jù)處理的安全問題卻不能通過加密來解決,因為要對數(shù)據(jù)進行處理就必須知道其內(nèi)容。雖然目前已經(jīng)有了一些關于 “在加密的數(shù)據(jù)之上進行運算(Computing on encrypted data) ”的研究,但這些方法還很不成熟,而且性能也不理想。在現(xiàn)有技術中,數(shù)據(jù)處理安全,即,如何防止在數(shù)據(jù)處理過程中數(shù)據(jù)被泄漏或被未經(jīng)授權(quán)地監(jiān)視和修改,是有待解決的問題。可信計算(TrustedComputing, TC)是一項由可信計算組(TrustedComputing Group, TCPA)推動和開發(fā)的技術。可信計算技術支持安全輸入輸出和內(nèi)存屏蔽/受保護執(zhí)行等特性。例如在Nuno Santos,Krishna P. Gummadi 和Rodrigo Rodrigues等人的“Towards Trusted CloudComputing”中描述了這樣的技術,其中介紹了諸如封閉箱執(zhí)行環(huán)境(closed box execution environment)的可信執(zhí)行環(huán)境或可信執(zhí)行平臺。
發(fā)明內(nèi)容
本發(fā)明的一個目的是提供一種數(shù)據(jù)處理設備,其能夠保證在虛擬機中進行數(shù)據(jù)處理時,正在處理的數(shù)據(jù)不會被泄漏或被未經(jīng)授權(quán)的監(jiān)視或修改。進一步說,本發(fā)明的目是提供一種數(shù)據(jù)處理設備,使得即使是數(shù)據(jù)處理設備的所有者或控制者,如果未經(jīng)授權(quán),也無法訪問正在處理的數(shù)據(jù)。本發(fā)明的另一個目的是提供一種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法,其能夠保證在虛擬機中進行數(shù)據(jù)處理時,正在處理的數(shù)據(jù)不會被泄漏或被未經(jīng)授權(quán)的監(jiān)視或修改。進一步說,本發(fā)明的目是提供一種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法,其使得即使是可信執(zhí)行平臺的所有者或控制者,如果未經(jīng)授權(quán),也無法訪問正在處理的數(shù)據(jù)。 本發(fā)明的一個實施例是一種數(shù)據(jù)處理設備,包括基于可信計算技術的可信執(zhí)行平臺,可信執(zhí)行平臺包括數(shù)據(jù)處理虛擬機,用于處理從客戶端發(fā)送的數(shù)據(jù)并向客戶端返回數(shù)據(jù)處理結(jié)果,其包括解密子模塊,用于對來自客戶端的加密的待處理數(shù)據(jù)進行解密,并遵循第一接口將解密后的數(shù)據(jù)提供給計算子模塊;計算子模塊,用于對來自解密子模塊的解密后的數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊;加密子模塊,用于對遵循第二接口來自計算子模塊的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制模塊,負責數(shù)據(jù)處理虛擬機的所有輸出,使得僅將從加密子模塊輸出的加密后的數(shù)據(jù)作為數(shù)據(jù)處理虛擬機對客戶端的輸出。在上述數(shù)據(jù)處理設備的進一步實施例中,解密子模塊使用獨立于數(shù)據(jù)處理設備運營的認證設備提供的解密密鑰對加密的待處理數(shù)據(jù)進行解密。在上述數(shù)據(jù)處理設備的進一步實施例中,解密密鑰是客戶端產(chǎn)生的會話密鑰。在上述數(shù)據(jù)處理設備的進一步實施例中,加密子模塊使用加密密鑰對要輸出的數(shù)據(jù)處理結(jié)果進行加密。在上述數(shù)據(jù)處理設備的進一步實施例中,加密密鑰是客戶端的客戶端公開密鑰或解密子模塊進行解密所使用的密鑰。在上述數(shù)據(jù)處理設備的進一步實施例中,可信執(zhí)行平臺還包括虛擬機監(jiān)視模塊, 用于保護數(shù)據(jù)處理虛擬機不被未經(jīng)授權(quán)的監(jiān)視或修改。在上述數(shù)據(jù)處理設備的進一步實施例中,虛擬機監(jiān)視模塊用于啟動數(shù)據(jù)處理虛擬機。在上述數(shù)據(jù)處理設備的進一步實施例中,可信執(zhí)行平臺還包括可信平臺模塊,用于向認證設備提供用于驗證數(shù)據(jù)處理設備的運行狀態(tài)信息;其中,虛擬機監(jiān)視模塊根據(jù)認證設備的驗證結(jié)果啟動數(shù)據(jù)處理虛擬機。在上述數(shù)據(jù)處理設備的進一步實施例中,運行狀態(tài)信息是指示虛擬機監(jiān)視模塊是否啟動的信息。在上述數(shù)據(jù)處理設備的進一步實施例中,該數(shù)據(jù)處理設備適于構(gòu)造云計算平臺。在上述數(shù)據(jù)處理設備的進一步實施例中,該數(shù)據(jù)處理設備適于構(gòu)造軟件即服務平臺。本發(fā)明的一個實施例是一種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法,包括解密步驟,對來自客戶端的已經(jīng)由客戶端加密的數(shù)據(jù)進行解密,并遵循第一接口提供解密后的數(shù)據(jù)以由計算步驟進行處理;計算步驟,對通過解密步驟解密后的數(shù)據(jù)進行處理,并遵循第二接口提供數(shù)據(jù)處理結(jié)果以由加密步驟進行處理;加密步驟,對遵循第二接口提供的通過計算步驟得到的數(shù)據(jù)處理結(jié)果進行 加密;以及輸出控制步驟,執(zhí)行數(shù)據(jù)處理虛擬機的所有輸出,使得僅將加密步驟的輸出作為數(shù)據(jù)處理虛擬機對客戶端的輸出。
參照下面結(jié)合附圖對本發(fā)明實施例的說明,會更加容易地理解本發(fā)明的以上和其它目的、特點和優(yōu)點。在附圖中,相同的或?qū)募夹g特征或部件將采用相同或?qū)母綀D標記來表示。在附圖中不必依照比例繪制出單元的尺寸和相對位置。圖1是示出簡化的傳統(tǒng)軟件即服務(SaaS,Software as a Service)模型的框圖。
圖2是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)處理設備的結(jié)構(gòu)的框圖。圖3是示出應用根據(jù)本發(fā)明實施例的數(shù)據(jù)處理設備的可信SaaS平臺的結(jié)構(gòu)的框圖。圖4是示出根據(jù)本發(fā)明實施例的在運行于可信執(zhí)行平臺的虛擬機上執(zhí)行數(shù)據(jù)處理的方法的流程圖。
圖5是示出根據(jù)本發(fā)明實施例的SaaS服務提供商向認證設備注冊的過程的時序圖。圖6是示出根據(jù)本發(fā)明實施例的啟動數(shù)據(jù)處理虛擬機的過程的時序圖。圖7是示出根據(jù)本發(fā)明實施例的用戶注冊過程的時序圖。圖8是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)存儲操作的時序圖。圖9是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢操作的時序圖。圖10是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)處理操作的時序圖。圖11是示出實現(xiàn)本發(fā)明的計算機的示例性結(jié)構(gòu)的框圖。
具體實施例方式下面參照附圖來說明本發(fā)明的實施例。應當注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關的、本領域技術人員已知的部件和處理的表示和描述。本發(fā)明公開了一種數(shù)據(jù)處理設備。參考圖2,圖2是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)處理設備的結(jié)構(gòu)的框圖。根據(jù)本發(fā)明的數(shù)據(jù)處理設備包括基于可信計算技術的可信執(zhí)行平臺220,從而能夠保證數(shù)據(jù)處理的安全??尚艌?zhí)行平臺220是保證來賓虛擬機的機密執(zhí)行的可信執(zhí)行環(huán)境,例如可以基于封閉箱執(zhí)行環(huán)境。如圖2所示,數(shù)據(jù)處理設備中包括的可信執(zhí)行平臺220包括數(shù)據(jù)處理虛擬機221。 數(shù)據(jù)處理虛擬機221用于處理從客戶端發(fā)送的數(shù)據(jù)并向客戶端返回數(shù)據(jù)處理結(jié)果。數(shù)據(jù)處理虛擬機221包括解密子模塊222,用于對來自客戶端的加密的待處理數(shù)據(jù)進行解密,并遵循第一接口將解密后的數(shù)據(jù)提供給計算子模塊223;計算子模塊223,用于對來自解密子模塊222的解密后的數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊224 ;加密子模塊224,用于對遵循第二接口來自計算子模塊223的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制模塊225,負責數(shù)據(jù)處理虛擬機221的所有輸出,使得僅將從加密子模塊224輸出的加密后的數(shù)據(jù)作為數(shù)據(jù)處理虛擬機221對客戶端的輸出。輸出控制模塊225負責管理解密子模塊222、計算子模塊223和加密子模塊224的輸出,使得解密子模塊222、計算子模塊223和加密子模塊224中要向外界進行輸出的模塊只能通過輸出控制模塊225向外輸出。進一步地,可以將輸出控制模塊225配置為也管理輸入,使得解密子模塊222、計算子模塊223和加密子模塊224中要從外界接受輸入的模塊只能通過輸出控制模塊225來接收外界的輸入。在本發(fā)明的數(shù)據(jù)處理設備的一個示例中, 輸出控制模塊225可以用Java的沙盒模型實現(xiàn)??梢詫⒔饷茏幽K222、計算子模塊223 和加密子模塊224封裝在沙盒模型中,沙盒模型中的模塊只能通過輸出控制模塊225向外輸出。此外,還可以將沙盒模型設置為使得其中的模塊只能通過輸出控制模塊225來接收外界的輸入。當然,也可以通過其它方法來實現(xiàn)輸出控制模塊225。此外,例如可以將輸出控制模塊225配置為只能通過網(wǎng)絡連接(socket)與外界交互,從而可以限制網(wǎng)絡連接的發(fā)起者只能為加密子模塊,使得只有加密子模塊才可與外部交互。解密子模塊222、計算子模塊223以及加密子模塊224通過特定的接口,即第一接口和第二接口耦合。這允許由不同的開發(fā)商分別開發(fā)解密子模塊222、加密子模塊224和計算子模塊223,而不必為了集成各自開發(fā)的模塊而將代碼公開給對方。因而,開發(fā)解密子模塊222、加密子模塊224的開發(fā)商不能了解和控制計算子模塊223,開發(fā)計算子模塊223的開發(fā)商也不能了解和控制解密子模塊222、加密子模塊224。在一個具體實現(xiàn)中,解密子模塊222、加密子模塊224和輸出控制模塊225可以由獨立于數(shù)據(jù)處理設備運營的認證設備(認證方)提供。為了保證解密子模塊222、計算子模塊223和加密子模塊224能夠被分別提供并無縫銜接,即,為了使各模塊的設計實現(xiàn)與運行控制相分離,預先設定解密子模塊222和計算子模塊223之間的接口(第一接口),以及計算子模塊223與加密子模塊224之間的接口 (第二接口)。在本發(fā)明的數(shù)據(jù)處理設備的一個示例中,解密子模塊222和計算子模塊223之間的接口以及計算子模塊223與加密子模塊224之間的接口可以通過多種語言以多種方式實現(xiàn)。以Java語言為例,解密子模塊322、計算子模塊323、加密子模塊324可以分別作為三個Java類庫來實現(xiàn)。計算子模塊323提供解密子模塊322所需的應用程序編程接口 (API, Application ProgrammingInterface),加密子模塊324提供計算子模塊323所需的API。例如,認證方規(guī)定計算子模塊必須實現(xiàn)一個屬于指定包的具有指定名稱的類,如public class Computation類,該類中包含一個指定的方法,如public voidcompute (DecryptedData decryptedData)。并且,認證方告知服務提供商在加密子模 Ife 324中實現(xiàn)了一個名為public class Encryption的類,該類中包含一個public void encrypt (DecryptedData decryptedData)方法(但并不告知 encrypt 方法的實現(xiàn)細節(jié)); 認證方在解密子模塊322中調(diào)用計算子模塊323的Computation類的compute方法即可將解密后的數(shù)據(jù)交給計算子模塊323進行處理;計算子模塊323調(diào)用加密子模塊324的 encrypt方法即可將處理結(jié)果交給加密子模塊324進行加密。當服務提供商按照認證方的規(guī)定實現(xiàn)了計算子模塊323后,便將該計算子模塊323的Java類庫提交給認證方,認證方將該計算子模塊類庫與解密子模塊類庫、加密子模塊類庫一起進行編譯,然后將編譯后的文件打包,并與JRE—起加入到制作的虛擬機鏡像文件中。使用本發(fā)明的數(shù)據(jù)處理設備的以上示例性設置,可以防止計算子模塊223將未經(jīng)加密的數(shù)據(jù)直接輸出到虛擬機外部。當在運行于基于可信計算技術的可信執(zhí)行平臺220的數(shù)據(jù)處理虛擬機221中進行數(shù)據(jù)處理時,首先在解密子模塊222中對來自客戶端的數(shù)據(jù)進行解密。從客戶端發(fā)送的待處理數(shù)據(jù)都已經(jīng)進行了加密。所述加密可以以本領域技術人員熟悉的各種方式進行。例如,使用對稱密鑰諸如會話密鑰進行加密,或者使用非對稱密鑰諸如接收方的公開密鑰進行加密,或它們的組合。相對應地,解密子模塊222在對待處理數(shù)據(jù)進行解密時,需要使用相應的解密密鑰進行解密。例如,當客戶端使用本次會話產(chǎn)生的會話密鑰對待處理數(shù)據(jù)進行加密時,解密子模塊需要使用該會話密鑰對待處理數(shù)據(jù)進行解密。對于不同的加密方式,可以采用已知的安全方式來分發(fā)密鑰。例如,解密密鑰可以是解密子模塊222預先持有的,或是由獨立于所述數(shù)據(jù)處理設備運營的認證設備在認證完成后提供的。解密子模塊222通過第一接口將解密后的數(shù)據(jù)提供給計算子模塊223。在計算子模塊223中,對解密后的數(shù)據(jù)進行處理,并遵循第二接口提供數(shù)據(jù)處理結(jié)果以由加密子模塊224進行加密。在計算子模塊223中的處理可以是根據(jù)客戶需要對待處理數(shù)據(jù)進行的各種計算和操作。隨后,加密子模塊224對遵循第二接口由計算子模塊223提供的數(shù)據(jù)處理結(jié)果進行加密。相似地,加密子模塊224進行加密所使用的加密密鑰可以是任何一種或多種本領域技術人員熟悉的密鑰形式。例如,加密密鑰是客戶端的客戶端公開密鑰(在非對稱密鑰的情況下),或者是解密子模塊進行解密所使用的密鑰(在對稱密鑰的情況下)。在輸出控制模塊225中,執(zhí)行數(shù)據(jù)處理虛擬機221的輸出,使得僅將加密子模塊 224的輸出作為數(shù)據(jù)處理虛擬機221對客戶端的輸出。根據(jù)本發(fā)明的數(shù)據(jù)處理設備所包括的可信執(zhí)行平臺220是基于可信計算技術構(gòu)造的。因此,該可信執(zhí)行平臺220還可以包括用于保護數(shù)據(jù)處理虛擬機221不被未經(jīng)授權(quán)的監(jiān)視或修改的虛擬機監(jiān)視模塊。該虛擬機監(jiān)視模塊可以用于啟動運行于該可信執(zhí)行平臺的虛擬機。該虛擬機監(jiān)視模塊可以采用Terra技術實現(xiàn)。此外,該可信執(zhí)行平臺220還可以包括可信平臺模塊。該可信平臺模塊用于向獨立于根據(jù)本發(fā)明的數(shù)據(jù)處理設備運營的認證設備提供該數(shù)據(jù)處理設備的運行狀態(tài)信息,以供認證設備進行驗證。運行狀態(tài)信息可以指示該可信執(zhí)行平臺220上是否啟動了虛擬機監(jiān)視模塊。在認證設備驗證出該可信執(zhí)行平臺220可信時,指示虛擬機監(jiān)視模塊啟動虛擬機。即,可信執(zhí)行平臺220上的虛擬機監(jiān)視模塊根據(jù)認證設備的驗證結(jié)果啟動虛擬機221。相應地,本發(fā)明還公開了一種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法。參考圖4。圖4是示出根據(jù)本發(fā)明實施例的在運行于可信執(zhí)行平臺的虛擬機上執(zhí)行數(shù)據(jù)處理的方法的流程圖。如圖4所示,當在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理時,首先進行解密步驟401。在步驟401中,對來自客戶端的已經(jīng)由客戶端加密的數(shù)據(jù)進行解密,并遵循第一接口提供解密后的數(shù)據(jù)以由計算步驟進行處理。從客戶端發(fā)送的待處理數(shù)據(jù)都已經(jīng)進行了加密。所述加密可以以本領域技術人員熟悉的各種方式進行。例如,使用對稱密鑰諸如會話密鑰進行加密,或者使用非對稱密鑰諸如接收方的公開密鑰進行加密,或它們的組合。相對應地,在對待處理數(shù)據(jù)進行解密時,需要使用相應的解密密鑰進行解密。例如,如果客戶端使用本次會話產(chǎn)生的會話密鑰對待處理數(shù)據(jù)進行加密,則需要使用該會話密鑰對待處理數(shù)據(jù)進行解密。對于不同的加密方式,可以采用已知的安全方式來分發(fā)密鑰。例如,解密密鑰可以是由獨立于所述數(shù)據(jù)處理設備運營的認證設備在認證完成后提供的。
然后,進行到計算步驟402。在步驟402中,對通過解密步驟解密后的數(shù)據(jù)進行處理,并遵循第二接口提供數(shù)據(jù)處理結(jié)果以由加密步驟進行加密。所述處理可以是根據(jù)客戶需要對待處理數(shù)據(jù)進行的各種計算和操作。隨后,進行加密步驟403,在步驟403中,對遵循第二接口提供的通過計算步驟得到的數(shù)據(jù)處理結(jié)果進行加密。相似地,進行加密所使用的加密密鑰可以是任何一種或多種本領域技術人員熟悉的密鑰形式。例如,加密密鑰是客戶端的客戶端公開密鑰(在非對稱密鑰的情況下),或者是解密步驟中使用的密鑰(在對稱密鑰的情況下)。在接下來的輸出控制步驟404中,執(zhí)行數(shù)據(jù)處理虛擬機的輸出,使得僅將加密步驟的輸出作為數(shù)據(jù)處理虛擬機對客戶端的輸出。該數(shù)據(jù)處理流程在加密的處理結(jié)果輸出之后結(jié)束。應用示例在下文中,為了更清楚地說明本發(fā)明數(shù)據(jù)處理設備的應用。結(jié)合軟件即服務 (SaaS)系統(tǒng),舉例說明應用該數(shù)據(jù)處理設備的實施例。本領域技術人員可以理解,根據(jù)本發(fā)明的數(shù)據(jù)處理設備可以應用于任何基于可信計算技術來保證數(shù)據(jù)處理安全的系統(tǒng)中,而不限于舉例的SaaS系統(tǒng)。隨著網(wǎng)絡的飛速發(fā)展,SaaS作為云計算技術的一部分,得到了很大發(fā)展。一般來說,云計算包括三個層面最底層是基礎設施即服務(IaaS,Infrastructure as a Service),它為用戶提供虛擬的硬件和系統(tǒng)軟件等資源;中間層為平臺即服務(PaaS, Platform as a Service),它為應用程序開發(fā)者和使用者提供了一個平臺;最上面一層便是SaaS。與傳統(tǒng)的軟件使用模式相比,SaaS能為用戶帶來如下好處(1)降低使用成本; (2)可以通過瀏覽器隨時隨地使用軟件;(3)方便的軟件升級。盡管如此,目前SaaS在國內(nèi)甚至全球的推廣并未如預期的一樣順利。導致這個問題的最大原因即安全問題。在SaaS模式中,例如,傳統(tǒng)的可信計算平臺(例如,Terra)能夠防止有權(quán)操縱物理機器的管理員監(jiān)視或篡改運行于此物理機器之上的虛擬機內(nèi)的數(shù)據(jù)和計算,從而能夠保護虛擬機內(nèi)數(shù)據(jù)和計算的安全。但是它并不能解決SaaS中的數(shù)據(jù)處理安全。原因主要有以下兩點(1)它并沒有指定由哪一方負責啟動虛擬機。如果虛擬機由SaaS服務提供商來啟動,那么作為虛擬機的啟動者,SaaS服務提供商當然可以監(jiān)視或修改虛擬機內(nèi)的數(shù)據(jù);(2) 傳統(tǒng)的SaaS系統(tǒng)中包括計算、存儲和傳輸三種類型的服務器。盡管可信計算平臺能夠保證每臺服務器是可信的,它依然不能保證整個SaaS系統(tǒng)是可信的。比如,可信的傳輸服務器可以將數(shù)據(jù)傳輸?shù)轿挥谠揝aaS系統(tǒng)之外的不可信的計算服務器。而事實上,由于經(jīng)過存儲和傳輸服務器的數(shù)據(jù)已經(jīng)加密,所以存儲和傳輸服務器不必是可信的。Nuno Santos, Krishna P. Gummadi 禾口 Rodrigo Rodrigues 等人的"Towards Trusted Cloud Computing”一文中描述的方法不能用于解決SaaS中的數(shù)據(jù)處理安全問題。 原因主要有以下幾點(1)與傳統(tǒng)可信計算平臺一樣,它也沒有指定由哪一方負責啟動虛擬機;(2)在“TowardsTrusted Cloud Computing”中公布的協(xié)議只能用來保證虛擬機啟動和遷移時的安全,而在SaaS系統(tǒng)中需要一套協(xié)議來保證數(shù)據(jù)只有在虛擬機內(nèi)部才處于未加密狀態(tài)。專利《一種SaaS應用下提高數(shù)據(jù)安全性的方法、裝置及系統(tǒng)》(公開號CN101510888A)中提到的數(shù)據(jù)安全性是指不同用戶之間的數(shù)據(jù)隔離、數(shù)據(jù)存儲和傳輸?shù)陌踩?。在其“網(wǎng)站服務器”上對數(shù)據(jù)進行處理時,仍然是未加密的數(shù)據(jù)。具有操縱“網(wǎng)站服務器”權(quán)限的管理員可以輕易地監(jiān)視或篡改用戶數(shù)據(jù)的內(nèi)容。因此該專利并未解決數(shù)據(jù)處理的安全性問題。下面參考圖1說明傳統(tǒng)的SaaS系統(tǒng)模型。圖1是示出簡化的傳統(tǒng)SaaS模型的框圖。如圖1所示,在SaaS系統(tǒng)中,任何應用程序的功能都可以歸結(jié)為通信、存儲和計算三類。圖1示出傳統(tǒng)的SaaS系統(tǒng)100的簡化體系結(jié)構(gòu),它包括三種服務器,分別是傳輸服務器101、存儲服務器103和計算服務器102。在該簡化的SaaS體系結(jié)構(gòu)里,SaaS客戶端 120是用戶終端,它包含WEB瀏覽器121。為用戶提供圖形界面的應用程序就運行于WEB瀏覽器121中。TOB瀏覽器121通過與傳輸服務器101進行通信,來發(fā)送用戶的操作請求和接收響應。對用戶操作請求的處理是由這三種服務器共同協(xié)作完成的傳輸服務器101是 TOB服務器,它負責連接TOB瀏覽器121、計算服務器102、存儲服務器103以及其它SaaS系統(tǒng)的傳輸服務器;存儲服務器103負責將用戶的數(shù)據(jù)存儲在數(shù)據(jù)庫104中;計算服務器102 負責對用戶的數(shù)據(jù)加以處理并返回處理結(jié)果。在簡化的SaaS體系結(jié)構(gòu)基礎之上,為解決SaaS系統(tǒng)中數(shù)據(jù)處理安全問題,結(jié)合可信計算技術,將上述數(shù)據(jù)處理設備應用到SaaS系統(tǒng)中,提出了如圖3所示的可信SaaS系統(tǒng) 300。參考圖3,圖3是示出應用根據(jù)本發(fā)明實施例的數(shù)據(jù)處理設備的可信SaaS平臺的結(jié)構(gòu)的框圖。由于引入了可信計算技術,可信SaaS系統(tǒng)300相對于傳統(tǒng)的SaaS系統(tǒng)100,可以與第三方裝置,例如圖3中的認證設備350配合使用。如圖3所示,認證設備350包括協(xié)調(diào)模塊351和虛擬機管理模塊352。具體來說,協(xié)調(diào)模塊351負責與可信SaaS系統(tǒng)300中的計算服務器320的可信平臺模塊326通信,驗證計算服務器320是否可信。遠程驗證是否可信的方法和步驟請參考 Nuno Santos, Krishna P. Gummadi 禾口 Rodrigo Rodrigues 等人的"Towards Trusted Cloud Computing"—^; ψ ^ 2. 3 "Trusted Computing,,一f。虛擬機管理模塊352負責與計算服務器320的虛擬機監(jiān)視模塊327通信,控制虛擬機監(jiān)視模塊327啟動或停止虛擬機321。根據(jù)本發(fā)明的數(shù)據(jù)處理設備,可以用作可信SaaS系統(tǒng)300??尚臩aaS系統(tǒng)300包括傳輸服務器310、計算服務器320,以及包括數(shù)據(jù)庫331的存儲服務器330。其中,計算服務器320對應于圖2中基于可信計算技術的可信執(zhí)行平臺220,其包括以下模塊a)虛擬機監(jiān)視模塊327 負責與虛擬機管理模塊352通信,接收其指令以啟動或停止虛擬機321,同時保護虛擬機321不被非法竊取或篡改。b)可信平臺模塊326 與協(xié)調(diào)模塊351通信,并提供其所在計算服務器320的運行環(huán)境信息,供協(xié)調(diào)模塊351驗證其是否可信(即虛擬機監(jiān)視模塊327是否正在運行)。c)虛擬機321 對應于圖2中的數(shù)據(jù)處理虛擬機221,它是由認證設備350的虛擬機管理模塊352控制虛擬機監(jiān)視模塊327啟動的虛擬機,在可信SaaS平臺中,所有對數(shù)據(jù)的處理都在虛擬機321內(nèi)部進行。虛擬機321包括i.解密子模塊322 用于對來自SaaS客戶端340的加密的待處理數(shù)據(jù)進行解密, 并遵循第一接口將解密后的數(shù)據(jù)提供給計算子模塊323 ;ii.計算子模塊323 用于對來自解密子模塊322的解密后的數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊324 ;iii.加密子模塊324 用于對遵循第二接口來自計算子模塊323的數(shù)據(jù)處理結(jié)果進行加密;以及iv.輸出控制模塊325,負責虛擬機321的所有輸出,使得僅將從加密子模塊324 輸出的加密后的數(shù)據(jù)作為虛擬機321對客戶端340的輸出。另外,在SaaS客戶端340中,新增加了 USB設備342。USB設備342包括用戶密鑰343、協(xié)調(diào)模塊公鑰344、加密模塊345以及解密模塊346。參考圖7。圖7是示出根據(jù)本發(fā)明實施例的用戶注冊過程的時序圖。如圖7所示, SaaS用戶710使用SaaS服務之前需要向認證設備350注冊。S卩,在使用SaaS服務之前, SaaS用戶710向認證設備350發(fā)送注冊請求(701)。注冊之后,認證設備350將USB設備發(fā)放給用戶710 (702)。當用戶710通過瀏覽器341使用SaaS服務時,所有消息都通過USB 設備342內(nèi)的密鑰進行加密或解密。下文中,回到圖3,依次對可信SaaS平臺中各個功能實體的構(gòu)造和操作進行更詳細地描述。(I)SaaS 客戶端 340作為SaaS用戶的終端,SaaS客戶端340包括TOB瀏覽器341和USB設備342。為 SaaS用戶提供圖形界面的應用程序運行于TOB瀏覽器341內(nèi)部。USB設備342由認證設備 350提供給SaaS用戶。它包括一對非對稱的用戶私有和公開密鑰343、認證設備350的協(xié)調(diào)模塊的公開密鑰344、解密模塊346、加密模塊345以及協(xié)調(diào)模塊351的統(tǒng)一資源定位符 (URI,未示出)。從SaaS客戶端340發(fā)往傳輸服務器310的消息都通過USB設備342內(nèi)部的密鑰和加密模塊345進行加密;從傳輸服務器310發(fā)往SaaS客戶端340的消息都通過USB設備 342內(nèi)部的密鑰和解密模塊346進行解密。具體地說,從SaaS客戶端340發(fā)往傳輸服務器 310的HTTP請求中包括的數(shù)據(jù)和操作都由一個新生成的對稱的會話密鑰進行加密。該會話密鑰則由認證設備350的協(xié)調(diào)模塊351的公開密鑰進行加密,并且被封裝在HTTP請求中與被加密過的數(shù)據(jù)和操作一同發(fā)往傳輸服務器310。(2)傳輸服務器310傳輸服務器310是直接接收SaaS客戶端340請求的TOB服務器。一方面,由于這些請求都已被加密,并且傳輸服務器310無法將其解密,因此傳輸服務器310別無選擇,只能將其轉(zhuǎn)發(fā)給一個存儲服務器330或一個可信的計算服務器320。另一方面,來自計算服務器320的處理結(jié)果或者存儲服務器330的存儲結(jié)果也是經(jīng)過加密的,傳輸服務器310無法解密,只能將這些結(jié)果轉(zhuǎn)發(fā)給SaaS客戶端340。因此,以上機制保證了通過傳輸服務器310 轉(zhuǎn)發(fā)的消息的保密性和完整性。另外,由于傳輸服務器310能夠?qū)崟r監(jiān)測每個計算服務器 320和存儲服務器330的負載情況,而且計算服務器320和存儲服務器330的數(shù)量可以動態(tài)增加或減少,因此可信SaaS平臺具有均衡負載和易于擴展的特性。
(3)計算服務器320計算服務器320是運行虛擬機的服務器。其基于可信計算技術,包括虛擬機監(jiān)視模塊327和可信平臺模塊326,對應于根據(jù)本發(fā)明的數(shù)據(jù)處理設備中包括的可信執(zhí)行平臺。虛擬機監(jiān)視模塊327的功能包括a)啟動或停止虛擬機321 ;b)保證虛擬機321 內(nèi)部的數(shù)據(jù)和計算不被竊取或篡改;c)接收并執(zhí)行虛擬機管理模塊352的消息(啟動、停止虛擬機321)。可信平臺模塊326的功能是遠程驗證。為了成為可信的,計算服務器320需要在啟動時啟動虛擬機監(jiān)視模塊327,并且向協(xié)調(diào)模塊351進行注冊。收到注冊請求后,協(xié)調(diào)模塊351對計算服務器320是否可信進行驗證(即是否運行著虛擬機監(jiān)視模塊327,具體步驟參見圖6,“計算服務器注冊”流程)。在“計算服務器注冊”流程的最后一步中,如果計算服務器320是可信的,則協(xié)調(diào)模塊351通知虛擬機管理模塊352向虛擬機監(jiān)視模塊327發(fā)送一個命令來啟動虛擬機321 (圖6中的605)。每當收到由傳輸服務器310轉(zhuǎn)發(fā)的來自SaaS客戶端340的消息時,計算服務器 320調(diào)用虛擬機321來處理這些消息。虛擬機321通過解密子模塊322來解密消息中的數(shù)據(jù),通過特定的接口將解密后的數(shù)據(jù)提供給計算子模塊323。計算子模塊323處理這些數(shù)據(jù),通過特定的接口將處理后的數(shù)據(jù)提供給加密子模塊324。加密子模塊324加密處理結(jié)果。輸出控制模塊225進行控制,其中僅將從加密子模塊324輸出的加密后的數(shù)據(jù)作為虛擬機321對客戶端340的輸出。從而,計算服務器320將加密的處理結(jié)果返回給傳輸服務器310或者存儲于存儲服務器330。在本示例應用中,解密子模塊322、計算子模塊323、加密子模塊324以及它們之間的各接口是通過Java語言來實現(xiàn)的。例如,解密子模塊322、計算子模塊323、加密子模塊324可以分別作為三個Java類庫來實現(xiàn)。計算子模塊323提供解密子模塊322所需的 API,加密子模塊324提供計算子模塊323所需的API。例如,認證方規(guī)定計算子模塊必須實現(xiàn)一個屬于指定包的具有指定名稱的類,如public class Computation類,該類中包含 ——個 旨定白勺方法,如 public void compute (DecryptedDatadecryptedData) 并且,認i正方告知SaaS服務提供商在加密子模塊324中實現(xiàn)了一個名為public class Encryption 白勺類,i亥類中包含一publicvoid encrypt (DecryptedData decryptedData)方法({i. 并不告知encrypt方法的實現(xiàn)細節(jié));認證方在解密子模塊322中調(diào)用計算子模塊323的 Computation類的compute方法即可將解密后的數(shù)據(jù)交給計算子模塊323進行處理;計算子模塊323調(diào)用加密子模塊324的encrypt方法即可將處理結(jié)果交給加密子模塊324進行加密。當SaaS服務提供商按照認證方的規(guī)定實現(xiàn)了計算子模塊323后,便將該計算子模塊 323的Java類庫提交給認證方,認證方將該計算子模塊類庫與解密子模塊類庫、加密子模塊類庫一起進行編譯,然后將編譯后的文件打包,并與JRE —起加入到制作的虛擬機鏡像文件中。當然,該特定接口的實現(xiàn)方法不是唯一的,也可以采用其它的語言、其它的實現(xiàn)方法。結(jié)合下文中對圖5和圖6的說明,預先設定各子模塊之間的接口的理由和效果將更加清楚。在虛擬機321內(nèi)部(例如在使用Java的沙盒模型來實現(xiàn)輸出控制模塊225的情況下),只有加密子模塊324和解密子模塊322能夠與虛擬機321之外的計算服務器交互,而計算子模塊323是一個內(nèi)部模塊,它無法與虛擬機321的外部進行交互。加密子模塊324 和解密子模塊322可以例如由認證設備350提供。而計算子模塊323可以由SaaS服務提供商提供。因此,在虛擬機321內(nèi)部的未加密的數(shù)據(jù)得到了保護,不會被計算子模塊直接輸
出ο(4)存儲服務器330存儲服務器330直接操作數(shù)據(jù)庫331,并且負責處理對數(shù)據(jù)庫331進行查詢和存儲操作的請求。這些請求或直接來自于計算服務器320,或是由傳輸服務器310轉(zhuǎn)發(fā)的間接來自SaaS客戶端340的請求。所有存儲于存儲服務器330的數(shù)據(jù)都由用戶公開密鑰進行加密,并且只能在SaaS客戶端340通過用戶私有密鑰進行解密,因此保證了數(shù)據(jù)傳輸和存儲的安全。另外,通過擴展可信SaaS平臺,可以將無需加密的公共數(shù)據(jù)從用戶私有數(shù)據(jù)中隔離出來,存儲在一臺單獨的數(shù)據(jù)庫服務器上。(5)認證設備35O認證設備350包括協(xié)調(diào)模塊351和虛擬機管理模塊352。協(xié)調(diào)模塊351負責向計算服務器320的虛擬機監(jiān)視模塊327驗證該計算服務器320是否可信。如果虛擬機監(jiān)視模塊327正在運行,那么計算服務器320就被認證設備350認為是可信的。然后,協(xié)調(diào)模塊 351會調(diào)用虛擬機管理模塊352控制虛擬機監(jiān)視模塊327在該可信計算服務器320上啟動虛擬機321。下面結(jié)合圖5和圖6對預先設定計算子模塊與加解密子模塊之間的接口,從而分離計算子模塊的“設計實現(xiàn)”與“運行控制”的方法和操作進行詳細描述。計算子模塊的“設計實現(xiàn)”是指如何處理用戶的未加密數(shù)據(jù),顯然,這個工作只能由SaaS服務提供商來完成。而計算子模塊的“運行控制”是指如何控制計算子模塊的啟動、 運行和停止。通過利用預先設定的接口,“運行控制”可以不由SaaS服務提供商自己來完成,而由認證設備350來完成。參考圖5,圖5是示出根據(jù)本發(fā)明實施例的SaaS服務提供商510向認證設備350 注冊的過程的時序圖。如圖5所示,SaaS服務提供商510在提供SaaS服務之前,先向一個或多個認證設備350提交注冊申請(501)。認證設備350對SaaS服務提供商510的申請進行審批。審批通過后,認證設備350將認證許可通知給SaaS服務提供商510 (502)。然后, SaaS服務提供商510與認證設備350互換商業(yè)公開密鑰(503和504)。認證設備350向 SaaS服務提供商510提供加密子模塊和解密子模塊的特定接口,SaaS服務提供商510根據(jù)該特定接口,制作計算子模塊并提交給認證設備350。然后,認證設備350將該計算子模塊與解密子模塊、加密子模塊一起制作成一個虛擬機鏡像文件。參考圖6,圖6是示出根據(jù)本發(fā)明實施例的啟動數(shù)據(jù)處理虛擬機的過程的時序圖。 SaaS服務提供商向認證設備350注冊之后,即可啟動其傳輸服務器、存儲服務器和計算服務器為SaaS用戶提供服務。計算服務器320啟動時,需要啟動虛擬機監(jiān)視模塊327,并向認證設備350的協(xié)調(diào)模塊351發(fā)出注冊請求(601)。收到注冊請求后,協(xié)調(diào)模塊351通過可信平臺模塊326驗證計算服務器320是否可信(602)。如果可信平臺模塊326通知協(xié)調(diào)模塊351的驗證結(jié)果表明計算服務器320是可信的(通知驗證結(jié)果(603)),則協(xié)調(diào)模塊351 通知虛擬機管理模塊352向虛擬機監(jiān)視模塊327發(fā)送啟動虛擬機的命令(604),并將如圖5 所示制作的虛擬機鏡像文件發(fā)送給虛擬機監(jiān)視模塊327,并命令其啟動虛擬機(605)。
虛擬機監(jiān)視模塊327根據(jù)虛擬機鏡像文件啟動虛擬機,并在虛擬機中植入虛擬機的私有密鑰。由于虛擬機由認證設備350啟動,所以SaaS服務提供商的管理員無權(quán)登錄虛擬機,從而無法查看或修改里面未加密的數(shù)據(jù)。此外,虛擬機監(jiān)視模塊能夠防止有權(quán)登錄計算服務器的管理員(或攻擊者)竊取或篡改虛擬機內(nèi)部的數(shù)據(jù)。下面將詳細說明這樣的方法,該方法能夠確保數(shù)據(jù)只有在處于虛擬機內(nèi)部時才是未加密的。通過引入可信計算技術并將計算子模塊的運行控制與其設計實現(xiàn)相分離,已經(jīng)可以確保處于虛擬機內(nèi)部的未加密數(shù)據(jù)的安全。計算子模塊的運行控制與其設計實現(xiàn)相分離是通過解密子模塊與計算子模塊以及計算子模塊與加密子模塊之間各自的特定接口實現(xiàn)的。接下來就是要確保數(shù)據(jù)只有處于虛擬機內(nèi)部才是未加密的,這可以依靠一系列協(xié)議 (消息交互流程)來保證。同樣,以SaaS系統(tǒng)為例來進行說明。通過對SaaS系統(tǒng)中的數(shù)據(jù)操作進行分析,總結(jié)出三種數(shù)據(jù)操作類型數(shù)據(jù)存儲、數(shù)據(jù)查詢、數(shù)據(jù)處理。下面分別說明為這三種數(shù)據(jù)操作類型設計的協(xié)議,它們確保了數(shù)據(jù)只有處于虛擬機內(nèi)部才是未加密的。數(shù)據(jù)存儲參考圖8。圖8是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)存儲操作的時序圖。圖8例示了 SaaS用戶進行數(shù)據(jù)存儲操作時,可信SaaS平臺內(nèi)各個模塊之間的消息交互流程。首先,SaaS用戶通過SaaS客戶端340發(fā)送“數(shù)據(jù)存儲請求1”消息至傳輸服務器 310(801)?!皵?shù)據(jù)存儲請求1”中包含三部分。第一部分是需要存儲的數(shù)據(jù)、操作類型標識 (這里為存儲操作)、用戶公開密鑰、客戶端340提供的用戶標識。第一部分通過客戶端340 新生成的會話密鑰K進行加密。第二部分是會話密鑰K,它通過協(xié)調(diào)模塊351的公開密鑰進行加密。第三部分是協(xié)調(diào)模塊351的URI,它不需要加密。因此,客戶端340生成“數(shù)據(jù)存儲請求1”消息時,需要用到USB設備中存儲的用戶公開密鑰、協(xié)調(diào)模塊351的公開密鑰,還要用到USB設備中的加密模塊來生成會話密鑰K以及對“數(shù)據(jù)存儲請求1”消息中的各個部分進行加密。利用協(xié)調(diào)模塊351的公開密鑰對會話密鑰K進行加密可以確保只有認證設備350 的協(xié)調(diào)模塊351能夠授權(quán)可信的計算服務器對“數(shù)據(jù)存儲請求1”消息的第一部分進行解密。未加密的協(xié)調(diào)模塊的URI是為了指示計算服務器320應該向該協(xié)調(diào)模塊351申請授權(quán), 獲得會話密鑰K來解密“數(shù)據(jù)存儲請求1”消息的第一部分。傳輸服務器310收到“數(shù)據(jù)存儲請求1”后,由于無法將其解密,它只好將其轉(zhuǎn)發(fā)給可信的計算服務器320(802)。在轉(zhuǎn)發(fā)之前,傳輸服務器310向“數(shù)據(jù)存儲請求1”消息添加了第四部分傳輸服務器310提供的用戶標識。添加了第四部分后生成的消息為“數(shù)據(jù)存儲請求2”。計算服務器320接收到“數(shù)據(jù)存儲請求2”后,能且只能調(diào)用數(shù)據(jù)處理虛擬機321 來處理“數(shù)據(jù)存儲請求2”這條消息。為解密這條消息中的數(shù)據(jù),虛擬機321的解密子模塊通過計算服務器320向協(xié)調(diào)模塊351發(fā)送“會話密鑰請求”消息(803和804)?!皶捗荑€請求”消息包含以下兩部分 第一部分為計算服務器320的標識;第二部分包括“數(shù)據(jù)存儲請求2”消息中的經(jīng)過協(xié)調(diào)模塊351的公開密鑰加密的會話密鑰K,以及虛擬機321的標識。第二部分經(jīng)過計算服務器320的私有密鑰進行加密?!皶捗荑€請求”消息自身再經(jīng)過協(xié)調(diào)模塊351的公開密鑰進行加密。協(xié)調(diào)模塊351收到“會話密鑰請求”消息之后,首先利用自身的私有密鑰對該消息進行解密。解密之后得到“會話密鑰請求”消息的第一部分計算服務器320的標識。協(xié)調(diào)模塊351根據(jù)該計算服務器標識驗證其是否可信。如果可信,再根據(jù)計算服務器320的公開密鑰解密“會話密鑰請求”消息的第二部分。解密之后得到虛擬機321的標識和經(jīng)過協(xié)調(diào)模塊351的公開密鑰加密的會話密鑰K。然后再進一步驗證虛擬機321是否啟動于該計算服務器320之上,并且正在運行。如果是,那么再利用自身的私有密鑰解密會話密鑰K。解密得到會話密鑰K之后,協(xié)調(diào)模塊351將該會話密鑰經(jīng)過三次加密,得到“會話密鑰響應”消息。三次加密的密鑰按照先后順序依次為數(shù)據(jù)處理虛擬機321的公開密鑰、 計算服務器320的公開密鑰、協(xié)調(diào)模塊351的私有密鑰。然后,協(xié)調(diào)模塊351將“會話密鑰響應”消息通過計算服務器320 (805)發(fā)往虛擬機321的解密子模塊(806)。虛擬機321的解密子模塊解密“會話密鑰響應”消息之后,得到會話密鑰K(由于該“會話密鑰響應”消息經(jīng)過虛擬機321的公開密鑰加密,因此只有虛擬機321能夠?qū)⑵浣饷?。然后,再利用該會話密鑰K解密“數(shù)據(jù)存儲請求2”中的第一部分,得到需要存儲的數(shù)據(jù)、操作類型標識(這里為存儲操作)、用戶公開密鑰、SaaS客戶端340提供的用戶標識。 由此可見,解密子模塊對客戶端340發(fā)送的待處理數(shù)據(jù)進行解密使用的解密密鑰是由獨立于可信SaaS系統(tǒng)(根據(jù)本發(fā)明的數(shù)據(jù)處理設備)運行的認證設備提供的。此外,雖然在本實施例中,解密子模塊對待處理數(shù)據(jù)進行解密的解密密鑰是客戶端產(chǎn)生的會話密鑰,但本領域技術人員可以理解,該解密密鑰也可以是其它本領域常用的密鑰,只要符合安全性的要求即可。在經(jīng)過以上流程(803-806),完成對待處理數(shù)據(jù)的解密步驟之后,虛擬機321首先驗證客戶端340提供的用戶標識與傳輸服務器310提供的用戶標識是否相同,以避免偽裝 (masquerade)攻擊。如果相同,說明不是偽裝攻擊。并且由于操作類型標識為存儲操作,則虛擬機321跳過計算子模塊320的處理,直接將需要存儲的數(shù)據(jù)和用戶公開密鑰交給加密子模塊。加密子模塊利用用戶公開密鑰對需要存儲的數(shù)據(jù)加密后(加密步驟),與客戶端 340提供的用戶標識一起,生成“存儲加密數(shù)據(jù)請求”消息,并通過計算服務器320發(fā)送給存儲服務器330 (807和808)。雖然,在本例子中,加密子模塊使用用戶公開密鑰對需要存儲的數(shù)據(jù)進行加密,顯然,加密子模塊也可以利用解密子模塊進行解密時所使用的密鑰對需要存儲的數(shù)據(jù)進行加密。存儲服務器330收到“存儲加密數(shù)據(jù)請求”,將該數(shù)據(jù)存入數(shù)據(jù)庫,然后返回“存儲加密數(shù)據(jù)響應”(809)。最后,計算服務器320通過傳輸服務器310向SaaS客戶端340發(fā)送經(jīng)過會話密鑰 K加密的“存儲數(shù)據(jù)響應”,以通知用戶是否存儲成功(810)。數(shù)據(jù)杳詢參考圖9。圖9是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢操作的時序圖。其例示了 SaaS用戶進行數(shù)據(jù)查詢操作時,可信SaaS平臺內(nèi)各個模塊之間的消息交互流程。在不同的SaaS應用系統(tǒng)中,可以根據(jù)不同的查詢條件來進行查詢。由于存儲服務器330向數(shù)據(jù)庫中存儲的數(shù)據(jù)都是經(jīng)過加密的,所以查詢時需要用到“可檢索的加密存儲”技術。為描述簡單起見,本文中假設所有對數(shù)據(jù)的存儲和查詢都是根據(jù)其在數(shù)據(jù)庫中存儲的位置和所屬用戶標識來進行的。首先,SaaS客戶端340發(fā)送“數(shù)據(jù)查詢請求”至傳輸服務器310(901)。“數(shù)據(jù)查詢請求”中包含查詢數(shù)據(jù)的存儲位置,以及用戶標識。傳輸服務器310驗證用戶標識是否合法,并且該用戶標識所屬的用戶是否已經(jīng)登錄SaaS客戶端來避免偽裝攻擊。如果不是偽裝攻擊,那么傳輸服務器310將“數(shù)據(jù)查詢請求”轉(zhuǎn)發(fā)給存儲服務器330(902)。接收到“數(shù)據(jù)查詢請求”后,存儲服務器330從數(shù)據(jù)庫查詢出相應的經(jīng)過用戶可信公開密鑰加密的數(shù)據(jù), 然后通過傳輸服務器310返回給SaaS客戶端340 (903和904)。最后,SaaS客戶端340利用存儲在USB設備中的用戶可信私有密鑰和解密模塊解密該數(shù)據(jù)。數(shù)據(jù)處理參考圖10。圖10是示出根據(jù)本發(fā)明實施例的數(shù)據(jù)處理操作的時序圖。其例示了 SaaS用戶進行數(shù)據(jù)處理操作時,可信SaaS平臺內(nèi)各個模塊之間的消息交互流程。與“數(shù)據(jù)查詢”一樣,假設所有對數(shù)據(jù)的存儲和查詢都是根據(jù)其在數(shù)據(jù)庫中存儲的位置和所屬用戶標識來進行的。首先,執(zhí)行從步驟1001至步驟1004的消息交互流程,查詢數(shù)據(jù),并在客戶端340 得到未加密的數(shù)據(jù)。步驟1001至步驟1004的消息交互流程與上一節(jié)“數(shù)據(jù)查詢”的消息
交互流程一樣??蛻舳?40得到未加密的數(shù)據(jù)之后,在步驟1005,客戶端340向傳輸服務器310發(fā)送“數(shù)據(jù)處理請求1”消息?!皵?shù)據(jù)處理請求1”消息與“數(shù)據(jù)存儲”中的“數(shù)據(jù)存儲請求1” 消息類似,所不同的是“操作類型標識”的值不再特定為“存儲操作”,它可以是計算子模塊支持的任意操作類型。從步驟1006到步驟1010的消息流程與“數(shù)據(jù)存儲”的步驟802到步驟806的消息流程一樣。完成了步驟1006到步驟1010的消息流程(解密步驟)之后,虛擬機321的計算子模塊便可以獲得“數(shù)據(jù)處理請求1”消息中未加密的數(shù)據(jù),并按照該消息中請求的操作類型對該數(shù)據(jù)進行處理(計算步驟)。處理結(jié)果經(jīng)過加密子模塊利用用戶公開密鑰加密 (加密步驟)后,被發(fā)送給存儲服務器330保存(1011和1012)。存儲服務器330按照用戶標識對該加密過的處理結(jié)果進行保存并返回保存是否成功的結(jié)果(1013)。最后,計算服務器320通過傳輸服務器310向客戶端340返回經(jīng)過會話密鑰K加密的處理結(jié)果(1014和 1015)。下文中,參考圖11描述實現(xiàn)本發(fā)明的數(shù)據(jù)處理設備的計算機的示例性結(jié)構(gòu)。圖11 是示出實現(xiàn)本發(fā)明的計算機的示例性結(jié)構(gòu)的框圖。在圖11中,中央處理單元(CPU) 1101根據(jù)只讀存儲器(ROM) 1102中存儲的程序或從存儲部分1108加載到隨機存取存儲器(RAM) 1103的程序執(zhí)行各種處理。在RAM 1103中, 也根據(jù)需要存儲當CPU 1101執(zhí)行各種處理時所需的數(shù)據(jù)。CPU 110UR0M 1102和RAM 1103經(jīng)由總線1104彼此連接。輸入/輸出接口 1105 也連接到總線1104。下述部件連接到輸入/輸出接口 1105 輸入部分1106,包括鍵盤、鼠標等;輸出部分1107,包括顯示器,諸如陰極射線管(CRT)、液晶顯示器(LCD)等,以及揚聲器等;存儲部分1108,包括硬盤等;以及通信部分1109,包括網(wǎng)絡接口卡諸如LAN卡、調(diào)制解調(diào)器等。通信部分1109經(jīng)由網(wǎng)絡諸如因特網(wǎng)執(zhí)行通信處理。根據(jù)需要,驅(qū)動器1110也連接到輸入/輸出接口 1105??刹鹦督橘|(zhì)1111諸如磁盤、光盤、磁光盤、半導體存儲器等根據(jù)需要被安裝在驅(qū)動器1110上,使得從中讀出的計算機程序根據(jù)需要被安裝到存儲部分1108中。在通過軟件實現(xiàn)上述步驟和處理的情況下,從網(wǎng)絡諸如因特網(wǎng)或存儲介質(zhì)諸如可拆卸介質(zhì)1111安裝構(gòu)成軟件的程序。本領域的技術人員應當理解,這種存儲介質(zhì)不局限于圖11所示的其中存儲有程序、與方法相分離地分發(fā)以向用戶提供程序的可拆卸介質(zhì)1111??刹鹦督橘|(zhì)1111的例子包含磁盤、光盤(包含光盤只讀存儲器(⑶-ROM)和數(shù)字通用盤(DVD))、磁光盤(包含迷你盤 (MD)和半導體存儲器?;蛘撸鎯橘|(zhì)可以是ROM 1102、存儲部分1108中包含的硬盤等, 其中存有程序,并且與包含它們的方法一起被分發(fā)給用戶。在前面的說明書中參照特定實施例描述了本發(fā)明。然而本領域的普通技術人員理解,在不偏離如權(quán)利要求書限定的本發(fā)明的范圍的前提下可以進行各種修改和改變。附記附記1. 一種數(shù)據(jù)處理設備,包括基于可信計算技術的可信執(zhí)行平臺,所述可信執(zhí)行平臺包括數(shù)據(jù)處理虛擬機,用于處理從客戶端發(fā)送的數(shù)據(jù)并向客戶端返回數(shù)據(jù)處理結(jié)果, 其包括解密子模塊,用于對來自客戶端的加密的待處理數(shù)據(jù)進行解密,并遵循第一接口將解密后的數(shù)據(jù)提供給計算子模塊;計算子模塊,用于對來自所述解密子模塊的解密后的數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊;加密子模塊,用于對遵循第二接口來自所述計算子模塊的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制模塊,負責所述數(shù)據(jù)處理虛擬機的所有輸出,使得僅將從所述加密子模塊輸出的加密后的數(shù)據(jù)作為所述數(shù)據(jù)處理虛擬機對客戶端的輸出。附記2.根據(jù)附記1所述的數(shù)據(jù)處理設備,其中,所述解密子模塊使用獨立于所述數(shù)據(jù)處理設備運營的認證設備提供的解密密鑰對加密的待處理數(shù)據(jù)進行解密。附記3.根據(jù)附記2所述的數(shù)據(jù)處理設備,其中,所述解密密鑰是所述客戶端產(chǎn)生的會話密鑰。附記4.根據(jù)附記1到3中任一個所述的數(shù)據(jù)處理設備,其中,所述加密子模塊使用加密密鑰對要輸出的數(shù)據(jù)處理結(jié)果進行加密。附記5.根據(jù)附記4中所述的數(shù)據(jù)處理設備,其中,所述加密密鑰是所述客戶端的客戶端公開密鑰或所述解密子模塊進行解密所使用的密鑰。附記6.根據(jù)附記1到3中任一個所述的數(shù)據(jù)處理設備,其中,所述可信執(zhí)行平臺還包括虛擬機監(jiān)視模塊,用于保護所述數(shù)據(jù)處理虛擬機不被未經(jīng)授權(quán)的監(jiān)視或修改。附記7.根據(jù)附記6所述的數(shù)據(jù)處理設備,其中,所述虛擬機監(jiān)視模塊用于啟動所述數(shù)據(jù)處理虛擬機。
附記8.根據(jù)附記7所述的數(shù)據(jù)處理設備,其中,所述可信執(zhí)行平臺還包括可信平臺模塊,用于向所述認證設備提供用于驗證所述數(shù)據(jù)處理設備的運行狀態(tài) fn息;其中,所述虛擬機監(jiān)視模塊根據(jù)所述認證設備的驗證結(jié)果啟動所述數(shù)據(jù)處理虛擬機。附記9.根據(jù)附記8所述的數(shù)據(jù)處理設備,所述運行狀態(tài)信息是指示所述虛擬機監(jiān)視模塊是否啟動的信息。附記10.根據(jù)附記1到3中任一個所述的數(shù)據(jù)處理設備,其中,所述數(shù)據(jù)處理設備適于構(gòu)造云計算平臺。附記11.根據(jù)附記10所述的數(shù)據(jù)處理設備,其中,所述數(shù)據(jù)處理設備適于構(gòu)造軟件即服務平臺。附記12. —種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法,包括解密步驟,對來自客戶端的已經(jīng)由客戶端加密的數(shù)據(jù)進行解密,并遵循第一接口提供解密后的數(shù)據(jù)以由計算步驟進行處理;計算步驟,對通過所述解密步驟解密后的數(shù)據(jù)進行處理,并遵循第二接口提供數(shù)據(jù)處理結(jié)果以由加密步驟進行處理;加密步驟,對遵循第二接口提供的通過所述計算步驟得到的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制步驟,執(zhí)行所述數(shù)據(jù)處理虛擬機的所有輸出,使得僅將所述加密步驟的輸出作為所述數(shù)據(jù)處理虛擬機對客戶端的輸出。
權(quán)利要求
1.一種數(shù)據(jù)處理設備,包括基于可信計算技術的可信執(zhí)行平臺,所述可信執(zhí)行平臺包括數(shù)據(jù)處理虛擬機,用于處理從客戶端發(fā)送的數(shù)據(jù)并向客戶端返回數(shù)據(jù)處理結(jié)果,其包括解密子模塊,用于對來自客戶端的加密的待處理數(shù)據(jù)進行解密,并遵循第一接口將解密后的數(shù)據(jù)提供給計算子模塊;計算子模塊,用于對來自所述解密子模塊的解密后的數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊;加密子模塊,用于對遵循第二接口來自所述計算子模塊的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制模塊,負責所述數(shù)據(jù)處理虛擬機的所有輸出,使得僅將從所述加密子模塊輸出的加密后的數(shù)據(jù)作為所述數(shù)據(jù)處理虛擬機對客戶端的輸出。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理設備,其中,所述解密子模塊使用獨立于所述數(shù)據(jù)處理設備運營的認證設備提供的解密密鑰對加密的待處理數(shù)據(jù)進行解密。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理設備,其中,所述解密密鑰是所述客戶端產(chǎn)生的會話S朗。
4.根據(jù)權(quán)利要求1到3中任一個所述的數(shù)據(jù)處理設備,其中,所述加密子模塊使用加密密鑰對要輸出的數(shù)據(jù)處理結(jié)果進行加密。
5.根據(jù)權(quán)利要求4中所述的數(shù)據(jù)處理設備,其中,所述加密密鑰是所述客戶端的客戶端公開密鑰或所述解密子模塊進行解密所使用的密鑰。
6.根據(jù)權(quán)利要求1到3中任一個所述的數(shù)據(jù)處理設備,其中,所述可信執(zhí)行平臺還包括虛擬機監(jiān)視模塊,用于保護所述數(shù)據(jù)處理虛擬機不被未經(jīng)授權(quán)的監(jiān)視或修改。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)處理設備,其中,所述虛擬機監(jiān)視模塊用于啟動所述數(shù)據(jù)處理虛擬機。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理設備,其中,所述可信執(zhí)行平臺還包括可信平臺模塊,用于向所述認證設備提供用于驗證所述數(shù)據(jù)處理設備的運行狀態(tài)信息;其中,所述虛擬機監(jiān)視模塊根據(jù)所述認證設備的驗證結(jié)果啟動所述數(shù)據(jù)處理虛擬機。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)處理設備,所述運行狀態(tài)信息是指示所述虛擬機監(jiān)視模塊是否啟動的信息。
10.一種在運行于基于可信計算技術的可信執(zhí)行平臺的數(shù)據(jù)處理虛擬機中進行數(shù)據(jù)處理的方法,包括解密步驟,對來自客戶端的已經(jīng)由客戶端加密的數(shù)據(jù)進行解密,并遵循第一接口提供解密后的數(shù)據(jù)以由計算步驟進行處理;計算步驟,對通過所述解密步驟解密后的數(shù)據(jù)進行處理,并遵循第二接口提供數(shù)據(jù)處理結(jié)果以由加密步驟進行處理;加密步驟,對遵循第二接口提供的通過所述計算步驟得到的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制步驟,執(zhí)行所述數(shù)據(jù)處理虛擬機的所有輸出,使得僅將所述加密步驟的輸出作為所述數(shù)據(jù)處理虛擬機對客戶端的輸 出。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)處理設備和數(shù)據(jù)處理方法。數(shù)據(jù)處理設備包括基于可信計算技術的可信執(zhí)行平臺,該平臺包括數(shù)據(jù)處理虛擬機,用于處理從客戶端發(fā)送的數(shù)據(jù)并向客戶端返回數(shù)據(jù)處理結(jié)果,包括解密子模塊,用于對來自客戶端的加密待處理數(shù)據(jù)進行解密,并遵循第一接口將解密后數(shù)據(jù)提供給計算子模塊;計算子模塊,用于對來自解密子模塊的解密后數(shù)據(jù)進行處理,并遵循第二接口將數(shù)據(jù)處理結(jié)果提供給加密子模塊;加密子模塊,用于對遵循第二接口來自計算子模塊的數(shù)據(jù)處理結(jié)果進行加密;以及輸出控制模塊,負責數(shù)據(jù)處理虛擬機的所有輸出,使得僅將從加密子模塊輸出的加密后數(shù)據(jù)作為數(shù)據(jù)處理虛擬機對客戶端的輸出。該數(shù)據(jù)處理設備能夠保證數(shù)據(jù)處理安全。
文檔編號H04L29/06GK102271124SQ20101019255
公開日2011年12月7日 申請日期2010年6月1日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者于浩, 張軍, 鐘朝亮 申請人:富士通株式會社