3-DES算法的FPGA高速实现
发布时间:2008/5/27 0:00:00 访问次数:431
来源:单片机及嵌入式系统应用 作者:何 斌 何大可
摘要:介绍3-des算法的概要;以xilinx公司spartanii结构的xc2s100为例,阐述用fpga高速实现3-des算法的设计要点及关键部分的设计。
关键词:3-des fpga 高速实现
引 言
从技术角度讲,网络安全除了依赖安全的网络通信协议及应用协议外,更多地取决于网络设备如交换机、路由器等所提供的加/解密功能。目前,基于des算法的加/解密硬件仍在广泛应用于国内卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中。
然而,随着密码分析技术的不断发展,超期服役的des算法已被攻破,随即美国商业部提出采用以rijndael算法的aes作为新一代的加密算法。在不对原有应用系统作大的改动的情况下,3-des算法有了很大的生存空间,被大量用来替换已不安全的des算法。所以对3-des算法的高速实现,仍具有一定的实际应用意义。
1 3-des算法介绍
1999年,nist将3-des指定为过渡的加密标准。3-des是des的一个更安全的变形(关于des算法的详细资料,可见参考文献[1]、[2])。des算法运算的框图如图1。其中s盒是3-des(des)算法的心脏,靠它实现非线性变换。
dk(x)表示用des算法对64位的位串的加密和解密,密钥为k;则64位的密文c是通过执行下面的运算得到的:
其中k1、k2、k3是56位的des密钥。
从密文c导出明文x的3-des的解密过程是加密过程的反过程,其描述如下:
其结构如图2。
为了获得更高的安全性,三个密钥应该是互不相同的。这样,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。对安全性需要不那么高的数据,k1可以等于k3。在这种情况下,密钥的有效长度为112位。
在通常使用的所有64位的分组密码中,3-des是最安全的;但是,如果用软件来实现,它也是这些分组密码中最慢的。通过硬件设计,3-des的性能胜过大多数其它用软件实现的分组密码。
2 fpga实现设计
本设计采用实验室现有试验开发板上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。
2.3 密钥生成器设计
密钥生成器的设计是独立于des轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图4。
其中,3级流水线由移位寄存器(sr)和1个触发器(ff)构成,在sr中完成两级流水线,在ff中实现第三级。xc2s100的lut中的每个查找表lut可以用来生成1~16个移位寄存器,而且在一个单独
来源:单片机及嵌入式系统应用 作者:何 斌 何大可
摘要:介绍3-des算法的概要;以xilinx公司spartanii结构的xc2s100为例,阐述用fpga高速实现3-des算法的设计要点及关键部分的设计。
关键词:3-des fpga 高速实现
引 言
从技术角度讲,网络安全除了依赖安全的网络通信协议及应用协议外,更多地取决于网络设备如交换机、路由器等所提供的加/解密功能。目前,基于des算法的加/解密硬件仍在广泛应用于国内卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中。
然而,随着密码分析技术的不断发展,超期服役的des算法已被攻破,随即美国商业部提出采用以rijndael算法的aes作为新一代的加密算法。在不对原有应用系统作大的改动的情况下,3-des算法有了很大的生存空间,被大量用来替换已不安全的des算法。所以对3-des算法的高速实现,仍具有一定的实际应用意义。
1 3-des算法介绍
1999年,nist将3-des指定为过渡的加密标准。3-des是des的一个更安全的变形(关于des算法的详细资料,可见参考文献[1]、[2])。des算法运算的框图如图1。其中s盒是3-des(des)算法的心脏,靠它实现非线性变换。
dk(x)表示用des算法对64位的位串的加密和解密,密钥为k;则64位的密文c是通过执行下面的运算得到的:
其中k1、k2、k3是56位的des密钥。
从密文c导出明文x的3-des的解密过程是加密过程的反过程,其描述如下:
其结构如图2。
为了获得更高的安全性,三个密钥应该是互不相同的。这样,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。对安全性需要不那么高的数据,k1可以等于k3。在这种情况下,密钥的有效长度为112位。
在通常使用的所有64位的分组密码中,3-des是最安全的;但是,如果用软件来实现,它也是这些分组密码中最慢的。通过硬件设计,3-des的性能胜过大多数其它用软件实现的分组密码。
2 fpga实现设计
本设计采用实验室现有试验开发板上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。
2.3 密钥生成器设计
密钥生成器的设计是独立于des轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图4。
其中,3级流水线由移位寄存器(sr)和1个触发器(ff)构成,在sr中完成两级流水线,在ff中实现第三级。xc2s100的lut中的每个查找表lut可以用来生成1~16个移位寄存器,而且在一个单独
热门点击
- OrCAD/PSpice9直流扫描分析的应用
- OrCAD/PSpice9直流扫描分析的应用
- protel99se和DXP的使用感想
- CCS噪声模型:用于串扰噪声分析的高精确度建
- ORCAD/PSPICE
- 硬件描述语言HDL的现状与发展
- 利用Liberty CCS建模技术实现更高精
- OPC工具挺进DFM
- SystemWeaver 实现复杂SOC的片
- RGB信号走表层还是地层?
推荐技术资料
- 泰克新发布的DSA830
- 泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]