APP下载

基于区块链的数字版权存证系统模型研究

2020-10-10翟社平陈思吉汪一景

计算机工程与应用 2020年19期
关键词:合约共识区块

翟社平,陈思吉,汪一景

1.西安邮电大学 计算机学院,西安710121

2.西安邮电大学 陕西省网络数据分析与智能处理重点实验室,西安710121

1 引言

随着网络与数字技术的快速发展与全民普及,传统的文化生产及传播方式产生了巨大变化,数字出版在意识形态传播中发挥的作用不断提升,传统书刊不断趋于数字化,新生数字出版物规模不断增大。据统计,我国数字出版全年收入规模已超过8 000亿元,互联网期刊、电子图书、数字报纸的总收入为85.68 亿元[1],数字出版产生的社会效益和经济效益日益凸显。

但是,数字内容具有的传播快捷性与数据易复制性使数字版权的侵权行为日益严峻,严重影响我国数字出版产业的发展。传统解决方式是使用数字版权管理技术(Digital Right Management,DRM)[2]对数字内容及版权进行保护,使数字内容不会或不容易被盗版。然而,DRM技术本质上是一种由第三方权威机构授权的集中式版权管理机制,具有集中式管理固有的缺陷:一是中心节点存储的版权数据易受攻击或遭遇单方面篡改,数据安全与真实性差;二是控制中心存在泄露或挖掘用户隐私的可能,隐私保护性差;三是具有独立数据库的不同机构间数据共享不方便,使版权的归属存在潜在纠纷。

区块链技术是一种集点对点通信、加密算法、共识机制、智能合约等技术于一体的新技术,具有去中心化、不可篡改和可追溯等特点[3]。作为一种分布式账本技术,区块链能在不安全的网络环境中建立节点之间的信任,实现价值流动、可信交易、信息共享、数据安全传输等功能[4]。在版权保护领域,将区块链技术应用于数字版权管理为解决互联网生态中数字内容的盗版与版权纠纷问题提供了一种新的有效途径。Savelyev[5]从安全性与灵活性等方面分析了数字时代中传统数字版权管理存在的问题与面临的挑战,指出采用新技术解决难题的必要性。华进等[6]分析总结了区块链技术在数字出版领域面临的挑战,认为区块链技术有助于解决版权存证与交易过程中的信任问题。文献[7]初步将区块链技术用于图像版权保护,将版权信息与图像数字特征存储于区块链中。周如月等[8]提出一种基于区块链信用体系的分布式DRM 机制,提升了数字版权管理机制的效率。上述研究初步论证了区块链技术与数字版权结合的可行性,部分研究已给出基础模型的构建方式,但仍存在以下问题:(1)方案核心依然是DRM 技术,成本高等缺陷使这些方案只适用于发行量较大的正式出版物,无法用于现实中存在的小视频、插画等对成本要求严格但切实应受到保护的内容;(2)没有对区块链技术本身进行改进;(3)隐私保护是互联网技术不能回避的问题之一,但上述研究没有对如何保护用户的身份隐私进行讨论。

基于上述研究背景,针对版权保护中最重要的作品存证环节,本文提出一种基于区块链的数字版权存证系统模型。首先针对用户隐私保护问题,对环签名技术进行了改进,并利用改进后的环签名技术设计了一种可验证身份的隐私保护机制;其次改进了PBFT算法,并基于改进的算法提出一种区块链存证架构;最后使用智能合约技术对版权的存证与查询过程进行了实现。通过论证与实验分析表明,本文方案具有良好的性能与安全性,能够在保护用户隐私安全的前提下为存证内容提供来源证明。

2 相关知识

2.1 区块链技术

区块链技术起源于文献[9],其本质上是一个记录交易的去中心化账本,账本由多方共同维护,使用密码学保证传输与访问安全,并实现了数据的一致性存储、难以篡改和不可抵赖[10]。将包含版权数据的区块按时间先后顺序连接形成链表,使版权区块链具有可追溯特性,从而在发生版权纠纷时能够为版权所有者提供有效证明。

共识算法使整个区块链系统的数据保持一致,数据需要经过节点间的共识才能存储在区块链中[11]。目前主流的共识算法有工作量证明(Proof of Work,PoW)[9]、权益证明(Proof of Stake,PoS)[12]、Paxos 算法[13]和Raft算法[14]等。考虑效率与拜占庭容错(Byzantine Fault Tolerance,BFT)对系统的影响,Castro 和Liskov 提出了一种实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)[15],将BFT 问题的复杂度从指数级降低到多项式级别,使得拜占庭容错算法在系统中变得可行[16]。然而在实际应用中,PBFT 算法依然存在一些缺陷,例如主节点选取随意、多阶段广播效率低等,因此本文将对传统PBFT 算法进行改进,并使用改进的PBFT算法构建数字版权存证系统,以此提升系统性能。

