一种对文件的完整性校验系统及方法与流程

文档序号:11951682阅读:386来源:国知局
一种对文件的完整性校验系统及方法与流程

本发明涉及计算机应用技术领域,尤其涉及一种对文件的完整性校验系统及方法。



背景技术:

随着计算机技术、网络技术的快速发展,云计算、大数据以及互联网+成为当下新兴的技术,给人们带来了极大的便利。在这种大环境下,数据存储、特别是数据的完整性存储成为热门的话题。

对于一些基于云计算的存储服务,服务器可以通过各种方式来检验文件是否被篡改,进行完整性校验。目前涉及到完整性校验的场景包括一些涉及执法数据的保存与校验的场景,终端获取到取证照片或视频等电子数据后,可以通过为该电子数据生成MD5码的方式来进行后续的完整性校验。即。在该电子数据存储之前,计算该电子数据的MD5码,在存储后需要取出并使用该电子数据时,再次计算取出的电子数据的MD5码,如果该取出后计算得到的MD5码与存储时计算得到的MD5码相同,则表明该电子数据没有被修改,否则,则表明该电子数据被修改,不能作为证据使用。

但是,在基于云计算的存储系统中,大量终端每时每刻都在上传文件,这些海量的文件同时也将对应生成海量的MD5,极大的占用了服务器的存储资源,并且大量的MD5码对完整性校验的查找比对来带来了额外的查找开销,降低了完整性校验的效率。



技术实现要素:

本发明实施例提供了一种对文件的完整性校验系统及方法,能够简便、高效地进行目标文件的完整性校验。

一方面,本发明实施例提供了一种对文件的完整性校验系统,包括:第一服务器、第二服务器以及第三服务器,其中,所述第一服务器与所述第二服务器数据相连,所述第二服务器与所述第三服务器数据相连;

所述第一服务器,用于存储文件集合中的各个文件;

所述第三服务器,用于存储所述文件集合关联的指纹树的根节点,所述指纹树是在所述文件集合中的各个文件被存储到所述第一服务器时根据文件集合中各个文件的指纹信息计算得到的,所述指纹树的叶子节点为每一个文件的指纹信息;

所述第二服务器,用于根据所述第三服务器中存储的根节点对目标文件进行完整性校验,并根据校验结果来判断该目标文件在存储后是否被修改,所述目标文件是从所述第一服务器下载的所述文件集合中的文件。

其中可选地,所述目标文件是所述第二服务器在接收到客户端的下载请求时,响应该下载请求从所述第一服务器下载并接收的所述文件集合中的文件。

其中可选地,所述目标文件是所述第二服务器从客户端接收到的文件,所述客户端从所述第一服务器的所述文件集合中下载并发送给所述第二服务器的目标文件。

其中可选地,所述第一服务器,还用于存储与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息,根据所述目标文件的指纹信息和所述指纹包中的各关联指纹信息能够计算得到所述文件集合的根节点所记录的指纹信息。

其中可选地,所述第二服务器,还用于从所述第一服务器中下载所述目标文件的指纹包,并计算所述目标文件的指纹信息;

所述第二服务器,具体用于根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息,如果该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,则校验结果为成功,确定所述目标文件在目标时间段内容没有被修改;

其中,所述目标时间段是指:存储所述目标文件后到所述第二服务器接收到该目标文件之间的时间段。

另一方面,本发明实施例还提供了一种对文件的完整性校验方法,该方法应用于完整性校验系统,在该系统中存储有文件集合、与所述文件集合关联的指纹树的根节点,所述指纹树是根据所述文件集合中各个文件的指纹信息计算得到的;所述方法包括:

在接收到待校验的目标文件时,确定该目标文件的指纹信息,所述目标文件来自于所述文件集合;

获取存储在所述第一服务器中的与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息;

根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息;

如果该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,则校验结果为成功,确定所述目标文件在存储后其内容没有被修改。

其中可选地,所述目标文件是所述第二服务器在接收到客户端的下载请求时,响应该下载请求从所述第一服务器下载并接收的所述文件集合中的文件。

其中可选地,所述目标文件是所述第二服务器从客户端接收到的文件,所述客户端从所述第一服务器的所述文件集合中下载并发送给所述第二服务器的目标文件。

其中可选地,判断该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,包括:

将所述验证指纹信息发送给所述第三服务器,由所述第三服务器将所述验证指纹信息与存储的所述文件集合的根节点所记录的指纹信息进行比较;

