什么是可信執(zhí)行環(huán)境?安全飛地如何工作?

      隨著組織越來(lái)越多地采用多云、混合云和邊緣計(jì)算,他們的應(yīng)用程序在廣泛的環(huán)境中跟蹤、存儲(chǔ)和分析敏感的用戶數(shù)據(jù)。為了確保使用應(yīng)用程序的個(gè)人的合規(guī)性和隱私,數(shù)據(jù)需要在其整個(gè)生命周期內(nèi)得到保護(hù)。

      我們對(duì)文件系統(tǒng)和存儲(chǔ)驅(qū)動(dòng)器進(jìn)行加密,并使用SSH 協(xié)議來(lái)保持靜止數(shù)據(jù)和傳輸中的數(shù)據(jù)即使被盜也能保持安全,從而在沒(méi)有加密密鑰的情況下使其無(wú)用。但是,使用中的數(shù)據(jù)通常是未加密的,容易受到攻擊和利用。為了在運(yùn)行時(shí)保護(hù)應(yīng)用程序和數(shù)據(jù),開(kāi)發(fā)人員越來(lái)越多地轉(zhuǎn)向可信執(zhí)行環(huán)境,通常被稱為“安全飛地”。

      什么是可信執(zhí)行環(huán)境?安全飛地如何工作?-南華中天

      什么是可信執(zhí)行環(huán)境?

      可信執(zhí)行環(huán)境 (TEE) 是內(nèi)存中 CPU 加密的隔離私有飛地,用于在硬件級(jí)別保護(hù)正在使用的數(shù)據(jù)。雖然敏感數(shù)據(jù)位于 enclave 內(nèi),但未經(jīng)授權(quán)的實(shí)體 無(wú)法將其移除、修改或添加更多數(shù)據(jù)。飛地的內(nèi)容對(duì)外部各方來(lái)說(shuō)是不可見(jiàn)的和不可訪問(wèn)的,受到保護(hù)以免受外部和內(nèi)部威脅。

      因此,TEE 可確保以下內(nèi)容:

      • 數(shù)據(jù)的完整性
      • 代碼完整性
      • 數(shù)據(jù)保密

      根據(jù)供應(yīng)商和底層技術(shù),TEE 可以啟用其他功能,例如:

      • 代碼機(jī)密性——保護(hù)被認(rèn)為是知識(shí)產(chǎn)權(quán)的算法。
      • Authenticated launch——僅用于啟動(dòng)已驗(yàn)證進(jìn)程的授權(quán)或身份驗(yàn)證強(qiáng)制執(zhí)行。
      • 可編程性——從制造商或其他安全來(lái)源訪問(wèn) TEE 編程代碼。
      • 證明——測(cè)量起源和飛地的當(dāng)前狀態(tài)以防篡改。
      • 可恢復(fù)性——回滾到以前的安全狀態(tài),以防 TEE 受到威脅。

      這些功能使開(kāi)發(fā)人員能夠完全控制應(yīng)用程序的安全性,即使在操作系統(tǒng)、BIOS 和應(yīng)用程序本身受到威脅的情況下也能保護(hù)敏感數(shù)據(jù)和代碼。

      安全飛地如何工作?

      借助英特爾? SGX,應(yīng)用程序數(shù)據(jù)分為可信和不可信部分。代碼的受信任部分用于在受保護(hù)的飛地內(nèi)運(yùn)行應(yīng)用程序。CPU 拒絕所有其他對(duì) enclave 的訪問(wèn),無(wú)論請(qǐng)求它的實(shí)體的權(quán)限如何。一旦處理完畢,可信數(shù)據(jù)將保存在 TEE 內(nèi),而提供給 enclave 外應(yīng)用程序的信息將再次加密。

      Enclave 是通過(guò)硬件命令創(chuàng)建和配置的,這些命令支持內(nèi)存頁(yè)面的創(chuàng)建和添加,以及 enclave 初始化、刪除或測(cè)量。平臺(tái)的固件使用其配置設(shè)置來(lái)設(shè)置 TEE 區(qū)域。啟用擴(kuò)展后,CPU 會(huì)保留一部分 DRAM 作為處理器保留內(nèi)存 (PRM)。PRM 大小可以通過(guò)固件工具指定。

      然后,CPU 通過(guò)設(shè)置一對(duì)特定于模型的寄存器 (MSR) 來(lái)分配和配置 PRM。接下來(lái),在 PRM 中創(chuàng)建 Enclave Page Caches (EPC),其中包含帶有基地址、enclave 大小和數(shù)據(jù)安全信息的元數(shù)據(jù)。最后,CPU 創(chuàng)建 enclave 初始狀態(tài)的加密散列并記錄隨后的其他狀態(tài)。此散列稍后用于通過(guò)加密密鑰和硬件信任根進(jìn)行證明。一旦初始化,飛地就可以托管用戶應(yīng)用程序。

      什么是可信執(zhí)行環(huán)境?安全飛地如何工作?-南華中天

      可信執(zhí)行環(huán)境有多安全?

      為了最好地解釋 TEE 的安全性,我們首先需要解決 CPU特權(quán)環(huán)。加密密鑰傳統(tǒng)上存儲(chǔ)在應(yīng)用程序中,在環(huán) 3 級(jí)別。一旦受到損害,這種模型就會(huì)危及應(yīng)用程序中受保護(hù)的機(jī)密。在現(xiàn)代架構(gòu)中,特權(quán)環(huán)超越了內(nèi)核和管理程序,擴(kuò)展到系統(tǒng)管理模式 (SMM) 和管理引擎 (ME)。這允許 CPU 保護(hù) TEE 使用的內(nèi)存,將攻擊面減少到硬件的最低層,并拒絕訪問(wèn)除最高級(jí)別權(quán)限之外的所有權(quán)限。TEE 的功能和安全性的另一個(gè)關(guān)鍵是證明。通過(guò)證明,在共享任何數(shù)據(jù)之前,對(duì)整個(gè)平臺(tái)和飛地進(jìn)行測(cè)量和驗(yàn)證。

      例如,一個(gè) enclave 可以從它自己或同一平臺(tái)上的另一個(gè) enclave 請(qǐng)求本地報(bào)告,并使用該報(bào)告進(jìn)行數(shù)據(jù)檢查和驗(yàn)證。類似地,遠(yuǎn)程驗(yàn)證者可以在從 enclave 請(qǐng)求任何敏感數(shù)據(jù)之前請(qǐng)求證明報(bào)告。一旦建立信任,他們就可以通過(guò)外部各方不可見(jiàn)的安全通道共享會(huì)話密鑰和數(shù)據(jù)。

      由于未加密的秘密永遠(yuǎn)不會(huì)離開(kāi) TEE,因此安全飛地可以保護(hù)數(shù)據(jù)免受:

      • 主機(jī)上的其他應(yīng)用程序
      • 主機(jī)操作系統(tǒng)或管理程序
      • 系統(tǒng)管理員
      • 服務(wù)供應(yīng)商

      即使是基礎(chǔ)設(shè)施所有者和其他對(duì)硬件有物理訪問(wèn)權(quán)限的實(shí)體也無(wú)法訪問(wèn)數(shù)據(jù)。

      機(jī)密計(jì)算中的安全飛地

      為了實(shí)現(xiàn)跨不同云環(huán)境的私有工作負(fù)載的安全和標(biāo)準(zhǔn)化處理,Linux 基金會(huì)于 2019 年成立了一個(gè)名為機(jī)密計(jì)算聯(lián)盟 (CCC)的社區(qū)。自成立以來(lái),CCC 成員一直致力于加速云計(jì)算的采用并實(shí)現(xiàn)開(kāi)放式協(xié)作。由于它們提供了高水平的數(shù)據(jù)保護(hù),基于硬件的安全飛地是該計(jì)劃的核心。通過(guò) TEE 支持的機(jī)密計(jì)算,組織可以在使用其應(yīng)用程序時(shí)保護(hù)從單個(gè)加密密鑰到整個(gè)工作負(fù)載的所有內(nèi)容。

      為什么要采用機(jī)密計(jì)算?

      今天,秘密遠(yuǎn)遠(yuǎn)超出了密碼,包括高度機(jī)密和不可替代的信息,例如醫(yī)療記錄或生物特征數(shù)據(jù)。機(jī)密計(jì)算通過(guò)保護(hù)這些數(shù)據(jù)并防止財(cái)務(wù)損失或聲譽(yù)損害為企業(yè)提供競(jìng)爭(zhēng)優(yōu)勢(shì)。但是,這種不斷發(fā)展的技術(shù)還有其他用例。

      什么是可信執(zhí)行環(huán)境?安全飛地如何工作?-南華中天

      多方計(jì)算

      機(jī)密計(jì)算使組織能夠處理來(lái)自多個(gè)來(lái)源的數(shù)據(jù),而無(wú)需將其底層代碼、知識(shí)產(chǎn)權(quán)或私人客戶信息暴露給合作伙伴。無(wú)論競(jìng)爭(zhēng)與否,政府組織、醫(yī)療保健或研究機(jī)構(gòu)都可以利用此功能進(jìn)行協(xié)作和分享見(jiàn)解,以實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)的目的。

      金融保險(xiǎn)

      利用機(jī)密計(jì)算,金融機(jī)構(gòu)可以防止洗錢(qián)等欺詐活動(dòng)。一家銀行可以與其網(wǎng)絡(luò)內(nèi)外的另一家銀行共享一個(gè)可疑賬戶,以對(duì)其進(jìn)行審計(jì)并最大限度地減少誤報(bào)的機(jī)會(huì)。保險(xiǎn)公司可以使用類似的方法來(lái)防止欺詐。他們可以在彼此之間分享一項(xiàng)可疑的聲明以進(jìn)行模式識(shí)別。通過(guò)將敏感數(shù)據(jù)存儲(chǔ)在飛地中并在不同來(lái)源之間共享數(shù)據(jù)記錄,可以在不泄露任何機(jī)密信息的情況下獲得結(jié)果。

      結(jié)論

      隨著機(jī)密計(jì)算的發(fā)展,不斷開(kāi)發(fā)用于增強(qiáng)安全性的企業(yè)工具。這刺激了云計(jì)算的采用、增長(zhǎng)和安全性,釋放了它的全部潛力。通過(guò)在執(zhí)行期間對(duì)敏感數(shù)據(jù)和代碼提供前所未有的保護(hù),可信執(zhí)行環(huán)境使組織能夠加強(qiáng)其安全態(tài)勢(shì)并利用當(dāng)今面向未來(lái)的技術(shù)。