当前位置:文档之家› HASH函数

HASH函数

B C D
A
MD4 (1990年10月作为RFC1320发表) by Ron Rivest at MIT
• MD4的设计目标 • 安全性: • 速度:32位体系结构下计算速度快. • 简明与紧凑:易于编程. • 有利的小数在前的结构(Intel 80xxx, Pentium ) • MD4与MD5的区别 • MD4用3轮,每轮16 步,MD5用4轮,每轮16步. • MD4中第一轮没有常量加;MD5中64步每一步用了一 个不同的常量 T[i]; • MD5用了四个基本逻辑函数,每轮一个;MD4用了三 个. • MD5每轮加上前一步的结果;MD4没有.
y 取 k 个随机值得到函数的 k 个输出中至少有一个 等于h(x)的概率为 1-[1-1/n]k 由(1+x)k≈1+kx,其中|x|<<1,可得
1-[1-1/n]k≈1-[1-k/n]=k/n
给定 h(x) ,如果对 h 随机取 k 个输入,至少有一个 输入 y 使得 h(y)=h(x) 的概率为 1-[1-1/n]k≈1-[1-k/n]=k/n • 若使上述概率等于0.5,则 k=n/2。特别地,如果 h 的输出为 m 比特长,即可能的输出个数 n=2m,则 k=2m-1。
• 生日攻击(基于生日悖论) 在k个人中,找一个与某人生日相同的人的 概率超过0.5时,只需k>183; 而在此人群中, 至少有两个人生日相同的概率超过0.5,只 需k>23.
将生日悖论推广为下述问题:已知一个在1到n 之间均匀分布的整数型随机变量,若该变量的 k 个 取值中至少有两个取值相同的概率大于0.5,则k至 少多大? n! P(n, k ) 1 与上类似, (n k )!n k 令P(n, k)>0.5,可得 k 1.18 n n 若取 n=365,则
杂凑函数
任意长的消息
固定长的消息摘要
碰撞
消息 杂凑函数 消息摘要
杂凑函数的用途
• 杂凑可以把任意长的消息转换成固定大小的消息 摘要。 • 可以使公钥密码系统在签名与验证的时候,减少 运算,节省时间,提升效率,达到消息确认的目 的。 • 确保公钥签名的安全性。
1. Hash函数的概念
基本思想:
HASH函数与消息认证
• 学习要点:
– 了解HASH函数的基本概念、一般结构
– 了解SHA散列算法的基本处理方法
– 了解消息认证的目的及其实现方法
哈希(Hash)
“我们的五年计划是…” “B*U@9374392l;qHUHW”
Hash
密码学中哈希的几个基本要求
输入可为任意长度 输出定长 函数单向 足够小的冲突可能性
即第1个数据项可从365个中任取一个,第2个 数据项可在剩余的364个中任取一个,依次类推, 最后一个数据项可从365-k+1个值中任取一个。如 果去掉任意两个都不相同这一限制条件,可得k个 数据项中所有取值方式数为365k。所以可得
365! Q(365, k ) (365 k )! 365k 365! P(365, k ) 1 Q(365, k ) 1 (365 k )! 365k
攻击杂凑函数
• 攻击杂凑函数的原理是 -伪造消息,使其与原來消息的杂凑码相同 • 常見的攻击方法: -生日攻击法(Birthday Attack) -中点交会攻击法(Meet-In-The-Middle)
2. 生日攻击
1)相关问题
已知一散列函数 h 有n个可能的输出,h(x)是一 个特定的输出,如果对 h 随机取 k 个输入,则至 少有一个输入 y 使得 h(y)=h(x) 的概率为0.5时,k 有多大?
2. 设计方法和典型算法 1) 基于模数运算 用公开密钥加密实现 通常使用CBC(分组链接模式)并以最后一个 密文分组作为散列值 因速度较慢而不太实用 2) 基于分组加密 用分组密码体制加密实现 同样使用CBC(分组链接模式) 速度相对较快
CBC
• Encrypt message with block cipher in CBC mode • IV = 0, last encrypted block can serve as tag • Insecure for variable-length messages
一. Hash函数的概念
1. 基本要求 ① 公开性──算法公开、无需密钥 ② 定长性──输入长度任意、输出长度固定 ③ 易算性──由消息容易计算散列值 2. 安全性要求 ① 单向性──由消息的散列值倒算出消息在计算 上不可行 ② 抗弱碰撞性──对于任何给定消息及其散列值, 不可能找到另一个能映射出该散列值的消息 (任何给定原像都找不到其等价原像) ③ 抗强碰撞性──对于任何两个不同的消息,它 们的散列值必定不同(没有任何一对等价原 像)
基本MD5操作(单步)
A + X[k] B C g D Function g 1 F(b,c,d) 2 G(b,c,d) 3 H(b,c,d) 4 I(b,c,d) g(b,c,d) (bc)(bd) (bd)(cd) bcd c(bd)
+
+
CLSs
T[i]
+
2i = (1+5i) mod 16 3i = (5+3i) mod 16 2i = 7i mod 16
3、Hash函数的构造方法 1)Use a block cipher E(K, P). Start with some initial value X0 and update as Xi+1 = E(Mi,Xi) Xi. Final value Xn is the hash. • E(Mi,Xi) Xi is called “compression function”
2)生日悖论 生日悖论是考虑这样一个问题:在k个人中至 少有两个人的生日相同的概率大于0.5时,k至少多 大?
为了回答这一问题,首先定义下述概率:设有 k个整数项,每一项都在1到n之间等可能地取值, 则k个整数项中至少有两个取值相同的概率为P(n, k)。 因而生日悖论就是求使得P(365,k)≥0.5的最小 k,为此首先考虑k个数据项中任意两个取值都不 同的概率,记为Q(365, k)。如果k>365,则不可 能使得任意两个数据都不相同,因此假定k≤365。 k个数据项中任意两个都不相同的所有取值方式数 为 365! 365 364 (365 k 1) (365 k )!
密码学 Hash 函数 h(x) 必须满足下列特性
1)压缩:对于任意大小的输入x,输出长度 y=h(x) 很小。
实际应用中H产生定长输出h(x);
2)效率:对任意给定的x, h(x) 要相对易于计算,使得软硬 件实现都实际可行;
3)单向:对任意给定的值y, 寻求 x 使得 h(x)=y 在计算上
是不可行的,即求Hash的逆很困难; 4)弱抗碰撞性:任意给定分组x, 寻求不等于x的 y, 使得 h(y)=h(x)在计算上不可行; 5)强抗碰撞性:寻求对任何的(x,y)对使得 h(x)= h(y) 在计 算上不可行。
把哈希函数值 h(x) 看成 x 的消息摘要(message digest),或看成x的压缩代表图像(compact representative image),当 x 中任一bit化身变化时都将引起哈希 函数值的变化。这样就可以用对 h(x) 的签名代替对 x 签 名 散列函数h是一公开函数,用于将任意长的消息m 映射为较短的、固定长度的一个值h(m),作为认证符, 称函数值h(m)为杂凑值、杂凑码或消息摘要。杂凑码是 消息中所有比特的函数,改变消息中任何一个比特或几 个比特都会使杂凑码发生改变。
+ is mod 232
+
+
CVq+1
+
128
+
单个 512-bit 分组的 MD5 处理过程
MD5算法描述
HMD5的4轮处理过程结构一样,但所用的逻辑 函数不同,分别表示为F、G、H、I。每轮的输入 为当前处理的消息分组Yq和缓冲区的当前值A、B、 C、D,输出仍放在缓冲区中以产生新的A、B、C、 D。。
0 M1 M2 Mn
+
+
+

