CN112035890A - 一种数据完整性验证方法及装置 - Google Patents
一种数据完整性验证方法及装置 Download PDFInfo
- Publication number
- CN112035890A CN112035890A CN202010920152.9A CN202010920152A CN112035890A CN 112035890 A CN112035890 A CN 112035890A CN 202010920152 A CN202010920152 A CN 202010920152A CN 112035890 A CN112035890 A CN 112035890A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- leaf
- vine
- rattan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种数据完整性验证方法及装置,确定所属数据类型相同的一组待验证数据对应的第一目标主节点。在第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点。根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,确定待验证数据通过完整性验证,否则,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。应用本发明实施例提供的方案进行数据完整性验证,提高了数据完整性验证的效率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据完整性验证方法及装置。
背景技术
当前大量数据都存储在计算机中,但存储有数据的计算机可能会受到网络攻击,使得计算机中存储的数据被篡改,特别是若涉及机密的数据被篡改,会造成更大的损失。因此在从计算机中获取并使用数据,特别是涉及机密的数据时需要验证获取的数据是否与原本存储在计算机中的数据相同,即验证获取的数据的完整性。现有技术中,在存储数据时,除了存储各条数据外,还分别计算每条数据的数字签名,并存储计算得到的数字签名。在此基础上,获取数据后,可以基于已存储的数字签名进行数据完整性验证。具体的,针对所获取到的每条数据,分别根据该条数据与所存储的该条数据的数字签名,对该条数据进行数据完整性验证,获得验证结果。但当获取的数据较多时需要分别对每一条数据进行验证,花费大量的验证时间,数据完整性验证的效率较低。
发明内容
本发明实施例的目的在于提供一种数据完整性验证方法及装置,以提高数据完整性验证的效率。具体技术方案如下:
第一方面,本发明实施例提供了一种数据完整性验证方法,应用于电子设备,所述电子设备以葫芦树结构进行数据存储;所述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应;
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息;
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名;
所述方法包括:
确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点;
根据各个待验证数据的类内序号,在所述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点;
针对每一第一目标藤节点,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
第二方面,本发明实施例提供了一种数据完整性验证装置,应用于电子设备,所述电子设备以葫芦树结构进行数据存储;所述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应;
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息;
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名;
所述装置包括:
第一主节点确定模块,用于确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点;
第一藤节点确定模块,用于根据各个待验证数据的类内序号,在所述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点;
第一数据验证模块,用于针对每一第一目标藤节点,在该第一目标藤节点的待验证数量大于预设待验证数量的情况下,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证或该第一目标藤节点的待验证数量不大于预设待验证数量,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果,其中,所述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法步骤。
本发明实施例有益效果:
本发明的实施例中,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行数据完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的第一种葫芦树的结构示意图;
图2A为本发明实施例提供的第一种数据完整性验证方法的流程示意图;
图2B为本发明实施例提供的第二种数据完整性验证方法的流程示意图;
图3为本发明实施例提供的第二种葫芦树的结构示意图;
图4为本发明实施例提供的第三种葫芦树的结构示意图;
图5为本发明实施例提供的第四种葫芦树的结构示意图;
图6为本发明实施例提供的第一种葫芦树数据添加方法的流程示意图;
图7为本发明实施例提供的第二种葫芦树数据添加方法的流程示意图;
图8为本发明实施例提供的第三种葫芦树数据添加方法的流程示意图;
图9A为本发明实施例提供的第一种数据完整性验证装置的结构示意图;
图9B为本发明实施例提供的第二种数据完整性验证装置的结构示意图;
图10为本发明实施例提供的第一种葫芦树数据添加装置的结构示意图;
图11为本发明实施例提供的第二种葫芦树数据添加装置的结构示意图;
图12为本发明实施例提供的第三种葫芦树数据添加装置的结构示意图;
图13为本发明实施例中提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于现有技术中数据完整性验证的效率较低,为解决这一问题,本发明实施例提供了一种数据完整性验证方法及装置。下面通过具体的实施例对本发明实施例提供的数据完整性验证方法及装置进行说明。
参见图1,本发明实施例提供了第一种葫芦树的结构示意图,应用于电子设备,上述电子设备以葫芦树结构进行数据存储。
上述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应。其中,上述主节点中可以存储有主节点对应的数据类型的名称、编号或其他标识。
其中,上述数据存储空间可以为数据库、文件等。
参见图1,上述葫芦树中包括主节点1与主节点2,主节点1链接藤节点1-藤节点2,主节点2链接藤节点3。
藤节点1链接叶子节点1-叶子节点3,藤节点2链接叶子节点4,藤节点3链接叶子节点5-叶子节点7。
具体的,上述主节点可以记录有该主节点链接的藤节点的地址,各个藤节点的地址可以以数组的形式存储,藤节点可以记录有该藤节点链接的叶子节点的地址。例如,主节点1中记录有藤节点1和藤节点2的地址,藤节点1记录有叶子节点1-叶子节点3的地址。
另外,上述主节点、藤节点、叶子节点可以分别作为链表中的节点,存储在链表中,链表中各个节点之间的链接关系与对应的主节点、藤节点、叶子节点之间的链接关系相同。
其中,每条数据中可以包含多种信息,可以在上述多类信息中预设一种或多种信息作为所存储数据的分类依据。
例如,上述数据为计算机日志文件信息数据,则每条数据可以包含生成上述数据的设备标签、生成上述数据的时间、上述数据所属的日志类别、上述日志文件的具体内容等,其中,上述生成上述数据的设备标签可以为设备的型号等,上述数据所属的日志类别可以为:更新替代信息类别、应用程序崩溃信息类别、登录认证信息类别、设备内核产生的信息类别,设备系统信息类别等。
另外,可以根据所存储的数据的数据格式对所存储的数据进行分类,如在上述数据为视频数据的情况下,可以按照视频的数据格式mp4、avi、wmv、mkv等对所存储的数据进行分类,在上述数据为图片数据的情况下,可以按照图片的数据格式png、jpg等对所存储的数据进行分类。
又一个例子中,若上述数据为来自网络数据包的网络数据,则上述分类依据可以为生成网络数据包时所依据的网络协议,如可以将网络数据划分为对应TCP(TransmissionControl Protocol,传输控制协议)的网络数据,对应UDP(User Datagram Protocol,用户数据报协议)的网络数据,对应ICMP(Internet Control Message Protocol,因特网控制报文协议)的网络数据等类别。
具体的,可以将生成上述数据的设备标签作为数据的分类依据,则由设备A生成的各条数据所属数据类别相同、设备B生成的各条数据所属数据类别相同,依次类推。
也可以将上述数据所属的日志类别作为数据的分类依据,则表示更新替代信息的各条数据所属数据类别相同,表示应用程序崩溃信息的各条数据所属数据类别相同,表示登录认证信息的各条数据所属数据类别相同,表示设备内核产生的信息的各条数据所属数据类别相同,表示设备系统信息的各条数据所属数据类别相同。另外,也可以将生成上述数据的设备标签与数据所属的日志类别共同作为数据的分类依据。
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息。
在本方案实施例中,每一主节点与数据存储空间中所存储数据的一种数据类型相对应,每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,也就是说同一主节点链接有一个或多个藤节点,上述藤节点链接的叶子节点对应的数据的数据类型相同,即相同数据类型的数据对应的叶子节点在葫芦树中逻辑存储位置相邻。而在数据存储空间中,所属数据类型相同的数据的逻辑存储位置未必相邻。
由于在数据存储空间中,相同数据类型的数据的逻辑存储位置未必相邻,也就是说在数据存储空间中相同数据类型的数据的逻辑存储位置之间可能存储有大量其他数据类型的数据,可以认为相同类型的数据在数据存储空间中逻辑存储距离较远。而在本发明实施例提供的方案中葫芦树内同一主节点链接一个或多个藤节点,上述藤节点所链接的叶子节点对应的数据的数据类型相同,因此可以认为相同数据类型的数据在葫芦树中的逻辑存储距离较近,这提高了在数据存储空间中逻辑存储距离较远的数据对应的叶子节点在葫芦树中链接于同一个藤节点下的概率。由于在进行数据完整性验证的过程中,所获取的待验证数据往往具有一定的关联性,即所获取的待验证数据往往集中于部分数据类型,又因为对于每种数据类型的数据,本发明实施例的葫芦树中该数据类型数据之间的逻辑存储距离较近,因此该数据类型的数据对应的叶子节点链接于同一藤节点的概率更高,在进行数据完整性验证时可以共同进行签名验证的概率更高,进行一次签名验证所能验证的待验证数据更多,从而可以减少进行数据完整性验证所需的验证次数,提高数据完整性验证的效率。
其中,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息。
例如,参见图1,由于叶子节点1-叶子节点3通过藤节点1链接于主节点1,叶子节点4通过藤节点2同样链接于主节点1,因此叶子节点1-叶子节点4对应的数据所属的数据类型相同。
具体的,上述数据在所属数据类型内的类内序号可以以自然数的形式表示,各个数据的类内序号的数值按照各条数据在数据存储空间中的逻辑存储位置顺序依次增大,例如,叶子节点1-叶子节点3对应的数据的类内序号分别为1-3。另外,上述类内序号也可以以其他形式表示。
藤节点可以记录该藤节点所链接的各个叶子节点对应的数据的类内序号,作为表征该藤节点所链接的各个叶子节点对应的数据的类内序号的信息,也可以记录该藤节点所链接的叶子节点对应的数据的最小类内序号与最大类内序号,作为表征该藤节点所链接的各个叶子节点对应的数据的类内序号的信息。与记录该藤节点所链接的各个叶子节点对应的数据的类内序号相比,只记录该藤节点所链接的叶子节点对应的数据的最小类内序号与最大类内序号的情况下,所记录的类内序号较少,占用的存储空间较小。
例如,藤节点1可以记录有叶子节点1-叶子节点3对应的数据的类内序号,也可以只记录叶子节点1和叶子节点3对应的数据的类内序号。
另外,可以使用RSA算法、DSA(Digital Signature Algorithm,数字签名算法)、ECDSA(Elliptic curve Digital Signature Algorithm,椭圆曲线数字签名算法)等方法计算该藤节点链接的所有叶子节点的数据的数字签名。
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名。
由于每一叶子节点中存储有该叶子节点对应的数据的类内序号,因此在对待验证数据进行数据完整性验证时,确定各个待验证数据对应的第一目标藤节点之后,可以获取到第一目标藤节点所链接的所有叶子节点对应的数据的类内序号。再结合链接该第一目标藤节点的主节点对应的数据类型,便可以从数据存储空间中查找到除待验证数据之外的非待验证数据,用于进行数据完整性验证。
另外,每个叶子节点也可以记录有该叶子节点对应的数据,主节点可以记录有该主节点链接的藤节点所链接的叶子节点的总数。
在每个叶子节点中记录有该节点对应的数据的情况下,在对待验证数据进行数据完整性验证时,确定各个待验证数据对应的第一目标藤节点之后,第一目标藤节点所链接的所有叶子节点对应的数据中,除待验证数据之外的数据可以直接从对应的叶子节点中获取,而不需要再从数据存储空间中查找获取,因此节省了在数据存储空间中查找数据的时间,提高了数据完整性验证的效率。
参见图2A,本发明实施例提供了第一种数据完整性验证方法的流程示意图,上述方法包括:
S201:确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点。
由于每一主节点对应一种数据类型,因此可以根据一组待验证数据所属的数据类型确定待验证数据对应的主节点。
具体的,上述待验证数据可以为从上述数据存储空间中查找得到的数据。
其中,一组待验证数据的数量大于1,一组待验证数据的数量可以为预设数量,如20条、30条等,也可以为所属数据类型相同的待验证数据的总数。
S202:根据各个待验证数据的类内序号,在上述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点。
具体的,每一藤节点可以链接多个叶子节点,每一叶子节点对应一条数据存储空间中存储的数据,因此可以认为每一藤节点对应多条数据存储空间中存储的数据,由于一组待验证数据中包含多条待验证数据,因此一组待验证数据中的多条数据可能对应同一藤节点,一组待验证数据中的不同数据可能对应不同的藤节点。
例如,参见图1,上述第一目标主节点为主节点1,叶子节点1-叶子节点4对应的数据的类内序号依次为1-4,若待验证数据的类内序号分别为2和3,则确定上述第一目标藤节点为藤节点1。
S203:针对每一第一目标藤节点,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
由于待验证藤数字签名为第一目标藤节点所链接的所有叶子节点对应的数据的数字签名,第一目标藤节点所链接的叶子节点中包含对应待验证数据的叶子节点,因此若该第一目标藤节点所链接的所有叶子节点对应的数据均通过签名验证,则证明第一目标藤节点所链接的所有叶子节点对应的数据与数据被存放到上述葫芦树中时相同,便可以证明第一目标藤节点所链接的叶子节点对应的数据中的待验证数据与被存放到上述葫芦树中时相同,说明待验证数据并未被篡改,仅通过一次签名验证便可以证明待验证数据均通过完整性验证。
相反的,若未通过验证,则证明第一目标藤节点所链接的叶子节点对应的数据中存在被篡改的数据,被篡改的数据可能是待验证数据,也可能是第一目标藤节点所链接的叶子节点对应的待验证数据之外的其他数据。因此在未通过验证的情况下,需要进一步确定待验证数据是否被篡改以及具体是哪些待验证数据被篡改,因此需要进一步的针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据进行签名验证,确定该待验证数据是否被篡改。
具体的,进行签名验证的方法与计算得到数字签名的方法相对应。
例如,若使用RSA算法计算得到第一目标藤节点的藤数字签名,则同样使用RSA算法对第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证。
若使用DSA算法计算得到第一目标藤节点的藤数字签名,则同样使用DSA算法处理对第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证。依次类推,由于计算数字签名与进行数据完整性验证的方法为现有技术,在此不再赘述。
例如,参见图1,在上述待验证数据对应的叶子节点为叶子节点2与叶子节点3的情况下,上述第一目标藤节点为藤节点1,对藤节点1所链接的叶子节点1-叶子节点3对应的数据共同进行一次签名验证,若验证通过则叶子节点2与叶子节点3对应的待验证数据均通过完整性验证。否则,再分别对叶子节点2与叶子节点3对应的待验证数据进行签名验证,分别确定叶子节点2与叶子节点3对应的待验证数据是否通过完整性验证。
另外,上述藤节点中还可以记录有验证结果标识,用于表示该藤节点所链接的叶子节点对应的数据中是否存在未通过完整性验证的数据。则在确定待验证数据未通过完整性验证的情况下,将验证结果标识更新为表示藤节点所链接的叶子节点对应的数据中存在未通过完整性验证的数据的标识。
本发明的实施例中,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
参见图2B,本发明实施例提供了第二种数据完整性验证方法的流程示意图,与前述图2A所示的实施例相比,上述方法还包括:
S204:针对每一第一目标藤节点,判断该第一目标藤节点的待验证数量是否大于预设待验证数量,若为是,则执行上述步骤S203。
其中,上述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量。
上述预设待验证数量可以与上述第一目标藤节点所链接的叶子节点对应的数据的数量相对应,例如,在上述第一目标藤节点所链接的叶子节点对应的数据的数量为0-100的情况下,上述预设待验证数量可以为1,在上述第一目标藤节点所链接的叶子节点对应的数据的数量为100-200的情况下,上述预设待验证数量可以为2。
上述预设待验证数量也可以为固定数量,如1、2或3等。
S205:在上述步骤S204的判断结果为否的情况下,针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
由以上可见,只有在第一目标藤节点所链接的叶子节点对应的数据中待验证数据量较大的情况下,才根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,否则只分别对各条待验证数据单独进行签名验证。由于对第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证的情况下,需要在数据存储空间中获取该藤节点所链接的所有叶子节点对应的数据。但在第一目标藤节点所链接的叶子节点对应的待验证数据的数量较少的情况下,会在数据存储空间中获取大量不需要验证的数据,进行多次不必要的数据查找与获取操作,消耗较多的获取数据的时间。但此过程中只进行一次签名验证操作,因此在待验证数据量较小的情况下,查找并获取数据的过程是影响数据完整性验证过程效率的主要因素。所以,在待验证数据量较小的情况下,可以仅获取待验证数据,对待验证数据分别进行签名验证,从而节省从数据存储空间中获取大量非待验证数据所需要的时间,提高数据完整性验证过程的效率。相反的,在待验证数据量较大的情况下,若对每一待验证数据分别进行签名验证,则需要从数据存储空间中获取到各个待验证数据,并对各个待验证数据分别进行签名验证,由于单次签名验证所花费的时间大于在数据存储空间中单次查找并获取数据所花费的时间,因此在待验证数据量较大的情况下,进行签名验证的过程是影响数据完整性验证过程效率的主要因素。所以在待验证数据量较大的情况下,先对该第一目标藤节点所链接的所有叶子节点对应的数据进行一次签名验证,若签名验证未通过才分别对待验证数据进行签名验证。由于第一目标藤节点所链接的所有叶子节点对应的数据中包含多个待验证数据,因此对于多个待验证数据仅需要进行一次签名验证,从而可以降低签名验证过程的次数,降低签名验证过程所花费的时间,提高数据完整性验证过程的效率。
参见图3,提供了第二种葫芦树的结构示意图,与前述图1所示的实施例相比,每一藤节点所链接的叶子节点中包括:直连叶子节点与间连叶子节点,上述直连叶子节点为:该藤节点直接链接的叶子节点,上述间连叶子节点为:通过其他叶子节点与该藤节点链接的叶子节点,上述直连叶子节点、间连叶子节点按照叶子节点对应的数据的类内序号的顺序依次串行链接。
其中,叶子节点1为藤节点1的直连叶子节点,叶子节点2与叶子节点3为藤节点1的间连叶子节点,叶子节点4为藤节点2的直连叶子节点,叶子节点5为藤节点3的直连叶子节点,叶子节点6与叶子节点7为藤节点3的间连叶子节点。
叶子节点1-叶子节点3对应的数据的类内序号依次为1-3,因此叶子节点1-3按照对应的数据的类内序号依次串行链接。
参见图4,提供了第三种葫芦树的结构示意图,与前述图1所示的实施例相比,按照各个藤节点所链接的叶子节点对应的数据的类内序号的顺序,每一主节点所链接的藤节点依次串行链接。
其中,由于每一藤节点所链接的叶子节点对应的数据的类内序号连续,因此每一藤节点所链接的叶子节点对应的数据的类内序号的最大值与下一藤节点所链接的叶子节点对应的数据的类内序号的最小值相邻,其中,下一藤节点为按照串行链接顺序该藤节点所链接的下一个藤节点。
具体的,每一藤节点可以记录有下一藤节点的地址。
例如,参见图4,藤节点1链接藤节点2,藤节点1所链接的叶子节点对应的数据的类内序号为1-3,藤节点2所链接的叶子节点对应的数据的类内序号为4,则藤节点1所链接的叶子节点对应的数据的类内序号的最大值3与藤节点2所链接的叶子节点对应的数据的类内序号的最小值4相邻。
另外,上述藤节点之间链接可以为双向链接,即每一藤节点链接下一藤节点的情况下,下一藤节点同样链接该藤节点。主节点直接链接的藤节点链接主节点。
例如,在图4所示的藤节点1链接藤节点2之外,藤节点2同样链接藤节点1,藤节点1连接主节点1。
具体的,在葫芦树的结构为图4所示的结构的情况下,由于每一藤节点所链接的叶子节点对应的数据的类内序号连续,且每一藤节点所链接的叶子节点对应的数据的类内序号的最大值与下一藤节点所链接的叶子节点对应的数据的类内序号的最小值相邻,因此在每一藤节点所能链接的叶子节点的最大数量相同的情况下,可以使用待验证数据的类内序号除以藤节点的最大数量向上取整,获得链接该待验证数据对应的叶子节点的藤节点在第一目标主节点所链接的藤节点中的排列次序,从而确定该待验证数据对应的叶子节点链接于的第一目标藤节点。
参见图5,提供了第四种葫芦树的结构示意图,与前述图1所示的实施例相比,每一藤节点所链接的最后一个间连叶子节点链接该藤节点的关联藤节点。
其中,每一藤节点的关联藤节点与该藤节点链接于同一主节点、且该藤节点的最后一个间连叶子节点所对应数据的类内序号与关联藤节点链接的直连叶子节点所对应数据的类内序号相邻。
由于针对每一藤节点,该藤节点通过其他叶子节点与最后一个间连叶子节点链接,最后一个间连叶子节点与关联藤节点链接,因此可以认为该藤节点通过叶子节点与间连叶子节点间接链接。
例如,参见图5,藤节点1所链接的最后一个间连叶子节点3链接藤节点2。藤节点1最后的一个间连叶子节点的叶子节点3所对应的数据的类内序号3,与藤节点2链接的直连叶子节点4所对应数据的类内序号4相邻。
另外,上述藤节点之间链接可以为双向链接,即每一藤节点通过所链接的叶子节点链接下一藤节点的情况下,下一藤节点同样链接该藤节点。主节点直接链接的藤节点链接主节点。
例如,在图5所示的藤节点1通过所链接的叶子节点链接藤节点2之外,藤节点2同样链接藤节点1,藤节点1连接主节点1。
本发明的一个实施例中,上述藤节点还记录有:能够链接的叶子节点的最大数量、已链接的叶子节点的节点数量。
具体的,不同主节点所链接的藤节点的最大数量可以相同,也可以不同,例如,每一主节点所链接的藤节点的最大数量可以均为20,也可以主节点1所链接的各个藤节点的最大数量为20,主节点2所链接的各个藤节点的最大数量为30。
另外,可以根据预计的数据存储空间中将要存储的数据的最大数量、数据存储空间中数据所属数据类型的数量估算每一数据类型对应的数据的数量,根据每一数据类型对应的数据的数量确定每一藤节点的最大数量。
参见图6,本发明实施例提供了第一种葫芦树数据添加方法的流程示意图。上述方法包括:
S601:根据所属数据类型相同的一组待添加数据所属的数据类型,确定待添加数据待添加到的第二目标主节点。
具体的,由于同一主节点所链接的藤节点所链接的叶子节点对应的数据所属的数据类型相同,因此,所属数据类型相同的待添加数据对应的叶子节点将被添加到同一主节点下,可以将所属数据类型相同的待添加数据作为一组数据,将一组待添加数据对应的叶子节点共同添加到葫芦树中。
另外,上述一组待添加数据中可以包含预设数量个待添加数据,若所属数据类型相同的待添加数据的数量未达到上述预设数量,则可以将待添加数据存放在队列、数组或其他数据组合中,直到所属数据类型相同的待添加数据的数量达到上述预设数量,再执行上述步骤S601。例如,上述预设数量可以为20、30等。
S602:在存在第二目标藤节点的情况下,创建第一数量个链接于上述第二目标藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号存储到该叶子节点中,将第二目标藤节点的节点数量增加上述第一数量,将上述第二目标藤节点的藤数字签名更新为上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名。
其中,上述第二目标藤节点为:上述第二目标主节点所链接的、节点数量小于最大数量、且已链接叶子节点所对应数据的最大类内序号与待添加数据的最小类内序号相邻的藤节点。上述第一数量为:第二数量和第三数量的最小值,第二数量为待添加数据的数量,第三数量为:藤节点的最大数量与节点数量的差值。
具体的,第二目标藤节点的节点数量小于最大数量,说明上述第二目标藤节点已链接的叶子节点的数量还未达到最大数量,第二目标藤节点还可以链接其他叶子节点。
由于每个藤节点链接的叶子节点对应数据在所属数据类型内的类内序号连续,因此所创建的叶子节点对应的待添加数据的类内序号也应该与第二目标藤节点原本链接的叶子节点对应的数据的类内序号连续,而待添加数据为新添加到数据存储空间中的数据,类内序号比原本位于数据存储空间中的数据的类内序号大,因此第二目标藤节点已链接叶子节点所对应数据的最大类内序号需要与待添加数据的最小类内序号相邻。
另外,由于第三数量为上述第二目标藤节点的最大数量与节点数量之间的差值,也就是第二目标藤节点能够链接的新的叶子节点的数量,因此若第二数量小于等于第三数量,说明第二目标藤节点能够链接所有待添加数据对应的叶子节点,则所创建的、链接于第二目标藤节点的叶子节点的第一数量为待添加数据的数量。
相反的,若第二数量大于第三数量,则说明第二目标藤节点无法链接所有待添加数据对应的叶子节点,则所创建的、链接与第二目标藤节点的叶子节点的第一数量为最大数量与节点数量之间的差值,创建第一数量个链接于第二目标藤节点的叶子节点之后,第二目标藤节点的节点数量等于最大数量,第二目标藤节点无法再链接其他叶子节点。
另外,上述藤节点中还可以记录有满额标志,上述满额标志用于表示该藤节点的节点数量是否小于最大数量,因此可以通过确定上述藤节点的满额标志确定该藤节点的节点数量是否小于最大数量。上述满额标志的取值可以为1与0,满额标志为1表示该藤节点的节点数量小于最大数量,满额标志为0表示该藤节点的节点数量不小于最大数量,上述满额标志的取值还可以通过其他形式表示。
S603:在不存在上述第二目标藤节点或在创建第一数量个叶子节点后第四数量大于0的情况下,根据未创建对应的叶子节点的待添加数据的数量和藤节点链接叶子节点的最大数量,创建链接于上述第二目标主节点的新藤节点,并创建链接于新藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号记录到该叶子节点中,将上述新藤节点所链接的所有叶子节点对应的数据的数字签名、上述新藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号和上述新藤节点所链接的叶子节点的数量记录到上述新藤节点中。
上述第四数量为:待添加数据的数量与上述第一数量的差。
具体的,不存在上述第二目标藤节点说明上述第二目标主节点所链接的、已链接叶子节点所对应数据的最大类内序号与待添加数据的最小类内序号相邻的藤节点已经无法再链接其他叶子节点,因此需要创建新的藤节点链接对应待添加数据的叶子节点。
在创建第一数量个叶子节点后第四数量大于0,说明在创建第一数量个叶子节点后还存在未创建对应的叶子节点的待添加数据,因此需要创建新的藤节点,以链接对应还未创建对应的叶子节点的待添加数据的叶子节点。
本发明的一个实施例中,在各个藤节点的最大数量相同的情况下,可以将未创建对应的叶子节点的待添加数据的数量除以藤节点链接叶子节点的最大数量,并将计算的到的结果向上取整,得到需要创建的新藤节点的第五数量,并创建链接于上述第二目标主节点的第五数量个新藤节点,再创建链接于新藤节点的叶子节点。
本发明的另一个实施例中,可以创建一个链接于上述第二目标主节点的新藤节点,再创建链接于该新藤节点的叶子节点,若创建链接于该新藤节点的叶子节点,且该新藤节点所链接的叶子节点的数量等于该新藤节点的最大数量后,还存在未创建对应的叶子节点的待添加数据,则再创建下一个新藤节点,依次类推直至为各个待添加数据均创建对应的叶子节点。
由以上可见,由于上述葫芦树中每一主节点所链接的藤节点所链接的叶子节点对应的数据所属的数据类型相同,因此在向葫芦树中添加数据时,所属数据类型相同的待添加数据对应的叶子节点会被添加到同一主节点下,以一组所属数据类型相同的待添加数据为单位,向葫芦树中添加数据,对于对应的叶子节点链接到同一藤节点的待添加数据,只需要根据上述待添加数据进行一次藤数字签名计算,与分别将每一待添加数据分别添加到葫芦树中相比,降低了计算藤数字签名的次数,提高了向葫芦树中添加数据的效率。
本发明的一个实施例中,与前述图6所示的实施例相对应,上述第二目标藤节点为:上述第二目标主节点所链接的最后一个、且最大数量大于节点数量的藤节点。
所创建的链接于第二目标藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且第一叶子节点与第二叶子节点链接。上述第一叶子节点为:所创建叶子节点中对应数据的类内序号最小的叶子节点,第二叶子节点为:创建叶子节点前上述第二目标藤节点链接的最后一个叶子节点。
针对每一新藤节点,所创建的链接于该新藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且该藤节点与各个叶子节点中对应的数据的类内序号最小的叶子节点链接,且该新藤节点与其上一藤节点所链接的最后一个叶子节点链接,该新藤节点所链接叶子节点对应数据的类内序号与上一藤节点所链接叶子节点对应数据的类内序号连续。
因此,每一藤节点所链接的叶子节点之间按照对应的数据的类内序号顺序串行链接,该藤节点与其上一藤节点所链接的最后一个叶子节点链接,形成的葫芦树的结构与前述图5所示的葫芦树的结构相同。
另外,每一藤节点可以直接链接该藤节点所链接的最后一个叶子节点,因此确定第二目标藤节点后可以直接确定第二目标藤节点所链接的最后一个叶子节点。
由以上可见,本发明实施例中各个藤节点之间通过叶子节点串行链接,每一藤节点所链接的叶子节点之间同样串行链接,新创建的叶子节点与藤节点均是链接于第二目标主节点所链接的最后一个藤节点所链接的最后一个叶子节点,因此减少了确定新创建的藤节点与叶子节点所链接的节点所需的时间,提高了将数据添加到葫芦树中的效率。
参见图7,本发明实施例提供了第二种葫芦树数据添加方法的流程示意图,与前述图6所示的实施例相比,上述步骤S602可以通过以下步骤S602A-S602C实现。
S602A:在存在第二目标藤节点的情况下,创建第一数量个链接于上述第二目标藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号存储到该叶子节点中,将第二目标藤节点的节点数量增加上述第一数量,根据上述第二目标藤节点的原始数据与第二目标藤节点所记录的藤数字签名,对上述原始数据进行签名验证。
上述原始数据为:上述第二目标藤节点所链接的、除所创建的叶子节点之外的各个叶子节点对应的数据。
具体的,由于在创建第一数量个链接于上述第二目标藤节点的叶子节点后,还未更新上述第二目标藤节点记录的藤数字签名,因此上述第二目标藤节点记录的藤数字签名是上述原始数据对应的数字签名。
因此若根据上述第二目标藤节点的原始数据与第二目标藤节点所记录的藤数字签名,对上述原始数据进行签名验证确定上述原始数据通过完整性验证,则上述原始数据并未被篡改,否则,上述原始数据被篡改。
S602B:在上述步骤S602A确定上述原始数据通过验证的情况下,将上述第二目标藤节点的藤数字签名更新为上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名。
由于上述步骤S602A确定上述原始数据通过验证,说明上述原始数据并未被篡改。上述第二目标藤节点所链接的所有叶子节点包含待添加数据与原始数据对应的叶子节点,共同计算未被篡改的原始数据与待添加数据的数字签名,能够得到未被篡改的数据对应的数字签名。
S602C:在上述步骤S602A确定上述原始数据未通过验证的情况下,计算上述第二目标藤节点的所有新添加数据的数字签名,将上述第二目标藤节点的藤数字签名更新为计算得到的数字签名。
其中,上述新添加数据为:上述第二目标藤节点所链接的各个新创建的叶子节点对应的数据。
由于上述步骤S602A确定上述原始数据未通过验证,说明上述原始数据中存在被篡改的数据,若共同计算原始数据与新添加数据的数字签名,则计算得到的数字签名受到被篡改的错误数据的影响。因此在上述原始数据中存在被篡改的数据的情况下,只计算所有新添加数据的数字签名,并将第二目标藤节点的数字签名更新为计算得到的所有新添加数据的数字签名,从而使得更新后的第二目标藤节点的数字签名不受被篡改的原始数据的影响。
另外,若原始数据中存在被篡改的数据,可以记录原始数据对应的所有叶子节点的所记录的信息,并将上述第二目标藤节点链接到类内序号最小的新添加数据对应的叶子节点。使得根据上述第二目标藤节点能够直接确定新添加数据对应的叶子节点,相当于对原始数据进行了隔离。
在需要对第二目标藤节点链接的叶子节点对应的数据进行完整性验证的情况下,由于原始数据被隔离,并且第二目标藤节点的数字签名已经被更新为所有新添加数据的数字签名,因此在进行数据完整性验证的过程中不会考虑原始数据,可以直接对被隔离的原始数据之外的其他数据进行完整性验证。所以原始数据中包含的被篡改的数据不会对其他数据的完整性验证造成影响,提高了本发明实施例方案的健壮性。
由以上可见,在更新上述第二目标藤节点的藤数字签名的过程中,先对原始数据进行数据完整性验证,确定原始数据并未被篡改,才将第二目标藤节点的藤数字签名更新为第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,否则,将第二目标节点的藤数字签名更新为所有新添加数据的数字签名。从而使得第二目标藤节点的藤数字签名是根据未被篡改的数据计算得到的,在后续根据第二目标藤节点的藤数字签名进行数据完整性验证的过程中,可以确保验证结果始终是根据未受到篡改的数据的藤数字签名得到的,保证了验证结果的可靠性。
参见图8,本发明实施例提供了第三种葫芦树数据添加方法的流程示意图,与前述图7所示的实施例相比,在上述步骤S602C之后,还包括S602D。
S602D:在上述原始数据中包含的待修正数据被修正后,重新计算上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将上述第二目标藤节点的数字签名更新为计算得到的数字签名。
其中,上述待修正数据中包含所有未通过签名验证的原始数据。
上述未通过签名验证的原始数据为:根据上述原始数据与上述原始数据对应的叶子节点记录的叶子签名,对上述原始数据进行的签名验证的结果为未通过验证的原始数据。
具体的,可以将所有未通过验证的数据作为待修正数据,也可以直接将所有原始数据作为待修正数据。
在上述待修正数据被修正后,上述待修正数据被修正为未被篡改的准确数据,因此重新计算得到的上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名是根据未被篡改的数据计算得到的数字签名,因此可以将上述第二目标藤节点的数字签名更新为计算得到的数字签名。
另外,在原始数据中存在被篡改的数据时,若记录了原始数据对应的所有叶子节点的所记录的信息,并将上述第二目标藤节点链接到了类内序号最小的新添加数据对应的叶子节点。则在原始数据中被篡改的数据被修复之后,可以根据所记录的原始数据对应的所有叶子节点的信息,将类内序号最小的原始数据对应的叶子节点链接到上述第二目标藤节点,并将类内序号最小的新添加数据对应的叶子节点链接到类内序号最大的原始数据对应的叶子节点,从而将原始数据对应的叶子节点重新添加到葫芦树中。
由以上可见,在上述待修正叶子节点对应的数据被修正后,重新计算上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将上述第二目标藤节点的数字签名更新为计算得到的数字签名,可以使得上述第二目标藤节点的数字签名能够重新表示上述第二目标藤节点所链接的所有叶子节点对应的数据。
与前述数据完整性验证方法相对应,本发明实施例还提供了一种数据完整性验证装置。
参见图9A,本发明实施例提供了第一种数据完整性验证装置的结构示意图,应用于电子设备,所述电子设备以葫芦树结构进行数据存储;所述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应;
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息;
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名;
所述装置包括:
第一主节点确定模块901,用于确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点;
第一藤节点确定模块902,用于根据各个待验证数据的类内序号,在所述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点;
第一数据验证模块903,用于针对每一第一目标藤节点,在该第一目标藤节点的待验证数量大于预设待验证数量的情况下,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证或该第一目标藤节点的待验证数量不大于预设待验证数量,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果,其中,所述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量。
本发明的实施例中,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行数据完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
参见图9B,本发明实施例提供了第二种数据完整性验证装置的结构示意图,与前述图9A所示的实施例相比,所述装置还包括:
数量判断模块904,用于针对每一第一目标藤节点,判断该第一目标藤节点的待验证数量是否大于预设待验证数量,其中,所述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量;若为是,则触发执行所述第一数据验证模块903;
第二数据验证模块905,用于在所述数量判断模块904的判断结果为否的情况下,针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
由以上可见,只有在第一目标藤节点所链接的叶子节点对应的数据中待验证数据量较大的情况下,才根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,否则只分别对各条待验证数据单独进行签名验证。由于对第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证的情况下,需要在数据存储空间中获取该藤节点所链接的所有叶子节点对应的数据。但在第一目标藤节点所链接的叶子节点对应的待验证数据的数量较少的情况下,会在数据存储空间中获取大量不需要验证的数据,进行多次不必要的数据查找与获取操作,消耗较多的获取数据的时间。但此过程中只进行一次签名验证操作,因此在待验证数据量较小的情况下,查找并获取数据的过程是影响数据完整性验证过程效率的主要因素。所以,在待验证数据量较小的情况下,可以仅获取待验证数据,对待验证数据分别进行签名验证,从而节省从数据存储空间中获取大量非待验证数据所需要的时间,提高数据完整性验证过程的效率。相反的,在待验证数据量较大的情况下,若对每一待验证数据分别进行签名验证,则需要从数据存储空间中获取到各个待验证数据,并对各个待验证数据分别进行签名验证,由于单次签名验证所花费的时间大于在数据存储空间中单次查找并获取数据所花费的时间,因此在待验证数据量较大的情况下,进行签名验证的过程是影响数据完整性验证过程效率的主要因素。所以在待验证数据量较大的情况下,先对该第一目标藤节点所链接的所有叶子节点对应的数据进行一次签名验证,若签名验证未通过才分别对待验证数据进行签名验证。由于第一目标藤节点所链接的所有叶子节点对应的数据中可能包含多个待验证数据,因此对于多个待验证数据仅需要进行一次签名验证,从而可以降低签名验证过程的次数,降低签名验证过程所花费的时间,提高数据完整性验证过程的效率。
本发明的一个实施例中,每一藤节点所链接的叶子节点中包括:直连叶子节点与间连叶子节点,所述直连叶子节点为:该藤节点直接链接的叶子节点,所述间连叶子节点为:通过其他叶子节点与该藤节点链接的叶子节点,所述直连叶子节点、间连叶子节点按照叶子节点对应的数据的类内序号的顺序依次串行链接。
本发明的一个实施例中,按照各个藤节点所链接的叶子节点对应的数据的类内序号的顺序,每一主节点所链接的藤节点依次串行链接;
和/或
每一藤节点所链接的最后一个间连叶子节点链接该藤节点的关联藤节点,其中,每一藤节点的关联藤节点与该藤节点链接于同一主节点、且该藤节点的最后一个间连叶子节点所对应数据的类内序号与关联藤节点链接的直连叶子节点所对应数据的类内序号相邻。
参见图10,本发明实施例提供了第一种葫芦树数据添加装置的结构示意图,所述藤节点还记录有:能够链接的叶子节点的最大数量、已链接的叶子节点的节点数量;
所述装置还包括:
第二主节点确定模块1001,用于根据所属数据类型相同的一组待添加数据所属的数据类型,确定待添加数据待添加到的第二目标主节点;
第一数据插入模块1002,用于在存在第二目标藤节点的情况下,创建第一数量个链接于所述第二目标藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号存储到该叶子节点中,将所述第二目标藤节点的藤数字签名更新为所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将第二目标藤节点的节点数量增加所述第一数量,其中,所述第二目标藤节点为:所述第二目标主节点所链接的、节点数量小于最大数量、且已链接叶子节点所对应数据的最大类内序号与待添加数据的最小类内序号相邻的藤节点,所述第一数量为:第二数量和第三数量的最小值,第二数量为待添加数据的数量,第三数量为:藤节点的最大数量与节点数量的差值;
第二数据插入模块1003,用于在不存在所述第二目标藤节点或在创建第一数量个叶子节点后第四数量大于0的情况下,根据未创建对应的叶子节点的待添加数据的数量和藤节点链接叶子节点的最大数量,创建链接于所述第二目标主节点的新藤节点,并创建链接于新藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号记录到该叶子节点中,将所述新藤节点所链接的所有叶子节点对应的数据的数字签名、所述新藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号和所述新藤节点所链接的叶子节点的数量记录到所述新藤节点中,所述第四数量为:待添加数据的数量与所述第一数量的差。
由以上可见,由于上述葫芦树中每一主节点所链接的藤节点所链接的叶子节点对应的数据所属的数据类型相同,因此在向葫芦树中添加数据时,所属数据类型相同的待添加数据对应的叶子节点会被添加到同一主节点下,以一组所属数据类型相同的待添加数据为单位,向葫芦树中添加数据,对于对应的叶子节点链接到同一藤节点的待添加数据,只需要根据上述待添加数据进行一次藤数字签名计算,与分别将每一待添加数据分别添加到葫芦树中相比,降低了计算藤数字签名的次数,提高了向葫芦树中添加数据的效率。
本发明的一个实施例中,所述第二目标藤节点为:所述第二目标主节点所链接的最后一个、且最大数量大于节点数量的藤节点;
所创建的链接于第二目标藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且第一叶子节点与第二叶子节点链接,所述第一叶子节点为:所创建叶子节点中对应数据的类内序号最小的叶子节点,第二叶子节点为:创建叶子节点前所述第二目标藤节点链接的最后一个叶子节点;
针对每一新藤节点,所创建的链接于该新藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且该藤节点与各个叶子节点中对应的数据的类内序号最小的叶子节点链接,且该新藤节点与其上一藤节点所链接的最后一个叶子节点链接,该新藤节点所链接叶子节点对应数据的类内序号与上一藤节点所链接叶子节点对应数据的类内序号连续。
由以上可见,本发明实施例中各个藤节点之间通过叶子节点串行链接,每一藤节点所链接的叶子节点之间同样串行链接,新创建的叶子节点与藤节点均是链接于第二目标主节点所链接的最后一个藤节点所链接的最后一个叶子节点,因此减少了确定新创建的藤节点与叶子节点所链接的节点所需的时间,提高了将数据添加到葫芦树中的效率。
参见图11,本发明实施例提供了第二种葫芦树数据添加装置的结构示意图,与前述图10所示的实施例相比,上述第一数据插入模块1002,包括:
叶子节点创建子模块1002A,用于在存在第二目标藤节点的情况下,创建第一数量个链接于所述第二目标藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号存储到该叶子节点中,将第二目标藤节点的节点数量增加所述第一数量;
数据验证子模块1002B,用于根据所述第二目标藤节点的原始数据与第二目标藤节点所记录的藤数字签名,对所述原始数据进行签名验证,所述原始数据为:所述第二目标藤节点所链接的、除所创建的叶子节点之外的所各个叶子节点对应的数据;
第一签名更新子模块1002C,用于在所述数据验证子模块1002B确定原始数据通过验证的情况下,将所述第二目标藤节点的藤数字签名更新为所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名;
第二签名更新子模块1002D,用于在所述数据验证子模块1002B确定原始数据未通过验证的情况下,计算所述第二目标藤节点的所有新添加数据的数字签名,将所述第二目标藤节点的藤数字签名更新为计算得到的数字签名,其中,所述新添加数据为:所述第二目标藤节点所链接的各个新创建的叶子节点对应的数据。
由以上可见,在更新上述第二目标藤节点的藤数字签名的过程中,先对原始数据进行数据完整性验证,确定原始数据并未被篡改,才将第二目标藤节点的藤数字签名更新为第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,否则,将第二目标节点的藤数字签名更新为所有新添加数据的数字签名。从而使得第二目标藤节点的藤数字签名是根据未被篡改的数据计算得到的,在后续根据第二目标藤节点的藤数字签名进行数据完整性验证的过程中,可以确保验证结果始终是根据未受到篡改的数据的藤数字签名得到的,保证了验证结果的可靠性。
参见图12,本发明实施例提供了第三种葫芦树数据添加装置的结构示意图,与前述图11所示的实施例相比,上述第一数据插入模块1002,还包括:
第三签名更新子模块1002E,用于在所述原始数据中包含的待修正数据被修正后,重新计算所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将所述第二目标藤节点的数字签名更新为计算得到的数字签名,其中,所述待修正数据中包含所有未通过签名验证的原始数据,所述未通过签名验证的原始数据为:根据所述原始数据与所述原始数据对应的叶子节点记录的叶子签名,对所述原始数据进行的签名验证的结果为未通过验证的原始数据。
由以上可见,在上述待修正叶子节点对应的数据被修正后,重新计算上述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将上述第二目标藤节点的数字签名更新为计算得到的数字签名,可以使得上述第二目标藤节点的数字签名能够重新表示上述第二目标藤节点所链接的所有叶子节点对应的数据。
本发明实施例还提供了一种电子设备,如图13所示,包括处理器1301、通信接口1302、存储器1303和通信总线1304,其中,处理器1301,通信接口1302,存储器1303通过通信总线1304完成相互间的通信,
存储器1303,用于存放计算机程序;
处理器1301,用于执行存储器1303上所存放的程序时,实现上述数据完整性验证方法任一所述的方法步骤。
应用本发明实施例提供的电子设备进行数据完整性验证时,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行数据完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述数据完整性验证方法任一所述的方法步骤。
应用本实施例提供的计算机可读存储介质中存储的计算机程序进行数据完整性验证时,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行数据完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述数据完整性验证方法任一所述的方法步骤。
执行本实施例提供的计算机程序产品进行数据完整性验证时,数据分别对应不同的叶子节点,每一藤节点链接不同的叶子节点,因此每一藤节点对应不同的数据,在对数据进行完整性验证的过程中,将每一藤节点对应的数据视为一组数据,共同进行数据完整性验证。若所属数据类型相同的一组待验证数据中的多条待验证数据所对应的藤节点相同,则只需要对对应同一藤节点的多条待验证数据进行一次签名验证,若验证通过,则对应该藤节点的待验证数据均通过完整性验证,否则,才需要分别对各条待验证数据进行签名验证。由于计算机受到网络攻击,导致所存储的数据被篡改的概率较低,因此在大多数情况下,对于多条对应同一藤节点的待验证数据,只需要进行一次数据完整性验证,因此节省了数据完整性验证的时间,提高了数据完整性验证的效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质和计算机程序产品而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种数据完整性验证方法,其特征在于,应用于电子设备,所述电子设备以葫芦树结构进行数据存储;所述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应;
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息;
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名;
所述方法包括:
确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点;
根据各个待验证数据的类内序号,在所述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点;
针对每一第一目标藤节点,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
2.根据权利要求1所述的方法,其特征在于,在所述根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证之前,还包括:
判断该第一目标藤节点的待验证数量是否大于预设待验证数量,其中,所述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量;
若为是,则执行所述根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证的步骤;
否则,针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果。
3.根据权利要求1所述的方法,其特征在于,
每一藤节点所链接的叶子节点中包括:直连叶子节点与间连叶子节点,所述直连叶子节点为:该藤节点直接链接的叶子节点,所述间连叶子节点为:通过其他叶子节点与该藤节点链接的叶子节点,所述直连叶子节点、间连叶子节点按照叶子节点对应的数据的类内序号的顺序依次串行链接。
4.根据权利要求3所述的方法,其特征在于,
按照各个藤节点所链接的叶子节点对应的数据的类内序号的顺序,每一主节点所链接的藤节点依次串行链接;
和/或
每一藤节点所链接的最后一个间连叶子节点链接该藤节点的关联藤节点,其中,每一藤节点的关联藤节点与该藤节点链接于同一主节点、且该藤节点的最后一个间连叶子节点所对应数据的类内序号与关联藤节点链接的直连叶子节点所对应数据的类内序号相邻。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述藤节点还记录有:能够链接的叶子节点的最大数量、已链接的叶子节点的节点数量;
所述方法还包括:
根据所属数据类型相同的一组待添加数据所属的数据类型,确定待添加数据待添加到的第二目标主节点;
在存在第二目标藤节点的情况下,创建第一数量个链接于所述第二目标藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号存储到该叶子节点中,将第二目标藤节点的节点数量增加所述第一数量,将所述第二目标藤节点的藤数字签名更新为所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,其中,所述第二目标藤节点为:所述第二目标主节点所链接的、节点数量小于最大数量、且已链接叶子节点所对应数据的最大类内序号与待添加数据的最小类内序号相邻的藤节点,所述第一数量为:第二数量和第三数量的最小值,第二数量为待添加数据的数量,第三数量为:藤节点的最大数量与节点数量的差值;
在不存在所述第二目标藤节点或在创建第一数量个叶子节点后第四数量大于0的情况下,根据未创建对应的叶子节点的待添加数据的数量和藤节点链接叶子节点的最大数量,创建链接于所述第二目标主节点的新藤节点,并创建链接于新藤节点的叶子节点,将每一叶子节点所对应的待添加数据的数字签名和类内序号记录到该叶子节点中,将所述新藤节点所链接的所有叶子节点对应的数据的数字签名、所述新藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号和所述新藤节点所链接的叶子节点的数量记录到所述新藤节点中,所述第四数量为:待添加数据的数量与所述第一数量的差。
6.根据权利要求5所述的方法,其特征在于,
所述第二目标藤节点为:所述第二目标主节点所链接的最后一个、且最大数量大于节点数量的藤节点;
所创建的链接于第二目标藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且第一叶子节点与第二叶子节点链接,所述第一叶子节点为:所创建叶子节点中对应数据的类内序号最小的叶子节点,第二叶子节点为:创建叶子节点前所述第二目标藤节点链接的最后一个叶子节点;
针对每一新藤节点,所创建的链接于该新藤节点的各个叶子节点按照对应的数据的类内序号顺序串行链接,且该藤节点与各个叶子节点中对应的数据的类内序号最小的叶子节点链接,且该新藤节点与其上一藤节点所链接的最后一个叶子节点链接,该新藤节点所链接叶子节点对应数据的类内序号与上一藤节点所链接叶子节点对应数据的类内序号连续。
7.根据权利要求5所述的方法,其特征在于,所述将所述第二目标藤节点的藤数字签名更新为所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,包括:
根据所述第二目标藤节点的原始数据与第二目标藤节点所记录的藤数字签名,对所述原始数据进行签名验证,所述原始数据为:所述第二目标藤节点所链接的、除所创建的叶子节点之外的各个叶子节点对应的数据;
若通过验证,则将所述第二目标藤节点的藤数字签名更新为所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名;
否则,计算所述第二目标藤节点的所有新添加数据的数字签名,将所述第二目标藤节点的藤数字签名更新为计算得到的数字签名,其中,所述新添加数据为:所述第二目标藤节点所链接的各个新创建的叶子节点对应的数据。
8.根据权利要求7所述的方法,其特征在于,在所述计算所述第二目标藤节点的添加数据的数字签名,将所述第二目标藤节点的藤数字签名更新为计算得到的数字签名之后,还包括:
在所述原始数据中包含的待修正数据被修正后,重新计算所述第二目标藤节点所链接的所有叶子节点对应的数据的数字签名,将所述第二目标藤节点的数字签名更新为计算得到的数字签名,其中,所述待修正数据中包含所有未通过签名验证的原始数据,所述未通过签名验证的原始数据为:根据所述原始数据与所述原始数据对应的叶子节点记录的叶子签名,对所述原始数据进行的签名验证的结果为未通过验证的原始数据。
9.一种数据完整性验证装置,其特征在于,应用于电子设备,所述电子设备以葫芦树结构进行数据存储;所述葫芦树结构包括主节点、每个主节点链接的藤节点以及每个藤节点链接的叶子节点;每个主节点与数据存储空间中所存储数据的一种数据类型相对应,每个叶子节点与数据存储空间中存储的一条数据相对应;
每个藤节点所链接的叶子节点对应的数据所属数据类型与链接该藤节点的主节点对应的数据类型一致,每个藤节点链接的叶子节点所对应数据在所属数据类型内的类内序号连续,每个藤节点记录有藤数字签名和表征该藤节点所链接的各个叶子节点对应的数据在所属数据类型内的类内序号的信息,每个藤节点记录的藤数字签名为:对该藤节点链接的所有叶子节点对应的数据计算数字签名而得到的信息;
每个叶子节点记录有叶子数字签名与该叶子节点对应的数据的类内序号,每个叶子节点记录的叶子数字签名为:该叶子节点对应的数据的数字签名;
所述装置包括:
第一主节点确定模块,用于确定所属数据类型相同的一组待验证数据所属的数据类型对应的第一目标主节点;
第一藤节点确定模块,用于根据各个待验证数据的类内序号,在所述第一目标主节点链接的藤节点中确定链接各个待验证数据对应的叶子节点的藤节点,作为第一目标藤节点;
第一数据验证模块,用于针对每一第一目标藤节点,在该第一目标藤节点的待验证数量大于预设待验证数量的情况下,根据该第一目标藤节点所链接的所有叶子节点对应的数据与该第一目标藤节点记录的藤数字签名,对该第一目标藤节点所链接的所有叶子节点对应的数据进行签名验证,若通过验证,则确定该第一目标藤节点所链接的叶子节点对应的待验证数据通过完整性验证,若未通过验证或该第一目标藤节点的待验证数量不大于预设待验证数量,则针对该第一目标藤节点所链接的叶子节点对应的每一待验证数据,根据该待验证数据与该待验证数据对应的叶子节点所记录的叶子数字签名对该待验证数据进行签名验证,获得该待验证数据的验证结果,其中,所述待验证数量为:该第一目标藤节点所链接的叶子节点对应的待验证数据的数量。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010920152.9A CN112035890B (zh) | 2020-09-04 | 2020-09-04 | 一种数据完整性验证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010920152.9A CN112035890B (zh) | 2020-09-04 | 2020-09-04 | 一种数据完整性验证方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035890A true CN112035890A (zh) | 2020-12-04 |
CN112035890B CN112035890B (zh) | 2022-08-05 |
Family
ID=73590508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010920152.9A Active CN112035890B (zh) | 2020-09-04 | 2020-09-04 | 一种数据完整性验证方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035890B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304737A (zh) * | 2018-01-26 | 2018-07-20 | 鑫银科技集团股份有限公司 | 一种数据验证方法、电子设备及数据验证系统 |
CN110163007A (zh) * | 2019-04-23 | 2019-08-23 | 西安邮电大学 | 基于区块链的数据完整性验证方法、设备和存储介质 |
CN110781524A (zh) * | 2019-10-29 | 2020-02-11 | 陕西师范大学 | 一种混合云存储中数据的完整性验证方法 |
CN111159288A (zh) * | 2019-12-16 | 2020-05-15 | 郑杰骞 | 链式结构数据存储、验证、实现方法、系统、装置及介质 |
WO2020128413A1 (en) * | 2018-12-18 | 2020-06-25 | Arm Limited | Integrity tree for memory integrity checking |
-
2020
- 2020-09-04 CN CN202010920152.9A patent/CN112035890B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304737A (zh) * | 2018-01-26 | 2018-07-20 | 鑫银科技集团股份有限公司 | 一种数据验证方法、电子设备及数据验证系统 |
WO2020128413A1 (en) * | 2018-12-18 | 2020-06-25 | Arm Limited | Integrity tree for memory integrity checking |
CN110163007A (zh) * | 2019-04-23 | 2019-08-23 | 西安邮电大学 | 基于区块链的数据完整性验证方法、设备和存储介质 |
CN110781524A (zh) * | 2019-10-29 | 2020-02-11 | 陕西师范大学 | 一种混合云存储中数据的完整性验证方法 |
CN111159288A (zh) * | 2019-12-16 | 2020-05-15 | 郑杰骞 | 链式结构数据存储、验证、实现方法、系统、装置及介质 |
Non-Patent Citations (1)
Title |
---|
李树全等: "一种面向云存储的数据动态验证方案", 《计算机科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112035890B (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN108496190B (zh) | 用于从电子数据结构中提取属性的注释系统 | |
WO2020233066A1 (zh) | 基于数据计算链路的异常处理方法以及相关设备 | |
CN110543516A (zh) | 智能合约处理方法、装置、计算机设备及存储介质 | |
CN109165209B (zh) | 数据库中对象类型的数据校验方法、装置、设备及介质 | |
CN107391292B (zh) | 针对保持区块体数据实现勘误的区块链验证方法及系统 | |
CN112181804A (zh) | 一种参数校验方法、设备以及存储介质 | |
CN110046155B (zh) | 特征数据库的更新、数据特征的确定方法、装置及设备 | |
CN111615688A (zh) | 一种断言验证代码绑定方法及装置 | |
CN112817935A (zh) | 基于字段类型的数据处理方法、装置、设备及存储介质 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN112035890B (zh) | 一种数据完整性验证方法及装置 | |
CN112559526A (zh) | 数据表导出方法、装置、计算机设备及存储介质 | |
US20200097458A1 (en) | Metadata validation tool | |
CN111736848B (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN114186233A (zh) | 代码的反混淆方法、装置、电子设备及存储介质 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN112667661B (zh) | 一种溯源信息关联查询方法及装置 | |
CN118094450B (zh) | 一种故障预警方法及相关设备 | |
CN114443503B (zh) | 测试用例的生成方法、装置、计算机设备、存储介质 | |
CN111401959B (zh) | 风险群体的预测方法、装置、计算机设备及存储介质 | |
CN112187828A (zh) | 一种医疗数据三重逻辑校验方法及系统 | |
CN117675268A (zh) | 一种域名检测方法、装置及电子设备 | |
CN116089133A (zh) | 一种异常业务场景检测方法、装置、计算设备和存储介质 | |
CN114816421A (zh) | 代码转换方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |