基于Verilog硬件描述语言的AES密码算法实现

发布者:HarmoniousVibes最新更新时间:2010-11-14 来源: 电子发烧友 关键字:AES  Verilog  SubBytes 手机看文章 扫描二维码
随时随地手机看文章

引言

  密码模块是安全保密系统的重要组成部分,其核心任务就是加/解密数据。目前,分组密码算法AES以其高效率、低开销、实现简单等特点被广泛应用于密码模块的研制。随着计算机信息技术和超大规模集成电路技术的成熟与发展,通过硬件来实现密钥模块的内部运作,可保证在外界无密钥的明文流动,能够实现真正意义上的保密。此外,硬件实现还具有高速、高可靠性等特点。目前许多AES算法的硬件实现采用基于RAM查找表方式来实现算法中最关键的SubBytes部分。本文采用复合域来实现SubBytes部分的求逆运算,以便于采用组合逻辑减小面积。同时采用加/解密运算中列变换的部分电路进行复用,从而进一步节省实现面积。这样可以使AES密码应用于RFID系统,IC卡等面积要求较小的场合。

1 AES算法简介

  AES算法是一种迭代型分组密码,其分组长度和密钥长度均可变,各自可以独立指定为128 b,192 b,256 b。本文主要讨论分组长度和密钥长度为128 b的情况。AES算法是将输入的明文(或密文)分成16个字节,在第一个Add Round Keys变换后进入10轮迭代。迭代过程的前9轮完全相同,依次经过字节代替(substitute bytes)、行移位(shift rows)、列混合(mixcolumns)、轮密钥加(add round keys),最后一轮则跳过了列混合(mix columns)。解密过程与加密过程类似,但执行顺序与描述内容有所不同,因此AES算法的加解密运算需要分别实现。

2 AES算法的硬件设计

  根据AES算法的原理和基本结构,将整个AES算法模块分成4个相对独立的子模块:接口模块、控制单元模块、加解密运算模块、密钥扩展模块。本文所设计的密码算法不包括密钥发生器,所用的密钥通过接口模块由外部输入,加解密运算后的数据经输出接口输出。AES算法模块的总体结构如图1所示。



  2.1 接口模块的设计

  输入接口模块的主要任务是:将数据传送到加解密运算模块,将外部输入的密钥传送到密钥扩展模块。由于明文和密钥输入都是128位,将导致整个模块的输入/输出过多,占用太多资源,考虑到本文的设计主要应用于对面积要求较小的场合使用,如RFID系统中数据的传输,即每次传输的数据是64位,故采用4个32位寄存器,在时钟的控制下每次输入1组32位,通过4个时钟周期可得到128位的数据,可以有效减少资源的占用。输出接口模块的作用是将128位的解密运算结果输出,同样也采取32位分4组输出的方法。

  2.2 控制模块的设计

  控制模块的主要任务是实现加/解密运算模块与密钥扩展模块工作的启动。控制模块在时钟脉冲控制下,产生控制加/解密模块中字节替代、行移位、列混合、密钥加各部分工作信号。可由1个两状态的状态机实现控制。当新的数据或密钥输入时,通过状态机的信号可判断上次加/解密运算是否完成。如果状态机信号处于忙状态,说明加解密运算正在进行,需要等待;如果信号处于空闲状态,说明加解密运算已经完成,可以启动加解密运算模块与密钥扩展模块,将数据和密钥分别输入到加解密运算模块与密钥扩展模块中,开始新一组数据的加解密运算。

  2.3 加解密运算模块的设计

  AES算法的轮变换特点使之在硬件实现时可以有多种方式:串行方式,轮变换可采用组合逻辑实现;在10轮迭代过程中,前一轮结果可直接作为下一轮的输入;并在1个周期内完成1个分组运算,使吞吐量达到最佳状态。但需要大量的存储器资源和组合逻辑资源支持,一般的FP-GA芯片难以满足容量的需求,而且时钟频率非常低;基本迭代反馈方式,所有迭代只用1个轮变换模块,10个时钟周期完成1个分组运算,资源占用较少;轮内流水线方式,在轮变换中插入寄存器,将每轮运算分成多个操作段,每个时钟完成1个操作段,其优点是可以提高算法运行的时钟频率。但轮内各级流水部件不能同时执行,因此增加了算法运行的时钟数目。轮内流水线级数越多,时钟数目也越多,虽然算法仿真频率可以达到很高,但吞吐量并没有明显提高。

  综上比较可知,本文AES算法的硬件实现的目的是尽量减少资源的占用,使面积尽可能减小。故采用基本迭代反馈工作方式设计。

  2.3.1 SubBytes()和InvSubBytes()的设计

  字节代替是整个AES硬件实现中最为重要的变换,在加解密运算模块及密钥扩展模块中字节代替是主要的运算过程。因此,字节代替的硬件设计决定了整个AES算法硬件实现的速度和面积。字节代替可以通过查找表和算术运算的方式得到。传统的AES算法使用查找表方法实现字节代替,可以提高求逆速度,但由于该变换输入的数据为8位,加密和解密所用的替换字节表不同,因此需要的选择器和寄存器数量较多,硬件实现面积较大,故主要用于高速AES的实现。算术运算的方式在硬件设计上表现为组合逻辑,采用算术运算的方式实现则会降低硬件设计的复杂度,减小面积。

  2.3.2 ShiftRows()和InvShiftRows()的设计

  行移位变换作用在中间态的行上,将状态中的行按不同的偏移量进行循环移位。加密运算中间态的0~3行,分别向右循环移动O,1,2,3个字节。该操作仅是将数据按字节进行移动,硬件实现时只需在布线上进行调整,基本不占硬件资源。

  解密过程只是行移位的逆变换,即分别向左循环移动0,1,2,3个字节。同样,该操作也仅将数据按字节移动。如果有字节的位置改变,只需在布线上进行修改。

  [page]

  2.3.3 MixColumns()和InvMixColumns()的设计

  MixColumns()变换以矩阵中的列为单位,将每列看作一个GF(28)域上的四阶多项式,将多项式乘以c(x)/d(x)并对x4+1取模。其中c(x)为:

  在相应的解密过程中:


  同样对


  取模。

  为了降低整个模块的复杂度,考虑将加解密运算中列混合变换的部分电路进行复用,对比加解密运算所乘的多项式,可以发现{03}x可以用


  表示,同理:




  这样:


  由于
