基于区块链的档案数据保护与共享方法*

2019-10-24 05:49谭海波王卫东张中贤盛念祖李晓风
软件学报 2019年9期
关键词:合约档案馆区块

谭海波,周 桐,2,赵 赫,赵 哲,2,王卫东,张中贤,盛念祖,2,李晓风

1(中国科学院 合肥物质科学研究院,安徽 合肥 230031)

2(中国科学技术大学,安徽 合肥 230026)

通讯作者:赵赫,E-mail:zhaoh@hfcas.ac.cn

档案是一种重要的数据记录,是人们在各种社会活动中直接形成的具有保存价值的原始信息.区别于一般的图书情报资料和电子文档信息,档案的本质属性是原始记录性,它使得档案能够还原真实的历史状况,因而具备重要的保存与参考价值,并且拥有法律效力.

随着IT 技术的高速发展,人们大规模地运用数字化的手段来提升档案的存储和处理效率.现有的数字档案系统为档案的管理工作带来便利的同时,仍然存在以下主要问题[1]:(1)相比传统的纸质物理档案,数字档案作为保存在存储介质上的比特字节,具有高度的易变性,并且数字档案在存储、传输和处理等过程中容易被修改;(2)每个档案馆都是档案信息的“孤岛”,档案馆之间缺乏安全有效的档案共享渠道;(3)现有的数字档案保护方案大多是通过数字水印和数字签名等技术实现,在档案遭到篡改或破坏后一般难以恢复.

档案数据的真实性和原始性主要依赖于对系统中心或第三方实体的信任,如系统主节点、中心数据库以及系统负责人、数据库管理员等.一旦上述系统中心不再可信(例如系统数据库遭入侵,或管理员被胁迫或收买),档案数据的真实性将荡然无存.

区块链是一种运行于对等网络中各节点遵从特定共识机制的公共账本技术,它具有去中心化、无需信任、防篡改性强等优点[2-4],有望解决现有数字档案馆中普遍存在的数据安全性低、共享性差等问题.本文基于区块链以及IPFS(inter planetary file system)[5]、数字签名和混合加密等技术,提出了以下解决方法.

1)数字档案馆之间构建联盟链,共同管理和维护此区块链的稳定运行,并将数据快照定期与公有链进行锚定,保障数据安全的同时,降低了数据保护成本;

2)通过私有IPFS 集群加密存储档案原始数据,配合链上的智能合约存储档案指纹等摘要信息,实现了档案信息的保护、验证、恢复与共享;

3)采用将档案修改记录和档案摘要历史版本存储到智能合约上的方式,实现了对档案修改操作责任人的追责和档案历史版本的回溯;

4)基于本文提出的数据档案保护和共享方法,研发了档案数据保护与共享系统,该系统与传统的档案管理系统以接口的形式进行对接,为现有的档案数据提供额外的安全保护.

本文第1 节介绍数字档案馆建设和区块链数据保护领域的相关工作.第2 节介绍本方法涉及的区块链和IPFS 等相关技术.第3 节介绍整体架构,包括系统架构和智能合约架构.第4 节介绍方法的具体设计.第5 节介绍方法的具体实现.第6 节对本方法进行分析与评估.最后在第7 节对本文工作进行总结.

1 相关工作

自20 世纪90 年代起,美国就开始了数字档案馆的相关研究[6],并随后推广到其他发达国家.2004 年,美国华盛顿州数字档案馆完成建设,存储了超过1 亿份档案文件,其中部分档案通过网络共享至其他国家[7].2009 年,瑞士国家数字档案馆建设完成,通过多地备份等机制,实现档案文件的长期储存[8].上世纪90 年代末,我国国家档案局提出了构建数字档案馆的规划,以实现纸质档案和音、视频档案的数字化,达到档案的长期存储、高效共享和快捷查询等目标[9].2014 年,国家档案局《数字档案室建设指南》中明确提出了数字档案室的建设原则及内容[10],为推动我国数字档案馆的建设与发展奠定了基础.2015 年,肖敏等人基于大数据分析技术,挖掘各类数字档案之间的关联性和潜在价值,为档案管理人员提供更有针对性的决策建议[11].2016 年,福建省数字档案馆信息平台的建设过程中,利用了云计算等技术来解决档案分散各地的“孤岛效应”问题,提升了档案的共享、处理和存储效率[12].2017 年,王伟等人在数字档案馆建设过程中融合了射频识别技术(RFID),在增加数字档案安全性的同时,提高了档案管理工作的效率[13].

