关键词不能为空

当前您在: 主页 > 英语 >

SHA256的硬件实现

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-17 22:29
tags:

-

2021年2月17日发(作者:patiently)


山东科技大学本科毕业设计(论文)



摘要



随着社会信息化的高速发展,信 息安全成为人们所关注的焦点。以哈


希算法为重要组成部分的数据摘要算法在信息保护中 有着重要地位。




本文所实现的


SHA-256


算法属于哈希算法中功能较好的一种,


以此生


成的信息摘要相比于常用的


MD5

< p>


SHA1


具有更高的抗碰撞能力、


不可逆性,


在信息传递中,结合其他密码技术,能够保证信息完整性及不可否 认性。


同时硬件实现


SHA-256


算 法相对于软件实现来说速度快且抗攻击性能力


强。



本文的主要工作为:




FIPSI80-2



Federal Information Processing standard


美国联


邦信息处理标准)中的


SHA256



Secure Hsah Algorithm


)为研究基础,



modelsim


为仿真软件,结合硬件编程所独有的一些特性,通过编写


verilog


语言实现


SHA256


哈希加密算法。



本文的主要内容:



1.


包括


SHA256


的背景和意义 ,哈希算法、


SHA


系列的简介和硬件实现

算法的优势。



2.


介绍


SHA256


的加密原理,即如何将一个长度小于


2


64


的原文经过


SHA256


算法形成一个具有高碰撞能力的,不可逆性的长度固定为


256bi ts


的摘要。



3.

< br>本次实现


SHA


加密系统的构架介绍,实现流程和仿真结 果。



关键词:信息安全;硬件仿真;


sha-256






Abstract


With the rapid development of social informatization, information security



I


山东科技大学本科毕业设计(论文)



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 main work of this paper is:


FIPSI80-2in


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 results


Key



word



information safety



Hard ware simulation< /p>



SHA-256






II


山东科技大学本科毕业设计(论文)



目录



摘要


.................................................. ............................................ I


Abstract .............................. .................................................. ........ I


第一章



绪论



.


.. .................................................. ........................... 1


1.1


研究意义


.


.................................... .................................................. ..........


1



1.2


研究背景


.


.................................... .................................................. ..........


1



1.3


本文主要内容及章节安排



.


............................. .......................................


4



第二章



哈希算法简介



.

................................................ ................ 5


2.1


哈希算法的特点



.


................................. .................................................. .


5



2.2


安全哈希标准



.


.................................. .................................................. ....


7



2.3


算法实现方式及选择硬件仿真的原因



.


...................................... .........


8



第三章



SHA256


算法的原理与实现


............................................ 9


3.1 SHA246


哈希函数


.. .................................................. ...............................


9



3.2 SHA256


具体函数介绍


............... .................................................. ..........


9



3.3 SHA256


的算法描述


................ .................................................. ...........


1


0


3.3.1


附加填充比特及附加长度值


................................


10


3.3.2


初始化缓存以及数据块扩展


................................


12


3.3.3


处理


512bits


报文的循环迭代运算



...........................


13


第四章



SHA256


加密系统硬件设计与实现



.


........................... ... 16


4.1


算法的总体架构



.

< br>............................................... ..................................


1


6


4.1.1


数据计算模块



.......... ..................................


17


4.1.2 extension


数据延展模块



...................................


19


4.1.3


前端数据处理及迭代运算操作模块


..........................


20


4.2


实现流程


< br>.


................................... .................................................. ........


2


3


4.2.1


参数初始化、填充比特值以及附加长度值


....................


23


4.2.2


初始化缓存、原文延展及


64


次迭代运算


.....................


24


4.3


仿真结果


.


.................................... .................................................. ........


2


5


第五章



总结与期望


...................... ............................................ 27


5.1


总结



.


...................................... .................................................. ..............


2


7



III


山东科技大学本科毕业设计(论文)



5.2


展望



.


...................................... .................................................. ..............


2


7


参考文献


....................... .................................................. .......... 28


附录:


.......... .................................................. ............................. 1


致谢


......................... .................................................. .................. 5



IV


山东科技大学本科毕业设计(论文)



