一种兼容三种sha标准的装置及其实现方法

文档序号:6605135阅读:236来源:国知局
专利名称:一种兼容三种sha标准的装置及其实现方法
技术领域
本发明涉及基于FPGA (Field-Programmable Gate Array)的 SHA 系列算法 (SHA-1、SHA-256及SHA-512)的综合设计领域,尤其涉及一种兼容三种SHA标准的装置及 其实现方法。
背景技术
SHA-I算法是目前流行的哈希散列加密算法,也是可信计算规范中规定使用的加 密算法。但是在近年,SHA-I算法的缺陷已经被曝露出来,而具有更高安全性的SHA-256及 SHA-512算法正是替代SHA-I的最佳方案。为了在下一代可信计算规范发布之时,可信计算 模块(Trusted Platform Module, TPM)能提供兼容上一代规范的服务,一种实用的SHA算 法综合实现方案显得尤为必要。现有技术中还没有针对三种SHA标准同时实现的设计方案。若TPM芯片不能向上 兼容SHA-1,向下兼容SHA-256或SHA-512,那么不仅会增加更换设备的资金花费,同时在更 换设备的时间内,还会因为TPM芯片不能提供安全服务而造成安全隐患。

发明内容
本发明的目的之一在于克服上述的缺点和不足,提供一种兼容三种SHA标准的装 置。本发明具有普遍适用性、兼容性好、功耗低,以及占用额外的资源少等优点,特别适合为 可信计算中可信计算模块(TPM)芯片提供SHA加密服务。本发明的目的之二在于提供一种兼容三种SHA标准的实现方法。本发明的目的之一是通过下述技术方案实现的一种兼容三种SHA标准的装置, 包括依次相连的数据填充模块、Wt生成模块和哈希运算模块,其中所述数据填充模块,用于接收明文数据,并生成填充数据,将明文数据与填充数据 输出至Wt生成模块;所述Wt生成模块,用于接收数据填充模块输出的数据,在SHA-I模式中通过异或 运算连接各操作数,在SHA-256及SHA-512模式中通过算术加操作对各操作数进行连接,生 成新的Wt算子并输入到哈希运算模块;所述哈希运算模块,用于接收Wt生成模块的Wt算子,进行散列运算,生成160位、 256位或者512位的数据摘要。为更好的实现本发明,所述数据填充模块主要包括寄存器、减法器和多路开关;所述Wt生成模块主要包括寄存器、移位寄存器组、左循环移位逻辑、多路开关、加 法器和异或运算器。所述哈希运算模块主要包括寄存器和逻辑运算模块所述哈希运算模块中的逻辑运算模块主要包括左循环移位逻辑、算术左移逻辑、 多路开关、加法器和异或运算器;所述哈希运算模块中的寄存器为8个64位寄存器,在不同模式,寄存器的初始值不同。优选的,所述Wt生成模块中的寄存器、移位寄存器组分为上下两行,每行的数据 深度是16,具体为上面一行包括依次相连的一个32位位宽深度为2的移位寄存器、一个32位位宽 深度为5的移位寄存器、一个32位位宽深度为8的移位寄存器和一个32位位宽寄存器;下面一行包括依次相连的一个32位位宽深度为2的移位寄存器、一个32位位宽 寄存器、一个32位位宽深度为4的移位寄存器、一个32位位宽寄存器、一个32位位宽深度 为6的移位寄存器,一个32位位宽寄存器,一个32位位宽寄存器;所述哈希运算模块中的寄存器为8个64位寄存器,所述每个64位寄存器都被定 义为低32位及高32位。本发明的目的之二是通过下述技术方案实现的一种兼容三种SHA标准的装置的 实现方法,包括以下步骤(I)数据填充模块接收明文数据,并生成填充数据,将明文数据与填充数据输出至 Wt生成模块;(II)Wt生成模块接收数据填充模块输出的数据,在SHA-I模式中通过异或运算连 接各操作数,在SHA-256及SHA-512模式中通过算术加操作对各操作数进行连接,生成新的 Wt算子并输入到哈希运算模块;(III)哈希运算模块接收Wt生成模块的Wt算子,进行散列运算,在SHA-I模式下 生成160位的数据摘要,在SHA-256模式下生成256位的数据摘要,或者在SHA-512模式下 生成512位的数据摘要。为更好的实现本发明目的,SHA-I模式具体包括以下步骤Si、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;S2、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位 到低位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中, 进入S4 ;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、2、8、15个寄存器上的数 据会被输出做异或操作;异或操作得出的数在左循环移位一位后,作为新的Wt算子,进入 步骤S5 ;S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、哈希运算模块由下至上,设这八个寄存器所存储的数据从第一个寄存器到第 八个寄存器依次分别是A值、B值、C值、D值、B值、C值、D值、E值,哈希运算模块接收Wt生 成模块输出的Wt算子,并判断当前散列运算正在进行的轮数,若在0到19轮散列运算中, 则进入步骤S7 ;若在20到39轮或60到79轮的散列运算中,则进入步骤S8 ;若在40到59 的散列轮运算中,则进入步骤S9 ;S7、在0到19轮散列运算中,哈希运算模块使用第五、六、七个寄存器的值,及步骤S5中Wt生成模块输出的Wt算子,求出用于更新第一个寄存器所需要的T值,进入步骤 SlO ;步骤S8、在20到39轮或60到79轮的散列运算中,哈希运算模块使用第五、六、七 个寄存器的值,或第二、三、四个寄存器的值,及步骤S5中Wt生成模块输出的Wt算子求出 用于更新第1寄存器所需要的T值,进入步骤SlO ;步骤S9、在40到59轮的散列轮运算中,哈希运算模块使用第二、三、四个寄存器的 值,及步骤S5中Wt生成模块输出的Wt算子,求出用于更新第一个寄存器所需要的T值,进 入步骤SlO ;S10、哈希运算模块中,第四个及第七个寄存器中的D值一致,用第七个寄存器中 的D值更新第八寄存器中的E值,第三寄存器及第六寄存器中的C值更新第四及第七寄存 器中的D值,第二寄存器及第五寄存器中的B值更新第三及第六寄存器中的C值,第一个寄 存器中的A更新第二及第五寄存器中的B值,用求得的T值更新第一个寄存器中存储的A 值,进入Sll ;S11、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4 ;若 是,则哈希运算模块选择第一、第二、第三、第四及第八个寄存器的值作为输出,进入步骤 S12 ;S12、数据填充模块的寄存器的值减一,进入步骤S13 ;S13、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出至Wt 生成模块,进入步骤S14;S14、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。SHA-256模式具体包括以下步骤Si、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;S2、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位 到低位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中, 进入S4 ;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出并用于生成新的Wt算子,进入步骤S5 ;S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、哈希运算模块接收Wt生成模块输出的Wt算子,设哈希运算模块由下至上这八 个寄存器所存储的数据从第一个寄存器到第八个寄存器依次分别是A值、B值、C值、D值、 E值、F值、G值、H值;使用这八个寄存器所存储的数据计算用于更新哈希运算模块中寄存 器所需要的Tl值与T2值
S7、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个 寄存器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中 的F值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器 中的C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值, 第一个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存 器中的A值,进入S8 ;S8、哈希运算模块判断是否已经完成64轮散列计算,若不是,则返回步骤S4;若 是,则哈希运算模块选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为 输出,进入步骤S9 ;S9、数据填充模块的寄存器的值减一,进入步骤SlO ;S10、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt 生成模块,进入步骤Sll ;S11、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。优选的,SHA-I模式及SHA-256模式中所述填充数据的生成方法,包括以下步骤S4. 1、判断明文数据长度M值能否被512整除,若可以,则进入步骤S4. 2 ;若不能, 则进入步骤S4. 3 ;S4.2、数据填充模块为明文填充1位‘1,,447位‘0,以及M值;S4. 3、数据填充模块为余下的一组不足512位的数据块填充1位‘1’以及若干位 ‘0’,使其成为512位的数据块;并且再填充一个512位的数据块,其组成为448位的‘0’以
及M值。SHA-512模式具体包括以下步骤Si、用128位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足128 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储,进入步骤S2 ;S2、待加密的明文以1024位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取上下两行的寄存器组用于生成Wt算子;1024位的明文从高位 到低位被分为16组,每组64位数据,高32位的数据存储于上面一行的寄存器组中,低32 位的数据存储于下面一行的寄存器组中,按顺序从数据填充模块输入到Wt生成模块的寄 存器组中,进入S4;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出用于生成新的Wt算子,进入步骤S5 ;S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、设哈希运算模块由下至上这八个寄存器所存储的数据从第一个寄存器到第八 个寄存器依次分别是A值、B值、C值、D值、E值、F值、G值、H值;哈希运算模块接收Wt生 成模块输出的Wt算子,并计算用于更新哈希运算模块中寄存器所需要的Tl值与T2值;
S7、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个 寄存器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中 的F值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器 中的C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值, 第一个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存 器中的A值,进入S8 ;S8、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4 ;若 是,则选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为输出,进入步 骤S9 ;S9、数据填充模块的寄存器的值减一,进入步骤SlO ;S10、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt 生成模块,进入步骤Sll ;S11、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。优选的,所述SHA-512的步骤SlO中填充数据的生成方法,具体包括以下步骤S4. 1、判断明文数据长度M值能否被1024整除,若可以,则进入步骤S4. 2 ;若不 能,则进入步骤S4.3 ;S4.2、数据填充模块为明文填充1位‘1,,895位‘0,以及M值;S4. 3、数据填充模块为余下的一组不足1024位的数据块填充1位‘1’以及若干位 ‘0,,使其成为1024位的数据块;并且再填充一个1024位的数据块,其组成为896位的‘0, 以及M值。本发明实现兼容三种SHA标准的装置及其实现方法,必须解决的问题以及解决思 路如下1、问题SHA-1和SHA-256的数据宽度是32位,SHA-512的数据宽度是64位。解 决方案Wt生成模块的移位寄存器组分两行,每行32位位宽实现。在SHA-1,SHA-256模式 下,下面一行的寄存器组用于数据的存储与处理,上面一行的寄存器组不工作。在SHA-512 模式下,两行寄存器组同时工作,为SHA-512模式提供64位宽度的数据存储及数据处理。在 哈希运算模块涉及的第一到第八个寄存器,其数据宽度都是64位,在SHA-1、SHA-256模式 下,只用低 32 位存储 A、B、C、D、E (SHA-1 模式)及 A、B、C、D、E、F、G, H(SHA-256 模式)的 值,高32位不参与数据存储。在SHA-512模式下,每个寄存器的全部64位都参与数据的存 储。这样设计的好处是1、提供了数据宽度的兼容。2、在SHA-l、SHA-256模式下,不需要的 寄存器不参与数据存储,可以减低设计功耗。2、问题SHA-1模式中,参与生成新的Wt算子所使用的旧Wt算子选取与SHA-256、 SHA-512不同。在SHA-I模式的Wt生成模块中,是第0、2、8、13个寄存器中的数据用于新Wt 算子的生成。在SHA-256及SHA-512模式的Wt生成模块中,是第0、1、9、14个寄存器中的 数据用于新Wt算子的生成。解决方案在FPGA中,使用同样数量的资源实现一个移位寄存 器组能提供的数据容量是实现一个寄存器的容量的16倍(移位寄存器组16位,单个寄存器1位),但是其缺点就是,不在移位寄存器组的输入、输出端的数据,不能被采样用于数据 处理。这样就不能满足Wt模块需要在队列之中抽取数据用于新Wt生成的需要。所以本设 计采用了移位寄存器组与单个寄存器组合实现的方法,平衡了资源消耗及功能实现要求。 下面一行寄存器组在第13、8、1的位置使用寄存器对数据进行存储,其目的是满足SHA-I模 式在第2、8、13的位置对数据进行采样的需要。而对于SHA-256模式,第1、9、14位置的数 据依然能够被采样。这样就满足了 SHA-1、SHA-256模式对旧Wt数据采样的需求。而对于 SHA-512模式,上下两行的Wt寄存器组在第0、1、9、14位置的数据能被采用。综上所述,移 位寄存组与寄存器组合实现的方案解决了这一个问题。3、问题SHA_1、SHA-256和SHA-512模式中的Ch运算逻辑、Maj运算逻辑设计的 资源重用。在SHA-I与SHA-256、SHA-512中,都涉及Ch函数及Maj函数的逻辑操作,但是 它们的输入值却不一样=SHA-I中;B、C、D的值始终作为这两个函数的输入。而在SHA-256、 SHA-512中,对于Ch函数,输入是E、F、G ;Maj函数输入的是A、B、C。一般的解决思路是在 设计中加入多路开关,根据不同的模式选择不同的输入。但是多路开关本身也对资源进行 消耗。根据前期的测试,目前解决的方案有1)分别为SHA-1、SHA-256、SHA-512独立实现 Ch与Maj函数;2)使用多路开关,对Maj函数及Ch函数的逻辑单元进行复用。由于多路开 关的增加,两个方案的资源消耗是一样的,即过往的解决思路都不能很好地实现资源复用 的目的。解决方案第二、第三个寄存器的B值、C值,连接到Maj函数的输入,第一个寄存器 的A值和第四个寄存器的D值增加一个2选1的多路开关,在SHA-I模式下,D值作为Maj 函数的输入,SHA-256及SHA-512模式下,A值作为Maj函数的输入。第四、第五、第六个寄 存器的E值、F值、G值连接到Ch函数的输入。在SHA-I模式下,第二、第三、第四个寄存器 的值分别与第五,第六,第七个寄存器的值一致。在第0-19轮,会使用Ch函数的计算值更 新T,在第40-59轮会使用Maj函数的计算值更新T。而在SHA-256及SHA-512模式,每个周 期,Maj与Ch都参与更新Tl及T2。这样设计的优势在于SHA-1模式充分利用了 SHA-256 及SHA-512模式增加的第五、第六、第七个寄存器进行冗余计算,再根据轮数取合适的结果 对数据进行更新,不需要增加过多的额外资源,就可以完成Ch和Maj函数的逻辑复用。本发明相对于现有技术具有如下的优点及效果第一、兼容性好在可预见的将来,存在缺陷的SHA-I算法将会被可靠性更高的加 密算法取代。而作为可信计算的基础——可信平台模块(TPM)中的SHA算法服务的前后兼 容性问题是一个还未引起重视的问题。而本发明提供了一种额外开销小,但是能同时实现 三种SHA算法的系统,以有利于可信计算规范的发展。第二、通过资源复用,额外的逻辑单元使用较少本发明利用SHA算法之间的算法 相似性,首次解决了 SHA系列算法之间的数据宽度不相同、数据处理方式不一致等的冲突 问题,并在哈希运算核心中使用了冗余计算的方法减少逻辑资源的消耗。此发明为其余的 安全芯片提供了灵活的多安全服务实现方案。第三、兼顾了效率及功耗本发明功耗低,占用额外的资源较少,可以为计算机系 统提供廉价的具兼容性的SHA服务。同时也可以避免因为规范升级造成的芯片更新换代的 额外开销。经验证,在Xilinx Virtex5系列芯片上运行,发明可达到90Mhz的速度,占用的 逻辑单元为1151Slice。第四、普遍适用本发明可以应用到个人电脑的可信计算芯片,或者是作为嵌入式系统的安全协处理器的SHA算法模块的实现,又或者是在现场可编程门阵列(FPGA)的片上 系统(SOC)中作为可选的安全服务知识产权软核,为系统提供更高的安全保障。


