縱觀機密運算的發展,對於可信任執行環境(Trusted Execution Environments,TEE)的提供,不僅需要中央處理器硬體層面的支援,軟體的支援也至關重要,而在主要的運算平臺的支援上,英特爾軟體防護延伸技術(SGX)是最早出現在市面上的x86架構硬體應用產品,而在軟體部分,以Fortanix公司發展的一系列解決方案最為知名。

至於開放原始碼軟體領域,近年來也陸續出現多個專案來支援相關應用。例如:無須修改應用程式、就能提供防護的程式庫作業系統(library OS)Gramine(先前稱為Graphene),由微軟貢獻與維護的Open Enclave SDK,基於這套軟體開發套件而成、新創公司Edgeless Systems推動的機密應用程式開發框架EGo,英特爾主導的Intel SGX SDK for Linux,阿里巴巴旗下螞蟻集團開發的程式庫作業系統Occlum,Arm研究院分散式系統與資安團隊開發的隱私保護協同運算Veracruz,基於RISC-V架構、用於建置自定可信任執行環境的Keystone。

在這些開放原始碼軟體專案中,發展時間最久、過程經歷一些轉折的當屬Gramine,今年5月底推出1.2版。相較於先前版本,新版針對檔案系統進行大翻修,尤其是「受保護檔案系統(Protected File,PF)」的部分,經歷極大程度的重新修訂,當加入了新的清單式控制語法,能標示整個檔案系統的加密掛載,而且PF不僅可使用在Gramine的SGX模式,也能用於直接執行模式,減輕除錯工作的負擔。

開發團隊還加入多種功能支援,例如可對受保護檔案進行改名、記憶體的讀寫許可對應、可搭配不同使用者提供的金鑰進行加密等功能支援。在此同時,他們也修正許多檔案系統與受保護檔案等子系統的軟體臭蟲。

針對CPU非統一記憶體存取架構(NUMA)特色支援的重新打造,1.2版Gramine終於完成,現在這方面的設置,能夠全部轉進Gramine的SGX安全區(enclave)內部執行,而且系統已預設為啟用狀態。

在作業系統的使用上,Gramine過去大多搭配Ubuntu,而1.2版推出之後,也針對紅帽旗下維護與發展的Linux版本,如CentOS、Fedora、RHEL,提供更好的支援。

至於應用軟體開發環境的支援上,Gramine 1.2更新EPID SGX見證工具,當中改用了IAS API v4,並且新增Rust、Python程式語言寫成的範例程式碼。

2011年由兩位學者發展,後續有軟體商、實驗室加入研發行列

Gramine原名為Graphene,2011年由Stony Brook大學的Chia-Che Tsai、Don Porter發展出原型,2014年釋出第1版,2017年與英特爾實驗室共同合作支援SGX,2018年軟體廠商Golem與ITL實驗室加入這項專案,此後開放原始碼社群的核心開始成形,並且推出用於SGX的軟體框架Graphene-ng。

2019年4月,Golem、ITL實驗室、英特爾實驗室,以及後續任職北卡羅來納大學的Don Porter,以及德州農工大學的Chia-Che Tsai宣布合作消息,成立Graphene Workgroup工作小組,希望能提供產品等級的解決方案,滿足應用程式可移植性、安全性、資料完整性等層面的要求。同年9月,Graphene 1.0正式推出,提供多種特色,例如,改善整體執行的穩定度,針對SGX強化介面的安全性,提供遠端見證(Remote attestation),並且新支援Memcached、Redis、Tensorflow等應用程式。

2020年7月,Graphene 1.1上路,標示這個專案相隔一年後,在上述機構與研究人員的協同合作之下,釋出第2個穩定版本,當中最大的改變是提供受保護的容器Graphene Shielded Container(GSC),能夠整合Docker,促使一般的Docker映像能夠轉換,成為可在Graphene執行的Docker映像;另一個特色是Graphene能夠結合「受保護檔案系統(Protected File System,Protected FS),以及其他保護機制,例如命令列型態的增益與變數控制,以及處理程序之間的溝通。

專案改名,並宣告加入機密運算聯盟的行列,版號計數也重新設置

到了2021年10月,Graphene改名為Gramine,宣布加入機密運算聯盟,並且釋出Gramine 1.0版。為何要改名?根據此專案公布在GitHub的改版記錄所言,研發團隊認為Graphene是個太常見的名稱,可能很難註冊為商標,也容易與其他軟體專案產生混淆,所以選定了Gramine這個新名字,版號也重新設置。為此,整個軟體專案遷移到新的儲存庫,相關的GSC與一些範例程式碼也搬移到Gramine專案之下,並區分成多個獨立的儲存庫。

此時的Gramine具有那些功能?它不只是能在Intel SGX執行Linux應用程式,也能提供多個工具與基礎設施元件,讓應用程式在不需修改的狀態下,從原本的環境平移到基於Intel SGX的機密運算平臺執行。

關於見證方式上,Gramine能同時支援Intel SGX的就地與遠端使用,並且能使用Intel發展的兩種解決方案:進階隱私代號技術(Enhanced Privacy ID,EPID),SGX資料中心見證指令技術(Data Center Attestation Primitives,DCAP)等。

同時,Gramine也具備保護檔案的功能,能將重要檔案放置在安全區域(enclave),自動進行加解密處理。在效能最佳化的處理上,這套軟體也支援多種作法,像是非同步系統呼叫。對於包含多個處理程序的應用程式,Gramine也是少數能實作完整、安全複製處理的框架。

在容器應用的支援上,它目前整合了GSC工具,能夠自動將Docker映像轉換成Gramine映像,而基於GSC而成的容器,用戶也能透過Kubernetes進行部署,以便建置機密容器與微服務。

而關於主要公有雲環境的使用,Gramine可支援微軟Azure旗下的機密運算執行個體服務,亦即Azure Confidential VMs,也能整合容器代管服務Azure Kubernetes Services。

到了2022年1月,Gramine專案預告將釋出1.1版,研發團隊表示,這版針對Go、Rust這兩種語言寫成的應用程式,改善了工作負載效能,並且支援C語言的標準程式庫musl,用戶可根據自身對可信運算程式碼基礎(TCB)的雙位元碼大小,選擇使用glibc程式庫,或相對較輕量的musl程式庫。

Gramine 1.1也整合編譯器與應用程式執行時期工具AddressSanitizer,能在每次程式碼變更時執行在持續整合系統當中,以便在合併程式碼之前,能夠找出資安問題。

關於應用案例的開發上,Gramine專案針對AI/ML模型智慧財產的保護,推出了OpenVino Security Add-on(OVSA)外掛程式,能用於機器學習工作負載的保護。

而在2月正式發布的1.1版,面對Intel下一代伺服器CPU內建的進階矩陣延伸指令集(AMX),Gramine開始提供支援,對於CPU與NUMA拓樸架構的使用,也提供更理想的淨化處理(sanitization)。

為了快速測試相關功能,這個版本也提供HelloWorld的範例程式碼。在GSC容器的部分,Gramine 1.1支援兩個作業系統版本,分別是:Ubuntu 21.04、CentOS 8。對於AddressSanitizer的使用,1.1版也開放更多功能,例如,可啟用軟體堆疊,以及全域(globals)範圍的淨化處理,改善與SGX之間的整合。


熱門新聞

Advertisement