一种针对授时证书生成请求的监控方法、装置及设备与流程

文档序号:18560923发布日期:2019-08-30 23:16阅读:240来源:国知局
一种针对授时证书生成请求的监控方法、装置及设备与流程

本说明书实施例涉及信息技术领域,尤其涉及一种针对授时证书生成请求的监控方法、装置及设备。



背景技术:

在数据库服务提供方,可以通过块以链式账本的方式对数据记录进行中心化的存储。此时,为了避免用户和服务方联合起来对伪造虚假的账本,可以通过时间公正机构获取确定授时证书,用于确定部分账本的生成时间。在这个过程中,授时证书中的时间戳是单调递增的,但授时证书对应的部分数据块却不一定单调递增。

基于此,需要一种在块链式账本中针对授时证书生成请求的监控方案,以实现生成更严谨的授时证书。



技术实现要素:

本申请实施例的目的是提供针对授时证书生成请求的监控方案,以实现生成更严谨的授时证书。

为解决上述技术问题,本申请实施例是这样实现的:

一种针对授时证书生成请求的监控方法,应用于通过多个数据块存储数据的中心化的数据库服务提供方中,包括:

当检测到生成授时证书的请求时,确定本次请求中所对应的目标账本的起始块高h1和的结束块高h2;

判断所述h1是否大于数据库服务提供方所维护的已授时块高h,若h1>h,执行本次生成授时证书的请求,否则,不执行;

确定已经接收到可信授时机构对于本次请求所生成的的授时证书,将所述已授时块高h的值变更为h2,以便用于判断下一次生成授时证书的请求是否执行;

在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。

对应的,本说明书实施例还提供一种针对授时证书生成请求的监控装置,应用于通过多个数据块存储数据的中心化的数据库服务提供方中,包括:

块高确定模块,当检测到生成授时证书的请求时,确定本次请求中所对应的目标账本的起始块高h1和的结束块高h2,

判断模块,判断所述h1是否大于数据库服务提供方所维护的已授时块高h,若h1>h,执行本次生成授时证书的请求,否则,不执行;

取值变更模块,确定已经接收到可信授时机构对于本次请求所生成的的授时证书,将所述已授时块高h的值变更为h2,以便用于判断下一次生成授时证书的请求是否执行;

在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。

通过本说明书实施例所提供的方案,数据库服务提供方维护一个用于标识已经通过授时认证的数据块的已授时块高h,每当时间公正机构返回授时证书之后,即将已授时块高的取值推进为本次授时认证的最大块高,并且,在下一次请求授时认证时,最小块高必须大于已授时块高,从而保证生成的一系列授时证书所对应的账本的块高也是单调递增(即前一账本的最大块高小于后一账本的最小块高),实现基于授时证书对账本更严谨的管理和使用。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

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

图1为当前技术中所涉及的系统架构的示意图;

图2为本说明书实施例所提供的一种伪链的示意图;

图3为本说明书实施例所提供的生成授时证书的一种流程示意图;

图4为本说明书实施例所提供的一种授时证书和账本的对应关系的示意图;

图5为本说明书实施例所提供的针对授时证书生成请求的监控方法的流程示意图;

图6为本说明书实施例提供的一种块链式账本中的授时证书生成请求的监控装置的结构示意图;

图7是用于配置本说明书实施例方法的一种设备的结构示意图;

图8为本说明书实施例所提供的一种授时证书的结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

首先需要说明的是,在当前的服务器架构中,数据库服务器可以是直接对接的客户端个人用户,也可以是由一些应用服务器对接客户端个人用户,而数据库服务器则对接所述应用服务器。如图1所示,图1为当前技术中所涉及的系统架构的示意图。

因此,在本说明书实施例中,当用户是应用服务器时,数据库服务提供方可以是图1中所示的数据库服务器;而在用户是客户端个人用户时,数据库服务提供方也可以是由应用服务器和数据库服务器构成的服务端整体。但无论在那种情形下,对于数据的存储都是在数据库服务提供方完成,而对于数据的操作(包括增删改查等等)也是基于用户的指令在数据库服务提供方进行。换言之,本说明书中的数据库服务提供方是以中心化的形式提供数据服务。

在本说明书实施例所涉及中心化的数据库系统中,数据块可以通过如下方式预先生成:

接收待存储的数据记录,确定各数据记录的哈希值。此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。

当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第n个数据块。

所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。

此处的n指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第n个数据块的块高即为n;块高也可以其它方式生成。

当n=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。

