首页> 中国专利> 用于量子密钥分发过程的密钥同步、封装传递方法及装置

用于量子密钥分发过程的密钥同步、封装传递方法及装置

摘要

本申请公开了一种用于量子密钥分发过程的密钥同步方法及装置,同时公开了一种量子密钥同步分发方法及装置,以及一种用于量子密钥分发过程的密钥封装传递方法及装置。所述用于量子密钥分发过程的密钥同步方法在向应用程序分发量子密钥的一对密钥管理程序中实施,包括:比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;若不一致,则双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致。采用本方法,双方可快速地重新恢复密钥池的时序同步状态,而不需要清空整个密钥池,从而大大提高了密钥管理程序的可用性,有效地避免了对量子密钥资源的浪费。

著录项

  • 公开/公告号CN107086907A

    专利类型发明专利

  • 公开/公告日2017-08-22

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201610086096.7

  • 发明设计人 原鹏;王志强;刘拴林;

    申请日2016-02-15

  • 分类号H04L9/08(20060101);

  • 代理机构11441 北京市清华源律师事务所;

  • 代理人沈泳;李赞坚

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 03:06:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-07

    授权

    授权

  • 2017-09-15

    实质审查的生效 IPC(主分类):H04L9/08 申请日:20160215

    实质审查的生效

  • 2017-08-22

    公开

    公开

说明书

技术领域

本申请涉及量子密钥技术领域,具体涉及一种用于量子密钥分发过程的密钥同步方法及装置。本申请同时涉及一种量子密钥同步分发方法及装置,以及一种用于量子密钥分发过程的密钥封装传递方法及装置。

背景技术

量子力学的发展是人类在过去的一百多年里最伟大的科学发现和进步。随着对量子力学认识的深入,量子力学相关技术开始逐渐应用到了人类生活中的方方面面。其中量子力学在密码学领域的应用取得了较大的发展与突破,很多机构实现了完整的量子密钥分发系统。

一个完整的量子密钥分发系统由三个部分组成:量子引擎(QuantumEngine)、密钥管理(Key Management)和有加密需求的应用程序(CryptographicApp),三个部分之间相对独立,同时在功能上构成一个从上至下的分层调用结构。量子密钥分发系统的架构如图1所示,其中,Quantum Engine实现了单光子的收发、随机数生成、初始密钥筛选、误码纠错、隐私放大以及安全认证等功能,完成密钥的协商生成过程,然后将生成的密钥序列传递到对应的密钥管理程序并存储在密钥池中。密钥管理程序则负责管理密钥,以及响应应用程序的请求:根据其请求的长度从密钥池的待分发密钥序列中截取相应长度的密钥序列、并将其返回给所述应用程序。

在量子密钥分发过程中,需要加解密的双方应用程序(一方利用密钥加密,另一方使用相同的密钥解密)会共享一个标示,并分别拿这个标示去和对应的密钥管理程序发起请求;而双方的密钥管理程序根据应用程序请求中携带的标示信息来确认一次完整的请求,并在响应请求前,执行一次同步操作,即:双方的密钥管理程序确认有符合请求长度的密钥、并且可以通过经典信道确认这段密钥的内容也是完全一样的,然后才向应用程序返回其所需的密钥序列。

理想情况下,上述同步操作都可以顺利完成,但是在实际应用中,在量子引擎将生成的密钥序列传递给相应的密钥管理程序的过程中、以及在密钥管理程序存储密钥序列的过程中,都有可能出现错误,导致双方的密钥管理程序在密钥池中存储的密钥序列出现不同步的情况,特别是可能由于其中一方丢失了某一段密钥序列(例如:可能因为网络传输线路故障或者设备重启等原因),导致双方密钥池中的密钥序列处于时序未对齐状态,即:出现时序不同步的状况。

在这种情况下,双方密钥管理程序每次在响应应用程序请求之前执行的同步操作通常都无法成功,密钥管理程序自然无法向应用程序提供其所需的密钥,导致整个密钥管理系统无法正常工作。通常只能由双方的密钥管理程序把各自的密钥池清空,等待量子引擎生成新的密钥后再重新进行同步并响应应用程序的请求。由此可见,目前的密钥同步方法在出现时序不同步的情况下,不仅会导致密钥管理程序的可用性降低,而且浪费通过协商过程生成的量子密钥资源。

发明内容

本申请实施例提供一种用于量子密钥分发过程的密钥同步方法和装置,可以解决现有的密钥同步方法在时序不同步的情况下导致密钥管理程序可用性降低、以及浪费量子密钥资源的问题。本申请实施例还提供一种量子密钥同步分发方法和装置,以及一种用于量子密钥分发过程的密钥封装传递方法及装置。

本申请提供一种用于量子密钥分发过程的密钥同步方法,所述方法在向应用程序分发量子密钥的一对密钥管理程序中实施,包括:

比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;

若不一致,则双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致;

其中,任一方密钥池中的可用密钥块是指,按照从相对应的量子引擎程序接收的顺序存储在密钥池中的、待分发给应用程序的密钥块;所述可用密钥块的时序同步标识,用于表征与所述双方分别相对应的量子引擎程序同步生成所述密钥块的时序信息。

可选的,所述任一方密钥池中的可用密钥块是由相对应的量子引擎程序通过如下方式提供的:

当通过量子密钥协商过程获取的密钥序列的长度大于或等于预设阈值时,执行下述操作:

按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;

获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;

将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

可选的,在所述按照所述预设阈值将所述密钥序列分割成相应长度的密钥块之后,还包括:

与对方量子引擎程序比对双方分割的密钥块的内容是否一致;

若一致,则执行所述获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤。

可选的,当所述与对方量子引擎程序比对双方分割的密钥块的内容是否一致的结果为一致时,还包括:

与对方量子引擎程序比对双方的时序同步标识是否一致;

若一致,则执行所述获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤;

否则,用其中表征时序较晚的时序同步标识更新自己的时序同步标识,并执行所述获取时须同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤。

可选的,所述比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,包括:

其中一方向对方发送时序同步请求,所述时序同步请求中至少包含请求方密钥池中首个可用密钥块的时序同步标识;

所述时序同步请求的接收方,判断接收到的所述时序同步请求中携带的时序同步标识与自己密钥池中的首个可用密钥块的时序同步标识是否一致;

所述时序同步请求的接收方至少将比对结果返回给所述请求方。

可选的,所述双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致,包括:

