发明内容
有鉴于此,本发明实施例提供一种密钥配置方法、装置和相关设备,以根据不同系统对密钥的不同要求,配置合适的密钥。
为解决上述问题,本发明实施例提供如下技术方案:
一种密钥配置方法,包括:
系统启动后,获取第一密钥配置信息;
根据所述第一密钥配置信息,确定目标密钥;所述目标密钥为多个密钥中的一个,所述多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥;
将所述目标密钥配置至内存控制器,以使所述内存控制器基于所述目标密钥对内存数据进行加密或解密。
可选地,所述第一密钥配置信息包括硬件信息和/或密钥存储信息。
可选地,所述第一密钥配置信息包括密钥存储信息,所述密钥存储信息包括第一密钥存储信息和第二密钥存储信息,则所述获取第一密钥配置信息,根据所述第一密钥配置信息,确定目标密钥,包括:
获取所述第一密钥存储信息,判断根据所述第一密钥存储信息是否能够得到所述第一密钥;若能得到所述第一密钥,则确定所述第一密钥为目标密钥;
若不能得到所述第一密钥,则获取所述第二密钥存储信息,判断根据所述第二密钥存储信息是否能够得到所述第二密钥;
若能得到所述第二密钥,则确定所述第二密钥为目标密钥;
若不能得到所述第二密钥,则确定所述第三密钥为目标密钥。
可选地,所述第一密钥配置信息包括硬件信息和密钥存储信息,所述密钥存储信息包括第一密钥存储信息,则所述获取第一密钥配置信息,根据所述第一密钥配置信息,确定目标密钥,包括:
获取所述第一密钥存储信息,判断根据所述第一密钥存储信息是否能够得到所述第一密钥;若能得到所述第一密钥,则确定所述第一密钥为目标密钥;
若不能得到所述第一密钥,则获取所述硬件信息,根据所述硬件信息判断内存是否为易失性内存;
若所述内存为易失性内存,则确定所述第三密钥为目标密钥;
若所述内存为非易失性内存,则确定所述第二密钥为目标密钥。
可选地,所述第一密钥配置信息包括硬件信息,则所述获取第一密钥配置信息,根据所述第一密钥配置信息,确定目标密钥,包括:
获取所述硬件信息,根据所述硬件信息判断内存是否为易失性内存;
若所述内存为易失性内存,则确定所述第三密钥为目标密钥;
若所述内存为非易失性内存,则确定所述第一密钥或所述第二密钥为目标密钥。
可选地,生成并使用所述第二密钥之后,还包括:存储所述第二密钥;
所述存储所述第二密钥,包括:
获取芯片密钥;
基于所述芯片密钥,生成初始加密密钥和完整性密钥;
采用所述初始加密密钥加密所述第二密钥,得到第二密钥加密数据;
采用所述完整性密钥计算所述第二密钥的完整性信息生成第二密钥验证数据;
保存所述第二密钥加密数据和所述第二密钥验证数据,并生成第二密钥存储信息。
可选地,存储所述第二密钥之后,还包括:
从所述第二密钥存储信息中获得所述第二密钥加密数据和所述第二密钥验证数据,并计算得到所述第二密钥加密数据的完整性信息;
判断所述第二密钥加密数据的完整性信息与所述第二密钥验证数据是否匹配;
若匹配,则对所述第二密钥加密数据进行解密,得到所述第二密钥。
可选地,获取第一密钥配置信息之前,还包括:
获取用户预设的第二密钥配置信息;
判断所述第二密钥配置信息是否完整,若完整,则根据所述第二密钥配置信息,确定所述目标密钥;
若不完整,则获取所述第一密钥配置信息。
一种密钥配置装置,包括:
第一获取模块,用于系统启动后,获取第一密钥配置信息;
第一处理模块,用于根据所述第一密钥配置信息,确定目标密钥;所述目标密钥为多个密钥中的一个,所述多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥;
第一配置模块,用于将所述目标密钥配置至内存控制器,以使所述内存控制器基于所述目标密钥对内存数据进行加密或解密。
可选地,所述第一密钥配置信息包括硬件信息和/或密钥存储信息。
可选地,所述第一密钥配置信息包括密钥存储信息,所述密钥存储信息包括第一密钥存储信息和第二密钥存储信息,则所述第一获取模块用于获取所述第一密钥存储信息和所述第二密钥存储信息,所述第一处理模块用于判断根据所述第一密钥存储信息是否能够得到所述第一密钥;若能得到所述第一密钥,则确定所述第一密钥为目标密钥;若不能得到所述第一密钥,则判断根据所述第二密钥存储信息是否能够得到所述第二密钥;若能得到所述第二密钥,则确定所述第二密钥为目标密钥;若不能得到所述第二密钥,则确定所述第三密钥为目标密钥。
可选地,所述第一密钥配置信息包括硬件信息和密钥存储信息,所述密钥存储信息包括第一密钥存储信息,则所述第一获取模块还用于获取所述第一密钥存储信息和所述硬件信息,所述第一处理模块还用于判断根据所述第一密钥存储信息是否能够得到所述第一密钥;若能得到所述第一密钥,则确定所述第一密钥为目标密钥;若不能得到所述第一密钥,则根据所述硬件信息判断内存是否为易失性内存;若所述内存为易失性内存,则确定所述第三密钥为目标密钥;若所述内存为非易失性内存,则确定所述第二密钥为目标密钥。
可选地,所述第一密钥配置信息包括硬件信息,则所述第一获取模块用于获取所述硬件信息,所述第一处理模块用于根据所述硬件信息判断内存是否为易失性内存;若所述内存为易失性内存,则确定所述第三密钥为目标密钥;若所述内存为非易失性内存,则确定所述第一密钥或所述第二密钥为目标密钥。
可选地,生成并使用所述第二密钥之后,所述第一处理模块还用于存储所述第二密钥,并在存储所述第二密钥时,获取芯片密钥,基于所述芯片密钥,生成初始加密密钥和完整性密钥,采用所述初始加密密钥加密所述第二密钥,得到第二密钥加密数据,采用所述完整性密钥计算所述第二密钥的完整性信息生成第二密钥验证数据,保存所述第二密钥加密数据和所述第二密钥验证数据,并生成第二密钥存储信息。
可选地,在存储所述第二密钥之后,所述第一处理模块还用于从所述第二密钥存储信息中获得所述第二密钥加密数据和所述第二密钥验证数据,并计算得到所述第二密钥加密数据的完整性信息;判断所述第二密钥加密数据的完整性信息与所述第二密钥验证数据是否匹配;若二者匹配,则对所述第二密钥加密数据进行解密,得到所述第二密钥。
可选地,还包括:
第二获取模块,用于获取用户预设的第二密钥配置信息;
第二处理模块,用于判断所述第二密钥配置信息是否完整,若完整,则根据所述第二密钥配置信息,确定所述目标密钥,若不完整,则发送执行指令至所述第一获取模块,以使所述第一获取模块获取第一密钥配置信息。
一种安全处理器,包括如上任一项所述的密钥配置装置。
一种片上系统,包括若上所述的安全处理器和内存控制器;所述内存控制器基于所述安全处理器配置的目标密钥,对内存数据进行加密或解密。
一种计算机系统,包括若上所述的片上系统和内存;
所述片上系统中的内存控制器基于所述目标密钥对所述内存的数据进行加密或解密。
可选地,还包括第一存储器和第二存储器;所述第一存储器用于存储第一密钥存储信息,所述第二存储器用于存储第二密钥存储信息和第二用户配置信息;
所述第一存储器位于所述片上系统中。
可选地,还包括第一存储器;所述第一存储器用于存储第一密钥存储信息;所述第一存储器位于所述片上系统中。
本发明实施例提供的密钥配置方法、装置和相关设备,在系统启动后,可以获取第一密钥配置信息,并根据该第一密钥配置信息确定目标密钥。其中,目标密钥为多个密钥中的一个,而多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥。由于多个密钥至少包括满足不同系统要求的第二密钥和第三密钥,以及,满足用户要求的第一密钥,因此,可以根据系统或用户的要求,预设第一密钥配置信息,然后根据该第一密钥配置信息,配置满足系统或用户要求的目标密钥,如配置目标密钥为第一密钥、第二密钥或第三密钥,从而可以使得本发明实施例提供的密钥配置方法、装置和相关设备,能够满足不同系统或用户对密钥的不同要求。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例公开内容的一个可选示例,图1示例性的示出了计算机系统体系架构的一种框图,需要说明的是,该框图是为便于理解本发明实施例公开内容而示出,本发明实施例并不仅限于图1所示架构。
参考图1,计算机系统架构可以包括:通用处理器(Central Processing Unit,CPU)1、内存控制器2、内存3和安全处理器(PSP,Platform Secure Processor)4。可选地,通用处理器1、内存控制器2和安全处理器4集成于片上系统(System on a chip,SOC)。
其中,通用处理器1可通过运行在其内的主机操作系统10配置虚拟机管理器11,并通过虚拟化技术虚拟化出多台虚拟机12,该多台虚拟机12可由虚拟机管理器(VMM,VirtualMachine Monitor)11进行内存管理。
内存控制器2是控制内存3,并且使内存3与通用处理器1之间交换数据的硬件。在典型的计算机系统中,内存控制器2负责处理通用处理器1的内存访问请求,对于内存访问请求,内存控制器2可检测缓存是否记录内存访问请求对应的地址,若是,则从缓存读取该地址相应的数据,否则,遍历内存的页表查找该地址并读取该地址相应的数据。其中,在内存的页表中,记录有虚拟机虚拟地址到主机物理地址的映射关系。
安全处理器4是安全虚拟化技术专门设置的负责虚拟机数据安全的处理器。加解密引擎21是内存控制器中用于实现对内存空间进行加解密的器件。其中,安全处理器4基于硬件随机数生成内存加密密钥,并将内存加密密钥存储在内存控制器2的加解密引擎21中,以便加解密引擎21基于存储的内存密钥,对虚拟机12对应的内存空间进行加解密,避免物理主机、虚拟机管理器11对虚拟机的数据访问和篡改,保障虚拟机的数据安全。其中,安全处理器4会为不同的虚拟机分配不同的密钥。
但是,现有的内存密钥都是在系统启动时,安全处理器4基于硬件随机数生成的新的密钥。对于易失性内存(Volatile Memory)而言,系统启动后,上次运行使用的内存数据会直接被丢弃,因此,采用新的密钥也不会影响易失性内存的运行。但是,对于非易失性内存(Non Volatile Memory)而言,系统启动后,上次运行使用的内存数据并不会被丢弃,即,内存中仍然保存着上次运行使用的数据,如果采用新的密钥会导致上次运行使用的内存数据不能被正确解密,进而导致非易失性内存系统不能正常运行。
也就是说,对于具有非易失性内存的系统而言,密钥要求为上一次使用的密钥,即本次系统启动之前已经使用并存储的密钥,对于具有易失性内存的系统而言,密钥可以为本次系统启动之后生成的新的密钥,也可以为本次系统启动之前已经生成、使用并存储的密钥。
基于此,本发明实施例提供了一种密钥配置方法、装置和相关设备,密钥配置方法包括:
系统启动后,获取第一密钥配置信息;
根据第一密钥配置信息,确定目标密钥;目标密钥为多个密钥中的一个,多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥;
将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密。
由于多个密钥至少包括满足不同系统要求的第二密钥和第三密钥,以及,满足用户要求的第一密钥,因此,可以根据系统或用户的要求,预设第一密钥配置信息,然后根据该第一密钥配置信息,配置满足系统或用户要求的目标密钥,如配置目标密钥为第一密钥、第二密钥或第三密钥,从而能够满足不同系统或用户对密钥的不同要求。
作为本发明实施例公开内容的一种可选实现,本发明一个实施例提供了一种密钥配置方法,如图2所示,图2为本发明一个实施例提供的密钥配置方法的流程图,该密钥配置方法包括:
S101:系统启动后,获取第一密钥配置信息;
本发明一些实施例中,可以根据不同系统的不同要求,或者,根据系统的不同用户的不同要求,或者,根据系统同一用户的不同要求,预先设置相应的第一密钥配置信息,将第一密钥配置信息存储在系统的存储器中,并对系统进行设置,以在系统启动后,获取存储器存储的第一密钥配置信息,并根据第一密钥配置信息确定目标密钥,以便基于目标密钥对内存数据进行加解密。
当然,本发明并不仅限于此,在另一些实施例中,第一密钥配置信息也可以是系统本身就具有的信息,如第一密钥配置信息为系统的硬件信息,此时,并不需要预先设置、存储第一密钥配置信息,只需要对系统进行设置,使得在系统启动后,可以获取第一密钥配置信息,并根据第一密钥配置信息确定目标密钥即可。
需要说明的是,上述系统可以是计算机系统,也可以是片上系统。即,本发明实施例中可以基于计算机系统的要求对密钥进行配置,也可以基于片上系统的要求对密钥进行配置。此外,本发明实施例中的第一密钥配置信息可以是系统用户预先设置的,也可以是系统厂商预先设置的,本发明实施例并不对此进行限定。
S102:根据第一密钥配置信息,确定目标密钥;
本发明实施例中,获取第一密钥配置信息之后,可以根据第一密钥配置信息确定目标密钥。其中,目标密钥为多个密钥中的一个,多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥。
本发明一些实施例中,若用户要求内存密钥为第一密钥,则可以预先设置与第一密钥对应的第一密钥配置信息,系统启动并获取第一密钥配置信息之后,即可根据第一密钥配置信息确定目标密钥即内存密钥为第一密钥。
需要说明的是,本发明实施例中的第一密钥为用户预设的固定密钥,如可以根据用户要求,将用户自己的固定密钥即第一密钥作为内存密钥,并通过配置接口预先存储在系统中的存储器中。系统启动之后,获取存储器存储的第一密钥配置信息,即可得到第一密钥。
由于用户拥有第一密钥,因此,用户可以解密基于第一密钥加密的数据,并对数据做进一步的处理。并且,若同一用户的不同系统或机器使用的内存密钥都是第一密钥,则不同系统或机器之间可以相互解密加密的内存数据,即内存可以在不同系统或机器之间交换使用,从而可以给用户带来一定的便利性。
还需要说明的是,本发明实施例中的多个密钥不仅包括基于用户要求的密钥,如第一密钥,还包括基于不同系统要求的密钥,如第二密钥和第三密钥。由于第二密钥在本次系统启动之前已经生成、使用并存储,即上一次系统启动之后,使用的内存密钥就是第二密钥,因此,对于具有非易失性内存的系统而言,本次系统启动之后,仍使用上一次使用的内存密钥即第二密钥,可以对上一次的内存的数据进行解密,从而可以保证系统的正常运行。对于具有易失性内存的系统而言,本次系统启动之后,上一次的内存数据并未保存,因此,即便使用本次系统启动之后生成的新的密钥即第三密钥,也不会影响系统的正常运行。
也就是说,若系统具有非易失性内存,则会要求内存密钥为第二密钥,若系统具有易失性内存,则可能会要求内存为第三密钥。基于此,只要根据系统要求,预先设置相应的第一密钥配置信息,如预先存储第二密钥,系统启动后,即可根据第一密钥配置信息确定目标密钥为第二密钥或第三密钥,即确定内存密钥为第二密钥或第三密钥。当然,本发明并不仅限于此,本发明实施例中的多个密钥还可以包括其他密钥,以满足不同系统或用户的不同要求。
其中,与第一密钥不同的是,第二密钥和第三密钥都是系统生成的密钥。可选地,第二密钥和第三密钥是安全处理器基于随机数发生器生成的随机数生成的密钥。当然,本发明并不仅限于此,在另一些实施例中,第二密钥和第三密钥也可以是系统采用其他方式生成的密钥。可选地,第二密钥可以是系统任意一次启动后生成、使用并存储的密钥。此外,系统生成、使用并存储第三密钥之后,第三密钥即可成为第二密钥。
S103:将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密。
确定目标密钥之后,将目标密钥配置至内存控制器。具体地,可以写入内存控制器中的加解密引擎中的密钥寄存器中,以便内存控制器基于目标密钥对内存数据进行加密或解密。具体地,内存控制器接收到通用处理器的内存访问请求,且不能从缓存中读取与内存访问请求对应的地址相应的数据时,会从内存中读取与该地址相应的数据,基于确定的目标密钥对数据进行解密,并返回解密后的数据。此外,内存控制器接收到通用处理器的内存访问请求,向内存中写入数据之前,会基于确定的目标密钥对数据进行加密,并将加密后的数据写入到内存中。
可选地,本发明实施例中的第一密钥配置信息包括硬件信息和/或密钥存储信息。本发明实施例中,可以根据系统的硬件信息确定目标密钥,也可以根据密钥存储信息确定目标密钥,也可以根据硬件信息和密钥存储信息来确定目标密钥。当然,本发明并不仅限于此,在一些实施例中,第一密钥配置信息也可以是其他信息,在此不再赘述。
本发明一些实施例中,第一密钥配置信息可以仅包括密钥存储信息,该密钥存储信息包括第一密钥存储信息和第二密钥存储信息,在此基础上,如图3所示,图3为本发明另一个实施例提供的密钥配置方法的部分流程图,获取第一密钥配置信息,根据第一密钥配置信息,确定目标密钥,包括:
S201:获取第一密钥存储信息;
S202:判断根据第一密钥存储信息是否能够得到第一密钥;若能得到第一密钥,则进入S203;若不能得到第一密钥,则进入S204;
S203:确定第一密钥为目标密钥;
S204:获取第二密钥存储信息;
S205:判断根据第二密钥存储信息是否能够得到第二密钥;若能得到第二密钥,则进入S206;若不能得到第二密钥,则进入S207;
S206:确定第二密钥为目标密钥;
S207:确定第三密钥为目标密钥。
其中,S203、S206或S207步骤中确定目标密钥之后,都会进入S103,即都会将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密。
需要说明的是,若第一密钥配置信息包括密钥存储信息,则需要预先将密钥存储到存储器中生成密钥存储信息。可以预先将第一密钥存储到第一存储器中,生成第一密钥存储信息。同样,也可以预先将第二密钥存储到第二存储器中生成第二密钥存储信息。可选地,第一存储器是CPU架构内的芯片fuse(可编程存储模块),第二存储器是CPU架构外的存储器,如第二存储器可以是FLASH(FLASH EEPROM,闪存)等。
系统启动之后,会先从第一存储器11中读取其存储的第一密钥存储信息,然后判断是否能够从第一密钥存储信息中获取第一密钥,若能获取,则确定目标密钥为第一密钥,若不能,再从第二存储器12中获取其存储的第二密钥存储信息,然后判断是否能够从第二密钥存储信息中获取第二密钥,若能获取,则确定目标密钥为第二密钥,若不能,确定目标密钥为第三密钥。其中,第三密钥可以是响应系统启动消息生成的随机密钥,也可以是响应第二密钥获取结果生成的随机密钥。
当然,本发明并不仅限于此,在另一些实施例中,第一密钥和第二密钥也可以存储在同一存储器中,此时,只需获取一次存储器的密钥存储信息,即可对第一密钥和第二密钥进行判断。
此外,在本发明的另一些实施例中,第一密钥配置信息也可以包括密钥存储信息和硬件信息,并且,密钥存储信息包括第一密钥存储信息,在此基础上,如图4所示,图4为本发明另一个实施例提供的密钥配置方法的部分流程图,获取第一密钥配置信息,根据第一密钥配置信息,确定目标密钥,包括:
S301:获取第一密钥存储信息;
S302:判断根据第一密钥存储信息是否能够得到第一密钥;若能得到第一密钥,则进入S303;若不能得到第一密钥,则进入S304;
S303:确定第一密钥为目标密钥;
S304:获取硬件信息;
S305:根据硬件信息判断内存是否为易失性内存;若内存为易失性内存,则进入S306;若内存为非易失性内存,则进入S307;
S306:确定第三密钥为目标密钥;
S307:确定第二密钥为目标密钥。
同样,S303、S306或S307步骤中确定目标密钥之后,都会进入S103,即都会将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密。
需要说明的是,上述实施例中仅以硬件信息是内存的硬件信息为例进行说明,但并不仅限于此,在另一些实施例中,也可以根据CPU等其他硬件的信息,对密钥进行配置,在此不再赘述。
本发明的另一些实施例中,第一密钥配置信息也可以仅包括硬件信息,如图5所示,图5为本发明一些实施例提供的密钥配置方法的流程图,获取第一密钥配置信息,根据第一密钥配置信息,确定目标密钥,包括:
S301:获取硬件信息;
S302:根据硬件信息判断内存是否为易失性内存;
若内存为易失性内存,则进入S303;
若内存为非易失性内存,则进入S304;
S303:确定第三密钥为目标密钥;
S304:确定第一密钥或第二密钥为目标密钥。
需要说明的是,本发明实施例中的密钥配置方法并不仅限于上述几种方法,在另一些实施例中,还可以采用其他密钥配置信息和方法进行密钥的配置,在此不再赘述。
还需要说明的是,本发明一些实施例中,在确定第二密钥为目标密钥之前,系统中需存储有第二密钥。即,本发明实施例提供的密钥配置方法在生成并使用第二密钥之后,还包括:存储第二密钥。
本发明一些实施例中,可以直接将第二密钥存储到存储器中,当然,在另一些实施例中,为了保证存储的第二密钥的安全性,也可以对第二密钥进行加密之后,再将其存储到存储器中,即,存储第二密钥又包括:加密第二密钥。
一个可选的实施例中,存储第二密钥,包括:
获取芯片密钥;
基于芯片密钥,生成初始加密密钥和完整性密钥;
采用初始加密密钥加密第二密钥,得到第二密钥加密数据;
采用完整性密钥计算第二密钥的完整性信息生成第二密钥验证数据;
保存第二密钥加密数据和第二密钥验证数据,并生成第二密钥存储信息。
在此基础上,存储第二密钥之后,还包括:
从第二密钥存储信息中获得第二密钥加密数据和第二密钥验证数据,并计算得到第二密钥加密数据的完整性信息;
判断第二密钥加密数据的完整性信息与第二密钥验证数据是否匹配;
若匹配,则对第二密钥加密数据进行解密,得到第二密钥。
具体地,首先获取系统存储的芯片密钥Kchip,然后使用芯片密钥Kchip派生出即生成加密密钥Kenc和完整性密钥Kmac,然后采用初始加密密钥Kenc加密第二密钥Kmem,得到第二密钥加密数据Ks,采用完整性密钥Kmac计算第二密钥Kmem的完整性信息生成第二密钥验证数据Ms,并将第二密钥加密数据Ks和第二密钥验证数据Ms保存到存储器中。
存储第二密钥之后,具体可以在系统再次启动,并从存储器中读取第二密钥存储信息之后,从第二密钥存储信息中获得第二密钥加密数据Ks和第二密钥验证数据Ms,并计算得到第二密钥加密数据Ks的完整性信息,判断第二密钥加密数据Ks的完整性信息与第二密钥验证数据Ms是否匹配,若匹配,则说明第二密钥加密数据Ks是合法的密钥,则对第二密钥加密数据Ks进行解密,得到第二密钥Kmem。
需要说明的是,本发明实施例中的第一密钥配置信息可以是系统厂商根据系统或用户要求设置的密钥配置信息,也可以是系统用户根据系统或自身要求设置的密钥配置信息。此外,本发明一些实施例中,在系统厂商设置第一密钥配置信息的基础上,用户还可以设置第二密钥配置信息,进行密钥的重新配置。
即,本发明的一些实施例中,如图6所示,图6为本发明另一实施例提供的密钥配置方法的部分流程图,获取第一密钥配置信息之前,还包括:
S501:获取用户预设的第二密钥配置信息;
S502:判断第二密钥配置信息是否完整,若完整,则进入S503,若不完整,则进入S504;
S503:根据第二密钥配置信息,确定目标密钥;
S504:获取第一密钥配置信息。
具体地,系统启动之后,会先获取用户预设的第二密钥配置信息,并判断第二密钥配置信息是否完整,若完整,则根据第二密钥配置信息,确定目标密钥,并将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密,若不完整,则获取第一密钥配置信息,根据第一密钥配置信息,确定目标密钥,将目标密钥配置至内存控制器,以使内存控制器基于目标密钥对内存数据进行加密或解密。
其中,第二密钥配置信息也可以包括密钥存储信息等。用户可以也通过第二密钥配置信息从多个密钥中确定一个密钥为目标密钥,多个密钥同样至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥。当然,用户也可以通过第二密钥配置信息,输入一个新的密钥作为目标密钥,在此不再一一赘述。
本发明实施例还提供了一种密钥配置装置,如图7所示,图7为本发明一个实施例提供的密钥配置装置的结构示意图,该密钥配置装置包括:
第一获取模块21,用于在系统启动后,获取第一密钥配置信息;
第一处理模块22,用于根据第一密钥配置信息,确定目标密钥;目标密钥为多个密钥中的一个,多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥;
第一配置模块23,用于将目标密钥配置至内存控制器31,以使内存控制器31基于目标密钥对内存数据进行加密或解密。
其中,在系统启动后,第一获取模块21获取第一密钥配置信息,并将第一密钥配置信息传输至第一处理模块22,第一处理模块22根据第一密钥配置信息,确定目标密钥,并将确定后的目标密钥传输至第一配置模块23,以使第一配置模块23将目标密钥配置至内存控制器31。
由于多个密钥至少包括满足不同系统要求的第二密钥和第三密钥,以及,满足用户要求的第一密钥,因此,可以根据系统或用户的要求,预设第一密钥配置信息,然后通过本发明实施例提供的密钥配置装置根据该第一密钥配置信息,配置满足系统或用户要求的目标密钥,如配置目标密钥为第一密钥、第二密钥或第三密钥,从而能够满足不同系统或用户对密钥的不同要求。
可选地,本发明实施例中的第一密钥配置信息包括硬件信息和/或密钥存储信息。本发明实施例中,第一处理模块22可以根据系统的硬件信息确定目标密钥,也可以根据密钥存储信息确定目标密钥,也可以根据硬件信息和密钥存储信息来确定目标密钥。当然,本发明并不仅限于此,在一些实施例中,第一密钥配置信息也可以是其他信息,在此不再赘述。
本发明一些实施例中,第一密钥配置信息包括密钥存储信息,密钥存储信息包括第一密钥存储信息和第二密钥存储信息,则第一获取模块21用于获取第一密钥存储信息和第二密钥存储信息,第一处理模块22用于判断根据第一密钥存储信息是否能够得到第一密钥,若能得到第一密钥,则确定第一密钥为目标密钥,若不能得到第一密钥,则判断根据第二密钥存储信息是否能够得到第二密钥,若能得到第二密钥,则确定第二密钥为目标密钥,若不能得到第二密钥,则确定第三密钥为目标密钥。
需要说明的是,若第一密钥配置信息包括密钥存储信息,则需要预先将密钥存储到存储器中生成密钥存储信息。本发明一些实施例中,可以预先将第一密钥存储到第一存储器中,生成第一密钥存储信息。同样,也可以预先将第二密钥存储到第二存储器中生成第二密钥存储信息。
系统启动之后,第一获取模块21会先从第一存储器中获取第一密钥存储信息,第一处理模块22判断根据第一密钥存储信息是否能够得到第一密钥;若能够得到,则确定第一密钥为目标密钥;若不能得到第一密钥,第一处理模块22向第一获取模块21发送指令,使得第一获取模块21从第二存储器中获取第二密钥存储信息。当然,在另一些实施例中,第一获取模块21也可以先后从同一存储器中获取第一密钥存储信息和第二密钥存储信息。
本发明另一些实施例中,第一密钥配置信息包括硬件信息和密钥存储信息,密钥存储信息包括第一密钥存储信息,则第一获取模块21还用于获取第一密钥存储信息和硬件信息,第一处理模块22还用于判断根据第一密钥存储信息是否能够得到第一密钥,若能得到第一密钥,则确定第一密钥为目标密钥,若不能得到第一密钥,则根据硬件信息判断内存是否为易失性内存,若内存为易失性内存,则确定第三密钥为目标密钥,若内存为非易失性内存,则确定第二密钥为目标密钥。
同样,系统启动之后,第一获取模块21先获取第一密钥存储信息,第一处理模块22还用于判断根据第一密钥存储信息是否能够得到第一密钥;若能得到第一密钥,则确定第一密钥为目标密钥;若不能得到第一密钥,则发送指令至第一获取模块21,使得第一获取模块21获取硬件信息,以便第一处理模块22根据硬件信息判断内存是否为易失性内存。
本发明另一些实施例中,第一密钥配置信息包括硬件信息,则第一获取模块21用于获取硬件信息,第一处理模块22用于根据硬件信息判断内存是否为易失性内存,若内存为易失性内存,则确定第三密钥为目标密钥,若内存为非易失性内存,则确定第一密钥或第二密钥为目标密钥。
需要说明的是,本发明实施例中,根据系统或用户的要求,预设第一密钥配置信息之后,可以对第一获取模块21、第一处理模块22和第一配置模块23进行设置,以在系统启动之后,第一获取模块21能够获取预设的第一密钥配置信息,第一处理模块22能够根据预设的第一密钥配置信息,确定目标密码。
本发明一些实施例中,第二密钥和第三密钥可以是第一处理模块22基于随机数发生器生成的随机数生成的密钥。第一处理模块22生成并通过第一配置模块23将其写入内存控制器31中使用第二密钥之后,第一处理模块22还用于存储第二密钥,并在存储第二密钥时,获取芯片密钥,基于芯片密钥,生成初始加密密钥和完整性密钥,采用初始加密密钥加密第二密钥,得到第二密钥加密数据,采用完整性密钥计算第二密钥的完整性信息生成第二密钥验证数据,保存第二密钥加密数据和第二密钥验证数据,并生成第二密钥存储信息。
在此基础上,本发明一些实施例中,在存储第二密钥之后,具体可以在系统再次启动,并从存储器中读取第二密钥存储信息之后,第一处理模块22还用于从第二密钥存储信息中获得第二密钥加密数据和第二密钥验证数据,并计算得到第二密钥加密数据的完整性信息;判断第二密钥加密数据的完整性信息与第二密钥验证数据是否匹配;若二者匹配,则对第二密钥加密数据进行解密,得到第二密钥。
本发明实施例中,第一密钥配置信息可以是系统厂商根据系统或用户要求设置的密钥配置信息,也可以是系统用户根据系统或自身要求设置的密钥配置信息。此外,本发明一些实施例中,在系统厂商设置第一密钥配置信息的基础上,用户还可以设置第二密钥配置信息,进行密钥的重新配置。
在此基础上,如图8所示,图8为本发明另一个实施例提供的密钥配置装置的结构示意图,该密钥配置装置还包括:
第二获取模块24,用于获取用户预设的第二密钥配置信息;
第二处理模块25,用于判断第二密钥配置信息是否完整,若完整,则根据第二密钥配置信息,确定目标密钥,并发送目标密钥至第一配置模块23,以使第一配置模块23将目标密钥配置至内存控制器31,若不完整,则发送指令至第一获取模块21,以使第一获取模块21获取第一密钥配置信息,使第一处理模块22根据第一密钥配置信息确定目标密钥,使第一配置模块23将目标密钥配置至内存控制器31。
需要说明的是,可以提供配置接口给用户,以便用户将第二密钥配置信息存储到存储器中,以便密钥配置装置从存储器中获取第二密钥配置信息。
本发明实施例还提供了一种安全处理器,如图9所示,图9为本发明一个实施例提供的安全处理器的结构示意图,该安全处理器包括如上任一实施例提供的密钥配置装置321。即,本发明实施例中的安全处理器用于在系统启动后,获取密钥配置信息,根据密钥配置信息确定目标密钥,并将目标密钥配置至内存控制器31。
本发明实施例还提供了一种片上系统,如图10所示,图10为本发明一个实施例提供的片上系统的结构示意图,该片上系统包括如上任一实施例提供的安全处理器32和内存控制器31。其中,内存控制器31基于安全处理器32配置的目标密钥,对内存41的数据进行加密或解密。当然,该片上系统还包括通用处理器33等,在此不再赘述。
本发明实施例还提供了一种计算机系统,如图11所示,图11为本发明一个实施例提供的计算机系统的结构示意图,该计算机系统包括如上任一实施例提供的片上系统40和内存41。片上系统40中的内存控制器31基于目标密钥对内存41的数据进行加密或解密。
本发明一些实施例中,如图12所示,图12为本发明一个实施例提供的计算机系统的结构示意图,计算机系统还包括第一存储器42和第二存储器43。第一存储器42用于存储第一密钥存储信息,第二存储器43用于存储第二密钥存储信息和第二用户配置信息。可选地,第一存储器43位于片上系统中。
当然,本发明并不仅限于此,另一些实施例中,如图13所示,图13为本发明另一个实施例提供的计算机系统的结构示意图,计算机系统仅包括第一存储器42,第一存储器42用于存储第一密钥存储信息。
可选地,第一存储器是CPU架构内的芯片fuse(可编程存储模块),第二存储器是CPU架构外的存储器,如第二存储器可以是Flash等。
本发明实施例提供的密钥配置方法、装置和相关设备,在系统启动后,可以获取第一密钥配置信息,并根据该第一密钥配置信息确定目标密钥。其中,目标密钥为多个密钥中的一个,而多个密钥至少包括用户预设的第一密钥,本次系统启动之前已经生成、使用并存储的第二密钥,以及,本次系统启动之后生成的第三密钥。由于多个密钥至少包括满足不同系统要求的第二密钥和第三密钥,以及,满足用户要求的第一密钥,因此,可以根据系统或用户的要求,预设第一密钥配置信息,然后根据该第一密钥配置信息,配置满足系统或用户要求的目标密钥,如配置目标密钥为第一密钥、第二密钥或第三密钥,从而可以使得本发明实施例提供的密钥配置方法、装置和相关设备,能够满足不同系统或用户对密钥的不同要求。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。