杨 婷,庞晓琼 ,陈文俊,2,王云婷,刘天野
1.中北大学 大数据学院,太原 030051
2.中国人民银行 太原中心支行,太原 030001
3.中北大学朔州校区 电气与计算机工程管理部,山西 朔州 036000
随着互联网技术的快速发展,网上交易和传播的数字内容越来越多,数字化内容给人们带来方便的同时也面临着被非法获取的风险。数字权限管理(Digital Rights Management,DRM)通过内容提供者对数字内容加密及消费者获取许可证后才能使用内容等技术手段实现对数字内容的保护,保证数字内容被合法使用[1-5]。
在传统的DRM中,内容提供者创作数字内容,并用内容加密秘钥对数字内容进行加密,将加密内容由内容服务器存储,内容加密密钥由许可证服务器存储,当消费者购买数字内容时,从内容服务器下载加密数字内容,并向许可证服务器申请许可证,只有消费者获得许可证后,其客户端才可以解密内容并严格按照许可证中的权限执行。然而以上的传统DRM 存在以下缺点:交易信息不透明公开,信息易被篡改。区块链作为一种新兴的技术,其特点能够很好地解决传统DRM 的不足,具体地说,首先,基于区块链的DRM 可以实现信息的公开透明。区块链上的每个节点都可以在本地存储完整的区块链数据,用户可以随时查看区块链上的数据。因此,在传统的DRM 中,内容提供商需要依靠集中式服务器提供的不透明的销售信息来获取利润,而区块链中的信息透明则解决了这一问题。其次,基于区块链的DRM 可以防止信息被篡改。区块链是一个公共账本,节点验证区块后将其永久存储。区块包含前一个区块的哈希值。如果修改了一个区块,则之后的所有区块都将重新计算。若系统中有比51%更多的恶意节点,系统才会失效,否则单个节点无法实现对数据库的有效修改,因此区块链可以解决传统DRM 中的交易信息和权限信息不透明或可能被集中式服务器篡改的问题。
因此,很多学者积极地利用区块链技术实现数字权限保护[6-10],内容创造者在智能合约上设置数字内容的价格、不同使用权限对应的不同价格,以供消费者查看,利用智能合约自动发布许可证,在区块链上记录许可证交易信息,消费者和内容提供者都可以在区块链上实时查找信息,同时可以防止权限信息和交易信息被篡改。 然而这些工作均未考虑用户的隐私保护问题,如今,用户的数据信息和隐私权与许多经济利益息息相关。在DRM 系统中,内容提供商的利益往往与保护用户隐私密切相关,如果用户的隐私在购买数字产品的过程中被泄露,将影响到使用该系统的用户数量,甚至直接影响到内容服务提供商的利益。现实环境中,购买数字内容使用权限的消费者也不希望其身份信息和使用记录的信息被内容提供者或区块链上的恶意节点获取,因此有必要考虑区块链环境下支持用户隐私保护的数字权限管理问题。
因此,本文设计并实现了区块链环境下支持隐私保护的数字权限保护方案。具体贡献如下:(1)提出了一种支持区块链环境下隐私保护的数字权限保护方案,主要包括三个协议,内容加密、许可授权和内容解密。(2)为实现内容加密密钥的安全分发采用了Diffie-Hellman密钥交换和加法同态加密算法。(3)为防止恶意节点收集用户的使用习惯等敏感信息,允许用户匿名购买内容并申请授权,起到了有效保护用户隐私的作用。
通过保护数字内容的整个生命周期,数字权限管理可以保护内容的安全性和合理使用,防止无偿数字内容的非法使用和传播。随着数字权限保护研究的不断深入,国内外学者取得了丰硕的成果。
加密数字内容是保证数字内容安全的重要手段。张等人[11]提出云计算环境下支持属性撤销的外包解密DRM 方案,针对DRM 中用户隐私保护的问题,提出用户通过匿名标签购买许可证,并提出一种支持属性撤销的外包解密机制。清华大学的Wang等人[12]提出了基于SIM 卡的移动DRM 方案CS-DRM,该方案用对称加密技术加密内容加密秘钥,使用SIM卡提前协商对称秘钥以保证其安全性。Petrlic[13]提出利用同态加密和秘钥共享技术,并与代理重加密机制结合,加密内容的授权管理由云服务提供商服务器完成,保护了用户的隐私和敏感数据。黄等人[14]提出云环境中支持隐私保护的数字权限保护方案,利用属性基加密与加法同态加密算法相结合,实现数字内容保护的同时保护了用户的隐私。蒋等人[15]提出云计算下具有隐私保护的数字版权保护方案,支持用户在超级分发模式和在线模式下匿名购买和使用数字内容,并防止用户敏感信息被收集,保护了用户的隐私。
尽管DRM 技术得到了一定范围的研究,但以上研究都存在以下缺点,权限信息和交易信息不透明,传统的DRM 需要进行私钥签名以防止消息被篡改,增加了很多额外开销,而区块链具有公开透明、防篡改的特点,很好地解决了以上传统DRM 的缺点,自区块链问世以来,得到了学术界和工业界的强烈欢迎,人们积极地用区块链技术解决传统DRM中的问题[6-10],以下是基于区块链的DRM研究。
Xu 等人[6]提出基于区块链的网络媒体的数字权限管理方案,他们提出的框架使用区块链的特点来实现有效的产品管理、权限管理、交易管理和用户行为管理。但是他们并没有设计出完整的详细的DRM 保护方案,方案的设计不完整,并且他们的方案在私有链上实施,不具有完全去中心化的特点。Zhang等人[7]提出了一种基于区块链技术的DRM 机制,该方案在区块链上记录权限交易信息和许可证信息,使信息透明、安全。并利用智能合约自动颁发许可证以确保权限交易的可靠性。Fujimura等人[8]提出了一个新的基于区块链的数字权限保护系统,并且设计了一个详细的授权使用数字产品时的交易方案,内容提供商用消费者的公钥对内容加密秘钥加密,加密结果放入交易内,交易被矿工挖矿成功后上链,消费者再从链上将加密结果取下,用自己的私钥解密,以此来使用数字内容。Xie[9]提出了一种基于区块链的DRM 方案,该方案在智能合约中设计了一个权限状态机制和一个授权树,以确保内容提供商能够灵活地控制其内容。同时,权限信息和交易信息都被记录在区块链上。李等人[16]提出基于区块链的数字版权交易系统,借助区块链技术,设计了一个基于联盟链的数字版权交易系统模型,实现了版权交易和版权注册。
然而,以上工作均未考虑消费者隐私信息的保护问题。而一旦用户的使用记录等敏感信息被不法分子获取,对用户是极其不友好的。因此有必要在用户购买数字内容的过程中,对用户所购买的具体数字内容信息进行隐藏,以实现对用户隐私的保护。因此,设计并实现了基于区块链的支持用户隐私保护的DRM方案。
基于区块链的DRM方案框架如图1所示。
(1)IPFS:星际文件系统(Interplanetary File System,IPFS)是一个对等的分布式文件系统,在实际应用中,由于区块膨胀和交易费用,区块链不适合存储大文件(视频、音频等)。因此,本文将加密文件存储在IPFS 中。内容创作者将经过加密的内容传给IPFS,IPFS 对其进行哈希处理生成数字指纹返回给内容创作者,消费者通过给IPFS发送数字指纹,获得加密的内容。
图1 基于区块链的DRM方案框架
(2)代理加密节点A:代理加密节点A 存储内容创作者发来的CID对应的部分秘钥,并建立一张CID与部分秘钥一一对应的表。根据D-H 算法将自己的公开钥发送给智能合约,并利用消费者的公开钥计算出他们的会话秘钥,在收到内容解密申请时,利用会话秘钥解密出消费者想要购买内容的CID,根据CID 查找与CID一一对应的表中存储的部分秘钥ok,利用CID 随机生成长度为l的 hk 和 hs,并用 hk 加密 ok,加密结果再用会话秘钥进行再次加密,结果发送给智能合约。此外,A还需要将hs与CID用代理加密节点B的公钥加密,发送给B。
(3)代理加密节点B:代理加密节点B 存储内容创作者发来的CID对应的部分秘钥,并建立一张CID与部分秘钥一一对应的表。根据D-H 算法将自己的公开钥发送给智能合约,并利用消费者的公开钥计算出他们的会话秘钥,再用自己的私钥解密出hs 与CID 后,代理加密节点B查找表中存储的与CID一一对应的sk,并用hs 加密sk,加密结果再用会话秘钥加密,并发送至智能合约。
(4)智能合约:智能合约在收到代理加密节点A、B的消息后打包许可证,并返回给消费者。
(5)消费者:消费者通过智能合约上传自己的公开钥并根据代理加密节点A 和B 的公开钥计算出会话秘钥,利用会话秘钥加密自己感兴趣的CID,并向智能合约申请许可证。在获取许可证后,客户端的DRM 组件将该许可证放在许可证库中,接着客户端Windows媒体权限管理器对数字内容进行解密,并根据许可证中的使用权限播放流媒体文件。
(6)内容创造者:内容创造者将椭圆曲线上的点构成的Abel 群E(pa,b)和E(pa,b)上的生成元G 作为公开参数发送给智能合约。内容创造者将自己的公开钥发送到智能合约以和代理加密节点计算会话秘钥。
方案中涉及到的符号含义由表1给出。
表1 符号定义
在数字内容加密阶段,内容创造者使用加密组件生成内容加密秘钥key,并用key 使用对称加密算法加密数字内容,加密结果放在星际文献系统(IPFS)上。
步骤1内容创造者的加密组件随机生成长度为l的sk和ok,并相加得到key。
Key=sk+ok
步骤2内容创造者使用key加密PCD,并将加密结果ECD放到IPFS上。
ECD=Enc(key,PCD)
步骤3内容创造者将IPFS返回的hash值与内容标识CID及部分简介以交易的形式放入区块链。
步骤4内容创造者使用代理加密节点A 的公钥加密ok,并将加密结果发给代理加密节点A,并使用代理加密节点B的公钥加密sk,并将加密结果发给代理加密节点B。
owner→A:Enc(PKA,ok)
owner→B:Enc(PKB,sk)
步骤5代理加密节点A 和B 用自己的私钥解密出ok、sk,并分别建立一张CID与ok、sk一一对应的表。
步骤6内容创造者将椭圆曲线上的点构成的Abel群E(pa,b)和E(pa,b)上的生成元G 作为公开参数发送给智能合约。
步骤1消费者通过智能合约分别与代理加密节点A、B根据D-H算法协商会话秘钥,具体如下。
代理加密节点A选一小于n的整数nA,作为秘密钥,并计算出PA=nAG,将其作为自己的公开钥。代理加密节点B亦之,选取自己的秘密钥nB并计算出公开钥PB。同理,消费者选取自己的秘密钥nu并计算出公开钥Pu。
步骤2代理加密节点A、代理加密节点B、消费者将PA、PB、Pu发送给智能合约,以供消费者和代理加密节点A、B计算他们的会话秘钥。
A→smart:PA
B→smart:PB
U→smart:Pu
步骤3代理加密节点A、B分别和消费者计算他们之间的会话秘钥KA、KB。
KA=PAnu=PunA
KB=PBnu=PunB
步骤4消费者向智能合约提交申请许可证,包括所购买内容的金额、用户使用规则REX、及用会话秘钥KA、KB加密的CID。
U→smart:LAQ=money||Enc(KA,CID)||Enc(KB,CID)||REX
步骤5代理加密节点A和B在收到Enc(KA,CID)、Enc(KB,CID)以后用会话秘钥KA、KB 解密出CID,并查找表找出与CID一一对应的ok和sk,代理加密节点A根据CID 随机生成长度为l的hk 和hs,满足CID=hk+hs,并用hk加密ok,即Enc(hk,ok)。
A:CID=hk+hs
A:Enc(hk,ok)
步骤6代理加密节点A 将hs 用代理加密节点B 的公钥加密,并发送给B,B用自己的私钥解密出CID对应的hs,查找出与CID 一一对应的sk,并用hs 加密自己存储的sk,即Enc(hs,sk)。
A→B:Enc(PKB,hs)|| Enc(PKB,CID)
B:Enc(hs,sk)
步骤7代理加密节点A 用协商秘钥KA 将hs+hk加密,将Enc(hk,ok)也用KA 加密,代理加密节点B 用协商秘钥KB 将Enc(hs,sk)加密,加密结果发送到智能合约。
A→smart:Enc(KA,hs+hk)||Enc(KA,Enc(hk,ok))
B→smart:Enc(KB,Enc(hs,sk))
步骤8智能合约打包许可证发给消费者。
smart→U:LIC=Enc(KA,hs+hk)||Enc(KA,Enc(hk,ok))||Enc(KB,Enc(hs,sk))
步骤1消费者用协商秘钥KA解密出hs+hk和Enc(hk,ok),用协商秘钥KB解密出Enc(hs,sk)。
U:hs+hk=Dec(KA,Enc(KA,hs+hk))
Enc(hk,ok)=Dec(KA,Enc(KA,Enc(hk,ok)))
Enc(hs,sk)=Dec(KB,Enc(KB,Enc(hs,sk)))
步骤2消费者根据同态加密算法解密出ok+sk。
ok+sk=Dec(hk+hs,Enc(hk,ok)+Enc(hs,sk))
步骤3消费者根据key解密出密文。
Key=ok+sk,PCD=Dec(key,ECD)
本方案中DRM智能合约主要包括以下9个函数。
(1)内容创造者设置内容加密秘钥。此功能只能被内容创作者执行,内容创造者将秘钥分为两份,分别用代理加密节点的公钥加密,加密结果放在智能合约上。(2)代理加密节点获取已加密的秘钥。代理加密节点读取用自己公钥加密的秘钥,并用自己的私钥解密并存储。(3)内容创造者设置代理加密节点地址。此功能只能被内容创作者执行,内容创造者在智能合约上设置代理加密节点的地址,以供消费者查询并与其通信。(4)消费者获取代理加密节点地址。消费者在智能合约上查询代理加密节点的地址,以获取许可证。(5)代理加密节点A 设置会话秘钥的公开钥。此功能只能被代理加密节点A 执行,代理加密节点A 在智能合约上设置会话秘钥的公开钥,以供消费者查询并计算消费者和代理加密节点之间的会话秘钥。(6)消费者获取代理加密节点的公开钥。消费者将根据自己的公开钥和代理加密节点A 的公开钥计算出会话秘钥。代理加密节点B与消费者设置、获取会话秘钥的公开钥与代理加密节点A 相同。(7)消费者申请许可证。消费者向智能合约申请许可证,消费者利用与两个代理加密节点的会话秘钥分别加密欲购买的内容标识,并将其发送至智能合约以申请许可证。(8)代理加密节点A 设置加密好的部分秘钥。此功能只能被代理加密节点A 执行,代理加密节点A 在智能合约上设置加密好的部分秘钥,以供智能合约打包许可证发送给消费者。同理代理加密节点B 进行同样操作。(9)消费者获取许可证。智能合约将代理加密节点加密好的秘钥打包成许可证发送给消费者。
在这一部分中,将通过实验分析方案的性能和实用性。PC机硬件配置为Intel-Core-i5处理器,4 GB RAM,操作系统为64位。程序设计语言是C语言和solidity。
以太坊区块链在太坊虚拟机中运行交易所触发的代码,在全节点进行相同的计算并存储相同的值时会使智能合约有所消耗,以太坊中用gas 为单位表示消耗、发送、存储和执行计算等,每项操作在EVM 中都被设置了固定的gas 消耗值,为gas used,单位gas 的价格(用以太币计算)称之为gas price,二者的乘积为每笔交易的交易费,在 2020 年 4 月 1 日进行的实验,ETH 的价格是 1 ether=131 USD,gas 价格是 1 Gwei,1 Gwei=109wei=10−9ether。
在本文的方案中,智能合约被部署在Ropsten 测试网络中,账户地址为0x5e8558cf584c92979b723f793e-0bb0b307ce3299,智能合约地址为0x8ad4fa887d830fa8a-8ac67fded3a9c161346a911,利用智能合约分析了以下操作的花费,内容创造者部署DRM 智能合约花费为$0.179 908 326,内容创造者设置合约地址的花费为$0.005 521 126,内容创造者将加密好的秘钥发送至智能合约即setkey花费为$0.014 814 135,内容创造者设置代理加密节点的地址即setnode花费为$0.014 368 735,代理加密节点A 设置会话秘钥的公开钥即setnode1-information 花费为$0.005 817 579,代理加密节点 A 将加密好的部分秘钥发送至智能合约即setkey1 花费为$0.005 811 291,代理加密节点B 设置会话秘钥的公开钥即 setnode2information 花费为$0.005 826 225,代理加密节点B将加密好的部分秘钥发送至智能合约即setkey2花费为$0.005 834 347,消费者设置会话秘钥的公钥即setuserinformation 花费为$0.005 824 653,消费者获取许可证即getlicense花费为$0.009 589 462。如表2所示评估表明本方文案能够以较低的开销保证用户隐私保护。
表2 智能合约花费测试
根据D-H秘钥协商的原理,消费者利用协商会话秘钥解密出hs+hk、Enc(hk,ok)和Enc(hs,sk),基于Castelluccia等人提出的加法同态加密算法[17]可以得出Enc(hk,ok)+Enc(hs,sk)=Enc(hk+hs,ok+sk),则由上述等式,可得(ok+sk)=Dec(hk+hs,Enc(hk,ok)+Enc(hs,sk)),由Key=sk+ok,用户可以正确解密内容。
秘钥的存储安全:如何保证加密数字内容的秘钥存储安全,本文采用秘钥分割技术,一部分秘钥交给代理加密节点A 掌管,另一部分秘钥交给代理加密节点B 掌管,因此只有同时得到A 和B 提供的秘钥,才能恢复出key,即使一个节点被攻克,也得不到完整的秘钥key,提高了秘钥保存的安全性。同时借助代理加密节点还解决了一个关键问题,将内容创造者从加密内容秘钥key 的任务中解放出来,减轻了内容创造者的负担。
(1)用户只有获取有效的许可证后才能解密内容。
内容提供者使用内容加密秘钥key 将数字内容明文进行加密,并将key分为两部分SK和OK交给代理加密节点A和B保存,消费者只有获取key才能解密内容,消费者通过智能合约获取许可证,许可证中包含KA加密的 hs+hk 和 Enc(hk,ok),以及协商秘钥 KB 加密的Enc(hs,sk),在使用内容时,消费者用协商秘钥KA解密出hs+hk和Enc(hk,ok),用协商秘钥KB解密出Enc(hs,sk),再基于同态加密算法解密出ok+sk即key,因此消费者只有获取有效的许可证后才能解密内容。
(2)代理加密节点、智能合约、区块链上其他节点均无法获得内容加密秘钥Key。
对于代理加密节点A而言,因为其是被内容创作者选举出来信任节点且其只保存部分秘钥OK,因此无法获得内容加密秘钥。对于代理加密节点B而言,因为其是被内容创作者选举出来信任节点且其只保存部分秘钥SK,也无法获得内容加密秘钥。对于智能合约在打包许可证时,因为OK、SK 采用了D-H 会话秘钥和加法同态加密算法进行加密,智能合约也无法获取内容加密秘钥。对于区块链的其他节点,即使交易公开透明,因为hs+hk,Enc(hk,ok),Enc(hs,sk)都用会话秘钥进行加密,因此只有消费者本人才能解密。
(3)消费者在获取许可证的过程中,代理加密节点A、B无法获得内容加密秘钥。
在消费者申请获取许可证的过程中,代理加密节点A、B向智能合约发送各自加密的部分秘钥,A向智能合约发送Enc(KA,hs+hk)||Enc(KA,Enc(hk,ok)),B向智能合约发送Enc(KB,Enc(hs,sk)),而由于代理加密节点B 向智能合约发送的部分秘钥sk 是经过代理加密节点A 发送的秘钥hs 加密后再采用D-H 会话秘钥进行加密,因此,只有消费者和代理加密节点B 可以获得Enc(hs,sk),而代理加密节点A无法获得Enc(hs,sk),因此代理加密加点A 无法根据加法同态加密算法ok+sk=Dec(hk+hs,Enc(hk,ok)+Enc(hs,sk))解密出内容加密秘钥。同理代理加密节点B无法获得Enc(hk,ok),因此不能获得内容加密秘钥。
4.3.1 匿名性
首先,由于区块链是分布式的存储架构,因此很难实现网络窃听,其次,用户由公钥经过一定算法生成以太坊地址,且可以生成多个地址,因此很难通过交易推断出用户信息,有较好的匿名性[18]。
4.3.2 敏感记录保护
消费者消费者在申请许可证的过程中,不会有隐私泄露。消费者在向智能合约申请许可证时,消费者向智能合约发送请求LAQ,由于LAQ=money||Enc(KA,CID)||Enc(KB,CID)||REX 即购买内容的标识CID 经过与代理加密节点A、B协商的会话秘钥的加密,所以购买内容标识不会被泄露,区块链上其他节点无法得到消费者购买的内容标识CID。且由于消费者每次购买数字内容时的KA、KB都不相同,因此代理加密节点A、B无法根据该内容的订购请求推断出特定的匿名用户,匿名用户的订购记录也不能被收集和分析。
通过以上分析,本文方案能够有效防止用户敏感记录的泄露和分析。
设:Tr,进行一次非对称加密运算的计算时间开销;Ts,进行一次对称加密运算的计算时间开销;Th,进行一次模加运算的计算时间开销。符号含义如表3所示。
表3 符号定义
本文提出的方案主要包括内容加密、许可授权和内容解密3 个协议,在内容加密协议中的时间开销为Ts+4Tr,在许可授权协议中的时间开销为7Ts+2Th+3Tr,在内容解密协议中的时间开销为4Ts+2Th,总计12Ts+7Tr+4Th。
所以本文的计算开销如表4所示。
表4 计算开销
本文主要研究了在区块链环境下数字权限保护中的用户隐私保护问题,提出了将加法同态加密算法与Diffie-Hellman秘钥交换相结合的内容加密密钥保护和分发机制,以保证内容加密密钥的安全性,同时有效保护了用户的隐私。对方案的正确性和安全性进行了证明,并对该方案进行了仿真实验,实验结果表明本文方案具有可行性,且所提方案能够以较低的开销保护用户隐私。