文件存储方法及其电子设备、存储介质与流程

文档序号:17004896发布日期:2019-03-02 01:58阅读:170来源:国知局
文件存储方法及其电子设备、存储介质与流程

本申请涉及存储领域,特别是涉及一种文件存储方法及其电子设备、存储介质。



背景技术:

目前,各类文件如合同文件等有两个存在形式,一种是纸质形式,该形式不易存储,纸质文件容易丢失或损毁;另一种是电子化形式,其存储较为便利,且不易丢失。基于电子化文件的明显优势,文件电子化是日渐广泛使用的一种形式。

如今,电子文件主要采用中心化存储方式,即将文件集中存储在一台或多台服务器中。然而,此中心化存储方式会使得文件容易被恶意修改,这会给文件带来较大的不安全性,特别对于一些安全要求较高的文件,例如合同文件。如果这些合同文件被不法分子通过入侵该服务器进行恶意修改,而文件相关人员却无法获知该修改,则容易造成合同双方的利益损害。



技术实现要素:

本申请主要解决的技术问题是提供一种文件存储方法及其电子设备、存储介质,能够避免文件数据被恶意篡改,保证文件数据的可靠性。

为了解决上述问题,本申请第一方面提供了一种文件存储方法,所述方法包括:区块链记账节点接收第一文件数据;利用哈希算法对所述第一文件数据进行计算,得到第一哈希值;利用所述第一哈希值和第二文件数据生成第二哈希值;将所述第二哈希值或者所述第一哈希值和所述第二哈希值两者存储于区块链中,以用于验证所述第一文件数据是否发生篡改。

为了解决上述问题,本申请第二方面提供了一种电子设备,包括存储器和处理器,其中,所述处理器用于运行所述存储器存储的计算机指令,以执行上述的方法。

为了解决上述问题,本申请第三方面提供了一种非易失性存储介质,所述非易失性存储介质存储计算机指令,所述计算机指令能够被处理器运行,以执行上述的方法。

上述方案中,通过区块链记账节点对第一文件数据进行哈希得到相应的哈希值作为文件数的数字指纹,由于区块链具有高安全性、能够有效防止数据篡改,故提高了文件数据的数字指纹的存储可靠性,进而利用高可靠性的数字指纹能够对文件数据进行验证,可避免文件数据被恶意篡改,保证文件数据的可靠性,而且通过对第一文件数据进行多重哈希,进而利用多重哈希得到的哈希值来验证第一文件数据是否发生篡改,可进一步增加文件数据的可靠性。

附图说明

图1是本申请一实施例中所采用的区块链技术架构示意图;

图2是本申请一实施例中的所采用的区块链的区块的结构示意图;

图3是本申请存储网络一实施例的结构示意图;

图4是本申请购售电合同的存储方法一实施例的流程示意图;

图5是本申请购售电合同的存储方法另一实施例的流程示意图;

图6是本申请文件存储方法一实施例的流程示意图;

图7是本申请文件存储方法另一实施例的流程示意图;

图8是本申请合同数据的验证方法一实施例的流程示意图;

图9是本申请电子设备一实施例的结构示意图;

图10是本申请非易失性存储介质一实施例的结构示意图。

具体实施方式

下面结合说明书附图,对本申请实施例的方案进行详细说明。

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。

本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

区块链技术是随比特币等数字加密货币而兴起的一种新型的分布式数据组织方法及运算方式。其最大特点是:去中心化,这使得数据能够实现分布式集体维护,极大提高数据运算、管理、维护效率;共识,节点间基于一套共识机制,通过竞争计算共同维护整个区块链,任一节点失效,其余节点仍能正常工作。同时搭载非对称加密技术的区块链具备高安全性、可追溯性,能有效防止数据泄露或非法篡改。本申请提出利用区块链技术来实现文件管理,如文件的存储、文件的公证等,具体可采用公证通(factom)实现对文件的管理。其中,该文件可以为合同(具体可以如购售电合同)、交易协议等任意类型。

为便于理解本申请区块链网络,先对本申请采用的区块链技术进行举例说明。在一具体应用中,电子设备运行该区块链技术以成为该区块链网络的节点,该区块链技术架构如图1所示,包括区块链数据层11、存真层12、存证层13以及应用层14。

区块链数据层11用于封装底层数据区块以及相关的数据加密和时间戳等技术。并且,可利用不可逆加密算法(如sha256算法)对文件数据进行至少一次(如两次)计算,生成唯一的区块链id,即哈希(hash)值。具体地,针对文件的管理,该区块链可为区块联盟链,以保证该区块链并非完全公开,只有注册的会员节点才可访问。

存真层12,也是网络层,封装了区块链网络系统的p2p组网方式、消息传播协议和数据验证机制等要素,使各节点地位对等且以扁平式拓扑结构相互连通和相互,拥有分布式、自治性、开放可自由进出等特性。区块链网络中每一个节点都能参与区块数据的校验和记账过程,仅当区块数据通过全网大部分节点验证后,才能记入区块链。区块链这种去中心化设计保证文件数据不可篡改、不可伪造。

存证层13封装了数据接入方式、非对称加密、存储等要素。其中,存证的文件数据可采用sha256等非对称加密技术,并由相关人员(平台方)签名,再存储于区块链上。故就算是文件数据被未授权用户获取,该用户也无法通过解密获取原始文件内容。

用户层14将区块链技术应用在该文件数据(如购售电合同)的相关处理上,例如用户注册、购售电合同生成及签署等。以购售电合同的应用为例,该应用层为电力用户、发电厂、电力交易中心、售电公司、电网企业等用户提供数据交互接口。

区块链网络用一种去中心化的方式来收集,打包且安全保护文件数据,并把文件数据的数字指纹锚定到区块链上。具体,区块链可以采用区块联盟链的网络来实现。区块链的节点不断变换在网络系统中所承担的责任,永远不会只有一个节点在控制整个网络系统,即不会只有一个记账节点进行记账。每个节点都只是网络系统中的一部分。区块链的节点定时如每一分钟变换一次角色,没有节点会永久控制网络系统的任何一部分。