在接收到所述第三服务器返回的比较结果为相同时,确定该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同。

其中可选地,所述方法还包括:

如果校验结果为成功,则发出所述目标文件在目标时间段内容没有被修改的通知指示;

如果校验结果为失败,则发出所述目标文件在目标时间段内容已经被修改的通知指示。

本发明实施例引入指纹树来实现完整性校验,在用于进行完整性校验的服务器中,一个大的文件集合在存储时只需存储一个指纹树的根节点即可完成该文件集合中大量文件的完整性校验,减小了存储开销,在根节点查找过程中,也只需查找到文件集合对应的根节点即可,相对于现有的针对大量文件的MD5,极大地减低了查找的开销,提高了完整性校验的效率。

附图说明

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

图1是本发明实施例的一种对文件的完整性校验系统的结构示意图;

图2是本发明实施例的一种指纹树的示意图;

图3是本发明实施例的一种对文件的完整性校验方法的流程示意图;

图4是本发明实施例的一种服务器的结构组成示意图。

具体实施方式

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

本发明实施例针对文件集合生成用于对该集合中各文件进行完整性校验的指纹树,能够通过文件集合中某个文件(目标文件)的指纹信息、该指纹树中关于所述目标文件的指纹包、以及该指纹树的根节点来对目标文件的完整性进行校验,判断该目标文件在存储到服务器后直到被校验之前是否被修改。

所述文件集合中可以包括大量的文件,在生成所述文件集合的指纹树时,所述文件集合中各个文件的指纹信息作为所述指纹树的叶子节点,然后根据两个或者多个叶子节点(指纹信息)生成下一级的枝干节点,再以两个或者多个枝干节点(枝干节点记录的也是指纹信息)生成再下一级的枝干节点,以此类推,最终得到指纹树的根节点。

在完整性验证过程中,可以是在用户终端获取到该目标文件后,由用户终端自身计算得到该目标文件的指纹信息;或者由用户终端提交给应用服务器,由应用服务器计算得到该目标文件的指纹信息。

在所述指纹树生成后,会从指纹树中获取与所述目标文件的指纹信息相关的多个关联指纹信息,多个关联指纹信息构成指纹包。从所述指纹树上获取关联指纹信息的原则为:通过所述目标文件的指纹信息与获取的各个关联指纹信息,能够最终计算得到该指纹树的根节点。该指纹包可以存储到上传目标文件到文件集合中的用户终端中,或者,也可以存储到用于存储文件集合的存储服务器中。

计算得到的指纹树的根节点可以存储到某个服务器中,以便于后续用于进行完整性校验时的根节点比对。在本发明实施例中,由于在同一时间或者在一定的时间段内可能存在大量的用户上传文件,或者部分用户分别上传了大量的文件。此时,可以按照一定规则,比如按时间或者时间段来得到一个或者多个文件集合。针对每一个文件集合均会生成一个指纹树,而在用于进行完整性校验的服务器中,仅需保存指纹树的根节点,各个指纹包可以分别存储到其他大容量的存储服务器甚至用户终端中,这样就使得特定的用于完整性校验的服务器中仅存储少量数据,方便后续快速进行完整性校验。

在其中一种实施例中,请参见图1,是本发明实施例的一种对文件的完整性校验系统的结构示意图,本发明实施例中包括第一服务器、第二服务器以及第三服务器,所述第一服务器主要为用于进行大量文件存储的服务器,可以存储一个或者多个文件集合。所述第二服务器主要为可以与用户进行交互的应用服务器,接收用户通过用户终端的客户端发出的请求并对请求进行响应。所述第三服务器主要为用于进行完整性校验而存储根节点的服务器。所述第一服务器与所述第二服务器数据相连,所述第二服务器与所述第三服务器数据相连。对各个服务器的具体描述如下。

所述第一服务器,用于存储文件集合中的各个文件。

所述第三服务器,用于存储所述文件集合关联的指纹树的根节点,所述指纹树是在所述文件集合中的各个文件被存储到所述第一服务器时根据文件集合中各个文件的指纹信息计算得到的,所述指纹树的叶子节点为每一个文件的指纹信息。

所述第二服务器,用于根据所述第三服务器中存储的根节点对目标文件进行完整性校验,并根据校验结果来判断该目标文件在存储后是否被修改,所述目标文件是从所述第一服务器下载的所述文件集合中的文件。