由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块;

比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,并在不一致时转到所述由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块的步骤执行。

可选的,当双方密钥池中的首个可用密钥块的时序同步标识一致时,还包括:

比对双方密钥池中的首个可用密钥块的内容是否一致;

若不一致,则双方各自弃用所述内容不一致的首个可用密钥块,并转到所述比对双方密钥池中的首个可用密钥块的时序同步标识是否一致的步骤执行。

可选的,所述比对双方密钥池中的首个可用密钥块的内容是否一致,包括:

双方按照预设的摘要算法、各自计算密钥池中首个可用密钥块的摘要值;

双方比对各自计算得到的所述摘要值是否一致,若一致则判定双方密钥池中的首个可用密钥块的内容一致,否则不一致。

可选的,在所述比对双方密钥池中的首个可用密钥块的时序同步标识是否一致之前,包括:

其中一方接收来自应用程序的密钥获取请求;

当双方密钥池中的首个可用密钥块的时序同步标识一致时,还包括:

所述密钥获取请求的接收方,将密钥池中首个可用密钥块中的密钥序列返回给所述应用程序。

相应的,本申请还提供一种用于量子密钥分发过程的密钥同步装置,包括:

时序同步标识比对单元,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;

密钥块时序同步单元,用于当所述时序同步标识比对单元的输出结果为不一致时,双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致。

可选的,所述时序同步标识比对单元进行比对的双方密钥池中的可用密钥块是由量子引擎单元提供的;所述量子引擎单元包括:

长度判断子单元,用于判断通过量子密钥协商过程获取的密钥序列的长度是否大于或等于预设阈值;

密钥块分割子单元,用于当所述长度判断子单元的输出结果为是时,按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;

时序封装子单元,用于获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;

密钥块传递子单元,用于将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

可选的,所述时序同步标识比对单元包括:

请求发送子单元,用于其中一方向对方发送时序同步请求,所述时序同步请求中至少包含请求方密钥池中首个可用密钥块的时序同步标识;

标识比对子单元,用于所述时序同步请求的接收方,判断接收到的所述同步请求中携带的时序同步标识与自己密钥池中的首个可用密钥块的时序同步标识是否一致;

结果返回子单元,用于所述时序同步请求的接收方至少将比对结果返回给所述请求方。

可选的,所述密钥块时序同步单元包括:

密钥块弃用子单元,用于由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块;

同步比对子单元,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,并在不一致时触发所述密钥块弃用子单元工作。

可选的,所述装置还包括:

密钥块内容同步单元,用于当所述时序同步标识比对单元的输出结果为一致时,比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;所述密钥块内容同步单元,还用于当所述密钥块时序同步单元工作完毕后,比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;

双方弃用单元,用于当所述密钥块内容同步单元的输出为不一致时,双方各自弃用所述内容不一致的首个可用密钥块,并触发所述时序同步标识比对单元工作。

可选的,所述密钥块内容同步单元,包括:

摘要值计算子单元,用于双方按照预设的摘要算法、各自计算密钥池中首个可用密钥块的摘要值;

摘要值比对子单元,用于双方比对各自计算得到的所述摘要值是否一致,若一致则判定双方密钥池中的首个可用密钥块的内容一致,否则不一致。

可选的,所述装置还包括:

密钥获取请求接收单元,用于其中一方接收来自应用程序的密钥获取请求,并触发所述时序同步标识比对单元工作;

所述装置还包括:

密钥序列发送单元,用于当所述时序同步标识比对单元的输出结果为一致时,以及当所述密钥块时序同步单元工作完毕后,所述密钥获取请求的接收方,将密钥池中首个可用密钥块中的密钥序列返回给所述应用程序。

此外,本申请还提供一种量子密钥同步分发方法,所述方法在向应用程序分发量子密钥的一对密钥管理程序中实施,包括:

其中一方接收来自应用程序的密钥获取请求;

比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;

若一致,双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列。

可选的,当所述比对双方密钥池中的首个可用密钥块的时序同步标识是否一致的结果为不一致时,还包括:

双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方首个可用密钥块的时序同步标识一致;

并转到所述双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列的步骤执行。

可选的,所述双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方首个可用密钥块的时序同步标识一致,包括:

由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块;

比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,并在不一致时转到所述由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块的步骤执行。

可选的,在执行所述双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中的首个可用密钥块中的密钥序列之前,还包括:

比对双方密钥池中的、时序同步标识一致的首个可用密钥块的内容是否一致;

并在一致时,执行所述双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中的首个可用密钥块中的密钥序列的步骤。

可选的,当所述比对双方密钥池中的、时序同步标识一致的首个可用密钥块的内容是否一致的结果为不一致时,包括:

双方各自弃用所述内容不一致的首个可用密钥块,并转到所述比对双方密钥池中的首个可用密钥块的时序同步标识是否一致的步骤执行。

相应的,本申请还提供一种量子密钥同步分发装置,包括:

密钥获取请求接收单元,用于其中一方接收来自应用程序的密钥获取请求;

时序同步标识比对单元,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;

密钥序列返回单元,用于当所述时序同步标识比对单元的输出结果为一致时,双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列。

可选的,所述装置还包括:

密钥块时序同步处理单元,用于当所述时序同步标识比对单元的输出结果为不一致时,双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致,并触发所述密钥序列返回单元工作。

可选的,所述装置还包括:

密钥块内容同步处理单元,用于在触发所述密钥序列返回单元工作之前,比对双方密钥池中的、时序同步标识一致的首个可用密钥块的内容是否一致,并在一致时,触发所述密钥序列返回单元工作。

可选的,所述装置还包括:

双方密钥块弃用单元,用于当所述密钥块内容同步处理单元的输出为不一致时,双方各自弃用所述内容不一致的首个可用密钥块,并触发所述时序同步标识比对单元工作。

此外,本申请还提供一种用于量子密钥分发过程的密钥封装传递方法,所述方法在参与量子密钥协商的一对量子引擎程序中分别实施,包括:

当通过量子密钥协商过程获取的密钥序列的长度大于或等于预设阈值时,执行下述操作:

按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;

获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;

将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中;

其中,为所述密钥块添加的时序同步标识,用于表征参与量子密钥协商的双方量子引擎程序同步生成所述密钥块的时序信息。

可选的,所述时序同步标识包括:计数器存储的数值;所述计数器的初始值与对方量子引擎程序维护的计数器的初始值相同;

