基于verilogHDL的DES加密算法设计及仿真验证.docx

上传人:b****6 文档编号:6625306 上传时间:2023-01-08 格式:DOCX 页数:20 大小:513.98KB
下载 相关 举报
基于verilogHDL的DES加密算法设计及仿真验证.docx_第1页
第1页 / 共20页
基于verilogHDL的DES加密算法设计及仿真验证.docx_第2页
第2页 / 共20页
基于verilogHDL的DES加密算法设计及仿真验证.docx_第3页
第3页 / 共20页
基于verilogHDL的DES加密算法设计及仿真验证.docx_第4页
第4页 / 共20页
基于verilogHDL的DES加密算法设计及仿真验证.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于verilogHDL的DES加密算法设计及仿真验证.docx

《基于verilogHDL的DES加密算法设计及仿真验证.docx》由会员分享,可在线阅读,更多相关《基于verilogHDL的DES加密算法设计及仿真验证.docx(20页珍藏版)》请在冰豆网上搜索。

基于verilogHDL的DES加密算法设计及仿真验证.docx

基于verilogHDL的DES加密算法设计及仿真验证

摘要

现在的时代是一个信息的时代,信息与我们每一个人都密切相关,信息的安全性关乎每一个人的切身利益,从而人们要求信息在传输过程中要绝对的安全。

信息的安全和保密性对每个人都至关重要,从而出现数据加密技术来解决这一问题,因而研发出DES加密算法,它的全称为DataEncryptionStandard,也称为数据加密标准,加密和解密使用相同的密码,是对称密码体制。

DES至今还在我们的生活中广泛应用,因此值得研究。

本论文通过VerilogHDL语言编码来实现DES加密算法的仿真与验证,介绍DES加密技术研究背景及意义,DES加密算法工作原理,DES加密算法模块设计与仿真,以及使用Modesim软件进行仿真和XILINXISE软件进行模块综合。

该论文采用自顶向下的设计思想,将DES加密算法分为六个模块:

密钥产生模块、一次轮运算模块、控制模块、初始置换模块、逆初始置换模块和顶层调用模块。

通过Modesim软件对每个模块的仿真和预期设计的一样,本设计能够正确的实现加密解密功能。

关键字:

DES;Modelsim;XILINXISE;VerilogHDL;加密解密

 

Abstract

Presenteraisaneraofinformation,informationandeachofusiscloselyrelatedtothesecurityofinformationrelatingtothevitalinterestsofeachindividual,,soitrequiresinformationtobeabsolutesecureduringtransmission.DataEncryptiontechnologyisanimportantweapontosolveinformationsecurityandplaysanincreasinglyimportantroleinsociallife.DEScalledtheDataEncryptionStandardisasymmetriccryptosystem.Currently,DESencryptionanddecryptionalgorithmsarestillwidelyusedinsatellitecommunicationsset-topboxesvideotransmissionandotherlargeamountsofdatatransmissionservice.

Inthispaper,VerilogHDLlanguagecodingrealize simulationandverificationofDESencryptionalgorithm.ThispaperdescribessequentiallybackgroundofDESencryptiontechnology,principleofDESencryptionalgorithm,designofDESencryptionanddecryptionmoduleanduses Modelsimsoftwaretosimulation andXILINXISEsoftwaretointegrated.designofthepaperusestop-downdesignmethodwhichisdividedintosixmodules:

controlModule,keygenerationmodule,Roundoperationmodule,Initialpermutationmodule,reverseinitialpermutationmoduleandatop-levelcallmodule.ByModesimassoftwaredesignsimulationandexpectationsofeachmodule,thedesigncanbeimplementedcorrectlyencryptionanddecryptionfunctions.

Keyword:

DES;Modelsim;VerilogHDL;Encryptionanddecryption

 

引言

数据加密标准(DES,Data Encryption Standard)也称为数据加密算法(DEA,Data Encryption Algrithm)(ANSI)和DEA-1(ISO),是近20年来使用的加密算法。

后来,人们发现DES在强大攻击下太脆弱,因此使DES的应用有所下降。

但是,任何一本安全书籍都不得不提到DES,因为它曾经是加密算法的标志。

介绍DES的细节还有两个作用:

第一,介绍DES;第二,更重要的是分析和理解实际加密算法。

利用这个方法,我们还要从概念上介绍其他加密算法,但不准备深入介绍,因为通过DES介绍已经可以了解计算机加密算法的工作原理。

