基于Verilog语言的DES加密硬件电路设计.docx
- 文档编号:5272004
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:32
- 大小:248.98KB
基于Verilog语言的DES加密硬件电路设计.docx
《基于Verilog语言的DES加密硬件电路设计.docx》由会员分享,可在线阅读,更多相关《基于Verilog语言的DES加密硬件电路设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于Verilog语言的DES加密硬件电路设计
摘要
本文论述了利用Verilog硬件语言来描述DES加密技术对它进行模块设计并用ModelSimSE进行了仿真。
且详细的对DES加密解密的工作原理及算法进行了解释讲解。
加密的历史可以追溯到公元前2000年的古埃及,当时人们只是运用简单的象形文字,到现在已经有各种各样的加密技术,而DES加密是采用对称密钥加密法,即用相同密钥进行加密和解密。
本文对DES加密模块的设计进行了详细的介绍,对DES加密技术的工作原理及DES的算法进行了详细的介绍。
DES算法的3个入口参数为key、data、mode,key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。
本文只对key-gen模块进行了详细的讲解。
DES加密工作原理中只详细介绍了DES的一轮,其中对DES的一轮中各个步骤进行了比较详细的简介。
对DES加密算法进行了图解和说明,并用表格形式对DES的置换规则,放大换位,单纯换位进行了描述。
且对DES算法框图中的选择函数S1,S8进行了表格描述。
另外本文还对采用的硬件描述语言VerilogHDL进行了简介,对其语法和源代码等进行了介绍。
关键词DES;VerilogHDL;ModelSimSE;加密技术
Abstract
ThisarticlediscussestheuseofVeriloghardwaredescriptionlanguageforencryptionofDEStechnologytoitsmodulardesignandsimulationwithModelSimSE.DetailedworkontheencryptionofDESandalgorithmofdecryptionexplainedprincipleandexplain.EncryptioncanbetracedbackthehistoryofancientEgyptin2000BC,whenpeoplejustusesimplehieroglyphs,tonowhaveavarietyofencryptiontechnology.ThemethodwithsymmetricencryptionisusedoftheencryptionofDES,whichusesthesamedensekeyforencryptionanddecryption.
Inthispaper,introducedthedesignofencryption、theworkofprincipleofDESandthealgorithmofDESindetail.ThealgorithmofDEShasthreeentranceparameters:
key、dataandmode.Thekeyisusedoftheencryptionanddecryption.Thisarticlediscussesthemoduleofkey_genandintroducestheonereplacementofDESindetail,alseintroducestheonereplacementontheDESintheprofile.TheillustrationsandtabularformareusedofthealgorithmandthereplacementoftheDESrules、zoomtransposition、simpletranspositionaredescribedinthisarticle.ThealgorithmandthechoiceoffunctionS1、S8aredescribedwithform.Additionally,thisarticleintroducesVerilogHDLwithdescriptionlanguageofhardwareanditssyntaxandsourcecode.
KeywordsDES;VerilogHDL;ModelSimSE;encryptiontechnology
DES加密Verilog模块设计
1绪论
1.1DES的概要及背景
数据加密标准(DES,DataEncryptionStandard)也称为数据加密算法(DEA,DataEncryptionAlgrithm)(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(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。
虽然56位密钥的DES算法已经风光不在,而且常有用DES加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,仍然发挥着余热。
1.2Verilog模块的概要及背景
VerilogHDL是在1983年由GDA(GatewayDesignAutomation)公司的PhilMoorby首创的。
PhilMoorby后来成为Verilog-XL的主要设计者和Cadence公司(CadenceDesignSystems)的第一合伙人。
在1984至1985年Moorby设计出了第一个名为Verilog-XL的仿真器,1986年他对VerilogHDL的发展又作出了另一个巨大的贡献,即提出了用于快速门级仿真XL算法。
随着Verilog-XL算法的成功,VerilogHDL得到了迅速发展。
1989年,Cadence收购了GDA公司,VerilogHDL语言成为Cadence公司的私有财产。
1990年,Cadence公司决定公开VerilogHDL语言,于是成立了OVI(OpenVerilogInternational)组织来负责促进VerilogHDL语言的发展。
基于VerilogHDL的优越性,IEEE于1995年制定了VerilogHDL的IEEE标准,2005年SystemVerilogIEEE1800-2005标准的公布,更使得Verilog语言在综合,仿真验证和模块的重用等性能方面都有大幅度提高。
VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述ASICs和FPGA的设计之用。
Verilog的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较容易学习。
该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证时序分析逻辑综合。
它目前是应用最广泛的硬件语言。
VerilogHDL进行设计最大的优点是其工艺无关性。
这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同约束条件,即可设计出实际电路。
2设计的技术基础
2.1EDA技术简介
EDA(ElectronicsDesignAutomation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
随着计算机、集成电路、电子系统设计的发展,EDA技术先后经历了计算机辅助设计CAD(ComputerAssistDesign)、计算机辅助工程设计CAE(ComputerAs-sistEngineeringDesign)及电子系统设计自动化ESDA(ElectronicSystemDesignAutomation)三个发展阶段。
EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。
目前应用比较广泛的硬件描述语言就是VerilogHDL,它最早是由美国国防部提出来的。
利用EDA技术进行电子系统的设计,具有以下几个特点:
1用软件的方式设计硬件;
2用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;
3设计过程中可用有关软件进行各种仿真;
4系统可现场编程,在线升级;
5整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势,是现代电子信息工程领域的一门新技术。
EDA技术涉及面广,内容丰富,主要应掌握如下四个方面的内容:
1大规模可编程逻辑器件;
2硬件描述语言;
3软件开发工具;
4实验开发系统。
其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动化设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及硬件验证工具。
2.2VerilogHDL语言简介
VerilogHDL最初是美国国防部为其超高速集成电路研究计划提出的硬件描述语言,目的是为了把电子电路的设计意义以文字或文件的方式保存下来,以便其他人能轻易地了解电路的设计意义。
现在它已成为IEEE的工业标准硬件描述语言之一。
VerilogHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级等几种不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面强,因此在实际应用中越来越广泛。
VerilogHDL的主要特点有:
作为硬件描述语言的第一个国际标准具有很强的可移植性;具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。
因此,在设计早期系统功能时就具有可行性;设计层次较高,可用于较复杂的计算来解决现存的问题,从而缩短设计周期;VerilogHDL的设计不依赖于特定的器件的转换;支持大规模设计的分解和已有设计的逻辑综合和优化;并且VerilogHDL描述的设计可转变成门级网表;VerilogHDL可用源代码描述来进行复杂电路控制设计,灵活性强,同时也便于设计结果的保存和重用。
随着计算机和大规模集成电路制造技术的迅速发展,采用普通中小规模数字逻辑集成电路,如74系列的TTL或通用CMOS数字逻辑集成电路,已经不能满足现代数字系统设计的要求,迫切需要提高设计效率。
VerilogHDL硬件描述语言能大大降低电路设计的难度,这门语言正越来越广泛的被应用,越来越多的学校已经把VerilogHDL硬件描述语言作为数字逻辑电路教学中的必要部分,并配有大量的实践教学使学生掌握它。
VerilogHDL程序结构如图2-1所示。
VerilogHDL的主要特点:
a)具有极强的描述能力,能支持系统行为级、寄存器传输级和门级三个不同层次的设计。
b)具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。
c)支持大规模设计的分解和已有设计再利用。
d)可读性好,既可以被计算机接受,也容易被人所理解。
e)本身生命期长。
图2-1VerilogHDL程序设计的基本结构图
2.2ModelSimSE简介
ModelSim是业界最优秀的HDL语言仿真编译软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
主要特点:
●RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;
●单内核VHDL和Verilog混合仿真;
●源代码模版和助手,项目管理;
●集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Ass-ertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;
●C和Tcl/Tk接口,C调试;
●对SystemC的直接支持,和HDL任意混合
●支持SystemVerilog的设计功能;
●对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;
●ASICSignoff。
ModelSim分几种不同的版本:
SE、PE、LE和OEM,其中SE是最高级的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。
SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSimXE为例,对于代码少于40000行的设计,ModelSimSE比ModelSimXE要快10倍;对于代码超过40000行的设计,ModelSimSE要比ModelSimXE快近40倍。
ModelSimSE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;MentorGraphics公司提供业界最好的技术支持与服务。
3DES工作原理
3.1基本原理
DES是个块加密法,按64位块长加密数据,即把64位明文作为DES的输入,产生64位密文输出。
加密与解密使用相同的算法和密钥,只是稍作改变。
密钥长度为56位。
基本原理图如3-1。
图3-1DES基本原理框图㎝
前面曾经介绍过,DES使用56位密钥。
实际上,最初的密钥位64位,但在DES过程开始之前放弃密钥的每个第八位,从而得到56位密钥,即放弃第8,16,24,32,40,48,56和64位,如表3-1所示,阴影部分表示放弃的位。
这样,64位密钥丢弃每个第8位即得到56位密钥,如图3-2所示。
简单地说,DES利用加密的两个基本属性:
替换(也称混淆)和变换(也称扩散)。
DES共16步,每一步称为一轮,每一步进行替换与变换步骤。
表3-1放弃密钥中的每个第8位
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
图3-2密钥丢弃过程
下面介绍DES中主要步骤。
1)将64位明文块送入初始置换(InitialPermutation,IP)函数。
2)对明文进行初始置换。
3)初始置换产生转换块的两半,假设为左明文(LPT)和右明文(RPT)。
4)每个左明文与右明文经过16轮加密过程,各有自己的密钥。
5)将左明文和右明文重接起来,对组成的块进行最终置换(FinalPermutation,FP)
6)这个过程的结果得到64位密文。
图3-3显示了这个过程。
图3-3DES中主要步骤
3.2初始置换
初始置换只发生一次,是在第一轮之前进行的,指定初始置换中的变换如何进行,如表3-2所示。
例如,它指出初始置换将原明文块的第一位换成原明文块的第58位,第2位换成原明文块的第50位,等等,这只是把原明文块进行移位。
表3-2初始置换
明文块中各位位置
换成该位置的内容
1
2
3
…
64
58
50
42
…
7
表3-3显示了IP使用的完整变换表。
这个表要从左向右、从上到下读。
例如,我们发现第一个位置的58表示原明文块中第58位的内容在初始置换时改写第一位的内容,同样,1放在表中第40位,表示第一位改写原明文块中第40位,所有其他位一样。
IP完成后,得到的64位置换文本块分成两半,各32位,左块成左明文(LPT),右块成右明文(RPT)。
然后对两块进行16轮操作。
表3-3IP使用的完整变换表
58
50
42
34
26
18
10
2
60
52
44
36
28
20
12
4
62
54
46
38
30
22
14
6
64
56
48
40
32
24
16
8
57
49
41
33
25
17
9
1
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
63
55
47
39
31
23
15
7
3.3DES的一轮
DES的一轮包括图3-4所示步骤。
图3-4DES的一轮
第一步:
密钥变换
最初64位密钥通过放弃每个第8位而得到56位密钥。
这样,每一轮有个56位密钥。
每一轮从这个56位密钥产生不同的48位子密钥,称为密钥变换。
为此,56位密钥分成两半,各为28位,循环左移一位或两位。
例如,如果轮号为1、2、9、16,则只移一位,否则移两位。
表3-4显示了每一轮移动的密钥位数。
相应移动后,选择56位中的48位。
选择56位中的48位时使用表3-5所示,如果仔细看看表格则可发现其中只有48位。
位号18放弃(表中没有),另外7位也是,从而将56位减到48位。
由于密钥变换要进行置换和选择56位中的48位,因此称为压缩置换(compressionpermutation)。
表3-4每一轮移动的密钥位数
轮号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
位数
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
表3-5压缩置换
14
17
11
24
1
5
3
28
15
6
21
10
23
19
12
4
26
8
16
7
27
20
13
2
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32
第2步扩展置换
经过初始置换后我们得到两个32位明文区,分别称为左明文和右明文。
扩展置换将右明文从32位扩展到48位,除了从32位扩展到48位之外,这些位也进行置换,因此称为扩展置换(expansionpermutation)。
过程如下:
1)将32位右明文分成8块,每块各有4位,如图3-5所示。
2)将上一步的每个4位块扩展为6位块,即每个4位块增加2位。
这两位实际上是重复4位块的第1位和第4位。
第2位和第4位口令输入一样写出。
注意第一个输入位在第二个输出位重复,并在第48位重复。
同样,第32个输入位在第47个输出位和第1个输出位。
显然,这个过程在生成输出时扩展和置换输入位。
图3-5扩展置换
右明文扩展置换过程如图3-6所示。
图3-6右明文扩展置换过程
由扩展置换过程图可以知:
第一个输入位出现在第二个输出位和第48位,第二个输入位到第三个输出位,等等。
因此,扩展置换实际上使用表3-6所示。
表3-6右明文扩展置换表
32
1
2
3
4
5
6
7
8
9
8
9
10
11
12
13
14
15
16
17
16
17
18
19
20
21
22
23
24
25
24
25
26
27
28
29
30
31
32
1
由表3-5可知密钥变换将56位密钥压缩成48位,而扩展置换将32位右明文扩展为48位。
现在,48位密钥与48位右明文进行异或运算,将结果传递到下一步,即S盒替换。
S盒替换如图3-7所示。
图3-7S盒替换
第3步:
S盒替换
替换使用8个替换盒(substitutionboxes)(也称为S盒),每个S盒有6位输入和4位输出。
48位输入块分成8个子块(各有6位),每个子块指定一个S盒。
S盒将6位输入变成4位输出。
第4步:
P盒置换
所有S盒的输出组成32位块,对该32位要进行P盒置换(P-boxPermutation)。
P盒置换机制只是进行简单置换(即按P表指定把一位换成另一位,而不进行扩展的压缩)。
表3-7显示了P盒。
例如,第一块的16表示原输入的第16位移到输出的第1位,第16块的10表示原输入的第10位移到输出的第16位。
表3-7P盒置换
16
7
20
21
29
12
28
17
1
15
23
26
5
18
31
10
2
8
24
14
32
27
3
9
19
13
30
6
22
11
4
25
第5步:
异或与交换
注意上述所有操作只是处理了64位明文的右边32位,还没有处理左边部分。
这时,最初64位明文的大部分与P盒置换的结果进行异或运算,结果成为新的右明文,并通过交换将旧的右明文变成为新的左明文。
3.4最终置换
16轮结束后,进行最终置换(只一次),即按表3-8进行变换。
例如,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Verilog 语言 DES 加密 硬件 电路设计