架构设计图
分析
- 为了保障档案数据的安全性和隐私性,存储档案附件和档案属性存储加密存储在私有IPFS集群,档案的IPFS地址和数字指纹存储在私有区块链上。公有区块链定期存储和检查私有区块链最新不可逆区块的高度和哈希值,以保障私有区块链上数据的真实性。(私有链上的数据准确无误之后,才会将区块的哈希信息定期存储到公有链上,虽然引入了公有链保障了数据的安全性和可靠性,但是往公有链上记录数据需要花费手续费,因此可改用联盟链,但是联盟链的安全性相对于公有链很差,是一个半中心化的平台,需要进一步优化)
- MongoDB则用于存储区块链数据管理平台中的用户信息、档案统计信息和档案属性的最新信息,用于档案的模糊查询。
智能合约架构设计
分析
- 区块链保护子系统中的智能合约架构如上图所示,私有链保护合约(PfivNeChain Protection Contract,PCPC)是运行在公有链上的智能合约,用于存储私有链区块的高度和哈希值等信息,实现私有区块链的保护。
- 档案保护控制合约(Archive Protection Controller Contract,APCC)、自我保护合约(Self ProtectionContract,SPC)、工厂类合约(Factory ClassContract,FCC)是运行在私有链上的全局合约,其中SPC合约用于记录智能合约写入数据的次数,并定期与公有区块链进行锚定;FCC合约会在新增档案时,为每个档案创建对应的档案信息存储合约(AISC),AISC合约存储了档案的所有历史版本的摘要信息,包括档案对象哈希值和IPFS地址等;APCC合约存储了档案编号和AISC合约的对应关系。
区块链结构图
具体的流程图(区块链+IPFS)
如何防篡改
- 该系统是信任数字档案管理子系统的权限控制和发出的RESTful调用请求操作的,并且通过存储档案多个历史版本的方式,实现了档案修改历史的追溯和档案信息的恢复。
- 数字据档案管理系统具有自己的权限管理机制,只有具备相应权限的管理员才能执行新增或修改电子档案的操作,并通过RESTful接口调用的方式更新区块链和智能合约中的内容。
- 即使档案管理系统的管理员账户和密码被黑客获取,以该管理员的身份更新本地数据库和区块链中档案信息。IPFS中存储了数字档案每个更新后的版本的完整信息,区块链中存储了每个版本档案的IPFS地址,通过RESTful接口依然可以查询到该档案的修改历史,并且恢复到某个历史状态。RESTful接口的设计非常关注数据传输的安全性和可靠性,在使用https协议的基础上,还对档案信息进行了AES加密传输,并通过时间戳、随机数、数字签名参数解决了重放攻击和数据篡改的问题。
- 即使https被黑客攻击,只要没有获得区块链数据保护子系统的私有密钥就不能解密得到档案的原始信息,并且只要没有获得档案馆的私有密钥就不能重新计算数字签名,也就不能篡改加密后的档案数据、时间戳和随机数参数,不能对RESTful接口发起重放攻击。
- IPFS是基于内容存储的文件系统,它以内容的哈希值作为地址,取出内容时还会验证哈希值是否与地址一致,因此使用IPFS存储档案数据具有很强的防篡改性。此外,智能合约在存储了档案IPFS地址的同时,也存储了档案的哈希值,在从IPFS取出数据之后,还能够再次验证档案数据的真实性。智能合约的数据存储在区块上,而区块一旦生成内容就不能够被篡改,只能通过“分叉”的方式来替换已有区块的内容,并且生成越早的区块,被替换的难度就越大。以太坊公有链主要使用PoW共识机制,因此存在51%攻击的可能性,它是指如果某个节点拥有了全网51%的计算能力之后,就能够比其他节点更快的生成区块,使现有区块链的主链分叉,形成更长的一条区块链并最终被其他所有节点接受,成为新的主链。但由于整个以太坊区块链的计算能力是非常巨大的,某个个体或组织很难拥有全网51%的计算能力,因此可以被认为是安全的。本地的私有链环境则使用了PoA共识机制,它兼具了区块链的不可篡改性和本地环境的可管理性,即区块只能由授权节点产生而与节点的计算能力无关,因此能够免51%攻击的问题。并且私有链区块的高度和哈希值也会一定频率存储到公有链上进行保护,如果私有链出现了分叉的情况,必然会导致已生成区块哈希值的变化,通过与公有链存储的区块高度和哈希值的对比也能够及时发现。该方案基于区块链和IPFS技术实现了一种链式保护机制,即通过公有链智能合约存储私有链区块摘要信息的方式实现对私有链上数据的保护与验证,通过私有链智能合约存储档案对象IPFS地址和哈希值的方式实现对IPFS中档案对象的保护与验证,通过IPFS中的档案对象实现了对本地数据库中的档案信息的保护与验证。每次档案馆通过RESTful接口获取档案时,RESTful服务器都会在后台对数据的真实性进行验证,能够及时地发现并定位私有区块链、IPFS的数据篡改行为,档案馆自身也可以通过本地数据库与档案对象的比对,发现本地的数据篡改行为并进行处理。