当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]利用FPGA来实现RC6算法的设计与研究

引 言

  RC6是作为AES(Advanced Encryption Standard)的候选算法提交给NIST(美国国家标准局)的一种新的分组密码。它是在RC5的基础上设计的,以更好地符合AES的要求,且提高了安全性,增强了性能。根据AES的要求,一个分组密码必须处理128位输入/输出数据。尽管RC5是一个非常快的分组密码,但它处理128位分组块时用了2个64位工作寄存器;而AES目前在讲究效率和简洁方面不支持64位操作,于是RC6修正这个错误,使用4个32位寄存器而不是2个64位寄存器,以更好地实现加解密。利用FPGA来实现RC6算法,可以提高运算速度。芯片设计为RC6算法处理器,辅助计算机处理器完成加解密操作,可以方便地实现对加解密的分析和研究。因此,此芯片可以作为协处理器来看待。

  1 RC6算法

  1.1 RC6算法概述

  RC6秉承了RC5设计简单、广泛使用数据相关的循环移位思想,同时增强了抵抗攻击的能力,改进了RC5中循环移位的位数不依赖于寄存器中所有位的不足。RC6新的特色是输入的明文由原先2个区块扩展为4个,另外在运算方面则是使用了整数乘法,而整数乘法的使用则在每一个运算回合中增加了扩散(diffusion)的行为,并且使得即使很少的回合数也有很高的安全性。同时,RC6中所用的操作可以在大部分处理器上高效率地实现,提高了加密速度。RC6是一种安全、架构完整而且简单的区块加密法。它提供了较好的测试结果和参数方面相当大的弹性。RC6可以抵抗所有已知的攻击,能够提供AES所要求的安全性,可以说是近几年来相当优秀的一种加密法。

  RC6不再使用2个64位工作寄存器,而是用4个32位寄存器。这就使得在每次循环中要进行2次循环移位操作,让更多的数据位来决定循环次数。RC6把明文分别存在4个区块A、B、C、D,刚开始分别包含明文的初始值,加密运算后则为4个密文的输出值。

  1.2 RC6的工作原理

  RC6是参数变量的分组算法,实际上是由3个参数确定的一个加密算法族。一个特定的RC6可以表示为RC6一w/r/b,3个参数w、r和b分别为字长、循环次数和密钥长度。AES中,w=32,r=20。本设计中,密钥长度b为128位(16字节)。RC6用4个w位的寄存器A、B、C、D来存放输入的明文和输出的密文。明文和密文的第一个字节存放在A的最低字节,经过加解密后,得到的明文和密文的最后一个字节存放在D的最高字节。

  1.2.1 RC6一w/r/b基本运算

  基本运算共有如下6种:①模2w加算运算,表示为“+”;②模2w减法运算,表示为“一”;③逐位异或运算,表示为“⊕”;④循环左移,字a循环左移b位表示为“a<<<b”;⑤循环右移,字a循环右移b位表示为“a>>>b”;⑥模2w乘法,表示为“×”。

 1.2.2 RC6一w/r/b加密算法

  输入:明文存放在4个w位输入寄存器A、B、C、D

 [!--empirenews.page--]


 

 

  式中:e一2.782 818 284 59…(自然对数);φ=1.618 033 988 749…(黄金分割)

  当w分别为16、32、64时,常数Pw、Qw分别如表1所列。在本设计中,w=16,输入为128位的主密钥,得到的是44个32位子密钥。

 

 

 

  2 RC6加解密算法协处理器设计

  2.1 RC6协处理器的顶层结构设计

  RC6协处理器包含以下3个模块:加解密模块,加解密函数模块和ROM模块。顶层结构如图1所示。

  加解密模块:包括输入和输出、加/解密选择、状态机,以及函数调用声明和ROM调用取址。用于输入128位明文或密文,并且利用一个状态机定义程序顺序执行和保证循环控制,实现对ROM的44个子密钥读取,以及将数据输入函数中进行处理。由于输入ROM的地址是在一个时钟控制下,子密钥数据的输出有一定的延时,所以利用一个控制变量cnt实现地址提前一个时钟左右输入ROM,ROM接收到后输出子密钥,使在进行数据加解密处理时,已经有准备好的子密钥调用。

  加解密函数模块:利用work用户自定义函数库,定义算法中用到的函数。其中包括5个函数,分别是:RFunct、afunct、cfunct、lshift、rshift。顶层文件循环调用此函数21次,进行加解密运算。

  ROM模块:先在QuartusII里面将预定义的子密钥输入rc6keyrom.mif文件中,调用QuartusII的MegaWizardPlug—In Manager,自动生成ROM,供顶层文件调用。需要提前利用QuartusII建立一个.mif文件,将子密钥的数据输入。

  2.2 RC6协处理器的顶层原理图

  如图2所示,基于FPGA的RC6算法协处理器分3个模块:顶层模块、RC6加解密函数模块和ROM模块。共有260个I/0口,包括131输入端口和129个输出端口。

 

 2.3 各模块的功能及实现

  2.3.1 ROM模块

  图3为QuartusII自动生成的ROM模块。ROM取址需要由加解密模块提供地址输入,然后输出子密钥。输入地址为address[4..0],输出为q[63..0]两个子密钥一起输出到主程序中进行。

 [!--empirenews.page--]

 

 

  ROM模块在输入地址和得到子密钥数据之间,有一定的延时,从地址“00”输入,开始读取到输出子密钥总时间约一个时钟周期左右。所以在主函数调用ROM时,需提前1~2个时钟输入地址。

 

 

 

  由以上5个函数和加解密控制信号,可以实现此算法的一次计算。主函数将需要进行计算的128位数据da—tain、2个子密钥keyl和key2,以及加解密控制信号输入到RFunct函数里;函数rfunct将其分配到a、b、c、d四个寄存器,计算b=(b+b+1)×b和d=(d+d+1)×d;然后调用左移函数计算templ=b<<<5和temp2=d<<<5,调用afunct和cfunct计算a和c,再重组a、b、c、d为dataout,结束运算后输出dataout。

  2.3.3 加解密控制模块

  如图4所示,RC6加解密端口定义为:

  输入端口

  •   reset:复位信号,高电平有效。
  •   clk:工作时钟。
  •   zset:加解密选择信号,高电平为加密操作,反之则为解密操作。
  •   keyin[63..O]:从ROM输入的子密钥输入。
  •   datain[127..O]:待加解密数据的输入端。

  输出端口

  •   flag:加解密结束信号,高电平有效。
  •   keyad出[4..O]:向ROM输入5位的地址信号。
  •   dataout[127..O]:RC6加解密模块输出的128位加解密后的数据。

  模块功能

  从ROM模块中,接收包含2个子密钥的数据keyin,并在前32位和后32位分别为一个32位子密钥,根据zset信号对密钥和数据进行加解密操作。

  在主程序中利用一个状态机来实现加解密运算:第1个状态进行数据的初步处理,将128位数据分成4个32位数据保存在a、b、c、d这4个寄存器中;第2个状态进行数据的初步运算,将结果保存在128位寄存器data中;第3个状态和第4个状态控制循环运算与ROM进行20次交互,一边接收ROM子密钥数据,一边对data进行运算,最后一个状态,接收最后2个密钥,进行最后的加解密运算,得到新的a、b、c、d,重新组合成加/解密后的数据,将其输出。

  2.3.4 加解密顶层模块

  RC6加解密算法的顶层模块包括了加解密控制模块和ROM模块。输入/输出信号描述如下:

  输入信号

  •   reset:复位信号,高电平有效。
  •   clk:工作时钟。
  •   zset:加解密选择信号,高电平加密操作,反之则为解密操作。
  •   datain[l27..0]:待加/解密数据的输入端。

  输出信号

  •   flag:加解密结束信号,高电平有效。
  •   dataout[l27..0]:128位加解密后得到的数据。

  此加解密模块需要260个I/0端口,如果加入串口通信,可将128位的输入信号和输出信号分别利用l位的输入端口和1位的输出端口来实现数据传输,非常方便。

  2.4 仿真结果分析

  图5为RC6加解密算法的功能仿真图,输入和输出是128位。当输入明文为128位全零数据时,得到的加密结果是36A5C38F78F781564EDF29C11EA44898,解密结果是全零。另外,还测试了其他的一些数据,根据官方公布的标准,此加解密模块功能正确。

  在进行仿真时,RC6加解密模块工作时钟周期为100ns,频率为10 MHz。从reset低电平开始后的第一个时钟上升沿(0.45μs),至加解密运算结束并输出结束信号flag(上升沿,8.958 376μs),总共耗时约为8.5μs。

 

 

 

图5  RC6加解密算法功能仿真图

  结 语

  本文基于FPGA技术,实现了RC6算法。整个设计包括加解密函数模块、加解密控制模块、ROM模块、UART模块、输入/输出控制模块等,通过软件的仿真,并将程序下载到FPGA芯片进行硬件调试,验证了设计的正确性和有效性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