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

处理安全密钥的方法和装置及电子设备

文献发布时间:2023-06-19 16:04:54



技术领域

本申请涉及芯片安全技术领域,特别涉及处理安全密钥的方法和装置及电子设备。

背景技术

现有的系统芯片(SoC)中,对存储在一次性可编程(OTP)存储器中的安全密钥的保护方法主要有以下两种。

一种是基于ARM TrustZone实现的可信执行环境(TEE)进行保护。安全密钥只能被TEE中的安全IP所访问,这些安全IP包括安全中央处理单元(CPU)和安全硬件加解密模块等。当使用安全密钥时,需要通过安全CPU从OTP中读取安全密钥到加解密模块中,再启动加解密模块对数据进行加解密。这种方法依赖于可信执行环境TEE的安全性,随着TEE复杂度的增加,可能带来潜在的安全漏洞,安全密钥存在被恶意软件访问造成泄露的风险。越来越多的客户希望安全密钥的安全性不依赖于TEE。

另一种保护密钥的方法是设计复杂的硬件OTP密钥读取模块。当使用安全密钥时,由安全CPU配置OTP密钥读取硬件模块,将密钥读取到加解密模块中,再启动加解密模块对数据进行加解密。这种方法安全CPU不直接接触密钥,不依赖于TEE的安全性,防止了密钥泄露的风险。但是这种方法需要复杂的硬件设计来实现OTP密钥读取模块来保护和控制OTP中的密钥安全,成本会增加许多。

发明内容

本申请提供了处理安全密钥的方法和装置及电子设备,其能够在不依赖于TEE的同时,还能在硬件上低成本地实现对安全密钥的保护。

在第一方面,提供一种处理安全密钥的方法。该方法包括:响应于上电启动指令,通过启动程序从一次性可编程存储器中读取安全密钥,并将所述安全密钥写入寄存器;以及响应于使用安全密钥指令,使硬件加解密模块从所述寄存器中读取所述安全密钥。

在一些实施例中,将所述安全密钥写入寄存器后,该方法还包括:通过所述启动程序将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;以及通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态。

在一些实施例中,该方法还包括:判断通过所述启动程序是否使用了与所述安全密钥相关联的随机存取存储器或高速缓存存储器;以及若所述随机存取存储器或所述高速缓存存储器被使用,则清除所述随机存取存储器或所述高速缓存存储器中的内容。

在一些实施例中,该方法还包括:通过所述启动程序加载固件并执行固件程序。

在一些实施例中,使硬件加解密模块从所述寄存器中读取所述安全密钥包括:配置所述硬件加解密模块,使得所述硬件加解密模块直接从所述寄存器中读取所述安全密钥。

在一些实施例中,通过启动程序从一次性可编程存储器中读取安全密钥包括:在JTAG调试器开启前通过所述启动程序读出存储在所述一次性可编程存储器中的所述安全密钥。

在一些实施例中,该方法还包括:使所述硬件加解密装置利用所述安全密钥执行加解密运算。

在第二方面,提供一种处理安全密钥的装置。该装置包括:一次性可编程存储器,被配置为存储安全密钥;硬件加解密模块,被配置为使用所述安全密钥执行加解密处理;处理模块,被配置为:响应于上电启动指令,从所述一次性可编程存储器中读取所述安全密钥,并将所述安全密钥写入寄存器;以及响应于使用安全密钥指令,使所述硬件加解密模块从所述寄存器中读取所述安全密钥。

在一些实施例中,所述处理模块进一步被配置为将所述安全密钥写入所述寄存器之后:将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;以及将访问所述寄存器中所述安全密钥设置为锁定状态。

在一些实施例中,所述处理模块被配置为:配置所述硬件加解密模块,使得所述硬件加解密模块直接从所述寄存器中读取所述安全密钥。

在一些实施例中,该装置还包括:所述寄存器,被设置为常供电寄存器。

在一些实施例中,所述处理模块进一步被配置为:响应于所述上电启动指令使所述硬件加解密模块读取来自随机存取存储器或高速缓存存储器的加解密数据;以及清除所述随机存取存储器或所述高速缓存存储器中的内容。

在一些实施例中,该装置还包括:引导存储器,被配置为存储启动程序,其中所述处理模块被配置为响应于所述上电启动指令运行所述启动程序以便执行处理。

在第三方面,提供一种电子设备。该电子设备包括:存储器,被配置为存储指令集;以及处理器,被配置为执行所述指令集以执行上述提及的处理安全密钥的方法。