在一具体实施例中,区块链的区块封装可如图2所示。该区块链的区块20包括区块头(header)21和区块体(body)22。该区块体22存储有至少一条对文件数据进行设定哈希运算得到的哈希值(hash)221。该区块头21可以封装有当前版本号211、前一区块地址212、当前区块的目标哈希值213、当前区块pow(工作量证明)共识过程的解随机数214、merkle根(merkle-root)215以及时间戳216等信息。其中,该当前版本号211,用于标示软件及协议的相关版本信息;该前一区块地址212,也可称为前一区块哈希值,通过该值才可将每个区块才首尾相连组成了区块链;该解随机数214为记录解密该区块相关数学题的答案的值;该merkle根215是由区块体22中所有文件数据的哈希值再逐级两两哈希计算出来的,用于检验文件数据是否存在于该区块中;该时间戳216用于记录该区块20产生的时间。可以理解的是,该区块的结构可根据采用的区块链技术的不同进行调整,例如不采用pow共识机制,则不存在上述的解随机数。

在一具体应用中,该区块链底层系统可由分层结构的区块(block)组成。根部是目录区块(directoryblock)。这些区块构成了一个微型链,链上存储着压缩过的引用(reference)。为了避免数据规模过大,目录区块(directoryblock)中的引用只是记录区块(entryblock)的哈希值。

目录区块对应这个系统的第一分层,是记录该记录区块完整性(hash值)证明的区块。目录区块是由所有服务器中定义的所有记录区块组合到一起建造而生成的。因此,每个服务器都拥有所有的记录区块,所有的目录区块,和所有记录(entry)。

记录区块(entryblock)对应这个系统的第二分层,是记录entry完整性(hash值)证明的区块。在寻找记录的应用会需要记录区块,可以从一个数字指纹搜索到所有可能相关的购售电合同记录。记录区块包含着电子记录的哈希值。电子记录的哈希值同时证明了数据的存在和在分布式散列表(dht)网络中找到记录的钥匙。

记录区块(entryblock)包含了和一个链id有关的全部entry。如果某个entry是关联到某个记录区块(entryblock)的话,那么可以认为这个entry并不存在。这样的设计能让应用程序很容易的证伪,方便的识别哪些entry是真实可靠的。

一个entry会详述一宗电力交易的细节,会根据此类交易的类型决定记录在链的什么位置。具体,该entry为购售电合同的数字指纹,如哈希值。一个或多个合同审计员可以在他们自己的链上引用这条电力交易的哈希值记录,并添加加密签名来表明此条记录有效或无效。购售电合同的文件只需要存储一次,之后就会在多条不同的链上可以被引用。

请参阅图3,图3是本申请存储网络一实施例的结构示意图。该存储网络30包括区块链网络31和云存储网络32。本实施例中,该存储网络30用于存储文件和文件的数字指纹(如前述的哈希值),其中,该区块链网络31用于存储文件的数字指纹,该云存储网络32用于存储文件。区块链网络31与云存储网络32之间可进行节点通信。

该区块链网络31即为利用区块链技术组成的多节点网络系统。本实施例中,该区块链网络31包括多个运行区块链技术而参与同一区块链的记账节点311(也成为区块链记账节点)。该区块链网络31用于管理文件。具体地,该区块链网络31中的每个记账节点311为具有竞争记账能力的节点,以将文件的数字指纹存储于该区块链网络31中的每个记账节点311的本地区块链的区块(可如图2所示)中,故每个记账节点311均保存该文件的数字指纹,实现文件数字指纹的分布式存储。

区块链网络31还可包括文件管理节点312(若该文件为合同类型,也可称为合同管理节点312)、验证节点313以及一些文件用户节点314。以文件为购售电合同为例,该文件用户节点314可包括售电公司节点314a、电力用户节点314b等;该文件管理节点312也可称为业务节点,用于处理文件数据,例如,对文件用户进行实名认证、合同模板处理、合同文件合并等各种业务功能;该验证节点313为第三方保全节点,例如公证中心节点、司法鉴定中心节点等,可用于对该合同文件进行公证、鉴定等验证处理,以保证其法律效力。

上述节点311-314具体可以为任意电子设备,例如服务器、手机、计算机、平板电脑等,在一实施例,该记账节点311为区块链服务器、该文件管理节点312为具有业务处理能力的应用服务器,且可作为基于区块链的存证系统。可以理解的是,上述节点312-314与节点311可通信,本实施例中的节点312-314作为区块链节点,例如为区块链的轻量记账节点,但在其他实施例中,节点312-314不限定为区块链节点,即该节点312-314的至少部分未必参与区块链。另外,上述节点的区分均是根据通过该节点登录的账户确定的。故上述节点的相应主体如售电公司、电力用户、文件处理系统、公证中心等,都需要事先在区块链平台上完成注册(在一应用中,该区块链为区块联盟链,故事先在区块联盟链平台上完成会员制注册),并获取公私钥,确定其身份可信后,允许开展如下所述的文件存储业务。

