我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 708|回复: 0

3-DES算法的FPGA高速实现 - FPGA/CPLD - 电子工程师俱乐部

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:21:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>引 言</strong>

从技术角度讲,网络安全除了依赖安全的网络通信协议及应用协议外,更多地取决于网络设备如交换机、路由器等所提供的加/解密功能。目前,基于DES算法的加/解密硬件仍在广泛应用于国内卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中。

然而,随着密码分析技术的不断发展,超期服役的DES算法已被攻破,随即美国商业部提出采用以Rijndael算法的AES作为新一代的加密算法。在不对原有应用系统作大的改动的情况下,3-DES算法有了很大的生存空间,被大量用来替换已不安全的DES算法。所以对3-DES算法的高速实现,仍具有一定的实际应用意义。

<strong>1 3-DES算法介绍</strong>

1999年,NIST将3-DES指定为过渡的加密标准。3-DES是DES的一个更安全的变形(关于DES算法的详细资料,可见参考文献[1]、[2])。DES算法运算的框图如图1。其中S盒是3-DES(DES)算法的心脏,靠它实现非线性变换。


<ignore_js_op>





2010-3-9 23:13:03 上传
<strong>下载附件</strong> (22.44 KB)




</ignore_js_op>


3-DES算法可以描述如下:设ek(x)和dk(x)表示用DES算法对64位的位串的加密和解密,密钥为K;则64位的密文c是通过执行下面的运算得到的:


<ignore_js_op>





2010-3-9 23:13:03 上传
<strong>下载附件</strong> (3.88 KB)




</ignore_js_op>


其中K1、K2、K3是56位的DES密钥。从密文c导出明文x的3-DES的解密过程是加密过程的反过程,其描述如下:


<ignore_js_op>





2010-3-9 23:13:04 上传
<strong>下载附件</strong> (3.05 KB)




</ignore_js_op>


其结构如图2。


<ignore_js_op>





2010-3-9 23:13:04 上传
<strong>下载附件</strong> (18.24 KB)




</ignore_js_op>


为了获得更高的安全性,三个密钥应该是互不相同的。这样,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。对安全性需要不那么高的数据,K1可以等于K3。在这种情况下,密钥的有效长度为112位。

在通常使用的所有64位的分组密码中,3-DES是最安全的;但是,如果用软件来实现,它也是这些分组密码中最慢的。通过硬件设计,3-DES的性能胜过大多数其它用软件实现的分组密码。

<strong>2 FPGA实现设计</strong>

本设计采用实验室现有试验开发板上Xilinx公司SPARTANII结构的XC2S100作为算法载体,在其中实现控制器和三个DES模块以及密钥的生成,通过控制器实现加、解密功能。从上边的介绍可以看到,3-DES(DES)算法没有大量的复杂数学计算(如乘、带进位的加、模等),在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算。这些特点为采用FPGA进行高速设计提供了契机。

2.1 DES模块的设计结构

每个DES模块的实现是用一个轮函数实现的16份拷贝通过深度细化的流水线处理来完成的,以获得最高的性能。

采用循环全部打开和流水线结构来设计。循环全部打开后,实现全部16轮结构并串在一起,只要一个时钟周期就可以完成一个数据块的加密或解密;通过多占很大的空间来换得速度上的大幅度提高,然后再在每轮的中间加上寄存器来实现流水线。在第一时钟周期,第一块数据经过第一轮处理存入寄存器1中。在下一个时钟周期,寄存器1中的结果经过第二轮处理存入寄存器2中;同时,第二块数据可以经过第一轮处理存入寄存器1。这样,多块数据实现了同时处理。另外,在设计中通过使用16个寄存器,使得加/解密速度可以提高近16倍。在DES模块的每一轮中设计3级流水线,尽管这样增加了48个周期的时延,但却进一步提高了整体处理的速度性能;同时,将数据加/解密部分和密钥生成部分分开单独设计,可以减少相邻流水线级间的逻辑层数目。

2.2 S盒设计

通过时间分析发现,S盒在整个设计中占了很大的比重。S盒性能的提高对于整个设计性能会有很大的改善,因此S盒是整个设计优化的重点。

DES的8个S盒分别是一个满足特殊性能的6~4位的变换。在VHDL或Verilog语言中,可以直接用CASE语句来实现。这是最简单的实现方法,但是HDL语言都属于高级语言,它们强烈依赖于编译器的优化能力,往往对设计者来说,涉及得越少、编程越简单,代码效率越不高,这对于高速实现来说是不可取的。在实现过程中通过分析工具也发现,依赖于编译器的实现不但复杂,而且占用大量的空间。这样,S盒成了速度的瓶颈,为此,采用ROM来实现。 XC2S100的LUT可以配置为16×1位的ROM,把输入的6位作为地址,对应的地址空间里存放的就是输出的4位,从而实现了6~4位的查找表 LUT,所需时间只是FPGA中CLB的传输时间加上传输线上的延时,如图3。


<ignore_js_op>





2010-3-9 23:13:04 上传
<strong>下载附件</strong> (16.54 KB)




</ignore_js_op>


2.3 密钥生成器设计

密钥生成器的设计是独立于DES轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图4。


<ignore_js_op>





2010-3-9 23:13:03 上传
<strong>下载附件</strong> (22.83 KB)




</ignore_js_op>


其中,3级流水线由移位寄存器(SR)和1个触发器(FF)构成,在SR中完成两级流水线,在FF中实现第三级。XC2S100的LUT中的每个查找表LUT可以用来生成1~16个移位寄存器,而且在一个单独的可配置逻辑功能块CLB中连接8个移位寄存器来构成一个128位的移位寄存器。

2.4 3-DES的实现

将上述所设计的三份DES模块在FPGA中组合,实现如图5所示的完整连接。整个时延约为单个DES模块的三倍。

<strong>结 语</strong>

我们在Xilinx的开发平台Foundation 4.2i下用Verilog HDL完成设计,并进行了综合和仿真;成功下载到我们实验室的试验板上的XC2S100中,用VC++ 6.0编写了测试程序;在Windows98下运行,均 能正确实现加/解密功能。在试验板上晶振为25MHz的情况下,大致评测出加密速度为520Mb/s。

<strong>参考文献</strong>

1. 王育民.何大可 保密学—基础及应用 1990
2. National Institute of Standard and Technology Data Encryption Standard (DES) 1999
3. 李广军.孟宪元 可编程ASIc设计及应用 2000
4. 夏宇闻 复杂数字电路与系统的Verilog HDL设计技术 1999

作 者:西南交通大学 何斌 何大可
来 源:单片机与嵌入式系统应用 2003(8)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表