根据应用场景与设计的不同,区块链被分为公有链、私有链和联盟链。公有链对所有用户开放,任何用户都能在加入公有链后创建、读取链上的数据;私有链的数据写入与读取权限通常受某一组织或机构控制,用户需要授权才能加入,常用于企业内部;联盟链通常由多个权威机构组成,数据的写入与读取权限会受到一定限制。由于公有链数据权威性较低,而私有链只适用于单独的实体,因此本文提出的版权存证模型将基于联盟链实现。

2.2 智能合约

智能合约的概念最早由密码学家Szabo[17]提出,其初衷是为了使资产交易不依赖于任何信用背书,减少委托人与第三方机构交易的成本。但是,由于当时计算能力的落后和合适应用场景的欠缺,智能合约并未得到各领域专家学者们的深入研究。区块链技术的出现为智能合约的发展提供了契机,区块链实现了数据的去中心化存储与验证,智能合约则在其基础上实现了去中心化计算[18]。

智能合约的基本运行机制如图1 所示。智能合约能将区块链上的控制逻辑以代码的方式实现,拥有自动执行、强制执行等特性,可用于实现在缺乏信任的环境中进行可靠交易。在数字版权保护领域,智能合约能够用于实现数字版权的存证与查询、数字作品的交易控制等。制定好相应版权登记制度后,将制度编制成对应的智能合约,再部署于区块链中动态检查来自外部的数据是否满足合约的预置条件,若满足条件则自动执行合约中的相关条例完成请求,对版权信息进行区块链存证,利用区块链特性保证版权信息的真实可靠。该过程由系统自动完成,无需人为控制与监管,整个过程公开透明,结果具有一定公信力。

图1 智能合约运行机制

2.3 环签名技术

为了认证消息来源,需要使用数字签名技术,然而基于RSA公钥密码体制的普通数字签名无法保护签名者的身份隐私。2001 年,Rivest 等[19]提出了一种名为环签名的特殊数字签名,通过将真实签名者隐匿于众多用户中保护签名者的身份隐私,但是当需要给出身份证明时却没有任何方法。2003年,Lyu等[20]提出可验证环签名的概念,指出必要时,真实签名者可凭借一些相关数据证明真实身份。之后不断有新的签名方案提出,例如无证书可验证环签名方案(Certificateless Verifiable Ring Signature scheme,CVRS)[21]、可验证代理环签名方案(Verifiable Proxy Ring Signature scheme,VPRS)[22]等。这些方案均假设存在一个安全且持续可用的私钥生成中心(Private Key Generator,PKG)负责密钥管理与分发,一旦该PKG遭遇故障,整个系统将无法正常工作,如果PKG 被劫持,甚至能伪造用户签名,对用户安全造成极大威胁。为提升系统可用性,本文所提模型将对文献[23]提出的环签名方案进行改进,将单一PKG扩展为由多个PKG组成的可信中心(Trusted Authority,TA),签名的生成由用户选择的多个PKG 配合完成,在有效保护用户身份隐私的前提下进一步提升系统可用性。

3 整体架构设计

如图2所示,本文提出的版权存证方案将采用联盟链技术实现,构建的模型由数字内容创作者构成的签名环,出版发行商、行政与司法部门构成的联盟链组成。

图2 数字版权存证模型

方案中包含如下实体。

(1)出版发行机构(Publisher):各个出版发行商之间相互独立,共同组成联盟链,联盟链上存证的版权数据由这些出版发行商共同维护,实现分中心化。为实现相应监管,可在联盟链中加入司法与行政管理等部门,使仅由出版发行商组成的联盟链更具权威性,进一步保证链上存储的版权信息真实有效,提升数据可信力。

(2)数字内容创作者(Creator):作为数字作品版权的持有人,数字内容创作者将利用联盟链对版权数据进行存证,并能通过数字作品特征值从区块链上查询对应版权信息。为保护用户身份隐私,创作者将使用环签名技术对数据进行签名,在需要时凭借密钥证明真实身份。

(3)可信中心(TA):可信中心由多台独立PKG 组成,为参与环签名的用户生成并分发密钥。

