掌桥专利:专业的专利平台
掌桥专利
首页

一种根密钥生成方法、装置、电子设备

文献发布时间:2023-06-19 11:45:49


一种根密钥生成方法、装置、电子设备

技术领域

本申请涉及计算机通信领域,尤其涉及一种根密钥生成方法、装置、电子设备。

背景技术

密钥安全管理通常会将密钥分为多个层级的密钥,上层密钥为下层密钥提供安全保护。在多层级密钥体系中,最顶层的密钥是根密钥。由于根密钥是所有下层密钥保护的根源,因此根密钥在多层密钥体系中具有重要作用,一旦根密钥被窃取,会产生巨大损失。

因此如何提高根密钥的安全性就显得尤为重要。

发明内容

有鉴于此,本申请提供一种根密钥生成方法、装置、电子设备及存储介质,用于提高根密钥生成的安全性。

具体地,本申请是通过如下技术方案实现的:

根据本申请的第一方面,提供一种根密钥生成方法,所述方法包括:

当生成根密钥时,获取在已编译的根密钥生成程序中写入的第一根密钥分量,并获取存储介质中已存储的第二根密钥分量;所述第一根密钥分量是在第一根密钥分量阶段生成,第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的一个阶段,所述第二根密钥分量是在第二根密钥分量阶段生成,第二根密钥分量阶段为所述根密钥生成程序的运行阶段中的一个阶段;

对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材;

对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

可选的,所述第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的程序编码阶段。

可选的,所述第二根密钥分量阶段为所述根密钥生成程序在完成部署后首次运行时的初始化阶段;

所述获取存储介质中已存储的第二根密钥分量,包括:

通过调用所述根密钥生成程序按照输入输出IO操作方式从所述存储介质获取所述第二根密钥分量,所述存储介质为所述电子设备上的存储介质。

可选的,所述对所述根密钥素材进行加密,包括:

基于预设的加密算法和密钥,对所述根密钥素材进行加密得到加密后的根密钥素材;

或者,

调用加密狗的API接口,将所述根密钥素材通过所述API接口发送至所述加密狗,以使所述加密狗基于该加密狗内置的加密算法和密钥对所述根密钥素材进行加密得到加密后的根密钥素材。

可选的,所述对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材,包括:

对第一根密钥分量和第二根密钥分量进行异或运算,得到根密钥素材;

或者,

计算第一根密钥分量的第一哈希值,以及计算第二根密钥分量的第二哈希值,将第一哈希值和第二哈希值进行拼接,得到根密钥素材。

可选的,所述对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材,包括:

以第一根密钥分量和第二根密钥分量中的一个根密钥分量作为口令Password,另一根密钥分量作为盐值Salt,将Password和Salt输入到预设的PBKDF2模型中,以由所述PBKDF2模型对该Password和Salt进行预设次数的迭代哈希运算,得到根密钥素材;

获取所述PBKDF2模型输出的根密钥素材。

根据本申请的第二方面,提供一种根密钥生成装置,所述装置应用于电子设备,所述装置包括:

获取单元,用于当生成根密钥时,获取在已编译的根密钥生成程序中写入的第一根密钥分量,并获取存储介质中已存储的第二根密钥分量;所述第一根密钥分量是在第一根密钥分量阶段生成,第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的一个阶段,所述第二根密钥分量是在第二根密钥分量阶段生成,第二根密钥分量阶段为所述根密钥生成程序的运行阶段中的一个阶段;

合成单元,用于对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材;

加密单元,用于对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

可选的,所述第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的程序编码阶段。

可选的,所述第二根密钥分量阶段为所述根密钥生成程序在完成部署后首次运行时的初始化阶段;

所述获取单元,在获取存储介质中已存储的第二根密钥分量时,具体用于通过调用所述根密钥生成程序按照输入输出IO操作方式从所述存储介质获取所述第二根密钥分量,所述存储介质为所述电子设备上的存储介质。

