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

文档序号:21534038发布日期:2020-07-17 17:26阅读:341来源:国知局
一种基于区块链的数据审计方法及装置与流程

本发明涉及数据保真技术领域,具体涉及一种基于区块链的数据审计方法及装置。



背景技术:

随着大数据技术的不断发展,数据交易行为越来越多的出现在互联网领域中。

目前,申请号为201810877494.x的发明专利申请公开了一种监测数据防作弊方法及验证方法、装置、存储介质、终端,所述监测数据防作弊方法包括如下步骤:获取监测数据,对所述监测数据进行存储,并记录存储路径;计算所述监测数据的映射值,以得到待对比映射数据,所述映射值与所述监测数据一一对应;将所述存储路径和待对比映射数据发送至数据需求方,以使得所述数据需求方根据所述存储路径查找存储的监测数据,并对所述待对比映射数据进行验证;从所述数据需求方接收验证结果,当所述验证结果表明所述待对比映射数据有效时,将所述存储路径和待对比映射数据写入区块链。本发明技术方案可以有效减少数据交易中对监测数据的作弊行为。

但是,现有技术中仅能保证监测数据被检视后无法被篡改,在a公司向b公司交货时候,a公司改动了数据库中的数据,b公司则无法发现数据被改变,则b公司的利益得不到保证。b公司为了避免自己的损失,在数据库交付时要对数据进行审计,如果数据库中的容量很大的话会导致审计过程较为漫长;或者可以交由第三方进行数据审计,但是并不能排出a公司与第三方串通篡改的可能,因此,如何验证数据是否被篡改是亟待解决的技术问题。



技术实现要素:

本发明所要解决的技术问题在于如何提供一种基于区块链的数据审计方法、装置及系统以验证数据是否被篡改。

本发明通过以下技术手段实现解决上述技术问题的:

本发明实施例提供了一种基于区块链的数据审计方法,应用于数据审计端,所述方法包括:

获取针对原始数据的哈希值,其中,所述哈希值为原始数据端针对原始数据生成,并将所述哈希值发送至区块链,以使区块链将该哈希值存储在区块链的最新区块上的;

将所述哈希值作为主键,获取该哈希值在区块链上的存储地址并将该存储地址作为值,生成对应于所述原始数据的键值对;

接收数据验证端发送的数据查询请求,其中,所述查询请求为数据验证端根据对应于原始数据的目标数据,获取并将所述哈希值编码得到的,所述查询请求中包括目标数据的哈希值,且所述目标数据为对应于所述原始数据的数据;

根据所述查询请求,判断是否能够获取与所述查询请求中的哈希值匹配的键值对;

若是,向数据验证端发送第一预设信息,其中,所述第一预设信息包括:与所述查询请求中的哈希值匹配的键值对中的存储地址;

若否,向数据验证端发送第二预设信息,其中,所述预设信息包括:空值。

可选的,所述获取针对原始数据的哈希值,包括:

实时监测区块链上的区块的变化情况,在区块链上新增区块时,从所述区块中获取针对原始数据的哈希值。

可选的,原始数据端在将所述哈希值发送至数据审计端时,获取原始数据端获取原始数据时的时间戳,并将所述时间戳发送至区块链,以使区块链将该哈希值与时间戳存储在区块链的最新区块上。

可选的,所述将所述时间戳发送至区块链步骤,包括:

将哈希值与时间戳进行拼接,得到拼接后的结果;

将拼接后的结果发送至区块链;

所述区块链将该哈希值与时间戳存储在区块链的最新区块上,包括:

区块链将拼接后的结果存储在区块链的最新区块上。

可选的,区块链接收原始数据端发送的针对原始数据的哈希值,将该哈希值存储在区块链的最新区块上。

可选的,区块链在在将该哈希值存储在区块链的最新区块上时,所述方法还包括:

接收原始数据端发送的生成原始数据的哈希值时的时间戳,将所述时间戳与所述哈希值存储在同一个区块中。