模型主要包括签名环(Signature Ring)和联盟链(Consortium Blockchain)两部分:签名环用于生成能够保护身份隐私的环签名,联盟链用于对版权信息进行有效存证。创作者首先构造版权数据并对其中的真实身份信息使用AES标准进行加密,然后随机选取可用成员组成签名环并生成环签名,将数据通过远程过程调用协议(Remote Procedure Call protocal,RPC)接口由已部署的版权存证智能合约发送到区块链网络中进行存证。该过程中,存证智能合约会对请求数据进行数据完整性、签名正确性等校验,通过后将多条版权信息打包为区块发送至区块链网络中等待共识,达成共识的数据便能存储于区块链上,借助区块链具有的时序证明、不可篡改和无法伪造等特性为以后可能产生的版权纠纷提供有效证据。

4 实现方案设计

如图3所示,本文构建的存证方案流程主要分为数据构造、环签名生成与数据共识存储三阶段。

图3 版权存证协议流程图

4.1 版权数据构造

版权数据记录一般包含创作者信息、创作者真实身份信息、作品信息等。构造待存证版权数据CR,使CR的结构如式(1)所示:

其中,Creator为创作者信息,包括创作者昵称、ID 等;DigitalWorks为作品信息,包括作品名称、特征值、创作时间、创作工具和发布源等;Identity为创作者真实身份信息,包括真实姓名、身份证号码等;E(Identity)表示对真实身份信息使用AES标准进行加密,需验证作品版权的归属时,能给出正确密钥的用户为该作品的真实创作者。

4.2 环签名生成

本文采用的环签名算法基于双线性映射实现。双线性映射是一种构造数字签名的重要工具,其构造的签名具有短小、安全和高效等特点。设G1和G2分别是阶为素数q的加法群,若映射e:G1×G1→G2为一个双线性映射,则该映射满足如下性质:

本文提出的可验证环签名方案主要步骤包括参数生成、系统选取、密钥生成、签名生成和签名验证五个步骤,详细描述如下:

②真实签名者验证:真实签名者IDu透露CR 中用于加密真实身份信息Identity 的密钥Key,若能正确解密,则能确定消息IDu为该数据的真实签名者。

本文方案的版权数据签名算法伪代码如算法1 所示,对真实签名者的身份验证算法伪代码如算法2所示。

算法1版权信息签名算法

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.”;

4.3 改进的PBFT共识算法

针对原有PBFT 算法存在的主节点选取随意、系统开销随共识节点数量增长而增大的问题,本文立足联盟链版权存证应用场景,对PBFT算法进行改进,建立了一种基于行为的奖惩机制,奖惩将通过系统中设置的信用值体现,系统将参考信用值来选取更可靠的主节点与共识节点提升算法效率。具体描述如下:

(1)信用值计算

系统初始化时将各节点的信用值置为10,信用值将根据节点在网络中的行为而改变,每一轮共识完成后,各节点的信用值将动态变化:成功参与版权数据共识的节点增加信用值;在共识过程中作恶或失效时扣除信用值。系统采取奖励正常节点、允许节点偶发故障、对作恶节点进行严厉惩罚的方法,对相关系数按照2的指数级别设置,使信用值计算如式(2)所示:

其中,S 表示节点成功参与版权数据共识次数;SM 表示作为主节点成功完成共识次数;U 表示节点失效次数;E 表示节点作恶次数。

(2)主节点选取

原PBFT 算法在选取主节点方面使用的是轮询算法,即将主节点的角色轮流分配给网络中的所有节点,这种轮询是一种无状态负载均衡算法,实现简单,适用于网络中所有节点都是诚实节点且正常工作的情况下。但在现实情况下,即便联盟链能以身份权限控制的方法保证节点的诚实性,节点性能的参差不齐使可用性无法得到保证,如果将大量请求分配给经常发生故障的节点,会极大降低共识效率。因此,本文中主节点的选取将通过基于信用权值的加权随机算法计算得出,相关计算公式如式(3)所示,凭借信用值评判节点的可靠性,对原有的轮询过程进行加权,加权后节点担任主节点的概率接近或等于其权重比,有助于提升系统效率。

其中,sv 为网络中节点的信用权重;pi为第i 号节点被选取为主节点的概率。

(3)共识节点选取

传统PBFT 共识由网络中所有节点参与,这是为了保证共识能在公有链的无监管环境中正确达成,但问题是系统效率会随着节点数量的增多而下降。为提升共识效率,保证系统持续可用,本文采取的方案为使用加权随机算法选取部分信用值较高的节点达成共识,其余节点同步共识结果。首先,节点在加入联盟链时已通过身份验证,节点的诚实性有初步保证;其次系统使用信用值来进一步评判节点的可靠性,参与共识的节点依然由基于信用权值的加权随机算法计算得出,能够保证选出节点可靠性较高。