可选的,所述加密单元,在对所述根密钥素材进行加密时,具体用于基于预设的加密算法和密钥,对所述根密钥素材进行加密得到加密后的根密钥素材;或者,调用加密狗的API接口,将所述根密钥素材通过所述API接口发送至所述加密狗,以使所述加密狗基于该加密狗内置的加密算法和密钥对所述根密钥素材进行加密得到加密后的根密钥素材。

可选的,所述合成单元,具体用于对第一根密钥分量和第二根密钥分量进行异或运算,得到根密钥素材;或者,计算第一根密钥分量的第一哈希值,以及计算第二根密钥分量的第二哈希值,将第一哈希值和第二哈希值进行拼接,得到根密钥素材。

可选的,所述合成单元,具体用于以第一根密钥分量和第二根密钥分量中的一个根密钥分量作为口令Password,另一根密钥分量作为盐值Salt,将Password和Salt输入到预设的PBKDF2模型中,以由所述PBKDF2模型对该Password和Salt进行预设次数的迭代哈希运算,得到根密钥素材;获取所述PBKDF2模型输出的根密钥素材。

根据本申请的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使执行上述根密钥生成方法。

由上述描述可知,由于本申请的第一根密钥分量和第二根密钥分量产生的阶段不同,使得攻击者获取这两个根密钥的难度增大,所以大大提高了两个根密钥分量的安全性,进而提高了根密钥的安全性。

附图说明

图1是本申请一示例性实施例示出的一种根密钥生成方法的流程图;

图2是本申请一示例性实施例示出的一种电子设备的硬件结构图;

图3是本申请一示例性实施例示出的一种根密钥生成装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

下面先介绍下本申请所涉及的概念。

当电子设备中的应用程序需要使用根密钥时,应用程序可以发出根密钥请求。

当电子设备检测到该根密钥请求时,电子设备可执行根密钥生成逻辑生成根密钥,并将生成的根密钥返回给该应用程序。该应用程序可以利用根密钥进行业务处理。比如,该应用程序可以基于根密钥生成下层密钥,并用下层密钥加密该程序所要加密的数据等。

在现有电子设备生成根密钥的方式中,电子设备可以利用加密算法对预设的密钥进行加密,生成根密钥。预设的加密算法可包括:电子设备操作系统的安全机制(如Windwos的DPAPI)中加密算法、白盒密码算法、硬件加密模块中部署的加密算法等,这里只是示例性地说明,不进行具体地限定。

然而,当攻击者一旦窃取出上述加密算法,就很容易获取根密钥,严重影响根密钥的安全性。

有鉴于此,本申请提供一种根密钥的生成方法,用于提高根密钥的安全性。在生成根密钥时,电子设备可获取在已编译的根密钥生成程序中写入的第一根密钥分量,并获取存储介质中已存储的第二根密钥分量。然后,电子设备可对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材,并对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

此外,本申请中的第一根密钥分量是在根密钥生成程序的开发阶段中的一个阶段中生成的,而本申请中的第二根密钥分量是在根密钥生成程序的运行阶段中的一个阶段生成的。

由于本申请的第一根密钥分量和第二根密钥分量产生的阶段不同,存储位置不同,使得攻击者获取这两个根密钥的难度增大,所以大大提高了两个根密钥分量的安全性,进而提高了根密钥的安全性。

在介绍本申请提供的根密钥生成方法前,先对本申请所涉及的概念进行介绍。

根密钥生成程序,是指与本申请提供的根密钥生成方法对应的程序。电子设备可运行该根密钥生成程序,执行根密钥生成方法。

为了防止根密钥生成程序被窃取,提高根密钥生成程序的安全性,在根密钥程序开发完成后,可以对该根密钥程序进行加壳处理,加壳处理后的根密钥程序可以直接被运行。

加壳处理是指利用特殊算法对根密钥程序的原始代码进行压缩、加密等操作,使得根密钥生成程序转换为另一种可执行的程序。对根密钥生成程序进行加壳处理的目的是:防止外部程序或者攻击者对根密钥生成程序进行反汇编等操作获取根密钥生成程序的原始代码。

参见图1,图1是本申请一示例性实施例示出的一种根密钥生成方法的流程图。该方法可应用在电子设备上,可包括如下所示方法。

