天天看點

機密計算: 一種基于硬體的、服務于應用和資料的可信執行計算形态介紹為什麼需要機密計算?機密計算有什麼用?使用機密計算的方式機密計算的應用場景結論

注:本文是對 機密計算聯盟 釋出的白皮書 Confidential Computing: Hardware-Based Trusted Execution for Applications and Data v1.2 的原文翻譯。

介紹

在今天常見的資料保護方式中,通常隻在存儲和網絡傳輸的過程中對資料進行了加密保護,但在記憶體中使用資料時則不對其進行加密保護。此外,在傳統的計算基礎設施中對使用中的資料和代碼進行保護存在諸多能力上的限制。與此同時,相關組織需要對處理個人識别資訊(PII)、财務資料或健康資訊等敏感資料的應用和記憶體中的敏感資料提供機密性和完整性保護,以免受針對它們的安全威脅。

機密計算通過在基于硬體的可信執行環境(TEE)中執行計算的方式來保護使用中的資料。 這些安全的、隔離的環境可防止對使用中的應用程式和資料進行未經授權的通路或篡改,進而提升相關組織在管理敏感資料和受監管資料方面的安全級别。

為什麼需要機密計算?

資料的狀态

在計算的過程中,資料存在三種狀态:傳輸中、靜止和使用中。資料于網絡中傳輸屬于“傳輸中”狀态,存儲的資料屬于“靜止”狀态,正在處理的資料屬于“使用中”狀态。在這個世界上,我們不斷地存儲、使用和共享各種敏感資料:從信用卡資料到病曆,從防火牆配置到地理位置資料。保護處于所有狀态中的敏感資料比以往任何時候都更為重要。如今被廣泛使用的加密技術可以用來提供資料機密性(防止未經授權的通路)和資料完整性(防止或檢測未經授權的修改),但目前這些技術主要被用于保護傳輸中和靜止狀态的資料,目前對資料的第三個狀态“使用中”提供安全防護的技術仍舊屬于新的前沿領域。

機密計算: 一種基于硬體的、服務于應用和資料的可信執行計算形态介紹為什麼需要機密計算?機密計算有什麼用?使用機密計算的方式機密計算的應用場景結論

使用中的資料所面臨的安全風險

随着對處于傳輸中和靜止狀态的資料提供防護的加密技術的廣泛使用,針對網絡和儲存設備的威脅向量已經遇到了阻礙,是以攻擊者已轉向對使用中的資料進行攻擊。 整個業界已經目睹了幾次引人注目的基于記憶體的攻擊手段,如

Target安全事件

和CPU側通道攻擊,這些攻擊大大增加了人們對使用中資料安全的關注,以及幾次涉及惡意軟體注入的攻擊手法,如

Triton攻擊

和烏克蘭電網攻擊。

此外,随着越來越多的資料遷移到了雲端進行處理,傳統的網絡安全和實體安全防護機制在防範攻擊的能力上越來越有限。已被廣泛研究的針對雲應用的攻擊模式包括虛拟機逃逸、容器逃逸、固件損壞和内部威脅。雖然每種攻擊模式都使用了不同的攻擊技術,但它們的共性是被攻擊對象都是使用中的代碼或資料。傳統的保護資料在傳輸和靜止狀态的安全防護措施仍然是實施良好縱深防禦政策的重要組成部分,但它們無法處理雲場景下敏感資料在使用中的資料安全。

已經越來越多的關于資料安全的法規,如通用資料保護條例(GDPR)和加州消費者隐私法(CCPA),可能會讓負責保管客戶資料的實體因資料洩露而承擔直接的法律責任。由于違反GDPR規定的資料洩露法規所處的罰金可能高達年總收入的4%,強烈建議負責資料保管的實體在思考如何保護潛在的攻擊面的時候,也要将保護使用中的資料納入考量。

