DES加密Verilog模块设计

上传人:仙*** 文档编号:67678195 上传时间:2022-03-31 格式:DOC 页数:35 大小:380.50KB
收藏 版权申诉 举报 下载
DES加密Verilog模块设计_第1页
第1页 / 共35页
DES加密Verilog模块设计_第2页
第2页 / 共35页
DES加密Verilog模块设计_第3页
第3页 / 共35页
资源描述:

《DES加密Verilog模块设计》由会员分享,可在线阅读,更多相关《DES加密Verilog模块设计(35页珍藏版)》请在装配图网上搜索。

1、摘 要本文论述了利用Verilog硬件语言来描述DES加密技术对它进行模块设计并用ModelSim SE进行了仿真。且详细的对DES加密解密的工作原理及算法进行了解释讲解。加密的历史可以追溯到公元前2000年的古埃及,当时人们只是运用简单的象形文字,到现在已经有各种各样的加密技术,而DES加密是采用对称密钥加密法,即用相同密钥进行加密和解密。本文对DES加密模块的设计进行了详细的介绍,对DES加密技术的工作原理及DES的算法进行了详细的介绍。DES算法的3个入口参数为key、data、mode,key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。本文只对key-gen模

2、块进行了详细的讲解。DES加密工作原理中只详细介绍了DES的一轮,其中对DES的一轮中各个步骤进行了比较详细的简介。对DES加密算法进行了图解和说明,并用表格形式对DES的置换规则,放大换位,单纯换位进行了描述。且对DES算法框图中的选择函数S1,S8进行了表格描述。另外本文还对采用的硬件描述语言Verilog HDL进行了简介,对其语法和源代码等进行了介绍。关键词 DES ;Verilog HDL;ModelSim SE;加密技术 AbstractThis article discusses the use of Verilog hardware description language f

3、or encryption of DES technology to its modular design and simulation with ModelSim SE. Detailed work on the encryption of DES and algorithm of decryption explained principle and explain. Encryption can be traced back the history of ancient Egypt in 2000 BC, when people just use simple hieroglyphs, t

4、o now have a variety of encryption technology. The method with symmetric encryption is used of the encryption of DES, which uses the same dense key for encryption and decryption.In this paper, introduced the design of encryption、the work of principle of DES and the algorithm of DES in detail.The alg

5、orithm of DES has three entrance parameters : key、data and mode.The key is used of the encryption and decryption.This article discusses the module of key_gen and introduces the one replacement of DES in detail,alse introduces the one replacement on the DES in the profile. The illustrations and tabul

6、ar form are used of the algorithm and the replacement of the DES rules、zoom transposition、simple transposition are described in this article. The algorithm and the choice of function S1、S8 are described with form. Additionally, this article introduces Verilog HDL with description language of hardwar

7、e and its syntax and source code.Keywords DES;Verilog HDL;ModelSim SE ;encryption technology目 录1 绪论11.1 DES的概要及背景11.2 Verilog模块的概要及背景22 设计的技术基础32.1 EDA技术简介32.2 Verilog HDL语言简介42.2ModelSim SE 简介53 DES工作原理73.1 基本原理73.2 初始置换93.3 DES的一轮103.4 最终置换144 DES加密模块设计154.1 DES加密算法介绍154.2 DES加密模块设计184.2.1 DES加密模块

8、总体构架184.2.2 密钥产生模块key_gen设计194.2.3 S部件代换模块设计234.2.4 desround 模块设计244.2.5 DES顶层模块des设计274.3 DES加密方案设计284.3.1 资源优先设计方案284.3.2 性能优先设计方案28总结30致谢31参考文献32DES加密Verilog模块设计1 绪论1.1 DES的概要及背景数据加密标准(DES,Data Encryption Standard)也称为数据加密算法(DEA,Data Encryption Algrithm)(ANSI)和DEA-1(ISO),是近20年来使用的加密算法。后来,人们发现DES在强

