一種嵌入式分區(qū)映像安全認證及內核可信引導方法及其設備的制造方法
【技術領域】
[0001]本發(fā)明屬于嵌入式系統(tǒng)安全領域,尤其涉及一種嵌入式分區(qū)映像安全認證及內核可信引導方法及其設備。
【背景技術】
[0002]嵌入式系統(tǒng)應用開發(fā)不同于PC機,其開發(fā)過程同時涉及軟硬件,需要將硬件平臺的設計、操作系統(tǒng)以及上層應用開發(fā)綜合考慮。由于應用和成本約束,嵌入式系統(tǒng)的硬件平臺需根據應用量身定制,通常所用的PMU、存儲器、外圍設備等有多種選擇余地,而且軟件調試技術特殊,使得嵌入式平臺的操作系統(tǒng)多樣化并且差異化比較大,但是各種嵌入式操作系統(tǒng)從上電到系統(tǒng)啟動完成的整個過程即嵌入式系統(tǒng)的引導和啟動過程基本是一致的,差別主要是體現在各個系統(tǒng)在這一系列過程中的具體操作,比如對某一硬件的初始化流程、對文件系統(tǒng)的操作方式等,而系統(tǒng)的裝載、執(zhí)行過程再無大的差別。對于嵌入式操作系統(tǒng)來說,如圖-1,其啟動過程大致可以劃分成三個階段,即系統(tǒng)引導過程、操作系統(tǒng)內核啟動過程、文件系統(tǒng)加載過程。
[0003]嵌入式系統(tǒng)的引導程序通常稱為Bootloader,類似于PC系統(tǒng)上的B1S。嵌入式系統(tǒng)的Bootloader—般由兩部分構成:第一部分是片上(SOC)及板級系統(tǒng)(BSP)初始化代碼,主要功能是通過設置MCU功能寄存器初始化各硬件單元初始工作模式,如設置時鐘、存儲器訪問時序、中斷控制寄存器等,完成內存映射,初始化MMU/MPU,初始化系統(tǒng)中斷向量表等;第二部分是加載嵌入式操作系統(tǒng)內核程序,其功能是將操作系統(tǒng)內核映像從只讀存儲器裝載或拷貝到系統(tǒng)RAM中,并跳轉到內核映像入口處繼續(xù)執(zhí)行然后將系統(tǒng)控制權交給操作系統(tǒng)。嵌入式操作系統(tǒng)是嵌入式系統(tǒng)加電運行后的資源管理(包括硬件及軟件資源)及調度平臺,負責嵌入式實時任務的管理。如圖-1基于以上兩部的引導和執(zhí)行,完成了系統(tǒng)引導及系統(tǒng)內核加載運行(注:嵌入式操作系統(tǒng)執(zhí)行環(huán)境的初始化代碼主要由硬件抽象層HAL代碼、設備驅動程序初始化代碼和操作系統(tǒng)執(zhí)行初始化代碼三部分構成)。操作系統(tǒng)加載運行后,將啟動文件系統(tǒng)加載,文件系統(tǒng)存儲了系統(tǒng)配置文件、系統(tǒng)程序、用戶應用程序和必需的驅動程序,文件系統(tǒng)和操作系統(tǒng)緊密相連,對文件系統(tǒng)的操作和管理都由操作系統(tǒng)來完成。如圖-2所示,嵌入式系統(tǒng)引導啟動是一個線性的過程,在這個過程中Bootloader扮演極其重要的角色,操作系統(tǒng)以及后面的應用程序都由他裝載并獲得執(zhí)行。在加載操作系統(tǒng)內核時有兩個必要條件,包括:操作系統(tǒng)內核入口地址;操作系統(tǒng)內核初始化參數。操作系統(tǒng)內核入口地址由Bootloader在裝載內核映像文件時根據映像文件的描述信息查找到其入口位置并記錄該位置相對起始的偏移量,然后在合適的時機直接跳轉到內核入口處開始執(zhí)行內核程序。Bootloader根據系統(tǒng)的啟動模式加載與模式相匹配的環(huán)境配置文件,然后生成內核執(zhí)行時所需要的初始化參數,在引導內核啟動時傳給操作系統(tǒng)內核。目前嵌入系統(tǒng)所使用的Bootloader不是由芯片廠商提供的就是使用開源的項目,正是由于Bootloader的開放性使得其很容易被有針對性地分析研宄,也即如果沒有安全機制的嵌入,則嵌入式系統(tǒng)或應用程序極有可能存在被惡意篡改、安裝后門等風險,給用戶的利益和安全帶來極大危害。為了盡量避免這種安全風險,目前各大廠商為了獲得獨有的系統(tǒng)價值、系統(tǒng)的穩(wěn)定運行、用戶信息安全等,采取的主要措施是對系統(tǒng)Bootloader加鎖。加鎖的Bootloader僅能引導原廠提供的固件,對任何第三方固件都不予識別,加鎖后的Bootloader雖然第三方不能更改Bootloader的行為,但是仍可以對系統(tǒng)的啟動過程進行監(jiān)聽分析,然后繞過Bootloader威脅系統(tǒng)安全。
[0004]Android系統(tǒng)作為當前較為流行和普及的系統(tǒng),其內含有的嵌入式系統(tǒng)啟動的一般次序為:系統(tǒng)上電;Bootloader引導;Linux內核啟動;Init初始化系統(tǒng)服務等。1、系統(tǒng)上電。Android系統(tǒng)的應用處理器上電復位后,將PC指針指向復位時的零地址(即啟動地址),從該地址讀出啟動程序的可執(zhí)行代碼直接運行或者將可執(zhí)行代碼與數據載入CPU內置的RAM中再運行。2.Bootloader引導。上電初始,DMA默認設置將存儲在NAND flash中第一頁的數據搬運到內部RAM中,然后設置PC到內部RAM的開始處的地址,開始執(zhí)行啟動代碼;在啟動代碼中設置中斷向量、硬件配置等;將執(zhí)行代碼搬運到外部SDRAM或DDR-RAM,留出啟動代碼的位置;將啟動代碼搬運SDRAM或DDR-RAM首址;設置remap,將O地址重新映射到SDRAM或DDR-RAM首地址;設置PC指針,開始執(zhí)行正式的執(zhí)行代碼。Bootloader引導主要任務就是對硬件設備進行初始化,建立內存空間映射圖,從而將系統(tǒng)的軟、硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核準備好環(huán)境。3.1inux內核啟動。Bootloader啟動后,系統(tǒng)啟動的控制權移父給kernel。Kernel啟動主要包括:初始化內核、初始化設備驅動、啟動內核、掛載文件系統(tǒng)和啟動用戶空間進程。Kernel初始化是對系統(tǒng)各個硬件設備進行配置工作。主要包括:創(chuàng)建異常向量表和初始化中斷處理函數;初始化系統(tǒng)核心進程調度器和時鐘中斷處理機制;初始化串口控制臺;創(chuàng)建和初始化系統(tǒng),cache為各內存調用機制提供緩存;初始化內存管理,檢測內存大小及被內核占用的內存情況;初始化系統(tǒng)的進程間通信機制。設備初始化主要是加載設備驅動。設備驅動加載有兩種方式:靜態(tài)加載和動態(tài)加載。靜態(tài)加載是將所有模塊的程序編譯到Iinux內核中,設備驅動在內核啟動中自動加載。以靜態(tài)方式工加載的設備驅動是無法卸載的。動態(tài)加載是指驅動作為模塊形式加載,設備驅動可以在系統(tǒng)啟動后任何時候通過命令加載或卸載。Kernel初始化及設備初始化完成后,會創(chuàng)建一個根設備,然后將根文件系統(tǒng)以只讀的方式掛載。根設備創(chuàng)建成功后,釋放未使用內存并轉換到真正的根上去,同時運行/sbin/init程序啟動系統(tǒng)第一個進程,此后系統(tǒng)啟動的控制權移交給init進程。4.1nit初始化系統(tǒng)服務。Init進程首先進行一系列的硬件初始化,然后通過命令行傳遞過來的參數掛載根文件系統(tǒng),最后init進程會執(zhí)行用戶定義的init啟動腳本。Init是所有Iinux系統(tǒng)進程的父進程,其進程ID為1,它負責系統(tǒng)的初始和啟動,倉Il建并運行系統(tǒng)中的關鍵進程,比如shell、login等,zygote進程就是由它所創(chuàng)建。
[0005]如圖3和4所示,目前的嵌入式系統(tǒng)分區(qū)一般包括:U-Boot、Boot、Ramdisk、Recovery、System、Userdata等,分區(qū)的內容僅包括對應的映像原始數據,無法對他們進行安全校驗。
[0006]綜合上述,在軟件方面,目前嵌入式系統(tǒng)或產品為存在很多入侵風險。嵌入式產品有數十種軟件體系結構和操作系統(tǒng),而這些軟件體系結構和操作系統(tǒng)的安全等級各小相同,用戶在與某個安全的嵌入式系統(tǒng)交互之前,必須經過一個認證過程來核實使用者身份。認證方案可能包括BOOTLOADER可信引導、操作系統(tǒng)認證(包括口令、生理特征(如指紋)或安全設置(如智能卡或密鑰等)等。
【發(fā)明內容】
[0007]本發(fā)明為了解決目前嵌入式系統(tǒng)引導和啟動的過程所產生的潛在安全問題,提供了一套對嵌入式系統(tǒng)的啟動過程進行多層加固,防止對系統(tǒng)BOOTLOADER、操作系統(tǒng)內核、文件系統(tǒng)數據或應用程序數據等進行惡意的劫持、篡改,以保護嵌入式設備的使用安全的基于安全硬件的全新嵌入式系統(tǒng)分區(qū)映像安全認證和操作系統(tǒng)內核可信引導方法。
[0008]本發(fā)明是技術方案:一種嵌入式分區(qū)映像安全認證及內核可信引導方法,基于Android系統(tǒng)的嵌入式設備平臺,在系統(tǒng)上電、系統(tǒng)Bootloader引導及內核加載啟動的安全可信上采取系統(tǒng)分區(qū)和內核驗證相結合的方式對系統(tǒng)進行安全加固。
[0009]優(yōu)選地,該方法對系統(tǒng)上電、Bootloader及內核分區(qū)Layout及部分加載域等按照特定規(guī)則做了安全加固及重構。
[0010]優(yōu)選地,該方法具體包括下述步驟:
[0011]I)實現系統(tǒng)上電及初始化階段,確保DMA/MMU/MPU/CACHE/DDR/JTAG系統(tǒng)存儲、處理器緩存及片上調試系統(tǒng)的物理隔離、系統(tǒng)訪問權限控制,避免入侵者通過物理技術在此階段”旁路攻擊”,總線探測,確保U-Boot分區(qū)不被惡意篡改;
[0012]2)實現U-Boot映像文件重新封裝,新的映像Layout定義了映像數據頭信息和數字簽名信息;
[0013]3)實現系統(tǒng)內核分區(qū)重構,重構后的內核映像包括映像數據頭、映像原始數據、加密后的部分映像加載域數據及數字簽名;
[001