您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术一种密钥可配置的DES加密算法的FPGA 正文
一种密钥可配置的DES加密算法的FPGA

一种密钥可配置的DES加密算法的FPGA

点击数:7800 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   DSP/FPGA技术

      摘 要: 在传统的DES加密算法的基础上,提出一种对密钥实行动态管理的硬件设计方案,给出了其FPGA实现方法。通过对DES加密原理的分析,利用其子密钥的生成与核心算法相关性较弱的特点,对密钥进行重新配置。DES算法采用资源优先方案,在轮函数内部设置流水线架构,提高了整体处理速度;在FPGA上实现轮函数和密钥变换函数独立运算,减少了相邻流水线级间的逻辑复杂度,从而实现了DES算法在FPGA条件下的重构设计。最终通过对设计结果的功能仿真和测试分析,论证了整个设计的正确性。
  关键词: DES; 线性反馈移位寄存器; 混沌加密; FPGA

  随着密码学技术的飞速发展,软件加密已经非常流行,但由于硬件加密的稳定性和兼容性更好而且速度更快,所以仍是商业和军事用途的主要选择。而FPGA在实现算法方面具有灵活性、物理安全性和比软件更高的速度性能,已成为硬件实现加密算法的最好选择。
  数据加密标准[1]DES(Data Encryption Standard)是迄今为止世界上最为广泛使用的一种分组密码算法。本文提出了一种密钥可配置的DES算法的FPGA实现方案:即在传统DES算法的基础上,采取密钥可配置的方法,增加密钥复杂度,加强密钥保护,利用初始密钥选择的随机性,增强算法抗攻击能力,通过选择多种密钥产生方法,进行DES加密。因此,即便知道了密文和密钥,由于不知道采取何种密钥产生方式,仍然难以攻破。
1 加密算法理论
1.1 DES算法原理

  数据加密标准DES算法是用于计算机数据加密保护的分组加密的数学算法,算法以64 bit为一个分组对数据进行加密。使用64 bit的密钥加密64 bit分组的信息。首先将原始数据64 bit明文进行初始置换IP,然后与子密钥(由加密密钥产生)进行一系列迭代运算,最后再经过逆置换IP-1,即可得到64 bit密文(加密后数据)。在每一轮中,数列块的右边32 bit数据和密钥(Key)一起传送给函数f,函数f运算的结果再与数列块左边32 bit数据进行“异或”操作。其中S盒(S选择函数)是DES算法的心脏,由它实现非线性变换。
  解密过程与此类似,只是在应用子密钥时,顺序颠倒为k16,k15,…k2,k1。图1所示为DES加密原理。从图中可以看到轮密钥产生器相对于DES算法是独立运算的,这就为密钥的配置提供了可能和便利。


  因为该算法是公开的,因此64 bit的密钥算法是极其重要的,因为它是导致由64 bit的明文到64 bit密文唯一集合的密码运算。故DES的加密安全依赖于对密码的保护。
1.2 线性反馈移位寄存器
  线性反馈移位寄存器LFSR(Linear Feedback Shift Register)如图2所示,是一种非常成熟的序列生成方法,已被广泛地应用于密码技术、通信技术等方面。


  若反馈函数为线性函数f(a1,a2,…an)=c1a1c2a2cnan,则称为线性反馈移位寄存器(LFSR)。其中,a1,a2,…an为二值(0,1)存储单元,这n个二值存储单元称为该反馈移位寄存器的级。任一时刻,这些级的内容构成反馈移位寄存器的状态,每个状态可以用n长序列(a1,a2,…an)来表示,对应1个GF(2)域上的n维向量。反馈函数f(a1,a2,…an)是n元布尔函数。在时钟脉冲的控制下,每经过1个时刻,每一级存储器ai都要将自己存储的内容向下一级ai-1传递,反馈函数由存储器当前状态计算出an下一时刻的内容。
  由于线性反馈移位寄存器易于构造且易于应用软件和数字硬件实现,所以密码设计者常用它来构造序列密码。本文采用线性反馈移位寄存器作为对初始密钥的一种配置。