(4)结果广播与数据同步

共识达成后,需要让未参与此轮共识的节点进行同步。传统PBFT算法中,答复阶段的作用为向客户端回复共识结果,当涉及交易改变账户状态时,该阶段能使客户端第一时间获取自己账户的最新状态。但是在版权存证系统中,共识的目的是存证,存证的结果由全网维护的区块链体现,因此本系统将对该阶段进行改进,改进后的回复阶段中,主节点将向全网广播共识结果,使未参与此轮共识的节点同步数据、已参与共识的节点对广播消息进行监督,从而进一步保证全网数据的一致性。

改进后的PBFT协议运行流程如图4所示。

图4 数字版权共识流程图

具体过程描述如下。

(1)请求阶段(Request):客户端节点接收到用户发来的版权数据存证请求后,首先对请求数据进行格式及签名正确性等验证,验证通过后构造消息D如式(4)所示,并将D发送至主节点。

其中,REQUEST标识表示本条消息处于请求阶段;CR为加密的版权信息;m和σ分别表示版权数据的摘要及签名;n为请求消息序号。

(2)预准备阶段(Pre-Prepare):主节点收到足够多的版权存证请求后,将这些请求组合成区块block,对区块签名并构造消息ppm 如式(5)所示,最后将ppm 广播至联盟链。

其中,PRE-PREPARE标识表示本条消息处于预准备阶段;v为当前视图编号;n为主节点广播消息序号;s表示对区块block的签名。

(3)准备阶段(Prepare):辅助节点收到ppm消息后,对消息进行完整性检查,通过后存储于本地。当辅助节点共收到2f+1 个相同的ppm 消息后广播消息pm 如式(6)所示,其中f为该联盟链能容忍的最大故障或恶意节点数目。

其中,PREPARE标识表示本条消息处于准备阶段;i为本节点编号;H(ppm)表示消息ppm的摘要。

(4)确认阶段(Commit):辅助节点收到2f个其他节点传来的pm 消息后,如果这些消息一致则认为共识达成,此时,主节点将新区块链接至区块链上,其他节点将同步最新的区块链。各节点操作完成后构造如式(7)所示消息并在联盟链中进行广播,表示操作已完成。

其中,COMMIT标识表示本条消息处于提交阶段;H(pm)表示消息pm的摘要。

(5)答复阶段(Reply):主节点向全网广播共识结果,已参与共识的节点对广播消息进行监督,其他节点则根据消息同步区块链最新状态。

联盟链节点共识达成,并将新区块链接在已有区块链后,新的数字作品区块链网络如图5所示。在需要出示证据时,只需通过作品哈希值在区块链网络中溯源查找到对应区块,读取并解密区块中包含的信息即可。

4.4 相关合约设计

本文方案中,创作者将通过联盟链网络为外部提供的RPC接口请求版权信息的存证和查询。为此设计了版权存证合约(Copyright Register Contract)与版权查询合约(Copyright Query Contract)为用户提供对应服务。

图5 数字作品区块链网络

4.4.1 版权存证智能合约

版权存证合约用于登记用户创作的数字内容。该合约运行在联盟链中的每一个出版发行节点上,用户申请版权存证时可自由选择出版发行机构,通过为外部提供的RPC接口传递相关数据,由联盟链节点代为存证。版权存证合约设计如算法3所示。

算法3版权存证智能合约

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 版权查询智能合约

版权查询合约为用户提供已存证数字版权的查询功能。为提升查询效率,本文方案中联盟链节点会维护一张哈希表CRList 记录版权数据在区块链中的位置,CRList的结构如式(8)所示:

其中,键dw 为数字作品的特征值;Timestamp 为作品对应版权信息的存证时间;n 为版权信息所处的区块序号。

当用户需要查询作品版权数据时,构造查询请求R如式(9)所示,向联盟链中的节点发送查询请求等待查询结果。被查询的作品版权信息会使用查询者的公钥加密后返回给用户,用户使用自己的私钥解密即可得到查询的版权信息,保护数据在传输过程中的安全。版权查询智能合约设计如算法4所示。

其中,QUERY 表示该请求为查询请求;dw 表示数字作品的特征值;Puk 为查询者公钥。

算法4版权查询智能合约

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

5 实验结果与分析

本文利用区块链技术的去中心化、不可篡改和可追溯等特性,提出了基于区块链的版权存证模型,同时提出了一种多PKG 环签名方案实现用户身份隐私保护。下面对本文所提方案进行详细分析。

