張曉藝
在過去的幾年里,尋找一個只以“http://…”開頭的網站變得越來越難,這是因為業界終于意識到,網絡安全“是件事”,同時也是因為客戶端和服務端之間建立和使用https連接變得更加容易了。類似的轉變可能正以不同的方式發生在云計算、邊緣計算、物聯網、區塊鏈、人工智能和機器學習等領域。長久以來,我們都知道應該對存儲的靜態數據和在網絡中傳輸的數據進行加密,但是在使用和處理數據的時候對它進行加密是困難且昂貴的??尚庞嬎?,例如使用受信任的執行環境(Trusted Execution Environments,TEEs)這樣的硬件功能來提供數據和算法這種類型的保護,可以保護主機系統中的或者易受攻擊環境中的數據。
關于TEEs,Enarx使用TEEs來提供獨立于平臺和語言的部署平臺,以此來讓敏感應用或者敏感組件(例如微服務)部署在不信任的主機上。Enarx是完全開源的,其使用的是Apache 2.0許可證,能夠在不信任的主機上運行工作負載,這是可信計算的承諾,它擴展了使用靜態敏感數據和傳輸中數據的常規做法。
存儲:要加密靜態數據,因為不完全信任基礎存儲架構。
網絡:要加密正在傳輸中的數據,因為不完全信任基礎網絡架構。
計算:要加密正在使用中的數據,因為不完全信任基礎計算架構。
上述說法里的“完全”是很重要的。不論哪種情況,必須在一定程度上信任基礎設施,無論是傳遞數據包還是存儲數據塊,例如,對于計算基礎架構,必須要去信任CPU和與之關聯的固件,這是因為如果不信任他們,就無法真正地進行計算,現在有一些諸如同態加密一類的技術,這些技術正在開始提供一些可能性,但是它們依然有限、還不夠成熟。
考慮到發現的一些CPU安全性問題,是否應該完全信任CPU有時自然會產生疑問,以及它們是否在針對其所在主機的物理攻擊中具有完全的安全性。
這2個問題的回答都是“不”,但是在考慮到大規模可用性和普遍推廣的成本,這已經是我們當前擁有的比較好的技術了。為了解決第2個問題,沒有人去假裝這項技術(或者任何其他技術)是完全安全的:需要做的是思考我們的威脅模型并確定這個情況下的TEEs是否為我們的特殊需求提供了足夠的安全防護。關于第1個問題,Enarx采用的模型是在部署時就對是否信任一個特定的CPU組做出決定。舉個例子,如果供應商Q的R代芯片被發現有漏洞,可以很簡單地說“我拒絕將我的工作內容部署到Q的R代芯片上去,但是仍然可以部署到Q的S型號、T型號和U型號的芯片以及任何P,M,N供應商的任何芯片上去?!?/p>
個人認為這里發生了3處改變,這些改變引起了人們現在對機密計算的興趣和采用。
1.硬件可用:只是在過去的6 ~ 12個月里,支持TEEs的硬件才開始變得廣泛可用,這會兒市場上的主要例子是Intel的SGX和AMD的SEV。我們期望在未來可以看到支持TEE硬件的其他例子。
2.行業就緒:就像上云越來越多地被接受作為應用程序部署的模型,監管機構和立法機構也在提高各類組織保護其管理的數據的要求。組織開始呼吁在不受信任的主機運行敏感程序(或者是處理敏感數據的應用程序)的方法,更確切地說,是在無法完全信任且帶有敏感數據的主機上運行的方法。這不足為奇:如果芯片制造商看不到這項技術的市場,他們就不會投太多的錢在這項技術上。Linux基金會機密計算聯盟(CCC)的成立就是業界對如何尋找使用加密計算的通用模型,并且鼓勵開源項目使用這些技術的案例。
3.開放源碼:如果要運行敏感程序,需要去信任正在為你運行的程序。不僅僅是CPU和固件,同樣還有在TEE內執行工作負載的框架??梢哉f,“我不信任主機機器和它上面的軟件棧,所以我打算使用TEE,”但是如果你不夠了解TEE軟件環境,那就是將一種軟件不透明換成另外一種。TEEs的開源支持將允許你或者社區(實際上是你與社區)以一種專有軟件不可能實現的方式來檢查和審計你所運行的程序。這就是為什么CCC位于Linux基金會旗下(這個基金會致力于開放式開發模型)并鼓勵TEE相關的軟件項目加入且成為開源項目。
在過去的15~ 20年里,硬件可用、行業就緒和開放源碼已成為推動技術改變的驅動力。區塊鏈、人工智能、云計算、大規模計算webscale computing、大數據和互聯網商務都是這3個點同時發揮作用的例子,并且在業界帶來了巨大的改變。
一般情況下,安全是我們這數十年來聽到的一種承諾,并且其仍然未被實現,筆者也不確定它未來會不會實現。但是隨著新技術的到來,特定用例的安全變得越來越實用和無處不在,并且在業內受到越來越多的期待。這樣看起來,機密計算似乎已準備好成為下一個重大變化。