第一章



绪论



1.1


研究意义








由于国家现代化建设的高速发展


,由 于电脑,手机,


internet


的广泛普

及,它们正在不断的影响着每个人的生活方式和节奏。论坛,邮箱,贴吧


,


网购等给用户带来更方便的体验的同时也将许多的私人信息和个人数据暴


露在网络和存储介质中。


随后不良商家将用户的个人数据作为商品去售卖,


从而导致许多恶劣后果,小到信息购买者不断对用户骚扰,大到用户金钱


人身 安全受到威胁。因此个人信息和数据的安全开始被人们重视。




最常见也是最高效的保护个人数据信息的方法就是将加密后的个人信

息存储或者发送,所以各式各样的加密方法进入人们的视线,并得到了广


泛的应用。


密码算法包括加密算法和解密算法,是密码体制的核心。可以


将 密码算法当成是一个映射函数。当输入为原文时,经过这些变换,输出


就为密文。但由于 一些算法本身的缺陷,系统的升级以及科技发展


,数据


面临的风 险也大大增加,人们迫切的需求安全性更高的加密算法,


SHA



全哈希算法应运而生。


sha1


于< /p>


1993


年创立,但随着科学技术的发展,经

权威机构证实其不安全性越来越高,


sha1


指纹造假成本 越来越低,所以针



SHA1


的改进研 究非常有必要,


所以将


SHA1


改进为 安全性更高的


SHA256



密码摘要 更长,


更加有利于对抗野蛮攻击,


有力的保证了各种信息的安全 。



在软件、硬件的选择上,软件加密虽然加密成本低但也存在 着消耗大



CPU


机时以及被暴力破解 等安全隐患。因此硬件加密技术以其高效率,


高可靠性受到越来越多的关注。

< p>



1.2


研究背景


随着信息技术和


Internet


的发展,


信息可以帮助团体或个人,


使他们



1


山东科技大学本科毕业设计(论文)



受益,同样,信息也可以用来对他们构成威胁,造成破坏,因此信息的原


始性和正确性也 逐渐变得重要起来。我们经常需要一种措施来保护我们的


数据,防止被一些怀有不良用心 的人所看到或者破坏。比如:在竞争激烈


的大公司中,


工业间谍 经常会获取对方的情报以此给对方造成经济损失等。


因此,在客观上就需要一种强有力的 安全措施来保护机密数据不被窃取或


篡改。


密码摘要成为保证消 息来源正确未被修改的重要技术。


在金融交易,


电子商务,电子 信件,软件发布,数据存储等领域,数据完整性确认和数


据来源鉴定都是很重要的安全服 务。




数据加密这一保护信息 的行为贯穿在人类的发展史上,并且随着科技


的发展,数据传输方法,以及威胁的多样化 ,使得人们对信息的重要程度


的认知不断加深,于是作为密码体制的核心,数据加密技术 越来越受到人


们的重视,进入了高速发展的通道。数据加密又称密码学,它是一门历史< /p>


悠久的技术,指通过加密算法和加密密钥将明文转变为密文。数据加密目

< br>前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术


对信息进 行加密,实现信息隐蔽,从而起到保护信息的安全的作用,数字


加密有一个非常重要的部 分就是数字签名技术,该技术用来提供对信息来


源的鉴别,保证信息的完整和不可否认性 等。



哈希算法是数字签名技术的重要组成部分,也是应用在信 息安全领域


最普遍的一个算法,


能够实际应用的哈希算法必须满 足单向性


(one



Way)



抗冲突性


(Collision



Resistant)


,映射分布均匀性和差分分 布均性。目


前最典型的哈希算法有


MD4



MD5



SHA1



SHA2




其中


MD5



SHA1



SHA2


可以说是目前应用最广泛的哈希 算法,


他们都


是以


MD4


为基础设计的


.


其他一些知名的

Hash


算法还有


MD2



N



Hash


,,< /p>


RIPE



MD



HAVAL


等等。同时还有许多没有通过分析和差分攻击考验 的算


法,大多都已经夭折在实验室里了,因此,


如果目前流行的


Hash


算法能完



2