在一实施例中,该文件管理节点312用于对节点用户进行身份管理和身份认证。其中,该身份认证用于新节点用户注册进入区块链网络中。具体如,新节点311/313/314向文件管理节点312发送账户注册请求,其中,该账户注册信息包括请求注册的账户名(提供于注册成功后用户登录该区块链网络)以及该节点用户的身份信息,例如身份证号、护照号等可证明该用户身份的信息。其中,该注册信息也可仅包含用户身份信息。文件管理节点312将账户注册请求中的身份信息与预设身份数据库中的身份信息进行比对;若预设身份数据库不存在匹配的身份信息,则认证不通过,并返回包含失败原因的注册失败消息;若预设身份数据库存在匹配的身份信息,则认证通过,发送注册成功消息。进一步地,文件管理节点312还可将注册请求中的身份信息保存至设定管理数据库,以统一管理参与该区块链的用户身份。新节点在接收该注册成功消息后,自身运行区块链技术中的相关算法或者由区块链网络的其他节点为其生成区块链地址,作为注册的账户的区块链地址;并且自身运行区块链技术中的相关算法如设定哈希运算生成一组公钥和私钥作为注册的账户的公钥和私钥。然后,新节点将该公钥广播于该区块链网络,以使网络中的其他节点均接收并保存该用户注册的账户公钥。并且,该新节点将其私钥和区块链地址保存于本地,或者该私钥还可发送于设定的可信任的节点进行存储,以作备份。此时,账户注册完成。

云存储网络32包括至少一个文件存储节点321(当文件具体为合同类型时,也可称为合同存储节点321)。该文件存储节点321可以为服务器或者计算机等任意具有存储能力的电子设备。具体,该文件存储节点321可从区块链节点312-314接收文件,并进行文件存储,其中,该文件可进行加密发送,可利用该文件的发送节点的私钥或接收节点的公钥加密,以使接收节点可利用发送节点的公钥或自身私钥进行解密后存储。另外,在文件存储后,可将文件存储地址发送至记账节点,与该文件的数字指纹一并存储在区块中。在一实施例中,当文件存储节点321有多个时,其中一文件存储节点321可根据目前文件存储节点的可存储容量和/或当前存储速度将文件划分为大小不一的多个文件块,并将较大的文件块发给可存储容量较大和/或当前存储速度较快的文件存储节点321进行存储,将较小的文件块发送给可存储容量较小和/或当前存储速度较慢的文件存储节点321进行存储,以实现该文件的分布式存储。

可以理解的是,上述区块链网络的节点312-314均可发起存储请求,以请求记账节点311进行文件的数字指纹的存储或者请求文件存储节点进行文件的存储。另外,该文件的存储也未必仅限于文件存储节点中,在其他实施例中,也可将文件也一并由记账节点存储于区块中。

上述存储网络对文件进行管理的具体方式如下面实施例所述。

请参阅图4,图4是本申请购售电合同的存储方法一实施例的流程示意图。本实施例中,要管理的文件具体为购售电合同,该方法由作为上述存储网络的相关节点执行,具体包括:

s41:合同管理节点在购售电合同签署完成后,发送第一存储请求。

其中,所述第一存储请求用于请求存储所述购售电合同数据的数字指纹,所述购售电合同数据的数字指纹是基于所述购售电合同数据的内容生成的。

例如,合同管理节点在生成购售电合同并合同签署方均完成电子签署之后,生成第一存储请求,并可在区块链网络中广播该第一存储请求,以由区块链网络中的记账节点竞争记账权,并由竞争得到记账权的记账节点来实现对该购售电合同数据的数字指纹的存储。

进一步地,该第一存储请求可经加密之后再进行发送。例如,采用非对称加密算法进行加密。或者仅对第一存储请求中与购售电合同相关的数据进行加密。在一具体场景中,合同管理节点可采用指定的记账节点的账户公钥进行加密,以使相应的记账节点根据自身账户私钥进行解密得到未加密的第一存储请求,此时,只有可进行解密的记账节点可竞争购售电合同数据的数字指纹的记账权,或者由可进行解密的记账节点重新广播于各记账节点,以使各记账节点共同竞争该记账权。当然,合同管理节点也可采用该区块链网络中所有记账节点均可解密的加密方式对该第一存储请求进行加密,以使记账节点接收到该第一存储请求之后,均可进行正确解密并竞争记账权。

s42:区块链记账节点接收第一存储请求,将购售电合同数据的数字指纹存储于区块链中。

在一实施例中,第一存储请求包括该购售电合同数据;本s42步骤包括:从所述第一存储请求中获取所述购售电合同数据;利用不可逆加密算法对所述购售电合同数据进行计算,得到所述购售电合同数据的数字指纹;将所述购售电合同数据的数字指纹的存储在区块链的区块中。

在另一实施例中,所述第一存储请求包括所述购售电合同数据的数字指纹;在所述合同管理节点发送所述第一存储请求之前,所述方法还包括:合同管理节点利用不可逆加密算法对所述购售电合同数据进行计算,得到所述购售电合同数据的数字指纹;本s42步骤包括:从所述第一存储请求中获取所述购售电合同数据的数字指纹;将所述购售电合同数据的数字指纹的存储在所述区块链的区块中。

其中,上述不可逆加密算法为哈希算法,所述购售电合同数据的数字指纹为对该购售电合同数据进行哈希运算得到哈希值。在一具体应用场景中,该购售电合同数据的数字指纹可以为利用所述哈希算法对所述购售电合同数据、所述购售电合同数据的签署人信息、所述购售电合同数据的签署时间三者进行计算得到的哈希值。如此,采用区块链技术可以将合同内容、签署人以及签署时间进行绑定固化,可保证合同的法律效力。

下面对记账节点实现存储购售电合同数据的数字指纹的具体过程进行举例说:区块链网路中的多个记账节点将当前时间段获取的购售电合同的数字指纹集合封装于本地如图2所示的区块中,并通过共识机制如pow共识机制来竞争该区块的记账权。当某个记账节点获得记账权时,向区块链网络广播该区块。区块链网络的其他区块链节点对该区块的有效性进行验证,在该区块链网络不认同区块有效性时,该区块链网络的所有区块链节点将其区块丢弃,并重新如上述竞争记账权并生成新区块;在该区块链网络认同区块有效性时,该区块链网络的所有区块链节点将所述区块或者区块头同步到自身区块链上。其中,若该节点为轻量节点,则将区块头同步于其当前区块链上,若该节点为全节点,则将整个区块同步于其当前区块链上。此时,即实现将购售电合同数据的数字指纹存储于所述区块链网络的区块链中。在完成该指纹存储之后,区块链网络中的各个节点可利用区块标识及相应合同信息查找得到对应区块中存储的对应合同的数字指纹,进而可利用该数字指纹来验证该合同是否发生篡改,进而可保证该合同的安全性。

