国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NAND Flash的CPU安全啟動設(shè)計(jì)與實(shí)現(xiàn)*

2022-06-23 03:09張劍鋒
關(guān)鍵詞:固件代碼啟動

龔 銳,石 偉,劉 威,張劍鋒,王 蕾

(國防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長沙 410073)

1 引言

嵌入式系統(tǒng)中,一般需要多種不同的非易失存儲介質(zhì),用于存儲代碼和數(shù)據(jù)。這些非易失存儲介質(zhì)包括EEPROM、NOR Flash和NAND Flash等。其中,NOR Flash具有穩(wěn)定可靠的特點(diǎn),并且具備直接執(zhí)行XIP(Execute In Place)的優(yōu)勢,可以通過控制器將其內(nèi)部地址直接映射成CPU可直接訪問的地址,從而使得存儲其中的代碼可以直接執(zhí)行。但是,NOR Flash容量較小,所以一般用于存儲可執(zhí)行的啟動代碼。

相對于NOR Flash,NAND Flash具有更大的存儲容量和更快的寫入速度,因此一般作為大容量的存儲設(shè)備使用。但是,NAND Flash的器件特性導(dǎo)致其出廠時就有一定的壞塊存在,并且在使用過程中,也可能由于反復(fù)擦寫出現(xiàn)壞塊。因此,使用NAND Flash時,需要首先加載驅(qū)動,由驅(qū)動對NAND Flash進(jìn)行壞塊管理、讀寫控制和壽命管理等。所以,NAND Flash并不具備XIP能力,存儲其中的代碼不能直接執(zhí)行,必須由驅(qū)動加載到內(nèi)存中才能執(zhí)行。

因此,在嵌入式系統(tǒng)中,一般同時具有NOR Flash和NAND Flash 2種存儲介質(zhì)。NOR Flash用于存儲啟動代碼,包括bootloader、Uboot等,NAND Flash用于存儲OS鏡像和文件系統(tǒng)。這種啟動方案增加了PCB板面積,不利于系統(tǒng)小型化,也不利于控制系統(tǒng)成本和功耗。

本文首先提出了一種軟硬件結(jié)合的方法,實(shí)現(xiàn)了基于NAND Flash的直接啟動。該方法利用NAND Flash器件保證第1塊必定為好塊的特點(diǎn),在第1個好塊中存儲好塊尋找程序,并在啟動時直接執(zhí)行。軟件將尋找到的好塊信息填寫在CPU片內(nèi)NAND Flash控制器中的硬件塊映射表中,從而實(shí)現(xiàn)NAND Flash中部分地址的直接映射。這種方法使得NAND Flash具備了XIP能力,不需要復(fù)雜的驅(qū)動就可以實(shí)現(xiàn)CPU對NAND Flash的直接訪問,并使得存儲其中的代碼可以直接執(zhí)行。通過該方法,在系統(tǒng)中可以去掉NOR Flash,實(shí)現(xiàn)僅需NAND Flash的啟動方案。

基于上述啟動方案,本文進(jìn)一步提出了一種基于NAND Flash的安全啟動方案,實(shí)現(xiàn)了僅需NAND Flash的安全啟動。該方案為簡化片內(nèi)BootROM代碼,將一部分代碼作為擴(kuò)展BootROM存儲于片外NAND Flash中。片內(nèi)可信根只執(zhí)行簡單的Hash比對,對存儲于片外NAND Flash中第1塊內(nèi)的擴(kuò)展BootROM代碼進(jìn)行校驗(yàn)。再由第1塊代碼通過簽名驗(yàn)證的方式,對后續(xù)的固件代碼進(jìn)行驗(yàn)證。從而建立起逐級的可信鏈,實(shí)現(xiàn)系統(tǒng)的安全啟動。

本文的主要貢獻(xiàn)包括以下2個方面:

(1)提出了一種軟硬件結(jié)合的方法,實(shí)現(xiàn)了NAND Flash中部分地址的直接映射,從而使得NAND Flash中存儲的代碼可以直接執(zhí)行,實(shí)現(xiàn)了僅需NAND Flash的系統(tǒng)啟動方案;

(2)提出了一種基于上述啟動特性的CPU安全啟動方案,通過將BootROM擴(kuò)展存儲至NAND Flash中,簡化了片內(nèi)固化的BootROM設(shè)計(jì),并實(shí)現(xiàn)了多級驗(yàn)簽機(jī)制。