,式(8)只需要4个异或门就可实现。将该单元记为xtime()函数。其硬件结构如图2所示。加密时所取的系数较小{01,02,03},所以只需经过一次xtime()单元,便将乘法运算转换为移位操作和加法运算的复合。


  而解密时,Mixcolumns()的系数是{09,OB,OE,OD),实现这些乘法显然比加密时需要更多的时间。由式(3)可知,InvMixcolumns()也可用xtime()函数与异或门实现。这样,就可以实现加/解密列混合变换电路的复用,从而节约电路面积,提高解密运算速度。

  2.3.4 密钥加AddRoundKey()的设计

  在AES算法中,加法用异或操作实现。密钥加是中间状态的每一字节按位与轮密钥进行异或操作,加法的逆运算也用异或操作,所以可采用逐位异或操作实现加解密运算的AddRoundkey()。AddRoundkey()的逆运算是其自身。因此本文在常规轮中把加密时的密钥加、列混合变换和解密时的密钥加、列混合变换集成为同一模块,通过加解密信号的选择,实现加解密运算的列变换和密钥加功能。这样可消除加解密硬件结构的差异,同时也可降低轮密钥处理的复杂度。

 [page] 

  2.4 密钥扩展模块的设计

  轮密钥的产生是AES加解密运算的基础,密钥扩展模块的作用就是产生除了初始密钥本身之外的10个轮密钥,分别用于10轮加解密运算。

  加密运算采用密钥内部扩展的方式,即加密运算与密钥扩展并行完成。这一过程,每一轮变换都要和相应密钥扩展轮次生成的子密钥进行异或,因此需使用状态机控制加密运算和密钥扩展的同步,否则会发生混乱。需要指出,使用内部扩展方式可以提高整个加密运算速度。而解密运算采用外部扩展方式,即密钥扩展完之后再进行解密运算,因为解密运算使用的初始密钥是密钥扩展生成的最后一轮子密钥。