图1是本实施例兼容三种SHA标准的装置的结构方框图;图2是本实施例中数据填充模块的结构方框图;图3是本实施例中哈希运算模块的结构方框图;图4是本实施例中Wt生成模块与哈希运算模块的内部逻辑结构示意图;图5是本实施例兼容三种SHA标准装置的工作流程图;图6是本实施例在SHA-I模式下工作的流程图;图7是本实施例在SHA-256模式下工作的流程图;图8是本实施例在SHA-512模式下工作的流程图。
具体实施例方式下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不 限于此。实施例如图1所示,一种兼容三种SHA标准的装置,主要包括依次相连的数据填充模块、 Wt生成模块和哈希运算模块。所述数据填充模块,用于接收明文数据,并生成填充数据,将明文数据写填充数据 输出至Wt生成模块;所述Wt生成模块,用于接收数据填充模块输出的数据,在SHA-I模式中通过异或 运算连接各操作数,在SHA-256及SHA-512模式中通过算术加操作对各操作数进行连接,生 成新的Wt算子并输入到哈希运算模块;所述哈希运算模块,用于接收Wt生成模块的Wt算子,进行散列运算,生成160位、 256位或者512位的数据摘要。如图2所示,所述数据填充模块主要包括寄存器、减法器和多路开关;所述Wt生成模块主要包括寄存器、移位寄存器组、左循环移位逻辑、多路开关、加 法器和异或运算器;如图3所示,所述哈希运算模块主要包括寄存器和逻辑运算模块;所述哈希运算模块中的逻辑运算模块主要包括左循环移位逻辑、算术左移逻辑、 多路开关、加法器和异或运算器;所述哈希运算模块中的寄存器为8个64位寄存器,在不同SHA标准模式下,寄存 器的初始值不同。其中所述Wt生成模块的结构见图4中的虚线框I,寄存器类型分为两类,标注为 ①的是移位寄存器组,标注为②的是独立的32位寄存器。同时寄存器分为上下两行,每一 行的数据宽度都是32位,数据深度都是16位。“①”为移位寄存器组,移位寄存器组两端 的数字表示输入端或输出端的数据在本16数据深度寄存器组中的位置。Wt生成模块中从 输出端到输入端的方向,寄存器从0到15依次标号,如8表示第8个寄存器,9表示第9个寄存器内。在三种SHA模式中,数据都会首先从15处输入,并且每一个时钟周期数据都会 向左移动一个寄存器位。上面一行寄存器从左到右分别是32位位宽深度为2的移位寄存 器,32位位宽深度为5的移位寄存器,32位位宽深度为8的移位寄存器,1个32位位宽寄 存器。下面一行寄存器从左到右分别是32位位宽深度为2的移位寄存器,一个32位位宽 寄存器,一个32位位宽深度为4的移位寄存器,一个32位位宽寄存器,一个32位位宽深度 为6的移位寄存器,一个32位位宽寄存器,一个32位位宽寄存器。寄存器组分两行,每行 的数据深度是16。其中所述哈希运算模块中逻辑运算模块的结构见图4中的虚线框III ;所述哈希 运算模块中寄存器的结构见图4中的虚线框II。所述哈希运算模块中的寄存器为8个64 位寄存器,图中的8个64位寄存器都被定义为低32位(11、21、31、41、51、61、71、81)及高 32位(让、211、311、411、511、611、711、811),所示的两列寄存器组表示的是同一列寄存器,这样构 图的目的是为了更清晰说明在哈希计算过程中,寄存器的值传递更新的特性。此构图方式 已被众多教科书及论文采用。上述兼容三种SHA标准的装置的实现方法,如图5所示,包括以下步骤(I)数据填充模块接收明文数据,并生成填充数据,将明文数据与填充数据输出至 Wt生成模块;(II)Wt生成模块接收数据填充模块输出的数据,在SHA-I模式中通过异或运算连 接各操作数,在SHA-256及SHA-512模式中通过算术加操作对各操作数进行连接,生成新的 Wt算子并输入到哈希运算模块;(III)哈希运算模块接收Wt生成模块的Wt算子,进行散列运算,在SHA-I模式下 生成160位的数据摘要,在SHA-256模式下生成256位的数据摘要,或者在SHA-512模式下 生成512位的数据摘要。上述步骤,具体可以分解为Si、系统确认进行散列计算模块,若是进行SHA-I模式或SHA-256模式,则进入步 骤S2 ;若是进行SHA-512模式,则进入步骤S6 ;S2、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储,进入步骤S3 ;S3、待加密的明文以512位为一组,输入数据填充模块,Wt生成模块选取下面一行 的寄存器组用于生成Wt算子;512位的明文从高位到低位被分成16组,每组32位,按顺序 输入到Wt生成模块的寄存器组中;若是进行SHA-I模式,则进入S4 ;若是进行SHA-256模 式,则进入S5 ;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、2、8、15个寄存器上的数 据会被输出做异或操作;异或操作得出的数在左循环移位一位后,生成新的Wt算子,进入 步骤S9 ;S5、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出,生成新的Wt算子,进入步骤S9 ;S6、用128位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足128 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储,进入步骤S7 ;S7、待加密的明文以1024位为一组,输入数据填充模块;Wt生成模块选取上下两行的寄存器组用于生成Wt算子;1024位的明文从高位到低位被分为16组,每组64位数据, 高32位的数据存储于上面一行的寄存器组中,低32位的数据存储于下面一行的寄存器组 中,按顺序从数据填充模块输入到Wt生成模块的寄存器组中,进入S8 ;S8、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出,生成新的Wt算子,进入步骤S9 ;S9、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时新的Wt算子被输入到15寄存器的位置;若 是进行SHA-I模式,进入SlO ;若是进行SHA-256模式或SHA-512模式,进入S12 ;S10、设哈希运算模块由下至上这八个寄存器所存储的数据从第一个寄存器到第 八个寄存器依次分别是A值、B值、C值、D值、B值、C值、D值、E值;哈希运算模块接收Wt生成模块输出的Wt算子,在0到19轮散列运算中,哈希运 算模块使用第五、六、七个寄存器计算更新值τ ;在20到39轮和60到79轮的散列运算中, 哈希运算模块使用第五、六、七个寄存器的值或第二、三、四个寄存器的值计算更新值T ;在 40到59的散列轮运算中,哈希运算模块使用第二、三、四个寄存器的值计算更新值T,进入 Sll ;Sl 1、哈希运算模块中,用第七个寄存器中的D值更新第八个寄存器中的E值,第三 个寄存器及第六个寄存器中的C值更新第四个及第七个寄存器中的D值,第二个寄存器及 第五寄存器中的B值更新第三个及第六个寄存器中的C值,第一个寄存器中的A更新第二 及第五个寄存器的B值,用求得的T值更新第一个寄存器中存储的A值,进入S14 ;S12、设哈希运算模块由下至上这八个寄存器所存储的数据从第一个寄存器到第 八个寄存器依次分别是A值、B值、C值、D值、E值、F值、G值、H值;哈希运算模块使用第一 个寄存器到第八个寄存器的值通过散列运算计算更新值T,进入S13 ;S13、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个 寄存器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中 的F值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器 中的C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值, 第一个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存 器中的A值,进入S14;S14、哈希运算模块判断是否已经完成散列计算,若不是,在SHA-I模式下返回步 骤S4 ;在SHA-256模式下返回步骤S5 ;在SHA-512模式下返回步骤S8 ;若是,在SHA-I模式下,选择第一、第二、第三、第四及第八个寄存器的值作为输 出,进入S15 ;在SHA-256模式和SHA-512模式下选择第一、第二、第三、第四、第五、第六、第 七及第八个寄存器的值作为输出,进入步骤S15 ;S15、数据填充模块的寄存器的值减一,进入步骤S16 ;S16、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,在SHA-I 模式下,返回步骤S3 ;在SHA-256模式下,返回步骤S3 ;在SHA-512模式下,返回步骤S7 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出至Wt 生成模块,进入步骤S17;
S17、数据填充模块结束本次运算操作,等待下一次运算操作并返回到步骤Si。以下分别为SHA-1、SHA_256及SHA-512三种运行模式对本装置的运行过程进行说 明SHA-I 模式哈希运算模块的寄存器从下往上分别是第一到第八个寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文从数据填充模块输出后,进入Wt生成模块,Wt生成模块在SHA-I模式中通过 异或运算对各操作数进行连接,生成新的80个Wt算子输入到哈希运算模块,同时经过80 轮的散列运算后,生成160位的数据摘要。在SHA-I中模式中,哈希运算模块的寄存器中只有低32位被选中进行数据存储, 高32位不参与任何运算。哈希运算模块由下至上,设这八个寄存器所存储的数据从第一个 寄存器到第八个寄存器依次分别是A值、B值、C值、D值、B值、C值、D值、E值。设置寄存 器的初始值A值的初始值是十六进制数67452301,B值的初始值是十六进制数efcdab89, C值的初始值是十六进制数98badCfe,D值的初始值是十六进制数10325476,E值的初始值 是十六进制数c3d2elf0 ;在进行散列运算的过程中及初始值,哈希运算模块中第二、三、四 个寄存器的内容与第五、六、七个寄存器的内容依次一样;在SHA-I模式下,本装置的工作流程如图6所示,包括Si、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;S2、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位 到低位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中, 进入S4 ;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、2、8、15个寄存器上的数 据会被输出做异或操作;异或操作得出的数在左循环移位一位后,作为新的Wt算子,进入 步骤S5 ;S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、哈希运算模块接收Wt生成模块输出的Wt算子,并判断当前散列运算正在进行 的轮数,若在0到19轮散列运算中,则进入步骤S7 ;若在20到39轮或60到79轮的散列 运算中,则进入步骤S8 ;若在40到59轮的散列运算中,则进入步骤S9 ;S7、在0到19轮散列运算中,求出用于更新第一个寄存器所需要的T值,具体为T= (A << 5)+Ch (x, y, ζ) +E+Kt+fftCh (x, y, ζ) =(xAy)十(,χΛζ)变量x、y、ζ分别对应第五、六、七个寄存器的值,代表异或运算,“十”代表算 术加运算;“<<”表示为循环左移操作,运算符右边的数字代表需要移位的位数;Wt表示 步骤S5中Wt生成模块输出的Wt算子,E表示第八个寄存器中存储的E值;Kt表示32位常 量,具体为5a827999 ;进入步骤SlO ;
步骤S8、在20到39轮和60到79轮的散列运算中,求出用于更新第一个寄存器所 需要的T值,具体为T= (A << 5)+P (x, y, ζ) +E+Kt+fftP(x,y,z)= χ 十 y 十 ζ其中变量x、y、z分别对应第五、六、七个寄存器的值,或变量x,y,z分别对应第二、 三、四个寄存器的值,“十”代表算术加运算(在这些轮数的运算中,第二、三、四个寄存器或 者第五、六、七个寄存器的值都可以分别代入,两种选择的运算结果无差异);“<<”为循 环左移操作,运算符右边的数字代表需要移位的位数;Wt表示步骤S5中Wt生成模块输出 的Wt算子,E表示第八个寄存器中存储的E值;在20到39轮中Kt表示为6ed9ebal,在60 到79轮中Kt表示为ca62cld6 ;进入步骤SlO ;步骤S9、在40到59轮的散列轮运算中,求出用于更新第一个寄存器所需要的T 值,具体为T= (A < < 5) +Fun (x, y, ζ) +E+Kt+fftMaj (x, y, ζ) = (xAy) Θ (χΛζ)十(yAz)其中变量χ,y,Z分别对应第二、三、四个寄存器的值,代表异或运算,“十”代 表算术加运算;“<<”为循环左移操作,运算符右边的数字代表需要移位的位数;Wt表示 步骤S5中Wt生成模块输出的Wt算子,E表示第八个寄存器中存储的E值;在40到59轮 中Kt表示为8f Ibbcdc ;进入步骤SlO ;S10、哈希运算模块中,第四个及第七个寄存器中的D值一致,用第七个寄存器中 的D值更新第八寄存器中的E值,第三寄存器及第六寄存器中的C值更新第四及第七个寄 存器中的D值,第二寄存器及第五个寄存器中的B值更新第三及第六个寄存器中的C值,第 一个寄存器中的A更新第二及第五个寄存器的B值,用求得的T值更新第一个寄存器中存 储的A值,(每一轮计算中,第二个寄存器与第五个寄存器的值一致,第三个寄存器与第六 个寄存器的值一致,第四个寄存器与第七个寄存器的值一致),进入Sll ;S11、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4 ;若 是,则由于第二个寄存器与第五个寄存器的值一致,第三个寄存器与第六个寄存器的值一 致,第四个寄存器与第七个寄存器的值一致,所以选择第一、第二、第三、第四及第八个寄存 器的值作为输出,进入步骤S12 ;S12、数据填充模块的寄存器的值减一,进入步骤S13 ;S13、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出至Wt 生成模块,进入步骤S14;S14、数据填充模块结束本次运算操作,等待下一次运算操作并返回到步骤Si。在SHA-I模式中的步骤S13,所述填充数据的生成方法,包括以下步骤S4. 1、判断明文数据长度(M值)能否被512整除,若可以,则进入步骤S4. 2 ;若不 能,则进入步骤S4.3 ;S4. 2、数据填充模块为明文填充1位‘1’,447位‘0’以及M值(所述M值为用64位二进制数表示的明文数据长度);S4. 3、数据填充模块为余下的一组不足512位的数据块填充1位‘1’以及若干位 ‘0’,使其成为512位的数据块;并且再填充一个512位的数据块,其组成为448位的‘0’以
及M值。SHA-256 模式哈希运算模块的寄存器从下往上分别是第一到第八个寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文从数据填充模块输出后,进入Wt生成模块,Wt生成模块通过算术加操作对各 操作数进行连接,生成新64个Wt算子输入到哈希运算模块,同时经过64轮的散列运算后, 生成256位的数据摘要。在SHA-256中模式中,哈希运算模块的寄存器中只有低32位被选中进行数据存 储,高32位不参与任何运算。哈希运算模块由下至上,设这八个寄存器所存储的数据从第 一个寄存器到第八个寄存器依次分别是A值、B值、C值、D值、E值、F值、G值、H值。(A值、 B值、C值、D值、E值、F值、G值、H值分别表示其对应的寄存器所存储的数据总和,并不随 更新后数据的实际改变而改变,例如在寄存器的数据经过多次更新后,原来第一个寄存器 中存储的数据1变成数据2,但都是用A值表示第一个寄存器里存储的数据。)设置寄存器 的初始值B值的初始值是十六进制数bb67ae85,C值的初始值是十六进制数3c6ef372,D 值的初始值是十六进制数a54ff53a,E值的初始值是十六进制数510e527f,F值的初始值是 十六进制数9b05688c,G值的初始值是十六进制数If83d9ab,H值的初始值是十六进制数 5be0cdl9 ;在SHA-256模式下,本装置的工作流程如图7所示,包括Si、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;S2、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位 到低位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中, 进入S4 ;S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出,分别进行下列运算逻辑(a)第1个寄存器的数据会作为变量χ被输入到以下运算逻辑σ ο (χ) = (χ > > 7) “ (χ > > 18) “ (χ > > > 3)其中“ >> ”为循环右移操作,符号右侧的数字代表需要移动的位数, 算术右移操作,符号右侧的数字代表需要移动的位数,为异或操作;(b)第14个寄存器的数据会作为变量χ被输入到以下运算逻辑σ 1(χ) = (χ >> 17) “ (χ >> 19) “ (χ >>> 10)其中“ > > ”为循环右移操作,符号右侧的数字代表需要移动的位数, 算术右移操作,符号右侧的数字代表需要移动的位数,为异或操作;将上述两个运算逻辑操作生成的值,与第0个寄存器、第9个寄存器的值进行加法 操作,生成的值作为新的Wt算子,进入步骤S5 ;
“>>>,,为
“>>>,,为
S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、哈希运算模块接收Wt生成模块输出的Wt算子,并计算用于更新哈希运算模块 中寄存器所需要的Tl值与T2值Tl = H+ Σ 256(1) (E) +Ch (Ε, F, G) +Kt+fft ;T2 = Σ 256 (0) (A) +Maj (A, B, C);其中Σ 256(1) (E) = (Ε >> 6)" (Ε >> 11) "(Ε >> 25)Σ 256(0) (A) = (Α >> 2)" (Α >> 13) “ (Α >> 22)Maj (Α, B, C) = (ΑΛΒ)十(AaC)十(BaC)Ch (Ε, F, G) =(EaF)十(,EAG)其中代表异或运算,“十”代表算术加运算;“ <<”表示为循环左移操作,运算 符右边的数字代表需要移位的位数;“,”表示取反操作;“>>”为循环右移操作,符号右 侧的数字代表需要移动的位数,Wt表示步骤S5中Wt生成模块输出的Wt算子,A值、B值、 C值、D值、E值、F值、G值、H值分别对应哈希运算模块中从第一个寄存器到第八个寄存器 依次存储的数据;其中Kt为64个Kt算子,是已定义的32位常量,其值如下428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59flllfl ablc5ed5d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deblfe cl9bfl74e49b69cl efbe4786 0fcl9dc6 240calcc 2de92c6f 4a7484aa 76f988da983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 1429296727b70a85 2elb2138 4d2c6dfc 53380dl3 650a7354 766a0abb 92722c85a2bfe8al a81a664b c24b8b70 c76c51a3 dl92e819 d6990624 106aa07019a4cll6 Ie376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 682e6ff3748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb c67178f2S7、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个 寄存器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中 的F值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器 中的C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值, 第一个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存 器中的A值;进入S8;S8、哈希运算模块判断是否已经完成64轮散列计算,若不是,则返回步骤S4;若
923f82a4 9bdc06a7 5cb0a9dc 06ca6351 81c2c92e f40e3585 5b9cca4f bef9a3f7是,则选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为输出,进入步 骤S9 ;S9、数据填充模块的寄存器的值减一,进入步骤SlO ;S10、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt 生成模块,进入步骤Sll ;S11、数据填充模块结束本次运算操作,等待下一次运算操作并返回到步骤Si。在SHA-256的步骤SlO中,所述填充数据的生成方法,包括以下步骤S4. 1、判断明文数据长度(M值)能否被512整除,若可以,则进入步骤S4. 2 ;若不 能,则进入步骤S4.3 ;S4. 2、数据填充模块为明文填充1位‘1’,447位‘0’以及M值(所述M值为用64 位二进制数表示明文数据长度);S4. 3、数据填充模块为余下的一组不足512位的数据块填充1位‘1’以及若干位 ‘0’,使其成为512位的数据块;并且再填充一个512位的数据块,其组成为448位的‘0’以
及M值。SHA-512 模式哈希运算模块的寄存器从下往上分别是第一到第八个寄存器,1、2、3、4、5、6、7、8 表示其物理位置。明文从数据填充模块输出后,进入Wt生成模块,Wt生成模块通过算术加操作对各 操作数进行连接,生成新的80个Wt算子输入到哈希运算模块,同时经过80轮的散列运算 后,生成512位的数据摘要。在SHA-512中模式中,哈希运算模块的寄存器中高32位及低32位都被选中进 行数据存储。哈希运算模块由下至上,设这八个寄存器所存储的数据从第一个寄存器 到第八个寄存器依次分别是A值、B值、C值、D值、E值、F值、G值、H值。设置寄存器 的初始值A值的初始值是十六进制数6a09e667f3bCC908,B值的初始值是十六进制数 bb67ae8584caa73b,C值的初始值是十六进制数3c6ef372fe94f82b,D值的初始值是十六进 制数a54ff53a5fld36fl,E值的初始值是十六进制数510e527fade682dl,F值的初始值是 十六进制数9b05688c2b3e6clf,G值的初始值是十六进制数If83d9abfb41bd6b,H值的初始 值是十六进制数5be0cdl9137e2179 ;在SHA-512模式下,本装置的工作流程如图8所示,包括Si、用128位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足128 位,则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;S2、待加密的明文以1024位为一组,输入数据填充模块,进入步骤S3 ;S3、Wt生成模块选取上下两行的寄存器组用于生成Wt算子;1024位的明文从高位 到低位被分为16组,每组64位数据,高32位的数据存储于上面一行的寄存器组中,低32 位的数据存储于下面一行的寄存器组中,按顺序从数据填充模块输入到Wt生成模块的寄 存器组中,进入S4;
S4、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数 据会被输出,分别进行下列运算逻辑(a)第1个寄存器的数据会作为变量χ被输入到以下运算逻辑σ 0(χ) = (χ >> 1) “ (χ >> 8) “ (χ >>> 7)其中“ > > ”为循环右移操作,符号右侧的数字代表需要移动的位数,“ > > > ”为 算术右移操作,符号右侧的数字代表需要移动的位数,为异或操作;(b)第14个寄存器的数据会作为变量χ被输入到运算逻辑σ 1 (χ) = (χ >> 19)" (χ >> 61)" (χ >>> 6)其中“ > > ”为循环右移操作,符号右侧的数字代表需要移动的位数,“ > > > ”为 算术右移操作,符号右侧的数字代表需要移动的位数,为异或操作;上述两个运算逻辑生成的值,与第0个寄存器,第9个寄存器的值进行加法操作, 生成的值作为新的Wt算子,进入步骤S5 ;S5、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出, 作为该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄 存器的位置,进入S6 ;S6、哈希运算模块接收Wt生成模块输出的Wt算子,并计算用于更新哈希运算模块 中寄存器所需要的Tl值与Τ2值Tl = H+ Σ 512 (1) (E) +Ch (Ε, F, G) +Kt+fft ;T2 = Σ 512(0) (A) +Maj (A, B, C)其中Σ 512(1) (E) = (Ε >> 14)" (Ε >> 18)" (Ε >> 41)Σ 512 (0) (A) = (Α > > 28)" (Α > > 34)" (Α > > 39)Maj (Α, B, C) = (ΑΛΒ)十(AaC)十(BaC)Ch (Ε, F, G) =(EaF)十(,EAG)其中代表异或运算,“十”代表算术加运算;“<<”表示为循环左移操作,运算 符右边的数字代表需要移位的位数;“,”表示取反操作;“>>”为循环右移操作,符号右 侧的数字代表需要移动的位数,Wt表示步骤S5中Wt生成模块输出的Wt算子,A值、B值、 C值、D值、E值、F值、G值、H值分别对应哈希运算模块中从第一个寄存器到第八个寄存器 依次存储的数据;其中Kt为64个Kt算子,是已定义的32位常量,其值如下428a2f98d728ae227137449123ef65cdb5c0fbcfec4d3b2fe9b5dba58189dbbc
3956c25bf348b53859flllflb605d019923f82a4afl94f9bablc5ed5da6d8118
d807aa98a303024212835b0145706fbe243185be4ee4b28c550c7dc3d5ffb4e2
72be5d74f27b896f80deblfe3bl696bl9bdc06a725c71235cl9bfl74cf692694
e49b69cl9efl4ad2efbe4786384f25e30fcl9dc68b8cd5b5240calcc77ac9c65
2de92c6f592b02754a7484aa6ea6e4835cb0a9dcbd41fbd476f988da831153b5
983e5152ee66dfaba831c66d2db43210b00327c898fb213fbf597fc7beef0ee4
c6e00bf33da88fc2d5a79147930aa72506ca6351e003826f142929670a0e6e70
27b70a8546d22ffc2elb21385c26c9264d2c6dfc5ac42aed53380dl39d95b3df
650a73548baf63de766a0abb3c77b2a881c2c92e47edaee692722c851482353b
a2bfe8al4cfl0364a81a664bbc423001c24b8b70d0f89791c76c51a30654be30
dl92e819d6ef5218d69906245565a910f40e35855771202a106aa07032bbdlb8
19a4cll6b8d2d0c8Ie376c085141ab532748774cdf8eeb9934b0bcb5el9b48a8
391c0cb3c5c95a634ed8aa4ae3418acb5b9cca4f7763e373682e6ff3d6b2b8a3
748f82ee5defb2fc78a5636f43172f6084c87814alf0ab728cc702081a6439ec
90befffa23631e28a4506cebde82bde9bef9a3f7b2c67915c67178f2e372532b
ca273eceea26619cdl86b8c721c0c207eada7dd6cde0eblef57d4f7fee6edl78
06f067aa72176fba0a637dc5a2c898a6113f9804bef90daeIb710b35131c471b
28db77f523047d8432caab7b40c724933c9ebe0al5c9bebc431d67c49cl00d4c
4cc5d4becb3e42b6597f299cfc657e2a5fcb6fab3ad6faec6c44198c4a475817
S7、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个
寄存器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中 的F值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器 中的C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值, 第一个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存 器中的A值;进入S8;S8、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4 ;若 是,则选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为输出,进入步 骤S9 ;S9、数据填充模块的寄存器的值减一,进入步骤SlO ;S10、数据填充模块判断寄存器的值是否等于0 若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到 S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt 生成模块,进入步骤Sll ;S11、数据填充模块结束本次运算操作,等待下一次运算操作并返回到步骤Si。在SHA-512的步骤SlO中,所述填充数据的生成方法,包括以下步骤S4. 1、判断明文数据长度(M值)能否被1024整除,若可以,则进入步骤S4.2;若 不能,则进入步骤S4. 3;S4. 2、数据填充模块为明文填充1位‘1’,895位‘0’以及M值(所述M值为用128 位二进制数表示明文数据长度);S4. 3、数据填充模块为余下的一组不足1024位的数据块填充1位‘1’以及若干位 ‘0,,使其成为1024位的数据块;并且再填充一个1024位的数据块,其组成为896位的‘0, 以及M值。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的 限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化, 均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
一种兼容三种SHA标准的装置,其特征在于,包括依次相连的数据填充模块、Wt生成模块和哈希运算模块,其中所述数据填充模块,用于接收明文数据,并生成填充数据,将明文数据与填充数据输出至Wt生成模块;所述Wt生成模块,用于接收数据填充模块输出的数据,在SHA 1模式中通过异或运算连接各操作数,在SHA 256及SHA 512模式中通过算术加操作对各操作数进行连接,生成新的Wt算子并输入到哈希运算模块;所述哈希运算模块,用于接收Wt生成模块的Wt算子,进行散列运算,生成160位、256位或者512位的数据摘要。
2.根据权利要求1所述一种兼容三种SHA标准的装置,其特征在于所述数据填充模块包括寄存器、减法器和多路开关;所述Wt生成模块包括寄存器、移位寄存器组、左循环移位逻辑、多路开关、加法器和异 或运算器。
3.根据权利要求2所述一种兼容三种SHA标准的装置,其特征在于,所述哈希运算模块 包括寄存器和逻辑运算模块所述哈希运算模块中的逻辑运算模块包括左循环移位逻辑、算术左移逻辑、多路开关、 加法器和异或运算器;所述哈希运算模块中的寄存器为8个64位寄存器,在不同模式,寄存器的初始值不同。
4.根据权利要求3所述一种兼容三种SHA标准的装置,其特征在于,所述Wt生成模块 中的寄存器、移位寄存器组分为上下两行,每行的数据深度是16,具体为上面一行包括依次相连的一个32位位宽深度为2的移位寄存器、一个32位位宽深度 为5的移位寄存器、一个32位位宽深度为8的移位寄存器和一个32位位宽寄存器;下面一行包括依次相连的一个32位位宽深度为2的移位寄存器、一个32位位宽寄存 器、一个32位位宽深度为4的移位寄存器、一个32位位宽寄存器、一个32位位宽深度为6 的移位寄存器,一个32位位宽寄存器和一个32位位宽寄存器;所述哈希运算模块中的寄存器为8个64位寄存器,所述每个64位寄存器都被定义为 低32位及高32位。
5.根据权利要求4所述兼容三种SHA标准的装置的实现方法,其特征在于,包括以下步骤(I)数据填充模块接收明文数据,并生成填充数据,将明文数据与填充数据输出至Wt 生成模块;(II)Wt生成模块接收数据填充模块输出的数据,在SHA-I模式中通过异或运算连接各 操作数,在SHA-256及SHA-512模式中通过算术加操作对各操作数进行连接,生成新的Wt 算子并输入到哈希运算模块;(III)哈希运算模块接收Wt生成模块的Wt算子,进行散列运算,在SHA-I模式下生成 160位的数据摘要,在SHA-256模式下生成256位的数据摘要,或者在SHA-512模式下生成 512位的数据摘要。
6.根据权利要求5所述兼容三种SHA标准的装置的实现方法,其特征在于,SHA-I模式 具体包括以下步骤`51、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64位,则 以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;`52、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3;`53、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位到低 位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中,进入 S4;`54、随后进入系统的下一个时钟周期,Wt生成模块中第0、2、8、15个寄存器上的数据会 被输出做异或操作;异或操作得出的数在左循环移位一位后,作为新的Wt算子,进入步骤 S5 ;所述0、2、8、15表示寄存器在本16数据深度寄存器组中的位置;`55、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出,作为 该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄存器 的位置,进入S6 ;`56、哈希运算模块由下至上,设这八个寄存器所存储的数据从第一个寄存器到第八个 寄存器依次分别是A值、B值、C值、D值、B值、C值、D值、E值,哈希运算模块接收Wt生成 模块输出的Wt算子,并判断当前散列运算正在进行的轮数,若在0到19轮散列运算中,则 进入步骤S7 ;若在20到39轮或60到79轮的散列运算中,则进入步骤S8 ;若在40到59的 散列轮运算中,则进入步骤S9;`57、在0到19轮散列运算中,哈希运算模块使用第五、六、七个寄存器的值,及步骤S5 中Wt生成模块输出的Wt算子,求出用于更新第一个寄存器所需要的T值,进入步骤SlO ;步骤S8、在20到39轮或60到79轮的散列运算中,哈希运算模块使用第五、六、七个寄 存器的值,或第二、三、四个寄存器的值,及步骤S5中Wt生成模块输出的Wt算子求出用于 更新第1寄存器所需要的T值,进入步骤SlO ;步骤S9、在40到59轮的散列轮运算中,哈希运算模块使用第二、三、四个寄存器的值, 及步骤S5中Wt生成模块输出的Wt算子,求出用于更新第一个寄存器所需要的T值,进入 步骤SlO ;`S10、哈希运算模块中,第四个及第七个寄存器中的D值一致,用第七个寄存器中的D值 更新第八个寄存器中的E值,第三个寄存器及第六个寄存器中的C值更新第四及第七个寄 存器中的D值,第二个寄存器及第五个寄存器中的B值更新第三及第六个寄存器中的C值, 第一个寄存器中的A更新第二及第五个寄存器中的B值,用求得的T值更新第一个寄存器 中存储的A值,进入Sll ;`Sl 1、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4;若是,则 哈希运算模块选择第一、第二、第三、第四及第八个寄存器的值作为输出,进入步骤S12 ;`512、数据填充模块的寄存器的值减一,进入步骤S13;`513、数据填充模块判断寄存器的值是否等于0若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出至Wt生成 模块,进入步骤S14;`514、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。
7.根据权利要求5所述兼容三种SHA标准的装置的实现方法,其特征在于,SHA-256模式具体包括以下步骤`51、用64位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足64位,则 以0补足最高位;将M值输入数据填充模块的专用寄存器中存储;进入步骤S2 ;`` 52、待加密的明文以512位为一组,输入数据填充模块,进入步骤S3;`53、Wt生成模块选取下面一行的寄存器组用于生成Wt算子;512位的明文从高位到低 位被分成16组,每组32位,按顺序从数据填充模块输入到Wt生成模块的寄存器组中,进入 S4;`54、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数据会 被输出并用于生成新的Wt算子,进入步骤S5;所述0、1、9、14表示寄存器在本16数据深度 寄存器组中的位置;`55、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出,作为 该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄存器 的位置,进入S6 ;`56、哈希运算模块接收Wt生成模块输出的Wt算子,设哈希运算模块由下至上,这八个 寄存器所存储的数据从第一个寄存器到第八个寄存器依次分别是A值、B值、C值、D值、E 值、F值、G值、H值;使用这八个寄存器所存储的数据计算用于更新哈希运算模块中寄存器 所需要的Tl值与T2值`57、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个寄存 器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中的F 值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器中的 C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值,第一 个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存器中 的A值,进入S8 ;`58、哈希运算模块判断是否已经完成64轮散列计算,若不是,则返回步骤S4;若是,则 哈希运算模块选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为输出, 进入步骤S9 ;`59、数据填充模块的寄存器的值减一,进入步骤SlO;`510、数据填充模块判断寄存器的值是否等于0若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt生成 模块,进入步骤Sll ;`511、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。
8.根据权利要求6或7所述兼容三种SHA标准的装置的实现方法,其特征在于,所述填 充数据,其生成方法包括以下步骤S4. 1、判断明文数据长度M值能否被512整除,若可以,则进入步骤S4. 2;若不能,则进 入步骤S4. 3 ;S4. 2、数据填充模块为明文填充1位‘1’,447位‘0,以及M值;S4. 3、数据填充模块为余下的一组不足512位的数据块填充1位‘1’以及若干位‘0’, 使其成为512位的数据块;并且再填充一个512位的数据块,其组成为448位的‘0’以及M值。
9.根据权利要求5所述兼容三种SHA标准的装置的实现方法,其特征在于,SHA-512模 式具体包括以下步骤`51、用128位二进制数表示明文数据长度,设为M,若代表数据长度的数据不足128位, 则以0补足最高位;将M值输入数据填充模块的专用寄存器中存储,进入步骤S2 ;`52、待加密的明文以1024位为一组,输入数据填充模块,进入步骤S3;`53、Wt生成模块选取上下两行的寄存器组用于生成Wt算子;1024位的明文从高位到低 位被分为16组,每组64位数据,高32位的数据存储于上面一行的寄存器组中,低32位的 数据存储于下面一行的寄存器组中,按顺序从数据填充模块输入到Wt生成模块的寄存器 组中,进入S4;`54、随后进入系统的下一个时钟周期,Wt生成模块中第0、1、9、14个寄存器上的数据会 被输出用于生成新的Wt算子,进入步骤S5 ;所述0、1、9、14表示寄存器在本16数据深度寄 存器组中的位置;`55、队列中原有的16个Wt算子依次前移一位,在第0个寄存器的Wt算子被移出,作为 该轮的Wt算子送入到哈希运算模块,同时步骤S4中新的Wt算子被输入到第15个寄存器 的位置,进入S6 ;`56、设哈希运算模块由下至上这八个寄存器所存储的数据从第一个寄存器到第八个寄 存器依次分别是A值、B值、C值、D值、E值、F值、G值、H值;哈希运算模块接收Wt生成模 块输出的Wt算子,并计算用于更新哈希运算模块中寄存器所需要的Tl值与T2值;57、哈希运算模块中,第七个寄存器中的G值更新第八个寄存器中的H值,第六个寄存 器中的F值更新第七个寄存器中的G值,第五个寄存器中的E值更新第六个寄存器中的F 值,第四个寄存器中的D值与Tl值相加后更新第五个寄存器中的E值,第三个寄存器中的 C值更新第四个寄存器中的D值,第二个寄存器中的B值更新第三个寄存器中的C值,第一 个寄存器中的A值更新第二个寄存器中的B值,Tl与T2相加的结果更新第一个寄存器中 的A值,进入S8 ;58、哈希运算模块判断是否已经完成80轮散列计算,若不是,则返回步骤S4;若是,则 选择第一、第二、第三、第四、第五、第六、第七及第八个寄存器的值作为输出,进入步骤S9 ;59、数据填充模块的寄存器的值减一,进入步骤SlO;510、数据填充模块判断寄存器的值是否等于0若寄存器的值不等于0,则数据填充模块将明文直接输出到Wt生成模块,返回到S2 ;若寄存器的值等于0,则数据填充模块在明文后面补充填充数据并一同输出到Wt生成 模块,进入步骤Sll ;511、数据填充模块结束本次运算操作,或等待下一次运算操作并返回到步骤Si。
10.根据权利要求9所述兼容三种SHA标准的装置的实现方法,其特征在于,所述 SHA-512的步骤SlO中填充数据,其生成方法具体包括以下步骤S4. 1、判断明文数据长度M值能否被1024整除,若可以,则进入步骤S4. 2 ;若不能,则 进入步骤S4. 3 ;S4. 2、数据填充模块为明文填充1位‘1,,895位‘0,以及M值;S4. 3、数据填充模块为余下的一组不足1024位的数据块填充1位‘1’以及若干位‘0’,使其成为1024位的数据块;并且再填充一个1024位的数据块,其组成为896位的‘0’以及M值。
全文摘要
本发明公开子一种兼容三种SHA标准的装置,包括依次相连的数据填充模块、Wt生成模块和哈希运算模块。本发明还公开了一种兼容三种SHA标准装置的实现方法,包括以下步骤(I)数据填充模块接收明文数据,并生成填充数据,将数据输出至Wt生成模块;(II)Wt生成模块,生成新的Wt算子并输入到哈希运算模块;(III)哈希运算模块在SHA-1模式下生成160位的数据摘要,在SHA-256模式下生成256位的数据摘要,或者在SHA-512模式生成512位的数据摘要。本发明具有普遍适用性、兼容性好、功耗低,以及占用额外的资源少等优点。
文档编号G06F21/00GK101894229SQ20101021566
公开日2010年11月24日 申请日期2010年6月30日 优先权日2010年6月30日
发明者何建华, 奚建清, 陈虎, 黄华强 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1