面向TEE的開發(fā)者指南
作者:prateek,roshan,siddhartha&linguine(Marlin),krane(Asula)編譯:Shew,仙壤GodRealmX
自從Apple宣布推出私有云以及NVIDIA在GPU中提供機密計算以來,可信執(zhí)行環(huán)境(TEE)變得越來越流行。它們的機密性保證有助于保護用戶數(shù)據(jù)(可能包括私鑰),而隔離性確保部署在其上的程序的執(zhí)行不會被篡改——無論是人類、其他程序還是操作系統(tǒng)。因此,CryptoxAI領(lǐng)域大量使用TEE構(gòu)建產(chǎn)品也不足為奇。
與任何新技術(shù)一樣,TEE正在經(jīng)歷一段樂觀的實驗期。本文希望為開發(fā)人員和一般讀者提供基礎(chǔ)的概念指南,讓他們了解什么是TEE、TEE的安全模型、常見的漏洞和安全使用TEE的最佳實踐方式。(注意:為了使文本易于理解,我們有意識地用更簡單的等價詞替換了TEE術(shù)語)。
什么是TEE
TEE是處理器或數(shù)據(jù)中心中的隔離環(huán)境,程序可以在其中運行,而不會受到系統(tǒng)其余部分的任何干涉。為了避免TEE被其他部分干涉,我們需要一系列的設(shè)計,主要包括嚴(yán)格的訪問控制,即控制系統(tǒng)其他部分對TEE內(nèi)程序和數(shù)據(jù)的訪問。目前TEE在手機、服務(wù)器、PC和云環(huán)境中無處不在,因此非常易于訪問且價格合理。
上面的內(nèi)容聽起來可能很模糊和抽象,實際上不同的服務(wù)器和云供應(yīng)商實施TEE的方式不同,但其根本目的是為了避免TEE被其他程序干涉。
開發(fā)人員:用于準(zhǔn)備EIF的代碼到底有什么作用?EIF代碼可能并不符合項目方對外宣傳的業(yè)務(wù)邏輯,可能會竊取用戶的隱私數(shù)據(jù)
服務(wù)器:TEE服務(wù)器是否運行與預(yù)期一致的EIF文件?或者EIF是否真的在TEE內(nèi)被執(zhí)行?服務(wù)器也可能在TEE內(nèi)運行其他程序
供應(yīng)商:TEE的設(shè)計是否安全?是否有后門將TEE內(nèi)所有數(shù)據(jù)泄露給供應(yīng)商?
值得慶幸的是,現(xiàn)在的TEE已經(jīng)有了消除上述風(fēng)險的方案,即可重復(fù)構(gòu)建(ReproducibleBuilds)和遠(yuǎn)程證明(RemoteAtteststations)。
那么什么是可重復(fù)構(gòu)建?現(xiàn)代軟件開發(fā)往往需要導(dǎo)入大量依賴,比如外部工具、庫或框架等,這些依賴文件也可能存在隱患。現(xiàn)在npm等方案使用了依賴文件對應(yīng)的代碼哈希作為唯一標(biāo)識符。當(dāng)npm發(fā)現(xiàn)某個依賴文件與記錄的哈希值不一致時,就可以認(rèn)為該依賴文件已被修改。
遠(yuǎn)程證明是來自TEE平臺(受信任方)的簽名消息,其中包含程序的代碼度量值、TEE平臺版本等。遠(yuǎn)程證明讓外部觀察者知道,某個程序正在任何人都無法訪問的安全位置(xx版本的真實TEE)中執(zhí)行。
即TEE將相關(guān)交易分別交給不同的MPC服務(wù)器,MPC服務(wù)器簽名后進行聚合簽名并將交易最終上鏈。這種方法的靈活性要低得多,不能用于保存API密鑰、密碼或任意數(shù)據(jù)(沒有受信任的第三方存儲服務(wù))。
展望未來
TEE顯然已成為一個非常令人興奮的領(lǐng)域。如前所述,AI的無處不在及其對用戶敏感數(shù)據(jù)的持續(xù)訪問意味著Apple和NVIDIA等大型科技公司正在其產(chǎn)品中使用TEE,并將TEE作為其產(chǎn)品的一部分提供。
另一方面,加密社區(qū)一直非常注重安全。隨著開發(fā)人員嘗試擴展鏈上應(yīng)用程序和用例,我們已經(jīng)看到TEE作為一種在功能和信任假設(shè)之間提供正確權(quán)衡的解決方案而變得流行。雖然TEE不像完整的ZK解決方案那樣信任最小化,但我們預(yù)計TEE將成為首次慢慢融合Web3公司和大型科技公司產(chǎn)品的途徑。