请参阅图5,图5是本申请购售电合同的存储方法另一实施例的部分流程示意图。本实施例方法除包括图4所述的步骤之外,还包括:

s51:合同管理节点根据用户发送的信息生成购售电合同。

具体如,文件用户节点利用其用户身份信息登录该合同管理节点的业务平台,并向合同管理节点发送创建合同请求,且将用户对合同模板的选择信息发送给合同管理节点。合同管理节点根据用户选择信息从合同模板库中选择一合同模板,并根据用户发送的合同内容,在该选择的合同模板上完成购售电合同的填写后,生成该购售电合同。

s52:合同管理节点将完成填写的购售电合同数据依序发送给签署人进行签署。

其中,在发送给签署人时,可利用相应签署人的公钥对所述购售电合同数据进行加密,以使相应签署人利用自身私钥对加密的购售电合同数据进行解密,并在加密后的购售电合同数据上签署。

本实施例中,可实现合同的流转,以实现合同相关方对合同的电子签字。例如,该合同相关方包括a和b,合同管理节点在生成上述购售电合同之后,利用a的公钥对该购售电合同进行加密后发送给a,a利用自身私钥解密后在购售电合同上进行电子签字,然后a利用b的公钥对完成签字的购售电合同进行加密后发送给b,以使b利用自身私钥解密后在购售电合同上进行电子签字,此事,合同已完成签署,b利用合同管理节点的公钥对完成签署的购售电合同进行加密后发送给合同管理节点,然后合同管理节点执行s41和/或s53,对购售电合同及其数字指纹进行存储。可以理解的是,a在其签字完成稿之后,可先利用合同管理节点的公钥加密购售电合同,并发送给合同管理节点,再由合同管理节点利用自身私钥解密后,继续利用b的公钥解密并发送b进行继续签署。

可以理解的是,在其他实施例中,合同管理节点也可不执行上述s51-s52以完成对购售电合同的签署,直接接收到来自文件用户节点的已完成签署的购售电合同,并执行上述实施例的s41-s42和本实施例的s53-s54。

s53:合同管理节点在购售电合同签署完成后,向合同存储节点发送第二存储请求。

本实施例不仅仅存储购售电合同的数字指纹,还存储该购售电合同数据,其中,该存储的购售电合同数据可为该购售电合同的快照文件。合同管理节点在购售电合同完成签署之后,向合同存储节点发送第二存储请求。

其中,所述第二存储请求用于请求存储所述购售电合同数据。该合同存储节点可以为云端存储节点或者上述区块链记账节点。当为区块链记账节点时,该第二存储请求和上面实施例所述的第一存储请求可作合并为一个存储请求发送给该记账节点。

进一步地,该第二存储请求可如上第一存储请求所述进行加密后发送,或者至少将第二存储请求中购售电合同数据进行加密。例如,可采用非对称加密方式,s53步骤具体包括:合同管理节点利用合同存储节点的公钥对所述购售电合同数据进行加密,得到加密数据;生成包含所述加密数据的第二存储请求。

s54:合同存储节点存储所述购售电合同数据。

合同存储节点可根据自身存储容量对购售电合同数据的存储分配。例如,自身存储容量足够大,则可将该购售电合同数据全部存储该自身存储空间中,当然,还可考虑其存储速率,例如当前合同存储节点的容量足够,但是排队进行写入的缓存队列较长,则可选择其他一个或多个合同存储节点进行存储。在另一实施例中,为提高存储的效率和安全性,可将购售电合同数据进行分布式存储。例如,可先根据购售电合同的大小或者购售电合同的内容,划分为多个合同部分。查询当前存储容量较大且处于空闲状态的多个合同存储节点,将该多个合同部分分别发送给多个合同存储节点,以由该多个合同存储节点对应存储一合同部分。

进一步地,当该第二存储请求中的购售电合同进行非对称加密时,s52还包括解密步骤,例如具体包括:利用所述合同存储节点的私钥对所述第二存储请求中的加密数据进行解密,得到解密后的购售电合同数据;存储所述解密后的购售电合同数据。

在存储该购售电合同数据之后,将该购售电合同数据的存储地址(在合同存储节点上的存储地址)发送给s42中的记账节点,以由该记账节点将该存储地址与该购售电合同数据的数字指纹一并保存在区块中。可以理解的是,该存储地址与对应数字指纹可保存在同一区块中或者不同区块中,且具有对应关系,该存储地址与对应数字指纹可同步存储,或者先后进行存储,在此对其存储方法不做限定。

本实施例中,购售电合同的数字指纹可由区块链记账节点保存在区块链中,由于区块链具有高安全性、能够有效防止数据篡改,故提高了购售电合同的数字指纹的存储可靠性,进而利用高可靠性的数字指纹能够对购售电合同进行验证,可避免购售电合同被恶意篡改,保证购售电合同的可靠性,提高该购售电合同的安全度和可信度。

进一步地,可通过将购售电合同的数字指纹永久保存于区块链上,而购售电合同数据保存于云端存储节点,故可实现两者信息的分离访问控制,保证数据不可篡改与使用前后的一致性及有效性,而且将购售电合同存储在云端存储节点上,可节省区块链上的数据存储空间。

