一种基于区块链的数据检验方法及装置与流程

文档序号:18752075发布日期:2019-09-24 21:16阅读:267来源:国知局
一种基于区块链的数据检验方法及装置与流程

本发明涉及科技金融(fintech)领域,尤其涉及一种基于区块链的数据检验方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(finteh)转变,区块链(blockchain)技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。

区块链上的数据通过智能合约的形式存储,在转换、查询、分析、处理等方面存在功能性和性能上的问题。为了解决这些问题,通常将区块链的数据通过rpc(remoteprocesscall)接口导出,并将报文转换为标准化、结构化的数据,然后存储至关系型数据库或其他通用的存储系统上。

数据存储至存储系统后的保护措施,通常采用基于限定访问ip、设定用户权限、设置用户密码、定期建立快照等方式,以此来得到一定的控制和保护。

但是这种保护是有限的,难以防范操作风险、内部作案风险、系统设计缺陷造成的数据一致性问题等。由于数据库等存储系统支持增删改查,可以对其中的数据进行编辑和修改,数据可能会被篡改,存在一定信息安全风险。



技术实现要素:

本申请提供一种基于区块链的数据检验方法及装置,用以防止区块链中导入至存储系统中的数据被篡改,增加存储系统中的信息安全性。

本发明实施例提供的一种基于区块链的数据检验方法,包括:

接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段;所述第二数据字段为根据区块链中的第一信息数据确定并存储于所述存储系统中的数据;

利用预先存储的第一树对所述第二数据字段进行检验;所述第一树为根据第一数据字段的哈希值建立的,所述第一数据字段为根据所述第一信息数据确定的数据;

当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改。

一种可选的实施例中,所述利用预先存储的第一树对所述第二数据字段进行检验,当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改,包括:

计算每一个第二数据字段的哈希值;

将所有第二数据字段的哈希值作为所述第二树的叶子节点的值,建立所述第二树;所述第二树中任一非叶子节点的值是将所述非叶子节点的所有子节点的值进行哈希运算得到的;

将所述第二树的根节点的值与所述第一树的根节点的值进行对比;

当所述第二树的根节点的值与所述第一树的根节点的值相同时,确定所述第二数据字段未被篡改。

一种可选的实施例中,所述接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段之前,还包括;

获取所述区块链中的第一信息数据;

将所述第一信息数据结构化,得到第一数据字段,并将结构化的第一信息数据存储于所述存储系统中;

计算每一个第一数据字段的哈希值;

将所有第一数据字段的哈希值作为所述第一树的叶子节点的值,建立所述第一树。

一种可选的实施例中,还包括:

从区块链中获取第二信息数据,所述第一信息数据中包含所述第二信息数据;

将所述第二信息数据结构化得到第三数据字段;

根据所述第三数据字段的哈希值建立第三树;

利用所述第三树对所述第一树进行校验。

一种可选的实施例中,还包括:

对所述存储系统的日志进行监控;

监听到所述存储系统的日志中的存储系统修改事件后,解析所述存储系统修改事件,获取所述存储系统修改事件对应的操作的详细信息;

根据所述操作的详细信息和预先设置的检验规则,确定所述操作为非法时,发送告警信息。

一种基于区块链的数据检验装置,包括:

收发单元,用于接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段;所述第二数据字段为根据区块链中的第一信息数据确定并存储于所述存储系统中的数据;

检验单元,用于利用预先存储的第一树对所述第二数据字段进行检验;所述第一树为根据第一数据字段的哈希值建立的,所述第一数据字段为根据所述第一信息数据确定的数据;

确定单元,用于当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改。

一种可选的实施例中,所述检验单元,具体用于计算每一个第二数据字段的哈希值;将所有第二数据字段的哈希值作为所述第二树的叶子节点的值,建立所述第二树;所述第二树中任一非叶子节点的值是将所述非叶子节点的所有子节点的值进行哈希运算得到的;将所述第二树的根节点的值与所述第一树的根节点的值进行对比;

所述确定单元,具体用于当所述第二树的根节点的值与所述第一树的根节点的值相同时,确定所述第二数据字段未被篡改。

一种可选的实施例中,所述收发单元,还用于获取所述区块链中的第一信息数据;