9、大攻击下太脆弱,因此使DES的应用有所下降。但是,任何一本安全书籍都不得不提到DES,因为它曾经是加密算法的标志。介绍DES的细节还有两个作用:第一,介绍DES;第二,更重要的是分析和理解实际加密算法。利用这个方法,我们还要从概念上介绍其他加密算法,但不准备深入介绍,因为通过DES介绍已经可以了解计算机加密算法的工作原理。DES通常使用ECB,CBC,或CFB模式。DES产生可以追溯到1972年,美国的国家标准局(NBS,即现在的国家标准与技术学会,NIST)启动了一个项目,旨在保护计算机和计算机通信中的数据。它们想开发一个加密算法。两年之后,NBS发现IBM公司的Lucifer相当理想,没有

10、必要从开头开发一个新的加密算法。经过几次讨论,NBS于1975年发布了这个加密算法的细节。到1976年底,美国联邦政府决定采用这个算法,并将其更名为数据加密标准。不久,其他组织也认可和采用DES作为加密算法。DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的

11、DES算法已经风光不在,而且常有用DES加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,仍然发挥着余热。1.2 Verilog模块的概要及背景Verilog HDL是在1983年由GDA(Gateway Design Automation)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司(CadenceDesign Systems)的第一合伙人。在1984至1985年Moorby设计出了第一个名为Verilog-XL的仿真器,1986年他对Verilog

12、HDL的发展又作出了另一个巨大的贡献,即提出了用于快速门级仿真XL算法。随着Verilog-XL 算法的成功,Verilog HDL得到了迅速发展。1989年, Cadence 收购了GDA公司, Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立了OVI(Open Verilog International)组织来负责促进Verilog HDL语言的发展。基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准, 2005年System Verilog IEEE180

13、0-2005标准的公布,更使得Verilog语言在综合,仿真验证和模块的重用等性能方面都有大幅度提高。Verilog HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证时序分析逻辑综合。它目前是应用最广泛的硬件语言。Verilog HDL进行设计最大的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节

14、,只需根据系统设计的要求施加不同约束条件,即可设计出实际电路。2 设计的技术基础2.1 EDA技术简介EDA(Electronics Design Automation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。随着计算机、集成电路、电子系统设计的发展,EDA技术先后经历了计算机辅助设计CAD(Computer AssistDesign)、计算机辅助工程设计CAE(Computer As-sist Engineering Design)及电子系统设计自动化ESDA(Electronic System Design Automation)三个发展

15、阶段。EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。目前应用比较广泛的硬件描述语言就是Verilog HDL,它最早是由美国国防部提出来的。利用EDA技术进行电子系统的设计,具有以下几个特点: 用软件的方式设计硬件; 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; 设计过程中可用有关软件进行各种仿真; 系统可现场编程,在线升级; 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势,是现代电子信息工程领域的一门新技术。EDA技术涉及面广,内容丰富,主要应掌握如下四个方面的内容: 大规模可编程逻

16、辑器件; 硬件描述语言; 软件开发工具; 实验开发系统。其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动化设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及硬件验证工具。2.2 Verilog HDL语言简介Verilog HDL最初是美国国防部为其超高速集成电路研究计划提出的硬件描述语言,目的是为了把电子电路的设计意义以文字或文件的方式保存下来,以便其他人能轻易地了解电路的设计意义。现在它已成为IEEE的工业标准硬件描述语言之一。Veril

17、og HDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级等几种不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面强,因此在实际应用中越来越广泛。Verilog HDL的主要特点有:作为硬件描述语言的第一个国际标准具有很强的可移植性;具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。因此,在设计早期系统功能时就具有可行性;设计层次较高,可用于较复杂的计算来解决现存的问题,从而缩短设计周期;Verilog HDL的设计不依赖于特定的器件的

18、转换;支持大规模设计的分解和已有设计的逻辑综合和优化;并且Verilog HDL描述的设计可转变成门级网表;Verilog HDL可用源代码描述来进行复杂电路控制设计,灵活性强,同时也便于设计结果的保存和重用。随着计算机和大规模集成电路制造技术的迅速发展,采用普通中小规模数字逻辑集成电路,如74系列的TTL或通用CMOS数字逻辑集成电路,已经不能满足现代数字系统设计的要求,迫切需要提高设计效率。Verilog HDL硬件描述语言能大大降低电路设计的难度,这门语言正越来越广泛的被应用,越来越多的学校已经把Verilog HDL硬件描述语言作为数字逻辑电路教学中的必要部分,并配有大量的实践教学使学

19、生掌握它。Verilog HDL程序结构如图2-1所示。Verilog HDL的主要特点:a) 具有极强的描述能力,能支持系统行为级、寄存器传输级和门级三个不同层次的设计。b) 具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。c) 支持大规模设计的分解和已有设计再利用。d) 可读性好,既可以被计算机接受,也容易被人所理解。e) 本身生命期长。设计实体库、程序包使用说明实体(ENTITY)结构体配置(CONFIGURATION)GENERIC类属说明PORT端口说明结构体功能描述结构体说明图2-

