SHA256的硬件实现.docx
- 文档编号:3999686
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:39
- 大小:321.26KB
SHA256的硬件实现.docx
《SHA256的硬件实现.docx》由会员分享,可在线阅读,更多相关《SHA256的硬件实现.docx(39页珍藏版)》请在冰豆网上搜索。
SHA256的硬件实现
摘要
随着社会信息化的高速发展,信息安全成为人们所关注的焦点。
以哈希算法为重要组成部分的数据摘要算法在信息保护中有着重要地位。
本文所实现的SHA-256算法属于哈希算法中功能较好的一种,以此生成的信息摘要相比于常用的MD5、SHA1具有更高的抗碰撞能力、不可逆性,在信息传递中,结合其他密码技术,能够保证信息完整性及不可否认性。
同时硬件实现SHA-256算法相对于软件实现来说速度快且抗攻击性能力强。
本文的主要工作为:
以FIPSI80-2(FederalInformationProcessingstandard美国联邦信息处理标准)中的SHA256(SecureHsahAlgorithm)为研究基础,以modelsim为仿真软件,结合硬件编程所独有的一些特性,通过编写verilog语言实现SHA256哈希加密算法。
本文的主要内容:
1.包括SHA256的背景和意义,哈希算法、SHA系列的简介和硬件实现算法的优势。
2.介绍SHA256的加密原理,即如何将一个长度小于264的原文经过SHA256算法形成一个具有高碰撞能力的,不可逆性的长度固定为256bits的摘要。
3.本次实现SHA加密系统的构架介绍,实现流程和仿真结果。
关键词:
信息安全;硬件仿真;sha-256;
Abstract
Withtherapiddevelopmentofsocialinformatization,informationsecurityhasbecomethefocusofattention.Datadigestalgorithm,whichisanimportantcomponentofhashalgorithm,playsanimportantroleininformationprotection.
SHA-256algorithmistherealizationofthehashalgorithminfunctionbelongstoakindofgood,comparedtotheinformationgeneratedinthecommonlyusedMD5,SHA1hasanticollisionability,theirreversibilityofthehigher,inthetransmissionofinformation,combinedwithotherencryptiontechnology,canensureinformationintegrityandnonrepudiation.Atthesametime,thehardwareimplementationofSHA-256algorithmisfasterandmoreaggressivethanthesoftwareimplementation.Themainworkofthispaperis:
FIPSI80-2inSHA256basedonModelsimsimulationsoftware,someuniquecharacteristicscombinedwiththehardwareprogramminglanguage,writtenbyVerilogSHA256hashencryptionalgorithm.
Themaincontentofthispaper:
1.,includingthebackgroundandsignificanceofSHA256,thehashalgorithm,theintroductionofSHAseriesandtheadvantagesofhardwareimplementationalgorithm.
2.introducetheencryptionprincipleofSHA256,thatis,howtomakeatextwithalengthlessthan264andpasstheSHA256algorithmtoformasummaryof256bitswithhighcollisionabilityandirreversiblelength.
3.,theimplementationoftheSHAencryptionsystemframework,therealizationoftheflowandsimulationresults
Keyword:
informationsafety;Hardwaresimulation;SHA-256
摘要I
AbstractII
第一章绪论1
1.1研究意义1
1.2研究背景2
1.3本文主要内容及章节安排4
第二章哈希算法简介5
2.1哈希算法的特点5
2.2安全哈希标准7
2.3算法实现方式及选择硬件仿真的原因8
第三章SHA256算法的原理与实现9
3.1SHA246哈希函数9
3.2SHA256具体函数介绍9
3.3SHA256的算法描述10
第四章SHA256加密系统硬件设计与实现16
4.1算法的总体架构16
4.2实现流程23
4.3仿真结果26
第五章总结与期望27
5.1总结27
5.2展望28
参考文献29
附录:
29
致谢33
第一章绪论
1.1研究意义
由于国家现代化建设的高速发展,由于电脑,手机,internet的广泛普及,它们正在不断的影响着每个人的生活方式和节奏。
论坛,邮箱,贴吧,网购等给用户带来更方便的体验的同时也将许多的私人信息和个人数据暴露在网络和存储介质中。
随后不良商家将用户的个人数据作为商品去售卖,从而导致许多恶劣后果,小到信息购买者不断对用户骚扰,大到用户金钱人身安全受到威胁。
因此个人信息和数据的安全开始被人们重视。
最常见也是最高效的保护个人数据信息的方法就是将加密后的个人信息存储或者发送,所以各式各样的加密方法进入人们的视线,并得到了广泛的应用。
密码算法包括加密算法和解密算法,是密码体制的核心。
可以将密码算法当成是一个映射函数。
当输入为原文时,经过这些变换,输出就为密文。
但由于一些算法本身的缺陷,系统的升级以及科技发展,数据面临的风险也大大增加,人们迫切的需求安全性更高的加密算法,SHA安全哈希算法应运而生。
sha1于1993年创立,但随着科学技术的发展,经权威机构证实其不安全性越来越高,sha1指纹造假成本越来越低,所以针对SHA1的改进研究非常有必要,所以将SHA1改进为安全性更高的SHA256,密码摘要更长,更加有利于对抗野蛮攻击,有力的保证了各种信息的安全。
在软件、硬件的选择上,软件加密虽然加密成本低但也存在着消耗大量CPU机时以及被暴力破解等安全隐患。
因此硬件加密技术以其高效率,高可靠性受到越来越多的关注。
1.2研究背景
随着信息技术和Internet的发展,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏,因此信息的原始性和正确性也逐渐变得重要起来。
我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。
比如:
在竞争激烈的大公司中,工业间谍经常会获取对方的情报以此给对方造成经济损失等。
因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。
密码摘要成为保证消息来源正确未被修改的重要技术。
在金融交易,电子商务,电子信件,软件发布,数据存储等领域,数据完整性确认和数据来源鉴定都是很重要的安全服务。
数据加密这一保护信息的行为贯穿在人类的发展史上,并且随着科技的发展,数据传输方法,以及威胁的多样化,使得人们对信息的重要程度的认知不断加深,于是作为密码体制的核心,数据加密技术越来越受到人们的重视,进入了高速发展的通道。
数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文。
数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。
它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用,数字加密有一个非常重要的部分就是数字签名技术,该技术用来提供对信息来源的鉴别,保证信息的完整和不可否认性等。
哈希算法是数字签名技术的重要组成部分,也是应用在信息安全领域最普遍的一个算法,能够实际应用的哈希算法必须满足单向性(one—Way),抗冲突性(Collision—Resistant),映射分布均匀性和差分分布均性。
目前最典型的哈希算法有MD4,MD5,SHA1,SHA2。
其中MD5,SHA1和SHA2可以说是目前应用最广泛的哈希算法,他们都是以MD4为基础设计的.其他一些知名的Hash算法还有MD2,N—Hash,,RIPE—MD,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章总结与展望。
第6章
第二章哈希算法简介
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(SeeureHashStandard,安全哈希标准),是由美国国家标准技术研究所(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所示:
名称
哈希值位数
中间状态位数
块数据大小
最大加密数据位数
内部处理单元位数
循环周期
内部使用逻辑
是否存在漏洞
SHA0
160
160
512
264-1
32
80
+,AND,OR,XOR,ROT
是
SHA1
是
SHA2
SHA256/SHA224
256/224
256
512
264-1
32
40
+,AND,OR,XOR,ROT,shr
否
SHA512/
SHA384
512/348
512
1024
2128-1
64
80
表2.1SHA函数具体参数
本文选用的SHA256哈希函数,可加密0一264bits长度的数据(由于表示数据长度的数据附位加为仅为64位),处理每组数据块大小为512bit,内部的处理单元位数为32位,通过64次迭代运算,最终生成密码摘要。
2.3算法实现方式及选择硬件仿真的原因
该算法可以通过软件或者硬件方法实现,虽然由于软件加密方法成本低,被广泛应用的移动存储介质和网络数据的加密中,但软件加密同时也存在着消耗大量CPU机时以及被暴力破解等安全隐患,而硬件加密中所有的加密信息都是内置在硬件芯片中的,从而使得黑客原本惯用的通过入侵加密信息来盗取资料的手法将会完全失效。
故此本文选择硬件实现SHA256算法。
第三章SHA256算法的原理与实现
3.1SHA246哈希函数
最早的安全哈希函数FIPS180—2是由美国联邦息处理标准(FederalInformationProcessingStandards)发布的基于哈希算法的一个标准,加密系统中使用的SHA256算法就是FIPS180一2标准中SHA2算法中的一种。
下面将对该算法的原理做详细的描述。
3.2SHA256具体函数介绍
Sha256中总共含有6个逻辑函数,以及两个移位函数和8个32bit的初始化的哈希值。
其中每一个函数的操作都是以32bit长度的数据块为单位实现的,与此同时函数中所有的加法运算全部都是mod为232的加法,函数的具体内容由下所示:
算法包含的六种基本函数:
⊕bitwiseXOR
∧bitwiseAND
∨bitwiseOR
¬bitwisecomplement
+mod232addition
Rnrightshiftbynbits
Snrightrotationbynbits
以上6种函数是在sha256加密运算中涉及到的基本函数。
算法中包含的逻辑操作函数:
Ch(x,y,z)=(x^y)⊕(¬x^z)
Maj(x,y,z)=(x^y)⊕(x^z)⊕(y^z)
∑0(x)=S2(x)⊕S13⊕S22(x)
∑1(x)=S6(x)⊕S11⊕S25(x)
Б0(x)=S7(x)⊕S18⊕R3(x)
Б1(x)=S17(x)⊕S19⊕R10(x)
上述几种逻辑操作函数,都是有基本逻辑函数构成,是安全哈希函数的重要的运算方法。
哈希值的初始化:
localparamH0=32'h6a09e667;
localparamH1=32'hbb67ae85;
localparamH2=32'h3c6ef372;
localparamH3=32'ha54ff53a;
localparamH4=32'h510e527f;
localparamH5=32'h9b05688c;
localparamH6=32'h1f83d9ab;
localparamH7=32'h5be0cd19;
3.3SHA256的算法描述
SHA256算法,是将一个长度不大于264bit的报文输入,通过将报文按512bit进行分组处理之后,形成一个长度固定为256bit的摘要。
其中根据算法要求以及原理可以大致分为前后4个主要部分,其中包括:
1.附加填充比特及附加长度值
2.初始化缓存以及数据块扩展
3.处理512bit报文分组序列的循环迭代运算
4.256bits长度的哈希值输出
3.3.1附加填充比特及附加长度值
附加填充比特及附加长度值模块中,首先面临的第一个问题就是对输入的原文进行比特的填充,目的是使原文的数据位数是512的整数倍以便于分组处理,同时还要使填充过后的原文数据中包含有原文数据长度的信息。
具体操作方法如下所述:
加入输入的原文长度为M,在此模块中将M进行末尾增加一个比特位的操作同时将该比特值赋值为‘1’,与此同时添加K个值为0的比特位。
一次满足M+1+K=448mod512的运算,然后再将这个M+1+K=448长度的天冲过后的原文进行有关于原文数据长的数据填充。
即在其后面添加一个64bit的数据块,其值等于明文长度M,做完信息填充后的原文长度一定是512bit的整数倍。
以便于原文的分组处理
图3.1填充数据的位数以及值
如上图3.1原文数据所示,假设我们吧abc三个字母作为原文进行数据输入,通过ASCⅡ码值查阅后可知为上图所示,一共是24bits。
根据上面的描述方法,我们首先要在“abc”后面添加一位bit值为“1”。
与此同时再添加424个值为“0”的比特位,可以满足上文设定即24+1+423等于448对512的取余,再在填充文后面添加上64位的比特,用来表示原文的长度。
如图abc三个字母的二进制长度为24bits。
所以应该填充的数据为:
00...0000..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的数据块,假设第一个32bits的数据段为W1,然后再依次往后第二个为W2,如此排列直到最后一个为W15,即512/16=32bits,又因为迭代运算需要64个32bits值,所以要进行数据扩展以满足64位迭代运算。
图3.2WT的扩展公式
如图3.2所示即为扩展运算的公式。
其中σ1和σ2的表达式为:
Б0(x)=S7(x)⊕S18⊕R3(x)
Б1(x)=S17(x)⊕S19⊕R10(x)
如图要经过64-16=48次扩展运算得出满足64次迭代运算需要的数据。
3.3.3处理512bits报文的循环迭代运算
图3.3循环迭代运算步骤
循环迭代运算如图3.3所示,在这个运算部分里面主要完成的工作是:
计算出当前输入的512bits报文的哈希值,这个部分的具体内容为:
(1)初始化,初始化过程分为两种情况:
第一种情况:
加密数据为第一个32bits数据块,首先要用我们在3.1中的对H0-H7的8个32bits数据块进行8×32bits的迭代运算对内部哈希值初始化。
第二种情况:
如果加密数据不是第一组数据,则使用上一次迭代运算得出的加密结果进行哈希值初始化。
(2)在上一步的初始化结束后,我们应该对a-h进行64次迭代运算进行加密步骤,如上图3.3所示。
其中图3.3中所用的几个公式为:
s0=({a_in[1:
0],a_in[31:
2]})^({a_in[12:
0],a_in[31:
13]})^({a_in[21:
0],a_in[31:
22]});
s1=({e_in[5:
0],e_in[31:
6]})^({e_in[10:
0],e_in[31:
11]})^({e_in[24:
0],e_in[31:
25]});
maj=((a_in&b_in)^(a_in&c_in)^(b_in&c_in));
ch=((e_in&f_in)^((~e_in)&g_in));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SHA256 硬件 实现