随着越來越多的資料需要在移動裝置、邊緣裝置和物聯網裝置上進行存儲和處理,實際進行資料處理的地方往往在遠端且通常是難以確定其安全性的地理位置,是以在執行過程中對資料和應用程式提供保護變得越來越重要。此外,由于個人資訊存儲在移動裝置上,移動裝置制造商和作業系統提供商需要證明:它們通路個人資料的過程是受到保護的,即確定在共享和處理個人資訊的過程中,裝置供應商或第三方無法觀察到這些個人資料,同時還要確定這些安全防護符合監管要求。

即使使用者控制了所有的基礎設施(比如專有雲使用者),對最敏感的資料提供使用時資料保護也是實施良好縱深防禦政策的重要組成部分。

機密計算有什麼用?

機密計算指使用基于硬體的可信執行環境對使用中的資料提供保護。 通過使用機密計算,我們現在能夠針對在上一節中所描述的許多威脅提供保護。

什麼是可信執行環境?

可信執行環境(TEE)通常被定義為能夠提供一定程度的資料完整性、資料機密性和代碼完整性保證的環境。基于硬體的TEE使用硬體支援的技術為代碼的執行和環境中資料的保護提供了更好的安全性保證。

在機密計算的上下文中,未經授權的實體可以包括主機上的應用程式、主機作業系統和Hypervisor、系統管理者、服務提供商、基礎設施所有者或對硬體具有實體通路權限的任何其他人。機密計算中的資料機密性指的是這些未經授權的實體無法檢視在TEE中使用的資料;機密計算中的資料完整性指的是防止未經授權的實體篡改正在進行中的資料;機密計算中的代碼完整性意味着TEE中的代碼不能被未經授權的實體替換或修改。 總之,這些安全屬性不僅保證了資料的機密性,而且還保證了所執行的計算是符合預期的,進而使人們可以相信計算的結果。上述這些保證在不使用基于硬體的TEE中往往是缺失的。

下面的表格将典型的基于硬體的TEE實作與可信平台子產品(TPM)以及新興的同态加密方案進行了比較:

基于硬體的TEE 同态加密 TPM
資料完整性 Y 隻有密鑰受到保護
資料機密性
代碼完整性 N
代碼機密性
可程式設計性 部分可程式設計
不可欺騙性/可恢複性
可證明性

在實踐中,上述安全屬性是否全部可用取決于供應商、模型和算法,但前三點能夠特别突出地反映出各方案在安全性上的關鍵差別。例如,典型的TPM能夠保護密鑰,但其本身不能保證由這些密鑰簽名或加密的資料的有效性,并且TPM的邏輯是不可程式設計的;而TEE是可程式設計的,并且還能夠保護其中的代碼及資料。典型的同态加密算法可以保護任意資料,但其本身不能確定操作的正确性,也不能確定其代碼本身沒有被篡改;而TEE可以同時保護資料和代碼。這些技術通常是互補的,甚至可以組合起來形成一個更為強大的安全解決方案。

根據TEE的具體情況,它還能提供:

  • 代碼機密性:除了保護資料外,一些TEE還可以保護代碼在使用過程中不會被未經授權的實體看到。例如,保護被認為是敏感覺識産權的算法代碼。
  • 經過認證的啟動:一些TEE可能強制要求在啟動程序之前必須執行必要的授權或認證檢查,同時還可以拒絕啟動未經授權或認證的程序。
  • 可變成性:一些TEE可以用任意代碼程式設計,而有些TEE可能隻支援有限的一組操作;有的TEE甚至可能包含或完全由生産時固化的代碼組成。
  • 可恢複性:一些TEE可能提供從不合規或潛在受損的狀态中恢複的機制。例如,如果确定固件或軟體元件不再滿足合規要求,并且啟動認證機制也運作失敗了,則可以更新該元件并重試/恢複啟動。可恢複性通常要求TEE的某些元件必須永遠保持可信,隻有這樣才能保證當更新其他元件時,該元件可以充當“信任根”。
  • 可證明性:通常TEE可以提供其起源和目前狀态的證據或路徑成本,以便讓另一方進行驗證,并決定是否信任TEE中運作的代碼。最重要的是,此類證據是由硬體簽名,并且制造商能夠提供證明,是以驗證證據的一方就可以在一定程度上保證證據是可靠的,而不是由惡意軟體或其他未經授權的實體生成的。

