密码学课件(Hash函数)

合集下载

密(研)11-密码学Hash函数

密(研)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函数

密码学--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函数

武汉大学《密码学》课件第十三讲 HASH函数
z 目的:
与AES配套 增强安全性
z 与SHA-1比较:
结构相同 逻辑函数相同 摸算术相同
27
三、SHA-2 HASH函数
1、 SHA-2的概况
SHA参数比较
Hash码长度 消息长度 分组长度 字长度 迭代步骤数 安全性
SHA-1 160 <264 512 32 80 80
SHA-256 256 <264 512 32 64 128
SHA-384 384 <2128 1024 64 80 192
SHA-512 512 <2128 1024 64 80 256
注:1、所有的长度以比特为单位。
2、安全性是指对输出长度为n比特hash函数的生日攻击产生碰撞的工作量大约为2n/2

28
三、SHA-2 HASH函数
2、 SHA-512
注意:在① 、②步后,数据长度为1024的N倍。 将数据分成N块,每块1024位,进行迭代处理。
30
三、SHA-2 HASH函数
L位 消息
N×1024位
L 10…0 消息长度
1024位 M1
1024位 M2
1024位 MN
512位 IV F
+ H1 F
+ H2
z F块处理 z +为摸264加
⑹压缩函数
z 每轮对A,B,C,D,E进行20次迭代,四轮共80次迭代。 t为迭代次数编号,所以 0≤t≤79 。
z 其中,ft(B,C,D) = 第t步使用的基本逻辑函数; <<s 表示 32位的变量循环左移s位 W t表示从当前分组BLK导出的32位的字 K t表示加法常量,共使用4个不同的加法常量 +为 模232加法

第7章 密码学Hash函数

第7章 密码学Hash函数
• 是介于0到n-1之间的一个整数(zhěngshù)
• 例2: 明文: “Go now”

G 01000111

o 01101111

n 01101110

o 01101111

w 01110111
• • 不行
01011110
13
精品PPT
Hash函数(hánshù)构造
• 基于分组密码 • 用候选单向函数构造Hash函数 • 矩阵单向函数 • 基于胞元自动机的算法 • 以有限域中元素的指数(zhǐshù)运算构造 • 用流密码构造

B = EFCDAB89

C = 98BADCFE

D = 10325476
• Step 4) 消息由512-bits 数据块(Y0,Y1,…,YL-1)处理 4
轮,每轮16次迭代
29
精品PPT
4轮
HMD5
Yq 512-bit
Message
512
CVq 128
A
B
C
D
F,T[1…16],M[i]
MD5 压缩(yā suō)函数
• 每一轮(yī lún)有16次迭代,每1次迭代形如: • B B + (( A + g(B,C,D) + M[k] +T[i])<<<s) • • g:4轮都不同的非线性函数 (F,G,H,I) • 第一轮(yī lún):F(X,Y,Z) = (X Y) ((¬X) Z) • 第二轮:G(X,Y,Z) = (X Z) (Y (¬Z)) • 第三轮:H(X,Y,Z) = X Y Z • 第四轮:I(X,Y,Z) = Y (X (¬Z))

密码学第8章Hash函数

密码学第8章Hash函数

③对j = 0 至15 执行X[j] = M[16i + j ]. ④将寄存器A, B, C, D中的值存储到另外四个寄存器AA , BB , CC , DD中, AA = A, BB = B, CC = C, DD = D. ⑤ 执行Round1. ⑥ 执行Round2.
⑦ 执行Round3. ⑧A = A + AA, B = B + BB, C = C + CC, D = D + DD.
预处理过程有以下几步: ① 对消息填充,使得其比特长在模512下为 448,即填充后消息的长度为512的某一倍数 减64,留出的64比特备第2步使用。
步骤①是必需的,即使消息长度已满足要求, 仍需填充。例如,消息长为448比特,则需填充 512比特,使其长度变为960,因此填充的比特 数大于等于1而小于等于512。 填充方式是固定的,即第1位为1,其后各位皆 为 0。
8.4 安全Hash算法SHA
安全Hash算法SHA(Secure Hash Algorithm)由 美国NIST设计,于1993年作为联邦信息处理标 准(FIPS PUB 180)公布。 SHA-0是SHA的早期版本,SHA-0被公布后, NIST很快就发现了它的缺陷,修改后的版本称 为SHA-1,简称为SHA。 SHA基于MD4算法,其结构与MD4非常类似。 算法的输入为小于264比特长的任意消息,分组 长度为512比特,输出为160比特长的消息摘要。
SHA算法的预处理
设x 是一个消息, 用二进制表示。首先由x 生成一个数组
M 按下述算法由x 生成:(与MD4算法的M产生方法完全相同)
① d = (447 -|x|) mod 512。 ② 令l 为 的二进制表示。l 的长度为64 比特。 如果l 的长度不足64 比特,则在l 的左端添0 补足。 ③M= 。 这里|x|表示x 的长度, ||表示序列的联接, 譬如x||y 表示将序列y 排在序列x 的右端。