20、1 Verilog HDL程序设计的基本结构图2.2 ModelSim SE 简介ModelSim是业界最优秀的HDL语言仿真编译软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。主要特点:l RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;l 单内核VHDL和Verilog混合仿真;l 源代码模版和助手,项目管理;l

21、 集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Ass-ertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;l C和Tcl/Tk接口,C调试;l 对SystemC的直接支持,和HDL任意混合l 支持SystemVerilog的设计功能;l 对系统级描述语言的最全面支持,SystemVerilog, SystemC, PSL;l ASIC Sign off。ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xili

22、nx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。3 DES工作原理3.1

23、基本原理DES是个块加密法,按64位块长加密数据,即把64位明文作为DES的输入,产生64位密文输出。加密与解密使用相同的算法和密钥,只是稍作改变。密钥长度为56位。基本原理图如3-1。块n块2块1DES64位明文DES64位明文56位密钥56位密钥64位密文56位密钥64位明文DES64位密文64位密文 图3-1 DES基本原理框图前面曾经介绍过,DES使用56位密钥。实际上,最初的密钥位64位,但在DES过程开始之前放弃密钥的每个第八位,从而得到56位密钥,即放弃第8,16,24,32,40,48,56和64位,如表3-1所示,阴影部分表示放弃的位。这样,64位密钥丢弃每个第8位即得到56

24、位密钥,如图3-2所示。简单地说,DES利用加密的两个基本属性:替换(也称混淆)和变换(也称扩散)。DES共16步,每一步称为一轮,每一步进行替换与变换步骤。表3-1 放弃密钥中的每个第8位12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 最初的64位密钥密钥丢弃过程得到56位密钥图3-2 密钥丢弃过程下面介绍DES中主要步骤。1) 将64位明文块送入初始置换(Initial Permutation,IP)

25、函数。2) 对明文进行初始置换。3) 初始置换产生转换块的两半,假设为左明文(LPT)和右明文(RPT)。4) 每个左明文与右明文经过16轮加密过程,各有自己的密钥。5) 将左明文和右明文重接起来,对组成的块进行最终置换(Final Permutation,FP)6) 这个过程的结果得到64位密文。 图3-3显示了这个过程。步骤6步骤5最终转换(FP)密文(64位)密钥步骤1步骤2步骤3步骤4明文(64位)初始置换(IP)LPTRPT16轮16轮密钥图3-3 DES中主要步骤3.2 初始置换初始置换只发生一次,是在第一轮之前进行的,指定初始置换中的变换如何进行,如表3-2所示。例如,它指出初始

26、置换将原明文块的第一位换成原明文块的第58位,第2位换成原明文块的第50位,等等,这只是把原明文块进行移位。 表3-2 初始置换明文块中各位位置换成该位置的内容123645850427表3-3显示了IP使用的完整变换表。这个表要从左向右、从上到下读。例如,我们发现第一个位置的58表示原明文块中第58位的内容在初始置换时改写第一位的内容,同样,1放在表中第40位,表示第一位改写原明文块中第40位,所有其他位一样。IP完成后,得到的64位置换文本块分成两半,各32位,左块成左明文(LPT),右块成右明文(RPT)。然后对两块进行16轮操作。表3-3 IP使用的完整变换表58504234261810