所述获取时序同步标识包括:读取所述计数器的数值;

当通过量子密钥协商过程获取的密钥序列的长度大于或等于预设阈值时,还包括:采用与对方量子引擎程序相同的方式,将所述计数器的数值加一。

可选的,在所述通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装之后,执行所述采用与对方量子引擎程序相同的方式,将所述计数器的数值加一的步骤。

可选的,所述密钥块的预设位置包括:所述密钥块的第一个密钥比特之前。

可选的,在所述按照所述预设阈值将所述密钥序列分割成相应长度的密钥块之后,还包括:

与对方量子引擎程序比对双方分割的密钥块的内容是否一致;

若一致,则执行所述获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤;

否则,丢弃所述分割的密钥块,并结束本方法的执行。

可选的,所述与对方量子引擎程序比对双方分割的密钥块的内容是否一致,包括:

采用与对方量子引擎程序相同的摘要算法,计算所述分割的密钥块的摘要值;

与对方量子引擎程序比对双方计算得到的所述摘要值是否一致,若一致则判定双方分割的密钥块的内容一致,否则不一致。

可选的,当所述与对方量子引擎程序比对双方分割的密钥块的内容是否一致的结果为一致时,还包括:

与对方量子引擎程序比对双方的时序同步标识是否一致;

若一致,则执行所述获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤;

否则,用其中表征时序较晚的时序同步标识更新自己的时序同步标识,并执行所述获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装的步骤。

相应的,本申请还提供一种用于量子密钥分发过程的密钥封装传递装置,包括:

密钥长度判断单元,用于当通过量子密钥协商过程获取的密钥序列的长度大于或等于预设阈值时,触发下述单元工作;

密钥块分割单元,用于按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;

时序封装单元,用于获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;

密钥块传递单元,用于将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

可选的,所述时序封装单元,具体用于读取计数器的数值,并通过在预设位置添加所述数值的方式对所述密钥块进行封装;

所述装置还包括:

时序同步标识更新单元,具体用于当所述密钥长度监测单元的输出为是之后,采用与对方量子引擎程序相同的方式,将所述计数器的数值加一。

可选的,所述时序封装单元完成封装操作后,触发所述时序同步标识更新单元工作。

可选的,所述装置还包括:

密钥块内容比对单元,用于在所述密钥块分割单元完成分割操作后,与对方量子引擎程序比对双方分割的密钥块的内容是否一致,并在一致时触发所述时序封装单元工作,否则触发密钥块丢弃单元工作;

密钥块丢弃单元,用于丢弃所述分割的密钥块,并结束本方法的执行。

可选的,所述密钥块内容比对单元,具体用于采用与对方量子引擎程序相同的摘要算法,计算所述分割的密钥块的摘要值,与对方量子引擎程序比对双方计算得到的所述摘要值是否一致,若一致则触发所述时序封装单元工作,否则触发密钥块丢弃单元工作。

可选的,所述装置还包括:

同步标识比对单元,用于当所述密钥块内容比对单元的比对结果为一致时,与对方量子引擎程序比对双方的时序同步标识是否一致,并在一致时,触发所述时序封装单元工作,否则触发时序同步标识强制更新单元工作;

时序同步标识强制更新单元,用于用其中表征时序较晚的时序同步标识更新自己的时序同步标识,并触发所述时序封装单元工作。

与现有技术相比,本申请具有以下优点:

本申请提供的用于量子密钥分发过程的密钥同步方法,在向应用程序分发量子密钥的一对密钥管理程序中实施,所述方法包括:比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;若不一致,则双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致。

本申请提供的上述密钥同步方法,由于在双方量子密钥管理程序的密钥池中存储的可用密钥块,具有表征双方量子引擎程序同步生成所述可用密钥块的时序信息,因此可以通过双方的比对判断出双方密钥池中的首个可用密钥块是否满足时序同步的要求,并且在不满足时,双方可以从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块,使得双方密钥池中的首个可用密钥块的时序同步标识一致,也即,双方仅需要丢弃时序不同步的少数几个可用密钥块,即可快速地重新恢复密钥池的时序同步状态,而不需要清空整个密钥池,为快速、有效地响应应用程序的密钥获取请求提供了保障,从而大大提高了密钥管理程序的可用性,有效地避免了对量子密钥资源的浪费。

附图说明

图1是量子密钥分发系统的架构示意图;

图2是本申请的一种用于量子密钥分发过程的密钥封装传递方法的实施例的流程图;

图3是本申请实施例提供的对分割的密钥块内容以及时序同步标识进行同步验证的处理流程图;

图4是本申请实施例提供的封装后的密钥块的数据结构示意图;

图5是本申请的一种用于量子密钥分发过程的密钥封装传递装置的实施例的示意图;

图6是本申请的一种用于量子密钥分发过程的密钥同步方法的实施例的流程图;

图7是本申请的一种用于量子密钥分发过程的密钥同步装置的实施例的示意图;

图8是本申请的一种量子密钥同步分发方法的实施例的流程图;

图9是本申请的一种量子密钥同步分发装置的实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。

在本申请中,分别提供了一种用于量子密钥分发过程的密钥同步方法及装置,一种量子密钥同步分发方法及装置,以及一种用于量子密钥分发过程的密钥封装传递方法及装置。在下面的实施例中逐一进行详细说明。

对于一次量子密钥分发过程来说,执行加解密操作的一对应用程序,通常会向各自的密钥管理程序发起密钥获取请求,而密钥管理程序则从各自的密钥池中选择密钥块返回给应用程序,其中,密钥池中的密钥块是由与密钥管理程序相对应的量子引擎程序提供的。在本文实施例中,将与执行加解密操作的应用程序分别对应的一对密钥管理程序称作双方的密钥管理程序,将与密钥管理程序分别对应的一对量子引擎程序称作双方的量子引擎程序。在具体实施时,处于同一方(例如:加密方或者解密方)的应用程序、密钥管理程序、以及量子引擎程序可以由同一个物理设备承载,也可以由不同的物理设备承载,例如:应用程序运行于个人电脑上,密钥管理程序和量子引擎程序由同一个量子密钥分发设备承载、或者分别由密钥管理设备和量子密钥分发设备承载,都是可以的。

