孔蓄
在云計算時代,云上數(shù)據(jù)按照數(shù)據(jù)所處狀態(tài)被分為三大類,分別是:
Data in Transit,網(wǎng)絡(luò)傳輸過程中的數(shù)據(jù),傳輸狀態(tài);
Data at Rest,數(shù)據(jù)在磁盤和處于存儲過程中的數(shù)據(jù),存儲狀體;
Data in Use,處于內(nèi)存中,處于計算中的數(shù)據(jù),其為使用狀態(tài)。
對于數(shù)據(jù)的安全,專家和業(yè)界在過去幾十年的努力使得傳輸過程中的數(shù)據(jù)安全得到了保障,比如數(shù)據(jù)鏈路層加密,各種各樣的傳輸協(xié)議加密的使用。對于存儲中的數(shù)據(jù)安全,很多數(shù)據(jù)庫,文件系統(tǒng)或者磁盤也是可以直接加密的。但是不管數(shù)據(jù)是在傳輸狀態(tài)中還是在存儲的時候加密,數(shù)據(jù)在最終使用的時候,在CPU和內(nèi)存里都是明文。這些使用中的明文要不要保護(hù),答案是肯定的,而且是迫切的。
針對網(wǎng)絡(luò)和存儲設(shè)備的安全威脅,越來越多的安全技術(shù)被開發(fā)出來以應(yīng)對和保護(hù),攻擊者以使用中的數(shù)據(jù)為目標(biāo),機(jī)密計算就是針對這種威脅模型,來對數(shù)據(jù)在使用狀態(tài)中進(jìn)行保護(hù)。
隨著云計算的大規(guī)模部署,機(jī)密計算旨在允許將云提供商從可信計算基礎(chǔ)(TCB)中移除,以便只有硬件和受保護(hù)的應(yīng)用程序本身在可信邊界內(nèi)。這使云客戶可以放心、安全地把業(yè)務(wù)負(fù)載轉(zhuǎn)移到公有云上。而機(jī)密計算正在迅速發(fā)展,為企業(yè)和最終用戶不斷提供新的工具以保護(hù)敏感數(shù)據(jù)和代碼免受執(zhí)行期間發(fā)生的威脅。同時機(jī)密計算解決方案提供商為機(jī)密計算開發(fā)了不同的方法,例如把應(yīng)用程序的代碼劃分為受信任和不受信任的組件,再到幾乎不做更改的情況下實現(xiàn)現(xiàn)有應(yīng)用程序的遷移。這些不同的方法支持不同的應(yīng)用場景,但最終目標(biāo)都是希望幫助確保敏感數(shù)據(jù)、代碼、工作負(fù)載的機(jī)密和完整性。
實現(xiàn)機(jī)密計算,硬件輔助是必要的。說到機(jī)密計算,不得不先說可信執(zhí)行環(huán)境(TrustExecutionEnvironment,TEE)。TEE被定義為提供一定級別的數(shù)據(jù)完整性、數(shù)據(jù)機(jī)密性和代碼完整性保證的環(huán)境,具有運(yùn)算和儲存功能。其基本思想是:在硬件中為敏感數(shù)據(jù)單獨(dú)分配一塊隔離的內(nèi)存,確保敏感數(shù)據(jù)的計算在這塊內(nèi)存中進(jìn)行,并且除了經(jīng)過授權(quán)的接口訪問之外,硬件中的其他部分不能訪問這塊內(nèi)存中的數(shù)據(jù),以此來實現(xiàn)敏感數(shù)據(jù)的隱私計算。機(jī)密計算是通過在基于硬件的可信環(huán)境中執(zhí)行計算來保護(hù)使用中的數(shù)據(jù),對以下3個屬性提供一定程度的保證。
數(shù)據(jù)機(jī)密性:未經(jīng)授權(quán)的實體無法查看在TEE內(nèi)使用中的數(shù)據(jù)。
數(shù)據(jù)完整性:未經(jīng)授權(quán)的實體不能添加、刪除或更改在TEE中使用中的數(shù)據(jù)。
代碼完整性:未經(jīng)授權(quán)的實體不能添加、刪除或更改TEE中執(zhí)行的代碼。
根據(jù)具體TEE的技術(shù)實現(xiàn)情況,它還可以提供代碼機(jī)密性、經(jīng)過身份驗證的啟動、可編程性、可認(rèn)證性和可恢復(fù)性。在機(jī)密計算定義范疇中,未經(jīng)授權(quán)的實體可能包括主機(jī)上的其他應(yīng)用程序、主機(jī)操作系統(tǒng)(Host OS)和虛擬機(jī)監(jiān)控程序、系統(tǒng)管理員、云服務(wù)提供商、基礎(chǔ)設(shè)施所有者或?qū)τ布哂形锢碓L問權(quán)限的任何其他人。
基于硬件的TEE使用硬件支持技術(shù),為該環(huán)境中的代碼執(zhí)行和數(shù)據(jù)保護(hù)能夠提供更高的安全保障。構(gòu)建基于硬件的TEE,對其基本的硬件需求有3個方面:
①要實現(xiàn)基于硬件隔離的空間。隔離的目的有2個,一個是保證數(shù)據(jù)的機(jī)密性,另一個是保證數(shù)據(jù)的完整性。要保證數(shù)據(jù)不能被他人獲取,同時也要保證數(shù)據(jù)不能被他人修改,而這2種目的都是靠硬件來實現(xiàn)的。
②隔離之后,還必須要有硬件可信根。比如在硬件出廠的時候燒錄一些硬件的關(guān)鍵登記信息,唯一的設(shè)備密鑰和相應(yīng)證書,所有的安全啟動和驗證等過程都是從硬件可信根開始的。如果沒有把信任根植入到受保護(hù)的硬件里面去,就達(dá)不到TEE的基本需求。
③驗證。在做完隔離和硬件可信根之后,對于系統(tǒng)部署在云上的,還需要把業(yè)務(wù)負(fù)載如代碼,數(shù)據(jù)等上傳到云上運(yùn)行,如何確保代碼和數(shù)據(jù)是運(yùn)行在TEE里面,需要一個基于密碼學(xué)的證明方式,必須通過獲取相關(guān)的證據(jù)去驗證代碼和數(shù)據(jù)確實是運(yùn)行在TEE里的,這就是TEE驗證的需求。
基于硬件的虛擬機(jī)隔離技術(shù)要解決的是保護(hù)來自客戶機(jī)Guest對云主機(jī)host的安全威脅,而機(jī)密計算要應(yīng)對的是來自云主機(jī)和基礎(chǔ)設(shè)施對客戶機(jī)Guest以及運(yùn)行在上面的容器業(yè)務(wù)的安全威脅。為此,Intel開發(fā)了對應(yīng)的基于硬件的技術(shù)來滿足市場的需求,比如Intel虛擬化技術(shù)VT-x,應(yīng)用它可以讓一個物理的CPU工作起來像多個CPU在并行運(yùn)行,從而使得在一臺物理服務(wù)器內(nèi)可以同時運(yùn)行多個Guest,實現(xiàn)虛擬機(jī)之間的隔離。而對于基于硬件的TEE解決方案,Intel公司創(chuàng)新開發(fā)了Intel Software Guard Extensions(Intel SGX),Intel Trust Domain Extensions(Intel TDX)等技術(shù)。例如一個完整的機(jī)密計算容器方案,在此方案中,應(yīng)用安全容器kata containers來支持容器業(yè)務(wù)的隔離,使用Intel SGX來做基于硬件的TEE并支持整個kata containers虛擬機(jī)運(yùn)行其中。同時借助Intel TDX的遠(yuǎn)程驗證能力做TEE的驗證。本文介紹了2個基于硬件技術(shù)的TEE:Intel SGX和Intel TDX。
Intel SGX的設(shè)計主旨是為用戶應(yīng)用程序提供可信的執(zhí)行環(huán)境,使得應(yīng)用程序有能力在用戶地址空間中開辟一段特別的、受保護(hù)的內(nèi)存空間,并對這段受保護(hù)的內(nèi)存空間實行嚴(yán)格的訪問控制和加密操作來保障數(shù)據(jù)機(jī)密性和代碼完整性,確保即使是Hypervisor、BIOS,操作系統(tǒng)等特權(quán)應(yīng)用都不能隨意訪問這段地址空間,這一段地址空間被稱之為飛地(Enclave)。
按照文章的前部分介紹,把應(yīng)用程序部署在云上,需要驗證程序確實運(yùn)行在TEE里,具體更多的SGX技術(shù)細(xì)節(jié),請參見Intel官方的技術(shù)文檔以及Intel架構(gòu)開發(fā)者手冊。驗證包括本地驗證和遠(yuǎn)程驗證,本地驗證指在同一個平臺上,讓不同的Enclave互相驗證Trusted Computing Base(TCB)。遠(yuǎn)程驗證指讓一個平臺中運(yùn)行的Enclave向遠(yuǎn)端的信賴憑證者Relying Party證明自己的TCB,證明自己運(yùn)行在SGX TEE中,并且沒有被篡改,同時證明當(dāng)前的CPU SGX安全版本信息。
SGX應(yīng)用程序涉及2部分:安全區(qū)和非安全區(qū)。開發(fā)者或者用戶可以把涉及敏感數(shù)據(jù)的處理,Key的保護(hù)等都放在Enclave里面。從而將應(yīng)用程序的代碼,數(shù)據(jù)劃分為受信任和不受信任的組件,因此開發(fā)者或者用戶需要決定哪些組件應(yīng)該置于Enclave內(nèi)部,哪些置于Enclave外部。
Intel TDX旨在將虛擬機(jī)(VM)與平臺上的虛擬機(jī)管理程序(VMM)和任何其他非信任域Trust Domain (TD)的軟件隔離,以保護(hù)TD VM免受各種軟件的安全威脅。TDX的設(shè)計思路是將整個虛擬機(jī)VM放在一個TEE可信執(zhí)行環(huán)境里,這樣不管應(yīng)用在私有云還是公有云上,都不需要再對應(yīng)用程序和數(shù)據(jù)做受信任和不受信任的劃分和修改,只要操作系統(tǒng)支持就行。TDX基本思路就是引入新的CPU工作模式,然后通過對內(nèi)存加密技術(shù),將2個虛擬機(jī)用不同的key加密,同時key由CPU來直接進(jìn)行管理。本質(zhì)上講,TDX是通過2種技術(shù)方式來配合實現(xiàn),一種就是新的CPU模式———安全仲裁模式(Secure Arbitration Mode,SEAM),第二種是多密鑰內(nèi)存加密技術(shù)方式(Multi-key Total-Memory-Encryption,MKTME)。
SEAM模式使用新的指令,例如SEAMCALL,SEAMRET,SEAMOPS,TDCALL等來實現(xiàn)和TD OS以及Host/VMM交互。同時提供特定區(qū)域的物理內(nèi)存來保護(hù)Intel TDX Module代碼模塊,通過Intel Authenticated Code Module(SEAMLDR)來裝載。多密鑰內(nèi)存加密MKTME技術(shù)中,MKTME engine通過PCONFIG指令來分配和設(shè)置各個TD VM的內(nèi)存加密Keys。TDX將內(nèi)存分為2個部分,私有和共享內(nèi)存。在TDX下還是需要在外部加固的,加固的時候需要共享內(nèi)存,這部分內(nèi)存外部是可以讀取的,因為有些虛擬化或半虛擬化設(shè)備需要和外部通信時,是需要host操作系統(tǒng)有能力提供網(wǎng)絡(luò)等服務(wù)的。當(dāng)前Intel TDX認(rèn)證的本質(zhì)原理和SGX認(rèn)證類似,也需要提供遠(yuǎn)程證明來驗證其運(yùn)行在TEE環(huán)境里。
Intel TDX和Intel SGX是用來解決不同問題的。TDX是把整個軟件包不做修改直接放到虛擬機(jī)上就能實現(xiàn)安全,而SGX關(guān)注應(yīng)用層面,通過對飛地Enclave來保障機(jī)密性和完整性的,用戶根據(jù)業(yè)務(wù)場景需求可以選擇不同的技術(shù)。
機(jī)密計算技術(shù)正在迅速發(fā)展,為企業(yè)和最終用戶提供新的工具,保護(hù)敏感數(shù)據(jù)和代碼免受數(shù)據(jù)執(zhí)行期間受到安全威脅,這些威脅以前很難得到保護(hù),尤其伴隨公有云,云邊協(xié)同以及區(qū)塊鏈的規(guī)模應(yīng)用,機(jī)密計算的應(yīng)用場景也越來越多,如下是幾個比較常用用例:
密鑰、秘密、憑證和令牌的安全存儲和處理
云計算關(guān)鍵信息資產(chǎn)的存儲和處理需要一個符合安全標(biāo)準(zhǔn)的硬件安全模塊如Hardware Security Module(HSM),但是傳統(tǒng)HSM硬件的專有性質(zhì)增加了它們的成本,限制了它的可擴(kuò)展性,并為在云計算和邊緣計算環(huán)境中部署帶來了成本和兼容性挑戰(zhàn)。不管是獨(dú)立軟件供應(yīng)商(ISV)云計算提供商(CSP),機(jī)密計算都已經(jīng)在被使用,在數(shù)據(jù)中心、私有云,公共/混合云中,甚至在物聯(lián)網(wǎng)用例的網(wǎng)絡(luò)邊緣存儲和處理加密和機(jī)密信息使用標(biāo)準(zhǔn)化的計算基礎(chǔ)設(shè)施。使得密鑰管理應(yīng)用程序在基于硬件的TEE中存儲和處理加密密鑰、機(jī)密和令牌,提供數(shù)據(jù)機(jī)密性、數(shù)據(jù)完整性和代碼完整性更加靈活。
公有云
在公有云場景中,信任必須放在云提供商的多個層面上:硬件、核心和外圍設(shè)備的固件;主機(jī)操作系統(tǒng)、虛擬機(jī)管理器程序和云編排系統(tǒng)本身。雖然公有云提供商在竭盡全力保護(hù)堆棧的所有層,但機(jī)密計算提供了額外的保護(hù)保證,并通過基于硬件的TEE保護(hù)正在使用的應(yīng)用程序和數(shù)據(jù),顯著減少了最終用戶必須信任的層數(shù),對于未經(jīng)授權(quán)的參與者來說,獲得對受保護(hù)的應(yīng)用程序代碼和數(shù)據(jù)的訪問權(quán)限變得更加困難,即使他們擁有對硬件的物理訪問權(quán)限、對主機(jī)操作系統(tǒng)/虛擬機(jī)監(jiān)控程序的root訪問權(quán)限或?qū)幣畔到y(tǒng)的特權(quán)訪問權(quán)限。機(jī)密計算旨在允許將云提供商從可信計算基礎(chǔ)中移除,以便只有硬件和受保護(hù)的應(yīng)用程序本身才在攻擊邊界內(nèi)。這使得許多工作負(fù)載能夠轉(zhuǎn)移到公共云上,而以前由于安全問題或法規(guī)遵從性要求,這些工作負(fù)載無法轉(zhuǎn)移到公共云上。
區(qū)塊鏈
區(qū)塊鏈?zhǔn)且粋€共享的、不變的分類賬,記錄參與者網(wǎng)絡(luò)之間的數(shù)據(jù)、數(shù)字資產(chǎn)或貨幣交換。區(qū)塊鏈提供了記錄和驗證交易的基礎(chǔ)設(shè)施,而無需集中的第三方。區(qū)塊鏈可以為供應(yīng)鏈活動提供透明度,促進(jìn)數(shù)字資產(chǎn)的交換,或支持合規(guī)流程,如實名認(rèn)證(Know Your Customer,KYC)。區(qū)塊鏈的一個關(guān)鍵特征是,它確保應(yīng)該有一段共同數(shù)據(jù)的參與者確信他們看到的是相同的東西,并且一旦進(jìn)入?yún)^(qū)塊鏈,數(shù)據(jù)是不變的。應(yīng)由應(yīng)用程序開發(fā)人員確保PII等敏感數(shù)據(jù)不存儲在不可變的區(qū)塊鏈上。機(jī)密計算可用于增強(qiáng)基于區(qū)塊鏈的系統(tǒng)的實施。通過結(jié)合機(jī)密計算和區(qū)塊鏈技術(shù)的能力,用戶可以利用基于硬件的TEE提供認(rèn)證和驗證服務(wù),優(yōu)化可擴(kuò)展性、隱私和安全性。區(qū)塊鏈用戶之間數(shù)據(jù)一致性的保證通常取決于各方獨(dú)立驗證所有當(dāng)前數(shù)據(jù)有效性所依賴的歷史數(shù)據(jù)。這需要了解這些歷史數(shù)據(jù)集,這是一個潛在的可擴(kuò)展性或隱私問題。用戶可以在基于硬件的TEE中執(zhí)行智能合約,而不是自己獨(dú)立訪問和驗證歷史數(shù)據(jù)與相關(guān)智能合約。一旦交易完成,TEE將提供認(rèn)證服務(wù),以證明交易的可靠性,這意味著后續(xù)參與者無需再次為自己進(jìn)行驗證?;赥EE的認(rèn)證服務(wù)還可以幫助解決協(xié)商一致協(xié)議帶來的計算和通信效率低下等問題。
邊緣云與物聯(lián)網(wǎng)
在家庭路由器中進(jìn)行DDoS檢測的情況下進(jìn)行本地搜索和過濾,這些都是機(jī)密計算環(huán)境非常適合的例子。在大多數(shù)情況下,TCP/IP數(shù)據(jù)包元數(shù)據(jù)需要保密,因為可能會推斷出敏感的用戶行為。其他示例包括邊緣機(jī)密機(jī)器學(xué)習(xí)處理,例如用于減少后端網(wǎng)絡(luò)延遲和/或帶寬的視頻元數(shù)據(jù)生成;攝像頭監(jiān)控,機(jī)密計算技術(shù)可用于幫助緩解依賴于對設(shè)備的物理訪問的攻擊。