山东科技大学本科毕业设计(论文)



全符合密码学意义上的单向性和抗冲突性,就保证了只有穷举,才是破坏


Hash


运算安全特性的唯一方法,有力的保护了信息的安全,而


SHA2


系列


(包括


SHA256

< br>)又因为摘要密钥比


SHA1


更长所以更加的安全可靠。




除了算法本身决定其自身加密安全 性的同时,实现一个加密算法的所


用的方法对数据的安全性也有着很大的影响,目前来讲 加密算法可以通过


软件,加密芯片和硬件编程来实现,但是当面对海量的加密数据时,软 件


加密将占用大量的


CPU


机时来完成 ,从而影响到整个系统的速度。并且当


软件加密算法面对像暴力破解软件,产品格式化, 把存储数据的闪存芯片


拆除等极端方式时,软件加密都可以轻易的被破解。相比之下硬件 加密中


所有的加密信息都是内置在硬件芯片中的,从而使得黑客原本惯用的通过


入侵加密信息来盗取资料的手法将会完全失效。同时硬件加密技术对数据


信息处理速度的延迟时间主要由门电路的延迟产生,因此处理器就有足够


的时间来处理其 他的任务,提高整个系统的效率,这也是本文选择硬件实


现的原因。










3


山东科技大学本科毕业设计(论文)




1.3


本文主要内容及章节安排





本文首先介绍了数字加密的 重要性以及几种基本算法,简明扼要的阐


述了各种算法的基本思路之后介绍传统的


sha256


算法原理,


SHA256


算法


已经普遍应用在数据加密及数据签名中,


本文主要将


sha256


加密算法进行


modelsim


仿真实现,通过


modelsim

< p>
仿真,实现


sha256


关于固定长度


24


位的原文加密。本文内容安排:




第一章



绪 论,介绍了课题研究的背景以及研究的意义,深入分析了


课题的背景,阐述课题要实现的 目标。




第二章



哈希算法的简介,

< p>
我通过介绍比较常见的


HASH


加密算法以及


特点从而引出了许多论文相关的概念,并做了一些相关介绍以方便读者更

好的理解该篇文章。




第三章


sha256


算法的原理与实 现。在本章中根据


SHA256


算法的结


构,介绍了算法所用的具体函数,哈希值的初始化,并通过对其


SHA256



体函数的描述介绍了数据加密的原理及其整个加密流程。



第四章



SHA256< /p>


加密系统与硬件设计。


本章主要以第三章介绍的

< br>SHA256


算法为基础,画出总体系统架构,将每个模块具体分析,以


abc


作为输入


详细描述数据处理流程,最后得 到仿真结果。



第五章



总结与展望。






4


山东科技大学本科毕业设计(论文)




第二章



哈希算法简介



Hash


,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意


长度 的输入(又叫做预映射,


pre-image


),通过散列算法 ,变换成固定长


度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值


的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而


不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消


息压缩 到某一固定长度的消息摘要的函数,这段消息摘要被称为哈希值。




哈希值是哈希算法将任意长度的二进制值映射为较短的固 定长度的二


进制值,也是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明


文,哪怕只更改该段落的一个字母,随后的哈希算法都将产生两个极为不

同的值。


要找到散列为同一个值的两个不同的输入,


在计算 上是不可能的,


所以数据的哈希值可以检验数据的完整性和正确性。一般用于快速查找和


加密算法。




2.1


哈希算法的特点



这里的


HASH


算法不是大学里数据结构课里那个< /p>


HASH


表的算法。


这里的


HASH


算法是密码学的基础,比较常用的有


MD5



SHA


,优秀的哈希算法具有的


最重要的两条性质,就是不可逆和无冲突。



所谓不可逆,就是当你知道


x



HA SH


值,无法求出


x




所谓无冲突,


就是当你知道


x



无法求出一个


y

< br>,



使


x



y



HASH

值相同。



也就是这两者保证了只要哈希算法的摘要足够长 ,那么就具有高抗碰撞能


力破解难度极大。




5


山东科技大学本科毕业设计(论文)



该算法是将任意长度的二进制值映射为固定长度的较小的二进制值,