5.1 安全性分析

本文所提模型使用一种改进的环签名方案在保护用户隐私的前提下进一步提升了系统安全性,同时使用AES 标准实现了对真实签名者身份的验证。对本文方案的分析如下:

定义1(本文的环签名方案满足无条件匿名性)对于签名σ=(m,U1,U2,…,Un,V,C),即使签名者非法获取了签名环中所有成员的公私钥,推断出真实签名者的概率为(n 为环成员数量);如果攻击者为签名环内的成员,能确定真实签名者的概率为 。

证明对于本文方案中一个正常生成的环签名σ ,无论是Ui还是V 的计算都需要一个随机选取的值xi∈,再经计算Qi=H1(IDi)、Yi=H2(m||L||Ui)组合而成。由于xi是随机选取的,因此成员组成的签名环L 在G1群上是均匀分布的,被选取的概率相等,且与签名者的身份无关,因此环成员之外的人能猜测出真实签名者的概率为,即使攻击者为环内成员,排除自己后猜测出真实签名者的概率为 。

定义2(本文的环签名方案满足不可伪造性)对于签名σ=(m,U1,U2,…,Un,V,C),攻击者在不知道任何环成员私钥的情况下,均不能对消息m 生成一个假的环签名。

定义3(本文方案满足真实身份可验证)对于签名σ=(m,U1,U2,…,Un,V,C) ,在不泄露任何密钥的情况下,真实签名者IDu通过一些数据可证明对版权数据CR的签名σ由IDu生成,该条存证请求由IDu发起。

证明版权数据CR的结构中包含使用AES标准加密的真实身份信息Identity,由AES的安全性可知,只要密钥满足强度要求,暴力破解的方式在计算上不可行,只能使用对应密钥才能解密数据,因此能够出示正确密钥的用户为真实签名者IDu,满足真实身份可验证。

5.2 性能分析

为了测试本文所提模型的性能,本文通过改进HyperLedger Fabric 源码,分别在不同规模的网络中进行了共识时延测试实验,传统PBFT 算法与改进后的PBFT算法的延迟时间对比情况如图6所示。

图6 共识时延实验结果

从结果可以看出,改进PBFT 算法的时延在节点数量较少时仍会随着节点数量的增多而增大,并且略大于原PBFT算法,这是因为系统中存在信用权值计算与权重选取过程。当节点数目增加到系统允许参与共识的最大节点数目后,响应时间将维持在一定范围内上下波动。

其次对系统的容错性进行测试,模拟节点意外断开网络的情况。假设可信中心由5个独立PKG组成,一定时间内用户发送的总存证请求数量为2 000,每次请求随机选取2个PKG配合生成环签名,请求发送过程中使部分PKG 节点退出网络,整个系统最终达成的存证数量如图7所示。

图7 容错性实验结果

从图中最终成功的存证数量可以看出,传统方案的单PKG节点一旦失效,之后整个系统将无法正常工作;本文方案中,当系统剩余可用节点数大于用户选择的PKG数量时,除非用户正处于密钥生成阶段且选中失效节点,否则不会影响服务的正常执行。综上所述,本文所提模型具有良好的性能与容错性,能在部分节点失效的情况下保持可用,满足现有平台需要。

5.3 方案比较

传统版权登记方案与本文所提模型在各方面的优劣对比如表1所示。通过对比可以看出,本文所提模型存证流程简单,对信用环境要求较低,具有传统方案不具备的防止中心节点单方面篡改或伪造数据的能力,且能在不损害存证数据证明能力的前提下有效保护创作者的真实身份隐私。

6 结束语

区块链的发展给传统行业带来了冲击,其具有的去中心化、不可篡改和不可伪造等特性为传统难题的解决提供了新思路。本文针对传统版权登记中存在的效率低、成本高、隐私保护性差等问题,利用环签名技术实现了用户真实身份的隐私保护,改进PBFT算法并利用联盟链技术设计了一个基于区块链的数字版权存证系统模型,使用智能合约对模型中涉及的相关算法进行了实现。最后,设计了相关实验对本文提出的模型进行验证,结果表明本文模型具有较好的性能,能满足基本需要。本文研究依然存在部分缺陷,例如未能将环签名与区块链技术本身进行有机结合,因此下一步工作重点将从研究环签名技术与区块链技术的融合方式展开,通过改进区块链技术达到更好的隐私保护效果。

表1 本文模型与传统方案对比分析

猜你喜欢

合约共识区块
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能
读懂区块链
“慢养孩子”应成社会普遍共识
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望