4)单向散列函数介绍(Hash解读

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4)单向散列函数介绍(Hash Function,哈希函数):将任意长度的消息M映射/换算成固定长度值h(散
列值,或消息摘要MD, Message Digest),最大的特点为其具有单向性。

h=H(M)
Hash函数用于消息认证(或身份认证)以及数字签名。

特性:
(1)给定M,可算出h.
(2)给定h,根据H(M)=h反推出M是非常困难的。

(3)给定M,要找到另外一个消息M*,使其满足
H(M*)=H(M)=h 是非常困难的。

注(见参考E,p75):
-从理论上说,有很多消息能生成相同的消息摘要。

因为消息的长度是任意的,而摘要的长度是固定
的。

-对于固定1000 bit的消息和固定128 bit的摘要,平均来说,有2872个消息与之对应,测试似乎不可
能成功。

-对于一个128 bit的消息摘要算法,大约需要尝试2128个(长短不一的)消息,才能找到一个消息
摘要与给定的摘要数值相吻合(作为攻击,当然
该消息可为经篡改后的消息)。

注:这里是用无数
次的“尝试”,而非简单从h反推出M。

-对于一个128 bit的消息摘要算法,需要尝试264
个消息才能找到两个具有相同摘要的消息。

-为什么将消息摘要定为128 bit? 因为消息摘要为m bit,任何人想要得到两个具有相同摘要的消
息,大约需要尝试2m/2个消息。

若m=64, 则需检查232个消息,这在计算上是可行的。

所以使
m=128, 检查264个消息目前在计算上是不可行
的。

应用举例讲解:
(i)存储于银行计算机内的用户密码采用散列
值,用于保密。

(ii)Alice要Bob写一份关于解雇Fred的报告,而Bob是Fred的朋友,想做“双面人”。

(iii)为文档和程序生成“指纹”或“DNA”。

在实际应用中,Hash函数是基于压缩函数的。

(RefC_p42_Hash函数)
给定任意长度的消息,Hash函数输出长度为m的散列值(即消息摘要)。

压倒函数的输入为
(1)明文消息分组Mi。

(2)前一压缩数据的输出CV i-1
(Compressed Vector)。

注:
-第一个压缩函数的输入M1为和IV (Initial Vector)。

-压缩函数的输出值为前所有分组的散列值;最后一个分组的散列值即为整个消息的散列值,即消息摘
要MD。

Hash函数算法介绍: MD5算法和SHA-1算法。

MD5算法:
对任意长度的消息M作为输入,产生一个128 bit的散列值/消息摘要。

(RefC_p43_MD5算法)
算法包括5个步骤:
(1)附加填充位:填充消息,使消息的长度位一个比512倍数小64位的数,填充位数为1~512。


充方法:原消息的后面第一位填1,其余填0。

(例
如:设消息为“abc”。


(2)附加长度:将原消息的64位表示附加在填充后的消息后面,这时处理后的消息的长度恰好为
512的整数倍。

(续上例)
若原消息的长度大于264时,则用原消息长度
mod264的64位表示附加在填充后的消息后面。

(3)初始化MD的缓冲区:缓冲区共有4个32 bit的寄存器 A、B、C、D, 各寄存器的初始值为
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
(4)按512 bit的消息分组处理输入消息:该步为MD5的主循环,包括4轮。

(RefC_p44_主循环处理)
每个循环均以当前正在处理的512 bit的分组Y q和128 bit的缓冲值ABCD为输入,然后更新
缓冲内容。

以上4轮操作类似,每轮进行16次操作,各轮操作过程见下图。

(RefC_p44_某轮执行过程)
每一轮的非线性函数不同,4次所用的非线性函数
分别记为 F、G、H、I。

∧Y)∨((~X)∧Z)
F(X,Y,Z)=(X
∧Z)∨( Y∧(~Z))
G(X,Y,Z)=(X
H(X,Y,Z)=X⊕Y⊕Z
I(X,Y,Z)=Y⊕(X∨(~Z))
∧:逻辑按位与∨:逻辑按位或其中:
~:逻辑按位反⊕:逻辑按位异或注:T表:T[i]=232abs(sin(i))
安全散列函数算法(SHA, Secure Hash Algorithm):SHA由美国NIST(国家标准与技术研究所)和NSA(国家标准协会)设计,用于数字签名(DS)。

SHA-1为SHA的修改版,于1995年发布。

SHA-1产生消息摘要的过程与MD5类似,但输入为度小于232 bit的消息,而输出为160 bit的散列值(即消息摘要MD),消息仍需填充使其最后为512的整数倍。

注:与MD5比较:
-附加填充位和附加消息长度与MD5相同。

-初始化缓冲器:SHA用两个缓冲区,每个区均有
5个32位的寄存器,分别为 A、B、C、D、E和
H0、H1、H2、H3、H4。

另有一单字缓冲区。

-按512 bit分组处理输入消息,主循环包括4
轮(和MD5一样),但每轮操作20次(MD5为
16次)
(详见参考资料)
2.5 数字信封
用于保证数据在传输过程中的安全。

对称加密效率高,但密钥不适合在公共网络传递,而非对称加密传递简单,但效率低下。

数字信封技术取二合一,即取对称加密的高效性和非对称加密的灵活性。

(RefB_p385_数字信封)
-两个不同的加密解密过程:明文的加密/解密,密钥的加密/解密。

首先使用对称加密算法对数据加密;
然后,利用非对称加密算法对对称加密过的密钥进行加密,过程包括:
(1)发送消息时,发送方生成一个对称密钥。

(2)发送方使用自己的对称加密的密钥和算法对欲发送的数据进行加密,形成数据密文。

(3)发送方使用接收方提供的公钥,对自己的密钥进行加密。

(4)发送方通过网络将加密后的密文和密钥传输到接收方。

(5)接收方用私钥对加密后的发送方密钥进行解
密,获得对称密钥。

(6)接收方使用还原出的密钥对数据进行解密,
得到数据明文。

应用两层加密体制,在内层运用对称加密技术,每次传送消息都可以重新生成新的密钥,保证消息的安
全性。

在外层,利用非对称加密技术加密对称密钥,
保证密钥传递的安全性。

2.6 身份认证技术的发展
网络用户的身份认证可以用下列3中基本方法之一
或它们的组合来实现。

(1)所知(knowledge): 验证用户的密码,口令等。

(2)所有(possession): 所掌握的用户的身份证、护照、信用卡等。

(3)特征(characteristics):所掌握的用户的指纹、声音、笔记、手型,虹膜,DNA、动作
等。

相关文档
最新文档