根据本公开的实施例,在处理安全密钥的方法中,响应于上电启动指令,启通过启动程序从一次性可编程存储器中读取安全密钥,并将所述安全密钥写入寄存器,该步骤利用了启动程序阶段执行环节的安全特性,实现了对安全密钥的保护,接着响应于使用安全密钥指令,使硬件加解密模块从所述寄存器中读取所述安全密钥,该步骤无需设计复杂的硬件OTP密钥读取模块即读取安全密钥,低成本地实现了对安全密钥的保护。且在这个过程中,CPU无法访问到安全密钥,从而保证了安全密钥的安全性,不会因为TEE软件安全漏洞而泄露安全密钥。

进一步地,在将所述安全密钥写入至寄存器后,通过所述启动程序将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;设置为锁定状态后,一次性可编程存储器中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了一次性可编程存储器中的安全密钥再也无法被后续软件访问到。

此外,通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态。设置锁定状态后,常供电寄存器中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了常供电寄存器中的安全密钥再也无法被后续软件访问到。此时,只有硬件加解密模块才能访问常供电寄存器中的安全密钥。

上述发明内容相关记载仅是本申请技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本申请的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本申请的上述目的及其它目的、特征和优点能够更易于理解,以下结合本申请的具体实施方式及附图进行说明。

附图说明

附图仅用于示出本申请具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本申请的限制。在说明书附图中:

图1是示出根据本公开的实施例的处理安全密钥的方法的流程图;

图2是示出根据本公开的实施例的处理安全密钥的方法的流程图;

图3是示出根据本公开的实施例的处理安全密钥的方法的流程图;

图4是示出根据本公开的实施例的处理安全密钥的装置的框图;

图5是示出根据本公开的实施例的处理安全密钥的装置的模块示意图;

图6是示出根据本公开的实施例的电子设备的框图。

具体实施方式

为详细说明本申请可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本申请中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。

除非另有定义,本文所使用的技术术语的含义与本申请所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本申请。

在本申请的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如A和/或B,表示:存在A,存在B,以及同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。

在本申请中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。

在没有更多限制的情况下,在本申请中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。

在本申请中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本申请实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。

正如背景技术中所提及的,现有的技术手段,一种方法是依赖于可信执行环境TEE的安全性,随着TEE复杂度的增加,可能带来潜在的安全漏洞,安全密钥存在被恶意软件访问造成泄露的风险。另一种方法是需要复杂的硬件设计来实现OTP密钥读取模块来保护和控制OTP中的密钥安全,成本会增加许多。本申请设计了一种软硬件结合的方法,来低成本的实现对安全密钥的保护。

本申请的核心技术思想在于:借用了启动程序本身所运行的安全环境带来的安全性,通过启动程序来读取安全密钥写入寄存器,而后利用这个寄存器作为一个中转,将对应的安全密钥提供给硬件加解密模块使用。整个方法过程中,并不依赖于TEE环境,且无需复杂的硬件设计实现,可低成本的实现对安全密钥的保护。本申请的启动程序为Soc芯片上的BootRom程序(启动代码)。

下文中将参考示例性实施例并且结合附图详细描述根据本公开的实施例的具体实施方式。

首先对本申请中会涉及到的一些名词做以下解释说明:

OTP是一种存储器类型,意思是一次性可编程;程序烧入其中后,将不可再次更改和清除。

EFUSE是一次性可编程存储器。

在本实施例中的一次性可编程存储器包括但不限于:OTP、EFUSE。

BootRom程序是操作系统集成的启动代码。

图1是示出根据本公开的实施例的处理安全密钥的方法的流程图。如图1所示,处理安全密钥的方法包括以下步骤S101至步骤S104。

在步骤S101中,响应于上电启动指令,通过启动程序从一次性可编程存储器中读取安全密钥。实际操作中,在Soc芯片上电启动后,CPU会最先执行固化在Soc芯片上的BootRom程序。BootRom程序是在安全环境中执行。

在步骤S102中,将所述安全密钥写入寄存器。在本实施例中,寄存器优选为常供电寄存器,所述常供电寄存器主要是指即便在低功耗状态下,仍然保持供电的寄存器。而之所以选择常供电寄存器,主要是为了解决休眠唤醒后数据还在的问题。为了待机时,可以实现低功耗,正常只会留下很少的组件保持供电,安全密钥则需要存储在这样的组件寄存器中。相较于现有技术的直接把安全密钥存储到加解密模块中,其需要该加解密模块保持常供电,这种设计则会带来成本和功耗的增加。而本申请则是利用了芯片中原本就会保持常供电的寄存器来存放安全密钥,故此其并不会带来额外的成本和功耗的增加。