信息安全原理与技术ch05Hash函数和数字签名

信息安全原理与技术ch05Hash函数和数字签名

PPT文档演模板
2020/11/4
信息安全原理与技术ch05Hash函数 和数字签名
• 首先k个人的生日排列的总数目是365k。这样, k个人有不同生日的排列数为:
• 因此,k个人有不同生日的概率为不重复的排列 数除以总书目,得到:
• 则,k个人中,至少找到两个人同日出生的概率 是:
PPT文档演模板
PPT文档演模板
2020/11/4
信息安全原理与技术ch05Hash函数 和数字签名
生日攻击(Birthday Attack)
• 如果攻击者希望伪造消息M的签名来欺骗接收者, 则他需要找到满足H(M’)=H(M)的M’来替代M。 对于生成64位散列值的散列函数,平均需要尝 试263次以找到M’。但是建立在生日悖论上的生 日攻击法,则会更有效。
PPT文档演模板
2020/11/4
信息安全原理与技术ch05Hash函数 和数字签名
Yuval的生日攻击(续)
• (3) 攻击者在上述两个消息集合中找出可以产生相同 散列值的一对消息。根据“生日悖论”理论,能找 到这样一对消息的概率是非常大的。如果找不到这 样的消息,攻击者再产生一条有效的消息和伪造的 消息,并增加每组中的明文数目,直至成功为止。
• 设消息M=(X1||X2||…||Xm),即由64位分组Xi联结而成。定义
Δ(M)=X1X2… Xm
Ck(M)=EK[Δ(M)] 攻击者可以用任何期望的Y1至Ym-1替代X1至Xm-1,用Ym替代 Xm来进行攻击,其中Ym如下计算的:
Ym=Y1Y2…Ym-1Δ(M) 攻击者可以将Y1至Ym-1与原来的MAC连结成一个新的消息M’, 接收方收到(M’, Ck(M))时,由于Δ(M’)= Y1 Y2… Ym =Δ(M),因此Ck(M)=EK[Δ(M’)],接受者会认为该消息是真实。 用这种办法,攻击者可以随意插入任意的长为64(m-1)位的 消息。

杂凑函数 散列函数

杂凑函数 散列函数

杂凑函数(散列函数)1. 定义杂凑函数(Hash Function),也称为散列函数,是一种将任意大小的数据映射到固定大小的数据的函数。

它将输入数据通过一系列的计算操作,转换成一个固定长度的输出,通常称为散列值或哈希值。

杂凑函数是密码学、数据完整性校验、数据索引等领域中重要的基础工具。

2. 用途杂凑函数有广泛的应用,主要包括以下几个方面:2.1 数据完整性校验杂凑函数可以用于验证数据的完整性,即通过计算数据的散列值,然后与预先保存的正确散列值进行比对,来判断数据是否被篡改。

这在网络传输、文件存储等场景中非常重要,可以有效防止数据被篡改而不被察觉。

2.2 数据唯一标识杂凑函数可以将数据映射为唯一的散列值。

由于散列值的长度固定,可以大大减小数据的存储空间。

在数据索引、数据库中,可以使用散列值作为数据的唯一标识,提高数据的查询和存储效率。

2.3 密码学杂凑函数在密码学中有重要的应用。

比如,密码存储时通常不会直接保存明文密码,而是将密码的散列值保存在数据库中。

当用户登录时,输入的密码经过散列计算后与数据库中的散列值进行比对,以验证用户的身份。

2.4 数据分片杂凑函数可以将数据按照一定的规则进行分片,将大规模数据分散存储在不同的节点上。