需要说明的是,当电子设备检测到本设备内的应用程序需要调用根密钥时,电子设备可运行该根密钥生成程序,执行该根密钥生成方法。

当然,为了提高根密钥的安全性,电子设备还可周期性地运行该根密钥生成程序,执行该根密钥生成方法,在不同的周期生成不同的根密钥。

这里只是对根密钥生成方法的触发时机进行示例性地说明,不进行具体地限定。

步骤101:当生成根密钥时,电子设备获取在已编译的根密钥生成程序中写入的第一根密钥分量,并获取存储介质中已存储的第二根密钥分量;所述第一根密钥分量是在第一根密钥分量阶段生成,第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的一个阶段,所述第二根密钥分量是在第二根密钥分量阶段生成,第二根密钥分量阶段为所述根密钥生成程序的运行阶段中的一个阶段。

其中,第一根密钥分量和第二根密钥分量是不同阶段生成的。

例如,第一根密钥分量是在该根密钥生成程序中的开发阶段中的任一阶段生成的。第二根密钥分量是在该根密钥生成程序的运行阶段中的任一阶段生成的。

其中,开发阶段中的任一阶段可以是:程序设计阶段、程序编码阶段或程序测试阶段等。运行阶段中的任一阶段可以是:根密钥生成程序的初始化阶段或者根密钥生成程序在初始化后的执行阶段等。这里只是对“开发阶段中的任一阶段”和“运行阶段中的任一阶段”进行示例性地说明,不对其进行具体地限定。

在一种优选的实现方式中,第一根密钥分量阶段是上述根密钥程序开发阶段中的程序编码阶段。

具体地,在根密钥生成程序中的开发阶段中的程序编码阶段可生成随机数,作为第一根密钥分量。开发人员可将第一根密钥分量硬编码至该根密钥生成程序中。需要说明的是,这里不对第一根密钥分量的位数进行具体地限定,比如在实际应用中,第一根密钥分量的位数为32位。

第二根密钥分量阶段是上述根密钥生成程序在完成部署后首次运行时的初始化阶段。

具体地,当上述根密钥程序部署完成后,电子设备可初始化根密钥程序。在初始化根密钥程序的过程中,可生成指定位数的随机数,作为第二根密钥分量。然后,电子设备可依据该根密钥生成程序将该第二根密钥分量储存在存储介质中。比如,可以将第二根密钥程序储存在电子设备内的存储介质中。

当生成根密钥时,电子设备可获取第一根密钥分量和第二根密钥分量。

在获取第一根密钥分量时,电子设备可直接读取该根密钥生成程序中写入的第一根密钥分量。

在获取第二根密钥分量时,电子设备可通过调用所述根密钥生成程序,并按照IO(Input Output,输入输出)操作方式从该存储介质中获取第二根密钥分量。

其中,上述指定位数可以根据实际需求进行设定,比如该指定位数可以是32位,这里只是对指定位数进行示例性地说明,不对其进行具体地限定。

其中,电子设备内的存储介质可包括:硬盘,FLASH(闪盘)等,这里只是对指定存储介质进行示例地说明,不对其进行具体地限定。

由上述描述可以看出,第一根密钥分量是在根密钥生成程序编码阶段编码写入该根密钥生成程序中的,并且还对该根密钥生成程序进行了加壳处理,使得外部程序或者攻击者无法获取到壳内的根密钥程序,进而无法获取到第一根密钥分量,从而提高了第一根密钥分量的安全性。

第二根密钥分量是在程序部署完成后的初始化阶段随机生成的,使得不同设备在采用本申请提供的根密钥生成方法时,获取到的第二根密钥分量均不相同,从而提高了第二根密钥分量的安全性,进而提高了根密钥的安全性。

步骤103:电子设备对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材。

下面介绍几种实现步骤103的方式。

方式一:电子设备可采用异或运算算法得到根密钥分量。

在实现时,电子设备可对第一根密钥分量和第二根密钥分量进行异或运算,得到根密钥素材。

方式二:电子设备采用哈希算法得到根密钥分量。

