王吾冰 劉博 范淵 陶立峰 徐東德
(杭州安恒信息技術(shù)股份有限公司,杭州 310051)
隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)和網(wǎng)絡(luò)已經(jīng)滲入人們?nèi)粘I钪械狞c點滴滴,數(shù)據(jù)的安全問題正受到越來越多的關(guān)注[1-2]。近年來,數(shù)據(jù)安全相關(guān)的各種法律法規(guī)也相繼出臺,例如《中華人民共和國個人信息保護法》(簡稱《個人信息保護法》)、《中華人民共和國數(shù)據(jù)安全法》(簡稱《數(shù)據(jù)安全法》等[3]。在傳統(tǒng)的信息安全領(lǐng)域,數(shù)據(jù)安全與流通性是一對悖論[4],隨著安全性的提升,數(shù)據(jù)的流通性及可用性會降低,數(shù)據(jù)孤島的問題也就隨之而來。
為了解決數(shù)據(jù)孤島問題,隱私計算技術(shù)被正式提了出來。隱私計算是指在保證數(shù)據(jù)提供方不泄露原始數(shù)據(jù)的前提下,對數(shù)據(jù)進行分析計算的一系列信息技術(shù),保障數(shù)據(jù)在流通與融合過程中的“可用不可見”。業(yè)界將隱私計算的技術(shù)分為三大類:基于部分秘密分享的安全多方計算、基于分布式訓(xùn)練的聯(lián)邦學(xué)習(xí)以及基于硬件的機密計算技術(shù)。其中,基于硬件的機密計算技術(shù),是一種對使用中的數(shù)據(jù)通過硬件加密及硬件隔離的方式保護數(shù)據(jù)機密性和完整性的技術(shù)[5]。由于可以使用機密計算技術(shù)在保證原始數(shù)據(jù)安全性的前提下對數(shù)據(jù)進行分析,機密計算也經(jīng)常被當(dāng)作隱私計算的一個子集。在這三大類技術(shù)中,機密計算相比于其他兩種技術(shù)具有運算效率高、部署靈活、可擴展性高的特點。
本文針對目前市場上隱私計算的主流應(yīng)用場景進行分析及抽象,并根據(jù)應(yīng)用場景的需求,進行安全分析,提出安全要求。然后,基于可信執(zhí)行環(huán)境技術(shù)構(gòu)建了一套機密計算框架,該框架能夠在保證應(yīng)用場景安全要求的前提下,促進多方數(shù)據(jù)的融合計算,解決數(shù)據(jù)孤島問題。
可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)技術(shù),作為一種機密計算技術(shù),提供了一個加密的隔離環(huán)境,保證了在該環(huán)境內(nèi)“使用中”的數(shù)據(jù)為“密文”(見圖1)。
(1)數(shù)據(jù)在中央處理器(CPU)外部通過數(shù)據(jù)加密保證數(shù)據(jù)為密文狀態(tài)。CPU內(nèi)部有一個內(nèi)存加密模塊(Memory Encryption Engine,MEE)對出CPU的數(shù)據(jù)進行了加密處理,保證了“使用中”的數(shù)據(jù)在CPU外為“密文”。
(2)數(shù)據(jù)在CPU內(nèi)部時通過硬件的隔離執(zhí)行技術(shù)保證數(shù)據(jù)為“偽密文”狀態(tài)。硬件的隔離執(zhí)行技術(shù),使得TEE內(nèi)的數(shù)據(jù)無法被本TEE外的任何用戶(包括系統(tǒng)管理員)訪問。雖然數(shù)據(jù)進入CPU后經(jīng)過MEE模塊解密后為明文狀態(tài),其機密性和完整性還是能被硬件保護。因此,對于TEE外的用戶而言,CPU內(nèi)的數(shù)據(jù)為“偽密文”狀態(tài)。
TEE技術(shù)不同于其他機密計算技術(shù)(例如同態(tài)加密),直接在密文之間執(zhí)行計算操作,導(dǎo)致了較低的運算效率。TEE通過使得數(shù)據(jù)在無法被非法訪問的明文態(tài)下進行計算,因而提供了安全高效的黑盒執(zhí)行環(huán)境。
(1)TEE的高效性:TEE在CPU內(nèi)的計算為明文態(tài),保證了運算的高效性。
(2)TEE的安全性:TEE通過硬件提供的數(shù)據(jù)加密與隔離執(zhí)行能力構(gòu)建了黑盒的執(zhí)行環(huán)境,使得黑盒內(nèi)的數(shù)據(jù)對黑盒外的攻擊者等效于密態(tài),無論是離線攻擊者還是在線攻擊者均很難從TEE內(nèi)獲取到明文數(shù)據(jù)。
可以認(rèn)為,TEE技術(shù)可以提供一個加密的隔離執(zhí)行環(huán)境:在CPU外,數(shù)據(jù)為密文形態(tài);在CPU內(nèi),攻擊者很難獲得明文數(shù)據(jù),可等效認(rèn)為是密文形態(tài)。
首先,明確TEE輔助的機密計算框架中的應(yīng)用場景及相關(guān)角色;然后,綜合開放式系統(tǒng)互聯(lián)(Open System Interconnect,OSI)安全體系架構(gòu)與框架的業(yè)務(wù)邏輯,明確框架需要包含的不同安全要求;最后,定義框架的威脅模型。
機密計算的應(yīng)用場景可以歸納為:參與的多方在保護己方數(shù)據(jù)機密性與完整性的前提下,聯(lián)合其他參與方的數(shù)據(jù)執(zhí)行計算任務(wù),并將計算結(jié)果安全地返回。TEE輔助的機密計算框架涉及的三類角色,分別為計算參與方、數(shù)據(jù)、計算任務(wù)合約。
(1)計算參與方:包含數(shù)據(jù)提供方、算法提供方以及結(jié)果受益方三類參與者。
? 數(shù)據(jù)提供方:提供構(gòu)成計算任務(wù)的所有數(shù)據(jù),包括但不限于用戶計算的數(shù)據(jù)集、計算任務(wù)的算法。
? 算法提供方:提供進行計算任務(wù)的具體算法。
? 結(jié)果受益方:接收計算任務(wù)的結(jié)果的參與方。
(2)數(shù)據(jù):所有在計算參與的多方之間傳輸?shù)膬?nèi)容是數(shù)據(jù),包括計算任務(wù)算法、數(shù)據(jù)集和結(jié)果集。
? 計算任務(wù)算法:參與計算任務(wù),由參與方根據(jù)實際需求選擇、定義的計算邏輯。
? 數(shù)據(jù)集:參與計算任務(wù),計算任務(wù)算法的輸入數(shù)據(jù)。
? 結(jié)果集:計算任務(wù)算法計算的結(jié)果。
(3)計算任務(wù)合約:參與計算的多方對計算的參與方、數(shù)據(jù)集、算法等內(nèi)容達(dá)成共識的結(jié)果。計算任務(wù)合約對達(dá)成共識的內(nèi)容提供完整性、可認(rèn)證性與抗抵賴性的保護。
將上述3類角色聯(lián)合起來,可以將應(yīng)用場景的模型抽象為圖2。一次共享信息的計算任務(wù),可以通過以下4步完成。
? 計算參與方共同協(xié)商確定各自角色(數(shù)據(jù)提供方、算法提供方、結(jié)果受益方),以及參與計算任務(wù)的數(shù)據(jù)(數(shù)據(jù)集、算法),并生成計算任務(wù)合約。
? 計算參與方中的數(shù)據(jù)提供方與算法提供方將數(shù)據(jù)和算法上傳至機密計算平臺的TEE中。
? 機密計算平臺驗證合約的完整性與正確性后,在TEE環(huán)境內(nèi)安全地執(zhí)行合約。
? 最后將結(jié)果安全地發(fā)送給結(jié)果受益方。
三種計算參與方可以為一個或多個實際參與方。例如,可以只有一個實際參與方(數(shù)據(jù)提供方、算法提供方、結(jié)果受益方),利用高算力的計算平臺,安全地運行期望的計算任務(wù)。也可以為兩個參與方:分別為數(shù)據(jù)及算法的提供方,以及結(jié)果受益方;數(shù)據(jù)提供方在機密計算平臺上計算出結(jié)果并安全地分發(fā)給結(jié)果擁有方。還可以為兩個以上參與方:一個或多個數(shù)據(jù)提供方,一個或多個算法提供方,以及一個或多個結(jié)果受益方。
數(shù)據(jù)提供方與算法提供方將數(shù)據(jù)安全地發(fā)送到TEE中,任務(wù)合約在TEE中執(zhí)行,并將計算結(jié)果安全地發(fā)送給結(jié)果受益方。數(shù)據(jù)與執(zhí)行任務(wù)的安全性由TEE保護,保證了在合約運行中各個參與方提供的數(shù)據(jù)無法被攻擊者惡意獲取。
結(jié)合TEE輔助的機密計算的業(yè)務(wù)邏輯與OSI安全體系架構(gòu)(見圖3),一個安全的TEE輔助的機密計算框架需要提供計算參與方的安全性、數(shù)據(jù)的安全性、合約的安全性以及系統(tǒng)的安全性的保護。
2.2.1 計算參與方的安全性(身份認(rèn)證與授權(quán))
計算參與方的安全性需要通過身份認(rèn)證與授權(quán)模塊正確識別出參與方的身份,并且能根據(jù)不同的身份進行訪問控制。身份認(rèn)證與授權(quán)服務(wù)模塊需要具有以下三項基本能力。
(1)身份認(rèn)證與授權(quán)服務(wù)模塊本身可抵御攻擊。
(2)能夠正確識別并認(rèn)證參與方的身份,防止惡意用戶成功偽造身份。
(3)能夠?qū)τ脩舻牟僮鳈?quán)限進行正確授權(quán),防止惡意用戶成功獲取更高權(quán)限。
2.2.2 數(shù)據(jù)的安全性
數(shù)據(jù)是TEE輔助的機密計算框架中安全性要求最高的部分。機密計算的根本目的就是在保證數(shù)據(jù)的安全性的前提下完成參與方設(shè)置的計算任務(wù)。數(shù)據(jù)的安全性需要在數(shù)據(jù)的全生命周期保證數(shù)據(jù)的機密性、完整性、可用性、抗否認(rèn)性以及可認(rèn)證性。
在TEE輔助的機密計算框架中,數(shù)據(jù)的生命周期包括:數(shù)據(jù)從計算參與方傳輸入機密計算環(huán)境內(nèi)(例如TEE)的過程;數(shù)據(jù)在機密計算環(huán)境內(nèi)參與計算的過程;參與方傳入的數(shù)據(jù)以及機密計算得到的結(jié)果數(shù)據(jù)在落盤后。
數(shù)據(jù)的機密性和完整性可以通過密碼學(xué)進行保障,可用性可通過冗余機制與抗針對可用性攻擊的機制保障,抗否認(rèn)性通過合約的抗否認(rèn)性來保證,可認(rèn)證性通過保障計算參與方安全性的身份認(rèn)證與授權(quán)服務(wù)模塊提供。
2.2.3 合約的安全性
合約是計算任務(wù)參與的多方對計算任務(wù)達(dá)成共識后產(chǎn)生的,其包含了計算任務(wù)相關(guān)的所有細(xì)節(jié)。TEE輔助的機密計算框架會根據(jù)合約內(nèi)的信息執(zhí)行計算任務(wù)。因此,為了保證計算任務(wù)的安全性,框架需要保證合約能滿足完整性、可用性、抗否認(rèn)性以及認(rèn)證性的要求。合約商定過程中需要共享合約內(nèi)容,因此不需要保障合約的機密性。根據(jù)計算框架的需求,合約創(chuàng)建完成后,需要保證合約中的內(nèi)容(合約的參與方、參與合約的數(shù)據(jù)、算法)無法被非法篡改,無法被抵賴。
2.2.4 系統(tǒng)的安全性
系統(tǒng)的安全性由對TEE輔助的機密計算框架的可用性保護以及安全審計服務(wù)兩部分構(gòu)成。
惡意的外部攻擊者會以讓框架停止服務(wù)為目標(biāo)破壞框架的可用性,這類攻擊包括但不限于DDoS攻擊、劫持攻擊等。因此,一個成熟的框架需要對這類攻擊具備防御能力。
任何技術(shù)都無法提供萬無一失的保護,因此一個成熟的框架需要具備對非法行為記錄與溯源能力的安全審計服務(wù)。安全審計服務(wù)需要具備對系統(tǒng)的行為(例如對數(shù)據(jù)集合約的操作)的記錄能力,需要保證記錄的日志信息的完整性,需要可根據(jù)記錄信息回溯非法行為的能力。
為了正確地設(shè)計TEE輔助的機密計算架構(gòu),需要先根據(jù)TEE技術(shù)、框架的業(yè)務(wù)邏輯以及框架的安全性要求,確定攻擊者的能力范圍。以下將分別對可信方以及攻擊方的范圍進行探討及界定。
可信方包含計算參與方、可信執(zhí)行環(huán)境、身份認(rèn)證與授權(quán)模塊、安全審計服務(wù)四個方面??蚣芗僭O(shè)計算參與方自身的網(wǎng)絡(luò)是安全的,通過TEE保證數(shù)據(jù)的安全性,通過身份認(rèn)證與授權(quán)模塊保證應(yīng)用邏輯(合約)的安全性。
(1)計算參與方:每個參與方是可信的,表現(xiàn)在兩個方面:首先,參與方內(nèi)部不存在攻擊者對數(shù)據(jù)及業(yè)務(wù)邏輯進行篡改;其次,參與方本身不會主動對機密計算的過程進行攻擊。
(2)可信執(zhí)行環(huán)境:TEE本身是可信的,表現(xiàn)在兩個方面:首先,TEE安全機制的設(shè)計是完備的;其次,TEE硬件對安全防護功能的實現(xiàn)是安全的。當(dāng)TEE本身是可信時,運行在TEE的內(nèi)容(數(shù)據(jù)、算法等)就可以認(rèn)為是安全的,不存在通過漏洞(例如TEE內(nèi)應(yīng)用程序本身的漏洞)破壞TEE內(nèi)運行內(nèi)容安全性的可能性。
(3)身份認(rèn)證與授權(quán)模塊:身份認(rèn)證與授權(quán)模塊是可信的,表現(xiàn)在三個方面:首先,身份認(rèn)證與授權(quán)模塊本身不會被外部攻擊者成功破壞;其次,參與方的身份能被正確的識別,不存在攻擊者欺騙繞過身份認(rèn)證服務(wù)的可能性;最后,正確識別了參與方后,參與方的訪問權(quán)限也能被正確的授予,不存在參與方因獲得過多權(quán)限而造成的安全問題。
(4)安全審計服務(wù):安全審計服務(wù)是可信的,表現(xiàn)在記錄的信息無法被惡意地篡改、增添和刪除。
攻擊方的成員多種多樣。除了以上3個可信部分以外,其他部分均可為攻擊者,包括但不限于以下3個部分。
? 運行TEE的主機:這類攻擊者可獲得運行TEE的物理主機的最高權(quán)限,包括對主機的操作系統(tǒng)、應(yīng)用程序、網(wǎng)絡(luò)報文、硬盤I/O等進行任意的讀取、刪除、修改等操作的權(quán)限。
? 業(yè)務(wù)系統(tǒng):這類攻擊者可以通過對為UI、業(yè)務(wù)邏輯、網(wǎng)絡(luò)連接等功能的篡改對支持機密計算任務(wù)運行的系統(tǒng)進行攻擊;還可對TEE的主機進行物理攻擊,例如冷啟動攻擊。
? 業(yè)務(wù)系統(tǒng)與參與方之間的網(wǎng)絡(luò)環(huán)境:這類攻擊者位于業(yè)務(wù)系統(tǒng)與參與方之間的任意位置,例如部署業(yè)務(wù)系統(tǒng)的服務(wù)提供商。攻擊者可以通過主動或被動的形式對業(yè)務(wù)系統(tǒng)以及TEE進行攻擊。攻擊類型包括但不限于:對TEE參與的通信以及業(yè)務(wù)系統(tǒng)進行網(wǎng)絡(luò)攻擊(DDoS、釣魚攻擊、網(wǎng)絡(luò)嗅探攻擊、中間人攻擊等)、社會工程學(xué)攻擊等。
根據(jù)定義,TEE輔助的機密計算框架的業(yè)務(wù)邏輯涉及三個角色:計算參與方、數(shù)據(jù)、計算任務(wù)合約。業(yè)務(wù)場景可以歸納為:計算參與方使用可信執(zhí)行環(huán)境技術(shù),根據(jù)計算任務(wù)合約中約定的算法計算指定的數(shù)據(jù)。因而,TEE輔助的機密計算架構(gòu)的核心是保證合約與數(shù)據(jù)的安全性。
TEE輔助的機密計算框架包含3個計算參與方(數(shù)據(jù)提供方A、數(shù)據(jù)提供方B以及結(jié)果受益方)、一個任務(wù)域、一個TEE域、一個身份認(rèn)證與授權(quán)模塊、一個日志審計模塊以及一個安全域(見圖4)。數(shù)據(jù)提供方提供數(shù)據(jù)與算法;結(jié)果受益方接收計算的結(jié)果集;任務(wù)域為機密計算業(yè)務(wù)提供管理功能;TEE域執(zhí)行機密計算任務(wù);身份認(rèn)證與授權(quán)模塊給框架提供身份認(rèn)證與授權(quán)服務(wù);日志審計模塊提供安全審計服務(wù);安全域保護提供安全防護,抵擋傳統(tǒng)的網(wǎng)絡(luò)攻擊,如DDoS攻擊、APT攻擊等。
根據(jù)威脅模型,被信任的區(qū)域為:三個計算參與方、TEE域、身份認(rèn)證模塊以及日志審計模塊。TEE輔助的機密計算框架通過數(shù)據(jù)安全通道保護了數(shù)據(jù)的安全性,通過合約安全通道保護了計算任務(wù)的安全性,通過安全域給業(yè)務(wù)系統(tǒng)提供了安全性及可用性的保護,通過日志審計提供了對攻擊進行溯源的能力。
數(shù)據(jù)安全通道的設(shè)計目的是保護用戶機密數(shù)據(jù)的安全。計算參與方與TEE域建立數(shù)據(jù)安全通道后,進入數(shù)據(jù)安全通道的數(shù)據(jù)被密碼算法保護,且只有通道連接的兩端具備獲得明文數(shù)據(jù)的可能性。
數(shù)據(jù)安全通道的實現(xiàn)可分為在線模式和離線模式。在線模式中,數(shù)據(jù)提供方首先與TEE域建立數(shù)據(jù)安全通道,然后將數(shù)據(jù)通過安全通道加密地傳入任務(wù)域構(gòu)建成計算任務(wù)合約,最后將合約及加密數(shù)據(jù)傳入TEE域通過安全校驗后執(zhí)行。在離線模式中,數(shù)據(jù)提供方提前與TEE域建立安全通道,然后將數(shù)據(jù)通過安全通道加密地傳入任務(wù)域;當(dāng)任務(wù)域使用該數(shù)據(jù)構(gòu)建計算任務(wù)合約后,將合約及加密數(shù)據(jù)傳入TEE域進行安全校驗后執(zhí)行。
合約安全通道的設(shè)計目的是保證合約的安全,即合約的完整性、可用性、可認(rèn)證性以及抗否認(rèn)性。合約是機密計算任務(wù)得以正確執(zhí)行的核心。在參與合約多方的身份及訪問權(quán)限被身份認(rèn)證與授權(quán)模塊正確識別與分配的前提下,合約通過參與計算的多方達(dá)成共識的方式對任務(wù)的數(shù)據(jù)(數(shù)據(jù)集、算法)及合約內(nèi)容的安全性進行了約束。合約的機密性不需要保護,因為合約的內(nèi)容與業(yè)務(wù)邏輯高度耦合,而合約業(yè)務(wù)邏輯由任務(wù)域進行控制。
安全域的設(shè)計目的是保證可用性??蚣芡獾墓粽呖赡芤云茐恼麄€框架為目的進行攻擊,這類攻擊包括但不限于DDoS攻擊、劫持攻擊等。通過在框架最外層部署可用性防護手段[6-7],對系統(tǒng)的可用性提供保障。
日志審計的設(shè)計目的是對攻擊行為的記錄、判定及溯源。任何安全防護技術(shù)都無法提供萬無一失的保護,威脅監(jiān)測系統(tǒng)存在漏報與誤報、安全評估工具存在0day漏洞、哪怕是從數(shù)學(xué)上證明安全的密碼工具也會由于密鑰的泄露或開發(fā)問題而引入漏洞。
數(shù)據(jù)安全通道的目的是保證用戶隱私數(shù)據(jù)能夠經(jīng)過任務(wù)域安全地在用戶以及TEE域之間傳輸,而不被任務(wù)域破壞安全性。建立數(shù)據(jù)安全通道主要分為信任的建立、共享秘密的分發(fā)、安全通道的建立三個步驟[8]。
3.2.1 數(shù)據(jù)安全通道的建立
數(shù)據(jù)安全通道的建立的目的是保證計算參與方可以將數(shù)據(jù)安全地傳入TEE域,同時位于兩者之間的任務(wù)域無法破壞數(shù)據(jù)的安全性。
(1)信任的建立。數(shù)據(jù)安全通道安全性的前提是建立計算參與方對TEE域的信任關(guān)系。與一個陌生的實體建立信任的過程可以被分解成三步:確信陌生實體的身份是符合期望的;確信陌生實體的身份是真實的;確信陌生實體是誠實的。例如,想要委托一個權(quán)威的中介辦理業(yè)務(wù),先要確定溝通的人展示的身份是中介的業(yè)務(wù)員(身份是符合預(yù)期的),再確定不是騙子通過偽造身份來行騙(身份是真實的),最后在將業(yè)務(wù)委托之前還需要衡量這個業(yè)務(wù)員是否誠實是否值得信任(誠實的)。
在TEE輔助的機密計算框架中,計算參與方對TEE域的信任也可以通過三步構(gòu)建:當(dāng)數(shù)據(jù)安全通道的一端在TEE環(huán)境中,則說明身份是符合期望的;當(dāng)TEE環(huán)境是安全的、未被攻擊的,則說明身份是真實的;當(dāng)TEE內(nèi)運行的程序完整性度量是符合期望的,則說明是誠實的。通過以上三步的驗證,可以保證在信任建立過程中,任務(wù)域無法偽裝TEE域的真實身份。
(2)共享秘密的分發(fā)。在確認(rèn)了對方的身份后,存在多種不同的共享秘密分發(fā)的方式[8],可以根據(jù)架構(gòu)及應(yīng)用場景進行選擇。
? 基于提前共享秘密的方式:通信的參與雙方不是完全陌生的,秘密的分享基于之前的認(rèn)識。
? 基于可信權(quán)威機構(gòu)的方式:通信的參與雙方互不認(rèn)識,可信權(quán)威機構(gòu)對通信的單方或者雙方進行驗證與授權(quán)。參與方根據(jù)可信權(quán)威機構(gòu)授權(quán)的信息進行秘密的分享。
? 基于公鑰公開的方式:通信的參與雙方互不認(rèn)識,公鑰作為身份的憑證以一種抗篡改的方式公開。參與方通過獲取公開的公鑰信息以獲取與對方進行秘密的分享。
上述三種分發(fā)秘密的方式的前提均不相同:基于提前共享秘密的方式中,秘密的分享基于對該共享秘密的正確性的驗證;基于可信權(quán)威機構(gòu)的方式中,信任的建立與秘密的分享均由可信權(quán)威機構(gòu)進行。可信權(quán)威機構(gòu)需要對TEE進行信任驗證,再根據(jù)驗證結(jié)果分享秘密;基于公鑰公開的方式,秘密的分享基于公鑰與TEE的關(guān)系的一一對應(yīng)(見表1)。
表1 信任建立方式的比較
(3)安全通道的建立。 在計算參與方與TEE域互相信任,且擁有共享秘密的基礎(chǔ)上建立的通道是安全的。首先,在共享秘密的基礎(chǔ)上建立的通道,能保證是抗中間人攻擊的;同時,對稱、非對稱、消息摘要、數(shù)字簽名等密碼學(xué)技術(shù)能使構(gòu)建出的通道具備抵抗網(wǎng)絡(luò)攻擊的能力,例如竊聽、重放攻擊等。詳細(xì)來說,安全通道的建立過程分為以下3步。
? 計算參與方通過通信代理與TEE域內(nèi)的信任代理進行信息交互,構(gòu)建信任關(guān)系,并獲得預(yù)共享秘密信息(s)。
? 計算參與方與TEE域通過預(yù)共享秘密,在不被任務(wù)域感知的前提下,協(xié)商出數(shù)據(jù)加密密鑰(k)。
? 計算參與方將數(shù)據(jù)通過數(shù)據(jù)加密密鑰加密(k)后,將密文數(shù)據(jù)安全地傳入TEE域。
3.2.2 數(shù)據(jù)安全通道的安全性分析
數(shù)據(jù)安全通道的建立是為了保證數(shù)據(jù)能在計算參與方與TEE域之間傳輸?shù)耐瑫r保證安全性。數(shù)據(jù)安全通道的建立分為信任的建立、共享秘密的分發(fā)以及安全通道的建立三步。其中,信任的建立確保了任務(wù)域無法偽裝成TEE域,結(jié)合共享秘密的分發(fā)杜絕了任務(wù)域中間人攻擊的可能性,最后通過建立安全通道使用密碼學(xué)技術(shù)保證了數(shù)據(jù)的安全性。
合約安全通道的設(shè)計目的是保證業(yè)務(wù)應(yīng)用邏輯的安全性,即合約的完整性、可用性、可認(rèn)證性以及抗否認(rèn)性。合約安全通道具有兩個目標(biāo):合約邏輯的正常運行、合約安全性的保證。合約安全通道首先需要保證機密計算業(yè)務(wù)邏輯能夠完成,即合約能夠正常地構(gòu)建與執(zhí)行;然后,需要保證合約在執(zhí)行的過程中不會被攻擊者破壞安全性。
3.3.1 合約安全通道介紹
合約的生命周期分為兩個階段:共識階段和執(zhí)行階段(見圖5)。在合約共識階段,計算參與方會對合約的相關(guān)信息達(dá)成共識,并形成合約;在合約執(zhí)行階段,合約會在TEE域內(nèi)安全地執(zhí)行,并將結(jié)果數(shù)據(jù)安全地傳遞給約定的結(jié)果接收方。
合約共識階段的目的是所有參與方對任務(wù)的信息達(dá)成共識,然后所有參與方共同授權(quán)形成合約。例如,數(shù)據(jù)提供方提供參與計算的數(shù)據(jù)集,算法提供方提供算法,結(jié)果受益方申請對結(jié)果集的訪問。數(shù)據(jù)提供方對算法的正確性及安全性進行審核,算法提供方對數(shù)據(jù)集的正確性進行審核,數(shù)據(jù)提供方對結(jié)果集的價值進行審核,數(shù)據(jù)提供方與算法提供方對結(jié)果受益方的身份進行審核。審核通過后,所有參與方達(dá)成共識,共同構(gòu)建合約。
合約執(zhí)行階段在TEE域內(nèi)安全地進行。任務(wù)域?qū)⒋龍?zhí)行的計算任務(wù)合約傳入TEE域。TEE域根據(jù)身份認(rèn)證與授權(quán)模塊提供的身份信息對合約進行安全性校驗,確保參與方身份的合法性、數(shù)據(jù)授權(quán)的正確性以及合約的完整性。在合約相關(guān)的校驗通過后,TEE域才會執(zhí)行合約。
合約的執(zhí)行在TEE域內(nèi),根據(jù)合約中約定的算法執(zhí)行。根據(jù)具體的應(yīng)用場景以及參與方約定的算法,合約可以將數(shù)據(jù)在TEE域內(nèi)解密后明文計算;也可以在TEE域內(nèi)對數(shù)據(jù)進行密文計算(例如同態(tài)加密)。由于TEE提供了一種對正在處理的數(shù)據(jù)(即“使用中”數(shù)據(jù))加密保護的技術(shù),在TEE域內(nèi)解密的明文數(shù)據(jù)的安全性也是能夠得到保證的。
合約執(zhí)行結(jié)束后,根據(jù)合約中約定的結(jié)果接收方的身份信息,建立數(shù)據(jù)的安全通道;然后,將結(jié)果集在TEE域內(nèi)加密后安全地發(fā)送給結(jié)果接收方;結(jié)果集發(fā)送的方式可以是在線傳輸?shù)姆绞?,也可以是離線傳輸?shù)姆绞健?/p>
3.3.2 合約的安全性
合約需要保證的安全性包括完整性、可用性、可認(rèn)證性以及抗否認(rèn)性四個特性。其中,可用性的保護由系統(tǒng)的安全域提供;完整性、可認(rèn)證性以及抗否認(rèn)性均基于身份認(rèn)證與授權(quán)模塊構(gòu)建。
身份認(rèn)證與授權(quán)模塊本身的安全性需要進行保證。該模塊需要獨立于任務(wù)域,可部署于可信第三方或者TEE域內(nèi),兩種方案各有優(yōu)缺點(見表2)。當(dāng)任務(wù)域可以影響身份認(rèn)證與授權(quán)的結(jié)果時,計算任務(wù)合約的安全性可以被輕易破壞。例如,任務(wù)域可以偽造惡意參與方,并篡改合約的算法和結(jié)果接收方,使得惡意參與方可以任意竊取隱私數(shù)據(jù)。
表2 身份認(rèn)證授權(quán)方式對比
(1)完整性的保護
合約完整性的保護分為兩個階段:在共識階段構(gòu)建完整性的防護;在執(zhí)行階段驗證合約的完整性。
? 共識階段:完整性的防護體系通過所有計算參與方共識的方式構(gòu)建。只有當(dāng)合約的所有參與方均同意的情況下,合約才能被正確更改。根據(jù)合約共識的流程,保證合約的完整性需要保證的三個特性:參與方的身份是合法的;合約的數(shù)據(jù)是被真實參與方授權(quán)的;所有參與方認(rèn)可合約的邏輯并授權(quán)。
以上三個特性均基于身份認(rèn)證與授權(quán)模塊對參與方身份的管理。身份認(rèn)證與授權(quán)模塊負(fù)責(zé)識別合法用戶,并對合法用戶根據(jù)其角色分配合適的權(quán)限。合法用戶負(fù)責(zé)對計算任務(wù)合約的正確性進行驗證,并對擁有的數(shù)據(jù)進行正確的授權(quán)。多個合約參與方通過共識完成對合約的完整性保護。
? 執(zhí)行階段:在任務(wù)執(zhí)行開始之前,合約完整性通過完整性校驗檢驗。任務(wù)域?qū)⒋龍?zhí)行的計算任務(wù)合約傳入TEE域,TEE域根據(jù)身份認(rèn)證與授權(quán)模塊提供的身份信息對合約進行校驗,確保了合約的未被惡意篡改。
合約的執(zhí)行過程中的完整性由TEE技術(shù)保證。合約的執(zhí)行在TEE域內(nèi)。由于TEE提供了一種對正在處理的數(shù)據(jù)(即“使用中”的數(shù)據(jù))加密保護的技術(shù),在TEE域內(nèi)解密的明文數(shù)據(jù)的完整性也是能夠保證的。
執(zhí)行完成后的完整性由數(shù)據(jù)安全通道保護。結(jié)果數(shù)據(jù)集通過數(shù)據(jù)安全通道傳輸給合約指定的結(jié)果受益方。數(shù)據(jù)安全通道的建立在TEE內(nèi)保證了結(jié)果受益方身份的完整性。數(shù)據(jù)安全通道的特點保證了傳輸過程中的完整性。
(2)可認(rèn)證性的保護
合約的可認(rèn)證性由身份認(rèn)證與授權(quán)模塊提供。當(dāng)所有參與方通過共識成功構(gòu)建合約的時候,每個參與方通過簽名的方式,可以對合約提供可認(rèn)證性的保護。
(3)抗否認(rèn)性的保護
合約的抗否認(rèn)性由身份認(rèn)證與授權(quán)模塊提供。合約的可認(rèn)證性關(guān)聯(lián)了計算參與方與參與方的合約。合約的完整性保證了單個參與方無法對合約進行篡改以破壞抗否認(rèn)性。
(4)可用性的保護
可用性的保護通過安全域提供。
TEE輔助的機密計算框架需要有一個日志審計模塊完成安全審計服務(wù)。區(qū)別于傳統(tǒng)的目的著重在故障排錯、數(shù)據(jù)分析的日志系統(tǒng),TEE輔助的機密計算框架的日志審計模塊的主要目的是追蹤及溯源。
攻擊者可以通過多種手段,只需要找到一個弱點就能破壞整個系統(tǒng)的安全性。雖然TEE輔助的機密計算框架的設(shè)計盡可能多地考慮了安全的問題,但提供的技術(shù)仍然無法保證能提供萬無一失的保護。因而,日志審計的目的是記錄下潛在攻擊行為,并對記錄下的信息進行判定及溯源。日志審計模塊通常由日志記錄、上傳、存儲三部分組成。
3.4.1 日志的記錄
日志的記錄需要對TEE輔助的機密計算框架中的操作進行記錄,需要保證所有對數(shù)據(jù)及合約的操作均能被記錄。攻擊者攻擊了數(shù)據(jù)及合約后,攻擊的行為無法逃離日志審計模塊的記錄。
為了避免攻擊者可以繞過日志記錄模塊,TEE輔助的機密計算框架建議由可信方產(chǎn)生日志記錄。可信方為計算參與方、TEE域、身份認(rèn)證及授權(quán)模塊?;趫D5的業(yè)務(wù)邏輯架構(gòu),通過對身份認(rèn)證及授權(quán)模塊以及所有計算參與方的操作行為的記錄可以還原合約共識階段的操作,對TEE域的操作行為的記錄可以還原合約執(zhí)行階段的操作。
3.4.2 日志的上傳
成功地產(chǎn)生日志記錄后,需要保證日志記錄在上傳過程中的安全性。這個上傳的過程需要保證攻擊者無法在上傳過程中通過篡改、截斷或者增加等方式對日志記錄進行破壞。使用密碼技術(shù)對通信鏈路加密的方式可以解決日志上傳過程中的安全性問題。
3.4.3 日志的存儲
TEE輔助的機密計算框架的日志審計系統(tǒng)的存儲需要保證完整性及可用性。完整性的保護能保證存儲的日志記錄無法被攻擊者惡意篡改;可用性的保護能保證日志記錄一定能被日志審計系統(tǒng)記錄。
任何可以提供日志完整性及可用性保護的存儲方式均可以用作日志記錄的存儲??蛇x的存儲方式包括但不限于:區(qū)塊鏈、TEE保護的日志存儲數(shù)據(jù)庫、安全防護系統(tǒng)保護的日志存儲數(shù)據(jù)庫。以上存儲方式特點如下。
(1)傳統(tǒng)日志數(shù)據(jù)庫+安全防護系統(tǒng):傳統(tǒng)日志數(shù)據(jù)庫的完整性及可用性需要由安全防護系統(tǒng)及高可用方案提供;安全防護系統(tǒng)包括IDS、IPS、WAF等。高可用方案包括主從副本、同城災(zāi)備等。
(2)傳統(tǒng)日志數(shù)據(jù)庫+TEE:使用TEE對傳統(tǒng)日志數(shù)據(jù)庫進行防護時,完整性防護可以通過TEE提供。高可用方案需要自行配置。
(3)日志存儲區(qū)塊鏈:使用區(qū)塊鏈存儲日志時,區(qū)塊鏈本身的特性可以同時提供完整性及可用性的保護。但是,使用基于區(qū)塊鏈的日志系統(tǒng)時,需要考慮針對區(qū)塊鏈的攻擊,例如51%攻擊、女巫攻擊的可能性。
通過對TEE技術(shù)以及機密技術(shù)的分析,闡述了一種TEE輔助的機密計算框架的設(shè)計。在結(jié)合OSI安全體系架構(gòu)的基礎(chǔ)上,對TEE輔助的機密計算框架的安全性,從機密性、完整性、可用性、抗否認(rèn)性及可認(rèn)證性五個角度進行了分析。