在另一实施例,将购售电合同的数字指纹存储于区块链中,可进一步实现对购售电合同的真实、合规性审计。例如,可通过区块链的各个节点是否对区块和其内的合同指纹进行验证并认可,以确定各节点的账本是否完整等信息。并且,审计人员可以直接访问查询区块链上的有效信息,判断处理是否合理并进行修正,区块链中采用时间戳来记录合同各项交易与操作,可以实现历史溯源与追踪,极大的提高审计质量与效率。审计人员在购售电合同完成审计后,可在区块链上的存储的购售电合同的数字指纹上添加其加密签名(如利用其私钥对数字指纹进行加密),以表明该购售电合同有效或者无效。

在一具体的审计实施例中,记账节点接收合同数据条目,即购售电合同的存储地址也即索引,并将它们装入到不同的区块,并可修复条目的顺序,以使所述条目与对应购售电合同的数字指纹的顺序一致,例如购售电合同c、d、f的数字指纹在区块中的顺序为c-d-f,由于购售电合同的存储区块生成后,该购售电合同c、d、f对应条目的顺序也能与数字指纹的不一致,故可通过修复以使其条目顺序也为c-d-f。因此,可使得购售电合同的数字指纹与对应条目一一关联,并保存在区块中。区块生成后,该条目的顺序通过插入到区块链的一个锚定而变得不可逆转。通过对一段时间内收集的数据创建哈希值,然后把这个哈希值记录到区块链来实现这个功能。

合同条目的审计是一个独立的过程,可以依靠信任第三方或不依靠信任第三方来完成。审计是至关重要的,因为条目在被包括在数据集之前。一个项目被输入到系统中以后,审计人员将可以验证输入是否有效。审计要求的条件实际上可能是一个区块链的一部分。以购售电合同为例,审计师会仔细检查电力交易是否符合当地标准。如果用于转移的规则能够由计算机进行审核,可采用应用程序下载有关的数据,并进行自我审计和审核过程。例如,该应用程序可以通过下载数据条目,验证数据条目,并决定条目是否有效,从而使该应用程序建立起对系统的感知。

请参阅图6,图6是本申请文件存储方法一实施例的流程示意图。本实施例中,该文件存储方法用于存储文件数据的数字指纹,例如购售电合同等合同数据、或者其他类型的文件的数字指纹。该方法由上述的区块链记账节点执行以存储该文件数据的数字指纹,例如可应用于上述生成并存储购售电合同的数字指纹的过程中。其中,本实施例方法通过将文件数据在区块链上进行多重哈希锚定,以进一步加强文件数据的安全性。

具体地,本实施例包括以下步骤:

s61:区块链记账节点接收第一文件数据。

以购售电合同为例,区块链的各记账节点接收合同管理节点广播的上述第一存储请求,其中,该第一存储请求包括作为第一文件数据的购售电合同数据。各记账节点可通过共识机制竞争记账权,并由竞争到记账权的记账节点执行下述s62-s64。如前面实施例所述,该第一文件数据可先采用非对称加密算法等方式进行加密后,再发送给区块链记账节点。

s62:区块链记账节点利用哈希算法对所述第一文件数据进行计算,得到第一哈希值。

例如,区块链记账节点在竞争到记账权之后,利用如sha256算法等哈希算法对第一文件数据进行计算,得到第一哈希值,该第一哈希值可如图2的221所示的哈希值。具体地,可利用哈希算法对所述第一文件数据、所述第一文件数据的签署人信息以及签署时间进行计算,得到该第一哈希值。故由于不同文件数据的内容、签约人信息、签署时间产生的哈希值是唯一的,故该第一哈希值也是对应该第一文件数据而唯一存在的。

s63:区块链记账节点利用所述第一哈希值和第二文件数据生成第二哈希值。

本文中的文件数据,如第一文件数据、第二文件数据、第三文件数据均为区块链记账节点接收到的文件数据,其相关哈希值也存储在该区块链中。具体地,该第二文件数据、第三文件数据可为除第一文件数据以外的至少一个文件数据,也可以包括第一文件数据和至少一个其他文件数据,另外,第二文件数据和第三文件数据也可包含至少一个相同的文件数据,或者两者的文件数据均不相同。以购售电合同为例,第一文件数据和第二文件数据可以为不同的购售电合同数据,例如,该第二文件数据为平台上的出第一购售电合同数据以外至少部分其他购售电合同数据。当然,该第二文件数据也可包括平台上所有购售电合同数据。

在一实施例中,该s63具体包括:将所述第一哈希值和由所述第二文件数据产生的第三哈希值进行绑定,得到所述第二哈希值,该第二哈希值可如图2的222所示的哈希值,可以作为文件保全信息。上述绑定可以为将第一哈希值和第三哈希值再次进行哈希运算,或者,直接将第一哈希值和第三哈希值两者的数值顺序排列形成第二哈希值,当然,可以对第一哈希值和第三哈希值进行其他预设算法例如相加,以得到该第二哈希值。其中,该第三哈希值可以参考上述第一文件数据的哈希处理,利用哈希算法对第二文件数据进行计算得到。

s64:区块链记账节点将所述第二哈希值或者所述第一哈希值和所述第二哈希值两者存储于区块链中,以用于验证所述第一文件数据是否发生篡改。

例如,区块链记账节点将第一哈希值和第二哈希值如区块中的221和222存储在同一区块中。因此,当第一文件数据发生篡改时,篡改后的第一文件数据进行同样计算得到的哈希值必然跟区块中的第一哈希值和第二哈希值不同,因此可验证得到第一文件数据是否发生篡改。进一步地,利用第二哈希值可验证与该第二哈希值相关的文件数据(第一文件数据和第二文件数据)是否发生篡改,故可保证多个文件数据的不可篡改,也可保证该多个文件数据对应的第一哈希值和第三哈希值不可篡改,当第二文件数据为区块链对应的所有文件数据时,即可利用第二哈希值可保证整个区块链的不可篡改。由于不同文件数据产生的哈希值是唯一的,所以如果要篡改一文件数据中的信息,就要更改平台上跟该哈希值相关的所有文件数据的内容。

