專利名稱:數(shù)字信號(hào)控制器安全存儲(chǔ)器分割的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于防止對(duì)例如微控制器、微處理器、數(shù)字信號(hào)控制器或數(shù)字信號(hào)處理器的控制器芯片中的存儲(chǔ)器的一個(gè)或一個(gè)以上段進(jìn)行代碼或數(shù)據(jù)復(fù)制或更改的系統(tǒng)和方法,且尤其涉及用于禁止在存儲(chǔ)器的不安全區(qū)域中運(yùn)行的程序存取存儲(chǔ)器段的系統(tǒng)和方法。
背景技術(shù):
例如微控制器、微處理器、數(shù)字信號(hào)控制器和數(shù)字信號(hào)處理器的控制器按常規(guī)被構(gòu)建成可編程的,以執(zhí)行系統(tǒng)內(nèi)的特定應(yīng)用程序和功能。一般來說,這些裝置是可由客戶不受限制地編程的,,或在制造過程期間使用由客戶提供或指定的軟件進(jìn)行編程。因而,常規(guī)地,控制器中的代碼在設(shè)計(jì)上是可由客戶存取的,幾乎沒有任何可防止客戶進(jìn)行存取的安全措施。
隨著控制器裝置的密度和存儲(chǔ)容量的增加,需要提供一種將第三方軟件和數(shù)據(jù)以及在制造時(shí)或稍后編程的任何客戶軟件存儲(chǔ)在將分發(fā)給客戶的控制器的程序存儲(chǔ)器中的靈活性。對(duì)于這種應(yīng)用,相對(duì)于第三方軟件來說,客戶將不再是可信任的一方。因此,需要保護(hù)第三方軟件和數(shù)據(jù)以防被客戶發(fā)現(xiàn)。在例如加密算法和密鑰等的軟件和數(shù)據(jù)的情況下尤其如此。當(dāng)?shù)谌杰浖瞧渌愋蜁r(shí),例如是向芯片附加價(jià)值但同時(shí)表示受版權(quán)保護(hù)且在某些情況下為商業(yè)機(jī)密的軟件的用于執(zhí)行數(shù)字信號(hào)處理功能的算法,也是如此。對(duì)于例如引導(dǎo)程序、引導(dǎo)裝載程序和操作系統(tǒng)的啟動(dòng)軟件也是如此,所述啟動(dòng)軟件除了是專有的之外還需要存取限制,以便確保執(zhí)行的是所存儲(chǔ)的沒有更改的軟件,從而確??刂破髟谄渲胁僮鞯南到y(tǒng)的安全性。
因此,需要一種控制器設(shè)計(jì),其允許增強(qiáng)存儲(chǔ)器的安全性。進(jìn)一步需要一種控制器設(shè)計(jì),其允許存儲(chǔ)器的某一區(qū)域比其他區(qū)域更安全。仍進(jìn)一步需要一種控制器設(shè)計(jì),其監(jiān)視程序流程并防止控制器在某些情形下進(jìn)入存儲(chǔ)器的安全區(qū)域,且防止控制器對(duì)存儲(chǔ)器的安全區(qū)域進(jìn)行讀取和寫入。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種控制器,其提供多種安全模式以用于保護(hù)存儲(chǔ)在存儲(chǔ)器中的程序代碼和數(shù)據(jù),并確保所述保護(hù)在控制器的所有正常操作條件期間都有效。所述控制器包括配置設(shè)定,其將程序存儲(chǔ)器分段為一引導(dǎo)段、一安全段和一普通段,每一段具有一特定的安全級(jí),包括沒有增強(qiáng)的保護(hù)措施。所述引導(dǎo)代碼段(BS)是最安全的,且可用于存儲(chǔ)一安全引導(dǎo)裝載程序。所述安全代碼段(SS)適用于存儲(chǔ)來自第三方的專有算法,例如用于在語音識(shí)別應(yīng)用中將環(huán)境噪音與語音分離的算法。所述普通代碼段(GS)具有最低的安全性。
所述控制器經(jīng)配置以防止會(huì)導(dǎo)致BS中所存儲(chǔ)的程序代碼被存儲(chǔ)在SS或GS中的程序代碼存取的程序流程變動(dòng)。類似地,所述控制器經(jīng)配置以防止存儲(chǔ)在SS中的程序代碼被存儲(chǔ)在GS中的程序代碼存取。當(dāng)出現(xiàn)違規(guī)時(shí),控制器執(zhí)行陷阱例程,且可重啟處理器或以其他方式防止發(fā)生安全破壞。除了防止從較低安全代碼到較高安全代碼的程序流程變動(dòng)之外,所述處理器可經(jīng)配置以使例如快閃存儲(chǔ)器的程序存儲(chǔ)器與隨機(jī)存取存儲(chǔ)器(RAM)的相關(guān)聯(lián)安全數(shù)據(jù)部分對(duì)應(yīng)于BS、SS和GS。防止了從一較低安全級(jí)自與一較高安全級(jí)相關(guān)聯(lián)的程序存儲(chǔ)器或RAM中讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入所述程序存儲(chǔ)器或RAM中的企圖。以這種方式,可防止與不同存儲(chǔ)器段相關(guān)聯(lián)的安全程序代碼和數(shù)據(jù)被控制器的用戶發(fā)現(xiàn),同時(shí)用戶可使用安全程序代碼的功能。
參考“具體實(shí)施方式
”和附圖將會(huì)更全面地理解本發(fā)明的上述特征和優(yōu)點(diǎn),附圖中圖1描繪其中可應(yīng)用本發(fā)明的實(shí)施例的處理器芯片的實(shí)施例的功能方框圖。
圖2描繪其中可應(yīng)用本發(fā)明的實(shí)施例的用于處理器中的數(shù)據(jù)總線方案的功能方框圖,其具有微處理器和數(shù)字信號(hào)處理引擎。
圖3A-3C根據(jù)本發(fā)明的實(shí)施例描繪程序存儲(chǔ)器的各段。
圖4根據(jù)本發(fā)明的實(shí)施例描繪安全配置寄存器。
圖5根據(jù)本發(fā)明的實(shí)施例描繪用于防止會(huì)危害安全性的程序流程變動(dòng)的功能方框圖。
圖6根據(jù)本發(fā)明的實(shí)施例描繪用于防止對(duì)存儲(chǔ)器的安全區(qū)域進(jìn)行存取的功能方框圖。
具體實(shí)施例方式
根據(jù)本發(fā)明,提供一種控制器,其提供多種安全模式以用于保護(hù)存儲(chǔ)在存儲(chǔ)器中的程序代碼和數(shù)據(jù),并確保所述保護(hù)在控制器的所有正常操作條件期間都有效。所述控制器包括配置設(shè)定,其將程序存儲(chǔ)器分段為一引導(dǎo)段、一安全段和一普通段,每一段具有一特定的安全級(jí),包括沒有增強(qiáng)的保護(hù)措施。所述引導(dǎo)代碼段(BS)是最安全的,且可用于存儲(chǔ)一安全引導(dǎo)裝載程序。所述安全代碼段(SS)適用于存儲(chǔ)來自第三方的專有算法,例如用于在語音識(shí)別應(yīng)用中將環(huán)境噪音與語音分離的算法。所述普通代碼段(GS)具有最低的安全性。
所述控制器經(jīng)配置以防止會(huì)導(dǎo)致BS中所存儲(chǔ)的程序代碼被存儲(chǔ)在SS或GS中的程序代碼存取的程序流程變動(dòng)。類似地,所述控制器經(jīng)配置以防止存儲(chǔ)在SS中的程序代碼被存儲(chǔ)在GS中的程序代碼存取。當(dāng)出現(xiàn)違規(guī)時(shí),控制器執(zhí)行陷阱例程,且可重啟處理器或以其他方式防止發(fā)生安全破壞。除了防止從較低安全代碼到較高安全代碼的程序流程變動(dòng)之外,所述處理器可經(jīng)配置以使例如快閃存儲(chǔ)器的程序存儲(chǔ)器與隨機(jī)存取存儲(chǔ)器(RAM)的相關(guān)聯(lián)安全數(shù)據(jù)部分對(duì)應(yīng)于BS、SS和GS。防止了從一較低安全級(jí)自與一較高安全級(jí)相關(guān)聯(lián)的程序存儲(chǔ)器或RAM中讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入所述程序存儲(chǔ)器或RAM中的企圖。以這種方式,可防止與不同存儲(chǔ)器段相關(guān)聯(lián)的安全程序代碼和數(shù)據(jù)被控制器的用戶發(fā)現(xiàn),同時(shí)用戶可使用安全程序代碼的功能。
為了描述并入根據(jù)本發(fā)明的安全特征的控制器的實(shí)施例,首先參考圖1和圖2展現(xiàn)相關(guān)處理器元件的概述。接著下文參考圖3-6更特定地描述用于實(shí)施根據(jù)本發(fā)明的增強(qiáng)安全性的系統(tǒng)和方法。
處理器元件概述圖1描繪其中可應(yīng)用本發(fā)明的處理器芯片的實(shí)施例的功能方框圖。參看圖1,處理器100耦合到外部裝置/系統(tǒng)140。處理器100可以是任何類型的處理器,包括(例如)數(shù)字信號(hào)處理器(DSP)、微處理器、微控制器或其組合。外部裝置140可以是任何類型的系統(tǒng)或裝置,包括例如鍵盤、顯示器、揚(yáng)聲器、麥克風(fēng)的輸入/輸出裝置,存儲(chǔ)器或可包括或不包括處理器的其他系統(tǒng)。另外,處理器100和外部裝置140可一起包含一獨(dú)立系統(tǒng)。
處理器100包括程序存儲(chǔ)器105、指令提取/解碼單元110、指令執(zhí)行單元115、數(shù)據(jù)存儲(chǔ)器和寄存器120、外圍設(shè)備125、數(shù)據(jù)I/O 130和一程序計(jì)數(shù)器和回路控制單元135??偩€150(可包括一個(gè)或一個(gè)以上共用總線)在所示的單元之間傳送數(shù)據(jù)。
程序存儲(chǔ)器105存儲(chǔ)用于由處理器100執(zhí)行的包含于程序指令中的軟件。程序存儲(chǔ)器105可包含任何類型的非易失性存儲(chǔ)器,例如只讀存儲(chǔ)器(ROM)、可編程只讀存儲(chǔ)器(PPROM)、電可編程或電可編程可擦除只讀存儲(chǔ)器(EPROM或EEPROM)或快閃存儲(chǔ)器。另外,可使用所示的外部非易失性存儲(chǔ)器145補(bǔ)充程序存儲(chǔ)器105來增加處理器100可用的軟件的復(fù)雜性?;蛘撸绦虼鎯?chǔ)器可以是易失性存儲(chǔ)器,其從(例如)外部非易失性存儲(chǔ)器145接收程序指令。當(dāng)程序存儲(chǔ)器105是非易失性存儲(chǔ)器時(shí),可在制造處理器100時(shí)或在系統(tǒng)內(nèi)構(gòu)建處理器100之前或期間對(duì)程序存儲(chǔ)器進(jìn)行編程。在后一情形中,可通過稱為在線串行編程的過程對(duì)處理器100進(jìn)行編程。
指令提取/解碼單元110耦合到程序存儲(chǔ)器105,指令執(zhí)行單元115和數(shù)據(jù)存儲(chǔ)器120。耦合到程序存儲(chǔ)器105和總線150的是程序計(jì)數(shù)器和回路控制單元135。指令提取/解碼單元110從由程序計(jì)數(shù)器135中含有的地址值所指定的程序存儲(chǔ)器105中提取指令。指令提取/解碼單元110接著解碼所提取的指令并將所解碼的指令發(fā)送到適當(dāng)?shù)膱?zhí)行單元115。指令提取/解碼單元110還可將包括數(shù)據(jù)地址的操作數(shù)信息發(fā)送到數(shù)據(jù)存儲(chǔ)器120并發(fā)送到存取寄存器的功能元件。
程序計(jì)數(shù)器和回路控制單元135包括程序計(jì)數(shù)器寄存器(未圖示),其存儲(chǔ)將提取的下一指令的地址。在正常指令處理期間,程序計(jì)數(shù)器寄存器可遞增以促使提取順序的指令?;蛘?,可通過將新值經(jīng)由總線150載入程序計(jì)數(shù)器寄存器而改變其值??苫诮獯a和執(zhí)行例如分支指令的流程控制指令而得到新值。另外,程序計(jì)數(shù)器和回路控制單元135的回路控制部分可用于提供重復(fù)指令處理和重復(fù)回路控制,如下文所述。
指令執(zhí)行單元115從指令提取/解碼單元110接收經(jīng)解碼的指令,且其后執(zhí)行經(jīng)解碼的指令。作為此過程的一部分,執(zhí)行單元可經(jīng)由總線150接收一個(gè)或兩個(gè)操作數(shù),并將結(jié)果存儲(chǔ)在寄存器中或數(shù)據(jù)存儲(chǔ)器120內(nèi)的存儲(chǔ)器位置。執(zhí)行單元可包括例如在微控制器中??砂l(fā)現(xiàn)的算術(shù)邏輯單元(ALU)。執(zhí)行單元還可包括數(shù)字信號(hào)處理引擎、浮點(diǎn)處理器、整數(shù)處理器或任何其他適宜的執(zhí)行單元。下文參考圖2更詳細(xì)地展現(xiàn)執(zhí)行單元和其與總線150(可包括一個(gè)或一個(gè)以上總線)進(jìn)行的交互的優(yōu)選實(shí)施例。
數(shù)據(jù)存儲(chǔ)器和寄存器120是易失性存儲(chǔ)器,且用于存儲(chǔ)由執(zhí)行單元使用和產(chǎn)生的數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)器120和程序存儲(chǔ)器105優(yōu)選地是分別用于存儲(chǔ)數(shù)據(jù)和程序指令的單獨(dú)存儲(chǔ)器。這個(gè)格式一般已知為Harvard架構(gòu)。然而應(yīng)注意,根據(jù)本發(fā)明,所述架構(gòu)可以是Von-Neuman架構(gòu)或允許將某些程序空間用于數(shù)據(jù)空間的經(jīng)修改的Harvard架構(gòu)。展示了(例如)將程序存儲(chǔ)器105連接到總線150的虛線。此路徑可包括用于將從程序空間的數(shù)據(jù)讀取(例如,在從程序空間的表讀取期間)與數(shù)據(jù)存儲(chǔ)器120對(duì)準(zhǔn)的邏輯。
再次參看圖1,處理器上的復(fù)數(shù)個(gè)外圍設(shè)備125可耦合到總線125。所述外圍設(shè)備可包括(例如)模數(shù)轉(zhuǎn)換器、定時(shí)器、總線接口和協(xié)議,例如控制器區(qū)域網(wǎng)絡(luò)(CAN)協(xié)議或通用串行總線(USB)協(xié)議和其他外圍設(shè)備。外圍設(shè)備通過總線150與其他單元交換數(shù)據(jù)。
數(shù)據(jù)I/O單元130可包括收發(fā)器和用于與外部裝置/系統(tǒng)140建立界面的其他邏輯。數(shù)據(jù)I/O單元130可進(jìn)一步包括用以允許通過數(shù)據(jù)I/O單元130對(duì)程序存儲(chǔ)器進(jìn)行在線串行編程的功能。
圖2描繪用于例如圖1中所示的處理器100中的數(shù)據(jù)總線方案的功能方框圖,其具有一集成微控制器算術(shù)邏輯單元(ALU)270和數(shù)字信號(hào)處理器(DSP)引擎230。此配置可用于將DSP功能集成到現(xiàn)有的微控制器核心中。參看圖2,圖1的數(shù)據(jù)存儲(chǔ)器120被構(gòu)建為兩個(gè)單獨(dú)的存儲(chǔ)器X存儲(chǔ)器210和Y存儲(chǔ)器220,每個(gè)存儲(chǔ)器可分別由X地址產(chǎn)生器250和Y地址產(chǎn)生器260編址。X地址產(chǎn)生器還可允許編址Y存儲(chǔ)器空間,因而當(dāng)由X地址產(chǎn)生器編址時(shí)使數(shù)據(jù)空間看起來好像一單個(gè)連續(xù)的存儲(chǔ)器空間??偩€150可構(gòu)建為兩個(gè)總線,X和Y存儲(chǔ)器中每一者各有一個(gè),以允許同時(shí)從X和Y存儲(chǔ)器提取數(shù)據(jù)。
W寄存器240是通用地址和/或數(shù)據(jù)寄存器。DSP引擎230耦合到X和Y存儲(chǔ)器總線以及W寄存器240。DSP引擎230可在單個(gè)處理器周期內(nèi)同時(shí)從X和Y存儲(chǔ)器中的每一者提取數(shù)據(jù),執(zhí)行對(duì)同時(shí)提取的數(shù)據(jù)進(jìn)行操作的指令,且將結(jié)果寫入到累加器(未圖示),且將先前的結(jié)果寫入到X或Y存儲(chǔ)器或W寄存器240。
在一個(gè)實(shí)施例中,ALU 270可僅耦合到X存儲(chǔ)器總線且可僅從X總線提取數(shù)據(jù)。然而,可通過X地址產(chǎn)生器將X和Y存儲(chǔ)器210和220編址為單個(gè)存儲(chǔ)器空間,以使得數(shù)據(jù)存儲(chǔ)器隔離對(duì)于ALU 270是透明的??赏ㄟ^存儲(chǔ)在W寄存器240中的值來編址X和Y存儲(chǔ)器內(nèi)的存儲(chǔ)器位置。
可實(shí)施任何處理器計(jì)時(shí)方案以用于提取和執(zhí)行指令。然而,下文用一具體實(shí)例來說明本發(fā)明的實(shí)施例。每個(gè)指令周期包含四個(gè)Q時(shí)鐘周期Q1-Q4。四階段Q周期提供時(shí)序信號(hào)以協(xié)調(diào)每個(gè)指令周期的解碼、讀取、處理數(shù)據(jù)和寫入數(shù)據(jù)部分。
根據(jù)處理器100的一個(gè)實(shí)施例,處理器100并行執(zhí)行兩個(gè)操作其提取下一指令并執(zhí)行當(dāng)前指令。因此,同時(shí)發(fā)生兩個(gè)處理。接下來的事件序列可包含(例如)提取指令周期Q1提取指令Q2提取指令Q3提取指令Q4將指令鎖存在預(yù)取寄存器中,使PC遞增接下來的事件序列可包含(例如)單個(gè)操作數(shù)指令的執(zhí)行指令周期Q1將指令鎖存到IR中,解碼并確定操作數(shù)數(shù)據(jù)的地址Q2提取操作數(shù)Q3執(zhí)行由指令指定的功能并計(jì)算數(shù)據(jù)的目的地地址Q4將結(jié)果寫入到目的地接下來的事件序列可包含(例如)使用數(shù)據(jù)預(yù)取機(jī)制的雙操作數(shù)指令的執(zhí)行指令周期。這些指令同時(shí)預(yù)取來自X和Y數(shù)據(jù)存儲(chǔ)器的雙操作數(shù),并將其存儲(chǔ)在指令中指定的寄存器中。其同時(shí)允許對(duì)在先前周期期間提取的操作數(shù)的指令執(zhí)行。
Q1將指令鎖存到IR中,解碼并確定操作數(shù)數(shù)據(jù)的地址Q2.將操作數(shù)預(yù)取到指定的寄存器中,執(zhí)行指令中的操作Q3執(zhí)行指令中的操作,計(jì)算數(shù)據(jù)的目的地地址Q4完成執(zhí)行,將結(jié)果寫入到目的地安全分割圖3A-3C根據(jù)本發(fā)明的實(shí)施例描繪用于控制器的非易失性存儲(chǔ)器的組織。圖3A描繪程序存儲(chǔ)器的實(shí)施例。參看圖3A,程序存儲(chǔ)器包括重設(shè)和中斷服務(wù)程序(ISR)向量區(qū)域300、引導(dǎo)段存取區(qū)域305、引導(dǎo)段310、安全段存取區(qū)域315、安全段320和普通段325。
向量區(qū)域300可經(jīng)配置以將程序地址向量存儲(chǔ)到當(dāng)發(fā)生安全違規(guī)時(shí)會(huì)被調(diào)用的中斷服務(wù)程序。其可位于程序存儲(chǔ)器中的任何地方,包括在程序存儲(chǔ)器的第一128指令字中??墒褂门渲梦粊砼渲孟蛄繀^(qū)域300以當(dāng)控制器處于高安全模式下時(shí)允許或不允許寫入,或在較低安全模式下時(shí)允許寫入。
引導(dǎo)段310和引導(dǎo)段存取區(qū)域305包含程序存儲(chǔ)器中最安全的段。每一者存儲(chǔ)程序指令,所述程序指令可包含(例如)引導(dǎo)裝載程序或操作系統(tǒng),其取決于段的大小。引導(dǎo)段存取區(qū)域305可包含引導(dǎo)段310的子組,且在高安全模式下可包含一地址范圍,允許從較不安全段至所述地址范圍的程序流程控制變動(dòng)以執(zhí)行例如從安全段、普通段或外部存儲(chǔ)器對(duì)引導(dǎo)段的子程序調(diào)用。以這種方式,可根據(jù)包含在存儲(chǔ)在引導(dǎo)段存取區(qū)域中的指令中的安全過程來進(jìn)一步控制和處理對(duì)引導(dǎo)段的存取。還可依據(jù)控制器的安全配置來限制讀取和寫入引導(dǎo)段305和310的內(nèi)容??稍谛酒圃炱陂g或在制造后將引導(dǎo)段305和310的程序指令編程到程序存儲(chǔ)器中??刂破鞯呐渲梦贿€可經(jīng)編程以防止控制器用戶發(fā)現(xiàn)引導(dǎo)段中的程序指令,改變引導(dǎo)段中的程序指令或在不調(diào)用允許的引導(dǎo)段子程序的情況下執(zhí)行引導(dǎo)段中的程序指令,或引導(dǎo)控制器。
安全段320和安全段存取區(qū)域包含在程序存儲(chǔ)器中的另一安全段。每一者存儲(chǔ)程序指令,所述程序指令可包含(例如)第三方軟件,例如在控制器經(jīng)編程以執(zhí)行的普通程序代碼中可由控制器用戶調(diào)用的有用的函數(shù)或算法庫。安全段320和315的大小和其存在狀態(tài)取決于配置位的設(shè)定。安全段存取區(qū)域315可包含安全段320的子組,且在高安全模式下可包含一地址范圍,允許從存儲(chǔ)器的較不安全段至所述地址范圍的程序流程控制變動(dòng)以執(zhí)行例如從普通段或外部存儲(chǔ)器對(duì)所述安全段的子程序調(diào)用。以這種方式,可根據(jù)包含在存儲(chǔ)在引導(dǎo)段存取區(qū)域中的指令中的安全過程來進(jìn)一步控制和處理對(duì)安全段的存取。引導(dǎo)段可經(jīng)配置以在沒有限制的情況下存取安全段??梢罁?jù)控制器的安全配置來限制讀取和寫入安全段315和320??稍谛酒圃炱陂g或在制造后將安全段315和320的程序指令編程到程序存儲(chǔ)器中??刂破鞯呐渲梦贿€可經(jīng)編程以防止控制器用戶發(fā)現(xiàn)安全段中的程序指令,改變引導(dǎo)段中的程序指令或在不調(diào)用允許的安全段子程序的情況下執(zhí)行安全段中的程序指令,或引導(dǎo)控制器。以這種方式,即使在控制器用戶使用控制器中所包含的第三方代碼的功能時(shí),第三方提供的和控制器中包含的程序代碼也可受到保護(hù)免被控制器用戶發(fā)現(xiàn)。
普通段325可具有比安全段和引導(dǎo)段更低的安全級(jí)。普通段可存儲(chǔ)程序指令,所述程序指令包含(例如)使控制器在更大系統(tǒng)中操作的系統(tǒng)級(jí)程序和例行程序的用戶軟件。普通段325的大小和其存在狀態(tài)取決于配置位的設(shè)定。普通段325通常存儲(chǔ)大多數(shù)的程序指令。引導(dǎo)段和安全段可經(jīng)配置以在不受限制的情況下存取普通段??梢罁?jù)控制器的安全配置來限制讀取和寫入普通段325??稍谛酒圃炱陂g或在制造后將普通段325的程序指令編程到程序存儲(chǔ)器中??刂破鞯呐渲梦贿€可經(jīng)編程以防止控制器用戶發(fā)現(xiàn)普通段中的程序指令,改變普通段中的程序指令或執(zhí)行普通段中的程序指令。以這種方式,普通段中提供的程序代碼可受到保護(hù)免被控制器用戶發(fā)現(xiàn)。
圖3B描繪作為外部段(ES)330的外部存儲(chǔ)器。外部段330可存儲(chǔ)經(jīng)設(shè)計(jì)以在根據(jù)本發(fā)明的實(shí)施例的安全控制器中操作的程序指令。ES具有最低的安全級(jí)且可經(jīng)配置以使得其不能直接跳到或調(diào)用BS或SS中的例行程序。相反,ES僅可跳到或調(diào)用GS中的例行程序。
圖3C描繪數(shù)據(jù)存儲(chǔ)器的非易失性區(qū)。其可包括普通段數(shù)據(jù)區(qū)350、安全段數(shù)據(jù)區(qū)355、引導(dǎo)段數(shù)據(jù)區(qū)360、測試代碼段365、unit_ID區(qū)370和配置寄存器區(qū)375。普通段數(shù)據(jù)區(qū)350可經(jīng)配置以產(chǎn)生普通代碼段325所需的數(shù)據(jù)區(qū)。當(dāng)存在時(shí),區(qū)350中的數(shù)據(jù)可受保護(hù)以免被存儲(chǔ)在存儲(chǔ)器的未受保護(hù)或較不受保護(hù)區(qū)域(例如,外部段330)中的代碼讀取或?qū)懭搿?br>
安全段數(shù)據(jù)區(qū)355可經(jīng)配置以產(chǎn)生一個(gè)或一個(gè)以上安全代碼段320所需的數(shù)據(jù)區(qū)。當(dāng)存在時(shí),區(qū)355中的數(shù)據(jù)可受保護(hù)以免被存儲(chǔ)在存儲(chǔ)器的未受保護(hù)或較不受保護(hù)區(qū)域(例如,普通段325或外部段330)中的代碼讀取或?qū)懭搿?shù)據(jù)可以是有用的常數(shù)、系數(shù)、密鑰或其他有用數(shù)據(jù)。
引導(dǎo)段數(shù)據(jù)區(qū)360可經(jīng)配置以產(chǎn)生由引導(dǎo)代碼段310所需的數(shù)據(jù)區(qū)。當(dāng)存在時(shí),區(qū)360中的數(shù)據(jù)可受保護(hù)以免被存儲(chǔ)在存儲(chǔ)器的未受保護(hù)或較不受保護(hù)區(qū)域(例如,安全段320、普通段325或外部段330)中的代碼讀取或?qū)懭?。所述?shù)據(jù)可以是有用的常數(shù)、系數(shù)、密鑰或其他有用數(shù)據(jù)。
測試代碼段365可存儲(chǔ)用于測試控制器的操作的代碼。unit_ID區(qū)370可用于存儲(chǔ)與特定的控制器相關(guān)的信息,例如部件號(hào)、批號(hào)、廠家號(hào)、制造參數(shù)、序列號(hào)或其他唯一標(biāo)識(shí)符以及任何其他有用信息。
配置寄存器375可用于存儲(chǔ)控制器的安全設(shè)定,其確定與存儲(chǔ)器的每一段相關(guān)聯(lián)的存在、大小和安全級(jí)。圖4描繪可根據(jù)本發(fā)明的實(shí)施例使用的一組說明性配置寄存器。配置寄存器可在制造零件期間被硬線連接,或在制造期間或制造后被編程。
參看圖4,配置寄存器可包括以下內(nèi)容。引導(dǎo)段大小/安全寄存器400、安全段大小/安全寄存器405、普通段大小/安全寄存器410。這些寄存器中的每一者可以是任何適宜的大小并將關(guān)于是否應(yīng)產(chǎn)生任何這些安全段的信息傳達(dá)給控制器,且如果將產(chǎn)生任何段,那么將傳達(dá)關(guān)于對(duì)應(yīng)的大小和其安全級(jí)的信息。根據(jù)本發(fā)明的一個(gè)實(shí)施例,寄存器400-405包括定義七個(gè)設(shè)定的三位。對(duì)于引導(dǎo)段1-沒有引導(dǎo)段2-具有標(biāo)準(zhǔn)安全性的383指令字引導(dǎo)段3-具有高安全性的383指令字引導(dǎo)段4-具有標(biāo)準(zhǔn)安全性的1839指令字引導(dǎo)段5-具有高安全性的1839指令字引導(dǎo)段6-具有標(biāo)準(zhǔn)安全性的3867指令字引導(dǎo)段7-具有高安全性的3867指令字引導(dǎo)段對(duì)于安全段1-沒有引導(dǎo)段
2-具有標(biāo)準(zhǔn)安全性的3584指令字安全段3-具有高安全性的3584指令字安全段4-具有標(biāo)準(zhǔn)安全性的6144指令字安全段5-具有高安全性的6144指令字安全段6-具有標(biāo)準(zhǔn)安全性的12228指令字安全段7-具有高安全性的12228指令字安全段引導(dǎo)段可在重設(shè)和ISR段之后就開始,或者可位于非易失性存儲(chǔ)器的另一部分中。安全段可在引導(dǎo)段之后就開始,或者可位于非易失性存儲(chǔ)器的另一部分中。另外,可將任何數(shù)目的位用于寄存器400至405來指定一個(gè)或一個(gè)以上段的大小、其在存儲(chǔ)器中的位置和/或相應(yīng)的安全級(jí)。
可以與安全段和引導(dǎo)段完全相同的方式來配置普通段?;蛘?,普通段可經(jīng)配置以在大小上包含未由引導(dǎo)段和安全段占用的非易失性程序存儲(chǔ)器的剩余部分。在后一情況下,可使用兩位來配置普通段安全位以定義三個(gè)模式1-不受保護(hù)2-保護(hù)級(jí)標(biāo)準(zhǔn)3-保護(hù)級(jí)高。
BWRP寄存器415是寫入啟用/禁用寄存器。通過將此寄存器設(shè)定為1或0,控制器可經(jīng)配置以禁用對(duì)引導(dǎo)段的所有數(shù)據(jù)寫入,使得引導(dǎo)段中的代碼不會(huì)被覆寫。SWRP寄存器420和GWRP寄存器425也是寫入啟用/禁用寄存器。通過將這些寄存器設(shè)定為1或0,控制器可經(jīng)配置以分別禁用對(duì)安全段和普通段的所有數(shù)據(jù)寫入,使得引導(dǎo)段中的代碼不會(huì)被覆寫。
EBS和ESS寄存器430和435分別存儲(chǔ)可對(duì)應(yīng)于控制器的數(shù)據(jù)非易失性存儲(chǔ)器中的引導(dǎo)段數(shù)據(jù)和安全段數(shù)據(jù)的存在、大小和位置的值。這些區(qū)域一般不會(huì)產(chǎn)生,除非已在程序存儲(chǔ)器中產(chǎn)生對(duì)應(yīng)的引導(dǎo)段和安全段,且僅可由那些對(duì)應(yīng)的段存取。存儲(chǔ)器中的數(shù)據(jù)的位置可作為具有特定位的數(shù)據(jù)的制造的一部分而被預(yù)定,以將存儲(chǔ)器的預(yù)定部分分配給引導(dǎo)段或安全段,或使其可用于其他用途。一旦經(jīng)分配,從未授權(quán)段對(duì)存儲(chǔ)器的受保護(hù)區(qū)域的未授權(quán)讀取將讀取為0或1或某些不會(huì)反映數(shù)據(jù)的實(shí)際值的其他值。從未授權(quán)段對(duì)存儲(chǔ)器的受保護(hù)區(qū)域的未授權(quán)寫入將不會(huì)起始一編程序列且將導(dǎo)致一個(gè)或一個(gè)以上無操作(NOP)周期?;蛘?,可調(diào)用陷阱例程。
RBS和RSS寄存器440和445分別存儲(chǔ)可對(duì)應(yīng)于控制器的隨機(jī)存取存儲(chǔ)器中的引導(dǎo)段數(shù)據(jù)和安全段數(shù)據(jù)的存在、大小和位置的值。這些區(qū)域一般不會(huì)產(chǎn)生,除非已在程序存儲(chǔ)器中產(chǎn)生對(duì)應(yīng)的引導(dǎo)段和安全段,且僅可由那些對(duì)應(yīng)的段存取。存儲(chǔ)器中的數(shù)據(jù)的位置可作為具有特定位的數(shù)據(jù)的制造的一部分而被預(yù)定,以將存儲(chǔ)器的預(yù)定部分分配給引導(dǎo)段或安全段,或使其可用于其他用途。一旦經(jīng)分配,從未授權(quán)段對(duì)存儲(chǔ)器的受保護(hù)區(qū)域的未授權(quán)讀取將讀取為0或1或某些不會(huì)反映數(shù)據(jù)的實(shí)際值的其他值。從未授權(quán)段對(duì)存儲(chǔ)器的受保護(hù)區(qū)域的未授權(quán)寫入將不會(huì)起始一編程序列且將導(dǎo)致一個(gè)或一個(gè)以上無操作(NOP)周期?;蛘?,可調(diào)用陷阱例程。存儲(chǔ)在引導(dǎo)段和安全段中的代碼可改變RBS和RSS寄存器中的值以當(dāng)不需要受保護(hù)的相應(yīng)的RAM段時(shí)釋放這些段。
圖5描繪當(dāng)出現(xiàn)會(huì)導(dǎo)致安全違規(guī)的處理流程變動(dòng)時(shí),用于監(jiān)視控制器的處理流程并實(shí)施安全措施的安全邏輯的實(shí)施例。這一般會(huì)以以下方式出現(xiàn)從程序存儲(chǔ)器的較不安全區(qū)域(例如普通段)跳到或調(diào)用存儲(chǔ)器的較安全區(qū)域(例如引導(dǎo)段或安全段);從程序存儲(chǔ)器的較不安全區(qū)域到存儲(chǔ)器的較安全區(qū)域的中斷向量;程序計(jì)數(shù)器的正常遞增,其導(dǎo)致由控制器執(zhí)行的指令從程序存儲(chǔ)器的較不安全區(qū)域轉(zhuǎn)變到程序存儲(chǔ)器的較安全區(qū)域。
參看圖5,使用流程控制安全邏輯520實(shí)施針對(duì)未授權(quán)程序流程變動(dòng)的安全措施。流程控制安全邏輯從控制器核心中的程序計(jì)數(shù)器500和指令提取/解碼邏輯510接收輸入。其還從配置寄存器BSS 400、SSS 405和GSS 410接收輸入,所述寄存器指定引導(dǎo)段、安全段和普通段在程序存儲(chǔ)器中的大小和位置。在控制器的正常操作期間,程序計(jì)數(shù)器中的值在連續(xù)的處理器周期中遞增,且指令提取/解碼單元提取由存儲(chǔ)在程序計(jì)數(shù)器中的地址值指定的程序指令。
接著通過控制器的執(zhí)行單元中的一者在連續(xù)的時(shí)鐘周期中執(zhí)行指令(盡管可并行執(zhí)行)。在任何給定時(shí)間,所執(zhí)行的指令流將駐存在存儲(chǔ)器的一個(gè)安全區(qū)域中,例如普通段中。某些程序指令將通過將新值寫入程序計(jì)數(shù)器中而導(dǎo)致處理流程變動(dòng)。實(shí)例是跳躍指令和子程序調(diào)用指令。
當(dāng)程序計(jì)數(shù)器500中的變動(dòng)導(dǎo)致處理器試圖提取并執(zhí)行安全級(jí)比對(duì)應(yīng)于當(dāng)前處理的指令流的段更高的段中的相應(yīng)指令時(shí),流程控制安全邏輯基于其輸入產(chǎn)生陷阱標(biāo)志。因此,流程控制安全邏輯520將存儲(chǔ)為程序計(jì)數(shù)器500的當(dāng)前值的程序存儲(chǔ)器地址與寄存器530-540和將執(zhí)行的指令比較,以確定當(dāng)前安全級(jí)(即,引導(dǎo)、安全或普通)。流程控制安全邏輯520還將存儲(chǔ)為程序計(jì)數(shù)器500的下一值的程序存儲(chǔ)器地址與寄存器530-540和將執(zhí)行的指令比較,以確定用于執(zhí)行的下一順序程序指令的安全級(jí)(即,引導(dǎo)、安全或普通)?;谶@些比較,當(dāng)程序計(jì)數(shù)器變化到從較低安全段到較高安全段的值時(shí),流程控制安全邏輯產(chǎn)生陷阱標(biāo)志525。
當(dāng)普通段調(diào)用具有較高安全級(jí)的段內(nèi)的子程序時(shí),此操作方法有個(gè)例外。例如當(dāng)普通段調(diào)用安全段內(nèi)的(例如)第三方算法的子程序,或調(diào)用引導(dǎo)段內(nèi)的(例如)加密子程序的子程序時(shí),會(huì)出現(xiàn)這種情況。在這些情況下,流程控制安全邏輯可允許基于指令、調(diào)用指令的類型和在預(yù)定范圍(例如,程序安全段存取區(qū)域315或引導(dǎo)段存取區(qū)域305)內(nèi)的程序計(jì)數(shù)器地址變化值而發(fā)生程序流程變動(dòng)。
當(dāng)產(chǎn)生陷阱標(biāo)志525時(shí),其導(dǎo)致處理器跳到相應(yīng)的陷阱例程。根據(jù)本發(fā)明的實(shí)施例,陷阱例程是存儲(chǔ)在程序存儲(chǔ)器的第一128位中的控制器重設(shè)程序。然而應(yīng)了解,此陷阱例程可存儲(chǔ)在程序存儲(chǔ)器中的任何地方。
圖6描繪當(dāng)存取將導(dǎo)致安全違規(guī)時(shí),用于監(jiān)視對(duì)控制器的存儲(chǔ)器的存取并實(shí)施安全措施的安全邏輯的實(shí)施例。此一般會(huì)以以下方式出現(xiàn)由駐存在程序存儲(chǔ)器的較不安全區(qū)域中的程序指令試圖對(duì)安全存儲(chǔ)器位置的讀取,或由駐存在程序存儲(chǔ)器的較不安全區(qū)域中的程序指令試圖對(duì)安全存儲(chǔ)器位置的寫入。
參看圖6,存儲(chǔ)器存取控制邏輯610插入在指令執(zhí)行單元與寄存器600和存儲(chǔ)器615(其可包括非易失性存儲(chǔ)器和/或隨機(jī)存取存儲(chǔ)器(RAM))之間的路徑中。存儲(chǔ)器陣列615顯示為單個(gè)功能單元。然而,應(yīng)了解,用于非易失性存儲(chǔ)器和RAM的存儲(chǔ)器陣列將在實(shí)體上分離,且當(dāng)兩者都存在時(shí)通過單獨(dú)的地址總線予以單獨(dú)編址。
指令執(zhí)行單元和寄存器經(jīng)由取決于數(shù)據(jù)總線的數(shù)目和可由控制器存取的存儲(chǔ)器陣列的數(shù)目的一個(gè)或一個(gè)以上地址總線而耦合到存儲(chǔ)器陣列615。數(shù)據(jù)總線耦合在指令執(zhí)行單元與寄存器600和讀取/寫入存取多工器之間。讀取/寫入存取多工器用于從陣列中讀取數(shù)據(jù)并將其置于適當(dāng)數(shù)據(jù)總線上,且從適當(dāng)?shù)臄?shù)據(jù)總線將數(shù)據(jù)寫入陣列。
存取控制安全邏輯610耦合在配置寄存器400-445和讀取/寫入存取多工器之間。當(dāng)試圖讀取或?qū)懭氪鎯?chǔ)器陣列時(shí),存取控制安全邏輯610確定對(duì)應(yīng)于指令的安全級(jí),其根據(jù)本發(fā)明的實(shí)施例一般為引導(dǎo)、安全或普通,盡管可包括額外的安全性標(biāo)識(shí)?;谟芍噶钪付ǖ闹噶畹拇鎯?chǔ)器地址和所述位置的相應(yīng)安全級(jí)來確定安全級(jí)。
在試圖讀取或?qū)懭氪鎯?chǔ)器陣列時(shí),存取控制安全邏輯確定所述讀取或?qū)懭胧欠衽c根據(jù)BWRP、SWRP、GWRP寄存器而不被允許寫入的存儲(chǔ)器位置相關(guān)聯(lián),或確定所述讀取或?qū)懭胧欠衽c關(guān)聯(lián)于比讀取/寫入指令的安全級(jí)更高的安全級(jí)的存儲(chǔ)器位置相關(guān)聯(lián)。在任一情況下,存取控制安全邏輯產(chǎn)生到達(dá)讀取/寫入存取多工器的信號(hào),所述信號(hào)防止所述多工器執(zhí)行讀取或?qū)懭氩僮?。作為替代,所述讀取/寫入存取多工器防止寫入操作,從而導(dǎo)致NOP,或?qū)τ谖词跈?quán)讀取,迫使數(shù)據(jù)總線上為已知的數(shù)據(jù)(例如全0或全1)。
雖然已說明并描述本發(fā)明的特定實(shí)施例,但所屬領(lǐng)域的技術(shù)人員應(yīng)了解,在不違背本發(fā)明的精神和范疇的情況下,可對(duì)那些實(shí)施例作變動(dòng)。舉例來說,本發(fā)明可應(yīng)用于微處理器、微控制器、數(shù)字信號(hào)處理器或混合物(例如數(shù)字信號(hào)控制器),且可應(yīng)用于這些芯片上的存儲(chǔ)器的任何段。
權(quán)利要求
1.一種用于保護(hù)存儲(chǔ)器中的代碼的控制器,其包含配置位,其定義程序存儲(chǔ)器的復(fù)數(shù)個(gè)段,所述復(fù)數(shù)個(gè)段包括一引導(dǎo)代碼段和一安全代碼段;和安全邏輯,其耦合到所述配置位以用于防止因另一存儲(chǔ)器段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)受保護(hù)段進(jìn)行存取。
2.根據(jù)權(quán)利要求1所述的控制器,其中所述安全邏輯防止因其他段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)所述引導(dǎo)代碼段進(jìn)行存取。
3.根據(jù)權(quán)利要求2所述的控制器,其中所述配置位進(jìn)一步定義一普通代碼段;且其中所述安全邏輯防止因所述普通代碼段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)所述安全代碼段進(jìn)行存取。
4.根據(jù)權(quán)利要求3所述的控制器,其中所述配置位進(jìn)一步定義非易失性存儲(chǔ)器中的引導(dǎo)段受保護(hù)數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的控制器,其中所述配置位進(jìn)一步定義非易失性存儲(chǔ)器中的安全段受保護(hù)數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的控制器,其中所述配置位進(jìn)一步定義隨機(jī)存取存儲(chǔ)器中的引導(dǎo)段受保護(hù)數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的控制器,其中所述配置位進(jìn)一步定義隨機(jī)存取存儲(chǔ)器中的安全段受保護(hù)數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的控制器,其進(jìn)一步包含防止對(duì)所述引導(dǎo)段進(jìn)行存取的存儲(chǔ)器存取控制邏輯。
9.一種用于保護(hù)存儲(chǔ)器中的代碼的處理器,其包含配置位,其定義程序存儲(chǔ)器的復(fù)數(shù)個(gè)段,所述復(fù)數(shù)個(gè)段包括一引導(dǎo)代碼段和一安全代碼段;和安全邏輯,其耦合到所述配置位以用于防止因另一存儲(chǔ)器段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)受保護(hù)段進(jìn)行存取。
10.根據(jù)權(quán)利要求9所述的處理器,其中所述安全邏輯防止因其他段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)所述引導(dǎo)代碼段進(jìn)行存取。
11.根據(jù)權(quán)利要求10所述的處理器,其中所述配置位進(jìn)一步定義一普通代碼段;且其中所述安全邏輯防止因所述普通代碼段執(zhí)行的代碼引起的程序流程變動(dòng)而導(dǎo)致對(duì)所述安全代碼段進(jìn)行存??;
12.根據(jù)權(quán)利要求11所述的處理器,其中所述配置位進(jìn)一步定義非易失性存儲(chǔ)器中的引導(dǎo)段受保護(hù)數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的處理器,其中所述配置位進(jìn)一步定義非易失性存儲(chǔ)器中的安全段受保護(hù)數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的處理器,其中所述配置位進(jìn)一步定義隨機(jī)存取存儲(chǔ)器中的引導(dǎo)段受保護(hù)數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的處理器,其中所述配置位進(jìn)一步定義隨機(jī)存取存儲(chǔ)器中的安全段受保護(hù)數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的處理器,其進(jìn)一步包含防止對(duì)所述引導(dǎo)段進(jìn)行存取的存儲(chǔ)器存取控制邏輯。
17.一種用于保護(hù)一處理器存儲(chǔ)器中的代碼的方法,其包含檢測一程序流程變動(dòng);和防止通過一具有一不同安全級(jí)的段執(zhí)行的程序代碼對(duì)存儲(chǔ)器的一受保護(hù)段進(jìn)行存取。
18.根據(jù)權(quán)利要求17所述的方法,其進(jìn)一步包含定義復(fù)數(shù)個(gè)存儲(chǔ)器段和其安全級(jí)的配置位。
19.根據(jù)權(quán)利要求18所述的方法,其中所述存儲(chǔ)器的受保護(hù)段包括程序代碼。
20.根據(jù)權(quán)利要求18所述的方法,其中所述存儲(chǔ)器的受保護(hù)段包括數(shù)據(jù)。
全文摘要
一種控制器提供多種安全模式以用于保護(hù)存儲(chǔ)在存儲(chǔ)器中的程序代碼和數(shù)據(jù),并確保所述保護(hù)在控制器的所有正常操作條件期間都有效。所述控制器包括配置設(shè)定,其將程序存儲(chǔ)器分段為一引導(dǎo)段、一安全段和一普通段,每一段具有一特定的安全級(jí),包括未增強(qiáng)的保護(hù)措施。所述引導(dǎo)代碼段(BS)是最安全的,且可用于存儲(chǔ)一安全引導(dǎo)裝載程序。所述安全代碼段(SS)適用于存儲(chǔ)來自第三方的專有算法,例如用于在語音識(shí)別應(yīng)用中將環(huán)境噪音與語音分離的算法。所述普通代碼段(GS)具有最低的安全性。所述控制器經(jīng)配置以防止會(huì)導(dǎo)致較高安全段中所存儲(chǔ)的程序代碼被存儲(chǔ)在較低安全性的段中的程序代碼存取的程序流程變動(dòng)。另外,所述處理器可經(jīng)配置以使例如快閃存儲(chǔ)器的程序存儲(chǔ)器與隨機(jī)存取存儲(chǔ)器(RAM)的相關(guān)聯(lián)安全數(shù)據(jù)部分對(duì)應(yīng)于BS、SS和GS。防止了從一較低安全級(jí)自與一較高安全級(jí)相關(guān)聯(lián)的程序存儲(chǔ)器或RAM中讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入所述程序存儲(chǔ)器或RAM中的嘗試15。
文檔編號(hào)G06F12/14GK1954302SQ200580015942
公開日2007年4月25日 申請日期2005年5月16日 優(yōu)先權(quán)日2004年5月17日
發(fā)明者布賴恩·博爾斯, 蘇密特·米特拉, 史蒂文·馬什 申請人:密克羅奇普技術(shù)公司