本實(shí)用新型涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,具體涉及一種RISC架構(gòu)保密電路。
背景技術(shù):
:在計(jì)算機(jī)中執(zhí)行代碼和讀出代碼是兩個(gè)概念。CPU執(zhí)行代碼是將一串指令編碼翻譯成CPU動(dòng)作,而讀出代碼則是獲得這一串編碼的數(shù)值?;跀?shù)據(jù)和指令的存儲(chǔ)結(jié)構(gòu),SOC中CPU的結(jié)構(gòu)可以分為兩大類:哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)。本實(shí)用新型基于哈佛結(jié)構(gòu),哈佛結(jié)構(gòu)處理器具有指令和數(shù)據(jù)分開的特性,讀寫數(shù)據(jù)指令(load/store)只通過數(shù)據(jù)通道發(fā)命令,取指令只通過指令通道。如果CPU要把存儲(chǔ)器中的內(nèi)容讀出來則必須通過數(shù)據(jù)通道。隨著集成電路的發(fā)展,SOC應(yīng)用到了一些更加特定的領(lǐng)域。這些SOC被用來執(zhí)行一些特定的算法。如何保護(hù)固化在SOC中的這些算法變得尤為重要。目前的集成電路SOC一部分采用通用的存儲(chǔ)器和CPU,不具備存儲(chǔ)內(nèi)容的保護(hù)功能,而且CPU可以讀出自身執(zhí)行的代碼,不具備代碼保護(hù)功能。另外一部分SOC將整個(gè)存儲(chǔ)器全部保護(hù),沒有留出空間給第三方開發(fā),缺少靈活性。還有一部分SOC具備對存儲(chǔ)空間進(jìn)行分塊保護(hù)的功能,但不具備塊之間代碼互相調(diào)用的功能,塊之間不可互相訪問。申請?zhí)枮?01110444179.6的中國專利申請公開了一種SOC芯片系統(tǒng)安全的存儲(chǔ)保護(hù)控制器及方法,通過對存儲(chǔ)空間進(jìn)行劃分,利用跳轉(zhuǎn)保護(hù)單元,來判定當(dāng)前運(yùn)行的代碼屬于哪個(gè)代碼空間,對規(guī)定的代碼空間進(jìn)行一些相應(yīng)的權(quán)限配置。該技術(shù)方案與本申請存在的本質(zhì)差別:該技術(shù)方案是根據(jù)跳轉(zhuǎn)指令作為代碼空間判斷依據(jù),而本申請則是以取指令地址作為判斷依據(jù)。該技術(shù)方案存在一些局陷性:1、以跳轉(zhuǎn)指令作為代碼空間判斷的情況下,程序開發(fā)時(shí)并不知道每個(gè)函數(shù)的編譯后所屬具體空間,編譯器必須人為干預(yù)設(shè)置,且設(shè)置復(fù)雜,因些大型軟件開發(fā)情況下很難實(shí)現(xiàn);2、函數(shù)入口記錄的配置項(xiàng)較多,硬件成本高。技術(shù)實(shí)現(xiàn)要素:本申請針對SOC中保護(hù)存儲(chǔ)內(nèi)容的需求,實(shí)用新型一種可以保護(hù)存儲(chǔ)內(nèi)容的保密電路及相應(yīng)的方法,實(shí)現(xiàn)非保護(hù)區(qū)可以執(zhí)行保護(hù)區(qū)代碼的功能,同時(shí)保證保護(hù)區(qū)代碼不被讀出;與此同時(shí),在存儲(chǔ)器的非保護(hù)區(qū)域還可以進(jìn)行正常的代碼開發(fā),同時(shí)塊之間還具備互相調(diào)用的功能。本實(shí)用新型由以下技術(shù)方案實(shí)現(xiàn):一種RISC架構(gòu)保密電路,包括CPU、DMA、存儲(chǔ)器及非易失性存儲(chǔ)器;存儲(chǔ)器的空間被劃分為保護(hù)區(qū)域與非保護(hù)區(qū)域,從地址address_0到地址address_1為保護(hù)區(qū)域,從地址address_1到地址address_2為非保護(hù)區(qū)域;address_0、address_1、address_2分別存儲(chǔ)在非易失性存儲(chǔ)器中;CPU通過數(shù)據(jù)通道1和指令通道訪問存儲(chǔ)器,DMA數(shù)據(jù)通道2訪問存儲(chǔ)器;其特征在于:還包括數(shù)據(jù)過濾電路和指令監(jiān)視電路,數(shù)據(jù)過濾電路過濾每一路數(shù)據(jù)通道,指令監(jiān)視電路監(jiān)視指令通道地址,并將指令信息輸出到數(shù)據(jù)過濾電路中;數(shù)據(jù)過濾電路根據(jù)指令的區(qū)域信息對數(shù)據(jù)通道的數(shù)據(jù)進(jìn)行過濾。一種基于上述RISC架構(gòu)保密電路的保密方法,其特征在于,包括以下步驟:(1)撤消SOC的系統(tǒng)復(fù)位且CPU的復(fù)位沒有馬上撤消時(shí),從非易失性存儲(chǔ)器中讀出三個(gè)地址address_0、address_1、address_2到指令監(jiān)視電路和數(shù)據(jù)過濾電路的寄存器中;(2)CPU復(fù)位撤消,開始啟動(dòng);(3)指令監(jiān)視電路獲取到最近一次取指令的地址(i_addr),取指令地址代表著當(dāng)前CPU在運(yùn)行哪個(gè)空間的指令。數(shù)據(jù)過濾電路比對每一個(gè)數(shù)據(jù)訪問的地址,如果數(shù)據(jù)訪問地址(d_addr)小于address_1,則訪問的是保護(hù)區(qū)域,反之訪問的是非保護(hù)區(qū);當(dāng)且僅當(dāng)(i_addr>address_1)&&(d_addr<address_1)=1時(shí),禁止訪問保護(hù)區(qū)域;數(shù)據(jù)過濾電路對數(shù)據(jù)地址進(jìn)行轉(zhuǎn)換使之為固定值0xffffffff,數(shù)據(jù)通道返回0xffffffff地址的值,從而讀不到真實(shí)地址的值;反之,數(shù)據(jù)過濾電路不對地址進(jìn)行任何轉(zhuǎn)換。本實(shí)用新型的有益效果在于:數(shù)據(jù)過濾電路和指令監(jiān)視電的整體電路設(shè)計(jì)可有效的起到保護(hù)區(qū)代碼保護(hù)的作用。通過監(jiān)視指令總線來確定當(dāng)前運(yùn)行空間,編譯時(shí)只需將兩個(gè)代碼空間代碼獨(dú)立編譯,不需要人為確定每個(gè)函數(shù)的入口地址。保護(hù)空間放置保密代碼,非保密空間放置非保密代碼。因此編譯器自身修改很小,不增加軟件開發(fā)難度,軟件實(shí)現(xiàn)簡單。使得機(jī)器既可以使用算法,開放一部分存儲(chǔ)空間給第三方開發(fā),增加了SOC的應(yīng)用場景和范圍,又能夠防止代碼被讀出,起到了存儲(chǔ)器內(nèi)容的保護(hù)作用。此外,硬件上對存儲(chǔ)內(nèi)容的保護(hù)比軟件加密具備更大的安全性。附圖說明圖1為本實(shí)用新型實(shí)施例提供的SOC系統(tǒng)處理器與存儲(chǔ)器訪問的結(jié)構(gòu)框圖。圖2為本實(shí)用新型實(shí)施例提供的保護(hù)機(jī)制的訪問控制流程圖。具體實(shí)施方式如圖1所示,本實(shí)施例提供的RISC架構(gòu)保密電路包括CPU、DMA、數(shù)據(jù)過濾電路、指令監(jiān)視電路、存儲(chǔ)器及非易失性存儲(chǔ)器(圖中未示)。存儲(chǔ)器的空間被人為的劃分為兩塊:保護(hù)區(qū)域與非保護(hù)區(qū)域,從地址address_0到地址address_1為保護(hù)區(qū)域,從地址address_1到地址address_2為非保護(hù)區(qū)域。address_0、address_1、address_2分別存儲(chǔ)在非易失性存儲(chǔ)器(如EFUSE,F(xiàn)LASH,EEPROM等)中,掉電不會(huì)丟失,通過密碼等保密手段才能改寫。本實(shí)用新型必須保證區(qū)域劃分不能隨意改動(dòng),否則起不到保護(hù)的作用。保護(hù)區(qū)域中存放保護(hù)代碼,非保護(hù)區(qū)域存放第三方開發(fā)代碼,兩個(gè)空間中的代碼獨(dú)自編譯,編譯環(huán)境不同。CPU通過數(shù)據(jù)通道1和指令通道訪問存儲(chǔ)器,DMA數(shù)據(jù)通道2訪問存儲(chǔ)器。數(shù)據(jù)過濾電路過濾每一路數(shù)據(jù)通道。指令監(jiān)視電路監(jiān)視指令通道地址,指令監(jiān)視電路記錄最近一次或幾次取出的有效指令地址,并將指令信息輸出到數(shù)據(jù)過濾電路中。數(shù)據(jù)過濾電路根據(jù)指令的區(qū)域信息對數(shù)據(jù)通道的數(shù)據(jù)進(jìn)行過濾,過濾邏輯關(guān)系如下表1所示:訪問保護(hù)區(qū)數(shù)據(jù)訪問非保護(hù)區(qū)數(shù)據(jù)保護(hù)區(qū)指令正常訪問正常訪問非保護(hù)區(qū)指令阻止訪問正常訪問表1在區(qū)域劃分固定后,指令通道沒有任何改變,CPU可以正常取指執(zhí)行,但是不能通過數(shù)據(jù)通道訪問保護(hù)區(qū),保護(hù)區(qū)指令只能作為指令。本實(shí)用新型實(shí)現(xiàn)了執(zhí)行指令,但無法知道指令對應(yīng)的編碼數(shù)據(jù)的效果。這些代碼只能夠CPU執(zhí)行,不能進(jìn)行保護(hù)區(qū)數(shù)據(jù)輸出。此外,數(shù)據(jù)過濾電路同時(shí)對其它數(shù)據(jù)通道(如DMA)的數(shù)據(jù)進(jìn)行過濾,當(dāng)數(shù)據(jù)通道訪問保護(hù)區(qū)域時(shí),則禁止訪問。上述RISC架構(gòu)保密電路的保密流程描述如下:撤消SOC的系統(tǒng)復(fù)位,CPU的復(fù)位沒有馬上撤消,而是受一個(gè)狀態(tài)機(jī)控制。這個(gè)狀態(tài)機(jī)負(fù)責(zé)從非易失性存儲(chǔ)器中讀出三個(gè)地址(address_0、address_1、address_2)到指令監(jiān)視電路和數(shù)據(jù)過濾的電路的寄存器中。然后CPU復(fù)位撤消,開始啟動(dòng)。如圖2所示,CPU啟動(dòng)后,指令監(jiān)視電路獲取到最近一次取指令的地址(i_addr),取指令地址代表著當(dāng)前CPU在運(yùn)行哪個(gè)空間的指令。數(shù)據(jù)過濾電路比對每一個(gè)數(shù)據(jù)訪問的地址,如果數(shù)據(jù)訪問地址(d_addr)小于address_1,則訪問的是保護(hù)區(qū)域,反之訪問的是非保護(hù)區(qū)。當(dāng)且僅當(dāng)(addr>address_1)&&(d_addr<address_1)=1時(shí),禁止訪問保護(hù)區(qū)域。數(shù)據(jù)過濾電路對數(shù)據(jù)地址進(jìn)行轉(zhuǎn)換使之為固定值0xffffffff。數(shù)據(jù)通道返回0xffffffff地址的值,從而讀不到真實(shí)地址的值。反之,數(shù)據(jù)過濾電路不對地址進(jìn)行任何轉(zhuǎn)換。本實(shí)施例中,所述的代碼空間分界地址是受保護(hù)的,由代碼空間分界地址一次性寫入電路寫入,不能隨意更改。只有當(dāng)保護(hù)空間數(shù)據(jù)部分或全部被修改情況下,才能修改代碼空間分界地址。獨(dú)立的指令總線監(jiān)視器,用于判斷當(dāng)前的程序處于哪個(gè)空間。獨(dú)立的數(shù)據(jù)總線監(jiān)視器,用于處理越界的數(shù)據(jù)訪問,判斷當(dāng)前訪問數(shù)據(jù)的地址是否屬于保護(hù)區(qū)域,并對保護(hù)區(qū)域的訪問請求進(jìn)行修改,使之返回錯(cuò)誤數(shù)據(jù)。數(shù)據(jù)和指令分開的訪問總線。指令總線只能發(fā)出指令訪問請求,不能發(fā)出數(shù)據(jù)訪問請求。數(shù)據(jù)總線只能發(fā)出數(shù)據(jù)訪問請求,不能夠發(fā)出指令訪問請求。數(shù)據(jù)過濾電路和指令監(jiān)視電的整體電路設(shè)計(jì)可有效的起到保護(hù)區(qū)代碼保護(hù)的作用。本實(shí)用新型中的電路不限制指令的取指,僅僅只限制讀數(shù)據(jù)功能。本實(shí)用新型將保護(hù)區(qū)的代碼打包成一個(gè)具有特定功能的黑盒子,可以使用,但不能讀出黑盒子內(nèi)部代碼。上述實(shí)施例僅表達(dá)了本實(shí)用新型的一種典型實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對本實(shí)用新型專利范圍的限制。對本領(lǐng)域的技術(shù)人員來說,在不脫離本實(shí)用新型的構(gòu)思前提下,所做出的若干變形或改進(jìn),都屬于本實(shí)用新型的揭露范圍。當(dāng)前第1頁1 2 3