?

基于零知識證明的跨鏈隱私智能合約*

2024-03-20 01:16馬曉旭羅茂玲王金寶
通信技術 2024年2期
關鍵詞:哈希密文合約

馬曉旭,羅茂玲,楊 帆,王金寶,肖 敏,唐 飛

(1.中國電子科技網絡信息安全有限公司,四川 成都 610041;2.重慶郵電大學,重慶 400065)

0 引言

智能合約是指能自動執行部分功能的協議,并減少協議執行過程中的人工干預。例如,支付合約能自動計算合同當事人的待付金額,并在滿足條件時自動執行這筆金額的支付過程。1994 年跨領域知名學者Nick Szabo 提出智能合約的概念,指出:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在合約環境中執行這些承諾的協議?!庇捎诩夹g原因,智能合約出現后一直沒有得到廣泛應用。區塊鏈為智能合約提供了一個非中心化、不可篡改和公開透明的執行環境,使得智能合約的應用越來越廣泛。智能合約在區塊鏈中的應用使得區塊鏈從以比特幣為代表的1.0 時代過渡到以以太坊為代表的2.0 時代。智能合約與區塊鏈的結合被認為是區塊鏈世界中的一次里程碑式升級[1]。

目前,代表性的智能合約應用平臺主要為以太坊(Ethereum)和超級賬本(Hyperledger Fabric)。以太坊是最早的智能合約平臺,其中的智能合約是一串代碼的合集,包括代碼中各種函數及代碼運行過程產生的各種狀態[1]。以太坊支持利用多種高級編程語言編寫智能合約,專門的編譯器將合約編譯成字節碼后部署到區塊鏈,隨后智能合約作為一段程序被運行到網絡中所有節點上,任何人無法修改已發布的合約。Fabric 智能合約(smart contact)也曾被稱為鏈上代碼(chaincode),其實質是在驗證節點(validating node)上運行分布式交易程序,用以執行特定的業務規則,最終更新賬本的狀態,在具體實現中,可以采用虛擬機或者容器等技術,構造安全隔離運行環境。

智能合約公開部署在區塊鏈上,其任何節點都可以運行智能合約的特性可能造成智能合約代碼和數據中隱私信息的泄露。目前國內外學者針對隱私智能合約開展了大量的研究。Hawk 等人[2]和Arbitrum 等人[3]在區塊鏈系統中引入代理人等可信管理器,減弱了區塊鏈的非中心化特點,也增加了針對區塊鏈系統的攻擊面。ZEXE[4]、smartFHE[5]、zkay[6]和ZeeStar[7]通過利用包括零知識證明、遞歸證明合成等密碼學知識,構建了開發隱私智能合約的通用框架,但智能合約的部署需要集成專門的插件,開發和部署代價高。