数字档案的相关规范标准已日趋完善,大数据、云计算、物联网等新技术正逐步应用到数字档案馆的建设中.但受限于中心化的存储技术与管理方式,档案的原始性、真实性和安全性等问题尚未得到妥善解决,档案被伪造、窃取和篡改等恶性事件屡有发生[14].

近年来,国内外许多研究人员和机构运用区块链技术在数据保护与共享领域进行一些探索与实践[1].2013年,Araoz 等人创立了Proof of Existence 项目,通过将哈希值存储到区块链交易OP_RETURN 字段的方法,实现了电子文件的真实性保护[15].Vaughan 等人提出了Chainpoint 项目,基于区块链实现了一种通用的文件保护框架,该方案计算文件哈希值并以此构建默克尔树[16],以降低数据保护的成本[17].2016 年,Azaria 等人利用智能合约构建了去中心化的医疗数据访问与权限管理系统,实现患者对其医疗数据的所有权,使其自主地对医疗记录进行分享与管理[18].同年11 月,蔡维德等人提出了基于区块链的应用系统开发方法,包含了账户链、交易链双链设计模型,以及链上代码并行执行模型应用原则[19].2017 年,Rifi 等人[20]通过IPFS 存储物联网(IoT)设备数据、智能合约控制访问权限的方式,实现了IoT 设备数据的访问保护.但该方案基于公有区块链和公有IPFS 实现,仍然具有数据存储成本高和隐私性较差等问题.同年,蚂蚁金服公司基于区块链技术开展捐赠善款流向的追踪管理,提升其系统和数据的透明性、可追溯性和不可篡改性[21].2018 年,百度将区块链技术应用于百度百科的数据保护,将百科词条每次更新的历史版本和作者、编辑时间等信息记录到区块链上,达到数据保护与存证的目的[22].2017 年9 月,薛腾飞等人综合利用了区块链、MIFS、AFS 和DDBS 等技术,提出了基于区块链的医疗数据共享模型,实现了各医疗机构的数据共享/但是该方案依然将医疗数据存储在中心化数据库中,没有很好地解决医疗数据篡改和恢复等问题[23].同年10 月,章宁等人利用区块链、数据库和非对称加密等技术,实现了一种基于区块链的个人隐私数据保护的解决方案框架,初步实现了在互联网租车场景中个人隐私的保护/但是该方案设计的数据交互审计平台运行在中心化服务器上,仍然可能存在安全性和稳定性方面的隐患[24].自2014 年起,该实验室的研究团队也开展了区块链技术的相关研究,并在物联网和医疗健康数据[25-28]等多个应用场景进行了实践[1].

2 相关技术

一般而言,区块链结构是以数据区块为单位、按照时间顺序链接而成;数据区块则是由分布式节点通过共识算法产生、并以一定的经济激励确保所有节点都有动力参与到区块链的活动中来.分布式系统中的所有节点地位均等,不存在任何中心化的特殊节点,且每个节点均会验证区块数据、传播区块数据,从而保证少量节点的作恶不会影响到整个区块链系统的运行.区块链可分为公有链、私有链、联盟链,其中,公有链被称为非许可链,任何组织或个人都可以参与共识,并具有数据的读写权限;私有链适用于单位或组织的内部系统使用[29],其数据的读写权限是由该组织控制的,不能够完全解决信任问题;联盟链也被称为许可链,其共识由联盟成员参与,数据读写权限按联盟规则制定,节点的加入需要联盟其他节点的同意.主流的公有链和联盟链实例比较[30]见表1.

