一种基于fabric联盟链的文档防篡改方法与流程

文档序号:18601784发布日期:2019-09-03 22:44阅读:1773来源:国知局
一种基于fabric联盟链的文档防篡改方法与流程

本发明涉及文档安全保护技术领域,特别是一种基于fabric联盟链的文档防篡改方法。



背景技术:

传统的文档储存方式都是采用中心化存储管理的方式,这种方式系统拥有者(如管理员)拥有所有权限。在利益的驱使下,管理员有可能会篡改或删除存储于系统中的文档信息,使得文档的真实性得不到保护。而文档的真实性在很多领域很重要,如版权保护、证据保护、合同重要文档保护等方面。因此如何实现文档防篡改具有重大应用价值。

区块链技术的兴起为文档防篡改技术提供了很好的解决思路。通过文档的摘要、时间戳等重要信息制作成文档唯一身份dna,然后将dna信息固化到区块链上,利用区块链的防篡改特性达到文档防伪防篡改的目的。但目前一些基于区块链技术的文档防篡改方法都是基于公网,如比特币、以太坊、eos。公网固然防篡改能力很强,且非常安全,但是公网需要挖矿和交易费,这就不可避免地增加了文档保护成本。



技术实现要素:

有鉴于此,本发明的目的是提出一种基于fabric联盟链的文档防篡改方法,能够很好地解决文档防篡改问题。

本发明采用以下方案实现:一种基于fabric联盟链的文档防篡改方法,基于fabric联盟链进行文档保护,在文档管理系统进行文档的保存、删除、修改、验证操作时,除了和本地数据库和文档服务器ipfs交互外,还与fabric联盟链平台进行交互。

进一步地,所述文档的保存操作具体包括以下步骤:

步骤s11:将文档上传至ipfs,ipfs返回一个由文档内容生成的hash值,该hash值以qm开头,是文档在ipfs网络中的储存路径;

步骤s12:本地计算文档的hash值,该步骤可以采用通过sha512算法计算hash值,该hash值用于检测文档是被篡改;

步骤s13:将ipfs返回的hash值、本地计算的hash值、以及文档的重要字段信息制作成文档dna,保存至fabric联盟链中;其中文档的重要字段信息包括文档的唯一标识;

步骤s14:fabric的智能合约自动将节点的名称、节点的签名、信息保存时间保存至fabric的状态数据库中。

进一步地,步骤s14中,所述节点的名称与节点的签名由getcreator(获取交易提交者身份信息的接口)方法获取的节点证书信息中提取出来。

较佳的,所述文档dna的数据结构如下:

进一步地,文档的验证操作具体包括以下步骤:

步骤s21:根据文档的唯一标识从fabric联盟链中获取待验证的文档的信息,其中获取的信息中包括但不限于文档hash值、文档在ipfs上的储存路径、保存时间、保存文档者的姓名等信息;

步骤s22:计算本地待验证文档的hash值;

步骤s23:将计算出的hash值与从fabric中获取的hash值进行比较,如果两者一致,说明文档没有被篡改,如果两者不一致则说明该文档已经被篡改。

进一步地,步骤s23还包括,从fabric获取的文档信息中提取文档在ipfs上的储存路径,下载文档至本地,然后与已被篡改的文档进行内容对比,找出被篡改的信息。

进一步地,文档的修改操作具体为,当对已保存的文档进行修改时,为了防止管理员借着合法修改的名义对文档进行篡改,记录文档的历史数据和修改文档的管理员信息,并在fabric智能合约中定义一个历史数据;

当文档修改之后,将文档上传至ipfs,获取ipfs返回的hash值,同时本地计算文档的hash值(该过程可以采用上文中提到的保存文档的步骤s11与步骤s12),然后在区块链文档保护模块中修改已发生变化的文档dna信息,但是dna数据结构中的id不能也不会改变;其中,dna数据结构中的id不能也不会改变,ipfspath和filehash为自动填充,不能人为改变,savedata会在智能合约中自动更改,state也会在智能合约中自动赋值“modify”,而operatorname和operatorsignature如果发生改变,其值也会在智能合约中自动更改,department和filetype分别为文档所属部门和文档所属类别,需要管理员手动修改。

