支持线程级加解密的密码处理器及其密码运算操作方法

文档序号:7928374阅读:203来源:国知局

专利名称::支持线程级加解密的密码处理器及其密码运算操作方法
技术领域
:本发明属于数字通信
技术领域
,特别是涉及密码处理器及其密码运算操作的方法,用于多对多密码通信的加密与解密。
背景技术
:随着数字通信技术发展、计算机网络日益普及和各类信息系统的普遍应用,基于密码算法的加密己成为信息机密性、完整性、抗否认性和认证等各方面的基础。随之而来,加密终端设备可能同时交叉访问多个加密服务器,或者与多个加密终端实现交叉通信;加密干线设备如VPN、网关,则面临多个用户随机交叉访问不同服务对象。这些交叉访问归纳起来,其实就是一个线程级加解密的问题,即密码处理器支持密钥只设定一次,并与线程索引号对应起来,之后每次加解密时,选择对应的线程索引号,而无需再设定密钥,并自动切换到密码算法前次数据流的加解密状态后,继续后续数据流的加解密服务。现有的密码处理器结构如图l所示,包括数据寄存器、状态寄存器、命令寄存器、地址总线及控制逻辑、电源检测、随机数发生器、密钥产生器、非易失性存储器、易失性存储器和执行引擎。其中,数据寄存器暂存发送和接收的数据,通过通道CO与外部数据总线相连,通过通道C3与其它模块相连;状态寄存器存储密码处理器相关的状态信息,通过通道Cl与外部数据总线相连,通过通道C4与其它模块相连;命令寄存器暂存命令,通过通道C2与外部数据总线相连,通过通道C5与其它模块相连;地址总线及控制逻辑通过通道C6管理通信总线上的信息流,其外部连接的信号中,X。4为地址信号;i^^r为密码处理器的复位信号;OJ^为密码处理器的时钟信号;^为读控制信号;际为写控制信号;5为片选信号。电源检测管理密码处理器电源,其通过通道C7与其它模块相连;随机数发生器为密码处理器内部模块产生随机数,其通过通道C8与其它模块相连;密钥产生器产生非对称密钥对和对称密钥,其通过通道C9与其它模块相连;非易失性存储器用来存储永久性的信息,通过通道C10与其它模块相连;易失性存储器用来存储非永久性的信息,通过通道C11与其它模块相连;执行引擎为密码运算部件,通过通道C12与其它模块相连完成具体密码算法的加解密操作。密码处理器通过地址总线及控制逻辑的外部连接信号(4A、及五^er、ox、^、而、5)、外部数据总线与CPU相连,通过通信命令的交互,实现对数据流加解密的功能。由于密码算法是一种临界资源,因此,利用上述现有的密码处理器不能支持不同密钥的加解密随机交叉操作;并且在密码处理器不能提供密码算法执行中间状态时,即使外部其他CPU程序配合,也不能支持CFB和OFB工作模式的交叉加解密,无法完成多对多通信中多密钥随机交叉加解密的问题。
发明内容本发明的目的在于克服现有密码处理器的上述缺点,提供一种支持线程级加解密的密码处理器及其密码运算操作的方法,以完成多对多通信中多密钥随机交叉的密码运算操作。为实现上述目的,本发明提供的支持线程级加解密的密码处理器包括数据寄存器、状态寄存器、命令寄存器、地址总线及控制逻辑、电源检测、随机数发生器、密钥产生器、非易失性存储器、易失性存储器和执行引擎,其特征在于增设专用易失性存储器、专用易失性存储器控制器和索引寄存器,用于在内部与执行引擎进行交互,完成线程级加解密。所述的专用易失性存储器控制器与外部并行/串行易失性存储器连接,实现双向通信。所述的索引寄存器中存放当前线程索引号,执行引擎和控制逻辑根据索引寄存器的值产生对专用易失性存储器和外部并行/串行易失性存储器的寻址基地址。所述的专用易失性存储器和外部并行/串行易失性存储器存放有密码运算过程中的中间变量,执行引擎按照该中间变量进行线程级加解密。所述的外部串行易失性存储器进行管理操作的控制命令,即读取命令Read一SerialMemory;写入命令Write—SerialMemory;线程擦除命令ThreadErase一SerialMemory;片擦除命令ChipErase_SerialMemory。为实现上述目的,本发明提供的密码运算操作方法,按照对各数据流首次启动加解密和切换不同线程的加解密状态分别描述如下A、一种支持线程级加解密的密码处理器进行密码运算操作的方法,其特征在于对各数据流首次启动加解密时,包括如下步骤1)根据数据流设置对应的线程索引号;2)发送线程初始化命令SetlnitThreadNumber;3)设置线程索引号所对应的密钥;4)设定加密或解密的工作方式及其工作模式,以及工作模式对应的参数;5)按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文;6)密码处理器在收到外部数据总线送进该数据流的明文或密文分组后,根据其设定加密或解密的工作方式及其工作模式,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,进行按线程加密或解密操作;7)当加密或解密操作处理完毕后,对线程索引号指向的专用易失性存储器或外部并行/串行易失性存储器中的中间变量进行更新,变更状态寄存器的状态-,8)读取状态寄存器的状态,直到状态处于非忙状态,再继续下一步;9)读取密文或明文,若需要对该线程继续进行加密或解密,重复步骤5)歩骤9),否则处于等待外部CPU命令的状态。B.—种支持线程级加解密的密码处理器进行密码运算操作的方法,其特征在于切换不同线程的加解密时,包括如下步骤(1)动态指定当前线程索引号;(2)发送线程切换命令SetThreadNumberActived;(3)按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文;(4)密码处理器在收到外部数据总线送进该数据流的明文或密文分组后,根据其设定加密或解密的工作方式及其工作模式,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,进行按线程加密或解密操作;(5)当加密或解密操作处理完毕后,对线程索引号指向的专用易失性存储器或外部并行/串行易失性存储器中的中间变量进行更新,变更状态寄存器的状态;(6)读取状态寄存器状态,直到状态处于非忙状态,继续下一步;(7)读取密文或明文,若需要对该线程继续进行加密或解密,重复步骤(3)步骤(7),否则处于等待外部CPU命令的状态。上述密码运算操作的方法,其中所述的根据数据流设置对应的线程索引号,是由外部CPU对加密或解密的数据流按线程进行编号,并将该编号通过外部数据总线写入索引寄存器中,作为线程对应的索引号。上述的密码运算操作的方法,其中所述的动态指定当前线程索引号,是将需要动态切换的加密或解密数据流对应的线程索引号,通过外部数据总线写入索引寄存器中,作为当前工作的索引号。本发明具有如下优点1.由于本发明增设了专用易失性存储器、专用易失性存储器控制器和索引寄存器,因而为完成线程级加解密提供结构支撑,能够完成按线程进行存储、管理对应的中间变量,并与执行引擎进行交互的功能。2.由于本发明在专用易失性存储器控制器端双向连接有外部并行/串行易失性存储器,使中间变量既能存储在外部并行/串行易失性存储器中,也能存储在内部专用易失性存储器中,或者同时使用外部并行/串行易失性存储器和专用易失性存储器,以实现对支持更多线程处理的灵活扩展。3.本发明的密码运算操作方法,由于将不同的数据流按不同索引号进行相应的初始化设置并进行加解密的方法,故为切换不同线程的加解密的过程提供了前提。4.本发明的密码运算操作方法,由于利用动态指定当前线程索引号并切换到当前线程索引号对应的数据流进行加解密,因而可使密码处理器根据索引寄存器中存放的数据流对应的线程索引号决定存储器中存放中间变量的基地址及快速切换执行引擎的完整运行环境,从而实现多线程数据流间的无缝任意切换,以支持现有的各种流密码、非对称密码、分组密码及其所有工作模式如ECB、CBC、OFB、CFB,解决了密码处理器的多密钥、随机交叉加解密的问题。图1是现有的密码处理器体系结构图2是本发明的体系结构图3是本发明首次加密或解密的流程图4是本发明切换不同线程加密或解密的流程图5是现有DES密码算法的加密工作方式及其CBC工作模式的示意图。具体实施例方式参照图2,本发明由数据寄存器、状态寄存器、命令寄存器、地址总线及控制逻辑、电源检测、随机数发生器、密钥产生器、非易失性存储器、易失性存储器、执行引擎、专用易失性存储器、专用易失性存储器控制器、索引寄存器组成。其中专用易失性存储器、专用易失性存储器控制器和索引寄存器用于在内部与执行引擎进行交互,完成线程级加解密。所述的索引寄存器通过第十六通道C16与外部数据总线相连,通过第十五通道C15与其它模块相连,该索引寄存器中存放当前线程索引号,执行引擎和控制逻辑根据索引寄存器的值产生对专用易失性存储器和外部并行/串行易失性存储器的寻址基地址。所述的专用易失性存储器和专用易失性存储器控制器分别通过第十三通道C13和第十四通道C14与其它模块相连,该专用易失性存储器和外部并行/串行易失性存储器存放有密码运算过程中的中间变量,执行引擎按照该中间变量进行线程级加解密,该中间变量为实现线程切换加解密所必需的变量,例如在DES密码算法加解密中所需要的16轮子密钥^^,及其选择的工作模式需要存储的变量,例如在DES密码算法的ECB工作模式下,只需存储16轮子密钥,而在DES密码算法的CBC、CFB和OFB工作模式下,需要存储8字节初始向量IV和16轮子密钥。所述的专用易失性存储器控制器通过第十七通道C17与外部并行/串行易失性存储器相连,实现双向通信,当专用易失性存储器控制器与外部串行易失性存储器连接时,通过控制命令进行双向通信,实现管理操作,该控制命令,包括读取命令Read—SerialMemory、写入命令Write—SerialMemory、线程擦除命令ThreadErase—SerialMemory和片擦除命令ChipErase—SerialMemory。其中读取命令Read—SerialMemory的格式为命令码、索引号、字节数;写入命令Write一SerialMemory的格式为命令码、索引号、字节数、内容;线程擦除命令ThreadErase—SerialMemory的格式为命令码、索引号。片擦除命令ChipErase—SerialMemory的格式为命令码。所述的状态寄存器、命令寄存器和索引寄存器均有各自的地址,例如各占l个地址;数据寄存器分别有输入数据寄存器n^个、输出数据寄存器m2个、密钥数据寄存器m3个以及IV数据寄存器m4个,共需寻址地址为mi+m2+m3+m4+3个,需要的地址线数量为q,q满足不等式2、附1+附2+附3+附4+3。假设,密码处理器的数据总线宽度为32位,则mi的值可由输入数据的宽度除以32得到,i=l,2,3,4。当m尸l时,密码处理器采用FIFO机制进行管理;当m^2时,如DES密码算法的m产2,128位AES密码算法的m产4,采用存储器管理方式。当总线宽度为32位,输入数据宽度为64位时,需要首先发送低32位,再发送高32位,其中数据的0~31位对应总线的0~31位,数据的32~63位对应总线的0~31位。这里取m产mfmfm4^为例,q取满足不等式的最小值3,需地址线数量为3。通过高位地址线4、中位地址线4和低位地址线4并配合片选信号5选择支持线程级加解密的密码处理器的内部寄存器,如表l所示,但不仅限于本形式。表i.<table>tableseeoriginaldocumentpage10</column></row><table>上述支持线程级加解密的密码处理器通过地址总线及控制逻辑的外部连接信号(AA、w五促r、czjc、E、丽、5)和外部数据总线与外部CPU相连,通过通信命令的交互,实现线程级加解密。参照图3和图4,本发明对于各数据流首次启动加解密时的密码运算操作,以对数据流1在DES密码算法的加密工作方式及其CBC工作模式下首次加密的运算操作和切换到线程2进行加密的运算操作为例分别进行描述,该DES密码算法的加密工作方式及其CBC工作模式如图5所示,其中K为DES密码算法的密钥,P2和P^分别为第1次、第2次和第N次输入的明文分组,C,、C2、C^和CN分别为第1次、第2次、第N-1次和第N次输出的密文分组,在第一次加密前时,需要设置初始向量到IV,在后续加密时,如对第i次输入明文分组Pi进行加密,该次加密所用的IV值为Cw。一、对数据流l首次启动加密的运算操作,包括如下步骤步骤l,设置线程索引号。外部CPU根据首次启动加密或解密的数据流编号向端口2通过外部数据总线向索引寄存器写入线程索引号,如对首次启动加密的数据流1设置线程索引号为O。步骤2,发送线程初始化命令SetlnitThreadNumber。外部CPU向端口1发送线程初始化命令SetlnitThreadNumber,对线程进行初始化,例如对线程O进行初始化。步骤3,设置线程索引号所对应的密钥。外部CPU向端口3设置线程索引号所对应的密钥,密钥的长度由不同的密码算法决定,例如在DES密码算法的加密工作模式下,设置线程索引号0所对应的密钥为0xA585EBCA23509235。步骤4,设定加密或解密的工作方式及其工作模式,以及工作模式对应的参数。外部CPU首先向端口1发送设定加密或解密的工作方式及其工作模式的命令,这里设置线程索引号O处于加密工作方式和CBC工作模式;接着外部CPU按CBC工作模式的要求向端口4发送8字节的初始向量到中间变量中的IV存储单元,如0x8E3CBAlEC9F7B56D。步骤5,按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文。外部CPU在设定加密工作方式及其工作模式的情况下,向端口5发送明文分组;在设定解密工作方式及其工作模式的情况下,向端口5发送密文分组。如按步骤4中所述的设置,数据流l的发送,是以8字节为一组的第一个明文分组Pj。步骤6,密码处理器按线程进行加密或解密操作。支持线程级加解密的密码处理器在收到外部数据总线送进的明文或密文分组后,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,按设定的加密或解密的工作方式及其工作模式进行加密或解密操作,如收到数据流1的第一个明文分组P,后,调用专用易失性存储器中对应由密钥0xA585EBCA23509235生成的16轮子密钥和初始向量IV=0x8E3CBAlEC9F7B56D,由执行引擎进行DES密码算法的加密工作方式、CBC工作模式加密。步骤7,密码处理器更新存储器中的中间变量,变更状态寄存器的状态。当密码处理器处理完明文或密文分组后,立即将产生的新的中间变量的值存入该数据流对应线程索引号所指向的专用易失性存储器或外部并行/串行易失性存储器的空间中,完成中间变量的更新,并变更状态寄存器。如当第一个明文分组加密完毕后,立即将第一个明文分组加密产生的密文分组Q存入数据流1对应的线程索引号所指向的专用易失性存储器或外部并行/串行易失性存储器对应的空间中,替换IV存储单元的值,完成中间变量的更新,并变更状态寄存器。步骤8,外部CPU从端口0读取状态信息,直到处于非忙状态,即加密完成或解密完成后,继续下一步。步骤9,外部CPU向端口6读取数据流1的密文分组或明文分组。若需要对该线程继续进行加密或解密,如需继续对数据流1加密,则转向步骤5,外部CPU继续向端口5送入后续明文分组,如第二个明文分组P2,按数据流1的设置进行加密并及时更新对应的中间变量,否则处于等待外部CPU命令的状态。二、对切换到线程2进行加密的运算操作,包括如下步骤步骤一,动态指定当前线程索引号。外部CPU将需要切换的数据流编号向端口2通过外部数据总线向索引寄存器写入当前线程索引号,如设置当前线程索引号为2。步骤二,发送线程切换命令SetThreadNumberActived。外部CPU向端口1发送线程切换命令SetThreadNumberActived,激活当前设置的线程索引号,例如对线程2进行激活。步骤三,按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文。外部CPU按当前线程索引号先前设定的加密或解密工作方式及其工作模式,向端口5发送明文分组或密文分组。如线程索引号2先前设定为DES密码算法的加密工作方式、CBC工作模式,则以8字节为一组发送对应线程索引号2的数据流的明文。步骤四,密码处理器按线程进行加密或解密操作。支持线程级加解密的密码处理器在收到外部数据总线送进的明文或密文分组后,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,按设定的加密或解密的工作方式及其工作模式进行加密或解密操作,如收到当前设定线程索引号2所对应数据流的明文分组后,调用其对应的中间变量由执行引擎进行DES密码算法的加密工作方式、CBC工作模式加密。步骤五,密码处理器更新存储器中的中间变量,变更状态寄存器的状态。当密码处理器处理完明文或密文分组后,立即将产生的新的中间变量的值存入该数据流对应线程索引号所指向的专用易失性存储器或外部并行/串行易失性存储器的空间中,完成中间变量的更新,并变更状态寄存器。如当前线程索引号2对应的明文分组加密完毕后,立即将该明文分组加密产生的密文分组存入线程索引号所指向的专用易失性存储器或外部并行/串行易失性存储器对应的空间中,替换IV存储单元的值,完成中间变量的更新,并变更状态寄存器。步骤六,外部CPU从端口0读取状态信息,直到处于非忙状态,即加密完成或解密完成后,继续下一步。步骤七,外部CPU从端口6读取当前线程索引号所对应的数据流的密文分组或明文分组,如读取线程索引号2所对应的数据流的密文分组。若需要对该线程继续进行加密或解密,如需继续对线程索引号2所对应的数据流进行加密,则转向步骤三,外部CPU继续向端口5送入后续明文分组,按线程索引号2的设置进行加密并及时更新对应的中间变量,否则处于等待外部CPU命令的状态。如此反复切换执行,实现本发明的功能。权利要求1.一种支持线程级加解密的密码处理器,包括数据寄存器、状态寄存器、命令寄存器、地址总线及控制逻辑、电源检测、随机数发生器、密钥产生器、非易失性存储器、易失性存储器和执行引擎,其特征在于增设专用易失性存储器、专用易失性存储器控制器和索引寄存器,用于在内部与执行引擎进行交互,完成线程级加解密。2.根据权利要求1所述的支持线程级加解密的密码处理器,其特征在于专用易失性存储器控制器与外部并行/串行易失性存储器连接,实现双向通信。3.根据权利要求2所述的支持线程级加解密的密码处理器,其特征在于专用易失性存储器控制器与外部串行易失性存储器连接,通过控制命令进行双向通信,实现管理操作。4.根据权利要求1所述的支持线程级加解密的密码处理器,其特征在于索引寄存器中存放当前线程索引号,执行引擎和控制逻辑根据索引寄存器的值产生对专用易失性存储器和外部并行/串行易失性存储器的寻址基地址。5.根据权利要求1或2所述的支持线程级加解密的密码处理器,其特征在于专用易失性存储器和外部并行/串行易失性存储器中存放有密码运算过程中的中间变量,执行引擎按照该中间变量进行线程级加解密。6.根据权利要求3所述的支持线程级加解密的密码处理器,其特征在于所述的控制命令,包括读取命令Read—SerialMemory、写入命令Write—SerialMemory、线程擦除命令ThreadErase—SerialMemory和片擦除命令ChipErase—SerialMemory。7.—种支持线程级加解密的密码处理器进行密码运算操作的方法,其特征在于对各数据流进行首次启动加解密时,包括如下步骤1)根据数据流设置对应的线程索引号;2)发送线程初始化命令SetlnitThreadNumber;3)设置线程索引号所对应的密钥;4)设定加密或解密的工作方式及其工作模式,以及工作模式对应的参数;5)按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文;6)密码处理器在收到外部数据总线送进该数据流的明文或密文分组后,根据其设定加密或解密的工作方式及其工作模式,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,进行按线程加密或解密操作;7)当加密或解密操作处理完毕后,对线程索引号指向的专用易失性存储器或外部并行/串行易失性存储器中的中间变量进行更新,变更状态寄存器的状态;8)读取状态寄存器的状态,直到状态处于非忙状态,再继续下一步;9)读取密文或明文,若需要对该线程继续进行加密或解密,重复步骤5)~步骤9),否则处于等待外部CPU命令的状态。8.根据权利要求7所述的密码运算操作的方法,其特征在于步骤l)所述的根据数据流设置对应的线程索引号,是由外部CPU对加密或解密的数据流按线程进行编号,并将该编号通过外部数据总线写入索引寄存器中,作为线程对应的索引号。9.一种支持线程级加解密的密码处理器进行密码运算操作的方法,其特征在于切换不同线程的加解密时,包括如下步骤(1)动态指定当前线程索引号;(2)发送线程切换命令SetThreadNumberActived;(3)按设定加密或解密的工作方式及其工作模式的要求,发送明文或密文;(4)密码处理器在收到外部数据总线送进该数据流的明文或密文分组后,根据其设定加密或解密的工作方式及其工作模式,调用专用易失性存储器中或外部并行/串行易失性存储器中对应的中间变量,进行按线程加密或解密操作;(5)当加密或解密操作处理完毕后,对线程索引号指向的专用易失性存储器或外部并行/串行易失性存储器中的中间变量进行更新,变更状态寄存器的状态;(6)读取状态寄存器状态,直到状态处于非忙状态,继续下一步;(7)读取密文或明文,若需要对该线程继续进行加密或解密,重复步骤(3)~步骤(7),否则处于等待外部CPU命令的状态。10.根据权利要求9所述的密码运算操作的方法,其特征在于步骤(1)所述的动态指定当前线程索引号,是由外部CPU将需要动态切换的加密或解密数据流对应的线程索引号,通过外部数据总线写入索引寄存器中,作为当前工作的索引号。全文摘要本发明公开了一种支持线程级加解密的密码处理器及密码运算操作的方法,它属于数字通信
技术领域
。该密码处理器由数据寄存器、状态寄存器、命令寄存器、地址总线及控制逻辑、电源检测、随机数发生器、密钥产生器、非易失性存储器、易失性存储器、执行引擎、专用易失性存储器、专用易失性存储器控制器、索引寄存器组成,其中专用易失性存储器、专用易失性存储器控制器和索引寄存器在内部与执行引擎进行交互操作,完成线程级加解密。该密码处理器通过对各数据流首次启动加解密时的初始化线程操作和切换不同线程加解密的操作实现多线程处理。本发明解决了密码处理器的多密钥、随机交叉加解密的问题,能够支持现有的密码体制及其所有的工作模式。文档编号H04L9/08GK101431407SQ20081023265公开日2009年5月13日申请日期2008年12月15日优先权日2008年12月15日发明者史国振,孙春辉,晖李,李凤华,王九林,阎军智,卓马,马建峰申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1