HASH函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学
(第十三讲)
HASH函数
张焕国
武汉大学计算机学院
目录
密码学的基本概念
1、密码学
2、古典
、古典密码
3、数据加密标准(
)
DES)
、数据加密标准(DES
4、高级
)
AES)
数据加密标准(AES
高级数据加密标准(
5、中国商用密码(
)
SMS4)
、中国商用密码(SMS4
6、分组密码的应用技术
7、序列密码
8、习题课:复习对称密码
、公开密钥密码(11)
9、公开密钥密码(
目录
公开密钥密码(22)
10
10、
11、数字签名(1)
12、数字签名(2)
13、
、HASH函数
13
14
14、
15、
15
PKI技术
16
16、
、PKI
17、习题课:复习公钥密码
18、总复习
一、HASH 函数函数的概念的概念
1、Hash Hash的作用的作用
•Hash Hash码也称报文摘要码也称报文摘要。。
•它具有极强的错误检测能力错误检测能力。。
•用Hash Hash码作码作MAC ,可用于认证认证。。
•用Hash Hash码辅助码辅助数字签名数字签名。。
•Hash Hash函数可用于函数可用于保密保密。。
一、HASH 函数的概念
2、Hash Hash函数的定义函数的定义
①Hash Hash函数将任意长的数据函数将任意长的数据M 变换为定长的码h ,
记为记为::h=HASH(M)h=HASH(M)或或h=H(M)h=H(M)。。
②实用性:对于给定的数据对于给定的数据M M ,计算,计算h=HASH(M)h=HASH(M)是是
高效的。
③安全性安全性::
•单向性:对给定的对给定的Hash Hash值值h ,找到满足H(x)H(x)==h 的x 在
计算上是不可行的计算上是不可行的。。
否则否则,,设传送数据为设传送数据为C=C=<<M ,H(M||K )>,K 是密钥。攻击者可以截获攻击者可以截获C,C,求出求出Hash 函数的逆函数的逆,,从而得出
M||S =H -1(C),然后从M 和M ||K即可即可得出得出K。
一、HASH 函数的概念
2、Hash Hash函数的定义函数的定义
③安全性安全性::
•抗弱碰撞性:对任何给定的对任何给定的x x ,找到满足找到满足y≠x y≠x
且H(x)=H(y)H(x)=H(y)的的y 在计算上是不可行的在计算上是不可行的。。
否则否则,,攻击者可以截获报文M 及其Hash 函
数值H(M),并找出另一报文M ′使得
H(M ′)=H(M)。这样攻击者可用M ′去冒充M ,
而收方不能发现而收方不能发现。。
•抗强碰撞性:找到任何满足H(x)=H(y)的偶对(x,y)在计算上是不可行的在计算上是不可行的。。
一、HASH 函数的概念
3、安全安全Hash Hash函数的一般结构函数的一般结构
•
Merkle Merkle提出了安全提出了安全Hash Hash函数主处理的一般结构函数主处理的一般结构•对数据压缩对数据压缩,,产生产生Hash Hash码码。b 位分组位分组,,f 为压缩函数,L 轮链接迭代,n 位输出位输出。。
f f f M 0
M L -1M 1
b 位b 位
b 位n 位n 位
n 位n 位IV=CV 0CV 1CV L -1HASH 值
CV L
一、HASH 函数的概念
3、安全安全Hash Hash函数的一般结构函数的一般结构
•分组:将输入分为L -1个大小为b 位的分组位的分组。。
•填充:若第L -1个分组不足b 位,则将其填充为
b 位。
•附加:再附加上一个表示输入的总长度分组。
•共L 个大小为b 位的分组
位的分组。。
•由于输入中包含长度由于输入中包含长度,,所以攻击者必须找出具有相同Hash 值且长度相等的两条报文值且长度相等的两条报文,,或者找
出两条长度不等但加入报文长度后Hash 值相同
的报文的报文,,从而增加了攻击的难度。
•目前大多数Hash 函数均采用这种结构。
二、SHA SHA--1 HASH 函数
1、SHA 系列系列Hash Hash函数函数
•SHA 系列系列Hash Hash函数函数是由美国标准与技术研究所(NIST)
设计的设计的。
。
•1993年公布了SHA SHA--0(FIPS PUB 180180)),后来发现它不安全安全。。
•1995年又公布了SHA SHA--1(FIPS PUB 180180--1)。
•2002年又公布了SHA SHA--2(FIPS PUB 180180--2)。
SHA SHA--2包括3个Hash Hash函数:函数:SHA SHA--256,SHA SHA--384,
SHA SHA-
-512•2005年王小云给出一种攻击SHA SHA--1的方法的方法,,用269操作
找到一个碰撞找到一个碰撞,,以前认为是280。
•NIST 打算2010年废弃SHA SHA--1。