在实现时,电子设备可采用预设的哈希算法计算第一根密钥分量的哈希值,得到第一哈希值。电子设备可采用预设的哈希算法计算第二根密钥分量的哈希值,得到第二哈希值。然后,电子设备可对第一根密钥分量的第一哈希值和第二根密钥分量的第二哈希值进行拼接,得到根密钥素材。

其中,哈希算法可包括:MD2(Message Digest Algorithm 2,信息-摘要算法2)、MD4(Message Digest Algorithm 4,信息-摘要算法4)、MD5(Message DigestAlgorithm 5,信息-摘要算法5)和SHA-1(Secure Hash Algorithm 1,第一个安全哈希值算法)。这里只是对哈希算法进行示例性地说明,不对其进行具体地限定。

方式三:电子设备采用PBKDF2(Password-Based Key Derivation Function 2,基于口令的密钥推导功能2)模型得到根密钥分量。

其中,PBKDF2模型是基于PBKDF2算法搭建的模型。PBKDF2涉及了两个参数,分别为口令(Password)和盐值(Salt)。

电子设备可以以第一根密钥分量和第二根密钥分量中的任一个根密钥分量作为口令Password,另一根密钥分量作为盐值Salt,然后将Password和Salt输入到预设的PBKDF2模型中。

PBKDF2模型可以对该口令和盐值进行预设次数的迭代哈希运算,得到根密钥分量。例如,假设迭代次数为N次,PBKDF2模型可以对口令和盐值进行哈希运算得到哈希值。然后,PBKDF2模型可将盐值的取值更新为该计算得到的哈希值,然后再用口令和更新后的盐值进行哈希运算得到新的哈希值,然后再将盐值的取值更新为该新的哈希值,依次类推,直至满足了N次迭代哈希运算。

然后,电子设备可获取PBKDF2输出的根密钥分量。

其中,需要说明的是,电子设备可以以第一根密钥分量作为Password,第二根密钥分量为Salt。当然,电子设备也可以以第二根密钥分量作为Password,第一根密钥分量作为Salt。这里不进行具体地限定。

需要说明的是,上述只是对“对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材”进行示例性地说明,并不对该得到根密钥素材的方式进行具体地限定。在实际应用,电子设备还可以采用其他方法将第一根密钥分量和第二根密钥分量合成根密钥素材。这里不对其进行具体地限定。

步骤104:电子设备对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

在一种可选的实现方式中,电子设备可采用本地预设的加密算法和密钥对该根密钥素材进行加密,并将加密后的根密钥素材作为根密钥。

比如,电子设备可采用本地预设的DES(Data Encryption Standard,数据加密标准)算法、MD5算法等实现对于根密钥素材的加密。这里只是对加密算法进行示例性地说明,不对其进行具体地限定。

在另一种可选的实现方式中,电子设备可利用加密狗对该根密钥素材进行加密。

其中,加密狗是一种专用的加、解密设备,也被称为加密锁。"加密狗"是一种插在电子设备并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。电子设备以通过加密狗对其所要加密的数据进行加密。

在采用加密狗对根密钥素材进行加密时,电子设备调用加密狗的API接口,将所述根密钥素材通过所述API接口发送至所述加密狗,以使所述加密狗基于该加密狗内置的加密算法和密钥对所述根密钥素材进行加密,然后向电子设备返回加密后的根密钥素材。

电子设备可接收所述加密狗返回的加密后的根密钥素材,作为根密钥。

上述只是对电子设备对根密钥素材进行加密的示例性说明,不对其进行具体地限定。

由上述描述可知,在本申请中,第一根密钥分量是程序编码阶段硬编码到根密钥生成程序中的,而本申请中的第二根密钥分量是在根密钥生成程序初始化阶段生成并存储在存储介质中。在生成根密钥时,电子设备可获取根密钥生成程序中的第一根密钥分量,并通过IO操作获取存储介质中的第二根密钥分量。电子设备可对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材,然后对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

一方面,由于本申请的第一根密钥分量和第二根密钥分量产生的阶段不同,存储位置不同,使得攻击者获取这两个根密钥的难度增大,所以大大提高了两个根密钥分量的安全性。

