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

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

文章摘要: 为了解决数据在网络通信中的安全传输问题,通常采用分组加密技术对数据信息进行加密保护,其中最具有代表性的是数据加密标准DES。DES加密算法已成为应用非常广泛的一种分组对称加密算法,该算法具有极高的安全性。到目前为止,除了穷举搜索法对DES算法进行攻击外,还没有发现更有效的方法。目前,DES算法广泛应用于卫星通信、网关服务器、网络通信设备、智能卡(IC卡)等领域[1]。其实现方法通常分为软件实现和硬件实现两种,由于软件实现时速度较慢,最快速度不到150 Mb/s[2],且利用软件实现DES算法在安全性方面也存在隐患,而应用硬件实现则可以克服以上的问题。现场可编程门阵列(FPGA)在算

基于FPGA的改进DES算法的实现,标签:电路设计,http://www.88dzw.com

      为了解决数据在网络通信中的安全传输问题,通常采用分组加密技术对数据信息进行加密保护,其中最具有代表性的是数据加密标准DES。DES加密算法已成为应用非常广泛的一种分组对称加密算法,该算法具有极高的安全性。到目前为止,除了穷举搜索法对DES算法进行攻击外,还没有发现更有效的方法。目前,DES算法广泛应用于卫星通信、网关服务器、网络通信设备、智能卡(IC卡)等领域[1]。其实现方法通常分为软件实现和硬件实现两种,由于软件实现时速度较慢,最快速度不到150 Mb/s[2],且利用软件实现DES算法在安全性方面也存在隐患,而应用硬件实现则可以克服以上的问题。现场可编程门阵列(FPGA)在算法实现方面具有灵活性、物理安全性,相对于软件实现,在速度和性能上具有明显的优势。
   DES算法是以多轮的密钥变换轮函数、子密钥和数据异或运算的轮函数为特征,相应的硬件实现方法有两种:一种是通过轮函数的16份硬件拷贝,达到深度细化的流水线处理,实现性能最优;另一种是通过时分复用,重复调用1份轮函数的硬件拷贝,以时间换空间,从而得到硬件资源占用的最小化。通过对系统的性能和资源占用进行综合考虑,本文采用资源优先方案。
   采用此方案系统消耗的资源较少,但运行速度受限。改进的方法是采取在轮函数内部设置流水线结构来提高整体处理的速度,同时子密钥变换轮函数提供子密钥,应与迭代轮函数保持同步工作状态,以减少迭代运算带来的等待延迟。通过设置迭代轮计数器产生的算法状态执行指示位,控制轮函数的输入和反馈,实现轮函数的复用。
      1 DES算法概述与原理
  DES是一种分组加密算法,将64 bit的明文模块输入用64 bit密钥加密得到64 bit密文输出。其64 bit密钥中有效密钥只有56 bit,其余8 bit为奇偶校验位,不参与运算。同时,它也是对称加密算法,其加密和解密运算过程是一样的,区别仅仅在于迭代时子密钥的使用顺序,算法本身并没有任何变化。DES算法的处理流程如图1所示。

    图1(a)是整个算法的实现处理流程,64 bit的明文输入模块经过初始置换IP后,改变了分组中每个bit的顺序,并把置换输出分为L0、R0两部分;进入16轮迭代运算,每一轮迭代都要用到轮函数f,第16轮迭代两输出左右互换的结果R16、L16作为逆初始置换IP-1的输入;64 bit的R16、L16经过逆初始置换得到64 bit的密文输出,IP·IP-1=I。
    图1(b)是单轮迭代运算过程,也是一非线性变换的作用过程。第i轮迭代过程的具体描述可表示为[3]:
 
其中,㈩表示2 bit串的“异或”(按位模2加)。
   轮函数f是迭代运算的核心部分,正是在密钥控制下多次利用论函数进行加密变换,才达到实现扩散和混淆的效果。轮函数f的功能由四个部分按顺序完成:(1)将32 bit Ri-1输入通过扩展E变换扩展为48 bit的数据; (2)将扩展后的48 bit数据与对应的48 bit子密钥Ki“异或”; (3)将异或结果分成8个6 bit分组,8个分组在8个不同的非线性S盒的作用下被转变为8个4  bit分组,其中每个S盒都将6 bit输入映射为4 bit输出;(4)将S盒的输出结果经过P盒的换位置换,得到f(Ri-1,Ki)的32 bit输出。
    DES实际有效的密钥长度为56 bit,对于56 bit的密码信息,每7 bit扩充1 bit奇偶校验位,从而得到64 bit外部密钥。外部密钥输入后,首先经过重排PC-1表(剔除奇偶校验位,打乱密码信息顺序)得到56 bit原始密钥,并分成两部分28 bit的输出。每部分按循环移位次数表[4]移位,并按重排PC-2表置换得到每轮迭代所需的48位子密钥。

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


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