这样可以提高数据的并行处理能力和分布式存储系统的可扩展性。

3. 工作方式杂凑函数的工作方式主要包括两个方面:输入处理和输出生成。

3.1 输入处理杂凑函数接受一个任意长度的输入数据,并经过一系列的计算操作将其转换为固定长度的中间结果。

常见的输入处理操作包括:•消息扩展:将输入数据进行填充,使其长度满足计算要求。

常见的填充方式有补零、补位数等。

•消息分块:将输入数据按照固定长度进行划分,得到多个块。

每个块独立处理,可以提高计算效率。

•迭代计算:对每个数据块进行迭代计算,将当前数据块的计算结果作为下一个数据块的输入,直到处理完所有数据块。

3.2 输出生成经过输入处理后,杂凑函数会生成一个固定长度的输出,即散列值或哈希值。

第八讲 HASH函数 武汉大学密码学

第八讲 HASH函数 武汉大学密码学

① 填充
z 对数据填充的目的是使填充后的数据长度为512的整数倍。 因为迭代压缩是对512位数据块进行的,如果数据的长度不 是512的整数倍,最后一块数据将是短块,这将无法处理。 z 设消息m长度为l 比特。首先将比特“1”添加到m的末尾,再 添加 k个“0”,其中,k是满足下式的最小非负整数。 l + 1 + k = 448 mod 512 z 然后再添加一个64位比特串,该比特串是长度l 的二进制表 示。填充后的消息 m 的比特长度一定为512的倍数。
18
二、中国商用密码Hash函数SM3
⑵ 算法描述 ① 填充
z 举例:对消息01100001 01100010 01100011,其长度l=24,经 填充得到比特串: l的二进制表示
423比特0 64比特
01100001 01100010 01100011 100 …… 00 00 … 011000
8
一、Hash函数的概念
2、Hash函数的类型
② 基于对称密码的Hash函数
z 对称密码已经十分成熟,可以利用它设计Hash函数。 z 成功实例
欧洲的Whirlpool算法 俄罗斯的Hash函数标准算法GOST R34.11-94 ANSI和ISO的基于分组密码的Hash函数标准
z z z
z 消息扩展的步骤如下:
① 将消息分组B(i)划分为16个字W0,W1,… ,W15。 ② FOR j=16 TO 67 Wj← P1(Wj−16 ⊕ Wj−9 ⊕ (Wj−3 <<< 15)) ⊕ (Wj−13 <<< 7) ⊕ Wj−6 ENDFOR ③ FOR j=0 TO 63 Wj′ = Wj ⊕ Wj+4 ENDFOR

第21讲 Hash函数

第21讲 Hash函数

主要内容
Hash函数简介 Hash函数的性质 Hash算法实现
Hash函数的性质
0 1 2 3 4 5 6 7 8 9 常规Hash函数
“dog”
“neanderthal”
“horse”
H(char s[ ]) = (s[0] – ‘a’) mod 10
Hash表
Hash函数的性质
密码学上的Hash函数应该具有什么样的性质?
M
H
Ek
Ek(m||H(M))
Dk
M
H(M)
H
比较
Alice
Bob
Hash函数简介
Hash 函数与消息认证
UNIX把密码存放在文件: /etc/passwd/etc/passwd 可被任何人访问
但是,这些密码不是密码本身! 它们仅是密码的Hash值,强力攻击可以重新生成这
样一个密码文本。为了提高其安全性,UNIX在计算 Hash值前先对每个密钥添加了一个随机数(salt)
MD5算法——迭代压缩函数 1. MD5算法的分组处理与分组密码相似; 2. 它由4轮组成,每轮包括16个步骤。 3. 512比特的消息分组Mi被分为16个子分组(每个子分 组为32比特)参与每轮16步函数运算, 4. 每步的输入是4个32比特的链接量和一个32比特的消息 分组,输出为32比特值; 5. 经过4轮共64步后,得到的4个寄存器值分别与输入链
CV1
HMD5
HMD5
CVq
CVN-1
HMD5
CVN
128-bit散列值
Hash算法实现
MD5算法——消息填充
1. 填充“1”和若干“0”使其长度模512与448同余;
2. 然后再将消息的真实长度以64比特表示附加在填充 的后面,从而使得消息的长度恰好为512比特的整 数倍。x||1||0d||L