通過本文提出的方法,可以實(shí)現(xiàn)僅需NAND Flash的系統(tǒng)啟動方案,并在此系統(tǒng)上實(shí)現(xiàn)安全啟動,從而有效降低系統(tǒng)的成本和功耗,且提高了系統(tǒng)的安全特性。

2 研究背景與相關(guān)工作

2.1 Flash存儲器

目前主流的Flash存儲器根據(jù)其內(nèi)部架構(gòu)和實(shí)現(xiàn)技術(shù)可以分為NOR Flash和NAND Flash[1]。 其中,NOR Flash是由Intel公司于1988年推出的,NAND Flash是由東芝公司于1989年推出的。

NOR Flash具有較快的讀速度,并且具備直接執(zhí)行(XIP)功能,但其容量較低且價格較高,所以一般作為系統(tǒng)的啟動代碼存儲器,也就是說直接映射為內(nèi)存(Memory)空間使用。NAND Flash讀取速度較慢,但其寫和擦除操作較NOR Flash更快,且存儲容量更大,價格較低。因此,NAND Flash多用于數(shù)據(jù)存儲,也就是說作為外存(Storage)使用。

NAND Flash采用基于塊和頁的組織結(jié)構(gòu)。一片NAND Flash芯片劃分為多個塊,擦除以塊為單位進(jìn)行,擦除后整塊的數(shù)據(jù)均為全1。每一個塊內(nèi)又分為若干個頁,頁是讀取和寫入的基本單位。以當(dāng)前典型的4 Gb的NAND Flash芯片為例,一般塊大小為256 KB,全片共2 048個塊,每塊又分為64個4 KB的頁。對NAND Flash進(jìn)行讀取訪問時,由控制器發(fā)出塊號和頁號等信息,NAND Flash器件返回該頁的全部數(shù)據(jù)。

NAND Flash芯片在出廠時,并不保證所有的塊都是好塊,即都可用,僅保證第1塊一定是好塊。在寫入時,如果遇到壞塊,一般往后順延一個塊寫入。一個塊是否為好塊,標(biāo)識在NAND Flash的OOB(Out of Band)空間,不同廠家的標(biāo)識方法略有不同。如東芝的壞塊標(biāo)識是該塊的第1頁和第2頁的OOB空間第1個字節(jié)非全1[2],Gigadevice的壞塊標(biāo)識是該塊第1頁OOB的第1個字節(jié)非全1[3],Kioxia的壞塊標(biāo)識是該塊所有存儲空間均為全0[4]。因此,訪問NAND Flash時,一般需要使用廠家提供的驅(qū)動進(jìn)行塊頁地址映射、壞塊識別與跳過等操作。

由于NOR Flash和NAND Flash的固有特性,一般系統(tǒng)中同時具有NOR Flash和NAND Flash 2種存儲介質(zhì)。NOR Flash用于存儲啟動代碼,NAND Flash用于存儲文件系統(tǒng)。文獻(xiàn)[5]提出了一種全硬件支持的NOR Flash直接地址訪問控制器。本文提出一種軟硬件結(jié)合的方法,支持NAND Flash的直接地址訪問,并實(shí)現(xiàn)了相關(guān)的控制器設(shè)計(jì)。采用本文提出的方法,可以實(shí)現(xiàn)NAND Flash中存儲代碼的直接執(zhí)行,并實(shí)現(xiàn)了壞塊管理的功能?;诒疚牡目刂破?,可以取消系統(tǒng)中的NOR Flash,從而縮小PCB板面積,有利于系統(tǒng)小型化,同時控制系統(tǒng)成本和功耗。

2.2 安全啟動

信息系統(tǒng)面臨多種現(xiàn)實(shí)的安全風(fēng)險。為了應(yīng)對這些安全風(fēng)險,一般需要在硬件的支持下,實(shí)現(xiàn)硬件資源隔離[6]、安全啟動[7]等安全機(jī)制。其中,安全啟動是比較常見的信任鏈建立機(jī)制,其啟動流程如圖1所示。通過可信根對片外固件進(jìn)行驗(yàn)簽,確保固件沒有被非法篡改過;再由固件對OS進(jìn)行驗(yàn)簽,確保OS的合法性;最后由OS對應(yīng)用進(jìn)行驗(yàn)簽,保證最終執(zhí)行的應(yīng)用的合法性。