可选的,区块链接收原始数据端发送的拼接结果,将拼接后的结果存储在区块链的最新区块上,其中,所述拼接结果为原始数据端将哈希值与时间戳进行拼接后得到的。

本发明实施例提供了一种基于区块链的数据审计装置,应用于数据审计端,所述装置包括:

获取模块,用于获取针对原始数据的哈希值;

生成模块,用于将所述哈希值作为主键,获取该哈希值在区块链上的存储地址并将该存储地址作为值,生成对应于所述原始数据的键值对;

接收模块,用于接收数据验证端发送的数据查询请求,其中,所述查询请求中包括目标数据的哈希值,且所述目标数据为对应于所述原始数据的数据;

判断模块,应用于根据所述查询请求,判断是否能够获取与所述查询请求中的哈希值匹配的键值对;

第一发送模块,用于在所述判断模块的判断结果为是的情况下,向数据验证端发送第一预设信息,其中,所述第一预设信息包括:与所述查询请求中的哈希值匹配的键值对中的存储地址;

第二发送模块,用于在所述判断模块的判断结果为否的情况下,向数据验证端发送第二预设信息,其中,所述预设信息包括:空值。

可选的,所述获取模块,用于:

实时监测区块链上的区块的变化情况,在区块链上新增区块时,从所述区块中获取针对原始数据的哈希值。

可选的,原始数据端在将所述哈希值发送至数据审计端时,获取原始数据端获取原始数据时的时间戳,并将所述时间戳发送至区块链,以使区块链将该哈希值与时间戳存储在区块链的最新区块上。

可选的,原始数据端将哈希值与时间戳进行拼接,得到拼接后的结果;

将拼接后的结果发送至区块链;

所述区块链将该哈希值与时间戳存储在区块链的最新区块上,包括:

区块链将拼接后的结果存储在区块链的最新区块上。

可选的,区块链接收原始数据端发送的针对原始数据的哈希值,将该哈希值存储在区块链的最新区块上。

可选的,区块链在在将该哈希值存储在区块链的最新区块上时,所述方法还包括:

接收原始数据端发送的生成原始数据的哈希值时的时间戳,将所述时间戳与所述哈希值存储在同一个区块中。

可选的,区块链接收原始数据端发送的拼接结果,将拼接后的结果存储在区块链的最新区块上,其中,所述拼接结果为原始数据端将哈希值与时间戳进行拼接后得到的。

本发明的优点在于:

应用本发明实施例,将原始数据的哈希值保存在区块链上,利用区块链的不可篡改性保证原始数据的哈希值的正确性,进而以使进行数据审计的数据审计端根据区块链上存储的哈希值进行与原始数据对应的目标数据的审计,进而可以验证数据是否被篡改。

另一个优点是,由于区块链上只存储了哈希值,没有暴露原始数据的担心,所以整个区块链查询系统是公开的公共平台。而如果存的是原始数据的话,那就无法是公共平台而是私有平台,那么数据购买公司会对平台的公信力产生怀疑,因此,本发明实施例可以在不泄露原始数据的前提下保证数据购买公司能够得到未被篡改的目标数据。

附图说明

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

图2为本发明实施例提供的一种基于区块链的数据审计系统的结构示意图。

具体实施方式

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

实施例1

为了对本发明实施例进行充分说明,下面对本发明实施例的应用场景进行预先说明,内容如下:

a公司在出售数据库或者某个数据之前,将所要出售的数据或者数据库作为原始数据,预先使用原始数据端针对原始数据端中的原始数据,获取所述原始数据的哈希值。原始数据端可以主动获取或者被动接收原始数据,原始数据端使用哈希算法,对原始数据进行哈希处理,得到原始数据的哈希值,其中,哈希算法可以是md5、sha-1、sha256等算法中的一种或组合。

