導讀:本文是由騰訊可信計算團隊帶來的分享,主題是大數據協同中的隐私與可靠性保護,将介紹數據分析場景下的一些安全性和應用性的沖突,比較幾款簡典的可信計算硬件。還将分享團隊關于可信的分布式計算系統的一些想法和實踐,并介紹結合區塊鍊為可信的數據協同提供數據用法用量的存證和追溯的能力。
今天的介紹會圍繞下面四點展開:
01
數據協同中的安全問題
在傳統的數據協同場景中,我們通常會面臨如下問題:
如果有多方數據協同,各參與方通常是把數據脫敏之後以明文的形式來彙合進行計算。雖然有脫敏過程,但是數據的一些關鍵特征仍然會公開給其他的參與方。在數據成為重要的生産資料,并且法律行業規範以及用戶越來越重視個人信息保護的今天,這種做法就不再會被市場接受了。
但是也不能為了隐私保護而不去做協同。數據隻在自己的私有環境中使用也會存在問題,單一平台無法獲得全面的數據。比如在保險的風險評估中,關于經濟能力的數據體現在銀行或者金融機構的平台上,而身體健康相關的信息則體現在一些醫療機構的數據上。如果要全面評估投保風險,就需要結合醫療機構和金融機構兩方的數據來進行聯合分析。
傳統的密碼學算法,其實也能夠提供一些隐私保護的數據協同,包括多方安全計算、MPC系列的算法、聯邦學習以及同态加密,但是很多時候聯邦學習會由同态加密和MPC算法來協同地去構造聯邦學習的協議或算法。密碼算法雖然有比較強的安全性等級和強大的協同能力,但是在使用時,普遍存在性能相對較低的問題,并且對于特定的場景,通常需要專門去設計密碼算法或者密碼學算法組成的協議,用來支持特定場景的隐私數據交互,這樣就存在兼容性的問題,設計實踐的成本就會比較高。
數據算力外包到其他的算力資源平台上,會存在分布式計算外包計算的情況。在這樣情況下,數據會離開數據擁有者的環境去進行協同,數據的隐私保護也是相當重要的。
--
02
可信執行環境TEE簡介
1. TEE安全特性
針對上述問題,為了解決安全性和應用性的沖突,可信執行環境可以提供比較好的解決方案。可信執行環境在保護數據隐私和數據處理邏輯的完整性的同時,在性能方面也能提供與非可信環境相當的性能。可信執行環境在計算過程中overhead是較少的,性能損耗隻有百分之5到10左右的量級,是可以接受的性能損耗。
可信執行環境提供内存隔離以及内存的加密,使使用中的數據得到隐私保護。在節點間協同時,可以使用傳統的安全信道,比如說TLS協議或者應用層的加密來保護傳輸中數據的隐私。在持久化的場景,可信計算會有私有機制跟硬件派生出來的密鑰來加密數據并且存儲到可信域外。隻有同一個可信應用才能夠去解密這些數據,因此能夠保證可信域内外的安全。
在可靠性方面,可信執行環境提供了遠程證明,可以保證可信應用的代碼邏輯是沒有被篡改的。内存隔離也可以防止外部進程對運行中的可信進程進行狀态的篡改,在最終結果輸出時,可信執行環境可以為結果做簽名或者MAC之類的認證,來證明結果确實是來自可信執行環境。
可信執行環境在機密性、可靠性和可用性上都能夠兼顧。但也存在缺陷,比如它的安全性是不可證明的,相對于密碼算法安全性較低,但是是可以接受的安全性和可用性的折中方案。
2. TEE硬件
幾種比較典型的可信執行環境硬件包括:
配套基礎設施完善,有比較完善自洽的遠程證明(IAS、DCAP),可以證明保證運行在可信環境内的可信進程的代碼邏輯是沒有被篡改的,是與用戶審計過的代碼一緻的。Intel提供了比較完善的開發者接入的外圍工具。并且其産品普及度比較高,服務器已批量生産,并且第二代SGX在内存資源和算力資源上都有大幅提升。
設計上與SGX有所不同,可信應用運行在TrustedOS上,有較強的信任假設,需要信任固件預置的TrustedOS,這樣攻擊面就相對更大一些。原生的TrustZone缺乏遠程證明等基礎設施,華為鲲鵬服務器上搭載了華為自研的遠程證明機制。
設計方案與SGX相似,安全性與可靠性也與SGX相當,但暫未推出成熟的服務器,市場普及度上還未達到商用的程度。
專注于虛拟機隔離場景,攻擊面比SGX更大,但在犧牲一定程度的安全性的條件下,業務邏輯更容易接入。當前遠程證明存在安全漏洞,不具備邏輯完整性的保護。寄存器、IO存在數據洩露的漏洞。資源調度仍然依賴Hypervisor,不能保證業務邏輯可靠性。
3. TEE接入方式
直接使用TEE原生SDK,SGX和TrustZone支持這種接入方式;應用級别接入,對業務有侵入式改造,雖然接入難度較大,但攻擊面最小。
借助庫操作系統對指令集的轉義,減少業務對硬件的感知;基礎設施級别接入,業務少量感知,略微擴大了攻擊面。
包括用WebAssembly、Docker或VM接入,适用于AMD SEV;基礎設施級别接入,業務可無感知,易用性上有提升,但擴大了攻擊面。
--
03
TEE 上的分布式計算
使用TEE來打造協同計算能力,首先要使可信節點間可以進行安全高效的通信。
一般步驟就是每兩個節點之間進行互相驗證,保證與自己通信的其它節點都是安全可靠的。同時,交互時每兩個節點間要協商出一個通信密鑰,做加密和數據完整性的認證。用戶在接入這種系統時,需要感知到他實際連接到哪一個硬件節點,實現遠程證明,因此接入難度較大。并且交互複雜度會達到O(n2),還需要維護其他節點信息。
為了解決多節點協同的問題,我們參考區塊鍊分布式賬本的存儲理念,設計了一套TEE節點間密鑰共享的方案,在實現TEE節點協同計算,數據使用者無需感知實際對接的硬件或雲虛拟機節點,透明接入。TEE算力也可以更靈活地在計算上進行調度。
結合以上密鑰共享方案,我們設計了TEE上的分布式計算系統。首先要解決的問題是如何讓分布式計算的框架去适配TEE硬件。以Spark為例,我們将其使用到的X86架構CPU指令改成對應的SGX的擴展指令,以此讓Spark的節點運行在可信域中。在Spark架構中,參與數據的分發、計算的Driver、Executor節點需要接入前文提到的密鑰共享方案,使業務數據密文能在這些節點間流通。用戶在接入到Spark計算框架時,不需要感知到在與哪個可信硬件交互,隻需要連接到被Spark框架調度到任意可信節點上的Driver,計算集群中的可信節點就都可以獲得數據的解密能力,并且對接到密文數據庫。
另外,我們将可信計算遠程證明的範圍擴大到了Spark Executor代碼邏輯,若是遠程證明中發現Executor邏輯、版本與預期不符,則不會向這個Executor節點共享密鑰。
在整個系統中,輸入的數據和輸出的數據都是加密的,為了配合分布式計算結構,數據存儲會按字段加密,支持數據可拆分的能力。
上圖将TEE與密碼學算法在兩個場景上進行了性能的比較。
首先在區塊鍊隐私交易場景,不存在多節點協同問題,比對了基本的四則運算的性能。可以看到SGX隐私合約在性能上有着明顯的優勢。
第二個場景是隐私求交集的場景,也可以看到TEE的明顯優勢。
--
04
區塊鍊協調的數據協同
TEE可以為數據協同提供隐私保護,同時保證計算過程的完整性和可靠性。而在數據的用法用量上,TEE則無法提供可追溯的監控機制。我們就需要引入區塊鍊這樣不可篡改的存證體系,來提供存證追溯的能力。常應用在數據交易中的計費,或數據使用中的審計、追責等場景中。
在系統中,分布式的計算集群要運行在可信執行環境内,配合密鑰管理機制。區塊鍊可以運行在可信執行環境外,因為區塊鍊本身并不存儲大量的敏感數據,而隻需要存儲每次調度任務的狀态和數據使用情況,這些數據在審計中是可以公開的。區塊鍊對另外的使用者可以提供數據隔離,因此也不會存在審計數據洩漏的問題。
在發起任務時,可以将數據集哈希或簽名存證到區塊鍊上,在以後審計中可以通過哈希或簽名來找到對應數據集,同時可以記錄在任務中實際使用的數據量。
任務狀态和結果上鍊,是為了後續監控以往任務的執行狀況和準确度,以便動态優化計算集群中的模型。
這套設計方案應用在騰訊雲數鍊通産品中(如上圖架構所示)。底層可信硬件包括Intel SGX和ARM TrustZone。區塊鍊可以基于任何硬件去提供,我們僅對計算節點上的硬件做了限制。結合密鑰管理和同步機制,可以用K8S将算力調度到不同的可信硬件上去。在區塊鍊平台層,數鍊通支持長安鍊、Hyperledger Fabric或FISCO BCOS。分布式計算集群支持TensorFlow和Spark。
目前數鍊通的應用場景包括政務,各部門、各地區數據共享的場景,以及金融征信、風控等場景。
今天的分享就到這裡,謝謝大家。
分享嘉賓:張韬博士 騰訊 工程師
編輯整理:Liyao DataFun
出品平台:DataFunTalk
01/分享嘉賓
張韬 博士|騰訊計費平台部 工程師
張韬,密碼學博士,研究領域主要包括密碼學、隐私保護、匿名認證。以第一作者身份在領域内Top會議上發表過多篇論文。目前在騰訊主要負責區塊鍊中的安全相關能力建設及可信計算相關協議、方案設計。
02/關于我們
DataFun:專注于大數據、人工智能技術應用的分享與交流。發起于2017年,在北京、上海、深圳、杭州等城市舉辦超過100 線下和100 線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公衆号 DataFunTalk 累計生産原創文章700 ,百萬 閱讀,14萬 精準粉絲。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!