CN115361132A - 密钥生成方法、装置、片上系统、设备及存储介质 - Google Patents
密钥生成方法、装置、片上系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115361132A CN115361132A CN202211039826.XA CN202211039826A CN115361132A CN 115361132 A CN115361132 A CN 115361132A CN 202211039826 A CN202211039826 A CN 202211039826A CN 115361132 A CN115361132 A CN 115361132A
- Authority
- CN
- China
- Prior art keywords
- ith
- operation stage
- key
- secret value
- secret
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000009795 derivation Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 44
- 238000004590 computer program Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 6
- 238000002955 isolation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开了一种密钥生成方法、装置、片上系统、设备及存储介质,属于芯片技术领域。该方法包括:在片上系统启动过程的第i运行阶段,基于第i‑1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成第i运行阶段对应的第i秘密值,i为正整数;基于第i秘密值生成第i运行阶段对应的第i密钥,第i密钥用于对第i运行阶段下的数据进行数据保护。采用本申请实施例提供的方案,实现了不同运行阶段之间关键秘密的保护,且任一运行阶段出现问题,也不会引起其它软件阶段中的关键秘密被攻击,保证了密钥部署的灵活性和安全性。
Description
技术领域
本申请实施例涉及芯片技术领域,特别涉及一种密钥生成方法、装置、片上系统、设备及存储介质。
背景技术
随着SoC(System on Chip,片上系统)在电子领域的广泛应用,SOC系统的安全性也越来越受到关注。
相关技术中通常基于主设备标识和安全属性等硬件信号的访问控制对SoC上的关键秘密进行保护,但由于同一主设备上相同安全属性的不同软件阶段对资源具有相同的访问权限,其中任一软件阶段出现问题就会引起其它软件阶段的秘密也遭受攻击。
因此,提高SoC系统的安全性变得尤为重要。
发明内容
本申请实施例提供了一种密钥生成方法、装置、片上系统、设备及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种密钥生成方法,所述方法包括:
在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,i为正整数;
基于所述第i秘密值生成所述第i运行阶段对应的第i密钥,所述第i密钥用于对所述第i运行阶段下的数据进行数据保护。
另一方面,本申请实施例提供了一种密钥生成装置,所述装置包括:
秘密值生成模块,用于在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,i为正整数;
密钥生成模块,用于基于所述第i秘密值生成所述第i运行阶段对应的第i密钥,所述第i密钥用于对所述第i运行阶段下的数据进行数据保护。
另一方面,本申请实施例提供了一种片上系统,所述片上系统包括至少一个主设备,且至少一个主设备之间通过总线相连,所述片上系统用于实现如上述方面所述的密钥生成方法。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备中设置有如上述方面所述的片上系统。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如上述方面所述的密钥生成方法。
另一方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中;处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述终端设备执行如上述方面所述的密钥生成方法。
本申请实施例提供的技术方案可以带来如下有益效果:
本申请实施例中,在SoC启动过程的第i运行阶段,主设备基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成第i运行阶段对应的第i秘密值,进而基于第i秘密值生成第i运行阶段对应的第i密钥,以便后续利用第i密钥对第i运行阶段下的数据进行数据保护;采用本申请实施例提供的方案,不同运行阶段之间的密钥相互隔离,且存在关联性,即使某个运行阶段中有漏洞,也不会引起其它运行阶段中的关键秘密被攻击,有效的提高了加密数据的安全性,解决了整体安全的短板效应问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的SoC的结构示意图;
图2示出了本申请一个示例性实施例提供的SoC的结构示意图;
图3示出了本申请一个示例性实施例提供的密钥生成方法的流程图;
图4示出了本申请另一个示例性实施例提供的密钥生成方法的流程图;
图5示出了本申请一个示例性实施例提供的密钥生成方法的实施示意图;
图6示出了本申请另一个示例性实施例提供的密钥生成方法的实施示意图;
图7示出了本申请一个示例性实施例提供的数据加密过程的实施示意图;
图8示出了本申请另一个示例性实施例提供的数据加密过程的实施示意图;
图9示出了本申请一个示例性实施例提供的密钥生成装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
相关技术中,在SoC上对于关键秘密的保护,通常是基于主设备标识和安全属性等硬件信号的访问控制,先确定每笔访问请求的主设备标识和安全属性等硬件信号,然后对于软硬件资源的访问做权限检查,从而仲裁该笔请求是否有权限访问。
由于现在SoC设计的越趋复杂,且SoC上的主设备会以相同的安全属性运行多个层级,所以主设备一般都会分为几个运行阶段,不同运行阶段都会运行不同的软件代码。但因为安全属性一样,所以其中一个运行阶段专属的秘密信息,引起了其它运行阶段不必要的访问,从而增加了攻击面,整体的安全级别会暴露短板效应。
此外,对于同一主设备的相同安全属性的每笔请求,仲裁逻辑都认为同一主设备上相同安全属性的不同运行阶段对资源具有相同的访问权限,因此若其中任一运行阶段有漏洞或者被攻破,就可能引起其它运行阶段的秘密也遭受攻击。
并且,因为没有软硬复合的综合方案,即使对于运行阶段打补丁,也无法保证某些关键秘密只能限定在特定的软件阶段可以访问,难以实现关键秘密在不同运行阶段之间的隔离与分层保护。
有鉴于此,本申请实施例中,在SoC启动过程的第i运行阶段,主设备基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成第i运行阶段对应的第i秘密值,进而基于第i秘密值生成第i运行阶段对应的第i密钥,第i密钥用于对第i运行阶段下的数据进行数据保护,实现了不同运行阶段之间的密钥相互隔离,即使某个软件阶段中有漏洞,也不会引起其它软件阶段中的关键秘密被攻击,有效的提高了加密数据的安全性,解决了整体安全的短板效应问题。
如图1所示,其示出了本申请一个示例性实施例示出的片上系统的结构示意图。该片上系统100包括:主设备101和总线102以及存储控制器103。
主设备101通过总线102与存储控制器103相连,且主设备101之间可以通过总线102进行相互通信。存储控制器103通过物理层接口与存储器相连。在一些实施例中,该存储器为动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
主设备101是具有数据读写需求的处理器或者非处理器。处理器可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)和和基带芯片等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;NPU用于实现AI功能;基带芯片用于处理无线通信。
其中,处理器利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行终端的各种功能和处理数据。
在一些实施例中,处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。
图1中以处理器包括中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、以及协处理器(Coprocessor)进行示意性说明,但并不对此构成限定。
在一些实施例中,主设备101与总线102之间建立有采用AXI协议的链路。如图1所示,各个主设备101与总线102之间建立有4条位宽为256bits的AXI链路。
存储控制器103是用于控制访问存储器中数据的装置,具有地址转换以及内存通道选择等功能。
图1以片上系统中不包含存储器(即存储器设置在片上系统外部)为例进行说明,在其他可能的设计中,如图2所示,存储器104可以集成在片上系统100上,即设置在片上系统内部。
其中,存储器104可以包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、快闪存储器(Flash)中的一种或几种的组合。
请参考图3,其示出了本申请一个示例性实施例提供的密钥生成方法的流程图,本实施例以该方法用于图1所示SoC为例进行说明,该方法可以包括如下步骤:
步骤301,在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成第i运行阶段对应的第i秘密值,i为正整数。
在一种可能的实施方式中,在SoC启动过程的第i运行阶段,主设备获取第i-1运行阶段对应的第一秘密值派生因子,以及获取第i+1运行阶段对应的第二秘密值派生因子,进而基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成第i运行阶段对应的第i秘密值。
可选的,主设备获取到第一秘密值派生因子及第二秘密值派生因子之后,通过密钥派生函数(Key Derive Function,KDF)派生出当前运行阶段的秘密值。
可选的,每个运行阶段的第一秘密值派生因子和第二秘密值派生因子都是该运行阶段所独有的,因此,通过密钥派生函数派生出的该运行阶段的秘密值也是该运行阶段所独有的。
步骤302,基于第i秘密值生成第i运行阶段对应的第i密钥,第i密钥用于对第i运行阶段下的数据进行数据保护。
在一种可能的实施方式中,主设备基于秘密值生成对应运行阶段的密钥,并使用该密钥对该运行阶段的明文数据进行加密,从而对数据进行数据保护。
可选的,该密钥可以是对称密钥和非对称密钥中的至少一种,其中,在使用对称密钥加密时,信息的发送方和接收方用一个密钥去加密和解密数据,对称密钥加密/解密速度快,适合于对大数据量进行加密;非对称密钥加密,又称公钥密钥加密,非对称密钥为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(Public Key)和私钥(Private Key),私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的设备。非对称密钥加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
因此,在数据量较大时,可以通过对称密钥对数据进行加密,在数据所需安全性较高时,可通过非对称密钥对数据进行签名,也可以同时使用对称密钥和非对称密钥同时保证处理速度和安全性。
综上所述,本申请实施例中,在SoC启动过程的每个运行阶段,主设备基于当前运行阶段的上一运行阶段的第一秘密值派生因子以及下一运行阶段的第二秘密值派生因子生成当前运行阶段对应的秘密值,进而基于该秘密值生成当前运行阶段对应的密钥,以便后续利用该密钥对当前运行阶段下的数据进行数据保护;采用本申请实施例提供的方案,由于密钥只能在当前运行阶段生成,所以用该密钥加密的数据也只能在当前运行阶段才能正确的解密,实现了不同运行阶段之间的密钥相互隔离,且存在关联性,保证了不同运行阶段之间关键秘密的保护,即使某个软件阶段中有漏洞,也不会引起其它软件阶段中的关键秘密被攻击,有效的提高了加密数据的安全性,解决了整体安全的短板效应问题。
在一种可能的实施方式中,主设备在生成当前运行阶段对应的秘密值时,以上一运行阶段生成的秘密值作为第一秘密值派生因子,以下一运行阶段的摘要值作为第二秘密值派生因子,进而通过密钥派生函数派生出当前运行阶段的秘密值。
请参考图4,其示出了本申请一个示例性实施例提供的密钥生成方法的流程图,本实施例以该方法用于图1所示SoC为例进行说明,该方法可以包括如下步骤:
步骤401,获取第i-1运行阶段对应的第i-1秘密值,以及获取第i+1运行阶段对应的第i+1摘要值。
在一种可能的实施方式中,在SoC启动过程的第i运行阶段,主设备获取第i-1运行阶段对应的第i-1秘密值,以及获取第i+1运行阶段对应的第i+1摘要值。
可选的,摘要值与运行阶段对应的软件代码相关,第i+1运行阶段对应的第i+1摘要值与第i+1运行阶段所运行的软件代码相关,由于不同运行阶段下运行的软件代码不同,因此不同运行阶段对应的摘要值不同。
示意性的,SoC上电后,包括如下运行阶段:主设备通常会先运行系统启动代码(BootROM),进而在引导加载程序(BootLoader)执行后,从某个固件(Firmware)上将操作系统(OS)加载到存储器中运行,在这多个不同的运行阶段中,运行的软件代码不同,对应的摘要值不同。
可选的,不同运行阶段属于SoC上的同一主设备或者不同主设备,例如,不同运行阶段都属于CPU,当然,不同运行阶段也可以属于SoC上的不同主设备,例如,部分运行阶段属于协处理器,部分运行阶段属于CPU。
当然,SoC的启动过程有多个运行阶段,本申请实施例并不对具体的运行阶段构成限定。
本申请实施例中,在SoC启动过程中的每个运行阶段,SoC上的主设备都将获取上一运行阶段的秘密值及下一运行阶段的摘要值,即在SoC启动过程的第i运行阶段,获取第i-1运行阶段对应的第i-1秘密值,以及获取第i+1运行阶段对应的第i+1摘要值。
步骤402,基于第i-1秘密值以及第i+1摘要值生成第i运行阶段对应的第i秘密值。
在一种可能的实施方式中,主设备在获取到上一运行阶段的秘密值及下一运行阶段的摘要值之后,将上一运行阶段的秘密值作为第一秘密值派生因子,将下一运行阶段的摘要值作为第二秘密值派生因子,通过密钥派生函数派生出当前运行阶段的秘密值。
由于每个运行阶段的秘密值和摘要值都是该运行阶段所独有的,因此,通过密钥派生函数派生出的该运行阶段的秘密值也是该运行阶段所独有的。
步骤403,基于第i秘密值生成第i运行阶段对应的第i密钥,第i密钥用于对第i运行阶段下的数据进行数据保护。
本步骤的实施方式可以参考上述步骤302,本实施例在此不作赘述。
本申请实施例中,在SoC启动过程的每个运行阶段,主设备获取当前运行阶段的上一运行阶段的秘密值,以及获取下一运行阶段对应的摘要值后,将上一运行阶段的秘密值作为第一秘密值派生因子,将下一运行阶段的摘要值作为第二秘密值派生因子,通过密钥派生函数派生出当前运行阶段独有的秘密值,实现了不同运行阶段之间的密钥相互隔离,保证了不同运行阶段之间关键秘密的保护,有效的提高了加密数据的安全性,解决了整体安全的短板效应问题。
在一种可能的实施方式中,针对步骤401,在SoC启动过程的不同运行阶段,主设备获取上一运行阶段秘密值的方式不同。
可选的,在SoC启动过程的第一运行阶段,主设备从硬件信任根处获取第零秘密值。信任根是在密钥系统中始终可以信任的来源,由于数据安全依赖于对数据进行加密和解密并执行生成数字签名和验证签名等功能的密钥,因此信任根通常包括一个硬件模块,可称其为硬件信任根。
可选的,该硬件信任根是一次性可编程存储器(One Time Programmable,OTP),可以为电熔丝(Efuse)、可编程只读存储器(Programmable Read-Only Memory,PROM)等,本申请实施例并不对具体的一次性可编程存储器种类构成限定。
可选的,由于SoC上电后,主设备通常会先运行系统启动代码(BootROM),并将此阶段作为在SoC启动过程的第一运行阶段,在此运行阶段,主设备从硬件信任根处获取SoC的唯一设备秘密值。
需要注意的是,大多数SoC中,硬件信任根只能硬件访问,并且只能在第一运行阶段,即BootROM处获取到SoC的唯一设备秘密值。
在一种可能的实施方式中,在SoC启动过程的第i运行阶段,当i=1时,即在SoC启动过程的第一运行阶段,主设备从OTP处获取第零秘密值,该第零秘密值为SoC的唯一设备秘密值(Hardware Unique Key,HUK)。
在另一种可能的实施方式中,唯一设备秘密值是整个密钥层级系统的硬件可信根,为了增加安全性和唯一性,可以设计成OTP中多个字段派生或者逻辑运算出的一个结果值。
可选的,可以预先使用加密算法对HUK、HBK(HASH of Boot Key,启动验签公钥的哈希值)进行运算得到唯一设备秘密值。
可选的,在SoC启动过程的第j运行阶段,主设备获取第j-1运行阶段传入的第j-1秘密值,第j-1秘密值在第j-1运行阶段生成,j为大于或等于2的整数。
在一种可能的实施方式中,在SoC启动过程的第i运行阶段,当i≥2时,即在SoC启动过程的第j运行阶段,获取第j-1运行阶段传入的第j-1秘密值,第j-1秘密值在第j-1运行阶段生成,j为大于或等于2的整数。
同样的,在一种可能的实施方式中,针对步骤401,在SoC启动过程的第i运行阶段,主设备加载第i+1运行阶段对应的第i+1软件镜像,并将第i+1软件镜像的摘要值确定为第i+1摘要值。当然,本申请实施例不仅支持启动时的可执行的软件镜像,也支持配置文件等非可执行镜像,还支持运行时动态加载的镜像。
在一种可能的实施方式中,软件镜像存储在快闪存储器(Flash)中,在SoC启动过程的每一运行阶段,主设备都将从Flash中加载当前运行阶段对应的软件镜像,其中,Flash是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。
本申请实施例中,主设备将下一运行阶段的软件镜像的摘要值确定为下一运行阶段的摘要值。在一种可能的实施方式中,主设备基于第i+1软件镜像的镜像签名,对第i+1软件镜像进行安全性校验,安全校验用于校验软件镜像是否被篡改。
若直接将软件镜像的摘要值作为主设备获取到的摘要值,一旦该软件镜像的摘要值遭受到攻击,使得该摘要值不再完整或遭受篡改,那获取到该摘要值后,主设备所派生出的秘密值也是错误的,将无法对数据进行保护,因此,本申请实施例中,软件镜像的摘要值预先被私钥进行加密,进而得到了加密后的密文,将其称为镜像签名,该镜像签名和软件镜像共同存储在快闪存储器中。
可选的,主设备获取下一阶段软件镜像的摘要值,该摘要值即为加密后的镜像签名,进而利用公钥对该摘要值进行解密,得到解密后的第一摘要值。同时,主设备对获取到的下一阶段软件镜像进行摘要计算,得到第二摘要值,通过比较第一摘要值和第二摘要值确定软件镜像是否被篡改。
可选的,由于对不同运行阶段软件镜像的摘要值进行加密的私钥是同一个,因此对不同运行阶段镜像签名进行解密的公钥也应相同,所以主设备还可以使用相同的HBK校验不同运行阶段镜像签名的公钥,即HBK可以被预先烧录在SoC中,若HBK无法利用hash值取验证公钥,可以判断该运行阶段的公钥被篡改。
进一步的,在第i+1软件镜像通过安全校验的情况下,将第i+1软件镜像的摘要值确定为第i+1摘要值。
本申请实施例中,在镜像签名通过安全校验的情况下,主设备将该软件镜像的摘要值确定为该运行阶段的摘要值。
示意性的,如图5所示,SoC上电后,主设备通常会先运行系统启动代码(BootROM),并将此阶段作为在SoC启动过程的第一运行阶段,在此运行阶段,主设备从一次性可编程存储器出获取SoC的唯一设备秘密值。并且,从SoC启动过程的第二运行阶段起,主设备获取当前运行阶段的上一运行阶段传入的秘密值,该秘密值在上一运行阶段生成。同时,主设备加载当前运行阶段的下一运行阶段对应的软件镜像,并将该软件镜像的摘要值确定为下一运行阶段对应的摘要值,主设备将秘密值和摘要值作为因子,通过密钥派生函数派生出当前运行阶段的秘密值,进而基于该秘密值派生出当前运行阶段的密钥。
本申请实施例中,在第一运行阶段,主设备从硬件信任根处获取到SoC的唯一设备秘密值,并在每一个运行阶段都对镜像摘要进行签名和验签,保证了任一运行阶段所派生出的秘密值的安全性的同时,形成了一个可信链式结构,保证了加密数据的安全性。
在一种可能的实施方式中,在SoC启动过程的某一运行阶段后可能会出现至少两个并行执行的运行阶段,因此,在第i运行阶段对应至少两个并行执行的第i+1运行阶段的情况下,主设备获取至少两个第i+1运行阶段各自对应的第i+1摘要值,并基于第i-1秘密值以及至少两个第i+1摘要值,生成第i运行阶段对应的至少两个第i秘密值。
在SoC启动过程的某一运行阶段中,可能会存在至少两个软件镜像(比如虚拟机),此时两个软件镜像是并行的,因此,该运行阶段的上一运行阶段会获取到至少两个镜像摘要值,进而派生出至少两个秘密值。
示意性的,如图6所示,在SoC启动过程的第二运行阶段后,出现两个并行执行的第三运行阶段a和第三运行阶段b,因此,在第二运行阶段,主设备获取第一运行阶段传入的秘密值,以及第三运行阶段a和第三运行阶段b分别对应的软件镜像的摘要值,主设备将第一运行阶段的秘密值分别和第三运行阶段a的摘要值以及第三运行阶段b的摘要值作为因子,通过密钥派生函数派生出第二运行阶段的两个秘密值,进而基于这两个秘密值派生出第二运行阶段的密钥。同样的,在SoC启动过程的第三运行阶段,主设备获取第二运行阶段传入的两个秘密值,以及第四运行阶段对应的软件镜像的摘要值,主设备将第二运行阶段的两个秘密值分别和第四运行阶段的摘要值作为因子,通过密钥派生函数派生出第三运行阶段的两个秘密值,进而基于这两个秘密值派生出第三运行阶段的密钥。
本实施例中,除第一运行阶段,后续的软件阶段支持多个阶段的并行,链路分叉但单路径的链式关系依然成立,保证了密钥部署的灵活性和安全性。
在一种可能的实施方式中,若软件代码发生更新,软件镜像也随即发生更新,因此软件镜像的摘要值也会发生更新,因此,在软件代码发生更新的情况下,主设备更新运行阶段对应的秘密值,并基于更新后的秘密值更新运行阶段对应的密钥。
可选的,软件代码发生更新时,可以是全部发生更新,也可以是部分发生更新,在软件代码全部发生更新的情况下,在SoC启动过程的每个运行阶段,主设备都会更新该运行阶段的秘密值。
可选的,在软件代码部分发生更新的情况下,即在第i运行阶段对应的软件代码发生更新的情况下,主设备更新目标运行阶段对应的秘密值。其中,目标运行阶段包括第i-1运行阶段、第i运行阶段以及第i运行阶段的下游运行阶段,下游运行阶段位于第i运行阶段之后,且与第i运行阶段位于同一运行链路。
此时,由于软件代码只有部分发生更新,因此,对应的运行阶段的软件镜像发生更新,导致对应运行阶段的上一运行阶段的秘密值发生更新,进而导致对应运行阶段及其下游运行阶段的秘密值发生更新。
示意性的,若第三运行阶段对应的软件代码发生更新,此时第三运行阶段的软件镜像发生更新,因此软件镜像的摘要值也发生更新,第三运行阶段软件镜像的摘要值发生更新后,第二运行阶段将更新后的软件镜像的摘要值和第一运行阶段的秘密值作为因子,通过密钥派生函数派生出新的第二运行阶段的秘密值,第二运行阶段的秘密值发生更新后,第三运行阶段将第四运行阶段的软件镜像的摘要值和更新后的第二运行阶段的秘密值作为因子,通过密钥派生函数派生出新的第三运行阶段的秘密值,后续运行阶段亦是如此。
本实施例中,在软件代码发生更新的情况下,SoC启动过程的对应的运行阶段的软件镜像发生更新,使得摘要值发生更新,进而导致对应运行阶段的上一运行阶段、对应运行阶段及其下游运行阶段的秘密值发生更新,使得软件代码发生更新后,主设备能够派生出更新后的密钥,并通过更新后的密钥对数据进行保护。
数据加密可能有两种方式,主设备可以直接通过运行阶段派生出的密钥对明文数据进行加密,也可以先通过一个明文密钥对明文数据进行加密,进而再通过运行阶段派生出的密钥对明文密钥进行加密。
在一种可能的实施方式中,第i密钥用于对第i运行阶段下的明文数据进行加密处理得到密文数据,主设备基于更新前的第i密钥对密文数据进行解密处理,得到明文数据,进而基于更新后的第i密钥对明文数据进行加密处理,得到密文数据。
在本实施例中,主设备直接通过运行阶段派生出的密钥对明文数据进行加密,得到密文数据,并在软件代码发生更新后,先通过该运行阶段更新前的密钥对密文数据进行解密,得到明文数据后,再通过该运行阶段更新后的密钥对明文数据重新进行加密。
示意性的,如图7所示,主设备通过当前运行阶段所派生出的第一密钥720对当前运行阶段的明文数据710进行加密,得到第一密文数据730,在当前运行阶段对应的软件代码发生更新后,主设备先基于当前运行阶段更新前的第一密钥720对第一密文数据730进行解密处理,得到明文数据710后,基于更新后的第二密钥740对明文数据710进行重新加密,得到更新的第二密文数据750。
本实施例中,在当前运行阶段对应的软件代码发生更新的情况下,主设备能够更新软件镜像的摘要值,进而更新当前运行阶段所派生的密钥,并基于更新后的密钥对数据重新进行加密。
在另一种可能的实施方式中,第i密钥用于对第i运行阶段对应的明文密钥进行加密处理得到密文密钥,明文密钥用于对第i运行阶段下的明文数据进行加密处理得到密文数据。
在当前运行阶段所派生出的密钥为对称密钥的情况下,为减少该对称密钥海米当前运行阶段的明文数据工作量,本申请实施例中采用对密钥进行封装,用密钥加密另一个密钥(Key Encryption Key,KEK)思路,首先采用一个明文密钥,该明文密钥为封装密钥(Wrap Key),主设备通过该明文密钥对当前运行阶段的明文数据进行加密,得到密文数据,进而通过当前软件阶段派生出的对称密钥对明文密钥进行加密,得到密文密钥。
可选的,主设备基于更新前的第i密钥对密文密钥进行解密处理,得到明文密钥,进而基于更新后的第i密钥对明文密钥进行加密处理,得到密文密钥。
示意性的,如图8所示,主设备通过明文密钥820对当前运行阶段的明文数据810进行加密,得到密文数据830,进而通过当前运行阶段派生出的第一密钥840对明文密钥820进行加密,得到第一密文密钥850,在当前运行阶段对应的软件代码发生更新后,主设备先基于当前运行阶段更新前的第一密钥840对第一密文密钥850进行解密处理,得到明文密钥820后,基于更新后的第二密钥860对明文密钥820进行重新加密处理,得到更新的第二密文密钥870。
本申请实施例中,对于软件升级之后密钥层级链路的重建,可以基于KEK思路,只需要对明文密钥进行加密和解密处理,即主设备只需要对Wrap Key进行加密和解密处理,无需对每个软件阶段的明文数据做解密和重新加密,减少了主设备工作量的同时,提高了数据加密的安全性。此外,本申请实施例通过在线升级就可灵活实现密钥部署、密钥更新、密钥撤销等远程密钥部署和管理,提升了密钥管理的灵活性。
本申请实施例中,在SoC每个运行阶段,都可以通过上述的各个实施例中提供的方法,预先根据用户需求对密钥管理进行算法、模式、密钥长度等等客制化设计。
请参考图9,其示出了本申请一个示例性实施例提供的密钥生成装置的结构示意图。该密钥生成装置包括:
秘密值生成模块910,用于在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,i为正整数;
密钥生成模块920,用于基于所述第i秘密值生成所述第i运行阶段对应的第i密钥,所述第i密钥用于对所述第i运行阶段下的数据进行数据保护。
可选的,所述秘密值生成模块910,用于:
获取所述第i-1运行阶段对应的第i-1秘密值,以及获取所述第i+1运行阶段对应的第i+1摘要值;
基于所述第i-1秘密值以及所述第i+1摘要值生成所述第i运行阶段对应的所述第i秘密值。
可选的,所述秘密值生成模块910,用于:
在所述片上系统启动过程的第一运行阶段,从硬件信任根处获取第零秘密值;
在所述片上系统启动过程的第j运行阶段,获取第j-1运行阶段传入的第j-1秘密值,所述第j-1秘密值在所述第j-1运行阶段生成,j为大于或等于2的整数。
可选的,所述第零秘密值为所述片上系统的唯一设备秘密值。
可选的,所述秘密值生成模块910,用于:
加载所述第i+1运行阶段对应的第i+1软件镜像;
将所述第i+1软件镜像的摘要值确定为所述第i+1摘要值。
可选的,所述秘密值生成模块910,具体用于:
基于所述第i+1软件镜像的镜像签名,对所述第i+1软件镜像进行安全性校验,安全校验用于校验软件镜像是否被篡改;
在所述第i+1软件镜像通过安全校验的情况下,将所述第i+1软件镜像的摘要值确定为所述第i+1摘要值。
可选的,所述秘密值生成模块910,具体用于:
在所述第i运行阶段对应至少两个并行执行的所述第i+1运行阶段的情况下,获取至少两个所述第i+1运行阶段各自对应的所述第i+1摘要值;
所述基于所述第i-1秘密值以及所述第i+1摘要值生成所述第i运行阶段对应的第i秘密值,包括:
基于所述第i-1秘密值以及至少两个所述第i+1摘要值,生成所述第i运行阶段对应的至少两个所述第i秘密值。
可选的,所述装置还包括:
秘密值更新模块,用于在软件代码发生更新的情况下,更新运行阶段对应的秘密值;
密钥更新模块,用于基于更新后的秘密值更新运行阶段对应的密钥。
可选的,所述秘密值更新模块,用于:
在所述第i运行阶段对应的软件代码发生更新的情况下,更新目标运行阶段对应的秘密值,所述目标运行阶段包括所述第i-1运行阶段、所述第i运行阶段以及所述第i运行阶段的下游运行阶段,所述下游运行阶段位于所述第i运行阶段之后,且与所述第i运行阶段位于同一运行链路。
可选的,所述第i密钥用于对所述第i运行阶段下的明文数据进行加密处理得到密文数据;
所述装置还包括:
第一解密模块,用于基于更新前的第i密钥对所述密文数据进行解密处理,得到所述明文数据;
第一加密模块,用于基于更新后的第i密钥对所述明文数据进行加密处理,得到所述密文数据。
可选的,所述第i密钥用于对所述第i运行阶段对应的明文密钥进行加密处理得到密文密钥,所述明文密钥用于对所述第i运行阶段下的明文数据进行加密处理得到密文数据;
所述装置还包括:
第二解密模块,用于基于更新前的第i密钥对所述密文密钥进行解密处理,得到所述明文密钥;
第二加密模块,用于基于更新后的第i密钥对所述明文密钥进行加密处理,得到所述密文密钥。
综上所述,本申请实施例中,在SoC启动过程的每个运行阶段,主设备基于当前运行阶段的上一运行阶段的第一秘密值派生因子以及下一运行阶段的第二秘密值派生因子生成当前运行阶段对应的秘密值,进而基于该秘密值生成当前运行阶段对应的密钥,以便后续利用该密钥对当前运行阶段下的数据进行数据保护;采用本申请实施例提供的方案,由于密钥只能在当前运行阶段生成,所以用该密钥加密的数据也只能在当前运行阶段才能正确的解密,实现了不同运行阶段之间的密钥相互隔离,保证了不同运行阶段之间关键秘密的保护,即使某个软件阶段中有漏洞,也不会引起其它软件阶段中的关键秘密被攻击,有效的提高了加密数据的安全性,解决了整体安全的短板效应问题。
需要说明的是:上述实施例提供的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其实现过程详见方法实施例,这里不再赘述。
在一些实施例中,本申请实施例还提供了一种计算机设备,该计算机设备设置有图1或图2所示的片上系统。
需要说明的是,除了片上系统外,计算机设备还可以包括其他必要组件,比如存储器、显示组件、麦克风、扬声器、射频电路、输入单元、传感器(比如加速度传感器、角速度传感器、光线传感器等等)、WiFi模块、电源、蓝牙模块等部件,本实施例在此不作赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如上各个实施例所述的密钥生成方法。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中;处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的密钥生成方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种密钥生成方法,其特征在于,所述方法包括:
在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,i为正整数;
基于所述第i秘密值生成所述第i运行阶段对应的第i密钥,所述第i密钥用于对所述第i运行阶段下的数据进行数据保护。
2.根据权利要求1所述的方法,其特征在于,所述基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,包括:
获取所述第i-1运行阶段对应的第i-1秘密值,以及获取所述第i+1运行阶段对应的第i+1摘要值;
基于所述第i-1秘密值以及所述第i+1摘要值生成所述第i运行阶段对应的所述第i秘密值。
3.根据权利要求2所述的方法,其特征在于,所述获取所述第i-1运行阶段对应的第i-1秘密值,包括:
在所述片上系统启动过程的第一运行阶段,从硬件信任根处获取第零秘密值;
在所述片上系统启动过程的第j运行阶段,获取第j-1运行阶段传入的第j-1秘密值,所述第j-1秘密值在所述第j-1运行阶段生成,j为大于或等于2的整数。
4.根据权利要求3所述的方法,其特征在于,所述第零秘密值为所述片上系统的唯一设备秘密值。
5.根据权利要求2所述的方法,其特征在于,所述获取所述第i+1运行阶段对应的第i+1摘要值,包括:
加载所述第i+1运行阶段对应的第i+1软件镜像;
将所述第i+1软件镜像的摘要值确定为所述第i+1摘要值。
6.根据权利要求5所述的方法,其特征在于,所述将所述第i+1软件镜像的摘要值确定为所述第i+1摘要值,包括:
基于所述第i+1软件镜像的镜像签名,对所述第i+1软件镜像进行安全性校验,安全校验用于校验软件镜像是否被篡改;
在所述第i+1软件镜像通过安全校验的情况下,将所述第i+1软件镜像的摘要值确定为所述第i+1摘要值。
7.根据权利要求2所述的方法,其特征在于,所述获取所述第i+1运行阶段对应的第i+1摘要值,包括:
在所述第i运行阶段对应至少两个并行执行的所述第i+1运行阶段的情况下,获取至少两个所述第i+1运行阶段各自对应的所述第i+1摘要值;
所述基于所述第i-1秘密值以及所述第i+1摘要值生成所述第i运行阶段对应的第i秘密值,包括:
基于所述第i-1秘密值以及至少两个所述第i+1摘要值,生成所述第i运行阶段对应的至少两个所述第i秘密值。
8.根据权利要求1至7任一所述的方法,其特征在于,所述方法还包括:
在软件代码发生更新的情况下,更新运行阶段对应的秘密值;
基于更新后的秘密值更新运行阶段对应的密钥。
9.根据权利要求8所述的方法,其特征在于,所述在软件代码发生更新的情况下,更新运行阶段对应的秘密值,包括:
在所述第i运行阶段对应的软件代码发生更新的情况下,更新目标运行阶段对应的秘密值,所述目标运行阶段包括所述第i-1运行阶段、所述第i运行阶段以及所述第i运行阶段的下游运行阶段,所述下游运行阶段位于所述第i运行阶段之后,且与所述第i运行阶段位于同一运行链路。
10.根据权利要求9所述的方法,其特征在于,所述第i密钥用于对所述第i运行阶段下的明文数据进行加密处理得到密文数据;
所述方法还包括:
基于更新前的第i密钥对所述密文数据进行解密处理,得到所述明文数据;
基于更新后的第i密钥对所述明文数据进行加密处理,得到所述密文数据。
11.根据权利要求9所述的方法,其特征在于,所述第i密钥用于对所述第i运行阶段对应的明文密钥进行加密处理得到密文密钥,所述明文密钥用于对所述第i运行阶段下的明文数据进行加密处理得到密文数据;
所述方法还包括:
基于更新前的第i密钥对所述密文密钥进行解密处理,得到所述明文密钥;
基于更新后的第i密钥对所述明文密钥进行加密处理,得到所述密文密钥。
12.一种密钥生成装置,其特征在于,所述装置包括:
秘密值生成模块,用于在片上系统启动过程的第i运行阶段,基于第i-1运行阶段对应的第一秘密值派生因子以及第i+1运行阶段对应的第二秘密值派生因子,生成所述第i运行阶段对应的第i秘密值,i为正整数;
密钥生成模块,用于基于所述第i秘密值生成所述第i运行阶段对应的第i密钥,所述第i密钥用于对所述第i运行阶段下的数据进行数据保护。
13.一种片上系统,其特征在于,所述片上系统包括至少一个主设备,且至少一个主设备之间通过总线相连,所述片上系统用于实现如权利要求1至11任一所述的密钥生成方法。
14.一种计算机设备,其特征在于,所述计算机设备中设置有如权利要求13所述的片上系统。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至11任一所述的密钥生成方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中;处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述终端设备执行如权利要求1至11任一所述的密钥生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211039826.XA CN115361132A (zh) | 2022-08-29 | 2022-08-29 | 密钥生成方法、装置、片上系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211039826.XA CN115361132A (zh) | 2022-08-29 | 2022-08-29 | 密钥生成方法、装置、片上系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115361132A true CN115361132A (zh) | 2022-11-18 |
Family
ID=84004780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211039826.XA Pending CN115361132A (zh) | 2022-08-29 | 2022-08-29 | 密钥生成方法、装置、片上系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361132A (zh) |
-
2022
- 2022-08-29 CN CN202211039826.XA patent/CN115361132A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3458999B1 (en) | Self-contained cryptographic boot policy validation | |
Zhao et al. | Providing root of trust for ARM TrustZone using on-chip SRAM | |
US9602282B2 (en) | Secure software and hardware association technique | |
US8732445B2 (en) | Information processing device, information processing method, information processing program, and integrated circuit | |
US8898480B2 (en) | Managing use of a field programmable gate array with reprogammable cryptographic operations | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
US9230091B2 (en) | Managing use of a field programmable gate array with isolated components | |
TW202009778A (zh) | 韌體升級方法及裝置 | |
CN108885668B (zh) | 用于用户数据的完整性检查的方法、处理器和设备 | |
CN112948871A (zh) | 在计算环境中保护计算数据的技术 | |
US20150095652A1 (en) | Encryption and decryption processing method, apparatus, and device | |
EP3207488B1 (en) | Identifying security boundaries on computing devices | |
CN112005237A (zh) | 安全区中的处理器与处理加速器之间的安全协作 | |
KR20050008847A (ko) | 휴면 보호 | |
US7970133B2 (en) | System and method for secure and flexible key schedule generation | |
JP2023512428A (ja) | ハードウェアエンクレーブを使用して商用オフザシェルフプログラムバイナリを盗用から保護すること | |
JP2017033537A (ja) | 外部不揮発性メモリに間接アクセスするセキュリティデバイス | |
US10229272B2 (en) | Identifying security boundaries on computing devices | |
CN109814934B (zh) | 数据处理方法、装置、可读介质和系统 | |
WO2020078804A1 (en) | Puf based securing of device update | |
US11748521B2 (en) | Privacy-enhanced computation via sequestered encryption | |
US11874928B2 (en) | Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain | |
CN115361132A (zh) | 密钥生成方法、装置、片上系统、设备及存储介质 | |
JP6741236B2 (ja) | 情報処理装置 | |
KR100897075B1 (ko) | 배포 cd를 사용하는 장치에 서명 그룹의 다이렉트 증명개인 키들을 전달하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |