第十讲 密码Hash函数.ppt
密(研)11-密码学Hash函数

第11章 密码学Hash函数Crytographic Hash Functions课程内容大纲1. 引言第一部分:对称密码2. 传统加密技术第三部分:密码学数据完整性算法11.密码学Hash函数3. 分组密码与数据加密标准(DES) 12.消息认证码(MAC) 4. 数论与有限域的基本概念 13.数字签名 5. 高级加密标准(AES) 6. 分组密码的工作模式 7. 伪随机数的产生和流密码第四部分:相互信任14.密钥管理与分发 15.用户认证第二部分:公钥密码8. 数论入门 9. 公钥密码学与RSA 10. 密钥管理和其他公钥密码体制讲课内容11.1 密码学Hash函数的应用 11.2 两个简单的Hash函数 11.3 需求和安全性、安全Hash函数结构 11.4 基于分组密码链接的Hash函数 11.5 安全Hash算法(SHA) 补充:Hash函数MD511.1 密码学Hash函数的应用Hash函数定义• (单词"hash"的翻译:哈希、杂凑、散列、… ) • Hash函数H是一公开函数,用于将任意长的消息 M映射为较短的、固定长度的一个值H(M)。
称函 值H(M)为杂凑值、杂凑码或消息摘要 M → h = H(M)• 在安全应用中使用的Hash函数称为密码学Hash 函数(cryptographic hash function)Hash函数特点• Hash值 H(M) 是消息中所有 比特的函数,因此提供了一 种错误检测能力,即改变消 息中任何一个比特或几个比 特都会使杂凑码发生改变。
Hash函数的应用(1)消息认证 (2)数字签名 (3)其它一些应用Hash函数应用之一:消息认证• 消息认证是用来验证消息完整性的一种机制或服务 完整性 • 当Hash函数用于提供消息认证功能时,Hash函数 值通常称为消息摘要(message digest)• 一般地,消息认证是通过使用消息认证码(MAC) 实现的,即带密钥的Hash函数。
HASH函数简介

