SGX在可信計(jì)算中的應(yīng)用分析_第1頁(yè)
SGX在可信計(jì)算中的應(yīng)用分析_第2頁(yè)
SGX在可信計(jì)算中的應(yīng)用分析_第3頁(yè)
SGX在可信計(jì)算中的應(yīng)用分析_第4頁(yè)
SGX在可信計(jì)算中的應(yīng)用分析_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SGX/r/n在可信計(jì)算中的應(yīng)用分析/r/n1引言/r/n隨著互聯(lián)網(wǎng)在人們?nèi)粘I钪邪缪葜絹?lái)越重要的角色,信息安全問(wèn)題越來(lái)越多,無(wú)論是智能手機(jī),還是新興起的無(wú)人駕駛、物聯(lián)網(wǎng)、網(wǎng)絡(luò)電視等都存在著不同程度、不同方面的安全問(wèn)題。小到個(gè)人隱私信息,大到國(guó)家軍事機(jī)密,各個(gè)層面產(chǎn)生的安全問(wèn)題復(fù)雜煩瑣,沒(méi)有統(tǒng)一的解決方法,但可信計(jì)算的出現(xiàn)使從根本上防范信息安全問(wèn)題的產(chǎn)生成為可能。/r/n在這樣的大環(huán)境下,英特爾產(chǎn)生了研發(fā)/r/nSGX(softwareguardextensions)/r/n技術(shù)的靈感,/r/nSGX/r/n作為英特爾開(kāi)發(fā)的可信計(jì)算技術(shù),旨在以硬件安全為強(qiáng)制性保障,不依賴于固件和軟件的安全狀態(tài),通過(guò)一組新的指令集擴(kuò)展與訪問(wèn)控制機(jī)制,實(shí)現(xiàn)包含敏感數(shù)據(jù)的程序和普通程序間的隔離運(yùn)行,為包含敏感數(shù)據(jù)的程序提供可信執(zhí)行環(huán)境,保障用戶關(guān)鍵代碼和數(shù)據(jù)的機(jī)密性與完整性不受惡意軟件的破壞。與其他可信計(jì)算技術(shù)不同的是/r/nSGX/r/n的可信計(jì)算基(/r/nTCB,trustedcomputingbase)/r/n僅包括硬件,避免了基于軟件的/r/nTCB/r/n自身存在軟件安全漏洞與威脅的缺陷,極大地提升了對(duì)系統(tǒng)安全的保障能力;此外,/r/nSGX/r/n可以保障可信執(zhí)行環(huán)境運(yùn)行時(shí)的安全,惡意代碼無(wú)法訪問(wèn)與篡改其他程序在安全區(qū)內(nèi)部運(yùn)行的內(nèi)容,進(jìn)一步增強(qiáng)了系統(tǒng)的安全性;基于指令集的擴(kuò)展與獨(dú)立的認(rèn)證方式,使應(yīng)用程序可以靈活地調(diào)用這一安全功能并進(jìn)行驗(yàn)證/r/nSGX/r/n的獨(dú)特架構(gòu)讓它能夠在計(jì)算平臺(tái)上提供一個(gè)可靠的空間,保障用戶關(guān)鍵代碼和數(shù)據(jù)的機(jī)密性、完整性和安全區(qū)本身,/r/nSGX/r/n作為一個(gè)英特爾為可信計(jì)算推出的技術(shù),在被提出后吸引了學(xué)術(shù)界和工業(yè)界大量研究者的關(guān)注,并被應(yīng)用在很多領(lǐng)域。/r/nSGX/r/n被大量應(yīng)用在云計(jì)算安全領(lǐng)域,如構(gòu)建云平臺(tái)應(yīng)用安全隔離執(zhí)行環(huán)境、構(gòu)建安全容器、構(gòu)建云平臺(tái)大數(shù)據(jù)安全可信計(jì)算環(huán)境和網(wǎng)絡(luò)功能虛擬化的狀態(tài)保護(hù)。例如,/r/nBaumann/r/n等/r/n除了應(yīng)用于云計(jì)算外,許多解決方案受益于/r/nSGX/r/n提供的安全保護(hù),包括多方計(jì)算、機(jī)器學(xué)習(xí)、區(qū)塊鏈、人工智能、生物識(shí)別技術(shù)保護(hù)等。例如,/r/nUCloud/r/nSGX/r/n技術(shù)目前被廣泛地應(yīng)用到各個(gè)領(lǐng)域,但作為可信計(jì)算技術(shù)而誕生的/r/nSGX/r/n技術(shù)現(xiàn)階段在可信計(jì)算領(lǐng)域的應(yīng)用程度并沒(méi)有達(dá)到相對(duì)應(yīng)的高度。本文針對(duì)這一現(xiàn)象,對(duì)現(xiàn)有的/r/nSGX/r/n在可信計(jì)算領(lǐng)域的研究和應(yīng)用進(jìn)展進(jìn)行了分析,總結(jié)出當(dāng)前階段/r/nSGX/r/n在可信計(jì)算領(lǐng)域難以普及應(yīng)用的原因及應(yīng)對(duì)方法,并對(duì)/r/nSGX/r/n在可信計(jì)算領(lǐng)域未來(lái)的發(fā)展趨勢(shì)進(jìn)行了展望。/r/n2/r/nSGX/r/n概述/r/n計(jì)算機(jī)系統(tǒng)處理著快速增長(zhǎng)的重要、敏感和有價(jià)值的信息,這些信息需要被保護(hù)起來(lái),從/r/n而避免被篡改和竊取。大量的應(yīng)用程序需要在平臺(tái)上保密運(yùn)行,從而保證用戶的敏感數(shù)據(jù)/r/n只能由指定接收人訪問(wèn)。因此,/r/nIntel/r/n的/r/nSGX/r/n —種新加入/r/nIntel/r/n架構(gòu)的指令集和內(nèi)存/r/n訪問(wèn)技術(shù)應(yīng)運(yùn)而生。通過(guò)應(yīng)用這項(xiàng)技術(shù)可以有效減少攻擊面。有無(wú)/r/nSGX/r/n安全區(qū)/r/n(enclave)/r/n、攻擊面的不同情況如圖1所示/r/nSGX/r/n保護(hù)機(jī)制/r/nSGX/r/n設(shè)計(jì)原理/r/n英特爾軟件防護(hù)擴(kuò)展/r/nSGX/r/n是一項(xiàng)面向應(yīng)用程序開(kāi)發(fā)人員的英特爾技術(shù),其目標(biāo)是對(duì)機(jī)密信息啟用高級(jí)別的保護(hù)。英特爾從第6代英特爾酷睿?處理器平臺(tái)開(kāi)始引入了英特爾軟件防護(hù)擴(kuò)展新指令集,受保護(hù)的內(nèi)存區(qū)域稱為安全區(qū),使用特殊指令和軟件可將應(yīng)用程序代碼放入一個(gè)安全區(qū)中執(zhí)行。它通過(guò)在代碼和數(shù)據(jù)駐留的地方分配硬件保護(hù)的內(nèi)存來(lái)實(shí)現(xiàn)安全區(qū)和非安全區(qū)的隔離。安全區(qū)內(nèi)存中的數(shù)據(jù)只能由同樣駐留在安全區(qū)內(nèi)存空間中的代碼訪問(wèn)。從安全區(qū)的角度來(lái)看,操作系統(tǒng)和/r/nVMM/r/n也不是可信的組件。安全區(qū)代碼可以通過(guò)特殊的指令調(diào)用。安全區(qū)可以構(gòu)建并加載為/r/nDLL/r/n文件。通過(guò)這種機(jī)制,安全區(qū)可以提供一個(gè)隔離的可信執(zhí)行環(huán)境,防止惡意軟件影響安全區(qū)內(nèi)的代碼和數(shù)據(jù),從而保障用戶的關(guān)鍵代碼和數(shù)據(jù)的機(jī)密性和完整性。在安全區(qū)中運(yùn)行的受保護(hù)程序還擁有一個(gè)密碼學(xué)測(cè)度,用來(lái)發(fā)送給客戶端驗(yàn)證程序的可信執(zhí)行,或者為遠(yuǎn)程終端或不可信平臺(tái)提供認(rèn)證服務(wù),來(lái)實(shí)現(xiàn)安全區(qū)間的可信性校驗(yàn)。/r/n這種隔離由引導(dǎo)期間留出的處理器保留存儲(chǔ)器強(qiáng)制執(zhí)行。該存儲(chǔ)器僅可由/r/nSGX/r/n微碼和在安全區(qū)內(nèi)運(yùn)行的程序訪問(wèn),并且被分成/r/n4K/r/n頁(yè),這些頁(yè)統(tǒng)稱為安全區(qū)頁(yè)面緩存/r/n(EPC,enclavepagecache)。EPC/r/n中的頁(yè)面與特定的安全區(qū)相關(guān)聯(lián),并且只能由該安全區(qū)訪問(wèn)。從/r/nEPC/r/n分頁(yè)到常規(guī)/r/nDRAM/r/n的信息在硬件派生密鑰下加密/r/n安全區(qū)具有多個(gè)屬性:/r/n(1) 通過(guò)/r/nCPU/r/n強(qiáng)制執(zhí)行的內(nèi)存訪問(wèn)控制機(jī)制,將安全區(qū)與其他不受信任的應(yīng)用程序(包括更高權(quán)限的應(yīng)用程序)隔離開(kāi);/r/n(2) 內(nèi)存加密用于防御物理攻擊并保護(hù)交換的安全區(qū)頁(yè)面;/r/n(3) 安全區(qū)支持安全區(qū)實(shí)例層面的遠(yuǎn)程認(rèn)證。/r/nSGX/r/n關(guān)鍵技術(shù)/r/n1)認(rèn)證/r/n在/r/nIntelSGX/r/n架構(gòu)中,認(rèn)證是指證明在平臺(tái)上建立特定安全區(qū)的過(guò)程,向其他實(shí)體演示以正確的方式實(shí)例化特定的環(huán)境。/r/nSGX/r/n的認(rèn)證功能目前有兩種認(rèn)證機(jī)制。/r/n本地認(rèn)證:本地認(rèn)證是指在同一平臺(tái)上的兩個(gè)安全區(qū)在交換信息之前使用/r/nIntelSGX/r/n報(bào)告機(jī)制彼此進(jìn)行認(rèn)證。在/r/nSGX/r/n應(yīng)用程序中,當(dāng)應(yīng)用程序具有多個(gè)需要一起工作以完成任務(wù)的安全區(qū),或者當(dāng)兩個(gè)單獨(dú)的應(yīng)用程序必須在安全區(qū)之間傳遞數(shù)據(jù)時(shí),可以使用本地認(rèn)證功能。每個(gè)安全區(qū)必須驗(yàn)證另一個(gè)安全區(qū)以確認(rèn)它們都是可信的。在兩個(gè)安全區(qū)驗(yàn)證對(duì)方是可信的之后,可以在受保護(hù)的通道上交換信息,該通道可以提供機(jī)密性、完整性和重放保護(hù)。完成后,兩個(gè)安全區(qū)會(huì)建立受保護(hù)的會(huì)話并使用/r/nECDH/r/n密鑰交換來(lái)共享會(huì)話密鑰。該會(huì)話密鑰可用于加密必須在兩個(gè)安全區(qū)之間共享的數(shù)據(jù)。/r/n遠(yuǎn)程認(rèn)證:遠(yuǎn)程認(rèn)證是指將英特爾/r/nSGX/r/n軟件和平臺(tái)硬件的信息組合起來(lái)用于生成評(píng)價(jià),然后將該評(píng)價(jià)發(fā)送到第三方服務(wù)器以建立信任。該軟件包括應(yīng)用程序的安全區(qū),以及由英特爾提供的/r/nQE(quotingenclave/r/n)和/r/nPvE(provisioningenclave)。/r/n在證明硬件是支持英特爾/r/nSGX/r/n的/r/nCPU/r/n后,軟件信息的摘要會(huì)與來(lái)自硬件平臺(tái)的唯一非對(duì)稱密鑰組合以生成評(píng)價(jià),該評(píng)價(jià)通過(guò)經(jīng)認(rèn)證的信道發(fā)送到遠(yuǎn)程服務(wù)器。如果遠(yuǎn)程服務(wù)器確定該安全區(qū)已正確實(shí)例化并且正在支持正版英特爾/r/nSGX/r/n的處理器上運(yùn)行,則它可以信任該安全區(qū)并選擇使用經(jīng)過(guò)身份驗(yàn)證的通道向其提供機(jī)密信息。/r/n密封數(shù)據(jù)/r/n一個(gè)安全區(qū)被實(shí)例化之后,硬件層面會(huì)對(duì)數(shù)據(jù)提供保護(hù),但當(dāng)安全區(qū)被關(guān)閉時(shí),安全區(qū)內(nèi)部的所有數(shù)據(jù)都將丟失,如果數(shù)據(jù)之后仍然需要使用,那么安全區(qū)必須要對(duì)這部分?jǐn)?shù)據(jù)進(jìn)行特殊安排,使它們能夠存儲(chǔ)在安全區(qū)外面。為了保護(hù)和保存數(shù)據(jù),/r/nSGX/r/n建立了一種機(jī)制,允許安全區(qū)軟件檢索該安全區(qū)的唯一密鑰。此密鑰只能由特定平臺(tái)上的安全區(qū)生成。安全區(qū)軟件使用該密鑰加密平臺(tái)上的數(shù)據(jù)或解密平臺(tái)上已經(jīng)存在的數(shù)據(jù)。英特爾將這些加密和解密操作分別稱為密封和解封操作,因?yàn)閿?shù)據(jù)是通過(guò)加密方式密封到安全區(qū)和平臺(tái)的。密封數(shù)據(jù)就是對(duì)數(shù)據(jù)進(jìn)行加密的過(guò)程,以便將其寫(xiě)入不受信任的內(nèi)存或存儲(chǔ),而不泄露數(shù)據(jù)內(nèi)容,且對(duì)應(yīng)的安全區(qū)可以將數(shù)據(jù)讀出并解密。加密密鑰是按需內(nèi)部派生的,不會(huì)暴露在安全區(qū)中。當(dāng)前/r/nSGX/r/n有兩種密封數(shù)據(jù)的方法。/r/n密封到安全區(qū)標(biāo)識(shí):此方法生成某一安全區(qū)的唯一指定密鑰。當(dāng)密封到安全區(qū)標(biāo)識(shí)時(shí),密鑰對(duì)于密封數(shù)據(jù)的特定安全區(qū)是唯一的,并且影響其簽名的安全區(qū)的任何改變都將導(dǎo)致產(chǎn)生新密鑰。使用這種方法,由一個(gè)版本的安全區(qū)密封的數(shù)據(jù)是其他版本的安全區(qū)無(wú)法訪問(wèn)的,所以這種方法的副作用是密封數(shù)據(jù)無(wú)法遷移到應(yīng)用程序及其安全區(qū)的較新版本。它專為密封的舊數(shù)據(jù)不應(yīng)被新版應(yīng)用使用的應(yīng)用而設(shè)計(jì)。/r/n密封到密封標(biāo)識(shí):此方法生成一個(gè)基于安全區(qū)密封授權(quán)方標(biāo)識(shí)的密鑰。來(lái)自同一簽名授權(quán)方的多個(gè)安全區(qū)可以導(dǎo)出相同的密鑰。當(dāng)密封到密封標(biāo)識(shí)時(shí),來(lái)自同一授權(quán)方的多個(gè)/r/n安全區(qū)可以透明地密封和解封彼此的數(shù)據(jù)。這允許來(lái)自一個(gè)版本的安全區(qū)的數(shù)據(jù)被遷移到另一個(gè)版本,或者在來(lái)自同一軟件供應(yīng)商的多個(gè)應(yīng)用程序之間共享安全區(qū)中的數(shù)據(jù)。/r/n如果需要阻止較舊版本的軟件和安全區(qū)訪問(wèn)由較新的應(yīng)用程序版本密封的數(shù)據(jù),則授權(quán)機(jī)構(gòu)可以在簽署安全區(qū)時(shí)選擇包含軟件版本號(hào)/r/n(SVN)/r/n。早于指定/r/nSVN/r/n的安全區(qū)版本將無(wú)法派生密封密鑰,因此無(wú)法對(duì)數(shù)據(jù)進(jìn)行解封/r/nSGX/r/n管理機(jī)制/r/nSGX/r/n內(nèi)存管理機(jī)制/r/nSGX/r/n定義了一種全新的數(shù)據(jù)結(jié)構(gòu)用于維持需要用/r/nSGX/r/n進(jìn)行保護(hù)的關(guān)鍵信息。/r/nenclave/r/n關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和組件見(jiàn)表1。/r/n為了能完整地支持/r/nSGX/r/n的內(nèi)存保護(hù)功能,相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和硬件結(jié)構(gòu)是必要的。為此,英特爾設(shè)計(jì)了/r/nEPC,EPC/r/n是/r/nPRM/r/n中操作系統(tǒng)分配的裝載應(yīng)用程序數(shù)據(jù)和代碼的4/r/nkB/r/n大小內(nèi)存的集合,是一個(gè)內(nèi)存存儲(chǔ)安全區(qū)的頁(yè)和/r/nSGX/r/n數(shù)據(jù)結(jié)構(gòu)的受保護(hù)內(nèi)存,這段內(nèi)存可以同時(shí)阻止硬件和軟件的訪問(wèn)。處理器會(huì)維持整個(gè)架構(gòu)的安全性并對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)信息控制。如果安全區(qū)執(zhí)行內(nèi)存訪問(wèn)/r/nEPC/r/n時(shí),處理器會(huì)決定是否允許訪問(wèn)。/r/n在硬件結(jié)構(gòu)中,/r/nEPC/r/n的一個(gè)頁(yè)在硬件結(jié)構(gòu)上稱作/r/nEPCM(enclavepagecachemap)。EPCM/r/n維護(hù)/r/nEPC/r/n的入口地址,并且包含/r/nCPU/r/n跟蹤/r/nEPC/r/n內(nèi)存頁(yè)元數(shù)據(jù)的狀態(tài)表。它保證每個(gè)/r/nEPC/r/n由一個(gè)安全區(qū)獨(dú)享/r/nSGX/r/n線程管理機(jī)制/r/n任何能夠?qū)?r/nEPC/r/n頁(yè)映射到其虛擬地址空間的進(jìn)程都能夠執(zhí)行安全區(qū)代碼。當(dāng)/r/nCPU/r/n執(zhí)行安全區(qū)代碼時(shí)稱為/r/nenclave/r/n模式,此時(shí)/r/nCPU/r/n可以訪問(wèn)駐留在/r/nPRM/r/n中的/r/nEPC/r/n頁(yè)面。線程數(shù)由安全區(qū)作者決定,然后決定有多少線程可以并發(fā)地執(zhí)行安全區(qū)代碼。/r/n初始化后的安全區(qū)使用/r/nEENTER/r/n指令來(lái)跳轉(zhuǎn)進(jìn)入安全區(qū)執(zhí)行受保護(hù)的程序。只有在/r/nRING3/r/n的程序才能夠使用/r/nEENTER/r/n指令,/r/nEENTER/r/n并不執(zhí)行特權(quán)切換,/r/nCPU/r/n依舊在/r/nRING3/r/n的/r/nenclave/r/n模式下執(zhí)行。/r/nEENTER/r/n用在不受信任的程序想要在受保護(hù)的環(huán)境中執(zhí)行代碼,并且需要保存調(diào)用者的執(zhí)行上下文以便在安全區(qū)代碼返回時(shí)恢復(fù)跳轉(zhuǎn)前的狀態(tài)。/r/nEENTER/r/n需要/r/nTCS/r/n的虛擬地址作為輸入,接著這條指令將/r/nRIP(EIP/r/n)寄存器修改為/r/nTCS/r/n中保存的入口偏移地址。這個(gè)入口點(diǎn)是由安全區(qū)應(yīng)用開(kāi)發(fā)者定義的,任何對(duì)此地址的修改都會(huì)導(dǎo)致在初始化安全區(qū)時(shí)產(chǎn)生不一致的密碼學(xué)測(cè)度。這樣保證了安全區(qū)中的代碼只會(huì)在被定義好的地址上通過(guò)/r/nECALL/r/n來(lái)調(diào)用。實(shí)際上,入口點(diǎn)只是安全區(qū)內(nèi)存范圍內(nèi)的函數(shù),安全/r/n區(qū)作者已顯式地將該內(nèi)存范圍定義為安全區(qū)代碼的入口點(diǎn)。/r/nIntelSGXSDK/r/nIntel(R)SoftwareGuardExtensionsSDK/r/n提供了以下工具。/r/nEdger8r/r/n工具:用于在不受信任的組件和安全區(qū)之間生成接口。它通過(guò)讀取用戶提供的安全區(qū)描述語(yǔ)言/r/n(EDL/r/n)文件來(lái)生成邊緣例程。這些邊緣例程定義不受信任的應(yīng)用程序和安全區(qū)之間的接口。通常,該工具作為安全區(qū)構(gòu)建過(guò)程的一部分自動(dòng)運(yùn)行。但是,高級(jí)安全區(qū)編寫(xiě)器可以手動(dòng)調(diào)用/r/nEdger8r。/r/nEnclave/r/n簽名工具:/r/nIntel(R)/r/n軟件保護(hù)擴(kuò)展/r/nSDK/r/n提供了一個(gè)名為/r/nsgx_sign/r/n的工具,用于對(duì)安全區(qū)進(jìn)行簽名。通常,對(duì)安全區(qū)進(jìn)行簽名的過(guò)程涉及生成包含安全區(qū)屬性(如安全區(qū)度量)的簽名結(jié)構(gòu),一旦在這種結(jié)構(gòu)中對(duì)安全區(qū)簽名,就可以檢測(cè)到對(duì)安全區(qū)文件(如代碼、數(shù)據(jù)、簽名等)的修改。簽名工具還會(huì)評(píng)估安全區(qū)映像的潛在錯(cuò)誤,并警告用戶潛在的安全危險(xiǎn)。/r/nsgx_sign/r/n通常是由/r/nIntel(R)SGXSDK/r/n中包含的一種配置工具設(shè)置的,并在構(gòu)建過(guò)程結(jié)束時(shí)自動(dòng)運(yùn)行。在加載過(guò)程中,將檢查簽名以確認(rèn)安全區(qū)沒(méi)有被篡改,并且已正確加載。此外,簽名工具可用于報(bào)告已簽名的安全區(qū)的元數(shù)據(jù)信息,并生成對(duì)安全區(qū)簽名者白名單所需的/r/nSIGStruct/r/n文件。/r/nEnclave/r/n調(diào)試器:幫助調(diào)試安全區(qū)。只有調(diào)試模式的安全區(qū)可以用/r/nIntel(R)SGX/r/n調(diào)試器進(jìn)行調(diào)試。/r/n性能測(cè)量:使用/r/nIntel(R)VTune(TM/r/n)放大器有助于測(cè)量安全區(qū)代碼的性能。/r/nIntel(R)VTune(TM/r/n)放大器應(yīng)用程序支持一種新的分析類型,稱為/r/nSGX/r/n熱點(diǎn),可用于配置英特爾/r/nSGX/r/n安全區(qū)應(yīng)用程序??梢允褂?r/nSGX/r/n熱點(diǎn)的默認(rèn)設(shè)置來(lái)分析應(yīng)用程序和安全區(qū)代碼。精確的基于事件的采樣/r/n(PEBS)/r/n有助于配置英特爾/r/nSGX/r/n安全區(qū)代碼。/r/nEnclave/r/n內(nèi)存測(cè)量工具:幫助測(cè)量安全區(qū)在運(yùn)行時(shí)對(duì)受保護(hù)內(nèi)存的使用情況。安全區(qū)是一個(gè)孤立的環(huán)境。/r/nIntel(R)SoftwareGuardExtensionsSDK/r/n提供了/r/nsgx_emmt/r/n工具,用于測(cè)量安全區(qū)在運(yùn)行時(shí)對(duì)受保護(hù)內(nèi)存的實(shí)際使用情況。目前,安全區(qū)內(nèi)存測(cè)量工具提供以下兩個(gè)功能:獲取安全區(qū)的堆棧峰值使用值和獲取安全區(qū)的堆峰值使用值。/r/nCPUSVN/r/n配置工具:有助于在不修改硬件的情況下模擬/r/nCPUSVN/r/n升級(jí)/降級(jí)場(chǎng)景。/r/nCPUSVN/r/n表示/r/nCPU/r/n的安全版本號(hào),它影響密鑰派生和報(bào)表生成過(guò)程。/r/nCPUSVN/r/n不是一個(gè)數(shù)字概念,會(huì)隨著硬件升級(jí)/降級(jí)而升級(jí)/降級(jí)。為了在不修改硬件的情況下模擬/r/nCPUSVN/r/n升級(jí)/降級(jí),/r/nIntel(R)SoftwareGuardExtensionsSDK/r/n提供了一個(gè)/r/nCPUSVN/r/n配置工具,用于配置/r/nCPUSVN/r/n3/r/nSGX/r/n在可信計(jì)算領(lǐng)域的發(fā)展現(xiàn)狀/r/nSGX/r/n技術(shù)的問(wèn)世,在學(xué)術(shù)界和工業(yè)界引發(fā)了研究的浪潮,并在近年來(lái)逐漸成熟,/r/nSGX/r/n能夠構(gòu)建可信計(jì)算環(huán)境的特性在各個(gè)方向得到了廣泛應(yīng)用和結(jié)合。/r/nSGX/r/n技術(shù)目前在可信計(jì)算領(lǐng)域的應(yīng)用主要分為3種,分別是利用/r/nSGX/r/n增強(qiáng)系統(tǒng)的安全性、利用/r/nSGX/r/n增強(qiáng)應(yīng)用程序的安全性和利用/r/nSGX/r/n增強(qiáng)開(kāi)發(fā)語(yǔ)言的安全性。/r/nSGX/r/n增強(qiáng)系統(tǒng)的安全性/r/n(1) /r/nSGX/r/n與/r/nTPM/r/n結(jié)合/r/n由于/r/nSGX/r/n技術(shù)尚具有局限性和不足之處,可以通過(guò)將/r/nSGX/r/n和其他技術(shù)結(jié)合起來(lái)以提高系統(tǒng)整體的安全性,達(dá)到設(shè)計(jì)目標(biāo)。為了提高/r/nSGX/r/n的安全性,/r/nDhiman/r/n等/r/n(2) /r/nSGX/r/n與/r/nvTPM/r/n結(jié)合/r/n隨著云計(jì)算技術(shù)的廣泛應(yīng)用,/r/nSGX/r/n技術(shù)已經(jīng)成為提高云基礎(chǔ)設(shè)施虛擬化環(huán)境安全性的重要手段。根據(jù)/r/nTPM/r/n規(guī)范,一種/r/nvTPM/r/n的實(shí)現(xiàn)框架被提出,為虛擬化環(huán)境/r/nvTPM/r/n的設(shè)計(jì)和實(shí)現(xiàn)奠定了基礎(chǔ),但該框架對(duì)實(shí)例的非易失存儲(chǔ)文件/r/nNVRAM/r/n缺少有效保護(hù);攻擊者可以直接讀取/r/nNVRAM/r/n文件獲取/r/nvTPM/r/n實(shí)例中的敏感數(shù)據(jù),此外/r/nvTPM/r/n與虛擬機(jī)之間不存在綁定關(guān)系,攻擊者甚至可以直接讀取其他虛擬機(jī)的/r/nvTPM/r/n實(shí)例數(shù)據(jù)。針對(duì)這一安全問(wèn)題,嚴(yán)飛等/r/n(3) /r/nSGX/r/n與/r/nHybridMemorySafety/r/n內(nèi)存安全技術(shù)結(jié)合當(dāng)前對(duì)于數(shù)據(jù)安全和隱私保護(hù)的合規(guī)性要求日漸提升,如何對(duì)用戶隱私進(jìn)行保護(hù)、對(duì)數(shù)據(jù)安全可控已經(jīng)成為廣泛的需求,/r/nMesaTEE/r/n正是應(yīng)運(yùn)而生的一個(gè)創(chuàng)新性的通用計(jì)算平臺(tái)。百度與英特爾聯(lián)合,將/r/nSGX/r/n以及其他可信計(jì)算技術(shù)和混合內(nèi)存安全技術(shù)結(jié)合在一起,構(gòu)建了完整的/r/nFaaS/r/n通用計(jì)算框架,形成了一個(gè)可信計(jì)算平臺(tái)/r/nMesaTEE/r/n,通過(guò)利用包括/r/nIntelSGX/r/n在內(nèi)的/r/nTEE/r/n,安全地將云用戶的數(shù)據(jù)和代碼執(zhí)行隔離、加密起來(lái)。即使云計(jì)算環(huán)境中的操作系統(tǒng)、虛擬機(jī)管理器或相鄰的其他虛擬機(jī)被攻破,這些數(shù)據(jù)代碼的完整性和保密性能夠得到保障,用戶也可以遠(yuǎn)程對(duì)這些安全保護(hù)進(jìn)行驗(yàn)證。除了遠(yuǎn)程可驗(yàn)證的隔離手段,/r/nMesaTEE/r/n還實(shí)現(xiàn)了全球首次在/r/nSGXTEE/r/n中使用內(nèi)存安全語(yǔ)言和不可繞過(guò)編程范式,確保/r/nSGX/r/n安全區(qū)中的代碼不會(huì)因?yàn)閮?nèi)存問(wèn)題被攻破,從內(nèi)外兩個(gè)維度封殺了攻擊者突防的可能性/r/nSGX/r/n增強(qiáng)應(yīng)用程序的安全性/r/nIntelSGX/r/n在應(yīng)用程序中的部署主要分為本地、服務(wù)端和客戶端三類。對(duì)于獨(dú)立運(yùn)行在本地的程序,/r/nSGX/r/n無(wú)須與遠(yuǎn)程進(jìn)行交互。目前主要用/r/nIntelSGX/r/n存儲(chǔ)服務(wù)器的敏感數(shù)據(jù)。在/r/n客戶端的應(yīng)用較少,主要通過(guò)/r/nSGX/r/n對(duì)客戶端軟件的完整性和安全性進(jìn)行校驗(yàn)。同時(shí)部署在客戶端和服務(wù)器端的應(yīng)用可以通過(guò)/r/nSGX/r/n實(shí)現(xiàn)遠(yuǎn)程認(rèn)證。/r/n(1) /r/nSGX/r/n應(yīng)用于本地/r/nSGX/r/n本身作為一種可信計(jì)算技術(shù),能夠很好地與系統(tǒng)功能融合,保障系統(tǒng)敏感數(shù)據(jù)的存儲(chǔ)安全。例如,系統(tǒng)日志作為捕獲操作系統(tǒng)或程序行為的最大法證資產(chǎn),一旦系統(tǒng)受到威脅,系統(tǒng)日志通常是下一個(gè)立即受到攻擊的目標(biāo),因此保護(hù)它們至關(guān)重要。基于這一出發(fā)點(diǎn),/r/nVishal/r/n等/r/n(2) /r/nSGX/r/n應(yīng)用于服務(wù)器端/r/nSGX/r/n具有最高安全權(quán)限的特性使/r/nSGX/r/n在保證敏感數(shù)據(jù)安全性、完整性方面具有巨大的優(yōu)勢(shì),而這種優(yōu)勢(shì)可以用來(lái)為服務(wù)器中用戶信息和證書(shū)之類的敏感信息提供安全存儲(chǔ)的服務(wù)。/r/n相對(duì)于傳統(tǒng)支付而言,區(qū)塊鏈具有無(wú)須受信任的授權(quán)即可進(jìn)行操作的能力以及保障用戶隱私的功能。但是,區(qū)塊鏈支付的驗(yàn)證要求用戶下載并處理整個(gè)鏈,這對(duì)于資源受限的設(shè)備而言是不可行的。為了解決這個(gè)問(wèn)題,大多數(shù)的區(qū)塊鏈系統(tǒng)支持輕量級(jí)客戶端,這些客戶端將大部分計(jì)算和存儲(chǔ)負(fù)擔(dān)外包給了完整的區(qū)塊鏈節(jié)點(diǎn)。但是,這樣的驗(yàn)證會(huì)泄露有關(guān)客戶交易的關(guān)鍵信息,從而破壞用戶隱私。/r/nSinisa/r/n等/r/n除了敏感信息之外,服務(wù)器端的數(shù)據(jù)庫(kù)也存在安全隱患,通過(guò)將數(shù)據(jù)庫(kù)納入/r/nSGX/r/n的保護(hù)下可以有效避免對(duì)數(shù)據(jù)庫(kù)的/r/nRING/r/n0攻擊。為此,/r/nPriebe/r/n等/r/n(3) /r/nSGX/r/n應(yīng)用于客戶端/r/nSGX/r/n在客戶端的應(yīng)用雖然較少,但是可以滿足軟件在客戶端的完整性和安全性認(rèn)證,可用于開(kāi)發(fā)商向用戶客戶端的/r/nIntelSGX/r/n中下放許可證等版權(quán)信息。/r/nSGX/r/n客戶端應(yīng)用包括/r/nSGX/r/n的分布式客戶端應(yīng)用。/r/n長(zhǎng)期以來(lái),計(jì)算機(jī)游戲的完整性和保密性一直是游戲開(kāi)發(fā)商關(guān)注的問(wèn)題,為了防止玩家作弊或獲得未經(jīng)授權(quán)的軟件復(fù)制,游戲廠家在反逆向上付出了大量的精力,/r/nBauman/r/n等/r/n對(duì)于游戲軟件完整性的保證,由于不同的游戲有不同種類的信息,為了防止作弊,必須保護(hù)這些信息。為了完整性而必須保護(hù)的實(shí)際代碼或數(shù)據(jù)取決于被保護(hù)的特定游戲,找到目標(biāo)游戲的這些敏感代碼或數(shù)據(jù)后,必須將其轉(zhuǎn)移到安全區(qū)內(nèi)。當(dāng)用戶啟動(dòng)應(yīng)用程序時(shí),安全區(qū)將與受信任的服務(wù)器聯(lián)系并執(zhí)行遠(yuǎn)程認(rèn)證。通過(guò)驗(yàn)證的安全區(qū)則認(rèn)為其中的代碼和數(shù)據(jù)沒(méi)有被修改。保證敏感數(shù)據(jù)和代碼完整性的機(jī)制具體如圖6所示。/r/n對(duì)于游戲軟件機(jī)密性的保證,如何處理游戲資產(chǎn)有兩種選擇。第一個(gè)選項(xiàng)是將解密的代碼或數(shù)據(jù)直接保存在安全區(qū)中,這對(duì)于少量關(guān)鍵代碼或數(shù)據(jù)非常適用。如果數(shù)據(jù)是加密的圖像,那么一次性將其全部保存在安全區(qū)中是不可行的。因此,第二個(gè)選項(xiàng)是立即將解密的數(shù)據(jù)返回到主內(nèi)存中的主應(yīng)用程序。在這種情況下,需要被隱藏的敏感數(shù)據(jù)并不是圖像,而是解密密鑰和加載機(jī)制。對(duì)于通常存儲(chǔ)在磁盤(pán)上的大型資產(chǎn),安全區(qū)可以簡(jiǎn)單地密封解密密鑰。這允許通常不需要任何外部連接的單人游戲只需要一個(gè)連接來(lái)驗(yàn)證服務(wù)器并獲取解密密鑰。之后,就可以自動(dòng)操作,而無(wú)須再次與服務(wù)器簽入。保證敏感數(shù)據(jù)和代碼機(jī)密性的機(jī)制程如圖7所示。/r/n客戶端/r/nJavaScript/r/n在/r/nWeb/r/n應(yīng)用程序中無(wú)處不在,用于改善用戶體驗(yàn)和減少服務(wù)器負(fù)載。由于客戶端不受信任,服務(wù)器不能依賴客戶端/r/nJavaScript/r/n代碼和它操作的數(shù)據(jù)的機(jī)密性或完整性,如必須在服務(wù)器端重復(fù)客戶端輸入驗(yàn)證,并且不能卸載機(jī)密業(yè)務(wù)邏輯。所以,/r/nGoltzsche/r/n等/r/nSGX/r/n應(yīng)用于服務(wù)器端和客戶端/r/n當(dāng)/r/nSGX/r/n同時(shí)部署在服務(wù)器端和客戶端時(shí),/r/nSGX/r/n的遠(yuǎn)程認(rèn)證功能可以在同時(shí)具有/r/nSGX/r/n功能的服務(wù)器端和客戶端之間實(shí)現(xiàn)安全通信,馮達(dá)等/r/n在多方計(jì)算領(lǐng)域,/r/nSGX/r/n的出現(xiàn)提供了新的安全思路。/r/nOlga/r/n等/r/nSGX/r/n增強(qiáng)開(kāi)發(fā)語(yǔ)言的安全性/r/n雖然研究人員提出了許多基于/r/nSGX/r/n提高應(yīng)用程序安全性的解決方案,但思路大多是保護(hù)本機(jī)代碼應(yīng)用程序,而腳本語(yǔ)言并不受保護(hù)。為了填補(bǔ)這一空白/r/n,Wang/r/n等/r/n4/r/nSGX/r/n在可信計(jì)算領(lǐng)域應(yīng)用的難點(diǎn)及解決方法/r/n雖然對(duì)/r/nSGX/r/n的研究進(jìn)行了多年,技術(shù)已經(jīng)趨于成熟,甚至已經(jīng)投入工業(yè)界的實(shí)際使用,但現(xiàn)階段/r/nSGX/r/n在可信計(jì)算領(lǐng)域的開(kāi)發(fā)和應(yīng)用并沒(méi)有呈現(xiàn)出與它熱度相匹配的前景,這主要有兩個(gè)原因,一個(gè)是/r/nSGX/r/n本身的開(kāi)發(fā)和應(yīng)用難度限制了研究人員對(duì)它的應(yīng)用,另一個(gè)是/r/nSGX/r/n與其他可信技術(shù)相比在應(yīng)用中有較多問(wèn)題需要解決。/r/n4.1SGX/r/n開(kāi)發(fā)和應(yīng)用難點(diǎn)分析及解決方法/r/nSGX/r/n技術(shù)自推出以來(lái)受到了學(xué)術(shù)界和工業(yè)界的極大關(guān)注,目前在很多領(lǐng)域得到了廣泛的應(yīng)用,/r/nSGX/r/n技術(shù)在研究中暴露出了很多缺陷和問(wèn)題,如各類針對(duì)/r/nSGX/r/n的側(cè)信道攻擊表明/r/nSGX/r/n技術(shù)當(dāng)前還存在很多安全隱患。事實(shí)上,除了安全性問(wèn)題,/r/nSGX/r/n在研究過(guò)程中還暴露出了許多性能瓶頸、開(kāi)發(fā)和部署困難、功能局限等諸多應(yīng)用方面的問(wèn)題。當(dāng)前以/r/nSGX/r/n作為可信/r/n基的系統(tǒng)設(shè)計(jì)及應(yīng)用主要面臨性能、安全性、開(kāi)發(fā)難度和應(yīng)用3個(gè)方向的挑戰(zhàn)。/r/n4.1.1性能/r/nSGX/r/n作為可信基的性能開(kāi)銷,主要是從模式切換、/r/nEnclave/r/n頁(yè)替換和內(nèi)存加密三方面產(chǎn)生的/r/n模式切換。/r/n模式切換是/r/nSGX/r/n最主要的性能開(kāi)銷,但也是/r/nSGX/r/n能夠在安全區(qū)中執(zhí)行代碼的基本保障機(jī)制。系統(tǒng)進(jìn)入或退出安全區(qū)都會(huì)產(chǎn)生模式切換,模式切換開(kāi)銷的主要原因是出于對(duì)安全性的保證,每一次模式切換都要進(jìn)行復(fù)雜的狀態(tài)保存和安全檢查、保存和恢復(fù)/r/nCPU/r/n狀態(tài),以及由刷新/r/nTLB/r/n引起的/r/nTLB/r/n緩存未命中。/r/n當(dāng)/r/nSGX/r/n作為可信計(jì)算基時(shí),對(duì)安全區(qū)內(nèi)數(shù)據(jù)和代碼的每一次訪問(wèn)和執(zhí)行都會(huì)導(dǎo)致模式切換的產(chǎn)生,如果系統(tǒng)被設(shè)計(jì)為需要在安全區(qū)和非安全區(qū)之間進(jìn)行大量的數(shù)據(jù)調(diào)用,那么產(chǎn)生的性能開(kāi)銷相對(duì)會(huì)較高。/r/n目前,降低模式切換開(kāi)銷的技術(shù)主要有:無(wú)切換調(diào)用/r/nEnclave/r/n頁(yè)替換/r/n由于安全區(qū)內(nèi)存空間比較小,/r/nSGX/r/n支持從/r/nEPC/r/n到主內(nèi)存的頁(yè)替換,以滿足不適合/r/nEPC/r/n的安全區(qū),所以當(dāng)程序代碼數(shù)量和規(guī)模增大時(shí),敏感頁(yè)面會(huì)在內(nèi)存中的/r/nEPC/r/n和非/r/nEPC/r/n區(qū)域之間頻繁交換,從而產(chǎn)生了開(kāi)銷巨大的/r/nEnclave/r/n頁(yè)替換開(kāi)銷。內(nèi)存要求超過(guò)/r/nEPC/r/n大小的應(yīng)用程序必須在/r/nEPC/r/n和未受保護(hù)的內(nèi)存之間替換頁(yè)面。出于對(duì)安全性的要求,/r/nEPC/r/n頁(yè)必須在被復(fù)制到外部?jī)?nèi)存之前被加密和完整性保護(hù),工作量較大,代價(jià)高昂。為了防止地址轉(zhuǎn)換攻擊,需要替換協(xié)議中所有/r/nenclave/r/n線程并刷新/r/nTLB/r/n。不僅如此,頁(yè)替換還會(huì)導(dǎo)致/r/nenclave/r/n模式的切換,進(jìn)而產(chǎn)生模式切換開(kāi)銷。/r/n雖然/r/nSGX/r/n的開(kāi)發(fā)原則中始終強(qiáng)調(diào)最小特權(quán)原則,但是當(dāng)/r/nSGX/r/n作為可信計(jì)算基時(shí),并不僅僅起著對(duì)數(shù)據(jù)進(jìn)行安全存儲(chǔ)的作用,還保障著安全區(qū)內(nèi)程序運(yùn)行態(tài)的安全。通過(guò)在安全區(qū)內(nèi)存儲(chǔ)盡量多的數(shù)據(jù)和運(yùn)行的代碼量,來(lái)減少安全區(qū)和非安全區(qū)之間的交互,雖然可以提升性能,但是增加了攻擊面。如何在安全性和性能之間進(jìn)行平衡是基于/r/nSGX/r/n的系統(tǒng)在設(shè)計(jì)中亟待解決的重點(diǎn)、難點(diǎn)。/r/n針對(duì)頁(yè)替換開(kāi)銷的主要技術(shù)是高效的完整性驗(yàn)證結(jié)構(gòu)、減少分頁(yè)開(kāi)銷技術(shù)和安全用戶管理虛擬內(nèi)存技術(shù),未來(lái),這一性能開(kāi)銷限制可能會(huì)從根本上得到改善:雖然目前/r/nSGXvl/r/n版本支持的安全區(qū)最大為128/r/nMB,/r/n應(yīng)用程序?qū)嶋H的使用量一旦超過(guò)93/r/nMB/r/n就會(huì)觸發(fā)頻繁的頁(yè)/r/n替換,增加安全風(fēng)險(xiǎn)和性能開(kāi)銷,但在/r/nSGXv2/r/n(3)內(nèi)存加密/r/nSGX/r/n通過(guò)內(nèi)存加密技術(shù)保護(hù)程序運(yùn)行時(shí)的安全,由于/r/nMEE/r/n必須加密和解密高速緩存線,會(huì)導(dǎo)致加密內(nèi)存訪問(wèn)存在高昂的開(kāi)銷,安全區(qū)代碼也會(huì)由于寫(xiě)入內(nèi)存和高速緩存未命中產(chǎn)生開(kāi)銷,這就是內(nèi)存加密開(kāi)銷。/r/nSGX/r/n作為可信計(jì)算基除了存儲(chǔ)敏感數(shù)據(jù)的功能外,和其他傳統(tǒng)可信計(jì)算技術(shù)相比,最大的優(yōu)勢(shì)就是能夠保證安全區(qū)內(nèi)程序運(yùn)行過(guò)程中的安全,而這一重要功能必須靠?jī)?nèi)存加密技術(shù)來(lái)保障,無(wú)法繞過(guò)內(nèi)存加密產(chǎn)生的性能開(kāi)銷問(wèn)題。/r/nSCONE/r/n基于/r/nSGX/r/n的應(yīng)用目前只能通過(guò)減少對(duì)安全區(qū)的不必要使用和使用節(jié)省空間的數(shù)據(jù)結(jié)構(gòu)或?qū)⑤^小的數(shù)據(jù)塊加載到安全區(qū)中來(lái)緩解開(kāi)銷。安全程序設(shè)計(jì)應(yīng)盡量減少對(duì)安全區(qū)內(nèi)存的使用和訪問(wèn)來(lái)降低內(nèi)存訪問(wèn)開(kāi)銷。如果必須使用安全區(qū)內(nèi)存,則盡量采用連續(xù)訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)避免采用隨機(jī)訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)。/r/n安全性/r/n在安全性方面,/r/nSGX/r/n雖然在原則上可以作為可信執(zhí)行環(huán)境,但是近年來(lái)大量的工作表明,/r/nSGX/r/n自身的機(jī)制導(dǎo)致它的安全區(qū)很容易被各類攻擊攻破,通過(guò)攻擊獲得的敏感數(shù)據(jù)可以幫助攻擊者繞過(guò)/r/nSGX/r/n提供的數(shù)據(jù)機(jī)密性保證。一旦可信計(jì)算機(jī)基的某個(gè)構(gòu)件出現(xiàn)程序錯(cuò)誤或者安全隱患,會(huì)對(duì)整個(gè)系統(tǒng)的安全造成危害,/r/nSGX/r/n的設(shè)計(jì)目的是為安全區(qū)內(nèi)的敏感數(shù)據(jù)提供機(jī)密性和完整性保證,現(xiàn)階段它在實(shí)際應(yīng)用中依然會(huì)面臨諸多的安全漏洞和威脅,這也是/r/nSGX/r/n無(wú)法投入實(shí)際應(yīng)用的重要原因之一。/r/n(1) /r/nSGX/r/n自身安全缺陷/r/n由于/r/nSGX/r/n的設(shè)計(jì)機(jī)制和微架構(gòu)帶來(lái)的安全問(wèn)題,針對(duì)/r/nSGX/r/n本身的安全攻擊主要分為側(cè)信道攻擊和高低電壓攻擊高低頻率攻擊兩類。/r/n基于/r/nSGX/r/n常見(jiàn)的側(cè)信道攻擊有6類,分別是基于頁(yè)表的攻擊、基于/r/nTLB/r/n的攻擊、基于/r/nCache/r/n的攻擊、基于/r/nDRAM/r/n的攻擊、基于/r/nCPU/r/n內(nèi)部結(jié)構(gòu)的攻擊和混合側(cè)信道攻擊,如較為經(jīng)典的/r/nMeltdown/r/n現(xiàn)階段針對(duì)側(cè)信道攻擊的解決方法主要有4種,第一種是在源碼層次修改源碼,主要思路是隱藏控制流和數(shù)據(jù)流、改善加密算法;第二種是在系統(tǒng)層次利用一些系統(tǒng)特性來(lái)防御或檢測(cè)/r/nSGX/r/n側(cè)信道,如隨機(jī)化技術(shù)、檢測(cè)可疑異常和中斷、檢測(cè)時(shí)間異常、對(duì)/r/nCache/r/n隔離;第3種是在應(yīng)用層面引入安全機(jī)制,防范側(cè)信道攻擊(如/r/nOleksii/r/n等/r/n除了側(cè)信道攻擊外,高低電壓攻擊高低頻率攻擊也能通過(guò)恢復(fù)加密密鑰或在以前安全的軟件中引入錯(cuò)誤來(lái)達(dá)到破壞/r/nSGX/r/n安全性的目的?,F(xiàn)代處理器正以更快的速度運(yùn)行,隨之而來(lái)的是熱量和功耗的增加。為了平衡速度和性能,許多芯片制造商允許用戶在需要時(shí)調(diào)整頻率和電壓,但是隨之而來(lái)的安全問(wèn)題是用來(lái)修改頻率和電壓的特權(quán)軟件界面,可能會(huì)被利用來(lái)破壞系統(tǒng)的安全性。例如,/r/nPlundervolt/r/n針對(duì)這一攻擊,/r/nIntel/r/n發(fā)布了相關(guān)微代碼和/r/nBIOS/r/n更新。這些更新為管理員提供了一個(gè)新的/r/nBIOS/r/n選項(xiàng),可以在管理員認(rèn)為/r/nPlundervolt/r/n構(gòu)成真正風(fēng)險(xiǎn)的情況下禁用系統(tǒng)上的電壓和頻率控制界面。/r/n基于/r/nSGX/r/n軟件的安全缺陷/r/n除了/r/nSGX/r/n自身設(shè)計(jì)機(jī)制帶來(lái)的攻擊以外,基于/r/nSGX/r/n的應(yīng)用可能由于設(shè)計(jì)過(guò)程中的忽略而存在安全缺陷,如接口安全和反匯編產(chǎn)生的敏感代碼安全性問(wèn)題。/r/n很多基于/r/nSGX/r/n的應(yīng)用軟件及框架設(shè)計(jì)有眾多缺陷。這些軟件架構(gòu)設(shè)計(jì)上的疏忽使攻擊者無(wú)須權(quán)限,即可繞過(guò)/r/nSGX/r/n安全區(qū)的嚴(yán)密封鎖,獲取存儲(chǔ)在/r/nSGX/r/n安全區(qū)中的核心敏感數(shù)據(jù)。/r/nCoinAttack/r/n針對(duì)這一對(duì)接口安全進(jìn)行攻擊的方式,百度安全實(shí)驗(yàn)室開(kāi)發(fā)了一個(gè)名為/r/nCoinAttack/r/n的檢測(cè)框架,通過(guò)符號(hào)執(zhí)行的方法,可以捕獲各種各樣的漏洞,強(qiáng)調(diào)了基于/r/nSGX/r/n的應(yīng)用不能僅依賴于/r/nSGX/r/n的強(qiáng)隔離保證,還需要對(duì)軟件架構(gòu)細(xì)心設(shè)計(jì),確保健壯安全的接口調(diào)用方式。開(kāi)發(fā)者如果忽視軟件中的接口安全,整個(gè)/r/nSGX/r/n安全區(qū)的安全保障都會(huì)喪失。/r/n雖然英特爾/r/nSGX/r/n提供了一個(gè)安全的區(qū)域,其中的代碼和數(shù)據(jù)對(duì)外界是隱藏的,包括特權(quán)代碼,但在默認(rèn)情況下,初始化之前的安全區(qū)代碼可以反匯編,因此二進(jìn)制代碼中不能嵌入任何秘密。對(duì)于希望保護(hù)代碼機(jī)密的開(kāi)發(fā)人員來(lái)說(shuō),這是一個(gè)問(wèn)題。對(duì)此,/r/nBauman/r/n等/r/n開(kāi)發(fā)和應(yīng)用難度/r/n在開(kāi)發(fā)和應(yīng)用難度方面,/r/nSGX/r/n作為最新的可信計(jì)算技術(shù),雖然在思想和部分機(jī)制上借鑒了傳統(tǒng)的可信計(jì)算技術(shù),但是在開(kāi)發(fā)和應(yīng)用上要求更為煩瑣,較難上手。同時(shí),基于/r/nSGX/r/n技術(shù)開(kāi)發(fā)的軟件在設(shè)計(jì)上要求做到性能和安全性之間的平衡,在不影響用戶體驗(yàn)的前提下保證敏感數(shù)據(jù)都被存儲(chǔ)在安全區(qū)內(nèi),這對(duì)程序員對(duì)程序安全性的劃分能力要求較高。對(duì)于已經(jīng)完成的系統(tǒng),需要對(duì)系統(tǒng)代碼進(jìn)行修改才能在/r/nSGX/r/n上使用,可移植性較差。/r/n1)開(kāi)發(fā)環(huán)境/r/n對(duì)于一些研究人員缺乏/r/nSGX/r/n開(kāi)發(fā)環(huán)境的問(wèn)題,/r/nJain/r/n等/r/n(2) 開(kāi)發(fā)語(yǔ)言/r/n對(duì)于/r/nSGX/r/n開(kāi)發(fā)語(yǔ)言類型有限的問(wèn)題,開(kāi)發(fā)人員開(kāi)發(fā)出了/r/nRustSGXSDK/r/n(3) 開(kāi)發(fā)難度/r/n對(duì)于/r/nSGX/r/n技術(shù)缺少針對(duì)安全區(qū)間交互的適當(dāng)編程支持,并且要求將可信執(zhí)行的確切使用方式硬編碼到應(yīng)用程序中的限制問(wèn)題,/r/nSartakov/r/n等/r/n(4) 可移植性/r/n對(duì)于已經(jīng)編寫(xiě)完成的程序,開(kāi)發(fā)人員推出了/r/nHaven/r/nSGX/r/n與其他可信計(jì)算技術(shù)相比的優(yōu)缺點(diǎn)/r/n除了/r/nSGX/r/n自身在性能、安全性和開(kāi)發(fā)及應(yīng)用方面的問(wèn)題以外,和其他的可信基相比,/r/nSGX/r/n獨(dú)特的機(jī)制既帶來(lái)了優(yōu)勢(shì),也導(dǎo)致了它在開(kāi)發(fā)和應(yīng)用上存在局限性。/r/n(1)TPM/TCM/r/n在開(kāi)發(fā)和應(yīng)用方面/r/n,TPM/r/n是當(dāng)前可信計(jì)算領(lǐng)域應(yīng)用最為常見(jiàn)的可信基,廣泛部署在商用計(jì)算機(jī)上,不需要對(duì)/r/nCPU/r/n進(jìn)行修改,僅依賴于一個(gè)輔助的抗篡改芯片,而/r/nSGX/r/n直接集成在/r/nCPU/r/n內(nèi)部,性能較/r/nTPM/r/n得到了提升。相比于/r/nSGX,TPM/r/n的可信計(jì)算基范圍更大,/r/nTPM/r/n信任計(jì)算機(jī)上的所有軟件,而/r/nSGX/r/n僅信任安全區(qū),可信計(jì)算基的范圍雖然使/r/nTPM/r/n可度量的范圍更大,但也導(dǎo)致認(rèn)證簽名中包含的度量覆蓋了整個(gè)/r/nOS/r/n內(nèi)核和所有內(nèi)核模塊,因此需要隨著軟件更新持續(xù)維護(hù)對(duì)應(yīng)的可接受測(cè)量的哈希表,實(shí)際應(yīng)用較為煩瑣復(fù)雜。/r/n在安全性方面,由于/r/nTPM/r/n晶片沒(méi)有為計(jì)算機(jī)上的軟件提供任何隔離,所以基于/r/nTPM/r/n的系統(tǒng)容易受到物理訪問(wèn)機(jī)器的攻擊者的攻擊/r/n(2)IntelTXT/r/n在開(kāi)發(fā)和應(yīng)用方面,英特爾的可信執(zhí)行技術(shù)/r/n(TXT/r/n)使用了/r/nTPM/r/n的軟件認(rèn)證模型和輔助抗篡改芯片,但將安全容器內(nèi)的軟件減少為一個(gè)虛擬機(jī),由/r/nCPU/r/n的硬件虛擬化特性/r/n(VMX/r/n在安全性方面,/r/nTXT/r/n沒(méi)有實(shí)現(xiàn)/r/nDRAM/r/n加密或/r/nHMAC/r/n,因此容易受到物理/r/nDRAM/r/n攻擊,而且/r/nhypervisor/r/n潛在的軟件漏洞可能威脅到整個(gè)系統(tǒng),運(yùn)行在系統(tǒng)管理模式下的軟件可以繞過(guò)/r/nVMX/r/n使用的限制來(lái)提供隔離。但與/r/nSGX/r/n相比/r/nTXT/r/n攻擊面較少,且/r/nTXT/r/n能夠檢測(cè)/r/nVMM/r/n的運(yùn)行狀況,保證虛擬設(shè)備的正常運(yùn)行,而/r/nSGX/r/n對(duì)于運(yùn)行在安全區(qū)內(nèi)部的軟件并沒(méi)有監(jiān)管能力。/r/n(3) ARMTrustZone/r/n在開(kāi)發(fā)和應(yīng)用方面,與開(kāi)放了/r/nSDK/r/n的/r/nSGX/r/n相比,/r/nTrustZone/r/n需要硬件廠商的簽名驗(yàn)證才能運(yùn)行在安全執(zhí)行環(huán)境,這限制了開(kāi)發(fā)人員基于/r/nTrustZone/r/n進(jìn)行研究和開(kāi)發(fā)。/r/nTrustZone/r/n為程序提供了/r/nTEE/r/n和/r/nREE/r/n兩種隔離的執(zhí)行環(huán)境,只有一個(gè)可信環(huán)境,而/r/nSGX/r/n可以同時(shí)運(yùn)行多個(gè)可信環(huán)境,這限制了/r/nTrustZone/r/n的應(yīng)用面。雖然在開(kāi)發(fā)上有限制,但是/r/nTrustZone/r/n被設(shè)計(jì)為在系統(tǒng)加電后優(yōu)先獲得控制權(quán),并且擁有比主機(jī)更高的訪問(wèn)和控制權(quán)限/r/n在安全性方面,/r/nSGX/r/n與/r/nTrustZone/r/n相比雖然可以多個(gè)安全區(qū)并發(fā)執(zhí)行,且原則上即使某個(gè)安全區(qū)中存在惡意程序,也無(wú)法訪問(wèn)或篡改其他安全區(qū)內(nèi)被保護(hù)的內(nèi)容,使隔離環(huán)境的安全性雖然有所提高,但是依然有缺陷。/r/nTrustZone/r/n具有對(duì)非安全世界進(jìn)行監(jiān)視的系統(tǒng),這些監(jiān)視系統(tǒng)擁有高權(quán)限,可以動(dòng)態(tài)地檢查/r/nAndroid/r/n系統(tǒng)的內(nèi)核本身/r/n(4) AMDSEV/r/n在開(kāi)發(fā)和應(yīng)用方面,/r/nSEV/r/n的最小可信基比/r/nSGX/r/n更大,包含整個(gè)操作系統(tǒng)或者虛擬機(jī),所以在設(shè)計(jì)上/r/nSEV/r/n比/r/nSGX/r/n更適合用來(lái)保護(hù)大規(guī)模的計(jì)算環(huán)境,且/r/nSEV/r/n允許每個(gè)虛擬機(jī)使用自己的密鑰選擇性地加密內(nèi)存,這使/r/nSEV/r/n能夠?yàn)椴豢尚旁骗h(huán)境下的數(shù)據(jù)提供安全保護(hù)/r/n在安全性方面,相比/r/nSGX/r/n通過(guò)內(nèi)存管理單元來(lái)實(shí)現(xiàn)內(nèi)存安全,/r/nSEV/r/n使用了安全內(nèi)存加密/r/n(SME/r/n)來(lái)加密/r/nVM/r/n內(nèi)存,防止物理攻擊和特權(quán)軟件攻擊。但/r/nSEV/r/n較大的信任范圍導(dǎo)致了較大的攻擊面,當(dāng)/r/nSEV/r/n的應(yīng)用環(huán)境為不可信的虛擬機(jī)管理程序時(shí),惡意的虛擬機(jī)監(jiān)控器可以通過(guò)修改相關(guān)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)繞過(guò)甚至直接關(guān)閉/r/nSEV/r/n的保護(hù)機(jī)制。雖然/r/nSME/r/n對(duì)內(nèi)存進(jìn)行了加密保護(hù),但/r/nSEV/r/n缺乏對(duì)主存儲(chǔ)器逐頁(yè)加密的完整性保護(hù)機(jī)制,由此產(chǎn)生的/r/nSEVered/r/n攻擊使攻擊者能夠訪問(wèn)經(jīng)由/r/nSEV/r/n加密之后虛擬機(jī)上的明文內(nèi)存數(shù)據(jù)。并且,/r/nSEV/r/n提供的保護(hù)不足以覆蓋虛擬機(jī)的整個(gè)生命周期,在設(shè)計(jì)上同樣沒(méi)有考慮到側(cè)信道攻擊,存在較大的安全隱患。/r/n綜上所述,雖然/r/nSGX/r/n與其他可信計(jì)算技術(shù)相比在設(shè)計(jì)機(jī)制上更加靈活,且便于開(kāi)發(fā)者進(jìn)行應(yīng)用開(kāi)發(fā),但是可信根范圍的局限性和亟待解決的安全性問(wèn)題導(dǎo)致/r/nSGX/r/n與其他可信計(jì)算技術(shù)相比沒(méi)有突出優(yōu)勢(shì),在很多場(chǎng)景下其他的可信計(jì)算技術(shù)更符合場(chǎng)景要求,以至于/r/nSGX/r/n在可信計(jì)算領(lǐng)域并沒(méi)有呈現(xiàn)出與其熱度相匹配的應(yīng)用量。/r/n5/r/nSGX/r/n在可信計(jì)算領(lǐng)域的發(fā)展方向/r/n自2013年/r/nIntel/r/n推出/r/nSGX/r/n技術(shù)以來(lái),/r/nSGX/r/n技術(shù)在學(xué)術(shù)界和工業(yè)界引發(fā)了廣泛的研究浪潮,/r/n并被陸續(xù)應(yīng)用到了很多領(lǐng)域。目前,雖然/r/nSGX/r/n作為可信計(jì)算基,在以云計(jì)算為代表的各領(lǐng)域內(nèi)開(kāi)發(fā)和應(yīng)用發(fā)展迅速,但是在可信計(jì)算領(lǐng)域的研究并沒(méi)有達(dá)到符合預(yù)期的水平,尚缺乏安全、有效、徹底的應(yīng)用方案?;谝陨涎芯窟M(jìn)展,本文提出了/r/nSGX/r/n在可信計(jì)算研究領(lǐng)域的進(jìn)一步應(yīng)用需求和研究方向。/r/nSGX/r/n安全性/r/nSGX/r/n本身的安全漏洞是/r/nSGX/r/n在可信計(jì)算領(lǐng)域發(fā)展中面臨的最根本問(wèn)題,如果無(wú)法解決安全問(wèn)題,/r/nSGX/r/n就不能作為可信計(jì)算基為上層架構(gòu)提供安全保證。如何有效解決/r/nSGX/r/n應(yīng)用面臨的側(cè)信道攻擊、內(nèi)存攻擊等安全威脅,增強(qiáng)/r/nSGX/r/n應(yīng)用的安全性依然是該技術(shù)應(yīng)用研究的重要研究方向。由于/r/nSGX/r/n在安全區(qū)和非安全區(qū)之間共享資源而產(chǎn)生了攻擊面的設(shè)計(jì)機(jī)制,當(dāng)前的/r/nSGX/r/n自身無(wú)法抵御側(cè)信道攻擊?,F(xiàn)階段,在軟件層面打補(bǔ)丁以及升級(jí)微碼等解決方案無(wú)法從根本上解決/r/nSGX/r/n應(yīng)對(duì)側(cè)信道攻擊的問(wèn)題,而通過(guò)引入安全機(jī)制來(lái)防范側(cè)信道攻擊又會(huì)引發(fā)額外的性能開(kāi)銷,故可以通過(guò)將/r/nSGX/r/n與外界的輸入輸出進(jìn)行加密、創(chuàng)建檢查點(diǎn)等方式提高/r/nSGX/r/n應(yīng)對(duì)攻擊的能力。/r/n除了要面對(duì)外部諸如電源攻擊之類的威脅,/r/nSGX/r/n還需要面對(duì)安全區(qū)內(nèi)部惡意程序的威脅。由于/r/nSGX/r/n無(wú)法對(duì)運(yùn)行在安全區(qū)中的軟件進(jìn)行監(jiān)管,惡意軟件可能會(huì)在安全區(qū)內(nèi)執(zhí)行其惡意代碼,來(lái)達(dá)到獲取敏感數(shù)據(jù)甚至安全區(qū)密鑰的目的,能夠有效地繞過(guò)/r/nSGX/r/n提供的整體安全性措施。針對(duì)這一問(wèn)題,未來(lái)的發(fā)展可以參考/r/nTrustZone/r/n的監(jiān)管模式,引入監(jiān)控的思想,如當(dāng)監(jiān)控器檢測(cè)到可能導(dǎo)致攻擊行為的異常指令時(shí),強(qiáng)制開(kāi)啟/r/nAEX,/r/n中止安全區(qū)的運(yùn)行,思路如圖9所示。/r/nSGX/r/n性能提升/r/n雖然隨著/r/nSGXv2/r/n對(duì)性能的提升以及廣大研究人員不斷開(kāi)發(fā)出降低性能損耗的技術(shù),基于/r/nSGX/r/n開(kāi)發(fā)的應(yīng)用在性能上的消耗減少了很多,但對(duì)于需要進(jìn)行安全區(qū)和非安全區(qū)多次交互的程序,為了保證安全性,需要對(duì)頁(yè)面進(jìn)行完整性和機(jī)密性保障,導(dǎo)致/r/nSGX/r/n的模式切換消耗依然很高。/r/nSGX/r/n現(xiàn)階段的密鑰管理同樣面臨著性能問(wèn)題,即較為復(fù)雜的場(chǎng)景中實(shí)用性較低,未來(lái)需要更高效的解決方案。當(dāng)/r/nSGX/r/n作為可信計(jì)算基在對(duì)系統(tǒng)或軟件進(jìn)行完整性校驗(yàn)、對(duì)敏感數(shù)據(jù)進(jìn)行存取和安全區(qū)內(nèi)代碼運(yùn)行時(shí)都會(huì)產(chǎn)生大量的性能消耗,如果這些性能消耗問(wèn)題無(wú)法得到優(yōu)化,用戶體驗(yàn)會(huì)受到較為明顯的影響??梢酝ㄟ^(guò)優(yōu)化加密內(nèi)存頁(yè)管理或改良頁(yè)面完整性校驗(yàn)方法等手段減少性能消耗。/r/nSGX/r/n信任問(wèn)題/r/nSGX/r/n技術(shù)自誕生以來(lái),由于自身設(shè)計(jì)和對(duì)/r/nIntelME/r/n—些代碼模塊的依賴以及處理器架構(gòu)產(chǎn)生的漏洞對(duì)安全性的影響,讓用戶無(wú)法完全信任/r/nSGX/r/n技術(shù)。并且,/r/nSGX/r/n遠(yuǎn)程認(rèn)證功能的實(shí)現(xiàn)需要以信任/r/nIntel/r/n為前提,依賴于/r/nIntelIAS/r/n進(jìn)行遠(yuǎn)程認(rèn)證,但用戶并無(wú)法對(duì)/r/nISA/r/n進(jìn)行/r/n監(jiān)管,這使用戶對(duì)/r/nSGX/r/n的可信性和安全區(qū)內(nèi)數(shù)據(jù)的安全性會(huì)產(chǎn)生懷疑。雖然在后續(xù)工作中/r/nintel/r/n通過(guò)引入新特性/r/nFLC(flexiblelaunchcontrol/r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論