前者通常称为数据的 原值,


最后得到的固定长度的二进制值则称为哈希值。


哈希值是 一段数据唯一且极其紧凑的数值表达形式,即使数据的原值只改


变一个标点符号,那么随 后的哈希运算将会产生完全不同的哈希值,因此


良好的映射分布均匀性和差分分布均匀性 是保证哈希算法安全性的必要条


件。所以最基本的哈希算法有以下三点组成


:



1


)如果知道信息< /p>


(M)


,可以很容易得到哈希值


h





2

< p>
)如果知道哈希值


h


,却无法通过任何算法得到信 息


M




(< /p>


3


)很难找到另一条信息


M.

< p>
使得,


H(M.)=H(M)


< br>



由于哈希函数提供了数据原值和哈希值之间的 这种独特关系,因此就


可以用验证长度小得多的哈希值来代替大量消息的验证,大大减少 了验证


数据的工作量,节约了时间。


MD5


SHA1


,和


SHA2


系列是目前最有名的哈


希函数。但由于


MD5< /p>



SHA1


己经被验证存在抗冲突性的安 全隐患。




由于哈希值是信息 的提炼,通常其长度要比信息小得多,且为一个固


定长度。


加密 性强的散列结果一定是不可逆的,


这就意味着通过散列结果,


无 法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将


导致散列结果的明 显变化,这称之为雪崩效应。散列还应该是防冲突的,


即找不出具有相同散列结果的两条 信息。具有这些特性的散列结果就可以


用于验证信息是否被修改。






6


山东科技大学本科毕业设计(论文)



2.2


安全哈希标准



SHA(Seeure Hash Standard


,安全 哈希标准


)


,是由美国国家标准技术研


究所


(NIST)


和美国国家安全局


( NSA)


一同设计的杂凑算法,


是使用最为广泛


的安全杂凑算法之一。该算法与


1993


< p>
5


月起采纳为标准,分别为


SHA



SHA1



SHA2



其中


SHA2


包括


SHA224



SHA256



SHA384



SH A512



由于


SHA



1993


年发布不久后被验证存在重大的漏洞,所以 很快就被新的


SHA1



本所取代。< /p>


随后在


2005


年,

SHAI


算法被验证存在算法上的漏洞,


尽管


SHA2


在算法结构上和


SHA1

< br>相同,但是由于算法数据位数的增加,使得


SHA2


避< /p>


免了


SHA1


上存在的漏洞。

< p>
SHA



SHA1



SHA2


的描述如表


2.1


所示


:


名称



哈希


值位




中间


状态












位数




< p>





位数





周期



内部使用


逻辑



是否存在


漏洞



位数





SHA0


SHA1



SH


SHA25


6/SHA


SHA51


2/


SHA38


4





160


160


512




2


64


-1


32



80


+



AND





OR



XOR



ROT




256


/22


4



512


/34


8




256


512




512


102


4




2


64


-1


32


2


128


-


1



64



40



80


A2



224


+



AND




OR




XOR





ROT



shr



2.1 SHA


函数具体参数



本文选用的


SHA256


哈希函数,可加密


0



2


bits


长度的数 据(由于


表示数据长度的数据附位加为仅为


64


位)



处理每组数据块大小为


512bit



内部的处理单元位数为


32


位,通过


64


次迭代运算,最终生 成密码摘要。




7


64


山东科技大学本科毕业设计(论文)



2.3


算法实现方式及选择硬件仿真的原因





该算法可以通过软件或者硬件方法实现,虽然由于软件 加密方法成本


低,被广泛应用的移动存储介质和网络数据的加密中,但软件加密同时也< /p>


存在着消耗大量


CPU


机时以及被暴力破 解等安全隐患,而


硬件加密中所有


的加密信息都是内置在硬件芯 片中的,从而使得黑客原本惯用的通过入侵


加密信息来盗取资料的手法将会完全失效。< /p>



故此本文选择硬件实现


SHA256< /p>


算法。







8


山东科技大学本科毕业设计(论文)



第三章



SHA256


算法的原理与实现



3.1 SHA246


哈希函数



最早的安全哈希函数