Figure 1 Traditional secure boot flow圖1 傳統(tǒng)的安全啟動流程

傳統(tǒng)的安全啟動流程需要以板級的TCM/TPM(Trusted Cryptography Model/Trusted Platform Model)芯片作為可信根[7]。隨著CPU的進(jìn)一步發(fā)展,出現(xiàn)了將可信根內(nèi)置于CPU內(nèi)的方案[8,9]。CPU內(nèi)置的可信根一般由片內(nèi)ROM及ROM中存儲的BootROM代碼、efuse和密碼加速引擎構(gòu)成。BootROM代碼為CPU啟動后執(zhí)行的代碼,efuse中存儲公鑰的Hash。片外被驗(yàn)簽的第1級固件的Hash值運(yùn)用私鑰進(jìn)行運(yùn)算,得到簽名,并與片外第1級固件一起存儲。啟動后CPU執(zhí)行BootROM程序,將片外的第1級固件搬到片內(nèi)SRAM區(qū)域,再啟動密碼加速引擎,得到固件計(jì)算Hash值并用片內(nèi)efuse存儲的公鑰進(jìn)行計(jì)算,得到的值與片外存儲的簽名進(jìn)行比對,一致則說明固件沒有被篡改過,是安全可信的。

傳統(tǒng)的安全啟動方案需要可信根至少執(zhí)行Hash和非對稱算法2種運(yùn)算,使得固化于片內(nèi)的BootROM代碼設(shè)計(jì)復(fù)雜,所需的ROM容量大,不利于控制芯片面積和成本。本文提出的擴(kuò)展BootROM的安全啟動方案,利用NAND Flash啟動的特性,將部分BootROM擴(kuò)展存儲至片外NAND Flash第1塊中,片內(nèi)BootROM只需要計(jì)算Hash就可以驗(yàn)證擴(kuò)展BootROM,有利于減少片內(nèi)ROM容量,降低代碼復(fù)雜度。同時,安全啟動也要和片外啟動固件的存儲相結(jié)合。文獻(xiàn)[10]提出了一種基于NOR Flash的安全啟動控制器設(shè)計(jì)方案。而本文提出的是基于NAND Flash的安全啟動方案,可以實(shí)現(xiàn)單NAND Flash系統(tǒng)的安全啟動。

3 地址直接映射

為了縮小PCB板面積,實(shí)現(xiàn)系統(tǒng)小型化,降低系統(tǒng)的成本與功耗,本文設(shè)計(jì)實(shí)現(xiàn)了一種僅需NAND Flash的系統(tǒng)啟動方案。該方案取消了一般系統(tǒng)中存在的NOR Flash芯片,將系統(tǒng)啟動代碼直接存儲在NAND Flash中。此時NAND Flash芯片中前-部分存儲系統(tǒng)啟動代碼,通過特殊設(shè)計(jì)的地址直接映射方式,實(shí)現(xiàn)CPU在啟動后對這部分代碼的直接訪問和執(zhí)行;NAND Flash后一部分主要的存儲空間仍然存儲OS鏡像和文件系統(tǒng),通過加載驅(qū)動的方式進(jìn)行訪問。

為實(shí)現(xiàn)NAND Flash前一部分存儲空間的地址直接映射,本文提出了一種軟硬件結(jié)合的方法。在硬件上,在CPU中設(shè)計(jì)實(shí)現(xiàn)了一種全新的NAND Flash控制器,該控制器由Cache、地址映射邏輯、塊映射表和接口邏輯等組成,具體結(jié)構(gòu)如圖2所示。

Figure 2 Block diagram of NAND Flash controller圖2 NAND Flash控制器結(jié)構(gòu)框圖

系統(tǒng)啟動后,CPU取指執(zhí)行時通過軟件可見的Memory地址直接訪問NAND Flash控制器,獲取啟動代碼。由于NAND Flash接口訪問速度較慢,且一般采用整頁讀取的方式進(jìn)行操作,本文在NAND Flash控制器內(nèi)設(shè)計(jì)實(shí)現(xiàn)了一個Cache,該Cache的行大小為一整頁的容量。CPU通過Memory地址訪問時,首先判斷該地址的代碼是否在Cache中命中,如果命中,則直接返回;如果不命中,則需要訪問片外NAND Flash器件取回相應(yīng)的啟動代碼。

