SHA256的硬件实现.docx_第1页
SHA256的硬件实现.docx_第2页
SHA256的硬件实现.docx_第3页
SHA256的硬件实现.docx_第4页
SHA256的硬件实现.docx_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东科技大学本科毕业设计(论文)摘要随着社会信息化的高速发展,信息安全成为人们所关注的焦点。以哈希算法为重要组成部分的数据摘要算法在信息保护中有着重要地位。 本文所实现的SHA-256算法属于哈希算法中功能较好的一种,以此生成的信息摘要相比于常用的MD5、SHA1具有更高的抗碰撞能力、不可逆性,在信息传递中,结合其他密码技术,能够保证信息完整性及不可否认性。同时硬件实现SHA-256算法相对于软件实现来说速度快且抗攻击性能力强。本文的主要工作为:以FIPSI80-2(Federal Information Processing standard 美国联邦信息处理标准)中的SHA256 (Secure Hsah Algorithm)为研究基础,以modelsim为仿真软件,结合硬件编程所独有的一些特性,通过编写verilog语言实现SHA256哈希加密算法。本文的主要内容:1.包括SHA256的背景和意义,哈希算法、SHA系列的简介和硬件实现算法的优势。2.介绍SHA256的加密原理,即如何将一个长度小于264的原文经过SHA256算法形成一个具有高碰撞能力的,不可逆性的长度固定为256bits的摘要。3.本次实现SHA加密系统的构架介绍,实现流程和仿真结果。关键词:信息安全;硬件仿真;sha-256; AbstractWith the rapid development of social informatization, information security has become the focus of attention. Data digest algorithm, which is an important component of hash algorithm, plays an important role in information protection.SHA-256 algorithm is the realization of the hash algorithm in function belongs to a kind of good, compared to the information generated in the commonly used MD5, SHA1 has anti collision ability, the irreversibility of the higher, in the transmission of information, combined with other encryption technology, can ensure information integrity and non repudiation. At the same time, the hardware implementation of SHA-256 algorithm is faster and more aggressive than the software implementation.The main work of this paper is:FIPSI80-2 in SHA256 based on Modelsim simulation software, some unique characteristics combined with the hardware programming language, written by Verilog SHA256 hash encryption algorithm.The main content of this paper:1., including the background and significance of SHA256, the hash algorithm, the introduction of SHA series and the advantages of hardware implementation algorithm.2. introduce the encryption principle of SHA256, that is, how to make a text with a length less than 264 and pass the SHA256 algorithm to form a summary of 256bits with high collision ability and irreversible length.3., the implementation of the SHA encryption system framework, the realization of the flow and simulation resultsKey word:information safety;Hard ware simulation;SHA-256目录摘要IAbstractII第一章 绪论11.1研究意义11.2研究背景21.3本文主要内容及章节安排4第二章 哈希算法简介52.1哈希算法的特点52.2安全哈希标准72.3 算法实现方式及选择硬件仿真的原因8第三章 SHA256算法的原理与实现93.1 SHA246哈希函数93.2 SHA256具体函数介绍93.3 SHA256的算法描述103.3.1 附加填充比特及附加长度值113.3.2 初始化缓存以及数据块扩展123.3.3处理512bits报文的循环迭代运算13第四章 SHA256加密系统硬件设计与实现164.1 算法的总体架构164.1.1 数据计算模块174.1.2 extension数据延展模块194.1.3 前端数据处理及迭代运算操作模块204.2 实现流程234.2.1 参数初始化、填充比特值以及附加长度值244.2.2 初始化缓存、原文延展及64次迭代运算244.3仿真结果26第五章 总结与期望275.1总结275.2展望28参考文献29附录:29致谢33V第一章 绪论1.1研究意义 由于国家现代化建设的高速发展,由于电脑,手机,internet的广泛普及,它们正在不断的影响着每个人的生活方式和节奏。论坛,邮箱,贴吧,网购等给用户带来更方便的体验的同时也将许多的私人信息和个人数据暴露在网络和存储介质中。随后不良商家将用户的个人数据作为商品去售卖,从而导致许多恶劣后果,小到信息购买者不断对用户骚扰,大到用户金钱人身安全受到威胁。因此个人信息和数据的安全开始被人们重视。 最常见也是最高效的保护个人数据信息的方法就是将加密后的个人信息存储或者发送,所以各式各样的加密方法进入人们的视线,并得到了广泛的应用。密码算法包括加密算法和解密算法,是密码体制的核心。可以将密码算法当成是一个映射函数。当输入为原文时,经过这些变换,输出就为密文。但由于一些算法本身的缺陷,系统的升级以及科技发展,数据面临的风险也大大增加,人们迫切的需求安全性更高的加密算法,SHA安全哈希算法应运而生。sha1于1993年创立,但随着科学技术的发展,经权威机构证实其不安全性越来越高,sha1指纹造假成本越来越低,所以针对SHA1的改进研究非常有必要,所以将SHA1改进为安全性更高的SHA256,密码摘要更长,更加有利于对抗野蛮攻击,有力的保证了各种信息的安全。在软件、硬件的选择上,软件加密虽然加密成本低但也存在着消耗大量CPU机时以及被暴力破解等安全隐患。因此硬件加密技术以其高效率,高可靠性受到越来越多的关注。 1.2研究背景 随着信息技术和Internet的发展,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏,因此信息的原始性和正确性也逐渐变得重要起来。我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。比如:在竞争激烈的大公司中,工业间谍经常会获取对方的情报以此给对方造成经济损失等。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。密码摘要成为保证消息来源正确未被修改的重要技术。在金融交易,电子商务,电子信件,软件发布,数据存储等领域,数据完整性确认和数据来源鉴定都是很重要的安全服务。 数据加密这一保护信息的行为贯穿在人类的发展史上,并且随着科技的发展,数据传输方法,以及威胁的多样化,使得人们对信息的重要程度的认知不断加深,于是作为密码体制的核心,数据加密技术越来越受到人们的重视,进入了高速发展的通道。数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用,数字加密有一个非常重要的部分就是数字签名技术,该技术用来提供对信息来源的鉴别,保证信息的完整和不可否认性等。哈希算法是数字签名技术的重要组成部分,也是应用在信息安全领域最普遍的一个算法,能够实际应用的哈希算法必须满足单向性(oneWay),抗冲突性(CollisionResistant),映射分布均匀性和差分分布均性。目前最典型的哈希算法有MD4,MD5,SHA1,SHA2。其中MD5,SHA1和SHA2可以说是目前应用最广泛的哈希算法,他们都是以MD4为基础设计的.其他一些知名的Hash算法还有MD2,NHash,RIPEMD,HAVAL等等。同时还有许多没有通过分析和差分攻击考验的算法,大多都已经夭折在实验室里了,因此,如果目前流行的Hash算法能完全符合密码学意义上的单向性和抗冲突性,就保证了只有穷举,才是破坏Hash运算安全特性的唯一方法,有力的保护了信息的安全,而SHA2系列(包括SHA256)又因为摘要密钥比SHA1更长所以更加的安全可靠。 除了算法本身决定其自身加密安全性的同时,实现一个加密算法的所用的方法对数据的安全性也有着很大的影响,目前来讲加密算法可以通过软件,加密芯片和硬件编程来实现,但是当面对海量的加密数据时,软件加密将占用大量的CPU机时来完成,从而影响到整个系统的速度。并且当软件加密算法面对像暴力破解软件,产品格式化,把存储数据的闪存芯片拆除等极端方式时,软件加密都可以轻易的被破解。相比之下硬件加密中所有的加密信息都是内置在硬件芯片中的,从而使得黑客原本惯用的通过入侵加密信息来盗取资料的手法将会完全失效。同时硬件加密技术对数据信息处理速度的延迟时间主要由门电路的延迟产生,因此处理器就有足够的时间来处理其他的任务,提高整个系统的效率,这也是本文选择硬件实现的原因。 1.3本文主要内容及章节安排 本文首先介绍了数字加密的重要性以及几种基本算法,简明扼要的阐述了各种算法的基本思路之后介绍传统的sha256算法原理,SHA256算法已经普遍应用在数据加密及数据签名中,本文主要将sha256加密算法进行modelsim仿真实现,通过modelsim仿真,实现sha256 关于固定长度24位的原文加密。本文内容安排: 第一章 绪论,介绍了课题研究的背景以及研究的意义,深入分析了课题的背景,阐述课题要实现的目标。 第二章 哈希算法的简介,我通过介绍比较常见的HASH加密算法以及特点从而引出了许多论文相关的概念,并做了一些相关介绍以方便读者更好的理解该篇文章。 第三章 sha256算法的原理与实现。在本章中根据SHA256算法的结构,介绍了算法所用的具体函数,哈希值的初始化,并通过对其SHA256具体函数的描述介绍了数据加密的原理及其整个加密流程。第4章 SHA256加密系统与硬件设计。本章主要以第三章介绍的SHA256算法为基础,画出总体系统架构,将每个模块具体分析,以abc作为输入详细描述数据处理流程,最后得到仿真结果。第5章 总结与展望。第二章 哈希算法简介 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,这段消息摘要被称为哈希值。 哈希值是哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,也是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文,哪怕只更改该段落的一个字母,随后的哈希算法都将产生两个极为不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性和正确性。一般用于快速查找和加密算法。 2.1哈希算法的特点 这里的HASH算法不是大学里数据结构课里那个HASH表的算法。这里的HASH算法是密码学的基础,比较常用的有MD5和SHA,优秀的哈希算法具有的最重要的两条性质,就是不可逆和无冲突。所谓不可逆,就是当你知道x的HASH值,无法求出x;所谓无冲突,就是当你知道x,无法求出一个y, 使x与y的HASH值相同。也就是这两者保证了只要哈希算法的摘要足够长,那么就具有高抗碰撞能力破解难度极大。该算法是将任意长度的二进制值映射为固定长度的较小的二进制值,前者通常称为数据的原值,最后得到的固定长度的二进制值则称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表达形式,即使数据的原值只改变一个标点符号,那么随后的哈希运算将会产生完全不同的哈希值,因此良好的映射分布均匀性和差分分布均匀性是保证哈希算法安全性的必要条件。所以最基本的哈希算法有以下三点组成:(1)如果知道信息(M),可以很容易得到哈希值h。(2)如果知道哈希值h,却无法通过任何算法得到信息M。(3)很难找到另一条信息M.使得,H(M.)=H(M)。 由于哈希函数提供了数据原值和哈希值之间的这种独特关系,因此就可以用验证长度小得多的哈希值来代替大量消息的验证,大大减少了验证数据的工作量,节约了时间。MD5,SHA1,和SHA2系列是目前最有名的哈希函数。但由于MD5和SHA1己经被验证存在抗冲突性的安全隐患。 由于哈希值是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列结果一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。2.2安全哈希标准 SHA(Seeure Hash Standard,安全哈希标准),是由美国国家标准技术研究所(NIST)和美国国家安全局(NSA)一同设计的杂凑算法,是使用最为广泛的安全杂凑算法之一。该算法与1993年5月起采纳为标准,分别为SHA,SHA1和SHA2。其中SHA2包括SHA224,SHA256,SHA384,SHA512。由于SHA在1993年发布不久后被验证存在重大的漏洞,所以很快就被新的SHA1版本所取代。随后在2005年,SHAI算法被验证存在算法上的漏洞,尽管SHA2在算法结构上和SHA1相同,但是由于算法数据位数的增加,使得SHA2避免了SHA1上存在的漏洞。SHA,SHA1,SHA2的描述如表2.1所示:名称哈希值位数中间状态位数块数据大小最大加密数据位数内部处理单元位数循环周期内部使用逻辑是否存在漏洞SHA0160160512264-13280+,AND,OR,XOR,ROT是SHA1是SHA2SHA256/SHA224256/224256512264-13240+,AND,OR,XOR,ROT,shr否SHA512/SHA384512/34851210242128-16480表2.1 SHA函数具体参数本文选用的SHA256哈希函数,可加密0一264 bits长度的数据(由于表示数据长度的数据附位加为仅为64位),处理每组数据块大小为512bit,内部的处理单元位数为32位,通过64次迭代运算,最终生成密码摘要。 2.3 算法实现方式及选择硬件仿真的原因 该算法可以通过软件或者硬件方法实现,虽然由于软件加密方法成本低,被广泛应用的移动存储介质和网络数据的加密中,但软件加密同时也存在着消耗大量CPU机时以及被暴力破解等安全隐患,而硬件加密中所有的加密信息都是内置在硬件芯片中的,从而使得黑客原本惯用的通过入侵加密信息来盗取资料的手法将会完全失效。故此本文选择硬件实现SHA256算法。 第三章 SHA256算法的原理与实现3.1 SHA246哈希函数最早的安全哈希函数FIPS1802是由美国联邦息处理标准(Federal Information Processing Standards)发布的基于哈希算法的一个标准,加密系统中使用的SHA256算法就是FIPS180一2标准中SHA2算法中的一种。下面将对该算法的原理做详细的描述。3.2 SHA256具体函数介绍Sha256中总共含有6个逻辑函数,以及两个移位函数和8个32bit的初始化的哈希值。其中每一个函数的操作都是以32bit长度的数据块为单位实现的,与此同时函数中所有的加法运算全部都是mod为232的加法,函数的具体内容由下所示:算法包含的六种基本函数 : bitwise XOR bitwise AND bitwise OR bitwise complement+ mod 232additionRn right shift by n bitsSn right rotation by n bits以上6种函数是在sha256加密运算中涉及到的基本函数。 算法中包含的逻辑操作函数:Ch(x,y,z) = (xy)( xz)Maj(x,y,z) = (xy)(xz)(yz)0(x) = S2(x)S13S22(x)1(x) = S6(x)S11S25(x)0(x) = S7(x)S18R3(x)1(x) = S17(x)S19R10(x)上述几种逻辑操作函数,都是有基本逻辑函数构成,是安全哈希函数的重要的运算方法。哈希值的初始化:localparam H0 = 32h6a09e667;localparam H1 = 32hbb67ae85;localparam H2 = 32h3c6ef372;localparam H3 = 32ha54ff53a;localparam H4 = 32h510e527f;localparam H5 = 32h9b05688c;localparam H6 = 32h1f83d9ab;localparam H7 = 32h5be0cd19;3.3 SHA256的算法描述SHA256算法,是将一个长度不大于264bit的报文输入,通过将报文按512bit进行分组处理之后,形成一个长度固定为256bit的摘要。其中根据算法要求以及原理可以大致分为前后4个主要部分,其中包括:1. 附加填充比特及附加长度值2. 初始化缓存以及数据块扩展3. 处理512bit报文分组序列的循环迭代运算4.256bits长度的哈希值输出3.3.1 附加填充比特及附加长度值 附加填充比特及附加长度值模块中,首先面临的第一个问题就是对输入的原文进行比特的填充,目的是使原文的数据位数是512的整数倍以便于分组处理,同时还要使填充过后的原文数据中包含有原文数据长度的信息。具体操作方法如下所述: 加入输入的原文长度为M,在此模块中将M进行末尾增加一个比特位的操作同时将该比特值赋值为1,与此同时添加K个值为0的比特位。一次满足M+1+K = 448 mod 512的运算,然后再将这个M+1+K=448长度的天冲过后的原文进行有关于原文数据长的数据填充。即在其后面添加一个64bit的数据块,其值等于明文长度M,做完信息填充后的原文长度一定是512bit的整数倍。以便于原文的分组处理图3.1 填充数据的位数以及值如上图3.1原文数据所示,假设我们吧a b c三个字母作为原文进行数据输入,通过ASC码值查阅后可知为上图所示,一共是24bits。 根据上面的描述方法,我们首先要在“abc”后面添加一位bit值为“1”。与此同时再添加424个值为“0”的比特位,可以满足上文设定即 24+1+423 等于 448对512的取余,再在填充文后面添加上64位的比特,用来表示原文的长度。 如图abc三个字母的二进制长度为 24 bits。所以应该填充的数据为:00.00 00.011000。长度为64位,省略号表示为0。3.3.2 初始化缓存以及数据块扩展 SHA256运算过程中要进行初始化缓存,这个存储器是256bit的,来存放哈希运算过程中的中间结果和最终结果。该缓存表示为:H1=0x6A09E667 ; H2=0xBB67AE85 ;H3=0x3C6EF372 ; H4=0xA54FF53A ;H5=0x510E527F ; H6=0x9B05688C ;H7=0x1F83D9AB ; H8=0x5BE0CD19 ; SHA256对原文的处理是512bits的数据块作为基本处理单元,每次处理的步骤每次读入第N个512bits的数据块之后,算法将512bits的数据分成16份的32bits的数据块,假设第一个32 bits的数据段为W1,然后再依次往后第二个为W2,如此排列直到最后一个为W15,即 512/16=32 bits,又因为迭代运算需要64个32bits值,所以要进行数据扩展以满足64位迭代运算。图3.2 WT的扩展公式 如图3.2所示即为扩展运算的公式。 其中1和2的表达式为: 0(x) = S7(x)S18R3(x) 1(x) = S17(x)S19R10(x) 如图要经过64-16=48次扩展运算得出满足64次迭代运算需要的数据。3.3.3处理512bits报文的循环迭代运算图3.3 循环迭代运算步骤 循环迭代运算如图3.3所示,在这个运算部分里面主要完成的工作是:计算出当前输入的512bits 报文的哈希值,这个部分的具体内容为:(1) 初始化,初始化过程分为两种情况:第一种情况:加密数据为第一个32bits 数据块,首先要用我们在3.1中的对H0-H7的8个32bits数据块进行832bits的迭代运算对内部哈希值初始化。第二种情况:如果加密数据不是第一组数据,则使用上一次迭代运算得出的加密结果进行哈希值初始化。 (2)在上一步的初始化结束后,我们应该对a-h进行64次迭代运算进行加密步骤,如上图3.3所示。其中图3.3中所用的几个公式为:s0=(a_in1:0,a_in31:2)(a_in12:0,a_in31:13)(a_in21:0,a_in31:22);s1=(e_in5:0,e_in31:6)(e_in10:0,e_in31:11)(e_in24:0,e_in31:25);maj = (a_in & b_in) (a_in & c_in) (b_in & c_in);ch = (e_in & f_in) (e_in) & g_in);在运算中每一次都要使用一个32bits的常数值,即常数K的值是由固定的HASH表来查找和设定。其中SHA256的哈希表如下所示:图3.4 K值得固定缓存表 (3)用2中的步骤,按部就班的完成64次循环迭代运算后,将结果a-h与第一步所设定的初始值进行模232 的加法运算,上面的计算就是不断更新 a,b,ch这 32bit*8 。在每个512bit的分组里面迭代计算64次。得到本次运算的哈希值如下所示:H0(i)=a+H0(i-1);H1(i)=b+H1(i-1);H2(i)=c+H2(i-1);H3(i)=d+H3(i-1);H4(i)=e+H4(i-1);H5(i)=f+H5(i-1);H6(i)=g+H6(i-1);H7(i)=h+H7(i-1);(3) 重复上面1-3得步骤,直到所有的512-bit分组处理完毕后,对于SHA-256算法最后一个分组产生的输出便是256-bit的报文摘要。第四章 SHA256加密系统硬件设计与仿真实现 根据第三章中介绍的SHA256算法以及硬件实现的优势,在本章中具体的的描述如何用硬件语言设计电路,实现一些功能。 本次研究使用的是modelsim仿真环境,下面我们就从modelsim上进行verilog仿真实现SHA256.这里仅以24bits长度的原文进行SHA256加密,来解释整个流程如何用硬件描述语言来将描述SHA256的全部函数及各个模块4.1 算法的总体架构图4.1 SHA256加密系统总体架构如图4.1所示为本次设计的硬件架构图,按照对信息处理的功能,整个SHA256可以分为数据处理模块和哈希值计算模块,这两个部分依据SHA256算法中的描述,分别完成输入数据的预处理和哈希值循环计算两个功能,整个模块的外部接口只有明文输入和哈希值输出。下面我就分别介绍各个模块。4.1.1 数据计算模块图4.2 数据计算模块框架图图4.3 数据计算模块模型计算模块的各个信号的功能介绍clk系统时钟信号,为整个算法提供输入信号Rst异步复位信号,高电平有效Kt32位数据入口Wt32位数据入口a-h(input)256位初始化哈希值输入信号a-h(output)256位初始化哈希值输出信号表4.1各个信号的功能描述计算模块的功能是按照图3.3中步骤中的算法,接收当前储存哈希值寄存器的数据,将这8个输入进行计算生成下组数据并作为下次运算的输入。在这个模块中计算的过程中会不断的读取哈希表中的值和原文值,即Ki中的储存的固定的常数值和Wi中存储的原文数据,来满足计算的条件。 根据算法的要求,在计算过程中。b,c,d,f,g,h是不需要计算的,而是直接从循环中直接得到赋值的分别是上次运算中的a,b,c,d,e,f,g。且a,e可以根据前一个周期中a一h的值计算出来,如下所示:Et+1=dt+1(et)+CH(et,ft,gt)+ht+kt+WtAt+1=0(a)+maj(at,bt,ct)+1(et)+CH(et,ft,gt)+ht+Kt+Wt这样经过64次迭代运算就可以得到处理完当前512bit数据组所对应的哈希值,也是下组哈希运算的初始值。4.1.2 extension数据延展模块图4.4 数据扩展模块框架图图4.5 数据延伸模块的模型如图4.5是SHA256的extension模块的具体模型,各个信号的功能描述如表4.2所示名称功能Clk 外部时钟输入,为整个算法提供时钟输入信号Rst异步复位信号,高电平有效W_16 , W_15, W_7 W_2数据输入信号,宽度为32bitsWi数据输出信号,宽度为32bits表4.2 各信号功能描述经过补充比特所得到的原文长度为512bits,所以将32bits的数据块依次存储到16个32bits的寄存器中,然后的算法依图3.2公式计算,将数据扩张成64x32bits的数据块,每一个新的数据块的产生,假设需要延展数据块的位置为Wi (16i63),则需要前面的WI-16 WI-15 WI-7 WI-2四个数据块计算得出,所以需要对当前的WI-16 WI-15 WI-7 WI-2 进行选择和输入,这项步骤在主模块里实现,也就是存储器W的读出操作,这里用了一个计数器进行控制,再将这四个值发送的延展模块里,这里W16 , W15, W7 W2对应的就是当前I值所对应的WI-16 WI-15 WI-7 WI-2 。然后进行运算得64次迭代运算所需要的扩充后的原文。得出的结果输出到主模块并储存在对应的寄存器中。4.1.3 前端数据处理及迭代运算操作模块这个模块主要是用来接收输入数据,并将输入数据进行处理生成计算模块、扩展模块所需要的数据,即前端数据处理,主要包括H,K值得初始化,填充bit附加长度值。前端数据处理完成后就开始进行数据的计算,通过计时器来控制各个寄存器的读出和写入,准确的为延展和计算模块提供数据,以完成子模块的各个功能。图4.6 前端数据处理及迭代运算操作模块原理图名称功能RST复位信号,输入无效,不进行运算msg_in原文数据入口Ready用“0”来表示运算运算次数未达到64用“1”表示运算状态已达到64次Msg_out哈希值出口。表4.3 各个信号的功能再如下面将各个模块连接起来,来实现SHA256的整个流程,模块调用如下所示:延展模块调用:extension E (.clk(clk ),.rst(rst ), .w_16(w_16),.w_15(w_15),.w_7(w_7 ),.w_2(w_2 ),.w(w_ex );计算模块调用:main_loop M (.clk(clk),.rst(rst),.k(k),.w(w_in),.a_in(a_in),.b_in(b_in),.c_in(c_in),.d_in(d_in),.e_in(e_in),.f_in(f_in),.g_in(g_in),.h_in(h_in),.a_out(a_out),.b_out(b_out),.c_out(c_out),.d_out(d_out),.e_out(e_out),.f_out(f_out),.g_out(g_out),.h_out(h_out); 4.2 实现流程 图4.4 SHA256加密流程图4.4所示为SHA256的加密流程,以abc作为输入为例进行本次研究内容SHA256进行加密的全部流程。这里将流程大致分为两步:1. 前端数据处理:参数初始化、填充比特值以及附加长度值。2. 算法计算:初始化缓存、原文延展和64次迭代运算。4.2.1 参数初始化、填充比特值以及附加长度值整个流程之初首先要进行参数的初始化,参数包括H和K。H0-H8在第一次加密运算时作为哈希值存储器的初始化数值进行加密运算,K是运算中需要的常数值。由于原文输入为abc,进行转码之后为:011000010110001001100011。即msg_in=24h616263。所以需要填充比特值,并附加长度值。图4.5 abc填充bit及附加长度值示例如图4.5所示为abc填充bit和长度值之后的形式,然后将这组数据存放到Wt中。又因为长度abc的原始长度为24,所以不需要原文分组,进行下一步。此时Wt中只有16个寄存器是有数据的,因为每个寄存器为32位,所以512bits输入数据msg_out的存储只需要16个就可以满足存储需求,但是实际运算中需要64个与原文有关的32位数据,这就是为什么要进行原文扩展的原因。4.2.2 初始化缓存、原文延展及64次迭代运算数据分组之后首先进行初始化缓存,将a-h用参数H0-H7进行赋值,用来作为初始值。这时参数的准备工作完全完成,下面进行原文的扩展。64次迭代运算需要64个长度为32bit的原文,而输入的原文长度为512,所以需要从Wt中提取原文输送到延展模块进行延伸。依图3.3公式计算,将数据扩张成64x32bits的数据块,每一个新的数据块的产生,假设该数据块的位置为Wi (16i63),则需要前面的WI-16 WI-15 WI-7 WI-2四个数据块计算得出,所以需要对当前的WI-16 WI-15 WI-7 WI-2 进行选择和输入,这项步骤在主模块里实现,这里W16 , W15, W7, W2对应的就是当前I值所对应的WI-16 WI-15 WI-7 WI-2 ,为了方便表示所以简化来写。在abc的数据延展中。生成W16需要往延展模块中输入 W0,W1,W9,W14. 。也需要往计算模块输入a-h,wt,Kt ,这里定义了一个reg7 cycle 来控制Wt的读写操作,开始工作后的第一个时钟上升cycle=0为例,此时延展模块需要将W0,W1,W9,W14作为延展模块的输入进行计算,并在下一个时钟上升沿来临时将计算结果写入到W16中,cycle=cycle+1b1;当输入为abc时W0 = 01100001011000100110001110000000;W1=00000000000000000000000000000000;W9=00000000000000000000000000000000;W14=00000000000000000000000000000000;此时延展模块接收这些数据,进行图3.2处理形成输出w16。,同时往计算模块中输入H0-H7,W0,K0。进行图3.3处理形成新的a-h,并作为下次运算的哈希初始值。用来表示迭代运算是否完成的ready赋值为0;如此进行64次迭代预算,此时将ready置为1,表示运算达成,将最后一次输出的a_out-h_out与H0-H7进行32位的加法,得出最后的哈希值,就是我们所需要的信息的指纹。msg_out=(H0+a_out),(H1+b_out),(H2+c_out),(H3+d_out),(H4+e_out),(H5+f_out),(H6+g_out),(H7+h_out); 。4.3仿真结果仿真中我们对“a,b,c”进行SHA256加密运算,并对加密后的结果与网上在线测试进行比对,注意由于网页输入与modelsim输入存在编码方式的不同一个是8位一个4位,所以我们对abc进行加密,在modelsim中的输入应为“msg_in=24h616263”如下面所示:SHA256(abc)=ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad图5.1 modelsim的仿真结果图图5.2 网页在线加密结果图如图5.1和5.2所示:在线加密与modelsim仿真出的结果完全一致,仿真成功 。第5章 总结与期望5.1总结本次研究成功完成了SHA256加密算法任务书上的所有要求,实现该加密算法的关键为如何用硬件语言准确的表示出算法实现过程用到的各个函数,如何对原文的扩展以及如何进行时序约束以准确的进行64次迭代运算。研究之初,在老师的帮助下,度过了最艰难的时期,通过拾起过去所学的内容,网上查找有关资料,以及老师的指导。从一点不懂到脑子中有了整个研究的轮廓,对自己研究的工作方向和方法有了把握,最终成功完成本次研究。本次研究,遇到了非常多的问题,比如测试文件中没有写初始化导致输出为红线,case语句中没写default导致输出错误,寄存器的定义和使用不正确使得计算模块输出错误,时序没有约束好,仿真结果与正确结果不符,修改时序之后对比仿真结果发现仍然不同,通过查阅资料,研究代码,最终找出原因。在一系列发现问题解决问题过后成功实现了SHA256加密算法的硬件仿真。通过本次研究也懂了许多关于算法加密得方法、硬件实现的规则、最重要的是在发现问题解决问题的过程中,在老师的指导下明白了严谨的重要性,层出不穷的语法错误,论文格式问题带给我的麻烦远超想象,计算机基础不牢固,比如网页输入要经过ACS码转码这种常识也成为我成功实现仿真的绊脚石。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。5.2展望 安全哈希算法SHA256的硬件实现在SHA1的算法上进行改进,增加了算法的安全性,同时硬件实现也比软件实现更加可靠与高效,但仍有需要改进的地方。所以之后需要研究的重点为:1.本次我只研究了固定长度为24bits的原文加密,之后的研究方向重点是实现任意长度不大于264的原文加密。2.SHA256只是在modelsim上仿真成功,quartus综合布线。并没有根据进行算法的优化。3密码摘要越长,冲突的可能性越低,所以之后应该尝试实现更长的摘要算法参考文献1.Daniel Caragata,Safwan El Assad,Development of Some Encryption Algorithms Using Chaotic FunctionsM,LAP Lambert Academic Publishing,2011,6-302.M.M.J.Stevens,On Collisions for MD5J,2007,6-33.Raphael Weber,A Bit-Serial Implementation of the AES Encryption AlgorithmM,VDM Verlag,2011,1-12.4 Haller N, Metz C, Nesser P, Straw M. A one-time password system. RFC 2289, February 1998. 5 Dierks T, Allen C. The TLS protocolVersion 1.0. RFC 2246, January 1999.6.龚源泉,沈海滨,何乐年,严晓浪。sha1加密算法的硬件设计,20047.杨晓辉,戴紫衫。基于FPGA的SHA-256算法实现,20068郭文平,刘政林,陈以诚,等。高吞吐率,低能耗的SHA-1加密算法的件实j.微电子学与计算机,2008,25:76-79.9黄谆,白国强,陈弘毅.快速实现SHA2算法的硬件结构J。清华大学学报:自然科学版,2005,451):123-125,129.30致谢首先,我要感谢我的老师,张德学副教授。感谢张老师在本科期间对我的支持和指导。张老师在给我指导让我受益匪浅,明白了一个科研工作者严谨扎实的作风和灵活的学习方法,使我受益匪浅,这些都深深地影响着我的学习和生活。其次我要感谢我的父母,23年的养育之恩,您们付出太多的汗水和努力,感谢您们的关怀,感谢您们为我付出的一切,同时感谢各位老师对我论文的评审。最后我要感谢我的舍友在我学习生活中给予我的鼓励与支持,感谢440的所有兄弟,因为有你们生活如此精彩!附录1:Extension WT扩展模块module extension (clk,rst, w_16, w_15, w_7, w_2, w); input clk, rst; input31:0 w_16, w_15, w_7, w_2; output reg 31:0 w;always (posedge clk) beginif (rst) begin /active high resetw = 32b0; end else beginw3)+(w_216:0,w_231:17)(w_218:0,w_231:19)(w_210); endend Endmodule计算模块:module main_loop(clk,rst,k,w,a_in,b_in,c_in,d_in,e_in,f_in,g_in,

温馨提示

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

评论

0/150

提交评论