DES通常使用ECB,CBC,或CFB模式。

 

DES产生可以追溯到1972年,美国的国家标准局(NBS,即现在的国家标准与技术学会,NIST)启动了一个项目,旨在保护计算机和计算机通信中的数据。

它们想开发一个加密算法。

两年之后,NBS发现IBM公司的Lucifer相当理想,没有必要从开头开发一个新的加密算法。

经过几次讨论,NBS于1975年发布了这个加密算法的细节。

到1976年底,美国联邦政府决定采用这个算法,并将其更名为数据加密标准。

不久,其他组织也认可和采用DES作为加密算法。

 

DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。

其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

 

DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。

虽然56位密钥的DES算法已经风光不在,而且常有用DES加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,仍然发挥着余热

第1章绪论

1.1DES加密算法背景

随着互联网在全球的普及,人们更多的使用计算机网络传递敏感信息,如网上电子支付,网上银行业务,军事和商业敏感信息的传递等。

如何确保信息可以正确认证和保密,使得数据在传输过程中不被窃密,是密码学研究的主要内容。

在多数情况下,数据加密是信息不被非法篡改和截取的仅有方法,现在已经有几百种的数据加密算法。

DES加密算法是IBM公司研发的,它是对称密码体制加密算法,即加解密的密钥相同。

明文按每64位为一组进行分组,密钥也为64位,实际上用到的密钥为56为,其中8位(64位中每8位都有一个奇偶校验位)是奇偶校验位。

DES加密算法的原理现在已经公开,任何人都可以了解到,截取者要得到明文,只需要知道密钥即可,因此密钥的安全性对DES加密算法至关重要,可以说完全依赖于密钥。

密钥输入64位,它可以组成非常多种可能性,密钥在这么多的密钥数中产生,如果在不知道密钥的情况下进行破解的话,即变利用每微秒可以进行一次加密的计算机来破译密码也需要好几千年,因此DES加密技术具有很高的安全性和保密性。

然而计算机技术的飞速进步,DES加密算法变的越加不安全,越加的容易被破解。

1997年6月28日,一个研究小组采用穷搜索方法破译DES加密算法,经过一个季度破解成功。

该次破译的成功意义是非常重大的。

其一是仅仅使用数万台个人电脑历时一个季度就能将DES加密算法加密的数据破译成功,严重的说明DES加密算法不够安全。

其二是促使研发更为保密和安全的加密算法,从而促进密码学的发展。

DES算法已可以被攻克和密码分析技术的快速发展的情况下,美国商业部提出以AES为下一代的加密算法。

DES与AES加密算法思想一定程度上相似。

直到今天,DES加密算法仍然被运用,作为分组密码体制中曽经的典型代表,对DES的研究能然有很大的价值和借鉴意义。

1.2研究DES加密算法的意义

本论文研究DES加密算法的意义是:

(1)学习对称密码体制中经典的DES加密算法,熟悉该加密算法的工作原理。

(2)从对DES加密算法的研究可以体会到加密、解密的一般方法。

(3)引起人们对密码学的兴趣,感受密码学的奇妙之处,以达到寓教于乐的目的,从而促进密码学的进步。

第2章DES加密算法工作原理

2.1DES加密算法概述

DES加密算法是一个对称加密算法,加解密使用相同的密钥,使用异或、代换、置换、移位四种运算方法。

