第3章_单向散列函数讲义

合集下载

单向散列函数(HASH函数)基本原

单向散列函数(HASH函数)基本原

单向散列函数(HASH函数)基本原
Hash函数H(m)也名单向散列函数,它是现代密码学的核心。

散列函数一直在计算机科学中使用,散列函数就是把可变的输入长度串转换成固定长度输出值(叫做散列值)的一种函数。

而单向散列函数是在一个方向上工作的散列函数,从预映射的值很容易计算机其散列值,但要使其散列值等于一个特殊值却很难。

好的散列函数也是无冲突的:难于产生两个预映射的值,使他们的散列值相同。

散列函数是公开的,对处理过程并不保密,单向散列函数的安全性是它的单向性,其输出不依赖于输入。

平均而言,预映射值的单个位的改变,将引起散列值中一半位的改变。

已知一个散列值,要找到预映射的值,使它的值等于已知的散列值在计算上是不可行的,可把单向散列函数看作是构成指纹文件的一种方法。

如果你验证某人持有一个特定的文件(你同时也持有该文件),但你不想他将文件传给你,那幺,就要通知他将该文件的散列值传给你,如果他传送的散列值是正确的,那幺可以肯定他持有那份文件。

散列函数可用于数字签名、消息的完整性检测、消息起源的认证检测等。

常见的散列算法有MD5、SHA、Snefru和HVAL等。

第03章 单向散列函数

第03章 单向散列函数

信息安全技术
27
3.3 消息认证码(MAC)
与密钥相关的单向散列函数通常 称为MAC,即消息认证码: MAC=CK(M)
源端A M K K C CK(M) Ⅱ 目的端B M C 比较
信息安全技术
28
3.3 消息认证码(MAC)
HMAC 全 称 为 Keyed-Hash Message Authentication Code, 它用一个秘密密钥来 产生和验证MAC。 HMAC 算法可以和任何密码散列函数结 合使用,而且对 HMAC 实现作很小的修改就 可用一个散列函数 H 代替原来的散列函数 H' 。
信息安全技术
4
3.1 单向散列函数概述 散列函数要具有单向性,则必须满足如下 特性:
给定M,很容易计算h。 给定h,根据H(M)=h反推M很难。 给 定 M , 要 找 到 另 一 消 息 M ’ 并 满 足 H(M)=H(M’)很难。
在某些应用中,单向散列函数还需要满足 抗碰撞(Collision)的条件:要找到两个随机 的消息M和M',使H(M)=H(M')满足很难。
信息安全技术
15
3.2 MD5算法
5) 输出 由A、B、C、D四个寄存器的输出按低位字 节在前的顺序 ( 即以 A 的低字节开始、 D 的高字
节结束)得到128位的消息摘要。
信息安全技术
16
大字节序:把高有效位放在低地址段,例如在按字节寻址
的存储器中存放值 0x12345678
地址 0x0004 0x0003 0x0002 0x0001 地址 0x0004 0x0003 0x0002 0x0001 数值 0x78 0x56 0x34 0x12 数值 0x12 0x34 0x56 0x78

2018学年高一数学人教A版必修一 课件 第三章 函数的应用 3 章末高效整合 精品

2018学年高一数学人教A版必修一 课件 第三章 函数的应用 3 章末高效整合 精品