此外,在本实施例中,需要在联合测试工作组(JTAG)调试器开启前,BootRom程序通过CPU从OTP中读取出安全密钥,并将所述安全密钥写入常供电寄存器。因JTAG是一种调试手段,如果maskrom代码在完成JTAG初始化后再去做安全密钥的存储则存在一种可能的情况则是:通过JTAG手段从CPU中获取到安全密钥,降低了安全密钥的安全性。

在步骤S103中,响应于使用安全密钥指令,使硬件加解密模块从所述寄存器中读取所述安全密钥。BootRom加载固件执行固件程序后,当TEE中的软件需要使用安全密钥对数据加解密时,通过CPU配置硬件加解密模块。所述硬件加解密模块以主控模式从所述寄存器中读取安全密钥。根据所述安全密钥对数据进行加解密运算。现有技术中原来主控模式是CPU来控制读取,本申请则改为加解密模块进行控制读取,绕开了CPU可以被胁持的风险。故此在这个过程中,CPU无法访问到安全密钥,从而保证了密钥的安全性,不会因为TEE软件安全漏洞而泄露密钥。

图2示出根据本公开的实施例的处理安全密钥的方法的流程图。在本实施例中,在步骤S202(即步骤S102)和步骤S204(即步骤S103)之间还包括步骤S203:通过所述启动程序将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;以及通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态。设置一次性可编程存储器中安全密钥为锁定状态后,一次性可编程存储器中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了一次性可编程存储器中的安全密钥再也无法被后续软件访问到。

设置常供电寄存器中安全密钥为锁定状态后,常供电寄存器中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了常供电寄存器中的安全密钥再也无法被后续软件访问到。此时,只有硬件加解密模块才能访问常供电寄存器中的安全密钥。

其中步骤S201至步骤S202与步骤S101至步骤S102、步骤S204与步骤S103相同,故此不做重复说明。

图3示出根据本公开的实施例的处理安全密钥的方法的流程图。在本实施例中,通过所述启动程序将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;以及通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态后,还包括步骤S304:判断通过所述启动程序是否使用了与所述安全密钥相关联的随机存取存储器或高速缓存存储器;以及若所述随机存取存储器或所述高速缓存存储器被使用,则清除所述随机存取存储器或所述高速缓存存储器中的内容。

其中步骤S301至步骤S303与步骤S201至步骤S203相同,步骤S305与步骤S204相同,在此不做重复说明。

需要说明的是,通过所述启动程序将访问所述一次性可编程存储器中所述安全密钥设置为锁定状态;以及通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态,还是清除所述随机存取存储器或所述高速缓存存储器中的内容。这些步骤均需要在JTAG调试器开启前进行操作,以防JTAG通过调试来达到访问安全密钥的问题。

图4是示出根据本公开的实施例的处理安全密钥的装置400的框图。所述装置400包括:处理模块401、一次性可编程存储器402和硬件加解密模块403。一次性可编程存储器402被配置为存储安全密钥。硬件加解密模块403被配置为使用所述安全密钥执行加解密处理。处理模块401被配置为:响应于上电启动指令,从所述一次性可编程存储器402中读取所述安全密钥,并将所述安全密钥写入寄存器;以及响应于使用安全密钥指令,使所述硬件加解密模块403从所述寄存器中读取所述安全密钥。

在一些实施例中,所述装置400还包括所述寄存器。所述寄存器被设置为常供电寄存器。而之所以选择常供电寄存器,主要是为了解决休眠唤醒后数据还在的问题。为了待机时,可以实现低功耗,正常只会留下很少的组件保持供电,安全密钥则需要存储在这样的组件寄存器中。相较于现有技术的直接把安全密钥存储到加解密模块中,其需要该加解密模块保持常供电,这种设计则会带来成本和功耗的增加。而本申请则是利用了芯片中原本就会保持常供电的寄存器来存放安全密钥,故此其并不会带来额外的成本和功耗的增加。

在一些实施例中,所述处理模块401被配置为:配置所述硬件加解密模块403,使得所述硬件加解密模块403直接从所述寄存器中读取所述安全密钥。实际操作中,在装置400上电启动后,处理模块401会最先执行固化在Soc芯片上的BootRom程序。BootRom程序是在安全环境中执行。BootRom加载固件执行固件程序后,当TEE中的软件需要使用安全密钥对数据加解密时,通过处理模块401配置硬件加解密模块403。所述硬件加解密模块403以主控模式从所述寄存器中读取安全密钥。所述硬件加解密模块403根据所述安全密钥对数据进行加解密运算。现有技术中原来主控模式是处理模块401来控制读取,本申请则改为加解密模块进行控制读取,绕开了处理模块401可以被胁持的风险。故此在这个过程中,处理模块401无法访问到安全密钥,从而保证了密钥的安全性,不会因为TEE软件安全漏洞而泄露密钥。