又例如,该区块链记账节点也可仅存储第二哈希值,而不存储第一哈希值。即,该第二哈希值作为第一文件数据的数字指纹,故仅将第二哈希值作为该第一文件数据的数字指纹如区块中的221存储在同一区块中。

本实施例中,通过区块链记账节点对第一文件数据进行哈希得到相应的哈希值作为文件数的数字指纹,由于区块链具有高安全性、能够有效防止数据篡改,故提高了文件数据的数字指纹的存储可靠性,进而利用高可靠性的数字指纹能够对文件数据进行验证,可避免文件数据被恶意篡改,保证文件数据的可靠性,而且通过对第一文件数据进行多重哈希(至少两重哈希),进而利用多重哈希得到的哈希值来验证第一文件数据是否发生篡改,可进一步增加文件数据的可靠性。

请参阅图7,图7是本申请文件存储方法另一实施例的流程示意图。本实施例中除包括图6所述的步骤s61-s63之外,在s63之后所述方法还包括s71-s76。具体如下:

s61:区块链记账节点接收第一文件数据。

s62:区块链记账节点利用哈希算法对所述第一文件数据进行计算,得到第一哈希值。

s63:区块链记账节点将第一哈希值和由第二文件数据产生的第三哈希值进行绑定,得到第二哈希值。

其中,s61-s63的具体说明请参阅图6所示实施例的相关描述。

s71:区块链记账节点利用所述第二哈希值和第三文件数据生成第四哈希值。

类似于上述s63,该s71可具体包括:将所述第二哈希值和由所述第三文件数据产生的哈希值进行绑定,得到所述第四哈希值,该第四哈希值可如图2的223所示的哈希值。其中,由所述第三文件数据产生的哈希值可以参考上述第一文件数据的哈希处理,利用哈希算法对第三文件数据进行计算得到。

s72:区块链记账节点将第一哈希值、第二哈希值和第四哈希值存储于区块链中,以用于验证所述第一文件数据是否发生篡改。

如上s64的相关描述,区块链记账节点可将第一哈希值、第二哈希值和第四哈希值如区块中的221、222和223存储在同一区块中。因此,当第一文件数据发生篡改时,篡改后的第一文件数据进行同样计算得到的哈希值必然跟区块中的第一哈希值、第二哈希值和第四哈希值不同,因此可验证得到第一文件数据是否发生篡改。进一步地,利用第四哈希值可验证与该第四哈希值相关的文件数据(第一文件数据和第二文件数据以及第三文件数据)是否发生篡改,故可保证多个文件数据的不可篡改,也可保证底层的该多个文件数据对应的哈希值不可篡改。

在另一实施例中,s72也可仅将第四哈希值存储于区块链中。即,该第四哈希值作为第一文件数据的数字指纹,故仅将第四哈希值作为该第一文件数据的数字指纹如区块中的221存储在同一区块中。

可以理解的是,在再一实施例中,记账节点可进一步基于该第四哈希值与其他文件数据产生新的哈希值,并存储在区块链中,以用于对相关文件数据的验证。故记账节点可根据实际情况进行若干重哈希处理。

s73:验证节点利用哈希算法对所述第一文件数据进行计算,得到第五哈希值。

s74:在判断所述第一哈希值与第五哈希值一致时,确定所述第一文件数据未被篡改。

该验证节点可如图3所示的验证节点313。例如,该第一文件数据存储于上述实施例中的云端存储节点中,该云端存储节点中的文件数据有可能被篡改,故可通过从云端存储节点中读取该第一文件数据,并采用相同的哈希算法对该第一文件数据进行计算,得到第五哈希值。若该第五哈希值与区块链中存储的第一哈希值一致,则可确定该第一文件数据未被篡改;若该第五哈希值与区块链中存储的第一哈希值不一致,则可确定该第一文件数据发生篡改。

s75:利用所述第五哈希值与所述第二文件数据得到第六哈希值。

s76:在判断所述第二哈希值与第六哈希值一致时,确定所述第一文件数据和所述第二文件数据未被篡改。

例如,该第二文件数据同样存储于上述实施例中的云端存储节点中。故验证节点可进一步从云端存储节点读取第二文件数据,对第二文件数据进行哈希得到相应哈希值,并采用上述第二哈希值相同的绑定方式,对该第五哈希值和第二文件数据的哈希值进行绑定得到第六哈希值。若该第六哈希值与区块链中存储的第二哈希值一致,则可确定该第一文件数据和第二文件数据未被篡改。若该第六哈希值与区块链中存储的第二哈希值不一致,则可确定该第一文件数据和第二文件数据的至少一者发生篡改;进一步地,若再比对第五哈希值与第一哈希值为一致,则可确定发生篡改的文件数据为第二文件数据。

同理,采用类似的方式,利用第四哈希值可验证第一文件数据、第二文件数据和第三文件数据是否发生篡改的情况。

以上对相关文件数据存储的实施例中,将数字指纹存储在区块链中,后续可利用该区块链的存储信息可完成如下内容:

(1)存在性证明验证:通过区块链证明文件数据在某个时刻的合法存在(通过其数字指纹可确定文件数据的真实性,故可证明其合法存在);

(2)与第三方进行合作:如公证、证据、司法服务等,该第三方通过区块链存储的数字指纹可确定文件数据的真实性,进而可提供相应公证、或者将该文件数据作为具有法律效力的证据等;

(3)区块链数据层的云存储扩展的可能性验证:将文件数据存储在云端,区块链上仅保存该文件数据不可篡改的指纹信息,节约区块链上数据存储空间。

请参阅图8,图8是本身请合同数据的验证方法一实施例的流程示意图。本实施例中,合同数据具体可以为上述购售电合同。该合同数据存储在合同存储节点中,具体地,该合同存储节点如上述实施例所述的文件存储节点或合同存储节点,具体可以为上述云端存储节点或者上述区块链节点。合同数据的数字指纹存储在区块链中,具体地,该数字指纹的存储方式可参阅上述实施例中关于文件数据的数字指纹的存储方式。

