專利名稱:用于提高soc芯片系統(tǒng)安全的存儲保護控制器及方法
技術領域:
本發(fā)明涉及SOC芯片安全技術,尤其是涉及一種在SOC芯片中提高程序代碼運行安全的存儲保護控制器,以及提高SOC芯片系統(tǒng)安全的方法。
背景技術:
SOC (System on Chip)芯片在信息社會的各個領域中應用廣泛,其主要功能包括對用戶保密數(shù)據(jù)的安全存儲、安全程序功能權(quán)限設置、電子簽名、身份鑒別以及數(shù)據(jù)加解密
坐寸ο正因為SOC芯片中數(shù)據(jù)的重要性,各種針對SOC芯片的攻擊手段層出不窮。軟件攻擊通常利用安全芯片的標準接口協(xié)議、加密算法以及這些算法本身的安全漏洞實現(xiàn)攻擊。 軟件攻擊中,最常見的攻擊主要是程序篡改、堆棧攻擊、跳轉(zhuǎn)攻擊、中斷攻擊,或者通過調(diào)試接口跟蹤程序執(zhí)行過程等。攻擊者通過軟件攻擊破壞安全軟件采取的安全措施,獲取保密信息,或達到其它目的。因此保證程序的合法性和完整性是軟件安全的重要措施。如圖I所示,保密數(shù)據(jù)、安全程序、普通程序分別存儲在SOC芯片中不同的地址空間;系統(tǒng)安全要求“處理器對保密數(shù)據(jù)的訪問操作,必須在完整執(zhí)行安全程序的過程中進行,且要保證訪問后保密數(shù)據(jù)不被泄漏”。為了防止處理器在訪問保密數(shù)據(jù)過程中存在數(shù)據(jù)泄漏的情況,“安全程序”內(nèi)包含系統(tǒng)安全環(huán)境配置過程
首先,在安全程序的起始,會進行系統(tǒng)安全環(huán)境配置,例如關閉調(diào)試接口,關閉中斷等操作,防止攻擊者通過調(diào)試接口或允許中斷服務程序跟蹤或破壞安全程序的執(zhí)行,防止安全程序的安全設置操作或清除操作被跳過。其次,在安全程序的結(jié)尾,會清除內(nèi)部相關狀態(tài)和寄存器,確保保密數(shù)據(jù)未殘留在系統(tǒng)未保護的區(qū)域,造成數(shù)據(jù)泄漏。因此,如果處理器不是完整執(zhí)行“安全程序”,很有可能導致上述的“安全程序”的系統(tǒng)安全環(huán)境配置過程沒有進行或者配置不完全,或者清除操作未完全執(zhí)行從而導致數(shù)據(jù)泄漏。申請?zhí)枮?00510070869. 4的中國專利申請,提供了一種存儲器數(shù)據(jù)保護的方法, 其將存儲空間分為可信區(qū)與非可信區(qū),針對處于不同的存儲空間的代碼設置不同的訪問屬性。但該技術方案存在如下缺陷可信區(qū)與非可信區(qū)之間的代碼調(diào)用關系沒有進行限制; 非可信區(qū)的程序代碼可以通過跳轉(zhuǎn)到可信區(qū)執(zhí)行取得更高訪問權(quán)限,從而獲取保密數(shù)據(jù)。申請?zhí)枮?01010215652.9的中國專利申請,提供了一種保證程序完整性的嵌入式系統(tǒng)及其實現(xiàn)方法,通過檢測存儲器指定區(qū)域的內(nèi)容,使用標準散列函數(shù)計算得到該區(qū)域內(nèi)容的散列值,與預設的散列值進行對比,如果二者不一致,則表明程序被篡改。但該技術方案也有一定的局限性首先,每次散列運算需要把指定區(qū)域的內(nèi)容全部讀出,實時性較差,在校驗的過程中存在被攻擊的可能性;其次,該技術方案需要讀取程序內(nèi)容,會對系統(tǒng)效率有一定的影響。因此,為了增強SOC芯片中的軟件安全,有必要采取一些保障軟件運行安全的方法,即保障安全程序運行的安全操作和特殊訪問權(quán)限,又要預防攻擊者采用跳轉(zhuǎn)等攻擊方式破壞安全程序的執(zhí)行。
發(fā)明內(nèi)容
本發(fā)明提出一種提高程序代碼運行安全的存儲保護控制器及對應的方法,通過對存儲保護區(qū)域的訪問屬性進行個性化配置,防止不同代碼空間的非法跳轉(zhuǎn),以解決目前SOC 芯片存在易于受到攻擊而安全性不高的技術問題。本發(fā)明采用如下技術方案實現(xiàn)一種用于提高SOC芯片系統(tǒng)安全的存儲保護控制器,其包括
代碼空間配置單元,用于將處理器的程序代碼空間劃分為若干個代碼空間;
代碼空間關系配置單元,用于設定每個代碼空間對應的入口地址;
存儲保護區(qū)域配置單元,用于將存儲空間劃分為若干個存儲保護區(qū)域,并獨立設置處理器分別在不同代碼空間執(zhí)行程序時各個存儲保護區(qū)域的訪問權(quán)限屬性;
跳轉(zhuǎn)保護單元,用于判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示;
存儲保護單元,用于監(jiān)視當前總線對存儲空間的訪問是否異常,如果異常,則阻止該總線訪問,避免處理器的程序指針從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止對存儲保護區(qū)域的異常訪問。其中,所述存儲保護控制器還包括總線監(jiān)視器,用于提取當前總線訪問存儲空間的地址、總線主設備編號及其附加信息。其中,所述SOC芯片系統(tǒng)具有多個處理器,每個處理器的代碼空間具有單獨設定的入口地址。其中,每個代碼空間具有其它代碼空間跳轉(zhuǎn)到該代碼空間的可編程的許可位,以及其它代碼空間跳轉(zhuǎn)到該代碼空間的入口地址的子許可配置位。另外,本發(fā)明還提出一種用于提高SOC芯片系統(tǒng)安全的方法,其包括步驟
將處理器的程序代碼空間劃分為若干個代碼空間,設定每個代碼空間對應的入口地
址;
將存儲空間劃分為若干個存儲保護區(qū)域,單獨設置處理器分別在各個代碼空間執(zhí)行程序代碼時對存儲保護區(qū)域的訪問權(quán)限屬性;
判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示;
監(jiān)視當前總線對存儲空間的訪問是否異常,如果異常,則阻止該總線訪問,避免處理器的程序指針從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止對存儲保護區(qū)域的異常訪問。其中,所述監(jiān)視當前總線對存儲空間的訪問是否異常的步驟包括
確定當前總線訪問地址對應的存儲保護區(qū)域;
確定當前程序指針對應的代碼空間;
根據(jù)處理器在該代碼空間執(zhí)行程序時對該存儲保護區(qū)域的訪問權(quán)限屬性判斷當前訪問是否異常如果當前總線訪問是讀訪問,且對應的讀訪問權(quán)限是禁止的,則當前總線訪問異常;如果當前總線訪問是寫訪問,且對應的寫訪問權(quán)限是禁止的,則當前總線訪問異常。其中,當處理器的程序指針發(fā)生跳轉(zhuǎn)時,如果新程序指針匹配對應的代碼空間的一個入口地址時,則該代碼空間允許處理器的新程序指針從原代碼空間跳入。其中,當發(fā)生訪問異常時,所述SOC芯片系統(tǒng)采取中斷或系統(tǒng)復位的安全處理措施。與現(xiàn)有技術相比,本發(fā)明具有如下有益效果
本發(fā)明提出的一種提高程序代碼運行安全的存儲保護控制器,能有效預防處理器執(zhí)行不期望的程序跳轉(zhuǎn)操作,確保處理器從一個安全的入口地址開始執(zhí)行安全程序,有益于保障處理器完整執(zhí)行安全程序,提高SOC芯片的抗攻擊能力。同時,本發(fā)明通過定義處理器在不同代碼區(qū)執(zhí)行程序時對不同存儲區(qū)域的訪問權(quán)限,約束處理器在執(zhí)行不同代碼區(qū)的權(quán)限行為,為程序代碼劃分為安全代碼區(qū)和普通代碼區(qū)提供了有力的硬件保證,能有效提高程序代碼運行的安全性。另外,本發(fā)明的代碼安全存儲保護控制器可以廣泛應用于不同類型的SOC芯片中。
圖I是通過安全程序獲取保密數(shù)據(jù)的示意圖2是本發(fā)明用于SOC芯片的代碼安全存儲保護控制器結(jié)構(gòu)示意圖3是代碼空間跳轉(zhuǎn)示意圖4是代碼空間與存儲保護區(qū)域?qū)ΡC軘?shù)據(jù)讀寫控制示意圖5是本發(fā)明在SOC芯片系統(tǒng)中的位置示意圖。
具體實施例方式本發(fā)明提出一種用于SOC芯片的代碼安全存儲保護控制器,定義若干個代碼空間和存儲保護區(qū)域,并配置處理器在各代碼空間執(zhí)行程序代碼時對存儲保護區(qū)域的訪問權(quán)限屬性,避免處理器從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止系統(tǒng)對存儲保護區(qū)域的異常訪問。如圖2所示,本發(fā)明用于SOC芯片的代碼安全存儲保護控制器10包括代碼空間關系配置單元101,用來設定代碼空間配置單元102中各個代碼空間的入口地址,限制程序在各代碼區(qū)互相跳轉(zhuǎn)的行為;代碼空間配置單元102,用于將處理器的程序代碼空間劃分為若干個代碼空間,并將各個代碼空間的地址范圍指示給存儲保護單元106和跳轉(zhuǎn)保護單元104 ;存儲保護區(qū)域配置單元103,用來定義若干個存儲保護區(qū)域、定義處理器在各代碼空間運行程序時對多個存儲保護區(qū)域的指令訪問和數(shù)據(jù)訪問的訪問權(quán)限屬性以及系統(tǒng)總線主設備對存儲保護區(qū)域的訪問權(quán)限屬性,并將配置信息指示給存儲保護單元106 ;跳轉(zhuǎn)保護單元104,判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示,系統(tǒng)根據(jù)該指示采取適當?shù)陌踩幚泶胧?;總線監(jiān)視器105,用來提取當前總線訪問的地址、總線主設備編號及其它附加信息(例如,當前操作的主設備是處理器還是其它主設備,是指令操作還是數(shù)據(jù)操作,是讀還是寫等信息);存儲保護單元106,用來判斷當前總線訪問是否異常,如果異常則強制當前總線訪問無效,并產(chǎn)生訪問異常指示,系統(tǒng)根據(jù)該指示采取適當?shù)陌踩幚泶胧?。CN存儲保護單元106可以根據(jù)總線監(jiān)視器105提取的附加信息做進一步的訪問權(quán)限細分,也可以根據(jù)總線監(jiān)視器105提取的總線主設備編號選擇對應處理器的代碼空間及訪問權(quán)限屬性,從而判斷當前的操作是否是合法操作,是否需要進行保護動作。每個代碼空間的入口地址可以是多個,可以根據(jù)需求進行配置,且每個代碼空間都有其它代碼空間跳轉(zhuǎn)到該代碼空間的可編程的許可位,每個代碼空間都有其它代碼空間跳轉(zhuǎn)到該代碼空間的入口地址的子許可配置位。配置單元的配置信息在完成配置后,可以被鎖定,一旦完成鎖定操作。此代碼空間的配置信息不可以更改,除非復位整個系統(tǒng)。如圖3所示,不同代碼空間跳轉(zhuǎn)關系示意圖代碼空間# I配置如下允許代碼空間# 3程序代碼只能從其入口地址處跳入代碼空間# I,允許代碼空間# 2跳入代碼空間
#I ;代碼空間# 2配置如下允許代碼空間# 3程序代碼只能從其入口地址處跳入代碼空間# 2,允許代碼空間# I跳入代碼空間# 2 ;代碼空間# 3配置如下允許代碼空間# I程序代碼跳入代碼空間# 3,允許代碼空間# 2程序代碼跳入代碼空間# 3;根據(jù)配置,如果程序代碼從代碼空間# 3跳轉(zhuǎn)到代碼空間# I的非入口地址,或者從代碼空間# 3跳轉(zhuǎn)到代碼空間# 2的非入口地址,跳轉(zhuǎn)保護單元104將判定這些跳轉(zhuǎn)是異常的,產(chǎn)生跳轉(zhuǎn)異常指示,系統(tǒng)根據(jù)該指示采取適當?shù)陌踩幚泶胧?。其它情況下的跳轉(zhuǎn),跳轉(zhuǎn)保護單元104將判定為正常跳轉(zhuǎn)。如圖4所示,代碼空間# I存儲用戶的安全程序代碼,代碼空間# 2和代碼空間
#3存儲普通程序代碼。存儲保護區(qū)域# I存儲保密數(shù)據(jù)。為了防止保密數(shù)據(jù)泄漏,處理器只能在執(zhí)行代碼空間# I的安全程序時才能訪問存儲保護區(qū)域# I。為了實現(xiàn)這個保護功能,本發(fā)明具體配置如下存儲保護區(qū)域# I配置如下允許處理器執(zhí)行代碼空間# I程序時訪問存儲保護區(qū)域# 1,禁止處理器執(zhí)行代碼空間# 2程序時訪問存儲保護區(qū)域# 1, 禁止處理器執(zhí)行代碼空間# 3程序時訪問存儲保護區(qū)域# I。本發(fā)明的存儲保護單元106根據(jù)處理器的程序指針,判斷處理器在哪個程序代碼空間運行程序;根據(jù)總線監(jiān)視器105提供的當前總線地址,判斷當前總線訪問是否指向存儲保護區(qū)域# I ;根據(jù)總線監(jiān)視器提供的當前的總線主設備編號判斷當前總線訪問是否是處理器發(fā)起的訪問。存儲保護單元一旦檢測到當前的總線訪問是處理器發(fā)起的,且當前總線訪問地址指向存儲保護區(qū)域# 1,且處理器的程序指針指向代碼空間# 2或代碼空間
#3,存儲保護單元將產(chǎn)生訪問異常指示,系統(tǒng)將根據(jù)該異常指示及時采取適當?shù)陌踩幚泶胧?,從而防止處理器?zhí)行普通程序代碼時訪問存儲保護區(qū)域# 1,避免保密數(shù)據(jù)泄漏。如,針對本案圖I中提到的現(xiàn)有方案,若由本發(fā)明實現(xiàn)“處理器對保密數(shù)據(jù)的訪問操作,必須在完整執(zhí)行安全程序的過程中進行,且要保證訪問后保密數(shù)據(jù)不被泄漏”的系統(tǒng)安全要求,則具體實施如下將“安全程序”存放空間定義為代碼空間# 1,安全程序的起始地址定義為代碼空間# I的入口地址;將“普通程序”存放空間定義為代碼空間# 2 ;將 “保密數(shù)據(jù)”存放空間定義為存儲保護區(qū)域# I ;存儲保護區(qū)域# I配置為只有處理器執(zhí)行代碼空間# I時才能訪問存儲保護區(qū)域# I ;為代碼空間# I定義一個“入口地址”,其它程序只有通過其“入口地址”才能跳轉(zhuǎn)到代碼空間# I執(zhí)行程序,而入口地址就是“安全程序” 的起始地址,確?!鞍踩绦颉北煌暾麍?zhí)行。假設安全程序本身是可信任的,即安全程序采取了必要的安全措施,保證安全程序完整執(zhí)行,不會泄漏保密數(shù)據(jù)。因此,本發(fā)明能有效阻止處理器運行普通程序時直接訪問保密數(shù)據(jù),防止保密數(shù)據(jù)直接泄密;本發(fā)明能有效阻止處理器從普通程序代碼空間跳轉(zhuǎn)到安全程序代碼空間的非入口地址,防止攻擊者通過跳轉(zhuǎn)攻擊旁路掉安全程序的安全措施, 防止保密數(shù)據(jù)間接泄漏。另外,實際應用中,某些代碼空間經(jīng)常存儲了與SOC芯片安全配置相關的絕密用戶程序,由SOC芯片的發(fā)行商或者服務提供商專門設計的,且不可更改,比如用OTP、ROM等不可隨意擦除的存儲介質(zhì)來保存;用戶可以使用存儲保護區(qū)域來存儲保密數(shù)據(jù),只有處理器運行指定代碼空間內(nèi)絕密用戶程序時才能訪問保密數(shù)據(jù);而本發(fā)明提出代碼空間的概念,防止了終端用戶或者服務中間商通過異常執(zhí)行其它的程序而獲取服務提供商的保密信息,而造成安全環(huán)境破壞、服務提供商的經(jīng)濟利益受損等。如圖5所示,這是一個典型的SOC芯片的多處理器系統(tǒng),其中包括了處理器20、 處理器30、DMA控制器40等主設備以及SDRAM 60、Flash存儲器70以及OTP (One Time PiOgrammable)存儲器80等從設備,主設備和從設備通過總線矩陣50進行數(shù)據(jù)傳輸。存儲保護控制器10也作為一個從設備,掛接在SOC芯片的系統(tǒng)總線上,其主要任務為通過前述的保護機制對包含SDRAM 60、Flash存儲器70以及OTP存儲器80的存儲空間進行保護。一個具體的應用實施例如下“保密數(shù)據(jù)A”和“保密數(shù)據(jù)B”存儲在OTP存儲器80 中,“安全程序A”存放在OTP存儲器80中,“安全程序B”存放在Flash存儲器70中,用戶普通應用程序存放在SDRAM60中。系統(tǒng)安全要求第一,處理器A在運行“關鍵用戶程序 A”的過程中,才能對“保密數(shù)據(jù)A”進行訪問操作,且保證訪問完成后保密數(shù)據(jù)不被泄漏;第二,處理器B在運行“關鍵用戶程序B”的過程中,才能對“保密數(shù)據(jù)B”進行訪問操作,且保證訪問完成后保密數(shù)據(jù)不被泄漏。為了實現(xiàn)這個具體實施例中的安全要求,本實施例將存儲保護控制器10 (具體結(jié)構(gòu)參見圖2所示)可以采用如下的配置
代碼空間配置單元設置為“關鍵用戶程序A”存放地址空間定義為代碼空間# I ;“關鍵用戶程序B”存放地址空間定義為代碼空間# 2。存儲保護區(qū)域配置單元設置為“保密數(shù)據(jù)A”存放地址空間定義為存儲保護區(qū)域# I ;“保密數(shù)據(jù)B”存放地址空間定義為存儲保護區(qū)域# 2;允許處理器A執(zhí)行代碼空間# I程序時訪問存儲保護區(qū)域# 1,禁止處理器A 執(zhí)行非代碼空間# I程序時訪問存儲保護區(qū)域# 1,禁止處理器A以外的主設備訪問存儲保護區(qū)域# I ;允許處理器B執(zhí)行代碼空間# 2程序時訪問存儲保護區(qū)域# 2,禁止處理器 B執(zhí)行非代碼空間# 2程序時訪問存儲保護區(qū)域# 2,禁止處理器B以外的主設備訪問存儲保護區(qū)域# I。代碼空間關系配置單元設置為允許處理器A從其入口地址處跳入代碼空間# I,禁止處理器A從代碼空間# I的非入口地址處跳入代碼空間# I ;允許處理器B從其入口地址處跳入代碼空間# 2,禁止處理器B從代碼空間# 2的非入口地址處跳入代碼空間# 2。當一次總線訪問發(fā)生時,存儲保護單元根據(jù)總線監(jiān)視器輸出的當前總線訪問地址判斷當前訪問是否指向存儲保護區(qū)域# I或存儲保護區(qū)域#2。如果當前訪問指向存儲保護區(qū)域# I或存儲保護區(qū)域# 2,存儲保護單元進一步根據(jù)監(jiān)視器輸出的總線主設備編號判斷是哪個主設備發(fā)起訪問操作。如果當前主設備編號即不匹配處理器A的主設備編號, 也不匹配處理器B的主設備編號,則當前的總線訪問被禁止,并產(chǎn)生訪問異常指示信號。如果當前主設備編號匹配處理器A或處理器B的主設備編號,存儲保護單元進一步判斷處理器A或處理器B的程序指針指向的代碼空間和對應的訪問權(quán)限如果當前總線訪問是處理器A發(fā)起的,且處理器A的程序指針指向代碼空間# 1,當前總線訪問地址指向存儲保護區(qū)域# 1,則該訪問被允許;如果當前總線訪問是處理器B發(fā)起的,且處理器B的程序指針指向代碼空間# 2,當前總線訪問地址指向存儲保護區(qū)域# B,則該訪問被允許;其它任何情況下當前總線訪問被禁止,并產(chǎn)生訪問異常指示信號。同時,跳轉(zhuǎn)保護單元實時監(jiān)視處理器A和處理器B的程序指針變化,預防異常跳轉(zhuǎn)發(fā)生。如果處理器A的程序指針變化時,且變化情況不符合程序順序執(zhí)行時的程序指針變化規(guī)律,且變化前的程序指針指向代碼空間# I以外的代碼空間,而變化后的程序指針指向代碼空間# I的非入口地址的代碼空間,跳轉(zhuǎn)保護單元將判斷處理器A發(fā)生了程序跳轉(zhuǎn)異常,并產(chǎn)生跳轉(zhuǎn)異常指示。如果處理器B的程序指針變化時,且變化情況不符合程序順序執(zhí)行時的程序指針變化規(guī)律,且變化前的程序指針指向代碼空間# 2以外的代碼空間,而變化后的程序指針指向代碼空間# 2的非入口地址的的代碼空間,跳轉(zhuǎn)保護單元將判斷處理器B發(fā)生了程序跳轉(zhuǎn)異常,并產(chǎn)生跳轉(zhuǎn)異常指示。綜上,本發(fā)明提出的一種提高程序代碼運行安全的存儲保護控制器,能有效預防處理器執(zhí)行不期望的程序跳轉(zhuǎn)操作,確保處理器從一個安全的入口地址開始執(zhí)行安全程序,有益于保障處理器完整執(zhí)行安全程序,提高安全芯片的抗攻擊能力。同時,本發(fā)明能定義處理器在不同代碼區(qū)執(zhí)行程序時對不同存儲區(qū)域的訪問權(quán)限,約束處理器在執(zhí)行不同代碼區(qū)的權(quán)限行為,為程序代碼劃分為安全代碼區(qū)和普通代碼區(qū)提供了有力的硬件保證,能有效提高程序代碼運行的安全性。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種用于提高SOC芯片系統(tǒng)安全的存儲保護控制器,其特征在于,所述存儲保護控制器包括代碼空間配置單元,用于將處理器的程序代碼空間劃分為若干個代碼空間;代碼空間關系配置單元,用于設定每個代碼空間對應的入口地址;存儲保護區(qū)域配置單元,用于將存儲空間劃分為若干個存儲保護區(qū)域,并獨立設置處理器分別在不同代碼空間執(zhí)行程序時各個存儲保護區(qū)域的訪問權(quán)限屬性;跳轉(zhuǎn)保護單元,用于判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示;存儲保護單元,用于監(jiān)視當前總線對存儲空間的訪問是否異常,如果異常,則阻止該總線訪問,避免處理器的程序指針從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止對存儲保護區(qū)域的異常訪問。
2.根據(jù)權(quán)利要求I所述用于提高SOC芯片系統(tǒng)安全的存儲保護控制器,其特征在于,所述存儲保護控制器還包括總線監(jiān)視器,用于提取當前總線訪問存儲空間的地址、總線主設備編號及其附加信息。
3.根據(jù)權(quán)利要求I所述用于提高SOC芯片系統(tǒng)安全的存儲保護控制器,其特征在于,所述SOC芯片系統(tǒng)具有多個處理器,每個處理器的代碼空間具有單獨設定的入口地址。
4.根據(jù)權(quán)利要求I所述用于提高SOC芯片系統(tǒng)安全的存儲保護控制器,其特征在于,每個代碼空間具有其它代碼空間跳轉(zhuǎn)到該代碼空間的可編程的許可位,以及其它代碼空間跳轉(zhuǎn)到該代碼空間的入口地址的子許可配置位。
5.一種用于提高SOC芯片系統(tǒng)安全的方法,其特征在于,所述方法包括步驟將處理器的程序代碼空間劃分為若干個代碼空間,設定每個代碼空間對應的入口地址;將存儲空間劃分為若干個存儲保護區(qū)域,單獨設置處理器分別在各個代碼空間執(zhí)行程序代碼時對存儲保護區(qū)域的訪問權(quán)限屬性;判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示;監(jiān)視當前總線對存儲空間的訪問是否異常,如果異常,則阻止該總線訪問,避免處理器的程序指針從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止對存儲保護區(qū)域的異常訪問。
6.根據(jù)權(quán)利要求5所述用于提高SOC芯片系統(tǒng)安全的方法,其特征在于,所述監(jiān)視當前總線對存儲空間的訪問是否異常的步驟包括確定當前總線訪問地址對應的存儲保護區(qū)域;確定當前程序指針對應的代碼空間;根據(jù)處理器在該代碼空間執(zhí)行程序時對該存儲保護區(qū)域的訪問權(quán)限屬性判斷當前訪問是否異常如果當前總線訪問是讀訪問,且對應的讀訪問權(quán)限是禁止的,則當前總線訪問異常;如果當前總線訪問是寫訪問,且對應的寫訪問權(quán)限是禁止的,則當前總線訪問異常。
7.根據(jù)權(quán)利要求5所述用于提高SOC芯片系統(tǒng)安全的方法,其特征在于,當處理器的程序指針發(fā)生跳轉(zhuǎn)時,如果新程序指針匹配另一個代碼空間的一個入口地址時,則該代碼空間允許處理器的新程序指針從原代碼空間跳入。
8.根據(jù)權(quán)利要求5所述用于提高SOC芯片系統(tǒng)安全的方法,其特征在于,所述SOC芯片系統(tǒng)具有多個處理器,單獨設定每個處理器的代碼空間對應的入口地址。
9.根據(jù)權(quán)利要求5所述用于提高SOC芯片系統(tǒng)安全的方法,其特征在于,所述SOC芯片系統(tǒng)具有多個處理器,單獨設定每個處理器對各個存儲保護區(qū)域的訪問權(quán)限屬性。
10.根據(jù)權(quán)利要求5-9任何一項所述用于提高SOC芯片系統(tǒng)安全的方法,其特征在于, 當發(fā)生訪問異常時,所述SOC芯片系統(tǒng)采取中斷或系統(tǒng)復位的安全處理措施。
全文摘要
本發(fā)明公開一種用于提高SOC芯片系統(tǒng)安全的存儲保護控制器及方法。其中,所述方法包括步驟將處理器的程序代碼空間劃分為若干個代碼空間,設定每個代碼空間對應的入口地址;將存儲空間劃分為若干個存儲保護區(qū)域,單獨設置處理器分別在各個代碼空間執(zhí)行程序代碼時對存儲保護區(qū)域的訪問權(quán)限屬性;判斷處理器的程序指針是否發(fā)生跳轉(zhuǎn),并判斷跳轉(zhuǎn)是否異常,如果異常則產(chǎn)生跳轉(zhuǎn)異常指示;監(jiān)視當前總線對存儲空間的訪問是否異常,如果異常,則阻止該總線訪問,避免處理器的程序指針從一個代碼空間異常跳轉(zhuǎn)到另一個代碼空間執(zhí)行程序,防止對存儲保護區(qū)域的異常訪問。本發(fā)明能有效提高程序代碼運行的安全性,且可以廣泛應用于不同類型的SOC芯片中。
文檔編號G06F21/22GK102592083SQ201110444179
公開日2012年7月18日 申請日期2011年12月27日 優(yōu)先權(quán)日2011年12月27日
發(fā)明者王良清, 陶玉茂 申請人:深圳國微技術有限公司