王 冠 尹 煜
(北京工業(yè)大學(xué)信息學(xué)部 北京 100124)
(可信計(jì)算北京重點(diǎn)實(shí)驗(yàn)室 北京 100124)
(wangguan@bjut.edu.cn)
分布式計(jì)算系統(tǒng)的研究始于Google公司發(fā)表的3大論文GFS(Google文件系統(tǒng))[1]、Map/Reduce(編程環(huán)境)[2]、Big Table(數(shù)據(jù)模型)[3],奠定了云大數(shù)據(jù)計(jì)算基礎(chǔ)架構(gòu).
云計(jì)算環(huán)境主要是指將分布式的計(jì)算資源通過互聯(lián)網(wǎng)整合,實(shí)現(xiàn)軟硬件資源共享和協(xié)調(diào)調(diào)度的一種虛擬計(jì)算系統(tǒng),具有快速部署、易于度量、終端開銷低等特征.時至今日,云計(jì)算技術(shù)在民用領(lǐng)域及軍事領(lǐng)域都得到了大規(guī)模的運(yùn)用,世界各國都投入巨大的資源進(jìn)行云計(jì)算的研究工作[4].在這種環(huán)境中,云計(jì)算用戶的數(shù)據(jù)和資源完全依賴于不可靠的網(wǎng)絡(luò)通信和半可信的云存儲服務(wù)器,例如:云端數(shù)據(jù)的存放位置、數(shù)據(jù)加密機(jī)制、數(shù)據(jù)恢復(fù)機(jī)制、完整性保護(hù)、第三方監(jiān)管和審計(jì)、虛擬機(jī)安全、內(nèi)存安全等,使得用戶對云計(jì)算環(huán)境的安全性普遍存在質(zhì)疑,導(dǎo)致云計(jì)算的普及難以深入[5].
目前針對云計(jì)算環(huán)境安全的技術(shù)主要是基于硬件的可信云技術(shù),包括VC3[6],SecureCloud[7],SCONE[8],Slalom[9],MesaTEE[10]等.這些技術(shù)都通過Intel SGX技術(shù)創(chuàng)建可信執(zhí)行環(huán)境來保證各種場景下云計(jì)算數(shù)據(jù)和代碼的正確性和完備性.但是由于云計(jì)算環(huán)境自身的結(jié)構(gòu)特點(diǎn),對用戶來說云服務(wù)器依然是一個“黑匣子”.云環(huán)境的安全保證一般都很模糊和抽象并且缺乏統(tǒng)一的安全標(biāo)準(zhǔn),難以使用戶信任云計(jì)算環(huán)境[11].
為了解決用戶對云環(huán)境的信任問題,引入了可信第三方.可信第三方是類似于CA認(rèn)證機(jī)構(gòu)的權(quán)威機(jī)構(gòu),作為網(wǎng)絡(luò)服務(wù)中受信任的第三方,承擔(dān)對云計(jì)算服務(wù)提供商的安全認(rèn)證與統(tǒng)一的安全標(biāo)準(zhǔn)制定.基于可信第三方和SGX技術(shù)設(shè)計(jì)安全方案,在保證數(shù)據(jù)和代碼安全性的同時解決用戶對云平臺的信任問題.
Intel SGX[12-13]是Intel架構(gòu)新的擴(kuò)展, 在原有架構(gòu)上增加了一組新的指令集和內(nèi)存訪問機(jī)制[14].通過這組指令集與訪問控制機(jī)制,實(shí)現(xiàn)一個與外部隔離的可信執(zhí)行環(huán)境——Enclave. Enclave是一種可信計(jì)算技術(shù)[15],是一個被保護(hù)的內(nèi)容容器, 用于存放應(yīng)用程序敏感數(shù)據(jù)和代碼[16].SGX的可信計(jì)算基僅包含CPU和Enclave本身[17],具有較小的可信計(jì)算基.應(yīng)用程序需要將代碼和數(shù)據(jù)分為可信部分與不可信部分,在把可信部分的代碼和數(shù)據(jù)加載到Enclave中時必須進(jìn)行檢查和分析,保證其內(nèi)容沒有被篡改.當(dāng)應(yīng)用程序的可信部分加載到Enclave后,由SGX保護(hù)它們不被外部軟件所訪問.
在應(yīng)用程序使用過程中會遇到需要長久保存數(shù)據(jù)的情況,但由于Enclave在任務(wù)執(zhí)行后會被銷毀,其內(nèi)存中所保存的信息也會一并刪除.為了解決這個問題,SGX技術(shù)提供了密封機(jī)制.當(dāng)數(shù)據(jù)被密封時數(shù)據(jù)在安全區(qū)內(nèi)用密鑰加密,這個密鑰是直接從CPU中取得的,加密數(shù)據(jù)只能在創(chuàng)建它的那個電腦上解封,且加密過程可以保證數(shù)據(jù)的安全性、完整性、真實(shí)性.密封機(jī)制擁有2種密鑰策略安全區(qū)標(biāo)識(MRENCLAVE)和密封標(biāo)識(MRSIGNER),前者只有同一Enclave才能解封機(jī)密數(shù)據(jù),后者只要是同一軟件開發(fā)商就可解封.
SGX技術(shù)提供了2種類型的身份認(rèn)證方式:第1種用于同一平臺內(nèi)部Enclave間的認(rèn)證,用來確認(rèn)2個本地Enclave是否運(yùn)行在同一個平臺上;第2種是平臺之間的遠(yuǎn)程認(rèn)證[17],用于網(wǎng)絡(luò)環(huán)境中確認(rèn)對方是否正確運(yùn)行在SGX支持的配置環(huán)境中.通過SGX身份認(rèn)證2個Enclave間可以安全地傳輸身份信息與數(shù)據(jù).
通過對云外包計(jì)算及現(xiàn)有可信云技術(shù)的分析可知,現(xiàn)有可信云方案存在以下3個問題:1)現(xiàn)有的可信云方案基本是站在云服務(wù)提供商的角度,以云端自身建立一個可信執(zhí)行環(huán)境為目的,只解決代碼執(zhí)行時的安全性,并沒有站在用戶的角度考慮數(shù)據(jù)在傳輸時的保密性.使用提供商自己生成的密鑰加密數(shù)據(jù)或直接明文傳輸,存在敏感信息泄露問題,容易遭受來自云端內(nèi)部的竊聽.2)現(xiàn)有的方案都是云服務(wù)提供商自己進(jìn)行遠(yuǎn)程證明,給出的認(rèn)證結(jié)果很容易被偽造.并且大多使用的安全協(xié)議都很不清晰,對用戶來說云端依然是一個不透明的“黑匣子”,無法保證其正確運(yùn)行在可信環(huán)境中.3)現(xiàn)有的方案缺乏統(tǒng)一的安全標(biāo)準(zhǔn)與管理,無法向用戶保證云端計(jì)算的可信性,導(dǎo)致用戶難以信任云服務(wù)提供商.
引入第三方可信機(jī)構(gòu)可以實(shí)現(xiàn)如下功能:1)第三方可信機(jī)構(gòu)(類似CA認(rèn)證機(jī)構(gòu))定期對云端集群硬件基礎(chǔ)進(jìn)行檢查,確保SGX可以正常運(yùn)行,并進(jìn)行相關(guān)配置及記錄.2)對集群SGX創(chuàng)建的Enclave進(jìn)行遠(yuǎn)程認(rèn)證并與硬件信息核對,確保Enclave正確運(yùn)行在SGX的硬件環(huán)境下.3)向用戶提供集群安全情況以及遠(yuǎn)程認(rèn)證結(jié)果,并為用戶提供集群證書(私鑰由SGX密封在集群).用戶使用證書中的公鑰上傳自己的對稱密鑰進(jìn)行分布式計(jì)算與存儲.4)對用戶的代碼進(jìn)行包裝或提供接口,以滿足集群分布式計(jì)算運(yùn)行規(guī)范.
安全方案設(shè)計(jì)的總目標(biāo)是在使用云端計(jì)算資源的同時不向云端泄露任何隱私信息,通過可信第三方使云環(huán)境更加清晰安全,讓用戶可以信任云環(huán)境.
基于SGX的云外包計(jì)算安全方案總體架構(gòu)如圖1所示:在硬件層,CPU通過Intel SGX技術(shù)的拓展指令集和EPCM結(jié)構(gòu)維護(hù)并提供EPC這塊物理隔離的內(nèi)存區(qū)域.再基于Enclave內(nèi)存訪問語義的變化與應(yīng)用程序地址映射關(guān)系的保護(hù),這2項(xiàng)功能共同完成對Enclave內(nèi)部代碼與數(shù)據(jù)的機(jī)密性和完整性的保護(hù).
圖1 基于SGX的云外包計(jì)算安全方案總體架構(gòu)
在內(nèi)核層,SGX驅(qū)動為應(yīng)用程序提供大量接口服務(wù),例如Enclave的創(chuàng)建銷毀、可信密碼學(xué)庫、數(shù)據(jù)密封、遠(yuǎn)程認(rèn)證等功能.
在應(yīng)用層,在安全區(qū)中通過可信密碼學(xué)庫對用戶代碼及數(shù)據(jù)進(jìn)行加解密,保證用戶代碼及數(shù)據(jù)只在安全區(qū)時為明文狀態(tài),在云端存儲時保持加密狀態(tài).
該方案能夠?qū)崿F(xiàn)以下功能:
1) 用戶的數(shù)據(jù)在SGX技術(shù)提供的安全容器Enclave中執(zhí)行,可以有效防止來自云端內(nèi)部攻擊者使用特權(quán)軟件進(jìn)行攻擊,確保了機(jī)密性和完整性.
2) 借由SGX驅(qū)動所提供的密碼學(xué)庫與密封機(jī)制生成集群證書,通過第三方可信機(jī)構(gòu)形成一套安全高效的數(shù)據(jù)傳輸加解密方案,保證用戶代碼及數(shù)據(jù)在云端傳輸中始終由用戶生成的密鑰加密,只有在安全區(qū)中才進(jìn)行解密并執(zhí)行.解決了傳統(tǒng)可信云中明文傳輸或使用云提供商自己生成的密鑰加密數(shù)據(jù),導(dǎo)致容易受到內(nèi)部嗅探攻擊的問題.
3) 通過第三方可信機(jī)構(gòu)的認(rèn)證與維護(hù),可以保證云平臺軟硬件環(huán)境的安全性.同時通過第三方可信機(jī)構(gòu)進(jìn)行遠(yuǎn)程認(rèn)證,保證了云平臺可信環(huán)境的真實(shí)有效,解決了傳統(tǒng)可信云中存在虛假證明、結(jié)果偽造、身份冒充的問題.
4) 通過Enclave的隔離機(jī)制、安全的數(shù)據(jù)傳輸方案、第三方可信機(jī)構(gòu)統(tǒng)一的安全標(biāo)準(zhǔn)及認(rèn)證,達(dá)到使用云平臺計(jì)算資源且不向云平臺泄露信息的目的,讓用戶信任.
5) 只把敏感的用戶代碼及數(shù)據(jù)放在安全區(qū)執(zhí)行,盡可能減少使用SGX技術(shù)所帶來的性能開銷.
根據(jù)基于SGX的云外包計(jì)算安全方案總體架構(gòu),安全方案具體流程主要分為2個階段:注冊階段和工作階段.
注冊階段是云服務(wù)提供商向第三方可信機(jī)構(gòu)注冊階段.在這個階段中主要由第三方可信機(jī)構(gòu)根據(jù)統(tǒng)一的安全標(biāo)準(zhǔn)對云服務(wù)提供商的軟硬件環(huán)境進(jìn)行檢驗(yàn)與維護(hù),使云端環(huán)境可以滿足SGX技術(shù)條件.其次,第三方可信機(jī)構(gòu)還統(tǒng)一負(fù)責(zé)在云端配置可信執(zhí)行環(huán)境Enclave并進(jìn)行遠(yuǎn)程認(rèn)證,確保Enclave正確運(yùn)行在支持SGX的軟硬件環(huán)境中.在Enclave通過可信密碼學(xué)庫生成公私鑰對后,將私鑰使用密封機(jī)制存儲在云端文件系統(tǒng)中(只有相同配置的Enclave才能解封),公鑰則與集群信息一同生成集群證書.安全方案注冊階段流程如圖2所示:
圖2 安全方案注冊階段流程圖
具體步驟:
1) 滿足SGX硬件基礎(chǔ)的云服務(wù)提供商向第三方可信機(jī)構(gòu)申請注冊.
2) 第三方可信機(jī)構(gòu)對云服務(wù)提供商的軟硬件環(huán)境進(jìn)行驗(yàn)證和配置,確保其滿足SGX應(yīng)用運(yùn)行環(huán)境要求.
3) 第三方可信機(jī)構(gòu)在各個云端節(jié)點(diǎn)創(chuàng)建Enclave.
4) 各個云端節(jié)點(diǎn)創(chuàng)建的Enclave通過第三方可信機(jī)構(gòu)使用英特爾認(rèn)證服務(wù)IAS進(jìn)行遠(yuǎn)程認(rèn)證.保證Enclave正確地運(yùn)行在支持SGX技術(shù)的硬件之上.
5) 遠(yuǎn)程認(rèn)證通過后,在Enclave中調(diào)用可信密碼學(xué)庫生成公私鑰對.私鑰使用SGX密封機(jī)制密封到磁盤.根據(jù)SGX密封機(jī)制,只有同一配置的Enclave才能解封私鑰.
6) Enclave將生成的公鑰加密傳輸給第三方可信機(jī)構(gòu).
7) 第三方可信機(jī)構(gòu)根據(jù)集群信息與公鑰生成集群特有的集群證書.
工作階段是用戶使用云外包計(jì)算服務(wù)的階段.主要是確保用戶提交的分布式計(jì)算作業(yè)環(huán)境與注冊階段由第三方可信機(jī)構(gòu)配置的環(huán)境相同,該可信計(jì)算環(huán)境對云服務(wù)提供商內(nèi)部也是保密狀態(tài),一切明文計(jì)算都將在其中進(jìn)行.根據(jù)密封機(jī)制,只有相同配置的Enclave才能將密封的私鑰解封,并且SGX技術(shù)提供的遠(yuǎn)程認(rèn)證擁有偽匿名模式,可以追溯到Enclave的身份是否與第三方可信機(jī)構(gòu)的配置相同.從而可以保證代碼及數(shù)據(jù)只在可信執(zhí)行環(huán)境中處于明文狀態(tài)執(zhí)行計(jì)算,在云端各個節(jié)點(diǎn)中的傳輸過程中始終處于使用用戶密鑰的加密狀態(tài).工作階段流程如圖3所示.
具體步驟:
1) 用戶向云服務(wù)提供商申請服務(wù).
2) 云服務(wù)提供商通過第三方可信機(jī)構(gòu)向用戶傳輸集群證書.
3) 為保證加解密效率用戶首先生成對稱密鑰對數(shù)據(jù)及代碼進(jìn)行加密,再通過集群證書中的公鑰對對稱密鑰加密,并一同上傳到云端指定目錄.
4) 云端節(jié)點(diǎn)啟動,向第三方可信機(jī)構(gòu)進(jìn)行遠(yuǎn)程認(rèn)證,確保Enclave是注冊階段經(jīng)過認(rèn)證的同一配置的Enclave,保證云節(jié)點(diǎn)計(jì)算環(huán)境的安全可信.
5) 認(rèn)證通過后,云端節(jié)點(diǎn)的Enclave通過加載密封私鑰(只有相同配置的Enclave才能解封),解密用戶上傳的對稱密鑰,再用對稱密鑰解密用戶代碼及數(shù)據(jù)進(jìn)行執(zhí)行.
6) 計(jì)算完成后云計(jì)算節(jié)點(diǎn)Enclave使用對稱密鑰對計(jì)算后的數(shù)據(jù)進(jìn)行加密,輸出加密結(jié)果到云端系統(tǒng).
圖3 安全方案工作階段流程圖
Hadoop[19]是目前常用的大數(shù)據(jù)計(jì)算框架,其解決了大數(shù)據(jù)并行計(jì)算、存儲、管理等關(guān)鍵問題.將基于SGX的云外包計(jì)算安全方案在Hadoop架構(gòu)下實(shí)現(xiàn)應(yīng)用.
Hadoop Streaming[20]是Hadoop架構(gòu)中提供的一個工具,它可以為用戶創(chuàng)建和運(yùn)行一類特殊的Map-Reduce作業(yè),這類特殊的Map-Reduce作業(yè)可以由編譯好的可執(zhí)行文件或腳本文件充當(dāng)Mapper或者Reducer.
可以使用C/C++編譯包含SGX技術(shù)的可執(zhí)行文件作為Hadoop Streaming中的Mapper與Reducer,以此解決兩者使用不同語言編譯的問題.
對于Hadoop Map-Reduce作業(yè)來說,主要涉及的計(jì)算環(huán)節(jié)有Map階段與Reduce階段.而數(shù)據(jù)傳輸階段分為Map階段前、Map階段、Reduce階段、Reduce階段后.根據(jù)前文所述的安全方案,在云端系統(tǒng)中要保證數(shù)據(jù)在傳輸過程中為加密狀態(tài),在可行執(zhí)行環(huán)境中才解密計(jì)算,所以總體過程如圖4所示:
圖4 Hadoop架構(gòu)中數(shù)據(jù)傳輸流程
基于SGX的云外包計(jì)算安全方案相比標(biāo)準(zhǔn)的Map-Reduce程序可能出現(xiàn)的性能損耗體現(xiàn)在2個方面:1)Hadoop Streaming工具在云節(jié)點(diǎn)進(jìn)行讀寫時采用管道技術(shù),將數(shù)據(jù)通過管道以標(biāo)準(zhǔn)輸入/標(biāo)準(zhǔn)輸出的形式在云節(jié)點(diǎn)上傳輸,可能會導(dǎo)致讀寫性能損耗;2)SGX技術(shù)的使用額外創(chuàng)建了Enclave,并使用SHA256,AES_GCM,Base64編碼等算法保證數(shù)據(jù)傳輸?shù)陌踩?,會?dǎo)致程序額外的資源消耗.
主要對比標(biāo)準(zhǔn)Map-Reduce作業(yè)、使用Hadoop Streaming的Map-Reduce作業(yè)、使用SGX技術(shù)與Hadoop Streaming技術(shù)的安全方案作業(yè)在運(yùn)行性能上的表現(xiàn).因遠(yuǎn)程認(rèn)證涉及英特爾在線認(rèn)證的注冊問題,本次實(shí)驗(yàn)并未加入遠(yuǎn)程認(rèn)證模塊.
實(shí)驗(yàn)使用Hadoop 3.1.3架構(gòu),共使用3個虛擬機(jī)(Hadoop106,Hadoop107,Hadoop108)在局域網(wǎng)環(huán)境構(gòu)建云計(jì)算集群,每個云節(jié)點(diǎn)最多啟動1個容器,同時運(yùn)行1個計(jì)算任務(wù).Hadoop集群部署規(guī)劃如表1所示:
表1 集群規(guī)劃表
以WordCount(統(tǒng)計(jì)數(shù)據(jù)中出現(xiàn)的單詞數(shù))作業(yè)為例,輸入數(shù)據(jù)為100個單詞.對上述3種作業(yè)各進(jìn)行10次計(jì)算,統(tǒng)計(jì)平均作業(yè)用時.所得結(jié)果如表2所示:
表2 3種作業(yè)運(yùn)行時間表
從數(shù)據(jù)來看標(biāo)準(zhǔn)Map-Reduce作業(yè)所用時間與使用Hadoop Streaming所用時間基本沒有差距,而同時使用SGX技術(shù)與Hadoop Streaming后Map階段所用時間大幅增加,Reduce階段所用時間提升不大.
Map階段主要涉及的功能為輸入數(shù)據(jù)分片與節(jié)點(diǎn)計(jì)算.本次實(shí)驗(yàn)在使用SGX時默認(rèn)的加密輸出長度為100 B,編碼輸出長度為139 B.這使得輸入數(shù)據(jù)相較原始數(shù)長度大幅增加,導(dǎo)致在分片階段分區(qū)變多啟動了更多的Map節(jié)點(diǎn),并且程序在處理數(shù)據(jù)時的計(jì)算量大幅增加,導(dǎo)致Map階段用時增長明顯.Reduce階段經(jīng)過Shuffle處理,相同Key值的數(shù)據(jù)被合并處理,使數(shù)據(jù)量大幅減少,導(dǎo)致性能損耗不明顯.
對比現(xiàn)有的傳統(tǒng)可信云技術(shù),本文提出的基于SGX的云外包計(jì)算安全方案具有以下優(yōu)點(diǎn):
1) 現(xiàn)有的可信云方案基本是站在云服務(wù)提供商的角度以云端自身建立一個可信執(zhí)行環(huán)境為目的,只解決了代碼執(zhí)行時的安全性,并沒有站在用戶的角度考慮數(shù)據(jù)在傳輸時的保密性.使用提供商自己生成的密鑰加密數(shù)據(jù)或直接明文傳輸,存在敏感信息泄露問題,容易遭受到來自云端內(nèi)部的竊聽.本文方案通過SGX技術(shù)提供的密碼學(xué)庫設(shè)計(jì)了一套安全的數(shù)據(jù)加密方案,可以有效保證在數(shù)據(jù)傳輸過程中始終處于使用用戶密鑰加密的狀態(tài),用戶通過集群證書上的公鑰加密數(shù)據(jù),且只有Enclave內(nèi)部密封的私鑰才能解密,實(shí)現(xiàn)重要數(shù)據(jù)對不可信的云端環(huán)境隱藏的目的,保證了數(shù)據(jù)的安全性.
2) 現(xiàn)有的方案都是云服務(wù)提供商自己進(jìn)行遠(yuǎn)程證明,給出的可信報(bào)告很容易被偽造.對用戶來說云端依然是一個不透明的“黑匣子”,無法保證其正確運(yùn)行在可信環(huán)境中.通過引入第三方可信機(jī)構(gòu),可以有效地對云服務(wù)提供商的硬件基礎(chǔ)進(jìn)行檢驗(yàn),并在注冊階段與工作階段對Enclave進(jìn)行遠(yuǎn)程認(rèn)證,確保其正確運(yùn)行在支持SGX技術(shù)的運(yùn)行環(huán)境中.用戶通過第三方可信機(jī)構(gòu)可以詳細(xì)了解云服務(wù)提供商的安全信息,讓云環(huán)境更加透明.
3) 現(xiàn)有的方案缺乏統(tǒng)一的安全標(biāo)準(zhǔn)與管理,無法向用戶保證云端計(jì)算的可信性,導(dǎo)致用戶難以信任云服務(wù)提供商.本文提出的安全方案通過引入第三方可信機(jī)構(gòu)與SGX技術(shù)相結(jié)合,達(dá)到安全標(biāo)準(zhǔn)的統(tǒng)一制定、可信環(huán)境的構(gòu)建保障、密鑰的定期更新、數(shù)據(jù)傳輸?shù)陌踩咝?,?shí)現(xiàn)使用云服務(wù)提供的計(jì)算資源,又不向云端透露代碼及數(shù)據(jù)的目的.在第三方可信機(jī)構(gòu)認(rèn)證與清晰的安全方案保證下,使用戶可以信任云計(jì)算環(huán)境.
由于傳統(tǒng)的可信云缺乏統(tǒng)一的安全標(biāo)準(zhǔn),存在身份偽造、虛假證明、容易受到來自內(nèi)部的攻擊等問題,導(dǎo)致用戶難以信任云環(huán)境.本文提出了一種針對云計(jì)算環(huán)境的基于SGX技術(shù)的安全方案,引入了可信第三方作為中間人,通過包含注冊階段與工作階段的流程設(shè)計(jì)保證了云計(jì)算環(huán)境的可信性.同時,利用密碼學(xué)原理確保用戶數(shù)據(jù)在傳輸過程中的安全性,解決了傳統(tǒng)可信云存在的敏感信息泄露問題.對Hadoop架構(gòu)下性能損耗與安全性進(jìn)行了分析,實(shí)驗(yàn)結(jié)果表明,該方案的性能損耗較小,對比傳統(tǒng)可信云的安全性更高,并有效地緩解了用戶對云計(jì)算環(huán)境的不信任問題.