在实际应用中,原始数据可以来源于传感器、工控机等。原始数据端可以为传感器网络的网关设备。传感器、工控机等可以通过有线、wifi、zigbee等通信方式将json格式、字符串格式或是二进制数组格式的原始数据传输给原始数据端。

然后,将所述哈希值发送至区块链网络,区块链网络在接收到原始数据端发送的针对原始数据的哈希值后,区块链中的每个区块节点经过共识认证,在区块链上新生成一个最新区块,

然后,将该哈希值存储在区块链的最新区块上,并使所述数据审计端生成对应于所述原始数据的哈希值的键值对,并根据所述键值对审计对应于所述原始数据的目标数据是否与原始数据一致。区块链可以是公有链、私有链或联盟链。

然后,区块链网络在接收到原始数据的哈希值之后,在区块链上新生成一个最新区块,并将该哈希值存储在区块链的最新区块上,并使所述数据审计端生成对应于所述原始数据的哈希值的键值对,并根据所述键值对审计对应于所述原始数据的目标数据是否与原始数据一致。

进一步的,区块链在收到原始数据的哈希值之后,可以先对区块链上存储的所有的哈希值进行比对,在未比对到与原始数据的哈希值相同的哈希值的情况下,再在区块链上生成一个最新区块。在比对到与原始数据的哈希值相同的哈希值的情况下,将与原始数据的哈希值相同哈希值作为值,将用于存储与原始数据的哈希值相同的哈希值的区块的地址作为主键,并根据所述键与值生成键值对以备b公司进行数据审计。

图1为本发明实施例提供的一种基于区块链的数据审计方法,如图1所示,应用于数据审计端,所述方法包括:

s101:区块链上新增了一个区块之后,区块链网络可以向数据审计端发送“新增区块”的信息,以使数据审计端知晓区块链上被存入了新的哈希值之后,从区块链上的区块中读取新的哈希值以及用于存储该哈希值的区块对应地址。

进一步的,数据审计端可以利用智能合约或者其他技术手段监听区块链上的新的区块中是否被存入了新的哈希值,当数据审计端知晓区块链上被存入了新的哈希值之后,从区块链上的区块中读取新的哈希值以及用于存储该哈希值的区块对应地址,将该区块对应的地址作为值,将所读取的新的哈希值作为主键,即对应于原始数据的哈希值作为值生成对应于原始数据的键值对。

应用本发明上述实施例,数据审计端可以主动监听区块链网络,提高数据审计端工作的实时性。

s102:将该区块对应的地址作为值,将所读取的新的哈希值作为主键,即对应于原始数据的哈希值作为值生成对应于原始数据的键值对,然后将这些键值对存储到本地。通常情况下,数据审计端会建立一个索引表,索引表中存储了前述的键值对,然后在键值对索引表中查询与目标数据的哈希值对应的键值对,进而得到所查询到的哈希值对应的区块地址。键值对的作用就是用于在公司b使用数据验证端进行数据验证时,作为数据审计端进行哈希值查询的依据。

s103:在一段时间的谈判,例如,几个月后b公司购买了a公司的数据库。为了保证b公司购买的数据库仍然是谈判之前a公司宣称的数据库。b公司在需要对收到的目标数据进行验证,以确保目标数据与a公司承诺的原始数据完全一致。b公司使用数据验证端上配置的、与a公司生成原始数据的哈希值时使用的相同的哈希算法,生成目标数据的哈希值。数据验证端将目标数据的哈希值编码到查询请求中,并将该查询请求发送至数据审计端。数据审计端接收数据验证端发送的数据查询请求,其中,所述查询请求中包括目标数据的哈希值,且所述目标数据为对应于所述原始数据的数据。

b公司收到了a公司发来的数据,但是b公司无法确认该数据是否与a公司承诺的原始数据完全一致,因此,本发明实施例中将b公司收到的数据称为目标数据。

b公司使用数据验证端上配置的、与a公司生成原始数据的哈希值时使用的相同的哈希算法,生成目标数据的哈希值。数据验证端将目标数据的哈希值编码到查询请求中,并将该查询请求发送至数据审计端。

