CN110334524B - 基于二级密钥的soc启动方法及系统 - Google Patents
基于二级密钥的soc启动方法及系统 Download PDFInfo
- Publication number
- CN110334524B CN110334524B CN201910750048.7A CN201910750048A CN110334524B CN 110334524 B CN110334524 B CN 110334524B CN 201910750048 A CN201910750048 A CN 201910750048A CN 110334524 B CN110334524 B CN 110334524B
- Authority
- CN
- China
- Prior art keywords
- public key
- key
- primary
- bootloader
- signature
- 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
Images
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
- 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启动方法及系统,所述方法包括:加密步骤,基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;解密步骤,对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信。本发明通过一级密钥和二级密钥进行加密,可以更好地保护私钥,提高了SOC启动的安全性。
Description
技术领域
本发明涉及SOC启动技术领域,具体涉及一种基于二级密钥的SOC启动方法及系统。
背景技术
SOC安全启动是为了从源头上保证所有的启动代码都是可信的,一旦被篡改,应该能被检测到,从而拒绝运行被篡改的启动代码。
一般把启动代码分成三大块:片内固化启动代码、BootLoader(如UBOOT)和OS(如linux)。片内固化启动代码是固化在SOC内部的,本身就无法被篡改,所以它是可信的。片内固化启动代码负责认证BootLoader是否可信,如果可信,则跳转到BootLoader入口地址去执行,否则启动失败。如果BootLoader可信,则BootLoader负责认证OS是否可信,如果可信,则跳转到OS入口地址去执行,否则启动失败。
现有技术中NXP选择的安全启动方案是采用RSA(非对称性加解密算法)私钥对BootLoader和OS加密,公钥对BootLoader和OS认证。
具体的加密方案如下:
生成一对或者四对公钥私钥对;
对一个或四个公钥做SHA哈希计算,并将哈希值烧录到片内eFuse;
对BootLoader做哈希计算,并选择一个私钥对哈希值加密,作为BootLoader的签名,将公钥、签名、以及使用的公钥的索引都放在BootLoader的头部;
对OS做哈希计算,并选择一个私钥对哈希值加密,作为OS的签名,将公钥、签名、以及使用的公钥的索引都放在OS的头部。
最终生成的BootLoader和OS的格式参图1所示,对应的格式说明如表1所示:
表1:NXP安全启动中BootLoader/OS格式说明
编号 | 格式说明 |
1 | 一个或四个公钥 |
2 | BootLoader或者OS的签名 |
3 | 用于认证的公钥的索引,如果只有一个公钥,则为0 |
4 | BootLoader或者OS的原始代码 |
具体解密方案如下:
片内ROM启动代码读取BootLoader头部的公钥,并交给专门的IP模块对公钥做哈希计算,获得公钥哈希值hash1;
从eFuse中读取预烧录的公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,说明公钥有效,可以进行下一步认证;如果不一致,说明公钥无效,启动失败;
从BootLoader中读取签名、以及公钥索引,根据公钥索引选择公钥,并使用公钥解密,得到BootLoader的哈希值hash3;
读取完整的BootLoader,并交给专门的IP模块对BootLoader做哈希计算,得到哈希值hash4;
比较hash3和hash4是否一致,如果一致,说明BootLoader没有被篡改,可以跳转到BootLoader入口地址执行;如果不一致,说明BootLoader被篡改,启动失败;
BootLoader启动后,禁止从外部存储设备载入环境变量,同时禁止进入命令行,这主要是为了防止BootLoader的执行流被恶意篡改;
BootLoader采用跟片内ROM启动代码一样的方式,认证OS是否可信,如果可信,则跳转到OS入口地址执行;如果不可信,则启动失败。
现有技术中的安全启动方案具有以下缺点:
每次重新编译BootLoader和OS,都需要获取RSA私钥,这样容易导致私钥泄露。虽然私钥泄露后,可以将泄露的密钥对设置为失效,可是一旦4个密钥对都泄露,则没有手段保证系统安全;
需要专门的IP模块做哈希计算以及RSA解密,增加了SOC的复杂度以及成本;
不能从外部存储设备载入环境变量,也不能进入BootLoader命令行,灵活性较差。
因此,针对上述技术问题,有必要提供一种基于二级密钥的SOC启动方法及系统。
发明内容
有鉴于此,本发明的目的在于提供一种基于二级密钥的SOC启动方法及系统。
为了实现上述目的,本发明一实施例提供的技术方案如下:
一种基于二级密钥的SOC启动方法,所述方法包括:
加密步骤,基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密步骤,对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信。
作为本发明的进一步改进,所述BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;所述OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,所述证书包括一级公钥、二级密钥的签名及一级公钥的索引信息。
作为本发明的进一步改进,所述加密步骤具体包括:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对BootLoader做哈希计算,并选择一个二级私钥对哈希值加密,作为BootLoader签名;
将证书、二级公钥、BootLoader签名及二级公钥的索引信息作为BootLoader头部信息。
作为本发明的进一步改进,所述加密步骤具体包括:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对OS做哈希计算,并选择一个二级私钥对哈希值加密,作为OS签名;
将证书、二级公钥、OS签名及二级公钥的索引信息作为OS头部信息。
作为本发明的进一步改进,所述解密步骤具体包括:
从BootLoader头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从BootLoader头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从BootLoader头部信息读取BootLoader签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到BootLoader的哈希值hash5;
读取完整的BootLoader,并计算BootLoader的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则BootLoader是可信的,跳转到BootLoader入口地址去执行;如果不一致,则BootLoader不可信,启动失败。
作为本发明的进一步改进,所述解密步骤具体包括:
从OS头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从OS头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从OS头部信息读取OS签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到OS的哈希值hash5;
读取完整的OS,并计算OS的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则OS是可信的,跳转到OS入口地址去执行;如果不一致,则OS不可信,启动失败。
作为本发明的进一步改进,所述BootLoader头部信息及OS头部信息的证书中包括一个或四个一级公钥,BootLoader头部信息及OS头部信息中包括一个或四个二级公钥。
作为本发明的进一步改进,所述一级公钥为一个时,一级公钥的索引信息为0;所述二级公钥为一个时,二级公钥的索引信息为0。
作为本发明的进一步改进,所述方法还包括:
BootLoader从外部载入环境变量并进入命令行。
本发明另一实施例提供的技术方案如下:
一种基于二级密钥的SOC启动系统,所述系统包括:
加密单元,用于基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密单元,用于对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信。
本发明具有以下有益效果:
通过一级密钥和二级密钥进行加密,可以更好地保护私钥,提高了SOC启动的安全性;
允许BootLoader从外部载入环境变量并进入命令行,增加了BootLoader的灵活性;
软件加密机解密的方案减轻了SOC的复杂度,降低了成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中BootLoader/OS的格式示意图;
图2为本发明SOC启动方法的流程示意图;
图3为本发明SOC启动系统的模块示意图;
图4为本发明中BootLoader/OS的格式示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参图2所示,本发明公开了一种基于二级密钥的SOC启动方法,包括:
加密步骤,基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密步骤,对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信。
参图3所示,本发明还公开了一种基于二级密钥的SOC启动系统,包括:
加密单元,用于基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密单元,用于对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信。
参图4及表2所示,本发明中的BootLoader包括BootLoader头部信息及BootLoader的原始代码,OS信息包括OS头部信息及OS的原始代码,其中,BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,证书包括一级公钥、二级密钥的签名及一级公钥的索引信息。
表2:本发明中BootLoader/OS格式说明
以下对本发明中加密和解密分别进行详细说明。
SOC启动方法的加密步骤具体包括:
生成一对或四对一级密钥(公钥私钥对),一级密钥包括一级公钥和一级私钥;
再生成一对或四对二级密钥(公钥私钥对),二级密钥包括二级公钥和二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录,烧录到SOC内部存储固件(如电可编程熔丝eFuse)中,该固件硬件特定决定了它只能烧写一次;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书,证书发布给BootLoader和OS的开发人员;
对BootLoader做哈希计算,并选择一个二级私钥对哈希值加密,作为BootLoader签名;
将证书、二级公钥、BootLoader签名及二级公钥的索引信息作为BootLoader头部信息;
对OS做哈希计算,并选择一个二级私钥对哈希值加密,作为OS签名;
将证书、二级公钥、OS签名及二级公钥的索引信息作为OS头部信息。
需要注意的是,Bootloader和OS的一级密钥必须是一样的,二级密钥可以不一样,因为一级密钥的公钥的哈希值是存储在SOC内部无法修改的存储固件中的,该存储固件只能在启用安全启动时烧录一次,后续不能再次烧录。
从加密流程可以看到,一旦生成了证书,一级私钥就可以保存起来,BootLoader和OS的开发人员直接使用证书就可以了,这样一级私钥泄露的可能就大大降低了。
虽然每次编译BootLoader或者OS都要使用二级私钥,二级私钥泄露的风险偏高,可是一旦二级私钥全部泄露,可以生成新的二级密钥,生成并发布新的证书。
SOC启动方法的解密步骤具体包括:
片内ROM代码从BootLoader头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录在SOC内部存储固件仲的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从BootLoader头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从BootLoader头部信息读取BootLoader签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到BootLoader的哈希值hash5;
读取完整的BootLoader,并计算BootLoader的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则BootLoader是可信的,跳转到BootLoader入口地址去执行;如果不一致,则BootLoader不可信,启动失败。
本发明中的BootLoader可以从外部存储设备载入环境变量,也可以进入命令行,但是必须禁用其自带的启动命令,并添加新的安全启动命令。因为其自带的启动命令不带认证逻辑。
BootLoader采用跟片上ROM启动代码相同的逻辑认证OS,具体如下:
BootLoader从OS头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从OS头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从OS头部信息读取OS签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到OS的哈希值hash5;
读取完整的OS,并计算OS的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则OS是可信的,跳转到OS入口地址去执行;如果不一致,则OS不可信,启动失败。
以上的解密流程中,SHA哈希计算和RSA解密算法都由软件实现,不需要特定的安全IP模块参与,大大降低了SOC的复杂度以及成本,另一方面来说。
允许BootLoader从外部载入环境变量以及进入BootLoader命令行,这给了BootLoader很大的灵活性。同时为了保证OS可信,必须对BootLoader加入一些额外的限制,防止BootLoader跳过安全认证流程,直接启动不可信的OS。首先必须禁用BootLoader固有的启动命令,添加新的安全启动命令,新添加的安全启动命令,必须走安全认证流程。
由以上技术方案可以看出,本发明具有以下优点:
通过一级密钥和二级密钥进行加密,可以更好地保护私钥,提高了SOC启动的安全性;
允许BootLoader从外部载入环境变量并进入命令行,增加了BootLoader的灵活性;
软件加密机解密的方案减轻了SOC的复杂度,降低了成本。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (9)
1.一种基于二级密钥的SOC启动方法,其特征在于,所述方法包括:
加密步骤,基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密步骤,对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信;
所述BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;所述OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,所述证书包括一级公钥、二级密钥的签名及一级公钥的索引信息;
所述加密步骤具体包括:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对BootLoader做哈希计算,并选择一个二级私钥对哈希值加密,作为BootLoader签名;
将证书、二级公钥、BootLoader签名及二级公钥的索引信息作为BootLoader头部信息;
所述解密步骤具体包括:
从BootLoader头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从BootLoader头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从BootLoader头部信息读取BootLoader签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到BootLoader的哈希值hash5;
读取完整的BootLoader,并计算BootLoader的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则BootLoader是可信的,跳转到BootLoader入口地址去执行;如果不一致,则BootLoader不可信,启动失败。
2.根据权利要求1所述基于二级密钥的SOC启动方法,其特征在于,所述BootLoader头部信息及OS头部信息的证书中包括一个或四个一级公钥,BootLoader头部信息及OS头部信息中包括一个或四个二级公钥。
3.根据权利要求2所述基于二级密钥的SOC启动方法,其特征在于,所述一级公钥为一个时,一级公钥的索引信息为0;所述二级公钥为一个时,二级公钥的索引信息为0。
4.一种基于二级密钥的SOC启动方法,其特征在于,所述方法包括:
加密步骤,基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密步骤,对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信;
所述BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;所述OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,所述证书包括一级公钥、二级密钥的签名及一级公钥的索引信息;
所述加密步骤具体包括:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对OS做哈希计算,并选择一个二级私钥对哈希值加密,作为OS签名;
将证书、二级公钥、OS签名及二级公钥的索引信息作为OS头部信息;
所述解密步骤具体包括:
从OS头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从OS头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从OS头部信息读取OS签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到OS的哈希值hash5;
读取完整的OS,并计算OS的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则OS是可信的,跳转到OS入口地址去执行;如果不一致,则OS不可信,启动失败。
5.根据权利要求4所述基于二级密钥的SOC启动方法,其特征在于,所述BootLoader头部信息及OS头部信息的证书中包括一个或四个一级公钥,BootLoader头部信息及OS头部信息中包括一个或四个二级公钥。
6.根据权利要求5所述基于二级密钥的SOC启动方法,其特征在于,所述一级公钥为一个时,一级公钥的索引信息为0;所述二级公钥为一个时,二级公钥的索引信息为0。
7.根据权利要求4所述基于二级密钥的SOC启动方法,其特征在于,所述方法还包括:
BootLoader从外部载入环境变量并进入命令行。
8.一种基于二级密钥的SOC启动系统,其特征在于,所述系统包括:
加密单元,用于基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密单元,用于对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信;
所述BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;所述OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,所述证书包括一级公钥、二级密钥的签名及一级公钥的索引信息;
所述加密单元还用于:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对BootLoader做哈希计算,并选择一个二级私钥对哈希值加密,作为BootLoader签名;
将证书、二级公钥、BootLoader签名及二级公钥的索引信息作为BootLoader头部信息;
所述解密单元还用于:
从BootLoader头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从BootLoader头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从BootLoader头部信息读取BootLoader签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到BootLoader的哈希值hash5;
读取完整的BootLoader,并计算BootLoader的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则BootLoader是可信的,跳转到BootLoader入口地址去执行;如果不一致,则BootLoader不可信,启动失败。
9.一种基于二级密钥的SOC启动系统,其特征在于,所述系统包括:
加密单元,用于基于一级密钥和二级密钥,对BootLoader和OS进行加密,得到BootLoader头部信息和OS头部信息;
解密单元,用于对BootLoader头部信息和OS头部信息进行解密,验证一级密钥及二级密钥的有效性,并判定BootLoader和OS是否可信;
所述BootLoader头部信息包括证书、二级公钥、BootLoader签名及二级公钥的索引信息;所述OS头部信息包括证书、二级公钥、OS签名及二级公钥的索引信息;其中,所述证书包括一级公钥、二级密钥的签名及一级公钥的索引信息;
所述加密单元还用于:
生成一级密钥和二级密钥,一级密钥包括一级公钥和一级私钥,二级密钥包括二级公钥及二级私钥;
对一级公钥做哈希计算,并将哈希值进行烧录;
选定一个一级私钥,对二级公钥的哈希值加密,作为二级密钥的签名;
将一级公钥、二级密钥的签名以及一级公钥的索引信息打包作为证书;
对OS做哈希计算,并选择一个二级私钥对哈希值加密,作为OS签名;
将证书、二级公钥、OS签名及二级公钥的索引信息作为OS头部信息;
所述解密单元还用于:
从OS头部信息读取证书,并提取出证书中的一级公钥做哈希计算,得到一级公钥的哈希值hash1;
读取预烧录的一级公钥哈希值hash2;
比较hash1和hash2是否一致,如果一致,则一级公钥有效,可以进行下一步认证;如果不一致,则一级公钥无效,启动失败;
如果一级公钥有效,通过一级公钥认证二级公钥;
从证书中提取二级密钥的签名、及一级公钥的索引信息,通过一级公钥的索引信息选择一级公钥,并通过一级公钥解密,获取二级公钥的哈希值hash3;
从OS头部信息读取二级公钥,并计算其哈希值hash4;
比较hash3和hash4是否一致,如果一致,则二级公钥有效,进行下一步认证;如果不一致,则二级公钥无效,启动失败;
从OS头部信息读取OS签名、及二级公钥的索引信息,通过二级公钥的索引信息选择二级公钥,并通过二级公钥解密,得到OS的哈希值hash5;
读取完整的OS,并计算OS的哈希值hash6;
比较hash5和hash6是否一致,如果一致,则OS是可信的,跳转到OS入口地址去执行;如果不一致,则OS不可信,启动失败。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910198861 | 2019-03-15 | ||
CN2019101988618 | 2019-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110334524A CN110334524A (zh) | 2019-10-15 |
CN110334524B true CN110334524B (zh) | 2021-04-27 |
Family
ID=68149580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910750048.7A Active CN110334524B (zh) | 2019-03-15 | 2019-08-14 | 基于二级密钥的soc启动方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110334524B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573528A (zh) * | 2014-12-31 | 2015-04-29 | 湖南国科微电子有限公司 | 一种防拷贝Soc启动方法及芯片 |
CN104835537A (zh) * | 2015-05-13 | 2015-08-12 | 福州瑞芯微电子有限公司 | Soc芯片自适应启动方法及装置 |
CN109246110A (zh) * | 2018-09-18 | 2019-01-18 | 北京小米智能科技有限公司 | 数据共享方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090323971A1 (en) * | 2006-12-28 | 2009-12-31 | Munguia Peter R | Protecting independent vendor encryption keys with a common primary encryption key |
CN101676925B (zh) * | 2008-09-16 | 2011-04-27 | 联想(北京)有限公司 | 一种将认证信息置入安全芯片的方法及计算机系统 |
-
2019
- 2019-08-14 CN CN201910750048.7A patent/CN110334524B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573528A (zh) * | 2014-12-31 | 2015-04-29 | 湖南国科微电子有限公司 | 一种防拷贝Soc启动方法及芯片 |
CN104835537A (zh) * | 2015-05-13 | 2015-08-12 | 福州瑞芯微电子有限公司 | Soc芯片自适应启动方法及装置 |
CN109246110A (zh) * | 2018-09-18 | 2019-01-18 | 北京小米智能科技有限公司 | 数据共享方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110334524A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2728524C1 (ru) | Способ и устройство консенсусной верификации | |
EP3197089B1 (en) | Secure information configuration method, secure authentication method and related chip | |
CN111245597B (zh) | 密钥管理方法、系统及设备 | |
CN101976317B (zh) | 一种私有云计算应用中虚拟机镜像安全方法 | |
CN104657630A (zh) | 利用物理不可克隆功能的集成电路供应 | |
US20150012748A1 (en) | Method And System For Protecting Data | |
CN111680305A (zh) | 一种基于区块链的数据处理方法、装置及设备 | |
CN103530548B (zh) | 基于移动可信计算模块的嵌入式终端可信启动方法 | |
CN109523261B (zh) | 区块链终端的交易验证方法、相关装置及可读存储介质 | |
CN106295350B (zh) | 一种可信执行环境的身份验证方法、装置及终端 | |
CN104008342A (zh) | 一种通过bios和内核实现安全可信认证的方法 | |
KR20130008939A (ko) | 휴대 단말기에서 단말 고유 정보의 복제를 방지하는 장치 및 방법 | |
CN114499859A (zh) | 密码验证方法、装置、设备及存储介质 | |
CN112241523A (zh) | 一种嵌入式计算机开机身份认证方法 | |
CN112613033A (zh) | 一种可执行文件安全调用的方法及装置 | |
CN110334524B (zh) | 基于二级密钥的soc启动方法及系统 | |
CN115062330B (zh) | 基于tpm的智能密码钥匙密码应用接口的实现方法 | |
CN111327429A (zh) | 终端启动的处理方法和装置 | |
CN112733126B (zh) | 一种产品许可认证方法和系统 | |
US20220245286A1 (en) | Method for protecting device software integrity in continuity scenario | |
CN112243154B (zh) | 一种机顶盒安全启动方法、设备及介质 | |
CN111949996A (zh) | 安全私钥的生成方法、加密方法、系统、设备及介质 | |
CN111046440B (zh) | 一种安全区域内容的篡改验证方法及系统 | |
CN114329522A (zh) | 一种私钥保护方法、装置、系统及存储介质 | |
CN111967019A (zh) | 一种基于tee物联网安全启动实现方法 |
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 | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Unit 13 / 16, floor 4, building B, No. 5, Xinghan street, Suzhou Industrial Park, Suzhou, Jiangsu Province, 215000 Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |
|
CP03 | Change of name, title or address |