基于FPGA的改进DES算法的实现

[10-10 20:38:44]   来源:http://www.88dzw.com  其它电路   阅读:8294

文章摘要: 2 DES算法的FPGA实现 本设计选用资源优先方案,即仅用硬件实现单轮密钥变换和密钥加数据运算的轮函数,通过重复16次调用这一功能模块来实现一次DES加/解密运算。该设计方案原理图如图2所示。当数据装载信号置为高电平时,待加/解密数据通过数据选择器送到轮函数的入口。同时在轮计数器的控制下,算法状态执行位置1。在第一个时钟到来时,将数据(B1、B2)通过轮函数实现第一轮变换,经过第一轮变换后的数据被寄存器锁存。在下一个时钟到来时,与相应轮的子密钥一起再次被送到轮函数的输入端,这样循环16轮后,算法状态执行位置0,输出最终数据。 本文在对DES算法进行建模时,将整个算

基于FPGA的改进DES算法的实现,标签:电路设计,http://www.88dzw.com
      2 DES算法的FPGA实现
    本设计选用资源优先方案,即仅用硬件实现单轮密钥变换和密钥加数据运算的轮函数,通过重复16次调用这一功能模块来实现一次DES加/解密运算。该设计方案原理图如图2所示。当数据装载信号置为高电平时,待加/解密数据通过数据选择器送到轮函数的入口。同时在轮计数器的控制下,算法状态执行位置1。在第一个时钟到来时,将数据(B1、B2)通过轮函数实现第一轮变换,经过第一轮变换后的数据被寄存器锁存。在下一个时钟到来时,与相应轮的子密钥一起再次被送到轮函数的输入端,这样循环16轮后,算法状态执行位置0,输出最终数据。

    本文在对DES算法进行建模时,将整个算法分为子密钥生成模块、S盒非线性变换模块、单轮迭代运算模块和顶层模块四个部分。其中,单轮迭代运算模块调用子密钥生成模块和S盒模块实现了一轮迭代运算功能。
2.1子密钥的生成
    DES算法每一轮次迭代都需要一个子密钥参与“异或”运算。传统的硬件实现时,通过对外部密钥的换位重组,以及每次迭代对应的不同次数的循环移位,预先生成子密钥。这样不仅语言描述复杂,占用的硬件资源较多,而且每轮密钥移位次数也不同,需要的运算时间不同,会给算法的迭代运算带来更大的等待延迟。
   外部密钥先后经过置换重排1、第n轮的循环移位和置换重排2这三个步骤得到第n轮的子密钥。通过分析可知这一系列处理都只是位的置换,每轮迭代需要每一位子密钥,相对于外部密钥的每一位存在一定固定的对应关系。为了降低资源消耗,提高算法执行速度,设计中可将三个步骤合并成一次位的置换。采用硬件描述语言Verilog HDL对子密钥生成模块进行组合逻辑设计,其仿真结果如图3所示。图中,mode为工作方式(=0时,加密;=1时,解密);外部密钥为十六进制数133457799bbcdff1时,prekey为外部密钥被剔除奇偶校验位生成的56 bit有效密钥重排PC-1得到的原始密钥,newkey为经过重排PC-2置换的48 bit子密钥。只要改变迭代轮数ki,就会预先生成子密钥。迭代轮数的变化是通过轮计数器来控制。

www.88dzw.com

    此设计方案消除了子密钥之间的相关性,便于子密钥在迭代过程中动态分发。同时,简化了子密钥的产生,有效地节约了硬件资源。
2.2 单轮迭代运算模块
    DES算法是典型的迭代分组密码算法,实现过程的核心是16轮次迭代运算。16轮迭代运算过程完全相同,只是轮迭代的输入参数不同。迭代运算中的轮函数f是非线性的,它是每轮实现扩散和混淆的关键。其中,E盒扩展置换和P盒置换都是线性变换,而S盒代换部件是一个十分复杂的非线性函数,正是经过它的非线性变换才使明文实现了较好的混乱,达到加解密的效果,从而具有较强的安全性。因此,S盒设计在整个DES算法中是非常关键的。
    S盒的功能描述:如果用a1a2a3a4a5a6表示6 bit输入,那么4 bit的输出值可以通过查表得到,行的a1a6索引的表示与列的a2a3a4a5索引表示均为二进制数。因此,建立S盒模型时,一般采用case语句来实现。用case多分支选择语句实现S盒有两种方法:(1)直接使用输入为6变量,输出为4变量的case语句对S盒描述,形成一个4 bit 64个存储空间的表。此方法可读性强,但8个S盒需要8×64个存储空间,占用大量资源,综合效率低,速度慢,不利于整个系统设计实现; (2)由于S盒是一个4×16的二维数组,使用双重case语句,外层使用2个变量,对应S盒输入的第1、6位。内层使用4个变量,对应S盒输入的第2、3、4、5 位。采用双重case语句可以直接定位输出结果。该方案可充分利用FPGA的内部资源,提高综合效率,加快算法执行速度。经过综合后,单个S盒的实现仅占用24个逻辑单元,相对于直接使用6个变量的case语句的实现,占用资源约减少50%。

上一页  [1] [2] [3]  下一页


Tag:其它电路电路设计家电维修 - 单元电路介绍 - 其它电路