哈希Hash(散列函数)

哈希Hash(散列函数)

Hash(散列函数)Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数基本概念编辑若结构中存在和关键字K相等的记录,则必定在f(K)的存储位置上。

由此,不需比较便可直接取得所查记录。

称这个对应关系f为散列函数(Hash function),按这个事先建立的表为散列表。

对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称碰撞。

具有相同函数值的关键字对该散列函数来说称做同义词。

综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。

若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。

性质所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。

这个特性是散列函数具有确定性的结果。

但另一方面,散列函数的输入和输出不是一一对应的,如果两个散列值相同,两个输入值很可能是相同的,但不绝对肯定二者一定相等(可能出现哈希碰撞)。

输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。

[1]典型的散列函数都有无限定义域,比如任意长度的字节字符串,和有限的值域,比如固定长度的比特串。

第11章 hash函数

第11章 hash函数

13
hash函数应用 (1)消息认证
A B:E k [M H(M)] 提供鉴别 -加密保护H(M) 提供保密 -仅A和B共享密钥k
A B:M E k [H(M)] 提供鉴别 -加密保护H(M)
A B: M H(M S)]] 提供鉴别 -仅A和B共享消息S
其他应用

产生单向口令文件:

如操作系统存储口令的Hash值而不是口令本 身。 入侵检测和病毒检测: 将每个文件的Hash值H(F)存储在安全系统中, 随后就能够通过重新计算H(F)来判断文件是 否被修改过。
构建随机函数(PRF)或用做伪随机发生器。

(2)hash定义
散列函数
H(M): 输入为任意长度的消息M; 输出为一个固定长
固定长度的值作为认证标识
散列函数:一个公开函数将任意长度的消息映
射到一个固定长度的哈希值,作为认证标识
对称加密
A B
A与B共享密钥k A : Ek ( M ) B B : Dk ( M ),查看M 是否为有意义的明文
哈希函数的应用

消息认证 数字签名
口令保护、文件完整性等
2017/7/10
鉴别和认证
鉴别:authentication 认证:Certification
真伪性
(1) 用来验证发送的数据,特别是一个信息的完整性的过程 (2) 在用户开始使用系统时对其身份进行的确认 计算安全学用语,指为了鉴定一个计算机系统或网络的设计 和它提供的手段在多大程度上能满足预定的安全要求而进 行的技术评估
2017/7/10 25
散列函数应满足的条件:
散列函数的目的是为需认证的数据产生一个“指 纹”。为了能够实现对数据的认证,散列函数应满 足以下条件: 1)函数的输入可以是任意长。 2)压缩性:函数的输出是固定长,如MD5输出128bit, SHA-1输出160 bit。具有压缩性。 3)已知X,求H(x)较为容易,可用硬件或软件实现。 4)抗原像攻击(单向性):已知h,求使得H(x)=h的 x在计算上是不可行的,这一性质称为函数的单向性, 称H(x)为单向散列函数。

哈希函数.ppt

哈希函数.ppt
二次探测法:如果di取值可能为1,-1,2,-2,4,-4,9,-9,16,-16,...k*k,-
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函数、什么是线性探查法、冲突在哪里; 其次逐一求余;最后找出冲突,利用线性探查法解决 问题。

现代密码学:第41讲 Hash函数

现代密码学:第41讲 Hash函数

电子科技大学信软学院——现代密码学廖永建Hash 函数的定义
Hash 函数使用方式
Hash 函数满足条件及安全性定义
电子科技大学信软学院——现代密码学廖永建
电子科技大学信软学院——现代密码学廖永建Hash 函数的定义
Hash 函数使用方式
Hash 函数满足条件及安全性定义
电子科技大学信软学院——现代密码学廖永建
电子科技大学信软学院——现代密码学廖永建Hash 函数的定义
Hash 函数使用方式
Hash 函数满足条件及安全性定义
提供认证提供保密
提供认证
提供认证
提供认证提供保密
Bob
提供认证
提供认证提供保密。

网络安全-10-密码学Hash函数

网络安全-10-密码学Hash函数

Hash函数

浓缩任意长的消息 M 到一个固定
长度的取值 h = H(M)

通常假设 hash 函数是公开的且不
使用密钥(MAC使用密钥)

