一种基于TrustZone的系统可信启动方法与流程

文档序号:14950973发布日期:2018-07-17 22:32阅读:310来源:国知局

本发明属于信息安全技术领域,具体涉及一种基于trustzone的系统可信启动方法。



背景技术:

在当今的信息时代,保护信息安全,提供一个可信赖的计算环境已经成为信息化的必然要求。随着恶意软件的快速演变,恶意软件正在将底层固件和启动程序作为首选攻击目标,对底层固件和启动程序进行攻击的病毒较难防御,所以保护系统启动过程的可信及安全性尤为重要。

现有的可信启动方面的技术基本上是基于外部的可信芯片或可信计算模块来布防整个可信启动的流程。如公布号为cn103927490a的中国专利《操作系统安全启动方法及装置》,利用可信平台模块来实现操作系统的安全启动。可信芯片或可信计算模块一方面带来了成本的增加,另一方面由于是独立于mcu存在的,外部的一些信号可以通过相关仪器进行探测,存在被破解的风险。



技术实现要素:

本发明在于为解决上述问题而提出一种基于trustzone的系统可信启动方法,该技术基于trustzone的可信启动是集成于arm架构的一种技术,整合在mcu(微控制器)之中。利用arm片上系统(soc)本身的硬件技术特点来布防系统的启动过程,确保系统加载启动的每一个组件都是授权验证过的组件,防止启动过程中系统组件被未授权的组件篡改或者替换的风险。

本发明一种基于trustzone的系统可信启动方法,是基于具有支持trustzone技术的系统,系统的设备至少包括存储器,存储器至少包括处于安全域的rom和ram,和处于普通域的存储器c,包括如下步骤:

s1:设备启动,进入s2;

s2:位于rom中的rom加载程序启动,进入s3;

s3:rom加载程序对操作系统引导程序进行加载验证,若验证通过则操作系统引导程序启动,具体包括如下步骤:

s31:分配一块安全域使用的ram空间,用来存储操作系统引导程序的镜像公钥和其中间摘要值,进入s32;

s32:对位于rom中的根秘钥进行验证,若验证通过则进入s33;

s33:对位于存储有镜像的存储器c中的操作系统引导程序的镜像进行加载验证,若验证通过则进入s4;

s4:操作系统引导程序对操作系统内核程序进行加载验证,若验证通过则操作系统内核程序启动。

进一步的,s32包括如下步骤:

s321:对根秘钥进行hash计算,得到根密钥摘要p′,进入s322;

s322:取出预先烧录到一次性只读存储器中的根密钥摘要p,和s321中得到的p′对比,若结果一致则验证通过。

进一步的,s33包括如下步骤:

s331:对操作系统引导程序的镜像信息进行加载验证,若验证通过则进入s332;

s332:加载操作系统引导程序的镜像证书和操作系统引导程序的镜像签名,用s32中已验证的根密钥去解密操作系统引导程序的镜像证书,获取操作系统引导程序的镜像公钥,并安装操作系统引导程序的镜像公钥到s31中分配的ram中,进入s333;

s333:用s332中获取的操作系统引导程序的镜像公钥解密操作系统引导程序的镜像签名获得操作系统引导程序的镜像摘要p1,进入s334;

s334:对操作系统引导程序的镜像进行hash计算,得到操作系统引导程序的镜像摘要p1′,将p1′与p1进行比对,若结果一致则操作系统引导程序的镜像验证通过。

进一步的,s4包括如下步骤:

s41:操作系统引导程序请求切换到安全域,进入s42;

s42:对位于存储器c中的操作系统内核镜像进行加载验证,其中用s31中分配的ram空间来存储操作系统内核镜像公钥和其中间摘要值;若验证通过进入s43;

s43:操作系统内核程序启动。

更进一步的,根密钥是rsa中的公钥。

本发明的有益效果是:

1.利用arm片上系统(soc)本身的硬件技术特点来布防系统的启动过程,不需额外的可信芯片或可信计算模块,没有相关的信号裸露在外面,降低了被破解的风险;

