基于Efuse的密钥读取控制方法、装置和计算机设备与流程

文档序号:17928164发布日期:2019-06-15 00:34阅读:548来源:国知局
基于Efuse的密钥读取控制方法、装置和计算机设备与流程

本发明涉及固态硬盘技术领域,特别是涉及一种基于efuse的密钥读取控制方法、装置、计算机设备和存储介质。



背景技术:

efuse类似于eeprom,是一次性可编程存储器,在芯片出厂之前会被写入信息。efuse通常可用于存储memrepair的存储修复数据,也可用于存储芯片的信息:如芯片可使用电源电压,芯片的版本号,生产日期。efuse中通常包含芯片电压字段、芯片版本号、芯片生产日期以及关键的密钥信息。固态硬盘控制器bootrom有两种模式,分别为加载模式和下载模式,通过外部gpio配置选择不同模式。

参考图1,在传统技术中,固态硬盘出厂后,固态硬盘控制器bootrom工作在加载模式下,此时控制器从flash中加载bootloader密文文件,使用efuse中的密钥来对密文bootloader进行解密,生成明文的bootloader运行,bootloader再会从flash中加载固件运行。

固态硬盘在开卡时,控制器使用的是下载模式,控制器会下载明文的mploader,mploader运行之后会将密钥等关键信息烧写到efuse中,并将密文bootloader和固件烧写到flash中。

由于控制器工作在下载模式时,下载运行的文件是明文的。固态硬盘出厂后,非法人员便可利用该漏洞,先通过gpio将控制器bootrom配置成下载模式,上电后,下载运行非法的代码,读取efuse中的密钥信息,并通过uart或者pcie接口将密钥信息读取出来。这样便造成了密钥泄露。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种可以实现提高密钥安全性的基于efuse的密钥读取控制方法、装置、计算机设备和存储介质。

一种基于efuse的密钥读取控制方法,所述方法包括:

获取基于efuse的密钥读取请求;

根据所述基于efuse的密钥读取请求通过控制器运行密钥读取程序;

判断所述控制器是否处于加载状态;

若所述控制器处于加载状态则读取所述efuse中的密钥;

若所述控制器不处于加载状态则禁止读取所述efuse中的密钥。

在其中一个实施例中,所述判断所述控制器是否处于加载状态的步骤包括:

读取模式配置gpio的电压值;

根据所述gpio的电压值判断控制器是否处于加载模式。

在其中一个实施例中,在所述根据所述gpio的电压值判断控制器是否处于加载模式的步骤之后还包括:

仅在模式配置的gpio将所述控制器配置为加载模式时,才通过efuse控制模块使能efuse读取功能。

在其中一个实施例中,在所述根据所述gpio的电压值判断控制器是否处于加载模式的步骤之后还包括:

当模式配置的gpio将所述控制器配置为下载模式时,则通过efuse控制模块关闭efuse读取功能。

一种基于efuse的密钥读取控制装置,所述基于efuse的密钥读取控制装置包括:

获取模块,所述获取模块用于获取基于efuse的密钥读取请求;

运行模块,所述运行模块用于根据所述基于efuse的密钥读取请求通过控制器运行密钥读取程序;

判断模块,所述判断模块用于判断所述控制器是否处于加载状态;

第一执行模块,所述第一执行模块用于若所述控制器处于加载状态则读取所述efuse中的密钥;

第二执行模块,所述第二执行模块用于若所述控制器不处于加载状态则禁止读取所述efuse中的密钥。

在其中一个实施例中,所述判断模块还用于:

读取模式配置gpio的电压值;

根据所述gpio的电压值判断控制器是否处于加载模式。

在其中一个实施例中,所述装置还包括使能模块,所述使能模块用于:

仅在模式配置的gpio将所述控制器配置为加载模式时,才通过efuse控制模块使能efuse读取功能。

在其中一个实施例中,所述装置还包括关闭模块,所述关闭模块用于:

当模式配置的gpio将所述控制器配置为下载模式时,则通过efuse控制模块关闭efuse读取功能。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。

