当前位置:文档之家› 密码学--HASH函数

密码学--HASH函数

声称者A 验证者(系统)B 口令表

A

H(mA)(m为口令)
A


H (m A )
'
H(mA)
A:口令m’
=
是 接受

拒绝
Hash函数在银行应用举例采用Hash函数,银行操作人员不能获取到用户的密码
THE END!
由m计算H(m)容易
H
由H(m)计算上m不容易
HASH函数的安全性要 求
② 抗弱碰撞性:对于任何给定消息及其散列 值,不可能找到另一个能映射出该散列值的 消息; input
M m H output
m’
给定H(M)
HASH函数的安全性要 求
③ 抗强碰撞性:对于任何两个不同的消息, 它们的散列值必定不同,很难找到两条消息m 和m’,使得H(m)=H(m’)。 input M m m’ H(m)=H(m’) H output
YL-1
b n
CVi-1
f
n
CVi
压缩函数基本结构
HASH填充
在生成散列值之前,对输入消息进行分 组时,如果最后一块报文不足分组长度 要求,就要进行填充。
全部填充0
填充比特 的最高位为 1,其余为0
HASH函数的应用
Hash算列函数由于其单向性和随机性的特点, 主 要运用于提供数据完整性 ( 包括数字签名、以及与 数字签名联系起来的数字指纹的应用 ) 知识证明、 密钥推导、伪随机数生成等方面。 1.数字签名的应用
HASH函数的概念
对于Hash函数H有下面六个要求:
任意长度
m 消息
(1)能够接受任意长度的消息作为输入;
(2)能够生成较短的固定长度的输出; (3)对任何消息输入都应该能够容易和快速
地计算出散列值;
HASH散列函数
(4)应该是一个单向函数——难以或不可能 反推。也就是说,给定H(m),恢复m在 计算上是不可行的; (5)应该能够抵抗弱冲突,即当两个不同消
在进行数字签名过程中使用用户的私钥加 密消息的Hash值,其它任何知道该用户公钥的 人都能够通过数字签名来验证消息的完整性。 在这种情况下,攻击者要想篡改消息,则需要 知道用户的私钥。
HASH函数的应用
2.生成程序或文档的“数字指纹” HASH函数可以将任意长度的输入变换为固定长度的 输出,不同的输入对应着不同的输出,因此,可以 基于HASH函数变换得到程序或文档的散列值输出, 即“数字指纹”。
消息 T A M H(M) M B M' 消息
杂凑算法 = H(M)
H(M) = H(M') (正常) 或 H(M) <> H(M') (错误发生) = H(M')
杂凑算法
3.用于安全存储口令 如果基于HASH函数生成口令的散列值,然后在 系统中保存用户的ID和他的口令的散列值,而 不是口令本身,这有助于改善系统的安全性。
HASH函数的一般结构
1979 年, MerKle 基于数据压缩函数 f 建议了一个散列 函数的一般结构如下图所示。 MD系列、SHA系列大多数散列函数都使用该结构。
Y0 Y1 YL-1
b n IV=CV0 f
b n CV1 f n CV2 ...
b n CVL-1 n f CVL
HASH函数的一般结构
Hash 函数是一个将任意 长度的消息序列映射为 较短的、固定长度的一 个值的函数。
mt
f : {0,1}
{0,1} (t 1)
m
HASH函数的具体描述
Hash函数也称为散列函数,是一公开函数, 不需要密钥,通常记为H,用于将任意长的消
息M映射为较短的、固定长度的一个值作为
认证符,记为H(M),经常称函数值H(M)为散 列值、哈希值、杂凑值、杂凑码或消息摘要 、数组指纹。 从密码角度看,Hash函数也可以看作是一种
HASH函数输入消息M,并将其分为L个固定长度的分 组,若最后一个数据块不满足输入分组长度要求,按 照一定规则进行填充
Y0 Y1 YL-1
b n IV=CV0 f
b n CV1 f n CV2 ...
b n CVL-1 n f CVL
该散列函数重复使用一个压缩函数 f。压缩函数 f 有 两个输入,一个是前一阶段的 n 位输入,另外一个 源于消息的b位分组,并产生一个n位的输出,算法 开始时需要一个初始变量IV,最终的输出值通过一 个输出变换函数 g得到消息散列值,通常b>n,故称f 为压缩函数,如下图所示:
单向密码体制,即它从一个明文到密文是不
可逆映射,只有加密过程,不能解密。
HASH函数的具体描述
散列值是消息中所有比特的函数,因此提 供了一种错误检测能力,即改变消息中任 何一个比特或几个比特都会使散列值发生 改变。
在密码学和数据安全技术中,散列函数是
实现有效、安全可靠数字签字和认证的重 要工具,是安全认证协议中的重要模块。
密码学
HASH函数
在实际的通信保密中,除了要求实现数 据的保密性之外,对传输数据安全性的 另一个基本要求是保证数据的完整性。
• 保密性:
– 怎样保持明文的秘密性,使得明文只能被某些 人阅读? – 用加密的方法 • 完整性: – 怎样确定一列信号在产生后没有被篡改? – 用什么方法?
密码学中的Hash函数的主要功能是提供有 效的数据完整性检验。
h(m) 固定长度
息输入生成相同的输出时,就产生了冲突; (6)应该能够抵抗强冲突,即找到两个有意 义的消息m1和m2,使得H(m1)=H(m2)几 乎是不可能的。
Hash散列函数一般模型
HASH函数的安全性要 求
① 单向性:由消息的散列值倒算出消息在计 算上不可行,即给定H(m),计算m在计算上 不可行; input input output output M M H
相关主题