2.降低了电路设计的难度及产品成本;

3.确保系统加载启动的每一个组件都是授权验证过的组件,防止启动过程中系统组件被未授权的组件篡改或者替换的风险。

附图说明

图1为本发明的可信启动过程示意图;

图2为本实施例设备存储器分布及相应信息存储位置图;

图3为本实施例rom加载程序对uboot进行加载验证过程示意图;

图4为本实施例根密钥验证过程示意图;

图5为本实施例uboot镜像证书和uboot镜像签名验证过程示意图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

现结合附图和具体实施方式对本发明进一步说明。

本发明一种基于trustzone的系统可信启动方法,可应用于具有trustzone技术的多种系统,例如移动终端系统、电脑系统、车载系统等。如图1本发明方法的可信启动过程示意图所示,可信启动的过程从一个暗含可信的组件开始,即rom加载程序,rom加载程序是第一个被加载的程序,是位于soc的rom中,所有其他的组件在执行之前被验证。rom加载程序对操作系统引导程序进行加载验证,只有验证通过操作系统引导程序才能启动运行,验证过的操作系统引导程序在执行操作系统(os)内核程序之前同样需要进行验证,只有验证过了操作系统内核程序才能正常启动。利用arm片上系统(soc)本身的硬件技术特点来布防系统的启动过程,不需额外的可信芯片或可信计算模块,来确保系统加载启动的每一个组件都是授权验证过的组件,防止启动过程中系统组件被未授权的组件篡改或者替换的风险。本实施例以应用于车载系统来对本发明进行进一步说明。

本发明实施例提供了一种基于trustzone的系统可信启动方法,是基于具有支持trustzone技术的车载系统,车载系统中,arm片上系统(soc)本身的硬件技术特点是,硬件系统可分为处于安全域或者普通域两种状态,如图2基于trustzone的系统设备存储器分布及相应信息存储位置图所示,rom处于安全域,是系统中唯一不能被简单的重编程攻击修改和替换的组件,可信启动过程的基础,即rom加载程序,是位于soc的rom中,根密钥也是放在rom中的。ram中用来存储解密出来的uboot(这里使用uboot作为操作系统引导程序来作为说明,下文其他地方类似)镜像公钥和内核镜像公钥以及计算的中间摘要值等相关的敏感数据的这一块内存区域,也是处于安全域的,这块内存空间非安全域不能读写和访问。而用于存储uboot镜像和内核镜像的存储器c(实施例中以闪存作为说明),则处于普通域。本发明实施例包括如下步骤:

s1:设备启动,进入s2;

s2:位于rom中的rom加载程序启动,进入s3;

s3:rom加载程序对操作系统引导程序uboot进行加载验证,若验证通过则uboot启动,具体包括如下步骤:

s31:分配一块安全域使用的ram空间,用来存储uboot镜像公钥和其中间摘要值,进入s32;

s32:对位于rom中的根秘钥进行验证,若验证通过则进入s33;

s33:对位于闪存中的uboot镜像进行加载验证,若验证通过则进入s4;

s4:uboot对操作系统内核程序进行加载验证,若验证通过则操作系统内核程序启动。

具体地,启用基于trustzone的soc,上电之后是从安全域开始运行的,这样在普通域的软件有机会去修改系统的任何特性之前,就已经开启了安全防护。如图2所示,rom中程序是运行在安全域的,根密钥是放在rom中的。根密钥是基于rsa的非对称密钥对中的公钥,在出厂之前需要对根密钥进行hash计算得出根秘钥摘要p。在soc上的otp(一次性可编程)硬件,比如一次性只读存储器(实施例中用efuse进行说明),能够在设备出厂的时候用来存储根密钥公钥的摘要值p。