其中,具体的校验方式包括:获取存储在所述第一服务器中的与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息;根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息;如果该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,则校验结果为成功,确定所述目标文件在存储后其内容没有被修改。

在需要对存储文件保证其完整性的文件存储场景中,例如证据收集与存储的场景中,用户可以通过专用的应用APP,通过拍照、录音录像、扫描等方式得到需要完整保存的电子数据,生成待保存的文件,再将该文件以及该文件的辅助数据存储到所述第一服务器中。其中,辅助数据包括了与该文件相关的时间、地点,甚至为该文件生成的编号、记录该文件的责任人等信息。不同的用户,可以通过其用户终端的APP上传对应的需要保存的一个或者多个文件。

第一服务器可以将同一时间点接收到的多个文件构成一个文件集合,分配集合标识等方式将多个文件作为一个文件集合存储到数据库中。或,第一服务器也可以将一定时间段内接收到的多个文件构成一个文件集合存储到数据库中。或者,第一服务器也可以直接根据接收到的文件的数量,来构成文件集合存储到数据库中,例如,第一服务器在接收到第一个文件后开始计数,当接收到1000个文件时,将这1000个文件构成文件集合存储到数据库中,并再次进行下一个文件集合的文件接收与计数。

在每次文件集合中各个文件的存储之前、或存储过程中、或存储完成之后,可以对每一个文件计算指纹信息,该指纹信息主要是指文件的哈希值,当然,该指纹信息还可以是指其他一些能够唯一标识该文件的信息。各个文件的指纹信息以及生成指纹树的计算处理步骤可以由第二服务器来执行,当然也可以由于与第二服务器相连的其他服务器、或者所述第三服务器来执行。根据计算得到的每一个文件的指纹信息,生成该文件的指纹树。对应地,该指纹树可以为文件集合的哈希树,关于文件系统的哈希树的生成方式可以参考现有的哈希树生成方式,在此不赘述。本申请实施例主要将哈希树应用到完整性校验中。

在生成指纹树后会针对文件集合的每一个文件生成指纹包,该指纹包会返回给发出存储需求的用户客户端,或者通过标识关联的方式将该指纹表与对应的文件集合的文件一并存储到所述第一服务器中。

针对存储到第一服务器中的文件,在使用过程中需要证明这些文件在存储后没有被修改时,例如某些文件被使用作为证据递交时,需要保证该文件在存储后和作为证据递交时都没有被修改。此时,用户可以通过用户终端的APP,直接通过从第一服务器的文件集合中下载某个目标文件,也就是说,所述目标文件是所述第二服务器在接收到客户端的下载请求时,响应该下载请求从所述第一服务器下载并接收的所述文件集合中的文件。

或者,用户通过用户终端的APP向第二服务器发起下载目标文件的请求,以便于第二服务器执行相应的下载以及校验步骤。也就是说,所述目标文件是所述第二服务器从客户端接收到的文件,所述客户端从所述第一服务器的所述文件集合中下载并发送给所述第二服务器的目标文件。

在本发明实施例中,完成完整性校验可以根据目标文件的指纹信息、一个与所述目标文件关联的指纹包以及该目标文件所在文件集合的指纹树的根节点来进行校验。

所述第一服务器,还用于存储与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息,根据所述目标文件的指纹信息和所述指纹包中的各关联指纹信息能够计算得到所述文件集合的根节点所记录的指纹信息。

在进行完整性校验之前,所述第二服务器,还用于从所述第一服务器中下载所述目标文件的指纹包,并计算所述目标文件的指纹信息;所述第二服务器,具体用于根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息,如果该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,则校验结果为成功,确定所述目标文件在目标时间段内容没有被修改;其中,所述目标时间段是指:存储所述目标文件后到所述第二服务器接收到该目标文件之间的时间段。

在完整性校验过程中,可以由第二服务器来计算目标文件被下载后的指纹信息,然后根据该目标文件被下载后的指纹信息、已经存储的关于该目标文件的指纹包进行计算,得到一个待验证根节点,再将待验证根节点方式和第三服务器中存储的该目标文件所在文件集合相关的根节点进行比较,如果相同则完整性校验成功。在其他实施例中,这些步骤也可以由用户终端来执行,用户终端可以直接与第三服务器通信来完成其下载的目标文件的完整性校验,也可以通过第二服务器与所述第三服务器通信,来完成其下载的目标文件的完整性校验,也就是所述目标文件被下载的指纹信息的计算、指纹包的存储、根据目标文件被下周后的指纹新、指纹包来计算验证根节点,以及将验证根节点与第三服务器存储的根节点进行比较的过程全部由用户终端来执行。