还包括建立单元,用于将所述第一信息数据结构化,得到第一数据字段,并将结构化的第一信息数据存储于所述存储系统中;计算每一个第一数据字段的哈希值;将所有第一数据字段的哈希值作为所述第一树的叶子节点的值,建立所述第一树。

一种可选的实施例中,还包括审查单元,用于:

从区块链中获取第二信息数据,所述第一信息数据中包含所述第二信息数据;

将所述第二信息数据结构化得到第三数据字段;

根据所述第三数据字段的哈希值建立第三树;

利用所述第三树对所述第一树进行校验。

一种可选的实施例中,所述审查单元,还用于:

对所述存储系统的日志进行监控;

监听到所述存储系统的日志中的存储系统修改事件后,解析所述存储系统修改事件,获取所述存储系统修改事件对应的操作的详细信息;

根据所述操作的详细信息和预先设置的检验规则,确定所述操作为非法时,发送告警信息。

本发明实施例还提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。

本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。

本发明实施例中,校验系统从区块链中获取第一信息数据,并根据第一信息数据确定第一数据字段,基于第一数据字段的哈希值建立第一树,将第一树存储于存储系统或者校验系统中进行维护。同时,将第一信息数据确定并存储于存储系统中的数据作为第二数据。当校验系统接收到针对第二数据字段的处理请求后,从存储系统中获取第二数据字段,并利用第一树对第二数据字段进行检验。可以预见的是,若存储于存储系统中的第二数据字段未被篡改,则第二数据字段的哈希值与第一树中对应节点的节点值一致,若第二数据字段被篡改,则第二数据字段的哈希值与第一树中对应节点的节点值不一致。因此,可以利用第一树对存储系统中存储的第二数据字段进行检验,确保存储系统与区块链中的数据一致性,从而避免存储系统中存储的数据被篡改,提高了存储系统中的信息安全。此外,第一树中的每个叶子节点与区块链中的数据一一对应,因此,可以根据第一树迅速定位到区块链中的数据,从而实现发现篡改时迅速定位被篡改的数据。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种可能的系统构架的结构示意图;

图2为本发明实施例提供的一种基于区块链的数据检验方法的流程示意图;

图3为本发明实施例提供的一种基于区块链的数据检验装置的结构示意图;

图4为本发明实施例提供的电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,本发明实施例所适用的一种系统架构,包括区块链101、校验系统102和数据库103。其中,校验系统102从区块链101中获取信息数据,将信息数据结构化后存入数据库103中,同时,根据获取的信息数据建立梅克尔树,维护与数据库103中,用于对数据库103中存储的数据进行检验,防止数据库103中的数据被篡改。进一步地,还可以包括审计系统104,审计系统104基于区块链101中的信息数据建立另一个梅克尔树,用于对数据库103中维护的梅克尔树进行校验,防止数据库103中的梅克尔树被篡改。

区块链101是由一系列区块组成的一条链,每个块上除了记录本区块的数据还会记录上一区块的hash(哈希)值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头定义包括该区块高度h、上一个区块的hash值prevhash等重要字段,而块体主要存储交易数据。

校验系统102和/或审计系统104可以为安装在一个独立的服务器上的操作系统,也可以为安装于多个服务器所形成的服务器集群中。优选地,校验系统102和/或审计系统104可以采用云计算技术进行信息处理。

数据库103为数据存储设备,较佳地,可以为关系型数据库,按照表结构的方式进行数据存储。

为了便于理解,下面对本发明实施例中可能涉及的名词进行定义和解释。

埋点:是网站分析的一种常用的数据采集方法。数据埋点分为初级、中级、高级三种方式。数据埋点是一种良好的私有化部署数据采集方式。初级方式为在产品、服务转化关键点植入统计代码,据其独立id确保数据采集不重复(如购买按钮点击率)。中级方式为植入多段代码,追踪用户在平台每个界面上的系列行为,事件之间相互独立(如打开商品详情页——选择商品型号——加入购物车——下订单——购买完成)。高级方式为联合公司工程、etl采集分析用户全量行为,建立用户画像,还原用户行为模型,作为产品分析、优化的基础。

区块链:区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的hash值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头定义包括该区块高度h,上一个区块的hash值等重要字段,而块体主要存储交易数据。