在目前基于硬體的TEE的安全威脅模型中,是不解決可用性問題(如DoS或DDoS攻擊)的。軟體和服務提供商可以為這類攻擊提供相應的解決方案。

為什麼硬體對機密計算來說是必要的?

整個計算棧中每一層的安全強度都必須至少與它下面一層的安全強度一樣,因為計算棧的任何一層的安全性都可能被底層的漏洞所規避。這就需要在盡可能低的層次上提供更為徹底的安全解決方案,直至硬體層。利用最底層硬體所能提供的安全性,在保持最小信任依賴的情況下,可以将作業系統和裝置驅動程式供應商、平台和裝置供應商、服務提供商及管理者從需要信任的實體清單中删除,進而減少潛在的風險。

為了減少機密計算環境對專有軟體的依賴,機密計算聯盟将隻實作了基于軟體信任根的TEE排除在關注範圍之外,而隻将機密計算環境的關注重點放在了基于硬體的安全保障上。

使用機密計算的方式

如今有多種使用基于硬體TEE的方式,來實施有效的縱深防禦機制以及機密計算所尋求的安全邊界。這些方式在可信計算基(TCB)的大小上各不相同。TCB可以簡單地由“使用者需要信任的代碼行數”以及“應用程式如何使用TEE”這兩個次元來衡量。

使用者應該了解下面兩種常用方式間的差別,以及它們是如何滿足機密計算的要求的,以便做出适當的選擇。

方式1:應用SDK

開發人員負責将其應用程式的代碼劃分為可信元件和不可信任元件。開發人員究竟需要如何進行劃分,可能會受到以下因素的影響:應用程式是為一個特定的硬體TEE編寫的,還是TEE的細節被SDK抽象成了一個通用的程式設計模型,且該SDK提供了跨硬體TEE支援的可移植性。這種方式可以更仔細地審查在TEE中運作的代碼及其提供的接口,因為要審查的代碼量可能比方法2中的代碼量要少,但這種方法需要将應用程式設計成或修改為使用TEE感覺的SDK。

方式2:運作時部署系統

這種方法最小化了将典型的應用程式工作負載轉換為可以運作在TEE中的工作負載所需的工作量。這種方法的好處是開發的應用具有跨TEE可移植性的,甚至支援将未修改的應用程式直接部署到TEE中。

提供原始應用程式TEE部署能力既有優點也有缺點:它雖然降低了對TEE有需求的敏感應用的部署成本,但被部署的原始應用在設計的時候很可能就不是為了運作在TEE中的,比如這些應用不會去主動使用TEE的證明和敏感資訊保護特性。為了易于使用,這些優點可能被抛棄,或者可以由運作時部署系統、或通過另一種機制來處理。

機密計算的應用場景

存儲和處理密鑰、秘密資訊、憑證以及令牌

密鑰、秘密資訊、憑證和令牌是保護敏感資料的關鍵資訊資産。過往總需要一個符合當地國家安全标準的本地硬體安全子產品(HSM)對這些關鍵資訊資産進行存儲和處理,比如這些硬體安全子產品要符合美國聯邦資訊處理标準(FIPS 140-2、140-3)的安全要求。傳統HSM硬體的專有性增加了它們的成本,限制了它們的可伸縮性,而且在雲計算和邊緣計算環境中部署HSM硬體也帶來了成本和相容性的挑戰。

目前機密計算已經被獨立軟體供應商(ISV)和大型組織使用,并通過标準化的計算基礎設施存儲和處理敏感資訊。這些基礎設施可用于内部、公有雲/混合雲,以及邊緣網絡和IoT。密鑰管理應用程式可以在基于硬體的安全TEE中存儲和處理密鑰、秘密資訊和令牌,并提供資料機密性、資料完整性和代碼完整性,以實作與傳統HSM同等的安全性。