本申请提供的用于量子密钥分发过程的密钥同步方法,其核心在于:在双方量子密钥管理程序的密钥池中存储的可用密钥块,具有表征双方量子引擎程序同步生成所述可用密钥块的时序信息,因此可以通过双方的比对判断出双方密钥池中的首个可用密钥块是否满足时序同步的要求,并且在不满足时,双方仅需要丢弃时序不同步的少数几个可用密钥块,即可快速地、重新恢复密钥池的时序同步状态,而不需要清空整个密钥池,为快速、有效地响应应用程序的密钥获取请求提供了保障,从而大大提高了密钥管理程序的可用性,有效地避免了对量子密钥资源的浪费。

所述密钥管理程序的密钥池,是指用于存储量子引擎程序提供的密钥块的存储空间,其中的密钥块是按照从量子引擎程序接收的顺序进行存储的;所述可用密钥块,是指待分发给应用程序的密钥块,首个可用密钥块则是指按照接收顺序依次存储的可用密钥块中的第一个。

在具体实施时,所述密钥池可以采用环形队列的数据结构实现,队列中包含用于存储可用密钥块的若干个单元,队列的读指针通常指向首个可用密钥块,队列的写指针通常指向最后一个可用密钥块之后的单元。密钥管理程序通过维护读指针和写指针实现对密钥池中可用密钥块的管理,当接收到来自量子引擎程序的密钥块时,可以将所述密钥块添加到写指针指向的单元中,并将写指针向后移动一个单元,当接收到来自应用程序的密钥获取请求时,可以将读指针指向的首个可用密钥块中的密钥序列返回给应用程序,并将读指针向后移动一个单元。此处给出了密钥管理程序采用环形队列管理密钥池的一种具体实施方式,在具体应用中,可以采用其他实施方式,本申请对此不作具体限定。

在将首个可用密钥块中的密钥序列返回给应用程序之前,双方密钥管理程序判断双方的首个可用密钥块是否满足时序同步的要求,并且在时序不同步的情况下快速地重新恢复同步,为了实现这一功能,本申请的技术方案提供了一种新的密钥封装传递方法,即:量子引擎程序在传递给密钥管理程序的密钥块中封装了时序同步标识,在此基础上双方的密钥管理程序就可以快速地实现上述同步功能。为了便于理解,首先描述本申请提供的用于量子密钥分发过程的密钥封装传递方法的实施例。

参考图2,其为本申请的一种用于量子密钥分发过程的密钥封装传递方法的实施例的流程图,所述方法通常在参与量子密钥协商的一对量子引擎程序中分别实施,其核心在于:在传递给密钥管理程序的密钥块中封装了时序同步标识,所述时序同步标识,用于表征参与量子密钥协商的双方量子引擎程序同步生成所述密钥块的时序信息。

在具体实施时,可以采用多种方式获取所述时序同步标识,并用获取的时序同步标识对密钥块进行封装。例如:所述时序同步标识可以由统一的控制中心维护,实施本方法的量子引擎程序(即:宿主程序)与对方量子引擎程序同步生成某一密钥块后,可以向所述控制中心获取时序同步标识,控制中心可以在向双方提供时序同步标识后,对时序同步标识进行更新;如果承载宿主程序的设备以及承载对方量子引擎程序的设备,能够利用物理机制或者其它机制提供满足精度要求的时间戳信息,那么也可以用获取的时间戳信息作为时序同步标识对密钥块进行封装。

优选地,本实施例提供一种由宿主程序采用计数器维护时序同步标识的优选实施方式,这种实施方式简便易行,而且无需依赖额外的控制中心、或者满足精度要求的物理同步机制。在优选实施方式中,宿主程序采用与对方量子引擎程序相同的方式在本地维护一个计数器,其初始值为0,在与对方量子引擎程序同步生成密钥块的过程中,所述计数器的数值也会相应更新,例如:生成第一个密钥块时,双方计数器的数值都为0,生成第二个密钥块时,双方计数器的数值都更新为1......,依次类推,从而所述计数器的数值能够表征参与量子密钥协商的双方量子引擎程序同步生成密钥块的时序信息。

下面,在上述以采用计数器维护时序同步标识的优选实施方式的基础上,对本实施例提供的一种用于量子密钥分发过程的密钥封装传递方法的实施方式进行描述。本实施例的一种用于量子密钥分发过程的密钥封装传递方法包括如下步骤:

步骤201、判断通过量子密钥协商过程获取的密钥序列的长度是否大于或等于预设阈值,若是,则执行步骤202。

与对方量子引擎程序遵循量子密钥分发协议(QKD协议)协商生成的密钥序列通常存储在宿主程序的缓存(buffer)中,本步骤判断缓存中的密钥序列的长度是否大于或等于预设阈值,并在大于或等于预设阈值时执行步骤202。

在具体实施时,可以根据具体需要设置预设阈值N,例如:可以设置N为1024字节(byte),相当于以1024字节为粒度向密钥序列中添加时序同步标识,从而在密钥管理程序中也以1024字节为基本单位进行密钥池的快速同步。

步骤202、按照所述预设阈值将所述密钥序列分割成相应长度的密钥块。

本步骤按照所述预设阈值、将缓存中存储的密钥系列分割成相应长度的密钥块。例如:预设阈值N为1024字节,缓存中存储的密钥序列的长度为1500字节,那么就可以将密钥序列中的第1至第1024字节分割成一个密钥块。而当剩余的476字节与后续生成的密钥序列的累计长度再次超过1024字节后,再进行分割。

本步骤分割密钥块之后,为了保证传递给密钥管理程序的密钥块与对方相同,本实施例还提供与对方量子引擎程序对分割的密钥块内容以及时序同步标识进行同步验证的优选实施方式。同步验证过程包括如下所述的步骤202-1至202-3,下面结合图3进行说明。

步骤202-1、与对方量子引擎程序比对双方分割的密钥块的内容是否一致,若一致,执行步骤202-2,否则丢弃所述分割的密钥块,并结束本方法的执行。

优选地,宿主程序存储在缓存中的密钥序列与对方量子引擎程序通常是相同的,为了进一步确保传递给密钥管理程序的密钥块,与对方传递给其密钥管理程序的密钥块内容相同,可以与对方量子引擎程序比对双方分割的密钥块的内容是否一致,若不一致,可以丢弃所述分割的密钥块,并结束本方法的执行;若一致,可以直接执行步骤203进行密钥块的封装,作为本实施例给出的优选实施方式,还可以在封装前执行步骤202-2,与对方量子引擎程序验证时序同步标识的一致性。