具体的,以8个文件为例进行说明,如图2所示,第4级的8个叶子节点为该8个文件的指纹信息。再对每两个叶子节点计算指纹信息得到第3级的枝干节点。进一步地对枝干节点的两个节点进行计算得到第2级枝干节点,最后以两个第2级枝干节点计算指纹信息得到根节点。根节点存储到第三服务器中,文件作为文件集合的一部分存储到第一服务器的数据库中。针对指纹节点4.1记录的指纹信息对应的文件(目标文件),第二服务器从指纹树中获取节点4.2、节点3.2、节点2.2的指纹作为所述目标文件的指纹包。在后续下载到所述目标文件后,首先计算得到改目标文件的指纹信息,然后再将该指纹信息与所述指纹包的指纹信息一并进行计算,得到待验证根节点;再将待验证根节点与第三服务器中存储的根节点进行比较,如果一致,则表明所述目标文件没有被修改,和存储时的内容一致。而如果内容不一致,则表明目标文件被修改了,完整性校验不通过。

需要说明的是,图1仅为示例,第一服务器、第二服务器、第三服务器可以仅只有一台服务器,也可以为包括多台服务组成服务器组,在此并不限定。

本发明实施例引入指纹树来实现完整性校验,一个大的文件集合在存储时,只需在用于验证信息的管理服务器(即第三服务器)中存储一个指纹树的根节点,所需的指纹包可以存储到用户终端或其他分散的服务器中,减小了管理服务器的存储开销,在管理服务器的根节点(验证信息)查找过程中,也只需在管理服务器中查找到文件集合对应的根节点即可,相对于现有的针对大量文件的MD5,极大地减低了查找的开销,提高了完整性校验的效率。

再请参见图3,是本发明实施例的一种对文件的完整性校验方法的流程示意图,本发明实施例的所示方法可以由某个文件存储系统中进行文件校验的服务器来执行,或者由一个安装了相应的应用APP的智能终端来执行。具体的,该方法应用于完整性校验系统,在该系统中存储有文件集合、与所述文件集合关联的指纹树的根节点,所述指纹树是根据所述文件集合中各个文件的指纹信息计算得到的;本发明实施例的所述方法包括如下步骤。

S301:在接收到待校验的目标文件时,确定该目标文件的指纹信息,所述目标文件来自于所述文件集合。

S302:获取存储在所述第一服务器中的与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息。

S303:根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息。

S304:该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息是否相同。如果相同,则校验结果为成功,确定所述目标文件在存储后其内容没有被修改,可以执行下述的S305。如果不相同,则验证结果为失败,可以执行下述的S306。

S305:如果校验结果为成功,则发出所述目标文件在目标时间段内容没有被修改的通知指示。

S306:如果校验结果为失败,则发出所述目标文件在目标时间段内容已经被修改的通知指示。

所述S305和S306为可选步骤。

在需要对存储文件保证其完整性的文件存储场景中,例如证据收集与存储的场景中,用户可以通过专用的应用APP,通过拍照、录音录像、扫描等方式得到需要完整保存的电子数据,生成待保存的文件,再将该文件以及该文件的辅助数据存储到所述第一服务器中。其中,辅助数据包括了与该文件相关的时间、地点,甚至为该文件生成的编号、记录该文件的责任人等信息。不同的用户,可以通过其用户终端的APP上传对应的需要保存的一个或者多个文件。

第一服务器可以将同一时间点接收到的多个文件构成一个文件集合,分配集合标识等方式将多个文件作为一个文件集合存储到数据库中。或,第一服务器也可以将一定时间段内接收到的多个文件构成一个文件集合存储到数据库中。或者,第一服务器也可以直接根据接收到的文件的数量,来构成文件集合存储到数据库中。

在每次文件集合中各个文件的存储之前、或存储过程中、或存储完成之后,可以对每一个文件计算指纹信息,该指纹信息主要是指文件的哈希值,当然,该指纹信息还可以是指其他一些能够唯一标识该文件的信息。各个文件的指纹信息以及生成指纹树的计算处理步骤可以由第二服务器来执行,当然也可以由于与第二服务器相连的其他服务器、或者所述第三服务器来执行。根据计算得到的每一个文件的指纹信息,生成该文件的指纹树。

