零知識證明+智能合約,Origo認為隱私是區塊鏈商用的關鍵之一

零知识证明+智能合约,Origo认为隐私是区块链商用的关键之一

區塊鏈擁有防篡改與去中心化的特徵,在存證和電子證據有著一定應用場景。然而,由於性能和隱私等方面的限制,導致企業們無法接受在以太坊等區塊鏈上運行自身業務。比如,KYC(Know Your Customers)、籤合同等場景,雖然需要防篡改和存證,但是用戶並不希望洩露自身信息。

先假設一個金融行業中非常典型的 KYC 場景,理財或者保險等金融機構,在給客戶提供服務之前(事前),往往需要了解用戶是否符合特定要求,用戶需要給金融機構提供大量的個人信息以證明自身“合格”。簽訂合同之後(事後),有可能會發生糾紛,比如客戶出險,保險公司表示查證發現客戶此前提供的信息與現今不一致,保單失效;客戶卻表示當時提供的就是與現今一樣的情況。

該場景存在兩個痛點:

1、隱私。KYC 往往是大量條款,機構無須知道用戶具體資料,只需要知道用戶是否合格即可。若有一個可信的第三方可以幫機構判斷並返回結果,用戶不須透露隱私。

2、存證。雙方簽署合同之後,出現糾紛時雙方可能需要 “自證清白” 。為了防止任一方篡改合同,同樣需要有一個可信的第三方作為“公證人”,持有未被改動的合同。

3. 強制執行。除存證以外,可信的第三方還可以根據合同和條件,強制履行合約條款。

目前的公有鏈能滿足第二個和第三個,卻無法滿足第一個。以太坊等公鏈上的智能合約在代碼、輸入和輸出完全公開透明,可是在大多數的商業場景,都無需要使用到這種程度的公開透明。顯然,區塊鏈想要真正落地,還需要其他技術手段解決隱私問題。Odaily 星球日報最近接觸的智能合約平臺 Origo (白皮書)希望構建一個支持隱私合約 + 零知識證明區塊鏈網絡,滿足以上場景。

Origo 的方案包括 Layer 1(鏈上)和 Layer 2(鏈下)。Layer 1 負責存證和驗證執行,Layer 2 負責執行計算。據創始團隊成員張逸嘉介紹,合同(KYC 量表)雙方需要把智能合約涉及到的信息的哈希值放到鏈上(保證合同對應參數不可篡改);輸入數據的哈希值存到鏈上後,根據場景主鏈或雙方會將加密數據發給鏈下執行者(Executor);執行者完成計算後將結果和在鏈下生成的零知識證明(ZKP,Zero—Knowledge Proof),提交給鏈上驗證,以證明自身正確執行了運算以及得到結果。其中哈希上鍊主要是為了後續常出現合同糾紛,防止數據輸入方篡改數據。

零知識證明可以理解為 “我不告訴洩露任何有效信息的情況下證明某件事”。張逸嘉解釋,零知識證明就例如在不告訴其他人密碼的時候,通過能夠打開門來證明知道密碼這件事情。理論上只要是多項式時間能夠驗證的問題,它就能證明。

據公開資料,零知識證明在 1985 年被首次提出;2010年,Groth 實現了首個基於橢圓曲線雙線性映射的通用式零知識證明協議;2013年,一個叫做 Pinocchio 的協議實現了分鐘級別證明、毫秒級別驗證,證明大小不到300字節,將零知識證明從理論帶到了應用。Zcash使用的 SNARKs 就是基於 Pinocchio 改進。

張逸嘉也表示,零知識證明等密碼學方案都是公開的,這樣的方案才可被證明有效。Origo 團隊主要專注於工程上的優化以及製作開發工具,包括生成零知識證明的編譯器,原來零知識證明系統需要讓程序員自己寫電路以及優化電路,Origo 編譯器可將高級語言轉換成密碼學電路,優化開發流程。

Origo 的 Layer 1 目前還在開發當中,計劃使用混合共識機制,先通過 POW/POS 篩選合格節點,然後入圍節點採用 PBFT 快速達成共識。未來也會考慮使用分片(Sharding)等技術提高處理速度。在已有以太坊等成熟公鏈的基礎下,Origo 為什麼再開發一條鏈呢?張逸嘉解釋,主要是出於兩個考慮:

1、以太坊不適用於驗證零知識證明。目前以太坊上計算資源很有限,沒有對零知識證明相關的運算定義合理的gas消耗,如果在以太坊現有設置上做 ZKP 的驗證,需要消耗約半個區塊,也就是需要耗費大量的 gas(成本)。

2、以太坊在短期內不支持匿名交易(Private Transaction),這意味著雙方合同涉及的金額是公開的。目前支持 Private Transaction 的包括達世幣、門羅幣和 Zcash 等,其中 Zcash 用的加密技術也是零知識證明。Origo會在支持匿名交易,優化性能同時支持智能合約。

至於 Layer 2 ,Origo 希望用戶能自行選定執行環境,因為是否保護隱私,以及選擇怎樣的執行環境應該由參與方決定。目前可以選擇執行者就是合同參與方,這樣可以最大程度保證參與方數據安全。加之公鏈開發需要一定時間,Origo 採取的策略是先輸出解決方案(Origo inside計劃),幫助企業用戶將聯盟鏈和公鏈打通,企業用戶在公鏈上存證數據哈希,而數據源可以來自聯盟鏈,企業在鏈下執行運算。即數據提供者和執行者合一。

本質上,這種方案主要起到“電子證據”的作用,要實現絕對隱私,張逸嘉表示,有三種方式可考慮:同態加密、安全多方計算(sMPC,Secure Multi-party Computation)和未被破解的 SGX (Intel 的可信硬件產品)。Odaily星球日報曾報道過的Oasis Labs、TRIAS、Taxa等都選擇了用可信硬件構建可信執行環境(Trusted Execution Environment, TEE)這條技術路徑,鏈下隱私計算網絡Enigma、ARPA和Points則選擇了安全多方計算的方式。

同態加密是一種加密形式,它允許人們對密文進行特定的代數運算得到仍然是加密的結果,將其解密所得到的結果與對明文進行同樣的運算結果一樣。TEE和MPC我們分別在之前的報道中做過介紹。張逸嘉認為,同態加密面臨的挑戰是性能和多公鑰全同態;MPC面臨的最大挑戰之一是output無法保持隱私,其他挑戰包括隨節點增長通信複雜度增加且速度變慢,以及對於正確執行的驗證;TEE面臨的挑戰是安全性以及其驗證簽名只能是證明在指定硬件環境內運算的,不能從數學上證明正確執行,相當於需要完全信任 Intel 等某一製造商,近期SGX頻發的安全問題背景下,Oasis的Dawn Song也在Crypto 2018上表示將不再依賴於TEE而用純軟件的方式來實現隱私。各種方案都需要考慮與區塊鏈結合時面臨的驗證問題,張逸嘉表示團隊可能會選擇 MPC+ZKP的方式,同時配合一些經濟學的方案做一些簡化。

我是Odaily星球日報編輯盧曉明,探索真實區塊鏈,爆料、交流請加lohiuming,煩請備註姓名、單位、職務和事由。

參考文章:

Zcash 交易剖析(Zcash 博客)

為什麼幾乎沒人使用Zcash的匿名功能?

終極隱私(匿名)貨幣比較

零知識證明的江湖

零知識證明:一個略微嚴肅的科普

Zcash協議分析(2). 什麼是零知識證明(zero-knowledge proof)

完全同態加密

隱私保護和數據安全(一):安全多方計算

安全多方計算的關鍵技術分析


分享到:


相關文章: