亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2022-06-23 03:09:58張劍鋒

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

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

        1 引言

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

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

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

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

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

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

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

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

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

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

        2.1 Flash存儲(chǔ)器

        目前主流的Flash存儲(chǔ)器根據(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)功能,但其容量較低且價(jià)格較高,所以一般作為系統(tǒng)的啟動(dòng)代碼存儲(chǔ)器,也就是說(shuō)直接映射為內(nèi)存(Memory)空間使用。NAND Flash讀取速度較慢,但其寫(xiě)和擦除操作較NOR Flash更快,且存儲(chǔ)容量更大,價(jià)格較低。因此,NAND Flash多用于數(shù)據(jù)存儲(chǔ),也就是說(shuō)作為外存(Storage)使用。

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

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

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

        2.2 安全啟動(dòng)

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

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

        傳統(tǒng)的安全啟動(dòng)流程需要以板級(jí)的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中存儲(chǔ)的BootROM代碼、efuse和密碼加速引擎構(gòu)成。BootROM代碼為CPU啟動(dòng)后執(zhí)行的代碼,efuse中存儲(chǔ)公鑰的Hash。片外被驗(yàn)簽的第1級(jí)固件的Hash值運(yùn)用私鑰進(jìn)行運(yùn)算,得到簽名,并與片外第1級(jí)固件一起存儲(chǔ)。啟動(dòng)后CPU執(zhí)行BootROM程序,將片外的第1級(jí)固件搬到片內(nèi)SRAM區(qū)域,再啟動(dòng)密碼加速引擎,得到固件計(jì)算Hash值并用片內(nèi)efuse存儲(chǔ)的公鑰進(jìn)行計(jì)算,得到的值與片外存儲(chǔ)的簽名進(jìn)行比對(duì),一致則說(shuō)明固件沒(méi)有被篡改過(guò),是安全可信的。

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

        3 地址直接映射

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

        為實(shí)現(xiàn)NAND Flash前一部分存儲(chǔ)空間的地址直接映射,本文提出了一種軟硬件結(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)啟動(dòng)后,CPU取指執(zhí)行時(shí)通過(guò)軟件可見(jiàn)的Memory地址直接訪(fǎng)問(wèn)NAND Flash控制器,獲取啟動(dòng)代碼。由于NAND Flash接口訪(fǎng)問(wèn)速度較慢,且一般采用整頁(yè)讀取的方式進(jìn)行操作,本文在NAND Flash控制器內(nèi)設(shè)計(jì)實(shí)現(xiàn)了一個(gè)Cache,該Cache的行大小為一整頁(yè)的容量。CPU通過(guò)Memory地址訪(fǎng)問(wèn)時(shí),首先判斷該地址的代碼是否在Cache中命中,如果命中,則直接返回;如果不命中,則需要訪(fǎng)問(wèn)片外NAND Flash器件取回相應(yīng)的啟動(dòng)代碼。

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

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

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

        Figure 3 Block mapping table圖3 塊映射表

        系統(tǒng)啟動(dòng)時(shí),CPU并不知道片外NAND Flash中的壞塊信息,此時(shí)塊映射表中的信息是無(wú)效的。本文利用NAND Flash器件保證第1塊為好塊的物理特性,將塊映射表0號(hào)入口固定復(fù)位為0,也即將0號(hào)邏輯Block固定映射為0號(hào)物理Block。通過(guò)在NAND Flash器件的0號(hào)物理Block空間存放的好塊尋找程序,CPU直接訪(fǎng)問(wèn)0號(hào)物理Block并執(zhí)行該程序。該部分代碼從1號(hào)物理Block開(kāi)始,尋找N-1塊物理好塊,并將其物理塊號(hào)填入硬件塊映射表。好塊尋找算法偽代碼如算法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)記錄的物理塊號(hào)加1,作為當(dāng)前物理塊號(hào)PBN。通過(guò)訪(fǎng)問(wèn)該P(yáng)BN在NAND Flash器件中對(duì)應(yīng)的塊,讀取其壞塊信息,判斷當(dāng)前物理塊是否為好塊。如果為好塊,則將PBN填入BMT中對(duì)應(yīng)表項(xiàng),否則將PBN加1,繼續(xù)尋找好塊。

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

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

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

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

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

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

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

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

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

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

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

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

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

        Table 1 Design parameters

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

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

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

        Figure 6 SoC diagram圖6 SoC框圖

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

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

        采用傳統(tǒng)驗(yàn)簽流程時(shí),使用標(biāo)準(zhǔn)的X.509證書(shū)格式。X.509標(biāo)準(zhǔn)是國(guó)際電信聯(lián)盟ITU(International Telecommunication Union)制定的公鑰證書(shū)格式標(biāo)準(zhǔn),已經(jīng)廣泛應(yīng)用于眾多互聯(lián)網(wǎng)協(xié)議和電子簽名服務(wù)中。實(shí)現(xiàn)基于X.509證書(shū)的驗(yàn)簽,至少需要進(jìn)行非對(duì)稱(chēng)和Hash 2種運(yùn)算,本文采用RSA2048和SHA256 2種類(lèi)型的運(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。因此,本文提出的方法可以大大簡(jiǎn)化片內(nèi)BootROM的軟件設(shè)計(jì),減少片內(nèi)ROM容量,有利于降低BootROM軟件驗(yàn)證風(fēng)險(xiǎn)和縮小芯片面積,降低芯片成本和功耗。

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

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

        6 結(jié)束語(yǔ)

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

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

        国产在线看不卡一区二区| 精品亚洲欧美无人区乱码| 青青操国产在线| 久久国产精品男人的天堂av| 日本免费精品一区二区| 日韩乱码精品中文字幕不卡| 国产91久久精品成人看网站| 欧美拍拍视频免费大全| 国产一卡2卡3卡四卡国色天香| 亚洲成年网站在线777| 国语对白三级在线观看| 日韩少妇人妻精品中文字幕| 性刺激的大陆三级视频| 精品性高朝久久久久久久| 无码a级毛片免费视频内谢| 高清国产国产精品三级国产av| 国产综合色在线视频区| 欧美日韩不卡视频合集| 欧美巨大xxxx做受中文字幕| 日本一区二区免费高清| 巨人精品福利官方导航| 91热这里只有精品| 精品国产乱码一区二区三区| 凌辱人妻中文字幕一区| 国精品无码一区二区三区在线| 国产区精品| 国产一级一片内射在线| 人妻av有码中文字幕| 久久天堂综合亚洲伊人hd妓女| 久久亚洲sm情趣捆绑调教| 在线观看极品裸体淫片av| 久久久亚洲av午夜精品| 国产午夜手机精彩视频| 久久精品国产一区二区电影| 亚洲成a人片在线观看中文!!!| 久久久大少妇免费高潮特黄| 又爽又黄又无遮挡网站| 99热精品成人免费观看| 国产在线看不卡一区二区| 国产欧美日韩va另类在线播放| 成人国产精品免费视频|