② 弱单向性:已知x,找出x’ (x’ ≠x),使得 h(x’ )= h(x) 在计算上是不可行的,满足这一 性质的单向散列函数称为弱单向散列函数。
Hash函数的安全性
问题 碰撞
实例:Hash函数h:X → Y
找出:x,x’∈X使得x’ ≠x,并且h(x’ )= h(x) ③ 强单向性:找出任意两个不同的输入x,x’ 使得h(x’ )= h(x)在计算上是不可行的,满足 这一性质的单向散列函数,则称其为强单向 散列函数
它适用在32位字长的处理器上用高速软件实 现--它是基于 3ash算法:
MD5:1992年4月Ron Rivest公布的MD4的改 进RFC 1321称为MD5 它对输入仍以512位分组,其输出是4个32位 字的级联,与 MD4 相同。MD5比MD4来得 复杂,并且速度较之要慢一点,但更安全, 在抗分析和抗差分方面表现更好。
Hash算法
从密码分析的角度来看,MD5被认为是易受 攻击的 2004年山东大学王小云教授破译了MD5, 采用”比特追踪法”(模差分方法)可以很 快的找到一个碰撞。而且这种攻击已经部 分的可实用化,即找到有意义的碰撞。
Hash算法
著名的Hash算法:
SHA1:安全杂凑算法(secure hash algorithm,
Hash函数
Hash函数
在实际的通信保密中,除了要求实现数 据的保密性之外,对传输数据安全性的 另一个基本要求是保证数据的完整性。 密码学中的Hash函数可为数据完整性提 供保障
数据的完整性是指数据从 发送方产生后,经过传输 或存储以后,未被以未授 权的方式修改的性质。
Hash函数
Hash函数通用来构造数据的短“指纹”(函 数值);一旦数据改变,指纹就不再正确。 即使数据被存储在不安全的地方,通过重新 计算数据的指纹并验证指纹是否改变,就能 够检测数据的完整性。
第十讲 密码Hash函数

本讲提要
分类与架构 基本构造 修改发现码(MDC) 消息认证码(MAC)
1 分类与架构
1.1 基本性质与定义 定义1 Hash函数(在不严格意义下)是至少满 足下列两条性质的函数h。 (1) 压缩:h将任意有限比特长度的输入x映 射为固定长度为n的输出h(x)。 (2) 容易计算:给定h和输入x,容易计算出 h (x )。
1.1 基本性质与定义(续) 定义 3 单向 Hash 函数 (OWHF) 是满足定义 1 以 及定义2中(1)和(2)的Hash函数。 定义4 抗碰撞Hash函数(CRHF)是满足定义1以 及定义2中(2)和(3)的Hash函数。 # 虽然几乎所有实际使用的 CRHF 都有抗原像 攻击的性质,但由于技术原因定义 4 并未给出。
定义 2 修改发现码 (MDC) 是 Hash 函数 h ,对于输入 x 和x以及相应输出y和y满足如下性质: (1) 原像不可逆:对于几乎所有的 Hash 输出不可能 计算出其的Hash输入。也就是,在不知道输入的情 况下给定任意一个输出y,找到任意一个输入x满足 h(x)=y是计算不可能的。 (2) 二次原像不可逆:对于任何一个给定的输入 x, 找到另一个输入 xx ,且满足 h(x)=h(x) ,在计算上 不可能。 (3) 抵抗碰撞:找到两个不同的输入 x 和 x ,满足 h(x)=h(x),在计算上不可能(注意:这里两个输入可 以自由选择)。
1 分类与架构(续)
1.4 其他应用
MDC的其他应用 (1) 知识确认。 (2) 密钥产生。 (3) 伪随机数发生。 # 这些MDC可能需要满足一些超过之前定 义的附加性质。
2 基本构造
2.1 迭代结构的一般模型
高级视图
任意长度输入
哈希函数.ppt

k*k(k<=m/2)称二次探测再散列,用公式表达如下:
例:在长度为11的哈希表中已填有关键字分别17,60,29的 记录,现有第四个记录,其关键字为38,由哈希函数得到 地址为5,若用线性探测再散列,如下:
哈希函数 哈希表中的元素是由哈希函数确定的。将
数据元素的关键字K作为自变量,通过一定的函数关系 (称为哈希函数)计算出的值,即为该元素的存储地址。 表示为:
Addr = H(key) 这个函数就是哈希函数
二、冲突及冲突处理
由于哈希函数是一个压缩映像,因此,在一般情况下, 很容易产生“冲突”现象
在哈希元素(地址)求解过程中,不同关键字值对应到同一 个存储地址的现象称为冲突。即关键字K1 K2, 但哈希函 数值 H(K1)= H(K2)。 均匀的哈希函数可以减少冲突,但不能避免冲突。发生冲突 后,必须解决;也即必须寻找下一个可用地址。 处理冲突是建立哈希表过程中不可缺少的一部分。
0 1 2 3 4 5 6 7 8 9 10
(a)插入前
60 17 29
0 12 3 4 5
6
7
8
9 10
(b)线性探测再散列
60 17 29 38
0 1 2 3 4 5 6 7 8 9 10 38 60 17 29
(c)二次探测再散列
0123
45
6
7
8 9 10
38
60 17 29
(d)伪随机探测再散列,伪随机数列为9,5,3,8,1...
解题思路:首先,明确一下几格概念:什么是hash表、 什么是hash函数、什么是线性探查法、冲突在哪里; 其次逐一求余;最后找出冲突,利用线性探查法解决 问题。
HASH函数

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,则
《现代密码学》散列函数与消息鉴别ppt课件

• SHA–1产生音讯摘要的过程类似MD5,如下图
填充位
L×512 bit= N×32 bit K bit
这一步为MD5的主循环,包括四轮。每个循环 都以当前的正在处置的512比特分组Yq和128比 特缓冲值ABCD为输入,然后更新缓冲内容。
3.MD5的输出
由A、B、C、D四个存放器的输出按低位字节在 前的顺序(即以A的低字节开场、D的高字节终 了)得到128位的音讯摘要。
• 单个512比特分组的MD5主循环处置:
对散列函数必需具有的性质的了解: 系统能够存在的伪造方式 伪造方式一:假设攻击者截获某一音讯摘要h,假
设H的逆函数H-1是易求的,可算出H-1(h)=m, 满足h=H(m)。为防止这一点,必需求求散列 函数H为单向的,即计算H的逆函数H-1在计算 上是不可行的。 伪造方式二:从一个有效签名(m,y)开场,此处y= sigk(H(m))。首先计算h=H(m),并企图找到一 个m’=m满足H(m’)=H(m)。假设做到这一点, 那么(m’,y)也将为有效签名。为防止这一点, 要求函数h具有弱抗冲突特性,即,对给定音 讯m,在计算上几乎找不到不同于m的m’ ∈ X 使H(m)=H(m’)。
(1)单向性:对任何给定的码h,寻觅m使得 H(m) = h在计算上是不可行的
(2)具有弱抗碰撞性〔week collision resistance〕 :对于任何给定的音讯m, 寻觅一个与m不同的音讯m’使得 H(m)=H(m’)在计算上不可行。
(3)具有强抗碰撞性〔 strong collision resistance 〕:寻觅恣意两个不同的音讯 m和m’使得使得H(m)=H(m’)在计算上不 可行。
对散列函数的生日攻击
• 假定其输出为m比特,那么寻觅一个音讯,使其散 列值与给定散列值一样那么需求计算2m次;而寻 觅两个音讯具有一样的散列值仅需求实验2m/2个 随机的音讯。
Hash函数

第3轮 以 [ABCD k s i]表示如下操作 A = B + ((A + H(B,C,D) + X[k] + T[i]) <<< s). Do the following 16 operations. [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
3、强无碰撞hash函数是单向的。 总之,Hash函数应该满足 1)由自变量求函数是容易的,反之是困难的。 2)寻找碰撞是困难的
四、Hash函数实例 MD5
MD:Merkle-Damgard结构 输入:任意长度的消息 输出:128位消息摘要 处理:以512位输入数据块为单位
L×512 bits=N ×32bits × K bits 报文
填充 (1 to 448 bits)
100…0
报文长度 (K mod 264)
512 bits
512 bits
512 bits
512 bits
Y0
512
Y1
512
Yq
512
YL-1
512
128
128 128 128
HMD5
IV CV1
HMD5
CVq
HMD5
CVL-1
Hash函数