Cache不命中時,由地址映射邏輯將Memory地址按照NAND Flash的特性映射為塊號和頁號。需要注意的是,這里的塊號為邏輯塊號,是由Memory地址直接映射得到,并沒有考慮物理上NAND Flash可能存在的壞塊。這些邏輯塊號還需要由塊映射邏輯映射到物理塊號,物理塊號才保證是NAND Flash中的好塊。

經(jīng)過塊映射邏輯得到的物理塊號和頁號,由Flash控制模塊產(chǎn)生符合NAND Flash接口時序和協(xié)議要求的訪問序列,訪問片外NAND Flash,取回一整頁數(shù)據(jù),并回填至Cache中,返回相應(yīng)的代碼、數(shù)據(jù)給CPU核。

上述結(jié)構(gòu)中,最關(guān)鍵的結(jié)構(gòu)為塊映射邏輯,本文設(shè)計(jì)實(shí)現(xiàn)了如圖3所示的硬件塊映射表,通過邏輯塊號訪問硬件塊映射表,獲得該邏輯塊號對應(yīng)的物理塊號。

Figure 3 Block mapping table圖3 塊映射表

系統(tǒng)啟動時,CPU并不知道片外NAND Flash中的壞塊信息,此時塊映射表中的信息是無效的。本文利用NAND Flash器件保證第1塊為好塊的物理特性,將塊映射表0號入口固定復(fù)位為0,也即將0號邏輯Block固定映射為0號物理Block。通過在NAND Flash器件的0號物理Block空間存放的好塊尋找程序,CPU直接訪問0號物理Block并執(zhí)行該程序。該部分代碼從1號物理Block開始,尋找N-1塊物理好塊,并將其物理塊號填入硬件塊映射表。好塊尋找算法偽代碼如算法1所示。

算法1好塊尋找算法

輸入:塊映射表BMT項(xiàng)數(shù)N;

輸出:塊映射表BMT。

①for(i=1;i=i+1;i≤N)

②PBN=BMT[i-1]+1;

③while(NANDFlash[PBN] is bad block)

④PBN=PBN+1;

⑤endwhile

⑥BMT[i]=PBN;

⑦endfor

該算法先將塊映射表BMT中前一項(xiàng)記錄的物理塊號加1,作為當(dāng)前物理塊號PBN。通過訪問該P(yáng)BN在NAND Flash器件中對應(yīng)的塊,讀取其壞塊信息,判斷當(dāng)前物理塊是否為好塊。如果為好塊,則將PBN填入BMT中對應(yīng)表項(xiàng),否則將PBN加1,繼續(xù)尋找好塊。

通過執(zhí)行位于0塊空間的算法1,填好塊映射表,即可實(shí)現(xiàn)CPU所見的存儲空間地址到實(shí)際的物理塊、頁號的轉(zhuǎn)換。實(shí)際可直接映射的物理空間大小A取決于塊映射表大小N和物理塊大小B,即A=N×B。假設(shè)映射表大小為8項(xiàng),NAND Flash物理塊大小為256 KB,則能夠地址直接映射的空間大小為2 MB。也就是說NAND Flash空間中前一部分空間在這種方案下可以實(shí)現(xiàn)地址直接映射和訪問,存儲于其上的啟動程序代碼可以直接執(zhí)行。但是,超過這部分地址空間的塊,還是需要通過驅(qū)動來進(jìn)行訪問。因此,在前一部分可以直接地址映射和執(zhí)行的NAND Flash空間內(nèi),除了需要存儲啟動代碼外,還需要存儲NAND Flash驅(qū)動,以便訪問后續(xù)塊空間。

本文提出的這種軟硬件結(jié)合的地址直接映射方法,充分利用了NAND Flash中第1塊為好塊的特性,在第1塊中存儲好塊尋找程序,通過直接執(zhí)行該算法,填寫硬件塊映射表,從而在無驅(qū)動支持下,實(shí)現(xiàn)軟件可見存儲地址到物理塊、頁號的直接映射?;诒疚奶岢龅姆椒?,可以取消系統(tǒng)中常見的NOR Flash芯片,實(shí)現(xiàn)單NAND Flash啟動,從而有效減少系統(tǒng)成本、體積和功耗。

4 基于擴(kuò)展BootROM的安全啟動