Table 1 Comparision between mainstream permission and permissionless blockchains表1 主流的公有链和联盟链实例比较

共识算法致力于解决在去中心化的分布式互连网络中所有的节点如何达成一致的问题[32].目前,区块链系统中的共识算法主要包括工作量证明(proof of work,简称PoW)、股权证明(proof of stake,简称PoS)和权威证明(proof of authority,简称PoA)等[32-34],其中,比特币采用PoW 共识算法,要求系统的各节点基于自身算力共同求解一个计算复杂但验证容易的数学难题,最快解决该难题的节点将获得一个区块打包的权利;在PoS 系统中,持有最多数字货币而非最高算力的节点具有最大的概率打包下一个区块,从而解决了PoW 中算力资源浪费的问题;PoA 则是一种由指定的权威节点产生区块的共识机制,所有的权威节点地位相同,可以通过投票的方式踢出或加入权威节点[35].相比于PoW 和PoS 共识机制,虽然PoA 的去中心化程度以及节点的竞争公平性和匿名性较弱,但是可靠的权威节点认证机制和高效的共识效率更加适用于联盟链的使用场景,并且避免了算力浪费和51%攻击的问题.现实场景中的每个数字档案馆维护一个权威节点,由组织机构的声誉担保,每个档案馆都会积极遵守共识算法,维护联盟链运行,不会轻易做出损害自身名誉的行为.

智能合约是可以在区块链上自动执行的特殊程序,其特点是程序代码以及数据均存储于链上,因此拥有防篡改性强、去中心化程度高等特点[36,37].智能合约以交易的形式被创建和调用,合约程序在分布式网络中的所有节点被执行,因此不存在中心节点,且任何节点发生故障都不会影响合约程序的运行[1].以太坊是主流的支持智能合约的区块链,通过以太坊虚拟机实现了智能合约的功能,允许开发人员使用类似JavaScript 语法的高级语言Solidity 进行智能合约的开发[38].

IPFS 是全球互联的分布式文件系统,它综合了包括分布式哈希表、块交换、版本控制系统和自我认证文件等系统的优点,具有内容可寻址、不可篡改、去中心化等特点[39].在存储文件时,IPFS 会根据文件内容计算得出文件指纹,在获取文件时,IPFS 根据文件指纹从存储节点中取出文件并验证之后返回给用户[1].IPFS 分为私有集群和公有集群:公有集群是指全网IPFS 节点构成的分布式网络,任何人均可作为一个节点加入到该网络中;私有集群仅限于某个团体或组织内部使用,具有相同swarm-key 的节点才可以参与到该网络中[40].

3 整体架构

3.1 系统架构

如图1 所示,本文提出的数据档案保护和共享方法由数字档案馆、联盟区块链、公有区块链、私有IPFS集群、系统服务(RESTful service)这5 部分构成系统协同完成:数字档案馆(digital archive,简称DA)作为数字档案联盟的权威节点参与到联盟区块链中,享有档案保护、验证、共享等服务;系统服务是一种去中心化应用(DApp),本身不存储任何档案数据和身份信息,以RESTful 接口的形式为数字档案馆系统提供智能合约和IPFS接口调用;公有区块链采用基于PoW 共识算法的以太坊区块链(ethereum),通过定期存储联盟链区块快照信息,实现了对联盟链上数据的保护;联盟区块链采用基于PoA 共识算法的以太坊联盟链,通过智能合约存储档案馆的数字身份和档案的摘要信息,实现了身份的注册与恢复和档案的保护与共享等业务逻辑,并通过定期与公有链锚定的方式增强数据的原始性和真实性保护;私有IPFS 集群存储了加密档案的原始信息,并通过swarm.key进行节点的身份认证,通过分布式哈希表(DHT)[41]、块交换(BitTorrent)[42]等技术保障了数据的安全性.基于公有区块链、联盟区块链和私有IPFS 集群结合的数字档案数据流如图2 所示.

Fig.1 System artchitecture diagram图1 系统架构图