本实施例可通过区块链中的数字指纹对相应合同数据进行验证,以确定该合同数据是否发生篡改,确保合同数据的真实性,进而可根据验证结果产生验证报告,以告知他人该合同数据的真实性和可靠性。其中,该验证报告为司法鉴定报告、公证书等具有法律效力的报告,从而也确保了存储的合同文件都具有法律效力。相应地,该方法中的验证节点即可为司法鉴定中心节点或则公证中心节点。

具体地,本实施例方法包括以下步骤:

s81:验证节点获取区块链中存储的目标合同数据的第一数字指纹。

例如,在s81之前,验证申请节点向合同管理节点发送目标合同数据的标识查询请求;所述合同管理节点响应所述标识查询请求而向所述验证申请节点反馈所述目标合同数据的标识信息。验证申请节点向验证节点发送的验证请求,其中,所述验证请求包含所述目标合同数据的标识信息,用于请求对所述目标合同数据进行验证;验证节点从所述验证请求中获取所述标识信息。其中,该合同管理节点为上述实施例所述的合同管理节点。该验证申请节点可以为任意可与区块链节点和合同存储节点建立连接的节点,例如可以为上述的文件用户节点,一般而言,该验证申请节点为合同签署方所在的节点。

目标合同数据的标识信息可用于在区块链上查找到该目标合同数据的数字指纹,且可用于在云端存储节点上查找到该目标合同数据。具体,该标识信息可包括两部分,其中一部分用于指向区块链中的目标合同数据的数字指纹,如为区块标识和/或该目标合同数据的哈希值,另一部分用于指向云端存储节点的目标合同数据,如为目标合同数据在云端存储节点的存储地址。当然,该标识信息可以仅包括一部分,例如该部分用于指向区块链中的目标合同数据的数字指纹,如为区块标识和/或该目标合同数据的哈希值。而区块中还存储有该目标合同数据在云端的存储地址,故验证节点在查找到的区块中存储的目标合同数据的数字指纹时,可进一步查找到目标合同数据在云端的存储地址。在一具体应用中,该目标合同数据的标识信息具体为所述目标合同数据的合同查询码。例如,该合同查询码为利用所述目标合同数据的哈希值与其他合同数据生成的哈希值,例如为上面实施例所述的第一哈希值、第二哈希值或第四哈希值等。

在获得该标识信息之后,验证节点可利用所述标识信息从区块链中查收到所述目标合同数据的第一数据指纹。例如,验证节点将包含标识信息的指纹读取请求发送给区块链记账节点,该记账节点根据该指纹读取请求从本地区块链中查找到该标识信息对应的目标合同数据的第一数字指纹并发送给验证节点,进一步地,记账节点可将该目标合同数据的存储地址也一并发送给验证节点。另外,为数据传输的安全性,区块链记账节点将该第一数据指纹发送给验证节点之前,可先利用验证节点的公钥对第一数字指纹进行非对称加密。验证节点接收到该加密的第一数字指纹后,利用自身私钥对加密数据进行解密,得到未加密的第一数字指纹。

在另一实施例中,该区块两为区块联盟链,故仅有注册的节点方可访问区块链中的数据。当该验证节点并非为该联盟链中已注册的节点时,需要由已注册的节点给该验证节点进行访问授权。例如,该验证申请节点可在发送上述验证请求时,该验证请求中还包括该验证申请节点的区块链访问权限信息。故验证节点在执行本s81时,可先利用该区块链访问权限信息获得访问权限,即能够访问该区块链,从而如上面所述利用标识信息和/或非对称加解密方式等手段来获取区块链中存储的目标合同数据的第一数字指纹。

可以理解的是,在其他实施例中,验证节点也可不在接收到验证请求时执行该s81-s84。例如,在利用上述实施例将合同数据的数字指纹存储于区块链时,可将数字指纹同步给验证节点,验证节点并继续执行s82-s84,以对合同数据进行验证并产生报告。由于在传输过程中,由于该合同数据的数字指纹是不可逆的,所以即使信息泄露,他人也无法反推出合同的具体内容。

s82:验证节点获取合同存储节点存储的所述目标合同数据,并利用所述目标合同数据计算得到第二数字指纹。

继续以上述获取到标识信息为例,验证节点可以利用所述标识信息从合同存储节点中查收到所述目标合同数据。例如,验证节点将包含标识信息或记账节点反馈的合同数据存储地址的数据读取请求发送给合同存储节点,该合同存储节点根据该数据读取请求从存储空间中查找相应的目标合同数据并发送给验证节点。另外,为数据传输的安全性,合同存储节点将该目标合同数据发送给验证节点之前,可先利用验证节点的公钥对目标合同数据进行非对称加密。验证节点接收到该加密的第目标合同数据后,利用自身私钥对加密数据进行解密,得到未加密的目标合同数据。

s83:验证节点判断所述第一数字指纹与第二数字指纹是否一致,若一致,则确定所述合同存储节点中的目标合同数据未被篡改。

本实施例中,通过判断目标合同数据当前生成的数字指纹是否与区块链存储的数字指纹的一致性来确定该目标合同数据的可靠性,当一致时,则可确定合同存储节点中的目标合同数据未被篡改;当不一致时,则可确定合同存储节点中的目标合同数据发生篡改。由此,可实现对存储的目标合同数据的有效验证。

s84:验证节点根据验证结果,生成所述目标合同数据的验证报告,并采用自身私钥对所述验证报告进行非对称加密签名。

例如,当第一数字指纹和第二数字指纹一致,表示目标合同数据未被篡改,故可生成相应验证报告以证明该目标合同数据未被篡改。具体,所述验证报告为司法鉴定报告或公证书,即生成具有法律效力的报告,使得目标合同数据具有法律效力。

