密码学哈希函数528

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《现代密码学》第7章
散列函数
本章主要内容
• 1、散列函数 • 2、MD5杂凑算法 • 3、安全杂凑算法
1.散列函数
1.散列函数的描述
• 散列算法也叫散列函数、Hash函数、哈希函数、 杂凑函数,在现代密码学中扮演着重要角色。
• 散列函数是一公开函数,通常记为H,用于将 任意长的消息M映射为较短的、固定长度的一 个值作为认证符,记为H(M),经常称函数值 H(M)为散列值、哈希值、杂凑值、杂凑码或消 息摘要、数组指纹等等。
365! Q(365, k) (365 k)! 365k
P(365,
k
)
1
Q(365,
k
)
1
(365
365! k)!
365k
当k=23时,P(365,23)=0.5073,即上述 问题只需23人,人数如此之少。若k取100, 则P(365,100)=0.9999997,即获得如此大的 概率。之所以称这一问题是悖论是因为当人 数k给定时,得到的至少有两个人的生日相 同的概率比想象的要大得多。
Hash函数的用途
消息完整性检测
用户
恶意攻击者
WWW
WWW
WWW
WebGuard
Hash函数的用途
输入终端
明文口令
口令认证
常见的Unix系统口令以及 多数论坛/社区系统口令都 是经MD5处理后保存其摘
要信息串;
认证系统
口令ຫໍສະໝຸດ Baidu希值
口令哈希运算
口令哈希值
匹配吗?
Hash函数在银行应用举例