3 仿真测试与结果

  根据前述设计思路和优化措施,系统采用Mentor公司专门为各逻辑器件制造厂商设计的第三方专用仿真工具ModelSim 6.o进行功能仿真,给出了最后的功能仿真图。

  3.1 加密运算的仿真测试

  一次完整的加密操作,需要12个时钟周期。其中,10个周期用于10个轮循环变换,1个时钟周期用于初始的密钥扩展,1个时钟周期用于密文的输出。加密运算的功能测试仿真波形如图3所示。


  从图3给出的加密运算功能仿真结果可以看出,加密运算与密钥扩展过程是并行进行。当“rst”变为低电平,“ld”变为高电平时,明文3243f6a8885a308d313198a2e0370734与密钥2b7el5l628aed2a6abf7158809cf4f3c分别同时加载到加解密运算模块与密钥扩展模块中;在下一个时钟周期,密钥扩展模块生成1轮子密钥,等待加密轮变换中的密钥加操作。当完成1次加密过程后,“done”信号变为高电平,同时输出密文3925841d02dc09fbdc118597196a0632。从图3中同时也可以看出,密钥扩展模块总是提前一个时钟周期生成下一轮的子密钥,这样可以保证密钥扩展与加密运算同时进行而不会发生错乱,并且还可提高加密速度,节约资源占用和减少面积。使用DC进行综合和优化后,加密运算模块面积不超过20 000个等效门,其中组合逻辑面积为14 264门,非组合逻辑面积为3 878门。

  3.2 解密运算的仿真测试

  在解密过程中,完成一次解密操作同样需要12时钟周期。其中,10个周期用于10个轮循环变换,1个时钟周期用于初始密钥的加载,1个时钟周期用于密文的输出。在解密过程中,本文采用在解密之前所生成的10轮子密钥,因为解密初始需要的子密钥是密钥扩展得到的最后一轮子密钥,而最后一轮需要的子密钥是密钥扩展的初始密钥。如图4所示。


  解密过程与密钥扩展过程不是同步的,当“kld”为高电平时,从第1个时钟周期开始,便将初始密钥2b7e151628aed2a6abf7158809cf4f-3c输入到密钥扩展模块中,之后经过10个时钟周期生成10轮子密钥,并存储到寄存器中。当“ld”为高电平时,密文3925841d02dc09fbdcll-8597196a0632开始加载到解密模块中,经过10个时钟周期将解密的密文输出,同时“done”信号变为高电平,表示解密过程结束,并输出明文3243f6a8885a308d313198a2e0370734。

  对比图3与图4仿真测试结果可知,加解密运算的功能正确,即解密运算能够正确地解出加密运算的密文。解密运算模块使用DC进行综合和优化后面积不超过25 000个等效门。其中组合逻辑面积为10 495门,非组合逻辑面积为14 142门。由于密钥扩展与解密过程不是同步进行,占用了寄存器存储解密过程所需的10轮子密钥,所以非组合逻辑面积比加密运算模块大。但需要指出,由于加/解密运算模块部分电路采用复用的方法实现,所以整个加/解密运算模块的实际总面积比没有复用时减小。

4 结语

  根据设计思路和优化措施,本文使用Verilog硬件描述语言实现AES密码算法,并在ModelSim 6.O工具下进行仿真,证明本文设计的正确性。为了更进一步做比较,证明本文设计思路的合理性和优化措施的有效性,同样采取未优化的设计方案实现了该算法,通过在Dc中进行综合、布线,两相比较,优化后的设计比优化前节省了22%的逻辑单元,处理速度提高了13%。

关键字:AES  Verilog  SubBytes 引用地址:基于Verilog硬件描述语言的AES密码算法实现

上一篇:LTE标准下Turbo码编译码器的集成设计
下一篇:光纤光栅传感器的研究与应用

推荐阅读最新更新时间:2024-03-16 10:55

基于Verilog HDL数字电位器ADN2850的串口控制
摘要:数字电位器由于可调精度高,更稳定,定位更准确,操作更方便,数据可长期保存和随时刷新等优点,在某些场合具有模拟电位器不可比拟的优势。论述对数字电位器ADN2850的一种方便的控制方法,通过计算机上的串口直接对ADN2850进行写入和控制。该方法简洁、高效,明显提高了调试效率。给出用Verilog HDL实现该方法的关键程序,该程序已经通过前仿真和板级调试,达到了预期的效果。 关键词:数字电位器;SPI;ADN2850串口;Verilog HDL 0 引 言 数字电位器是利用微电子技术制成的集成电路,它是依靠电阻阵列和多路模拟开关的组合完成阻值的变化。它没有可动的滑臂,而通过按钮输入信号,或是通过数字输入信号改变数字电位器
[工业控制]
基于<font color='red'>Verilog</font> HDL数字电位器ADN2850的串口控制
Atmel提供汽车密匙应用的AES-128 AVR微控制器
  微控制器及触摸解决方案的领导厂商爱特梅尔公司(Atmel Corporation)宣布提供带有AES-128防盗器协议堆栈的全新超低功率AVR微控制器(MCU)产品ATA5790N。该器件在单一5mm x 7mm 封装中集成有低频(LF)防盗器(immobilizer)功能和一个3D LF接收器。爱特梅尔 ATA5790N配合ATA5830射频(RF)发送器使用,可用于大批量单向和双向的汽车无源门禁和无源启动系统密匙。   AVR微控制器具有16kB闪存和2kB EEPROM。在16kB闪存中,14kB容量用于应用软件,2kB容量则用于防盗器功能。控制器核心周围配有专用硬件加速器,允许以软件实现任何防盗器协议,而不会影响典