Fig.2 Data flow chart of digital archives图2 数字档案数据流图

3.2 合约架构

本方法主要利用智能合约一致性和不可篡改的特性,在区块链原始安全功能的基础上,还具有灵活性和可编程性.本方法的智能合约体系(如图3 所示)由公有链中区块数据保护合约(block data protection contract,简称BAPC)和联盟链合约共同构成:BAPC 合约部署在公有链中,并存储联盟链的数据快照信息;联盟链中的智能合约包括数字身份控制合约(digital identity controller contract,简称DICC)、数字身份管理合约(digital identity manage contract,简称DIMC)、数字档案管理合约(digital archive manage contract,简称DAMC)等.

Fig.3 Structure chart of smart contracts图3 智能合约架构图

· DICC 作为全局合约记录该联盟链中所有档案馆的数字身份标识(SC-ID)、对应的公钥(PubKey)和与其相关联的DIMC 和数字档案管理合约(DMAC).在创建DICC 合约时,首个档案馆的数字身份以及相关合约被一同创建;

· DIMC 通过民主投票的方式实现档案馆联盟数字身份的内部自治,包括身份创建投票合约(identity creation vote contract,简称ICVC)和身份重置合约(identity reset vote contract,简称IRVC):ICVC 合约用于为新加入联盟的档案馆在DICC 合约中创建投票请求并为其投票;IRVC 合约用于在档案馆私钥泄露时,通过民主投票的方式重置其公钥.

· DAMC 用于实现数字档案保护、验证、恢复和共享等业务逻辑,包括档案信息存储合约(archive information storage contract,简称AISC)、档案共享(信息)存储合约(archive sharing storage contract,简称ASSC)和档案权限控制合约(archive authority control contract,简称AACC):AACC 合约用于数字档案的权限控制;AISC 合约用于存储档案的摘要信息,包括数字档案对象(DocJSON)的IPFS 地址、哈希值、版本号、创建时间和最后修改时间等;ASSC 合约用于存储档案馆分享的档案信息,包括档案编号(DocID)、档案馆身份标识(SC-ID)和分享时间等.一个DocID 可以共享给多个SC-ID 访问.ASSC 中的SC-ID 的分类如表2 所示:若DocID 对应的SC-ID 的值为-1,则该档案是完全对外部开放的,外部用户或档案馆都可以直接从ASSC 合约中获取档案IPFS 地址;若为0,则联盟内部的所有成员都访问;若SC-ID 的值≥1 时,则只有指定SC-ID 的档案馆有权访问该档案.

Table 2 SC-ID classification表2 SC-ID 分类

4 方法设计

4.1 数字档案馆身份的注册与找回

数字档案的数字身份代表此档案馆参与到联盟链中,是档案保护、共享等活动的基础.每个希望加入联盟的数字档案馆都需要获得半数以上联盟成员的同意,方可为其在联盟中完成数字身份的注册.具体流程如下.

· 首先,加入联盟的数字档案馆基于ECDSA 椭圆曲线算法[43]在本地秘密地生成公私密钥对〈PK,SK〉,其中,SK本地秘密存储;

· 然后,通过可靠信道,将PK及其身份信息发送给联盟内的所有成员,并委托某个成员通过其ICVC 合约创建数字身份的投票请求,其他成员则通过其ICVC 合约参与投票;

· 最后,当票数超过半数时,DICC 合约保存该档案馆的公钥信息,然后为其生成SC-ID 并创建DIMC 和DAMC 等一系列合约,从而完成数字档案馆身份的注册.

由于私钥由档案馆秘密存储,一旦内部人员或黑客非法窃取到私钥,就可以伪造该档案馆的身份进行档案的查看、修改和分享等操作.因此,一方面需要档案馆妥善保管SK,避免因管理不善导致SK的泄露;另一方面,本文设计了基于投票机制的密钥重置方案.

· 首先,档案馆秘密地重新生成一对新的公私密钥〈PKNEW,SKNEW〉,通过可靠信道,将新的PKNEW和SC-ID等信息发送给联盟内的其他成员,并请求某一成员为其创建重置投票;

