![[工学]基于FPGA 的DES加密算法的实现.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-2/23/0eff569c-1638-4825-a54f-b3dbf39005d9/0eff569c-1638-4825-a54f-b3dbf39005d91.gif)
![[工学]基于FPGA 的DES加密算法的实现.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-2/23/0eff569c-1638-4825-a54f-b3dbf39005d9/0eff569c-1638-4825-a54f-b3dbf39005d92.gif)
![[工学]基于FPGA 的DES加密算法的实现.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-2/23/0eff569c-1638-4825-a54f-b3dbf39005d9/0eff569c-1638-4825-a54f-b3dbf39005d93.gif)
![[工学]基于FPGA 的DES加密算法的实现.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-2/23/0eff569c-1638-4825-a54f-b3dbf39005d9/0eff569c-1638-4825-a54f-b3dbf39005d94.gif)
![[工学]基于FPGA 的DES加密算法的实现.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-2/23/0eff569c-1638-4825-a54f-b3dbf39005d9/0eff569c-1638-4825-a54f-b3dbf39005d95.gif)
已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杭州电子科技大学 摘要 密码技术作为信息安全的支撑技术,事关国家的根本利益,同时直接影响国 家的未来和发展,世界各国都对此予以充分重视。随着网络的快速发展,信息安 全越来越引起人们的关注。 DES(Data Encryption Standard,数据加密标准)加密算法在成为加密标准到今 天,经历了长期的考验。实践证明 DES 算法的安全性是能够满足大部分的安全要 求的。 随着微电子技术的发展,可编程逻辑器件由早期的只读存贮器(PROM)发 展到今天十分流行并广泛应用的现场可编程门阵列 CPLD/FPGA。CPLD/FPGA 具 有体系结构和逻辑单元灵活,集成度高以及实用范围宽等特点,可以实现较大规 模的电路,编程也很灵活,而且设计开发周期短,设计制造成本低,开发工具先 进,标准产品无需测试,质量稳定以及可实时在线检验等优点,因此被广泛应用 于产品的原型设计和产品生产。 所以,应用 CPLD/FPGA 来设计和实现 DES 加密算法具有十分重要的现实意 义和广阔的应用前景。概括起来,本文主要完成了以下几方面的主要工作: (1)完成了 DES 加密系统的整体设计。整个系统包括 DES 加密核心模块和 函数包模块。 (2)在 ALTERA 公司的 Quartus II 环境下用 VHDL 实现,进行编译、综合和 仿真。 关键字:DES;VHDL;FPGA 杭州电子科技大学 ABSTRACT As the key of the information security,encryption technology influence the nations benefit. It will affect nationals future and the development directly. Various countries all regarding this as important technology.With the rapid development of internet, people pay more attention to the information security. DES (Data Encryption Standard) encryption arithmetic has been standing through many tests since it became the encryption standard. It is proved that the security of the DES encryption can satisfy the voluminous needs. With the development of micro-electronic technology, the programmable logic device develops from earlier ROM to CPLD/FPGA which is very popular and extensive applied today. The CPLD/FPGA has the characteristics including flexible system structure and logic unit, high integration and wide application. Especially, the CPLD/FPGA can carry out the more large-scale circuit and can be programmed flexibly. When the engineers use the CPLD/FPGA to design and develop the product, the time is less, the cost is lower, and the tools are more advanced than using other devices because the standard product doesnt need to test as before, the quality is steadier and the product can be inspected on line. So, the CPLD/FPGA is widely used to design and develop product. Therefore, using the CPLD/FPGA to design and implement the DES encryption arithmetic is very practical and will be popular in many fields. The main contributions of the paper are as follow: (1)Completed the whole design of the DES encryption system .The whole system includes the DES encryption core module and the function package module. (2)Used ALTERA Company platform-Quartus II,VHDL to realize design , compile, synthesis and simulate the design. Key words: DES;VHDL;FPGA 杭州电子科技大学 目 录 1 绪论.1 1.1 DES 的基本概念及特点1 1.2DES 和 RSA2 1.3 基于 FPGA 的 DES 加密系统的研究背景,意义,及应用前景 .2 1.3.1 DES 加密系统现状及发展.2 1.3.2 FPGA 简介2 1.4 硬件描述语言 VHDL 简介 .3 1.5 EDA 工具简介.4 1.5.1 Quartus 开发工具简介 4 1.5.2 Synplify PRO 简介5 本章小结6 2 DES 加密算法原理 .7 2.1 DES 加密算法原理简介.7 2.2 DES 加密原理.7 2.2.1 初始置换 .8 2.2.2 每轮循环过程 .9 2.2.3 轮密匙的产生 12 2.3 DES 算法的安全强度.14 本章小结.14 3 加密系统设计15 3.1 加密系统设计方案 .15 3.2 本课题讨论的设计内容 .15 3.2.1 程序函数包的设计 .16 3.2.2 轮密钥的生成18 3.2.3 S 盒的设计20 3.2.4 每轮加密单元的设计 .23 3.2.5 DES 算法执行模块的顶层设计25 本章小结.27 4 仿真结果及分析28 4.1 基于 QUARTUS的仿真 28 4.2基于 SYNPLIFY PRO 的综合 29 本章小结.30 结束语.31 参考文献.32 致谢.33 杭州电子科技大学 1 1 绪论 1.1 DES 的基本概念及特点5 5 数据加密标准(Data Encryption Standard,DES) ,作为 ANSI(American National Standards Institute,美国国家标准学会)的数据加密算法(Data Encryption Algorithm,DEA)和 ISO(International Organization for Standardization,国际标准化组织)的 DEA-1,成为一个世界范围内的标准己经 20 多年了。DES 起源于 1973 年美国国家标准局(NBS)征求国家密码标准方 案。IBM 就提交了其在 20 世纪 60 年代末设立的一个计算机上密码编码学方面 的研究项目的成果的结果,这个项目在 1971 年底研制了一种称为 Lucifer 的算 法。它是当时提出的最好的算法,因而在 1977 年被选为数据加密标准,有效期 限为 5 年,随后在 1983,1987,1993 年三次再度被授权续用 5 年。 DES(Data Encryption Standard)满足了国家标准局欲达到的 4 个目的:提供高 质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的 复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握。 DES 算法把 64 位的明文输入块变为 64 位的密文输出块,它所使用的密钥 也是 64 位,首先,DES 把输入的 64 位数据块按位重新组合,并把输出分为 L0、R0 两部分,每部分各长 32 位,并进行前后置换(输入的第 58 位换到第一 位,第 50 位换到第 2 位,依此类推,最后一位是原来的第 7 位) ,最终由 L0 输出左 32 位,R0 输出右 32 位,根据这个法则经过 16 次迭代运算后,得到 L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。 DES 算法的入口参数有三个:Key、Data、Mode。其中 Key 为 8 个字节共 64 位,是 DES 算法的工作密钥;Data 也为 8 个字节 64 位,是要被加密或被解 密的数据;Mode 为 DES 的工作方式,有两种:加密或解密,如果 Mode 为加 密,则用 Key 去把数据 Data 进行加密,生成 Data 的密码形式作为 DES 的输出 结果;如 Mode 为解密,则用 Key 去把密码形式的数据 Data 解密,还原为 Data 的明码形式作为 DES 的输出结果。在使用 DES 时,双方预先约定使用的”密码” 即 Key,然后用 Key 去加密数据;接收方得到密文后使用同样的 Key 解密得到 原数据,这样便实现了安全性较高的数据传输。DES 算法在 POS(Point Of Sells,电子收款机系统) ,ATM(Automatic Teller Machine,自动取款机) ,IC 卡,加油站,高速公路收费站等领域被广泛应用。 杭州电子科技大学 2 1.2DES 和 RSA5 5 设计一种强密度的密码算法有两种方法,一是研究用于密码分析的所有可 能性解法,然后设计一套规则以挫败这些解法中的任何一种算法,于是便能构 造一种能够抗拒这些解法的算法,二是构造这样的一些算法,使得要破解它就 必须解决一些问题,而这些问题被认为是不可解的。本文将要介绍的 DES 算法 属于第一种,而 RSA 则属于第二种。 1.3 基于 FPGA 的 DES 加密系统的研究背景,意义,及应用前景 1.3.1 DES 加密系统现状及发展 随着信息技术的发展,计算机应用渗透到社会生活的各个领域,特别是在 军事中的应用,使人们对信息的依赖程度越来越大,从而使信息安全技术显得 格外重要。从技术角度讲,网络安全除了依赖安全的网络通信协议及应用协议 外,更多地取决于网络设备如交换机、路由器、网桥等所提供的加/解密功能。 目前,基于 DES 算法的加/解密硬件广泛地应用于军事,卫星通信、网关服务 器、机顶盒、视频传输以及其它大量的数据传输业务中。 DES 加密技术是一种常用的对称加密技术,该技术算法公开,加密强度大, 运算速度快,在各行业甚至军事领域得到广泛的应用。DES 算法从 1977 年公 布到现在已有将近 30 年的历史,虽然有些人对它的加密强度持怀疑态度,但现 在还没有发现实用的破译 DES 的方法。并且在应用中,人们不断提出新的方法 增强 DES 算法的加密强度,如 3 重 DES 算法、带有交换 S 盒的 DES 算法等。 因此 DES 算法在信息安全领域仍有广泛地应用。 采用软件方式实现的 DES 算法会在很大程度上占用系统资源,造成系统性 能的严重下降,而 DES 算法本身并没有大量的复杂数学计算(如乘、带进位的 加、模等运算) ,在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算, 因而,无论是从系统性能还是加/解密速度的角度来看,采用硬件实现都是一个 理想的方案。 1.3.2 FPGA 简介6 6 1111 FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列, 它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作 为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电 路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念,内 部包括可配置逻辑模块 CLB(Configurable Logic Block) 、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA 的基本 特点主要有: 杭州电子科技大学 3 1.采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合用的芯片。 2.FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 3.FPGA 内部有丰富的触发器和 IO 引脚。 4.FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。 5.FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之 一。目前 FPGA 的品种很多,有 XILINX 的 XC 系列、TI 公司的 TPC 系列、 ALTERA 公司的 FIEX 系列等。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时 需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编 程方式。加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完 成后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失, 因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器,只须用 通用的 EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功 能。因此,FPGA 的使用非常灵活。 FPGA 有多种配置模式:并行主模式为一片 FPGA 加一片 EPROM 的方式; 主从模式可以支持一片 PROM 编程多片 FPGA;串行模式可以采用串行 PROM 编程 FPGA;外设模式可以将 FPGA 作为微处理器的外设,由微处理器对其编 程。 1.4 硬件描述语言 VHDL 简介 传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件 的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和 系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的 功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、 调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成 整个系统的硬件设计。采用传统方法设计数字系统,特别是当电路系统非常庞 大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改 也给设计者带来诸多的不便。为了提高开发的效率,增加已有开发成果的可继 承性以及缩短开发周期,各 ASIC 研制和生产厂家相继开发了具有自己特色的 电路硬件描述语言(Hardware Description Language,简称 HDL) 。但这些硬件 描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间 的相互交流带来了极大的困难。因此,开发一种强大的、标准化的硬件描述语 言作为可相互交流的设计环境已势在必行。于是,美国于 1981 年提出了一种新 杭州电子科技大学 4 的、标准化的 HDL,称之为 VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,简称 VHDL。这是一种用形式化方法来描述数 字电路和设计数字逻辑系统的语言。设计者可以利用这种语言来描述自己的设 计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门级电路,最 后用 PLD 实现其功能。 综合起来讲,VHDL 语言具有如下优点: 1覆盖面广,描述能力强,是一个多层次的硬件描述语言。在 VHDL 语言中, 设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的 电路或版图参数描述。 2具有良好的可读性,即容易被计算机接受,也容易被读者理解。 3使用期长,不会因工艺变化而使描述过时。因为 VHDL 的硬件描述与工艺 无关,当工艺改变时,只需修改相应程序中的属性参数即可。 4支持大规模设计的分解和已有设计的再利用。一个大规模的设计不可能由一 个人独立完成,必须由多人共同承担,VHDL 为设计的分解和设计的再利用提 供了有力的支持。 1.5 EDA 工具简介 1.5.1 Quartus 开发工具简介1 1 Quartus II 是 Altera 公司推出的 CPLD/FPGA 开发工具,Quartus II 提供了 完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包 括: 1.可利用原理图、结构框图、VerilogHDL、AHDL 和 VHDL 完成电路描述,并 将其保存为设计实体文件; 2.芯片(电路)平面布局连线编辑; 3.LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原始系统的 性能影响较小或无影响的后续模块; 4.功能强大的逻辑综合工具; 5.完备的电路功能仿真与时序逻辑仿真工具; 6.定时/时序分析与关键路径延时分析; 7.可使用 SignalTap II 逻辑分析工具进行嵌入式的逻辑分析; 8.支持软件源文件的添加和创建,并将它们链接起来生成编程文件; 9.使用组合编译方式可一次完成整体设计流程; 10.自动定位编译错误; 11.高效的编程与验证工具; 12.可读入标准的 EDIF 网表文件、VHDL 网表文件和 Verilog 网表文件; 杭州电子科技大学 5 13.能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件。 Quartus II 设计流程: 1.设计输入:完成期间的硬件描述,包括文本编辑器、块与符号编辑器、 MegaWizard 插件管理器、约束编辑器和布局编辑器等工具; 2.综合:包括分析和综合器以、辅助工具和 RTL 查看器等工具; 3.布局连线:将设计综合后的网表文件映射到实体器件的过程,包括 Fitter 工 具、约束编辑器、布局图编辑器、芯片编辑器和增量布局连线工具; 4.仿真:Quartus II 提供了功能仿真和时序仿真两种工具; 5.器件编程与配置:包括四种编程模式,即被动串行模式、JTAG 模式、主动串 行模式和插座内编程模式。 使用 New Project 新建一个工程的过程: 1.制定工程的文件存放目录、工程名以及最顶层的设计实体名,在默认情况下, 工程名与最顶层的设计实体名是相同的; 2.添加文件,包括最顶层的设计实体文件以及一些额外的电路模块描述文件或 定制的功能库; 3.选择目标芯片,具体芯片最好让编译器根据工程设计的实际情况自动选择; 4.第三方 EDA 工具设定,包括设计输入与综合工具、仿真工具、时序分析工具 等,默认为 Quartus II 自带的仿真器、综合器以及时序分析器; 5.最后一步系统将整体工程的各项参数和设置总结并显示出来,这时即可完成 工程的创建。 1.5.2 Synplify PRO 简介 Synplify Pro 半导体设计及验证软件是 Synplify 公司开发用于 FPGA 综合 的应用软件。业界领先的基于 FPGA 的 ASIC 原型验证综合工具,通过提供诸如 团队设计、自动 re-timing、快速的编译以及额外的特性来优化设计结果。 Synplify pro 提供了和布局布线工具之间的 native-link 接口来完成 Push- Button 的流程,使用户只需要点击就可以完成所有的综合和布局布线的工作。 基于 Synplicety 公司的 B.E.S.T.引擎,Synplify Pro 可以轻松综合数百万门 的设计而不需要分割。 Synplify Pro 详细功能描述: 1.提供优于传统综合技术的快速的全局编译和综合优化,针对算术模块和数据 路径的高性能和高面积利用率的优化; 2.提供对设计约束的全面控制,智能化人机界面,提高设计效率,结合具体器 件结构,提供最佳性能; 3.提供自动的 RAM 例化过程,提供自动时钟控制和同步/异步清零寄存器结构, 杭州电子科技大学 6 自动识别 FSM 和选择编码方式以达到最佳性能,提供针对 FSM 的快速的调试和 观察工具,自动进行流水处理,以提高电路性能; 4.在不改变原代码的情况下,提供内部线网到外部测试管脚的能力,在源代码、 RTL 视图和 Log 文件之间的交互标识能力; 5.集成化、图形化的分析和调试关键路径的环境; 6.支持黑盒子的时序以及管脚信息,支持同时实现多个应用,通过设计划分支 持 Xilinx 模块化设计; 7.自动对组合逻辑进行寄存器平衡以提高性能,支持智能化的增量综合。 本章小结 本章首先介绍了 DES 的基本概念及特点,然后讲述了 DES 加密系统的研 究背景,现状,意义及应用前景,介绍了 FPGA 的发展历程和本次设计采用的 开发语言和 EDA 开发工具。 杭州电子科技大学 7 2 DES 加密算法原理 2.1 DES 加密算法原理简介 DES 运算的明文(加密前数据)和加密密钥都是 64 位的,将原始数据经过初 始的置换,然后与子密钥(由加密密钥产生)经过一系列迭代运算,最后再经过 逆置换,即可得到密文(加密后数据)。解密过程与此类似。 DES 的一般设计准则包括: (1)随机性性,即输出和输入之间是无规律的; (2)完整性,每个输出位都是所有出入位的一个复杂函数; (3)雪崩效应,即改变输入中的一位,平均要导致一半的输出位被改变; (4)非线性,即加密函数对任何密匙都是非仿射的; (5)相关免疫性,即输入是统计上独立于任何输入的子集,不会与输入的 任何子集相关。DES 中重复交替使用代替运算 S 和换位运算 P 两种变换,以达 到混乱和扩散的目的。 2.2 DES 加密原理5 5 DES 算法的加密过程经过了 3 个阶段(如图 2-1 所示):首先,64 位的明 文在一个初始置换 IP 后,比特重排产生了经过置换的输入,明文组被分成右半 部分和左半部分,每部分 32 位,以 L0和 R0表示。接下来的阶段是由对同一个 函数进行 16 次循环组成的,16 轮迭代被成为乘积变换或函数 F。这个函数本身 既包含换位又包含替代函数,将数据和密匙结合起来,最后 1 轮的输出由 64 位 组成,左边和右边两部分经过交换后就得到预输出。最后阶段,预输出通过一 个逆初始置换 IP-1算法就生成了 64 位的密文结果。 DES 的详细加密计算过程如图 2-2 所示。 逆初始变换IP-1 初始置换IP 乘积变换 64位密文 64位明文 图 2-1 DES 加密处理略图 杭州电子科技大学 8 2.2.1 初始置换 从图 2-3 的初始置换表和图 2-4 的逆初始置换表可以容易看出:这两个置 换是彼此反向的。如经过 IP 置换后,消息的第 1 位被置换到第 40 位,再经过 逆置换之后,第 40 位又回到第 1 位的位置。 输入 L16=R15R16=L15F(R15,K16) R15=L14F(R14,K15) L15=R14 R2=L1F(R1,K0)L2=R1 R1=L0F(R0,K1 L0=R1 R0 L0 逆初始置换IP-1 输出 初始置换 () (F) K1 K2 : : (F) () : : () (F) : : (F) : : : : : Kn K16 图 2-2 DES 的加密计算 杭州电子科技大学 9 输入(64位) 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 输出(64位) 输入(64位) 输出(64位) 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 16 33 1 41 9 49 17 57 25 图 2-3 初始置换 IP 图 2-4 逆初始置换 IP-1 2.2.2 每轮循环过程 图 2-5 给出了一个循环的内部结构。每个 64 位的中间结果的左右部分被当 两个独立的 32 位数据处理。每个变换的逻辑关系如下: Li=Ri-1 Ri=Li-1F(Ri-1,Ki) 在这个循环使用的密匙 Ki的长度是 48 位,输入的 Ri-1是 32 位,先被扩展 到 48 位,扩展操作的定义是由图 2-6 决定。扩展以后所得到的 48 位结果再与 Ki进行异或,这样得到的 48 位结果再进行一个代替函数 S(S 变换)产 生 32 位的输出,最后按照图 2-7 进行置换(P 置换) 。 图 2-5 DES 算法的一轮迭代处理过程 杭州电子科技大学 10 输出(48位) 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 输入(32位) 输入(32位,来自S盒) 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 输出(32位) 图2-6 扩展变换 图2-7 P盒变换 S盒在函数中的作用如图2-8所示,替代(即S变换)有一组共8个S盒完成, 其中每个S盒都接受6位的输入,并产生4位的输出,对应的变换由8个表定义, 见表2-1至2-8。 (32位)Ri-1 48位密匙 Ki(48位) S2S1 S7 S6S5 S8 S4S3 E P + 32位 图2-8 S盒的原理 杭州电子科技大学 11 表2-1 S1盒的定义 S1 1441312151183106125907 0157414213110612119538 4114813621115129731050 1512824917511314100613 表2-2 S2盒的定义 S2 1518146113497213120510 3134715281412011069115 0147111041315812693215 13181013154211671205149 表2-3 S3盒的定义 S3 1009146315511312711428 1370934610285141211151 1364981530111212510147 1101306987415143115212 表2-4 S4盒的定义 S4 7131430691012851112415 1381156150347212110149 1069012117131513145284 3150610113894511127214 表2-5 S5盒的定义 S5 2124171011685315130149 1411212471315015103986 4211110137815912563014 1181271142136150910453 杭州电子科技大学 12 表2-6 S6盒的定义 S6 1211015926801334147511 1015427129561131401138 9141552812370410113116 4321295151011141760813 表2-7 S7盒的定义 S7 4112141508133129751061 1301174911014351221586 1411131237141015680592 6111381410795015142312 表2-8 S8盒的定义 S8 1328461511110931450127 1151381037412561101492 7114191214206101315358 2114741081315129035611 S表的使用方法如下:S盒的6位输入的第一和最后一位比特构成一个2进制 数,用来选择S表中的行,中间的四个比特则选择列。被上述行和列交叉所选择 的单元的十进制转换成一个4位的二进制表示输出。 2.2.3 轮密匙的产生 DES的轮密匙生成如图2-9所示,用来作为算法输入的56位密匙首先经过一 个置换,这个置换由置换选择1确定,如图2-10确定,得到的56位密匙被分成两 个28位的值C0和D0。每个循环中,Ci-1和Di-1分别经过一个由表2-9确定的1位或2 位的循环左移,这些经过左移的值作为下一循环的输出。最后它们同时作为置 换选择2的输入,如图2-11所示,产生的48位输出则作为密匙输入部分。 表2-9 循环左移位 轮序12345678910111213141516 移位 数 1122222212222221 杭州电子科技大学 13 64位密匙 置换选择1 C0(28位) D0(28位 ) 循环左移循环右移 C1(28位) D1(28位 ) 循环左移 循环右移 Ci(28位) Di(28位 ) 置换选择2 置换选择2 : : : : : : K1 48位 Ki 48位 (56位) 图2-9 DES的轮密匙生成 密匙(56位) 47 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 29 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 33 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 C0(28位)D0(28位) 图2-10 置换选择1 杭州电子科技大学 14 Ci-1(28位) 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 Di-1(28位) 循环左移循环左移 密匙(48位) 图2-11 置换选择2 2.3 DES 算法的安全强度 对DES的分析主要有3种方法:(1)蛮力攻击:255次尝试(平均只需搜索 密匙空间的一半);(2)差分密码分析方法:247次尝试;(3)线性密码分析: 243次尝试。 对DES脆弱性的争议主要集中在以下方面: (1)DES的半公开性:DES的内部结构即S盒的设计标准是保密的,至今未公 布,这样用户无法确信DES的内部结构不存在任何隐藏的弱点或缺点。 (2)密匙太短:IBM原来的Lucifer算法的密匙长度是128位,而提交作为标准 的系统只有56位,批评者担心这个密匙长度不足以抵御穷举搜索攻击,不 太可能提供足够安全的安全性。1998年前只有DES破译机的理论设计, 1998年之后出现实用化的DES破译机。 (3)软件实现太慢:1993年以前只有硬件实现得到授权,1993年以后软件、固 件和硬件得到同等对待。 本章小结 本章详细介绍了DES加密算法的基本原理,各个置换的详细定义,加密的 详细过程,以及DES算法的安全强度。 杭州电子科技大学 15 3 加密系统设计 3.1 加密系统设计方案 整个加密系统需要其他模块相配合来完成加密任务。其框图如图3-1所示。 图3-1加密系统设计方案 整个系统工作如下:当检测到整个系统的数据不再安全时,比如某一个用 来检测数据安全的FPGA内数据丢失或变化,系统便给DES加密模块一个信号 (ENCRYPT) ,要求对数据进行加密。同时控制产生一个随机数序列(56位) , 提供给DES加密模块作为加密密匙(KEY_IN) ,在加密过程中,DES加密模块 把要加密的数据(DIN)加密后再返还给系统,以供系统分析判断。 其中56位伪随机序列的产生,可以借助序列密码产生器来生成,比如线性 反馈移位寄存器(Liner Feedback Shift Register,LFSR) 。LFSR非常适合硬件实 现,它们能产生大的周期序列,能产生好的统计特性的序列,况且它们的结构 能够应用代数方法进行很好的分析。常见的基于LFSR的序列密码生成器有 Geffe生成器和钟控生成器。本次设计中随机数列是由手动输入的。 3.2 本课题讨论的设计内容 本课题要设计完成的就是DES加密模块。根据它和MCU配合工作的原理, DES加密模块被设计成两大模块:顶层逻辑模块(函数包)和DES加密算法执 行模块。图3-2,是顶层逻辑模块负责调用DES加密算法执行模块的框图。 杭州电子科技大学 16 图3-2 DES加密模块的构成 3.2.1 程序函数包的设计11 11 1212 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; package des_lib is component des_fast port (clk:in std_logic; reset:in std_logic; stall:in std_logic; encrypt :in std_logic; - 1=encrypt, 0=decrypt key_in :in std_logic_vector (55 downto 0); din:in std_logic_vector (63 downto 0); din_valid :in std_logic; dout:out std_logic_vector (63 downto 0); dout_valid:out std_logic; key_out :out std_logic_vector (55 downto 0) ); end component; component des_small port ( clk:in std_logic; reset:in std_logic; encrypt :in std_logic; key_in :in std_logic_vector (55 downto 0); din:in std_logic_vector (63 downto 0); din_valid:in std_logic; busy:buffer std_logic; 杭州电子科技大学 17 dout:out std_logic_vector (63 downto 0); dout_valid:out std_logic ); end component; component des_round port ( clk:in std_logic; reset:in std_logic; stall:in std_logic; encrypt_in:in std_logic; encrypt_shift:in std_logic_vector (4 downto 0); decrypt_shift:in std_logic_vector (4 downto 0); key_in :in std_logic_vector (55 downto 0); din:in std_logic_vector (63 downto 0); din_valid :in std_logic; encrypt_out:out std_logic; key_out :out std_logic_vector (55 downto 0); dout:out std_logic_vector (63 downto 0); dout_valid:out std_logic ); end component; - Inital permutation function des_ip(din:std_logic_vector(63 downto 0) return std_logic_vector; - Final permutation function des_fp(din:std_logic_vector(63 downto 0) return std_logic_vector; - Key permutation, converts a 64 bit key into a 56 bit key, ignoring parity function des_kp(din :std_logic_vector (63 downto 0) return std_logic_vector; - Compression Permutation, converts a 56 bit key into a 48 bits. function des_cp(din :std_logic_vector (55 downto 0) return std_logic_vector; - Expansion permutation function des_ep(din :std_logic_vector (31 downto 0) return std_logic_vector; - S-Box Substitution, 48 bits in, 32 bits out. 杭州电子科技大学 18 function des_sbox(din :std_logic_vector (47 downto 0) return std_logic_vector; - P-Box Permutation function des_pbox(din :std_logic_vector (31 downto 0) return std_logic_vector; - Key Shift function des_keyshift (din :std_logic_vector (55 downto 0); n :std_logic_vector (4 downto 0) return std_logic_vector; end des_lib; 3.2.2 轮密钥的生成 子密匙的生成结构如图4-4所示,DES算法每一轮次迭代都需要一个子密钥, 要采用流水线实现DES算法,就需要提前生成子密钥,随流水进程发送给各模 块。 如果用HDL(硬件描述语言)按照循环移位表一步步得到16轮次迭代的子密 钥,那么16轮子密钥的生成需要做5628次移位运算、16次56位到48位的压缩 置换运算,同时需要56个寄存器存放每一轮子密钥的中间结果。这样不仅语言 描述复杂,占用较多的硬件资源,而且每轮次密钥移位次数不同,需要的运算 时间不同,会给算法的迭代运算带来更大的等待延迟。仔细分析发现,各级子 密钥的获得只是将原始密钥经过换位和不同次数的循环移位,而且每一次迭代 需要的密钥K的每一位,相对原始密钥K的每一位存在固定的关系,计算出这种 关系便可用简单的方法实现子密钥的计算。可以事先通过软件分析,建立子密 钥相对原始密钥的关系表,在硬件实现时直接使用此关系表即可。同时此关系 表的预先生成消除了子密钥之间的相关性,便于子密钥在流水线上动态分发。 此方法简化了子密钥的产生,有效地节约了硬件资源。 杭州电子科技大学 19 64位密匙 置换选择1 C0(28位) D0(28位 ) 循环左移循环右移 C1(28位) D1(28位 ) 循环左移 循环右移 Ci(28位) Di(28位 ) 置换选择2 置换选择2 : : : : : : K1 48位 Ki 48位 (56位) 图3-4 DES的轮密匙生成 设计方案所采用的部分代码: -密钥的生成:将64位的密钥经过置换选择1变成56位的密钥,忽略8个校 检位。 function des_kp(din :std_logic_vector (63 downto 0) return std_logic_vector is variable val :std_logic_vector (55 downto 0); begin val := din(64-57) return val; end des_kp; - 密钥的生成:将56位的经过置换选择2变成48的密钥。 function des_cp(din :std_logic_vector (55 downto 0) return std_logic_vector is variable val :std_logic_vector (47 downto 0); begin val := din(56-14) return val; end des_cp; 3.2.3 S 盒的设计10 10 S盒是DES算法的关键步骤,所有其他的运算都是线性的,而S盒是一个复 杂的非线性函数,正是经过S盒的非线性变换,才使明文实现了较好的混乱,从 而具有较强的安全性。在硬件实现时,S实现具有一定难度,其设计实现的好坏 是影响算法整体加解密速度的主要因素。在设计中,从资源的角度出发,应尽 可能减少FPGA器件中逻辑单元(Logic Element)、嵌入式阵列块(Embedded Array Block,EAB)的耗用,但这可能是以降低系统速度为代价。从速度的角度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学五年级下学期期末英语模拟试卷测试题(带答案)
- (完整版)数学苏教版七年级下册期末质量测试试题A卷答案
- 八年级英语单项选择(50题)练习题含答案-及答案
- (完整版)数学六年级下册期末真题模拟试题(比较难)答案
- 2025年软考中级数据库系统工程师软考真题及答案
- 2025年历届中级经济师建筑专业考试真题及答案
- 产品定价管理制度
- 二级心理咨询师考试多选题练习及答案
- 湘菜五周年活动方案策划
- 美容店里搞活动方案策划
- T-CRHA 028-2023 成人住院患者静脉血栓栓塞症风险评估技术
- 地基事故案例分析
- 国家开放大学《财政与金融(农)》形考任务1-4参考答案
- 英语考级-a级词汇完整版
- 隧道钻爆法掘进施工安全操作规程
- 离婚协议书下载电子版完整离婚协议书下载
- 计算机网络技术专业介绍解析
- 圆锥式破碎机说明书样本
- 九年级英语 第二单元 教案 ·(全)·
- GB/T 37864-2019生物样本库质量和能力通用要求
- GA/T 952-2011法庭科学机动车发动机号码和车架号码检验规程
评论
0/150
提交评论