在生成指纹树后会针对文件集合的每一个文件生成指纹包,该指纹包会返回给发出存储需求的用户客户端,或者通过标识关联的方式将该指纹表与对应的文件集合的文件一并存储到所述第一服务器中。

针对存储到第一服务器中的文件,在使用过程中需要证明这些文件在存储后没有被修改时,例如某些文件被使用作为证据递交时,需要保证该文件在存储后和作为证据递交时都没有被修改。此时,用户可以通过用户终端的APP,直接通过从第一服务器的文件集合中下载某个目标文件,也就是说,所述目标文件是所述第二服务器在接收到客户端的下载请求时,响应该下载请求从所述第一服务器下载并接收的所述文件集合中的文件。

或者,用户通过用户终端的APP向第二服务器发起下载目标文件的请求,以便于第二服务器执行相应的下载以及校验步骤。也就是说,所述目标文件是所述第二服务器从客户端接收到的文件,所述客户端从所述第一服务器的所述文件集合中下载并发送给所述第二服务器的目标文件。

在本发明实施例中,完成完整性校验可以根据目标文件的指纹信息、一个与所述目标文件关联的指纹包以及该目标文件所在文件集合的指纹树的根节点来进行校验。

所述第一服务器,还用于存储与所述目标文件相关联的指纹包,所述指纹包中包括了所述指纹树上的、与所述目标文件的指纹信息相关联的多个关联指纹信息,根据所述目标文件的指纹信息和所述指纹包中的各关联指纹信息能够计算得到所述文件集合的根节点所记录的指纹信息。

在进行完整性校验之前,所述第二服务器,还用于从所述第一服务器中下载所述目标文件的指纹包,并计算所述目标文件的指纹信息;所述第二服务器,具体用于根据所述目标文件的指纹信息和所述指纹包计算得到一个验证指纹信息,如果该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,则校验结果为成功,确定所述目标文件在目标时间段内容没有被修改;其中,所述目标时间段是指:存储所述目标文件后到所述第二服务器接收到该目标文件之间的时间段。

其中,判断该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同,包括:

将所述验证指纹信息发送给所述第三服务器,由所述第三服务器将所述验证指纹信息与存储的所述文件集合的根节点所记录的指纹信息进行比较;

在接收到所述第三服务器返回的比较结果为相同时,确定该验证指纹信息与所述第三服务器中存储的所述文件集合的根节点所记录的指纹信息相同。

本发明实施例引入指纹树来实现完整性校验,一个大的文件集合在存储时,只需在用于验证信息的管理服务器(即第三服务器)中存储一个指纹树的根节点,所需的指纹包可以存储到用户终端或其他分散的服务器中,减小了管理服务器的存储开销,在管理服务器的根节点(验证信息)查找过程中,也只需在管理服务器中查找到文件集合对应的根节点即可,相对于现有的针对大量文件的MD5,极大地减低了查找的开销,提高了完整性校验的效率。

再请参见图4,是本发明实施例的一种服务器的结构组成示意图,本发明实施例的所述服务器可以包括供电电源、散热模块、外壳等结构,该服务器还包括:处理器401、存储器402、以及网络接口403,所述处理器401、存储器402以及网络接口403之间可以通过总线404相连。

所述总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。所述存储器402包括易失性存储器(volatile memory),例如,随机存取存储器(random-access memory,RAM);存储器402也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器402还可以包括上述种类的存储器的组合。

所述处理器401可以是中央处理器(central processing unit,CPU),所述处理器401还可以进一步包括硬件芯片。可选地,所述存储器402还用于存储程序指令。所述处理器401可以调用所述程序指令,实现如本申请图3实施例中所述的对文件的完整性校验方法。

本发明实施例引入指纹树来实现完整性校验,一个大的文件集合在存储时,只需在用于验证信息的管理服务器(即第三服务器)中存储一个指纹树的根节点,所需的指纹包可以存储到用户终端或其他分散的服务器中,减小了管理服务器的存储开销,在管理服务器的根节点(验证信息)查找过程中,也只需在管理服务器中查找到文件集合对应的根节点即可,相对于现有的针对大量文件的MD5,极大地减低了查找的开销,提高了完整性校验的效率。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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