27、2605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231573.3 DES的一轮DES的一轮包括图3-4所示步骤。P盒替换异或交换密钥变换 扩展置换S盒替换图3-4 DES的一轮 第一步:密钥变换最初64位密钥通过放弃每个第8位而得到56位密钥。这样,每一轮有个56位密钥。每一轮从这个56位密钥产生不同的48位子密钥,称为密钥变换。为此,56位密钥分成两半,各为28位,循环左移一位或两位。例如,如果轮号为1、2、9、16,则只移一位,否则移两位。

28、表3-4显示了每一轮移动的密钥位数。相应移动后,选择56位中的48位。选择56位中的48位时使用表3-5所示,如果仔细看看表格则可发现其中只有48位。位号18放弃(表中没有),另外7位也是,从而将56位减到48位。由于密钥变换要进行置换和选择56位中的48位,因此称为压缩置换(compression permutation)。表3-4 每一轮移动的密钥位数轮号12345678910111213141516位数1122222212222221表3-5 压缩置换141711241532815621102319124268167272013241523137475530405145334844493

29、9563453464250362932第2步 扩展置换经过初始置换后我们得到两个32位明文区,分别称为左明文和右明文。扩展置换将右明文从32位扩展到48位,除了从32位扩展到48位之外,这些位也进行置换,因此称为扩展置换(expansion permutation)。过程如下:1) 将32位右明文分成8块,每块各有4位,如图3-5所示。2) 将上一步的每个4位块扩展为6位块,即每个4位块增加2位。这两位实际上是重复4位块的第1位和第4位。第2位和第4位口令输入一样写出。注意第一个输入位在第二个输出位重复,并在第48位重复。同样,第32个输入位在第47个输出位和第1个输出位。显然,这个过程在生成

30、输出时扩展和置换输入位。 原始32位右明文块1(4位)块2(4位)块8(4位)图3-5 扩展置换右明文扩展置换过程如图3-6所示。123456输出块1输出块2输出块821345678输入块1输入块2输入块8 图3-6 右明文扩展置换过程由扩展置换过程图可以知:第一个输入位出现在第二个输出位和第48位,第二个输入位到第三个输出位,等等。因此,扩展置换实际上使用表3-6所示。表3-6 右明文扩展置换表32123456789891011121314151617161718192021222324252425262728293031321由表3-5可知密钥变换将56位密钥压缩成48位,而扩展置换将32

31、位右明文扩展为48位。现在,48位密钥与48位右明文进行异或运算,将结果传递到下一步,即S盒替换。S盒替换如图3-7所示。S盒替换密钥变换(将密钥从56位压缩为48位)扩展置换(将右明文从32位扩展为48位)48位密钥48位右明文XOR图3-7 S盒替换第3步: S盒替换替换使用8个替换盒(substitution boxes)(也称为S盒),每个S盒有6位输入和4位输出。48位输入块分成8个子块(各有6位),每个子块指定一个S盒。S盒将6位输入变成4位输出。第4步:P盒置换所有S盒的输出组成32位块,对该32位要进行P盒置换(P-box Permutation)。P盒置换机制只是进行简单置换

32、(即按P表指定把一位换成另一位,而不进行扩展的压缩)。表3-7显示了P盒。例如,第一块的16表示原输入的第16位移到输出的第1位,第16块的10表示原输入的第10位移到输出的第16位。表3-7 P盒置换1672021291228171152326518311028241432273919133062211425第5步:异或与交换注意上述所有操作只是处理了64位明文的右边32位,还没有处理左边部分。这时,最初64位明文的大部分与P盒置换的结果进行异或运算,结果成为新的右明文,并通过交换将旧的右明文变成为新的左明文。3.4 最终置换16轮结束后,进行最终置换(只一次),即按表3-8进行变换。例如,

