具有安全机制的GPIO IP核
技术领域
本发明涉及GPIO技术,特别是涉及一种具有安全机制的GPIO IP核。
背景技术
General Purpose Input Output(通用输入/输出),简称为GPIO。目前一般把GPIO用来作为CPU外围设备的控制端口或者通过模拟I2C和SPI通信接口实现CPU与外界的通信。
AMBA总线是由ARM公司提出的一种高级微控制器总线体系,其规范定义了在设计高性能嵌入式微控制器时的一种片上通信标准。根据AMBA标准定义了三种不同的总线:高级高性能总线(AHB)、高级系统总线(ASB)、高级外设总线(APB)。
系统内部的通信一般采用AHB总线。APB作为主总线高性能通道的二级总线,是用于低功耗外设的,其提供了基本外设宏单元之间的通信接口,APB总线是通过APB桥与内部高级系统总线实现通信。
通常,外设可以通过连接在APB总线上的GPIO接口与CPU进行通信。
信息技术的发展对于信息安全的要求越来越高,需要保证的信息安全的领域也越来越广泛。其中上述的GPIO接口的通信就存在安全问题。
发明内容
基于此,有必要提供一种具有安全机制的GPIO IP核,其解决GPIO接口存在的通信安全问题。
一种具有安全机制的GPIO IP核,包括:
GPIO输入输出逻辑模块,与APB桥连接,从APB桥接收配置信息,配置完成后至少完成输入输出数据的功能;
加密模组,接收来自APB桥的明文数据,加密后传输给所述GPIO输入输出逻辑模块;
解密模组,接收来自所述GPIO输入输出逻辑模块的密文数据,解密后传输给所述APB桥。
在其中一个实施例中,所述GPIO输入输出逻辑模块包括:
寄存器组,可接收所述配置信息,将所述GPIO输入输出逻辑模块配置为输入端口或输出端口;
输入输出选择单元,与所述寄存器组连接,根据寄存器组的配置状态输入或输出数据。
在其中一个实施例中,所述寄存器组还可以被配置为测试状态,所述GPIO输入输出逻辑模块还包括:
硬件控制单元:通过配置寄存器为测试状态处于自我检测状态,并接收外部输入的测试向量。
在其中一个实施例中,所述寄存器组还可以被配置为中断检测状态,所述GPIO输入输出逻辑模块还包括:
中断检测单元,与所述寄存器组连接,根据寄存器组的中断检测状态检测来自外部设备的中断请求。
在其中一个实施例中,其特征在于,所述加密模组包括依次连接的第一明文寄存器、加密模块以及第一密文寄存器,所述第一明文寄存器接收来自APB桥的明文数据,所述明文数据经加密模块加密后存储于所述第一密文寄存器;所述第一密文寄存器与GPIO输入输出逻辑模块连接。
在其中一个实施例中,所述加密模块包括:
初始化序列单元,用于对明文进行矩阵排列;
轮变换单元,用于接收子密钥和初始化后的明文完成轮变换;
结束序列单元,用于将加密好的密文输出;
密钥扩展单元,用于产生所述子密钥;
控制逻辑单元,控制所述初始化序列单元、轮变换单元、结束序列单元以及密钥扩展单元协同工作以完成整个加密过程。
在其中一个实施例中,所述解密模组包括依次连接的第二明文寄存器、解密模块以及第二密文寄存器,所述第二密文寄存器接收来自GPIO输入输出逻辑 模块的密文数据,所述密文数据经解密模块解密后存储于所述第二明文寄存器;所述第二明文寄存器与APB桥连接。
在其中一个实施例中,所述解密模块包括:
初始化序列单元,用于对密文进行矩阵排列;
密钥扩展单元,用于产生子密钥;
密钥翻转缓冲单元,用于接收子密钥,然后将子密钥按照相反是顺序提供给轮变换模块;
轮变换单元,用于依照所述密钥翻转缓冲模块提供的子密钥和初始化后的密文完成轮变换;
结束序列单元,用于将解密后的明文输出;
控制逻辑单元,用于控制所述初始化序列单元、轮变换单元、结束序列单元、密钥扩展单元以及密钥翻转缓冲单元协同工作以完成整个解密过程。
在其中一个实施例中,所述加密模块为AES加密模块,所述解密模块为AES解密模块。
在其中一个实施例中,所述第一明文寄存器和第二密文寄存器为128位、192位或256位。
上述具有安全机制的GPIO IP核通过对经GPIO的数据进行加解密,保证GPIO接口的数据通信安全。
附图说明
图1为一种片上系统的模块结构图;
图2为一实施例的GPIO IP核的模块结构图;
图3为图2所示实施例的GPIO输入输出逻辑模块结构图;
图4为图2所示实施例的加密模块结构图;
图5为图2所示实施例的解密模块结构图。
具体实施方式
如图1所示,为一种片上系统的模块结构图。该片上系统包括本实施例的 一种具有安全机制的GPIO IP核10。该具有安全机制的GPIO IP核10连接在APB桥上,通过APB桥与CPU之间传送数据。
如图2所示,为一实施例的GPIO IP核的模块结构图。该GPIO IP核10包括GPIO输入输出逻辑模块100、加密模组200以及解密模组300。其中GPIO输入输出逻辑模块100与APB桥连接,从APB桥接收配置信息,配置完成后至少完成输入输出数据的功能。加密模组200接收来自APB桥的数据,加密后传输给GPIO输入输出逻辑模块100。解密模组300接收来自GPIO输入输出逻辑模块100的密文,解密后传输给所述APB桥。这样,通过GPIO传输的数据均被加密,从而可以防止被窃取,具备一定程度的安全性。
如图3所示,GPIO输入输出逻辑模块100包括寄存器组110和输入输出选择单元120。寄存器组100可接受来自CPU的配置信息,被配置成不同的状态,从而能够完成输入或输出数据的功能。GPIO接口最普通的功能即能作为输入接口或输出接口。输入输出选择单元120与寄存器组110连接,根据寄存器组110的状态,也即寄存器组110输出的控制信号,就可以形成输入接口或输出接口,进而完成输入或输出数据的功能。
进一步地,寄存器组110还可以被配置为测试状态,GPIO输入输出逻辑模块100还包括硬件控制单元130。硬件控制单元130与寄存器组110连接,根据寄存器组110被配置的测试状态而处于自我检测状态,并接收外部输入的测试向量。由外部输入测试向量来实现其自我检测功能。
进一步地,寄存器组110还可以被配置为中断检测状态,GPIO输入输出逻辑模块110还包括中断检测单元140。中断检测单元140与寄存器组110连接,根据寄存器组110的所处的中断检测状态检测来自外部设备的中断请求。
如图2所示,加密模组200包括依次连接的第一明文寄存器210、加密模块220以及第一密文寄存器230。第一明文寄存器210接收来自APB桥的明文数据,所述明文数据经加密模块220加密后存储于第一密文寄存器230。第一密文寄存器230与GPIO输入输出逻辑模块100连接,向GPIO输入输出逻辑模块100。第一明文寄存器为128位、192位或256位。
如图4所示,加密模块220为AES加密模块,包括初始化序列单元221、 轮变换单元222、结束序列单元223、密钥扩展单元224和控制逻辑单元225。初始化序列单元221用于对明文进行矩阵排列。轮变换单元222用于接收子密钥和初始化后的明文完成轮变换。结束序列单元223用于将加密好的密文输出。密钥扩展单元224用于产生所述子密钥。控制逻辑单元225控制初始化序列单元221、轮变换单元222、结束序列单元223以及密钥扩展单元224协同工作以完成整个加密过程。控制逻辑模块225通过ld信号开始加密过程;通过给出done信号来标明完成一次加密过程。
本实施例中,密钥扩展单元(Key Expansion)224根据AES算法子密钥生成模型编写,能够快速的产生用于轮变换的10轮子密钥。每个时钟周期提供一轮密钥。对于一次AES加密过程,需要进行10轮变换,所以密钥扩展需要在加密过程中提供10轮变换所需要的子密钥。密钥扩展模块的密钥共用上11次(包括初始密钥),包括1次用于初始化序列单元221,9次用于轮变换单元222以及1次用于结束序列单元223。除了输入的初始密钥,密钥扩展单元224一共产生10次子密钥。
以下以128位AES加密模块和8位GPIO为例,说明一次完整的加密过程。
从CPU向外发出的数据要经过加密处理后再通过GPIO传送出去。首先,CPU通过APB桥将加密需要的初始密钥写入加密模块220中,然后将需要加密的数据写入第一明文寄存器210(本实施例中,其大小为128位)。当第一明文寄存器210被写满时产生一个ld(高电平)信号,加密模块220装载128位明文(需要加密的数据)以及初始密钥开始加密。经过13个时钟周期之后,加密模块220产生一个done信号(表示128位数据加密完成),通知第一明文寄存器210可以传输下一个128位数据。由于8位的APB数据总线需要32个周期才能写满第一明文寄存器210,因此加密完后,加密模块220需要等待下一个128位数据填满第一明文寄存器210,才能开始下一次加密。为了加快数据处理能力可以将APB数据总线扩展为16位。同时密文(加密过后的数据)被装载到第一密文寄存器230,然后每次16位传送给GPIO接口传输出去。需要指出的是,由于数据要经过加密,故CPU向外传输数据时,数据要迟于地址,故需要将地址通过移位寄存器缓存。
如图2所示,解密模组300包括依次连接的第二明文寄存器310、解密模块320以及第二密文寄存器330。第二密文寄存器330接收来自GPIO输入输出逻辑模块的密文数据,所述密文数据经解密模块320解密后存储于第二明文寄存器310,第二明文寄存器310与APB桥连接。
如图4所示,解密模块320为AES解密模块,包括初始化序列模块321、轮变换模块322、结束序列模块323、密钥扩展模块324、控制逻辑模块325以及密钥缓冲翻转模块326。初始化序列单元321用于对密文进行矩阵排列。轮变换单元322用于接收子密钥和初始化后的明文完成轮变换。结束序列单元323用于将加密好的密文输出。密钥扩展单元324用于产生所述子密钥。控制逻辑单元325控制初始化序列单元321、轮变换单元322、结束序列单元323、密钥扩展单元324以及密钥翻转缓冲模块326协同工作以完成整个解密过程。控制逻辑模块325通过ld信号开始加密过程;通过给出done信号来标明完成一次解密过程。
以下以128位AES解密模块和8位GPIO为例,说明一次完整的解密过程。
从外部传输过来的数据需要进行AES解密处理,然后才通过APB桥传输给CPU使用或者存储起来。首先,CPU通过APB桥配置好解密需要的10个密钥,然后通过GPIO开始读取数据,并将数据存储在第二密文寄存器330中。当第二密文寄存器330满128位时产生ld信号,解密模块320装载数据开始解密,解密完成之后产生done信号,通知第二密文寄存器330可以开始下一个128位数据块的解密处理,同时将解密生成的明文给第二明文寄存器310,然后每次8位传给APB桥。同加密过程,CPU通过加密的GPIO读取数据时,数据也迟于地址到达,故需要将地址缓存,而且可以共用一个移位寄存器。
上述的AES加密模块或解密模块还可是192位或256位的。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。