庞晓琼,杨婷,陈文俊,2,王云婷,刘天野
(1.中北大学大数据学院,太原 030051;2.中国人民银行太原中心支行,太原 030001;3.中北大学朔州校区电气与计算机工程管理部,山西朔州 036000)
随着互联网技术的快速发展,网上交易和传播的数字内容越来越多,然而数字化内容存在被恶意复制、传播、下载等风险,这会给创作者带来巨大的损失,因此防止数字内容被非法使用是必要的[1]。
数字权限管理(Digital Rights Management,DRM)可以防止数字内容被非法使用[2],DRM 通过数字内容的加密和安全许可等一系列手段防止数字内容被非法使用,确保数字内容在公平、合理、安全许可的条件下被使用和消费[3]。在传统的DRM 中,数字内容加密密钥通常由许可证服务器保存和分发[4],由于服务器的高速运算能力和强大的I/O 外部数据吞吐能力,内容加密密钥的获取时间较短,然而在消费者向许可证服务器发送获取许可请求以及许可证服务器向消费者发送许可证的过程中,为防止信息被篡改,需要对信息进行完整性验证,这是麻烦和不便的。
幸运的是,在解决传统DRM 中的问题时,区块链可以作出贡献。区块链中,每一笔交易在上链之前由矿工来进行验证,交易上链后通过SHA256 哈希存储在二叉Merkle 树的每个节点上,两个子节点的值连接之后,再经哈希运算得到父节点的值,如此反复执行两两哈希,直到生成根哈希值,即交易Merkle 根。通过Merkle 根,块内任何交易数据的篡改都会被检测到,从而确保交易数据的完整性;而且在区块链中,每个区块都含有上一个区块的hash 值,如果修改其中某一个区块,在这之后的区块都要重新计算,除非能控制系统中超过51%的节点,否则单个节点对数据的修改是无效的。因此基于区块链来实现DRM,消息接收方的验证工作量会显著减少,而接收者也只需执行简单且很少的计算[5],可以较好地解决传统DRM中消息完整性验证较为麻烦和不便的问题。
因此,很多学者积极地将数字权限管理与区块链技术结合在一起[6-12],利用区块链记录权限交易信息,实现权限信息的防篡改和公开透明。然而在基于区块链的DRM 解决方案中,数字内容的安全存储及数字内容加密密钥的安全有效管理也是需要考虑的关键问题。目前很多基于区块链的DRM方案是由内容提供商来管理内容加密密钥的,在消费者购买数字产品时,内容提供商需实时加密内容加密密钥,当购买该数字产品的消费者显著增加时,内容提供商的计算量相应地也会显著增加;对消费者来说,内容提供商需要加密的内容加密密钥过多时,消费者收到密钥的时延会过长,影响其消费体验。因此有必要考虑将内容提供商从加密内容加密密钥的任务中解放出来,同时还需确保密钥的安全保存和有效分发。
在本文方案中,为减轻内容提供商需实时管理内容加密密钥的负担,引入了密钥服务器,将内容加密密钥托管给密钥服务器保存和分发,这样可以有效较少消费者收到许可证的时延,增加方案的灵活性。同时,为防止内容加密密钥过于集中带来的风险,根据可验证的秘密共享方案将内容加密密钥分发给多个子密钥服务器管理,少于门限值的影子密钥得不到关于内容加密密钥的任何信息,保证了密钥的安全性。此外,为防止恶意内容提供商欺骗子密钥服务器,进而导致消费者得到许可证后不能正常访问所购数字内容的情况,密钥服务器在收到内容提供商发送的子密钥后,可对其正确性进行验证。
数字权限管理的核心思想是通过使用许可证来保护数字内容的版权,即用户得到数字内容后,必须获得相应的许可证才能使用该内容。在传统的DRM 系统中[13-15],内容提供商是数字内容的所有者或作者,他对数字内容进行加密,并将加密的内容上载到内容服务器,然后将加密密钥传输到许可证服务器;内容服务器负责存储和分发数字内容;许可证服务器用于创建和传递许可证。消费者从内容服务器下载数字内容并向许可证服务器请求获取相应的许可证。当消费者获得受保护数字内容的许可证时,消费者的客户端可以解密加密内容并强制执行许可证中包含的权限。各角色在以上的信息交互过程中,需要多次对消息进行完整性验证。
区块链被提出以来,研究者们积极尝试将DRM 与新兴技术区块链结合,以克服传统DRM 的不足。文献[6]中提出了基于区块链的网络媒体数字权限管理方案,该方案利用区块链的特点来实现产品管理、版权管理、交易管理和用户行为管理,但是并没有设计出完整详细的DRM 保护方案,并且该方案在私有链上实施,不具有完全去中心化的特点。文献[7]中设计了一个基于联盟链的数字版权交易系统模型,实现了版权交易和版权注册。方案[6-7]方案均未考虑数字内容的安全存储及相应数字内容加密密钥的安全分发问题。文献[8]中设计了一个基于区块链的分布式权限管理系统,在该系统中,内容提供商用消费者的公钥对内容加密密钥加密,加密结果打包进许可证后放入交易池内,交易被矿工挖矿成功后上链,消费者再从链上读取许可证,并用自己的私钥解密内容加密密钥,以此来使用数字内容。在文献[8]方案中,许可证由内容提供商发放,若购买数字产品的消费者过多,这对内容提供商来说是巨大的工作量;此外,消费者在链上通过交易读取数字内容的价格、不同使用权限对应的价格等信息,然而随着区块的不断增加,交易越来越多,消费者在交易里查看信息的时间过长,影响消费体验;而且,内容提供商需实时对内容加密密钥进行加密,这种加密方式的效率显然不高且不利于内容提供商进行创作。文献[9]中利用区块链技术对数字权限进行管理,该方案中,内容提供商在智能合约上设置不同的数字内容使用权限对应不同价格,可供消费者查看,并且使用智能合约自动发布许可证,解决了文献[8]中许可证由内容提供商来发放及消费者需在链上读取感兴趣数字内容的权限等信息导致的时延过长问题。但在文献[8-9]方案中,内容加密密钥由内容提供商保存,当消费者购买数字产品时,内容提供商需实时用消费者公钥加密内容加密密钥。显然,当购买该数字产品的消费者过多时,内容提供商的计算量将显著增加;对消费者来说,若内容提供商需要加密的内容加密密钥过多,消费者收到密钥的时延过长,影响其消费体验。文献[10]中为DRM 业务模型设计并实现了基于区块链的基础设施服务,并在区块链中构建了内容指纹,即内容版权相关的信息。但是在该方案中,当消费者购买数字产品时,内容提供商需根据密钥生成算法动态生成内容加密密钥,用内容加密密钥对称加密数字内容,内容加密密钥由内容提供商实时生成和管理。可以看出,文献[6-10]方案均未考虑内容加密密钥的托管问题。文献[11]中基于星际文件系统(InterPlanetary File System,IPFS)和区块链技术提出了一个安全数据共享平台,数据拥有者将未经加密的数字内容及其元数据存储到IPFS,然后利用秘密共享方案对IPFS 返回的文件hash 进行分割,k份shares 用工作节点的公钥加密后存储至智能合约,当消费者想要获取感兴趣的内容并支付定金后,工作节点向智能合约申请加密的shares,再利用自己的私钥解密后发送给消费者。该方案中,一旦IPFS hash 值恢复后外泄,任何非授权者均可以直接从IPFS 上直接获取到相应的数字内容明文信息,此外该方案没有考虑秘密共享参与者对收到的shares 的正确性验证问题。文献[12]中提出了一个基于秘密共享的社交媒体DRM 区块链框架,但并未给出具体实现。该框架主要考虑了对社交媒体内容的确权及权限交易,当内容创作者上传新媒体内容时,采用唯一标识媒体内容的hash、用户ID,所有权ID 被记录在公有链上,用于确权。此外,内容创作者利用秘密共享方案对媒体内容进行分割,分割后的shares 存储至IPFS,并将IPFS 返回的shares 的IPFS hash 存储至私有链上。当有消费者购买该媒体内容版权时,若内容创作者同意交易,智能合约从私链上读取该媒体内容shares的IPFS hash并发送给消费者,同时该笔交易会记录在公有链上。该方案中,一旦交易结束,媒体内容的使用方式就不能被直接、灵活地控制,因为消费者可以通过shares的IPFS hash获取到该媒体内容的明文。此外,该方案没有考虑交易的公平性问题。
因此,本文提出了一种区块链环境下具有内容加密密钥托管功能的数字权限保护方案,利用可验证的秘密共享方案和属性基加密(Attribute-Based Encryption,ABE)算法,实现了内容加密密钥的保护和分发,将内容提供商从管理内容加密密钥的任务中解放出来,确保了密钥管理的安全性和灵活性;同时本文方案支持内容提供商在智能合约上为数字内容设置不同的使用权限及对应的价格以供消费者快速查询,并利用智能合约自动发放许可证,既解放了内容提供商又确保了数字内容交易安全、可靠、公平地执行。
设q是大素数,E是定义在有限域GF(q)上的椭圆曲线,G是E上q阶基点,q、E和G是公开的。
Pedersen[16]提出了一个可验证秘密共享方案VSS(Verifiable Secret Sharing),可验证是指每个共享秘密参与者在收到子密钥时可验证其正确性。假定可信分派者有一秘密CK∈GF()q,并通过CK•G对秘密CK进行承诺,其中q是大于n的素数,且共有共享秘密参与者n人。该方案分为三步:
1)可信分派者分发子密钥。根据Shamir秘密共享方案在有限域中GF(q)中构造一个k-1 次表达式,并将所要共享的秘密CK作为这个表达式的常数项,即F(x)=CK+a1x+a2x2+…+ak-1xk-1,然后计算TXi=F(x)i(1 ≤i≤n)。可信分派者把各个TXi秘密地分发给对应的共享秘密参与者后,计算并公布Ai=aiG(0 ≤i≤k-1)。
3)共享秘密恢复。k个或k个以上的参与者合作,利用拉格朗日插值公式可以恢复出秘密CK,但少于k个参与者合作得不到关于秘密CK的任何信息。
属性基加密最初由Sahai 等[17]提出,它以属性为公钥,将密文和用户私钥与属性关联,能够灵活地表示访问策略,当用户的私钥与密文的访问策略相互匹配时,该用户才能解密密文。ABE 包括密钥策略ABE(Key-Policy ABE,KP-ABE)以及密文策略ABE(Ciphertext-Policy ABE,CP-ABE)这2 类。其中,CP-ABE 的密文与访问策略关联,CP-ABE 算法包括以下4个组成部分:1)ABE.Setup(),生成系统公钥PK和系统主密钥MK。2)ASK=ABE.KeyGen(AS,MK),使用用户属性AS和MK生成用户的属性私钥ASK。3)CT=ABE.Encrypt(AP,M,PK),使用访问策略AP和PK将数据明文M加密为密文CT。4)M=ABE.Decrypt(ASK,CT),如果用户的属性AS满足访问策略AP,使用属性私钥ASK解密密文CT得到明文M。
星际文件系统(IPFS)是一个对等的分布式文件系统,在某种程度上,IPFS 的使用与Web 的使用方式类似。将文件上载到IPFS 系统将获得唯一的文件加密哈希字符串,通过该字符串可以检索文件。在实际应用中,由于区块膨胀和交易费用,区块链不适合存储大文件(视频、音频等)。因此,本文方案中,将加密文件存储在IPFS 中,一些元数据存储在以太坊(ETHereum,ETH)区块链上。
本文提出了一种基于区块链的数字权限保护方案,其框架如图1 所示,包括属性机构、IPFS、密钥服务器A、子密钥服务器I1,I2,…,In和内容提供商、消费者、智能合约等。
图1 基于区块链的DRM方案框架Fig.1 Framework of DRM scheme based on blockchain
1)属性机构生成系统属性公钥PK和系统属性主密钥MK,然后向内容提供商发布PK,秘密保存主密钥。内容提供商设置内容的访问策略AP,如图1中①②所示。
2)内容提供商使用加密组件随机生成长度为l的子密钥AK和子密钥CK,并相加得到key,内容提供商使用key加密数字内容,并将加密结果、内容标识CID、门限数t发送给IPFS,IPFS 给内容提供商返回hash值。内容提供商将hash值、内容标识CID、部分简介以交易的形式放在区块链上,如图1 中③④⑤所示。
3)内容提供商将AK用ABE 算法进行加密,即ABE.Enc(AP,AK,PK),加密结果与CID一起发送给密钥服务器A。内容提供商将CK采用秘密共享方案进行分割,在GF(q)有限域里随机选择k-1 个大素数a1,a2,…,ak-1,并将其与CK组成如下表达式:
内容提供商计算子密钥TXi=F(xi)(1 ≤i≤n),在计算出n个子密钥后,计算出Ai=aiG(0 ≤i≤k-1)。将子密钥TXi分别用n个密钥服务器的公钥进行加密,即Enc(PKi,TXi),将其与CID发送到对应的密钥服务器,并将Ai发送给每一个密钥服务器。各密钥服务器在收到TXi后,用私钥解密出TXi并验证以下等式,若所有的服务器都通过此公式验证,则所有的子密钥服务器接受内容提供商发给自己的子密钥,如图1中⑥⑦所示。
4)内容提供商在智能合约上设置A和各密钥服务器的地址以供消费者查询服务器的忙碌状态从而选择自己想要的为其服务的服务器,以及不同的内容使用权限对应的不同价格和key的使用规则,并支付一定数量的押金,以保证交易顺利完成,如图1中⑧所示。
5)消费者从区块链上浏览到自己感兴趣的内容,将读取到的hash值传给IPFS,IPFS 根据hash值给消费者返回存储的加密的数字内容和门限数。当消费者注册时,属性机构根据访问策略判断消费者的属性是否满足访问策略,若满足则根据消费者的属性AS生成属性私钥ASK,通过安全信道发送给消费者秘密保存。消费者从智能合约读取服务器地址并提交许可授权请求LAQ,包括A和t个服务器Ij(1 ≤j≤t)地址、内容标识CID、用户使用规则REX,以及自己的公钥PKU、购买内容的钱包含5%的违约金。若消费者的属性不满足访问策略则属性机构什么也不做,如图1中⑨⑩⑪⑫⑬⑭⑮所示。
6)智能合约收到许可授权请求LAQ后,提取出CID和PKU,将CID发送给A,将CID和PKU发送给t个密钥服务器,如图1中⑯⑰所示。
7)密钥服务器A根据收到的CID查找表中Enc(AP,AK,PK),并将其发送给智能合约,其余被消费者选中的t个密钥服务器根据收到的CID查找表中与之一一对应的自己存储的子密钥,用PKU加密子密钥,并将加密结果返回给智能合约,如图1中⑱⑲所示。
8)智能合约打包许可证LIC,许可证中包含经过AP加密的AK、经过消费者公钥加密的TXi、CID、许可证标识LID、权限使用规则REX。智能合约将许可证发送给消费者,如图1中⑳所示。
9)消费者收到许可证LIC后,其客户端用消费者属性私钥ASK解密出AK,利用私钥SKU解密出TXi,再将t个TXi根据秘密共享方案恢复出F(x),进而得到F(0)并和AK相加得到内容加密密钥key,使用内容加密密钥key解密密文。
10)消费者告知智能合约许可证已经成功获取并且解密成功后,交易完成,智能合约将内容提供商的违约金和消费者的违约金退还,如图1中所示。
方案中涉及到的符号含义如表1所示。
表1 相关符号定义Tab.1 Definition of related symbols
下面介绍数字权限全生命周期保护包括的系统初始化、内容加密、许可授权和内容解密4个主要的协议。
在系统初始化阶段,属性机构根据系统需求定义用户全部属性集L={L1,L2,…,Ln},并生成系统属性公钥PK和系统属性主密钥MK,然后向内容提供商发布PK,秘密保存属性主密钥。
在数字内容加密阶段,内容提供商随机生成内容加密密钥key,用key将原始数字内容加密并将门限数t放置在加密内容的头部上传至IPFS平台。
步骤1 内容提供商的加密组件使用key加密PCD,并将门限数t放在加密内容的头部后上传至IPFS 平台,IPFS 返回给内容提供商hash值。
ECD=Enc(key,PCD)
CP→IPFS:(t,ECD)
IPFS →CP:hash
步骤2 内容提供商设置该内容的访问策略AP,并与内容标识CID一起发送给属性机构AM。
CP→AM:AP‖CID
步骤3 内容提供商在区块链上设置IPFS 返回的hash、数字内容标识CID,以及内容的部分简介PIC以供消费者查询。
CP→blockchain:hash‖CID‖PIC
设GF(q)是一个有限域,其中q是一个大素数,满足0 设椭圆曲线的点构成Abel 群Ep(a,b),取Ep(a,b)的一个生成元G,要求G的阶是一个非常大的素数,G的阶是满足nG=O的最小正整数n,G为公开参数。 步骤4 内容提供商根据Pedersen 可验证的秘密共享方案,在GF(q)有限域里随机选择k-1 个大素数a1,a2,…,ak-1,并将其与CK组成表达式F(x)=ak-1xk-1+…+a2x2+a1x+CK,F(x)的计算过程如算法1所示。 步骤6 内容提供商将Enc(AP,AK,PK)发送给密钥服务器A,将其余n个子密钥TXi(1 ≤i≤n)用各密钥服务器的公钥进行加密,加密结果和Ai(1 ≤i≤n)分别发送给各密钥服务器。各密钥服务器对收到的子密钥密文解密得到TXi,然后验证以下等式TXi G=是否成立,验证过程如算法4 所示。若所有密钥服务器都通过此公式验证,则接收;否则拒绝接收。 步骤7 内容提供商在智能合约上设置A和各密钥服务器的地址、不同的内容使用权限对应的价格和key使用规则,以供消费者查询,并支付一定数量的押金以保证交易顺利完成。 消费者通过IPFS 获得加密的内容后,向智能合约询问该内容不同使用规则的相应价格,根据自己的需求向智能合约申请许可证LIC,智能合约打包好LIC并发送给消费者。 步骤1 消费者U从区块链上读取到感兴趣的内容简介,读取其hash值,将其交给IPFS,IPFS 根据hash将其存储的加密数字内容和门限数发送给消费者。 步骤2 消费者U向属性机构提交自己的身份信息及感兴趣的CID,供属性机构判断其属性是否满足访问策略,若满足,属性机构给消费者返回属性私钥。 步骤3 消费者U得到属性私钥并提取出加密文件头部的门限数t,选择t个服务器;向智能合约S询问该内容的不同使用规则的相应售价;消费者根据自己的需求制定许可授权请求LAQ。 步骤4 消费者U向智能合约S提交许可授权请求LAQ,包括密钥服务器A的地址ADA和t个密钥服务器Ij(1 ≤j≤t)的地址ADIj(1 ≤j≤t)、内容标识CID、用户使用规则REX,以及自己的公钥PKU、购买内容的钱包含5%的违约金。 U→S:LAQ=ADA‖ADIj‖CID‖REX‖PKU‖money 步骤5 智能合约S收到LAQ以后,提取出CID和PKU,将CID发送给A,将CID和PKU发送给t个密钥服务器。 S→A:CID S→Ij:CID‖PKU 步骤6 密钥服务器A根据收到的CID查找对应的Enc(AP,CK,PK),将其与CID一起发送给智能合约,其余被用户选中的t个密钥服务器根据收到的CID查找表中对应的子密钥TXi,并用PKU加密子密钥TXi,将加密结果与CID一起返回给智能合约。 步骤7 智能合约打包许可证LIC并发送给消费者,许可证中包含经过AP加密的AK,经过消费者公钥加密的TXi、CID、许可证标识LID和权限使用规则REX。 消费者使用内容时,根据秘密共享方案恢复出CK,再用属性私钥ASK解密出AK,二者相加得到内容加密密钥key,再对密文解密即可。 步骤1 消费者收到智能合约发给自己的LIC后,用属性私钥ASK解密出AK,再用自己的私钥SKU解密出TXi,将t个TXi根据秘密共享方案恢复出F(x),恢复过程如算法5 所示,进而得到F(0)即CK,将CK和AK相加得到内容加密密钥key,再对密文解密即可。 步骤2 消费者能根据收到许可证正常使用数字内容后,通知智能合约,智能合约退还内容提供商的违约金和消费者的违约金,交易完成。 以太坊中智能合约是用solidity 语言编写的,一些特殊的变量存在于全局命名空间中,主要用于提供区块链的信息。在本文方案中使用了特殊变量Msg.sender,表示消息或交易的发送方。 本文方案设计了两个智能合约,分别为CopyrightOwner合约和Consumer 合约。CopyrightOwner 合约由内容提供商部署,Consumer合约由消费者部署。在智能合约创建的过程中,有以下变量: 1)地址类型的变量CO为内容提供商的地址。 2)地址类型的变量CU为消费者的地址。 3)keyList为映射类型变量,定义了数字内容标识CID到加密内容密钥relatedkey的映射集合。内容提供商可以添加、修改和删除集合。 4)serverList为映射类型变量,定义了数字内容标识CID到代理加密节点relatedserver的映射集合。内容提供商可以添加、修改和删除集合。 5)relatedkey为结构体类型变量,用于存储内容提供商分发给各密钥服务器的密钥。 6)relatedserver为结构体类型变量,用于存储各密钥服务器的地址。 7)relatedserverkey为结构体类型变量,用于存储各密钥服务器发送给消费者的密钥。 8)licenseResult为结构类型变量,定义了一组变量作为其成员,包括加密密钥enckey1、加密密钥enckey2、加密密钥enckey3和加密密钥enckeyA。 本文方案中智能合约主要包括以下11 个函数,分别对应算法6~算法16。 1)内容提供商设置密钥,如算法6 所示。该函数只能被内容提供商执行。内容提供商将密钥CK分为若干份,在本文方案具体实现中将密钥CK分割为5 份,分别用密钥服务器的公钥加密,加密结果存储在智能合约上。同时将密钥AK用密钥服务器A的公钥加密,加密结果也存储在智能合约上。 算法6 OwnersetKey。 2)内容提供商设置密钥服务器的地址,如算法7 所示。该函数只能被内容提供商执行,内容提供商设置密钥服务器的地址以供消费者查看。 算法7 SetSever。 3)密钥服务器获取已加密的密钥,如算法8 所示。密钥服务器读取用自己公钥加密的密钥,并用自己的私钥解密并存储,根据ipfs返回密钥集relatedkey。 算法8 Getkey。 4)各密钥服务器设置已加密的密钥,如算法9 所示。该函数只能被相应的密钥服务器调用,在收到消费者指定自己为其服务时,各密钥服务器用消费者的公钥加密自己保存的部分密钥,并将加密结果发送给智能合约。以密钥服务器1为例,其余密钥服务器类似。 算法9 Serversetkey。 5)智能合约打包许可证。消费者通过Getkey查看自己指定的所有密钥服务器是否已将加密好的部分密钥发送到智能合约,如算法10 所示;待全部密钥服务器均已发送后,智能合约开始打包许可证,如算法11所示。以密钥服务器1举例,其余密钥服务器类似。 算法10 Getkey1。 6)消费者询问密钥服务器的地址,如算法12 所示。消费者选到自己感兴趣的数字内容后,根据ipfs查看各密钥服务器地址。 算法12 Getserver。 7)消费者读取感兴趣的文件头部的门限数t,本文方案实现中t取3。消费者根据服务器的忙碌状态选择3 个服务器,并将此3个服务器的地址、服务器A的地址、自己的公钥、感兴趣内容的CID发送给智能合约,如算法13所示。 算法13 SetbeSevered。 8)服务器从区块链上读取消费者设置的为其进行密钥托管的服务器,如算法14 所示。被选中的t个服务器获取消费者的公钥及其感兴趣数字内容的CID。 算法14 Getinformation。 9)消费者请求许可证,如算法15 所示。该函数只能被智能合约的创建者即消费者执行。 算法15 RequestLicense。 10)消费者获得许可证,如算法16 所示。该函数只能被智能合约的创建者即消费者执行。 算法16 GetLicense。 通过仿真实验分析方案的实用性。PC 硬件配置为Inter-Core-i5 处理器,4 GB RAM,操作系统为64 位。程序设计语言为C语言和solidity。 以太坊区块链在以太坊虚拟机(Ethereum Virtual Machine,EVM)中运行交易触发的代码,EVM 中的每一步操作都有一个特定的消耗,用gas来计算,每一步操作消耗的gas记为gas used,gas 的价格记为gas price,二者的乘积为每笔交易的交易费,本文方案在2020 年8 月15 日进行仿真实验,以太坊(ETH)的价格是1ether=436 USD,gas 的价格是1 Gwei,1 Gwei=109wei=10-9ether。 在本文方案中,智能合约部署在Ropsten 测试网络中,内容提供商账户地址为0x5e8558cf584c92979b723f793e0bb0b307ce3299,CopyrightOwner 合约地址为0xb7569aaa3210afe50fc3 e7faf7675e1dc85ba462,消费者账户地址为0xce54173faD2236856B1350c0E27088015Eb14eAb,Consumer 的合约地址为0x94e7d4894d1cb8ea43085f792cc7cbcc8b8ef7a5。利用智能合约分析了以下操作的花费,内容提供商部署智能合约花费为$1.058406568,内容提供商设置合约地址的花费为$0.018387428,内容提供商将加密好的密钥发送至智能合约即Ownersetkey 花费为$0.108019872,内容提供商设置服务器的地址即Ownersetsever 花费为$0.104185252,密钥服务器利用消费者的公钥加密自己保存的子密钥,并将其发送给消费者,即Serversetkey1、Serversetkey2、Serversetkey3、ServersetkeyA的花费分别为$0.01938456、$0.01943252、$0.019317416、$0.019307824,消费者部署智能合约的花费为$0.518231344,消费者选取为自己托管密钥的服务器即Setbeserver 的花费为$0.0565165,消费者获取许可证即Getlicense的花费为$0.056895384。 从表2 数据可以看出,本文方案能够以较低的开销实现数字内容的保护。 表2 智能合约花费测试Tab.2 Smart contract cost test 1)信息的存储安全。本文方案中信息的存储安全包括数字内容的存储安全、密钥的存储安全和交易信息的存储安全。 a)数字内容的存储安全。内容提供商在将数字内容上传至IPFS 前对数字内容进行加密,没有解密密钥的恶意用户无法获取数字内容的明文信息,保证了数字内容的机密性。 b)数字内容加密密钥的存储安全。本文方案采用密钥分割技术对数字内容加密密钥进行了处理,一部分密钥托管给密钥服务器A,另一部分密钥利用秘密共享方案分割为t份,并分别托管给t个密钥服务器,只有同时得到A和t个服务器的密钥,才能恢复出内容加密密钥。 c)交易信息的存储安全。在传统的DRM 中,内容提供商通常将版权出售给媒体平台以寻求DRM 保护,但是数字内容的权限交易信息和许可证交易信息对他们来说都是不透明的,本文方案中利用区块链技术进行数字权限交易,区块链具有去中心化、公开透明、防篡改等特点,数字权限交易信息被完整地记录在每一个节点上,上链后的交易信息公开透明、真实可靠,且不能被篡改。 2)交易的公平性。消费者获得数字内容加密密钥之前,需向智能合约支付额外的保证金费用,用来保证交易的顺利执行;内容提供商也需向智能合约提供保证金,只有当消费者成功收到许可证,并且成功解密,消费者将告诉智能合约,内容可被正确解密,此时智能合约将保证金返还给双方。此外,本文方案具有支持子密钥服务器验证其收到的子密钥是否正确的功能:一方面可以有效避免恶意内容提供商欺骗子密钥服务器,给子密钥服务器发送错误的子密钥,进而导致消费者收到许可证后不能正常访问数字内容的情况,而此情况下消费者是无法判断哪个或哪些子密钥服务器的子密钥不正确;另一方面还可以避免依赖消费者的道德信誉反馈其收到的许可证能否正常使用的被动情况,因为存储在密钥服务器的子密钥的正确性是可验证的。 3)消费者只有满足访问策略并获取有效的许可证后才能解密数字内容。 内容提供商使用key对数字内容进行加密,并将key分为两部分CK和AK,当消费者想要使用自己感兴趣的数字内容时,其通过智能合约申请许可证,许可证中包含了用消费者公钥和属性基加密的AK,消费者只有满足访问策略才能恢复出key的必须部分AK。 4)密钥服务器、智能合约、区块链上其他节点均无法获得内容加密密钥key。 对于密钥服务器A而言,因为AK采用AP加密,因此密钥服务器A无法获得AK,也就得不到内容加密密钥key。对于其他子密钥服务器而言,只要多于n-t个子密钥服务器是诚实的,便无法获得CK,因此也得不到内容加密密钥key。智能合约在打包许可证时,因为AK采用了用户公钥和属性基加密,t份子密钥采用了消费者公钥加密,只有满足访问策略并且拥有私钥的消费者才能解密,因此智能合约无法获得内容加密密钥。对于区块链的其他节点,即使交易公开透明,因为AK和t份子密钥都用消费者公钥加密,因此只有消费者本人才能用自己的私钥进行解密。因此,密钥服务器、智能合约和区块链上其他节点均无法获得内容加密密钥key。 基于Sahai等[17]提出的属性基加密方案可以得出,利用消费者属性私钥ASK可解密得到AK=ABE.Dec(ASK,ABE.Enc(AP,AK,PK)),再用其私钥解密出t份子密钥后,根据秘密共享方案恢复出CK,进而得到内容加密密钥key=CK+AK。 将传统DRM 方 案[13-14],以及基于区块链的DRM 方案[7-8,11-12]与本文方案分别从是否支持内容加密密钥托管、内容加密密钥的保护方式、是否支持访问控制和是否考虑交易公平性四个方面进行对比分析,对比结果如表3所示。 从表3 可以看出,传统的DRM 方案[13-14]都对内容加密密钥实施了托管,并通过加密方式对内容加密密钥进行了保护。在基于区块链的DRM 方案中,文献[11]方案数字内容未经加密直接上传到IPFS,只对IPFS 返回的文件hash值进行分割后再加密;文献[12]方案利用秘密共享方案对媒体数字内容进行分割,分割后的shares 直接存储至IPFS;文献[7]方案未考虑数字内容的存储问题,仅实现了版权注册和版权交易;文献[8]方案虽然对内容加密密钥进行了加密保护,但未考虑内容加密密钥的托管;本文方案为实现对内容加密密钥的安全保存和有效分发,采用了密钥托管方式,并通过公钥加密和属性基加密对其进行保护。此外,在访问控制和交易公平性方面,仅本文方案和文献[11]方案同时支持。综上分析可知,在上述各功能方面,本文方案相较对比方案考虑得更全面。 本文提出了一种基于区块链的数字权限保护方案。该方案包括系统初始化、内容加密、许可授权和内容解密4 个主要的协议,将内容提供商从加密内容、加密密钥的工作中解脱出来;同时,为实现密钥的安全存储,本文方案将密钥进行分割,只有同时得到密钥服务器A提供的子密钥和t份子密钥服务器提供的子密钥才能解密出内容加密密钥。仿真实验结果表明了本文方案的可行性和实用性,另外对方案的正确性和安全性也进行了分析验证。4.3 许可授权协议
4.4 内容解密协议
5 智能合约的设计
6 方案分析
6.1 仿真实验结果分析
6.2 安全性分析
6.3 正确性分析
6.4 与其他方案的比较
7 结语