專利名稱:具有安全機制的gpio ip核的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及GPIO技術(shù),特別是涉及一種具有安全機制的GPIO IP核。
背景技術(shù):
General Purpose Input Output (通用輸入 / 輸出),簡稱為 GPI0。目前一般把GPIO用來作為CPU外圍設(shè)備的控制端口或者通過模擬I2C和SPI通信接口實現(xiàn)CPU與外界的通信。AMBA總線是由ARM公司提出的一種高級微控制器總線體系,其規(guī)范定義了在設(shè)計高性能嵌入式微控制器時的一種片上通信標準。根據(jù)AMBA標準定義了三種不同的總線高級高性能總線(AHB)、高級系統(tǒng)總線(ASB)、高級外設(shè)總線(APB)。系統(tǒng)內(nèi)部的通信一般采用AHB總線。APB作為主總線高性能通道的二級總線,是用于低功耗外設(shè)的,其提供了基本外設(shè)宏單元之間的通信接口,APB總線是通過APB橋與內(nèi)部高級系統(tǒng)總線實現(xiàn)通信。通常,外設(shè)可以通過連接在APB總線上的GPIO接口與CPU進行通信。信息技術(shù)的發(fā)展對于信息安全的要求越來越高,需要保證的信息安全的領(lǐng)域也越來越廣泛。其中上述的GPIO接口的通信就存在安全問題。
發(fā)明內(nèi)容
基于此,有必要提供一種具有安全機制的GPIO IP核,其解決GPIO接口存在的通信安全問題。一種具有安全機制的GPIO IP核,包括GPIO輸入輸出邏輯模塊,與APB橋連接,從APB橋接收配置信息,配置完成后至少完成輸入輸出數(shù)據(jù)的功能;加密模組,接收來自APB橋的明文數(shù)據(jù),加密后傳輸給所述GPIO輸入輸出邏輯模塊;解密模組,接收來自所述GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),解密后傳輸給所述APB 橋。在其中一個實施例中,所述GPIO輸入輸出邏輯模塊包括寄存器組,可接收所述配置信息,將所述GPIO輸入輸出邏輯模塊配置為輸入端口或輸出端口;輸入輸出選擇單元,與所述寄存器組連接,根據(jù)寄存器組的配置狀態(tài)輸入或輸出數(shù)據(jù)。在其中一個實施例中,所述寄存器組還可以被配置為測試狀態(tài),所述GPIO輸入輸出邏輯模塊還包括硬件控制單元通過配置寄存器為測試狀態(tài)處于自我檢測狀態(tài),并接收外部輸入的測試向量。
在其中一個實施例中,所述寄存器組還可以被配置為中斷檢測狀態(tài),所述GPIO輸入輸出邏輯模塊還包括中斷檢測單元,與所述寄存器組連接,根據(jù)寄存器組的中斷檢測狀態(tài)檢測來自外部設(shè)備的中斷請求。在其中一個實施例中,其特征在于,所述加密模組包括依次連接的第一明文寄存器、加密模塊以及第一密文寄存器,所述第一明文寄存器接收來自APB橋的明文數(shù)據(jù),所述明文數(shù)據(jù)經(jīng)加密模塊加密后存儲于所述第一密文寄存器;所述第一密文寄存器與GPIO輸入輸出邏輯模塊連接。在其中一個實施例中,所述加密模塊包括初始化序列單元,用于對明文進行矩陣排列;輪變換單元,用于接收子密鑰和初始化后的明文完成輪變換;結(jié)束序列單元,用于將加密好的密文輸出;密鑰擴展單元,用于產(chǎn)生所述子密鑰;控制邏輯單元,控制所述初始化序列單元、輪變換單元、結(jié)束序列單元以及密鑰擴展單元協(xié)同工作以完成整個加密過程。在其中一個實施例中,所述解密模組包括依次連接的第二明文寄存器、解密模塊以及第二密文寄存器,所述第二密文寄存器接收來自GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),所述密文數(shù)據(jù)經(jīng)解密模塊解密后存儲于所述第二明文寄存器;所述第二明文寄存器與APB橋連接。在其中一個實施例中,所述解密模塊包括初始化序列單元,用于對密文進行矩陣排列;密鑰擴展單元,用于產(chǎn)生子密鑰;密鑰翻轉(zhuǎn)緩沖單元,用于接收子密鑰,然后將子密鑰按照相反是順序提供給輪變換模塊;輪變換單元,用于依照所述密鑰翻轉(zhuǎn)緩沖模塊提供的子密鑰和初始化后的密文完成輪變換;結(jié)束序列單元,用于將解密后的明文輸出;控制邏輯單元,用于控制所述初始化序列單元、輪變換單元、結(jié)束序列單元、密鑰擴展單元以及密鑰翻轉(zhuǎn)緩沖單元協(xié)同工作以完成整個解密過程。在其中一個實施例中,所述加密模塊為AES加密模塊,所述解密模塊為AES解密模塊。在其中一個實施例中,所述第一明文寄存器和第二密文寄存器為128位、192位或256 位。上述具有安全機制的GPIO IP核通過對經(jīng)GPIO的數(shù)據(jù)進行加解密,保證GPIO接口的數(shù)據(jù)通信安全。
圖1為一種片上系統(tǒng)的模塊結(jié)構(gòu)圖;圖2為一實施例的GPIO IP核的模塊結(jié)構(gòu)圖3為圖2所示實施例的GPIO輸入輸出邏輯模塊結(jié)構(gòu)圖;圖4為圖2所示實施例的加密模塊結(jié)構(gòu)圖; 圖5為圖2所示實施例的解密模塊結(jié)構(gòu)圖。
具體實施例方式如圖1所示,為一種片上系統(tǒng)的模塊結(jié)構(gòu)圖。該片上系統(tǒng)包括本實施例的一種具有安全機制的GPIO IP核10。該具有安全機制的GPIO IP核10連接在APB橋上,通過APB橋與CPU之間傳送數(shù)據(jù)。如圖2所示,為一實施例的GPIO IP核的模塊結(jié)構(gòu)圖。該GPIO IP核10包括GPIO輸入輸出邏輯模塊100、加密模組200以及解密模組300。其中GPIO輸入輸出邏輯模塊100與APB橋連接,從APB橋接收配置信息,配置完成后至少完成輸入輸出數(shù)據(jù)的功能。加密模組200接收來自APB橋的數(shù)據(jù),加密后傳輸給GPIO輸入輸出邏輯模塊100。解密模組300接收來自GPIO輸入輸出邏輯模塊100的密文,解密后傳輸給所述APB橋。這樣,通過GPIO傳輸?shù)臄?shù)據(jù)均被加密,從而可以防止被竊取,具備一定程度的安全性。如圖3所不,GPIO輸入輸出邏輯模塊100包括寄存器組110和輸入輸出選擇單兀120。寄存器組100可接受來自CPU的配置信息,被配置成不同的狀態(tài),從而能夠完成輸入或輸出數(shù)據(jù)的功能。GPIO接口最普通的功能即能作為輸入接口或輸出接口。輸入輸出選擇單元120與寄存器組110連接,根據(jù)寄存器組110的狀態(tài),也即寄存器組110輸出的控制信號,就可以形成輸入接口或輸出接口,進而完成輸入或輸出數(shù)據(jù)的功能。進一步地,寄存器組110還可以被配置為測試狀態(tài),GPIO輸入輸出邏輯模塊100還包括硬件控制單元130。硬件控制單元130與寄存器組110連接,根據(jù)寄存器組110被配置的測試狀態(tài)而處于自我檢測狀態(tài),并接收外部輸入的測試向量。由外部輸入測試向量來實現(xiàn)其自我檢測功能。進一步地,寄存器組110還可以被配置為中斷檢測狀態(tài),GPIO輸入輸出邏輯模塊110還包括中斷檢測單元140。中斷檢測單元140與寄存器組110連接,根據(jù)寄存器組110的所處的中斷檢測狀態(tài)檢測來自外部設(shè)備的中斷請求。如圖2所示,加密模組200包括依次連接的第一明文寄存器210、加密模塊220以及第一密文寄存器230。第一明文寄存器210接收來自APB橋的明文數(shù)據(jù),所述明文數(shù)據(jù)經(jīng)加密模塊220加密后存儲于第一密文寄存器230。第一密文寄存器230與GPIO輸入輸出邏輯模塊100連接,向GPIO輸入輸出邏輯模塊100。第一明文寄存器為128位、192位或256位。如圖4所示,加密模塊220為AES加密模塊,包括初始化序列單元221、輪變換單元222、結(jié)束序列單元223、密鑰擴展單元224和控制邏輯單元225。初始化序列單元221用于對明文進行矩陣排列。輪變換單元222用于接收子密鑰和初始化后的明文完成輪變換。結(jié)束序列單元223用于將加密好的密文輸出。密鑰擴展單元224用于產(chǎn)生所述子密鑰。控制邏輯單元225控制初始化序列單元221、輪變換單元222、結(jié)束序列單元223以及密鑰擴展單元224協(xié)同工作以完成整個加密過程??刂七壿嬆K225通過Id信號開始加密過程;通過給出done信號來標明完成一次加密過程。本實施例中,密鑰擴展單元(Key Expansion) 224根據(jù)AES算法子密鑰生成模型編寫,能夠快速的產(chǎn)生用于輪變換的10輪子密鑰。每個時鐘周期提供一輪密鑰。對于一次AES加密過程,需要進行10輪變換,所以密鑰擴展需要在加密過程中提供10輪變換所需要的子密鑰。密鑰擴展模塊的密鑰共用上11次(包括初始密鑰),包括I次用于初始化序列單元221,9次用于輪變換單元222以及I次用于結(jié)束序列單元223。除了輸入的初始密鑰,密鑰擴展單元224 —共產(chǎn)生10次子密鑰。以下以128位AES加密模塊和8位GPIO為例,說明一次完整的加密過程。從CPU向外發(fā)出的數(shù)據(jù)要經(jīng)過加密處理后再通過GPIO傳送出去。首先,CPU通過APB橋?qū)⒓用苄枰某跏济荑€寫入加密模塊220中,然后將需要加密的數(shù)據(jù)寫入第一明文寄存器210 (本實施例中,其大小為128位)。當?shù)谝幻魑募拇嫫?10被寫滿時產(chǎn)生一個Id(高電平)信號,加密模塊220裝載128位明文(需要加密的數(shù)據(jù))以及初始密鑰開始加密。經(jīng)過13個時鐘周期之后,加密模塊220產(chǎn)生一個done信號(表示128位數(shù)據(jù)加密完成),通知第一明文寄存器210可以傳輸下一個128位數(shù)據(jù)。由于8位的APB數(shù)據(jù)總線需要32個周期才能寫滿第一明文寄存器210,因此加密完后,加密模塊220需要等待下一個128位數(shù)據(jù)填滿第一明文寄存器210,才能開始下一次加密。為了加快數(shù)據(jù)處理能力可以將APB數(shù)據(jù)總線擴展為16位。同時密文(加密過后的數(shù)據(jù))被裝載到第一密文寄存器230,然后每次16位傳送給GPIO接口傳輸出去。需要指出的是,由于數(shù)據(jù)要經(jīng)過加密,故CPU向外傳輸數(shù)據(jù)時,數(shù)據(jù)要遲于地址,故需要將地址通過移位寄存器緩存。如圖2所示,解密模組300包括依次連接的第二明文寄存器310、解密模塊320以及第二密文寄存器330。第二密文寄存器330接收來自GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),所述密文數(shù)據(jù)經(jīng)解密模塊320解密后存儲于第二明文寄存器310,第二明文寄存器310與APB橋連接。如圖4所示,解密模塊320為AES解密模塊,包括初始化序列模塊321、輪變換模塊322、結(jié)束序列模塊323、密鑰擴展模塊324、控制邏輯模塊325以及密鑰緩沖翻轉(zhuǎn)模塊326。初始化序列單元321用于對密文進行矩陣排列。輪變換單元322用于接收子密鑰和初始化后的明文完成輪變換。結(jié)束序列單元323用于將加密好的密文輸出。密鑰擴展單元324用于產(chǎn)生所述子密鑰??刂七壿媶卧?25控制初始化序列單元321、輪變換單元322、結(jié)束序列單元323、密鑰擴展單元324以及密鑰翻轉(zhuǎn)緩沖模塊326協(xié)同工作以完成整個解密過程。控制邏輯模塊325通過Id信號開始加密過程;通過給出done信號來標明完成一次解密過程。以下以128位AES解密模塊和8位GPIO為例,說明一次完整的解密過程。從外部傳輸過來的數(shù)據(jù)需要進行AES解密處理,然后才通過APB橋傳輸給CPU使用或者存儲起來。首先,CPU通過APB橋配置好解密需要的10個密鑰,然后通過GPIO開始讀取數(shù)據(jù),并將數(shù)據(jù)存儲在第二密文寄存器330中。當?shù)诙芪募拇嫫?30滿128位時產(chǎn)生Id信號,解密模塊320裝載數(shù)據(jù)開始解密,解密完成之后產(chǎn)生done信號,通知第二密文寄存器330可以開始下一個128位數(shù)據(jù)塊的解密處理,同時將解密生成的明文給第二明文寄存器310,然后每次8位傳給APB橋。同加密過程,CPU通過加密的GPIO讀取數(shù)據(jù)時,數(shù)據(jù)也遲于地址到達,故需要將地址緩存,而且可以共用一個移位寄存器。上述的AES加密模塊或解密模塊還可是192位或256位的。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。
權(quán)利要求
1.一種具有安全機制的GPIO IP核,其特征在于,包括 GPIO輸入輸出邏輯模塊,與APB橋連接,從APB橋接收配置信息,配置完成后至少完成輸入輸出數(shù)據(jù)的功能; 加密模組,接收來自APB橋的明文數(shù)據(jù),加密后傳輸給所述GPIO輸入輸出邏輯模塊; 解密模組,接收來自所述GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),解密后傳輸給所述APB橋。
2.根據(jù)權(quán)利要求1所述的具有安全機制的GPIOIP核,其特征在于,所述GPIO輸入輸出邏輯模塊包括: 寄存器組,可接收所述配置信息,將所述GPIO輸入輸出邏輯模塊配置為輸入端口或輸出端口 ; 輸入輸出選擇單元,與所述寄存器組連接,根據(jù)寄存器組的配置狀態(tài)輸入或輸出數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的具有安全機制的GPIOIP核,其特征在于,所述寄存器組還可以被配置為測試狀態(tài),所述GPIO輸入輸出邏輯模塊還包括: 硬件控制單元:通過配置寄存器為測試狀態(tài)處于自我檢測狀態(tài),并接收外部輸入的測試向量。
4.根據(jù)權(quán)利要求2所述的具有安全機制的GPIOIP核,其特征在于,所述寄存器組還可以被配置為中斷檢測狀態(tài),所述GPIO輸入輸出邏輯模塊還包括: 中斷檢測單元,與所述寄存器組連接,根據(jù)寄存器組的中斷檢測狀態(tài)檢測來自外部設(shè)備的中斷請求。
5.根據(jù)權(quán)利要求2至4任一項所述的具有安全機制的GPIOIP核,其特征在于,所述加密模組包括依次連接的第一明文寄存器、加密模塊以及第一密文寄存器,所述第一明文寄存器接收來自APB橋的明文數(shù)據(jù),所述明文數(shù)據(jù)經(jīng)加密模塊加密后存儲于所述第一密文寄存器;所述第一密文寄存器與GPIO輸入輸出邏輯模塊連接。
6.根據(jù)權(quán)利要求5所述的具有安全機制的GPIOIP核,其特征在于,所述加密模塊包括: 初始化序列單元,用于對明文進行矩陣排列; 輪變換單元,用于接收子密鑰和初始化后的明文完成輪變換; 結(jié)束序列單元,用于將加密好的密文輸出; 密鑰擴展單元,用于產(chǎn)生所述子密鑰; 控制邏輯單元,控制所述初始化序列單元、輪變換單元、結(jié)束序列單元以及密鑰擴展單元協(xié)同工作以完成整個加密過程。
7.根據(jù)權(quán)利要求5所述的具有安全機制的GPIOIP核,其特征在于,所述解密模組包括依次連接的第二明文寄存器、解密模塊以及第二密文寄存器,所述第二密文寄存器接收來自GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),所述密文數(shù)據(jù)經(jīng)解密模塊解密后存儲于所述第二明文寄存器;所述第二明文寄存器與APB橋連接。
8.根據(jù)權(quán)利要求7所述的具有安全機制的GPIOIP核,其特征在于,所述解密模塊包括: 初始化序列單元, 用于對密文進行矩陣排列; 密鑰擴展單元,用于產(chǎn)生子密鑰;密鑰翻轉(zhuǎn)緩沖單元,用于接收子密鑰,然后將子密鑰按照相反是順序提供給輪變換模塊; 輪變換單元,用于依照所述密鑰翻轉(zhuǎn)緩沖模塊提供的子密鑰和初始化后的密文完成輪變換; 結(jié)束序列單元,用于將解密后的明文輸出; 控制邏輯單元,用于控制所述初始化序列單元、輪變換單元、結(jié)束序列單元、密鑰擴展單元以及密鑰翻轉(zhuǎn)緩沖單元協(xié)同工作以完成整個解密過程。
9.根據(jù)權(quán)利要求7所述的具有安全機制的GPIOIP核,其特征在于,所述加密模塊為AES加密模塊,所述解密模塊為AES解密模塊。
10.根據(jù)權(quán)利要求7所述的具有安全機制的GPIOIP核,其特征在于,所述第一明文寄存器和第二密文寄存器為128位、192位或256位。
全文摘要
本發(fā)明公開一種具有安全機制的GPIO IP核,包括GPIO輸入輸出邏輯模塊,與APB橋連接,從APB橋接收配置信息,配置完成后至少完成輸入輸出數(shù)據(jù)的功能;加密模組,接收來自APB橋的明文數(shù)據(jù),加密后傳輸給所述GPIO輸入輸出邏輯模塊;解密模組,接收來自所述GPIO輸入輸出邏輯模塊的密文數(shù)據(jù),解密后傳輸給所述APB橋。上述GPIO IP核通過對經(jīng)GPIO的數(shù)據(jù)進行加解密,保證GPIO接口的數(shù)據(jù)通信安全。
文檔編號G06F21/85GK103077362SQ20121057953
公開日2013年5月1日 申請日期2012年12月27日 優(yōu)先權(quán)日2012年12月27日
發(fā)明者聶澤東, 胡必祥 申請人:深圳先進技術(shù)研究院