機密運算(confidential computing)
當你在別人的電腦上——一台雲端伺服器——執行你的程式時,你就是在信任掌控那台機器的人。作業系統、監督程式與雲端營運商在你的程式執行時,通常都能看見並修改它記憶體裡的一切。機密運算是一套硬體技術,目標是打破那個假設:在你的資料與程式碼正被使用時保護它們,即使要防範的是執行它們的那個系統與管理員本身。
具體而言,機密運算保護的是「使用中的資料」(data in use),與早已解決的「靜止資料」(磁碟上的加密)與「傳輸中資料」(線路上的加密)兩個問題湊成三件套。機制是硬體強制的隔離:CPU 本身建立一個受保護區域——一個信任執行環境或飛地(enclave)——其記憶體由晶片加密並做存取控制,因此其中的程式碼與資料對外部的一切(包括作業系統與監督程式)都被屏蔽。威脅模型是最醒目的部分:它把主機系統、監督程式與營運商都視為不可信任,只信任 CPU 硬體與受保護區域內那一小段程式碼。你還會得到證實(attestation)——一種讓硬體在任何祕密被送入之前,向遠端對象證明受保護區域內真正執行的是哪段程式碼的方式。
它之所以重要,是因為它可能讓你在你並不掌控的基礎設施上執行敏感工作負載——醫療資料、金鑰、私有模型——而信任基礎小得多。但要極其嚴謹地看待極限,因為行銷話術說過頭了。這份保護完全建立在信任 CPU 供應商的硬體與韌體之上,那是一個真實而不容小覷的信任根;這類系統一再被旁路通道攻擊(時序、快取、推測執行洩漏)攻破,而飛地模型本質上並不阻止那些;受保護的程式碼本身仍可能有普通臭蟲;而且「營運商看不到你的資料」是關於一個特定威脅模型、帶著特定假設的主張,不是一個魔法保證。這是真實、推進中的技術(Intel SGX、AMD SEV、ARM CCA)——帶著真實、有記載的但書。
靜止資料: 在磁碟上加密 (早已解決) 傳輸中資料: 在線路上加密 (早已解決) 使用中資料: 執行時由 CPU 加密/隔離 <- 機密運算 威脅模型:信任 CPU 硬體;「不」信任作業系統、監督程式或雲端營運商
機密運算在資料正被運算時保護它,其威脅模型甚至不信任主機作業系統、監督程式與營運商——只信任 CPU。
這份保護建立在信任 CPU 供應商的硬體/韌體之上——那是真實的信任根,不是魔法。這類系統一再被飛地模型本質上並不防範的旁路通道攻擊攻破,而受保護的程式碼仍可能有普通臭蟲;「營運商看不到你的資料」只在一個特定、充滿假設的威脅模型內才成立。