一种嵌入式设备的高安验证方法及装置制造方法

文档序号:6508909阅读:234来源:国知局
一种嵌入式设备的高安验证方法及装置制造方法
【专利摘要】本发明属于嵌入式设备【技术领域】,尤其涉及一种嵌入式设备的高安验证方法及装置。本发明所述的方法用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
【专利说明】一种嵌入式设备的高安验证方法及装置
【技术领域】
[0001]本发明属于嵌入式设备【技术领域】,尤其涉及一种嵌入式设备的高安验证方法及装置。
【背景技术】
[0002]嵌入式设备的操作系统为嵌入式系统,嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的“器件”。嵌入式处理器主要由一个单片机或微控制器(MCU)组成。相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通讯设备、IC卡或信用卡的读取设备等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。
[0003]在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行的一段引导加载程序,其可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。BootLoader程序的主要运行任务就是将内核映象从硬盘读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
[0004]目前,大部分嵌入式设备没有安全BootLoader,一小部分芯片可能有安全BootLoader,但是这些BootLoader对flash的业务应用数据都是整片验证,或者高级一点的是分区是固定的,BootLoader对固定的分区验证,BootLoader需要了解部分业务逻辑,对业务应用有一定的限制,不利于升级。

【发明内容】

[0005]鉴于此,本发明提供一种嵌入式设备的高安验证方法及装置。本发明所述的方法用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
[0006]本发明技术方案:
[0007]—种嵌入式设备的高安验证方法,所述方法包括:
[0008]安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序;
[0009]Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区;
[0010]Bootloader程序对所述需要启动的应用程序分区进行独立验证。
[0011]进一步地,所述Bootloader程序和应用程序以分区形式存储在flash闪存。[0012]进一步地,所述flash闪存包括的分区有=Bootloader分区、分区表分区、分区表备份分区和应用程序分区,其中Bootloader分区用于存储Bootloader程序,分区表分区用于存储分区表,分区表备份分区用于存储备份分区表,应用程序分区用于存储应用程序,包括可启动分区和不可启动分区。
[0013]进一步地,所述Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区,包括:
[0014]Bootloader程序读取分区表,找到需要启动的可启动分区;
[0015]Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区;
[0016]所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区。
[0017]进一步地,所述Bootloader程序读取分区表,找到需要启动的可启动分区包括:
[0018]Bootloader程序读取分区表,顺序查找可启动分区;
[0019]判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区;
[0020]在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否则,所述标记的第一个可启动分区为需要启动的可启动分区。
[0021]一种嵌入式设备的高安验证装置,所述装置包括:
[0022]第一验证单元,用于安全芯片的BootRom程序验证Bootloader程序并启动Bootloader 程序;
[0023]需要启动的应用程序分区确定单元,用于Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区;
[0024]第二验证单元,用于Bootloader程序对所述需要启动的应用程序分区进行独立验证。
[0025]进一步地,所述Bootloader程序和应用程序以分区形式存储在flash闪存。
[0026]进一步地,所述flash闪存包括的分区有=Bootloader分区、分区表分区、分区表备份分区和应用程序分区,其中Bootloader分区用于存储Bootloader程序,分区表分区用于存储分区表,分区表备份分区用于存储备份分区表,应用程序分区用于存储应用程序、包括可启动分区和不可启动分区。
[0027]进一步地,所述需要启动的应用程序分区确定单元还包括:
[0028]第一寻找单元,用于Bootloader程序读取分区表,找到需要启动的可启动分区;
[0029]第二寻找单元,用于Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区;
[0030]确定单元,所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区。
[0031]进一步地,所述第一寻找单元还包括:
[0032]第一查找单元,用于Bootloader程序读取分区表,顺序查找可启动分区;
[0033]判断单元,用于判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区;
[0034]第二查找单元,用于在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否则,所述标记的第一个可启动分区为需要启动的可启动分区。
[0035]本发明有益效果:
[0036]本发明所述的方法包括:安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序;Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区Jootloader程序对所述需要启动的应用程序分区进行独立验证。本发明通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
【专利附图】