所述与对方量子引擎程序比对各自分割的密钥块的内容是否一致,包括:采用与对方量子引擎程序相同的摘要算法,计算所述分割的密钥块的摘要值;与对方量子引擎程序比对双方计算得到的所述摘要值是否一致,若一致则判定双方分割的密钥块的内容一致。所述摘要算法也称哈希(hash)算法或者散列算法,包括但不局限于:MD5算法、SHA1算法、SHA256算法等,在具体实施时,只要宿主程序和对方量子引擎程序采用相同的摘要算法即可,本实施例并不对具体算法进行限定。

在具体实施时,可以由宿主程序或者是对方量子引擎程序发起比对过程,如果宿主程序发起比对过程,宿主程序采用预设摘要算法计算已分割的密钥块的摘要值,随后可以通过经典信道向对方量子引擎程序发起内容同步请求,所述请求中携带所述摘要值,并接收对方量子引擎程序返回的同步成功应答或者同步失败应答;如果对方量子引擎程序发起比对过程,那么宿主设备接收对方发送的内容同步请求后,可以将自己计算的摘要值与所述请求中携带的摘要值进行比对,若两者一致,向对方返回同步成功应答,否则返回同步失败应答。

步骤202-2、与对方量子引擎程序比对双方的时序同步标识是否一致,若一致,执行步骤203进行密钥块的封装,若不一致,则执行步骤202-3。

宿主程序与对方量子引擎程序用于封装密钥块的时序同步标识,在通常情况下是一致的,但是实际应用环境是复杂的,在某些个别情况下可能出现两者不一致的情况,为了避免出现这种情况,本实施例提供在封装密钥块之前对时序同步标识进行同步验证的优选实施方式:与对方量子引擎程序比对双方的时序同步标识是否一致,若一致,执行步骤203进行密钥块的封装,否则执行步骤202-3进行时序同步标识的强制同步。

在本实施例中的时序同步标识是采用计数器维护的,因此比对的过程就是将本地计数器的数值与对方计数器的数值进行比较的过程,与上面描述的对密钥块内容进行同步验证的实施方式类似,对时序同步标识的验证过程也可以由宿主程序发起或者由对方量子引擎程序发起,此处不再赘述。

步骤202-3、用其中表征时序较晚的时序同步标识更新自己的时序同步标识,然后转到步骤203进行密钥块的封装。

执行到本步骤,说明宿主程序与对方量子引擎程序用于封装密钥块的时序同步标识不一致,此时,为了避免与之前已经传递给密钥管理程序的密钥块所携带的时序同步标识冲突,宿主程序可以用其中表征时序较晚的时序同步标识更新自己的时序同步标识。本实施例中的时序同步标识是采用计数器维护的,并且约定数值越大表征的时序越晚,因此宿主程序可以用参与比对的较大的计数器数值更新自己的时序同步标识,由于对方量子引擎程序也同样实施本方法,因此也执行了上述更新操作,从而双方的时序同步标识,即:计数器数值重新恢复了同步。

在具体实施时,以宿主设备发起时序同步标识的同步请求为例,对方量子引擎设备可以在比对后用较大的计数器数值更新自己的计数器数值,并在返回的比对结果中携带较大的计数器数值(相当于双方的新的时序同步基),从而宿主设备也可以执行相应的更新操作。

需要说明的是,在具体实施时如果同时采用上述两种优选实施方式(对密钥块内容的同步验证,以及对时序同步标识的同步验证),那么在步骤202-1中发起请求的一方可以一并携带密钥块的摘要值和本地计数器的数值,接收方可以一次性接收上述信息,从而可以简化交互过程。

步骤203、获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装。

本步骤首先获取时序同步标识,由于本实施例中的时序同步标识是采用计数器维护的,因此可以读取所述计数器的数值,即得到所述时序同步标识。

然后用所述时序同步标识对已分割好的密钥块进行封装,即:在密钥块的预设位置添加时序同步标识,使得传递给密钥管理程序的密钥块携带时序同步标识。具体实施时,所述预设位置可以是密钥块中的任意位置,只要与相对应的密钥管理程序约定好即可。

考虑到便于操作与管理,本实施例采用在所述密钥块的第一个密钥比特之前添加时序同步标识的实施方式,即:将时序同步标识(计数器数值)添加到所述密钥块的头部。在本实施例的一个具体例子中,在每个密钥块头部添加长度为8个字节的计数器数值,请参见图4,其为所述具体例子中封装后的密钥块的数据结构示意图。

步骤204、将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

在具体实施时,可以根据具体情况采用不同的方式将所述封装后的密钥块传递给相对应的密钥管理程序,从而密钥管理程序按照接收的顺序在其密钥池中存储所述密钥块。如果宿主程序和相对应的密钥管理程序分别运行在不同的设备上,那么宿主程序可以通过两个设备之间的网络连接将所述密钥块传输给相对应的密钥管理程序,如果宿主程序和相对应的密钥管理程序运行在同一个设备上,那么宿主设备可以通过进程间通讯机制,将所述封装后的密钥块传递给相对应的密钥管理程序。

执行完本步骤,宿主程序完成了本次的封装及传递操作。但是作为本实施例来说,由于采用了由宿主程序采用计数器维护时序同步标识的优选实施方式,因此宿主程序还需要执行对时序同步标识的维护操作:采用与对方量子引擎程序相同的方式,将所述计数器的数值加一,从而为下一次的封装及传递操作做好准备。具体实施时,可以在步骤203执行完毕或者在本步骤204执行完毕,执行上述维护操作。

例如:步骤203在封装密钥块时读取的计数器数值为1,那么该密钥块携带的时序同步标识为1,在将所述密钥块传递给相对应的密钥管理程序后,可以将所述计数器的数值加1,即:将计数器的数值更新为2,那么下一次封装传递的密钥块携带的时序同步标识为2。

至此,通过步骤201-204,对本实施例提供的用于量子密钥分发过程的密钥封装传递方法的实施方式进行了详细描述。由于双方的量子引擎程序分别实施上述方法,从而保证了向各自密钥管理程序传递的密钥块都携带了时序同步标识,从而为双方的密钥管理程序判断密钥池中的首个可用密钥块是否满足时序同步的要求、以及在不满足时进行相应的处理以快速恢复同步状态,提供了有力的参考依据。

