分组哈希协处理器的一种实现方法

文档序号:7974293阅读:147来源:国知局
专利名称:分组哈希协处理器的一种实现方法
技术领域
本实用新型涉及信息安全密码领域,具体的说,涉及到分组和HASH密码运算协处理器的 硬件实现。
背景技术
随着计算机网络的普及,大量的电子数据通过网络传输到世界各地成为可能。但在具有 重大的经济价值或关系国家、军队的命运等重要数据的传输过程中,任何一点泄露和差错都 可能造成不可估量的损失。而密码技术则是信息安全的保障及核心技术。
虽然公钥算法加密可以解决许多私钥算法加密不能解决的问题,可面对越来越庞大的数 据量,从实用角度来讲,私钥密码加密的速度往往比公钥快很多倍,私钥密码算法依然是对 大量数据加密的主流。因此在一个密码系统中,会同时用到分组密码算法和公钥密码算法。 分组算法实现对传输数据本身的加密,而公钥算法实现对分组算法中密钥的加密。
分组密码算法是对称密码算法的一个分支,所谓对称密码是指加解密算法形式对称,并 且加密密钥和解密密钥相同。对称密码的另一个分支是流密码,逐比特加密,解密时,密钥 流需与密文同步。而分组密码是把明文(或密文)按一定比特长度分组进行加密、传输、解 密。很大程度上改善了流密码所需密钥流实时同步的问题。分组密码还可组合成不同的工作 模式(例如ECB、 CBC等)满足密码协议的需求。分组密码的解密过程是加密的逆过程。系统 的安全性在于密钥的保密性。最常用算法是DES (3DES)和AES。
当然,在完整的密码系统中,不光存在数据的加解密问题,还包括数据正确性的验证。 为保证在传输过程中数据不被篡改,数字签名已经成为必不可少。对于很长的消息签名方法 比较复杂,解决这一问题的方法就是利用HASH函数,产生一个固定长度的消息摘要,最后对 这个消息摘要进行签名。
HASH函数满足的三个性质1)压缩性,任意长度的输入都压缩成固定长度的输出;2) 易计算性,给定输入,计算输出是容易的;3)不可逆性,也就是计算上不可逆。最常用算法 是MD系列和SHA系列。

