Inclavare Containers:云原生机密计算的未来
簡(jiǎn)介:本文為你詳細(xì)的梳理一次 Inclavare Containers 項(xiàng)目的發(fā)展脈絡(luò),解讀它的核心思想和創(chuàng)新技術(shù)。
作為業(yè)界首個(gè)面向機(jī)密計(jì)算場(chǎng)景的開源容器運(yùn)行時(shí),Inclavare Containers 項(xiàng)目于 2020 年 5 月開源,短短一年多時(shí)間內(nèi)發(fā)展勢(shì)頭非常迅猛,吸引了眾多領(lǐng)域?qū)<液凸こ處煹年P(guān)注與貢獻(xiàn)。2021 年 9 月 15 日,云原生計(jì)算基金會(huì)(CNCF)宣布通過全球 TOC 投票接納 Inclavare Containers 成為 CNCF 官方沙箱項(xiàng)目,成為機(jī)密計(jì)算技術(shù)在云原生領(lǐng)域第一個(gè)進(jìn)入 CNCF 的項(xiàng)目。
不過,如果你對(duì)機(jī)密計(jì)算領(lǐng)域不太關(guān)注,可能對(duì) Inclavare Containers 還沒有做過太深入的了解。別著急,本文為你詳細(xì)的梳理一次 Inclavare Containers 項(xiàng)目的發(fā)展脈絡(luò),解讀它的核心思想和創(chuàng)新技術(shù)。
首先,什么是 Inclavare Containers?
一言以蔽之,Inclavare Containers 是業(yè)界首個(gè)面向機(jī)密計(jì)算場(chǎng)景的開源容器運(yùn)行時(shí)。可是,什么是機(jī)密計(jì)算呢?Inclavare Containers 跟機(jī)密計(jì)算又是什么關(guān)系?它能幫助我們解決什么問題?
數(shù)據(jù)安全與機(jī)密計(jì)算
數(shù)據(jù)在整個(gè)生命周期有三種狀態(tài):At-Rest(靜態(tài))、In-Transit(傳輸中)和 In-Use(使用中)。
- At-Rest 狀態(tài)下,一般會(huì)把數(shù)據(jù)存放在硬盤、閃存或其他的存儲(chǔ)設(shè)備中。保護(hù) At-Rest 狀態(tài)的數(shù)據(jù)有很多方法,比如對(duì)文件加密后再存放或者對(duì)存儲(chǔ)設(shè)備加密。
- In-Transit 是指通過公網(wǎng)或私網(wǎng)把數(shù)據(jù)從一個(gè)地方傳輸?shù)狡渌胤?#xff0c;用戶可以在傳輸之前對(duì)文件加密或者采用安全的傳輸協(xié)議保證數(shù)據(jù)在傳輸中的安全,比如HTTPS、SSL、TLS、FTPS 等。
- In-Use 是指正在使用的數(shù)據(jù)。即便數(shù)據(jù)在傳輸過程中是被加密的,但只有把數(shù)據(jù)解密后才能進(jìn)行計(jì)算和使用。也就意味著,如果數(shù)據(jù)在使用時(shí)沒有被保護(hù)的話,仍然有數(shù)據(jù)泄露和被篡改的風(fēng)險(xiǎn)。
在這個(gè)世界上,我們不斷地存儲(chǔ)、使用和共享各種敏感數(shù)據(jù):從信用卡數(shù)據(jù)到病歷,從防火墻配置到地理位置數(shù)據(jù)。保護(hù)處于所有狀態(tài)中的敏感數(shù)據(jù)比以往任何時(shí)候都更為重要。如今被廣泛使用的加密技術(shù)可以用來(lái)提供數(shù)據(jù)機(jī)密性(防止未經(jīng)授權(quán)的訪問)和數(shù)據(jù)完整性(防止或檢測(cè)未經(jīng)授權(quán)的修改),但目前這些技術(shù)主要被用于保護(hù)傳輸中和靜止?fàn)顟B(tài)的數(shù)據(jù),目前對(duì)數(shù)據(jù)的第三個(gè)狀態(tài)“使用中”提供安全防護(hù)的技術(shù)仍舊屬于新的前沿領(lǐng)域。
機(jī)密計(jì)算指使用基于硬件的可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)對(duì)使用中的數(shù)據(jù)提供保護(hù)。 通過使用機(jī)密計(jì)算,我們現(xiàn)在能夠針對(duì)“使用中”的數(shù)據(jù)提供保護(hù)。
機(jī)密計(jì)算的核心功能有:
- 保護(hù) In-Use 數(shù)據(jù)的機(jī)密性。未經(jīng)授權(quán)的實(shí)體(主機(jī)上的應(yīng)用程序、主機(jī)操作系統(tǒng)和Hypervisor、系統(tǒng)管理員或?qū)τ布哂形锢碓L問權(quán)限的任何其他人。)無(wú)法查看在TEE中使用的數(shù)據(jù),內(nèi)存中的數(shù)據(jù)是被加密的,即便被攻擊者竊取到內(nèi)存數(shù)據(jù)也不會(huì)泄露數(shù)據(jù)。
- 保護(hù) In-Use 數(shù)據(jù)的完整性。防止未經(jīng)授權(quán)的實(shí)體篡改正在處理中的數(shù)據(jù),度量值保證了數(shù)據(jù)和代碼的完整性,使用中有任何數(shù)據(jù)或代碼的改動(dòng)都會(huì)引起度量值的變化。
- 可證明性。通常 TEE 可以提供其起源和當(dāng)前狀態(tài)的證據(jù)或度量值,以便讓另一方進(jìn)行驗(yàn)證,并決定是否信任 TEE 中運(yùn)行的代碼。最重要的是,此類證據(jù)是由硬件簽名,并且制造商能夠提供證明,因此驗(yàn)證證據(jù)的一方就可以在一定程度上保證證據(jù)是可靠的,而不是由惡意軟件或其他未經(jīng)授權(quán)的實(shí)體生成的。
機(jī)密計(jì)算的現(xiàn)狀與困境
業(yè)界內(nèi)的諸多廠商就已經(jīng)開始關(guān)注并投入到機(jī)密計(jì)算中。各大芯片廠家和云服務(wù)提供商(Cloud Service Provider,簡(jiǎn)稱 CSP)都在機(jī)密計(jì)算領(lǐng)域投入研發(fā)資源,并組建了“機(jī)密計(jì)算聯(lián)盟”。該聯(lián)盟專門針對(duì)云服務(wù)及硬件生態(tài),致力于保護(hù)計(jì)算時(shí)的數(shù)據(jù)安全。
目前支持TEE的硬件平臺(tái)主要有 3 個(gè):Intel? SGX、ARM TrustZone 和 AMD SEV,他們有不同的應(yīng)用場(chǎng)景和實(shí)現(xiàn)方式。
1、ARM TrustZone 把硬件資源分為安全世界和非安全世界兩部分,所有需要保密的操作在安全世界執(zhí)行,其余操作在非安全世界執(zhí)行,安全世界和非安全世界通過一個(gè)名為 Monitor Mode 的模式進(jìn)行轉(zhuǎn)換。典型的應(yīng)用場(chǎng)景有移動(dòng)支付、數(shù)字錢包等。
2、AMD 利用 SEV(AMD Secure Encrypted Virtualizationn),SME(AMD Secure Memory Encryption)和SEV-ES(Secure Encrypted Virtualization-Encrypted State)等技術(shù)實(shí)現(xiàn)虛擬機(jī)的 Guest 內(nèi)存加密和安全隔離。
3、Intel? SGX 是 Intel 提供的一組指令,用于提高應(yīng)用的代碼和數(shù)據(jù)的安全性。Intel? SGX 程序由不可信代碼和可信 Enclave 組成,敏感的代碼和數(shù)據(jù)放入到 Enclave 中。Intel? SGX 指令在一個(gè)特定的加密內(nèi)存區(qū)域(EPC)中創(chuàng)建和執(zhí)行 Enclave,該區(qū)域由開發(fā)者定義受限的入口和出口函數(shù),有效防止數(shù)據(jù)泄露。
目前機(jī)密計(jì)算目前正處于百花齊發(fā)和百家爭(zhēng)鳴的階段,市場(chǎng)和商業(yè)化潛力非常巨大。但機(jī)密計(jì)算在云原生場(chǎng)景中還有一些不足:
1、目前提供的技術(shù)的使用和開發(fā)門檻高。以開發(fā) Intel? SGX 應(yīng)用用例,用戶需要學(xué)習(xí) Intel? SGX 開發(fā)技能并對(duì)業(yè)務(wù)進(jìn)行改造。相比傳統(tǒng)開發(fā)方式,其使用和開發(fā)門檻很高,令很多開發(fā)者望而生畏。2、機(jī)密計(jì)算容器化和對(duì)接 Kubernetes 的成本和復(fù)雜度高。越來(lái)越多的用戶開始擁抱云原生,即便用戶掌握了機(jī)密計(jì)算的開發(fā)技能,讓機(jī)密計(jì)算應(yīng)用跑在容器里或者跑在 Kubernetes 里還要克服很多問題。比如如何在容器內(nèi)加載 SGX 驅(qū)動(dòng),如何為容器合理分配 EPC 內(nèi)存等。
3、服務(wù)提供商提供的技術(shù)方案相對(duì)單一。現(xiàn)在很多服務(wù)提供商都提供了機(jī)密計(jì)算的技術(shù)方案,但方案總體來(lái)說比較單一,并不能完全滿足用戶上云的需求。 比如 Google 的 Asylo 和 Azure 的 OpenEnclave,他們是在 Intel? SGX SDK 的基礎(chǔ)上做了封裝,以降低用戶使用機(jī)密計(jì)算技術(shù)的成本。但這仍然需要用戶掌握 Intel? SGX 的開發(fā)技能,對(duì)用戶而言仍然是有學(xué)習(xí)門檻的。 再比如 Occlum、GraphaneSGX 等 LibOS 技術(shù),他們的目的是讓用戶在不改動(dòng)代碼或做改動(dòng)很少的代碼就能讓應(yīng)用運(yùn)行在 Enclave中。對(duì)用戶而言不必再去學(xué)習(xí)復(fù)雜的機(jī)密計(jì)算的開發(fā)技術(shù),但這只是解決了用戶開發(fā)的問題,但仍然沒有解決在容器中運(yùn)行機(jī)密計(jì)算應(yīng)用的問題。
總之,目前已有的機(jī)密計(jì)算技術(shù)方案存在以上困境,不能夠完全滿足用戶不同場(chǎng)景的安全需求。
為了解決以上問題,Inclavare Containers 提供了首個(gè)面向機(jī)密計(jì)算場(chǎng)景的開源容器運(yùn)行時(shí),把機(jī)密計(jì)算技術(shù)和容器技術(shù)完美地結(jié)合在一起,其價(jià)值可概括為三點(diǎn):
- 抹平機(jī)密計(jì)算的高使用門檻,為用戶提供與普通容器一致的使用體感。
- 基于處理器提供的多種硬件安全技術(shù),提供對(duì)多種 Enclave 形態(tài)的支持,為用戶在安全和成本之間提供更多的選擇和靈活性。
- 加速基于零信任模型的機(jī)密計(jì)算云基礎(chǔ)設(shè)施的構(gòu)建。
Inclavare Containers:云原生機(jī)密計(jì)算的未來(lái)
Inclavare Containers 支持機(jī)密應(yīng)用基于硬件的 TEE 被透明地容器化。帶來(lái)了以下的好處:
- 輕松將機(jī)密應(yīng)用帶入云原生。
- 在基于硬件的 TEE 中運(yùn)行修改/未修改的應(yīng)用程序(取決于 Enclave Runtime)。
- 為應(yīng)用的數(shù)據(jù)和代碼提供機(jī)密性、完整性和可證明性。
如下圖所示,Inclavare Containers 中包含多個(gè)組件,這些組件可以利用基于硬件支持的 Enclave 技術(shù)使可信應(yīng)用運(yùn)行在容器中。包含的組件有 rune、shim-rune、Enclave Runtime等。
- rune:rune 是一個(gè)命令行工具,用于根據(jù) OCI 規(guī)范在容器中生成和運(yùn)行 Enclave。rune 是在 runc 代碼基礎(chǔ)上開發(fā)的,既可以運(yùn)行普通 runc 容器也可以運(yùn)行 Enclave 容器;rune已經(jīng)寫入 OCI 運(yùn)行時(shí)實(shí)現(xiàn)列表:
https://github.com/opencontainers/runtimespec/blob/master/implementations.md。
- shim-rune:為容器運(yùn)行時(shí) rune 提供的 shim,主要負(fù)責(zé)管理容器的生命周期、把普通鏡像轉(zhuǎn)換成 TEE 鏡像;管理容器的生命周期,與 rune 配合完成容器的創(chuàng)建、啟動(dòng)、停止、刪除等操作。
- Enclave Runtime:負(fù)責(zé)在 Enclave 內(nèi)加載和運(yùn)行受信任和受保護(hù)的應(yīng)用程序。rune 和 Enclave Runtime 之間的接口是 Enclave Runtime PAL API,它允許通過定義良好的函數(shù)接口來(lái)調(diào)用 Enclave Runtime。機(jī)密計(jì)算應(yīng)用通過這個(gè)接口與云原生生態(tài)系統(tǒng)進(jìn)行交互。
一類典型的 Enclave Runtime 實(shí)現(xiàn)基于庫(kù)操作系統(tǒng)。目前,推薦的與 rune 交互的 Enclave Runtime 是 Occlum,這是一種內(nèi)存安全、多進(jìn)程 Libos。另一類典型的 Enclave Runtime是帶有 Intel? SGX WebAssembly Micro Runtime (WAMR),這是一個(gè)占用空間很小的獨(dú)立 WebAssembly (WASM) 運(yùn)行時(shí),包括一個(gè) VM 核心、一個(gè)應(yīng)用程序框架和一個(gè) WASM 應(yīng)用程序的動(dòng)態(tài)管理。
此外,您可以使用您喜歡的任何編程語(yǔ)言和 SDK(例如英特爾 SGX SDK)編寫自己的Enclave Runtime,只要它實(shí)現(xiàn)了 Enclave Runtime PAL API。
Inclavare Contianers主要有以下特點(diǎn):
1、將 Intel? SGX 技術(shù)與成熟的容器生態(tài)結(jié)合,將用戶的敏感應(yīng)用以 Enclave 容器的形式部署和運(yùn)行;Inclavare Contianers 的目標(biāo)是希望能夠無(wú)縫運(yùn)行用戶制作的普通容器鏡像,這將允許用戶在制作鏡像的過程中,無(wú)需了解機(jī)密技術(shù)所帶來(lái)的復(fù)雜性,并保持與普通容器相同的使用體感。
2、Intel? SGX 技術(shù)提供的保護(hù)粒度是應(yīng)用而不是系統(tǒng),在提供很高的安全防護(hù)手段的同時(shí),也帶來(lái)了一些編程約束,比如在 SGX enclave 中無(wú)法執(zhí)行 syscall 指令;因此我們引入了 LibOS 技術(shù),用于改善上述的軟件兼容性問題,避免開發(fā)者在向 Intel? SGX Enclave 移植軟件的過程中,去做復(fù)雜的軟件適配工作。然后,雖然各個(gè) LibOS 都在努力提升對(duì)系統(tǒng)調(diào)用的支持?jǐn)?shù)量,但這終究難以企及原生 Linux 系統(tǒng)的兼容性,并且即使真的達(dá)成了這個(gè)目標(biāo),攻擊面過大的缺點(diǎn)又會(huì)暴露出來(lái)。因此,Inclavare Containers 通過支持 Java 等語(yǔ)言Runtime 的方式,來(lái)補(bǔ)全和提升 Enclave 容器的泛用性,而不是將 Enclave 容器的泛用性綁定在“提升對(duì)系統(tǒng)調(diào)用的支持?jǐn)?shù)量” 這一單一的兼容性維度上;此外,提供對(duì)語(yǔ)言 Runtime 的支持,也能將像 Java 這樣繁榮的語(yǔ)言生態(tài)引入到機(jī)密計(jì)算的場(chǎng)景中,以豐富機(jī)密計(jì)算應(yīng)用的種類和數(shù)量。
3、通過定義通用的 Enclave Runtime PAL API 來(lái)接入更多類型的 Enclave Runtime,比如 LibOS 就是一種 Enclave Runtime 形態(tài);設(shè)計(jì)這層 API 的目標(biāo)是為了繁榮 Enclave Runtime 生態(tài),允許更多的 Enclave Runtime 通過對(duì)接 Inclavare Containers 上到云原生場(chǎng)景中,同時(shí)給用戶提供更多的技術(shù)選擇。
靈活的機(jī)密容器部署方式
Docker 集群
對(duì)于普通用戶來(lái)說,如何運(yùn)行一個(gè)機(jī)密容器是一個(gè)非常困難的事情,您需要掌握機(jī)密計(jì)算領(lǐng)域的專業(yè)知識(shí),并按照 SGX 應(yīng)用開發(fā)規(guī)范開發(fā)和構(gòu)建鏡像。而Inclavare Containers 設(shè)計(jì)并實(shí)現(xiàn)了符合 OCI 運(yùn)行時(shí)規(guī)范的新型 OCI 運(yùn)行時(shí) rune,以便與現(xiàn)有的云原生生態(tài)系統(tǒng)保持一致,實(shí)現(xiàn)了機(jī)密容器形態(tài)。不僅可以幫您省去這些復(fù)雜過程,還可以使您像普通容器一樣使用機(jī)密容器。
Inclavare Containers 可以與 dockerd 集成。 具體來(lái)說,您需要在構(gòu)建容器鏡像時(shí)安裝首選的 Enclave Runtime,并在您的機(jī)器的docker 配置文件中添加 rune 的相關(guān)配置,例如,/etc/docker/daemon.json。
{"runtimes": {"rune": {"path": "/usr/local/bin/rune","runtimeArgs": []}} }然后重啟 docker 服務(wù)即可。
由于 rune 是在 runc 代碼基礎(chǔ)上開發(fā)的,所以 rune 既可以創(chuàng)建 runc 容器,也可以創(chuàng)建 Enclave 容器。在 Docker 集群中,創(chuàng)建 runc 容器和創(chuàng)建 Enclave 容器的流程是完全一樣的。他們的區(qū)別在于鏡像。普通 runc 容器鏡像是不能創(chuàng)建 Enclave 的,需要用戶按照 Enclave Runtime 的要求生成特殊的鏡像。如上圖所示,使用 docker 啟動(dòng)一個(gè) Occlum 機(jī)密容器的的流程如下:
1、用戶開發(fā)機(jī)密應(yīng)用。用戶不需要掌握機(jī)密計(jì)算的知識(shí),Occlum 提供了工具可以把普通應(yīng)用轉(zhuǎn)換為機(jī)密應(yīng)用。需要注意的是:Occlum 有一些使用限制,詳情請(qǐng)查閱文檔:https://github.com/occlum/occlum。
2、基于 Occlum 生成的文件構(gòu)建鏡像,構(gòu)建成功后推入鏡像倉(cāng)庫(kù)。3、通過標(biāo)準(zhǔn) docker 拉起容器鏡像,最終使用 rune 運(yùn)行時(shí)啟動(dòng) Enclave 容器并運(yùn)行 Occlum 和 Enclave 應(yīng)用。
Kubernetes 集群
雖然 Docker 集群中能運(yùn)行 Enclave 容器,但還有一些不足:
- 無(wú)法動(dòng)態(tài)管理和調(diào)度 EPC。
- 容器編排能力弱,沒有 Kubernetes 面向終態(tài)設(shè)計(jì)的容器管理方式。
為此,Inclavare Containers 提供了 shim-rune 用于在云上 Kubernetes 機(jī)密計(jì)算集群中創(chuàng)建 Enclave 容器。在這種場(chǎng)景下,shim-rune 和 rune 可以組成一個(gè) enclave 容器化棧,所以在構(gòu)建容器鏡像時(shí)不需要安裝 Enclave Runtime,提供和普通容器一樣的體驗(yàn)。
Inclavare Containers 已經(jīng)添加到 containerd 的采用者列表中:https://github.com/containerd/containerd/blob/master/ADOPTERS.md。 此外,shim-rune也支持containerd shim v2 API:https://github.com/containerd/containerd/blob/master/runtime/v2/task/shim.proto。 因此,您可以在系統(tǒng)上的 containerd 配置文件(例如 /etc/containerd/config.toml)中添加 shim-rune 的相關(guān)配置。
[plugins.cri.containerd]...[plugins.cri.containerd.runtimes.rune]runtime_type = "io.containerd.rune.v2"然后重啟 containerd 即可。
如上圖所示,在云上 Kubernetes 機(jī)密計(jì)算集群中創(chuàng)建 Occlum 機(jī)密容器的工作流程如下:
1、kubelet 向containerd 發(fā)起 CRI(Container Runtime Interface)請(qǐng)求,比如請(qǐng)求創(chuàng)建一個(gè) Pod。
2、Containerd 中有一個(gè) cri-containerd 的插件實(shí)現(xiàn)了 CRI 接口,Containerd 接收到請(qǐng)求后,把請(qǐng)求轉(zhuǎn)給 shim-rune。
3、shim-rune 既可以創(chuàng)建 runc 容器也可以創(chuàng)建 rune 容器。在創(chuàng)建 runc 和 rune 容器的處理流程也有差異:
4、為每個(gè)容器分別創(chuàng)建一個(gè) rune 進(jìn)程,該進(jìn)程負(fù)責(zé)來(lái)創(chuàng)建容器,創(chuàng)建 runc 容器和 Enclave 容器的流程是不同的:
5、rune 進(jìn)程退出,并把 Enclave 容器內(nèi) 1 號(hào)進(jìn)程的父進(jìn)程設(shè)置為 shim-rune。6、shim-rune 請(qǐng)求 rune 啟動(dòng) Enclave。至此一個(gè)可信應(yīng)用就運(yùn)行起來(lái)了。
K8s 集群級(jí)遠(yuǎn)程證明架構(gòu)
為了進(jìn)一步滿足“用戶敏感數(shù)據(jù)的安全性在傳輸鏈路上也能夠完全不再依賴云廠商”這一安全需求,Inclavare Containers 設(shè)計(jì)了一套通用的和跨平臺(tái)的遠(yuǎn)程證明架構(gòu) Enclave Attestation Architecture(簡(jiǎn)稱 EAA)。EAA 以“關(guān)聯(lián)了帶有硬件可執(zhí)行環(huán)境的遠(yuǎn)程證明證據(jù)的 TLS 證書”為信任根,確保通信各方的通信信道的安全性完全是基于硬件可信執(zhí)行環(huán)境的。
EAA的主要組件有:
- Enclave-TLS
Enclave-TLS 增強(qiáng)了標(biāo)準(zhǔn) TLS 以支持基于機(jī)密計(jì)算技術(shù)的異構(gòu)硬件 TEE 之間的可信通信,是一種支持異構(gòu)硬件可執(zhí)行環(huán)境的雙向傳輸層安全性協(xié)議 (Transport Layer Security,簡(jiǎn)稱TLS)。通過使用 Enclave-TLS,即使是非硬件 TEE 平臺(tái)也可以通過經(jīng)過認(rèn)證的安全信道與硬件 TEE(例如 SGX Enclave)通信以傳輸敏感信息。總的來(lái)說,TCB 的邊界從執(zhí)行環(huán)境擴(kuò)展到使用 Enclave-TLS 的網(wǎng)絡(luò)傳輸。此外,Enclave-TLS 有一個(gè)可擴(kuò)展的模型來(lái)支持各種硬件 TEE。
- 機(jī)密容器
機(jī)密容器扮演證明者的角色。響應(yīng)來(lái)自 Inclavared 的請(qǐng)求,并返回機(jī)密容器的attestation evidence(mrenclave 值和 mrsigner 值)。
- Inclavared
Inclavared 負(fù)責(zé)轉(zhuǎn)發(fā)下游的機(jī)密容器和上游的客戶端驗(yàn)證者程序 Shelter 之間的流量,通信過程受到經(jīng)過證明的 Enclave-TLS 通道的保護(hù)。
- Shelter
Shelter 作為部署在云下的遠(yuǎn)程證明驗(yàn)證者,記錄 Enclave 運(yùn)行時(shí)的啟動(dòng)度量,然后基于 Enclave-TLS 建立可信信道 Inclavared 進(jìn)行通信。最后,Shelter 對(duì)Enclave 運(yùn)行時(shí)的度量值進(jìn)行驗(yàn)證,以便租戶能夠明確知道他們的工作負(fù)載是否在真正的 TEE 環(huán)境中加載。
具體的工作流程如下:
當(dāng)用戶想驗(yàn)證工作負(fù)載是否運(yùn)行在可信平臺(tái)上時(shí),可以啟動(dòng) Shelter 工具發(fā)送驗(yàn)證請(qǐng)求給 Inclavared。
1、當(dāng)接收到 Shelter 的驗(yàn)證請(qǐng)求之后,Inclavared 將請(qǐng)求發(fā)送給機(jī)密容器,Inclavared 和機(jī)密容器分別產(chǎn)生帶有 SGX 遠(yuǎn)程認(rèn)證信息的 TLS 證書。
2、Inclavared 和 Shelter 之間基于 Enclave-TLS 建立經(jīng)過證明的安全信道。
3、Inclavared 與機(jī)密容器之間基于 Enclave-TLS 建立經(jīng)過雙向認(rèn)證的安全信道。
4、Inclavared 轉(zhuǎn)發(fā)機(jī)密容器提供的硬件可執(zhí)行環(huán)境信息和敏感信息給 Shelter
5、Shelter 對(duì) Enclave 運(yùn)行時(shí)的度量值進(jìn)行驗(yàn)證,并返回驗(yàn)證結(jié)果給用戶。
五大技術(shù)創(chuàng)新
Inclavare Containers 提供了兼容 OCI Runtime 的容器運(yùn)行時(shí),用戶可根據(jù)需要在 Docker 集群或者 Kubernetes 集群中運(yùn)行 Enclave 容器。通過 Enclave Runtime 抹去了用戶使用機(jī)密計(jì)算技術(shù)的門檻,在 Kubernetes 集群中更是保持了與普通容器一致的使用體驗(yàn)。通過 Encalve Runtime PAL API 可以提供多種 Runtime 實(shí)現(xiàn),為用戶提供更多 Enclave 選擇,在安全和成本之間提供更多的選擇和靈活性。
Inclavare Containers 的技術(shù)創(chuàng)新主要體現(xiàn)在以下幾點(diǎn):
1、實(shí)現(xiàn)了標(biāo)準(zhǔn)的應(yīng)用 enclave 化技術(shù)。
- 將機(jī)密計(jì)算硬件技術(shù)(如Intel? SGX)與成熟的容器生態(tài)結(jié)合,兼容 OCI Runtime 和 OCI 鏡像標(biāo)準(zhǔn),實(shí)現(xiàn)了機(jī)密容器形態(tài)。用戶的敏感應(yīng)用以機(jī)密容器的形式部署和運(yùn)行,并保持與使用普通容器相同的使用體感。
2、基于Enclave-TLS、shelter、inclavared 設(shè)計(jì)了靈活可擴(kuò)展的 K8s 集群級(jí)遠(yuǎn)程證明架構(gòu)。
- 通過構(gòu)建通用且跨平臺(tái)的遠(yuǎn)程證明安全架構(gòu),能夠向用戶證明其敏感的工作負(fù)載是運(yùn)行在真實(shí)可信的基于硬件的可信執(zhí)行環(huán)境中的。
3、制定了通用的PAL API,規(guī)范化了enclave runtime 對(duì)接 Inclavare Containers 的接口,打造 Inclavare Containers 的生態(tài)。
- 通過標(biāo)準(zhǔn)的 API 規(guī)范來(lái)對(duì)接各種形態(tài)的 Enclave Runtime,在簡(jiǎn)化特定的Enclave Runtime 對(duì)接云原生生態(tài)的同時(shí),也為用戶提供了更多的技術(shù)選擇。
4、構(gòu)造基于零信任模型的機(jī)密計(jì)算集群基礎(chǔ)設(shè)施。
- 移除對(duì)云服務(wù)提供商的信任,Inclavare Containers 的安全威脅模型假設(shè)用戶無(wú)需信任云服務(wù)提供商,即用戶工作負(fù)載的安全性不再依賴云服務(wù)提供商控制的特權(quán)組件。
5、與 Kubernetes 生態(tài)無(wú)縫整合。
- Inclavare Containers 可以部署在任何公共云 Kubernetes 平臺(tái)中,實(shí)現(xiàn)了統(tǒng)一的機(jī)密容器部署方式。
結(jié)語(yǔ)
作為業(yè)界首個(gè)面向機(jī)密計(jì)算場(chǎng)景的開源容器運(yùn)行時(shí),Inclavare Containers 為ACK-TEE(ACK-Trusted Execution Environment)提供了使用機(jī)密容器的最佳實(shí)踐。ACK-TEE 依托 Inclavare Containers,能夠無(wú)縫地運(yùn)行用戶制作的機(jī)密容器鏡像,并保持與普通容器相同的使用體感。ACK-TEE 可被廣泛應(yīng)用于各種隱私計(jì)算的場(chǎng)景,包括:區(qū)塊鏈、安全多方計(jì)算、密鑰管理、基因計(jì)算、金融安全、AI、數(shù)據(jù)租賃。
未來(lái),Inclavare Containers將繼續(xù)為開源社區(qū)提供面向云原生場(chǎng)景的機(jī)密計(jì)算容器技術(shù)、機(jī)密計(jì)算集群技術(shù)和安全架構(gòu),并成為該領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。在不斷深化實(shí)施零信任模型原則的同時(shí),不斷提升開發(fā)者和用戶的使用體驗(yàn),并最終完全消除與運(yùn)行普通容器在使用體感上的差別。同時(shí),Inclavare Containers 將積極參與共建云原生社區(qū),深度聯(lián)手上下游伙伴一同推動(dòng)云原生安全技術(shù)不斷進(jìn)步,為打造更安全的云原生環(huán)境不懈努力。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的Inclavare Containers:云原生机密计算的未来的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贾扬清演讲实录:一个AI开发者的奇幻漂流
- 下一篇: MaxCompute跨境访问加速解决方案