公有雲

在傳統的公有雲場景中,使用者需要信任雲提供商的計算棧,包括:硬體、核心和外圍裝置的固件、主機作業系統、hypervisor和雲提供商的管控編排系統。雖然公有雲提供商在竭盡全力保護該計算棧的安全性,但機密計算提供了額外的安全保證,并顯著降低了最終使用者對雲提供商的信任需求。

對于未經授權的實體來說,即使他們具有對硬體的實體通路權限,或具有對主機OS或hypervisor的root通路權限,或對管控編排系統具有特權,通路受硬體TEE保護的使用中的應用程式和資料變得更為困難。機密計算的目的是允許将雲提供商從TCB中移除,以確定在攻擊邊界内隻有硬體和受保護的應用程式本身。

這使得許多業務現在能夠遷移到公有雲,而在以前,由于安全問題或合規要求,許多業務無法遷移到公有雲。

多方計算

新的計算模式正在出現,這使資料集和算力能夠在多方之間共享,然而有些資料和計算模型可能是敏感的或受監管的,比如金融服務、醫療保健、政府和非盈利領域。此外,如果要在交易方不信任的平台上共享資料,如何才能保持資料的機密性和完整性?很多組織希望擺脫資料孤島的限制,但仍然需要平台確定資料源在共享時不會受到損害,并且計算結果隻能被事先允許的各方通路到。

例如,私有的多方分析可以應用于這種場景:多個參與方擁有需要組合和分析的私有資料,但又不能向任何其他參與方公開其基礎資料或機器學習模型。這項技術可以應用于防止金融服務中的欺詐,檢測或開發醫療行業的疾病治療方法,或生成商業洞察力。舉例來說,多家醫院可以結合資料來訓練機器學習模型,利用放射資訊進行更準确的腦惡性良性腫瘤檢測,但病人的個人資料即使是在違規的情況下也總能被保密。

公司群組織可以使用機密計算確定遠端系統上的資料不受篡改和破壞(包括來自合作組織的内部威脅),以及驗證處理該資料的代碼的完整性。資料可以在TEE中進行組合和分析,結果可以以加密格式發送回各參與方。在整個過程中,資料始終受到保護,不管是在傳輸中,計算時,還是靜态存儲。

這些功能将有助于推動全球資料共享領域的發展,使企業能夠解鎖以前未杠杆化的資料集,以便與其他企業進行協作分析和交換,同時降低安全、隐私和監管影響的風險。

區塊鍊

區塊鍊是一個共享的、不可變的賬本。它記錄了參與者網絡之間的資料、數字資産或貨币交換。在無需中心化的第三方參與的情況下,區塊鍊提供了記錄和驗證交易的基礎設施。區塊鍊可以為供應鍊活動提供透明度,促進數字資産的交換或支援合規流程,如

客戶調查(Know Your Customer,簡稱KYC)

。區塊鍊的一個關鍵特征是,它確定所有應該擁有一段共同資料的參與者能夠看到相同的東西,并且一旦輸入到區塊鍊上,資料就是不可變的。通常由應用程式開發人員來確定像個人識别資訊(PII)這樣的敏感資料不會被存儲在不可變的區塊鍊上。

機密計算可用于增強基于區塊鍊的系統的安全性。通過結合保密計算和區塊鍊技術,使用者可以利用基于硬體的TEE來提供證明和驗證服務,以提升可擴充性、隐私性和安全性。區塊鍊使用者之間的資料一緻性通常取決于各方獨立驗證的所有曆史資料的有效性,同時也需要考慮這些曆史資料集的可見性、資料規模和隐私問題。使用者可以在基于硬體的TEE中執行智能合約,而不是自己獨立地通路和驗證曆史資料和與之關聯的智能合約的完整性。一旦交易完成,TEE提供證明服務來證明交易的可靠性,這意味着随後的參與者不需要再次進行驗證。基于TEE的認證服務也有助于解決協商一緻協定産生的一些計算和通信效率低下的問題。

