李 超 ,王 健 ,劉吉強(qiáng)
1 北京交通大學(xué)智能交通數(shù)據(jù)安全與隱私保護(hù)技術(shù)北京市重點(diǎn)實驗室 北京 中國100044
2 北京交通大學(xué)計算與信息技術(shù)學(xué)院 北京 中國100044
同行評審是學(xué)術(shù)論文選拔與質(zhì)量把控的必要步驟[1-2],不僅關(guān)乎投稿人稿件的命運(yùn),也決定學(xué)術(shù)期刊或會議的發(fā)展,甚至影響整個學(xué)科領(lǐng)域的興衰。通常,期刊編委或會議主席將一篇投稿分配給復(fù)數(shù)位評審者,在一定期限內(nèi)收集評審者反饋的稿件級別(如拒絕、重投、大修、小修、接收)或分?jǐn)?shù)(如區(qū)間[0,5]內(nèi)的整數(shù)),依此做出是否接收該投稿的進(jìn)一步?jīng)Q定,這一流程在實際執(zhí)行中可能進(jìn)行多輪,直到該投稿的命運(yùn)被最終決定。
盡管同行評審的重要價值一直被學(xué)術(shù)界廣泛認(rèn)可,同行評審過程的不透明與結(jié)果的不公開卻廣受詬病。通常,同行評審是一個保密的過程,作者不知道評審者的身份,評審報告的內(nèi)容與分?jǐn)?shù)也不對外部公開。然而,近年來,學(xué)術(shù)界正逐漸重視同行評審的透明性,越來越多的機(jī)構(gòu)和學(xué)者呼吁在評審?fù)戤吅蠊_評審結(jié)果的信息,包括評審報告的內(nèi)容與分?jǐn)?shù),甚至評審者的身份。2020 年2 月,《自然》雜志發(fā)表社論[3],宣布將嘗試公開評審意見?!蹲匀弧分赋?在面向該刊審稿人的調(diào)研中,超過一半的受訪者希望出版社能進(jìn)一步推進(jìn)同行評審的透明化,該刊已有約3700 名審稿人選擇在評審后公開身份,且該刊超過80%的論文中至少有一位審稿人選擇了公開身份。《自然》宣稱,將進(jìn)一步推進(jìn)自身及其7 種子刊的評審?fù)该骰?。此?近年來,NeurIPS、ICLR等多個計算機(jī)領(lǐng)域頂級國際學(xué)術(shù)會議在逐步推進(jìn)評審結(jié)果的透明化。2021 年,NeurIPS 宣布將采用OpenReview 系統(tǒng)[4]來完成整個審稿過程,并公開評審意見與作者回應(yīng)??梢?得益于學(xué)術(shù)界的共同努力,同行評審的透明化正得到迅速推進(jìn),從而可能一方面提升評審意見質(zhì)量,另一方面遏制評審者的不合規(guī)行為,包括評審者故意對低質(zhì)量投稿打高分以促使其被接收,或故意對高質(zhì)量投稿打低分以阻止其被收錄。
盡管OpenReview 等同行評審系統(tǒng)不斷涌現(xiàn),這些系統(tǒng)的中心化本質(zhì)可能導(dǎo)致一系列問題。這些中心化的系統(tǒng)迫使其用戶選擇相信系統(tǒng)運(yùn)營方,導(dǎo)致系統(tǒng)的安全性受制于對單一實體的信任。更重要的是,即使系統(tǒng)運(yùn)營方確實是可信的,評審過程仍可能面臨運(yùn)營方無法控制的安全事故,例如無法預(yù)期的安全漏洞和內(nèi)部攻擊[5-6]。近年來,起源于比特幣[7]的區(qū)塊鏈技術(shù)取得迅速發(fā)展。區(qū)塊鏈建立在去中心化的對等網(wǎng)絡(luò)之上,交易(transaction)以數(shù)據(jù)形式由全網(wǎng)節(jié)點(diǎn)備份,交易順序和內(nèi)容的一致性和不可篡改性由共識機(jī)制保障。區(qū)塊鏈開創(chuàng)性地構(gòu)建了去中心化的信任,使人們可以選擇信任區(qū)塊鏈底層密碼學(xué)技術(shù)的可靠性及對等網(wǎng)絡(luò)中大部分節(jié)點(diǎn)的誠實性,而無需被迫信任單一實體。以比特幣為代表的第一代區(qū)塊鏈僅支持用戶間的轉(zhuǎn)賬交易,缺乏金融領(lǐng)域外的應(yīng)用空間。2014 年,以太坊[8]作為首個支持圖靈完備智能合約[9]的第二代區(qū)塊鏈平臺,使區(qū)塊鏈具備可編程性,極大地拓展了區(qū)塊鏈技術(shù)的應(yīng)用場景。截止到2021 年8 月,以太坊的市值已超過3650億美元[10],基于以太坊開發(fā)的去中心化應(yīng)用(decentralized application,DAPP)已超過2800 個[11],覆蓋社交、開發(fā)、游戲、服務(wù)、健康等眾多領(lǐng)域。去中心化應(yīng)用DAPP 與傳統(tǒng)APP 應(yīng)用的核心區(qū)別在于,DAPP 的后端邏輯以智能合約方式部署在區(qū)塊鏈上,一個DAPP 可包含多個智能合約,每個智能合約通常由多個函數(shù)組成。每個函數(shù)的執(zhí)行需由用戶提交到區(qū)塊鏈中的對應(yīng)交易觸發(fā)。當(dāng)區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)接收到用戶的交易,將基于交易內(nèi)容執(zhí)行指定智能合約中的指定函數(shù),函數(shù)的執(zhí)行結(jié)果將由全網(wǎng)節(jié)點(diǎn)驗證,從而在去中心化環(huán)境中保障執(zhí)行結(jié)果的確定性和正確性,進(jìn)而舍棄對中心化實體的依賴。以太坊擁有成熟的技術(shù)與活躍的社區(qū),為構(gòu)建去中心化的評審系統(tǒng),并克服中心化評審系統(tǒng)的單點(diǎn)信任缺陷奠定了堅實基礎(chǔ)。近期,文獻(xiàn)[12]提出基于以太坊的評審協(xié)議Ants-Review,該協(xié)議將評審過程的管理流程編寫為智能合約,要求投稿方、評審方、(會議或期刊)主辦方等協(xié)議參與方按照協(xié)議規(guī)定調(diào)用函數(shù),完成稿件的評審流程。Ants-Review協(xié)議成功實現(xiàn)了評審流程的去中心化,但該協(xié)議面臨兩個具有挑戰(zhàn)性的問題。首先,現(xiàn)階段的Ants-Review 協(xié)議無法保障評審的匿名性。具體來說,投稿的評審人一旦被指派,其身份將被記錄進(jìn)賬本,目的是對指派進(jìn)行不可篡改的記錄,以在未來進(jìn)行審計、獎勵和追責(zé)。然而,由于區(qū)塊鏈記錄的信息是透明公開的,Ants-Review 中評審方的身份在評審結(jié)果產(chǎn)生前被公開,不利于維護(hù)評審過程的公平性。其次,Ants-Review 協(xié)議不具備可擴(kuò)展性。具體來說,該協(xié)議要求每位評審方通過調(diào)用智能合約中的數(shù)個函數(shù)完成評審,然而以太坊中每個函數(shù)的調(diào)用都需要花費(fèi)一定數(shù)量鏈上資源,這導(dǎo)致包含n個評審方的協(xié)議執(zhí)行需花費(fèi)O(n) 鏈上資源,難以被應(yīng)用到實際場景。
本文余下各章節(jié)內(nèi)容如下: 我們首先在第二節(jié)中介紹與本文內(nèi)容相關(guān)的背景知識;在第三節(jié)中,我們描述本文采用的多個模型,包括基于區(qū)塊鏈的匿名評審模型與安全模型,并介紹協(xié)議設(shè)計的目標(biāo);在第四節(jié)中,我們首先介紹一種基礎(chǔ)的基于區(qū)塊鏈的評審協(xié)議,分析改進(jìn)該基礎(chǔ)協(xié)議以支持匿名和輕量化的主要挑戰(zhàn),從而提出改進(jìn)后的輕量級匿名評審協(xié)議BLAR;接著,我們在第五節(jié)中對BLAR 協(xié)議進(jìn)行安全分析與成本分析,并在第六節(jié)中在以太坊官方測試網(wǎng)絡(luò)上實現(xiàn)和評估BLAR 協(xié)議,并與現(xiàn)有工作進(jìn)行對比;最后,我們在第七節(jié)對全文工作進(jìn)行總結(jié)。
在本節(jié)中,我們介紹區(qū)塊鏈與智能合約相關(guān)的背景知識,并介紹本文采用關(guān)鍵密碼學(xué)工具。為了便于表述,考慮到以太坊[8]是近年來最具代表性的智能合約平臺,擁有最廣泛的用戶群體與最活躍的社區(qū)環(huán)境,本文中智能合約的相關(guān)討論在以太坊環(huán)境中進(jìn)行,但文中的解決方案也適用于其他智能合約平臺。
在這一小節(jié),我們基于以太坊背景環(huán)境,介紹與本文相關(guān)的區(qū)塊鏈與智能合約的基礎(chǔ)知識。
2.1.1 外部賬戶與合約賬戶
以比特幣[7]為代表的多數(shù)第一代區(qū)塊鏈系統(tǒng)僅存在一種類型的賬戶,通常對應(yīng)一對公私密鑰,其中公鑰通??捎成涞劫~戶地址,私鑰由用戶錢包應(yīng)用保存在本地,對用轉(zhuǎn)賬交易進(jìn)行數(shù)字簽名。
作為第二代區(qū)塊鏈系統(tǒng)的典型代表,以太坊實現(xiàn)了區(qū)塊鏈的可編程性,支持圖靈完備的智能合約,因而存在兩種不同類型的賬戶,即外部賬戶(Externally Owned Account,EOA) 和合約賬戶(Contract Account,CA)。其中,外部賬戶類似比特幣賬戶,是由以太坊用戶創(chuàng)建,通過一對公私密鑰控制的賬戶。用戶的錢包應(yīng)用首先生成私鑰,采用橢圓曲線數(shù)字簽名算法ECDSA-secp256k1 將私鑰映射成公鑰,最后通過SHA3 生成賬戶地址。以太坊中的每個智能合約對應(yīng)一個唯一的合約賬戶,合約賬戶由外部賬戶以創(chuàng)建智能合約的方式創(chuàng)建,并由被創(chuàng)建的智能合約的代碼控制。合約賬戶的地址由合約創(chuàng)建者地址,以及該地址發(fā)出的交易數(shù)目共同計算得出。
舉例來說,為了與以太坊區(qū)塊鏈交互,用戶需要創(chuàng)建外部賬戶(EOA),并通過一對密鑰來控制它。然后,用戶都可以通過創(chuàng)建的EOA 發(fā)送一類特殊交易來創(chuàng)建智能合約,被創(chuàng)建的智能合約將自動獲得合約賬戶,以及20 字節(jié)地址作為該賬戶唯一標(biāo)識。
2.1.2 交易類型與交易費(fèi)用
以比特幣為代表的第一代區(qū)塊鏈系統(tǒng)普遍僅支持單一類型的交易,即賬戶間轉(zhuǎn)賬交易。以太坊將可編程的區(qū)塊鏈為目標(biāo),設(shè)置了更復(fù)雜的交易結(jié)構(gòu)和類型,以支持智能合約的部署和調(diào)用。以太坊中交易結(jié)構(gòu)的核心字段如表1 所示。根據(jù)交易接收者地址(to字段)類型的不同,以太坊中存在三種類型的交易。
表1 以太坊交易結(jié)構(gòu)Table 1 Transaction structure in ethereum
轉(zhuǎn)賬交易: 當(dāng)to 字段為EOA 地址且value 字段為非空時,交易將被以太坊虛擬機(jī)識別為轉(zhuǎn)賬交易。該類型交易用于將value 字段指定數(shù)額的以太幣(以太坊中的密碼學(xué)貨幣)從發(fā)送方控制的EOA 轉(zhuǎn)移到接收方控制的EOA。發(fā)送方EOA 的賬戶余額必須大于value 字段的值,否則交易將失敗。
合約創(chuàng)建交易: 當(dāng)to 字段為空(0x0)地址且data字段為非空時,交易將被以太坊虛擬機(jī)識別為合約創(chuàng)建交易。該類型交易用于創(chuàng)建新的智能合約。具體來說,用戶首先使用高級的面向合約的編程語言(如Solidity[13])創(chuàng)建的一段智能合約程序,隨后將高級語言的智能合約編譯為以太坊虛擬機(jī)可識別的低級字節(jié)碼語言,并在構(gòu)建交易的過程中將字節(jié)碼填入data 字段。合約創(chuàng)建交易進(jìn)入?yún)^(qū)塊后,礦工將分配新的用于該合約對應(yīng)CA 的存儲空間,并將data 字段的字節(jié)碼存儲于該空間內(nèi)。
函數(shù)調(diào)用交易: 當(dāng)to 字段為CA 地址且data 字段為非空時,交易將被以太坊虛擬機(jī)識別為函數(shù)調(diào)用交易。該類型交易用于調(diào)用已創(chuàng)建的智能合約中的函數(shù)。具體來說,在構(gòu)建交易的過程中,用戶將目標(biāo)智能合約的CA地址填入to字段,并將該合約中擬調(diào)用函數(shù)的相關(guān)信息填入data 字段,包括擬調(diào)用函數(shù)的名稱、輸入?yún)?shù)的類型和值。此后,礦工可通過讀取to 字段和data 字段的內(nèi)容,定位用戶擬調(diào)用的函數(shù)所在CA,從該CA 對應(yīng)存儲空間的字節(jié)碼中獲取擬調(diào)用函數(shù)對應(yīng)的邏輯代碼,并基于用戶提供的輸入?yún)?shù)值計算該函數(shù)的執(zhí)行結(jié)果,最終將結(jié)果更新到區(qū)塊鏈狀態(tài)中。
綜上,三種類型的交易遵從相同的交易結(jié)構(gòu),以太坊虛擬機(jī)根據(jù)交易中不同字段內(nèi)容的格式,自動對交易進(jìn)行分類,并采取不同策略根據(jù)交易執(zhí)行結(jié)果更新區(qū)塊鏈狀態(tài)。例如,轉(zhuǎn)賬交易通常使發(fā)送方與接收方的賬戶余額發(fā)生變動,合約創(chuàng)建交易通常產(chǎn)生新的智能合約及合約賬戶CA,函數(shù)調(diào)用交易可改變被調(diào)用合約中的變量值,及改變發(fā)送方與接收方的賬戶余額。
以太坊交易具備可追溯性,且執(zhí)行結(jié)果難以被篡改。用戶在構(gòu)建交易的最后一步,基于橢圓曲線數(shù)字簽名算法,使用所控制的EOA 的私鑰對交易進(jìn)行數(shù)字簽名,并將簽名信息v、r、s 三元組填入交易體中一并發(fā)送?;谠摵灻畔?任何人可計算并核實簽名者,即交易發(fā)送方EOA 地址,從而使交易具備可追溯性。此外,類似比特幣,以太坊采用工作量證明(Proof of Work,PoW)共識協(xié)議[14]。簡單地說,以太坊中數(shù)以萬計的礦工持續(xù)消耗算力計算難題(puzzle),最先解出答案的礦工有權(quán)生成包含交易內(nèi)容的最新區(qū)塊,此后全網(wǎng)基于該區(qū)塊中交易的執(zhí)行結(jié)果對區(qū)塊鏈狀態(tài)進(jìn)行同步以保持一致性。攻擊者如想篡改交易執(zhí)行結(jié)果,需具備可與全網(wǎng)礦工競爭的海量算力,這在實際中很難實現(xiàn),因而交易的執(zhí)行結(jié)果普遍被認(rèn)為是難以篡改的。
值得注意的是,以太坊中交易的執(zhí)行并非免費(fèi),需要花費(fèi)燃?xì)?Gas),進(jìn)而產(chǎn)生交易費(fèi)用。以太坊中任一筆交易首先收取21000 Gas 的基礎(chǔ)費(fèi)用,在此基礎(chǔ)上,交易執(zhí)行過程中的每一條指令都根據(jù)其種類收取對應(yīng)的Gas 費(fèi)用。例如,通過執(zhí)行SSTORE 指令將某一變量值從零變?yōu)榉橇銜杖?1000 Gas,通過執(zhí)行CALL 指令創(chuàng)建了一個新的賬戶會收取25000 Gas。根據(jù)交易執(zhí)行的復(fù)雜程度,一筆交易花費(fèi)的Gas 總量可達(dá)數(shù)百萬,但不可超過單一區(qū)塊所允許的最大Gas 量限制。在以太坊中,為了發(fā)送可執(zhí)行的交易,用戶需要保證作為交易發(fā)送方的EOA 余額足夠,這是因為礦工在執(zhí)行交易時,會按照浮動的匯率從發(fā)送方EOA 收取交易費(fèi)用,即收取對應(yīng)交易花費(fèi)Gas 總量的以太幣。一旦余額不足,交易將失敗,區(qū)塊鏈狀態(tài)會回滾。Gas 系統(tǒng)對以太坊很重要,交易費(fèi)用被用于獎勵礦工,這有助于激勵礦工保持誠實,抑制拒絕服務(wù)攻擊,并鼓勵提升智能合約編程的高效性。另一方面,Gas 系統(tǒng)對協(xié)議設(shè)計的可擴(kuò)展性提出了更高的要求,在參與者眾多的協(xié)議中,即使單一筆交易的費(fèi)用不高,一輪協(xié)議產(chǎn)生的總交易費(fèi)用可能非常高。
2.1.3 節(jié)點(diǎn)間通訊
同多數(shù)區(qū)塊鏈系統(tǒng)一樣,以太坊中的節(jié)點(diǎn)組成點(diǎn)對點(diǎn)(peer-to-peer,P2P)網(wǎng)絡(luò)。以太坊社區(qū)提出了Whisper 協(xié)議[15],以支持P2P 網(wǎng)絡(luò)中的節(jié)點(diǎn)間通訊。在默認(rèn)情況下,基于Whisper 協(xié)議發(fā)送的消息被廣播到整個P2P 網(wǎng)絡(luò),所有消息必須以對稱或非對稱的方式加密,并可被擁有對應(yīng)密鑰的節(jié)點(diǎn)解密。例如,一個節(jié)點(diǎn)可以在本地生成一對非對稱的密鑰,并將公鑰存儲到區(qū)塊鏈上,使公鑰全網(wǎng)可見,從而獲得其他節(jié)點(diǎn)利用該公鑰和Whisper 協(xié)議傳遞的加密消息,并對該消息解密獲悉其中內(nèi)容。
在這一小節(jié),我們介紹本文中協(xié)議的設(shè)計使用到的幾個關(guān)鍵的密碼學(xué)工具。
2.2.1 默克爾樹
默克爾樹[16]是一種二叉樹,每一個節(jié)點(diǎn)都是其兩個子節(jié)點(diǎn)的哈希,最頂層節(jié)點(diǎn)是根節(jié)點(diǎn)?;诟?jié)點(diǎn)和默克爾證明,用戶可以在O(logn) 時間內(nèi)完成對n個葉子節(jié)點(diǎn)中任一節(jié)點(diǎn)的驗證。因此,默克爾樹作為一種高效的方法,僅需將根節(jié)點(diǎn)哈希值存儲在區(qū)塊鏈上,便可驗證某特定數(shù)值在一大組數(shù)值中是否存在,被廣泛應(yīng)用于區(qū)塊鏈領(lǐng)域。例如,以太坊中的世界狀態(tài)樹、交易樹、收據(jù)樹采用的數(shù)據(jù)結(jié)構(gòu)均是默克爾樹的變體。本文使用了默克爾樹的標(biāo)準(zhǔn)概念,并將從葉節(jié)點(diǎn)集合獲得根節(jié)點(diǎn)哈希值root的運(yùn)算表示為
2.2.2 Keccak-256 哈希函數(shù)
Keccak-256[17]作為SHA-3 密碼哈希函數(shù)競賽的獲勝算法,被廣泛應(yīng)用在包括以太坊在內(nèi)的區(qū)塊鏈系統(tǒng)中。以太坊Solidity 語言提供函數(shù)keccak256(…)returns (bytes32),可直接在智能合約中計算哈希值。本文使用的哈希函數(shù)均為Keccak-256,哈希運(yùn)算表示為hash← H (·)。
2.2.3 ECDSA 數(shù)字簽名
以太坊和比特幣等多個主流區(qū)塊鏈系統(tǒng)均采用橢圓曲線數(shù)字簽名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)[18]。ECDSA 簽名由兩個整數(shù){r,s} 組成,在此基礎(chǔ)上,以太坊引入額外的恢復(fù)標(biāo)識符v,形成三元組簽名{v,r,s} 。以太坊社區(qū)提供JavaScript API 對任意消息msg進(jìn)行簽名,簽名運(yùn)算表示為vrs←S (H (msg)),其中 H(msg)為msg的Keccak-256 哈希。此外,以太坊Solidity 語言提供全局函數(shù)ecrecover(…) returns (address),可直接在智能合約中校驗簽名,表示為signer←V (H(msg),vrs),輸出的signer為簽名者的以太坊地址。
2.2.4 星際文件系統(tǒng)
星際文件系統(tǒng)(InterPlanetary File System,IPFS)是采用基于內(nèi)容尋址、分布式的、點(diǎn)對點(diǎn)的新型超媒體傳輸協(xié)議的新型分布式文件系統(tǒng)[19]。存儲在IPFS 中的文件對應(yīng)基于文件內(nèi)容的不變的永久性鏈接。該鏈接關(guān)聯(lián)文件內(nèi)容的哈希值,因此文件內(nèi)容的微小變化將導(dǎo)致完全不同的鏈接,而使用同一鏈接下載的文件內(nèi)容一定一致。通過將文件的IPFS 鏈接存儲到區(qū)塊鏈中,不同用戶可利用該鏈接從IPFS 系統(tǒng)獲取內(nèi)容一致的文件,這避免了直接將文件存儲到區(qū)塊鏈中并共享給用戶所產(chǎn)生的昂貴費(fèi)用。為了降低在以太坊區(qū)塊鏈上的數(shù)據(jù)存儲成本,本文采用IPFS 進(jìn)行文件共享,表示為link←I(file),file←R (link)。
在本節(jié)中,我們首先描述基于區(qū)塊鏈的評審系統(tǒng)模型。在此基礎(chǔ)上,我們介紹本文采用的安全模型。最后,我們說明本文協(xié)議的設(shè)計目標(biāo)。
在這一小節(jié),我們首先對匿名評審全過程進(jìn)行抽象,接著描述傳統(tǒng)中心化的評審系統(tǒng)模型,最后提出基于區(qū)塊鏈的評審系統(tǒng)模型。
參考學(xué)術(shù)論文的同行評審場景,我們將匿名評審全過程抽象為四個階段,即論文提交階段、匿名指派階段、論文評審階段、結(jié)果公示階段。匿名評審全過程涉及到三類參與方,即期刊或會議的主辦方(Host,表示為H)、m位投稿方(Creater,表示為n位評審方(Reviewers,表示為)。接下來,我們首先描述不使用區(qū)塊鏈的。
參考OpenReview[4]等傳統(tǒng)中心化的評審系統(tǒng),我們抽象出中心化的評審系統(tǒng)模型,如圖1 所示。在提交階段,主辦方在期刊或會議網(wǎng)站發(fā)布投稿要求(如會議的Call For Paper),投稿方向網(wǎng)站提交論文。在指派階段,主辦方對每篇論文的評審方進(jìn)行指派,并郵件通知指派結(jié)果。在提交階段,評審方向期刊或會議網(wǎng)站提交分?jǐn)?shù)。最后,在公示階段,主辦方向每位投稿方郵件通知評審結(jié)果。
參考Ants-Review[12]等去中心化的評審系統(tǒng),結(jié)合本文抽象出的四個階段,我們提出本文使用的基于區(qū)塊鏈的評審系統(tǒng)模型,如圖2 所示。該模型將圖1 中心化的服務(wù)器替換為去中心化的智能合約,以克服中心化系統(tǒng)的單點(diǎn)瓶頸。有別于圖1 中參與方間的兩類交互方式,圖2 中參與方間信息交互采用被相關(guān)研究[20-21]廣泛認(rèn)可的兩類模式:
(1) 鏈上公開模式: 參考2.1.2.小節(jié)介紹的以太坊交易結(jié)構(gòu)及類型,參與方可將信息(如論文、投稿要求、評審分?jǐn)?shù)等)填入函數(shù)調(diào)用交易,通過調(diào)用智能合約中的函數(shù),使該信息被記錄進(jìn)區(qū)塊鏈,并向全網(wǎng)節(jié)點(diǎn)公開。在該模式中,我們假設(shè)區(qū)塊鏈系統(tǒng)具備一致性、可用性及不變性。具體來說,當(dāng)一個參與方通過交易向區(qū)塊鏈提交一條消息,在有限的時間區(qū)間T內(nèi),其他參與方可從賬本中獲得該消息,內(nèi)容一致且在未來不可變。
(2) 鏈下通訊模式: 參考2.1.3 小節(jié)介紹的以太坊節(jié)點(diǎn)間通訊協(xié)議Whisper[15],參與方可利用Whisper協(xié)議建立點(diǎn)到點(diǎn)的通信信道,從而向特定的接收方傳遞信息。我們假設(shè)每個協(xié)議參與方都可建立與任意其他參與方間的鏈下信道,且該信道是可靠的,即通過該信道傳輸?shù)男畔⒉粫G失。我們假設(shè)鏈下通訊符合同步模型,即通過該信道傳輸信息的時延存在確定的上界T' 。
圖2 中四個階段具體描述如下:
圖2 基于區(qū)塊鏈的評審系統(tǒng)模型圖Figure 2 Blockchain-based review system model
(1) 論文提交階段: 在此階段中,主辦方首先提交投稿要求到智能合約,投稿方在時限內(nèi)提交符合主辦方要求的論文到智能合約。
(2) 匿名指派階段: 在此階段中,主辦方基于自主定制的規(guī)則(如基于聲望、基于適配程度等),建立投稿集合與評審方集合的映射。主辦方通過鏈下信道告知每位評審方所需評審的稿件,但不向任何第三方透露該指派信息。
(3) 論文打分階段: 在此階段中,評審方按照主辦方在指派階段分配的稿件信息,對稿件進(jìn)行打分,且須在時限內(nèi)將打分結(jié)果提交到智能合約。主辦方根據(jù)智能合約上的打分結(jié)果,統(tǒng)計各稿件最終分值與排序。
(4) 結(jié)果公示階段: 主辦方向智能合約提交評審結(jié)果及評審者名單。如對公示結(jié)果有異議,或?qū)χ鬓k方、評審方操作行為有異議,可在此階段提出質(zhì)疑。
在這一小節(jié),我們首先描述攻擊者假設(shè),接著介紹any-trust 安全模型,最后討論攻擊者可能采取的攻擊行為。
攻擊者假設(shè): 參考文獻(xiàn)[22-23]中提出的攻擊者假設(shè),協(xié)議中參與方的安全性存在四種可能,即可信參與方、半誠實攻擊者、理性攻擊者、惡意攻擊者。具體來說,可信參與方誠實地執(zhí)行協(xié)議,不會違背協(xié)議。三類攻擊者的區(qū)別如下:
(1) 半誠實攻擊者: 該類型攻擊者的行為遵循協(xié)議,但試圖從可用的中間結(jié)果獲取更多信息;
(2) 惡意攻擊者: 該類型攻擊者可以采取任何惡意行為,其行為不顧及自身利益;
(3) 理性攻擊者: 該類型攻擊者的行為由自身利益驅(qū)動。在面臨遵循協(xié)議還是違法協(xié)議的選擇時,理性攻擊者會基于自身預(yù)期收益進(jìn)行選擇。當(dāng)遵循協(xié)議帶來的預(yù)期收益更高時,會選擇遵循協(xié)議,只有當(dāng)違反協(xié)議的預(yù)期收益更高時,才會選擇違反協(xié)議。例如,如果該類型攻擊者能夠預(yù)期其違反協(xié)議(提交錯誤結(jié)果)的效果為0(錯誤結(jié)果會被糾正)且懲罰大于0(沒收押金),便不會選擇違反協(xié)議,而惡意攻擊者在這種情況下仍可能選擇違反協(xié)議。
近年來,大量研究認(rèn)為,在許多實際情況下,半誠實攻擊者的假設(shè)太弱,而惡意攻擊者的假設(shè)太強(qiáng),因此由個人利益驅(qū)動的理性攻擊者假設(shè)在許多攻擊場景中更貼合實際。
Any-trust 安全模型: 參考文獻(xiàn)[24-25]中提出的any-trust 安全模型,本文設(shè)置一條維護(hù)協(xié)議安全性的底線,即在主辦方H和n位評審方這(1 +n) 位參與方中僅存在一位誠實遵循協(xié)議的可信參與方,該可信參與方既可能是主辦方H,又可能是某位評審方Rj。換言之,只要存在至少一位可信參與方,協(xié)議安全性就能得到保障。我們進(jìn)一步假設(shè),除這一位可信參與方以外的全部n位參與方都既可能是理性攻擊者,又可能是惡意攻擊者(由于半誠實攻擊者的假設(shè)太弱,我們剔除該假設(shè))。也就是說,當(dāng)僅存在一位可信參與方時,存在兩種極端可能:
(1) 最實際any-trust 安全模型: (1 +n) 位參與方包含一位可信參與方以及n位理性攻擊者,沒有任何參與方會在有損自身利益的情況下進(jìn)行攻擊行為。
(2) 最壞any-trust 安全模型: (1 +n) 位參與方包含一位可信參與方以及n位惡意攻擊者。
此外,考慮到多數(shù)情況下主辦方相對于評審方更缺乏泄露評審信息的動機(jī),如論文出版方希望獲得更優(yōu)秀的投稿,我們假設(shè)主辦方不會在公示期前泄露指派信息,但評審方可能會出于自身利益在公示期前泄露指派信息。
攻擊行為: 攻擊行為指攻擊者采取的違背協(xié)議內(nèi)容的行為。在基于區(qū)塊鏈的評審系統(tǒng)模型中,攻擊行為僅可能發(fā)生在打分階段和公示階段,即三類參與方全部加入?yún)f(xié)議后。具體來說,如果主辦方?jīng)]有提交投稿內(nèi)容,或投稿方?jīng)]有提交論文,或評審方?jīng)]有接到審稿通知,則三類參與方間契約尚未達(dá)成。在打分階段,協(xié)議要求評審方提交分?jǐn)?shù),評審方可能的攻擊行為包括不提交分?jǐn)?shù)或重復(fù)提交分?jǐn)?shù)。在公示階段,協(xié)議要求投稿方提交結(jié)果,投稿方可能的攻擊行為包括不提交結(jié)果或提交錯誤結(jié)果。我們將在4.3.5 小節(jié)對這四種攻擊行為進(jìn)行更進(jìn)一步的討論。
本文擬提出安全、可擴(kuò)展的匿名評審協(xié)議,使協(xié)議在最壞any-trust 安全模型下依然是安全的,而在最實際any-trust 安全模型下能做到可擴(kuò)展。
在安全性方面,本文要求,在僅存在一位可信參與方,其余n位參與方均為惡意攻擊者的最壞any-trust 安全模型下,協(xié)議也須是安全的。
定義1.安全匿名評審協(xié)議.面向基于區(qū)塊鏈的評審系統(tǒng)模型設(shè)計的協(xié)議滿足下述安全特性:
活性(liveness): 只要主辦方和評審方存在至少一可信參與方,協(xié)議一定能按四階段順序執(zhí)行完畢,且一定能產(chǎn)生評審結(jié)果;
正確性(correctness): 只要主辦方和評審方存在至少一位可信參與方,產(chǎn)生的評審結(jié)果一定是符合誠實評審者打分的正確結(jié)果;
匿名性(anonymity): 只要主辦方在公示期前不透露指派信息,評審方無法證明已被主辦方選擇進(jìn)入評委會。
在可擴(kuò)展性方面,本文要求,在僅存在一位可信參與方,其余n位參與方均為理性攻擊者的最實際any-trust 安全模型下,協(xié)議是可擴(kuò)展的。由于比特幣、以太坊等區(qū)塊鏈的鏈上寫入及操作成本極高,本文主要關(guān)注鏈上通訊的效率,旨在降低協(xié)議在以太坊環(huán)境中執(zhí)行消耗的Gas 量。
定義2.可擴(kuò)展匿名評審協(xié)議.當(dāng)全部協(xié)議參與方具備理性時,面向基于區(qū)塊鏈的評審系統(tǒng)模型設(shè)計的協(xié)議,在執(zhí)行全過程的區(qū)塊鏈鏈上Gas 消耗為O(1),即消耗獨(dú)立于參與方的規(guī)模。
在本節(jié)中,我們首先介紹一種基礎(chǔ)的基于區(qū)塊鏈的評審協(xié)議,該協(xié)議描述了主辦方、投稿方、評審方三類協(xié)議參與方在提交、指派、評審、公示4 個階段的關(guān)鍵交互步驟,然而不支持匿名,且鏈上Gas消耗極高。在此基礎(chǔ)上,我們分析改進(jìn)該基礎(chǔ)協(xié)議以支持匿名和輕量化的主要挑戰(zhàn),并提出攻克這些挑戰(zhàn)的關(guān)鍵技術(shù)。最后,我們提出改進(jìn)后的輕量級匿名評審協(xié)議BLAR。
基礎(chǔ)協(xié)議概覽如圖3 所示。該協(xié)議的鏈上邏輯以包含多個函數(shù)的智能合約形式存在。參與方可通過函數(shù)調(diào)用交易執(zhí)行所需函數(shù)(圖中實線),也可通過鏈下信道傳遞信息(圖中點(diǎn)線)。
圖3 基礎(chǔ)協(xié)議概覽Figure 3 Basic protocol sketch
協(xié)議具體步驟如下:
(1) 評審方為獲得評審資格,需通過調(diào)用函數(shù)register()進(jìn)行注冊,該函數(shù)需提交評審方個人資料的ipfs鏈接,以允許主辦方進(jìn)行查詢和選擇。此外,該函數(shù)需向智能合約轉(zhuǎn)賬一定數(shù)量以太幣作為安全押金,以懲罰評審方可能的惡意行為。評審方僅需注冊一次,使其相關(guān)資料關(guān)聯(lián)到智能合約中,便可參加任意場次論文評審。
(2) 主辦方通過調(diào)用函數(shù)open()初始化協(xié)議,并開啟提交階段,該函數(shù)需提交各階段截止時間與投稿要求的ipfs鏈接,并向智能合約轉(zhuǎn)賬規(guī)定數(shù)量的以太幣。
(4) 在提交階段截止后且指派階段截止前,主辦方通過調(diào)用函數(shù)assign()提交選擇的評審方賬戶地址,及分配給每個評審方的稿件編號。
(6) 在評審階段截止前,評審方通過調(diào)用函數(shù)submitR() 提交評審結(jié)果,評審結(jié)果以打分對象(score object,)數(shù)據(jù)結(jié)構(gòu)提交,具體表示為,即稿件評審分值score及評審意見的ipfs鏈接,其中評審意見為可選項。
(7) 在評審階段截止后且公示階段截止前,主辦方通過調(diào)用函數(shù)decision(),基于評審方打分,在鏈上計算出各稿件最終分?jǐn)?shù)并進(jìn)行公示。
可以看到,在基礎(chǔ)協(xié)議中,評審方的身份在指派階段就已被公開,且多個步驟要求全部投稿方或評審方調(diào)用函數(shù),導(dǎo)致該協(xié)議面臨匿名性和可擴(kuò)展性兩個主要挑戰(zhàn)。
4.2.1 匿名性
在基礎(chǔ)協(xié)議中,評審方通過調(diào)用register()函數(shù)向智能合約進(jìn)行注冊,這意味著評審方做出承諾,一旦注冊后被某位主辦方選擇,將參與對應(yīng)的評審。在指派階段,主辦方從注冊的評審方中選擇一定數(shù)量評審方組成評委會,并通過調(diào)用函數(shù)assign()向智能合約提交評審方與稿件的映射,這也意味著主辦方做出承諾,在本次評審工作中不改變選擇的評審方,并將給予獎勵,例如將該審稿人的本次服務(wù)關(guān)聯(lián)到publons[26]等學(xué)術(shù)網(wǎng)站,幫助該審稿人提升聲譽(yù)。雙方的承諾以函數(shù)調(diào)用的行為執(zhí)行,并以函數(shù)執(zhí)行結(jié)果的形式記錄進(jìn)區(qū)塊鏈中,從而被鎖定,不可篡改。在評審?fù)瓿珊?評審方可在任意時間向智能合約索要獎勵,合約基于承諾記錄及評審工作記錄,向合規(guī)的評審方給予獎勵。然而,這些記錄進(jìn)區(qū)塊鏈的信息是開放、公開的,這導(dǎo)致評委會信息,包括被選中的評審者地址及其被分配的稿件,過早在指派階段被公開。
基礎(chǔ)協(xié)議中的評審階段不具備評審方信息匿名性保障能力,導(dǎo)致匿名評審轉(zhuǎn)變成投稿方與評審方互相知道對方身份(以太坊賬戶地址)的明審,可能引發(fā)一系列安全問題。首先,現(xiàn)有研究工作已證明區(qū)塊鏈網(wǎng)絡(luò)提供的匿名性不強(qiáng)[27],即從賬戶地址不難推斷出賬戶擁有者的真實身份。例如,攻擊者可以通過目標(biāo)賬戶與其他賬戶的交互關(guān)系,利用聚類分析的方法,并結(jié)合目標(biāo)賬戶及其關(guān)聯(lián)賬戶在論壇透露的信息,推測出目標(biāo)賬戶地址并發(fā)動攻擊。其次,當(dāng)一個評審方被選擇進(jìn)入某評委會后,該評審方可能期望向所評審稿件的相關(guān)人士收取費(fèi)用牟利。在這種情況下,在評審階段公開的評委會信息有助于該評審方向投稿方證明其身份,從而促成這一不當(dāng)交易。因此,在理想情況下,區(qū)塊鏈不存儲任意可能導(dǎo)致指派信息泄露的信息,包括但不限于被選中評審方的賬戶地址或其哈希值,從而使攻擊者無法確定性地找出對應(yīng)某稿件的評審方。
4.2.2 可擴(kuò)展性
在基礎(chǔ)協(xié)議中,智能合約中的函數(shù)調(diào)用導(dǎo)致了極高Gas 消耗,主要存在三個問題:
O(n) 交易數(shù)量: 假設(shè)參與協(xié)議的評審方數(shù)量為n,且在協(xié)議某一步驟要求每個評審方調(diào)用智能合約函數(shù),則協(xié)議中將產(chǎn)生不少于n個區(qū)塊鏈交易。O(n) 的交易量增加了區(qū)塊鏈礦工的交易處理壓力,造成性能瓶頸,可造成區(qū)塊鏈網(wǎng)絡(luò)堵塞。在基礎(chǔ)協(xié)議中,投稿方調(diào)用函數(shù)submitC()及評審方調(diào)用函數(shù)submitR(),均導(dǎo)致了O(n) 交易數(shù)量。
O(n) 存儲量: 假設(shè)協(xié)議參與方數(shù)量為n,且在協(xié)議某一步驟中每個參與方向區(qū)塊鏈存儲大小為S的數(shù)據(jù),則協(xié)議中將產(chǎn)生不少于nS的區(qū)塊鏈賬本存儲量,O(n) 的存儲量增加了區(qū)塊鏈礦工節(jié)點(diǎn)的存儲壓力,造成性能瓶頸。同時,過大的區(qū)塊鏈賬本易造成區(qū)塊鏈礦工節(jié)點(diǎn)硬盤空間不足,導(dǎo)致區(qū)塊鏈維護(hù)成本提升。在基礎(chǔ)協(xié)議中,投稿方調(diào)用函數(shù)submitC()、主辦方調(diào)用函數(shù)assign()、評審方調(diào)用函數(shù)submitR()、主辦方調(diào)用函數(shù)decision()均產(chǎn)生了O(n) 存儲量。
O(n) 計算量: 假設(shè)協(xié)議參與方數(shù)量為n,則在部分場景下(如求和)對其提供的數(shù)據(jù)的處理需不少于O(n) 的計算量。在基礎(chǔ)協(xié)議中,主辦方調(diào)用函數(shù)decision()產(chǎn)生了O(n) 計算量。
上述問題都會造成區(qū)塊鏈系統(tǒng)計算或存儲資源的過度消耗,導(dǎo)致系統(tǒng)表現(xiàn)降低,極大影響系統(tǒng)工作效率和維護(hù)成本,造成系統(tǒng)瓶頸。更重要的是,上述問題會造成極高Gas 消耗,阻礙協(xié)議實用化。為了克服這些問題,本項目提出輕量級匿名評審協(xié)議BLAR,該協(xié)議輕量化的核心思想是將數(shù)據(jù)匯聚和處理從區(qū)塊鏈鏈上轉(zhuǎn)移至鏈下,而只將處理后的結(jié)果在鏈上做結(jié)算,從而極大降低區(qū)塊鏈中交易數(shù)量、存儲量及計算量。換言之,輕量級匿名評審協(xié)議不依賴區(qū)塊鏈進(jìn)行存儲與計算,而是僅利用區(qū)塊鏈進(jìn)行驗證和可信性保證,從而在最小程度造成區(qū)塊鏈鏈上負(fù)擔(dān)的情況下,保證數(shù)據(jù)匯聚與處理的可信性。
在這一小節(jié),我們介紹改進(jìn)后的輕量級匿名評審協(xié)議BLAR。為了方便表述,我們按照提交、指派、評審、公示四個階段,將該協(xié)議拆分成四個子協(xié)議,分別在四個小節(jié)進(jìn)行討論。
4.3.1 方案概述
BLAR 協(xié)議的四階段整體流程如圖4 所示,其中每個階段對應(yīng)一個子協(xié)議。論文提交子協(xié)議對應(yīng)投稿方向主辦方提交稿件,匿名指派子協(xié)議對應(yīng)主辦方對稿件匿名指派評審方,論文打分子協(xié)議對應(yīng)評審方提交稿件分?jǐn)?shù),結(jié)果公示子協(xié)議對應(yīng)主辦方公開論文評審結(jié)果。在下面四個小節(jié),我們分別對四個子協(xié)議進(jìn)行詳細(xì)描述。
圖4 方案概述圖Figure 4 Scheme overview diagram
4.3.2 論文提交子協(xié)議
論文提交子協(xié)議概覽如圖5 所示。該子協(xié)議的參與方包括主辦方H和m位投稿方參與方可通過函數(shù)調(diào)用交易執(zhí)行所需函數(shù)(圖中指向區(qū)塊鏈的實線),也可通過鏈下信道傳遞信息(圖中點(diǎn)線)。該子協(xié)議面臨的主要挑戰(zhàn)是將基礎(chǔ)協(xié)議中的submitC()函數(shù)調(diào)用輕量化。
圖5 論文提交子協(xié)議Figure 5 Paper submission sub-protocol
協(xié)議具體步驟如下:
(1) 主辦方通過調(diào)用函數(shù)open()初始化協(xié)議,并開啟提交階段,該函數(shù)需提交各階段截止時間與投稿要求的ipfs鏈接,并向智能合約轉(zhuǎn)賬一定數(shù)量以太幣作為安全押金,目的是懲罰主辦方可能的惡意行為。
·O(1)鏈上交易: 只需產(chǎn)生一條交易向鏈上存儲默爾克樹根;
·透明性: 所有稿件葉節(jié)點(diǎn)以鏈下傳輸形式對全體參與者公開;
·防篡改: 每個稿件對象的完整性可通過默克爾根驗證;
·可追溯: 全部稿件對象對應(yīng)的投稿方可通過簽名追溯。
(4) 在第三子階段,我們對主辦方可能采取的栽贓這一類惡意行為進(jìn)行防御。主辦方的栽贓惡意行為,指的是主辦方雖然收到了某投稿方iC鏈下傳輸?shù)母寮ο?卻故意不將作為葉子節(jié)點(diǎn)包含進(jìn)默克爾樹中,從而栽贓投稿方未提供稿件。為處理這種可能,協(xié)議在第二子階段結(jié)束后,留出一小段延長時間,允許投稿方通過調(diào)用函數(shù)submitCO()上傳被主辦方惡意屏蔽的稿件對象。該函數(shù)具體邏輯如下: 首先進(jìn)行一次時間條件判斷,強(qiáng)制要求該函數(shù)只能在第三子階段預(yù)設(shè)時間區(qū)間被調(diào)用。接著,存儲投稿方提交的,并關(guān)聯(lián)主辦方。最后,同時對主辦方和該投稿方記錄警告,以激勵雙方盡量使用線下方式完成投稿。在這一子階段,無論是否之前已通過鏈下提交投稿,任何投稿方都可以調(diào)用submitCO()函數(shù)提交投稿,這能保證任何投稿方都有能力確保其投稿被系統(tǒng)錄入,無論主辦方是否可信。然而,調(diào)用submitCO()函數(shù)需要消耗以太幣,產(chǎn)生花費(fèi),這將激勵投稿方優(yōu)先鏈下投稿。
4.3.3 匿名指派子協(xié)議
匿名指派子協(xié)議概覽如圖6 所示。該子協(xié)議的參與方包括主辦方H和n位評審方該子協(xié)議面臨兩個主要挑戰(zhàn): 一方面需實現(xiàn)匿名性,即不在鏈上存儲任意可能導(dǎo)致指派信息泄露的信息;另一方面需將基礎(chǔ)協(xié)議中的assign()函數(shù)調(diào)用輕量化,盡可能降低Gas 消耗。
圖6 匿名指派子協(xié)議Figure 6 Anonymous assignment sub-protocol
協(xié)議具體步驟如下:
(1) 在第一子階段,主辦方基于自定義的標(biāo)準(zhǔn),從候選評審者集合中選擇n位評審方,形成本次論文評審的評委會。接著,主辦方對每個評審方分配k個待評審稿件,其中k可進(jìn)行自定義,如每位審稿人評審3 篇稿件。
4.3.4 論文打分子協(xié)議
論文打分子協(xié)議概覽如圖7 所示。該子協(xié)議的參與方包括主辦方H,m位投稿方以及n位評審方。類似論文提交子協(xié)議,論文打分子協(xié)議面臨的主要挑戰(zhàn)是將基礎(chǔ)協(xié)議中的submitR()函數(shù)調(diào)用輕量化。
圖7 論文打分子協(xié)議Figure 7 Paper scoring sub-protocol
協(xié)議具體步驟如下:
(4) 在第四子階段,對主辦方的栽贓惡意行為進(jìn)行防御。在此階段,主辦方雖然收到了某評審方Rj鏈下傳輸?shù)姆謹(jǐn)?shù)對象,卻故意不將作為葉子節(jié)點(diǎn)包含進(jìn)默克爾樹ST中,從而栽贓評審方未提供分?jǐn)?shù)。為處理這種可能,協(xié)議允許評審方通過調(diào)用函數(shù)submitSO()上傳被主辦方惡意屏蔽的。該函數(shù)具體邏輯如下: 首先進(jìn)行一次時間條件判斷,強(qiáng)制要求該函數(shù)只能在第四子階段預(yù)設(shè)時間區(qū)間被調(diào)用。接著,存儲評審方提交的,并關(guān)聯(lián)主辦方。最后,同時對主辦方和該評審方記錄警告,以激勵雙方盡量遵循前三個子階段步驟。
4.3.5 結(jié)果公示子協(xié)議
結(jié)果公示子協(xié)議概覽如圖8 所示。該協(xié)議的鏈上邏輯以包含多個函數(shù)的智能合約形式存在。該子協(xié)議的參與方包括主辦方H和n位評審方。該子協(xié)議的主要功能是對結(jié)果及參與方惡意行為進(jìn)行審計、糾錯及追責(zé)。該子協(xié)議中包含多組有條件觸發(fā)的函數(shù)(圖中虛線),這些函數(shù)在協(xié)議正常執(zhí)行時不會被調(diào)用,僅在相關(guān)參與方存在惡意行為時被調(diào)用,用來對惡意行為產(chǎn)生的結(jié)果進(jìn)行糾錯,并對惡意行為執(zhí)行方進(jìn)行追責(zé)。
圖8 結(jié)果公示子協(xié)議Figure 8 Public notification sub-protocol
協(xié)議具體步驟如下:
(1) 在第一子階段,基于評審方打分,主辦方計算出各稿件最終成績并進(jìn)行公示。與基礎(chǔ)協(xié)議不同,為了節(jié)省鏈上成本,計算過程在鏈下進(jìn)行,主辦方僅通過調(diào)用函數(shù)decision()上傳最終結(jié)果,如收錄論文或獲獎?wù)撐拿麊?。同時,主辦方利用鏈下信道,公開全部
(2) 在第二子階段,協(xié)議對四類惡意行為進(jìn)行審計與追責(zé),以保障協(xié)議的活性和正確性。
評審方Rj多次提交: 在論文打分子階段,不誠實的評審方可能利用鏈上數(shù)據(jù)與鏈下數(shù)據(jù)的割裂,實現(xiàn)上傳兩次,第一次是通過鏈下傳輸,第二次是通過鏈上調(diào)用函數(shù)submitSO(),后者是為了防止主辦方的惡意栽贓。沒有注意到這一點(diǎn),兩次提交的數(shù)據(jù)可能會被主辦方在鏈下計算兩次,導(dǎo)致錯誤的鏈下計算結(jié)果。然而,智能合約很難獨(dú)立監(jiān)測評審方的這一惡意行為,因為合約不知道鏈下數(shù)據(jù)的狀態(tài)。即使合約知道鏈下數(shù)據(jù)的狀態(tài),在鏈上驗證該惡意行為也將是非常昂貴的。因此,我們設(shè)計challengeSO()函數(shù)以處理此類錯誤行為。該函數(shù)可以被主辦方或任意評審方調(diào)用,調(diào)用者需提交證據(jù)作為函數(shù)輸入。簡單地說,證據(jù)是評審方Rj已在鏈下提交的默克爾證明。該函數(shù)首先基于鏈上默克爾根rootST校驗?zāi)藸栕C明,之后校驗Rj是否通過submitSO()提交過。如果兩次校驗都為真,則合約將Rj標(biāo)記為違規(guī),沒收違規(guī)者安全押金并獎勵舉報者。
主辦方鏈下計算結(jié)果錯誤: 在結(jié)果公示階段,出于有意或無意,主辦方通過函數(shù)decision()提交的鏈下計算結(jié)果可能是錯誤的。在這種情況下,任意評審方可以要求將鏈下計算轉(zhuǎn)換成鏈上計算,從而保障結(jié)果的正確性。具體來說,評審方首先調(diào)用函數(shù)reloadSO()將主辦方在論文打分階段鏈下公開的重新提交回鏈上,使智能合約能夠讀取全部。在此基礎(chǔ)上,評審方調(diào)用函數(shù)challengeDecision(),使智能合約利用鏈上全部重新計算結(jié)果。如果該結(jié)果不同于主辦方提交的鏈下計算結(jié)果,則合約將主辦方標(biāo)記為違規(guī),沒收違規(guī)者安全押金并獎勵舉報者。
評審方Rj未提交: 在論文打分子階段,不誠實的評審方可能沒有提交打分。如果這種情況發(fā)生,則主辦方或任意評審方可通過調(diào)用函數(shù)challengeR()舉報未出現(xiàn)的評審方Rj。該函數(shù)首先校驗Rj沒有在論文打分階段通過函數(shù)submitSO()提交到鏈上,如果結(jié)果為真,則要求Rj在一定時限內(nèi)調(diào)用函數(shù)answerR()提交其在鏈下提交的默克爾證明,如果Rj超時或Rj提交的默克爾證明校驗為假,則合約將Rj標(biāo)記為違規(guī),懲罰違規(guī)者并獎勵舉報者。
4.3.6 完整BLAR 協(xié)議
完整的輕量級匿名評審協(xié)議如圖9 所示,包含提交、指派、打分、公示四個階段。
圖9 輕量級匿名評審協(xié)議Figure 9 Lightweight anonymous review protocol
4.3.7 討論
最后,我們討論BLAR 協(xié)議對辯駁(Rebuttal)、不參與分?jǐn)?shù)公開(Opt-out)、補(bǔ)充評審三類功能的支持。
辯駁(Rebuttal): 近年,越來越多的計算機(jī)會議的審稿流程包含辯駁(Rebuttal)階段,允許投稿方基于評審意見提交一定字?jǐn)?shù)的Rebuttal,且允許評審方在閱讀Rebuttal 內(nèi)容后修改分?jǐn)?shù)。通過在現(xiàn)有的打分階段和公示階段之間,新增辯駁階段和第二次打分階段,BLAR 協(xié)議能夠支持這類功能。首先,在打分階段后,新增辯駁階段。該階段中,主辦方將分?jǐn)?shù)及評審意見IPFS 鏈接通過鏈下信道告知投稿方,投稿方在辯駁階段截止前,可選擇向智能合約提交Rebuttal 內(nèi)容IPFS 鏈接,其具體方法類似將現(xiàn)有提交階段中提交的稿件內(nèi)容替換為Rebuttal 內(nèi)容。接著,在辯駁階段和公示階段間,新增一輪打分階段。該階段中,類似Rebuttal 前的首次打分,評審方可基于Rebuttal 內(nèi)容進(jìn)行重新打分。
不參與分?jǐn)?shù)公開(Opt-out): 被拒的投稿方可能不希望其分?jǐn)?shù)被公開,即可能希望選擇不參與分?jǐn)?shù)公開(opt-out)。通過簡單的修改,BLAR 協(xié)議能夠支持這類功能。首先,在提交階段,投稿方在提交稿件時標(biāo)注opt-out,并生成一對投稿專用非對稱密鑰,公開其中公鑰,通過鏈下信道將私鑰告知主辦方。接著,在打分階段,如評審方發(fā)現(xiàn)其被分配的稿件標(biāo)注有opt-out,需先使用該稿件對應(yīng)公鑰對其分?jǐn)?shù)進(jìn)行加密,再基于加密后的分?jǐn)?shù)生成分?jǐn)?shù)對象。最后,在公示階段,主辦方能夠?qū)λ蟹謹(jǐn)?shù)進(jìn)行解密,以進(jìn)行錄用決策。同時,主辦方公開全部分?jǐn)?shù)對象,但其中標(biāo)注opt-out 的稿件分?jǐn)?shù),僅能被該稿件的投稿方解密獲悉。
補(bǔ)充評審: 如果打分階段部分論文收到的意見數(shù)量不足,可在公示階段前重復(fù)進(jìn)行一輪“指派-打分”補(bǔ)充論文意見,再對結(jié)果進(jìn)行公開。
在本節(jié)中,我們首先對本文提出的輕量級匿名評審協(xié)議BLAR 進(jìn)行安全性分析。接著,我們分析該協(xié)議的鏈上執(zhí)行成本。
定理1.本文提出的輕量化匿名評審協(xié)議BLAR是符合定義1 的安全匿名評審協(xié)議.
安全匿名評審協(xié)議需滿足活性、正確性、匿名性三類安全特性,我們依次進(jìn)行證明。
引理1.BLAR 協(xié)議具備活性.
證明.我們首先假設(shè)僅有主辦方是誠實參與者,則主辦方有能力在前三階段順序執(zhí)行后的結(jié)果公示階段通過調(diào)用函數(shù)decision()產(chǎn)生評審結(jié)果。接著,我們假設(shè)僅有一位評審方是誠實參與者,則該評審方有能力在結(jié)果公示階段通過調(diào)用函數(shù)reloadSO()將全部提交到鏈上,并通過調(diào)用函數(shù)challengeDecision()在鏈上計算評審結(jié)果。綜上,只要主辦方和評審方存在至少一位誠實參與者,必可通過函數(shù)decision() 或challengeDecision() 使協(xié)議執(zhí)行完畢且產(chǎn)生評審結(jié)果,故BLAR 協(xié)議具備活性.
引理2.BLAR 協(xié)議具備正確性.
證明.我們首先假設(shè)僅有主辦方是誠實參與者,則主辦方有能力在結(jié)果公示階段基于鏈上和鏈下的打分情況計算出正確結(jié)果,并經(jīng)由函數(shù)decision()提交到鏈上確認(rèn)。接著,我們假設(shè)僅有一位評審方是誠實參與者,則不誠實的主辦方可能利用函數(shù)decision()提交錯誤鏈下計算結(jié)果,甚至不提交結(jié)果。在這些情況下,該評審方有能力在結(jié)果公示階段通過調(diào)用函數(shù)reloadSO()將全部提交到鏈上,并通過調(diào)用函數(shù)challengeDecision()在鏈上計算出于基于全部的正確結(jié)果。綜上,只要主辦方和評審方存在至少一位誠實參與者,必可通過函數(shù)decision() 或challengeDecision() 在鏈上產(chǎn)生符合評審者打分的正確結(jié)果,故輕量化匿名評審協(xié)議BLAR 具備正確性.
引理3.BLAR 協(xié)議具備匿名性.
證明.我們假設(shè)主辦方在公示期前不透露指派信息,統(tǒng)計評審方在各階段可獲得的評審相關(guān)信息。在提交階段,沒有產(chǎn)生評審相關(guān)信息。在指派階段,評審方可獲得默克爾樹RT的根節(jié)點(diǎn)RT root和全部葉節(jié)點(diǎn)在打分階段,評審方可獲得樹ST的根節(jié)點(diǎn)ST root和葉節(jié)點(diǎn)其中,葉子節(jié)點(diǎn)且評審方不知道與,只要哈希算法 H(·) 與簽名算法 S(·) 是安全的,則評審方無法證明已被主辦方選擇進(jìn)入評委會。以太坊使用的Keccak-256 哈希算法與ECDSA 數(shù)字簽名算法的安全性已在相關(guān)研究中得到證明[17-18],故本文提出的輕量化匿名評審協(xié)議BLAR 具備匿名性。
定理2.本文提出的輕量化匿名評審協(xié)議是符合定義2 的可擴(kuò)展匿名評審協(xié)議.
證明.我們假設(shè)全部協(xié)議參與方具備理性,在此基礎(chǔ)上,對匿名評審協(xié)議的四個子協(xié)議的成本進(jìn)行逐一分析,從而獲得執(zhí)行完整協(xié)議的成本,以論證協(xié)議的高效性和可擴(kuò)展性。
在論文提交子協(xié)議中,若僅需調(diào)用函數(shù)commitCT(),則Gas 消耗為O(1);若投稿方需通過調(diào)用函數(shù)submitCO()上傳被主辦方惡意屏蔽的則Gas 消耗將增加,上限為O(n) ;由于submitCO()的調(diào)用不僅能夠修正主辦方惡意行為的危害,還將導(dǎo)致主辦方與調(diào)用該函數(shù)的投稿方共同支付交易費(fèi)用,受到經(jīng)濟(jì)懲罰,產(chǎn)生負(fù)收益,理性的主辦方與投稿方不會使函數(shù)submitCO()被調(diào)用,故該子協(xié)議僅需調(diào)用函數(shù)commitCT(),從而使Gas 消耗為O(1)。
同理,在匿名指派子協(xié)議與論文打分子協(xié)議,理性的參與方僅需調(diào)用函數(shù)commitRT() 與commitST(),從而使Gas 消耗為O(1)。
在結(jié)果公示子協(xié)議中,若僅需調(diào)用函數(shù)decision(),則Gas 消耗為O(1);若存在四類惡意行為,需調(diào)用 challengeH()、challengeSO()、challengeDecision()、challengeR()等函數(shù),則Gas 消耗將增加,上限為O(n) ;由于這些函數(shù)的調(diào)用不僅能夠修正惡意行為的危害,還將導(dǎo)致惡意行為執(zhí)行方安全押金被沒收,受到經(jīng)濟(jì)懲罰,產(chǎn)生負(fù)收益,理性的協(xié)議參與方不會使這些函數(shù)被調(diào)用,故該子協(xié)議僅需調(diào)用函數(shù)decision(),從而使 Gas 消耗為O(1)。
綜上,當(dāng)全部協(xié)議參與方具備理性,協(xié)議執(zhí)行過程僅需調(diào)用函數(shù)commitCT()、commitRT()、commitST()、decision(),Gas 消耗為O(1),故輕量化匿名評審協(xié)議是可擴(kuò)展匿名評審協(xié)議。
在本節(jié)中,我們進(jìn)行了一系列實驗,對本文提出的輕量級匿名評審協(xié)議BLAR 進(jìn)行評估。我們采用Solidity 語言[13]編寫了智能合約,作為協(xié)議在區(qū)塊鏈鏈上部分的執(zhí)行邏輯。我們采用以太坊官方測試網(wǎng)絡(luò)kovan[28]對協(xié)議進(jìn)行測試評估。與近期相關(guān)工作[23,29]一樣,本文主要關(guān)注協(xié)議執(zhí)行過程中的鏈上效率,即協(xié)議在以太坊環(huán)境中執(zhí)行消耗的Gas 量,該指標(biāo)代表協(xié)議的鏈上執(zhí)行復(fù)雜度與成本,此外,我們還將提出的輕量級匿名評審協(xié)議與包含Ants-Review 協(xié)議在內(nèi)的多個相關(guān)工作中提出的協(xié)議進(jìn)行對比。
在表2 中,我們面向本文提出的輕量級匿名評審協(xié)議BLAR,列出了不同階段可供調(diào)用的智能合約函數(shù),這些函數(shù)的調(diào)用者與函數(shù)功能,以及函數(shù)調(diào)用消耗的Gas。BLAR 協(xié)議的Gas 消耗具體包括以下部分:
表2 協(xié)議中各階段主要函數(shù)及其Gas 消耗Table 2 The key functions and Gas consumption in each phase of the protocol
(1) 在論文提交階段,主辦方需消耗69006 Gas調(diào)用函數(shù)commitCT()提交默克爾樹ct的根節(jié)點(diǎn)ct R,從而避免上傳全部稿件對象。同時,協(xié)議允許投稿方iC消耗137258 Gas 調(diào)用函數(shù)submitCO()提交以防止主辦方惡意屏蔽其投稿。在這一階段,commitCT()為協(xié)議中必須調(diào)用的函數(shù),submitCO()僅為抵御主辦方惡意行為而設(shè)計,在參與方理性條件下無需被調(diào)用,為非必須調(diào)用的函數(shù),因此,在參與方理性條件下,這一階段的 Gas 消耗總量為69006。
(2) 在匿名指派階段,主辦方需消耗67317 Gas調(diào)用函數(shù)commitRT()提交默克爾樹RT的根節(jié)點(diǎn)從而避免上傳評審對象在保障匿名性的同時,降低鏈上消耗。在這一階段,commitCT()為必須調(diào)用的函數(shù),無其他智能合約函數(shù),因此這一階段的Gas 消耗總量為67317。
(3) 在論文打分階段,主辦方需消耗66429 Gas調(diào)用函數(shù)commitST() 提交默克爾樹ST的根節(jié)點(diǎn)從而避免上傳全部打分對象。同時,為便于測試,我們假設(shè)每個評審方需對三篇稿件進(jìn)行打分,且分?jǐn)?shù)為區(qū)間[0,10]的任意整數(shù)。協(xié)議允許評審方Rj消耗145366 Gas 調(diào)用函數(shù)submitSO()提交以防止主辦方惡意屏蔽其打分。在這一階段,commitST()為必須調(diào)用的函數(shù),submitSO()僅為抵御主辦方惡意行為而設(shè)計,在參與方理性條件下無需使用,為非必須調(diào)用的函數(shù),因此這一階段的Gas消耗總量為66429。
(4) 在結(jié)果公開階段,我們假設(shè)主辦方計劃根據(jù)每篇稿件獲得的評價分對稿件進(jìn)行排序,并選取前三名稿件作為優(yōu)勝者。在現(xiàn)實應(yīng)用中,此階段優(yōu)勝者可對應(yīng)競賽晉級名單,或論文錄用名單等?;谶@一假設(shè),主辦方需消耗60233 Gas 調(diào)用函數(shù)decision()提交鏈下計算執(zhí)行結(jié)果,即三名優(yōu)勝者的名單。在這一階段,我們設(shè)計了一系列惡意行為的抵御方法:其一,為抵御主辦方不公開協(xié)議允許評審方Rj消耗61578 Gas 調(diào)用函數(shù)challengeH(),迫使主辦方消耗 59318 Gas 調(diào)用函數(shù)answerH() 將>提交至鏈上;其二,為抵御評審方Rj多次提交協(xié)議允許主辦方或評審方消耗66365 Gas 調(diào)用函數(shù)challengeSO(),使智能合約基于鏈上記錄審計并懲罰該惡意行為;其三,為抵御主辦方鏈下計算結(jié)果錯誤,協(xié)議允許評審方消耗(38147 +36943NSO)Gas調(diào)用函數(shù)reloadSO()將一批從鏈下提交至鏈上(reloadSO()函數(shù)允許調(diào)用者批量上傳這比逐一上傳更加節(jié)省Gas),在通過多次調(diào)用reloadSO()將全部提交至鏈上后,評審方消耗(48231+2373NC)Gas 重新在鏈上計算優(yōu)勝者名單,其中NSO與NC分別代表一個數(shù)據(jù)塊包含的數(shù)量及參與協(xié)議的投稿方數(shù)量;最后,為抵御評審方Rj不提交協(xié)議允許主辦方消耗82664 Gas 調(diào)用函數(shù)challengeR(),迫使Rj消耗30144 Gas 調(diào)用函數(shù)answerR()證明其打分已提交。在這一階段,盡管可供調(diào)用的函數(shù)眾多,僅decision()為必須調(diào)用的函數(shù),其他所有函數(shù)均為抵御相關(guān)參與方惡意行為而設(shè)計,在參與方理性條件下無需使用,為非必須調(diào)用的函數(shù),因此這一階段的Gas 消耗總量為60233。
基于上述實驗結(jié)果與分析,通過統(tǒng)計四階段必須調(diào)用函數(shù)對應(yīng)的Gas 消耗,本文提出的輕量級匿名評審協(xié)議的Gas 消耗總量僅為262985。更重要的是,該Gas 消耗獨(dú)立于協(xié)議參與方的規(guī)模,具備可擴(kuò)展性。此外,為了更直觀反映協(xié)議實際消耗的金錢量,我們從Etherscan 網(wǎng)站[30]獲取了2019 年上半年以太幣兌換Gas 的均值匯率,以及美元兌換以太幣的均值匯率,分別為 1.67 × 10-8及175,故BLAR 協(xié)議成本為 262985 × 1.67 × 10-8× 175 ≈ 0.77美元。
在這一小節(jié),我們將本文提出的輕量級匿名評審協(xié)議BLAR 與在4.1 小節(jié)描述的基礎(chǔ)協(xié)議,文獻(xiàn)[12]提出的Ants-Review 協(xié)議,以及文獻(xiàn)[31]提出的EthReview 協(xié)議進(jìn)行對比。其中,Ants-Review 協(xié)議是一種基于以太坊的同行評審協(xié)議,與本文場景完全一致,我們已在引言部分對該協(xié)議進(jìn)行了介紹。EthReview 協(xié)議是一種基于以太坊的產(chǎn)品評論協(xié)議,其場景類似網(wǎng)上購物后買方給賣方打分,與本文場景存在相似性,因此被納入對比。接下來,我們首先在表3 中從匿名性和Gas 消耗兩方面對上述四個協(xié)議進(jìn)行對比,并進(jìn)一步通過圖10 對比上述四個協(xié)議的執(zhí)行成本。
表3 現(xiàn)有工作對比Table 3 Comparison with existing works
文獻(xiàn)[12]提出的Ants-Review 協(xié)議目前不支持匿名性,且由于每個評審方提交評審意見需調(diào)用多個智能合約函數(shù),產(chǎn)生了O(n) 級別的Gas 消耗。在4.1小節(jié)描述的基礎(chǔ)協(xié)議也不支持匿名性,且由于每個投稿方需通過調(diào)用函數(shù)submitC()提交稿件,且每個評審方需通過調(diào)用函數(shù)submitR()提交評審結(jié)果,產(chǎn)生了O(n) 級別的 Gas 消耗。文獻(xiàn)[31]提出的EthReview 僅利用以太坊地址充當(dāng)用戶假名,無法支持匿名性,且產(chǎn)品評分記錄進(jìn)區(qū)塊鏈賬本需經(jīng)由買方提交及背書人背書,調(diào)用了多個智能合約函數(shù),產(chǎn)生了O(n) 級別的Gas 消耗。綜上,本文提出的輕量級匿名評審協(xié)議是首個兼具匿名性及可擴(kuò)展性的去中心化評審協(xié)議。
接著,在圖10 中,為了便于直觀理解,我們基于 1.67 × 10-8以太幣/Gas、175美元/以太幣的匯率,將執(zhí)行上述協(xié)議的Gas 總消耗量換算成美元。此外,為了對比和評估這些協(xié)議的可擴(kuò)展性,我們將協(xié)議參與者的規(guī)模n從10 指數(shù)增加到1000??梢钥吹?隨著n的指數(shù)增加,Ants-Review 協(xié)議、基礎(chǔ)協(xié)議、EthReview 協(xié)議的執(zhí)行成本均隨之迅速增加,分別從11.4 美元增加到357.5 美元,從4.6 美元增加到397.1美元,從4.5 美元增加到445.4 美元。與之相比,本文提出的BLAR 協(xié)議的執(zhí)行成本沒有增加,保持在0.77 美元,從而證明了BLAR 協(xié)議的可擴(kuò)展性。
圖10 協(xié)議執(zhí)行成本(美元)對比Figure 10 Comparison of USD cost of the protocols
本文提出一種基于區(qū)塊鏈的輕量級匿名審稿協(xié)議BLAR,解決了去中心化評審協(xié)議的匿名性和可擴(kuò)展性兩個關(guān)鍵問題。BLAR 協(xié)議不需要在評審結(jié)果展示前在區(qū)塊鏈上存儲任意可能導(dǎo)致指派信息泄露的信息,從而使攻擊者無法確定性地找出對應(yīng)某稿件的評審方。同時,BLAR 協(xié)議不依賴區(qū)塊鏈進(jìn)行存儲與計算,從而在最小程度造成區(qū)塊鏈鏈上負(fù)擔(dān)的情況下,保證數(shù)據(jù)匯聚與處理的可信性。我們證明,只要主辦方和評審方存在至少一位誠實參與者,BLAR 協(xié)議一定能執(zhí)行完畢,且一定能產(chǎn)生符合評審者打分的正確結(jié)果。我們還證明,當(dāng)全部協(xié)議參與方具備理性時,執(zhí)行BLAR 協(xié)議全過程的成本為O(1),獨(dú)立于參與方數(shù)量的規(guī)模。我們在以太坊官方測試網(wǎng)絡(luò)上實現(xiàn)了BLAR 協(xié)議,并進(jìn)行了實驗評估。結(jié)果表明,無論協(xié)議參與方的規(guī)模大小,BLAR 協(xié)議都可以匿名評審的執(zhí)行成本降低到1 美元以下,遠(yuǎn)低于現(xiàn)有相關(guān)工作中協(xié)議的執(zhí)行成本,具備了實用性。在未來的工作中,我們將重點(diǎn)關(guān)注惡意主辦方提前透露指派信息場景下的評審匿名性保障方法。