傳統(tǒng)的安全啟動流程要求片內(nèi)BootROM至少可以執(zhí)行非對稱和Hash 2種類型的密碼運(yùn)算,對片內(nèi)BootROM的存儲容量和代碼復(fù)雜度要求比較高。特別是非對稱密碼算法運(yùn)算復(fù)雜,即便是調(diào)用片內(nèi)的硬件密碼引擎,也需要有比較復(fù)雜的軟件驅(qū)動,需要占用大量的片內(nèi)BootROM存儲容量。

一般來說,片內(nèi)BootROM存儲在ROM或eFlash中。ROM中的代碼在芯片生產(chǎn)時即確定,eFlash可以在芯片生產(chǎn)回片后再燒錄。但是,現(xiàn)在先進(jìn)工藝下均沒有eFlash器件。所以,需要先進(jìn)工藝的高性能CPU只能采用片內(nèi)ROM存儲BootROM代碼。片內(nèi)ROM的容量大小會影響芯片面積,進(jìn)而影響芯片的成本。而BootROM代碼的復(fù)雜度又會帶來驗(yàn)證的復(fù)雜度,必須在芯片流片前將BootROM代碼中所有的分支都驗(yàn)證到,保證BootROM代碼是無錯的。因此,簡化BootROM代碼,壓縮BootROM鏡像大小,降低其復(fù)雜度,對于降低芯片成本、驗(yàn)證復(fù)雜度和流片風(fēng)險都有很大的作用。

具體到本文提出的單NAND Flash啟動方法,由于必須首先執(zhí)行片外NAND Flash中第1塊上的好塊尋找程序,才能填寫硬件好塊映射表,進(jìn)而對后續(xù)地址進(jìn)行直接地址映射。所以,如果采用傳統(tǒng)的安全啟動方案,需要BootROM代碼對片外第1塊的代碼先進(jìn)行驗(yàn)簽,驗(yàn)簽通過后執(zhí)行,再由第1塊代碼驗(yàn)簽后續(xù)代碼(如圖4所示)。這不僅使得BootROM程序復(fù)雜,鏡像容量大,還使得本來可以1次完成的固件驗(yàn)簽,至少需要2次驗(yàn)簽才能完成,不利于系統(tǒng)快速啟動。

Figure 4 Traditional NAND Flash secure boot flow圖4 基于傳統(tǒng)方法的NAND Flash安全啟動流程

為了解決傳統(tǒng)的基于驗(yàn)簽的安全啟動流程運(yùn)用于NAND Flash啟動時導(dǎo)致的ROM容量過大,BootROM代碼復(fù)雜,需要多次驗(yàn)簽等缺點(diǎn),本文提出了一種基于擴(kuò)展BootROM的NAND Flash安全啟動方法。

本文提出的方法將片外NAND Flash上第1塊的代碼的Hash值存儲在片內(nèi)efuse中。CPU啟動時,執(zhí)行片內(nèi)BootROM代碼,將片外NAND Flash中第1塊的代碼拷貝到片內(nèi)SRAM,再用相同的算法計(jì)算Hash值,并與片內(nèi)efuse中存儲的Hash值進(jìn)行比較,如果比較通過,則認(rèn)為片外NAND Flash上第1塊的代碼沒有被篡改過,是安全可信的,可以執(zhí)行。具體流程如圖5所示。

Figure 5 NAND Flash secure boot flow based on extended BootROM圖5 基于擴(kuò)展BootROM的NAND Flash安全啟動流程

本文提出的方法中,對片外第1級只采用Hash比對,因此當(dāng)在片內(nèi)efuse中寫入Hash值以后,片外第1級固件就不能再更改了。片外NAND Flash中第1塊的代碼類似于不可更新的BootROM,本文稱之為擴(kuò)展BootROM。與存放于片內(nèi)的BootROM相比,擴(kuò)展BootROM具有一定的靈活性,因?yàn)椴挥迷谛酒髌熬痛_定代碼鏡像,回片后有一次燒錄機(jī)會。此外,對于一款芯片,片內(nèi)BootROM的代碼完全相同,但是擴(kuò)展BootROM還可以根據(jù)不同的板級設(shè)計(jì)有所區(qū)別。比如,板級集成了不同廠家的NAND Flash芯片時,由于不同廠家的壞塊標(biāo)識略有不同,因此好塊尋找算法具體實(shí)現(xiàn)也有所區(qū)別。在擴(kuò)展BootROM中實(shí)現(xiàn)好塊尋找算法,可以根據(jù)不同的NAND Flash器件,在回片后在片外Flash的第1塊上燒錄不同的擴(kuò)展BootROM代碼,并將其Hash值燒錄到片內(nèi)的efuse中。