在查询文档时,智能合约会先查询该文档dna信息是否曾经修改过,如果没有修改过则直接返回文档的dna信息,如果曾经修改了,会将当前文档的nda信息及其历史数据一起返回给文档管理系统。如果怀疑系统拥有者私自篡改了文档,则可以根据文档验证流程验证文档是否被篡改,一旦发现文档被篡改,可根据当前文档的dna信息中的operatorname和operatorsignature确定哪个节点,哪个人篡改了文档,同时根据文档的历史dna信息找回被篡改的文档。

较佳的,所述历史数据的结构为:

typehistorydatastruct{

txidstring`json:"tx_id"`

filefile`json:"file_info"`

}

进一步地,当文档失效不再使用时,要对文档进行删除。删除分为两种:普通删除和彻底删除。普通删除是指不将文档key值从search表中删除,这种删除方式删除的文档很容易找回;彻底删除是指将文档key值从search表中删除,这种删除方式删除的文档将无法再从fabric区块数据中查询到。如果选择这种删除方式,则必须记录下相关操作信息。

文档的删除操作具体为:

当管理员选择普通删除时,智能合约将文档dna数据结构中的状态值修改为删除,当文档管理系统查询文档时,查询结果只会显示状态值不为删除的文档dna信息,而状态值为删除的文档dna信息则会显示在文档管理系统的回收站页面,在该页面能够通过调用相关接口将状态值改为存储,以找回文档;

当管理员选择彻底删除文档时,采用delete数据结构记录下文档名、文档在ipfs上的储存路径、文档删除日期、管理员的名称和签名;因为delete数据结构中保存了这些数据,所以即使无法从fabric区块数据中查询到已彻底删除的文档,也能够通过ipfs上的存储路径找回被恶意删除或者误删的文档。同时可以根据operatorname和operatorsignature确定哪个管理员彻底删除了文档。

其中,delete数据结构为:

较佳的,fabric联盟链不需要挖矿,在链上储存信息也不需要交易费,且其具有严格的成员管理服务以及数据历史状态可查询的特性,这两点保障了在数据遭到篡改时,可以知道哪个节点修改了数据,也可以修正被修改的数据。

与现有技术相比,本发明有以下有益效果:

1、本发明通过制作成文档的唯一身份dna,然后将dna信息和文档操作记录固化到区块链上,利用区块链的防篡改特性达到文档防篡改的目的。

2、本发明在管理员对文档进行增删改时,记录下管理员的名称和签名,可方便定责,亦防止管理员抵赖。

3、本发明当文档被篡改时,可根据文档的历史dna信息,恢复被篡改的文档。

4、本发明利用ipfs永久储存的特性,当文档被恶意删除时,可根据fabric记录的删除操作信息,从ipfs找回被恶意删除的文档。

附图说明

图1为本发明实施例的原理框架示意图。

图2为本发明实施例的文档保存架构图。

图3为本发明实施例的文档验证流程图。

图4为本发明实施例的文档修改流程图。

图5为本发明实施例的文档删除流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

如图1所示,本实施例的方法核心功能设计三个部分:1,传统文档管理部分:文档的增删改查等基本操作模块;2,区块链基础平台:区块数据生成、共识机制、平台配置等其它模块;3,区块链文档保护部分:文档dna生成、文档上链与验证、恢复等。当管理系统涉及文档的增删改查时,除了和本地数据库和文档服务器交互外,还要通过区块链保护模块中的接口调用文档上链和文档验证方法。其中文档上链要先调用文档的dna计算模块生成文档dna,然后交给区块链平台,制作成区块数据,添加到区块链中。文档验证则直接将文档计算的dna与区块链上区块中记录的文档dna值比对。

本实施例提供的一种基于fabric联盟链的文档防篡改方法,基于fabric联盟链进行文档保护,在文档管理系统进行文档的保存、删除、修改、验证操作时,除了和本地数据库和文档服务器ipfs交互外,还与fabric联盟链平台进行交互。

如图2所示,在本实施例中,所述文档的保存操作具体包括以下步骤:

步骤s11:将文档上传至ipfs,ipfs返回一个由文档内容生成的hash值,该hash值以qm开头,是文档在ipfs网络中的储存路径;

步骤s12:本地计算文档的hash值,该步骤可以采用通过sha512算法计算hash值,该hash值用于检测文档是被篡改;