FIPS180



2


是由美国联邦息处理标准


(Federa l


Information


Processing


Standards)


发布的基于哈希算法的一个标准,加

< p>
密系统中使用的


SHA256


算法就是

< p>
FIPS180



2


标准 中


SHA2


算法中的一种。


下面将对该 算法的原理做详细的描述。



3.2 SHA256


具体函数介绍



Sha2 56


中总共含有


6


个逻辑函数,以及两 个移位函数和


8



32bit



初始化的哈希值。其中每一个函数的操作都是以


32bit


长度的数据块为单


位实现的,与此同时函数中所有 的加法运算全部都是


mod



2


32


的加法,函


数的具体内容由下所示:



算法包含的六种基本函数











bitwise XOR








bitwise AND








bitwise OR


?







bitwise complement


+






mod 2


32


addition


R


n






right shift by n bits


S


n






right rotation by n bits


以上< /p>


6


种函数是在


sha256


加密运算中涉及到的基本函数。






算法中包含的逻辑操作函数:




Ch(x



y


,< /p>


z) = (x^y)



(?


x^z)


Maj(x



y


,< /p>


z) = (x^y)



(x^z)



(y^z)



0


(x) = S

< br>2


(x)



S

< br>13



S


22

< br>(x)



9


山东科技大学本科毕业设计(论文)




1


(x) = S

< br>6


(x)



S

< br>11



S


25

< br>(x)


Б


0


(x) = S< /p>


7


(x)



S< /p>


18



R


3


(x)


Б


1


(x) = S

< br>17


(x)



S


19



R


10


(x)


上述几种逻辑操作函数,都是有基本逻辑函数构成,是安全哈希函数< /p>


的重要的运算方法。



哈希值的初始化:



localparam H0 = 32'h6a09e667;


localparam H1 = 32'hbb67ae85;


localparam H2 = 32'h3c6ef372;


localparam H3 = 32'ha54ff53a;


localparam H4 = 32'h510e527f;


localparam H5 = 32'h9b05688c;


localparam H6 = 32'h1f83d9ab;


localparam H7 = 32'h5be0cd19;



3.3 SHA256


的算法描述



SHA25 6


算法,是将一个长度不大于


2


64< /p>


bit


的报文输入,通过将报文按


512 bit


进行分组处理之后,形成一个长度固定为


256bit< /p>


的摘要。其中根


据算法要求以及原理可以大致分为前后

< p>
4


个主要部分,其中包括


:


1.


附加填充比特及附加长度值



2.


初始化缓存以及数据块扩展



3.


处理


512bit

报文分组序列的循环迭代运算



4.256bits


长度的哈希值输出



3.3.1


附加填充比特及附加长度值





附加填充比特及附加长度值模块中,首先面临的第一个问题就 是对输


10


山东科技大学本科毕业设计(论文)



入的原文进行比特的填充,目的是使原文的数据位数是


512


的 整数倍以便


于分组处理,同时还要使填充过后的原文数据中包含有原文数据长度的信


息。



具体操作方法如下所述:




加入输入的原文长度为


M


在此模块中将


M


进行末尾增加一个比特位的


操作同时将该比特值赋值为‘


1


’,与此同时添加


K


个值为


0


的比特 位。一


次满足


M+1+K = 448 mod 512


的运算,然后再将这个


M+1+K=448


长 度的天


冲过后的原文进行有关于原文数据长的数据填充。即在其后面添加一个

< p>
64bit


的数据块,


其值等于明文长度


M



做完信息填充后的原文长度一定是


512bit


的整数倍。以便于原文的分组处理







3.1


填充数据的位数以及值



如上图


3.1


原文数据所示,假设我们吧


a b c


三个字母作为原文进行数据


输入,通过


ASC


Ⅱ码值查阅后可知为上图所示,一共是


24bits





根据上 面的描述方法,


我们首先要在



abc



后面添加一位


bit


值为



1


< br>。


与此同时再添加


424


个值为



0



的比特 位,


可以满足上文设定即


24+1+423


等于


448



512


的取余,再在填充文后面添加上


64

< br>位的比特,用来表示


原文的长度。




