密钥处理方法、装置、设备及介质与流程

文档序号:16006903发布日期:2018-11-20 20:10阅读:195来源:国知局

本发明涉及通信安全技术领域,尤其涉及一种密钥处理方法、装置、设备及介质。



背景技术:

现有应用场景中普遍通过开放式安全套接层(Open Secure Sockets Layer,OpenSSL)实现安全套接字层上的超文本传输协议(Hypertext Transfer Protocol over Secure Socket Layer,HTTPS)通信。服务器和客户端为实现安全通讯,在经过单向或双向的身份认证之后,发送通讯内容之前,要先使用加解密密钥对通讯内容进行加密。该加解密密钥是一种对称密钥,在双方握手过程中通过伪随机数函数临时计算产生。

伪随机数函数在计算出加解密密钥之后,将加解密密钥输出给内存,以将加解密密钥保存在内存中。当加密函数需要使用加解密密钥进行加密时,内存输出加解密密钥给加密函数进行加密。由于加解密密钥在内存中导入导出,因此加解密密钥的安全性没有保障。



技术实现要素:

本发明实施例提供了一种密钥处理方法、装置、设备及介质,能够避免加解密密钥在内存中导入导出,从而保证加解密密钥的安全。

第一方面,本发明实施例提供了一种密钥处理方法,用于硬件加密设备SE,所述方法包括:

若接收到的种子是第一预设种子,则确定当前计算的结果是主密钥,将所述主密钥保存在所述SE中,其中所述主密钥是根据预主密钥计算得到的主密钥;

若接收到的种子是第二预设种子,则确定当前计算的结果是密钥块,将所述密钥块保存在所述SE中,其中所述密钥块是根据所述主密钥计算得到的密钥块;

根据所述密钥块,确定加解密密钥,并将所述加解密密钥保存在所述SE中。

第二方面,本发明实施例提供了一种密钥处理装置,用于硬件加密设备SE,所述装置包括:

第一保存模块,用于当接收到的种子是第一预设种子时,确定当前计算的结果是主密钥,将所述主密钥保存在所述SE中,其中所述主密钥是根据预主密钥计算得到的主密钥;

第二保存模块,用于当接收到的种子是第二预设种子时,确定当前计算的结果是密钥块,将所述密钥块保存在所述SE中,其中所述密钥块是根据所述主密钥计算得到的密钥块;

确定模块,用于根据所述密钥块,确定加解密密钥;

第三保存模块,用于将所述加解密密钥保存在所述SE中。

第三方面,本发明实施例提供了一种计算设备,包括:处理器、存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如上述实施方式中第一方面的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。

本发明实施例提供的一种密钥处理方法、装置、设备及介质,当SE分别计算出主密钥、密钥块和加解密密钥时,并不会将主密钥、密钥块和加解密密钥输出给内存,以由内存保存,而是将主密钥、密钥块和加解密密钥保存在SE中,SE可以直接从自身保存的数据中获取主密钥、密钥块和加解密密钥,避免了加解密密钥在内存中导入导出,从而保证加解密密钥的安全。

附图说明

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

图1示出了本发明实施例的一种密钥处理方法的流程示意图;

图2示出了本发明实施例的一种密钥处理方法的原理示意图;

图3示出了本发明实施例的密钥处理装置的框图;

图4是示出能够实现根据本发明实施例的计算设备的示例性硬件架构的结构图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

图1示出了本发明实施例的一种密钥处理方法的流程示意图。该方法用于硬件加密设备SE,该方法包括:S101至S103。

S101,若接收到的种子是第一预设种子,则确定当前计算的结果是主密钥,将主密钥保存在SE中,其中主密钥是根据预主密钥计算得到的主密钥。

S102,若接收到的种子是第二预设种子,则确定当前计算的结果是密钥块,将密钥块保存在SE中,其中密钥块是根据主密钥计算得到的密钥块。

S103,根据密钥块,确定加解密密钥,并将加解密密钥保存在SE中。

根据本发明实施例的密钥处理方法,通过输入参数种子的内容准确确定当前是否在生成主密钥或者密钥块;若在生成主密钥或者密钥块,则将生成的主密钥或者密钥块保存在SE中,区别于现有技术中的将主密钥、密钥块和加解密密钥输出给内存,以由内存保存。由于本发明实施例中的SE可以直接从自身保存的数据中获取主密钥、密钥块和加解密密钥,避免了加解密密钥在内存中导入导出,从而保证加解密密钥的安全。