· 其他联盟成员为其进行重置投票,当票数超过半数时,DICC 合约重置该档案馆的公钥.

本方法在设计过程中充分考虑了档案馆密钥重置的可能,通过身份编号SC-ID 实现了公钥与业务逻辑的解耦.档案查询与共享等操作都基于SC-ID 进行权限判断,即使重置了DICC 合约中的公钥,只要签名对应的公钥与DICC 中的SC-ID 保持一致,依然可以验证档案馆的数字身份.

4.2 数字档案的保护与验证

数字档案保护是指通过联盟链和公有链的链上智能合约,配合IPFS 私有集群将数字档案存储在区块链上,防止其内容被非法篡改和破坏,并提供验证和恢复等操作,从而达到保护数字档案的目的.新增档案是将数字档案对象DocJSON 保护在链下的私有IPFS 集群和其档案指纹保存在链上的AISC 合约中;更新档案则将每次更新生成的DocJSON 档案对象和更新档案时产生的数据进行保护.如图4 所示,数字档案对象是JSON 形式的档案信息组织结构,包含档案编号、版本号、创建时间、操作管理员和档案附件等信息.

Fig.4 Structure diagram of JSON of digital archives图4 数字档案JSON 对象结构图

档案新增流程见算法1,DA 首先生成一对随机的密钥edk(key,iv)用于档案附件和档案对象的加密,然后,先用edk 对档案附件加密后存储到IPFS 集群,并将附件哈希值()、加密附件的指纹()和其他档案属性整合为档案对象(DocJSON)加密后存入IPFS 集群,并对档案馆身份(SC-ID)、档案编号(DocID)、档案对象哈希值()和加密档案对象的档案指纹()等信息进行签名,通过RESTful Service 发送到智能合约进行处理.AISC 合约收到新增档案请求后,调用AACC 合约从签名中恢复公钥信息,并与DICC 合约中登记的密钥进行对比:若身份检查通过,则在合约中添加档案编号与摘要等信息的映射.

算法1.Saving of Archive.

档案更新操作流程与新增类似,不同之处在于DA 不会重新生成edk,而是使用在新增档案时创建的edk;DA会根据DocID 从AISC 合约和IPFS 中取出DocJSON 并解密,然后根据更新的档案信息生成新的DocJSON 并在加密后存储至IPFS 和AISC 合约中.

档案验证操作包括公有链对联盟链上的数据验证、联盟链对IPFS 中档案数据的验证和DocJSON 对档案馆本地数据库中档案信息的验证这3 部分,具体流程见算法2.

算法2.Validation of Archives.

DA 对SC-ID,DocID 等信息进行签名发送到RESTful Service 处理,Service 收到请求后,从公有链上的BDPC合约中获取最新的联盟链区块快照信息,并与联盟链中的区块信息进行比对验证:若验证不通过,则返回联盟链数据异常错误;若验证通过,则将签名发送到智能合约处理.AISC 合约收到请求后,先通过AACC 合约对档案馆身份进行检查,然后,根据DocID 从合约中查询该档案的摘要信息List〈DocJSONipfs,DocJSONhash〉并返回.DA 从AISC 合约获取信息后,先根据DocJSONipfs从IPFS 集群中获取DocJSONciphertext,然后根据本地的edk信息解密得到DocJSONplaintext,并验证其哈希值是否与DocJSONhash一致:若验证不通过,则返回IPFS 数据异常错误.最后,将可信任的DocJSONplaintext与本地数据库中的档案信息进行比对验证:若验证不通过,则返回本地数据异常的错误.

在档案验证过程中产生的数据异常错误,本文提供与之对应的恢复手段.

· 联盟区块链数据异常:通过联盟链和公有链上的BDPC 合约存储的区块信息进行比对,发现异常后可以继续与BDPC 合约之前存储的区块信息进行对比,定位出异常区块高度,并在联盟链中基于此区块高度重新开始创建新的区块;