s104:数据审计端在接收到b公司使用的数据验证端发来的数据查询请求后,解析该查询请求进而获得查询请求中包含的目标数据的哈希值。数据审计端以目标数据的哈希值为基础,在自身中存储的键值对中进行查找比对,进而可以得到查询请求中包含的目标数据的哈希值,然后以目标数据的哈希值为基准,遍历本地存储的键值对,将每一个键值对中的哈希值与目标数据的哈希值进行比较;进而判断二者是否一致,直至得到与目标数据的哈希值完全一致的哈希值或者遍历完所有的键值对;或者可以遍历区块链上的各个区块,将每一个区块中存储的哈希值与目标数据的哈希值进行比较;进而判断二者是否一致,直至得到与目标数据的哈希值完全一致的哈希值或者遍历完所有的区块。

s105:如果能找到目标数据的哈希值完全一致的哈希值,则说明该区块中存储的哈希值与目标数据的哈希值匹配。将该区块作为目标区块,获取该区块的区块地址,将该区块地址作为第一预设信息发送至数据验证端。

如果上述判断的结果为是,从自身中存储的键值对中获取存储了与目标数据的哈希值相同的哈希值的区块的地址,将该地址作为第一预设信息发送至b公司使用的数据查询端,当然,在实际应用中,第一预设信息可以包括但不仅限于该区块的地址,还可以包括原始数据的数据量、原始数据的生成时间、哈希值的存储到区块链上的时间等,方便用户更加全面的了解原始数据的信息。

s106:如果未能找到目标数据的哈希值完全一致的哈希值,则说明该区块中存储的哈希值与目标数据的哈希值不匹配,则向数据验证端发送第二预设信息,其中,所述预设信息包括:空值。

如果上述判断的结果为否,即数据审计端并未在区块链中查询到与目标数据的哈希值完全一致的哈希值,也就是说目标数据与原始数据并不完全一致,数据审计端向数据验证端返回第二预设信息,在实际应用中,为了方便所述预设信息为空值。当前,在实际应用中,第二预设信息可以为“否”的判断结果,或者“目标数据被篡改”等信息。

需要强调的是,所述数据审计端中存储有对应于目标数据的键值对,且所述键值对包括原始数据的哈希值和该哈希值在区块链上的存储地址,其中,所述原始数据为对应于所述目标数据的数据。

应用本发明实施例,将原始数据的哈希值保存在区块链上,利用区块链的不可篡改性保证原始数据的哈希值的正确性,进而以使进行数据审计的数据审计端根据区块链上存储的哈希值进行与原始数据对应的目标数据的审计,进而可以验证数据是否被篡改。由于区块链的不可篡改特性,还避免了a公司与第三方数据审计单位之间串改数据的可能,进而保证了b公司的利益。

另外,应用本发明实施例6,原始数据端仅将哈希值存储在区块链上,并将原始数据向区块链网络中的各个节点公开,因此,可以保证原始数据的隐私性。

进一步的,区块链网络在接收到原始数据的哈希值以及对应于原始数据的时间戳之后,在区块链上新生成一个最新区块,并将该哈希值以及时间戳存储在区块链的最新区块上。

应用本发明实施例,数据审计端在进行数据审计时,可以根据用户输入的对应于原始数据的时间戳或者输入的时间戳范围在区块链上进行查找,提高查找速度,进而可以提高数据审计速度。

更进一步的,所述将所述时间戳与所述哈希值存储在同一个区块中,包括:接收原始数据端发送的拼接结果,将拼接后的结果存储在区块链的最新区块上,其中,所述拼接结果为原始数据端将哈希值与时间戳进行拼接后得到的。

应用本发明实施例,将哈希值与时间戳拼接后,相对于分别存储在同一个区块中,可以减少一个数据头和一个数据尾,节约区块链上的存储空间。