在上述的实施例中,提供了一种用于量子密钥分发过程的密钥封装传递方法,与之相对应的,本申请还提供一种用于量子密钥分发过程的密钥封装传递装置。请参看图5,其为本申请的一种用于量子密钥分发过程的密钥封装传递装置的实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种用于量子密钥分发过程的密钥封装传递装置,包括:密钥长度判断单元501,用于当通过量子密钥协商过程获取的密钥序列的长度大于或等于预设阈值时,触发下述单元工作;密钥块分割单元502,用于按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;时序封装单元503,用于获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;密钥块传递单元504,用于将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

可选的,所述时序封装单元,具体用于读取计数器的数值,并通过在预设位置添加所述数值的方式对所述密钥块进行封装;

所述装置还包括:

时序同步标识更新单元,具体用于当所述密钥长度监测单元的输出为是之后,采用与对方量子引擎程序相同的方式,将所述计数器的数值加一。

可选的,所述时序封装单元完成封装操作后,触发所述时序同步标识更新单元工作。

可选的,所述装置还包括:

密钥块内容比对单元,用于在所述密钥块分割单元完成分割操作后,与对方量子引擎程序比对双方分割的密钥块的内容是否一致,并在一致时触发所述时序封装单元工作,否则触发密钥块丢弃单元工作;

密钥块丢弃单元,用于丢弃所述分割的密钥块,并结束本方法的执行。

可选的,所述密钥块内容比对单元,具体用于采用与对方量子引擎程序相同的摘要算法,计算所述分割的密钥块的摘要值,与对方量子引擎程序比对双方计算得到的所述摘要值是否一致,若一致则触发所述时序封装单元工作,否则触发密钥块丢弃单元工作。

可选的,所述装置还包括:

同步标识比对单元,用于当所述密钥块内容比对单元的比对结果为一致时,与对方量子引擎程序比对双方的时序同步标识是否一致,并在一致时,触发所述时序封装单元工作,否则触发时序同步标识强制更新单元工作;

时序同步标识强制更新单元,用于用其中表征时序较晚的时序同步标识更新自己的时序同步标识,并触发所述时序封装单元工作。

此外,本申请还提供一种用于量子密钥分发过程的密钥同步方法,所述方法通常在向应用程序分发量子密钥的一对密钥管理程序中实施。双方密钥管理程序从各自对应的量子引擎程序接收待分发给应用程序的可用密钥块,并按照接收的顺序将可用密钥块存储在各自的密钥池中,此后,双方的密钥管理程序可以通过本申请提供的密钥同步方法,判断双方密钥池中的首个可用密钥块是否满足时序同步的要求,并在不满足的时候快速地使双方密钥池恢复时序同步。所述方法可以在接收到来自应用程序的密钥获取请求后触发实施,也可以在未接收密钥获取时作为一种常规的同步方法实施、以便为随后接收到的密钥获取请求提供快速响应。

请参考图6,其为本申请提供的一种用于量子密钥分发过程的密钥同步方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。为了便于描述,将双方的密钥管理程序分别称为Alice和Bob,本实施例的一种用于量子密钥分发过程的密钥同步方法包括如下步骤:

步骤601、比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,若不一致,则执行步骤602。

具体实施时,可以由Alice和Bob中的任意一方发起比对过程,对于由密钥获取请求触发的实施方式,通常由先接收密钥获取请求的一方发起比对过程。本实施例以Alice先接收密钥获取请求为例进行说明,Alice向Bob发送时序同步请求,所述时序同步请求中至少携带Alice的密钥池中首个可用密钥块的时序同步标识,例如,对于采用环形队列的实施方式,读指针所指向的密钥块即为首个可用密钥块,因此Alice可以将读指针所指向的可用密钥块的时序同步标识提取出来,将其封装在时序同步请求中发送给Bob。Bob接收所述时序同步请求后,判断所述时序同步请求携带的时序同步标识与自己密钥池中的首个可用密钥块的时序同步标识是否一致,若一致,则说明双方首个可用密钥块满足时序同步的要求,否则说明出现了双方密钥池时序不同步的情况,这时可以执行步骤602。

步骤602、双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致。

本步骤的主要目的在于,Alice和Bob采用识别并弃用不同步密钥块的方式,快速使得双方密钥池恢复到同步状态。其核心在于,双方从各自密钥池的首个可用密钥块开始,找到时序同步标识与对方相同的可用密钥块,并将在其之前接收到的可用密钥块丢弃。

在具体实施时,可以采用多种方式。例如:Alice和Bob可以分别将自己密钥池中的前N个(N可以预先设定)可用密钥块的时序同步标识发送给对方,双方可以根据接收到的时序同步标识以及本地密钥池中各可用密钥块的时序同步标识进行比对,找到双方共同具有的表征时序最早的时序同步标识,并将携带该标识的可用密钥块之前的各可用密钥块弃用(即:丢弃),从而使得双方密钥池中的首个可用密钥块的时序同步标识一致。

例如:Alice的密钥池中的前5个可用密钥块的时序同步标识为{1、3、4、5、6},Bob的密钥池中的前5个可用密钥块的时序同步标识为{2、3、4、5、6},双方通过比对,可以找到双方共同具有的表征时序最早的时序同步标识为3,那么Alice可以弃用时序同步标识为1的首个可用密钥块,从而使得时序同步标识为3的可用密钥块成为首个可用密钥块,同样的道理Bob可以弃用时序同步标识为2的首个可用密钥块,从而也使得时序同步标识为3的可用密钥块成为首个可用密钥块,从而实现了双方密钥池的快速同步。在具体实施时,以采用环形队列为例,弃用可用密钥块的操作可以通过移动读指针实现,例如:将读指针从指向时序同步标识为1的首个可用密钥块、调整为指向同步标识为3的可用密钥块,那么时序同步标识为1的可用密钥块被丢弃,时序同步标识为3的可用密钥块成为首个可用密钥块。

采用上述实施方式,由于时序不同步的情况通常无法预测,因此难以设置恰当的N值,特别是设置N值过大可能浪费网络带宽,针对这种情况本实施例提供一种逐次比对的优选实施方式,即:当步骤101判断出时序不同步的情况后,可以由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块;然后再比对双方密钥池的首个可用密钥块的时序同步标识是否一致,一致则结束本步骤的执行,否则转到所述由比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块的步骤执行。