與傳統(tǒng)的基于驗(yàn)簽的方法相比,本文提出的方法在片內(nèi)BootROM中只需執(zhí)行Hash運(yùn)算,減少了非對稱運(yùn)算的時間和代碼量,有效減少了ROM容量。

5 實(shí)驗(yàn)與結(jié)果

基于本文提出的軟硬件結(jié)合的地址映射方法,設(shè)計(jì)實(shí)現(xiàn)了一款SPI接口的NAND Flash控制器。該控制器對內(nèi)采用APB3接口,連接到片上總線NoC,對外采用標(biāo)準(zhǔn)的SPI接口,連接NAND Flash芯片。該SPI NAND Flash控制器的主要設(shè)計(jì)參數(shù)如表1所示。

Table 1 Design parameters

由于SPI NAND Flash采取整頁讀出的方式,為了減少SPI接口訪問,盡可能多地重復(fù)使用一次讀出的數(shù)據(jù)和代碼,本文設(shè)計(jì)的SPI NAND Flash控制器內(nèi)的Cache必須具備將一整頁數(shù)據(jù)全部緩存的能力。當(dāng)前主流的NAND Flash的頁大小一般為2 KB(總?cè)萘坎淮笥? Gbit器件)或4 KB(總?cè)萘坎恍∮? Gbit器件)。因此,本文將Cache行大小設(shè)計(jì)為2 KB,Cache行數(shù)設(shè)計(jì)為2。這樣對于頁大小為2 KB的器件,可以緩存2個頁的數(shù)據(jù),對于頁大小為4 KB的器件,可以緩存1個頁的數(shù)據(jù)。

為了實(shí)現(xiàn)地址的直接映射,本文采用了硬件塊映射表的結(jié)構(gòu),該映射表的大小決定了可以直接映射的地址空間大小。本文設(shè)計(jì)的塊映射表大小為4。當(dāng)前主流的NAND Flash的塊大小一般為128 KB(總?cè)萘坎淮笥? Gbit器件)或256 KB(總?cè)萘坎恍∮? Gbit器件)。對于塊大小為128 KB的器件,可以直接尋址512 KB的空間,對于塊大小為256 KB的器件,可以直接尋址1 MB的空間。一般來說,該直接尋址空間已經(jīng)足夠存儲完整的Uboot代碼。因此,采用本文設(shè)計(jì)的SPI NAND Flash控制器可以實(shí)現(xiàn)僅需NAND Flash系統(tǒng)的直接啟動。

為了驗(yàn)證本文提出的安全啟動方案的有效性,設(shè)計(jì)了一個驗(yàn)證SoC,其框圖如圖6所示。該SoC采用開源的32位RISC-V架構(gòu)處理器內(nèi)核PULPino[11]。該內(nèi)核通過NoC連接本文設(shè)計(jì)的SPI NAND Flash控制器,NoC上還掛接了256 KB的SRAM、efuse和密碼計(jì)算引擎。

Figure 6 SoC diagram圖6 SoC框圖

本文對比了采用傳統(tǒng)驗(yàn)簽流程和采用擴(kuò)展BootROM方式進(jìn)行驗(yàn)簽時對片內(nèi)ROM的容量需求,具體如圖7所示。

Figure 7 Comparison of BootROM code capacity圖7 BootROM容量比較

采用傳統(tǒng)驗(yàn)簽流程時,使用標(biāo)準(zhǔn)的X.509證書格式。X.509標(biāo)準(zhǔn)是國際電信聯(lián)盟ITU(International Telecommunication Union)制定的公鑰證書格式標(biāo)準(zhǔn),已經(jīng)廣泛應(yīng)用于眾多互聯(lián)網(wǎng)協(xié)議和電子簽名服務(wù)中。實(shí)現(xiàn)基于X.509證書的驗(yàn)簽,至少需要進(jìn)行非對稱和Hash 2種運(yùn)算,本文采用RSA2048和SHA256 2種類型的運(yùn)算。而采用擴(kuò)展BootROM的方式,僅需要在片內(nèi)ROM中實(shí)現(xiàn)Hash算法,本文采用了SHA256算法??梢钥闯觯捎脗鹘y(tǒng)驗(yàn)簽流程,片內(nèi)ROM容量大小至少需要30 KB以上,而采用擴(kuò)展BootROM的方式,片內(nèi)ROM僅需16 KB。因此,本文提出的方法可以大大簡化片內(nèi)BootROM的軟件設(shè)計(jì),減少片內(nèi)ROM容量,有利于降低BootROM軟件驗(yàn)證風(fēng)險和縮小芯片面積,降低芯片成本和功耗。