发明内容
本发明所述之分组哈希协处理器是为实现数据加解密运算和签名验证而设计的,它支持 分组密码体制和HASH运算,支持高低速数据接口和流水线结构,可实现单分组、单哈希、 先分组后哈希以及同时分组哈希等功能组合,具有很强的实用性。
实现该功能的硬件部件包括分组运算单元、哈希运算单元.、低速数据接口读写控制单 元、高速数据接口处理单元(由输入FIFOl和输出FIF02组成)、协处理器核心控制单元以及 一个双口 RAM、内部FIF03、命令寄存器、块数寄存器、参数寄存器、分组输入缓冲寄存器 Inda和分组输出缓冲寄存器0utda等。
该协处理器同时支持高速数据接口和低速数据接口,高速数据口支持32位数据输入,低 速数据口支持8、 16、 32位数据输入。
其中双口 RAM、命令寄存器、块数寄存器以及参数寄存器对低速数据口外部处理器和内 部CPU都分别进行统一编址,以便通过地址线控制对其进行访问。
命令、块数以及参数只可由低速数据接口输入,而加解密所需的明文或密文既可由低速 数据口输入,也可由高速数据口输入。
加解密数据遵循从哪来回哪去的原则,即如果明文从低速数据口进,则密文也从低速数 据口出,从高速数据口进,则从高速数据口出。
当加解密数据由低速数据口输入时,外部要先发块数、参数及加解密数据,然后再发命 令;当加解密数据由高速数据接口输入时,低速数据接口依然遵循块数4参数今命令的先后 顺序,但与高速数据口输送加解密数据无先后顺序,两者可独立进行。
该协处理器同时支持分组和哈希的内部填充和外部填充。
块数寄存器所存之块数是由参与加解密的明文或密文的比特数除以32得来的,在单独做 分组,分组哈希同时做以及先分组后哈希的情况下,外部填充时的块数表示分组填充以后的 长度,内部填充时的块数表示分组数据的真实长度;单独做哈希时,外部填充时的块数表示 哈希填充以后的长度,内部填充时的块数表示哈希数据的真实长度。
命令是由内部CPU解析后送给协处理器核心控制单元,来进行相应运算的控制的,这样 可通过修改软件来支持用户自定义命令协议。
当对同一组数据同时进行分组和哈希运算时,为解决分组和哈希运算速度不匹配的问题, 在哈希单元的入口处,引入一个内部FIF03来对数据进行缓存以防止数据丢失。
在进行分组运算时,为提高速度,协处理器核心控制单元引入流水线结构,即发数据"^ 发使能》发下一组数据+检测done今读数据+发使能,利用运算时间准备好下一组待处理数 据。
当数据由低速数据接口输入时,数据由内部CPU从RAM中搬移到协处理器核心控制单 元中,同理运算结果也由内部CPU搬移到RAM中,这样方便支持内部CPU自发进行运算 的情况,只需依次写入块数今参数今命令,再向协处理器核心控制单元发送待处理的数据即 可。
在该协处理器中,由于支持多种不同方式及速度的运算,需要大量握手,引入握手寄存 器,如写入时flag为l,读出时flag为0。外部从低速数据接口写入命令寄存器,flag为l, 内部CPU检测到flag为1,预示外部写入了新的命令,则取出进行解析,同时flag变为0, 外部检测到flag变为0,则表示命令解析已经完成,外部可继续发送下一个新的命令。
该协处理器支持以下各类指令数据入口选择、操作方式选择、算法选择、加解密选择、 加解密模式选择、密钥长度选择以及哈希长度选择。
该协处理器的工作流程,包括以下步骤
(1) 外部发块数、参数、待处理的数据及命令。其中待处理的数据可从低速数据接 口入也可从高速数据接口入,入口选择信息包含在命令中。
(2) 内部CPU解析命令,并把解析结果送入核心控制单元。
(3) 核心控制单元判断数据从低速数据接口进,则转到(4),数据从高速数据接口 进,则转到(16),数据是内部CPU自发发出的,则转到(4)。
(4) 如单做分组,转到(5),单做哈希,转到(7),分组哈希同时做,转到(10), 先分组后哈希,转到(13)。
(5) 接收内部CPU送来的数据到Inda中,向分组单元发送使能信号,转(6)。
(6) 等待分组done信号有效时,输出结果,供内部CPU读取(如数据是由低速数 据接口入的情况,结果还要由内部CPU送往双口 RAM,以供外部读取),同时根据 块数判断数据是否全部处理完,如没有,则转(5),如已处理完则结束。
(7) 接收内部CPU送来的数据,送入哈希入口处的内部FIF03中,并向哈希单元发 送使能信号。转(8)。
(8) 哈希单元收到使能信号,根据块数控制从内部FIF()3中取数进行运算,直到数 据全部处理完,转(9)。
(9) 协处理器等待哈希的done信号有效时,输出结果,供内部CPU读取(如数据 是由低速数据接口入的情况,结果还要由内部CPU送往双口 RAM,以供外部读取)。
(10) 接收内部CPU送来的数据,当FIF03非满时,将数据同时送到Inda和内部 FIF03中,并向分组单元和哈希单元发送使能信号。转(11)。
(11) 检测分组done信号有效时,输出结果,供内部CPU读取(如数据是由低速数 据接口入的情况,结果还要由内部CPU送往双口 RAM,以供外部读取),同时根据 块数判断数据是否全部处理完,如没有,则转(10),如己经处理完,则转(12)。
(12) 检测哈希done信号有效时,输出结果,供内部CPU读取(如数据是由低速数 据接口入的情况,结果还要由内部CPU送往双口 RAM,以供外部读取)。
(13) 接收内部CPU送来的数据到Inda中,向分组单元发送使能信号,同时也向哈 希单元发送使能信号。转(14)。
(14) 等待分组done信号有效时,把分组结果搬移到哈希入口处的内部FIF03中, 以供哈希单元进行处理,同时结果由内部CPU读走(如数据是由低速数据接口入的 情况,结果还要由内部CPU送往双口 RAM,以供外部读取)。根据块数判断数据是 否全部处理完,如是则转(15),否则转(13)。
(15) 等待哈希done信号有效时,输出结果,供内部CPU读取(如数据是由低速数 据接口入的情况,结果还要由内部CPU送往双口RAM,以供外部读取)。
(16) 如单做分组,转到(17),单做哈希,转到(21),分组哈希同时做,转到(24), 先分组后哈希,转到(29)。
(17) 从高速数据接口输入FIFOl中接收数据到Inda中,转(18)。
(18) 向分组单元发送使能信号。转(19)。
(19) 从高速数据接口输入FIFOl中接收下一组数据到Inda中,同时进行分组运算, 实现流水操作,转(20)。
(20) 等待分组done信号有效时,输出结果到输出FIF02中,供高速数据接口外部 读取,同时根据块数判断数据是否全部处理完,如没有,则转(18),如已处理完则 结束。
(21) 从高速数据接口输入FIFOl中接收数据,送入哈希入口处的内部FIF03中, 并向哈希单元发送使能信号。转(22)。
(22) 哈希单元收到使能信号,根据块数控制从内部FIF03中取数进行运算,直到 数据全部处理完,转(23)。
(23) 协处理器等待哈希的done信号有效时,输出结果到输出FIF02中,供高速数 据接口外部读取。
(24) 从高速数据接口输入FIFOl中接收数据,当FIF()3非满时,将数据同时送到 Inda和内部FIF03中,转(25)。
(25) 向分组单元和哈希单元发送使能信号,转(26)。
(26) 从高速数据接口输入FIFOl中接收下一组数据,当FIF03非满时,将数据同 时送到Inda和内部FIF03中,同时进行分组和哈希运算,实现流水操作,转(27)。
(27) 检测分组done信号有效时,输出结果到输出FIF02,供高速数据接口外部读
取,同时根据块数判断数据是否全部处理完,如没有,则转(25),如已经处理完, 则转(28)。
(28) 检测哈希done信号有效时,输出结果到输出FIF02,供高速数据接口外部读 取。
(29) 从高速数据接口输入FIFOl接收数据到Inda中,转(30)。
(30) 向分组单元发送使能信号,同时也向哈希单元发送使能信号。转向(31)。
(31) 从高速数据接口输入FIFOl接收下一组数据到Inda中,同时进行分组运算, 实现流水操作,转向(32)
(32) 等待分组done信号有效时,把分组结果输出到FIF02,以供高速数据接口外 部读取,同时结果也被搬移到哈希入口处的内部FIF03中,以供哈希单元进行处理。 然后根据块数判断数据是否全部处理完,如是则转(33),否则转(30)。
(33) 等待哈希done信号有效时,输出结果到输出FIF02,供高速数据接口外部读取。
由以上描述可知,本发明具有以下优点
(1) 同时支持高速和低速接口,满足用户不同条件下的需要;
(2) 支持多种分组密码算法;
(3) 支持多种哈希算法;
(4) 为加快处理速度,采用流水线结构;
(5) 同时支持分组和哈希的内部填充和外部填充,应用更灵活;
(6) 支持用户通过修改软件来自定义命令协议;
(7) 支持同时进行分组密码算法与哈希运算;
(8) 支持在外部取得加密结果的同时,也获得相应的哈希运算结果。