· IPFS 集群数据异常:由于AISC合约中保存有该档案各历史版本的数字指纹和哈希值,一旦系统侦测到当前档案信息被篡改,可恢复前期已保存的正确版本;

· 本地数据库数据异常:依照链上保存的可信档案文件来重置本地数据库被攻击者篡改的档案.相较于去中心化的区块链及IPFS,本地数据库中的档案数据更易被篡改,因此这是本方案中需要重点考虑的保护内容.

4.3 数字档案的共享与获取

数字档案的共享是指在数字档案联盟成员内部或数字档案联盟与外部用户之间,通过智能合约、IPFS 和混合加密机制实现了安全可靠的档案数据的共享,并使得传统的档案系统可以安全高效地获取区块链系统,从而保护档案数据,具体流程如图5 所示.

步骤1:数字档案馆A(DA-A)使用私钥SKA对待分享档案编号DocID、分享目标档案馆SC-ID-B 等信息进行签名,并通过Service 发送到智能合约.ASSC 合约在收到请求后,先调用AACC 合约,通过签名对档案馆身份进行检查,检查通过后,将SC-ID-B 写入合约中DocID 对应的分享列表;

Fig.5 Flow chart of archievs sharing and acquisition图5 档案共享与获取流程图

步骤2:数字档案馆B(DA-B)使用私钥SKB对待分享档案编号DocID 和身份标识SC-ID-B 等信息进行签名,并发送到智能合约.ASSC 合约在收到请求后,先调用AACC 合约对DA-B 进行见算法 3 的权限检查,检查通过后,返回档案指纹和对应的哈希值;

算法3.Authority Check.

步骤3:DA-B 根据从合约中获取的档案指纹,从IPFS 集群中异步获取加密的档案对象DocJSONciphertext,同时,DA-B 通过异步https 请求将身份标识SC-ID-B 和DocID 发送给DA-A,获取DocJSON 的解密密钥;

步骤4:DA-A 收到DA-B 的请求后,根据DocID 和SC-ID-B 等参数,通过ASSC 合约检查共享记录的真实性,并从DIMC 合约中获取SC-ID-B 对应的PKB,然后使用PKB对解密密钥edk进行非对称加密,并返回给DA-B,见公式(1).

步骤5:DA-B 收到DA-A 的返回数据后,使用私钥SKB进行解密得到原始的edk〈key,iv〉,然后使用edk对DocJSONciphertext进行解密,得到原始的档案对象DocJSONplaintext;还可以根据JSON 结构中的档案附件指纹从IPFS 中获取附件密文,并通过edk进行解密查看,见公式(2)~公式(4).

5 方法实现

基于本文提出的数据档案保护和共享方法研发了档案数据保护与共享系统,其实现主要分为区块链智能合约开发、私有IPFS 集群搭建、RESTful Service(DApp)开发、数字档案系统研发这4 部分.其中,

· 智能合约部分,首先使用puppeth 程序生成创世区块的相关信息Creation.json,并为数字档案馆联盟链中的初始档案馆分配权威节点;然后使用go-ethereum[44]客户端,基于Creation.json 创建联盟链中的节点;最后,使用go-ethereum 客户端进行以太坊公有链的同步,以便实现进行公有链BAPC 合约的调用.本文使用Solidity 语言进行BAPC,DICC 等合约的开发,并使用truffle 框架进行合约的管理、编译、调试和部署;

· 对于IPFS 部分,本文使用了go-ipfs[45]客户端进行本地私有IPFS 集群的搭建,通过环境变量LIBP2P_FORCE_PNET 的配置启用私有集群模式,限制仅具有相同swarm.key 文件的节点可进行访问;

· 对于RESTful Service(DApp),本文采用基于Node.js 的Web 框架Express 进行开发,并通过web3.js 实现了对智能合约的调用,通过js-ipfs-api 实现了对私有IPFS 的接口调用.