进一步地,为了提高该验证报告的可靠性,可利用验证节点的私钥对验证报告进行非对称加密,也即验证节点对该验证报告进行数字签名。故,当其他设备节点接收到该验证报告时,可利用验证节点的公钥对该验证报告进行解密,若能够成功解密,则确定该验证报告是由该验证节点生成的,确保收到的目标合同数据未被篡改。

可以理解的是,在其他实施例中,该方法也可不包括上述s84,即验证节点获得验证结果后,无需形成报告。

本实施例中,通过区块链中存储的目标合同数据的数字指纹与对当前目标合同数据进行哈希运算得到的数字指纹进行比对,以确定该目标合同数据是否发生篡改。由于区块链具有高安全性、能够有效防止数据篡改,故提高了合同数据的数字指纹的存储可靠性,进而利用高可靠性的数字指纹能够对合同数据进行验证,可避免合同数据被恶意篡改,保证合同数据的可靠性。

本申请还提供文件数据的管理方法,该方法包括任一上述实施例方法的其中一执行主体执行的步骤。

请参阅图9,图9是本申请电子设备一实施例的结构示意图。本实施例中,该电子设备90为图3所示存储网络中的节点311/312/313/314/321。该电子设备90包括存储器91、处理器92以及通信电路93。其中,电子设备90的各个组件可通过总线耦合在一起,或者处理器分别与其他组件一一连接。

通信电路93用于与其他电子设备如存储网络中的其他节点实现通信,具体可包括发送器和接收器。

存储器91用于存储处理器92执行的计算机指令、处理器92在处理过程中的数据以及本地区块链,其中,该存储器91包括非易失性存储部分,用于存储上述计算机指令。

处理器92控制该电子设备90的操作,处理器92还可以称为cpu(centralprocessingunit,中央处理单元)。处理器92可能是一种集成电路芯片,具有信号的处理能力。处理器92还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本实施例中,处理器92通过调用存储器91存储的计算机指令,用以执行上述方法实施例中任一节点所执行的步骤。

例如,当该电子设备为合同管理节点时,处理器92用于在购售电合同签署完成后,发送第一存储请求,以使区块链记账节点接收所述第一存储请求,将所述购售电合同数据的数字指纹存储于区块链中,其中,所述第一存储请求用于请求存储所述购售电合同数据的数字指纹,所述购售电合同数据的数字指纹是基于所述购售电合同数据的内容生成的。

当该电子设备为区块链记账节点时,该处理器92用于接收合同管理节点在购售电合同签署完成后发送的第一存储请求,并将所述购售电合同数据的数字指纹存储于区块链中。

当该电子设备为合同存储节点时,该处理器92用于接收到合同管理节点在购售电合同签署完成后发送第二存储请求,其中,所述第二存储请求用于请求存储所述购售电合同数据;存储所述购售电合同数据。

又例如,当该电子设备为区块链记账节点时,该处理器92用于接收第一文件数据;利用哈希算法对所述第一文件数据进行计算,得到第一哈希值;利用所述第一哈希值和第二文件数据生成第二哈希值;将所述第二哈希值或者所述第一哈希值和所述第二哈希值两者存储于区块链中,以用于验证所述第一文件数据是否发生篡改。

再例如,当该电子设备为验证节点时,该处理器92用于获取区块链中存储的目标合同数据的第一数字指纹;获取合同存储节点存储的所述目标合同数据,并利用所述目标合同数据计算得到第二数字指纹;判断所述第一数字指纹与第二数字指纹是否一致,若一致,则确定所述合同存储节点中的目标合同数据未被篡改。

本申请还提供一种存储网络或区块链网络的实施例,该存储网络或区块链网络可包括图3所示中的至少部分节点,以用于实现上述任一方法实施例。例如,存储网络包括上述合同管理节点和区块链记账节点,该合同管理节点和区块链记账节点用于执行上述购售电合同方法实施例的相应步骤。又例如,存储网络包括上述验证节点、合同存储节点和区块链记账节点;其中,该合同存储节点用于存储合同数据;该区块链记账节点用于存储合同数据的数字指纹;该验证节点用于执行上述图8所述实施例的方法步骤。

本申请还提供一种非易失性存储介质的实施例,如图10所示,该非易失性存储介质10存储有处理器可运行的计算机指令101,该计算机指令101用于执行上述实施例中的方法。具体地,该存储介质10具体可如图9所示的存储器91。

上述方案可实现以下有益效果:

(1)可结合区块链技术进行文件特别是合同的管理,包括合同生成、合同流转、合同签署等,有效打通文件存证“最后一公里”,且可根据区块链的不可篡改性,可为文件进行快速验证,缩短文件验证时间和法律纠纷解决时间;

(2)区块链允许将文件数据保存在云端,文件数据的存储地址写入区块链,参与节点共同维护了一个永久不可更改的、基于时间戳记录的数据网络,大大减少了进行独立审计、实时共享、短路径传输、线上随签和集成的成本和难度;

(3)在数据保全方面,区块链保障了数据安全,提高了数据公信力,使得取证更便捷、证据追溯更容易,同时其文件管理节点可提供虚拟化、可视化的人机交互界面,允许短期电子合同,方便查验,并且大大提高了合同造假难度;

(4)法院可以将文件数据固化存储在区块链上,从一开始就保证数据源的准确性,并将数据源关键节点利用区块链存贮相连接,建立完整的证据链条,实现不可伪造、不可篡改、可溯源的特点;

(5)从区块链上提取证据更是方便快捷,并且抗攻击能力强;

(6)引入第三方保全平台如司法鉴定中心、公证中心等,让文件相关方在第一时间上传文件相关信息,并且电子证据通过司法鉴定中心、公证中心等来提供信任背书,保证其法律效力。

以上描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施方式中也可以实现本申请。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

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