解析:
(1)依题意得 y=6t,0≤t≤1,
-23t+230,1<t≤10.
(2)设第二次服药时在第一次服药后 t1 小时,则-23t1+230=4,解得 t1=4, 因而第二次服药应在 11∶00.
设第三次服药在第一次服药后 t2 小时,则此时血液中含药量应为前两次服 药后的含药量的和,即有-23t2+230-23(t2-4)+230=4,解得 t2=9 小时,故第三 次服药应在 16∶00和 y=x+a 的图象如图:结合 图象可知方程|ax|=x+a 有两个解时,有 a>1.
答案: (1)C (2)A
用二分法求函数的零点或方程的近似解 用二分法求方程近似解注意的问题: (1)看清题目的精确度,它决定着二分法的结束. (2)根据 f(a0)·f(b0)<0 确定初始区间,高次方程要先确定有几个解再确定初始 区间. (3)初始区间的选定一般在两个整数间,不同初始区间结果是相同的,但二 分的次数相差较大. (4)取区间中点 c 计算中点函数值 f(c),确定新的零点区间,直到所取区间(an, bn)中,an 与 bn 按精确度要求取值相等,这个相等的近似值即为所求近似解.
(1.625,1.75) 1.687 5 -0.561 8
(1.687 5,1.75) 1.718 75 -0.170 7
由于|1.75-1.687 5|=0.062 5<0.1,
所以可将 1.75 作为函数零点的近似值.
函数模型及应用 1.函数模型的应用实例主要包含三个方面: (1)利用给定的函数模型解决实际问题; (2)建立确定性函数模型解决实际问题; (3)建立拟合函数模型解决实际问题.
4.不同函数增长模型的对比 “直线上升”“指数爆炸”“对数增长”分别反映了一次函数、指数函数、 对数函数的增长趋势,幂函数的增长介于指数函数与对数函数之间.即总会存在 一个 x0,使得当 x>x0 时,有 logax<xn<ax(a>1,n>0).

散列函数(1).

散列函数(1).

杂凑函数
例3:设函数y=H(x)具有局部置换性: x的第一个比特总等于y的 第三个比特,无论x为何值。这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1)。 取y为将y1改变第三个比特。求一个x使得y=H(x),可以取为将x1 改变第一个比特。 例4:设函数y=H(x)具有某种连续性:当 y1与y2 “距离很近”时, 存在 x1与x2 “距离很近” ,且y1=H(x1), y2=H(x2) 。这样的函 数不能作为杂凑函数。 取x1并计算y1=H(x1)。取y2与y1“距离很近”。 寻找一个x2使 y2=H(x2),只需要在x1的“附近”寻找,搜索量远远低于穷举 搜索。
杂凑函数
散列编码的用途
用途一:公平提交方案 Alice猜测了一个号码x1,但不知道中奖号码x2; Bob设置了中奖号码x2,但不知道Alice猜测的号码x1。 Alice希望首先获得x2,然后重新确定x1使得x1=x2。 Bob希望首先获得x1,然后重新确定x2使得x2≠x1。 防止两人作弊的方案称为“公平提交方案”。 两人使用一个公开的杂凑函数y=H(x)。方案如下:
杂凑函数
例1:设函数y=H(x)具有可加性:对任意的 x1,x2, H(x1)+H(x2)=H(x1+x2)。这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1);取x2并计算y2=H(x2)。 记y=y1+y2。求一个x使得y=H(x),可以取x=x1+x2。 例2:设函数y=H(x)具有线性:对任意的 x,a,aH(x)=H(ax)。 这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1)。 记y=ay1。求一个x使得y=H(x),可以取x=ax1。
能用于任何大小的消息;
能产生定长输出; 寻找任意的M和M’,会满足H(M)=H(M’)很难。

密码学-散列函数

密码学-散列函数

生日攻击


生日悖论实际上是如下问题的特例:已知一个在 1 到 n 之 间均匀分布的整数型随机变量,若该变量的一个 k 个取值 的集合中至少有两个取值相同的概率大于 0.5,则 k 至少 多大? 该问题的一般结论是:k≈1.18 * n1/2 例如对于生日悖论,有 n=365,因此 k ≈ 22.5。 通过“生日悖论”可以引出对散列函数的生日攻击法 通过这种方法,只要对超过 n1/2 个随机元素(n 是散列 函数输出集合的大小,如散列函数的输出为 m bit,则 n=2m)计算散列值,那么将有 0.5 的概率出现一个碰 撞。
生日攻击可能的实施步骤

可用如下方法对散列函数进行生日攻击(假设散列函数的 输出长度为 m bit):