Hash函数用户检测对消息的改变
2015/8/12
西安电子科技大学计算机学院
5
密码学Hash函数
哈希函数的应用

消息认证
数字签名
2015/8/12
西安电子科技大学计算机学院
2015/8/12
西安电子科技大学计算机学院
31
2015/8/12
西安电子科技大学计算机学院
32
推荐的SHA标准
2015/8/12 2015/8/12
西安电子科技大学计算机学院 西安电子科技大学计算机学院
33
33
2015/8/12
西安电子科技大学计算机学院
34
2015/8/12
西安电子科技大学计算机学院
哈希函数
在公钥密码的内容中,已经介绍了“单向 函数”的概念。而哈希函数是一类特殊的单 向函数。 设数据文件是任意长度的比特串 x 。在密 码应用中,希望有这样的函数 y=H(x),满足: (1)将x压缩成为固定长度的比特串y。 (2)不同的x一定要生成不同的 y 。(一般 情况) (3)由y的值无法倒算x的值。

如果采用64-bit的Hash码,以一半概率找到碰撞 的代价的数量级是232
2015/8/12 西安电子科技大学计算机学院 14
生日悖论
2015/8/12
西安电子科技大学计算机学院
15
Hash安全特性之间的关系
抗弱碰撞攻击
抗原像攻击
抗强碰撞攻击
2015/8/12

hase函数

hase函数

Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固定长度散列值。

在信息安全领域中应用的Hash算法,还需要满足其他关键特性:第一当然是单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=H-1(h)不可行。

这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的Hash 又被称为"消息摘要(message digest)",就是要求能方便的将"消息"进行"摘要",但在"摘要"中无法得到比"摘要"本身更多的关于"消息"的信息。

第二是抗冲突性(collision-resistant),即在统计上无法产生2个散列值相同的预映射。

给定M,计算上无法找到M',满足H(M)=H(M') ,此谓弱抗冲突性;计算上也难以寻找一对任意的M和M',使满足H(M)=H(M') ,此谓强抗冲突性。

要求"强抗冲突性"主要是为了防范所谓"生日攻击(birthday attack)",在一个10人的团体中,你能找到和你生日相同的人的概率是2.4%,而在同一团体中,有2人生日相同的概率是11.7%。

类似的,当预映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到"相同生日"的人。