1 协处理器硬件部件结构示意图
2 数据由高速数据接口输入的处理流程图
3:数据由低速数据接口输入的处理流程图
具体实施例方式
本发明的具体实施基本和本发明说明书中所阐述的结构和原理一致。以下结合附图,具 体说明本发明。
本发明公开了一种分组哈希协处理器的实现方式,其硬件部件包括分组运算单元、哈 希运算单元、低速数据接口读写控制单元、高速数据接口处理单元(由输入FIFOl和输出FIF02组成)、协处理器核心控制单元以及一个双口 RAM、内部FIF03、命令寄存器、块数 寄存器、参数寄存器、分组输入缓冲寄存器Inda和分组输出缓冲寄存器Outda等。
请参阅附图1的实线方框部分,其为本发明利用上述结构实现的硬件部件结构示意图。 根据本示意图,本硬件部件由上述几个部分构成。
其中低速数据接口读写控制单元根据低速数据接口的位宽(8bits、 16bits、 32bits)和 地址来控制数据的读写。
双口 RAM作为低速数据接口与内部cpu处理器进行数据传输的缓存单元,与命令寄存器、 块数寄存器、参数寄存器一起分别对低速数据接口外部处理器和内部cpu处理器进行统一编 址,以便于内外对其访问。
输入FIF01与输出FIF02组成高速数据接口,作为高速数据接口传输数据的缓存单元, Inda与0utda作为协处理器核心控制单元与分组运算单元进行数据传输的缓存单元,内部 FIF03作为协处理器核心控制单元与哈希运算单元进行数据传输的缓存单元。
协处理器核心控制单元是整个协处理器的中枢,他负责控制完成各类运算,如单分组、 单哈希、先分组后哈希、分组哈希同时做等。
下面配合附图,进一步阐述本发明的具体实施方式