上述基于efuse的密钥读取控制方法、装置、计算机设备和存储介质,通过获取基于efuse的密钥读取请求;根据所述基于efuse的密钥读取请求通过控制器运行密钥读取程序;判断所述控制器是否处于加载状态;若所述控制器处于加载状态则读取所述efuse中的密钥;若所述控制器不处于加载状态则禁止读取所述efuse中的密钥。本发明通过控制器仅运行在加载模式时,可以从efuse中读取秘钥,当控制器运行在下载模式时,代码无法从efuse中读取秘钥,实现了提高存储在efuse中秘钥的安全性。

附图说明

图1为传统技术中加载模块和下载模式中密钥控制方法的流程示意图;

图2为一个实施例中基于efuse的密钥读取控制方法的流程示意图;

图3为另一个实施例中基于efuse的密钥读取控制方法的流程示意图;

图4为再一个实施例中基于efuse的密钥读取控制方法的流程示意图;

图5为又一个实施例中基于efuse的密钥读取控制方法的流程示意图;

图6为一个实施例中基于efuse的密钥读取控制方法的具体流程图;

图7为一个实施例中基于efuse的密钥读取控制装置的结构框图;

图8为又一个实施例中基于efuse的密钥读取控制装置的结构框图;

图9为再一个实施例中基于efuse的密钥读取控制装置的结构框图;

图10为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参考图1,通常在固态硬盘控制器efuse中保存有关键的密钥信息。固态硬盘控制器bootrom有两种模式,分别为加载模式和下载模式,通过外部gpio配置选择不同模式。固态硬盘出厂后,固态硬盘控制器bootrom工作在加载模式下,此时控制器从flash中加载bootloader密文文件,使用efuse中的密钥来对密文bootloader进行解密,生成明文的bootloader运行,bootloader再会从flash中加载固件运行。

固态硬盘在开卡时,控制器使用的是下载模式,控制器会下载明文的mploader,mploader运行之后会将密钥等关键信息烧写到efuse中,并将密文bootloader和固件烧写到flash中。

此外,为了更清楚的说明本发明的内容,本发明中英文缩写的解释如下:

bootrom:固化在微控制器内部,用于芯片正常工作的代码。

flash:一种非易失性的存储器。

bootloader:用于加载固态硬盘全系统固件的加载工程。

mploader:固态硬盘出厂前的开卡工程。

gpio:通用输入/输出。

efuse:一种一次性可编程存储器。

uart:一种异步收发传输器,简称串口。

pcie:一种高速串行计算机扩展总线标准。

本发明提出一种保证秘钥安全性的方法,使用efuse控制模块防止控制器运行在下载模式时读取efuse中的秘钥,以保证efuse中秘钥的安全性。控制器仅运行在加载模式时,可以从efuse中读取秘钥,当控制器运行在加载模式时,代码无法从efuse中读取秘钥,以保证存储在efuse中秘钥的安全性。

在一个实施例中,如图2所示,提供了一种基于efuse的密钥读取控制方法,该方法包括:

步骤202,获取基于efuse的密钥读取请求;

步骤204,根据基于efuse的密钥读取请求通过控制器运行密钥读取程序;

步骤206,判断控制器是否处于加载状态;

步骤208,若控制器处于加载状态则读取efuse中的密钥;

步骤210,若控制器不处于加载状态则禁止读取efuse中的密钥。

具体地,首先,控制器获取基于efuse的密钥读取请求。然后,根据该请求控制器代码运行相应的密钥读取程序,密钥读取程序用于读取efuse的密钥。接着,判断控制器是否处于加载状态,具体的判断方式可以为通过判断gpio引脚电压值判断当前控制器的运行模式。根据该判断的结果通过efuse控制模块控制efuse读取功能的打开和关闭,当控制器处于加载状态则成功读取efuse中的密钥,当控制器不处于加载状态则读取efuse中的密钥失败,并将密钥读取程序自动挂死。