rpc(remoteprocedurecall,远程过程调用):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。rpc协议假定某些传输协议的存在,如tcp或udp,为通信程序之间携带信息数据。在osi网络通信模型中,rpc跨越了传输层和应用层。rpc使得开发包括网络分布式多程序在内的应用程序更加容易。

智能合约(smartcontract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。

哈希(hash):一般翻译做“散列”,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

梅克尔树(merkletrees),是区块链的重要数据结构,其作用是快速归纳和校验区块数据的存在性和完整性。一般意义上来讲,它是哈希大量聚集数据“块”的一种方式,它依赖于将这些数据“块”分裂成较小单位的数据块,每一个bucket块仅包含几个数据“块”,然后取每个bucket单位数据块再次进行哈希,重复同样的过程,直至剩余的哈希总数仅变为1。

信息数据、数据字段:本发明实施例中,将区块链中保存的交易信息、状态信息和日志信息统称为信息数据。将信息数据解析处理后得到数据字段,数据字段以结构化数据的形式保存至另外的存储设备中,如关系型数据库中。

区块链技术是利用块链式数据结构来验证与存储数据。在以太坊等区块链技术产品中,通过以太坊虚拟机来执行智能合约,使用智能合约来建立和验证账户,处理与存储数据。但是,智能合约上的计算资源是有限的,同时其查询的效率也较低,难以处理实际场景中的各类查询类的请求。

在基于区块链的应用系统中,业务数据可视化、系统运维监控、实时业务报表、业务数据对账等均是较为常见的需求;为了有效解决这些问题,满足业务复杂多变的需求,通常会使用数据导出的应用系统,将区块链上的数据按照区块高度逐个导出,并经过结构化处理后,存储到以关系型数据库为代表的数据存储系统中。

数据库等存储系统可以基于限定访问ip、设定用户权限、设置用户密码、定期建立快照等方式来得到防篡改的保护。但是这种保护是有限的。由于数据库等存储系统支持增删改查,可以支持方便地编辑和修改,数据可能会被误操作,甚至被别有用心的人员篡改;此外,也无法完全杜绝网络黑客攻击;难以防范操作风险、道德风险、信息安全风险。

因此,如何保证数据存储中的业务数据与区块链上数据的一致性;如何检测和监控存储数据是否被篡改;在检测到数据被篡改时,如何快速定位、发现和恢复被篡改的数据是现有区块链数据存储系统的技术挑战。

为了解决上述问题,基于上述架构,本发明实施例提供了一种基于区块链的数据检验方法,如图2所示,本发明实施例提供的基于区块链的数据检验方法包括以下步骤:

步骤201、接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段;所述第二数据字段为根据区块链中的第一信息数据确定并存储于所述存储系统中的数据。

步骤202、利用预先存储的第一树对所述第二数据字段进行检验;所述第一树为根据第一数据字段的哈希值建立的,所述第一数据字段为根据所述第一信息数据确定的数据。

步骤203、当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改。

本发明实施例中,校验系统从区块链中获取第一信息数据,并根据第一信息数据确定第一数据字段,基于第一数据字段的哈希值建立第一树,将第一树存储于存储系统或者校验系统中进行维护。同时,将第一信息数据确定并存储于存储系统中的数据作为第二数据。当校验系统接收到针对第二数据字段的处理请求后,从存储系统中获取第二数据字段,并利用第一树对第二数据字段进行检验。可以预见的是,若存储于存储系统中的第二数据字段未被篡改,则第二数据字段的哈希值与第一树中对应节点的节点值一致,若第二数据字段被篡改,则第二数据字段的哈希值与第一树中对应节点的节点值不一致。如不相同,则比较下一级的节点;跳过相同的节点,在比较发现不同的节点时,继续比较不同节点的下一级节点的值,直到发现所有不同的叶子节点。因此,可以利用第一树对存储系统中存储的第二数据字段进行检验,确保存储系统与区块链中的数据一致性,从而避免存储系统中存储的数据被篡改,提高了存储系统中的信息安全。此外,第一树中的每个叶子节点与区块链中的数据一一对应,因此,可以根据第一树迅速定位到区块链中的数据,从而实现发现篡改时迅速定位被篡改的数据。

需要说明的是,本发明实施例中的存储系统可以为关系型数据库、nosql、文件型数据库等多种类型的数据存储系统,本发明实施例中主要以关系型数据库为例进行介绍。

本发明实施例中,从区块链中获取信息数据后,不是直接利用信息数据建立梅克尔树,而是将信息数据结构化之后再建立梅克尔树。当然,在某些场景下,也允许直接利用信息数据建立梅克尔树,例如对状态和交易信息的存储、校验。下面就如何从区块链中获取信息数据,获取信息数据后如何进行数据处理进行详细描述。

在以太坊等区块链平台中,允许在智能合约中定义日志来跟踪交易和信息,一个合约可以通过定义“事件”来记录和存档日志,供客户端获取。

为了实现区块链交易数据的结构化查询,在智能合约中创建日志埋点并将智能合约发布到区块链上。应用程序发出交易上链请求,区块链上会调用智能合约处理该交易,智能合约的调用过程中触发智能合约中的埋点日志,产生交易日志信息,并将交易日志信息储存到区块链的区块信息中。日志信息可以包括合约地址、发送者地址、原始发起人地址、内部变量值、某个函数返回值等信息。

也就是说,当区块链的应用发起交易上链请求后,区块链上的智能合约会执行该请求,并将相关的发送者地址、合约地址等日志信息保存到区块链的区块信息中。

为了实现业务数据可视化、系统运维监控、实时业务报表、业务数据对账等要求,需要将区块链中的交易信息、状态信息和日志信息保存至另外的存储设备(如关系型数据库)中。服务器通过调用区块链底层rpc接口,获得交易信息、状态信息和日志信息;并按照关系型数据库的表结构的方式来组织数据的存储。其中,交易信息可以包括交易参与方标识、交易账号、交易金额等信息;状态信息可以包括对应账号的状态变化信息。

例如,在合约contract1中定义了event2,则在存储系统中将定义contract1_event2的数据结构(假如存储系统为关系型数据库,则contract1_event2为数据库表),用来存储所有产生的event2的数据。假设从1至100个区块中,智能合约共执行了10次event2,则区块链上共保存了10条事件的存档;相应的,服务器共获得了10条结构化的数据,并保存到了contract1_event2的数据结构中。以此类推,区块链上相关的交易信息、状态信息和日志信息将按照解析后的结构化形式,分别存储到对应的表或其他结构中。在某个表之中,汇集了所有从区块链上导出的同类数据;一张表可能有若干条不同的数据。

针对日志信息而言,每张表中包含若干个字段,其中包括区块信息字段,如该交易所对应的区块高度、所在高度的交易序号和上链的时间戳。此外,每张表中还包含了具体的业务字段,这些字段来源于上述智能合约中埋点产生的日志信息。例如在转账交易中,业务字段可以包括转入账号、转出账号、转账金额。日志信息经过程序解析后,获得对应的结果值。例如,在智能合约contract1中定义了event2,其定义如下:

eventevent2(inti,bytes32msg,addressa);

则这个日志信息中包含了三个不同类型的字段i,msg,a,在智能合约调用相应的函数并执行对应的日志记录语句时,上述信息会被保存到链上。

当服务器调用区块链的rpc接口查询对应的结果时,会解析上述的查询结果,则存储系统中对应的数据结构contract1_event2将包含六个数据字段,分别为该日志的区块高度、所在高度的交易序号、上链时间戳、i、msg和a。

本发明实施例中,将上述数据字段计算哈希值,并进一步建立梅克尔树。所述接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段之前,还包括;

获取所述区块链中的第一信息数据;

将所述第一信息数据结构化,得到第一数据字段,并将结构化的第一信息数据存储于所述存储系统中;

计算每一个第一数据字段的哈希值;

将所有第一数据字段的哈希值作为所述第一树的叶子节点的值,建立所述第一树。

具体实施过程中,校验系统在将区块链中的信息数据结构化处理存储至数据库时,会利用结构化的第一信息数据,即第一数据字段构建第一树。

较佳地,本发明实施例中的第一树、第二树和第三树为梅克尔树。

梅克尔树是一种树,大多数是二叉树,通常包含底层数据、区块头的根哈希值(即merkle根),以及所有沿底层区块数据到根哈希的分支。梅克尔树运算过程一般是将底层数据进行分组哈希,并将生成的新哈希值插入到梅克尔树中,如此递归直到只剩最后一个根哈希值并记为区块头的merkle根。其每个哈希节点总是包含两个相邻的数据块或其哈希值。梅克尔树的特点如下:

1.梅克尔树也可以多叉树,无论是几叉树,它都具有树结构的所有特点;

2.梅克尔树的叶子节点的值是数据集合的单元数据或者单元数据的哈希值。

3.非叶子节点的值是根据它下面所有的叶子节点值,然后按照哈希算法计算而得出的。

本发明实施例中,可以是基于一条数据结构构建一个梅克尔树。例如基于数据结构contract1_event2的六个数据字段构建一个梅克尔树,该梅克尔树的叶子节点分别为该日志的区块高度、所在高度的交易序号、上链时间戳、i、msg和a的哈希值。这样,每个独立的数据结构都将获得一个梅克尔树根的值,只需比较相同块高下该数据结构内的梅克尔树根,即可快速校验和检查数据的完整性。一般来说,当某数据结构的条数小于16384(该数字仅供举例,也可以是其他值),则将该数据结构的每一个数据字段对应一个叶子节点,维护一棵独立的梅克尔树。反之,每16384条记录的梅克尔树根值可以作为叶子节点构建一个总的梅克尔树,以减少存储的数据量。其次,也可以基于区块维度维护一棵梅克尔树,即将每个区块的所有交易按照交易序号升序排序,每个交易的数据字段对应梅克尔树的叶子节点,建立梅克尔树。此外,也可以基于交易的维度维护一棵梅克尔树,从而便于对交易进行维护。进一步地,校验系统可以维护基于区块高度的梅克尔树,从而在指定区块高度后,快速校验和检查该区块高度下所有数据的完整性和一致性。还可根据特定的区块高度区间,检验某个区块高度区间内数据的一致性和完整性。

本发明实施例中,构建的第一树可以维护在校验系统中,也可以维护在存储系统中,这里不做限制。

上述第一树的建立是基于智能合约埋点产生的日志信息,该方法可以扩展到区块链的交易信息和状态信息,原理和方法与上述类似,不再赘述。

建立了第一树之后,当数据库中的数据被取出处理时,需要对数据进行检验,确定该数据未被篡改。对于从数据库中取出的第二数据字段,本发明实施例中可以直接将第二数据字段计算哈希值,然后逐个与第一树中的叶子节点的值进行对比,以检验第二数据字段是否被篡改。较佳地,还可以将所有第二数据字段建立第二树,仅对比第二树的根节点与第一树的根节点。

需要说明的是,本发明实施例中,在区块链中的数据按照区块为单元来构造,但在某些具体的业务场景中,存在大量的以业务类型维度来查询数据。第一树的建立可以以区块为维度;也可以以单一业务类型为维度,例如通过关系型数据库表存储同一埋点日志的数据,然后通过关系型数据库表的维度来建立第一树,这样就可以在要求导出所有单个业务数据的时候校验该表的第一树根数据,快速判断数据是否被篡改。

进一步地,所述利用预先存储的第一树对所述第二数据字段进行检验,当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改,包括:

计算每一个第二数据字段的哈希值;

将所有第二数据字段的哈希值作为所述第二树的叶子节点的值,建立所述第二树;所述第二树中任一非叶子节点的值是将所述非叶子节点的所有子节点的值进行哈希运算得到的;

将所述第二树的根节点的值与所述第一树的根节点的值进行对比;

当所述第二树的根节点的值与所述第一树的根节点的值相同时,确定所述第二数据字段未被篡改。

为了便于检验,可以将每个第一树的根节点的值存储到专门的存储表中。校验系统计算第二数据字段的哈希值,并以与构建第一树相同的方式和维度构建第二树。可以预见的,若第二数据字段均未被篡改,则第二树的每一个节点与第一树的对应节点的值均相等;若有一个第二数据字段被篡改,则第二树的根节点与第一树的根节点的值不相同,因此可以直接将第二树的根节点的值与第一树的根节点的值进行对比,从而确定第二树对应的第二数据字段是否被篡改。

为了进一步对数据进行有效的保护和审计,本发明实施例中还包括对第一树的审计,方法包括:

从区块链中获取第二信息数据,所述第一信息数据中包含所述第二信息数据;

将所述第二信息数据结构化得到第三数据字段;

根据所述第三数据字段的哈希值建立第三树;

利用所述第三树对所述第一树进行校验。

具体实施过程中,可以引入审计系统,对校验系统和/或数据库中维护的第三树进行审查。一般来说,需要对审计系统与校验系统和/或数据库操作范围及权限进行隔离,即校验系统和审计系统无法干涉或修改对方的行为和数据,在大多数情况下,只保留相互的只读权限。此外,审计系统可用另外一个实例的校验系统来代替。

审计系统从区块链中获取信息数据并建立第三树的过程与校验系统获取信息数据并建立第一树的过程相同。审计系统中可以不保存明细的数据字段,而只存储梅克尔树的树结构。这样可以大大降低数据存储量,提升审计的速度。

需要说明的是,发明实施例中不仅可以利用第三树对第一树进行校验,还可以建立第四树、第五树……直至第n树对第一树,其中,每一个树的建立方法与上述描述类似,这里不做赘述。

为了进一步减轻审计的工作量,提升审计速度,审计系统可以仅对校验系统的部分第一树进行审查。例如每隔2x个区块高度,发起与查询系统存储的校验工作。x的计算公式如下:

2x-1<当前区块高度/u<=2x…………公式1

其中,u为预定参数,推荐为100,也可以根据经验值设置。

审计系统可以按照数据结构的维度进行校验,也可以按照区块的维度进行校验,按照数据结构的维度进行校验的具体过程如下:

将数据结构的按照字母进行排序并逐一校验,比对每个独立数据结构的第一树的根节点的值与第三树的根节点的值是否一致。如果一致,则进一步检查下一个数据结构。

如果不一致,则说明审计系统与校验系统中的数据不一致。审计系统按照梅克尔树的结构,检查下一层的两个节点的值,检查究竟是哪个节点的值不一致。如果审计系统与校验系统某个对应位置的节点的值相同,则跳过;否则,一直沿着节点追溯其子节点,直到找到所有不一致的叶子节点。这些叶子节点即为可能被篡改的交易数据。

当找到所有不一致的叶子节点以后,审计系统会重新根据这些叶子节点对应的交易的所在区块高度及序号,重新到区块链上下载这些信息数据,并再次计算其哈希值。如果确认和之前计算的值一致,则可定位到校验系统的具体信息数据被篡改。

按区块的维度进行校验的方法与原理同上,无需赘述。

此外,也可通过数据结构的维度与区块的维度进行交叉验证和校验,可以快速定位和确定出问题的信息数据和其对应的区块高度和交易序号。

在发现问题后,审计系统可发出对应的警报通知相关的责任人员,进行人工的介入;也可发送请求通知校验系统,校验系统可监听该类型的通知,并适配自动回滚和重新同步的功能。校验系统在处理完错误后,需要重新计算和维护以独立数据结构和区块高度两个维度的梅克尔树校验值。

为了进一步提升审计的效率,审计系统还可以直接监听数据库的底层事件或日志等。具体监听方法包括:

对所述存储系统的日志进行监控;

监听到所述存储系统的日志中的存储系统修改事件后,解析所述存储系统修改事件,获取所述存储系统修改事件对应的操作的详细信息;

根据所述操作的详细信息和预先设置的检验规则,确定所述操作为非法时,发送告警信息。

具体实施过程中,当审计系统监听到对应的数据库修改事件时,会获取到该事件操作的详细信息,并将其解析为对应的结构化数据。例如,获得操作的数据结构、交易所在的块高、交易的序号、具体改动的数据结构字段等。

审计系统获取校验系统中该区块或数据结构的状态、对应完成的时间戳等详细信息;根据详细信息,并基于可自定义设置的规则,判断该改动是否为正常。例如,如果交易在改动对应的时间戳之前的某个时间点完成,则可判定该改动操作基本为非法的;审计系统可立刻发出预警。

审计系统接下来将按照对比改动操作的数据所在区块的hash值及所在数据结构的hash值。为了确保数据源未发生改变,审计系统会重新到区块链上重新下载和同步对应的信息数据。

在对比完数据后,审计系统会正式发出警报,并记录检测到的事件结果和详细信息;以供后续的人工处理及系统自动处理。当然,除了发送告警信息,还可以触发其它异常处理机制,例如自动重新下载、人工介入等,这里不做限制。

为了更清楚地理解本发明,下面以具体实施例对上述流程进行详细描述,具体实施例的步骤如下所示,包括:

步骤s301:校验系统从区块链中获取第一信息数据。

步骤s302:校验系统将第一信息数据结构化,得到第一数据字段,并将结构化的第一信息数据存储于数据库中。

步骤s303:校验系统计算每一个第一数据字段的哈希值。

步骤s304:校验系统将所有第一数据字段的哈希值作为第一树的叶子节点的值,以数据库中的数据结构为维度建立第一树,并将第一树进行存储。

步骤s305:校验系统接收到客户端发送的针对第二数据字段的处理请求后,从数据库中获取所述第二数据字段。

步骤s306:校验系统计算每一个第二数据字段的哈希值。

步骤s307:校验系统将所有第二数据字段的哈希值作为第二树的叶子节点的值,以数据库中的数据结构为维度建立第二树。

步骤s308:将第二树的根节点的值与第一树的根节点的值进行对比,若第二树的根节点的值与第一树的根节点的值相同,则执行步骤309,否则执行步骤310。

步骤s309:确定第二数据字段未被篡改。

步骤s310:确定第二数据字段被篡改,发出告警指示。

本发明实施例还提供了一种基于区块链的数据检验装置,如图3所示,包括:

收发单元401,用于接收到针对第二数据字段的处理请求后,从数据库中获取所述第二数据字段;所述第二数据字段为根据区块链中的第一信息数据确定并存储于所述存储系统中的数据;

检验单元402,用于利用预先存储的第一树对所述第二数据字段进行检验;所述第一树为根据第一数据字段的哈希值建立的,所述第一数据字段为根据所述第一信息数据确定的数据;

确定单元403,用于当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改。

进一步地,所述检验单元402,具体用于计算每一个第二数据字段的哈希值;将所有第二数据字段的哈希值作为所述第二树的叶子节点的值,建立所述第二树;所述第二树中任一非叶子节点的值是将所述非叶子节点的所有子节点的值进行哈希运算得到的;将所述第二树的根节点的值与所述第一树的根节点的值进行对比;

所述确定单元403,具体用于当所述第二树的根节点的值与所述第一树的根节点的值相同时,确定所述第二数据字段未被篡改。

进一步地,所述收发单元401,还用于获取所述区块链中的第一信息数据;

还包括建立单元404,用于将所述第一信息数据结构化,得到第一数据字段,并将结构化的第一信息数据存储于所述存储系统中;计算每一个第一数据字段的哈希值;将所有第一数据字段的哈希值作为所述第一树的叶子节点的值,建立所述第一树。

进一步地,还包括审查单元405,用于:

从区块链中获取第二信息数据,所述第一信息数据中包含所述第二信息数据;

将所述第二信息数据结构化得到第三数据字段;

根据所述第三数据字段的哈希值建立第三树;

利用所述第三树对所述第一树进行校验。

进一步地,所述审查单元405,还用于:

对所述存储系统的日志进行监控;

监听到所述存储系统的日志中的存储系统修改事件后,解析所述存储系统修改事件,获取所述存储系统修改事件对应的操作的详细信息;

根据所述操作的详细信息和预先设置的检验规则,确定所述操作为非法时,发送告警信息。

基于相同的原理,本发明还提供一种电子设备,如图4所示,包括:

包括处理器501、存储器502、收发机503、总线接口504,其中处理器501、存储器502与收发机503之间通过总线接口504连接;

所述处理器501,用于读取所述存储器502中的程序,执行下列方法:

接收到针对第二数据字段的处理请求后,从存储系统中获取所述第二数据字段;所述第二数据字段为根据区块链中的第一信息数据确定并存储于所述存储系统中的数据;

利用预先存储的第一树对所述第二数据字段进行检验;所述第一树为根据第一数据字段的哈希值建立的,所述第一数据字段为根据所述第一信息数据确定的数据;

当所述第二数据字段的哈希值与所述第一树中对应节点的节点值一致时,确定所述第二数据字段未被篡改。

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

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

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

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

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