k
AES
k
AES
k
AES
tag
3) 专门的构造
与密码体制无关
通常直接构造复杂的非线性关系达到
单向要求
目前被广泛应用
常用 Hash Functions
• MD5: “Message Digest 5” invented by Rivest
– Input: multiple of 512-bits (padded) – Output: 128-bits
当k=23时,P(365,23)=0.5073,即上述问题 只需23人,人数如此之少。若k取100,则 P(365,100)=0.9999997,即获得如此大的概率。 之所以称这一问题是悖论是因为当人数k给定时, 得到的至少有两个人的生日相同的概率比想象的要 大得多。 这是因为在k个人中考虑的是任意两个人的生 日是否相同,在23个人中可能的情况数为 C223=253。
好的杂凑函数特性
• 高灵敏度 - 只要消息有些許的不同,经过杂凑函数转换 出的消息摘要就会有极大的不同
• 低碰撞性 - 当消息转换成消息摘要時,不同消息转换成相 同消息摘要的机会很低 • 无序性 - 无论消息的结构如何,所转换出的消息摘要都 是沒有規律性的
定义:理想的Hash函数是从所有可能的输入值到有 限可能的输出值集合的一个随机映射 如果散列函数对不同的输入可产生相同的输出, 则称该函数具有碰撞性。
HMD5
CV1
HMD5
CVq
HMD5
CVL-1
HMD5
相关主题