本系统已在中国科学院合肥物质科学研究院档案馆(下属多个研究所,形成联盟)进行初步试用,对研究院的基建档案和大科学工程等档案进行保护,在现有的传统档案管理系统的基础上,将录入和更新操作的档案信息通过RESTful Service 接口同步到区块链上,并为传统档案管理系统增加了档案的验证、共享和恢复功能.

数字档案验证操作的界面如图6 所示,档案的修改历史追溯和分享界面如图7 所示;每个档案馆运行了一个权威节点和多个数据同步节点,自2018 年5 月至今档案联盟链已创建1 057 459 区块,保护了10 342 条档案信息.

Fig.6 Interface of verification results of digital archives图6 数字档案验证界面

Fig.7 Interface of digital archives history and sharing图7 数字档案历史和分享界面

6 分析与评估

6.1 运行成本分析

假设系统中每月需进行档案保护操作的次数为α,档案分享操作次数为β,身份管理操作次数为γ,则在以太坊公有链上部署智能合约的每月成本为Costethereum,见公式(5).

本文提出的联盟链与公有链相结合的方案,可以将大多数智能合约部署于联盟链中,在联盟链中部署和调用合约的成本可以忽略不计,仅需考虑联盟链网络每月的运行成本记为ω.联盟链每进行μ次数据存储操作时调用公有链BDPC 合约锚定联盟链中当前的区块快照信息,锚定频率可以动态调整,见公式(6).

在联盟链规模较小时,可以频繁锚定;随着联盟链的规模不断扩大,系统的安全性、稳定性随之提升,锚定频率也可以逐渐减小.μ参数的值越大,该方案的经济成本越低,BDPC 合约存储的区块高度间隔越大,对联盟区块链的保护和数据可恢复程度也会降低(如图8 所示)[1].

Fig.8 Relations diagram between parameter μ and systemative cost and security图8 参数μ与系统成本和安全性关系图

根据EthGasStation 的数据统计[46],在撰写本文时(2018 年5 月),以太坊调用智能合约的平均交易费用为8Gwei,折合成人民币约为0.7 元.调用智能合约的交易费用与存储数据的字节数的有关,为简化计算,我们忽略该差异,统一使用平均交易费用.当联盟链的运行成本ω(电力成本)忽略不计时,公有链和联盟链结合的方案可以将经济成本大约缩减为原来的1/μ,见公式(7).

6.2 安全性评估

假设联盟链中的区块高度为α的快照信息存储在公有链中高度为β的区块中,距离当前区块的高度差为h,若攻击者想要通过分叉的方式替代该区块,则需要重新计算并生成从第β个区块到当前区块高度的所有区块,并通过全网节点的验证.假设当前公有区块链中诚实节点的算力为p次哈希每秒,攻击者控制的节点算力为q次哈希每秒.只要没有大量节点的加入或退出,新区块的计算难度不会有明显增加.为了方便计算,假设没有新节点的加入,且每秒中诚实节点产生新区块的概率为w,攻击节点获得新区块的概率为u.假设h表示诚实节点与攻击节点区块高度差,则每秒高度差h有3 种可能的结果[28],即高度差缩小、高度差变大和高度差不变,每个结果出现的概率分别为P1,P2,P3.假设在t秒内会出现t种结果,每个结果出现的次数用随机变量X1,X2,X3表示,其中,X1表示发生的次数为n,X2表示发生的次数为m,X3表示发生的次数为t-m-n.诚实节点与攻击节点的高度差h的变化概率符合多项分布[28].

如在t秒内,攻击节点想要追上诚实节点,则需要满足n∈[0,(t-h-1)/2].m=n+h+k,且1≤k≤t-2n-h,其概率见公式(8).

其中,P1=w(1-u)表示诚实节点产生新区块,而攻击节点没有,即高度差变大的概率;P2=u(1-w)表示攻击节点产生新区块,而诚实节点没有,即高度差缩小的概率;P3=1-P1-P2表示两者都产生或都没有产生新区块的概率,即高度差不变的概率.