如图


abc

< br>三个字母的二进制长度为


24


bits



所以应该填充的数据为:



00...00 00..011000





11


山东科技大学本科毕业设计(论文)



长度为


64


位,省略号表示为


0




3.3.2


初始化缓存以及数据块扩展




SHA256


运算过程中要进行初始化缓存,


这个存储器是


256bit


的,


来存< /p>


放哈希运算过程中的中间结果和最终结果。



该缓存表示为:



H1=0x6A09E667 H2=0xBB67AE85


H3=0x3C6EF372 H4=0xA54FF53A



H5=0x510E527F H6=0x9B05688C


H7=0x1F83D9AB ;H8=0x5BE0CD19


SHA256


对原文的处理是


512bits


的数据块作为基本处理单元,每 次


处理的步骤每次读入第


N



512bits


的数据块之后,算法将


512b its


的数


据分成


16


份的


32bits


的数据块,假设第一个


32


bits


的数据段为


W1


,然


后再依次往后第二个为


W2< /p>


,如此排列直到最后一个为


W15


,即< /p>


512/16=32


bits


,又因 为迭代运算需要


64



32bits< /p>


值,所以要进行数据扩展以满足


64


位迭 代运算。






3.2 W


T


的扩展公式


如图


3.2


所示即为扩展运算的公式。



其中


σ

1



σ


2


的表达式为:



Б


0


(x) = S

< br>7


(x)



S

< br>18



R


3

(x)


Б


1


(x) = S


17


(x)



S< /p>


19



R


10< /p>


(x)




12


山东科技大学本科毕业设计(论文)



如图要经过


64-16=48


次扩展运算得出满足


64


次迭代运算需要的数据。


3.3.3


处理


512bits


报 文的循环迭代运算





3.3


循环迭代运算步骤




循环迭代运算如图


3.3


所示,


在这个运算部分里面主要完成的工作是:


计算出当前输入的


5 12bits


报文的哈希值,这个部分的具体内容为:




1


)初始化,初始化过程分为两种情况< /p>


:


第一种情况:加密数据为第一个


32bits


数据块,首先要用我们在


3.1


的对


H0-H7



8



32bits


数据块进行


8


×


32bits


的迭代运算对内部哈 希值


初始化。



第二种情况:如果加密 数据不是第一组数据,则使用上一次迭代运算得出


的加密结果进行哈希值初始化。





2



在上一步的初始化结束后,


我们应该对


a-h


进行


64


次 迭代运算进


行加密步骤,如上图


3.3


所示。



其中图


3.3


中所用的几个公式为:




s 0=({a_in[1:0],a_in[31:2]})^({a_in[12:0],a_in[31:13 ]})^({a_in[21:0],a_in[31:2



13


山东科技大学本科毕业设计(论文)



2]});


s1=({e_in[5:0],e_in[31 :6]})^({e_in[10:0],e_in[31:11]})^({e_in[24:0],e_in [31:2


5]});


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


与第一步所设定的初始值进行模


2


32


的加法运算,


上面的计算就是不断


更新



a



b

< p>


c…h




32bit*8


。在每个


512bi t


的分组里面迭代计算


64


次。


得到本次运算的哈希值如下所示:



H


0


(i)


=a+H


0


(i-1)


;


H

1


(i)


=b+H


1


(i-1)


;


H


2


(i)


=c+H


2


( i-1)


;


H


3

(i)


=d+H


3


(i-1)


;


H


4


(i)< /p>


=e+H


4


(i-1)

< br>;



14


山东科技大学本科毕业设计(论文)



H


5


(i)


=f+H

< br>5


(i-1)


;


H

< p>
6


(i)


=g+H


6


(i-1)


;


H


7


(i)


=h+H


7

< br>(i-1)


;



3

< p>
)重复上面


1-3


得步骤,直到所有的

< p>
512-bit


分组处理完毕后,对于


SHA-2 56


算法最后一个分组产生的输出便是


256-bit


的报文摘要。







15


山东科技大学本科毕业设计(论文)



第四章



SHA256


加密系统硬件设计与仿真实现



根据第三章中介绍的


SHA256


