翟社平,陳思吉,汪一景
1.西安郵電大學(xué) 計算機(jī)學(xué)院,西安710121
2.西安郵電大學(xué) 陜西省網(wǎng)絡(luò)數(shù)據(jù)分析與智能處理重點實驗室,西安710121
隨著網(wǎng)絡(luò)與數(shù)字技術(shù)的快速發(fā)展與全民普及,傳統(tǒng)的文化生產(chǎn)及傳播方式產(chǎn)生了巨大變化,數(shù)字出版在意識形態(tài)傳播中發(fā)揮的作用不斷提升,傳統(tǒng)書刊不斷趨于數(shù)字化,新生數(shù)字出版物規(guī)模不斷增大。據(jù)統(tǒng)計,我國數(shù)字出版全年收入規(guī)模已超過8 000億元,互聯(lián)網(wǎng)期刊、電子圖書、數(shù)字報紙的總收入為85.68 億元[1],數(shù)字出版產(chǎn)生的社會效益和經(jīng)濟(jì)效益日益凸顯。
但是,數(shù)字內(nèi)容具有的傳播快捷性與數(shù)據(jù)易復(fù)制性使數(shù)字版權(quán)的侵權(quán)行為日益嚴(yán)峻,嚴(yán)重影響我國數(shù)字出版產(chǎn)業(yè)的發(fā)展。傳統(tǒng)解決方式是使用數(shù)字版權(quán)管理技術(shù)(Digital Right Management,DRM)[2]對數(shù)字內(nèi)容及版權(quán)進(jìn)行保護(hù),使數(shù)字內(nèi)容不會或不容易被盜版。然而,DRM技術(shù)本質(zhì)上是一種由第三方權(quán)威機(jī)構(gòu)授權(quán)的集中式版權(quán)管理機(jī)制,具有集中式管理固有的缺陷:一是中心節(jié)點存儲的版權(quán)數(shù)據(jù)易受攻擊或遭遇單方面篡改,數(shù)據(jù)安全與真實性差;二是控制中心存在泄露或挖掘用戶隱私的可能,隱私保護(hù)性差;三是具有獨立數(shù)據(jù)庫的不同機(jī)構(gòu)間數(shù)據(jù)共享不方便,使版權(quán)的歸屬存在潛在糾紛。
區(qū)塊鏈技術(shù)是一種集點對點通信、加密算法、共識機(jī)制、智能合約等技術(shù)于一體的新技術(shù),具有去中心化、不可篡改和可追溯等特點[3]。作為一種分布式賬本技術(shù),區(qū)塊鏈能在不安全的網(wǎng)絡(luò)環(huán)境中建立節(jié)點之間的信任,實現(xiàn)價值流動、可信交易、信息共享、數(shù)據(jù)安全傳輸?shù)裙δ躘4]。在版權(quán)保護(hù)領(lǐng)域,將區(qū)塊鏈技術(shù)應(yīng)用于數(shù)字版權(quán)管理為解決互聯(lián)網(wǎng)生態(tài)中數(shù)字內(nèi)容的盜版與版權(quán)糾紛問題提供了一種新的有效途徑。Savelyev[5]從安全性與靈活性等方面分析了數(shù)字時代中傳統(tǒng)數(shù)字版權(quán)管理存在的問題與面臨的挑戰(zhàn),指出采用新技術(shù)解決難題的必要性。華進(jìn)等[6]分析總結(jié)了區(qū)塊鏈技術(shù)在數(shù)字出版領(lǐng)域面臨的挑戰(zhàn),認(rèn)為區(qū)塊鏈技術(shù)有助于解決版權(quán)存證與交易過程中的信任問題。文獻(xiàn)[7]初步將區(qū)塊鏈技術(shù)用于圖像版權(quán)保護(hù),將版權(quán)信息與圖像數(shù)字特征存儲于區(qū)塊鏈中。周如月等[8]提出一種基于區(qū)塊鏈信用體系的分布式DRM 機(jī)制,提升了數(shù)字版權(quán)管理機(jī)制的效率。上述研究初步論證了區(qū)塊鏈技術(shù)與數(shù)字版權(quán)結(jié)合的可行性,部分研究已給出基礎(chǔ)模型的構(gòu)建方式,但仍存在以下問題:(1)方案核心依然是DRM 技術(shù),成本高等缺陷使這些方案只適用于發(fā)行量較大的正式出版物,無法用于現(xiàn)實中存在的小視頻、插畫等對成本要求嚴(yán)格但切實應(yīng)受到保護(hù)的內(nèi)容;(2)沒有對區(qū)塊鏈技術(shù)本身進(jìn)行改進(jìn);(3)隱私保護(hù)是互聯(lián)網(wǎng)技術(shù)不能回避的問題之一,但上述研究沒有對如何保護(hù)用戶的身份隱私進(jìn)行討論。
基于上述研究背景,針對版權(quán)保護(hù)中最重要的作品存證環(huán)節(jié),本文提出一種基于區(qū)塊鏈的數(shù)字版權(quán)存證系統(tǒng)模型。首先針對用戶隱私保護(hù)問題,對環(huán)簽名技術(shù)進(jìn)行了改進(jìn),并利用改進(jìn)后的環(huán)簽名技術(shù)設(shè)計了一種可驗證身份的隱私保護(hù)機(jī)制;其次改進(jìn)了PBFT算法,并基于改進(jìn)的算法提出一種區(qū)塊鏈存證架構(gòu);最后使用智能合約技術(shù)對版權(quán)的存證與查詢過程進(jìn)行了實現(xiàn)。通過論證與實驗分析表明,本文方案具有良好的性能與安全性,能夠在保護(hù)用戶隱私安全的前提下為存證內(nèi)容提供來源證明。
區(qū)塊鏈技術(shù)起源于文獻(xiàn)[9],其本質(zhì)上是一個記錄交易的去中心化賬本,賬本由多方共同維護(hù),使用密碼學(xué)保證傳輸與訪問安全,并實現(xiàn)了數(shù)據(jù)的一致性存儲、難以篡改和不可抵賴[10]。將包含版權(quán)數(shù)據(jù)的區(qū)塊按時間先后順序連接形成鏈表,使版權(quán)區(qū)塊鏈具有可追溯特性,從而在發(fā)生版權(quán)糾紛時能夠為版權(quán)所有者提供有效證明。
共識算法使整個區(qū)塊鏈系統(tǒng)的數(shù)據(jù)保持一致,數(shù)據(jù)需要經(jīng)過節(jié)點間的共識才能存儲在區(qū)塊鏈中[11]。目前主流的共識算法有工作量證明(Proof of Work,PoW)[9]、權(quán)益證明(Proof of Stake,PoS)[12]、Paxos 算法[13]和Raft算法[14]等??紤]效率與拜占庭容錯(Byzantine Fault Tolerance,BFT)對系統(tǒng)的影響,Castro 和Liskov 提出了一種實用拜占庭容錯算法(Practical Byzantine Fault Tolerance,PBFT)[15],將BFT 問題的復(fù)雜度從指數(shù)級降低到多項式級別,使得拜占庭容錯算法在系統(tǒng)中變得可行[16]。然而在實際應(yīng)用中,PBFT 算法依然存在一些缺陷,例如主節(jié)點選取隨意、多階段廣播效率低等,因此本文將對傳統(tǒng)PBFT 算法進(jìn)行改進(jìn),并使用改進(jìn)的PBFT算法構(gòu)建數(shù)字版權(quán)存證系統(tǒng),以此提升系統(tǒng)性能。
根據(jù)應(yīng)用場景與設(shè)計的不同,區(qū)塊鏈被分為公有鏈、私有鏈和聯(lián)盟鏈。公有鏈對所有用戶開放,任何用戶都能在加入公有鏈后創(chuàng)建、讀取鏈上的數(shù)據(jù);私有鏈的數(shù)據(jù)寫入與讀取權(quán)限通常受某一組織或機(jī)構(gòu)控制,用戶需要授權(quán)才能加入,常用于企業(yè)內(nèi)部;聯(lián)盟鏈通常由多個權(quán)威機(jī)構(gòu)組成,數(shù)據(jù)的寫入與讀取權(quán)限會受到一定限制。由于公有鏈數(shù)據(jù)權(quán)威性較低,而私有鏈只適用于單獨的實體,因此本文提出的版權(quán)存證模型將基于聯(lián)盟鏈實現(xiàn)。
智能合約的概念最早由密碼學(xué)家Szabo[17]提出,其初衷是為了使資產(chǎn)交易不依賴于任何信用背書,減少委托人與第三方機(jī)構(gòu)交易的成本。但是,由于當(dāng)時計算能力的落后和合適應(yīng)用場景的欠缺,智能合約并未得到各領(lǐng)域?qū)<覍W(xué)者們的深入研究。區(qū)塊鏈技術(shù)的出現(xiàn)為智能合約的發(fā)展提供了契機(jī),區(qū)塊鏈實現(xiàn)了數(shù)據(jù)的去中心化存儲與驗證,智能合約則在其基礎(chǔ)上實現(xiàn)了去中心化計算[18]。
智能合約的基本運行機(jī)制如圖1 所示。智能合約能將區(qū)塊鏈上的控制邏輯以代碼的方式實現(xiàn),擁有自動執(zhí)行、強(qiáng)制執(zhí)行等特性,可用于實現(xiàn)在缺乏信任的環(huán)境中進(jìn)行可靠交易。在數(shù)字版權(quán)保護(hù)領(lǐng)域,智能合約能夠用于實現(xiàn)數(shù)字版權(quán)的存證與查詢、數(shù)字作品的交易控制等。制定好相應(yīng)版權(quán)登記制度后,將制度編制成對應(yīng)的智能合約,再部署于區(qū)塊鏈中動態(tài)檢查來自外部的數(shù)據(jù)是否滿足合約的預(yù)置條件,若滿足條件則自動執(zhí)行合約中的相關(guān)條例完成請求,對版權(quán)信息進(jìn)行區(qū)塊鏈存證,利用區(qū)塊鏈特性保證版權(quán)信息的真實可靠。該過程由系統(tǒng)自動完成,無需人為控制與監(jiān)管,整個過程公開透明,結(jié)果具有一定公信力。
圖1 智能合約運行機(jī)制
為了認(rèn)證消息來源,需要使用數(shù)字簽名技術(shù),然而基于RSA公鑰密碼體制的普通數(shù)字簽名無法保護(hù)簽名者的身份隱私。2001 年,Rivest 等[19]提出了一種名為環(huán)簽名的特殊數(shù)字簽名,通過將真實簽名者隱匿于眾多用戶中保護(hù)簽名者的身份隱私,但是當(dāng)需要給出身份證明時卻沒有任何方法。2003年,Lyu等[20]提出可驗證環(huán)簽名的概念,指出必要時,真實簽名者可憑借一些相關(guān)數(shù)據(jù)證明真實身份。之后不斷有新的簽名方案提出,例如無證書可驗證環(huán)簽名方案(Certificateless Verifiable Ring Signature scheme,CVRS)[21]、可驗證代理環(huán)簽名方案(Verifiable Proxy Ring Signature scheme,VPRS)[22]等。這些方案均假設(shè)存在一個安全且持續(xù)可用的私鑰生成中心(Private Key Generator,PKG)負(fù)責(zé)密鑰管理與分發(fā),一旦該P(yáng)KG遭遇故障,整個系統(tǒng)將無法正常工作,如果PKG 被劫持,甚至能偽造用戶簽名,對用戶安全造成極大威脅。為提升系統(tǒng)可用性,本文所提模型將對文獻(xiàn)[23]提出的環(huán)簽名方案進(jìn)行改進(jìn),將單一PKG擴(kuò)展為由多個PKG組成的可信中心(Trusted Authority,TA),簽名的生成由用戶選擇的多個PKG 配合完成,在有效保護(hù)用戶身份隱私的前提下進(jìn)一步提升系統(tǒng)可用性。
如圖2所示,本文提出的版權(quán)存證方案將采用聯(lián)盟鏈技術(shù)實現(xiàn),構(gòu)建的模型由數(shù)字內(nèi)容創(chuàng)作者構(gòu)成的簽名環(huán),出版發(fā)行商、行政與司法部門構(gòu)成的聯(lián)盟鏈組成。
圖2 數(shù)字版權(quán)存證模型
方案中包含如下實體。
(1)出版發(fā)行機(jī)構(gòu)(Publisher):各個出版發(fā)行商之間相互獨立,共同組成聯(lián)盟鏈,聯(lián)盟鏈上存證的版權(quán)數(shù)據(jù)由這些出版發(fā)行商共同維護(hù),實現(xiàn)分中心化。為實現(xiàn)相應(yīng)監(jiān)管,可在聯(lián)盟鏈中加入司法與行政管理等部門,使僅由出版發(fā)行商組成的聯(lián)盟鏈更具權(quán)威性,進(jìn)一步保證鏈上存儲的版權(quán)信息真實有效,提升數(shù)據(jù)可信力。
(2)數(shù)字內(nèi)容創(chuàng)作者(Creator):作為數(shù)字作品版權(quán)的持有人,數(shù)字內(nèi)容創(chuàng)作者將利用聯(lián)盟鏈對版權(quán)數(shù)據(jù)進(jìn)行存證,并能通過數(shù)字作品特征值從區(qū)塊鏈上查詢對應(yīng)版權(quán)信息。為保護(hù)用戶身份隱私,創(chuàng)作者將使用環(huán)簽名技術(shù)對數(shù)據(jù)進(jìn)行簽名,在需要時憑借密鑰證明真實身份。
(3)可信中心(TA):可信中心由多臺獨立PKG 組成,為參與環(huán)簽名的用戶生成并分發(fā)密鑰。
模型主要包括簽名環(huán)(Signature Ring)和聯(lián)盟鏈(Consortium Blockchain)兩部分:簽名環(huán)用于生成能夠保護(hù)身份隱私的環(huán)簽名,聯(lián)盟鏈用于對版權(quán)信息進(jìn)行有效存證。創(chuàng)作者首先構(gòu)造版權(quán)數(shù)據(jù)并對其中的真實身份信息使用AES標(biāo)準(zhǔn)進(jìn)行加密,然后隨機(jī)選取可用成員組成簽名環(huán)并生成環(huán)簽名,將數(shù)據(jù)通過遠(yuǎn)程過程調(diào)用協(xié)議(Remote Procedure Call protocal,RPC)接口由已部署的版權(quán)存證智能合約發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行存證。該過程中,存證智能合約會對請求數(shù)據(jù)進(jìn)行數(shù)據(jù)完整性、簽名正確性等校驗,通過后將多條版權(quán)信息打包為區(qū)塊發(fā)送至區(qū)塊鏈網(wǎng)絡(luò)中等待共識,達(dá)成共識的數(shù)據(jù)便能存儲于區(qū)塊鏈上,借助區(qū)塊鏈具有的時序證明、不可篡改和無法偽造等特性為以后可能產(chǎn)生的版權(quán)糾紛提供有效證據(jù)。
如圖3所示,本文構(gòu)建的存證方案流程主要分為數(shù)據(jù)構(gòu)造、環(huán)簽名生成與數(shù)據(jù)共識存儲三階段。
圖3 版權(quán)存證協(xié)議流程圖
版權(quán)數(shù)據(jù)記錄一般包含創(chuàng)作者信息、創(chuàng)作者真實身份信息、作品信息等。構(gòu)造待存證版權(quán)數(shù)據(jù)CR,使CR的結(jié)構(gòu)如式(1)所示:
其中,Creator為創(chuàng)作者信息,包括創(chuàng)作者昵稱、ID 等;DigitalWorks為作品信息,包括作品名稱、特征值、創(chuàng)作時間、創(chuàng)作工具和發(fā)布源等;Identity為創(chuàng)作者真實身份信息,包括真實姓名、身份證號碼等;E(Identity)表示對真實身份信息使用AES標(biāo)準(zhǔn)進(jìn)行加密,需驗證作品版權(quán)的歸屬時,能給出正確密鑰的用戶為該作品的真實創(chuàng)作者。
本文采用的環(huán)簽名算法基于雙線性映射實現(xiàn)。雙線性映射是一種構(gòu)造數(shù)字簽名的重要工具,其構(gòu)造的簽名具有短小、安全和高效等特點。設(shè)G1和G2分別是階為素數(shù)q的加法群,若映射e:G1×G1→G2為一個雙線性映射,則該映射滿足如下性質(zhì):
本文提出的可驗證環(huán)簽名方案主要步驟包括參數(shù)生成、系統(tǒng)選取、密鑰生成、簽名生成和簽名驗證五個步驟,詳細(xì)描述如下:
②真實簽名者驗證:真實簽名者IDu透露CR 中用于加密真實身份信息Identity 的密鑰Key,若能正確解密,則能確定消息IDu為該數(shù)據(jù)的真實簽名者。
本文方案的版權(quán)數(shù)據(jù)簽名算法偽代碼如算法1 所示,對真實簽名者的身份驗證算法偽代碼如算法2所示。
算法1版權(quán)信息簽名算法
Input:Copyright information CR,available member list Members,trusted authority TA
Output:Sign σ
function SignGen(CR,Members,TA)
1. initial a list pubList;
2. m←Hash(CR);
3. mList←Random(Members);
4. cList←Random(TA);
5. R←Request(cList,mList,this);
6. for item in R do
7. Pub←Pub+item.pubKeys;
8. D←D+item.partPriKeys;
9. end for
10. for id in mList do
11. pubKey←Request(id);
12. pubList.append(pubKey);
13. end for
14. σ←Sign(m,pub,D,mList,pubList);
15. returnσ;
算法2簽名驗證算法
Input:Sign σ,copyright information CR,Secret value V of real signerIDu,trusted authority TA
Output:Verification results R
function SignVerify(σ,V,TA)
1. for item inσ.C do
2. pk←Request(TA,item);
3. PubKey←PubKey+pk;
4. end for
5. if Verification(σ,PubKey)== Truethen
6. return“Signature verification passed.”;
7. end if
8. if Decryption(CR.Identity,V)== Truethen
9. return“IDuis the real signer.”;
10. end if
11. return“ERR:Sign verification failed.”;
針對原有PBFT 算法存在的主節(jié)點選取隨意、系統(tǒng)開銷隨共識節(jié)點數(shù)量增長而增大的問題,本文立足聯(lián)盟鏈版權(quán)存證應(yīng)用場景,對PBFT算法進(jìn)行改進(jìn),建立了一種基于行為的獎懲機(jī)制,獎懲將通過系統(tǒng)中設(shè)置的信用值體現(xiàn),系統(tǒng)將參考信用值來選取更可靠的主節(jié)點與共識節(jié)點提升算法效率。具體描述如下:
(1)信用值計算
系統(tǒng)初始化時將各節(jié)點的信用值置為10,信用值將根據(jù)節(jié)點在網(wǎng)絡(luò)中的行為而改變,每一輪共識完成后,各節(jié)點的信用值將動態(tài)變化:成功參與版權(quán)數(shù)據(jù)共識的節(jié)點增加信用值;在共識過程中作惡或失效時扣除信用值。系統(tǒng)采取獎勵正常節(jié)點、允許節(jié)點偶發(fā)故障、對作惡節(jié)點進(jìn)行嚴(yán)厲懲罰的方法,對相關(guān)系數(shù)按照2的指數(shù)級別設(shè)置,使信用值計算如式(2)所示:
其中,S 表示節(jié)點成功參與版權(quán)數(shù)據(jù)共識次數(shù);SM 表示作為主節(jié)點成功完成共識次數(shù);U 表示節(jié)點失效次數(shù);E 表示節(jié)點作惡次數(shù)。
(2)主節(jié)點選取
原PBFT 算法在選取主節(jié)點方面使用的是輪詢算法,即將主節(jié)點的角色輪流分配給網(wǎng)絡(luò)中的所有節(jié)點,這種輪詢是一種無狀態(tài)負(fù)載均衡算法,實現(xiàn)簡單,適用于網(wǎng)絡(luò)中所有節(jié)點都是誠實節(jié)點且正常工作的情況下。但在現(xiàn)實情況下,即便聯(lián)盟鏈能以身份權(quán)限控制的方法保證節(jié)點的誠實性,節(jié)點性能的參差不齊使可用性無法得到保證,如果將大量請求分配給經(jīng)常發(fā)生故障的節(jié)點,會極大降低共識效率。因此,本文中主節(jié)點的選取將通過基于信用權(quán)值的加權(quán)隨機(jī)算法計算得出,相關(guān)計算公式如式(3)所示,憑借信用值評判節(jié)點的可靠性,對原有的輪詢過程進(jìn)行加權(quán),加權(quán)后節(jié)點擔(dān)任主節(jié)點的概率接近或等于其權(quán)重比,有助于提升系統(tǒng)效率。
其中,sv 為網(wǎng)絡(luò)中節(jié)點的信用權(quán)重;pi為第i 號節(jié)點被選取為主節(jié)點的概率。
(3)共識節(jié)點選取
傳統(tǒng)PBFT 共識由網(wǎng)絡(luò)中所有節(jié)點參與,這是為了保證共識能在公有鏈的無監(jiān)管環(huán)境中正確達(dá)成,但問題是系統(tǒng)效率會隨著節(jié)點數(shù)量的增多而下降。為提升共識效率,保證系統(tǒng)持續(xù)可用,本文采取的方案為使用加權(quán)隨機(jī)算法選取部分信用值較高的節(jié)點達(dá)成共識,其余節(jié)點同步共識結(jié)果。首先,節(jié)點在加入聯(lián)盟鏈時已通過身份驗證,節(jié)點的誠實性有初步保證;其次系統(tǒng)使用信用值來進(jìn)一步評判節(jié)點的可靠性,參與共識的節(jié)點依然由基于信用權(quán)值的加權(quán)隨機(jī)算法計算得出,能夠保證選出節(jié)點可靠性較高。
(4)結(jié)果廣播與數(shù)據(jù)同步
共識達(dá)成后,需要讓未參與此輪共識的節(jié)點進(jìn)行同步。傳統(tǒng)PBFT算法中,答復(fù)階段的作用為向客戶端回復(fù)共識結(jié)果,當(dāng)涉及交易改變賬戶狀態(tài)時,該階段能使客戶端第一時間獲取自己賬戶的最新狀態(tài)。但是在版權(quán)存證系統(tǒng)中,共識的目的是存證,存證的結(jié)果由全網(wǎng)維護(hù)的區(qū)塊鏈體現(xiàn),因此本系統(tǒng)將對該階段進(jìn)行改進(jìn),改進(jìn)后的回復(fù)階段中,主節(jié)點將向全網(wǎng)廣播共識結(jié)果,使未參與此輪共識的節(jié)點同步數(shù)據(jù)、已參與共識的節(jié)點對廣播消息進(jìn)行監(jiān)督,從而進(jìn)一步保證全網(wǎng)數(shù)據(jù)的一致性。
改進(jìn)后的PBFT協(xié)議運行流程如圖4所示。
圖4 數(shù)字版權(quán)共識流程圖
具體過程描述如下。
(1)請求階段(Request):客戶端節(jié)點接收到用戶發(fā)來的版權(quán)數(shù)據(jù)存證請求后,首先對請求數(shù)據(jù)進(jìn)行格式及簽名正確性等驗證,驗證通過后構(gòu)造消息D如式(4)所示,并將D發(fā)送至主節(jié)點。
其中,REQUEST標(biāo)識表示本條消息處于請求階段;CR為加密的版權(quán)信息;m和σ分別表示版權(quán)數(shù)據(jù)的摘要及簽名;n為請求消息序號。
(2)預(yù)準(zhǔn)備階段(Pre-Prepare):主節(jié)點收到足夠多的版權(quán)存證請求后,將這些請求組合成區(qū)塊block,對區(qū)塊簽名并構(gòu)造消息ppm 如式(5)所示,最后將ppm 廣播至聯(lián)盟鏈。
其中,PRE-PREPARE標(biāo)識表示本條消息處于預(yù)準(zhǔn)備階段;v為當(dāng)前視圖編號;n為主節(jié)點廣播消息序號;s表示對區(qū)塊block的簽名。
(3)準(zhǔn)備階段(Prepare):輔助節(jié)點收到ppm消息后,對消息進(jìn)行完整性檢查,通過后存儲于本地。當(dāng)輔助節(jié)點共收到2f+1 個相同的ppm 消息后廣播消息pm 如式(6)所示,其中f為該聯(lián)盟鏈能容忍的最大故障或惡意節(jié)點數(shù)目。
其中,PREPARE標(biāo)識表示本條消息處于準(zhǔn)備階段;i為本節(jié)點編號;H(ppm)表示消息ppm的摘要。
(4)確認(rèn)階段(Commit):輔助節(jié)點收到2f個其他節(jié)點傳來的pm 消息后,如果這些消息一致則認(rèn)為共識達(dá)成,此時,主節(jié)點將新區(qū)塊鏈接至區(qū)塊鏈上,其他節(jié)點將同步最新的區(qū)塊鏈。各節(jié)點操作完成后構(gòu)造如式(7)所示消息并在聯(lián)盟鏈中進(jìn)行廣播,表示操作已完成。
其中,COMMIT標(biāo)識表示本條消息處于提交階段;H(pm)表示消息pm的摘要。
(5)答復(fù)階段(Reply):主節(jié)點向全網(wǎng)廣播共識結(jié)果,已參與共識的節(jié)點對廣播消息進(jìn)行監(jiān)督,其他節(jié)點則根據(jù)消息同步區(qū)塊鏈最新狀態(tài)。
聯(lián)盟鏈節(jié)點共識達(dá)成,并將新區(qū)塊鏈接在已有區(qū)塊鏈后,新的數(shù)字作品區(qū)塊鏈網(wǎng)絡(luò)如圖5所示。在需要出示證據(jù)時,只需通過作品哈希值在區(qū)塊鏈網(wǎng)絡(luò)中溯源查找到對應(yīng)區(qū)塊,讀取并解密區(qū)塊中包含的信息即可。
本文方案中,創(chuàng)作者將通過聯(lián)盟鏈網(wǎng)絡(luò)為外部提供的RPC接口請求版權(quán)信息的存證和查詢。為此設(shè)計了版權(quán)存證合約(Copyright Register Contract)與版權(quán)查詢合約(Copyright Query Contract)為用戶提供對應(yīng)服務(wù)。
圖5 數(shù)字作品區(qū)塊鏈網(wǎng)絡(luò)
4.4.1 版權(quán)存證智能合約
版權(quán)存證合約用于登記用戶創(chuàng)作的數(shù)字內(nèi)容。該合約運行在聯(lián)盟鏈中的每一個出版發(fā)行節(jié)點上,用戶申請版權(quán)存證時可自由選擇出版發(fā)行機(jī)構(gòu),通過為外部提供的RPC接口傳遞相關(guān)數(shù)據(jù),由聯(lián)盟鏈節(jié)點代為存證。版權(quán)存證合約設(shè)計如算法3所示。
算法3版權(quán)存證智能合約
Input:Copyright information CR,Sign σ
Output:Registration result R
contract Register(CR)
1. initial a dict rInfo;
2. if msg.sender !=this.owner then
3. return“ERR:Authentication failed.”;
4. end if
5. if‘REGISTER’notin this.permissions then
6. return“ERR:No permission.”;
7. end if
8. m←Hash(CR);
9. if Check(σ)==True then
10. rInfo.update(‘TIME’:Datetime.now());
11. rInfo.update(‘CRDATA’:CR);
12. rInfo.update(‘HASH’:m);
13. rInfo.update(‘SIGN’:σ);
14. R←Request(‘STORAGE’,rInfo);
15. return R;
16. else
17. return“ERR:Sign verification failed.”;
18. end if
4.4.2 版權(quán)查詢智能合約
版權(quán)查詢合約為用戶提供已存證數(shù)字版權(quán)的查詢功能。為提升查詢效率,本文方案中聯(lián)盟鏈節(jié)點會維護(hù)一張哈希表CRList 記錄版權(quán)數(shù)據(jù)在區(qū)塊鏈中的位置,CRList的結(jié)構(gòu)如式(8)所示:
其中,鍵dw 為數(shù)字作品的特征值;Timestamp 為作品對應(yīng)版權(quán)信息的存證時間;n 為版權(quán)信息所處的區(qū)塊序號。
當(dāng)用戶需要查詢作品版權(quán)數(shù)據(jù)時,構(gòu)造查詢請求R如式(9)所示,向聯(lián)盟鏈中的節(jié)點發(fā)送查詢請求等待查詢結(jié)果。被查詢的作品版權(quán)信息會使用查詢者的公鑰加密后返回給用戶,用戶使用自己的私鑰解密即可得到查詢的版權(quán)信息,保護(hù)數(shù)據(jù)在傳輸過程中的安全。版權(quán)查詢智能合約設(shè)計如算法4所示。
其中,QUERY 表示該請求為查詢請求;dw 表示數(shù)字作品的特征值;Puk 為查詢者公鑰。
算法4版權(quán)查詢智能合約
Input:The eigenvaluedw of digital works,The public key Puk of inquirer
Output:the query resultR that contains copyright information
contract Query(dw,Puk)
1. initial a dict R;
2. if msg.sender !=this.owner then
3. return“ERR:Authentication failed.”;
4. end if
5. if‘QUERY’notin this.permissions then
6. return“ERR:No permission.”;
7. end if
8. D←wList[dw];
9. if D==NULL then
10. return“ERR:No relevant data.”;
11. else
12. rInfo ←Request(‘QUERY’,dw,D.n);
13. returnEncypt(rInfo,Puk);
14. end if
本文利用區(qū)塊鏈技術(shù)的去中心化、不可篡改和可追溯等特性,提出了基于區(qū)塊鏈的版權(quán)存證模型,同時提出了一種多PKG 環(huán)簽名方案實現(xiàn)用戶身份隱私保護(hù)。下面對本文所提方案進(jìn)行詳細(xì)分析。
本文所提模型使用一種改進(jìn)的環(huán)簽名方案在保護(hù)用戶隱私的前提下進(jìn)一步提升了系統(tǒng)安全性,同時使用AES 標(biāo)準(zhǔn)實現(xiàn)了對真實簽名者身份的驗證。對本文方案的分析如下:
定義1(本文的環(huán)簽名方案滿足無條件匿名性)對于簽名σ=(m,U1,U2,…,Un,V,C),即使簽名者非法獲取了簽名環(huán)中所有成員的公私鑰,推斷出真實簽名者的概率為(n 為環(huán)成員數(shù)量);如果攻擊者為簽名環(huán)內(nèi)的成員,能確定真實簽名者的概率為 。
證明對于本文方案中一個正常生成的環(huán)簽名σ ,無論是Ui還是V 的計算都需要一個隨機(jī)選取的值xi∈,再經(jīng)計算Qi=H1(IDi)、Yi=H2(m||L||Ui)組合而成。由于xi是隨機(jī)選取的,因此成員組成的簽名環(huán)L 在G1群上是均勻分布的,被選取的概率相等,且與簽名者的身份無關(guān),因此環(huán)成員之外的人能猜測出真實簽名者的概率為,即使攻擊者為環(huán)內(nèi)成員,排除自己后猜測出真實簽名者的概率為 。
定義2(本文的環(huán)簽名方案滿足不可偽造性)對于簽名σ=(m,U1,U2,…,Un,V,C),攻擊者在不知道任何環(huán)成員私鑰的情況下,均不能對消息m 生成一個假的環(huán)簽名。
定義3(本文方案滿足真實身份可驗證)對于簽名σ=(m,U1,U2,…,Un,V,C) ,在不泄露任何密鑰的情況下,真實簽名者IDu通過一些數(shù)據(jù)可證明對版權(quán)數(shù)據(jù)CR的簽名σ由IDu生成,該條存證請求由IDu發(fā)起。
證明版權(quán)數(shù)據(jù)CR的結(jié)構(gòu)中包含使用AES標(biāo)準(zhǔn)加密的真實身份信息Identity,由AES的安全性可知,只要密鑰滿足強(qiáng)度要求,暴力破解的方式在計算上不可行,只能使用對應(yīng)密鑰才能解密數(shù)據(jù),因此能夠出示正確密鑰的用戶為真實簽名者IDu,滿足真實身份可驗證。
為了測試本文所提模型的性能,本文通過改進(jìn)HyperLedger Fabric 源碼,分別在不同規(guī)模的網(wǎng)絡(luò)中進(jìn)行了共識時延測試實驗,傳統(tǒng)PBFT 算法與改進(jìn)后的PBFT算法的延遲時間對比情況如圖6所示。
圖6 共識時延實驗結(jié)果
從結(jié)果可以看出,改進(jìn)PBFT 算法的時延在節(jié)點數(shù)量較少時仍會隨著節(jié)點數(shù)量的增多而增大,并且略大于原PBFT算法,這是因為系統(tǒng)中存在信用權(quán)值計算與權(quán)重選取過程。當(dāng)節(jié)點數(shù)目增加到系統(tǒng)允許參與共識的最大節(jié)點數(shù)目后,響應(yīng)時間將維持在一定范圍內(nèi)上下波動。
其次對系統(tǒng)的容錯性進(jìn)行測試,模擬節(jié)點意外斷開網(wǎng)絡(luò)的情況。假設(shè)可信中心由5個獨立PKG組成,一定時間內(nèi)用戶發(fā)送的總存證請求數(shù)量為2 000,每次請求隨機(jī)選取2個PKG配合生成環(huán)簽名,請求發(fā)送過程中使部分PKG 節(jié)點退出網(wǎng)絡(luò),整個系統(tǒng)最終達(dá)成的存證數(shù)量如圖7所示。
圖7 容錯性實驗結(jié)果
從圖中最終成功的存證數(shù)量可以看出,傳統(tǒng)方案的單PKG節(jié)點一旦失效,之后整個系統(tǒng)將無法正常工作;本文方案中,當(dāng)系統(tǒng)剩余可用節(jié)點數(shù)大于用戶選擇的PKG數(shù)量時,除非用戶正處于密鑰生成階段且選中失效節(jié)點,否則不會影響服務(wù)的正常執(zhí)行。綜上所述,本文所提模型具有良好的性能與容錯性,能在部分節(jié)點失效的情況下保持可用,滿足現(xiàn)有平臺需要。
傳統(tǒng)版權(quán)登記方案與本文所提模型在各方面的優(yōu)劣對比如表1所示。通過對比可以看出,本文所提模型存證流程簡單,對信用環(huán)境要求較低,具有傳統(tǒng)方案不具備的防止中心節(jié)點單方面篡改或偽造數(shù)據(jù)的能力,且能在不損害存證數(shù)據(jù)證明能力的前提下有效保護(hù)創(chuàng)作者的真實身份隱私。
區(qū)塊鏈的發(fā)展給傳統(tǒng)行業(yè)帶來了沖擊,其具有的去中心化、不可篡改和不可偽造等特性為傳統(tǒng)難題的解決提供了新思路。本文針對傳統(tǒng)版權(quán)登記中存在的效率低、成本高、隱私保護(hù)性差等問題,利用環(huán)簽名技術(shù)實現(xiàn)了用戶真實身份的隱私保護(hù),改進(jìn)PBFT算法并利用聯(lián)盟鏈技術(shù)設(shè)計了一個基于區(qū)塊鏈的數(shù)字版權(quán)存證系統(tǒng)模型,使用智能合約對模型中涉及的相關(guān)算法進(jìn)行了實現(xiàn)。最后,設(shè)計了相關(guān)實驗對本文提出的模型進(jìn)行驗證,結(jié)果表明本文模型具有較好的性能,能滿足基本需要。本文研究依然存在部分缺陷,例如未能將環(huán)簽名與區(qū)塊鏈技術(shù)本身進(jìn)行有機(jī)結(jié)合,因此下一步工作重點將從研究環(huán)簽名技術(shù)與區(qū)塊鏈技術(shù)的融合方式展開,通過改進(jìn)區(qū)塊鏈技術(shù)達(dá)到更好的隱私保護(hù)效果。
表1 本文模型與傳統(tǒng)方案對比分析