在本实施例中,通过获取基于efuse的密钥读取请求;根据基于efuse的密钥读取请求通过控制器运行密钥读取程序;判断控制器是否处于加载状态;若控制器处于加载状态则读取efuse中的密钥;若控制器不处于加载状态则禁止读取efuse中的密钥。本实施例通过控制器仅运行在加载模式时,可以从efuse中读取秘钥,当控制器运行在下载模式时,代码无法从efuse中读取秘钥,实现了提高存储在efuse中秘钥的安全性。

在一个实施例中,如图3所示,提供了一种基于efuse的密钥读取控制方法,该方法中判断控制器是否处于加载状态的步骤包括:

步骤302,读取模式配置gpio的电压值;

步骤304,根据gpio的电压值判断控制器是否处于加载模式。

具体地,本实施例在现有控制器设计基础上,新增了一个efuse控制模块。efuse控制模块是否使能efuse读取功能取决于模式配置的gpio。仅在控制器模式配置的gpio配置为加载模式时,efuse控制模块才使能efuse读取功能。当模式配置的gpio将控制器配置为下载模式,则关闭efuse读取功能。

这样就避免了efuse中密钥被泄露的可能。即使不法分子通过配置下载模式,下载运行了非法代码,由于efuse控制模块的阻隔,依然无法读取efuse中的密钥信息,有效保证了密钥的安全性。

在加载模式下,由于使用了加密加载的方式,不存在运行非法代码的可能,将efuse读取功能使能,控制器bootrom依然可以从flash中顺利加载bootloader,并解密运行,不影响控制器的正常加载运行。

在一个实施例中,如图4所示,提供了一种基于efuse的密钥读取控制方法,该方法中判断控制器是否处于加载状态的步骤还包括:

步骤402,读取模式配置gpio的电压值;

步骤404,根据gpio的电压值判断控制器是否处于加载模式;

步骤406,仅在模式配置的gpio将所述控制器配置为加载模式时,才通过efuse控制模块使能efuse读取功能。

在其中一个实施例中,如图5所示,提供了一种基于efuse的密钥读取控制方法,该方法中判断控制器是否处于加载状态的步骤还包括:

步骤502,读取模式配置gpio的电压值;

步骤504,根据gpio的电压值判断控制器是否处于加载模式;

步骤506,仅在模式配置的gpio将控制器配置为加载模式时,才通过efuse控制模块使能efuse读取功能;

步骤508,当模式配置的gpio将控制器配置为下载模式时,则通过efuse控制模块关闭efuse读取功能。

具体地,参考图6为一个实施例中密钥读取控制的具体流程包括:

1.控制器代码运行,读取efuse中的密钥。下一步执行流程2。

2.判断模式配置的专用gpio是否配置为加载模式,是则下一步执行流程3。否则下一步执行流程4。

3.efuse读取成功。

4.efuse读取失败。程序自动挂死。

应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图7所示,提供了一种基于efuse的密钥读取控制装置700,该装置包括:

获取模块701,用于获取基于efuse的密钥读取请求;

运行模块702,用于根据基于efuse的密钥读取请求通过控制器运行密钥读取程序;

判断模块703,用于判断控制器是否处于加载状态;

第一执行模块704,用于若控制器处于加载状态则读取efuse中的密钥;

第二执行模块705,用于若控制器不处于加载状态则禁止读取efuse中的密钥。

在一个实施例中,判断模块703还用于:

读取模式配置gpio的电压值;

根据gpio的电压值判断控制器是否处于加载模式。

在一个实施例中,如图8所示,提供了一种基于efuse的密钥读取控制装置700,该装置还包括使能模块706,用于:

仅在模式配置的gpio将控制器配置为加载模式时,才通过efuse控制模块使能efuse读取功能。

在一个实施例中,如图9所示,提供了一种基于efuse的密钥读取控制装置700,该装置还包括关闭模块707,用于:

当模式配置的gpio将控制器配置为下载模式时,则通过efuse控制模块关闭efuse读取功能。

关于基于efuse的密钥读取控制装置的具体限定可以参见上文中对于基于efuse的密钥读取控制方法的限定,在此不再赘述。

在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于efuse的密钥读取控制方法。

本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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