算法以及硬件实现的优势 ,在本章中具


体的的描述如何用硬件语言设计电路,实现一些功能。


本次研究使用的是


modelsim

< br>仿真环境,


下面我们就从


modelsim


上进



verilog


仿真 实现


SHA256.


这里仅以


24b its


长度的原文进行


SHA256


加 密,来解释整个流程如何


用硬件描述语言来将描述


SHA256


的全部函数及各个模块



4.1


算法的总体架构





4.1 SHA256


加密系统总体架构



< /p>


如图


4.1


所示为本次设计的硬件架构图 ,


按照对信息处理的功能,


整个



16


山东科技大学本科毕业设计(论文)



SHA256


可以分为数据处理模块和哈希值计算模块,


这两个 部分依据


SHA256


算法中的描述,分别完成输入数据的预处 理和哈希值循环计算两个功能,


整个模块的外部接口只有明文输入和哈希值输出。下面我 就分别介绍各个


模块。



4.1.1


数据计算模块





4.2


数据计算模块框架图





4.3


数据计算模块模型




17


山东科技大学本科毕业设计(论文)



计算模块的各个信号的功能介绍




clk


Rst


K


t



W


t



a-h(input)


a-h(output)

< p>
系统时钟信号,


为整个算法提供输入信




异步复位信号,高电平有效



32


位数据入口



32


位数据入口



256


位初始化哈希值输入信号



256


位初始化哈希值输出信号




4.1


各个信号的功能描述



计算模块的功能是按照图


3.3

< br>中步骤中的算法,接收当前储存哈希值


寄存器的数据,将这


8


个输入进行计算生成下组数据并作为下次运算的输


入。在这 个模块中计算的过程中会不断的读取哈希表中的值和原文值,即


Ki

中的储存的固定的常数值和


Wi


中存储的原文数据,


来满足计算的条件。




根据算法的要求,在计算过程中。


b



c



d


f



g



h


是不需要计算的,


而是直接从循环中直接得到赋值的分别是上 次运算中的


a



b


c



d



e



f


,< /p>


g


。且


a



e


可以根据前一个周期中


a



h


的值计算出来,如下所示


:



E


t+1


=d


t


+



1


(e


t


)+CH(e

< br>t



f


t



g


t


)+h


t


+k


t


+W


t


A


t+1


=


0


(a)+maj(a


t



b


t


< p>
ct)+



1


(e


t


)+CH(e


t



f


t



g


t


)+h


t


+K< /p>


t


+W


t


这样 经过


64


次迭代运算就可以得到处理完当前

512bit


数据组所对应的哈


希值,也是下组哈希运算的 初始值。




18


山东科技大学本科毕业设计(论文)



4.1.2 extension


数据延展模块





4.4


数据扩展模块框架图





4.5


数据延伸模块的模型



如图

< p>
4.5



SHA256



extension


模块的具体模型,


各个信号的功能描述如



4.2


所示< /p>



名称



Clk


Rst


功能




外部时钟输入,为整个算法提供时钟输


入信号



异步复位信号,高电平有效




19


山东科技大学本科毕业设计(论文)



W_16



W_15




W_7


W_2


Wi


数据输入信号,宽度为


32bits


数据输出信号,宽度为


32bits














4.2


各信号功能描述



经过补充比特所得到 的原文长度为


512bits


,所以将


32bits


的数据块


依次存储到


16



32bits


的寄存器中,然后的算 法依图


3.2


公式计算,将


数据扩张成


64x32bits


的数据块,每一个新的数据块的产生,假设 需要延


展数据块的位置为


Wi