步骤s13:将ipfs返回的hash值、本地计算的hash值、以及文档的重要字段信息制作成文档dna,保存至fabric联盟链中;其中文档的重要字段信息包括文档的唯一标识;

步骤s14:fabric的智能合约自动将节点的名称、节点的签名、信息保存时间保存至fabric的状态数据库中。

在本实施例中,步骤s14中,所述节点的名称与节点的签名由getcreator(获取交易提交者身份信息的接口)方法获取的节点证书信息中提取出来。

较佳的,所述文档dna的数据结构如下:

如图3所示,在本实施例中,文档的验证操作具体包括以下步骤:

步骤s21:根据文档的唯一标识从fabric联盟链中获取待验证的文档的信息,其中获取的信息中包括但不限于文档hash值、文档在ipfs上的储存路径、保存时间、保存文档者的姓名等信息;

步骤s22:计算本地待验证文档的hash值;

步骤s23:将计算出的hash值与从fabric中获取的hash值进行比较,如果两者一致,说明文档没有被篡改,如果两者不一致则说明该文档已经被篡改。

在本实施例中,步骤s23还包括,从fabric获取的文档信息中提取文档在ipfs上的储存路径,从ipfs下载文档至本地,然后与已被篡改的文档进行内容对比,找出被篡改的信息。

如图4所示,在本实施例中,文档的修改操作具体为,当对已保存的文档进行修改时,为了防止管理员借着合法修改的名义对文档进行篡改,记录文档的历史数据和修改文档的管理员信息,并在fabric智能合约中定义一个历史数据;

当文档修改之后,将文档上传至ipfs,获取ipfs返回的hash值,同时本地计算文档的hash值(该过程可以采用上文中提到的保存文档的步骤s11与步骤s12),然后在区块链文档保护模块中修改已发生变化的文档dna信息,但是dna数据结构中的id不能也不会改变;其中,dna数据结构中的id不能也不会改变,ipfspath和filehash为自动填充,不能人为改变,savedata会在智能合约中自动更改,state也会在智能合约中自动赋值“modify”,而operatorname和operatorsignature如果发生改变,其值也会在智能合约中自动更改,department和filetype分别为文档所属部门和文档所属类别,需要管理员手动修改。

在查询文档时,智能合约会先查询该文档dna信息是否曾经修改过,如果没有修改过则直接返回文档的dna信息,如果曾经修改了,会将当前文档的nda信息及其历史数据一起返回给文档管理系统。如果怀疑系统拥有者私自篡改了文档,则可以根据文档验证流程验证文档是否被篡改,一旦发现文档被篡改,可根据当前文档的dna信息中的operatorname和operatorsignature确定哪个节点,哪个人篡改了文档,同时根据文档的历史dna信息找回被篡改的文档。

较佳的,所述历史数据的结构为:

typehistorydatastruct{

txidstring`json:"tx_id"`

filefile`json:"file_info"`

}

在本实施例中,当文档失效不再使用时,要对文档进行删除。删除分为两种:普通删除和彻底删除。普通删除是指不将文档key值从search表中删除,这种删除方式删除的文档很容易找回;彻底删除是指将文档key值从search表中删除,这种删除方式删除的文档将无法再从fabric区块数据中查询到。如果选择这种删除方式,则必须记录下相关操作信息。

如图5所示,文档的删除操作具体为:

当管理员选择普通删除时,智能合约将文档dna数据结构中的状态值修改为删除,当文档管理系统查询文档时,查询结果只会显示状态值不为删除的文档dna信息,而状态值为删除的文档dna信息则会显示在文档管理系统的回收站页面,在该页面能够通过调用相关接口将状态值改为存储,以找回文档;

当管理员选择彻底删除文档时,采用delete数据结构记录下文档名、文档在ipfs上的储存路径、文档删除日期、管理员的名称和签名;因为delete数据结构中保存了这些数据,所以即使无法从fabric区块数据中查询到已彻底删除的文档,也能够通过ipfs上的存储路径找回被恶意删除或者误删的文档。同时可以根据operatorname和operatorsignature确定哪个管理员彻底删除了文档。

其中,delete数据结构为:

较佳的,fabric联盟链不需要挖矿,在链上储存信息也不需要交易费,且其具有严格的成员管理服务以及数据历史状态可查询的特性,这两点保障了在数据遭到篡改时,可以知道哪个节点修改了数据,也可以修正被修改的数据。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1