本文還對比了采用傳統(tǒng)驗(yàn)簽流程和采用擴(kuò)展BootROM方式進(jìn)行驗(yàn)簽時所需的執(zhí)行時間,具體如圖8所示。圖8中采用了歸一化的執(zhí)行時間比較,以X.509驗(yàn)簽執(zhí)行的時鐘周期為1,擴(kuò)展BootROM校驗(yàn)方法執(zhí)行的時間為X.509驗(yàn)簽執(zhí)行時間的89%。測試執(zhí)行時間時,假設(shè)處理器核、片上網(wǎng)絡(luò)、Crypto單元、SRAM和ROM等都工作在500 MHz,SPI接口工作在125 MHz。采用X.509驗(yàn)簽時,片內(nèi)BootROM首先執(zhí)行RSA2048和SHA256 2種類型的運(yùn)算,對片外NAND Flash上第1塊中的128 KB代碼進(jìn)行驗(yàn)簽;然后執(zhí)行第1塊的代碼,尋找好塊,填寫好塊映射表,再由第1塊的代碼執(zhí)行RSA2048和SHA256算法驗(yàn)簽后續(xù)算法。采用擴(kuò)展BootROM校驗(yàn)方法時,片內(nèi)BootROM僅需執(zhí)行SHA256算法計(jì)算片外NAND Flash第1塊中的128 KB代碼的Hash值;然后再由第1塊的代碼執(zhí)行RSA2048和SHA256算法驗(yàn)簽后續(xù)算法。可以看出,本文提出的安全啟動方法從NAND Flash直接啟動,相比于傳統(tǒng)驗(yàn)簽方法可以大大節(jié)省啟動時間。

Figure 8 Comparison of normalized secure boot execution time圖8 歸一化安全啟動執(zhí)行時間比較

6 結(jié)束語

針對NAND Flash存儲器固有的壞塊導(dǎo)致不能直接尋址,不能支持存儲系統(tǒng)啟動代碼直接執(zhí)行的特點(diǎn),本文提出了一種軟硬件結(jié)合的方法,實(shí)現(xiàn)了NAND Flash中部分地址的直接映射,從而使得NAND Flash中存儲的代碼可以直接執(zhí)行,實(shí)現(xiàn)了僅需NAND Flash的系統(tǒng)啟動方案。本文還提出了一種基于上述啟動特性的CPU安全啟動方案,通過將BootROM擴(kuò)展存儲至NAND Flash中,簡化了片內(nèi)固化的BootROM設(shè)計(jì),并實(shí)現(xiàn)了多級驗(yàn)簽機(jī)制。

通過本文提出的方法,可以實(shí)現(xiàn)僅需NAND Flash的系統(tǒng)啟動方案,并在此系統(tǒng)上實(shí)現(xiàn)了安全啟動,從而有效降低了系統(tǒng)的成本和功耗,且提高了系統(tǒng)的安全特性。

猜你喜歡
固件代碼啟動
《悅讀·家》暨“悅讀·家@萬家”活動啟動
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
基于固件的遠(yuǎn)程身份認(rèn)證
谷歌公司推出計(jì)算機(jī)固件分析工具幫助用戶阻止惡意軟件入侵
電啟動機(jī)的正確使用
英特爾發(fā)布免費(fèi)固件引擎
提取ROM固件中的APP
合川市| 沂南县| 盖州市| 松溪县| 永和县| 乌苏市| 来宾市| 逊克县| 乡城县| 怀来县| 涡阳县| 阿克陶县| 滨州市| 大足县| 西乡县| 清水县| 馆陶县| 新河县| 黎川县| 政和县| 沛县| 克拉玛依市| 邵武市| 宿松县| 长泰县| 中西区| 苍溪县| 泉州市| 和硕县| 兴业县| 长子县| 华宁县| 黄骅市| 安龙县| 竹北市| 牙克石市| 日喀则市| 大安市| 涞水县| 商洛市| 安宁市|