CN117786699A - 芯片初始化方法、装置、模块、电子设备和存储介质 - Google Patents
芯片初始化方法、装置、模块、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117786699A CN117786699A CN202311831158.9A CN202311831158A CN117786699A CN 117786699 A CN117786699 A CN 117786699A CN 202311831158 A CN202311831158 A CN 202311831158A CN 117786699 A CN117786699 A CN 117786699A
- Authority
- CN
- China
- Prior art keywords
- program data
- read
- original program
- data
- target address
- 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
- 238000011423 initialization method Methods 0.000 title claims abstract description 29
- 238000012795 verification Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000013524 data verification Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本申请提供了一种芯片初始化方法、芯片初始化装置、芯片初始化模块、电子设备和计算机可读存储介质,涉及计算机技术领域,该方法包括:验证只读存储器中存储的原始程序数据的可靠性;在原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从只读存储器中读取第N目标地址对应的原始程序数据;其中,N为正整数;对原始程序数据进行解密,得到引导程序数据并对外输出。本申请能够防止只读存储器内存储的内容被篡改或窃取,确保芯片可以安全启动。
Description
技术领域
本申请涉及计算机技术领域,并且更具体地,涉及计算机技术领域中一种芯片初始化方法、芯片初始化装置、芯片初始化模块、电子设备和计算机可读存储介质。
背景技术
只读存储器(Read-Only Memory,ROM)是常见的片上系统(System on a Chi,SOC)组件,常用于存放一级引导程序。在芯片上电复位释放后,处理器程序指针(ProgramCounter,PC)从ROM特定位置开始读取指令,并执行引导。
目前,现有的设计是直接将机器代码以明文的形式存放在ROM内,第三方可以直接从ROM中读取到存储的机器代码,从而容易导致ROM内存储的内容被篡改或窃取,造成芯片无法安全启动。因此如何防止ROM内存储的内容被篡改或窃取成为了亟需解决的问题。
发明内容
本申请提供了一种芯片初始化方法、芯片初始化装置、芯片初始化模块、电子设备和计算机可读存储介质,该方法能够防止ROM内存储的内容被篡改或窃取,确保芯片可以安全启动。
第一方面,提供了一种芯片初始化方法,所述芯片初始化方法包括:验证只读存储器中存储的原始程序数据的可靠性;在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;对所述原始程序数据进行解密,得到引导程序数据并对外输出。
在上述技术方案中,本申请实施例通过采用验证只读存储器中存储的原始程序数据的可靠性,在原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从只读存储器中读取第N目标地址对应的原始程序数据,N为正整数,对原始程序数据进行解密,得到引导程序数据并对外输出的技术方案,通过对只读存储器中存储的原始程序数据的可靠性进行验证,从而确保只读存储器中存储的原始程序数据是完整的且没有被篡改,有利于确保芯片可以安全启动;在原始程序数据是完整的且没有被篡改的前提下,然后一边读取原始程序数据一边解密读取到的原始程序数据,从而得到引导程序数据并对外输出,确保了数据读取过程中的安全性和时效性。
结合第一方面,在某些可能的实现方式中,所述验证只读存储器中存储的原始程序数据的可靠性包括:确定所述原始程序数据的校验数据;基于所述校验数据和所述只读存储器中存储的预设数据,确定所述原始程序数据的可靠性。
结合第一方面和上述实现方式,在某些可能的实现方式中,所述确定所述原始程序数据的校验数据包括:对所述原始程序数据进行哈希运算,得到所述原始程序数据的哈希值;将所述哈希值确定为所述校验数据。
结合第一方面和上述实现方式,在某些可能的实现方式中,所述对所述原始程序数据进行解密,得到引导程序数据包括:根据收到的所述第N目标地址确定第N掩码;基于所述第N掩码对所述原始程序数据进行解密,得到所述引导程序数据。
结合第一方面和上述实现方式,在某些可能的实现方式中,当N≥2时,所述根据收到的所述第N目标地址确定第N掩码之前,还包括:根据收到的第N-1目标地址,获取与所述第N-1目标地址顺序相连的至少一个后续目标地址;根据所述至少一个后续目标地址,确定至少一个后续掩码并缓存。
结合第一方面和上述实现方式,在某些可能的实现方式中,所述根据收到的所述第N目标地址确定第N掩码包括:当所述第N目标地址与上一次收到的所述第N-1目标地址是连续的,从缓存的所述至少一个后续掩码中确定与所述第N目标地址对应的所述第N掩码;当所述第N目标地址与上一次收到的所述第N-1目标地址不是连续的,对所述第N目标地址进行加密运算得到所述第N掩码。
结合第一方面和上述实现方式,在某些可能的实现方式中,当N=1时,所述根据收到的所述第N目标地址确定第N掩码包括:对所述第N目标地址进行加密运算得到所述第N掩码。
第二方面,提供了一种芯片初始化装置,所述芯片初始化装置包括:
数据验证模块,用于验证只读存储器中存储的原始程序数据的可靠性;
读取模块,用于在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;
数据解密模块,用于对所述原始程序数据进行解密,得到引导程序数据并对外输出。
结合第二方面,在某些可能的实现方式中,所述数据验证模块包括:
数据计算单元,用于确定所述原始程序数据的校验数据;
数据验证单元,用于基于所述校验数据和所述只读存储器中存储的预设数据,确定所述原始程序数据的可靠性。
结合第二方面和上述实现方式,在某些可能的实现方式中,所述数据计算单元,具体用于对所述原始程序数据进行哈希运算,得到所述原始程序数据的哈希值;将所述哈希值确定为所述校验数据。
结合第二方面和上述实现方式,在某些可能的实现方式中,所述数据解密模块,包括:
掩码确定单元,用于根据收到的所述第N目标地址确定第N掩码;
数据解密单元,用于基于所述第N掩码对所述原始程序数据进行解密,得到所述引导程序数据。
结合第二方面和上述实现方式,在某些可能的实现方式中,当N≥2时,所述芯片初始化装置还包括:
地址加密单元,用于根据收到的第N-1目标地址,获取与所述第N-1目标地址顺序相连的至少一个后续目标地址;根据所述至少一个后续目标地址,确定至少一个后续掩码并缓存。
结合第二方面和上述实现方式,在某些可能的实现方式中,所述掩码确定单元,具体用于当所述第N目标地址与上一次收到的所述第N-1目标地址是连续的,从缓存的所述至少一个后续掩码中确定与所述第N目标地址对应的所述第N掩码;当所述第N目标地址与上一次收到的所述第N-1目标地址不是连续的,对所述第N目标地址进行加密运算得到所述第N掩码。
结合第二方面和上述实现方式,在某些可能的实现方式中,所述掩码确定单元,具体还用于对所述第N目标地址进行加密运算得到所述第N掩码。
第三方面,提供了一种芯片初始化装置,所述芯片初始化模块包括:控制模块、只读存储器、解密模块和运算核,所述控制模块分别与所述只读存储器、所述解密模块和所述运算核连接,所述只读存储器还与所述解密模块和所述运算核连接;所述控制模块接收触发校验信息,发送读指令和读地址至所述只读存储器读取原始程序数据;所述只读存储器将读取的所述原始程序数据发送至所述运算核和所述解密模块;所述控制模块发送调用指令至所述运算核,所述运算核计算所述原始程序数据的校验数据并发送至所述控制模块;所述控制模块比较所述校验数据和所述只读存储器中的预设数据;若比较通过,所述控制模块发送使能指令至所述解密模块,所述解密模块对所述原始程序数据进行解密,得到引导程序数据并发送至输出端;若比较未通过,所述控制模块发送校验失败至输出端。
在上述技术方案中,本申请提供的芯片初始化模块通过对只读存储器中存储的原始程序数据的可靠性进行验证,从而确保只读存储器中存储的原始程序数据是完整的且没有被篡改,有利于确保芯片可以安全启动;在原始程序数据是完整的且没有被篡改的前提下,然后一边读取原始程序数据一边解密读取到的原始程序数据,从而得到引导程序数据并对外输出,确保了数据读取过程中的安全性。
结合第三方面,在某些可能的实现方式中,所述解密模块包括依次连接的地址缓存单元、加密运算单元、掩码缓存单元和逻辑运算单元,所述逻辑运算单元还与所述只读存储器连接,所述逻辑运算单元还与所述控制模块连接;所述控制模块还发送所述读地址至所述地址缓存单元;所述地址缓存单元将存储的所述读地址发送至加密运算单元;所述加密运算单元基于接收到的所述读地址进行加密运算得到掩码,并将掩码发送至所述掩码缓存单元;所述逻辑运算单元接收所述使能指令,从所述掩码缓存单元获取对应的所述掩码,并通过所述掩码对所述原始程序数据进行解密,得到引导程序数据并发送至所述输出端。
结合第三方面和上述实现方式,在某些可能的实现方式中,所述控制模块还接收跳过校验信息,发送所述使能指令至所述解密模块,所述解密模块对所述原始程序数据进行解密,得到所述引导程序数据并发送至所述输出端。
第四方面,提供一种电子设备,包括存储器和处理器。该存储器用于存储可执行程序代码,该处理器用于从存储器中调用并运行该可执行程序代码,使得该电子设备执行上述第一方面或第一方面任意一种可能的实现方式中的芯片初始化方法。
第五方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述第一方面或第一方面任意一种可能的实现方式中的芯片初始化方法。
第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述第一方面或第一方面任意一种可能的实现方式中的芯片初始化方法。
附图说明
图1示出了本申请实施例提供的一种芯片初始化方法的示意性流程图;
图2示出了ROM的数据结构示意图;
图3示出了本申请实施例提供的一种芯片初始化模块的结构示意图;
图4示出了控制模块的校验控制流程示意图;
图5示出了解密模块的加密原理示意图;
图6示出了解密模块的解密过程示意图;
图7示出了解密模块的结构示意意图;
图8示出了本申请实施例提供的一种芯片初始化装置的结构示意图;
图9示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B:文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。
目前,现有的设计是直接将机器代码以明文的形式存放在ROM内,第三方可以直接从ROM中读取到存储的机器代码,从而容易导致ROM内存储的内容被篡改或窃取,造成芯片无法安全启动。另外,现有的设计没有对ROM进行校验。当出现生产错误、电气漂移、温度漂移等情况导致ROM读取错误时,无法探测到该情况并作出响应。
基于现有相关技术中存在的问题,本申请提供了一种芯片初始化方法、芯片初始化装置、芯片初始化模块、电子设备和计算机可读存储介质,该方法能够实现ROM的校验,防止ROM内存储的内容被篡改或窃取,确保芯片可以安全启动。
以下为本申请实施例提供的一种芯片初始化方法的一实施例。
图1示出了本申请实施例提供的一种芯片初始化方法的示意性流程图,如图1所示,本申请实施例提供的芯片初始化方法应用于电子设备,电子设备例如为计算机,该芯片初始化方法包括以下方案:
S110:验证只读存储器中存储的原始程序数据的可靠性;
S120:在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;
S130:对所述原始程序数据进行解密,得到引导程序数据并对外输出。
在一示例性实施例中,基于本申请在设计ROM时,事先对引导程序数据进行加密,加密后的引导程序数据称为原始程序数据,然后将原始程序数据存入ROM中,通过对引导程序数据进行加密可以防止引导程序数据被盗取、被篡改,从而确保引导程序数据的安全性。
在ROM投入实际应用之后,在使用ROM时,需要先对ROM进行校验,具体是对ROM中存储的原始程序数据的可靠性进行验证,原始程序数据的可靠性可以通过原始程序数据的完整性和正确性表示,完整性用于表示原始程序数据是完整的,没有缺失,正确性用于表示原始程序数据没有被篡改,或者没有对ROM读取错误,当前读取的原始程序数据与设计ROM时存入ROM中的原始程序数据是相同的。
如果原始程序数据的可靠性验证通过,表示原始程序数据是可靠的,也是可信任的,可以进行引导程序数据的读取操作。由于原始程序数据是对引导程序加密之后存入ROM中的,读取引导程序数据需要先对原始程序数据进行解密,然后得到导程序数据。读取引导程序数据的过程包括:在接收第N目标地址和读指令的情况下,表示需要读取ROM中第N目标地址对应的原始程序数据,第N目标地址可以索引出第N目标地址对应的原始程序数据在ROM中的存储位置,则可以从ROM中读取到第N目标地址对应的原始程序数据。
在读取到第N目标地址对应的原始程序数据之后,对第N目标地址对应的原始程序数据进行解密,得到第N目标地址对应的引导程序数据,然后对外输出第N目标地址对应的引导程序数据。例如,当N=1时,在读取到第1目标地址对应的原始程序数据之后,对第1目标地址对应的原始程序数据进行解密,得到第1目标地址对应的引导程序数据,然后对外输出第1目标地址对应的引导程序数据;当N=2时,在读取到第2目标地址对应的原始程序数据之后,对第2目标地址对应的原始程序数据进行解密,得到第2目标地址对应的引导程序数据,然后对外输出第2目标地址对应的引导程序数据;依次类推,如此实现了每读取到一个地址对应的原始程序数据,就对读取到的原始程序数据进行解密,即实现了边读取边解密的控制,确保了数据读取过程中的安全性和时效性。
本申请实施例通过采用验证只读存储器中存储的原始程序数据的可靠性,在原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从只读存储器中读取第N目标地址对应的原始程序数据,N为正整数,对原始程序数据进行解密,得到引导程序数据并对外输出的技术方案,通过对只读存储器中存储的原始程序数据的可靠性进行验证,从而确保只读存储器中存储的原始程序数据是完整的且没有被篡改,有利于确保芯片可以安全启动;在原始程序数据是完整的且没有被篡改的前提下,然后一边读取原始程序数据一边解密读取到的原始程序数据,从而得到引导程序数据并对外输出,确保了数据读取过程中的安全性和时效性。
以下对图1所示实施例中的各个步骤的具体实施方式进行说明:
一种可能的实现方式中,上述验证只读存储器中存储的原始程序数据的可靠性包括以下方案:
确定所述原始程序数据的校验数据;
基于所述校验数据和所述只读存储器中存储的预设数据,确定所述原始程序数据的可靠性。
在设计ROM时,将原始程序数据存入ROM之后,还根据存入的原始程序数据计算预设数据,并将预设数据存储至ROM的指定存储位置,预设数据是用于验证原始程序数据的可靠性的基准。对于ROM中存储的原始程序数据的可靠性验证包括:计算原始程序数据的校验数据,从指定存储位置读取预设数据,判断校验数据与预设数据是否一致,如果二者一致,表示原始程序数据的可靠性验证通过,如果二者不一致,表示原始程序数据的可靠性验证未通过。
如图2所示,图2示出了ROM的数据结构示意图,根据原始程序数据计算的预设数据存储在ROM的最低8个地址空间,即地址H0-H7,例如ROM存储的预设数据为8×32即256比特。
一种可能的实现方式中,上述确定所述原始程序数据的校验数据包括以下方案:
对所述原始程序数据进行哈希运算,得到所述原始程序数据的哈希值;
将所述哈希值确定为所述校验数据。
例如采用SHA2、SHA3、SM3等哈希算法中的任意一个对原始程序数据进行哈希运算,得到原始程序数据的哈希值,采用哈希算法计算原始程序数据的哈希值的过程为:读取原始程序数据分为多次读取,根据配置的哈希运算的参数信息,从ROM中每次读取特定长度的原始程序数据。第i次读取的内容包括第i-1次读取的内容,在第i次读取到的内容之后,将第i次读取到的内容与第i-1次读取到的内容的哈希值进行组合,得到组合数据,其中i≥1;计算组合数据的哈希值,组合数据的哈希值为第i次读取到的内容的哈希值,判断第i次读取到的内容是否为ROM中存储的原始程序数据中的最后一部分(末尾)内容;如果是,表示ROM中存储的原始程序数据已经完全读取完,则将第i次计算得到的哈希值确定为原始程序数据的哈希值,即为校验数据。
如图2所示,图2示出了ROM的数据结构示意图,原始程序数据存储在预设数据之后,按顺序依次存入,即H8以及之后的地址空间。
预设数据可以存储在ROM的最大的8个地址空间,原始程序数据从H0开始依次存入;预设数据也可以存储在ROM中的任意已知的地址空间,原始程序数据依次存入ROM中其余的存储空间。从指定存储位置读取预设数据时,从已知的地址空间中读取即可。
一种可能的实现方式中,上述对所述原始程序数据进行解密,得到引导程序数据包括以下方案:
根据收到的所述第N目标地址确定第N掩码;
基于所述第N掩码对所述原始程序数据进行解密,得到所述引导程序数据。
由于ROM中存储的原始程序数据是加密数据,事先通过对称密码算法如AES、DES、SM4等加密得,加密过程为:对用于存入引导程序数据的存地址进行加密运算(例如对称密码加密运算)得到掩码,然后对掩码和引导程序数据进行逻辑运算(例如异或运算),得到加密后的引导程序数据,将加密后的引导程序数据作为原始程序数据,存入对应的存地址中。
从ROM中读取到第N目标地址对应的原始程序数据之后,获取第N目标地址对应的第N掩码,其中第N目标地址对应的第N掩码与第N-1目标地址对应的第N-1掩码不同,然后采用第N掩码对第N目标地址对应的原始程序数据进行解密,也就是对第N掩码和第N目标地址对应的原始程序数据进行逻辑运算,得到第N目标地址对应的引导程序数据,完成第N目标地址对应的原始程序数据的解密。
一种可能的实现方式中,当N≥2时,所述根据收到的所述第N目标地址确定第N掩码之前,还包括:
根据收到的第N-1目标地址,获取与所述第N-1目标地址顺序相连的至少一个后续目标地址;
根据所述至少一个后续目标地址,确定至少一个后续掩码并缓存。
通常的加密算法包括多轮运算,以AES128加密算法为例,其加密运算包含10轮,一般电路实现加密需要10个时钟周期执行上述解密操作才能获得最终结果。因此,在ROM执行读取操作时,会因为解密的缘故可能引入较大的读取延迟。为了缩短解密时间,可以使用超轻量级对称加密算法进行解密,超轻量级对称加密算法例如是PRESENT、Trivium等。
为了解决ROM的读取延迟大的问题,事先进行了掩码的计算并进行缓存,当满足条件时,直接从缓存中获取存储的掩码进行解密,从而缩短ROM的读取时长。
如果N≥2,表示当前接收到的目的地址不是首次接收到的地址,之前已经有接收第N-1目标地址,且已经进行第N-1目标地址对应的引导程序数据解密,因此在根据收到的第N目标地址确定第N掩码之前,预测之后接收到的目标地址可能会与第N-1目标地址构成了连续地址,则获取与第N-1目标地址顺序相连的至少一个后续目标地址。如果至少一个后续目标地址为1个,则至少一个后续目标地址为:第N目标地址;如果至少一个后续目标地址为多个,至少一个后续目标地址依次为:第N目标地址、第N+1目标地址、第N+2目标地址、...。
得到至少一个后续目标地址之后,对至少一个后续目标地址中的每个后续目标地址进行加密运算,得到至少一个后续目标地址中的每个后续目标地址的后续掩码,例如,第N目标地址的后续掩码为第N掩码,第N+1目标地址的后续掩码为第N+1掩码,然后将至少一个后续掩码缓存至掩码缓存器中。
基于掩码缓存器中存储有上述后续掩码的情况下,一种可能的实现方式中,上述根据收到的所述第N目标地址确定第N掩码包括以下方案:
当所述第N目标地址与上一次收到的所述第N-1目标地址是连续的,从缓存的所述至少一个后续掩码中确定与所述第N目标地址对应的所述第N掩码;
当所述第N目标地址与上一次收到的所述第N-1目标地址不是连续的,对所述第N目标地址进行加密运算得到所述第N掩码。
在N≥2的情况下,判断第N目标地址与上一次收到的第N-1目标地址是否是连续的,如果是连续的,表示第N-1目标地址和第N目标地址是连续地址,则从ROM存储的后续掩码中获取与第N目标地址对应的第N掩码,即第N掩码是对第N目标地址加密得到的,然后采用第N掩码对第N目标地址对应的原始程序数据进行解密,得到第N目标地址对应的引导程序数据。在第N目标地址与上一次收到的第N-1目标地址是连续的情况下,已在第N-1目标地址进行读操作时,在掩码缓存器中存储第N掩码,从掩码缓存器存储的后续掩码中获取与第N目标地址对应的第N掩码,然后采用获取的第N掩码对第N目标地址读取的原始程序数据进行解密,省去了第N掩码的计算过程,节省了解密时间,有利于缩短原始程序数据的读取时间。
如果第N目标地址与上一次收到的第N-1目标地址不是连续的,即掩码存储器中没有存储第N目标地址的第N掩码,则对第N目标地址进行加密运算得到第N掩码,然后采用计算得到的第N掩码对第N目标地址读取的原始程序数据进行解密,得到第N目标地址对应的引导程序数据。
一种可能的实现方式中,当N=1时,上述根据收到的所述第N目标地址确定第N掩码包括以下方案:
对所述第N目标地址进行加密运算得到所述第N掩码。
如果N=1,表示接收到的是第1目标地址,第1目标地址也是首次接收到的地址,由于ROM中没有存储第1目标地址的第1掩码,则第1目标地址进行加密,得到第1目标地址的第1掩码,采用第1掩码对第1目标地址读取的原始程序数据进行解密,得到第1目标地址对应的引导程序数据。
以下为本申请实施例提供的一种芯片初始化模块的一实施例。
图3示出了本申请实施例提供的一种芯片初始化模块的结构示意图,如图3所示,本申请实施例提供的芯片初始化模块300包括:控制模块310、ROM 320、解密模块330和运算核340,控制模块310分别与ROM 320、解密模块330和运算核340连接,ROM 320还与解密模块330和运算核340连接。其中:
控制模块310接收触发校验信息,发送读指令和读地址至ROM 320读取原始程序数据;ROM 320将读取的原始程序数据发送至运算核340和解密模块330;控制模块310发送调用指令至运算核340,运算核340计算原始程序数据的校验数据并发送至控制模块310;控制模块310比较校验数据和ROM 320中的预设数据;若比较通过,控制模块310发送使能指令至解密模块330,解密模块330对原始程序数据进行解密,得到引导程序数据并发送至输出端;若比较未通过,控制模块310发送校验失败至输出端。其中,触发校验信息用于指示控制模块310对ROM 320中存储的原始程序数据的可靠性进行校验。
图4示出了控制模块的校验控制流程示意图,如图4所示,控制模块在复位状态下,状态机初始化到s_IDLE状态,表示控制模块空闲,并等待外部触发;控制模块在收到“触发校验信息”后,采样“跳过校验”至配置寄存器,状态机跳转至s_CHK_CFG,控制模块检查输入配置,在s_CHK_CFG状态判断“跳过校验”的数值,确定是否跳过校验。若“跳过校验”数值为1,则控制模块跳过校验,不进行校验,状态机跳转至s_DONE,执行结束,控制模块输出结束标志后回到s_IDLE。如果“跳过校验”数值为0,则控制模块执行校验,状态机跳转至s_ALG_INIT,进行算法初始化。对不同算法而言,算法初始化所需时间不同,例如时间为8个时钟周期;该s_ALG_INI状态计数等待,直到初始化结束。
在算法初始化完成后,状态机跳转至s_ROM_RD,进行内容读取,即控制模块从ROM中读取原始程序数据;当读取了1个分组的原始程序数据,跳转至s_ALG_CAL进行校验数据运算,等待当前分组的原始程序数据的校验数据运算结束;当运算结束时,判断当前分组的原始程序数据是否为原始程序数据的末尾数据;若不是,则继续跳转至s_ROM_RD,读取原始程序数据的后续数据,并进行校验数据运算;若是,则进行校验数据校验。每个分组的读取长度由配置寄存器中存储的参数信息决定。当读取到原始程序数据的末尾时,即使读取长度不足,也进行校验数据运算。
跳转至s_CMP_DGT进行校验数据校验;控制模块从ROM中依次读取地址H0-H7的预设数据与计算得到的校验数据进行比较,比较完成后输出结果,并跳转至s_DONE;控制模块输出结束脉冲;最后跳转至s_IDLE恢复空闲。
如图3所示,芯片初始化模块300验证ROM 320内存储的原始程序数据的可靠性和在原始程序数据的可靠性之后,解密并输出引导程序数据的过程如下:
控制模块310接收触发校验信息,根据触发校验信息对ROM 320中存储的原始程序数据的可靠性进行验证,并发送读指令和读地址至ROM 320读取原始程序数据,ROM 320将读取的原始程序数据发送至运算核340和解密模块330;控制模块310发送调用指令至运算核340,调用运算核340计算原始程序数据的校验数据,具体的运算核340对原始程序数据进行哈希运算,得到原始程序数据的哈希值,即原始程序数据的哈希值为原始程序数据的校验数据,并将原始程序数据的校验数据发送至控制模块310;控制模块310从ROM 320中获取预设数据,比较校验数据与预设数据是否相同。如果校验数据与预设数据相同,表示比较通过,控制模块310发送使能指令至解密模块330,解密模块330对原始程序数据进行解密。如果校验数据与预设数据不相同,表示比较未通过,控制模块310发送校验失败至输出端。
解密模块330采用“对称密码计数器模式”实现而成。“对称密码”其加解密使用的是同一组掩码,对称密码算法例如AES、DES、SM4等。“计数器模式”则是上述密码算法的一种工作模式,如图5所示,图5示出了解密模块的加密原理示意图,“加密”指的是对称密码加密运算,“异或”指逻辑运算,“明文”指原始未加密的数据,“密文”指加密结果。
对于ROM 320中的原始程序数据是通过对称密码算法加密得到的,原始程序数据的生成过程为:先将引导程序数据(明文)对应的存储地址进行对称密码加密运算,得到加密的存储地址,加密的存储地址即为引导程序数据对应的掩码,然后对加密的存储地址和引导程序数据进行异或运算得到原始程序数据。同理,对于原始程序数据的解密流程与加密流程是完全一致的。如图6所示,图6示出了解密模块的解密过程示意图,控制模块发起读使能时,会同时发送读地址给ROM以读取对应存储地址内的原始程序数据;解密模块330先对读地址进行对称密码加密运算得到掩码,然后对掩码和原始程序数据进行异或运算输出明文,即输出的明文为引导程序数据,将引导程序数据发送至输出端。
本申请提供的芯片初始化模块通过对只读存储器中存储的原始程序数据的可靠性进行验证,从而确保只读存储器中存储的原始程序数据是完整的且没有被篡改,有利于确保芯片可以安全启动;在原始程序数据是完整的且没有被篡改的前提下,然后一边读取原始程序数据一边解密读取到的原始程序数据,从而得到引导程序数据并对外输出,确保了数据读取过程中的安全性和实效性。
一种可能的实现方式中,如图7所示,图7示出了解密模块的结构示意意图,解密模块330包括依次连接的地址缓存单元331、加密运算单元332、掩码缓存单元333和逻辑运算单元334,逻辑运算单元334还与ROM 320连接,逻辑运算单元334还与控制模块310连接。其中:
控制模块310还发送读地址至地址缓存单元331,地址缓存单元331存储控制模块310发送的读地址,地址缓存单元331将存储的读地址发送至加密运算单元332,加密运算单元332基于接收到的读地址进行加密运算得到掩码,例如加密运算单元332对接收到的读地址进行对称密码加密运算,得到读地址对应的掩码,并将掩码发送至掩码缓存单元333。其中,不同的读地址对应不同的掩码。
逻辑运算单元334接收使能指令,从掩码缓存单元334获取对应的掩码,并通过掩码对原始程序数据进行解密,得到引导程序数据并发送至输出端。可以理解的是,逻辑运算单元334接收到使能指令之后,从掩码缓存单元334中获取读地址对应的掩码,然后采用获取的读地址对应的掩码对读地址对应的原始程序数据进行解密,具体是对读地址对应的掩码和读地址对应的原始程序数据进行异或运算,得到引导程序数据,实现读地址对应的原始程序数据的解密,然后将引导程序数据并发送至输出端。
对于预存至少一个后续目标地址的后续密码的情况,控制模块310还发送读地址之后的至少一个后续目标地址至地址缓存单元331存储,地址缓存单元331将存储的至少一个后续目标地址发送至加密运算单元332,加密运算单元332基于接收到的至少一个后续目标地址进行加密运算得到至少一个掩码。
控制模块310判断当前的读地址与上一次的读地址是连续地址,则逻辑运算单元334接收使能指令,从掩码缓存单元334直接获取当前的读地址对应的掩码,并通过掩码对原始程序数据进行解密,得到引导程序数据并发送至输出端。由于读地址对应的掩码是从掩码缓存单元334中获取的,省去了对读地址进行加密得到对应掩码的过程,从而加快了原始程序数据的解密效率。
一种可能的实现方式中,控制模块310还接收跳过校验信息,发送使能指令至解密模块330,解密模块330对原始程序数据进行解密,得到引导程序数据并发送至输出端。其中,跳过校验信息用于表示不对ROM 320存储的原始程序数据进行可靠性的验证,如果控制模块310接收到跳过校验信息,则跳过对ROM 320存储的原始程序数据进行可靠性的验证的环节,直接进行ROM 320存储数据的读取,进而向解密模块330发送使能指令,解密模块330基于读取地址对读取地址存储的原始程序数据进行解密,得到引导程序数据,发送引导程序数据至输出端。通常对于跳过对ROM 320存储的原始程序数据进行可靠性的验证一般用于ROM 320的调试阶段,目的在于避免因模块功能故障导致芯片无法启动进行调试检测,例如避免因此ROM 320存储的原始程序数据的可靠性验证未通过,导致芯片无法启动。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图8示出了本申请实施例提供的一种芯片初始化装置的结构示意图,如图8所示,所述芯片初始化装置1000包括:
数据验证模块1010,用于验证只读存储器中存储的原始程序数据的可靠性;
读取模块1020,用于在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;
数据解密模块1030,用于对所述原始程序数据进行解密,得到引导程序数据并对外输出。
一种可能的实现方式中,所述数据验证模块1010包括:
数据计算单元,用于确定所述原始程序数据的校验数据;
数据验证单元,用于基于所述校验数据和所述只读存储器中存储的预设数据,确定所述原始程序数据的可靠性。
一种可能的实现方式中,所述数据计算单元,具体用于对所述原始程序数据进行哈希运算,得到所述原始程序数据的哈希值;将所述哈希值确定为所述校验数据。
一种可能的实现方式中,所述数据解密模块1030,包括:
掩码确定单元,用于根据收到的所述第N目标地址确定第N掩码;
数据解密单元,用于基于所述第N掩码对所述原始程序数据进行解密,得到所述引导程序数据。
一种可能的实现方式中,当N≥2时,所述芯片初始化装置1000还包括:
地址加密单元,用于根据收到的第N-1目标地址,获取与所述第N-1目标地址顺序相连的至少一个后续目标地址;根据所述至少一个后续目标地址,确定至少一个后续掩码并缓存。
一种可能的实现方式中,所述掩码确定单元,具体用于当所述第N目标地址与上一次收到的所述第N-1目标地址是连续的,从缓存的所述至少一个后续掩码中确定与所述第N目标地址对应的所述第N掩码;当所述第N目标地址与上一次收到的所述第N-1目标地址不是连续的,对所述第N目标地址进行加密运算得到所述第N掩码。
一种可能的实现方式中,所述掩码确定单元,具体还用于对所述第N目标地址进行加密运算得到所述第N掩码。
需要说明的是,上述实施例提供的芯片初始化装置在执行芯片初始化方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的芯片初始化装置与芯片初始化方法实施例属于同一构思,因此对于本申请装置实施例中未披露的细节,请参照本申请上述的芯片初始化方法的实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
图9示出了本申请实施例提供的一种电子设备的结构示意图。
示例性的,如图9所示,该电子设备1100包括:存储器1101和处理器1102,其中,存储器1101中存储有可执行程序代码11011,处理器1102用于调用并执行该可执行程序代码11011执行一种芯片初始化方法。
本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中,上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,该电子设备可以包括:数据验证模块、读取模块、数据解密模块等。需要说明的是,上述方法实施例涉及的各个步骤的所有相关内容的可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述一种芯片初始化方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备可以包括处理模块、存储模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行相互程序代码和数据等。
其中,处理模块可以是处理器或控制器,其可以实现或执行结合本申请公开内容所藐视的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等,存储模块可以是存储器。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述相关方法步骤实现上述实施例中的一种芯片初始化方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的一种芯片初始化方法。
另外,本申请的实施例提供的电子设备具体可以是芯片,组件或模块,该电子设备可包括相连的处理器和存储器;其中,存储器用于存储指令,当电子设备运行时,处理器可调用并执行指令,以使芯片执行上述实施例中的一种芯片初始化方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的芯片初始化方法,因此,其所能达到的有益效果可参考上文所提供的对应的芯片初始化方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种芯片初始化方法,其特征在于,所述芯片初始化方法包括:
验证只读存储器中存储的原始程序数据的可靠性;
在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;
对所述原始程序数据进行解密,得到引导程序数据并对外输出。
2.根据权利要求1所述的芯片初始化方法,其特征在于,所述验证只读存储器中存储的原始程序数据的可靠性包括:
确定所述原始程序数据的校验数据;
基于所述校验数据和所述只读存储器中存储的预设数据,确定所述原始程序数据的可靠性。
3.根据权利要求2所述的芯片初始化方法,其特征在于,所述确定所述原始程序数据的校验数据包括:
对所述原始程序数据进行哈希运算,得到所述原始程序数据的哈希值;
将所述哈希值确定为所述校验数据。
4.根据权利要求1至3任意一项所述的芯片初始化方法,其特征在于,所述对所述原始程序数据进行解密,得到引导程序数据包括:
根据收到的所述第N目标地址确定第N掩码;
基于所述第N掩码对所述原始程序数据进行解密,得到所述引导程序数据。
5.根据权利要求4所述的芯片初始化方法,其特征在于,当N≥2时,所述根据收到的所述第N目标地址确定第N掩码之前,还包括:
根据收到的第N-1目标地址,获取与所述第N-1目标地址顺序相连的至少一个后续目标地址;
根据所述至少一个后续目标地址,确定至少一个后续掩码并缓存。
6.根据权利要求5所述的芯片初始化方法,其特征在于,所述根据收到的所述第N目标地址确定第N掩码包括:
当所述第N目标地址与上一次收到的所述第N-1目标地址是连续的,从缓存的所述至少一个后续掩码中确定与所述第N目标地址对应的所述第N掩码;
当所述第N目标地址与上一次收到的所述第N-1目标地址不是连续的,对所述第N目标地址进行加密运算得到所述第N掩码。
7.根据权利要求4所述的芯片初始化方法,其特征在于,当N=1时,所述根据收到的所述第N目标地址确定第N掩码包括:
对所述第N目标地址进行加密运算得到所述第N掩码。
8.一种芯片初始化装置,其特征在于,所述芯片初始化装置包括:
数据验证模块,用于验证只读存储器中存储的原始程序数据的可靠性;
读取模块,用于在所述原始程序数据的可靠性验证通过的情况下,根据收到的第N目标地址和读指令,从所述只读存储器中读取所述第N目标地址对应的所述原始程序数据;其中,N为正整数;
数据解密模块,用于对所述原始程序数据进行解密,得到引导程序数据并对外输出。
9.一种芯片初始化模块,其特征在于,包括控制模块、只读存储器、解密模块和运算核,所述控制模块分别与所述只读存储器、所述解密模块和所述运算核连接,所述只读存储器还与所述解密模块和所述运算核连接;
所述控制模块接收触发校验信息,发送读指令和读地址至所述只读存储器读取原始程序数据;
所述只读存储器将读取的所述原始程序数据发送至所述运算核和所述解密模块;
所述控制模块发送调用指令至所述运算核,所述运算核计算所述原始程序数据的校验数据并发送至所述控制模块;
所述控制模块比较所述校验数据和所述只读存储器中的预设数据;若比较通过,所述控制模块发送使能指令至所述解密模块,所述解密模块对所述原始程序数据进行解密,得到引导程序数据并发送至输出端;若比较未通过,所述控制模块发送校验失败至输出端。
10.根据权利要求9所述的芯片初始化模块,其特征在于,所述解密模块包括依次连接的地址缓存单元、加密运算单元、掩码缓存单元和逻辑运算单元,所述逻辑运算单元还与所述只读存储器连接,所述逻辑运算单元还与所述控制模块连接;
所述控制模块还发送所述读地址至所述地址缓存单元;
所述地址缓存单元将存储的所述读地址发送至加密运算单元;
所述加密运算单元基于接收到的所述读地址进行加密运算得到掩码,并将掩码发送至所述掩码缓存单元;
所述逻辑运算单元接收所述使能指令,从所述掩码缓存单元获取对应的所述掩码,并通过所述掩码对所述原始程序数据进行解密,得到引导程序数据并发送至所述输出端。
11.根据权利要求9所述的芯片初始化模块,其特征在于,所述控制模块还接收跳过校验信息,发送所述使能指令至所述解密模块,所述解密模块对所述原始程序数据进行解密,得到所述引导程序数据并发送至所述输出端。
12.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行程序代码;
处理器,用于从所述存储器中调用并运行所述可执行程序代码,使得所述电子设备执行如权利要求1至7中任意一项所述的芯片初始化方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被执行时,实现如权利要求1至7中任意一项所述的芯片初始化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311831158.9A CN117786699A (zh) | 2023-12-26 | 2023-12-26 | 芯片初始化方法、装置、模块、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311831158.9A CN117786699A (zh) | 2023-12-26 | 2023-12-26 | 芯片初始化方法、装置、模块、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117786699A true CN117786699A (zh) | 2024-03-29 |
Family
ID=90396118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311831158.9A Pending CN117786699A (zh) | 2023-12-26 | 2023-12-26 | 芯片初始化方法、装置、模块、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117786699A (zh) |
-
2023
- 2023-12-26 CN CN202311831158.9A patent/CN117786699A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111095213B (zh) | 嵌入式程序的安全引导方法、装置、设备及存储介质 | |
US7577852B2 (en) | Microprocessor, a node terminal, a computer system and a program execution proving method | |
US8683224B2 (en) | Processor-implemented method for ensuring software integrity | |
CN108885668B (zh) | 用于用户数据的完整性检查的方法、处理器和设备 | |
KR101687439B1 (ko) | 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법 | |
US9256756B2 (en) | Method of encryption and decryption for shared library in open operating system | |
US11238166B2 (en) | Data processing device and operating method therefor | |
US20170046514A1 (en) | Programmable secure bios mechanism in a trusted computing system | |
EP1465038A1 (en) | Memory security device for flexible software environment | |
EP1295200A2 (en) | Data processing method and device for protected execution of instructions | |
CN117786699A (zh) | 芯片初始化方法、装置、模块、电子设备和存储介质 | |
US20230017231A1 (en) | Securely executing software based on cryptographically verified instructions | |
US20240169098A1 (en) | Secure Chip-Wide Transmission | |
US20240193309A1 (en) | Secure Cryptographic Coprocessor | |
US20230418603A1 (en) | System and Method for Securing Nonvolatile Memory for Execute-in-Place | |
US20240184932A1 (en) | Read-Only Memory (ROM) Security | |
US20220292182A1 (en) | Method for the execution of a binary code of a computer program by a microprocessor | |
KR20230145166A (ko) | 읽기 전용 메모리(rom) 보안 | |
KR20230146594A (ko) | 읽기 전용 메모리(rom) 보안 | |
JP2015018441A (ja) | 情報処理システム | |
CN115906056A (zh) | 加载动态库的方法、系统、设备、存储介质及程序产品 | |
CN116451185A (zh) | 一种应用程序的保护方法及装置 | |
CN116982047A (zh) | 安全密码协处理器 | |
CN117556418A (zh) | 一种确定内核状态的方法和相关设备 | |
WO2020141182A1 (en) | Method, system and device for managing an execution of a program relating to part or all of a first application |
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 |