一种嵌入式分区映像安全认证及内核可信引导方法及其设备技术

技术编号:11757832 阅读:270 留言:0更新日期:2015-07-22 11:26
本发明专利技术公开了一种嵌入式分区映像安全认证及内核可信引导方法,基于Android系统的嵌入式设备平台,在系统上电、系统Bootloader引导及内核加载启动的安全可信上采取系统分区和内核验证相结合的方式对系统进行安全加固。该方法对系统上电、Bootloader及内核分区Layout及部分加载域等按照特定规则做了安全加固及重构。本发明专利技术提供了一套新的基于安全硬件的嵌入式系统分区映像安全认证和操作系统内核可信引导方法,对嵌入式系统的启动过程进行多层加固,防止对系统BOOTLOADER、操作系统内核、文件系统数据或应用程序数据等进行恶意的劫持、篡改,以保护嵌入式设备的使用安全。

【技术实现步骤摘要】

本专利技术属于嵌入式系统安全领域,尤其涉及一种嵌入式分区映像安全认证及内核可信引导方法及其设备
技术介绍
嵌入式系统应用开发不同于PC机,其开发过程同时涉及软硬件,需要将硬件平台的设计、操作系统以及上层应用开发综合考虑。由于应用和成本约束,嵌入式系统的硬件平台需根据应用量身定制,通常所用的PMU、存储器、外围设备等有多种选择余地,而且软件调试技术特殊,使得嵌入式平台的操作系统多样化并且差异化比较大,但是各种嵌入式操作系统从上电到系统启动完成的整个过程即嵌入式系统的引导和启动过程基本是一致的,差别主要是体现在各个系统在这一系列过程中的具体操作,比如对某一硬件的初始化流程、对文件系统的操作方式等,而系统的装载、执行过程再无大的差别。对于嵌入式操作系统来说,如图-1,其启动过程大致可以划分成三个阶段,即系统引导过程、操作系统内核启动过程、文件系统加载过程。嵌入式系统的引导程序通常称为Bootloader,类似于PC系统上的B1S。嵌入式系统的Bootloader—般由两部分构成:第一部分是片上(SOC)及板级系统(BSP)初始化代码,主要功能是通过设置MCU功能寄存器初始化各硬件单元初始工作模式,如设置时钟、存储器访问时序、中断控制寄存器等,完成内存映射,初始化MMU/MPU,初始化系统中断向量表等;第二部分是加载嵌入式操作系统内核程序,其功能是将操作系统内核映像从只读存储器装载或拷贝到系统RAM中,并跳转到内核映像入口处继续执行然后将系统控制权交给操作系统。嵌入式操作系统是嵌入式系统加电运行后的资源管理(包括硬件及软件资源)及调度平台,负责嵌入式实时任务的管理。如图-1基于以上两部的引导和执行,完成了系统引导及系统内核加载运行(注:嵌入式操作系统执行环境的初始化代码主要由硬件抽象层HAL代码、设备驱动程序初始化代码和操作系统执行初始化代码三部分构成)。操作系统加载运行后,将启动文件系统加载,文件系统存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序,文件系统和操作系统紧密相连,对文件系统的操作和管理都由操作系统来完成。如图-2所示,嵌入式系统引导启动是一个线性的过程,在这个过程中Bootloader扮演极其重要的角色,操作系统以及后面的应用程序都由他装载并获得执行。在加载操作系统内核时有两个必要条件,包括:操作系统内核入口地址;操作系统内核初始化参数。操作系统内核入口地址由Bootloader在装载内核映像文件时根据映像文件的描述信息查找到其入口位置并记录该位置相对起始的偏移量,然后在合适的时机直接跳转到内核入口处开始执行内核程序。Bootloader根据系统的启动模式加载与模式相匹配的环境配置文件,然后生成内核执行时所需要的初始化参数,在引导内核启动时传给操作系统内核。目前嵌入系统所使用的Bootloader不是由芯片厂商提供的就是使用开源的项目,正是由于Bootloader的开放性使得其很容易被有针对性地分析研宄,也即如果没有安全机制的嵌入,则嵌入式系统或应用程序极有可能存在被恶意篡改、安装后门等风险,给用户的利益和安全带来极大危害。为了尽量避免这种安全风险,目前各大厂商为了获得独有的系统价值、系统的稳定运行、用户信息安全等,采取的主要措施是对系统Bootloader加锁。加锁的Bootloader仅能引导原厂提供的固件,对任何第三方固件都不予识别,加锁后的Bootloader虽然第三方不能更改Bootloader的行为,但是仍可以对系统的启动过程进行监听分析,然后绕过Bootloader威胁系统安全。Android系统作为当前较为流行和普及的系统,其内含有的嵌入式系统启动的一般次序为:系统上电;Bootloader引导;Linux内核启动;Init初始化系统服务等。1、系统上电。Android系统的应用处理器上电复位后,将PC指针指向复位时的零地址(即启动地址),从该地址读出启动程序的可执行代码直接运行或者将可执行代码与数据载入CPU内置的RAM中再运行。2.Bootloader引导。上电初始,DMA默认设置将存储在NAND flash中第一页的数据搬运到内部RAM中,然后设置PC到内部RAM的开始处的地址,开始执行启动代码;在启动代码中设置中断向量、硬件配置等;将执行代码搬运到外部SDRAM或DDR-RAM,留出启动代码的位置;将启动代码搬运SDRAM或DDR-RAM首址;设置remap,将O地址重新映射到SDRAM或DDR-RAM首地址;设置PC指针,开始执行正式的执行代码。Bootloader引导主要任务就是对硬件设备进行初始化,建立内存空间映射图,从而将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好环境。3.1inux内核启动。Bootloader启动后,系统启动的控制权移父给kernel。Kernel启动主要包括:初始化内核、初始化设备驱动、启动内核、挂载文件系统和启动用户空间进程。Kernel初始化是对系统各个硬件设备进行配置工作。主要包括:创建异常向量表和初始化中断处理函数;初始化系统核心进程调度器和时钟中断处理机制;初始化串口控制台;创建和初始化系统,cache为各内存调用机制提供缓存;初始化内存管理,检测内存大小及被内核占用的内存情况;初始化系统的进程间通信机制。设备初始化主要是加载设备驱动。设备驱动加载有两种方式:静态加载和动态加载。静态加载是将所有模块的程序编译到Iinux内核中,设备驱动在内核启动中自动加载。以静态方式工加载的设备驱动是无法卸载的。动态加载是指驱动作为模块形式加载,设备驱动可以在系统启动后任何时候通过命令加载或卸载。Kernel初始化及设备初始化完成后,会创建一个根设备,然后将根文件系统以只读的方式挂载。根设备创建成功后,释放未使用内存并转换到真正的根上去,同时运行/sbin/init程序启动系统第一个进程,此后系统启动的控制权移交给init进程。4.1nit初始化系统服务。Init进程首先进行一系列的硬件初始化,然后通过命令行传递过来的参数挂载根文件系统,最后init进程会执行用户定义的init启动脚本。Init是所有Iinux系统进程的父进程,其进程ID为1,它负责系统的初始和启动,仓Il建并运行系统中的关键进程,比如shell、login等,zygote进程就是由它所创建。如图3和4所示,目前的嵌入式系统分区一般包括:U-Boot、Boot、Ramdisk、Recovery、System、Userdata等,分区的内容仅包括对应的映像原始数据,无法对他们进行安全校验。综合上述,在软件方面,目前嵌入式系统或产品为存在很多入侵风险。嵌入式产品有数十种软件体系结构和操作系统,而这些软件体系结构和操作系统的安全等级各小相同,用户在与某个安全的嵌入式系统交互之前,必须经过一个认证过程来核实使用者身份。认证方案可能包括BOOTLOADER可信引导、操作系统认证(包括口令、生理特征(如指纹)或安全设置(如智能卡或密钥等)等。
技术实现思路
本专利技术为了解决目前嵌入式系统引导和启动的过程所产生的潜在安全问题,提供了一套对嵌入式系统的启动过程进行多层加固,防止对系统BOOTLOADER、操作系统内核、文件系统数据或应用程本文档来自技高网
...
一种嵌入式分区映像安全认证及内核可信引导方法及其设备

【技术保护点】
一种嵌入式分区映像安全认证及内核可信引导方法,其特征在于:该方法基于Android系统的嵌入式设备平台,在系统上电、系统Bootloader引导及内核加载启动的安全可信上采取系统分区和内核验证相结合的方式对系统进行安全加固。

【技术特征摘要】

【专利技术属性】
技术研发人员:毛伟信徐礼定
申请(专利权)人:杭州字节信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1