仍沿用上面给出的具体例子进行说明,Alice的密钥池中的前5个可用密钥块的时序同步标识为{1、3、4、5、6},Bob的密钥池中的前5个可用密钥块的时序同步标识为{2、3、4、5、6},在步骤601的比对中,Alice是时序同步标识表征时序较早的一方,因此Bob可以通知Alice执行弃用操作,Alice丢弃时序同步标识为1的首个可用密钥块,随后Alice再次发起时序同步请求,将其首个可用密钥块的时序同步标识3发送给Bob,Bob用接收到的时序同步标识3与自己的首个可用密钥块的时序同步标识2进行比对,判断出自己需要执行弃用操作,Bob可以将该结果通知Alice,同时自己丢弃时序同步标识为2的首个可用密钥块,依次类推,Alice再发起时序同步请求,Bob经过比对判断出双方的首个可用密钥块的时序同步标识一致,都是3,因此可以结束本步骤的执行,Alice和Bob密钥池中的首个可用密钥块已经满足时序同步的要求。

通过上述描述可以看出,本实施例在发生时序不同步的情况下,仅需要根据时序同步标识丢弃若干个可用密钥块,即可恢复双方密钥池的时序同步状态,与现有技术需要清空整个密钥池相比,不仅大大提高了密钥管理程序的可用性,而且避免浪费量子密钥资源。

由于在时序同步的情况下,密钥块的内容不匹配的可能性通常比较小,因此可以认为此时完成了双方的密钥同步操作。此后,就可以根据接收到的密钥获取请求,将密钥池中的首个可用密钥块中的密钥序列返回给发起所述请求的应用程序。

优选地,为了保证双方密钥管理程序向应用程序提供的密钥完全相同,本实施例还提供对密钥块的内容进行同步验证的优选实施方式,即:当双方密钥池中的首个可用密钥块的时序同步标识一致时,包括步骤601比对结果为一致的情况,也包括通过步骤602的处理使得双方首个可用密钥块的时序同步标识一致的情况,都可以进一步执行步骤603比对双方首个可用密钥块的内容是否一致,具体描述请参见下面的描述。

步骤603、比对双方密钥池中的首个可用密钥块的内容是否一致;若不一致,转到步骤604执行。

所述比对双方密钥池中的首个可用密钥块的内容是否一致,包括:双方按照预设的摘要算法、各自计算密钥池中首个可用密钥块的摘要值;双方比对各自计算得到的所述摘要值是否一致,若一致则说明双方密钥池中的首个可用密钥块的内容一致,否则不一致。

具体实施时,可以由Alice和Bob中的任意一方发起内容比对过程,以Alice发起为例,Alice采用预设摘要算法计算自己的首个可用密钥块中的密钥序列的摘要值,随后Alice向Bob发送内容同步请求,所述内容同步请求中携带Alice计算得到的摘要值,Bob接收所述内容同步请求后,判断所述请求携带的摘要值与自己计算得到的、首个可用密钥块中的密钥序列的摘要值是否一致,若一致,则说明双方首个可用密钥块的内容是一致的,可以向Alice返回代表比对结果一致的成功应答,否则返回失败应答。

如果本步骤的比对结果为一致,同步过程结束,否则双方执行步骤604。

步骤604:双方各自弃用所述内容不一致的首个可用密钥块,并转到步骤601执行。

由于双方首个可用密钥块虽然满足时序同步的要求,但是内容并不一致,在这种情况下,双方可以各自弃用所述内容不一致的首个可用密钥块。在具体实施时,以环形队列为例,可以将环形队列的读指针向后移动一个单元,即完成丢弃所述内容不一致的首个可用密钥块的操作,而当前读指针指向的、位于被丢弃的可用密钥块之后的可用密钥块成为首个可用密钥块。

双方各自完成上述弃用操作后,需要重新验证当前的首个可用密钥块的同步状况,因此可以转到步骤601继续执行。通过重复上面描述的时序同步操作、以及内容同步操作,最终使得双方密钥池中的首个可用密钥块的时序同步标识一致,而且内容也一致,从而完成了双方的密钥同步操作。此后就可以根据接收到的密钥获取请求,将密钥池中的首个可用密钥块中的密钥序列返回给发起所述请求的应用程序。

综上所述,本实施例提供的用于量子密钥分发过程的密钥同步方法,由于在双方量子密钥管理程序的密钥池中存储的可用密钥块,具有表征双方量子引擎程序同步生成所述可用密钥块的时序信息,因此可以通过双方的比对判断出双方密钥池中的首个可用密钥块是否满足时序同步的要求,并且在不满足时,双方可以从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块,使得双方密钥池中的首个可用密钥块的时序同步标识一致,也即,双方仅需要丢弃时序不同步的少数几个密钥块即可重新恢复密钥池的时序同步状态,而不需要清空整个密钥池,为快速、有效地响应应用程序的密钥获取请求提供了保障,从而大大提高了密钥管理程序的可用性,有效地避免了对量子密钥资源的浪费。

在上述的实施例中,提供了一种用于量子密钥分发过程的密钥同步方法,与之相对应的,本申请还提供一种用于量子密钥分发过程的密钥同步装置。请参看图7,其为本申请的一种用于量子密钥分发过程的密钥同步装置的实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种用于量子密钥分发过程的密钥同步装置,包括:时序同步标识比对单元701,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;密钥块时序同步单元702,用于当所述时序同步标识比对单元的输出结果为不一致时,双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致;密钥块内容同步单元703,用于当所述时序同步标识比对单元的输出结果为一致时,比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;还用于当所述密钥块时序同步单元工作完毕后,比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;双方弃用单元704,用于当所述密钥块内容同步单元的输出为不一致时,双方各自弃用所述内容不一致的首个可用密钥块,并触发所述时序同步标识比对单元工作。

可选的,所述时序同步标识比对单元进行比对的双方密钥池中的可用密钥块是由量子引擎单元提供的;所述量子引擎单元包括:

长度判断子单元,用于判断通过量子密钥协商过程获取的密钥序列的长度是否大于或等于预设阈值;

密钥块分割子单元,用于当所述长度判断子单元的输出结果为是时,按照所述预设阈值将所述密钥序列分割成相应长度的密钥块;

时序封装子单元,用于获取时序同步标识,并通过在预设位置添加所述时序同步标识的方式对所述密钥块进行封装;

密钥块传递子单元,用于将封装后的密钥块传递给相对应的密钥管理程序,以供其存储在密钥池中。

可选的,所述时序同步标识比对单元包括:

请求发送子单元,用于其中一方向对方发送时序同步请求,所述时序同步请求中至少包含请求方密钥池中首个可用密钥块的时序同步标识;

标识比对子单元,用于所述时序同步请求的接收方,判断接收到的所述同步请求中携带的时序同步标识与自己密钥池中的首个可用密钥块的时序同步标识是否一致;

结果返回子单元,用于所述时序同步请求的接收方至少将比对结果返回给所述请求方。

可选的,所述密钥块时序同步单元包括:

密钥块弃用子单元,用于由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块;

同步比对子单元,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,并在不一致时触发所述密钥块弃用子单元工作。

可选的,所述密钥块内容同步单元,包括:

摘要值计算子单元,用于双方按照预设的摘要算法、各自计算密钥池中首个可用密钥块的摘要值;

摘要值比对子单元,用于双方比对各自计算得到的所述摘要值是否一致,若一致则判定双方密钥池中的首个可用密钥块的内容一致,否则不一致。

可选的,所述装置还包括:

密钥获取请求接收单元,用于其中一方接收来自应用程序的密钥获取请求,并触发所述时序同步标识比对单元工作;

所述装置还包括:

密钥序列发送单元,用于当所述时序同步标识比对单元的输出结果为一致时,以及当所述密钥块时序同步单元工作完毕后,所述密钥获取请求的接收方,将密钥池中首个可用密钥块中的密钥序列返回给所述应用程序。

此外,本申请还提供一种量子密钥同步分发方法,所述方法通常在向应用程序分发量子密钥的一对密钥管理程序中实施。请参考图8,其为本申请提供的一种量子密钥同步分发方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本实施例的一种量子密钥同步分发方法包括如下步骤:

步骤801、其中一方接收来自应用程序的密钥获取请求。

需要执行加解密操作的双方应用程序,会各自向相对应的密钥管理程序发送密钥获取请求,所述请求中通常携带获取密钥序列的长度信息以及供密钥管理程序建立双方密钥请求对应关系的标示信息。其中一方密钥管理程序接收到所述密钥获取请求后,可以触发双方执行步骤802。

步骤802、比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,若一致,则执行步骤803。

如果比对结果为一致,说明双方密钥池中首个可用密钥块满足时序同步的要求,因此可以执行步骤803。

具体实施时,也可能出现比对结果不一致的情况,此时可以执行以下操作:双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方首个可用密钥块的时序同步标识一致,随后再执行步骤803。

例如:当本步骤的比对结果为不一致时,可以由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块,然后比对双方密钥池中的首个可用密钥块的时序同步标识是否一致,并在不一致时转到所述由在比对中时序同步标识表征时序较早的一方弃用相应的可用密钥块的步骤执行,最终使得双方首个可用密钥块的时序同步标识一致。

步骤803、双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列。

执行到本步骤说明双方密钥池中的首个可用密钥块已经满足时序同步的要求,此时双方可以各自向发出密钥获取请求的应用程序返回首个可用密钥块中的密钥序列。

优选地,为了保证返回给双方应用程序的密钥序列一致,可以在执行本步骤之前,比对双方密钥池中的、时序同步标识一致的首个可用密钥块的内容是否一致,并在一致时,向各自的应用程序返回首个可用密钥块中的密钥序列。

在具体实施时,在上述比对过程中也可能出现双方首个可用密钥块的内容不一致的情况,此时,双方可以各自弃用所述内容不一致的首个可用密钥块,并再次转到步骤802执行,直至双方首个可用密钥块的时序同步标识以及内容都一致。

下面对双方各自向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列的处理过程作进一步说明,为了便于描述将双方密钥管理程序分别称为Alice和Bob,以在步骤801中Alice收到密钥获取请求为例,Alice在与Bob比对首个可用密钥块的时序同步标识是否一致的过程中,可以将自己收到的密钥获取请求中的标示信息一并发送给Bob,从而Bob就可以将与Alice取得同步的首个可用密钥块与所述标示信息关联起来,当Alice根据密钥获取请求中携带的长度信息,将同步好的首个可用密钥块中的相应长度的密钥序列返回给向其发送请求的应用程序后,所述应用程序会将所述标示信息发送给对方应用程序,所述对方应用程序在向Bob发送的密钥获取请求中携带所述标示信息以及密钥序列长度信息,Bob接收该请求后,采用与Alice相同的方式、从与所述标示信息相关联的可用密钥块中截取相应长度的密钥序列,并将该密钥序列返回给向其发送密钥获取请求的应用程序。

至此,通过步骤801-步骤803对本实施例的量子密钥同步分发方法的实施方式进行了描述。本实施例提供的量子密钥同步分发方法,在执行分发前的同步操作时,采用了与现有技术不同的判断方式,以双方密钥池中的首个可用密钥块的时序是否同步作为最基础的判断标准,并可以在此基础上执行内容同步等扩展操作,并最终完成向应用程序的密钥分发操作。

在上述的实施例中,提供了一种量子密钥同步分发方法,与之相对应的,本申请还提供一种量子密钥同步分发装置。请参看图9,其为本申请的一种量子密钥同步分发装置的实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种量子密钥同步分发装置,包括:密钥获取请求接收单元901,用于其中一方接收来自应用程序的密钥获取请求;时序同步标识比对单元902,用于比对双方密钥池中的首个可用密钥块的时序同步标识是否一致;密钥序列返回单元903,用于当所述时序同步标识比对单元的输出结果为一致时,双方根据各自接收到的密钥获取请求、向相应的应用程序返回密钥池中首个可用密钥块中的密钥序列。

可选的,所述装置还包括:

密钥块时序同步处理单元,用于当所述时序同步标识比对单元的输出结果为不一致时,双方采用从首个可用密钥块开始、弃用在对方密钥池中无相应时序同步标识的可用密钥块的方式,使得双方密钥池中的首个可用密钥块的时序同步标识一致,并触发所述密钥序列返回单元工作。

可选的,所述装置还包括:

密钥块内容同步处理单元,用于在触发所述密钥序列返回单元工作之前,比对双方密钥池中的、时序同步标识一致的首个可用密钥块的内容是否一致,并在一致时,触发所述密钥序列返回单元工作。

可选的,所述装置还包括:

双方密钥块弃用单元,用于当所述密钥块内容同步处理单元的输出为不一致时,双方各自弃用所述内容不一致的首个可用密钥块,并触发所述时序同步标识比对单元工作。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

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

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号