uboot镜像和os内核镜像是存储在flash(闪存)上的,烧录到flash中的uboot镜像和os内核镜像包含:镜像信息+原始镜像数据+镜像证书+镜像签名等数据。镜像信息用来描述镜像的一些基本信息,包括镜像类型,证书信息,签名信息。原始镜像数据是编译完之后的镜像,镜像证书被根密钥私钥加密过,需要根密钥公钥进行解密。对镜像信息和原始镜像数据进行hash计算产生一个摘要,在对该摘要用镜像私钥进行加密产生对应的镜像签名。

rom加载程序对uboot进行加载验证过程如图3所示,首先分配一块安全域使用的内存空间,这块内存空间非安全域不能读写和访问,这一块区域用来存储解密出来的uboot镜像公钥和内核镜像公钥以及计算的中间摘要值等相关的敏感数据。接着对根密钥进行验证,根密钥是rsa公钥是用来对下一级的镜像证书进行解密验证的。接着加载uboot镜像信息,对uboot镜像的格式进行验证,看是否是有效的uboot镜像,验证有效则根据uboot镜像信息去加载uboot镜像证书和uboot镜像签名,并用根密钥去解密uboot镜像证书获取uboot镜像公钥。最后使用uboot镜像公钥去解密uboot镜像签名,去做uboot的签名验证。

下面对这一过程中的一些主要环节进一步进行介绍。

具体的,s32对位于rom中的根秘钥进行验证包括如下步骤:

s321:对根秘钥进行hash计算,得到根密钥摘要p′,进入s322;

s322:取出efuse中存储的根密钥摘要p,和s321中得到的p′对比,若结果一致则验证通过。

如图4所示,如上文提到的初始的根密钥摘要p是设备出厂之前就烧录到efuse中的,如果efuse中存储的根密钥摘要p和通过hash计算得到的根密钥摘要p′一致则验证通过。否则出错退出。

具体地,s33对位于闪存中的uboot镜像进行加载验证包括如下步骤:

s331:对uboot镜像信息进行加载验证,若验证通过则进入s332;

s332:加载uboot镜像证书和uboot镜像签名,用s32中已验证的根密钥去解密uboot镜像证书获取uboot镜像公钥,并安装uboot镜像公钥到s31中分配的ram中,进入s333;

s333:用s332中获取的uboot镜像公钥解密uboot镜像签名获得uboot镜像摘要p1,进入s334;

s334:对uboot镜像进行hash计算,得到uboot镜像摘要p1′,将p1′与p1进行比对,若结果一致则uboot镜像验证通过。

如图5所示,根密钥验证成功之后加载uboot镜像信息,并验证相应信息的合法性。如果验证通过,则用根密钥去解密uboot镜像证书,并安装uboot镜像公钥到安全域的ram中。最后用uboot镜像公钥解密uboot镜像签名获得uboot镜像摘要p1和用hash直接计算出的uboot镜像摘要p1′进行比对,如果结果一致则签名验证成功。否则出错退出。

具体地,s4uboot对操作系统内核程序进行加载验证,若验证通过则操作系统内核程序启动包括如下步骤:

s41:uboot请求切换到安全域,进入s42;

s42:对位于闪存中的操作系统内核镜像进行加载验证,其中用s31中分配的ram空间来存储操作系统内核镜像公钥和其中间摘要值;若验证通过进入s43;

s43:操作系统内核程序启动。

os内核镜像的验证过程和uboot镜像的验证过程类似。在uboot执行os内核镜像程序之前,请求切换到安全域,然后执行os内核镜像信息加载验证,os内核镜像证书解密获得os内核镜像公钥并进行os内核镜像公钥安装,os内核镜像签名验证等过程。这三个过程和uboot镜像加载验证过程一致,这里不再细述。

本发明一种基于trustzone的系统可信启动方法,利用arm片上系统(soc)本身的硬件技术特点来布防系统的启动过程,不需额外的可信芯片或可信计算模块,没有相关的信号裸露在外面,降低了被破解的风险;降低了电路设计的难度及产品成本;确保系统加载启动的每一个组件都是授权验证过的组件,防止启动过程中系统组件被未授权的组件篡改或者替换的风险。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1