1)攻击者对合法报文创建 2m/2 个变种,所有这些变种本质上都和 合法报文表示同样的意思; 2)同样,攻击者再对伪造报文创建 2m/2 个变种; 3)比较这两个集合,以期发现任意一对能产生相同散列值的报文 对(合法报文变种、伪造报文变种),根据生日悖论,找到这样一对 报文的概率Pr > 0.5; 4)攻击者向签名者出示合法报文变种,让签名者对合法报文变种 的散列值签名;然后攻击者用伪造报文变种代替合法报文变种, 并声称签名者对伪造报文变种签名了。由于这两个报文具有相同 的散列值,因此欺骗总能成功。

2、散列函数的需求



1、H能用于任意长度的数据分组; 2、H产生定长的输出; 3、对任意给定的X,H(X)要容易计算; 4、对任何给定的h,寻找 x 使得H(x)=h,在计算 上不可行(单向特性); 5、对任意给定的分组 x,寻找不等于 x 的 y,使 得 H(x)=H(y), 在计算上不可行(弱抗碰撞); 6、寻找任意的一对分组(x,y), 使得 H(x)=H(y) , 在计算上不可行(强抗碰撞)。

【C#集合】Hash哈希函数散列函数摘要算法

【C#集合】Hash哈希函数散列函数摘要算法

【C#集合】Hash哈希函数散列函数摘要算法希函数定义哈希函数(英語:Hash function)⼜称散列函数、散列函数、摘要算法、单向散列函数。

散列函数把消息或数据压缩成摘要,使得数据量变⼩,将数据的格式固定下来。

该将数据打乱混合,重新创建⼀个(哈希函数返回的值)称为指纹、哈希值、哈希代码、摘要或散列值(hash values,hash codes,hash sums,或hashes)的指纹。

散列值通常⽤⼀个短的随机字母和数字组成的字符串来代表。

好的散列函数在输⼊域中很少出现。

完美哈希函数就是指没有冲突的哈希函数。

如今,散列算法也被⽤来加密存在数据库中的(password)字符串,由于散列算法所计算出来的散列值(Hash Value)具有不可逆(⽆法逆向演算回原本的数值)的性质,因此可有效的保护密码。

使⽤哈希函数为哈希表编制索引称为哈希或分散存储寻址。

单向散列函数(one-wayhash function),也就是通俗叫的哈希函数。

第⼀个特点:输⼊可以任意长度,输出是固定长度第⼆个特点:计算hash值的速度⽐较快第三个特点,冲突特性(Collision resistance):找出任意两个不同的输⼊值 x、y,使得 H (x)= H (y)是困难的。