第十讲 密码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 迭代结构的一般模型
高级视图
任意长度输入
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学课件(Hash函数)
数据完整性
回顾信息安全的三个要点
保密性 完整性 可用性
加密算法解决了保密性问题,能否解决完整性 问题?
考虑通信数据传送错误或被人为篡改的情况
如何解决完整性问题?
Hash函数(散列函数)
Hash函数
一般定义
Hash函数H(M)作用于一任意长度的消息M,它返回一固定长度(通 常超过128位)的散列值h: h=H(M)
因此这个Hash函数是不安全的
随机谕示模型
理想的Hash函数,即使给出N-1个消息x的h 函数值,也无法推算出最后一个消息的散 列值
构造一个理想的Hash函数
一个永久存储器+一个随机数发生器 和一次一密乱码本一样不实用
随机谕示模型
随机谕示模型的独立性
假定h∈FX,Y是随机谕示模型中一个理想的Hash 函数,令X0⊆X,假定当且仅当x∈X0时,h(x)通 过查询h的谕示器确定,则对所有的x∈X/X0和 y∈Y,都有Pr[h(x)=y]=1/M
假定已知h(x1,y1)=z1;h(x2,y2)=z2 令x=x1+x2,y=y1+y2则
h(x,y)=h(x1+x2,y1+y2)=a(x1+x2)+b(y1+y2) =ax1+by1+ax2+by2=z1+z2
已知h(x1,y1)和h(x2,y2),可以不经过h函数的计算 直接得出h(x,y)的值为h(x1,y1)+h(x2,y2)
Hash函数
Hash函数的通用结构
Merkle于1989年提出,几乎被所有单向散列 函数使用
假设摘要集合空间大小为M,随机尝试并获 得Q个消息的摘要
查找原像
成功率为ε=1-(1-1/M)Q Q和M较大时,接近Q/M
寻找第二原像
成功率为ε=1-(1-1/M)Q-1
随机谕示模型中的算法
发现碰撞
成功率为
1
Q 1 i1
M
i
M
可推算出
Q
2M
ln
1
1
当ε=0.5时,Q 1.17 M
混乱 扩散 随机
Hash函数
思考
能否将分组密码在CBC模式下所产生的最后 一组密文分组作为散列值,作为Hash函数?
将消息分为长度为64位的N个分组,利用加密函数 计算Ci = EK(Ci-1⊕Pi)
令h=CN
MAC(消息认证码)
在密钥的控制下将任意长的消息映射为一个定长 的数据
缺点:运算代价过高
H(M)=H(M’)很难
Hash函数的安全性
安全的Hash函数满足三个条件
单向性(原像稳固性)
给定一个消息摘要y,很难找到符合h(x)=y的消息x
第二原像稳固性
给定x∈X,很难找到一个x’∈X且x’≠x,满足h(x)=h(x’)
碰撞稳固性
对于任意的x,x’∈X,很难找到满足x≠x’且h(x)=h(x’) 的二元组(x,x’)
Hello Tom
77da ba15 e5c9 42f7 91ae bc28 4c39
数据完整性
数据完整性
口令保护
userid szhang sli wwang
password 9a32d6eb092d 5321b2a761e0 d50c2234e9f 7
username zhang san li si wang wu
有时也称“摘要函数”、“散列函数”或“杂凑函数” h也被称为消息或数据的“指纹”
将h和消息M一起发送,可检测到基本的传输错误
h和M分别独立发布,可解决一般的完整性问题(前提是确 保h不被篡改)
消息M
散列值h
Hello Jerry, this is Tom speaking
0a35 bc9d 87e2 1a9f 54a4 8856 ef21
lastlogintime 2012-10-2 12:30:42 2012-10-3 14:12:30 2012-10-2 15:22:34
Hash函数
如果要在不安全的信道中保证消息的完整 性,可以在Hash函数中引入一个密钥,其 结果被称为消息验证码(MAC)
定义4.1 一个Hash族是满足下列条件的四元 组(X,Y,K,H):
可通过随机谕示模型描述安全的Hash函数
随机谕示模型
理想的Hash函数应满足,对给定的x,只能 通过函数h计算得到h(x)的值,而无法通过 其他方式得到
已知h(x1),h(x2),...无法间接推算出h(x),其 中x和x1,x2,...均不相等
随机谕示模型
反例:假定Hash函数h:Zn×Zn→Zn,是一个线性函 数,有h(x,y)=(ax+by) mod n
其含义是,随机取 1.17 M 个消息进行摘要运算, 有50%的概率能发现碰撞
,存在有两人生日相同的概率 为1/2
说明发生碰撞的概率比一般想象中要大得多
生日攻击
合同签名欺诈
Hash函数
使用随机谕示模型中的理想Hash函数是困 难的,可参考一些分组密码理论构造近可 能接近理想特性的Hash函数
X是所有可能的消息的集合 Y是所有可能的消息摘要构成的有限集 K是所有可能的密钥集合,即密钥空间 对每个k∈K,存在一个Hash函数hk∈H,hk:X→Y
Hash函数
如果hk(x)=y,则称(x,y)∈X×Y在密钥k下是 有效的或正确的
不带密钥的Hash函数是函数h:X→Y,可以看 做定义4.1的特例,即只有一个密钥的Hash 族,|K|=1
其含义是每个h(x)都是独立的,无法通过已知 的h(x)间接推算
随机谕示模型中的算法
理想的Hash函数只能通过穷举法解决三个 安全性问题
原像问题 第二原像问题 碰撞问题
完全穷举不现实,可以部分尝试,估计其 成功的概率
成功的概率和消息空间大小无关,只与摘要空 间的大小和尝试的次数有关
随机谕示模型中的算法
定义4.1只给出了Hash函数的一般定义,即 X到Y的函数。X到Y的所有函数可记为FX,Y, 因此h∈FX,Y。假定|X|=N,|Y|=M,有 |FX,Y|=MN
Hash函数
怎样的Hash函数能满足数据完整性保护的 要求?
Hash函数的基本要求
快速:给定M,很容易计算h 单向:给定h,根据H(M)=h无法计算出M 防碰撞:给定M,要找到另一条消息M’并满足
相关文档
最新文档