DES加密算法明文按每64位为一组进行分组,密钥也为64位,实际上用到的密钥为56为,其中8位((64位中每8位都有一个奇偶校验位)是奇偶校验位,密钥对DES加密算法的安全性可以说是生死攸关,因为该算法的过程已经对外公开了,任何人都可以知道。

DES加密算法中密钥的生成先是通过一个置换将输入的64位密钥变换为56位,再分成左右各28位密钥并不断的向左循环移位(加密)/右循环移位(解密),每次移位后通过另一个置换密表将56位变换为48位,该48位就是一个密钥,16轮的循环就可以产生16个密钥。

在DES算法结构中64位的明文分别通过初始置换IP,16轮运算,逆初始置换IP这三个模块可得一组与之相对应的64位密文,其中16轮运算是DES加密算法的重点和难点,16轮循环运算中的一次运算是这样的:

经过初始置换的64位分为左右各32位两部分,左半部分先不变,右半部分依次经过:

数据扩展(E盒子)、与48位密钥异或运算、数据压缩(S盒子)、P盒子、与左半部分异或运算得到的作为下一循环的左半部分,原左半部分作为下一循环的左半部分,如此循环16次,得到的64位作为逆初始置换IP的输入,如此就完成了对一组64位二进制明文的加密。

因为DES加密算法是对称加密体制,加密和解密过程的区别是加密和解密所用的密钥是对称的,即16轮运算中加密第1轮所用到的密钥和解密的第16轮的密钥相同,依次加密第2轮和解密第15轮的密钥相同……加密第16轮和解密第1轮密钥相同。

另外解密的明文是加密的密文。

图2.1对称加密算法框图

 

 

图2.2DES算法结构框图

2.2DES加密算法主要流程

2.2.1密钥置换函数PC-1

DES加密算法主要流程描述如下:

对于输入的64位密钥Key,由于奇偶校验位在每个字节第8位,不参与DES运算,故实际用到的密钥为56位。

在子密钥生成过程中64位密钥Key经过密钥函数PC-1去掉奇偶校验位并换位为56位,

表2.1密钥置换函数PC-1密表

(密钥函数中PC-1密表中的数字57的意思是:

输入key[57]换到输出的第1位,同理,输入的key[49]位换到输出的第2位,……,输入key[4]换到输出的第56位。

2.2.2密钥移位

经密钥置换函数PC1产生的56位均分为28位为一组的C0、DO两部分,两个同时进行第1次循环左移(加密)/循环右移(解密),得到C1,D1。

然后将C1、D1进行第2次循环左移(加密)/循环右移(解密),得到C2,D2,……将C15、D15进行第16循环左移(加密)/循环右移(解密),得到C16,D16加解密的16轮中每次移动的位数如下:

表2.2加密循环左移位数

表2.3解密循环右移位数

2.2.3密钥置换函数PC-2

在产生密钥模块的每一轮运算中将每轮得到的Ci、Di合并在一起为56位,再将56位经过密钥置换函数PC-2,得到48位密钥Ki,如此16个时钟周期将依次产生密钥k1,k2……,k16。

表2.4密钥置换函数PC-2密表

 

 

K1

Ki+1

 

K16

图2.3DES加密算法密钥产生流程图

2.2.4初始置换IP

DES加密算法中64位输入明文先要经过初始置换IP。

初始置换IP的功能是将输入的64位明文数据块重新整合,增加DES加密算法的混乱性,增强其安全性。

表2.5初始置换IP的密表

 

2.2.5数据扩展(E盒子)

产生L0、R0两部分后,DES加密算法进入到16轮运算模块中,16轮运算是完全相同的16轮循环运算,所以只需要明白第一轮运算即可。

在第一轮运算中,由初始置换IP产生的各32位L0、R0,L0先保持不变,对R0进行数据扩展(E盒子)操作,使得R0由43位变换为48,目的是使得改变换得到的结果能够与48位密钥进行异或运算。

表2.6E盒子密表

 

2.2.6数据压缩(S盒子)

将经过数据扩展得到的48位与产生的48位密钥K1进行异或运算,接下来异或运算得到的结果要经过数据压缩盒子变为32位。

S盒子是DES加密算法中至关重要的一个环节,其他的运算方法都是线性的,在整个DES加密算法中只有一个是非线性的,正式经过S盒子的非线性变换才使得明文得到了很好的混乱,从而具有较强的安全性,S盒子的运算规则是将经过数据扩展得到的48位每6位分成一组,共计8组,每一组6位二进制数对应着64中可能性,输出为4位二进制数。

即8组对应着8个密表,每个密表为64个数,每组输出4位,它们按照顺序组合在一起为32位。

这样就将48位的输入压缩为32位的输出。

8个选则函数密表为表2.7至表2.14。

表2.7S1盒密表

 

表2.8S2盒密表

表2.9S3盒密表

表2.10S4盒密表

表2.11S5盒密表

 

表2.12S6盒密表

表2.13S7盒密表

表2.14S8盒密表

 

2.2.7P盒子置换

经过S盒子的数据压缩,产生32位的一组二进制数,该32位还通过P盒子进行数据的换位,增加DES加密算法的混乱度,增强它的安全性。

表2.15P盒子置换密表

经过P盒子的变换产生一个更加混乱的32位数,此时将其与一直没有做任何变化的32位左半部分进行按位异或运算,得到的结果作为下一轮的右半32位,而右半原32为作为下一轮的左半32位,如此进行16轮加密。

2.2.8逆初始置换IP

16轮加密后得到一组64位的输出,此输出还要经过逆初始置换,进一步的增强DES加密算法的混论性。

得到的输出为64位明文和16个密钥共同运算所对应64位密文。

表2.16逆初始置换IP密表

第3章DES加密算法模块设计及仿真

3.1DES加密算法模块总体方案

DES加密算法的实现有两种方法,其一是采用状态机实现算法功能,优点是占用的资源少,缺点是速度慢,即用速度来换取面积,其二是采用17级流水线实现算法功能,此方法的优点是速度非常的快,缺点是占的资源多。

该论文是采用第二种17级流水线实现算法功能。

将DES加密算法分为六个模块:

密钥产生模块、一次轮运算模块、初始置换模块、控制模块、逆初始置换模块和顶层调用模块,调用五个次级模块来实现DES加密算法功能。

总体方案见图3.1

 

图3.1DES加密算法模块总体方案

采用17级流水线实现DES加密算法模块总体方案主要信号描述表:

表3.1DES加密算法模块总体方案信号描述

序号

信号名

位宽

功能描述

1

clk

1

50%占空比,输入数据在clk的上升沿采样,输出数据在时钟上升沿变化。

2

reset

1

复位信号,高电平有效,为电路提供异步复位信号。

3

mode

1

DES算法加密时为0时,DES算法解密时为1时。

4

key

64

每隔16个时钟周期输入一组有效值。

5

data

64

每隔16个时钟周期输入一组有效值。

6

en

1

高电平有效的使能信号。

7

count

5

复位有效时为零,等于16时,在下一个时钟周期为零。

8

outflag

1

高电平有效的标志信号。

9

datain

64

每隔16个时钟周期输入一组有效值。

10

k

48

每个时钟周期输出一组密钥

11

in

64

每个时钟周期更新一组有效值

12

cipher

64

DES加密算法一组data和key所对应的密文。

采用17级流水线实现DES加密算法模块总体方案主要信号的时序时序见图3.2。

 

图3.2总体方案主要信号的时序

由信号时序图和总体模块方案可以看出en和outflag两信号是由计数器进行控制,而en和outflag信号控制另外的模块内信号。

由信号时序图还可以看出轮运算中所需的密钥总是在该时钟的前一个时钟已经产生,产生密钥模块在该时钟上升沿产生下一轮运算所需的时钟,这样所轮运算所需密钥总是满足建立时间的要求。

经过16个时钟周期已产生16个密钥,在第17个时钟周期虽然也产生密钥但它不会参与运算,在第17个时钟周期,轮运算进行DES加密算法轮运算的最后一轮。

3.2控制模块control

控制模块作为DES加密算法实现整个功能的中枢神经。

控制电路可以采用两种方法:

一是采用移位寄存器,二是采用计数器,该论文采用计数器作为控制中心。

根据建立时间、保持时间和DES加密算法结构可以看出,在16轮运算中E盒子之后的异或运算所用到的密钥Ki总是在异或运算之前产生并且保持稳定,所以说密钥的产生至少超前异或运算一个时钟,即密文在每17个时钟周期后输出一组,用一个标志outflag信号来作为密文生成的标志,其高电平有效,在其有效时下一个时钟密文cipher输出,之后outflag变为低电平。

在控制模块输出还有轮运算模块用到的控制信号en、count。

 

图3.3控制模块的仿真波形

从时序仿真图可以看出,它和总体方案中的主要信号的时序图完全吻合,即控制模块的设计按照总体方案是完全正确的。

3.3密钥产生模块create_key

密钥产生模块包含有密钥置换函数PC-1、密钥移位、密钥置换函数PC-2这三个部分。

在这个模块中输入为64位Key先执行密钥置换函数PC-1,然后使用case嵌套语句,根据控制模块的计时输出count和加/解密模式信号mode作为判断,按照每轮循环左移(加密)/循环右移(解密)移动位数编码,然后通过密钥置换函数PC-2生成所需密钥。

该密钥产生模块每一个时钟周期产生一个密钥,即16个时钟周期可以产生加/解密所需的所有密钥。

在这16个时钟内任何的Key输入都不起作用,增强了DES加密算法的稳定性。

密钥产生模块中密钥的移位以及产生加密解密所需密钥用到case语句的嵌套来实现。

 

 

图3.4密钥产生模块的仿真波形

从该仿真波形看出:

在reset信号有效时,密钥k为0,64位key输入,从reset信号无效后的第一个时钟上升沿开始,密钥k每个时钟周期都在产生下一个密钥,在count为16时,下一个时钟周期内虽然产生密钥,但该密钥不参与运算,不影响DES加密算法的准确性,因为在always块中用的是阻塞赋值。

3.4轮运算模块lun

轮运算模块包括数据扩展(E盒子)、两次异或运算、数据压缩(S盒子)、P盒子置换、缓冲器。

由建立时间、保持时间和DES加密算法结构可以看出在16轮运算中E盒子之后的异或运算所用到的密钥Ki总是在异或运算之前产生并且保持稳定,所以说密钥的产生至少超前异或运算一个时钟,即轮运算所用到的密钥是前一个时钟密钥产生模块所产生的,因此轮运算总是延迟与密钥产生模块一个时钟周期,为了使得轮运算在本质为并行的VerilogHDL语言中能够正确运行,这一个时钟的延迟用一个带使能信号en的缓冲器来实现,en为高电平时有效,初始置换IP所产生的64位数据此时输入。

缓冲器只在一个时钟周期内有效,之后无效,即en信号为零。

en信号为零时才执行整个16轮运算。

缓冲器和轮运算之间的关系是:

一个有效,另一个必然无效。

在轮运算中数据扩展(E盒子)和P盒子置换按照密表来实现,数据压缩(S盒子)采用8个case语句来实现,缓冲器和轮运算分别采用en和!

en作为判断,轮运算中每一轮的衔接采用三目运算符来实现。

在这16个时钟内任何的datain输入都不起作用,增强了DES加密算法的稳定性。

轮运算模块中缓冲器代码:

always@(posedgeclkorposedgereset)

begin

if(reset)

begin

buff<=64'd0;

end

else

if(en)

begin

buff<=datain;

end

end

在第1至15轮中每轮产生的右半部分32位是下一轮的右半部分32位,原右半部分32位是下一轮的左半部分32位,而在第16轮中产生的右半部分32位置换到输出的左半部分,原右半部分32位还是输出的右半部分。

实现其功能使用三目运算符。

代码为:

dataout=(count==5'd16)?

{NEXT_R[1:

32],R[1:

32]}:

{R[1:

32],NEXT_R[1:

32]};

图3.5轮运算模块的仿真波形

从该仿真波形看出:

dataout信号在reset信号有效是复位,在其无效的第二个时钟上升沿后才发生了变化,在联系密钥产生模块得到轮运算总是之后密钥产生模块一个周器,与总设计方案完全一致。

3.5逆初始置换模块IP_1

逆初始置换模块只包含逆初始置换IP。

这个模块直接关系到密文的输出形式,一种是每一轮都输出一个密文,优点为电路简单,只用一个assign语句就可以完成,缺点是这些每17个密文中只有一个是对的,这对于密文的检测十分不利的,不利于DES加密算法的稳定性;另一种是用标志信号outflag作为判断,当输出的密文为正确的时候,进行选择输出,其余时间密文一直为零,这样一眼就可以看出正确的密文。

图3.6逆初始置换IP模块内部框图

图3.7逆初始置换IP模块的仿真波形

从该仿真波形看出:

只有当outflag信号为1时,下个时钟周期才输出cipher,否则cipher一直为0;

逆初始置换IP模块相对应的是初始置换IP模块,初始置换IP模块的实现只用一个assign语句就可完成。

3.6顶层调用模块DES_TOP

顶层调用模块是将控制模块control、密钥产生模块creat_key、轮运算模块lun、初始置换模块IP、逆初始置换模块IP_1五个模块以打点实例化的形式,例化到顶层调用模块中。

16个时钟内任何的data输入都不起作用,增强了DES加密算法的稳定性。

图3.8顶层调用模块的仿真波形:

从该仿真波形看出:

cipher是在rese变为无效后的第18个时钟周期输出第一个,mode位0时,加密;为1时,解密。

通过激励DES加密算法加/解密功能完全正确。

以下是激励加/解密的测试数据表:

表3.2激励加/解密的测试数据

mode

data

key

cipher

0

3132333435363738

2122232425262728

990910cce36ee298

1

990910cce36ee298

2122232425262728

3132333435363738

0

3132333435363738

5B5A57676A56676E

675b0181f050d0ef

1

675b0181f050d0ef

5B5A57676A56676E

3132333435363738

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1