在一些实施例中,所述处理模块401进一步被配置为将所述安全密钥写入所述寄存器之后:将访问所述一次性可编程存储器402中所述安全密钥设置为锁定状态;以及将访问所述寄存器中所述安全密钥设置为锁定状态。

设置一次性可编程存储器402中安全密钥为锁定状态后,一次性可编程存储器402中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了一次性可编程存储器402中的安全密钥再也无法被后续软件访问到。

设置常供电寄存器中安全密钥为锁定状态后,常供电寄存器中安全密钥再也无法被中央处理器读出,同时锁定状态也无法被中央处理器清除,只有上电复位才能清除锁定状态,保证了常供电寄存器中的安全密钥再也无法被后续软件访问到。此时,只有硬件加解密模块403才能访问常供电寄存器中的安全密钥。

在一些实施例中,所述处理模块401进一步被配置为:响应于所述上电启动指令使所述硬件加解密模块403读取来自随机存取存储器或高速缓存存储器的加解密数据;以及清除所述随机存取存储器或所述高速缓存存储器中的内容。

在一些实施例中,所述装置400还包括引导存储器。引导存储器被配置为存储启动程序,其中所述处理模块401被配置为响应于所述上电启动指令运行所述启动程序以便执行处理。需要说明的是,通过所述启动程序将访问所述一次性可编程存储器402中所述安全密钥设置为锁定状态;以及通过所述启动程序将访问所述寄存器中所述安全密钥设置为锁定状态,还是清除所述随机存取存储器或所述高速缓存存储器中的内容。这些步骤均需要在JTAG调试器开启前进行操作,以防JTAG通过调试来达到访问安全密钥的问题。

在一些实施例中,所述装置400可以为SoC,并且包括CPU。在此情况下,所述CPU可以包括处理模块401。在其他实施例中,所述装置400可以为CPU。

通过以上装置400无需涉及复杂的硬件OTP密钥读取模块即读取安全密钥,低成本地实现了对安全密钥的保护。且处理模块401无法访问到安全密钥,从而保证了安全密钥的安全性,不会因为TEE软件安全漏洞而泄露安全密钥。

图5是示出根据本公开的实施例的处理安全密钥的装置的模块示意图。如图5所示,通过BootRom先从OTP/EFUSE中读取密钥,并将密钥写入到常供电寄存器。随后,设置OTPLock标志,设置常供电寄存器Lock标志。当有需要的时候,硬件加解密模块从常供电寄存器中读取密钥,最后采用该密钥执行加解密操作。此外,通过硬件加解密模块读取来自外部RAM的加解密数据。硬件加解密模块利用密钥对加解密数据执行加解密操作。

在一些实施例中,图5所示的装置为SoC芯片。在一些实施例中,该SoC芯片可以包括CPU或者用于执行各种处理的处理模块。

图6是示出根据本公开的实施例的电子设备600的模块示意图。所述电子设备600包括但不限于:网络设备、嵌入式设备、可编程设备、智能移动终端等。实际产品呈现中,可呈现为芯片或独立硬件模块,其中芯片可设置在目标端设备内。

如图6所示,电子设备600包括存储器601和处理器602。存储器601被配置为存储指令集。处理器602被配置为执行以下动作:响应于上电启动指令,通过启动程序从一次性可编程存储器中读取安全密钥,并将所述安全密钥写入寄存器;以及响应于使用安全密钥指令,使硬件加解密模块从所述寄存器中读取所述安全密钥。

响应于上电启动指令,启通过启动程序从一次性可编程存储器中读取安全密钥,并将所述安全密钥写入寄存器,该步骤利用了启动程序阶段执行环节的安全特性,实现了对安全密钥的保护,接着响应于使用安全密钥指令,使硬件加解密模块从所述寄存器中读取所述安全密钥,该步骤无需设计复杂的硬件OTP密钥读取模块即读取安全密钥,低成本地实现了对安全密钥的保护。且在这个过程中,CPU无法访问到安全密钥,从而保证了安全密钥的安全性,不会因为TEE软件安全漏洞而泄露安全密钥。

在一些实施例中,指令集可以包括上面描述的一种处理安全密钥方法中的各个动作。处理器602被配置为执行上面描述的处理安全密钥方法的各个动作。

最后需要说明的是,尽管在本申请的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本申请的专利保护范围。凡是基于本申请的实质理念,利用本申请说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本申请的专利保护范围之内。

相关技术
  • 处理安全密钥的方法和装置及电子设备
  • 密钥处理方法、密钥处理装置及密钥处理系统
技术分类

06120114691571