根据公式(8)得到攻击节点成功篡改区块数据的概率.如图9 所示,h为攻击者实现数据篡改需要替代的区块数量,横坐标T 为时间(单位:诚实节点发现一个区块的平均时间),纵坐标P 为攻击者篡改数据成功的概率.

Fig.9 Probability distribution when attackers successfully tampered with block data图9 攻击者成功篡改区块数据的概率分布图

由图可知:攻击者成功篡改区块数据的概率会随着区块高度差h的增大而减小.当攻击节点的算力小于诚实节点时,由于攻击节点需要预先生成新的h个区块,然后再与诚实节点竞争产生区块,在刚开始的一段时间内,P会先上升,然后逐渐减小并最终趋于0;当攻击节点算力为诚实节点的25%、高度差h=4 时,攻击成功的最高概率不到0.01%,高度差为6 和10 时,攻击者成功的概率基本为0;当攻击节点算力为诚实节点的50%、区块高度差h=4 时,攻击者成功的最高概率不到0.05%;当攻击节点算力与诚实节点相当,在一段时间后,成功概率逼近35%[28].

在数字档案保护的应用场景中,篡改档案的操作往往是发生在与利益相关的一些考核过程中,往往距离档案录入日期较为久远,因此区块高度差x会为千或万的数量级,即使攻击节点与诚实节点相当时,完成这种规模的区块替换操作也是几乎不可能的.由于以太坊激励机制的存在,假如攻击者拥有如此巨大的算力,其作为诚实节点所产生区块的奖励也远远大于数据篡改的收益[47].

本方法通过公有链与联盟链的结合实现了一种链式保护机制,通过公有链BDPC 合约锚定联盟链的区块快照信息,实现对联盟链上数据的保护与验证;通过联盟链AISC 合约存储档案指纹和哈希值的方式,实现对IPFS 中档案对象的保护与验证;通过IPFS 存储加密的原始档案对象,实现对本地数据库中的档案信息的保护与验证.但若仅采用以太坊公有链的方案,诚然此方案安全性最高,但是档案的操作成本也随之变高,并且操作效率较低(尤其是改变合约状态等操作,需要公有链的矿工打包数据).此外,一旦公有链被攻击(虽然概率很低),档案系统也会受影响;若仅采用联盟链的方案,运行的节点相对较少(尤其在运行初期),系统的安全性和稳定性不如公有链,还会出现联盟中部分成员共谋造假的风险;而采用基于联盟链和公有链的方式,通过第6.1 节和第6.2节的分析可以看出:运行PoA 共识算法的以太坊联盟链,本身具备较强的防篡改能力,此外,使用高安全性公有链进行额外保护,还能够防范部分成员共谋造假对联盟链进行攻击的风险,并且不仅限于单一公有链,还可以拓展为多条公有链进行协同保护.3 种方案相互对比结果见表3.

Table 3 Comparision between different protection schemes表3 不同保护方案对比

7 结 语

本文基于智能合约、IPFS、数字签名和混合加密等技术设计了一种基于区块链的档案数据保护与共享方法,并以此为基础研发了档案数据保护与共享系统.该方法通过智能合约和数字签名技术实现了档案馆联盟的内部自治;通过公有链与联盟链的结合,实现了档案数据的保护、验证与恢复;利用智能合约和IPFS 技术实现了档案数据的共享与获取.未来工作中,我们将就档案数据管理的区块链共识机制开展进一步深入研究.总的来说,本文中的方案综合考虑了经济成本、安全性、易用性和扩展性等问题,系统能以较低的经济开销和较少的系统修改,实现对现有档案管理系统中的档案数据进行高效安全的保护与共享,为数字档案馆的建设和数字资源的保护提供一些有益的启发.

猜你喜欢
合约档案馆区块
云南省档案馆馆藏《东巴经》
《红楼梦》的数字化述评——兼及区块链的启示
云南省档案局办公室关于表彰2018年度《云南档案》优秀通联组及发行先进单位的通报
区块链助跑财资管理
一场区块链引发的全民狂欢
区块链助力企业创新
when与while档案馆
科隆档案馆突然坍塌