1.3 混沌密码
  由于混沌系统具有的宽频谱、类随机特性、对结构参数及初始状态的极端敏感性等性质,日益成为密码学的重要分支。混沌密码在硬件实现时,应该在尽量提高精度、逼近混沌特性的同时,提高运算速度,满足工程中实时处理的要求。而一维LogistIC映射从数学形式上来看是一个非常简单的混沌映射,但此系统具有极其复杂的动力学行为,在保密通信领域的应用十分广泛[2]。因此本设计就采用了Logistic映射对密钥进行混淆。
  Logistic映射是混沌模型中的一种,它是一个离散混沌系统,表达式为:xn+1=u×xn×(1-xn),(n=1,2,),其中初始值x0∈(0,1)。混沌动力系统的研究指出,当3≤u≤4时,Logistic映射由出现倍分岔现象逐步趋于混沌状态[3],即由初始条件在Logistic映射的作用下所产生的{xn,n=0,1,2,)是非周期、不收敛的,且对初始值非常敏感的混沌序列。当u=4时,表达式为:xn+1=4×xn×(1-xn), 此时构成的动态系统在连续域上是混沌的,x0取(0,1)内的值。
2 FPGA上的算法实现
  采用基于SRAM技术的FPGA设计的电路虽然不具有保密性,但是基于Kerckhoff原则,所实现算法的硬件电路是可行且安全的。为了增强DES算法的安全性,本文提出了对密钥进行动态配置来改进DES算法,利用线性反馈移位寄存器和Logistic映射增加初始密钥的复杂度。具体配置方法为:根据控制信号,将输入的64 bit密钥进行配置,既可以直接将初始密钥引入,参与DES加密算法,又可以经过线性反馈移位寄存器,得到新的密钥流参与DES加密算法,还可以经过混沌加密进一步增强DES算法的密钥安全性。
2.1 密钥流生成器的选取
  本设计中,选取线性反馈移位寄存器和混沌序列作为密钥流生成器。
  由于N级线性反馈移位寄存器输出的序列是周期性的,非常适合硬件实现,且最大周期为2n-1,为了产生64 bit的密钥序列,设计5级移位寄存器(周期为31),其状态关系为:
  
  这样无需等64个时钟周期,只需31个周期就可以得到64 bit的密钥。
  为了从混沌序列中获得每轮64 bit的轮密钥,需要对产生的混沌序列进行有限精度的二进制编码,即把混沌序列中的每一项与一个定长的二进制编码相对应。当u=4时,量化后的表达式为:
  
  初始值x0为(0,2n-1)之间的整数,取n=16 bit,使用映射函数把4个连续的序列项映射成1个轮密钥,即rkey={key1,key2,key3,key4}。这样产生的轮密钥既有随机性又有独立性。
2.2 硬件实现结构
  传统的DES算法主要有2组输入信号:明文datain[63:0]、密钥keyin[63:0];2组输出信号:密文dataout[63:0]以及有效信号dataout_en。为了实现对密钥的配置,增加了密钥选择输入信号key_sel[1:0]:当取00或者11时,直接将密钥keyin送至DES模块中的密钥产生模块;当取01时,将密钥keyin先送至线形反馈移位寄存器中生成新的序列密码作为新的密钥送至密钥产生模块中;当keyin取10时,将密钥keyin先送至混沌加密模块中生成新的混沌序列作为新的密钥参与后续的加密运算。这2个模块不可能同时工作,当其中1个工作时,另1个关闭时钟。采取关闭时钟法选择对应的加密算法,既能简化电路,减少控制信号,减少门的翻转次数,又能降低芯片集成度,进而达到降低功耗的目的。其逻辑结构如图3所示。


  为了有效地控制密钥生成模块的工作,同时降低系统功耗,本设计采用了FPGA设计中的乒乓操作技巧[4],具体操作为:对线性反馈移位寄存器(LFSR)和混沌加密模块(logistic)分别使用独立的时钟信号clk_lf、clk_lo,而不使用系统时钟clk。通过密钥选择输入信号key_sel的取值不同,使clk_lf和clk_lo的值分别等于0或是系统时钟clk。

[1] [2]  下一页


本文关键字:加密  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术

《一种密钥可配置的DES加密算法的FPGA》相关文章>>>