4 Hash函数的需求 函数的需求
– H能用于任何大小的数据分组 能用于任何大小的数据分组; 能用于任何大小的数据分组 – H产生定长输出 产生定长输出; 产生定长输出 – 对任意给定的 H(x)要相对易于计算 使得 对任意给定的x, 要相对易于计算,使得 要相对易于计算 软硬件实现都实际可行; 软硬件实现都实际可行 – 对任意给定的码 寻求 使得 对任意给定的码h, 寻求x使得 使得H(x)=h在计算 在计算 上是不可行的(单向性 单向性); 上是不可行的 单向性 – 任意给定分组 寻求不等于 的y, 使得 任意给定分组x, 寻求不等于x的 H(y)= H(x)在计算上不可行 弱抗攻击性 在计算上不可行(弱抗攻击性 在计算上不可行 弱抗攻击性); – 寻求对任何的 寻求对任何的(x,y)对使得 对使得H(x)=H(y)在计算 对使得 在计算 上不可行(强抗攻击性 强抗攻击性); 上不可行 强抗攻击性
Hash函数 散列 哈希函数 函数(散列 哈希函数) 函数 散列,哈希函数
1 Hash函数 函数
– Hash函数是将任意长度的报文映射成一个 函数是将任意长度的报文映射成一个 较短的定长输出报文的函数. 较短的定长输出报文的函数 – 如下形式: h = H(M), M是变长的报文,h是定 如下形式: M是变长的报文 是变长的报文,h是定 长的Hash值. 长的 值 – Hash函数的目的是为文件、报文或其它的 函数的目的是为文件、 函数的目的是为文件 分组数据产生“数字指报文认证的方式 续.) 码提供报文认证的方式(续 码提供报文认证的方式 – (d) A->B: Ek(M || EKRa( H(M) ) )
• 提供认证和数字签名 • 提供保密 仅A和B共享 提供保密(仅 和 共享 共享K)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019-8-29
谢谢您的观赏
28
3 无密钥密码Hash函数:MDC (续)
3.2 定制的Hash函数:SHA-1(续)
2019-8-29
谢谢您的观赏
14
1 分类与架构(续)
1.3 性质之间的关系 事实1 Hash函数的抗碰撞隐含抗二次原像。
事实2 Hash函数抗碰撞不能保证抗原像。
事实3 Hash函数抗二次原像不能保证抗原像, 抗原像也不能保证抗二次原像。
攻则事应实击该4者抗h不k是二知M次道A原密C像,钥、hkk,符抗h碰合k抗撞计选、算择抗抵消原抗息像性。攻质击。若,
Ci
Eki
(Mi
)
M
;
i
H 2019-i8-29 CLi || CRi; H谢i 谢您C的观L赏i || CRi。
23
3 无密钥密码Hash函数:MDC(续)
3.1 基于分组密码的Hash函数:MDC-2 (续)
Mi
Eg(Hi-1)
Eg'(Hi-1)
CLi CRi
CL'i CR'i
(1) 令 H0 IV,H0 IV 。 (2) || 表示连接操作,CLi 和CRi表示 Ci的左和右32 比特位。输出Hash值 是h(M ) = Ht || Ht,按如下公 式计算(1 i t):
ki g(Hi-1),
Ci
Eki
(Mi)
M
;
i
ki g(Hi-1),
假定EK为标准 DES。对于U u1u2 u64,定义两个函 数g和g,将64比特的U映射成适合于DES密钥的56比 特值如下:
g(U ) u110u4u5u6u7u9u10 u63, g(U ) u101u4u5u6u7u9u10 u63。 从推荐值集合中选择两个无需保密的64比特常量IV和
2 基本构造(续)
2.1 迭代结构的一般模型(续)
Hi表示第i步的部分结果,输入为x=x1x2…xt 的迭代函数的一般模型为
H0=IV; Hi=f(Hi-1, xi),1it ;h(x)=g(Ht)。 Hi-1表示第i-1步和第i步之间的n比特链变量, H0是预定义的开始值或初始值(IV)。最后一 步用可选的输出变换g将n比特链变量映射为 m比特结果g(Ht),通常g(Ht)=Ht。
…
CV2
CVq
HSHA
…
HSHA
CVL-1
消 息
摘
要
2019-8-29
谢谢您的观赏
26
3 无密钥密码Hash函数:MDC(续)
3.2 定制的Hash函数:SHA-1(续)
SHA-1消息处理过程:
(1) 消息填充。填充使得消息的比特长度为512比特的 某个倍数减64,即使原始消息已满足要求,仍要填充。 这样填充的比特数在1到512。填充方式是第一位为1 其他位是0。最后64比特位用来填充消息被填充前的 长度。这形成了长度为512比特的一系列分组Y0, Y1,… ,YL-1。
1.1 基本性质与定义(续)
(2) 压缩:函数hk可以将任意有限比特长度 的输入x映射为固定n比特长度的位串。进一 步,给出函数族h的算法描述,对于任何一 个固定符合要求的密钥值k(攻击者不知其值), 需要满足如下性质:
(3) 计算抵抗:给定0个或多个消息-MAC值
对(xi,hk(xi)),找到任意消息-MAC值对(x,
7
1 分类与架构(续)
1.1 基本性质与定义(续) 攻击者攻击 MDC的主要目标如下: (1) 给定Hash值y,发现原像x满足y=h(x); 或者给定对(x,h(x))发现另一个像x满足 h(x)=h(x)。 (2) 发现两个Hash输入x和x满足h(x)=h(x)。
2019-8-29
谢谢您的观赏
谢谢您的观赏
4
1 分类与架构(续)
1.1 基本性质与定义(续)
定义2 修改发现码(MDC)是Hash函数h,对于输入x 和x以及相应输出y和y满足如下性质:
(1) 原像不可逆:对于几乎所有的Hash输出不可能 计算出其的Hash输入。也就是,在不知道输入的情 况下给定任意一个输出y,找到任意一个输入x满足 h(x)=y是计算不可能的。
IV (这两个常量在MDC验证中也需要使用)。一组默认
值为(十六进制):IV = 5252525252525252,IV = 25252
52525252525。
2019-8-29
谢谢您的观赏
22
3 无密钥密码Hash函数:MDC(续)
3.1 基于分组密码的Hash函数:MDC-2 (续) 将消息 M 按 64比特分组M [M1,M 2,,M t ]。 使用DES的MDC - 2 按如下步骤进行:
2019-8-29
谢谢您的观赏
13
1 分类与架构(续)
1.2 特定应用需要的性质
与特定性质联系在一起的是开销,如 CRHF 一 般 比 OWHF 要 难 于 构 造 , 且 其 Hash值应是OWHF的比特长度的两倍。
因此,考虑具体应用十分重要。假如可 由不可信方控制Hash函数的输入的准确 内容,则可能需要CRHF,如数字签名。 假如只是可信方的单方应用,使用 OWHF就足够了,如口令表的应用。
L×512比特 K比特
需要产生Hash值的消息
100…0
2019-8-29
填充长度1谢-5谢12您比的特观赏
消息长度K
27
3 无密钥密码Hash函数:MDC(续)
3.2 定制的Hash函数:SHA-1(续)
(2) 初始化。 SHA-1使用160比特的缓冲区存 储中间和最终Hash值,可用5个32比特寄存器 A,B,C,D,E表示,初始值为(十六进制) A=67452301,B=efcdab89,C=98badcfe, D=10325476,E=c3d2e1f0。
2019-8-29
谢谢您的观赏
15
1 分类与架构(续)
1.4 其他应用
MDC的其他应用 (1) 知识确认。 (2) 密钥产生。 (3) 伪随机数发生。 # 这些MDC可能需要满足一些超过之前定 义的附加性质。
2ቤተ መጻሕፍቲ ባይዱ19-8-29
谢谢您的观赏
16
2 基本构造
2.1 迭代结构的一般模型
高级视图
任意长度输入
2019-8-29
谢谢您的观赏
11
1 分类与架构(续)
1.1 基本性质与定义(续)
攻击者攻击MAC的目标为:
在不知道密钥k的情况下,给定一个或多个消息MAC值对(xi,hk(xi)),计算出一个或多个新消息MAC值对(x,hk(x)),满足xxi。 攻击者潜在的能力有:
(1) 已知消息攻击。
(2) 选择消息攻击:掌握一个或多个由攻击者选择
算上不可能,则有:(1) OWHF要求n80;(2) CRHF要求n160;(3) MAC对大部分环境要求n64
以及64-80比特的密钥,如果有特别控制,可小到 n=32或64。
2019-8-29
谢谢您的观赏
20
3 无密钥密码Hash函数:MDC
3.1 基于分组密码的Hash函数:MDC-2
2019-8-29
谢谢您的观赏
19
2 基本构造(续)
2.2 实际安全需要的输出比特大小
事实5 一个n比特输出的不带密钥Hash函数是理想 安全的,如果:(1) 给定一个Hash输出,产生一个 原像和二次原像需要大约2n次操作规模;(2) 产生 一个碰撞需要大约2n/2次操作规模。
事实6 假定n比特输出的Hash函数,280次操作在计
迭代压缩函数
固定长度输出
可选输出变换
2019-8-29
谢谢您的输观出赏
17
2 基本构造(续)
2.1 迭代结构的一般模型(续)
详细视图
初始输入x
预处理
附加填充比特
Hash函数h
附加长度分组
格式化输入x=x1x2…xt
迭代处理
Hi-1
xi
压缩
f
函数f
Hi Ht
g
2019-8-29
谢谢您的观赏
18
输出h(x)=g(Ht)
定义1和定义2的说明:
(1) “容易”和“计算上不可能”都留下来没 有准确定义。“容易”意味着多项式时间和 空间;“计算上不可能”意味着超越多项式 的计算需求。
(2) 一般认为,抗原像单向;抗二次原像抗 弱碰撞;抵抗碰撞抗强碰撞。
2019-8-29
谢谢您的观赏
6
1 分类与架构(续)
1.1 基本性质与定义(续)
2019-8-29
谢谢您的观赏
3
1 分类与架构(续)
1.1 基本性质与定义(续)
密码中使用的Hash函数主要为两类: (1) 修改发现码(MDC):不带密钥的Hash 函数,主要用于提供消息完整性检查。
(2) 消息认证码(MAC):带密钥的Hash函 数,主要用于认证消息源及保证其完整性。
2019-8-29
2019-8-29
谢谢您的观赏
25
3 无密钥密码Hash函数:MDC(续)
3.2 定制的Hash函数:SHA-1(续)
SHA-1算法的输入为小于264比特长的任意消 息,输出为160比特的消息摘要,算法处理过 程如下图。
Y0(512比特) Y1
Yq
YL-1
HSHA
IV (160比特)
HSHA CV1 (160比特)
的xi对应的消息-MAC值对(xi,hk(xi))。
(3) 适应性选择消息攻击:允许根据前面的询问结
果连续做出消息选择。
2019-8-29
谢谢您的观赏