CN114065218B - 一种SoC系统芯片安全启动方法 - Google Patents
一种SoC系统芯片安全启动方法 Download PDFInfo
- Publication number
- CN114065218B CN114065218B CN202111408219.1A CN202111408219A CN114065218B CN 114065218 B CN114065218 B CN 114065218B CN 202111408219 A CN202111408219 A CN 202111408219A CN 114065218 B CN114065218 B CN 114065218B
- Authority
- CN
- China
- Prior art keywords
- public key
- hash value
- firmware
- bin
- otp
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000012795 verification Methods 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
一种SoC系统芯片安全启动方法,包括:读取im.bin及OTP中信息到SRAM中;根据OTP中已经撤销公钥编号,验证所述im.bin中所选公钥编号是否已经被撤销;计算im.bin中公钥表的杂凑值,并与OTP中公钥表杂凑值进行比对;计算im.bin中[对称算法类型,固件的杂凑值]范围的杂凑值,并与im.bin中上述数据的杂凑值进行对比;对im.bin中上述数据的杂凑值就行验签;对固件进行验证,通过OTP中的对称密钥对固件进行解密,然后计算固件的杂凑值,并与im.bin中固件的杂凑值进行对比。本发明具有高扩展性,OTP中存储的是公钥表的哈希值,而不是公钥表,解决了公钥固定且无法应对密钥泄露的问题。
Description
技术领域
本发明公开一种SoC系统芯片安全启动方法,属于芯片安全启动的技术领域。
背景技术
SoC称为系统级芯片,其中包含完整系统并有嵌入软件的全部内容。在Soc的工作过程中,启动安全是后续所有安全机制的保障,若Soc的安全启动存在漏洞,则会产生严重的安全问题。
现有支持安全启动的SoC,一般采用OTP直接存储公钥,存在公钥固定、无法防止密钥泄露风险等缺陷。
现有Soc的安全启动方案都是基于密码算法,包括对称算法、杂凑算法、公钥算法,上位机工具在烧写固件前会对固件做以下处理:1)使用杂凑算法生成固件的杂凑值;2)使用对称算法对固件进行加密;3)使用公钥算法对固件进行签名。并将固件杂凑值、解密密钥及公钥烧写到OTP中。
启动时,Soc会验证固件的合法性,包括:1)从OTP读取公钥,对固件的杂凑值进行验签;2)从OTP读取解密密钥,对固件进行解密;3)使用杂凑算法计算明文固件的杂凑值,并与OTP中杂凑值进行对比。
上述安全启动机制存在以下缺陷:
1)公钥长度较长,比如SM2算法公钥为512bits,RSA2048算法公钥为2048bit,但OTP存储空间普遍无法存储多个公钥;
2)若在OTP只存储了一个公钥,无法应对所对应私钥泄露的风险。
除此之外,中国专利文献:CN110765438A一种高性能密码卡及其工作方法,公开了在固件完整性校验、密码卡数据完整性校验时,都是通过将结果和存储的杂凑值做对比,比对一致则校验成功。但是,文献所解决的技术问题是:针对缺乏毁钥机制,提高密钥存储的安全性等特点进行解决,与本发明所述的安全启动的问题不同。
中国专利文献CN 111814208 A,解决安全启动的方案为:本方法通过内置的硬件检测模块追踪安全启动时,软件的执行顺序;在检测到软件执行顺序不正确时,通过存储器权限控制模块禁止软件对存储器的读写或执行权限,令软件无法继续执行,安全启动流程终止。并未提及本发明所述的方法。
中国专利文献:CN 112784280 A公开一种SoC芯片安全设计方法及硬件平台,文中安全管控是通过加密和数字签名的方式实现对引导程序、操作系统及应用程序的验证进行实现的:若验证成功,镜像可信任,将镜像加载并执行启动;若验证失败,镜像已被篡改,启动过程终止。利用加密和数字签名的方式实现对引导程序、操作系统及应用程序的验证,保证了各固件、软件的安全可信并对密钥进行安全存储,提升了安全性。但是依然与本发明存在实质性的技术区别。
发明内容
针对现有技术的问题,本发明公开一种SoC系统芯片安全启动方法。本发明不再在OTP中直接存储公钥,而是存储多个公钥(公钥表)的杂凑值,将公钥表、此处所用公钥编号、已经撤销的公钥编号存储在其他大容量介质中,从而解决无法存储多个公钥及应对密钥泄露问题。
技术术语解释:
1、SoC:是System on Chip的简称,也即片上系统。
2、OTP:是One Time Programmable的简称,一次性可烧写存储器,该存储器只能烧写一次,即相关bit只能从1变为0,不能从0变为1。
3、bootrom(或Boot ROM):是嵌入处理器芯片内的一小块掩模ROM或写保护闪存,它包含处理器在上电或复位时执行的第一条指令。
4、im.bin:在本文中,生成公钥算法密钥对、生成公钥表及公钥表的密钥对、生成描述文件的简称。
5、SRAM:是Static Random-Access Memory的简称,静态随机存取存储器是随机存取存储器的一种。
本发明详细的技术方案如下:
一种SoC系统芯片安全启动方法,其特征在于,包括:
1)读取im.bin及OTP中信息到SRAM中;所述读取整个im.bin,包括附图1中的所有信息;所述OTP中信息包括:已撤销公钥编号、公钥表杂凑值和固件解密密钥;
2)根据OTP中已经撤销公钥编号,验证所述im.bin中所选公钥编号是否已经被撤销:
若公钥已经撤销,则终止启动流程;
若公钥未撤销,则进入步骤3);
3)计算im.bin中公钥表的杂凑值,并与OTP中公钥表杂凑值进行比对:
若一致,则说明im.bin中的公钥表是合法的,杂凑算法的选择依赖于im.bin中杂凑算法类型,直接进行步骤4);
若不一致,则im.bin验证失败,终止启动流程;
4)计算im.bin中[对称算法类型,固件的杂凑值]范围的杂凑值,即计算范围从对称算法类型开始,到固件的杂凑值结束,这一块数据会作为一个整体,计算出一个杂凑值;并与im.bin中上述数据的杂凑值进行对比:
若一致,则进行步骤5)验签,杂凑算法的选择依赖于im.bin中杂凑算法类型;
若不一致,则终止启动流程;
5)对im.bin中上述数据的杂凑值就行验签,使用非对称密码算法进行验签,属于标准的密码算法应用:
若通过验签,则说明im.bin合法,进行步骤6),验签算法及所用公钥的选择依赖于im.bin中公钥算法类型与所选的公钥编号;
若不通过验签,则终止启动流程;
6)对固件进行验证,通过OTP中的对称密钥对固件进行解密,然后计算固件的杂凑值,并与im.bin中固件的杂凑值进行对比:
若一致,则固件合法,Soc从bootrom跳转到固件执行,对称算法和杂凑算法的选择依赖于im.bin中的对称算法类型及杂凑算法类型;
若不一致,则终止启动流程。
上述启动方法应用于:上位机工具及Soc系统芯片的bootrom。
所述上位机工具用于:生成公钥算法密钥对、生成公钥表及公钥表的密钥对、生成描述文件。所述描述文件如图1所示,为了后续描述方便,将描述文件称为im.bin。
本发明的技术优势在于:
1、本发明具有高扩展性,OTP中存储的是公钥表的哈希值,而不是公钥表,解决了公钥固定且无法应对密钥泄露的问题。
2、本发明具有高自主性,可以根据场景的不同,自由选择使用国密算法套件/国际算法套件。
3、本发明高易用性,只要SoC系统芯片具备OTP及密码算法引擎,即可实现本发明所述方案。
附图说明
图1是im.bin的结构图;
图2是bootrom在引导固件时的流程图。
具体实施方式
下面结合实施例和说明书附图对本发明做详细的说明,但不限于此。
实施例1、
一种SoC系统芯片安全启动方法,包括:
1)读取im.bin及OTP中信息到SRAM中;所述读取整个im.bin,包括附图1中的所有信息;所述OTP中信息包括:已撤销公钥编号、公钥表杂凑值和固件解密密钥;
2)根据OTP中已经撤销公钥编号,验证所述im.bin中所选公钥编号是否已经被撤销:
若公钥已经撤销,则终止启动流程;
若公钥未撤销,则进入步骤3);
3)计算im.bin中公钥表的杂凑值,并与OTP中公钥表杂凑值进行比对:
若一致,则说明im.bin中的公钥表是合法的,杂凑算法的选择依赖于im.bin中杂凑算法类型,直接进行步骤4);
若不一致,则im.bin验证失败,终止启动流程;
4)计算im.bin中[对称算法类型,固件的杂凑值]范围的杂凑值,即计算范围从对称算法类型开始,到固件的杂凑值结束,这一块数据会作为一个整体,计算出一个杂凑值;并与im.bin中上述数据的杂凑值进行对比:
若一致,则进行步骤5)验签,杂凑算法的选择依赖于im.bin中杂凑算法类型;
若不一致,则终止启动流程;
5)对im.bin中上述数据的杂凑值就行验签,使用非对称密码算法进行验签,属于标准的密码算法应用:
若通过验签,则说明im.bin合法,进行步骤6),验签算法及所用公钥的选择依赖于im.bin中公钥算法类型与所选的公钥编号;
若不通过验签,则终止启动流程;
6)对固件进行验证,通过OTP中的对称密钥对固件进行解密,然后计算固件的杂凑值,并与im.bin中固件的杂凑值进行对比:
若一致,则固件合法,Soc从bootrom跳转到固件执行,对称算法和杂凑算法的选择依赖于im.bin中的对称算法类型及杂凑算法类型;
若不一致,则终止启动流程。
实施例2、
如实施例1所述启动方法应用于:上位机工具及Soc系统芯片的bootrom。
所述上位机工具用于:生成公钥算法密钥对、生成公钥表及公钥表的密钥对、生成描述文件。所述描述文件如图1所示,为了后续描述方便,将描述文件称为im.bin。
Claims (2)
1.一种SoC系统芯片安全启动方法,其特征在于,包括:
1)读取im.bin及OTP中信息到SRAM中;所述OTP中信息包括:已撤销公钥编号、公钥表杂凑值和固件解密密钥;
2)根据OTP中已经撤销公钥编号,验证所述im.bin中所选公钥编号是否已经被撤销:
若公钥已经撤销,则终止启动流程;
若公钥未撤销,则进入步骤3);
3)计算im.bin中公钥表的杂凑值,并与OTP中公钥表杂凑值进行比对:
若一致,则说明im.bin中的公钥表是合法的,直接进行步骤4);
若不一致,则im.bin验证失败,终止启动流程;
4)计算im.bin中[对称算法类型,固件的杂凑值]范围的杂凑值;并与im.bin中上述数据的杂凑值进行对比:
若一致,则进行步骤5)验签;
若不一致,则终止启动流程;
5)对im.bin中上述数据的杂凑值就行验签:
若通过验签,则说明im.bin合法,进行步骤6);
若不通过验签,则终止启动流程;
6)对固件进行验证,通过OTP中的对称密钥对固件进行解密,然后计算固件的杂凑值,并与im.bin中固件的杂凑值进行对比:
若一致,则固件合法,Soc从bootrom跳转到固件执行;
若不一致,则终止启动流程。
2.如权利要求1所述启动方法应用方法,其特征在于,包括应用在上位机工具及Soc系统芯片的bootrom。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111408219.1A CN114065218B (zh) | 2021-11-19 | 2021-11-19 | 一种SoC系统芯片安全启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111408219.1A CN114065218B (zh) | 2021-11-19 | 2021-11-19 | 一种SoC系统芯片安全启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114065218A CN114065218A (zh) | 2022-02-18 |
CN114065218B true CN114065218B (zh) | 2024-04-12 |
Family
ID=80276052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111408219.1A Active CN114065218B (zh) | 2021-11-19 | 2021-11-19 | 一种SoC系统芯片安全启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114065218B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180059742A (ko) * | 2018-05-28 | 2018-06-05 | (주)이더블유비엠 | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 |
CN108347332A (zh) * | 2017-06-06 | 2018-07-31 | 清华大学 | 验证固件签名的方法及装置 |
KR20200020627A (ko) * | 2018-08-16 | 2020-02-26 | 경희대학교 산학협력단 | 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 |
CN112035152A (zh) * | 2020-08-24 | 2020-12-04 | 成都三零嘉微电子有限公司 | 一种SoC芯片固件升级的安全处理系统及方法 |
CN112346776A (zh) * | 2020-11-04 | 2021-02-09 | 浙江大华技术股份有限公司 | 固件的打包、安全启动方法及装置、存储介质及电子设备 |
CN112784280A (zh) * | 2021-01-12 | 2021-05-11 | 苏州浪潮智能科技有限公司 | 一种SoC芯片安全设计方法及硬件平台 |
CN112784278A (zh) * | 2020-12-31 | 2021-05-11 | 科东(广州)软件科技有限公司 | 一种计算机系统的可信启动方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8812854B2 (en) * | 2009-10-13 | 2014-08-19 | Google Inc. | Firmware verified boot |
JP2015036847A (ja) * | 2013-08-12 | 2015-02-23 | 株式会社東芝 | 半導体装置 |
-
2021
- 2021-11-19 CN CN202111408219.1A patent/CN114065218B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347332A (zh) * | 2017-06-06 | 2018-07-31 | 清华大学 | 验证固件签名的方法及装置 |
KR20180059742A (ko) * | 2018-05-28 | 2018-06-05 | (주)이더블유비엠 | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 |
KR20200020627A (ko) * | 2018-08-16 | 2020-02-26 | 경희대학교 산학협력단 | 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 |
CN112035152A (zh) * | 2020-08-24 | 2020-12-04 | 成都三零嘉微电子有限公司 | 一种SoC芯片固件升级的安全处理系统及方法 |
CN112346776A (zh) * | 2020-11-04 | 2021-02-09 | 浙江大华技术股份有限公司 | 固件的打包、安全启动方法及装置、存储介质及电子设备 |
CN112784278A (zh) * | 2020-12-31 | 2021-05-11 | 科东(广州)软件科技有限公司 | 一种计算机系统的可信启动方法、装置及设备 |
CN112784280A (zh) * | 2021-01-12 | 2021-05-11 | 苏州浪潮智能科技有限公司 | 一种SoC芯片安全设计方法及硬件平台 |
Also Published As
Publication number | Publication date |
---|---|
CN114065218A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US11562075B2 (en) | Secure booting method, apparatus, device for embedded program, and storage medium | |
US8443203B2 (en) | Secure boot method and semiconductor memory system using the method | |
CN111723383B (zh) | 数据存储、验证方法及装置 | |
US9443111B2 (en) | Device security using an encrypted keystore data structure | |
EP3002698B1 (en) | Semiconductor device | |
US11003781B2 (en) | Root key processing method and associated device | |
US7461268B2 (en) | E-fuses for storing security version data | |
US20050021968A1 (en) | Method for performing a trusted firmware/bios update | |
US20090193211A1 (en) | Software authentication for computer systems | |
BRPI0822431B1 (pt) | Sistema de segurança de dados, método para segurança de dados e meio lido porcomputador | |
CN109445705B (zh) | 固件认证方法及固态硬盘 | |
US20210367781A1 (en) | Method and system for accelerating verification procedure for image file | |
CN111008390A (zh) | 根密钥生成保护方法、装置、固态硬盘及存储介质 | |
KR101988404B1 (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
US8499357B1 (en) | Signing a library file to verify a callback function | |
CN114065218B (zh) | 一种SoC系统芯片安全启动方法 | |
CN115062330B (zh) | 基于tpm的智能密码钥匙密码应用接口的实现方法 | |
KR20180007717A (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
CN114995918A (zh) | 基板管理控制器的启动方法、配置方法、装置及电子设备 | |
CN113486360B (zh) | 基于risc-v的安全启动方法及系统 | |
WO2016024967A1 (en) | Secure non-volatile random access memory | |
CN114448794A (zh) | 一种基于芯片可信根对固件进行安全升级的方法及装置 | |
CN106611108B (zh) | 一种光盘版权保护方法 | |
CN113032739A (zh) | 一种软件代码版权保护方法 |
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 | ||
GR01 | Patent grant |