发明内容
本发明的目的在于提供一种基于区块链的量子密钥全生命周期管理方案。该方案可以有效地描述量子密钥的生命周期轨迹;将监管、溯源融入量子密钥管理,枃建量子密钥的操作轨迹记录链,确保操作轨迹记录的正确性、完整性、及时性和可追溯性,实现在量子密钥生命周期轨迹的监管和溯源中保护用户的隐私和量子密钥的安全性。
为完成发明目的,本发明采用的技术方案是:
一种基于区块链的量子密钥管理方法,包括以下步骤:
第一参与端与第二参与端共享量子密钥与对应的索引值,在本地分别建立第一密钥池和第二密钥池;
所述第一参与端从所述第一密钥池中选择第一量子密钥,将自身身份信息、第二参与端身份信息与所述第一量子密钥对应的索引值加密,得到第一信息块;将所述第一信息块分别传递给所述第二参与端和密钥管理中心,并存储在自身所属的第一私有区块链中;
所述第二参与端解密所述第一信息块,根据所述索引值在所述第二密钥池中查找对应的第一量子密钥,将自身身份信息、第一参与端身份信息与所述第一量子密钥对应的索引值加密,得到第二信息块;将所述第二信息块传递给所述密钥管理中心,并存储在自身所属的第二私有区块链中;
所述密钥管理中心将所述第一信息块和所述第二信息块存储在自身所属的公有区块链中。
进一步的是,还包括步骤:
所述第一参与端与所述第二参与端利用所述第一量子密钥完成通信。
进一步的是,所述密钥管理中心将所述第一信息块和所述第二信息块存储在自身所属的公有区块链中,还包括:
所述密钥管理中心解密所述第一信息块和所述第二信息块,将所述第一参与端身份信息、所述第二参与端身份信息和所述第一量子密钥对应的索引值加密,得到第三信息块,将所述第三信息块存储在所述公有区块链中。
进一步的是,还包括步骤:
设定密钥更新时间,当达到所述更新时间时,所述第一参与端与所述第二参与端共享新的量子密钥与对应的索引值,并分别将新的量子密钥与对应的索引值加入各自的密钥池中,并销毁各自密钥池中到期的量子密钥与对应的索引值。
进一步的是,还包括步骤:
第一参与端将所述密钥更新时间存储在所述第一私有区块链中;
第二参与端将所述密钥更新时间存储在所述第二私有区块链中;
密钥管理中心将所述密钥更新时间存储在所述公有区块链中。
进一步的是,所述第一参与端下设若干第一从属端;所述第二参与端下设若干第二从属端;
所述第一从属端将自身身份信息和拟通信的所述第二从属端的身份信息传递给所述第一参与端;所述第一参与端将所述第一从属端身份信息和拟通信的所述第二从属端身份信息加入所述第一信息块中,并向所述第一从属端传递所述第一量子密钥;
所述第二参与端解密所述第一信息块,查找所述第一量子密钥,将所述第一从属端身份信息和拟通信的所述第二从属端身份信息加入所述第二信息块中,并向所述第二从属端传递所述第一从属端身份信息和所述第一量子密钥。
进一步的是,还包括步骤:
所述第一从属端与所述第二从属端利用所述第一量子密钥完成通信。
进一步的是,所述密钥管理中心将所述第一信息块和所述第二信息块存储在自身所属的公有区块链中,还包括:
所述密钥管理中心解密所述第一信息块和所述第二信息块,将所述第一参与端身份信息、所述第二参与端身份信息、所述第一从属端身份信息、所述第二从属端身份信息和所述第一量子密钥对应的索引值加密,得到第四信息块,将所述第四信息块存储在所述公有区块链中。
本发明还提供了一种实施所述基于区块链的量子密钥管理方法的量子密钥管理***。
本发明与现有的技术相比,其有益的特点是:
通过使用量子密钥分发技术,可以确保密钥生成与分发过程中密钥的安全性,保证密钥不被窃听、篡改、替换;
通过使用区块链技术来记录密钥使用的过程,将监管、溯源融入量子密钥管理,枃建量子密钥的操作轨迹记录链,确保操作轨迹记录的正确性、完整性、及时性和可追溯性,实现在量子密钥生命周期轨迹的监管和溯源中保护用户的隐私和量子密钥的安全性。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步阐述。在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
实施例1
如图1所示,一种基于区块链的量子密钥管理方法,包括以下步骤:
步骤S1.第一参与端与第二参与端共享量子密钥与对应的索引值,在本地分别建立第一密钥池和第二密钥池。
本发明中,第一参与端与第二参与端之间通过QKD设备进行量子密钥序列的共享,所述QKD设备可以使用国际上通用的量子密钥分发协议,如BB84协议、B92协议或E91协议,来进行量子密钥序列的分发。所述密钥池中量子密钥的数量可以根据需要设定。
步骤S2.所述第一参与端从所述第一密钥池中选择第一量子密钥,将自身身份信息、第二参与端身份信息与所述第一量子密钥对应的索引值加密,得到第一信息块;将所述第一信息块分别传递给所述第二参与端和密钥管理中心,并存储在自身所属的第一私有区块链中。
其中,所述第一私有区块链为私有链,即对单独的个人或实体开放的区块链,本实施例中,第一私有区块链仅对第一参与端开放,后述第二私有区块链采用同样的设置方法,且仅对第二参与端开放。
在一些较优的实施例中,第一参与端对第一信息块的加密方式可以是使用公钥PKA加密,公钥PKA对第二参与端、密钥管理中心均公开。在本发明中,基于传递信息时的安全考虑,所有信息的传递均可采用加密的方式。加密方法可以采用现有技术中的常规加密手段。加密内容还可以包括时间戳信息,本领域的技术人员可以知晓,所述时间戳是使用数字签名技术产生的数据,包括签名时间等信息,可以作为一份电子证据,以证明原始数据在签名时间之前已经存在或者数据存在于哪个特定时间点。在本发明后续的步骤中均可加入时间戳信息,因该方法为本领域的常规设置,故此后不再赘述。
步骤S3.所述第二参与端解密所述第一信息块,根据所述索引值在所述第二密钥池中查找对应的第一量子密钥,将自身身份信息、第一参与端身份信息与所述第一量子密钥对应的索引值加密,得到第二信息块;将所述第二信息块传递给所述密钥管理中心,并存储在自身所属的第二私有区块链中。
其中,第二参与端加密、解密信息所使用的密钥为公钥PKA。
步骤S4.所述密钥管理中心将所述第一信息块和所述第二信息块存储在自身所属的公有区块链中。
其中,所述公有区块链为公有链,是指全世界任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。将第一信息块和第二信息块直接存储于公有区块链中时,密钥管理中心可以不共享加密信息所用的公钥PKA。这样可以进一步加强密钥分配和使用的安全性。
如图2所示,在另一种较优的实施例中,为了便于密钥整个生命周期的管理,可以为密钥管理中共享加密信息所用的公钥PKA,此时,步骤S4为:所述密钥管理中心解密所述第一信息块和所述第二信息块,将所述第一参与端身份信息、所述第二参与端身份信息和所述第一量子密钥对应的索引值加密,得到第三信息块,将所述第三信息块存储在所述公有区块链中。
此时提取相关信息并加密为第三信息块,且密钥管理中心或第三方管理结构均共享了解密所述第三信息块的密钥,由此可以在不降低密钥分配和使用的安全性的前提下,实现对密钥的更好的管理和溯源。
如图3所示,在一种可能的实施例中,还可以包括:
步骤S5.所述第一参与端与所述第二参与端利用所述第一量子密钥完成通信。
本领域的技术人员可以知晓,理论上,为了达到更好的安全性,整个通信过程需要保证一次一密,即每一次信息的传递都采用不同的密钥来进行加密。由于本发明的重点在于密钥的管理,对于密钥的使用方法与目的不做进一步的要求和限定。
应当说明的是,在本发明建立通信的过程中,是否建立通信的决定权归属是开放的,可以由本领域技术人员根据实际需求设立,即可以是由第一参与端、第二参与端和密钥管理中心三者中的任何一方决定的,也可以是参与端彼此协调决定的,也可以是由三方共同验证决定的,本发明对此不作进一步的要求。此时,参与端生成的信息块中应当包含通信申请信息以及通信确认信息。
在本实施例中,量子密钥本身仅被直接参与通信的第一参与端与第二参与端知晓,密钥管理中心知晓的仅为量子密钥对应的索引值,区块链(无论是私有链还是公有链)上存储的同样仅为对应的索引值,由此可以确保密钥生成与分发过程中密钥的安全性,保证密钥不被窃听、篡改、替换。
进一步的是,将整个密钥的整个生命周期信息存储于区块链中,可以确保密钥生命周期记录的正确性、完整性、及时性和可追溯性,还可以进一步地对密钥在实际使用过程中的信息进行监管与溯源。密钥管理中心或第三方监管机构可以通过解密公有区块链上的第三信息块,获得参与通信的双方的身份信息、通信所使用的密钥的索引值以及通信的发生和结束时间等信息;当任一参与端想要抵赖或篡改自身所持有的的信息时,可根据私有区块链或共有区块链上的信息作出通信有效或无效的判断。
实施例2
如图4所示,为了进一步提高通信的安全性,本发明还设置了密钥的更新和销毁步骤,具体包括:
步骤S6.设定密钥更新时间,当达到所述更新时间时,所述第一参与端与所述第二参与端共享新的量子密钥与对应的索引值,并分别将新的量子密钥与对应的索引值加入各自的密钥池中,并销毁各自密钥池中到期的量子密钥与对应的索引值。
其中,更新时间是在密钥生成时同步设定,且每一条密钥可单独设置更新时间,也可以多条密钥设置共同的更新时间。无论采用何种设置方式,在进行更新操作时,新密钥的生成与旧密钥的销毁需同步进行。若更新时密钥正在使用中,则将旧密钥先转移到缓存数据库中,当参与端重新选择密钥时,则使用新密钥池中的密钥,销毁缓存数据库中的旧密钥。
在一种较优的实施例中,还可以包括:
步骤S7.第一参与端将所述密钥更新时间存储在所述第一私有区块链中;第二参与端将所述密钥更新时间存储在所述第二私有区块链中;密钥管理中心将所述密钥更新时间存储在所述公有区块链中。
本领域的技术人员应当理解,将密钥的更新时间存储于对应的私链和公链中,是为了防止任意参与端在使用密钥信息时抵赖。进一步的,密钥管理中心或第三方监管机构也可根据该时间监督密钥的整个更新过程。
实施例3
如图5所示,本实例中,考虑每次都进行一对一的密钥共享与管理实施难度较大,为了方便管理多个通信参与者,提供以下实施例,包括:
步骤S1.第一参与端与第二参与端共享量子密钥与对应的索引值,在本地分别建立第一密钥池和第二密钥池;所述第一参与端下设若干第一从属端;所述第二参与端下设若干第二从属端。
步骤S2.所述第一从属端将自身身份信息和拟通信的所述第二从属端的身份信息传递给所述第一参与端;所述第一参与端从所述第一密钥池中选择第一量子密钥,将自身身份信息、第二参与端的身份信息、第一从属端的身份信息、拟通信的第二从属端的身份信息以及所述第一量子密钥对应的索引值加密,得到第一信息块。
步骤S3.所述第一参与端将所述第一信息块分别传递给所述第二参与端和密钥管理中心,并存储在自身所属的第一私有区块链中,并向所述第一从属端传递所述第一量子密钥。
步骤S4.所述第二参与端解密所述第一信息块,根据所述索引值在所述第二密钥池中查找对应的第一量子密钥,将自身身份信息、第一参与端的身份信息、第一从属端的身份信息、拟通信的第二从属端的身份信息以及所述第一量子密钥对应的索引值加密,得到第二信息块;
步骤S5.所述第二参与端将所述第二信息块分别传递给所述第一参与端和密钥管理中心,并存储在自身所属的第一私有区块链中,并向所述第二从属端传递所述第一从属端身份信息和所述第一量子密钥。
步骤S6.所述密钥管理中心将所述第一信息块和所述第二信息块存储在自身所属的公有区块链中。
步骤S7.所述第一从属端与所述第二从属端利用所述第一量子密钥完成通信。
在另一些较优的实施例中,所述密钥管理中心解密所述第一信息块和所述第二信息块,将所述第一参与端身份信息、所述第二参与端身份信息、所述第一从属端身份信息、所述第二从属端身份信息和所述第一量子密钥对应的索引值加密,得到第四信息块,将所述第四信息块存储在所述公有区块链中。
本领域的技术人员可以知晓,为了便于对从属端的管理以及提高通信的安全性和有效性,还可以赋予参与端对从属端的身份验证权和是否建立通信的决定权。下面对身份验证权和是否建立通信的决定权作进一步的说明。
在本实施例上述步骤S2中,第一从属端将自身身份信息和拟通信的所述第二从属端的身份信息传递给第一参与端后,第一参与端对第一从属端的身份进行验证,若验证通过,则进行后续步骤。还可以包括对通信需求的验证,即第一参与端判断是否同意第一从属端与拟通信的第二从属端进行保密通信,若同意,则进行后续步骤。其中,所述身份验证和通信需求的验证方法可以由本领域技术人员根据实际需要进行设置,本发明不作进一步的限制。
进一步的,在本实施例上述步骤S4中,第二参与端解密第一信息块后,对拟通信的所述第二从属端的身份信息进行验证。也可以包括判断判断是否同意第一从属端与拟通信的第二从属端进行保密通信。
上述从属端的身份验证权和是否建立通信的决定权可以是由参与端共同拥有,可以是由某指定参与端拥有。上述权利也可以赋予密钥管理中心,其实现方法为现有技术,本发明不再赘述。
在本实施例中,密钥池仅对参与端公开,从属端仅在通信建立后获得本次通信所使用的的量子密钥序列,并且多个从属端归于一个参与端管理,这样就大大降低了密钥分配与管理的难度,节约了通信资源。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机***通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机***的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。