(16



则需要前面的


W


I-16


W


I-15


W


I-7


W


I-2


四个数据


块计算得出,


所以需 要对当前的


W


I-16


W


I-15


W


I-7


W


I-2


进行选择和输入,


这项步


骤在主模块里实现,也就是存储器


W


的读出操作,这里用了一个计数器进


行控制,再将这四个值发送的延 展模块里,这里


W


16


< p>
W


15



W


7


W


2


对应的就


是当前


I


值所对应的


W


I-16


W


I-15


W


I-7


W


I-2


。然后进行运算得


64


次迭代运算所


需要的扩充后的原文。


得出的结果输出到主模块并储存在对应的寄存器中。



4.1.3


前端数据处理及迭代运算操作模块



这 个模块主要是用来接收输入数据,并将输入数据进行处理生成计算


模块、扩展模块所需要 的数据,即前端数据处理,主要包括


H,K


值得初始

< p>
化,


填充


bit


附加长度 值。


前端数据处理完成后就开始进行数据的计算,


< p>
过计时器来控制各个寄存器的读出和写入,准确的为延展和计算模块提供


数 据,以完成子模块的各个功能。




20


山东科技大学本科毕业设计(论文)





4.6


前端数据处理及迭代运算操作模块原理图



名称



RST


msg_in


Ready


功能



复位信号,输入无效,不进行运算



原文数据入口



用“

< br>0


”来表示运算运算次数未达到


64

< br>用“


1


”表示运算状态已达到


6 4




哈希值出口。




4.3



各个信号的功能



Msg_out




再如下面将各个模块连接起来,来 实现


SHA256


的整个流程,模块调用如下所示:

< p>


延展模块调用:


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



)





21


山东科技大学本科毕业设计(论文)







.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


);



)




)




)




)




)




)




)




)




)




)




)




)



22





















山东科技大学本科毕业设计(论文)




4.2


实现流程










4.4 SHA256


加密流程






4.4


所 示为


SHA256


的加密流程,



abc


作为输入为例进行本次研究内容


SH A256


进行加密的全部流程。这里将流程大致分为两步:


< /p>


1.


前端数据处理:参数初始化、填充比特值以及附加长度值。< /p>



2.


算法计算:初始化缓存、原文延展 和


64


次迭代运算。



4.2.1


参数初始化、填充比特值以及附加长度值


整个流程之初首先要进行参数的初始化,参数包括


H



K



H0-H8


在 第


一次加密运算时作为哈希值存储器的初始化数值进行加密运算,


K


是运算


中需要的常数值。




23


山东科技大学本科毕业设计(论文)



由于原文输入为


abc


,进行转码之后为:




msg_in=24



h616263


。所以需要填充比特值,并附 加长度值。





4.5 abc


填充


bit


及附加长度值示例



如 图


4.5


所示为


abc


填充


bit


和长度值之后的形式,然后将这组数据存放



W


t


中。又 因为长度


abc


的原始长度为


24


,所以不需要原文分组,进行下


一步。此时


Wt


中只有


16


个寄存器是有数据的, 因为每个寄存器为


32


位,


所以


512bits


输入数据


msg_out


的存储只需要


16


个就可以满足存储需求,


但是实际运算中需要


64


个与原文有关 的


32


位数据,这就是为什么要进行


原 文扩展的原因。



4.2.2


初始化 缓存、原文延展及


64


次迭代运算


< /p>


数据分组之后首先进行初始化缓存,将


a-h

用参数


H0-H7


进行赋值,


用来 作为初始值。这时参数的准备工作完全完成,下面进行原文的扩展。


< br>64


次迭代运算需要


64


个长度 为


32bit


的原文,而输入的原文长度为

512



所以需要从


W

< p>
t


中提取原文输送到延展模块进行延伸。


依图


3.3


公式计


算,将数据扩张成

< p>
64x32bits


的数据块,每一个新的数据块的产生,假设

< p>
该数据块的位置为


Wi


(16



则需要前面的


W


I-16


W


I-15


W


I-7


W


I-2


四个数据


块计算得出,


所以需 要对当前的


W


I-16


W


I-15


W


I-7


W


I-2


进行选择和输入,


这项步


骤在主模块里实现,这里


W


16



W


15

< p>


W


7



W


2


对应的就是当前


I


值所对应的


W


I-16


W


I-15


W


I-7


W


I-2



为了方便表示所以简化来写。




abc


的数据延展中。

< br>生成


W


16


需要往延展模块中输 入


W


0



W


1



W


9



W


14.




24

-


-


-


-


-


-


-


-



本文更新与2021-02-17 22:29,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/663488.html

SHA256的硬件实现的相关文章