tp钱包下载 基于区块链的档案数据保护与共享方法

发布日期:2025-05-08 09:31    点击次数:127

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

随着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], 其数据的读写权限是由该组织控制的, 不能够完全解决信任问题; 联盟链也被称为许可链, 其共识由联盟成员参与,tp官网下载最新版本2025 数据读写权限按联盟规则制定, tp官方下载安装app 节点的加入需要联盟其他节点的同意.主流的公有链和联盟链实例比较[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集群, 并将附件哈希值($Hash_{Files}^{sha256}$)、加密附件的指纹($Ipfs_{EncryptedFiles}^{add}$)和其他档案属性整合为档案对象(DocJSON)加密后存入IPFS集群, 并对档案馆身份(SC-ID)、档案编号(DocID)、档案对象哈希值($Hash_{DocJson}^{sha256}$)和加密档案对象的档案指纹($Ipfs_{ciphertext}^{add}$)等信息进行签名, 通过RESTful Service发送到智能合约进行处理.AISC合约收到新增档案请求后, 调用AACC合约从签名中恢复公钥信息, 并与DICC合约中登记的密钥进行对比:若身份检查通过, 则在合约中添加档案编号与摘要等信息的映射.

算法1. Saving of Archive.

1: Procedure SaveArchive(DocID, DocAttrs, Files)

2:    system executes:

3:      generate a random keyPair→edk〈key, iv〉

4:      AESencrypt(Files, key, iv)→EncryptedFiles

5:      extract($Hash_{Files}^{sha256},Ipfs_{EncryptedFiles}^{add}$)→Filesattrs

6:      combine(DocAttrs, Filesattrs)→DocJSONplaintext

7:      AESencrypt(DocJSONplaintext, key, iv)→DocJSONciphertext

8:      ECDSAsign(SC-ID, DocID, $Hash_{DocJson}^{sha256},Ipfs_{ciphertext}^{add}$)→signature

9:    contract executes:

10:      if AACCOwnerAuthCheck(signature, SC-ID)=true then

11:        $AISC_{mapping}^{add}$(DocId, [version, IpfsAddr, Hash, Time])

12:        endif

13: end Procedure

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

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

算法2. Validation of Archives.

1: Procedure ValidateArchive(DocID)

2:    system executes:

3:      signature→ECDSAsign(PrivateKeyA, SC-ID, DocID)

4:    service executes:

5:      if validate(PrivateChaingetBlock, BDPCgetlastblock)=false then

6:        return errorinvalidChain(DocID, timestamp)

7:      endif

8:    contract executes:

9:      if AACCOwnerAuthCheck(signature, SC-ID)=true then

10:        return $AISC_{DocID}^{getlastversion}$→List〈DocJSONipfs, DocJSONhash〉

11:      endif

12:    system executes:

13:      AESdecrypt($Ipfs_{cipherjson}^{get}$(DocJSONipfs), edk)→DocJSONplaintext

14:      if validate(DocJSONhash, sha256(DocJSONplaintext))=false then

15:        return errorinvalidIpfs(DocID, DocJSONipfs, timestamp)

16:      endif

17:      if validate(DocJSONplaintext, $LocalDB_{DocID}^{select}$)=false then

18:        return errorinvalidDB(DocID, timestamp)

https://www.trustqianbao.com.cn

19:      endif

20:    end Procedure

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所示.

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

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

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

算法3. Authority Check.

1: Procedure AuthorityCheck(DocID, SC-ID, hash, signature)

2:    if $ASSC_{DocID}^{isPublicShare}$=true then

3:      return true

4:    endif

5:    ecrecover(hash, signature)→PublicKey

6:    if DICCcheckPublicKey(SC-ID, PublicKey)=false then

7:      return false

8:    endif

9:    if $ASSC_{DocID}^{isInnerShare}$=true

上一篇:tp钱包下载 区块链新用法:控制僵尸网络    下一篇:TP钱包安卓版下载:用户反馈与评价 苹果 iOS 18.4 允许用户在锁屏界面打开指定联系人的信息对话|减号|ios|苹果公司|用户界面|iphone