在本发明的一个实施例中,SE中包括伪随机数函数。

确定当前计算的结果是主密钥,将主密钥保存在SE中,包括:

确定伪随机数函数当前计算的结果是主密钥,将伪随机数函数计算出的主密钥保存在SE中。

确定当前计算的结果是密钥块,将密钥块保存在SE中,包括:

确定伪随机数函数当前计算的结果是密钥块,将伪随机数函数计算出的密钥块保存在SE中。

需要说明的是,在低于OpenSSL1.1.0版本的SSL中,计算主密钥、密钥块的伪随机数函数没有开放接口给引擎,因此,如果要实现在SE中计算主密钥、密钥块,就需要修改源码。在通常使用场景中,SE主要完成服务器与客户端的双向认证,后续基于对称密钥算法加密通讯要么不再使用SE进行计算,要么在平台计算出加解密密钥之后再传递给SE进行计算。本发明基于OpenSSL1.1.0k版本,该版本已经有伪随机数函数接口开放给引擎,因此可以不需要修改OpenSSL源码即可调用在SE上实现的伪随机数函数。

在本发明的一个实施例中,密钥处理方法还包括:

在伪随机数函数计算出主密钥之后,将主密钥对应的虚假主密钥从SE中输出,虚假主密钥是与主密钥不相同的随机主密钥;在伪随机数函数计算出密钥块之后,将密钥块对应的虚假密钥块从SE中输出,虚假密钥块是与密钥块不相同的随机密钥块。

根据本发明实施例的密钥处理方法,伪随机数函数在计算出主密钥和密钥块时,将真实的主密钥和密钥块保存在SE中,将虚假主密钥和虚假密钥块从SE中输出,因此,本发明实施例中的伪随机数函数接口与现有技术中的伪随机数函数接口分别会在计算结束后输出一个结果,从而使得本发明实施例中的伪随机数函数接口与现有技术中的伪随机数函数接口之间保持一致,OpenSSL的源码可以不加修改直接调用伪随机数函数,避免了影响调用伪随机数函数,实现起来简单方便。

在本发明的一个实施例中,密钥处理方法还包括:

若接收到的种子是第三预设种子,则将与第三预设种子对应计算的结果从SE中输出。

作为一个示例,第三预设种子是分别与第一预设种子和第二预设种子不相同的种子。

根据本发明实施例的密钥处理方法,如果接收到的种子不是第一预设种子,且不是第二预设种子,则在根据第三预设种子进行计算之后,将实际计算的结果输出给调用者,从而为进一步的计算做准备或者满足调用者的流程要求。

在本发明的一个实施例中,SE中包括加密函数;S103之后,密钥处理方法还包括:

通过加密函数从SE中获取加解密密钥;通过加密函数和加解密密钥,对明文数据进行加密计算。

在本发明的一个实施例中,根据密钥块,确定加解密密钥,包括:

从密钥块中分割出加解密密钥。

在本发明的一个实施例中,密钥处理方法还包括:

若服务器与客户端之间结束通信,则删除SE中保存的主密钥、密钥块和加解密密钥。

根据本发明实施例的密钥处理方法,SE主要完成服务器与客户端的双向认证,加解密密钥是临时密钥,当服务器与客户端之间结束通信,即可丢弃SE中保存的主密钥、密钥块和加解密密钥。

图2示出了本发明实施例的一种密钥处理方法的原理示意图。该密钥处理方法用于硬件加密设备SE。为实现通讯双方的认证及加密功能,现有的OpenSSL除了提供强大的软件算法库外,还提供了私有硬件加密引擎,以便于第三方通过硬件或软件实现自己的算法库。该私有硬件加密引擎定义了一系列算法的接口函数。接口函数包括:存放在SE中的伪随机数函数(Pseudo-Random Function,PRF)和加密函数Cipher。私有硬件加密引擎可以编译成动态库,然后与SSL提供的动态引擎绑定。

密钥处理方法包括:

1)服务器与客户端建立SSL握手过程中,客户端生成预主密钥preSecret。

2)将preSecret作为密钥参数调用SE上的伪随机数函数,伪随机数函数根据预主密钥preSecret生成主密钥master secret,并根据接收到的种子是第一预设种子,确定伪随机数函数当前计算的结果是主密钥,将当前计算结果主密钥master secret保存在SE中。