33、第40位输入代替第1位输出等等。最终置换的输出就是64位加密块。表3-8 最终置换40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725 4 DES加密模块设计4.1 DES加密算法介绍DES (Data Encryption Standard,数据加密标准),是由IBM公司研制的一种加密算法,1977年,美国国家标准局宣布把它作为非机要部门使用的的数据加密标准,随着“三金”工程尤其是金卡工程的启动,DES算法在

34、POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8字节共64位,是DES算法的工作密钥;Data也为8字节共64位,是要被加密或被解密的数据;Mode为DES的工作方式,包括加密和解密两种,如图4-1为DES算法框图。如Mode为加密,则用Key把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果。如Mode为解密,则用Key把密码形式的

35、数据Data解密,还原为Data的明码形式(64位),作为DES的输出结果。通过定期在通信网络的源端和目的地端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络流行的做法。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位的,其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见表4-1。表4-1 DES算法置换规则58501234261810260524436282012462544638302214664564840322416857494133251791595143352719113615

36、345372921135535547393123157即将输入的第58位换到第1位,第50位换到第2位,依此类推,最后一位是原来的第7位L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D50,D8;R0=D57D49,D7。图4-1 DES算法框图经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置换的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则、放大换位、单纯换位分别见表4-2、表4-3、

37、表4-4。表4-2 DES算法逆置换规则40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725表4-3 DES算法放大换位表3212345456789891011121312131415161716171819202120212223242524252627282928293031321表4-4 DES算法单纯换位表1672021291228171152326518311028241432273919133062

38、211425在f(R,K)算法描述图中,S1,S2,S8为选择函数,其功能是把6bit数据变为4bit数据。S1、S8,分别见表4-5,表4-6。表4-5 算法描述图中选择函数S11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613表4-6 算法描述图中选择函数S81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611 在此,以S1为例说明其功能。我们

39、可以看到:在S1中,共有4行数据,命名为0、1、2、3行;每行有16列,命名为0、1、2、314、15列。现设输入为:D=D1D2D3D4D5D6令:列=D2D3D4D5 行=D1D6然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出。下面给出子密钥(48bit)的生成算法。从子密钥的生成算法描述图中我们可以看到:初始Key值为64位,但DES算法规定,其中第8、16、64位是奇偶校验位,不参与DES运算。故Key实际可用位数便只有56位。即经过缩小选择换位后,Key的位数由64位变成56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到C1、D1

