已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I摘要本文论述了利用VERILOG硬件语言来描述DES加密技术对它进行模块设计并用MODELSIMSE进行了仿真。且详细的对DES加密解密的工作原理及算法进行了解释讲解。加密的历史可以追溯到公元前2000年的古埃及,当时人们只是运用简单的象形文字,到现在已经有各种各样的加密技术,而DES加密是采用对称密钥加密法,即用相同密钥进行加密和解密。本文对DES加密模块的设计进行了详细的介绍,对DES加密技术的工作原理及DES的算法进行了详细的介绍。DES算法的3个入口参数为KEY、DATA、MODE,KEY为加密解密使用的密钥,DATA为加密解密的数据,MODE为其工作模式。本文只对KEYGEN模块进行了详细的讲解。DES加密工作原理中只详细介绍了DES的一轮,其中对DES的一轮中各个步骤进行了比较详细的简介。对DES加密算法进行了图解和说明,并用表格形式对DES的置换规则,放大换位,单纯换位进行了描述。且对DES算法框图中的选择函数S1,S8进行了表格描述。另外本文还对采用的硬件描述语言VERILOGHDL进行了简介,对其语法和源代码等进行了介绍。关键词DES;VERILOGHDL;MODELSIMSE;加密技术IIABSTRACTTHISARTICLEDISCUSSESTHEUSEOFVERILOGHARDWAREDESCRIPTIONLANGUAGEFORENCRYPTIONOFDESTECHNOLOGYTOITSMODULARDESIGNANDSIMULATIONWITHMODELSIMSEDETAILEDWORKONTHEENCRYPTIONOFDESANDALGORITHMOFDECRYPTIONEXPLAINEDPRINCIPLEANDEXPLAINENCRYPTIONCANBETRACEDBACKTHEHISTORYOFANCIENTEGYPTIN2000BC,WHENPEOPLEJUSTUSESIMPLEHIEROGLYPHS,TONOWHAVEAVARIETYOFENCRYPTIONTECHNOLOGYTHEMETHODWITHSYMMETRICENCRYPTIONISUSEDOFTHEENCRYPTIONOFDES,WHICHUSESTHESAMEDENSEKEYFORENCRYPTIONANDDECRYPTIONINTHISPAPER,INTRODUCEDTHEDESIGNOFENCRYPTION、THEWORKOFPRINCIPLEOFDESANDTHEALGORITHMOFDESINDETAILTHEALGORITHMOFDESHASTHREEENTRANCEPARAMETERSKEY、DATAANDMODETHEKEYISUSEDOFTHEENCRYPTIONANDDECRYPTIONTHISARTICLEDISCUSSESTHEMODULEOFKEY_GENANDINTRODUCESTHEONEREPLACEMENTOFDESINDETAIL,ALSEINTRODUCESTHEONEREPLACEMENTONTHEDESINTHEPROFILETHEILLUSTRATIONSANDTABULARFORMAREUSEDOFTHEALGORITHMANDTHEREPLACEMENTOFTHEDESRULES、ZOOMTRANSPOSITION、SIMPLETRANSPOSITIONAREDESCRIBEDINTHISARTICLETHEALGORITHMANDTHECHOICEOFFUNCTIONS1、S8AREDESCRIBEDWITHFORMADDITIONALLY,THISARTICLEINTRODUCESVERILOGHDLWITHDESCRIPTIONLANGUAGEOFHARDWAREANDITSSYNTAXANDSOURCECODEKEYWORDSDES;VERILOGHDL;MODELSIMSE;ENCRYPTIONTECHNOLOGYI目录1绪论111DES的概要及背景112VERILOG模块的概要及背景22设计的技术基础321EDA技术简介322VERILOGHDL语言简介422MODELSIMSE简介53DES工作原理731基本原理732初始置换933DES的一轮1034最终置换144DES加密模块设计1541DES加密算法介绍1542DES加密模块设计18421DES加密模块总体构架18422密钥产生模块KEY_GEN设计19423S部件代换模块设计23424DESROUND模块设计24425DES顶层模块DES设计2743DES加密方案设计28431资源优先设计方案28432性能优先设计方案28总结30致谢31参考文献321DES加密VERILOG模块设计1绪论11DES的概要及背景数据加密标准(DES,DATAENCRYPTIONSTANDARD)也称为数据加密算法(DEA,DATAENCRYPTIONALGRITHM)ANSI和DEA1ISO,是近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位的密钥按位替代或交换的方法形成密文组的加密方法。DESDATAENCRYPTIONSTANDARD算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用DES加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得2到了广泛的应用,在某些场合,仍然发挥着余热。12VERILOG模块的概要及背景VERILOGHDL是在1983年由GDA(GATEWAYDESIGNAUTOMATION)公司的PHILMOORBY首创的。PHILMOORBY后来成为VERILOGXL的主要设计者和CADENCE公司(CADENCEDESIGNSYSTEMS)的第一合伙人。在1984至1985年MOORBY设计出了第一个名为VERILOGXL的仿真器,1986年他对VERILOGHDL的发展又作出了另一个巨大的贡献,即提出了用于快速门级仿真XL算法。随着VERILOGXL算法的成功,VERILOGHDL得到了迅速发展。1989年,CADENCE收购了GDA公司,VERILOGHDL语言成为CADENCE公司的私有财产。1990年,CADENCE公司决定公开VERILOGHDL语言,于是成立了OVI(OPENVERILOGINTERNATIONAL)组织来负责促进VERILOGHDL语言的发展。基于VERILOGHDL的优越性,IEEE于1995年制定了VERILOGHDL的IEEE标准,2005年SYSTEMVERILOGIEEE18002005标准的公布,更使得VERILOG语言在综合,仿真验证和模块的重用等性能方面都有大幅度提高。VERILOGHDL是一种硬件描述语言HARDWAREDESCRIPTIONLANGUAGE,为了制作数字电路而用来描述ASICS和FPGA的设计之用。VERILOG的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较容易学习。该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证时序分析逻辑综合。它目前是应用最广泛的硬件语言。VERILOGHDL进行设计最大的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同约束条件,即可设计出实际电路。32设计的技术基础21EDA技术简介EDAELECTRONICSDESIGNAUTOMATION技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。随着计算机、集成电路、电子系统设计的发展,EDA技术先后经历了计算机辅助设计CADCOMPUTERASSISTDESIGN、计算机辅助工程设计CAECOMPUTERASSISTENGINEERINGDESIGN及电子系统设计自动化ESDAELECTRONICSYSTEMDESIGNAUTOMATION三个发展阶段。EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。目前应用比较广泛的硬件描述语言就是VERILOGHDL,它最早是由美国国防部提出来的。利用EDA技术进行电子系统的设计,具有以下几个特点用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势,是现代电子信息工程领域的一门新技术。EDA技术涉及面广,内容丰富,主要应掌握如下四个方面的内容大规模可编程逻辑器件;硬件描述语言;软件开发工具;实验开发系统。其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动化设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及4硬件验证工具。22VERILOGHDL语言简介VERILOGHDL最初是美国国防部为其超高速集成电路研究计划提出的硬件描述语言,目的是为了把电子电路的设计意义以文字或文件的方式保存下来,以便其他人能轻易地了解电路的设计意义。现在它已成为IEEE的工业标准硬件描述语言之一。VERILOGHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级等几种不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面强,因此在实际应用中越来越广泛。VERILOGHDL的主要特点有作为硬件描述语言的第一个国际标准具有很强的可移植性;具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。因此,在设计早期系统功能时就具有可行性;设计层次较高,可用于较复杂的计算来解决现存的问题,从而缩短设计周期;VERILOGHDL的设计不依赖于特定的器件的转换;支持大规模设计的分解和已有设计的逻辑综合和优化;并且VERILOGHDL描述的设计可转变成门级网表;VERILOGHDL可用源代码描述来进行复杂电路控制设计,灵活性强,同时也便于设计结果的保存和重用。随着计算机和大规模集成电路制造技术的迅速发展,采用普通中小规模数字逻辑集成电路,如74系列的TTL或通用CMOS数字逻辑集成电路,已经不能满足现代数字系统设计的要求,迫切需要提高设计效率。VERILOGHDL硬件描述语言能大大降低电路设计的难度,这门语言正越来越广泛的被应用,越来越多的学校已经把VERILOGHDL硬件描述语言作为数字逻辑电路教学中的必要部分,并配有大量的实践教学使学生掌握它。VERILOGHDL程序结构如图21所示。VERILOGHDL的主要特点A具有极强的描述能力,能支持系统行为级、寄存器传输级和门级三个不同层次的设计。5B具有丰富的模拟仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统功能的可行性,随时可对设计进行仿真模拟,将设计中逻辑上的错误消灭在组装之前。C支持大规模设计的分解和已有设计再利用。D可读性好,既可以被计算机接受,也容易被人所理解。E本身生命期长。图21VERILOGHDL程序设计的基本结构图22MODELSIMSE简介MODELSIM是业界最优秀的HDL语言仿真编译软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和VERILOG混合仿真的仿真器。它采用直接优化的编译技术、TCL/TK技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。主要特点RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和VERILOG混合仿真;设计实体库、程序包使用说明实体ENTITY结构体配置(CONFIGURATION)GENERIC类属说明PORT端口说明结构体功能描述结构体说明6源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流CHASEX、SIGNALSPY、虚拟对象VIRTUALOBJECT、MEMORY窗口、ASSERTION窗口、源码窗口显示信号值、信号条件断点等众多调试功能;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公司提供业界最好的技术支持与服务。73DES工作原理31基本原理DES是个块加密法,按64位块长加密数据,即把64位明文作为DES的输入,产生64位密文输出。加密与解密使用相同的算法和密钥,只是稍作改变。密钥长度为56位。基本原理图如31。64位明文56位密钥56位密钥64位密文56位密钥64位明文DES64位密文64位密文图31DES基本原理框图DESDES64位明文块1块2块N8前面曾经介绍过,DES使用56位密钥。实际上,最初的密钥位64位,但在DES过程开始之前放弃密钥的每个第八位,从而得到56位密钥,即放弃第8,16,24,32,40,48,56和64位,如表31所示,阴影部分表示放弃的位。这样,64位密钥丢弃每个第8位即得到56位密钥,如图32所示。简单地说,DES利用加密的两个基本属性替换(也称混淆)和变换(也称扩散)。DES共16步,每一步称为一轮,每一步进行替换与变换步骤。表31放弃密钥中的每个第8位12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364最初的64位密钥密钥丢弃过程得到56位密钥图32密钥丢弃过程下面介绍DES中主要步骤。91将64位明文块送入初始置换(INITIALPERMUTATION,IP)函数。2对明文进行初始置换。3初始置换产生转换块的两半,假设为左明文LPT和右明文(RPT)。4每个左明文与右明文经过16轮加密过程,各有自己的密钥。5将左明文和右明文重接起来,对组成的块进行最终置换(FINALPERMUTATION,FP)6这个过程的结果得到64位密文。图33显示了这个过程。密钥步骤1步骤2步骤3步骤4明文(64位)初始置换(IP)LPTRPT16轮16轮密钥图33DES中主要步骤32初始置换初始置换只发生一次,是在第一轮之前进行的,指定初始置换中的变换如何进行,如表32所示。例如,它指出初始置换将原明文块的第一位换成原明文块的第58位,第2位换成原明文块的第50位,等等,这只是步骤6步骤5最终转换(FP)密文(64位)10把原明文块进行移位。表32初始置换明文块中各位位置换成该位置的内容123645850427表33显示了IP使用的完整变换表。这个表要从左向右、从上到下读。例如,我们发现第一个位置的58表示原明文块中第58位的内容在初始置换时改写第一位的内容,同样,1放在表中第40位,表示第一位改写原明文块中第40位,所有其他位一样。IP完成后,得到的64位置换文本块分成两半,各32位,左块成左明文(LPT),右块成右明文(RPT)。然后对两块进行16轮操作。表33IP使用的完整变换表5850423426181026052443628201246254463830221466456484032241685749413325179159514335271911361534537292113563554739312315733DES的一轮DES的一轮包括图34所示步骤。11扩展置换S盒替换图34DES的一轮第一步密钥变换最初64位密钥通过放弃每个第8位而得到56位密钥。这样,每一轮有个56位密钥。每一轮从这个56位密钥产生不同的48位子密钥,称为密钥变换。为此,56位密钥分成两半,各为28位,循环左移一位或两位。例如,如果轮号为1、2、9、16,则只移一位,否则移两位。表34显示了每一轮移动的密钥位数。相应移动后,选择56位中的48位。选择56位中的48位时使用表35所示,如果仔细看看表格则可发现其中只有48位。位号18放弃(表中没有),另外7位也是,从而将56位减到48位。由于密钥变换要进行置换和选择56位中的48位,因此称为压缩置换COMPRESSIONPERMUTATION。表34每一轮移动的密钥位数轮号12345678910111213141516位数1122222212222221表35压缩置换1417112415328156211023191242681672720132415231374755304051453348密钥变换P盒替换异或交换12444939563453464250362932第2步扩展置换经过初始置换后我们得到两个32位明文区,分别称为左明文和右明文。扩展置换将右明文从32位扩展到48位,除了从32位扩展到48位之外,这些位也进行置换,因此称为扩展置换(EXPANSIONPERMUTATION)。过程如下1将32位右明文分成8块,每块各有4位,如图35所示。2将上一步的每个4位块扩展为6位块,即每个4位块增加2位。这两位实际上是重复4位块的第1位和第4位。第2位和第4位口令输入一样写出。注意第一个输入位在第二个输出位重复,并在第48位重复。同样,第32个输入位在第47个输出位和第1个输出位。显然,这个过程在生成输出时扩展和置换输入位。原始32位右明文块1(4位)块2(4位)块8(4位)图35扩展置换右明文扩展置换过程如图36所示。13123456输出块1输出块2输出块821345678输入块1输入块2输入块8图36右明文扩展置换过程由扩展置换过程图可以知第一个输入位出现在第二个输出位和第48位,第二个输入位到第三个输出位,等等。因此,扩展置换实际上使用表36所示。表36右明文扩展置换表32123456789891011121314151617161718192021222324252425262728293031321由表35可知密钥变换将56位密钥压缩成48位,而扩展置换将32位右明文扩展为48位。现在,48位密钥与48位右明文进行异或运算,将结果传递到下一步,即S盒替换。S盒替换如图37所示。14S盒替换密钥变换(将密钥从56位压缩为48位)扩展置换(将右明文从32位扩展为48位)48位密钥48位右明文XOR图37S盒替换第3步S盒替换替换使用8个替换盒(SUBSTITUTIONBOXES)也称为S盒,每个S盒有6位输入和4位输出。48位输入块分成8个子块(各有6位),每个子块指定一个S盒。S盒将6位输入变成4位输出。第4步P盒置换所有S盒的输出组成32位块,对该32位要进行P盒置换(PBOXPERMUTATION)。P盒置换机制只是进行简单置换(即按P表指定把一位换成另一位,而不进行扩展的压缩)。表37显示了P盒。例如,第一块的16表示原输入的第16位移到输出的第1位,第16块的10表示原输入的第10位移到输出的第16位。表37P盒置换1672021291228171152326518311028241432273919133062211425第5步异或与交换注意上述所有操作只是处理了64位明文的右边32位,还没有处理左边部分。这时,最初64位明文的大部分与P盒置换的结果进行异或运算,结果成为新的右明文,并通过交换将旧的右明文变成为新的左明文。1534最终置换16轮结束后,进行最终置换(只一次),即按表38进行变换。例如,第40位输入代替第1位输出等等。最终置换的输出就是64位加密块。表38最终置换408481656246432397471555236331386461454226230375451353216129364441252206028353431151195927342421050185826331419491757254DES加密模块设计41DES加密算法介绍DESDATAENCRYPTIONSTANDARD,数据加密标准),是由IBM公司研制的一种加密算法,1977年,美国国家标准局宣布把它作为非机要部门使用的的数据加密标准,随着“三金”工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域16被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。DES算法的入口参数有三个KEY、DATA、MODE。其中KEY为8字节共64位,是DES算法的工作密钥;DATA也为8字节共64位,是要被加密或被解密的数据;MODE为DES的工作方式,包括加密和解密两种,如图41为DES算法框图。如MODE为加密,则用KEY把数据DATA进行加密,生成DATA的密码形式(64位)作为DES的输出结果。如MODE为解密,则用KEY把密码形式的数据DATA解密,还原为DATA的明码形式(64位),作为DES的输出结果。通过定期在通信网络的源端和目的地端同时改用新的KEY,便能更进一步提高数据的保密性,这正是现在金融交易网络流行的做法。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位的,其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见表41。表41DES算法置换规则58501234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135535547393123157即将输入的第58位换到第1位,第50位换到第2位,依此类推,最后一位是原来的第7位L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例设置换前的输入值为D1D2D3D64,则经过初始置换后的结果为L0D50,D8;R0D57D49,D7。17明文LOROIPFK1L1R0R1L0异或FR0,K116轮相同计算R16L15异或FR15,K16L15R16IP1密文图41DES算法框图经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置换的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则、放大换位、单纯换位分别见表42、表43、表44。表42DES算法逆置换规则1840848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725表43DES算法放大换位表3212345456789891011121312131415161716171819202120212223242524252627282928293031321表44DES算法单纯换位表1672021291228171152326518311028241432273919133062211425在F(R,K)算法描述图中,S1,S2,S8为选择函数,其功能是把6BIT数据变为4BIT数据。S1、S8,分别见表45,表46。表45算法描述图中选择函数S11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613表46算法描述图中选择函数S8132846151111093145012711513810374125611014921971141912142061013153582114741081315129035611在此,以S1为例说明其功能。我们可以看到在S1中,共有4行数据,命名为0、1、2、3行;每行有16列,命名为0、1、2、314、15列。现设输入为DD1D2D3D4D5D6令列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,将C1(28位)、D1(28位)合并得到56位。即经过缩小换位,从而得到了密钥(48位)。以此类推其他密钥。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次用K14,最后一次用K0,算法本身并没有任何变化。42DES加密模块设计421DES加密模块总体构架DES加密模块总体构架如图42所示。20S1S2S3S4S5S6S7S8KEY_GENDESROUND图42DES加密模块总体框架本实例在对DES算法进行建模时,将整个算法分为密钥产生模块KEY_GEN、S部件代换模块(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一轮变换模块DESROUND和顶层模块DES。其中密钥产生模块被DESROUND模块调用。DES加密模块顶层的外部接口示意图如图43所示,部分端口功能说明如表47所示。RESETDECRYPT_ICLKLOAD_IDATA_I630KEY_I630DATA_O630READY_O图43DES加密模块顶层的外部接口表47DES加密模块部分端口功能说明类型端口描述INPUTLOAD_IDATALOADINPUTDECRYPT_IENCRYPTCONTROLINPUT630DATA_IDATAINPUTINPUT630KEY_IEXTERNALSECRETKEYOUTPUT630DATA_ODATAOUTPUT21OUTPUTREADY_OREADYOUTPUT422密钥产生模块KEY_GEN设计DES算法中16轮非线性变换所用到的16个内部子密钥,都是DES由内部变换子密钥产生器产生的,DES的外部输入密钥K由64BIT组成,即K(K,K,K)126464BIT的外部密钥K包含了8个字节,每个字节有8BIT。其中每个字节的最末一位用奇偶校验,也就是只有56BIT真正包含了密钥信息。排PC1之后分别存到28BIT的寄64BIT的外部密钥K输入以后,首先通过奇偶校验,剔除奇偶校验位,得到56BIT的密钥M,M又经过换位重存器C0和D0中。PC1的换位重排规律如表48所示。表48PC1的换位重排规律57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124在内部子密钥产生器中,除寄存器(C0,D0)外,还有16对寄存器,即(C1,D1),C2,D2C16,D16。加密时的内容是将C和D中的内容分别向左移动1至2位得到的,而且这种移位方式是按循环移位寄存器方式进行的。在16次左移操作中,总共向左移动了28BIT,这样就保证了C16C0,D16D0,即(C16,D16)的内容和(C0,D0)完全相同。表49PC2换位重排规律22141711241532815621102319124268167272013241523137475530405145334844493954345346425036293248BIT的内部子密钥K是从寄存器C1和D1所存储的56BIT中,经过PC2重排按固定方式从中选出的48BIT。解密和加密时所用的外部密钥K完全相同,只是在解密时内部16步非线性变换所用的内部子密钥应按K16,K2,K1的次序使用。密钥产生模块KEY_GEN如图44所示。PREVIOUS_KEY550ITERATION30DECRYPTNON_PERM_KEY550NEW_KEY470图44密钥产生模块KEY_GENKEY_GEN模块核心程序如下PREV_KEY_VARPREVIOUS_KEYITERATIONCASE选择NEW_KEY_VAR0NEW_KEY0NON_PERM_KEY_VAR0NON_PERM_KEY0IFDECRYPTBEGINCASEITERATION230,1,8,15BEGINSEMI_KEYPREV_KEY_VAR5528PREV0SEMI_KEY27SEMI_KEYSEMI_KEY1SEMI_KEY0PREV0NON_PERM_KEY_VAR5528SEMI_KEYSEMI_KEYPERV_KEY_VAR270NON_PERM_KEY_VAR270SEMI_KEYDEFAULTBEGINSEMI_KEYPREV_KEY_VAR5528PREV0SEMI_KEY27PREV0SEMI_KEY26SEMI_KEYSEMI_KEY2SEMI_KEY1PREV0SEMI_KEY0PREV1NON_PERM_KEY_VAR5528SEMI_KEYSEMI_KEYPERV_KEY_VAR270ELSEBEGINCASEITERATION0BEGINSEMI_KEYPREV_KEY_VAR5528NON_PERM_KEY_VAR5528SEMI_KEYNON_PERM_KEY(NON_PERM_KEY_VAR)NEW_KEY_VAR产生电路NEW_KEY_VAR47NON_PERM_KEY_VAR42NEW_KEY_VAR46NON_PERM_KEY_VAR3924NEW_KEY_VAR45NON_PERM_KEY_VAR45NEW_KEY_VAR44NON_PERM_KEY_VAR32NEW_KEY_VAR2NON_PERM_KEY_VAR20NEW_KEY_VAR1NON_PERM_KEY_VAR27NEW_KEY_VAR0NON_PERM_KEY_VAR24NEW_KEYNEW_KEY_VAR在DECRYPT1、DECRYPT0条件下,KEY_GEN仿真波形分别如图45、图46所示。图45DECRYPT1时KEY_GEN部分仿真波形25图46DECRYPT0时KEY_GEN部分仿真波形423S部件代换模块设计扩展器输出的48BIT数据和密钥K模2相加得到48BIT的数据A,这个数据必须代换为32BIT的数据B,再经过重排PB,然后才能和L进行运算。S代换部件就是完成从48BIT到32BIT的代换并重排。S代换部件是一个十分复杂的非线性函数,正是经过它的非线性变换才使明文实现了较好的混乱(CONFUSION),达到加解密效果,从而具有较强的安全性。S代换部件在整个DES算法中所占比重较大,一共有8个模块,是设计中需要关注的部分。S盒的设计准则如下没有一个S代换部件的输出位是接近输入位的线性函数。如果将输入位的最左或最右端的位固定,变化中间的4位,每个可能的4位输出只能得到一次。如果S部件两个输入仅有1位的差异,则其输出必须至少有2位不同。如果S代换部件的两个输入仅有中间2位不同,则其输出必须至少有2位不同。26如果S代换部件的两个输入前2位不同,后2位已知,则其输出必不同。对于输入之间的任何非零的G位差分,32对中至多有8对显示出的差分导致了相同的输出差分。对于S代换部件的实现,主要有两种方法查表法,逻辑电路法。本章节通过逻辑电路法实现S代换部件。使用逻辑电路法来设计的时候,通常使用硬件描述语言VERILOGHDL编写程序作为设计输入。S部件代换模块S1,S8仿真波形分别如图47和图48所示。424DESROUND模块设计DESROUND模块执行DES算法中的一轮非线性变换。一轮非线性变换的作用过程第I步非线性变换的输入信号是32BIT的右寄存器RI,首先把它加到扩展器E上,扩展器把32BIT的输入扩展为48BIT的输出,图47S1部件代换模块仿真图27图48S8部件代换模块仿真图然后与第I步的第48BIT内部变换子密钥KI按位模2相加。接着输出的48BIT,被划分为8组,每组6BIT,分别加到8个代换部件S1,S2,S8上,经查表代换后输出4BIT。8个部件共输出32BIT,这32BIT又经过换位重排,再与变换信号的左半部分L(I1)按位模2相加,就成为下一步变换信号的右半部分RI相应的左半部分则为LIRI1。其中扩展器的工作原理如下。假设32BIT的输入为RR,R,R123232BIT的输入被分为8组,每组4BIT,再把每组4BIT前后各加一个BIT,从而扩展为6BIT。每组前面的一个BIT是复制上一组扩展前的最后一个BIT,后面加的一个BIT是复制下一组扩展前的最开始的一个BIT。而第一组加的一个BIT是扩展前的第32BIT,第八组后面加上的一个BIT则是扩展前第一组的头一个BIT。本模块调用了密钥生成模块,它的输出除了左半信号和右半信号,还有密钥信号。在这一轮运算中,密钥产生器产生了一个没有经PC2重排的56BIT的数据(它是由PREIOUS_KEY移位而得)。这个信号会输出给KEY_O,作为下轮运算的一个输入,用以产生下一轮运算所需的密钥。DESROUND模块核心程序如下28KEY_GEN1PREVIOUS_KEYPREVIOUS_KEY,KEY_GEN调用ITERATIONITERATION,DECRYPTDECRYPT,NEW_KEYNEW_KEY,NON_PERM_KEYALWAYSPOSEDGECLKORNEGEDGERESETBEGINL_O、R_O、KEY_O产生逻辑IFRESETBEGINL_O0R_O0KEY_O0ENDELSEBEGINL_OR_IR_ONEXT_RKEY_ONON_PERM_KEYENDENDALWAYSR_IORL_IORKEY_IORITERATION_IORDECRYPT_IORNEW_KEYORS1_IORS2_IORS3_IORS4_IORS5_IORS6_IORS7_IORS8_IBEGINR_I_VARR_IEXPANDEDR产生逻辑EXPANDEDR47R_I_VAR0EXPANDEDR1R_I_VAR0EXPANDEDR0R_I_VAR31PREVIOUS_KEYKEY_IITERATIONITERATION_IDECRYPTDECRYPT_IROUND_KEYNEW_KEYKEREXPANDEDRROUND_KEYS1_OKER4742S1_O产生逻辑29S8_OKER50SOUTPUT3128S1_ISOUTPUT、F产生逻辑F0SOUTPUT7NEXT_RL_IFEXPANRSIGL_IFEND425DES顶层模块DES设计在DES模型的顶层模块中,实例化了DESROUND模块和8个S代换部件,综合之后各模块之间连接关系输入密钥KEY_I、待加密数据DATA_I的左半信号及右半信号各经过一个两路数据选择器后连接到DESROUND模块的数据输入端(LI310)和密钥输入端(KEY_I550)。这里之所以需要数据选择器,是因为模块仅在LOAD_I为高电平时接受外部数据,待加/解密数据和外部密钥通过数据选择器输入到DESROUND模块的数据输入端和密钥输入端。LOAD_I信号持续一个时钟周期以后会变为低电平,在此之后数据选择器将选择输出另一路数据,DESROUND模块每轮变换之后的输出密钥和数据,将被送到DESROUND模块的密钥输入端和数据输出端执行下一轮变换。16轮变换结束之后,READY_O会变为高电平,这时整个模块的输出DATA_O才为有效数据。READY_O信号持续一个时钟周期以后又变为低电平,LOAD_I再次上跳为高电平,模块对下一个明文分组进行加密。43DES加密方案设计431资源优先设计方案资源优先方案就是通过硬件设计出一个密钥变换轮函数和一个明文变换轮函数,通过16轮反复调用这一个硬件系统实现一次DES加密运算。由于16轮运算都只占用一轮运算所需的硬件资源,使硬件的开销大大减30少。但是,一个时钟周期只能进行一轮加密运算,要完成整个加密过程要花费16个时钟周期,从而在速度性能上大打折扣。而采用循环法实现DES加密算法能达到减少资源占用的目的。432性能优先设计方案性能优先设计方案刚好与资源优先设计方案相反。传统方案是将循环全部打开配合流水线结构进行设计,即将16轮函数进行硬件级联构成一个16级的流水线结构,提前生成16个子密钥,随着流水线的进程发送给相对应的流水级,从而达到16个数据块同时加密的目的。这样,从第一个数据块开始加密起,每一个时钟周期延时都会有一个数据块进行加密,经16个时钟周期延时后,得到最终的密文。流水线结构设计通过一个时钟周期即可进行一个数据块的加密,通过占用资源换取速度性能的提高。本文通过子密钥的简化和S盒的优化来改进传统的流水线结构,实现一个占用资源少、加密速度快的加密系统。1子密钥的简单生成由DES加密算法原理可知,一个64BIT的初始密钥输入后通过一次压缩变换、移位变换、二次压缩变换后得到第一轮子密钥,其密钥为48BIT。由第一轮子密钥变换结果可以看出第一轮子密钥的第1、2、3、46、47、48位分别为初始密钥的第10、51、34、62、55、31位。每一轮子密钥产生的方法是一样的,如果采用硬件描述语言按照其子密钥产生的原理一步步地推导出16次DES迭代的密钥,不仅仅是语言表述繁琐,而且占用了很多的硬件资源。同时,由于每一轮子密钥产生的时间并不相同,会给DES密码的迭代运算带来很多不必要的麻烦。对密钥变换原理进行分析可以发现,每一轮子密钥的产生只是将初始密钥经过置换和不同次数的循环移位。每一轮循环移位的次数对原始密钥是固定的,其每一位相对于初始密钥的每一位存在着固定的关系,由此可以列出每一轮子密钥与初始密钥之间的关系表,通过关系表采用硬件描述语言可同时产生16轮子密钥。采用此方法大大简化了程序语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国夏威夷果行业项目调研及市场前景预测评估报告
- 2025年考试题库风电基础知识附答案
- (2025年)小学生交通安全知识测试题与答案
- 2025至2030中国环形夹板行业项目调研及市场前景预测评估报告
- 2025中国科学院植物研究所职能部门管理岗位招聘1人(北京)考试笔试备考试题及答案解析
- 家具行业家具品牌管理工程师考试题目及答案
- 2025广东佛山市顺德区龙潭小学招聘数学临聘教师1人笔试考试备考试题及答案解析
- 2025四川蓬州产业投资集团有限责任公司考核聘用员工7人考试笔试参考题库附答案解析
- 2025山东滨州医学院“一事一议”项目科研人才招聘笔试考试参考题库及答案解析
- 2025至2030中国全闪存行业项目调研及市场前景预测评估报告
- 2025甘肃白银靖远县北滩镇选聘专业化管理村文书2人考试笔试备考试题及答案解析
- 水厂建设项目施工方案
- 2025湖北随州国有资本投资运营集团有限公司拟聘用人员笔试历年备考题库附带答案详解2卷
- 2025年宁夏交建投校园招聘和社会招聘230人考试笔试参考题库附答案解析
- 非洲猪瘟安全培训课件
- 2025陕西延长石油榆林煤化有限公司招聘120人笔试历年难易错考点试卷带答案解析试卷2套
- 2026中国人民大学管理职员和教师以外专业技术人员招聘考试笔试参考题库附答案解析
- 2025北京海淀高三上学期期中化学试卷和答案
- 幼小衔接阶段教育衔接策略与效果评价
- 口风琴上课课件
- 2025版哮喘病症状解读及护理要点
评论
0/150
提交评论