個人移動和計算裝置

有關個人裝置的使用場景主要涉及應用程式開發人員或移動裝置制造商,他們需要保證在共享或處理資料的過程中不會觀察到個人資料。從合規性和最佳實踐的角度來看,這将裝置制造商從責任循環中移除,因為他們可以聲稱無法看到客戶的個人資料。如果TEE能夠確定前面提到的可證明性和代碼完整性,那麼計算功能的正确性(以及計算結果的可信賴性)就可以得到證明,是以應用程式開發人員可以向使用者證明他們的個人資料從未離開裝置。

例如在

持續認證

的場景中,裝置上的使用者帳戶登入程式可通過與使用者互動來識别使用者。這些互動資料可能包括敏感資料,如生物特征或使用者與裝置互動的實體模式,這些都需要在TEE中進行處理。使用者行為引擎隻需要識别使用者,而不需要将原始使用者行為資料暴露給其他裝置或TEE外部的代碼。

另一個例子是分散式裝置模型訓練,其目的是改進模型;同時需要在與其他裝置共享模型改進的同時,不會洩漏用于訓練模型的資料。使用基于硬體的機密計算的協定設計比統計模型(如差分隐私)更易于使用。此外,統計方法仍然依賴于使用者信任應用程式開發人員通過注入适量的噪聲的方式來充分隐藏敏感資料。相比之下,在裝置上運作基于硬體的TEE可以使使用者通過雙向證明的方式在自己的裝置上設定政策和限制條件,以便使用和處理他們的資料。

邊緣和IoT

機密計算非常适合的一個場景是内置在家庭路由器中的DDoS檢測機制,該機制會對TCP/IP資料包進行本地搜尋和過濾。在大多數情況下,這些資料包的内容需要保密,因為可能會推斷出敏感的使用者行為;其他場景包括邊緣機密機器學習處理,如可以減少後端網絡延遲和帶寬的視訊中繼資料生成技術;還有攝像頭監控場景,如提供商需要加載人臉識别庫。一旦洩露,則将導緻嚴重的後果;此外還有類似于上述移動環境中的裝置上的訓練模型資料保護場景,也适用于使用機密計算。

另外,某些裝置在實體上可被不可信的實體通路。機密計算技術可用于緩解對裝置所實施的實體攻擊。

POS機 / 支付

使用基于硬體的TEE在當今的支付行業中已經很常見。能夠處理帶有晶片密碼的信用卡或借記卡的POS機需要對持卡人的敏感資訊進行保護,包括信用卡号、PIN碼、有效期、CVV等;像收銀機這樣的裝置通常就是通用計算裝置;讀卡器則用于保護支付處理的代碼邏輯免受此類通用計算裝置上任何潛在惡意軟體的侵害。

為了保護使用者輸入的資訊(如PIN碼),還必須對資料的輸入方式進行保護,以便使用者輸入的資料不能被讀取或篡改。在安全的實作中,數字鍵盤是一個被隔離的輸入裝置,輸入僅能被基于硬體的TEE中的代碼所讀取。通過這種方式,資料可以被安全地操作并用于生成發送到支付交易系統的加密資訊,所有這些都是惡意軟體或第三方未經授權的實體所無法觸及的。

結論

保密計算領域正在迅速發展,為業務和最終使用者提供新的工具,以保護敏感資料和代碼免受資料在執行期間發生的一類資料安全威脅,而這些威脅在以前是難以防範的。

解決方案提供商經過權衡(比如對TCB大小的考量)開發出了不同的機密計算實作:從将應用程式的代碼劃分為可信和不可元件,到對應用進行很少或不經修改就能實作應用到TEE的遷移。

這些不同的方法支援各種使用場景,但最終目的都是為了確定敏感的、業務關鍵的資訊和工作負載的機密性和完整性。随着機密計算的不斷發展,可能會出現更多的方法,或者是這些方法的演變。機密計算聯盟對這一領域的創新持樂觀态度。

繼續閱讀