(这⾥称为「困难」的原因,是消息空间是⽆穷的,⽽是有限的,因此⼀定会存在碰撞,只是对寻找碰撞的算⼒需要有难度上的约束以哈希函数SHAI (输出为 160-bit)为例:其输出空间为(0,2^160),假设输出范围⼀万亿个哈希值,发⽣碰撞的概率仅为 3×10-25。

被碰撞的概率太低,⼏乎不可能。

第四个特点:隐藏性(Hiding)或者叫做单向性(one-way):哈希函数的单向性意味着,给定⼀个哈希值,我们⽆法(很难)逆向计算出其原像输⼊。

第五点:谜题友好(puzzlefriendly)HashTable定义哈希表时保存数据的表。

通过哈希函数使得数据和存储位置之间建⽴⼀⼀对应的映射关系。

应用密码学 5 单向散列函数和消息认证

应用密码学 5 单向散列函数和消息认证

Hash函数按是否需要密钥可分为以下两类:
(1)不带密钥的Hash函数,它只有一个被通常称为消息的输入参数。 (2)带密钥的Hash函数,它有两个不同的输入,分别称为消息和密钥。
5.1 单向散列函数基础
按设计结构,散列算法可以分为三大类:标准Hash、基于分组
加密Hash、基于模数运算Hash。 标准Hash函数有两大类:MD系列的MD4,MDS,HAVAL, RIPEMD,RIPEMD-160等;SHA系列的SHA-l,SHA-256, SHA-384,SHA-512等,这些Hash函数体现了目前主要的Hash 函数设计技术。
5.1 单向散列函数基础
5.1.2 Hash函数的性质 H 必须满足以下性质。 从应用需求上来说,Hash函数 (1) H 能够应用到任何大小的数据块上。 (2) H 能够生成大小固定的输出。 (3)对任意给定的 x , H ( x ) 的计算相对简单,使得硬件和软件的实现可行。 从安全意义上来说,Hash函数H应满足以下特性: (1)对任意给定的散列值h ,找到满足 H ( x) h 的 x 在计算上是不可行的。 (2)对任意给定的 x ,找到满足H ( x) H ( y)而 x y 的 y 在计算上是不可行 的。 (3)要发现满足 H ( x) H ( y) 而 x y的对 ( x, y )是计算上不可行的。
第 5章 单向散列函数和消息认证
Logo
5.单向散列函数和消息认证

5.1 单向散列函数基础


5.2 MD5算法
5.3 SHA-1算法
5.4 SM3算法
5.5 消息认证
5.1 单向散列函数基础
所谓的单向散列函数(Hash Function,又称哈希函数、杂凑函数) , 是将任意长度的消息映射成一个固定长度散列值 (设长度为 )的函数 : 散列函数要具有单向性,则必须满足如下特性: (1)给定 M,很容易计算 h 。

散列函数及其应用

散列函数及其应用

散列函数及其应⽤散列函数 散列,英⽂Hash,也有直接⾳译为“哈希”的,就是把任意长度的输⼊(⼜叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

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

简单的说就是⼀种将任意长度的消息压缩到某⼀固定长度的信息摘要的函数。

散列函数的应⽤ 在算法竞赛中,我所接触到的主要有字符串hash⽤于把字符串“索引”为⼀个值,然后对复杂字符串进⾏操作,来加快遍历速度,降低算法复杂度。

把字符串匹配转移到了值匹配。

但是散列函数属于⼀种“概率型算法”,对于模的取值有⼀定概率出现碰撞。

所以在算法竞赛中不常使⽤,或者要多次测验避免碰撞。

在信息安全⽅⾯的应⽤主要体现在以下的3个⽅⾯: 1)⽂件校验 我们⽐较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能⼒,它们⼀定程度上能检测并纠正数据传输中的信道误码,但却不能防⽌对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为⽬前应⽤最⼴泛的⼀种⽂件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

2)数字签名 Hash 算法也是现代密码体系中的⼀个重要组成部分。

由于⾮对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了⼀个重要的⾓⾊。

对 Hash 值,⼜称"数字摘要"进⾏数字签名,在统计上可以认为与对⽂件本⾝进⾏数字签名是等效的。

⽽且这样的协议还有其他的优点。

3)鉴权协议 如下的鉴权协议⼜被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是⼀种简单⽽安全的⽅法。

散列函数的安全性 两个不同的输⼊,经过哈希算法后,得到了同样的哈希值,就叫做哈希碰撞。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 散列函数要具有单向性,则必须满足如下特性: • ● 给定M,很容易计算h。 • ● 给定h,根据H(M)=h反推M很难。 • ● 给定M,要找到另一消息M'并满足H(M)=H(M')很难。 • 在某些应用中,单向散列函数还需要满足抗碰撞
(Collision)的条件:要找到两个随机的消息M和M',使 H(M)=H(M')很难。
1) 附加填充位
2) 附加长度64
填充位
消息长度(K mod 264)
L 512bit N 32bit
Kbit 消息
100…0
512bit Y0
512bit
Y1

512bit YL-1
IV 128
512
HMD5
CV1 128
512
HMD5