隨著區塊鏈應用的不斷普及和深入[8-10],鏈與鏈之間的互聯互通成為必要,因此,跨鏈技術應運而生??珂溂夹g能夠實現不同區塊鏈之間的跨鏈數據訪問與傳遞、跨鏈資產互換與轉移及跨鏈智能合約調用等[8]。智能合約的自動執行和不可篡改性,使得基于智能合約的跨鏈技術(如哈希時間鎖定合約)具有不依賴第三方的完全非中心化優勢??珂溁ゲ僮骺赡苌婕坝脩舻碾[私信息,比如跨鏈資產互換和轉移會暴露用戶互換和轉移的資產數量。本文針對跨鏈操作場景,提出了一個簡單易執行的跨鏈隱私智能合約方案。該方案獨立于具體的區塊鏈平臺,可以直接利用區塊鏈本身的密碼機制或根據實際場景需求靈活選擇密碼機制,實現安全和性能的平衡。該方案可在用戶本地執行實現大部分的私密計算,盡可能減少耗費和對區塊鏈性能的影響。

1 背景知識

1.1 跨鏈技術分析

跨鏈技術的目的是實現跨鏈互操作性并解決跨鏈交易原子性問題、跨鏈交易驗證問題和跨鏈交易資產管理問題[11-12]??珂溁ゲ僮髦饕ú煌瑓^塊鏈之間的跨鏈數據訪問與跨鏈數據傳遞、跨鏈資產互換與轉移和跨鏈智能合約調用等。

目前,主要的跨鏈技術有公證人機制、側鏈、中繼、分布式私鑰控制、哈希時間鎖定等。公證人機制是通過引入可信第三方作為中介進行跨鏈的數據收集、交易確認和驗證。側鏈是一個獨立于主鏈的區塊鏈系統,跨鏈交易通過側鏈與主鏈雙向錨定實現。中繼機制通過構造一個第三方公有鏈,利用跨鏈消息傳遞協議,實現各個區塊鏈跨鏈數據的傳輸和追蹤。分布式私鑰控制是利用分布式密鑰生成技術和門限密鑰共享技術,將原鏈數字資產映射到新的中間鏈上,并將資產私鑰份額共享給多個節點,達到多節點控制資產使用權的目的,通過鎖定和解鎖2 種操作進行跨鏈資產交換和價值轉移。哈希時間鎖定包括時間鎖和哈希鎖,讓交易雙方先利用智能合約鎖定資產,如果雙方都在規定的時間內輸入正確哈希值的原像,即可完成交易。哈希時間鎖定機制中交易參與方無須彼此信任,安全性較高,能夠實現跨鏈資產的交換,目前已被應用于WeCross、閃電網絡、Interledger、雷電網絡、Sprites 通道等。

1.2 簡潔非交互零知識證明

零知識證明由Goldwasser 等人[13]提出,它是運行在證明者和驗證者之間的一種兩方密碼協議,可用于進行成員歸屬命題證明或知識證明。零知識證明具有如下3 個性質:

(1)完備性。用于描述協議本身的正確性。給定某個陳述的有效證據,如果證明者和驗證者均誠實運行協議,那么證明者能使驗證者相信該陳述的正確性。通俗地講,如果陳述為真,則驗證者總是接受證明。

(2)可靠性??煽啃杂糜诒Wo誠實驗證者的利益,使其免于遭受惡意證明者的欺騙。通俗地講,如果陳述為假,則驗證者總是拒絕提供證明。

(3)零知識性。零知識性是指證明者能向驗證者證明某個陳述的正確性而不泄露除正確性以外的其他任何信息,即驗證者無法從該證明過程中獲取額外的信息。

零知識證明的3 個性質使其具備了信任建立和隱私保護的功能,具有良好的應用前景[11],與區塊鏈的信任與隱私需求高度契合,比如區塊鏈匿名密碼貨幣(如Zcash、Monero)利用零知識證明可在不泄露用戶地址及金額的同時證明某筆未支付資金的擁有權并實現轉賬;區塊鏈擴容的系列zk rollup方案將鏈上的復雜計算轉移到鏈下時,利用零知識證明保障計算過程中數據的有效性。但是,當區塊鏈的存儲容量限制和實時通信的高消費要求被用于區塊鏈的零知識證明時,需要具有簡潔性和非交互的特點,即簡潔非交互零知識證明方案更適合區塊鏈,其中簡潔性是指證明的通信復雜度與陳述規模成亞線性關系,非交互是指證明者只需向驗證者發送1 輪消息即可完成證明過程。

簡潔非交互式零知識證明(Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge,zk-SNARKs)[14-15]是通用的非交互證明結構,其能支持任何算術電路并通過由可信第三方或者安全多方計算(Secure Multi-Party Computation,SMPC)生成公共參考串(Common Reference String,CRS)模型實現非交互過程,通信量為常數個群元素,驗證復雜度可通過預處理達到常數次配對運算,因此具有恒定大小的證明驗證代價。zk-SNARKs 被用于以太坊、Zcash、Monero 等區塊鏈。

2 跨鏈隱私智能合約

2.1 哈希時間鎖定合約

2.1.1 哈希時間鎖定原理

哈希時間鎖是基于哈希鎖和時間鎖來實現的。哈希鎖是基于密碼學中的Hash 函數的單向性和抗碰撞性進行設計的。Hash 函數利用算法把任意長度的輸入變換成固定長度的輸出,該輸出就是Hash值或消息摘要(Message Digest)。

設H:X→Y是一個Hash 函數,X表示所有消息的集合(有限集或無限集),Y表示所有消息摘要構成的有限集合。對于Hash 函數的安全要求,通常采用下面的3 個問題來進行判斷:

(1)已知y∈Y,尋找x∈X,使得H(x)=y。

(2)已知x∈X,尋找x'∈X,使得x'≠x,并且H(x')=H(x)。

(3)尋找x,x'∈X,使得x'≠x,并且H(x')=H(x)。其中,消息x和x'稱為碰撞消息。

如果一個Hash 函數對上述3 個問題不可解,則認為它是安全的。第(1)個問題不可解,則稱哈希函數具有單向性;第(1)個和第(2)個問題不可解,則稱哈希函數具有抗弱碰撞性;第(1)個和第(3)個問題不可解,則稱哈希函數具有抗強碰撞性。

哈希鎖是基于Hash 函數的安全性,將Hash 值看成一把鎖,而哈希原像則是唯一可以解開這把鎖的鑰匙,即只有知道哈希原像才能解鎖,但利用哈希值直接求解哈希原像在計算過程上是不可行的。

時間鎖則是給出一個時間期限,交易雙方各自鎖定想要交換的資產,并約定在這個時間期限內進行解鎖以實現資產交換,超時則交易失敗,此時交易雙方能拿回自己的資金,避免因欺詐或交易失敗造成的損失。哈希時間鎖定原理如圖1 所示。

圖1 哈希時間鎖定原理

由圖1 可知:假如有2 條區塊鏈ChainA 和ChainB,2 個用戶Alice 與Bob 分別擁有ChainA 和ChainB 的原生資產assetA 和assetB,他們利用哈希時間鎖定交換資產。具體步驟如下:

(1)Alice 選取一個秘密隨機數R,計算哈希值H(R),發送H(R)給Bob;然后Alice 指定一個時間點T1,在ChainA 上創建資產鎖定合約,合約執行以下步驟:使用H(R)將自己在ChainA 上的assetA 加上哈希鎖;使用時間點T1將自己在ChainA 上的assetA 加上時間鎖。

只有獲得R并且在時間點T1之前才能將資產assetA 轉移走,如果到時間點T1后仍未解鎖,則允許撤銷鎖定,assetA 退回給Alice,即不會發生資產轉移。

(2)Bob 基于收到的H(R)和一個小于T1的時間點T2,在ChainB 上創建資產鎖定合約,合約執行以下步驟:使用H(R)將自己在ChainB 上的assetB 加上哈希鎖;使用時間點T2將自己在ChainB上的assetB 加上時間鎖。

只有擁有R并且在時間點T2之前才能轉移資產assetB,如果到時間點T2后仍未解鎖,則資產assetB 超時鎖定,被退回給Bob。

(3)Alice 使用R在時間點T2前調用ChainB上的智能合約解鎖assetB,并將資產轉移給自己。

(4)因為Alice 解鎖了assetB,所以Bob 也獲得R的值,Bob 使用R在時間點T1前解鎖assetA,并將資產轉移給自己。

2.1.2 哈希時間鎖定智能合約

哈希時間鎖定智能合約主要有資產鎖定、提取資產、退回資產及查詢鎖定信息4 個功能。以資產鎖定部分說明隱私保護方案。資產交換雙方首先都需要在各自的鏈上創建智能合約實現自己資產的鎖定。設雙方各自將資產鎖定到一個中間賬戶地址,簡化的哈希時間鎖定智能合約的資產鎖定的例子如圖2 所示。

圖2 簡化的哈希時間鎖定合約:資產鎖定

資產鎖定需要發送者地址sender、接收者地址receiver、轉賬數額amount、時間鎖timeLock、哈希值hashValue和中間賬戶地址midAddress等作為輸入信息,主要是完成資產從發送者賬戶到中間賬戶的轉移,并利用哈希值和時間鎖進行資產鎖定。資產接收者需要在時間鎖timeLock代表的時間之前,提供正確的哈希原像PreImage才可以提取鎖定的資產并發送給接收者賬戶。資產鎖定階段PreImage的值為空。合約的正確執行過程首先要判斷發送者余額是否充足,即require語句“require(amount≤balance[sender])”的條件是否滿足。在條件滿足及其他的校驗均通過時,發送者賬戶余額blance[sender]會自動減去轉賬的數額amount,此時將成為中間賬戶balance[midAddress]的余額增加數額amount,從而實現從發送者賬產到中間賬產的轉賬。最后需要返回哈希時間鎖定交易標識htlcId,用于后續操作進行識別,該標識由哈希時間鎖定交易的發送者sender、接收者receiver、中間賬戶地址midAddress、鎖定資產的數量amount、哈希值hashValue、時間鎖timeLock等參數進行計算得到。

在區塊鏈上,合約被公開存儲和調用,合約代碼和數據都是公開的,顯然會泄露用戶的隱私。比如哈希時間鎖定合約中雙方交換的資產數量amount和賬戶余額balance等隱私信息都是以明文的形式公開的。

2.2 跨鏈隱私智能合約規則

隱私保護是區塊鏈領域近年來的研究熱點[16],本文關注跨鏈場景下智能合約的隱私保護機制。哈希時間鎖定隱私智能合約如圖3 所示,以圖3 為例說明跨鏈隱私智能合約的設計規則。隱私智能合約以保護合約代碼和合約數據的隱私性為目的,具體設計規則如下:

圖3 簡化的哈希時間鎖定隱私合約:資產鎖定

(1)一個隱私智能合約包括一個公開的合約和若干零知識證明電路。公開的合約部分對隱私變量及其相關表達式進行了隱藏,不會泄露隱私,而零知識證明電路執行隱私部分的零知識證明,以保證合約執行的正確性,合約中的每一個函數對應一個零知識證明電路。圖3 給出了與圖2 所示哈希時間鎖定智能合約對應的隱私版本,其中的隱私變量為雙方交換的資產數額amount和各參與方賬戶的余額balance。

(2)支持隱私智能合約的區塊鏈賬本中的余額為賬戶持有者的公鑰密文。加密算法具有加法同態特性,便于根據交易在賬戶余額密文上進行加、減操作。

(3)公開合約中出現的隱私變量值都以密文形式出現,由合約調用者用自己或者其他交易參與方的地址公鑰進行加密。比如圖3 所示的隱私合約中公開部分的amount*,是用交易參與方的地址公鑰PKmidAddress對資產數額明文amount加密后得到的密文,這個加密操作由合約調用者完成,便于后續賬戶余額的密文計算。

(4)公開合約中出現的含有隱私變量的表達式可以整體用一個保密或密文變量替代。如圖2 中的表達式amount≤balance[sender],balance[sender]-amount,balance[midaddress]+amount在 圖3(a)的隱私合約中分別用P,代替,其中P取值為0或1,“0”表示require指定的條件amount≤balance[sender]不滿足,合約不會執行,“1”表示條件滿足,合約執行,P完全隱藏了隱私變量amount和balance[sender]的 值;[sender]old-amount,PKsender,ri)是資產交換發起者鎖定資產到中間賬戶地址后,將發起者的賬戶余額用發送者公鑰PKsender進行加密,ri是加密時所取的隨機數;

amount*是資產交換發起者鎖定資產到中間賬戶地址之后中間賬戶地址的余額密文,是中間賬戶之前的余額密文和交換資產數額密文amount*之和。

(5)在隱私合約中出現的需要隱私保護的數據或密文變量,由合約調用者在本地進行私密計算,將密文結果作為合約中函數的參數輸入。例如,相比圖2中函數assetLockHTLC 的輸入參數,圖3(a)的隱私合約privacyHTLC 中函數assetLockHTLC*的參數增加了binaryamount*,bool P,和binary proof,這 些參數的值由合約調用者在本地進行私密計算,其中proof是合約調用者對這些本地私密計算生成的零知識證明,用于驗證本地計算的正確性。

(6)將合約中的本地私密計算過程作為zk-SNARKs 零知識證明的約束構建證明電路,合約調用者生成相應的本地私密計算的零知識證明,由區塊鏈驗證節點執行合約和驗證。圖3(b)顯示4 個電路約束:①SKsender和PKsender是一對合法的公私鑰對;②P=1,即require 的條件必須滿足;③balance即合約調用者用自己賬戶余額和交換資產數額明文計算新的賬戶余額,并用自己的公鑰進行加密得到新的余額密文;約束④顯示中間賬戶余額更新方法⊕amount*。由于合約調用者可能不是中間賬戶地址的擁有者,不能解密存儲在區塊鏈賬本中的中間賬戶余額密文,根據規則1,這個密文是用中間賬戶地址對應的公鑰PKmidAddress加密,所以合約調用者需要先利用公鑰PKmidAddress對amount進行加密得到密文amount*,然后利用加密算法的加法同態性,直接在密文上進行加法運算,對中間賬戶地址余額進行更新。另外,密文、公鑰和調用者生成的證明作為零知識證明電路的公開輸入,調用者的私鑰和調用者加密所取的隨機數作為零知識證明電路的私密輸入。

圖3 中各個變量代表的含義解釋如下:

①PKsender和PKmidAddress分別為資產交換發起者地址和中間賬戶地址對應的公鑰;

②amount和amount*分別為交換資產數額明文和用PKmidAddress加密的密文;

③P取值為0 或1,“0”表示require指定的條件不滿足,合約不會執行,“1”表示require指定的條件滿足,合約執行;

④balance[sender]old和分別為資產交換發起者鎖定資產到中間賬戶地址之前發起者的賬戶余額明文和用PKsender加密的密文;

⑤balance[sender]new和分別為資產交換發起者鎖定資產到中間賬戶地址后發起者的賬戶余額明文和PKsender加密的密文;

⑥balance[midAddress]old和分別為資產交換發起者鎖定資產到中間賬戶地址之前中間賬戶地址的余額明文和用PKmidAddress加密的密文;

⑦balance[midAddress]new和分別為資產交換發起者鎖定資產到中間賬戶地址后的中間賬戶地址的余額明文和用PKmidAddress加密的密文;

⑧proof為資產交換發起者對輸入的隱私數據的零知識證明;

⑨SKsender為資產交換發起者地址和中間賬戶地址對應的私鑰;

⑩{…,ri,…}為加密時所取的隨機數。

3 分 析

3.1 安全分析

規則3 和規則4 確保智能合約的數據和代碼隱私都受到保護,規則5 和規則6 保證所有的私密計算都在本地執行,同時能夠對執行結果進行零知識驗證,本地執行私密計算確保隱私不會泄露,零知識證明的驗證實現在不泄露隱私的前提下保證合約的正確執行。

跨鏈隱私智能合約的具體執行可以利用區塊鏈支持的橢圓曲線密碼機制實現,包括基于橢圓曲線的加密和zk-SNARKs 等。在不同的應用場景下,也可以選擇其他更為輕量級的密碼方案。本文方案沒有與具體的密碼方案進行綁定,具有很好的靈活性和適應性。同態加密算法主要用于跨鏈資產轉移或互換中對賬號余額的更新,所以只需要輕量級的加法同態加密算法。對于標量數乘運算,可以轉換為加法運算。

3.2 性能分析

在性能方面,從合約部署和執行2 個過程對隱私智能合約和普通智能合約進行對比。合約部署方面,隱私合約的部署成本要高于普通合約,零知識證明電路的部署增加了存儲成本,但是此成本是一次性花費的,與之后的執行無關。在合約執行期間,所有的私密計算部分包括零知識證明的生成都由合約調用者在本地進行計算,該操作是離鏈的,不會影響區塊鏈的吞吐量。與普通智能合約相比,隱私智能合約的執行多了鏈上零知識證明的驗證操作,對于選定的zk-SNARKs 方案,驗證成本基本上是固定的。因此,隱私合約的部署和執行成本都在可接受的范圍之內。

4 結語

本文設計了一個區塊鏈跨鏈隱私智能合約方案,該方案利用加密算法和零知識證明實現對合約代碼和數據中隱私信息的保護,實現跨鏈操作中用戶的資產信息和私密數據的有效保護。該方案沒有與具體的區塊鏈平臺和密碼方案進行綁定,給出了一個具有通用性的隱私智能合約設計方案。在實際應用中可以根據具體的情景選擇密碼機制、靈活選取需要保護的隱私信息,平衡安全和性能2 個方面的需求。

猜你喜歡
哈希密文合約
一種針對格基后量子密碼的能量側信道分析框架
一種支持動態更新的可排名密文搜索方案
基于模糊數學的通信網絡密文信息差錯恢復
基于OpenCV與均值哈希算法的人臉相似識別系統
基于維度分解的哈希多維快速流分類算法
云存儲中支持詞頻和用戶喜好的密文模糊檢索
基于同態哈希函數的云數據完整性驗證算法
一種基于Bigram二級哈希的中文索引結構
合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合