发明内容
为解决上述技术问题,本发明的目的在于提供一种通过特定指令集来进行相关运算的信息安全协处理器,其指令集设计包含如下内容:密码算法执行指令、上下文操作指令、密钥存取指令、数据传输指令、逻辑运算指令以及寄存器写指令,从而使协处理器能够以较低的成本支持复杂的多功能、多任务要求。
为实现上述发明目的,本发明的一种通过特定指令集来进行相关运算的信息安全协处理器,其包括如下单元:
若干个寄存器堆:其为可配置寄存器;
指令处理单元:用于负责指令集中指令的读取和解码;
运算单元:用于实现数学运算、或者密码学算法并支持指令集相关指令的执行;
DMA引擎:用于负责所述信息安全协处理器内部和外部之间的数据交换并支持指令集相关指令的执行;
本地存储器:用于存放本地数据并支持指令集相关指令的执行;
密钥存储器:用于存放未加密的密钥并支持指令集相关指令的执行;
上下文存储器:用于存放运行时上下文并支持指令集相关指令的执行,其中,所述运行时上下文个数不限,每个上下文有唯一的ID信息,当前上下文ID表示当前活跃的上下文的ID。
作为本发明的进一步改进,所述指令集相关指令包括:密码算法执行指令、上下文操作指令、密钥存取指令、数据传输指令、逻辑运算指令以及寄存器写指令。
作为本发明的进一步改进,所述密码算法执行指令包括一执行特定密码学算法的指令C_CIPHER。
作为本发明的进一步改进,所述上下文操作指令包括:
C_LCTX:该指令导致从***地址空间读入上下文到上下文存储器中,覆盖当前上下文ID所对应的上下文,需要给出上下文在***地址空间的起始地址;
C_SCTX:该指令导致当前上下文ID所对应的上下文存储器内的上下文被存入***地址空间中,需要给出上下文在***地址空间的起始地址;
C_SWITCH_CTX:该指令将当前上下文ID切换到指定上下文ID。
作为本发明的进一步改进,所述密钥存取指令包括:
C_LKEY:该指令根据源地址、目标地址和密钥长度,从本地存储器中读入一个密钥到密钥存储器;
C_SKEY:该指令根据源地址、目标地址和密钥长度,向本地存储器中写出一个密钥从密钥存储器。
作为本发明的进一步改进,所述数据传输指令包括:
C_DMAI:根据给出的源地址、目标地址和数据大小,通过DMA引擎从处理器外部读入数据到处理器内部;
C_DMAO:根据给出的源地址、目标地址和数据大小,通过DMA引擎从处理器内部写出数据到处理器外部;
C_MEM_CPY:根据给出的源地址、目标地址和数据大小,在处理器内部将一定量的数据从一处搬运到另一处。
作为本发明的进一步改进,所述逻辑运算指令包括:
C_XOR:根据给出的两个操作数的地址和数据大小,从处理器内部两个位置读取一定大小的数据进行二进制异或操作,将结果放入其中一个操作数所在位置。
作为本发明的进一步改进,所述寄存器写指令包括:
C_REGW:根据给出的目标地址和数据大小,将指令序列中紧随其后的指令作为数据写入到处理器内部寄存器堆中。
与现有技术相比,本发明通过特定指令集来进行相关运算的信息安全协处理器,其指令集设计包含如下内容:密码算法执行指令、上下文操作指令、密钥存取指令、数据传输指令、逻辑运算指令以及寄存器写指令,从而使协处理器能够支持复杂的多功能、多任务要求,且成本更低、功能灵活。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包括在本发明的保护范围内。
请参照图1所示,在本发明一具体实施方式中,一种通过特定指令集来进行相关运算的信息安全协处理器,其包括如下单元:
若干个寄存器堆10:其为可配置寄存器;其中,通过APB总线对寄存器堆的读写,外部可以实现对该处理器的控制。其中,本发明采用两种总线进行数据传输:AHB(Advanced High performance Bus)***总线和APB(Advanced Peripheral Bus)***总线,AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接;APB主要用于低带宽的周边外设之间的连接,例如UART、1284等。
寄存器堆10包括用于用于控制和确定处理器的操作模式以及当前执行任务的特性的控制寄存器、用于体现当前指令执行结果的各种状态信息状态寄存器等等。寄存器堆可于APB总线之间进行数据传输。
指令处理单元(30、40):用于负责指令集中指令的读取和解码;
运算单元50:用于实现数学运算、或者密码学算法并支持指令集相关指令的执行;其中,优选地,数学运算可包括复制、或者异或运算、或者以上两者的组合;密码学算法运算可包括AES、DES、MD5等。
DMA引擎20:用于负责所述信息安全协处理器内部和外部之间的数据交换并支持指令集相关指令的执行;其中,在本实施方式中,DMA (Direct Memory Access,直接内存存取)引擎用于负责AHB总线和本地地址空间单元之间数据传输,在其他实施方式中,DMA引擎可替换为其他能实现类似功能的部件。
本地存储器60:用于存放本地数据并支持指令集相关指令的执行;
密钥存储器70:用于存放未加密的密钥并支持指令集相关指令的执行;每个密钥存储位置具有唯一的ID,在本实施方式中,共存储四个密钥,但在其他可行的实施方式中,密钥的个数可以作相应改变。
上下文存储器80:用于存放运行时上下文并支持指令集相关指令的执行,其中,所述运行时上下文个数不限,每个上下文有唯一的ID信息,当前上下文ID表示当前活跃的上下文的ID。优选地,在本实施方式中,共存储2个上下文。
参照图2所示,指令序列的执行过程如下:
S1、处理器在空闲状态等待被通知开始执行;
S2、得到开始执行的命令后,指令读取模块首先从寄存器堆中读出所要执行的指令序列在***存储空间的首地址;
S3、指令读取模块将指令序列首地址发送给DMA引擎,并且启动DMA。DMA引擎在被启动后自动从首地址开始逐个读入指令序列;
S4、指令读取模块从DMA引擎中读取一条指令并送给指令解码模块;
S5、指令解码模块解码它收到的指令;
S6、被解码后的指令控制处理器内部功能单元完成指令的执行;
S7、如果指令序列结束,返回第1步等待命令。否则,从第4步开始循环。
于本实施方式中,指令集相关指令包括:密码算法执行指令、上下文操作指令、密钥存取指令、数据传输指令、逻辑运算指令以及寄存器写指令。
下面介绍每条指令的定义,在本实施方式中,每条指令的长度固定为32比特。最小数据单位为4个字节,所以在以下描述中,地址或数据的单位是4个字节,以下resv均表示保留字段。为叙述方便,称当前有效上下文为当前上下文ID所指向的上下文。
首先,密码算法执行指令包括一执行特定密码学算法的指令C_CIPHER:
31 |
30:27 |
26:0 |
lcmd |
opcode |
resv |
lcmd:表示指令序列结束标志;
opcode:表示指令编码字段;
该指令启动算法引擎执行一个密码学算法,其过程为:
1. 从当前有效上下文中读取所要执行的密码学算法信息;
2. 执行密码学算法并更新当前有效上下文。
值得一提的是,执行该指令需保证当前上下文已准备好。
具体地,上下文操作指令包括:
C_LCTX:该指令导致从***地址空间读入上下文到上下文存储器中,覆盖当前上下文ID所对应的上下文,需要给出上下文在***地址空间的起始地址;
C_SCTX:该指令导致当前上下文ID所对应的上下文存储器内的上下文被存入***地址空间中,需要给出上下文在***地址空间的起始地址;
C_SWITCH_CTX:该指令将当前上下文ID切换到指定上下文ID。
其中,C_LCTX:
31 |
30:27 |
26:0 |
lcmd |
opcode |
resv |
lcmd: 表示指令序列结束标志;
opcode: 表示指令编码字段。
该指令通过DMA引擎从协处理器外部读入上下文信息到当前上下文存储位置,值得一提的是,需事先设定DMA引擎的起始读地址为上下文信息在***地址空间的存储地址。
C_SCTX:
31 |
30:27 |
26:0 |
Lcmd |
opcode |
resv |
lcmd: 表示指令序列结束标志;
opcode: 表示指令编码字段。
该指令通过DMA引擎向协处理器外部写出上下文信息从当前上下文存储位置,值得一提的是,需事先设定DMA引擎的起始读地址为上下文信息在***地址空间的存储地址。
C_SWITCH_CTX:
31 |
30:27 |
26:1 |
0 |
lcmd |
opcode |
Resv |
ctxId |
lcmd: 指令序列结束标志;
opcode: 指令编码字段;
ctxId:要切换至的上下文ID;
该指令的功能是将当前上下文ID切换为ctxId。
具体地,所述密钥存取指令包括:
C_LKEY:该指令根据源地址、目标地址和密钥长度,从本地存储器中读入一个密钥到密钥存储器;
C_SKEY:该指令根据源地址、目标地址和密钥长度,向本地存储器中写出一个密钥从密钥存储器。
C_LKEY:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
lcmd |
opcode |
lAddr |
kId |
kSize |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddr: 本地源地址;kId: 目标地址;kSize: 密钥大小。
该指令从本地存储空间地址lAddr处读取大小为kSize的密钥存到密钥存储器中ID为kId的位置。
C_SKEY:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
Lcmd |
Opcode |
lAddr |
kId |
kSize |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddr: 本地目的地址;kId: 源地址;kSize: 密钥大小。
该指令向本地存储空间地址lAddr处写入大小为kSize的密钥从密钥存储器中ID为kId的位置。
具体地,所述数据传输指令包括:
C_DMAI:根据给出的源地址、目标地址和数据大小,通过DMA引擎从处理器外部读入数据到处理器内部;
C_DMAO:根据给出的源地址、目标地址和数据大小,通过DMA引擎从处理器内部写出数据到处理器外部;
C_MEM_CPY:根据给出的源地址、目标地址和数据大小,在处理器内部将一定量的数据从一处搬运到另一处。
C_DMAI:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
Lcmd |
Opcode |
lAddr |
dSize |
resv |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddr: 本地目的地址;dSize: 数据大小。该指令从DMA通道中读入数据大小为dSize得数据到本地存储器lAddr处,值得一提的是:DMA的设置决定了数据来源位置。
C_DMAO:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
lcmd |
Opcode |
lAddr |
dSize |
resv |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddr: 本地源地址;dSize: 数据大小。该指令向DMA通道中写出大小为dSize的数据从本地存储器地址lAddr,值得一提的是:DMA的设置决定了数据目标位置。
C_MEM_CPY:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
Lcmd |
opcode |
lAddrSrc |
lAddrDst |
dSize |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddrSrc: 本地源地址;lAddrDst: 本地目的地址;dSize: 数据大小。该指令从本地存储器地址lAddrSrc处拷贝大小为dSize的数据到本地存储器地址lAddrDst处。
具体地,所述逻辑运算指令包括:
C_XOR:根据给出的两个操作数的地址和数据大小,从处理器内部两个位置读取一定大小的数据进行二进制异或操作,将结果放入其中一个操作数所在位置。
C_XOR:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
lcmd |
opcode |
lAddrSrc |
lAddrDst |
dSize |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddrSrc: 本地源地址,操作数1;lAddrDst: 本地目的地址,操作数2;dSize: 数据大小。
该指令从本地存储器地址lAddrSrc处读出大小为dSize的数据,和本地存储器地址lAddrDst处所读出的大小为dSize的数据进行二进制异或操作,然后将结果写入lAddrDst处。
具体地,所述寄存器写指令包括:
C_REGW:根据给出的目标地址和数据大小,将指令序列中紧随其后的指令作为数据写入到处理器内部寄存器堆中。
C_REGW:
31 |
30:27 |
26:17 |
16:7 |
6:0 |
lcmd |
opcode |
lAddr |
resv |
dSize |
其中,lcmd: 指令序列结束标志;opcode: 指令编码字段;lAddr: 本地目的寄存器地址;dSize: 数据大小。该指令将指令序列里该指令后面的大小为dSize的“指令”作为数据写入到寄存器堆地址为lAddr处。
与现有技术相比,实现该指令集的协处理器具备如下优点:
第一、功能灵活。密码算法执行指令可以执行多种密码学算法,结合密钥存取指令、数据传输指令、逻辑运算指令以及寄存器写指令组合成一套完整的方案实现各种不同的运算组合,从而灵活的支持各种安全加密方案。这样解决了单一算法硬件加速器功能单一的问题。
第二、成本低。指令集不包含跳转和条件判断等复杂指令,不包含密码学中不常用的数学运算,这使得指令集的硬件实现得到简化,并暗示不需要专用微处理器。另外、密码算法执行指令仅简单的导致执行一个特定算法,这意味着具体的算法可以通过专用电路实现。比起使用专用微处理器的方案,或多个单一功能协处理器的方案,成本更低,且不失灵活性。
第三、性能高。数据传输指令实现高效的处理器内以及处理器和***存储器之间数据的传输。具体的密码算法可以用硬件加速实现。
第四、多任务支持。上下文操作指令和密钥存取指令支持切换不同任务的上下文和使用的密钥。从而提供了单一算法硬件加速器不具备的多任务处理功能。
第五、易用性。从使用上来说,本发明比单一算法硬件加速器更灵活,又比使用专用微处理器的方案更简单直接。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包括一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包括在本发明的保护范围之内。