本协处理器对外分低速数据接口和高速数据接口,同时支持内部cpu自发运算的情况, 由于数据由低速数据接口入时,均经内部cpu做中转进入核心处理单元,所以内部cpu自发 运算的情况包含在数据由低速数据接口入的情况当中,所以,在此我们重点介绍数据由高速数据接口入和低速数据接口入两种情况。 (一)对于数据由高速数据接口入的情况,参见附图2,包括以下步骤-
(1) 由低速数据接口依次发块数、参数及命令,同时待处理的数据由高速FIFO 口 进入。
(2) 内部CPU解析命令,并把解析结果送入核心控制单元。
(3) 核心控制单元判断如单做分组,转到(4),单做哈希,转到(8),分组哈希同 时做,转到(11),先分组后哈希,转到(16)。
(4) 从高速数据接口输入FIFOl中接收数据到Inda中。
(5) 向分组单元发送使能信号。
(6) 从高速数据接口输入FIFOl中接收下一组数据到Inda中,同时进行分组运算, 实现流水操作。
(7) 等待分组done信号有效时,输出结果到输出FIF()2中,供高速数据接口外部 读取,同时根据块数判断数据是否全部处理完,如没有,则转(5),如己处理完,则结束。
(8) 从高速数据接口输入FIFOl中接收数据,送入哈希入口处的内部FIF03中,并
向哈希单元发送使能信号。
(9) 哈希单元收到使能信号,根据块数控制从内部FIF03中取数进行运算,直到数 据全部处理完。
(10) 协处理器等待哈希的done信号有效时,输出结果到输出FIF02中,供高速数 据接口外部读取。
(11) 从高速数据接口输入FIFOl中接收数据,当FIF()3非满时,将数据同时送到 Inda禾卩内部FIF03中。
(12) 向分组单元和哈希单元发送使能信号。
(13) 从高速数据接口输入FIFOl中接收下一组数据,当FIF03非满时,将数据同 时送到Inda和内部FIF03中,同时进行分组和哈希运算,实现流水操作。
(14) 检测分组done信号有效时,输出结果到输出FIF02,供高速数据接口外部读 取,同时根据块数判断数据是否全部处理完,如没有,则转(12),如已经处理完, 则转(15)。
(15) 检测哈希done信号有效时,输出结果到输出FIF02,供高速数据接口外部读 取。
(16) 从高速数据接口输入FIFOl接收数据到Inda中。
(17) 向分组单元发送使能信号,同时也向哈希单元发送使能信号。
(18) 从高速数据接口输入FIFOl接收下一组数据到Inda中,同时进行分组运算, 实现流水操作。
(19) 等待分组done信号有效时,把分组结果输出到FIF02,以供高速数据接口外 部读取,同时结果也被搬移到哈希入口处的内部FIF03中,以供哈希单元进行处理。 然后根据块数判断数据是否全部处理完,如是则转(20),否则转(17)。
(20) 等待哈希done信号有效时,输出结果到输出FIF02,供高速数据接口外部读 取。
(二)对于数据由低速数据接口入的情况,参见附图3,包括以下步骤
(1) 外部由低速数据接口发完块数、参数、待处理的数据后,再发命令。
(2) 内部CPU解析命令,并把解析结果送入核心控制单元。
(3) 核心控制单元判断如单做分组,转到(4),单做哈希,转到(6),分组哈希同
时做,转到(9),先分组后哈希,转到(12)。
(4) 接收内部CPU送来的数据到Inda中,向分组单元发送使能信号。
(5) 等待分组done信号有效时,输出结果,由内部CPU送往双口 RAM,以供外 部读取,同时根据块数判断数据是否全部处理完,如没有,则转(4),如已处理完, 则结束。
(6) 接收内部CPU送来的数据,送入哈希入口处的内部FIF03中,并向哈希单元发 送使能信号。
(7) 哈希单元收到使能信号,根据块数控制从内部FIF03中取数进行运算,直到数 据全部处理完。
(8) 协处理器等待哈希的done信号有效时,输出结果,由内部CPU送往双口 RAM, 以供外部读取。
(9) 接收内部CPU送来的数据,当FIF03非满时,将数据同时送到Inda和内部FIF03
中,并向分组单元和哈希单元发送使能信号。。
(10) 检测分组done信号有效时,输出结果,由内部CPU送往双口 RAM,以供外 部读取,同时根据块数判断数据是否全部处理完,如没有,则转(9),如已经处理完, 则转(11)。
(11) 检测哈希done信号有效时,输出结果,由内部CPU送往双口 RAM,以供外
部读取。
(12) 接收内部CPU送来的数据到Inda中,向分组单元发送使能信号,同时也向哈 希单元发送使能信号。
(13) 等待分组done信号有效时,把分组结果搬移到哈希入口处的内部FIF03中, 以供哈希单元进行处理,同时结果由内部CPU送往双口RAM,以供外部读取。根据 块数判断数据是否全部处理完,如是则转(14),否则转(12)。
(14) 等待哈希done信号有效时,输出结果,由内部CPU送往双口 RAM,以供外部 读取。
权利要求
1、一种为实现数据加解密运算和签名验证而设计的分组哈希协处理器,其特征在于硬件部件包括分组运算单元、哈希运算单元、低速数据接口读写控制单元、高速数据接口处理单元(由输入FIF01和输出FIF02组成)、协处理器核心控制单元以及一个双口RAM、内部FIF03、命令寄存器、块数寄存器、参数寄存器、分组输入缓冲寄存器Inda和分组输出缓冲寄存器Outda等。
2、 如权利要求1所述其特征在于同时支持高速数据接口和低速数据接口,高速接口支 持32位数据输入,低速接口支持8、 16、 32位数据输入。其中命令、块数以及参数只可由低 速数据口输入,而加解密所需的明文或密文既可由低速数据口输入,也可由高速数据口输入。 当加解密数据由低速数据口输入时,外部要先发块数、参数及加解密数据,然后再发命令; 当加解密数据由高速数据口输入时,低速数据口依然遵循块数→参数→命令的先后顺序,但 与高速数据口输送加解密数据无先后顺序,两者可独立进行。加解密数据遵循从哪来回哪去 的原则,即如果明文从低速数据口进,则密文也从低速数据口出,从高速数据口进,则从高 速数据口出。
3、 该协处理器同时支持分组和哈希的内部填充和外部填充。
4、 命令是由内部CPU解析后送给协处理器核心控制单元,来进行相应运算的控制的, 这样可通过修改软件来支持用户自定义命令协议。
5、 当对同一组数据同时进行分组和哈希运算时,为解决分组和哈希运算速度不匹配的问 题,在哈希单元的入口处,引入一个内部FIF03来对数据进行缓存以防止数据丢失。
6、 在进行分组运算时,为提高速度,协处理器核心控制单元引入流水线结构,即发数据 今发使能+发下一组数据^检测done+读数据^发使能,利用运算时间准备好下一组待处理 数据。
7、 当数据由低速数据口输入时,数据由内部CPU从RAM中搬移到协处理器核心控制单 元中,同理运算结果也由内部CPU搬移到RAM中,这样方便支持内部CPU自发进行运算 的情况,只需依次写入块数^参数^命令,再向办处理器核心控制单元发送待处理的数据即 可。
8、 在该协处理器中,由于支持多种不同方式及速度的运算,需要大量握手,引入握手寄 存器,如写入时flag为l,读出时flag为0。外部从低速接口写入命令寄存器,flag为l,内 部CPU检测到flag为1,预示外部写入了新的命令,则取出进行解析,同时flag变为0,外 部检测到flag变为0,则表示命令解析已经完成,外部可继续发送下一个新的命令。
9、 该协处理器支持以下各类指令数据入口选择、操作方式选择、算法选择、加解密选 择、加解密模式选择、密钥长度选择和哈希长度选择。
全文摘要
本发明提供了分组哈希协处理器的一种实现方法,它属于信息安全密码领域,可实现数据加解密运算及参与签名验证,用该方法实现的分组哈希协处理器支持分组密码体制和HASH运算,支持高低速数据接口和流水线结构,可实现单分组、单哈希、先分组后哈希以及同时分组哈希等功能,具有很强的实用性。实现该功能的硬件部件包括分组运算单元、哈希运算单元、低速数据接口读写控制单元、高速数据接口处理单元(由输入FIFO1和输出FIFO2组成)、协处理器核心控制单元以及一个双口RAM、内部FIFO3、命令寄存器、块数寄存器、参数寄存器、分组输入缓冲寄存器Inda和分组输出缓冲寄存器Outda等。
文档编号H04L9/32GK101202628SQ200610164970
公开日2008年6月18日 申请日期2006年12月11日 优先权日2006年12月11日
发明者余秋芳, 关红波, 勇 田, 胡晓波, 陈学振, 陈立志 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1