CVL-1 128
图3-2 MD5算法
512 HMD5
3
Network and Information Security
第3章 单向散列函数
Hash函数的良好性质
• ( 1 )广泛的应用性 • Hash函数能用于任何大小的消息。 • ( 2 ) 定长输出 • 将消息集合∑中的任意长度的消息M映射为长度为m的
消息摘要。 • ( 3 ) 实现性 • 对Hash函数的一个非常重要的要求是简单易实现性。 • ( 4 ) 单向性质 • 要求Hash函数是单向函数。给定h值,求信息M (是一对
第3章 单向散列函数
3) 初始化MD缓冲区 初始化用于计算消息摘要的128位缓冲区。这个缓冲
区由四个32位寄存器A、B、C、D表示。寄存器的初始 化值为(按低位字节在前的顺序存放):
A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10 4) 按512位的分组处理输入消息 这一步为MD5的主循环,包括四轮,如图3-3所示。 每个循环都以当前的正在处理的512比特分组Yq和128 比特缓冲值ABCD为输入,然后更新缓冲内容。
可行的。 注:以上两种,哪一种更容易找? ( 7 ) 独立性 哈希函数值“不依赖输入信息”,从某种程度上说是由算法决定的。 ( 8 )抗近冲突 Hash函数满足独立性,输入信息某一位的变化,应该引起平均一半
的输出位的变化。 (9 ) 安全性 在很广泛的条件下, Hash值H(M)的分布是均匀分布的.
填充消息长度=512-(k+64) mod 512 2) 附加长度
将原消息长度的64位表示附加在填充后的消息后面。 当原消息长度大于264时,用消息长度mod 264填充。这时, 总长度恰好是512的整数倍。令M[0 1…N−1]为填充后消 息的各个字(每字为32位),N是16的倍数。
9
Network and Information Security
3.2 MD5 算 法
3.2.1 算法
MD表示消息摘要(Message Digest)。 MD5是MD4的改进版,该算法对输入的 任意长度消息产生128位散列值(或消息 摘要) 。MD5算法可用图3-2表示。
7
Network and Information Security
第3章 单向散列函数
4) 按512位的分组处 理输入消息
128位消息摘要
3) 初始化MD 缓冲区
8
图3-2 MD5算法
5) 输出
Network and Information Security
第3章 单向散列函数
由上图可知,MD5算法包括以下五个步骤。 1) 附加填充位
首先填充消息,使其长度为一个比512的倍数小64位的 数。填充方法:在消息后面填充一位1,然后填充所需数 量的0。填充位的位数从1~512。
• 单向散列函数是数字签名中的一个关键环节,可以大大 缩短签名时间并提高安全性,另外在消息完整性检测, 内存的散布分配,软件系统中帐号口令的安全存储单向 散列函数也有重要应用。
2
Network and Information Security
第3章 单向散列函数
3.1 单向散列函数概述
• 所谓的单向散列函数(Hash Function,又称哈希函数、杂 凑函数),是将任意长度的消息M映射成一个固定长度散列 值h(设长度为m)的函数H: • h=H(M)
5
Network and Information Security
第3章 单向散列函数
散列函数工作模式
消息分组1 消息分组2 …
消息分组n 填充位
压缩
IV
函数
压缩
函数

压缩 函数
函数值
图3-1 单向散列函数工作模式
6
Network and Information Security
第3章 单向散列函数
第3章 单向散列函数
第3章 单向散列函数
3.1 单向散列函数概述 3.2 MD5算法 3.3 SHA-1算法 3.4 消息认证码(MAC) 3.5 对单向散列函数的攻击
1
Network and Information Security
第3章 单向散列函数
• 随着以Internet为基础的电子商务技术的迅猛发展,以 公钥密码、数字签名等为代表的加密安全技术已成为 研究的热点。
第3章 单向散列函数
10
Network and Information Security
第3章 单向散列函数
Yq CVq
A

A
B第



C一







+ +
B
C
CVq+ 1
D
+D
图3-3 单个512比特分组的MD5主循环处理
11
Network and Information Security
第3章 单向散列函数
图3-3中,四轮的操作类似,每一轮进行16次操作。 各轮的操作过程如图3-4所示。
a
a
Mj
T[i]
b b
c
非线性函数 +


<<<s +
c
ቤተ መጻሕፍቲ ባይዱ
d d
j:0—15, i:1—64(共四轮, 每一轮用的都不同)
图3-4 MD5某一轮的1次执行过程
12
Network and Information Security
多的关系) ,只有通过枚举,在现有的计算环境下是不 可行的。
4
Network and Information Security
第3章 单向散列函数 ( 5 ) 抗弱对抗性
确定与x有相同位数的y,使H(x)=H(y), 在现有的计算环境下是不可 行的。
( 6 ) 抗强对抗性 找到两个不同位数信息x,y,使H(x)=H(y),在现有的计算环境下是不
相关文档
最新文档