本发明涉及一种DES的加解密密钥生成器及密钥生成方法,属于信息安全技术领域。
背景技术:
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
目前,基于DES算法的加密与解密硬件仍广泛应用于卫星通信、网关服务器、机顶盒、视频传输以及其他大量的数据传输业务中。然而,随着密码分析技术的不断发展,DES算法已被攻破,网络安全面临威胁。而在沿用原有应用系统方面,3-DES算法有很大的生存空间,通过增加密钥长度提高加密强度,被大量用来替换已经不安全的DES算法。
无论是DES、2DES或者3DES在使用过程中都需要密钥生成器。传统的密钥生成器包括控制单元、计算单元、存储单元、输出寄存器单元,如图1所示。实现方法如图2所示,为加密时,从第一个周期开始每个周期输出一个此轮加密需要的轮密钥;而当解密时,依次使用16个加密轮密钥k1-k16的倒叙即k16-k1,但是,由于算法计算过程,要先计算出k1,存入存储单元,由k1再计算出k2,再存入另一个存储单元,依次递推,计算出k16,用作第一个解密时使用的轮密钥,第二个解密密钥为k15,由存储单元存储的值中取出,第三个解密密钥是k14,同样由存储单元中给出,依次到第十六个解密密钥。即从第一个周期至第十六个周期每个周期产生一个加密密钥,依次存放在存储单元中,从第十六个周期开始,从存储单元中倒序输出,即从第十六个至第三十二个周期每个周期输出一个此轮解密需要的轮密钥。此方法在存储密钥时需要15个48比特的寄存器或者存储单元来存储密钥,且产生并使用解密密钥时总共需要32个周期。
技术实现要素:
针对现有技术中存在的DES加解密密钥生成器所需周期数及存储单元多的问题,提出了一种DES加解密密钥生成器及密钥生成方法,本发明可以将加密密钥生成过程与解密密钥生成过程结合起来,根据加解密标志信号来判断属于加密运算还是解密运算后,利用化简的结果,当需要解密密钥时,不再需要16个48比特的存储单元,同时将计算解密时的周期数减少了16个周期。
本发明的技术方案为:
一种DES加解密密钥生成器,其特征在于,包括控制单元、计算单元和输出寄存器单元;
控制单元分别与计算单元、输出寄存器连接,计算单元与输出寄存器单元连接;其中,
控制单元,用于控制DES加解密密钥生成器内的状态机的状态跳转;该状态机分为17个状态,分别为状态0到状态16,每一状态对应一周期;状态0时为等待状态,当密钥有效时控制该状态机每个周期进行一次跳转并将状态信息发送给计算单元;
计算单元,包括一加解密密钥生成表,其包括状态字段、密钥值字段、循环左移相对值字段、循环左移绝对值字段、解密密钥值字段和循环右移相对值字段;加密过程中,计算单元根据当前的状态信息和该状态在加解密密钥生成表中对应的密钥值、循环左移相对值计算每一周期的轮密钥和循环左移绝对值,存入到输出寄存器单元,以及根据输出寄存器单元的值计算当前生成的轮密钥并输出到加解密密钥生成表的密钥值字段;解密过程中,计算单元根据当前的状态信息和该状态在加解密密钥生成表中对应的循环左移绝对值计算每一周期的循环右移相对值,存入到输出寄存器单元,并根据输出寄存器单元的值计算对应周期的解密密钥值并输出到加解密密钥生成表的解密密钥值字段;
输出寄存器单元,用于对每个周期生成的循环左移/右移绝对值进行存储。
进一步的,所述计算单元包括按位置换矩阵PC-1、按位置换矩阵PC-2,用于完成循环左移或循环右移操作生成轮密钥或解密密钥值;其中,按位置换矩阵PC-1只对初始密钥进行操作。
进一步的,该加解密密钥生成表的状态字段的状态值包括状态1~状态16;其中,加密过程,状态1、2、9、16对应的循环左移相对值为1,其余状态对应的循环左移相对值为2;状态1对应的密钥值为初始密钥值;解密过程,状态1对应的循环右移相对值为0,状态2、9、16对应的循环右移相对值为1,其余状态对应的循环右移相对值为2。
进一步的,所述输出寄存器单元包括两个28位的数据寄存器C、D。
一种DES加解密密钥生成器的密钥生成方法,其步骤为:
1)在DES加解密密钥生成器内设置一加解密密钥生成表,包括状态字段、密钥值字段、循环左移相对值字段、循环左移绝对值字段、解密密钥值字段和循环右移相对值字段;其中,该DES加解密密钥生成器内的状态机分为17个状态,分别为状态0到状态16,每一状态对应一周期,状态0时为等待状态;
2)当密钥有效时,控制单元控制该状态机每个周期进行一次跳转,并将状态信息发送给计算单元;
3)加密过程中,计算单元根据当前的状态信息和该状态在加解密密钥生成表中对应的密钥值、循环左移相对值计算每一周期的轮密钥和循环左移绝对值,存入到输出寄存器单元,根据输出寄存器单元的值计算当前生成的轮密钥并输出到加解密密钥生成表的密钥值字段;解密过程中,计算单元根据当前的状态信息和该状态在加解密密钥生成表中对应的循环左移绝对值计算每一周期的循环右移相对值,存入到输出寄存器单一,并根据输出寄存器单元的值计算对应周期的解密密钥值并输出到加解密密钥生成表的解密密钥值字段;
4)输出寄存器单元对每个周期生成的循环左移/右移值进行存储。
本发明的核心内容是密钥生成的优化方法,下面结合表格进一步介绍本发明的内容。
表1给出加解密的密钥生成过程。其方法如图3所示,在加密过程中依次使用密钥值k1-k16,这16个密钥值的得出可以从表1的第三列循环左移的相对值得出,同时在第4列,计算出循环左移的绝对值。由于密钥值由2个28位的数据构成,因此循环左移绝对值为28位时,即为原值。对于加密过程,第二列的密钥值(即轮密钥)属于在线计算,计算好的当前的轮密钥,直接输出到输出寄存器(即不用存储),用于其它模块(加密模块)计算使用。
在解密过程中,使用的第一轮到第十六轮解密密钥分别为k16-k1,由于密钥的使用顺序与加密时相反,因此希望可以先求出k16,依次类推,最后求出k1,这样每次使用密钥后,即可丢弃而不需要存储,节省了面积。使用的方法是直接由初始密钥输入值直接求得k16,由第四列可知,k16为循环左移的绝对值为28,由于密钥值就是28位,循环左移28位就是原值,即解密过程中使用的第一个密钥k16为原始值,接着求取第二个,由第四列的循环左移绝对值为27,可知k15为原始输入循环左移绝对值27,或者循环右移1位得到,即k16的值相对循环右移1位得到,k14的循环左移绝对值为25,也就等价于循环右移绝对值3位,即由K15的值相对循环右移2位得到。依次类推,可以从k16的循环左移绝对值得出相对上一个解密轮密钥的循环右移次数,每经过一个周期得出一个即将使用解密密钥。最后一列正序为解密时,从第一个迭代周期开始,相对上一个周期的输出,需要循环右移的相对值。
总之,如表1所示,加密时每个周期相对循环左移的位数,每个解密时每个周期相对循环右移的位数。在加密过程中有循环左移相对值有1位和2位两种情况,在解密过程中有循环右移相对值0位、1位以及2位的情况。由于二者的相似度极高,因此,密钥生成器只需要一个状态机控制状态转移,而选择左移右移由加密还是解密操作来决定,且在密钥生成器只需要一个28*2位的数据寄存器即可,而传统的既有加密又有解密的密钥生成模块需要16*28*2位的数据寄存器,这是本发明可以使3DES模块面积小同时不影响速度的原因之一。
表1加解密密钥生成
根据加解密的不同及为以下三个标志位,如表2所示:
表2状态信号与操作关系
与现有技术相比,本发明的积极效果为:
使用本发明的生成器可以将加密密钥生成过程与解密密钥生成过程结合起来,根据加密或者解密的不同,从第一个周期开始每个周期输出一个需要加密/解密密钥,且不需要额外的存储单元存储密钥,同时将需要的逻辑单元化简到更少。本发明为一种DES高效加解密密钥生成器,可用于硬件实现,可以作为FPGA或者ASIC软核,同时为基于DES、3DES的算法、安全协议等提供了一个高速小面积的加解密密钥生成器。
附图说明
图1为传统密钥生成器结构图;
图2为传统密钥生成器的密钥生成方法示意图;
图3为本发明密钥生成器的密钥生成方法示意图;
图4为本发明密钥生成器结构图;
图5为本发明密钥生成器程序设计简化图。
具体实施方式
下面结合附图对本发明的具体实施方式及优势进行详细描述。
本发明的密钥生成器如图4所示,其包含控制单元、计算单元及输出寄存器单元。控制单元与计算单元及输出寄存器连接,并控制二者的计算、输出状态,计算单元计算完成的结果存入到输出寄存器。
密钥生成器控制单元:密钥生成器内部的状态机分为17个状态,分别从状态0到状态16。状态0时为等待状态,当密钥有效时开始进入状态1,之后每个周期进行一次跳转,依次从状态1跳转到状态2,3,……,16。当状态为16时,跳转回状态0进入下一次DES密钥加解密生成器的等待状态。
密钥生成器输出寄存器单元:采用两个28比特的寄存器C、D对每个周期生成的轮密钥进行存储。每个状态的输出都存入到这两个寄存器中,在状态16时的输出即为最后一个轮密钥。
密钥生成器计算单元:计算单元主要由PC-1、PC-2以及循环移位三种操作构成。PC-1是一个按位置换矩阵,将原始输入的64比特按照置换矩阵进行变换,如将原始密钥的第五位移动到第十位,类似的操作;PC-2操作也是一个按位置换的矩阵。只在初始密钥输入时的周期使用PC-1,使用方法是将输入的初始密钥进行PC-1变换,如图5所示,之后每一轮按照表1的约定将两个28位的寄存器C、D循环移位,每一轮移位后的结果再次存放在输出寄存器C、D中,对寄存器C、D进行PC-2操作后,即为轮密钥输出K。
密钥生成器接口如表3所示,此密钥生成器可用于DES加解密模块中,与DES加解密模块相连的方法是通过复位信号rst及时钟信号clk同步,同时将轮密钥的输出K及K_out_valid送入到加解密模块与明文等信息一同进行加解密操作,加密时输出16个周期的K及K_out_valid信号,分别为第一轮到第十六轮加密密钥值。此加解密密钥生成器的优势为将解密需要的周期数由32减少为16个周期,且减少了15个48位的轮密钥存储单元。
表3加解密密钥生成器接口