本發(fā)明涉及集成電路領域,尤其涉及一種系統(tǒng)級芯片(SOC)。
背景技術:
微控制單元(Microcontroller Unit;MCU)的破解方法包括已知的非侵入式攻擊(Non-invasive attacks),如功耗分析(Power analysis)和噪聲干擾(Glitching);侵入式攻擊(Invasive attacks),如反向工程(Reverse engineering)和微探測分析(Microprobing);以及半侵入式攻擊(Semi-invasive attacks)。半侵入式攻擊和侵入式一樣,它需要打開芯片的封裝以接近芯片表面,但是鈍化層(Passivation)還是完好的,因為這種方法不需要與內部連線進行電接觸。半侵入式攻擊介于非侵入式與侵入式之間,對硬件的安全是個巨大的威脅。它像侵入式一樣高效,又像非侵入式一樣廉價。
缺陷注入攻擊法(Fault injection attacks)是一種實用而有效的MCU的破解方法,通過修改SRAM和EEPROM的內容,可改變芯片上任意單個MOS管的狀態(tài)。這幾乎可以不受限制地控制芯片的運行和外圍保護部分。另一點是進行了數(shù)據(jù)保存期的實驗,揭示了從已斷電的SRAM和已擦除過的EPROM,EEPROM和閃存芯片中讀出數(shù)據(jù),從而得到MCU的實際運行代碼。利用上述方法,現(xiàn)有的MCU芯片幾乎沒有不能破解,且代價并不很大。
為了防止MCU被破解,目前的解決方案是使用基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array;FPGA)的MCU動態(tài)總線加密方法,這是一種利用FPGA配置數(shù)據(jù)的無規(guī)律性和FPGA的可編程性,實現(xiàn)一般MCU不能實現(xiàn)的動態(tài)變換總線定義和程序數(shù)據(jù)的加密方法,從而實現(xiàn)MCU的用戶設計的安全。
動態(tài)加密技術的主要思路是:在程序看到的是虛地址,而虛地址對應的存儲器的實地址由CPU程序運行時通過定制化的邏輯電路賦予。其原理如圖1所示。舉例來說,若CPU調用子程序CALL Function時,對應于同一個子程序調用,第一次調用的是真正的Function,實地址可能在1000H。而在第二次調用Function時,實地址可能是2000H,功能可能根本與Function不相同。因此可以通過連續(xù)表面調用同一個子程序Function,而實際則是分別調用幾個不同的子程序來實現(xiàn)加密。至于虛地址映射到何處的實地址,可由編程者自己安排,故只需在調用前輸出實地址的對應關系即可。這種軟件與硬件相結合、虛地址與實地址相結合的加密方法使破解者即使獲得源程序也極難分析出對應關系。
但是這種方法是利用CPU片外的FPGA來做動態(tài)加密,破解者依然在外部能夠接觸CPU破解后的程序和數(shù)據(jù),依然存在被破解的安全隱患。
技術實現(xiàn)要素:
為了解決現(xiàn)有技術中存在的上述問題,提出了本發(fā)明。本發(fā)明提供了一種系統(tǒng)級芯片(SoC:System-on-a-chip),來實現(xiàn)CPU系統(tǒng)內核級的動態(tài)加密運行。
根據(jù)本發(fā)明的第一方面,一種系統(tǒng)級芯片包括:中央處理器(CPU);現(xiàn)場可編程門陣列(FPGA),其中設有加密/解密模塊,所述CPU通過系統(tǒng)總線連接到所述加密/解密模塊;以及片上存儲器,其通過系統(tǒng)總線連接到所述FPGA的所述加密/解密模塊并且其中存儲有預設的加密和/或不加密的系統(tǒng)程序和執(zhí)行所述系統(tǒng)程序所需的數(shù)據(jù);其中所述加密/解密模塊執(zhí)行如下的加密/解密操作:在所述系統(tǒng)程序和/或所述數(shù)據(jù)以預定的地址映射關系存儲于所述片上存儲器中的情況下,將所述CPU發(fā)送的地址解密為所述系統(tǒng)程序和/或所述數(shù)據(jù)在所述片上存儲器中的實際地址;并且/或者在所述系統(tǒng)程序和/或所述數(shù)據(jù)是加密的情況下,對所述CPU經由所述FPGA從所述片上存儲器讀取的所述系統(tǒng)程序和/或所述數(shù)據(jù)進行解密,以及對從所述CPU經由所述FPGA傳輸?shù)剿銎洗鎯ζ鞯臄?shù)據(jù)進行加密。
通過將CPU與FPGA集成在同一芯片上,使得程序和數(shù)據(jù)的加密/解密完全在SoC芯片內部實現(xiàn),保證了解密后的的總線不暴露在芯片外部,使破解者不能在采用示波器、邏輯分析儀和MDU解密儀等分析工具分析解密后的總線數(shù)據(jù)從而破解程序源代碼。
根據(jù)本發(fā)明的第二方面,一種系統(tǒng)級芯片包括:中央處理器(CPU);現(xiàn)場可編程門陣列(FPGA),其中設有加密/解密模塊;片上存儲器,其通過系統(tǒng)總線連接到所述FPGA的所述加密/解密模塊并且其中存儲有預設的加密和/或不加密的系統(tǒng)程序和執(zhí)行所述系統(tǒng)程序所需的數(shù)據(jù);以及第一多路選擇開關(MUX)。所述第一MUX的第一輸入/輸出端(I/O_1)通過系統(tǒng)總線連接到所述CPU,第二輸入/輸出端(I/O_2)通過系統(tǒng)總線連接到所述片上存儲器,第三輸入/輸出端(I/O_3)通過系統(tǒng)總線連接到所述FPGA的所述加密/解密模塊。由所述第一MUX的通路選擇控制端電平的值,來決定在所述MUX的第一輸入/輸出端(I/O_1)與所述第二輸入/輸出端(I/O_2)之間形成通路,還是在所述MUX的第一輸入/輸出端(I/O_1)與所述第三輸入/輸出端(I/O_3)之間形成通路。所述加密/解密模塊執(zhí)行如下的加密/解密操作:在所述系統(tǒng)程序和/或所述數(shù)據(jù)以預定的地址映射關系存儲于所述片上存儲器中的情況下,用于將所述CPU發(fā)送的地址解密為所述系統(tǒng)程序和/或所述數(shù)據(jù)在所述片上存儲器中的實際地址;并且/或者在所述系統(tǒng)程序和/或所述數(shù)據(jù)是加密的情況下,對所述CPU經由所述FPGA從所述片上存儲器讀取的所述系統(tǒng)程序和/或所述數(shù)據(jù)進行解密,以及對從所述CPU經由所述FPGA傳輸?shù)剿銎洗鎯ζ鞯臄?shù)據(jù)進行加密。
可選地,當系統(tǒng)運行到特定保護程序地址處并且/或者當系統(tǒng)程序判定滿足預定條件時,所述通路選擇控制電平的值被設定為預定值;或者所述通路選擇控制電平的值由通過外部器件異步通信傳遞的信號來確定。
在根據(jù)本發(fā)明第二方面的系統(tǒng)級芯片中,通過設置第一MUX,在CPU與片上存儲器之間提供了非加密/解密通道和加密/解密通道。當選通非加密/解密通道時CPU具有最好的性能。而加密/解密通道由于執(zhí)行加密/解密操作以及FPGA繞線,可能產生延遲,CPU運行在加密/解密通道上,性能有所下降。因此,通過設置第一MUX,用戶可以把性能高的代碼選擇通過非加密/加密通道運行,而關鍵安全性部分通過選擇加密/解密通道運行,從而既可以保證運行效率又可以保障系統(tǒng)的安全性。
可選地,上述系統(tǒng)級芯片還可以包括:第二多路選擇開關(MUX),以及用于連接外部存儲器的系統(tǒng)接口。所述片上存儲器與所述加密/解密模塊之間的系統(tǒng)總線包括從所述FPGA向所述片上存儲器輸出地址和數(shù)據(jù)的第一信號線,所述片上存儲器通過第一數(shù)據(jù)線連接到所述第二MUX的第一輸入/輸出端(I/O_4),所述第二MUX的第二輸入/輸出端(I/O_5)通過第二數(shù)據(jù)線連接到所述加密/解密模塊,并且所述系統(tǒng)接口通過第二信號線連接到所述加密/解密模塊并且通過第三數(shù)據(jù)線連接到所述MUX的第三輸入/輸出端(I/O_6),所述第二信號線用于從所述FPGA向外部存儲器輸出地址和數(shù)據(jù)。
由此,本發(fā)明的系統(tǒng)級芯片可以結合外部存儲器使用,實現(xiàn)程序和/或數(shù)據(jù)的加密。
可選地,在上述系統(tǒng)級芯片中,所述加密模塊可以包括多個子加密模塊,不同的子加密模塊執(zhí)行不同的加密操作;并且所述FPGA還包括通信模塊,所述通信模塊分別與所述各個子加密模塊連接、并且根據(jù)來自外部的信號或者來自所述CPU的指令激活所述多個子加密模塊中的至少一個。
可選地,在上述系統(tǒng)級芯片中,所述FPGA中還可以設有計數(shù)器,所述計數(shù)器由所述CPU定時清零,一旦超時未清零,所述FPGA將停止一切操作而使所述CPU無法運行。
可選地,在上述系統(tǒng)級芯片中,還可以在所述FPGA中設有密碼,所述CPU每經過預定時間就訪問所述FPGA,以將所述密碼與預定值相比較,如果所述比較的結果不一致則所述CPU破壞所述片上存儲器的內容。
可選地,在上述系統(tǒng)級芯片中,所述FPGA還可以包括通信模塊,所述CPU和所述通信模塊從外部接收異步事件信號以觸發(fā)所述加密/解密模塊執(zhí)行設定的加密/解密操作。由此,可以根據(jù)用戶需要控制地址和/或程序/數(shù)據(jù)的加密/解密的時機,從而可以實現(xiàn)與時間緯度相結合的加密/解密,使得芯片系統(tǒng)更難被破解。
附圖說明
圖1示意性示出了現(xiàn)有技術中的MCU加密技術。
圖2示意性示出了根據(jù)本發(fā)明的第一示例性實施例的系統(tǒng)級芯片。
圖3示意性示出了根據(jù)本發(fā)明的第二示例性實施例的系統(tǒng)級芯片。
圖4示意性示出了根據(jù)本發(fā)明的第三示例性實施例的系統(tǒng)級芯片。
圖5示意性示出了根據(jù)本發(fā)明的第四示例性實施例的系統(tǒng)級芯片。
圖6示意性示出了根據(jù)本發(fā)明的第五示例性實施例的系統(tǒng)級芯片。
圖7示意性示出了根據(jù)本發(fā)明的第六示例性實施例的系統(tǒng)級芯片。
具體實施方式
為了便于更清楚地理解本發(fā)明,在下文中參考附圖描述本發(fā)明的具體實施方式。應當理解附圖是示意性的,并不限定本發(fā)明的保護范圍,本發(fā)明的保護范圍由所附權利要求書限定。
第一實施例
圖2示意性示出了根據(jù)本發(fā)明的第一示例性實施例的系統(tǒng)級芯片(SoC)100。如圖2所示,根據(jù)本發(fā)明第一示例性實施例的SoC 100包括:中央處理器(CPU)110;現(xiàn)場可編程門陣列(FPGA)120,其中設有加密/解密模塊121,所述CPU 110通過系統(tǒng)總線連接到所述加密/解密模塊121;以及片上存儲器130,其通過系統(tǒng)總線連接到所述FPGA 120的加密/解密模塊121,并且其中存儲有預設的加密和/或不加密的系統(tǒng)程序和執(zhí)行所述系統(tǒng)程序所需的數(shù)據(jù)。
所述加密/解密模塊121:在所述系統(tǒng)程序和/或所述數(shù)據(jù)以預定的地址映射關系存儲于片上存儲器130中的情況下,用于將CPU 110發(fā)送的地址解密為所述系統(tǒng)程序和/或所述數(shù)據(jù)在片上存儲器130中的實際地址;并且/或者在所述系統(tǒng)程序和/或所述數(shù)據(jù)是加密的情況下,對所述CPU 110經由FPGA 120從片上存儲器130讀取的所述系統(tǒng)程序和/或所述數(shù)據(jù)進行解密,以及對從CPU 110經由FPGA 120傳輸?shù)狡洗鎯ζ?30的數(shù)據(jù)進行加密。
在下文中以舉例的方式對加密/解密模塊121的操作進行描述。
I、地址的解密
系統(tǒng)的運行過程:非加密的系統(tǒng)程序和數(shù)據(jù)以預定的地址映射關系存儲于所述片上存儲器中,所述預定的地址映射關系可以是由系統(tǒng)應用預先確定好的。一方面,CPU 110復位后發(fā)送虛地址(即,在程序看到的地址)到FPGA 120,F(xiàn)PGA 120根據(jù)CPU 110的指令通過加密/解密模塊121,將CPU 110發(fā)送的虛地址轉換成在片上存儲器130中實際使用的實地址,然后將該實地址發(fā)送到片上存儲器130,F(xiàn)PGA 120在所述實地址處得到所需的程序或數(shù)據(jù)并將其返回給CPU 110。CPU 110取得所需的程序或數(shù)據(jù)后運行。另一方面,CPU 110可以發(fā)送虛地址到FPGA 120,F(xiàn)PGA 120根據(jù)CPU 110的指令通過加密/解密模塊121將所述虛地址變換成要在片上存儲器130中實際使用的實地址,從而將來自CPU 110的數(shù)據(jù)對應于所述實地址寫入到片上存儲器130中。
以下舉例說明上文中提及的預定的地址映射關系。例1,參考圖1,在程序看到的是AHB上的虛地址addr,而虛地址addr對應的片上存儲器130的實地址為addr3。那么虛地址addr與實地址addr3之間的地址映射關系可以為Ahb2_addr3=Ahb_addr+AddrOffset,AddrOffset可以由系統(tǒng)應用預先確定,不同子程序的虛地址和實地址之間可以具有不同的地址映射關系。
硬件描述語言:
parameter AddrOffset=32'h2000;
assign Ahb1=Ahb+AddrOffset;
例2,若CPU 110運行的程序以不同的虛地址調用子程序CALL Function1,CALL Function2,CALL Function3等,但FPGA 120的加密/解密模塊可以將上述不同的虛地址映射到相同的實地址。因此實現(xiàn)了表面上調用不同的子程序,但實際上是調用同一個子程序Function。
硬件描述語言
實地址Ahb1根據(jù)變量Mode加上不同的偏移量。這個變量可以是CPU 110寫給FPGA 120的加密/解密模塊121,也可以是外部或內部異步觸發(fā)寫到加密/解密模塊121和CPU 110。這種方式也可以用于上述例1。對于例2來說,AHB上的虛地址是不同的,與偏移量AddrOffset相加后變成了相同的實地址Ahb1。
例3:虛地址與實地址映射成位關系。
如assign Ahb1={Ahb[31:4],Ahb[0],Ahb[1],Ahb[2],Ahb[3]};則程序在片上存儲器130中以0到15逆序存放。
II、程序/數(shù)據(jù)的加密/解密
程序運行過程:加密的程序和數(shù)據(jù)(也稱為虛數(shù)據(jù))存放在片上存儲器130中。一方面,CPU 110復位后發(fā)送地址到FPGA 120中的加密/解密模塊121,加密/解密模塊121從該地址得到所述加密的程序或數(shù)據(jù),加密/解密模塊121將所述加密的程序或數(shù)據(jù)解密后送回給CPU 110。另一方面,CPU 110將實數(shù)據(jù)(未加密的程序和數(shù)據(jù))經發(fā)送到加密/解密模塊121,加密/解密模塊121對所述實數(shù)據(jù)進行加密后將其送到片上存儲器130的對應地址處。
例如,虛數(shù)據(jù)與實數(shù)據(jù)以如下方式映射成位關系。
應當理解,上述地址以及程序和數(shù)據(jù)的加密方式僅僅是示例性的,本領域技術人員可以采用任何合適的加密方法。
本發(fā)明的該實施例將CPU與FPGA集成在同一芯片上,使得程序和數(shù)據(jù)的加解密完全在SoC芯片內部實現(xiàn),保證了解密后的總線不暴露在芯片外部,使破解者不能在采用示波器、邏輯分析儀和MDU解密儀等分析工具分析解密后的總線數(shù)據(jù)從而破解程序源代碼。
第二實施例
圖3示意性示出了根據(jù)本發(fā)明的第二示例性實施例的系統(tǒng)級芯片(SoC)200。如圖3所示,根據(jù)本發(fā)明第二示例性實施例的SoC 200包括:CPU 210;FPGA 220,其中設有加密/解密模塊221;片上存儲器230,其中存儲有預設的加密和/或不加密的系統(tǒng)程序和執(zhí)行所述系統(tǒng)程序所需的數(shù)據(jù),并且通過系統(tǒng)總線連接到所述FPGA 220中的所述加密/解密模塊221;以及第一多路選擇開關(MUX)240。所述第一MUX 240的第一輸入/輸出端I/O_1通過系統(tǒng)總線連接到所述CPU210,第二輸入/輸出端I/O_2通過系統(tǒng)總線連接到所述片上存儲器230,第三輸入/輸出端I/O_3通過系統(tǒng)總線連接到所述FPGA 220的所述加密/解密模塊221。加密/解密模塊221的操作與圖2中所示的加密/解密模塊121的操作相同,因此在此不再重復。
由第一MUX 240的通路選擇控制端電平的值,來決定在MUX 240的第一輸入/輸出端I/O_1與第二輸入/輸出端I/O_2之間形成通路,還是在MUX 240的第一輸入/輸出端I/O_1與第三輸入/輸出端I/O_3之間形成通路。
所述加密/解密模塊221:在所述系統(tǒng)程序和/或所述數(shù)據(jù)以預定的地址映射關系存儲于片上存儲器230中的情況下,用于將CPU 210發(fā)送的地址解密為所述系統(tǒng)程序和/或所述數(shù)據(jù)在片上存儲器230中的實際地址;并且/或者在所述系統(tǒng)程序和/或所述數(shù)據(jù)是加密的情況下,對CPU 210經由FPGA 220從片上存儲器230讀取的所述系統(tǒng)程序和/或所述數(shù)據(jù)進行解密,以及對從CPU 210經由FPGA 220傳輸?shù)狡洗鎯ζ?30的數(shù)據(jù)進行加密。
當系統(tǒng)運行到特定保護程序地址處并且/或者當系統(tǒng)程序判定滿足預定條件時,所述通路選擇控制電平SEL的值被設定為預定值;或者所述通路選擇控制電平SEL的值由通過外部器件異步通信傳遞的信號來確定。
第二示例性實施例的技術方案在第一示例性實施例的基礎上增加了多路選擇開關MUX 200,從而在CPU 210與片上存儲器230之間提供了非加密通道CPU 210-AHB-AHB1-片上存儲器230(即,在MUX 240的第一輸入/輸出端I/O_1與第二輸入/輸出端I/O_2之間形成通路時)和加密通道CPU 210-AHB-AHB2-FPGA 220-ABH3-片上存儲器230(即,MUX 240的第一輸入/輸出端I/O_1與第三輸入/輸出端I/O_3之間形成通路時)。當選通非加密通道時系統(tǒng)具有最好的性能。當選通加密通道時,由于需要經過FPGA 220進行加密/解密處理以及FPGA本身的繞線,可能導致延遲,CPU 210運行在加密通道上時,性能可能有所下降。因此用戶可以選擇將對性能要求高的程序通過非加密通道進行處理,而將對安全性要求高的部分通過加密通道進行處理,由此提高整個芯片的運行效率。而這種選擇可以通過改變MUX 240的通路選擇控制電平SEL的值來實現(xiàn)。例如,當系統(tǒng)運行到特定保護程序地址處并且/或者當系統(tǒng)程序判定滿足預定條件時,通路選擇控制電平SEL的值被設定為預定值,從而僅在MUX 240的第一輸入/輸出端I/O_1與第二輸入/輸出端I/O_2之間形成通路(或者僅在MUX 240的第一輸入/輸出端I/O_1與第三輸入/輸出端I/O_3之間形成通路);或者所述通路選擇控制電平SEL的值由可以通過外部器件異步通信傳遞的信號來確定,從而實現(xiàn)僅在MUX 240的第一輸入/輸出端I/O_1與第二輸入/輸出端I/O_2之間形成通路(或者僅在MUX 240的第一輸入/輸出端I/O_1與第三輸入/輸出端I/O_3之間形成通路)。
第三實施例
圖4示意性示出了根據(jù)本發(fā)明的第三示例性實施例的系統(tǒng)級芯片(SoC)300。圖4中所示的SoC 300與圖3中所示的SoC 200的區(qū)別在于,其還包括:第二多路選擇開關(MUX)350,以及用于連接外部存儲器的系統(tǒng)接口360。
片上存儲器330與加密/解密模塊321之間的系統(tǒng)總線包括從加密/解密模塊321向片上存儲器130輸出地址和數(shù)據(jù)的第一信號線S1,片上存儲器330通過第一數(shù)據(jù)線D1連接到第二MUX 350的第一輸入/輸出端I/O_4,第二MUX 350的第二輸入/輸出端I/O_5通過第二數(shù)據(jù)線D2連接到加密/解密模塊321。系統(tǒng)接口360通過第二信號線S2連接到加密/解密模塊321并且通過第三數(shù)據(jù)線D3連接到MUX 350的第三輸入/輸出端I/O_6,第二信號線S2用于從加密/解密模塊321向外部存儲器輸出地址和數(shù)據(jù)。
通過增加第二MUX 350和系統(tǒng)接口360,加密/解密模塊321在系統(tǒng)程序和/或數(shù)據(jù)以預定的地址映射關系存儲于外部存儲器中的情況下,能夠將CPU 310發(fā)送的地址解密為所述系統(tǒng)程序和/或所述數(shù)據(jù)在外部存儲器中的實際地址;并且/或者加密/解密模塊321在所述系統(tǒng)程序和/或所述數(shù)據(jù)是加密的情況下,對CPU 310經由所述FPGA 320從外部存儲器讀取的所述系統(tǒng)程序和/或所述數(shù)據(jù)進行解密,以及對從CPU 310經由FPGA 320傳輸?shù)酵獠看鎯ζ鞯臄?shù)據(jù)進行加密。因此,外部存儲器與芯片內部連接的總線上也是加密的數(shù)據(jù)。破解者拿到外部存儲器的內容也沒有用處。因此,根據(jù)本發(fā)明的SoC結合外部存儲器使用,也能夠實現(xiàn)加密。加密/解密模塊321的操作與圖2中所示的加密/解密模塊121的操作相同,因此在此不再重復。
第四實施例
圖5示意性示出了根據(jù)本發(fā)明的第四示例性實施例的系統(tǒng)級芯片(SoC)400。如圖5所示,根據(jù)本發(fā)明第四示例性實施例的SoC 400包括:CPU 410、FPGA 420、片上存儲器430、以及MUX 440。
圖5所示的SoC 400與圖3所示的SoC 200的區(qū)別僅在于:FPGA 420中的加密模塊421包括多個子加密模塊,不同的子加密模塊可以采用不同的加密方式對來自所述CPU的指令進行加密;并且FPGA 420還包括通信模塊422,所述通信模塊422分別與所述各個子加密模塊連接、并且能夠根據(jù)來自外部的信號或者來自CPU 410的指令激活所述多個子加密模塊中的一個或多個。例如,加密模塊421可以包括2個子加密模塊,分別用于如上文中在第一實施例中所述的地址解密和數(shù)據(jù)加密。用戶可以根據(jù)需要,通過通信模塊422從外部加載信號來選擇所述2個子加密模塊中的一個或多個?;蛘?,通信模塊422可以接收來自CPU 310的指令,以激活所述2個子加密模塊中的一個或多個。
第五實施例
圖6示意性示出了根據(jù)本發(fā)明的第五示例性實施例的系統(tǒng)級芯片(SoC)500。如圖6所示,根據(jù)本發(fā)明第五示例性實施例的SoC 500包括:CPU 510、FPGA 520、片上存儲器530、以及MUX 540。
圖6所示的SoC 500與圖3所示的SoC 200的區(qū)別僅在于:FPGA 520除了包括加密模塊521之外,還設有計數(shù)器522,所述計數(shù)器522由CPU 510定時清零,一旦超時未清零,所述FPGA 520將停止一切操作而使CPU 510無法運行。
第六實施例
圖7示意性示出了根據(jù)本發(fā)明的第六示例性實施例的系統(tǒng)級芯片(SoC)600。如圖7所示,根據(jù)本發(fā)明第六示例性實施例的SoC 600包括:CPU 610、FPGA 620、片上存儲器630、以及MUX 640。
圖7所示的SoC 600與圖3所示的SoC 200的區(qū)別僅在于:FPGA 620除了包括加密模塊621之外,還設有通信模塊622。通信模塊622可以與CPU同步接收異步事件信號,以觸發(fā)加密/解密模塊621執(zhí)行預設的加密/解密操作。這樣,可以根據(jù)用戶需要控制地址和/或程序/數(shù)據(jù)的加密/解密的時機,從而可以實現(xiàn)與時間緯度相結合的加密/解密,使得芯片系統(tǒng)更難被破解。
此外,本發(fā)明還可以在上述第一到第六實施例中任何一個的結構的基礎上,在FPGA(120、220、320、420、520、620)中設有密碼,CPU(110、210、310、410、510、610)每經過預定時間就訪問FPGA(120、220、320、420、520、620),以將所述密碼與預定值相比較,如果所述比較的結果不一致則CPU(110、210、310、410、510、610)破壞片上存儲器(130、230、330、430、530、630)中存儲的內容。
應該理解,盡管上文中分別示出和描述了本發(fā)明的各個實施例,但是應當理解,本領域技術人員可以根據(jù)需要將上述各個實施例或者其中的特征組合使用。例如,第一實施例中的加密模塊121也可以包括多個子加密模塊,F(xiàn)PGA 120也可以包括與所述多個子加密模塊連接的通信模塊,用來根據(jù)外部信號激活想要的子加密模塊?;蛘?,例如,第三實施例中的SoC 300也可以在FPGA 320中包括計數(shù)器,所述計數(shù)器由CPU 310定時清零,一旦超時未清零,所述FPGA 320將停止一切操作而使CPU 310無法運行。
雖然在用于示出上述各實施例的附圖中,系統(tǒng)總線被標記為AHB總線,但是本發(fā)明并不限于此,實際上可以根據(jù)需要選擇任何合適的系統(tǒng)總線,例如8051系統(tǒng)的擴展存儲器接口總線(EMIF)、Wishbone和AXI等等。
盡管已經參照每一個所述示例性實施例的結構和操作描述了本發(fā)明,但是本發(fā)明不僅僅限于上述示例性實施例中的每一個。應當注意,本發(fā)明包括在不脫離本發(fā)明的范圍的情況下本領域技術人員能夠想到的各種變化和修改。此外,本發(fā)明包括相互并且適當?shù)亟M合上述示例性實施例中每一個的結構的一部分或整個部分而獲得的結構。