在本发明实施例1的基础上,原始数据端在生成对应于原始数据的哈希值时,还会获取原始数据端得到该原始数据的时刻对应的时刻值,例如,例如,原始数据端在时间戳值为a的时刻得到的原始数据,则将该时间戳a作为对应于原始数据的时间戳,将该时间戳与对应于原始数据的哈希值均发送给区块链网络,其中,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。

然后,区块链网络在接收到原始数据的哈希值以及对应于原始数据的时间戳之后,在区块链上新生成一个最新区块,并将该哈希值以及时间戳存储在区块链的最新区块上。

数据审计端在进行数据审计时,可以验证区块链上的时间戳与目标数据的生成时间是否一致,进而配合哈希值验证数据是否为原始数据。还可以根据用户输入的对应于获取原始数据的时间戳或者输入的时间戳范围在区块链上进行查找,提高查找速度,进而可以提高数据审计速度。

进一步的,区块链网络在接收到拼接后的结果之后,在区块链上生成新的区块,并将拼接后的结果存储在区块链的最新区块上。

实施例2

图2为本发明实施例提供的一种基于区块链的数据审计系统的结构示意图,如图2所示,与本发明实施例1相对应,本发明实施例2提供了一种基于区块链的数据审计装置,应用于数据审计端,所述装置包括:

获取模块,用于获取针对原始数据的哈希值;

生成模块,用于将所述哈希值作为主键,获取该哈希值在区块链上的存储地址并将该存储地址作为值,生成对应于所述原始数据的键值对;

接收模块,用于接收数据验证端发送的数据查询请求,其中,所述查询请求中包括目标数据的哈希值,且所述目标数据为对应于所述原始数据的数据;

判断模块,应用于根据所述查询请求,判断是否能够获取与所述查询请求中的哈希值匹配的键值对;

第一发送模块,用于在所述判断模块的判断结果为是的情况下,向数据验证端发送第一预设信息,其中,所述第一预设信息包括:与所述查询请求中的哈希值匹配的键值对中的存储地址;

第二发送模块,用于在所述判断模块的判断结果为否的情况下,向数据验证端发送第二预设信息,其中,所述预设信息包括:空值。

应用本发明实施例,将原始数据的哈希值保存在区块链上,利用区块链的不可篡改性保证原始数据的哈希值的正确性,进而在进行数据审计时根据区块链上存储的哈希值进行与原始数据对应的目标数据的审计,进而可以验证数据是否被篡改。

在本发明实施例的一种具体实施方式中,所述获取模块,用于:

实时监测区块链上的区块的变化情况,在区块链上新增区块时,从所述区块中获取针对原始数据的哈希值。

在本发明实施例的一种具体实施方式中,原始数据端在将所述哈希值发送至数据审计端时,获取原始数据端获取原始数据时的时间戳,并将所述时间戳发送至区块链,以使区块链将该哈希值与时间戳存储在区块链的最新区块上。

在本发明实施例的一种具体实施方式中,原始数据端将哈希值与时间戳进行拼接,得到拼接后的结果;

将拼接后的结果发送至区块链;

所述区块链将该哈希值与时间戳存储在区块链的最新区块上,包括:

区块链将拼接后的结果存储在区块链的最新区块上。

在本发明实施例的一种具体实施方式中,区块链接收原始数据端发送的针对原始数据的哈希值,将该哈希值存储在区块链的最新区块上。

在本发明实施例的一种具体实施方式中,区块链在在将该哈希值存储在区块链的最新区块上时,所述方法还包括:

接收原始数据端发送的生成原始数据的哈希值时的时间戳,将所述时间戳与所述哈希值存储在同一个区块中。

在本发明实施例的一种具体实施方式中,区块链接收原始数据端发送的拼接结果,将拼接后的结果存储在区块链的最新区块上,其中,所述拼接结果为原始数据端将哈希值与时间戳进行拼接后得到的。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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