Private Data Objects, 私密數據對象,基於TEE、智能合約和分佈式賬本的可信計算

本文首發在 https://zhuanlan.zhihu.com/p/109270123

本文的主要內容來自論文:Bowman, Mic, et al. "Private data objects: an overview."arXiv preprint arXiv:1807.05686(2018).

背景和動機
1.1 問題

區塊鏈中的智能合約作爲“鏈碼”來執行邏輯運算,但是,智能合約的輸入數據以及執行結果在區塊鏈中是公開透明的。如果這些輸入數據和執行結果是個人隱私信息,那麼現有的區塊鏈解決方案將暴露用戶的隱私。所以,我們能不能尋求一種技術,在能夠完成智能合約在區塊鏈節點中計算的同時,又能保護用戶隱私呢?零知識證明和多方計算是其中的兩種技術選項,這裏我們使用Trusted Execution Environment(TEE)來解決這個問題。可以把TEE理解爲一個用硬件實現的安全沙盒,其中在TEE中執行的程序稱爲enclave程序。

1.2 On-chain和off-chain

在一個區塊鏈中,一個交易如果需要所有的節點都需要重複計算該交易的所有過程才能認證其合法性,那麼我們稱這個交易是on-chain的。如果一個交易的一些邏輯在區塊鏈之外執行,提交該交易到區塊鏈之後,區塊鏈節點不需要重複執行這些鏈外的邏輯,那麼我們就稱這樣的交易是off-chain的。對於一個off-chain的交易,區塊鏈所擔當的角色往往只是用於記賬,複雜的邏輯運輸放到鏈外來完成。所以,off-chain的優點很明顯,那就是不需要全網的重複計算,因此相比於on-chain有較高的性能優勢。

具備off-chain的Private Data Objects
總體架構
在這裏插入圖片描述

總共分爲四個主體,分別爲用戶,分佈式賬本,TEE service和智能合約創建者。因爲是off-chain的方式,所以TEE獨立於分佈式賬本,作爲TEE服務提供商的角色,所以我們可以使用enclave-as-a-service來表示該提供商這個角色的作用,類似於雲服務提供商。他們需要將他們的TEE相關信息註冊到區塊鏈中,包括TEE的硬件證明。分佈式賬本以區塊鏈的形式存在,它的目的主要是記賬,這裏它不參與智能合約的執行,因爲在該區塊鏈中執行智能合約不具備保密性。智能合約創建者是個人或者公司,需要註冊到區塊鏈中。一個用戶在使用已經註冊的智能合約之前,需要同意該智能合約中的內容,因此需要私底下跟智能合約創建者溝通,以便檢查智能合約的一致性、合法性和安全性。這個溝通的過程涉及到數字簽名,非對稱加密等技術,讓用戶在使用該智能合約的時候能夠驗證此合約的簽名和完整性。具體一點的話,可以如下步驟:智能合約創建者生成合約的摘要,簽名該摘要,將合約和簽名發送給用戶,用戶驗證簽名,並且驗證智能合約中的內容。在使用合約的時候需要驗證該合約是否被篡改,是否完整。

一個完整的使用流程是:

  • TEE服務提供商向區塊鏈註冊enclave信息,表明他能夠提供合格的enclave-as-a-service服務。
  • 智能合約創建者根據自己的業務需求創建智能合約,並將智能合約註冊到區塊鏈中。
  • 用戶想要使用該某一個已經註冊在區塊鏈中的智能合約,他查看和同意合約的內容之後,調用智能合約,在TEE中執行。
  • TEE將執行結果返回給用戶,用戶結果提交到區塊鏈中。區塊鏈更新相應的狀態信息。

用戶數據的安全性: 除了用戶自己,其他人都不能夠知道用戶的數據。將該數據輸出到enclave的安全邊界外面之前,需要將它加密。任何人都無法直接訪問和修改用戶數據,只能間接通過運行在enclave中的智能合約來操作。並且,所有的用戶數據都會伴隨着執行策略和數據訪問策略。通過智能合約來限制具有訪問權力的用戶才能夠訪問相應的用戶數據。

用戶如何確定遠方的TEE硬件環境正確設置了呢?TEE服務提供商在向區塊鏈註冊enclave信息的時候,需要提交和保存一個attestation證明到區塊鏈中。驗證者藉助Attestation Service,比如Intel Attestation Service來驗證。

用戶調用智能合約在TEE服務提供商的enclave中執行,enclave執行了智能合約的結果需要返回給用戶,再由用戶提交到區塊鏈中,以便更新區塊鏈中的賬本。之所以不讓enclave直接將結果提交到區塊鏈中,是因爲這個過程數據從安全的TEE到TEE以外的非安全環境,因此,當數據被enclave輸出到非安全的環境後,它可能被篡改。而且,如果用戶希望不上傳enclave的執行結果到分佈式賬本中,我們是不能相信服務提供商確實按照我們的意願不上傳。用戶可以直接通過TLS連接TEE服務提供商的enclave環境,進行數據的交流。其他人包括服務提供商是無法篡改和窺探做交流的內容的。

該方案的安全基於TEE不被敵手花費很大的成本攻破的假設。不過,每一個註冊在區塊鏈中的智能合約都有自己的一個加密密鑰,如果TEE被攻破,那麼只會泄露該enclave的智能合約下的數據。對於數據完整性問題不會受到影響,因爲我們可以採用同時使用多個enclave實力來執行相同的智能合約,對比執行結果來確定是否有enclave被攻破。

這篇論文的思路不是很清晰,不過大體思想是明確的。論文所提出的方案已經實現並開源了。具體可以參考下面鏈接,可能需要ti zi。

https://arxiv.org/pdf/1807.05686.pdf

https://docs.google.com/presentation/d/16V0kK9M_z86WwI-PfdltY5plXnkOdFuK84sWFaExH_k/edit#slide=id.p24

https://github.com/hyperledger-labs/private-data-objects

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章