【附图说明】
[0037]图1是本发明一种嵌入式设备的高安验证方法的一流程图;
[0038]图2是本发明一种嵌入式设备的高安验证方法中flash分区存储示意图;
[0039]图3是本发明一种嵌入式设备的高安验证方法中分区表的数据格式;
[0040]图4是本发明一种嵌入式设备的高安验证方法的另一流程图;
[0041]图5是本发明一种嵌入式设备的高安验证方法中可启动分区的镜像格式;
[0042]图6是本发明一种嵌入式设备的高安验证方法中应用程序分区具体被签名的格式;
[0043]图7是本发明一种嵌入式设备的高安验证装置的一框图;
[0044]图8是本发明一种嵌入式设备的高安验证装置的另一框图。
【具体实施方式】
[0045]为了更清楚地说明本发明的技术方案,下面结合附图对本发明作进一步详细的说明。
[0046]实施例一
[0047]参见图1,一种嵌入式设备的高安验证方法,所述方法包括:
[0048]S101、安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序;
[0049]S102、Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区;
[0050]S103、Bootloader程序对所述需要启动的应用程序分区进行独立验证。
[0051]本发明所述的方法用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
[0052]实施例二
[0053]在介绍嵌入式设备的高安验证方法的具体细节之前,先介绍一下嵌入式设备中flash闪存的分区存储。参见图2,flash闪存包括的分区有=Bootloader分区、分区表分区、分区表备份分区和应用程序分区;
[0054]其中,Bootloader分区用于存储Bootloader程序,Bootloader分区的大小为自定义的,定义好之后写到flash上就为固定了,Bootloader分区的起始地址为flash的起始地址,分区大小固定;
[0055]其中,分区表分区用于存储分区表,分区表包含的主要信息有:应用程序分区的名称、应用程序分区的签名、应用程序分区的起始地址、应用程序分区的大小、应用程序分区的属性等。分区表的数据格式具体参见图3表格。分区表分区的起始地址在Bootloader分区之后,分区的大小为自定义的,定义好之后写到flash上就为固定了 ;当后面应用程序分区发生变化时,分区表内的数据也随之发生变化。
[0056]其中,分区表备份分区用于存储备份分区表,分区表统计了应用程序分区的重要信息,Bootloader程序在验证应用程序时,需要从分区表中找到需要启动的可启动分区,所以分区表很重要的,需要做备份,分区表备份是对分区表的复制,其随着分区表的变化而变化。分区表备份分区的起始地址在分区表分区之后,分区的大小为自定义的,定义好之后写到flash上就为固定了 ;当分区表发生变化时,备份分区表也随之发生变化。
[0057]其中,应用程序分区用于存储应用程序,包括可启动分区和不可启动分区。应用程序分区大小不固定,当应用程序分区发生变化时,分区表内的数据也随之发生变化。
[0058]这种嵌入式设备中flash闪存的分区存储,为应用程序的数据升级提供灵活的机制,升级时对应用程序的操作,如增、删、改应用程序分区及应用程序分区重新排序,只需要调整应用程序分区表即可,bootloader不需要升级。例如:当前版本为1.0,分为3个分区,STB_APP分区、Updater分区、Data分区,如下:
[0059]STB_APP 分区:起始地址为 0x100000,长度为 0x4000000
[0060]Updater 分区:起始地址为 0x4100000,长度为 0x4000000
[0061]Data分区:起始地址为0x8100000,长度为0x2000000
[0062]现在升级成版本2.0,增加一个分区MediaPlayer分区,长度为0x2000000,减少Updater分区长度到0x2000000,如下:
[0063]STB_APP 分区:起始地址为 0x100000,长度为 0x4000000
[0064]MediaPlayer 分区:起始地址为 0x4100000,长度为 0x2000000
[0065]Updater 分区:起始地址为 0x6100000,长度为 0x2000000
[0066]Data分区:起始地址为0x8100000,长度为0x2000000
[0067]升级过程中,Bootloader不需要升级,只升级相关部分,比如STB_APP分区和Data分区都不需要改变,这种应用程序数据和其他数据统一集中以分区形式管理的方式,使得修改部分数据不用像过去需要整个flash都要重新升级,使得应用程序的升级和应用程序分区的操作更加灵活。
[0068]以下介绍一种嵌入式设备的高安验证方法:参见图4,一种嵌入式设备的高安验证方法,所述方法包括:
[0069]S201、安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序;
[0070]步骤S201中,安全芯片是经过永新视博认证的安全芯片,安全芯片可以是嵌入式处理器内的一个模块,也可以是单独与嵌入式处理器的一个芯片。BootRom程序是存储在安全芯片内的一程序,其作用是用来验证Bootloader程序的合法性。Bootloader程序存储在flash闪存上,是经过认证中心签名认证过的;B00tR0m程序代码中预埋认证中心的公钥,嵌入式设备在上电或复位后从安全芯片的BootRom程序开始执行。BootRom程序启动,将存储在flash闪存上的Bootloader程序读到安全芯片的内存中,使用BootRom程序代码中预埋的认证中心的公钥来验证Bootloader程序是否合法,当验证Bootloader程序合法时,BootRom程序会将存储在flash闪存上的Bootloader程序加载到嵌入式设备的RAM中,并将程序的执行进程跳到RAM中Bootloader程序的执行位置处,运行Bootloader程序。这个验证操作是在安全芯片中由BootRom完成的,BootRom程序是安全芯片的固化代码,不可更改,外部黑客程序无法篡改代替。
[0071]S202、Bootloader程序读取分区表,顺序查找可启动分区;
[0072]步骤S202中,Bootloader程序读取分区表,顺序查找可启动分区,参见图3分区表数据格式的表格,其中的“data_type”表示镜像类型,当data_type=l时,表示与此data_type对应的“name”分区为可启动分区;当data_type=0时,表示与此data_type对应的“name”分区为不可启动分区。Bootloader程序按顺序读取分区表,根据“data_type”的直,查找可启动分区。
[0073]S203、判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区;
[0074]S204、在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否贝U,所述标记的第一个可启动分区为需要启动的可启动分区;
[0075]步骤S204中,当Bootloader程序查找到多个可启动分区时,需要在这多个可启动分区里做进一步的筛选,筛选的条件是:参见图3分区表数据格式的表格,其中的“dynamic_attribute”表不镜像动态属性,当 dynamic_attribute 的 Bitl5 位为 “I” 时,表示与此对应的“name”分区为首选启动分区;当dynamic_attribute的Bitl5位为“O”时,表示与此对应的“name”分区为非首选启动分区。在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,当有多个首选启动分区时,则按顺序查找到的第一个为需要启动的可启动分区;当没有查找到首选启动分区时,则步骤S203中标记的第一个可启动分区为需要启动的可启动分区。
[0076]步骤S202、S203、S204为:Bootloader程序读取分区表,找到需要启动的可启动分区的具体过程。
[0077]S205、Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区;
[0078]步骤S205中,参见图5所示的可启动分区的镜像格式,有“Ptname_data”可找到与所述需要启动的可启动分区相关联的所有应用程序分区。
[0079]S206、所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区;
[0080]步骤S205、S206为:Bootloader确定需要启动的应用程序分区的具体过程。
[0081]S207、Bootloader程序对所述需要启动的应用程序分区进行独立验证。
[0082]步骤S207中,存储在flash闪存上的,以分区形式存储的应用程序都是经过CA认证中心签名认证的,应用程序分区具体被签名的格式,参见图6所示的表格。在找到需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区之后,Bootloader程序会依次分别验证所述需要启动的可启动分区和所述相关联的所有应用程序分区。
[0083]Bootloader程序根据某一个应用,只验证需要启动的可启动分区和与该需要启动的可启动分区相关联的分区,从而减少了对不相干分区签名的验证,提高了验证的效率。
[0084]综上,本发明所述的方法用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明通过两道合法性验证保证了嵌入式设备的安全性Jootloader程序根据某一个应用,只验证需要启动的可启动分区和与该需要启动的可启动分区相关联的分区,减少了对不相干分区签名的验证,提高了验证的效率;分区表的设计为数据升级提供了更为灵活的机制,升级时对flash的操作只需要调整分区表即可,Bootloader程序不需要升级。
[0085]实施例三
[0086]参见图7,一种嵌入式设备的高安验证装置,所述装置包括:
[0087]第一验证单元101,用于安全芯片的BootRom程序验证Bootloader程序并启动Bootloader 程序;
[0088]需要启动的应用程序分区确定单元102,用于Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区;
[0089]第二验证单元103,用于Bootloader程序对所述需要启动的应用程序分区进行独立验证。
[0090]本发明所述的装置用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明所述的装置通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
[0091]实施例四
[0092]参见图8,一种嵌入式设备的高安验证装置,所述装置包括:
[0093]第一验证单元201,用于安全芯片的BootRom程序验证Bootloader程序并启动Bootloader 程序;
[0094]需要启动的应用程序分区确定单元202,用于Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区;
[0095]需要启动的应用程序分区确定单元202包括:
[0096]第一寻找单元2021,用于Bootloader程序读取分区表,找到需要启动的可启动分区;
[0097]第二寻找单元2022,用于Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区;
[0098]确定单元2023,所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区;
[0099]所述第一寻找单元2021包括:[0100]第一查找单元20211,用于Bootloader程序读取分区表,顺序查找可启动分区;
[0101]判断单元20212,用于判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区;
[0102]第二查找单元20213,用于在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否则,所述标记的第一个可启动分区为需要启动的可启动分区;
[0103]第二验证单元203,用于Bootloader程序对所述需要启动的应用程序分区进行独立验证;
[0104]本发明所述的装置用安全芯片的BootRom程序来验证Bootloader程序自身的合法性,在Bootloader程序自身被验证合法之后,Bootloader程序读取分区表以确定需要启动的应用程序分区,Bootloader程序对所述需要启动的应用程序分区进行独立验证。本发明所述的装置通过两道合法性验证保证了嵌入式设备的安全性,对应用程序分区进行独立验证提高了验证的效率,分区表为数据升级提供了更为灵活的机制。
[0105]以上结合具体实施例描述了本发明的技术原理,这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它【具体实施方式】,这些方式都将落入本发明的保护范围之内。
【权利要求】
1.一种嵌入式设备的高安验证方法,其特征在于,所述方法包括: 安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序; Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区; Bootloader程序对所述需要启动的应用程序分区进行独立验证。
2.根据权利要求1所述的一种嵌入式设备的高安验证方法,其特征在于,所述Bootloader程序和应用程序以分区形式存储在flash闪存。
3.根据权利要求2所述的一种嵌入式设备的高安验证方法,其特征在于,所述flash闪存包括的分区有=Bootloader分区、分区表分区、分区表备份分区和应用程序分区,其中Bootloader分区用于存储Bootloader程序,分区表分区用于存储分区表,分区表备份分区用于存储备份分区表,应用程序分区用于存储应用程序,包括可启动分区和不可启动分区。
4.根据权利要求3所述的一种嵌入式设备的高安验证方法,其特征在于,所述Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区,包括: Bootloader程序读取分区表,找到需要启动的可启动分区; Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区; 所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区。
5.根据权利要求4所述的一种嵌入式设备的高安验证方法,其特征在于,所述Bootloader程序读取分区表,找到需要启动的可启动分区包括: Bootloader程序读取分区表,顺序查找可启动分区; 判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区; 在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否则,所述标记的第一个可启动分区为需要启动的可启动分区。
6.一种嵌入式设备的高安验证装置,其特征在于,所述装置包括: 第一验证单元,用于安全芯片的BootRom程序验证Bootloader程序并启动Bootloader程序; 需要启动的应用程序分区确定单元,用于Bootloader程序读取分区表,根据所述分区表确定需要启动的应用程序分区; 第二验证单元,用于Bootloader程序对所述需要启动的应用程序分区进行独立验证。
7.根据权利要求6所述的一种嵌入式设备的高安验证装置,其特征在于,所述Bootloader程序和应用程序以分区形式存储在flash闪存。
8.根据权利要求7所述的一种嵌入式设备的高安验证装置,其特征在于,所述flash闪存包括的分区有=Bootloader分区、分区表分区、分区表备份分区和应用程序分区,其中Bootloader分区用于存储Bootloader程序,分区表分区用于存储分区表,分区表备份分区用于存储备份分区表,应用程序分区用于存储应用程序、包括可启动分区和不可启动分区。
9.根据权利要求8所述的一种嵌入式设备的高安验证装置,其特征在于, 所述需要启动的应用程序分区确定单元还包括:第一寻找单元,用于Bootloader程序读取分区表,找到需要启动的可启动分区;第二寻找单元,用于Bootloader程序根据所述需要启动的可启动分区的镜像格式,找到与所述需要启动的可启动分区相关联的所有应用程序分区; 确定单元,所述需要启动的可启动分区和与所述需要启动的可启动分区相关联的所有应用程序分区为需要启动的应用程序分区。
10.根据权利要求9所述的一种嵌入式设备的高安验证装置,其特征在于, 所述第一寻找单元还包括: 第一查找单元,用于Bootloader程序读取分区表,顺序查找可启动分区; 判断单元,用于判断有无查找到可启动分区,如果有,则标记查找到的第一个可启动分区并按顺序筛选出所有可启动分区; 第二查找单元,用于在所述按顺序筛选出的所有可启动分区中,顺序查找首选启动分区,如果查找到首选启动分区,则该查找到的首选启动分区为需要启动的可启动分区,并结束查找;否则,所 述标记的第一个可启动分区为需要启动的可启动分区。
【文档编号】G06F21/44GK103455750SQ201310376273
【公开日】2013年12月18日 申请日期:2013年8月26日 优先权日:2013年8月26日
【发明者】赵化军, 王天星, 王文军, 李伟东, 李红艳 申请人:北京视博数字电视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1