另一方面,本申请在基于第一根密钥分量和第二根密钥分量生成根密钥素材后,电子设备可对根密钥素材进行加密处理,得到根密钥,使得得到的根密钥更为安全。

第三方面,在本申请中,第一根密钥分量是在根密钥生成程序编码阶段编码写入该根密钥生成程序中的,该根密钥生成程序还被进行了加壳处理,使得外部程序或者攻击者无法获取到壳内的根密钥程序,进而无法获取到第一根密钥分量,从而提高了第一根密钥分量的安全性。

第四方面,本申请的第二根密钥分量是在程序部署完成后的初始化阶段随机生成的,使得不同设备上的根密钥分量均不相同,从而提高了第二根密钥分量的安全性,进而提高了根密钥的安全性。

基于上述四方面原因,采用本申请提供的根密钥生成方法,可以大大提高根密钥的安全性。

参见图2,图2是本申请一示例性实施例示出的一种电子设备的硬件结构图。

该电子设备包括:通信接口201、处理器202、机器可读存储介质203和总线204;其中,通信接口201、处理器202和机器可读存储介质203通过总线204完成相互间的通信。处理器202通过读取并执行机器可读存储介质203中与根密钥生成控制逻辑对应的机器可执行指令,可执行上文描述的根密钥生成方法。

本文中提到的机器可读存储介质203可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质203可以是RAM(Radom Access Memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。

参见图3,图3是本申请一示例性实施例示出的一种根密钥生成装置的框图。该装置可包括如下所示单元。

获取单元301,用于当生成根密钥时,获取在已编译的根密钥生成程序中写入的第一根密钥分量,并获取存储介质中已存储的第二根密钥分量;所述第一根密钥分量是在第一根密钥分量阶段生成,第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的一个阶段,所述第二根密钥分量是在第二根密钥分量阶段生成,第二根密钥分量阶段为所述根密钥生成程序的运行阶段中的一个阶段;

合成单元302,用于对所述第一根密钥分量和第二根密钥分量进行合成,得到根密钥素材;

加密单元303,用于对所述根密钥素材进行加密,并将加密后的根密钥素材确定为根密钥。

可选的,所述第一根密钥分量阶段为所述根密钥生成程序的开发阶段中的程序编码阶段。

可选的,所述第二根密钥分量阶段为所述根密钥生成程序在完成部署后首次运行时的初始化阶段;

所述获取单元301,在获取存储介质中已存储的第二根密钥分量时,具体用于通过调用所述根密钥生成程序按照输入输出IO操作方式从所述存储介质获取所述第二根密钥分量,所述存储介质为所述电子设备上的存储介质。

可选的,所述加密单元303,在对所述根密钥素材进行加密时,具体用于基于预设的加密算法和密钥,对所述根密钥素材进行加密得到加密后的根密钥素材;或者,调用加密狗的API接口,将所述根密钥素材通过所述API接口发送至所述加密狗,以使所述加密狗基于该加密狗内置的加密算法和密钥对所述根密钥素材进行加密得到加密后的根密钥素材。

可选的,所述合成单元302,具体用于对第一根密钥分量和第二根密钥分量进行异或运算,得到根密钥素材;或者,计算第一根密钥分量的第一哈希值,以及计算第二根密钥分量的第二哈希值,将第一哈希值和第二哈希值进行拼接,得到根密钥素材。

可选的,所述合成单元302,具体用于以第一根密钥分量和第二根密钥分量中的一个根密钥分量作为口令Password,另一根密钥分量作为盐值Salt,将Password和Salt输入到预设的PBKDF2模型中,以由所述PBKDF2模型对该Password和Salt进行预设次数的迭代哈希运算,得到根密钥素材;获取所述PBKDF2模型输出的根密钥素材。

此外,本申请还提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使执行上述根密钥生成方法。

此外,本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器执行上述根密钥生成方法。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

相关技术
  • 一种根密钥生成方法、装置、电子设备
  • 一种密钥生成方法、密钥生成装置及电子设备
技术分类

06120113043344