当n>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第n-1个数据块)的哈希值生成当前数据块(第n个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第n个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值,以及还可以根据默克尔树的根哈希值和其它一些元数据(例如版本号、数据块的生成时间戳等等)生成当前快的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。

通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值或者数据记录的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。

在上述方式中,仍然有可能用户和服务方联合起来对于部分数据块进行了伪造,重新生成一条相关的伪链,从而形成一个与原账本部分相同的新的账本,以躲避相关的审计和验证。如图2所示,图2为本说明书实施例所提供的一种伪链的示意图。在生成伪链的过程中,数据块的成块方式和前述的成块方式相同。

在该示意图中,在账本已经记录了很多数据块之后,业务方认为第1000个数据块中的数据记录有问题,因此,为了不暴露该问题,其和数据库服务方联合起来,从第1000个数据块开始对数据块进行了替换,重新生成一个新的第1000个数据块,接在第999个数据块之后,形成一条与原账本部分相同的伪链,以躲避验证和审计,而在外部第三方而言并不能识别出伪链和真链。

因此,在本说明书实施例中还可以对账本进行授时认证,如图3所示,图3为本说明书实施例所提供的生成授时证书的一种流程示意图,包括如下步骤:

s301,确定需要进行授时认证的目标账本,所述目标账本中至少包含一个数据块,或者多个块高连续的数据块。

如前所述,在所述链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。

具体而言,服务方首先从已经生成并存储的数据块中确定出需要进行授时认证的一段账本,其中至少应该包含一个数据块,或者多个块高连续的数据块。确定的方式可以基于用户操作进行指定,例如,用户发起授时指令,指令中包含需要进行授时认证的起始块高和块数量;将所述部分账本作为目标账本。

目标账户也可以是无需用户指定,服务方基于预设的业务逻辑自动进行。例如,从最细粒度上,可以每一个数据块都去申请授时。在这种方式下,部分账本的默克尔树的根哈希即为该数据块的块哈希值,该方式可以最大程度的对账本(即各数据块)进行真实性的保护。由于数据块的出块频率较高,这种方式无论对于授时中心,还是对于服务方而言,成本开销都会比较大。

一种可选的方式为,设置一定的授时预设条件,当满足一定的授时预设条件时,发起授时请求。在新生成的数据块都认为是待授时认证的数据块时,所述的授时预设条件可以是:待授时认证的数据块达到数量阈值,或者,距离上一次授时认证的时间间隔已经到达时间阈值。

s303,按照所述目标账本中数据块的块高的顺序,生成对应于所述目标账本的默克尔树,基于各数据块的块哈希确定所述默克尔树的根哈希。

由于链式账本的前后依存性,此处生成的默克尔树只需按照各数据块的顺序进行生成即可。具体的根哈希的计算方式即为常规的计算方式,此处不再赘述。

s305,将所述默克尔树的根哈希作为目标账本的根哈希,将所述根哈希和数据块的相关信息发送至时间公正机构,其中,所述数据块的相关信息包括起始块高和结束块高。

时间公正机构可以是诸如国家授时中心,或者国家授时中心所授权的相应授时机构。时间公正机构接收到上述信息,即给出一个可信时间戳,并且对可信时间戳进行数字签名认证,生成一个包含可信时间戳和数字签名的授时证书,其中授时证书中还可以包含上述数据块的相关信息,数字签名的方式为常规的私钥加密、公钥解密即可。如图8所示,图8为本说明书实施例所提供的一种授时证书的结构示意图。

s307,接收时间公正机构所返回的对应于所述目标账本的授时证书,其中,所述授时证书中包括所述目标账本的起始块高、结束块高、可信时间戳和所述目标账本的根哈希。

从而,数据库服务方可以接收到一连串的包含时间公正机构签名的可信授时证书,每一个授时证书中包含一个可信时间戳,且对应于一段账本。一个授时证书可以证明其对应的部分账本是在该可信时间戳之前生成的。通过授时证书中的相关信息可以明确的知道是哪部分账本。数据库服务方可以对一系列的授时证书进行相应的管理,以及验证。例如,数据库服务方可以对每个授时证书进行顺序编号。建立一个关于授时证书的数据库或者索引。在数据库或者索引中包含有起始数据块高、结束数据块高、授时证书对应的部分账本的根哈希值和授时证书编号的对应关系表。

上述生成授时证书过程中的s301至s305,均可以视为是生成授时认证请求的一部分。生成的授时认证请求中包含了目标账本的根哈希和数据块的相关信息。

在上述授时证书的生成过程中,一个授时证书所对应的账本可以基于用户指定,也可以基于一定的业务逻辑确定。而授时证书中的可信时间戳则是由时间公正机构所给定的。因此,有可能发生如下情形:授时证书中的可信时间戳是单调递增的,而授时证书所对应的部分账本的块高却不是单调递增,有可能存在部分重叠,甚至滞后。如图4所示,图4为本说明书实施例所提供的一种授时证书和账本的对应关系的示意图。

在该示意图中,授时证书1、授时证书2和授时证书2依序生成,因此可信时间戳t1、t2和t3也是依序排列,但是各授时证书对应的账本确因为用户的指令,或者网络延迟故障等等原因,发生部分重叠甚至至滞后。

在本说明书实施例中,基于时间公正机构授时的授时证书可以作为账本验证时的一种凭据。在块链式的账本验证中,数据块的先后顺序是存在依赖性的。因此,在授时证书的时间戳单调递增而对应的账本却不是单调递增的时候,会降低账本验证的效率和准确性,以及,给账本管理带来不便。

基于此,本说明书实施例还提供一种针对授时证书生成请求的监控方法,应用于通过多个数据块存储数据的中心化的数据库服务提供方中,如图5所示,图5为本说明书实施例所提供的针对授时证书生成请求的监控方法的流程示意图,包括:

s501,当检测到生成授时证书的请求时,确定本次请求中所对应的目标账本的起始块高h1和的结束块高h2。

如前所述,授时证书的请求可以是基于用户的指令所确定,例如,用户指定对前一万个数据块进行授时认证,则此时h1=1,h2=1000。相应的,用户还可以通过操作指令对目标账本中的起始块高和的结束块高进行确定,例如,用户输入授时认证指令timeid:(1000,1999),则,此时的h1=1000,h2=1999。

s503,判断所述h1是否大于数据库服务提供方所维护的已授时块高h,若h1>h,执行本次生成授时证书的请求,否则,不执行;

对于初始的已授时块高h,可以设定为h=0。即,此时对于该账本还没有进行过任何一次授时证书的生成。换言之,在第一次授时认证时,可以随意的指定一个大于0的初始块高,均可以实现授时认证。通常而言,为保证对账本的全量数据块均实现授时认证,第一次的起始块高h1=1。

在随后任一授时认证过程中,则需要判断本次的起始块高h1是否大于h。一般而言,如果一个账本无需全量授时,则只需要h1大于h即可。

若需要对于全量账本进行授时认证,则还需要保持h1和h的连续性。在块高为自然数时,此时则需要满足h1=h+1;在块高为基于成块时间所转换得到的大整型时,则需要满足h1和h之间不存在其它块高。

s505,确定已经接收到可信授时机构对于本次请求所生成的的授时证书,将所述已授时块高h的值变更为h2,以便用于判断下一次生成授时证书的请求是否执行。

换言之,已授时块高h的值是一个随着授时证书的生成而不断增加的动态值。它表明,在已授时块高h之前的账本已经部分或者全部的通过了授时认证,通过认证的账本可以由已经生成的一系列授时证书给定。此时,如果需要重新生成新的授时证书,此时的待授时账本的最小块高应该大于该已授时块高h。在这种方式下,可以保证可信时间戳靠前的授时证书,所对应的部分账本也靠前,并且,各授时证书所对应的部分账本不会发生重叠。

此外,在确定已经接收到授时证书之前,还可以公钥解密对授时证书所包含的时间公正机构的数字签名进行解密校验。

通过本说明书实施例所提供的方案,数据库服务提供方通过维护一个已授时块高h,用于标识已经通过授时认证的数据块。每当时间公正机构返回授时证书之后,即将已授时块高的取值推进为本次授时认证的最大块高,并且,在下一次请求授时认证时,最小块高必须大于已授时块高,从而保证授时证书所对应的账本也是单调递增(即前一账本的最大块高小于后一账本的最小块高),实现基于授时证书对账本更严谨的管理和使用。

对应的,本说明书实施例还提供一种针对授时证书生成请求的监控装置,如图6所示,图6为本说明书实施例提供的一种块链式账本中的针对授时证书生成请求的监控装置的结构示意图,包括:

块高确定模块601,当检测到生成授时证书的请求时,确定本次请求中所对应的目标账本的起始块高h1和的结束块高h2,

判断模块603,判断所述h1是否大于数据库服务提供方所维护的已授时块高h,若h1>h,执行本次生成授时证书的请求,否则,不执行;

取值变更模块605,确定已经接收到可信授时机构对于本次请求所生成的的授时证书,将所述已授时块高h的值变更为h2,以便用于判断下一次生成授时证书的请求是否执行;

在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。

进一步地,所述装置还包括授时证书生成模块607,确定需要进行授时认证的目标账本,所述目标账本中至少包含一个数据块,或者多个块高连续的数据块;按照所述目标账本中数据块的块高的顺序,生成对应于所述目标账本的默克尔树,基于各数据块的块哈希确定所述默克尔树的根哈希;将所述默克尔树的根哈希和数据块的相关信息发送至时间公正机构,其中,所述数据块的相关信息包括起始块高h1、结束块高h2或者数据块的数量;接收时间公正机构所返回的对应于所述目标账本的包含可信时间戳和时间公正机构签名的的授时证书,其中,所述授时证书中包含所述默克尔树的根哈希和数据块的相关信息。

进一步地,所述装置还包括数据块生成模块609,接收待存储的数据记录,确定各数据记录的哈希值;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第n个数据块,具体包括:

当n=1时,初始数据块的哈希值和块高基于预设方式给定;当n>1时,根据待写入数据块中的各数据记录和第n-1个数据块的哈希值确定第n个数据块的哈希值,生成包含第n个数据块的哈希值、各数据记录和数据块的成块时间的第n个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。

进一步地,在所述装置中,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。

进一步地,所述授时证书生成模块609,将每一个新出的数据块确定为目标账本;或者,基于用户的指令所确定的起始块高和结束块高,确定需要进行授时认证的目标账本。

进一步地,所述授时证书生成模块609,将符合授时预设条件内的新生成的账本作为目标账本,所述授时预设条件包括:新生成的数据块达到数量阈值时;或者,距离上一次授时认证的时间间隔已经到达时间阈值。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图5所示的一种针对授时证书生成请求的监控方法。

图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图5所示的一种针对授时证书生成请求的监控方法。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

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