[汽车电子]
基于SATAII协议的CRC32并行算法的研究
    随着通信和存储技术的发展,数据传输速率在急剧提高。然而由于通道传输特性不理想及可能受到干扰或噪声的影响,数据传输过程中难免会发生错误。如何保证可靠性是正确设计一个通信系统或数据存储系统的关键问题所在。     信道编码是提高可靠性的必要手段,实现检错功能的差错控制方法很多,包括奇偶校验、重复码校验、校验和检测、行列冗余码校验、恒比码校验、CRC校验等。其中CRC循环冗余校验是一种高效率的差错控制方案,其特点是编码和解码的方法简单、检错纠错能力强,因而应用于许多领域尤其是串行通信中以实现差错控制。     CRC循环校验算法占用的系统资源少,其实现方法分为软件实现和硬件实现。文中在研究CRC32算法的基础上,结合SATAⅡ协
[嵌入式]
基于Verilog HDL的I2C总线分析器
  1 引言   在医疗保健、临床医学和医疗救护中,血氧、心电、血压、呼吸、脑电波等生理信号都是非常重要的指标。针对临床应用,已经报道了将血氧、血压等检测应用于咽喉、食管等体内循环 ,提高了准确性和及时性 ,这种方法正处在研究阶段,I 2C总线分析仪可以扩展医疗监测仪实现包括体外循环的多种方法同时检测和比较。现在医疗仪器短缺,一台带 I 2C扩展接口的监测仪可实现多人同时使用,资源得到有效利用。可见,实时、准确记录各项人体基本体征参数,同时具有便携式特点的医疗监测仪对健康监护、检测技术和医学研究具有重大意义。如何扩展医疗检测仪的功能成为热点问题。   目前扩展检测仪接口的方法很多,多通道是最常用的方法,具有数据通道相对独立
[嵌入式]
Verilog HDL设计自动数据采集系统
随着数字时代的到来,数字技术的应用已经渗透到了人类生活的各个方面。 数字系统发展在很大程度上得益于器件和集成技术的发展,著名的摩尔定律(Moore's Law)的预言也在集成电路的发展过程中被印证了,数字系统的设计理念和设计方法在这过程中发生了深刻的变化。从电子CAD、电子CAE到电子设计自动化(EDA),随着设计复杂程度的不断增加,设计的自动化程度越来越高。目前,EDA技术作为电子设计的通用平台,逐渐向支持系统级的设计发展;数字系统的设计也从图形设计方法向硬件描述语言设计方法发展。可编程器件在数字系统设计领域得到广泛应用,不仅缩短了系统开发周期,而且利用器件的现场可编程特性,可根据应用的要求对器件进行动态配置或编程,简单易
[嵌入式]
SystemC 和SystemVerilog的比较
就 SystemC 和 SystemVerilog 这两种语言而言, SystemC 是C++在硬件支持方面的扩展,而 SystemVerilog 则继承了 Verilog,并对 Verilog 在面向对象和验证能力方面进行了扩展。这两种语言均支持诸如信号、事件、接口和面向对象的概念,但每一种语言又均拥有自己明确的应用重点: (1) SystemC 特别适合建模体系结构,开发事务处理级(TL)模型和在验证中描述软件的行为。对于具有很强C++实力的团队和有基于C/C++ IP 集成要求(如处理器仿真器),以及为早期软件开发设计的虚拟原型来说, SystemC 特别适合。 (2) SystemVerilog 是进行RTL设计的最佳
[模拟电子]
支持AES加密的LIN协议Bootloader参考设计
面对日益严峻的安全挑战,为了确保数据在传输和存储过程中的安全性,汽车生产厂商以及模块供应商需要能够将应用程序加密和解密从而提升传输过程中的安全性。本文着重讨论一种将SREC文件进行加密和解密并且能过通过LIN 总线 下载到目标ECU的方案,该方案同时支持从应用程序进行跳转的握手协议的定制。 现如今,汽车上集成了越来越多的 电子 控制单元(ECU),一辆高端轿车上可能就集成有多达300个电子控制单元,它们分别完成空调、车灯以及引擎等模块的控制。 这些电子控制单元通过以太网、CAN或者LIN等总线进行连接,汽车生产厂商在研发、生产以及售后维护等阶段都需要将新的应用程序下载到ECU中,相比通过调试端口进行下载,CAN、LIN等总线提供了
[嵌入式]
Verilog HDL实现I2C总线功能
摘要:简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程序,以及I2C总线主从模式下的仿真时序图。 关键词:I2C总线 FPGA Verilog HDL 时序 开发FPGA时,利用EDA工具设计芯片实现系统功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。在软件设计过程中,越来越强调模块化设计。I2C总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。把I2C总线设计成相应的模块,有利于相关FPCA的开发。 目前有一些介绍相关开发的资料,但都是利用VHDL语言或AHDL语言实现的。本文给出利用Veri
[半导体设计/制造]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新安防电子文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved