楊 茜 黃曉芳
(西南科技大學計算機科學與技術學院 四川綿陽 621010)
“智能合約”概念于1996年由學者Nick Szabo初次定義:一個智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在其上執(zhí)行這些承諾的協(xié)議[1],其基本理念是將合約條款嵌入到硬物理實體并通過協(xié)議與用戶接口來促進合約的自動執(zhí)行。而區(qū)塊鏈[2]的提出使智能合約的執(zhí)行獲得了可信的環(huán)境,其去中心化、不可篡改等特質使得合約能夠公平公正執(zhí)行。但是,區(qū)塊鏈中的交易存儲在公開的全局賬本中,智能合約的整個生命周期均全網(wǎng)廣播并被記錄,即使合約方可通過偽造公鑰來提高匿名性,攻擊者仍能通過分析獲取到交易信息中的關聯(lián)關系發(fā)現(xiàn)匿名地址對應的真實身份信息[3],并且大部分金融合同交易的真實數(shù)據(jù)涉及到機密不便公開,此時合約的隱私得不到保護,這便成為去中心化智能合約被廣泛采納的主要障礙。本文針對以上問題,提出基于部分盲簽名算法的智能合約模型,該模型通過引入管理節(jié)點達到更好的匿名性,使用部分盲簽名算法改善智能合約的隱私保護問題,使得區(qū)塊鏈節(jié)點無法知曉合約方的身份、所簽署合約等關鍵信息。本文引入部分盲簽名技術及管理節(jié)點并未改變區(qū)塊鏈底層協(xié)議,故與以太坊系統(tǒng)兼容。
區(qū)塊鏈(blockchain),即通過去中心化和去信任方式集體維護一個可靠數(shù)據(jù)庫的技術方案[2]。該方案讓系統(tǒng)的任意多個節(jié)點把一段時間內所有信息交流的數(shù)據(jù)通過密碼學算法計算和記錄到一個數(shù)據(jù)塊(block)中,并且生成該數(shù)據(jù)塊的唯一標識(hash值)用于鏈接(chain)下個數(shù)據(jù)塊和校驗,系統(tǒng)所有參與節(jié)點通過共識算法的執(zhí)行來確定記錄的真實性,并維護數(shù)據(jù)的一致性。區(qū)塊鏈把數(shù)據(jù)分為若干區(qū)塊,每個區(qū)塊依據(jù)特定的信息鏈接到上一區(qū)塊,前后順次相連呈現(xiàn)一套完整的數(shù)據(jù)。每個區(qū)塊的塊頭包含前一區(qū)塊的哈希值,該值是對前一區(qū)塊的塊頭進行哈希函數(shù)計算而得到,各區(qū)塊間都由這樣的哈希值與先前的區(qū)塊相連構成一個鏈條,如圖1所示。
圖1 區(qū)塊鏈工作原理Fig. 1 Working principle of blockchain
用智能合約替代紙質合約可以大大地減少在合約制定、控制協(xié)議和執(zhí)行效能上的人工花費與計算成本,而且能使以前無法完成的新類型合同成為可能,并且智能合約能夠弱化風險、擴大信任以及增加其他締約機會[4]。在文獻[5]中Nick Szabo定義了智能合約的3大重要性質:可觀察性、可驗證性與接入控制。將智能合約和區(qū)塊鏈技術相結合則更好地滿足上述3點,區(qū)塊鏈可實現(xiàn)智能合約的去中心化,即智能合約是基于安全公開賬本且沒有中心化監(jiān)管執(zhí)行的合約,參與者可以在沒有第三方監(jiān)管的前提下自動履行合約內容。如圖2所示是智能合約的概念模式:通常情況下,智能合約封裝預定義的若干狀態(tài)、轉換規(guī)則、觸發(fā)條件以及應對操作等,經各方簽署后以程序代碼的形式附著在區(qū)塊鏈數(shù)據(jù)上, 經P2P網(wǎng)絡傳播和節(jié)點驗證后記入各個節(jié)點的分布式賬本中,區(qū)塊鏈可以實時監(jiān)控整個智能合約的狀態(tài),在核查外部數(shù)據(jù)源確認滿足特定的觸發(fā)條件后激活并執(zhí)行合約[6]。
圖2 智能合約概念模式Fig. 2 Conceptual model of smart contract
以太坊[7]是首個具有圖靈完備編程語言的區(qū)塊鏈平臺,Augur[8],Counterparty[9]等基于以太坊或者通過分叉而來的智能合約應用也隨之產生。但是,現(xiàn)有的智能合約模型并未保證交易的隱私性,其主要關注點在于交易的公平性,Asokan[11]等所提出的公平交換協(xié)議中所需的中心化可信第三方等特質被Liu等[10]基于以太坊的智能合約所替換,但他們將交換的數(shù)字內容直接存儲在智能合約中,因此合約的隱私無法得到保障。Hawk[12]利用可信計算環(huán)境來解決合約內容的隱私問題,而不是針對代碼自身或是用戶查詢請求的隱私性。Quorum[13]基于實際業(yè)務情況將數(shù)據(jù)劃分為隱私和公開兩部分進行操作以保護用戶隱私。
1983年Chaum[14]首次提出盲數(shù)字簽名的方案,即簽名者在不知道所簽文件或消息具體內容的情況下進行簽署,而發(fā)送者卻可以從簽名者關于盲化后文件或消息的簽名中提取出簽名者關于真實文件或消息的有效簽名,因此,盲簽名具有盲性及不可偽造性。此后眾多學者又基于此構造出不同的盲簽名方案,1996年Abe等[15]提出了部分盲簽名方案,即允許簽名者在簽名中嵌入與消息發(fā)送者事先確定的公共消息,例如簽署時間等,且這些信息無法被移除或非法篡改。而后Abe[16]等基于盲簽名安全特性進行相應的安全證明得出部分盲簽名的安全特性,即部分盲性和不可偽造性。
本模型主要涉及合約方、管理節(jié)點、共識節(jié)點等部分,共同維護該智能合約模型的有效安全執(zhí)行。引入去信任的第三方作為管理節(jié)點,負責消息的盲化處理、全網(wǎng)廣播/監(jiān)聽合約消息、接收/驗證消息等。模型架構如圖3所示。
圖3 模型架構設計Fig. 3 Architecture design for models
本模型主要針對聯(lián)盟鏈,借助以太坊區(qū)塊鏈不僅能維護存儲匿名地址余額的全局賬本且能夠執(zhí)行用戶自定義程序的特點,并做出以下假設:(1)各節(jié)點通過不安全信道連接,且各節(jié)點行為是任意的;(2)合約方及共識節(jié)點在區(qū)塊鏈通信中可采用一次性公鑰地址,該公鑰地址可能與其身份無關聯(lián)。
部分盲簽名算法主要由系統(tǒng)建立、密鑰生成、簽名發(fā)布和簽名驗證等4個算法構成[15]。其中,簽名發(fā)布算法又分為消息盲化、公共消息生成、簽名以及脫盲等4個步驟,是消息發(fā)送者和簽名者間的交互協(xié)議。以下為密鑰生成算法、簽名發(fā)布算法各步驟與簽名驗證函數(shù)各符號。
KeyGen(sk,P):密鑰生成函數(shù)。隨機選擇sk∈N*計算pk=sk*P。pk為公鑰,sk為私鑰。
Blind(m):消息盲化函數(shù)。輸入原始消息m,輸出盲化后消息m*。
τ(c) :公共消息生成函數(shù)。輸入公共消息c,輸出關于c的格式化結果。
BlindSig(sk,τ(c),m*):簽名算法。輸入私鑰sk,公共消息τ(c),盲化后消息m*,計算輸出部分盲簽名σ*。
Blind-1(σ*):脫盲函數(shù)。輸入部分盲簽名σ*,輸出m的簽名σ。
Rl(m,τ(c)):關系函數(shù)。輸入消息m,公共消息τ(c),輸出簽名σ,表示σ是m的簽名,且公共消息為τ(c)。
Ver(sk,pk,σ):簽名驗證函數(shù)。指定合約方作為簽名驗證者進行驗證,輸入sk,pk和簽名σ,輸出驗證結果,若合法則輸出1,否則輸出0。
本文模型主要包括合約建立及合約盲簽名兩部分。其中主要符號及其含義如表1所示,圖4所示為模型執(zhí)行流程圖。
表1 符號標識及其含義Table 1 Symbol identification and its meaning
圖4 模型執(zhí)行流程圖Fig. 4 Flowchart of model execution
(1)合約建立
1) 管理節(jié)點I調用密鑰生成函數(shù)生成公私鑰對。
2)A,B使用自然語言制定合約條款M,而后編寫合約代碼m。
3) 借助形式化檢驗工具驗證合約代碼m與合約條款M的一致性及代碼正確性。
4)A,B分別計算σA,σB,對確認無誤的合約代碼m簽名后發(fā)送給I。此處簽名由以太坊的私鑰生成,而非合同簽名。
5)I對σA,σB進行校驗,若簽名合法則繼續(xù),否則執(zhí)行步驟2)。
(2)合約盲簽名
4) 某一合約方執(zhí)行簽名驗證算法,若Ver(sk,pk,σCi)=1成立個數(shù)滿足共識協(xié)議的容錯能力,則繼續(xù)新合約的建立,否則公開該簽名。
定理1 管理節(jié)點的可靠性。
在模型中,管理節(jié)點I并非可信第三方,其有可能作為惡意節(jié)點篡改合約內容或是與其余各方合謀。但是若I將合約信息泄露,其將會受到罰款大額代幣的處罰且其簽名將被公開而后信譽值降低;若I與某合約方共謀試圖篡改合約信息,其將在驗證得到m改變后遭受上述類似處罰;本方案安全性基于文獻[15],公共消息c的計算運用陷門函數(shù),由此可知I試圖偽造c無法成功。
定理2 指定任一合約方執(zhí)行部分盲簽名的簽名驗證算法即限制驗證性,有效增強合約信息的隱私性[17]。
因為驗證時須用到指定驗證者的私鑰,故其他人無法驗證。若想驗證該消息,則須通過pk=sk·P獲取,但涉及到離散對數(shù)的問題,所以其他人無法獲取驗證者私鑰,且此處選擇合約方作為驗證者能對管理節(jié)點與共識節(jié)點進行監(jiān)督,從而增強安全性及隱私性。
定理3 引入部分盲簽名算法,在進行共識之前約定當前日期等參數(shù)為公共消息,故對共識并無影響。
本文模型雖引入部分盲簽名算法,但并未改變區(qū)塊鏈底層協(xié)議,且雖隱藏了合同中涉及到用戶隱私的關鍵信息,但仍存在協(xié)商好的公共消息部分,故共識階段未受影響。
本文結合盲簽名算法的基本思想,提出了一種基于部分盲簽名技術的智能合約模型。該模型通過引入管理節(jié)點及結合部分盲簽名算法更有效地保護了合約隱私,且引入管理節(jié)點后仍是去中心化的,最后對所提出模型安全性進行了分析。
本文側重于對盲簽名算法在區(qū)塊鏈中使用的認證和分析,因此僅考慮模型的建立與安全性分析,在下一步工作中會將理論模型與實際系統(tǒng)相結合,完成進一步的驗證與分析。
[1] SZABO N. Smartcontracts: building blocks for digital markets[M]. Extropy, 1996.
[2] NAKAMOTO S. Bitcoin: A peer-to-peerelectronic cash system[J]. Consulted, 2008.
[3] MEIKLEJOHN S, POMAROLE M, JORDAN G, et al. A fistful of bitcoins: characterizing payments among men with no names[C]//Proceedings of the 2013 Conference on Internet Measurement Conference. ACM, 2013: 127-140.
[4] Smart contracts: 12 use cases for business and beyond chamber of digital commerce[EB/OL]. https://digitalchamber.org/smart-contracts/, 2016-12-06.
[5] SZABO N.Formalizing and securing relationships on public networks[J]. First Monday, 1997, 2(9).
[6] 袁勇, 王飛躍. 區(qū)塊鏈技術發(fā)展現(xiàn)狀與展望[J]. 自動化學報, 2016, (4): 481-494.
[7] BUTERIN V. A next-generation smart contract and decentralized application platform[J]. White Paper, 2014.
[8] Decentralized Prediction Markets | Augur Project[EB/OL]. https://augur.net/.
[9] Pioneering peer-to-peer finance[EB/OL].https://counterparty.io/.
[10] ASOKAN N, SHOUP V, WAIDNER M. Optimistic fair exchange of digital signatures[J]. IEEE Journal on Selected Areas Incommunications, 2000, 18(4): 593-610.
[11] LIU J, LI W, KARAME G O, et al. Towards fairness of cryptocurrency payments[J]. ArXiv Preprint ArXiv:1609.07256, 2016.
[12] KOSBA A, MILLER A, SHI E, et al. The blockchain model of cryptography and privacy-preserving smart contracts[C]//Security and Privacy (SP), 2016 IEEE Symposium on. IEEE, 2016: 839-858.
[13] MEIKLEJOHN S, POMAROLE M, JORDAN G, et al. A fistful of bitcoins: characterizing payments among men with no names[C]//Proceedings of the 2013 Conference on Internet Measurement Conference. ACM, 2013: 127-140.
[14] CHAUM D. Blind signatures for untraceable payments[C]//Advances in Cryptology. Springer, 1983: 199-203.
[15] ABE M, FUJISAKI E. How to date blind signatures[C]//Advances in Cryptology-ASIACRYPT 1996. Springer, 1996: 244-251.
[16] ABE M, OKAMOTO T. Provably secure partially blind signatures[C]//Advances in Cryptology-CRYPTO 2000. Springer, 2000: 271-286.
[17] 李彥, 張偉哲. 指定驗證者的部分盲簽名方案[J]. 中國高新區(qū), 2017, (11): 30.