40、,将C1(28位)、D1(28位)合并得到56位。即经过缩小换位,从而得到了密钥(48位)。以此类推其他密钥。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次用K14,最后一次用K0,算法本身并没有任何变化。4.2 DES加密模块设计4.2.1 DES加密模块总体构架DES加密模块总体构架如图4-2所示。S1S2S3S4S5S6S7S8key_gendesround图4-2 DES加密模块总体框架本实例在对DES算法进行建模时,将整个算法分为密钥产生 模块key_gen、S部件代换模块(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一轮变换模块desro

41、und和顶层模块des。其中密钥产生模块被desround模块调用。DES加密模块顶层的外部接口示意图如图4-3所示,部分端口功能说明如表4-7所示。resetdecrypt_iclkload_idata_i630key_i630data_o630ready_o图4-3 DES加密模块顶层的外部接口表4-7 DES加密模块部分端口功能说明类型端口描述inputload_idata loadinputdecrypt_iencrypt controlinput630data_idata inputinput630key_iexternal secret keyoutput630data_odata

42、 outputoutputready_oready output4.2.2 密钥产生模块key_gen设计DES算法中16轮非线性变换所用到的16个内部子密钥,都是DES由内部变换子密钥产生器产生的,DES的外部输入密钥K由64bit组成,即K=(K,K,K) 64bit的外部密钥K包含了8个字节,每个字节有8bit。其中每个字节的最末一位用奇偶校验,也就是只有56bit真正包含了密钥信息。排PC-1之后分别存到28bit的寄64bit的外部密钥K输入以后,首先通过奇偶校验,剔除奇偶校验位,得到56bit的密钥M,M又经过换位重存器C0和D0中。PC-1的换位重排规律如表4-8所示。表4-8

43、PC-1的换位重排规律57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124在内部子密钥产生器中,除寄存器(C0,D0)外,还有16对寄存器,即(C1,D1),(C2,D2) (C16,D16)。加密时的内容是将C 和D中的内容分别向左移动1至2位得到的,而且这种移位方式是按循环移位寄存器方式进行的。在16次左移操作中,总共向左移动了28bit,这样就保证了C16=C0,D16=D0,即(C16,D16)的内容和(C0,D0)完全相同。表4-

44、9 PC-2换位重排规律141711241532815621102319124268167272013241523137475530405145334844493954345346425036293248bit的内部子密钥K是从寄存器C1和D1所存储的56bit中,经过PC-2重排按固定方式从中选出的48bit。解密和加密时所用的外部密钥K完全相同,只是在解密时内部16步非线性变换所用的内部子密钥应按K16,K2,K1的次序使用。密钥产生模块key_gen如图4-4所示。previous_key550iteration30decryptnon_perm_key550new_key470图4-4

45、 密钥产生模块key_genkey_gen模块核心程序如下:prev_key_var=previous_key; -iteration CASE 选择new_key_var=0;new_key=(0);non_perm_key_var=0;non_perm_key=(0);if(!decrypt)begin case(iteration) 0,1,8,15; begin semi_key= prev_key_var55:28; prev0= semi_key27; semi_key= semi_key1; semi_key0=prev0; non_perm_key_var55:28= semi

46、_key; semi_key= perv_key_var27:0; non_perm_key_var27:0= semi_key; default: begin semi_key= prev_key_var55:28; prev0= semi_key27; prev0= semi_key26; semi_key= semi_key2; semi_key1=prev0; semi_key0=prev1; non_perm_key_var55:28= semi_key; semi_key= perv_key_var27:0; elsebegincase(iteration)0: begin sem

47、i_key= prev_key_var55:28; non_perm_key_var55:28= semi_key; non_perm_key=(non_perm_key_var); -new_key_var产生电路new_key_var47= non_perm_key_var42;new_key_var46= non_perm_key_var39;new_key_var45= non_perm_key_var45;new_key_var44= non_perm_key_var32;new_key_var2= non_perm_key_var20;new_key_var1= non_perm_

48、key_var27;new_key_var0= non_perm_key_var24;new_key=( new_key_var);在decrypt=1、decrypt=0条件下,key_gen仿真波形分别如图4-5、图4-6所示。 图4-5 decrypt=1时key_gen部分仿真波形 图4-6 decrypt=0时key_gen部分仿真波形4.2.3 S部件代换模块设计扩展器输出的48bit数据和密钥K模2相加得到48bit的数据A,这个数据必须代换为32bit的数据B,再经过重排P(B),然后才能和L进行运算。S代换部件就是完成从48bit到32bit的代换并重排。S代换部件是一个十分

49、复杂的非线性函数,正是经过它的非线性变换才使明文实现了较好的混乱(confusion),达到加解密效果,从而具有较强的安全性。S代换部件在整个DES算法中所占比重较大,一共有8个模块,是设计中需要关注的部分。S盒的设计准则如下:l 没有一个S代换部件的输出位是接近输入位的线性函数。l 如果将输入位的最左或最右端的位固定,变化中间的4位,每个可能的4位输出只能得到一次。l 如果S部件两个输入仅有1位的差异,则其输出必须至少有2位不同。l 如果S代换部件的两个输入仅有中间2位不同,则其输出必须至少有2位不同。l 如果S代换部件的两个输入前2位不同,后2位已知,则其输出必不同。l 对于输入之间的任何

50、非零的G位差分,32对中至多有8对显示出的差分导致了相同的输出差分。对于S代换部件的实现,主要有两种方法:查表法,逻辑电路法。本章节通过逻辑电路法实现S代换部件。使用逻辑电路法来设计的时候,通常使用硬件描述语言Verilog HDL编写程序作为设计输入。S部件代换模块S1,S8仿真波形分别如图4-7和图4-8所示。4.2.4 desround 模块设计desround模块执行DES算法中的一轮非线性变换。一轮非线性变换的作用过程:第i步非线性变换的输入信号是32bit的右寄存器R(i),首先把它加到扩展器E上,扩展器把32bit的输入扩展为48bit的输出,图4-7 S1部件代换模块仿真图图4

51、-8 S8部件代换模块仿真图然后与第i步的第48bit内部变换子密钥K(i)按位模2相加。接着输出的48bit,被划分为8组,每组6bit,分别加到8个代换部件S1,S2,S8上,经查表代换后输出4bit。8个部件共输出32bit,这32bit又经过换位重排,再与变换信号的左半部分L(i-1)按位模2相加,就成为下一步变换信号的右半部分R(i).相应的左半部分则为L(i)=R(i-1)。其中扩展器的工作原理如下。假设32bit的输入为: R=r,r,r32bit的输入被分为8组,每组4bit,再把每组4bit前后各加一个bit,从而扩展为6bit。每组前面的一个bit是复制上一组扩展前的最后一

52、个bit,后面加的一个bit是复制下一组扩展前的最开始的一个bit。而第一组加的一个bit是扩展前的第32bit,第八组后面加上的一个bit则是扩展前第一组的头一个bit。本模块调用了密钥生成模块,它的输出除了左半信号和右半信号,还有密钥信号。在这一轮运算中,密钥产生器产生了一个没有经PC-2重排的56bit的数据(它是由preious_key移位而得)。这个信号会输出给Key_o,作为下轮运算的一个输入,用以产生下一轮运算所需的密钥。desround模块核心程序如下:key_gen1(.previous_key(previous_key), -key_gen 调用 .iteration(it

53、eration),.decrypt(decrypt), .new_key(new_key),.non_perm_key);always(posedge clk or negedge reset) begin -L_o、R_o、Key_o产生逻辑 if(!reset) begin L_o=(0); R_o=(0); Key_o=(0); end else begin L_o=(R_i); R_o=(next_R); Key_o=(non_perm_key); end endalways(R_i or L_i or Key_i or iteration_i or decrypt_i or new_

54、key or s1_i or s2_i or s3_i or s4_i or s5_i or s6_i or s7_i or s8_i)begin R_i_var=R_i; - expandedR产生逻辑 expandedR47=R_i_var0; expandedR1=R_i_var0; expandedR0=R_i_var31; previous_key=(Key_i); iteration=(iteration_i); decrypt=(decrypt_i); round_key=new_key; KER=expandedRround_key; s1_o=(KER47:42); - s1

55、_o产生逻辑 s8_o=(KER5:0); Soutput31:28=s1_i; - Soutput、f产生逻辑 f0=Soutput7; next_R=(L_if); expanRSig=(L_if); end4.2.5 DES顶层模块des设计在DES模型的顶层模块中,实例化了desround模块和8个S代换部件,综合之后各模块之间连接关系:输入密钥key_i、待加密数据data_i的左半信号及右半信号各经过一个两路数据选择器后连接到desround模块的数据输入端(Li31:0)和密钥输入端(Key_i55:0)。这里之所以需要数据选择器,是因为模块仅在load_i为高电平时接受外部数据,待加/解密数据和外部密钥通过数据选择器输入到desround模块的数据输入端和密钥输入端。load_i信号持续一个时钟周期以后会变为低电平,在此之后数据选择器将选择输出另一路数据,desround模块每轮变换之后的输出密钥和数据,将被送到desround模块的密钥输入端和数据输出端执行下一轮变换。16轮变换结束之后,ready_o会变为高电平,这时整个模块的输出data_o才为有效数据。ready_o信号持续一个时钟周期以后又变为低电平,load_i再次上跳为高电平,模块对下一个明文分组进行加密。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!