采用Hash函数,银行操作人员不能获取到用户的密码
1.3 需求和安全性
任意长度
m 消息
HASH散列函数
h(m) 固定长度
Hash散列函数一般模型
散列函数的目的是为需认证的数据产生一个“指纹”。为了能 够实现对数据的认证,散列函数应满足以下条件:
① 函数的输入可以是任意长。
② 函数的输出是固定长。
③ 已知x,求H(x)较为容易,可用硬件或软件实现。
• 由(1+x)k≈1+kx,其中|x|<<1,可得
1-[1-1/n]k≈1-[1-k/n]=k/n
若使上述概率等于0.5,则k=n/2。特别 地,如果H的输出为m比特长,即可能的输 出个数n=2m,则k=2m-1。
2. 生日悖论
生日悖论是考虑这样一个问题:在k个人 中至少有两个人的生日相同的概率大于0.5时, k至少多大?
Hash函数在物联网的应用举例
• 物联网(The Internet of things)的定义是:通过 射频识别(RFID)、红外感应器、全球定位系统、 激光扫描器等信息传感设备,按约定的协议,把 任何物品与互联网连接起来,进行信息交换和通 讯,以实现智能化识别、定位、跟踪、监控和管 理的一种网络。
假设函数H的输入消息或数据块长度是b位, 输出的长度为n位,且b>n,则平均每个 Hash值对应2b/n个原像。
抗弱碰撞攻击
抗原像攻击
抗强碰撞攻击
Hash函数安全特性之间的联系
1.4 生日攻击
1. 相关问题 已知一散列函数H有n个可能的输出,
H(x)是一个特定的输出,如果对H随机取k个 输入,则至少有一个输入y使得H(y)=H(x)的 概率为0.5时,k有多大?
数字签名
在进行数字签名过程中使用用户的私钥加密消息的Hash 值,其它任何知道该用户公钥的人都能够通过数字签名来 验证消息的完整性。在这种情况下,攻击者要想篡改消息, 则需要知道用户的私钥。
其他应用
• 产生单向口令文件: 如操作系统存储口令的Hash值而不是
口令本身。 • 入侵检测和病毒检测:
将每个文件的Hash值H(F)存储在安全系统 中,随后就能够通过重新计算H(F)来判断 文件是否被修改过。
③ 用公钥加密算法和发送方的秘密钥仅加密杂凑码。 和②一样,这种方式提供认证性,又由于只有发送 方能产生加密的杂凑码,因此这种方式还对发送方 发送的消息提供了数字签字,事实上这种方式就是 数字签字。
M HE
||
M
ESKA[H(M)]
SKA
H 比较
D
PKA
图1(c)杂凑函数使用方式之三
④ 消息的杂凑值用公钥加密算法和发送方的秘密钥加 密后与消息链接,再对链接后的结果用单钥加密算法 加密,这种方式提供了保密性和数字签字。
M S || H
||
M S || H 比较
H(M||S)]
图1(e)杂凑函数使用方式之五
⑥ 这种方式是在⑤中消息与杂凑值链接以后再增加单 钥加密运算,从而又可提供保密性。
M S || H
|| E K
D
M S || H 比较
K H(M||S)]
图1(f)杂凑函数使用方式之六
由于加密运算的速度较慢,代价较高,而且很多加密算法 还受到专利保护,因此在不要求保密性的情况下,方式② 和⑤将比其他方式更具优势。
• 为了回答这一问题,首先定义下述概率:设有k个 整数项,每一项都在1到n之间等可能地取值,则k个 整数项中至少有两个取值相同的概率为P(n, k)。
• 因而生日悖论就是求使得P(365,k)≥0.5的最小k, 为此首先考虑k个数据项中任意两个取值都不同的概 率,记为Q(365, k)。如果k>365,则不可能使得任 意两个数据都不相同,因此假定k≤365。k个数据项 中任意两个都不相同的所有取值方式数为
以后为叙述方便,称对散列函数H寻找上 述y的攻击为第Ⅰ类生日攻击。
因为H有n个可能的输出,所以输入y产 生的输出H(y)等于特定输出H(x)的概率是1/n, 反过来说H(y)≠H(x)的概率是1-1/n。y取k个 随机值而函数的k个输出中没有一个等于H(x), 其概率等于每个输出都不等于H(x)的概率之 积,为[1-1/n]k,所以y取k个随机值得到函数 的k个输出中至少有一个等于H(x)的概率为1[1-1/n]k。
365 364 (365 k 1) 365! (365 k)!
即第1个数据项可从365个中任取一个, 第2个数据项可在剩余的364个中任取一个, 依次类推,最后一个数据项可从365-k+1个
值中任取一个。如果去掉任意两个都不相同 这一限制条件,可得k个数据项中所有取值 方式数为365k。所以可得
• 监控过程 监控主机对监控网站进行轮回扫描,对扫描的文件进行如下操作: (1)计算文件的哈希值,并与备份的文件哈希值进行比较,如果相同, 转(4)步。 (2)如果不同,上载备份文件替换网站现有文件,转(4)步。 (3)如果备份文件不存在,则删除网站上这个文件,转(4)步。 (4)监控程序扫描下一文件。
• 杂凑码是消息中所有比特的函数,因此提供了 一种错误检测能力,即改变消息中任何一个比 特或几个比特都会使杂凑码发生改变。
散列函数的描述
• 从密码角度看,散列函数也可以看作是一 种单向密码体制,即它从一个明文到密文 是不可逆映射,只有加密过程,不能解密。 散列值是消息中所有比特的函数值,因此 提供了一种错误检测能力,即改变消息中 任何一个比特或几个比特都会使散列值发 生改变。
• 在密码学和数据安全技术中,散列函数是 实现有效、安全可靠数字签名和认证的重 要工具,是安全认证协议中的重要模块 。
密码学Hash函数的应用
消息认证
消息认证是用来验证消息完整性的一种机制或服务。消息 认证确保收到的数据确实和发送时的一样(即没有修改、 插入、删除或重放),且发送方声称的身份是真实有效的。 当哈希函数用于提供消息认证功能时,Hash函数值通常 称为消息摘要。
M
|| E
HE
K SKA
K DM ESKA[H(M)]
H 比较
D
PKA
图1(d)杂凑函数使用方式之四
⑤ 使用这种方式时要求通信双方共享一个秘密值S, A计算消息M和秘密值S链接在一起的杂凑值,并将此 杂凑值附加到M后发往B。因B也有S,所以可重新计 算杂凑值以对消息进行认证。由于秘密值S本身未被发 送,敌手无法对截获的消息加以篡改,也无法产生假 消息。这种方式仅提供认证。
• 描绘“物联网”时代的图景:当司机出现操作失 误时汽车会自动报警;公文包会提醒主人忘带了 什么东西;衣服会“告诉”洗衣机对颜色和水温 的要求,等等。
Hash函数在物联网的应用举例
个人隐私问题暴露
2、散列函数的使用方式
基本使用方式,共有以下6种(图6.3)
① 消息与杂凑码链接后用单钥加密算法加密。由于所用密钥 仅为收发双方A、B共享,因此可保证消息的确来自A并且未 被篡改。同时还由于消息和杂凑码都被加密,这种方式还提 供了保密性,见图6.3(a)。
M
H
K
|| E
D
K EK[M||H(M)]
M
H 比较
图1(a)杂凑函数使用方式之一
② 用单钥加密算法仅对杂凑码加密。这种方式用于 不要求保密性的情况下,可减少处理负担。将 EK[H(M)]看作一个函数,函数的输入为消息M和密 钥K,输出为固定长度。
M HE
K
||
M
EK[H(M)]
H 比较
D
K
图1(b)杂凑函数使用方式之二
④ 已知h,求使得H(x)=h的x在计算上是不可行的,这一性质称 为函数的单向性,称H(x)为单向散列函数。
⑤ 已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。如 果单向散列函数满足这一性质,则称其为弱单向散列函数。
⑥ 找出任意两个不同的输入x、y,使得H(y)=H(x)在计算上是不 可行的。
这是因为在k个人中考虑的是任意两个人 的生日是否相同,在23个人中可能的情况数 为C223=253。
将生日悖论推广为下述问题:已知一个
在1到n之间均匀分布的整数型随机变量,若 该变量的k个取值中至少有两个取值相同的 概率大于0.5,则k至少多大?
与上类似, k 1.18 n n ,
令P(n, k)>0.5,可得
生日攻击
第Ⅱ类生日攻击可按以下方式进行: ① 设用户将用图3(c)所示的方式发送消息, 即A用自己的秘密钥对消息的杂凑值加密, 加密结果作为对消息的签字,连同明文消息 一起发往接收者。
② 敌手对A发送的消息M产生出2m/2个变形的 消息,每个变形的消息本质上的含义与原消 息相同,同时敌手还准备一个假冒的消息M′, 并对假冒的消息产生出2m/2个变形的消息。
h是多对一映射
M
h
output
H(M)
output
M
M
output
h
由m计算h(m)容易
h
由h(m)计算上m不容易
散列算法的概念及结构
m M
m‘
抗弱碰撞性
h
output
给定H(M)
H
散列算法的概念及结构
抗强碰撞性
Mm m‘
output
H(m)=H(m’)
H
以上6个条件中,前3个是散列函数能用于消息认证的基本要求。 第4个条件(即单向性)则对使用秘密值的认证技术(见图1(e)) 极为重要。
• 构建随机函数(PRF)或用做伪随机发生器。
具体应用
消息完整性检测
“网站卫士”是一个网络安全软件产品。它的主要功能是 通过网络扫描网站的网页,监测网页是否被修改,当发现 网页被修改后,系统能够自动报警和恢复。
• 初始化过程 (1)对监视网站的文件备份到监控主机上。 (2)对每个备份的文件生成一个结构:文件位置、文件的哈希值。
假如散列函数不具有单向性,则攻击者截获M和C=H(S‖M)后, 求C的逆S‖M,就可求出秘密值S。第5个条件使得敌手无法在 已知某个消息时,找到与该消息具有相同杂凑值的另一消息。
这一性质用于杂凑值被加密情况时(见图3(b)和图3(c))防止敌手 的伪造,由于在这种情况下,敌手可读取传送的明文消息M, 因此能产生该消息的杂凑值H(M)。
但由于敌手不知道用于加密杂凑值的密钥,他就不可能既 伪造一个消息M,又伪造这个消息的杂凑值加密后的密文 EK[H(M)]。
然而,如果第5个条件不成立,敌手在截获明文消息及其 加密的杂凑值后,就可按以下方式伪造消息:首先求出截 获的消息的杂凑值,然后产生一个具有相同杂凑值的伪造 消息,最后再将伪造的消息和截获的加密的杂凑值发往通 信的接收方。
P(n,
k
)
1
(n
n! k)!n
k

若取n=365,则 k 1.18 365 22.54。
3. 生日攻击
生日攻击是基于下述结论:设散列函数 H有2m个可能的输出(即输出长m比特), 如果H的k个随机输入中至少有两个产生相同 输出的概率大于0.5,则 k 2m 2m。2
称寻找函数H的具有相同输出的两个任意 输入的攻击方式为第Ⅱ类生日攻击。
第6个条件用于抵抗生日攻击。
M S || H
||
M S || H 比较
H(M||S)]
图1(e)杂凑函数使用方式之五
• 原像:对于Hash函数h=H(x),称x为H原像。
• 碰撞:因为H是多对一映射,所以对于任意 给定的Hash值h,对应有多个原像。如果满 足x≠y且H(x)=H(y),则称出现碰撞。
相关文档
最新文档