3)将SE中的master secret作为密钥参数输入SE上的伪随机数函数,伪随机数函数根据主密钥master secret生成密钥块key block;根据接收到的种子是第二预设种子,确定伪随机数函数当前计算的结果是密钥块key block,将当前计算结果密钥块key block保存在SE中。

4)从SE中的keyblock分割出加解密密钥,保存加解密密钥在SE中。该加解密密钥是对称密钥。

5)将SE中的加密密钥赋给SE上的密钥对象,用SE上的加密函数对通讯的明文数据进行加密计算,得到安全数据,并输出安全数据。

在整个SSL握手流程中,伪随机数函数会被调用多次,涉及到计算加解密密钥的是两次,其中一次调用伪随机数函数是用于生成主密钥,另一次调用伪随机数函数是生成密钥块。计算加解密密钥的过程中,为达到密钥不外泄目的,SE上的伪随机数函数需要具备如下功能:伪随机数函数若接收到的种子是第一预设种子,确定当前计算的是主密钥;伪随机数函数若接收到的种子是第二预设种子,确定当前计算的密钥块。因此,通过输入参数种子的内容准确确定当前计算的是哪一步,以决定是否将计算结果输出给调用者还是将计算结果保存在SE中。另外,伪随机数函数生成主密钥和密钥块时,不仅将生成的主密钥和密钥块保存在SE中,还会输出虚假的主密钥和虚假的密钥块;而在其他不涉及密钥计算的情况下,伪随机数函数会输出真实的计算结果。

图3示出了本发明实施例的密钥处理装置的框图。该装置300用于硬件加密设备SE,该装置300包括:第一保存模块301、第二保存模块302、确定模块303和第三保存模块304。

第一保存模块301,用于当接收到的种子是第一预设种子时,确定当前计算的结果是主密钥,将主密钥保存在SE中,其中主密钥是根据预主密钥计算得到的主密钥。

第二保存模块302,用于当接收到的种子是第二预设种子时,确定当前计算的结果是密钥块,将密钥块保存在SE中,其中密钥块是根据主密钥计算得到的密钥块。

确定模块303,用于根据密钥块,确定加解密密钥。

第三保存模块304,用于将加解密密钥保存在SE中。

在本发明一个实施例中,SE中包括伪随机数函数。

第一保存模块301用于,

确定伪随机数函数当前计算的结果是主密钥,将伪随机数函数计算出的主密钥保存在SE中。

第二保存模块302用于,

确定伪随机数函数当前计算的结果是密钥块,将伪随机数函数计算出的密钥块保存在SE中。

在本发明一个实施例中,装置300还包括:第一输出模块和第二输出模块。

第一输出模块,用于在伪随机数函数计算出主密钥之后,将主密钥对应的虚假主密钥从SE中输出,虚假主密钥是与主密钥不相同的随机主密钥。

第二输出模块,用于在伪随机数函数计算出密钥块之后,将密钥块对应的虚假密钥块从SE中输出,虚假密钥块是与密钥块不相同的随机密钥块。

在本发明一个实施例中,装置300还包括:

第三输出模块,用于当接收到的种子是第三预设种子时,将与第三预设种子对应计算的结果从SE中输出。

在本发明一个实施例中,SE中包括加密函数;装置300还包括:获取模块和加密模块。

获取模块,用于通过加密函数从SE中获取加解密密钥。

加密模块,用于通过加密函数和加解密密钥,对明文数据进行加密计算。

在本发明一个实施例中,确定模块303用于,

从密钥块中分割出加解密密钥。

在本发明一个实施例中,装置300还包括:

删除模块,用于当服务器与客户端之间结束通信时,删除SE中保存的主密钥、密钥块和加解密密钥。

图4是示出能够实现根据本发明实施例的计算设备的示例性硬件架构的结构图。如图4所示,计算设备400包括输入设备401、输入接口402、处理器403、存储器404、输出接口405、以及输出设备406。

其中,输入接口402、处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。

具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到处理器403;处理器403基于存储器404中存储的计算机程序指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。

当计算机程序指令被处理器403执行时实现本申请上述的方法中的各步骤。

处理器403可以是一个或多个中央处理器(英文:Central Processing Unit,CPU)。在处理器403是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。

存储器404可以是但不限于随机存储存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、硬盘等中的一种或多种。存储器404用于存储程序代码。

可以理解的是,在本申请实施例中,图3提供的任一模块或全部模块的功能可以用图4所示的处理器403实现。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,计算机程序产品包括一个或多个计算机程序指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。

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