张逸飞,曹少中,祁德力,王 亮,杨彦红
1.北京印刷学院信息工程学院,北京102600
2.北京印刷学院经济管理学院,北京102600
侵权记录是一种重要的数据记录,区别于保存一般的文档信息,其本质是体现真实的侵权内容.当作为证据进行存储时,它需要拥有重要的参考价值并具备法律效力.
随着出版行业信息化进程的推进,在司法证明体系变革和互联网法院渐增的形势下,人们开始将数字化的技术应用于维权工作,但从每年的“3·15”维权热度可以看出,以出版社为首的众多图书作品被侵权的现象依旧屡屡发生.在最近流行的有声朗读等平台上,未经授权的自媒体或机构存在图书侵权的行为,影响了出版社的权益.目前的存证模式大多是将侵权证据通过电子签名等防伪、抗抵赖的技术手段处理后委托给中心数据库或者公证处进行存管[1],但很难保证在这种模式下电子证据的时效性,并且在存储、传输和取证等过程中容易遭受攻击和篡改.出版社在维权过程中存在周期长、成本高、权证文件易被伪造等一系列问题[2].
区块链是一种在对等网络环境下通过透明的可信规则构建不可伪造、不可篡改且可追溯的块链式数据结构,能将动态过程按时间顺序记录和验证,因此在金融、司法认证等领域得到了越来越多的关注和应用[3].区块链作为一种记录手段应用到存证领域,可解决现有存证过程举证时效性低、数据易被篡改等问题[4].
为了能够更高效地服务于图书版权保护等相关工作,本文结合区块链以及数字签名等技术,提出了一种有效可行的图书侵权记录存证方案:
1)基于版权溯源管理系统处理音频内容,将得到的图书查重报告提交到存证平台作为侵权证据进行存储.
2)在出版社内部构建私有链,将内部人员作为参与节点管理并维护平台的稳定运行,降低了保障数据安全的成本.
3)以哈希函数和非对称密钥等技术手段加密存储查重报告,将查重报告指纹等摘要信息存储在区块头中,实现了对侵权证据的保护.
4)将工作量证明机制作为私链的共识算法,借鉴传统的PoW 共识方式验证节点身份,以确保侵权数据的完整性、真实性.节点先对区块有效性达成一致,再通过验证机制对区块内的加密数据进行二次查验.
2018年5月,工信部信息中心发布《2018年中国区块链产业白皮书》,根据近几年区块链技术在电子证据领域的应用实践情况,总结归纳出“区块链因其本身具备不可篡改、可追溯特征,极适合与电子存证相结合”,体现出中国对区块链电子存证的积极认可和倡导.从以往司法审判中对电子证据的采信度来看,传统电子证据往往具有脆弱性、易被篡改、易被破坏等特点[5].在存证过程中,电子证据很容易遭攻击而受损,使可信度大大降低,再加上司法机关的相关科技鉴定能力不足等问题,导致电子证据的司法采信度普遍较低;而区块链技术的去中心化、去信任化、不易篡改的特点则可以有效解决这一难题,降低证明证据真实性的成本.基于区块链的存证方式与现有存证方式的对比情况如表1所示.
涉及区块链证据被采信的案例尚不多见,目前全国仅有3 例.比如在2018年6月杭州审理的一项网络传播权纠纷案中,针对被侵害的作品信息首次采用区块链电子存证.该案件将侵权的保全文件包进行Hash 计算,并将此Hash 值存在区块链中.审判时从区块链中获取该Hash 值,再与法庭上文件包Hash 进行比对,以此证明该文件包未被修改[6].
表1 存证方式对比Table 1 Comparison of deposit methods
区块链技术凭借全程留痕、不可篡改的记录功能,可以提供具有法律效力的电子存证服务,且其去中心化的运行模式也更有助于构建多方信任机制,因此利用区块链技术提高数据的安全性和效率也就成了当下的研究热点.文献[7]基于拜占庭容错(Byzantine fault tolerance,BFT)算法和许可区块链技术创建了eHealth 模型,该模型允许信息删除,可用于存储医疗数据或仅存储与安全相关的数据.文献[8]利用区块链技术对获取到的电子数据进行固定保存,并将数据冗余分片,再引入积分制度以保证系统的安全性和稳定性.文献[9]在实用拜占庭容错算法的基础上提出一种改进的高效共识算法,并基于Merkle Tree 的证据保全建立了一种基于区块链的云计算电子取证模型,可以实现云计算环境下的去中心化电子取证.文献[10]提出一种私有链架构,利用审计中心提供记账账本以及离线监督的方式实现全网共识机制,并设计了一种堆叠式安全文件系统,为内外网隔离的环境提供了一种有效的私有链应用模式.
2018年中本聪首次提出区块链概念[11].一般来说,区块链结构是以数据区块为单位、按时间顺序链接而成的.数据区块则是由分布式节点通过共识算法产生的,不存在任何中心化的特殊节点,且每个节点均会验证并传播区块数据,从而保证少量节点的作恶不会影响到整个区块链系统的运行.
在区块链系统中使用的共识算法包括实用拜占庭容错(practical Byzantine fault tolerance, PBFT)算法、工作量证明(proof of work, PoW)算法、股权证明(proof of stake, PoS)算法等,其中PBFT 算法将原始拜占庭容错算法的复杂度由指数级降低到多项式级,提高了拜占庭容错算法在实际系统应用中的可行性[12];在采用PoS 共识的系统中,持有最多数字货币而非最高算力的节点具有最大概率打包下一个区块[13].对于PoW 共识算法,一般认定算力最高的节点可以获得区块的打包权.虽然PoW 共识在工作过程中难免会出现算力浪费的情况,但是其可靠的节点认证机制、较强的公平性和匿名性提高了系统的抗攻击能力,从而保证了系统的安全.只要通过合理的设计,该算法也可适用于本文的私有链系统.
根据底层构架和应用范畴,可以将不同区块链分为公有链、联盟链和私有链3 类.公有链的参与者可以是任何人,以比特币为代表.联盟链指的是一种由多个实体构成且带有准入限制的区块链,以超级账本为代表.私有链特指区块链的创建及维护权限由一个组织拥有,其小规模的区块链结构可以使非组织成员仅拥有访问权限.私有链的用户规模小,交易速度快,且彼此之间完全建立了信任,因此无需复杂的共识机制即可构建多方信任[14].在本文的现实场景中,节点均为出版社内部成员,彼此之间的信任程度较高,均会积极遵守共识算法,维护私有链运行.主流的区块链技术如表2所示.
表2 主流的区块链实例Table 2 Mainstream blockchain instance
平台在生成图书查重报告的过程中使用了网络爬虫技术,自动提取音频网站网页内容并下载到本地服务器.爬虫从一个或多个初始页面的统一资源定位符(uniform resource locator, URL)开始运行,先将这些URL 全部放入一个有序的待爬行队列;再分析页面源文件的URL 以提取新的Web 链接;接着以这些Web 链接为依据继续寻找新的Web 链接.如此不断循环,直到抓取并分析完所有页面为止[15-16].
侵权记录存证包括数据处理、查重报告入块、验证等工作.平台通过爬虫模块、转换模块和对比模块共同协作,将音频信息进行处理后得到查重报告.采用区块链技术构成存证模块,这个存证过程涉及到数据的生成、收集、存储、传输[17].为了使区块信息在日后具备法律效力,在整个存证的过程中都要保障电子数据的机密性、完整性与有效性[18-19].因此,存证模块采用私有链结构.在私有链区块头内储存查重报告摘要与数字签名等加密信息,通过类PoW 底层共识使私有链节点就区块信息达成全网一致,于是验证机制可以根据数字签名对节点进行身份验证和数据验证.
如图1所示,系统采用B/S 体系结构,根据“高内聚低耦合”的设计思路分为应用层、业务层、逻辑层、区块链层共4 层[20].
图1 系统体系结构图Figure 1 Diagram for system architecture
应用层包含前端UI 和展示层,用户通过浏览器向服务器发送请求,服务器对请求进行处理并将产生的响应返回给浏览器,最终结果呈现在可视化的Web 界面上[21].根据实际需求设计业务层的5 个功能,并由逻辑层给出实现算法.逻辑层使用多媒体视频处理方案FFmpeg(fast forward mpeg)下的音视频转换模块,将爬虫所获取的音频信息进行格式转换,引入编码器和交互模块计算语义相似度等数值,充分利用爬虫技术和自然语言处理技术(natural language processing, NLP),保障系统的识别性能.区块链层即为构建存证模块的主要部分,通过传输控制协议(transmission control protocol)与逻辑层进行交互,提供了加密算法,例如共识机制、加密验证算法等.此外,区块链层还包括数据逻辑结构,如块链式结构.在区块链层完成对查重报告的数据处理、传输、验证和入块上链等工作.
功能流程图如2 所示,系统首先通过爬虫技术从各大互联网平台采集音频信息,然后利用语音识别技术(automatic speech recognition, ASR)和NLP 自然语言处理技术对音频信息进行转换和处理,得到待查文本.在对比模块中,将待查文本与出版社图书文本库中的电子文档进行比较.对比结果包括总体重复率、重复来源和重复语句等信息,这些重要信息汇总成为查重报告.当重复率超过阈值上限时,通过接口调用存证模块对查重报告进行预处理、提交信息入块等操作,最终可通过浏览器查看主链区块的公示信息.
图2 系统功能流程图Figure 2 System function process
在对比环节中,图书样本均来自于出版社内部自有、自建的文本库.基于隐私安全与交易速度的考虑,本文采用私有链体系设计区块结构、共识机制、验证机制,保证经平台处理的证据数据的可信度和可靠性.
平台从提交接口接收到重复率超过阈值的查重报告,经密码学技术处理后以加密形式保存,嵌入区块体内以构建特殊的存证区块结构.为了使私有链节点就区块信息达成全网一致,并保证区块的有效性,其底层共识借鉴了传统的PoW 共识,设计了更加便捷实用的共识算法,达成共识后就可以验证区块头的加密信息,进一步保障块内数据的完整性和真实性.区块一经发布便不可撤销,因此最终进入主链的数据能够安全地保存在数据库中.私有链内的所有节点都将从创世区块开始的主链副本存储在本地,一旦新的区块发现副本就将其添加到主链进行更新.
平台私有链实行主链最长原则[22].区块结构分为两部分:区块头和区块体.区块头内包括父区块哈希值previous Hash、交易列表transaction、时间戳timestamp 以及工作量证明proof 等字段,详细结构见表3.区块体则是记录查重报告的数据区.
表3 私有链区块头结构表Table 3 Private chain block header structure table
与普通链表相比,私有链数据结构是基于哈希指针构建的一个有序的、单向链接的“哈希链表”.这个链表链接一系列的区块,以便保存它们的基础数据.哈希指针是一种存储信息哈希值、并指向存储地点的指针,可以定位数据存储位置,其哈希值也可以作为检验区块信息是否被修改过的依据,进而保障私有链内数据的不可变.在本文设计的私有链结构中,哈希指针即为previous Hash 字段,也称父区块哈希值.由创世区块开始,之后的每个区块都通过该字段链接到前一区块.每个新区块都包含父区块哈希值,这个哈希值可以与时间戳等数据存储在一起,形成区块头结构.当出版社内部节点接收到一个已经打包完成的新区块后,都会检验新区块头中存储的父区块哈希值,并与现有主链中最后一个区块的哈希值进行对比,一致则说明区块是有效的.如果攻击者破坏了前面的某个区块,那么后面所有区块的哈希值都会变得不正确.整个私有链结构如图3所示.
图3 私有链结构图Figure 3 Private chain structure
存证区块的创新性在于transaction 字段,该字段包括经加密处理后的查重报告摘要信息、节点签名结果和公钥信息等重要数据.查重报告由系统对音频识别结果进行查重产生,包含了该结果的总体重率、重复来源、被检测出的与版权库中文章重复的句子.数据信息并不繁杂,因此本文创建的区块体内直接包含查重报告信息,如图3的区块体结构部分所示.在后续的验证机制中,通过区块头内transaction 字段与区块体内的查重报告信息进行节点身份和摘要完整性验证,防止查重报告数据被篡改.
时间戳timestamp 采用了UNIX 的方式记录该区块的产生时间,该字段是加在区块上的时间序列.有了时间戳的存在,区块上的交易信息便无法更改,能够证实侵权记录信息必然真实存在于某时间.本文将时间戳写入区块头内,在计算哈希值的过程中会把父区块的时间戳纳入,从而形成对前一时间戳的增强.一旦区块加入主链,即被全网的节点所记录,这有助于平台形成不可篡改、不可伪造的诚实可信系统.
私有链存证平台依赖于出版社内部的节点完成区块的打包与验证.共识机制作为区块链技术的核心要素,是为节点间达成一致所采用的方法[23],其中Proof of X 类共识又可称为证明类共识,此类共识需要节点在每一轮共识过程中证明自己具有某种特定的能力[24-25].例如,PoW 共识的核心思想是通过算力竞争来解决一个求解复杂却容易验证的SHA256 数学难题,最快解决该难题的节点会获得打包区块的权力[26].
计算难度通常与目标字符串需要满足的特定字符的数量成正比.本文采用的共识不同于传统PoW 共识,传统的PoW 共识算法对于存证系统而言,计算资源耗费大,出版社难以支付这一开销,因此需要寻找更为实用的共识机制,让所有节点迅速达成共识而不至于过度消费算力资源.类PoW 共识正是基于此而设计的,其算法规则是:寻找一个随机数p,使得它与前一个区块头内的proof 字段拼接成的字符串的Hash 值以0000 开头.共识达成步骤如下:
步骤1节点对广播的查重报告进行基本合法性验证,主要验证数据的内容格式是否正确以及有无空缺项.
步骤2节点消耗自身算力,尝试对不同的p进行指定哈希计算.不断重复该过程直至找到合理的p,并将其作为proof 字段记录到区块头的相应位置.
步骤3找到合理数后生成区块信息.节点先在区块头中加盖时间戳等信息,然后在区块体中记录查重报告的数据信息.
步骤4对外广播新区块的产生,由其余所有节点遍历每个区块头,主要检查previous Hash 字段与proof 字段以确认区块的有效性,通过确认的区块可以进入验证环节.
在步骤1∼4 中,步骤2 是证明工作量的主要过程.相比于公有链算法,本文私有链中使用的类PoW 共识算法减弱了记账(挖矿)的竞争强度.节点通过穷举法进行运算,若找到了符合规则的随机数,则表明通过了工作量的检验标准.
在私有链运行过程中,使用适当的哈希算法和非对称加密算法等密码学技术可以增强区块的机密性、完整性与有效性.机密性是指数据传输过程中不能被非授权者看到;完整性是指数据在传输过程中不会被篡改;有效性则是指私有链节点产生的数据不能被否认[27].验证机制提供数据加解密、密钥的生成、身份认证、计算账号地址、数据完整性检验等功能.
哈希函数是一种将任意长度的输入变换为固定长度的输出且不可逆的单向密码体制,具有单向性、抗第2 原像攻击、抗强碰撞攻击等性质.数字摘要即明文经哈希函数处理后得到的固定长度输出串,同样的明文经同样的哈希函数处理后得到的摘要都是相同的,否则其摘要必定不一致.本文采用SHA256 哈希算法,将区块体中的查重报告内容作为输入,计算得出256 比特的摘要结果msg,并将摘要结果存在区块头transaction 字段中.
非对称加密函数的特点是加密和解密的密钥不同,如私钥签名只能有公钥才可以解密.数字签名是附加于被签名数据的一个大整数,用以确定被签名数据的完整性与签署者的身份[28-29].平台私有链面向出版社内部,每台电脑的IP地址对应确定的工作人员,于是本文通过Curve25519 椭圆加密算法对节点IP地址进行处理,获得密钥对并分发.在平台运行过程中,当节点的私钥不慎丢失或出现安全性问题时,可向系统请求重新换取自己的密钥.本文数字签名的生成和验证方法如下:
步骤1将节点IP 地址作为函数(sk, pk)=generateKeys(IP address)的输入,生成一对公钥pk 和私钥sk 的输出.
步骤2在签名过程中,sig=sign(sk, msg),把查重报告摘要和私钥作为输入,则消息的输出是签名结果.
步骤3节点将上述“签名结果”、“公钥”和“摘要结果”等重要数据加入区块头的transaction 字段,并由节点通过类PoW 共识竞争打包区块.
步骤4验证过程为Valid=verify(pk, msg, sig),是将区块中的摘要信息、签名消息、公钥作为输入,验证打包节点身份.若返回true,则签名属实;若返回false,则验证节点可以拒绝验证失败的区块上链.
步骤5认证属实后,接收节点使用与摘要提取环节相同的摘要算法对区块体内的数据内容进行摘要计算,并与transaction 字段内的摘要结果进行比较.若结果一致,则说明数据是完整的,区块最终进入主链;若数据不一致,则说明查重报告真实性和完整性有待考证,节点可拒绝该区块加入主链.
测试使用3 台Intel Xeon E3-1225 3.2 GHz 的CPU、6 GB 内存、运行64 位Windows7 的操作系统.存证过程可总体分为数据预处理、提交信息入块和存证结果公示三部分.待存的查重报告如图4所示,在数据预处理部分,节点将私有链外的查重报告等内容经过加密运算后生成提交信息,内容包括发送节点地址sender、查重报告摘要信息msg、数字签名signature 等信息,如表4所示.
表4 提交信息表Table 4 Submit information table
图4 查重报告Figure 4 Report of rechecking
在信息入块部分,平台通过可信的计算机环境和区块链运行机制联合打造出一个安全可靠的存证过程,区块内的数据包括区块头内的时间戳、父区块哈希值、交易等字段,内容如下.
3 个测试节点按照共识规则,凭借算力竞争同一个查重报告区块的打包权,通过验证最终加入主链,并将有价值的区块信息参数返回给接口,使其在界面中显示.如图5所示,其中“章节id”为查重报告的序号.“索引”表示存证结果所在的区块号,“父区块哈希值”表示区块头中的previous hash 字段,“时间戳”字段为存证结果提供了“存在性证明”,“内容”即为对比查重报告,“IP”地址即为打包该区块的节点地址.用户可通过浏览器查询存证区块信息并支持导出操作.
图5 存证公示Figure 5 Deposit certificate
在以类PoW 为共识协议的存证平台中,各节点都属于出版社内部,彼此信任且默认遵守协议,因此只在最长链后添加新区块.假设存证平台目前主链的区块高度为h,距离当前区块的高度差为(h −k)的攻击者企图制造分叉链代替主链进行双花攻击,则其不但需要重新计算并生成从第k个区块到当前区块高度的所有区块,还要通过全网节点的验证,此时攻击节点成功填补某一既定差距的可能性可近似为赌徒破产问题[30-31].
下面分析攻击者攻击成功的概率,假定攻击节点拥有无限的机会去填补与诚实链条的差距,那么攻击链条追赶上诚实链条的概率公式为
式中,p为诚实节点制造出下一个节点的概率,q为攻击节点制造出下一个节点的概率,qz为攻击者消除z个区块的落后差距.
对于p>q的情况,攻击成功的概率会随着区块数目的增长而呈指数下降,这意味着若攻击者不能幸运且快速地获得成功,则他获得成功的机会将随着时间的流逝变得越来越渺茫.
现在考虑的是:诚实节点收到新的交易时需要等待多长时间才能完全确认区块内数据是不可篡改的.在攻击发生时,诚实区块无法确定攻击者已经进展的区块数量.假定攻击者以区块a为起点开始在并行的链上秘密工作,而诚实节点耗费平均预期时间产生一个区块,则攻击者的潜在进展符合泊松分布[32-33],诚实节点挖出z个块的时间内的期望值为
在这种情况下,攻击结果分以下两种:当k≤z时,不足以发动攻击,攻击者会继续偷偷挖矿不断缩小差距;当k >z时,攻击成功.以上两种概率的和就表示攻击者最终能追赶上的概率.总结得到概率为
式中,k为攻击链条长度,z为诚实链条长度,(z −k)表示攻击链和诚实链的差距.
由式(3)可得:概率随z值的增加呈指数化下降.当攻击者拥有10%的攻击力度且区块高度差为5 时,攻击成功的概率小于0.1%,其中10%的攻击算力写入的时间小于100 GHash/s.因此,当一个区块后面连接6 个区块时,该区块就是足够稳定的.
此外,在侵权记录存证的应用场景中,篡改信息的操作一般发生在与利益相关的环节,往往距离查重报告录入日期较为久远.本私有链使用了工作量证明,当主链变得越来越长时,区块高度会有较大的数量级差别,推翻或者妄图替换则需要很大的攻击性算力,因而完成这种规模的区块替换操作几乎是不可能的.因为攻击概率与很多因素有关,比如出版社内部网络计算资源的改变、区块的大小、节点间交易信息的同步等,所以私链使用了类PoW共识,保证了安全性.
本文从图书侵权举证的困境出发,结合私有链结构、共识算法和混合加密等技术,设计实现基于私有链的图书侵权记录存证平台,提供针对图书侵权行为存证的安全可信的存储.结合现行图书内容传播的特点,使平台在实现区块传播、验证效率和安全之间进行了权衡,设计适用的工作量证明算法保证私有链建立的时效性、数据的可用性,采用验证机制来保护数据的完整性和真实性.通过系统测试和验证表明,存证平台的设计方案易于使用,并以较低的经济成本实现对侵权证据的及时记录,有利于在没有中央存管机构以及多方不可信的情况下顺利开展维权工作.