武汉大学《密码学》课件第十三讲 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函数
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函数简介
② 弱单向性:已知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函数通用来构造数据的短“指纹”(函 数值);一旦数据改变,指纹就不再正确。 即使数据被存储在不安全的地方,通过重新 计算数据的指纹并验证指纹是否改变,就能 够检测数据的完整性。
哈希函数.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,则
武汉大学密码学课件-张焕国教授
密码学(第四讲)中国商用密码SMS4张焕国武汉大学计算机学院目录1、密码学密码学的基本概念的基本概念2、古典、古典密码密码3、数据加密标准(、数据加密标准(DES DES))4、高级高级数据加密标准(数据加密标准(AES AES))5、中国商用密码(中国商用密码(SMS4SMS4))6、分组密码的应用技术7、序列密码8、习题课:复习对称密码9、公开密钥密码(、公开密钥密码(11)目录公开密钥密码(22)1010、11、数字签名(1)12、数字签名(2)13、、HASH函数131414、15、15PKI技术1616、、PKI17、习题课:复习公钥密码18、总复习一、我国的密码分级:①核心密码:用于保护党、政、军的核心机密。
②普通密码:用于保护国家和事企业单位的低于核心机密而高于商业机密的密码信息。
③商用密码:用于保护国家和事企业单位的非机密的敏感信息。
④个人密码:用于保护个人的隐私信息。
前三种密码均由国家密码管理局统一管理。
一、我国的密码政策二、我国商的业密码政策①统一领导:国家密码管理局统一领导。
②集中管理:国家密码管理局办公室集中管理。
③定点研制:研制只允许定点单位进行。
④专控经营:经许可的单位才能经营。
⑤满足使用:国内各单位都可申请使用。
一、我国的密码政策一、我国商用密码概况⑴密码的公开设计原则密码的安全应仅依赖于对密钥的保密,不依赖于对算法的保密。
⑵公开设计原则并不要求使用时公开所有的密码算法核心密码不能公布算法;核心密码的设计也要遵循公开设计原则。
⑶商用密码应当公开算法①美国DES 开创了公开商用密码算法的先例;②美国经历DES (公开)→EES (保密)→AES (公开)。
③欧洲也公布③欧洲也公布商用商用密码算法密码算法二、我国商用密码SMS4⑷我国的商用密码概况●我国在密码技术方面具有优势:密码理论、密码分析●长期以来不公开密码算法,只提供密码芯片少数专家设计,难免有疏漏;难于标准化,不利于推广应用。
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
网络安全-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
武汉大学《密码学》课件第三讲 DES
两位发生变化(这里x是一个长度为6的比特串); P4:对任何S盒和任一输入x,以及e,f∈{0,1},有
S(x)≠S(x⊕11ef00),其中x是一个长度为6的比特串; P5:对任何S盒,当它的任一输入比特位保持不变,其它5
1 58 50 42 34 26 18 7 62 54 46 38 30 22
10 2 59 51 43 35 27 14 6 61 53 45 37 29
19 11 3 60 52 44 36 21 13 5 28 20 12 4
③说明:矩阵中第一个数字47,表明原密钥中的第47位移到C0 中的第一位。
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
29
八、DES的解密过程
DES的加密算法是对合运算,因此解密和加密可共 用同一个算法。
不同点:子密钥使用的顺序不同。 第一次解密迭代使用子密钥 K16 ,第二次解密迭代
密码学
第三讲 数据加密标准(DES)
张焕国 武汉大学计算机学院 空天信息安全与可信计算教育部重点实验室
内容简介
第一讲 信息安全概论 第二讲 密码学的基本概念 第三讲 数据加密标准(DES) 第四讲 高级数据加密标准(AES) 第五讲 中国商用密码(SMS4) 第六讲 分组密码的应用技术 第七讲 序列密码 第八讲 复习 第九讲 公钥密码(1)
23
七、加密函数 f
④代替函数组S(S盒) zS盒的一般性质
S盒是DES中唯一的非线性变换,是DES安全的关键。 在保密性方面,起混淆作用。 共有8个S盒,并行作用。 每个S盒有6个输入,4个输出,是非线性压缩变换。 设输入为b1b2b3b4b5b6 ,则以b1b6组成的二进制数为行
武汉大学《密码学》课件第二讲 密码学的基本概论
z 迭代:设计一个轮函数,然后迭代。 z 乘积:将几种密码联合应用。
28
三、古典密码
虽然用近代密码学的观点来看,许多古 典密码是很不安全的。但是我们不能忘记古 典密码在历史上发挥的巨大作用。
另外,编制古典密码的基本方法对于编制 近代密码仍然有效。 z 古典密码编码方法:
置换,代替,加法
③商用密码:
用于保护国家和事企业单位的非机密的敏感信息。
④个人密码:
用于保护个人的隐私信息。 前三种密码均由国家密码管理局统一管理!
6
一、我国的密码政策
我国商用密码政策:
①统一领导:
国家密码管理局统一领导。
②集中管理:
国家密码管理局办公室集中管理。
③定点研制:
只允许定点单位进行研制。
④专控经营:
经许可的单位才能经营。
显然,理论上,对于任何可实用密码只要有足够 的资源,都可以用穷举攻击将其改破。
20
二、密码学的基本概念
5、密码分析 z穷举攻击 实例
1997年美国一个密码分析小组宣布:1万多人参 加,通过INTERNET网络,利用数万台微机,历 时4个多月,通过穷举攻破了DES的一个密文。
美国现在已有DES穷举机,多CPU并行处理,24 小时穷举出一个密钥。
性传输密钥,利用模2加进行加密,而且按一次一密方式 工作
16
二、密码学的基本概念
3、密码体制的分类
z 从是否基于数学划分 ⑵基于非数学的密码 ②DNA密码
基于生物学中的困难问题 由于不基于计算,所以无论计算机的计算能力多么强大,
与DNA密码都是无关的 尚不成熟
17
二、密码学的基本概念
E0
E1
武汉大学《密码学》课件第十讲 公钥密码(2)
13
二、EIGamal公钥密码
⑸ ElGamal密码的应用
z 由于ElGamal密码的安全性得到世界公认,所以得 广泛的应用。著名的美国数字签名标准DSS,采用 ElGamal密码的一种变形。
y =αx mod p,1≤x≤p-1,
6
一、离散对数问题
2、离散对数问题
③求对数 x 的运算为 x=logαy,1≤x≤p-1
由于上述运算是定义在有限域Fp 上的,所以称为离散 对数运算。
z 从x计算y是容易的。可是从y计算x就困难得多,利 用目前最好的算法,对于小心选择的p将至少需用 O(p ½)次以上的运算,只要p足够大,求解离散对数 问题是相当困难的。
8
二、EIGamal公钥密码
⑵ 加密
z 将 明 文 消 息 M ( 0≤M≤p-1) 加 密 成 密 文 的 过 程 如 下:
①随机地选取一个整数k,2≤k≤p-2。 ②计算: U =y k mod p;
C1=αk mod p;
C2=UM mod p; ③取 C=(C1 ,C2)作为的密文。
9
二、EIGamal公钥密码
z 椭圆曲线密码已成为除RSA密码之外呼声最高的公 钥密码之一。
z 它密钥短,软件实现规模小、硬件实现电路节省。 z 由于椭圆曲线离散对数问题尚没有发现亚指数算
法 , 所 以 普 遍 认 为 , 椭 圆 曲 线 密 码 比 RSA 、 ElGamal密码更安全。160位长的椭圆曲线密码的安 全性相当于1024位的RSA密码,而且运算速度也较 快。
hash(散列函数)
hash(散列函数)⼀直对哈希不太理解,今天上⽹搜了⼀下,总结出以下⼏点,希望可以对⼤家的理解有所帮助1)概念哈希就是把任意长度的(⼜叫做预映射pre-image)通过散列算法变换成固定长度的,该输出就是散列值。
这种转换是⼀种压缩映射,也就是,散列值的空间通常远⼩于输⼊的空间,不同的输⼊可能会散列成相同的输出,所以不可能从散列值来确定唯⼀的输⼊值。
简单的说就是⼀种将任意长度的消息压缩到某⼀固定长度的的函数。
2)基本特性:如果两个散列值是不相同的(根据同⼀函数),那么这两个散列值的原始输⼊也是不相同的。
这个特性是散列函数具有确定性的结果。
但另⼀⽅⾯,散列函数的输⼊和输出不是⼀⼀对应的,如果两个散列值相同,两个输⼊值很可能是相同的,但不绝对肯定⼆者⼀定相等(可能出现哈希碰撞)。
输⼊⼀些数据计算出散列值,然后部分改变输⼊值,⼀个具有强混淆特性的散列函数会产⽣⼀个完全不同的散列值3)作⽤:能使对⼀个数据序列的访问过程更加迅速有效,通过散列函数,将被更快地定位。
4)应⽤:由于的应⽤的多样性,它们经常是专为某⼀应⽤⽽设计的。
例如,假设存在⼀个要找到具有相同散列值的原始输⼊的敌⼈。
⼀个设计优秀的加密散列函数是⼀个“单向”操作:对于给定的散列值,没有实⽤的⽅法可以计算出⼀个原始输⼊,也就是说很难伪造。
为加密散列为⽬的设计的函数,如MD5,被⼴泛的⽤作检验散列函数。
这样软件下载的时候,就会对照验证代码之后才下载正确的⽂件部分。
此代码有可能因为环境因素的变化,如机器配置或者IP地址的改变⽽有变动。
以保证源⽂件的安全性。
注:在python程序中,hash本次⽣成的值与下⼀次程序运⾏hash⽣成的值是不⼀样的。
武汉大学密码学课件-张焕国教授
密码学(第一讲)的基本概念密码学的基本概念张焕国武汉大学计算机学院目录1、密码学密码学的基本概念的基本概念2、古典、古典密码密码3、数据加密标准(、数据加密标准(DES DES))4、高级高级数据加密标准(数据加密标准(AES AES))5、中国商用密码(、中国商用密码(SMS4SMS4))6、分组密码的应用技术7、序列密码8、习题课:复习对称密码9、公开密钥密码(、公开密钥密码(11)目录公开密钥密码(22)1010、11、数字签名(1)12、数字签名(2)13、、HASH函数131414、15、15PKI技术1616、、PKI17、习题课:复习公钥密码18、总复习一、信息安全学科概论1、信息安全学科建设z20012001年经教育部批准武汉大学创建了全国第一个信息安年经教育部批准武汉大学创建了全国第一个信息安全本科专业;z20072007年全国信息安全本科专业已达年全国信息安全本科专业已达7070多所高校多所高校;z20032003年经国务院学位办批准武汉大学建立年经国务院学位办批准武汉大学建立::信息安全硕士点;博士点;博士后流动站z20072007年年1月成立国家信息安全教指委z20062006年武汉大学信息安全专业获湖北省年武汉大学信息安全专业获湖北省““品牌专业品牌专业””z 武汉大学成为我国信息安全科学研究和人才培养的重要基地。
一、信息安全学科概论2、信息安全学科特点z信息安全学科是交叉学科:计算机、通信、数学、物理、生物、管理、法律等;z具有理论与实际相结合的特点;z信息安全技术强调整体性、系统性、底层性;z对信息安全来说,法律、管理、教育的作用很大,必须高度重视。
z人才是关键,人的综合素质是关键的关键!3、武汉大学的办专业思路以学信息安全为主,兼学计算机、通信,同时加强数学、物理、法律等基础,掌握信息安全的基本理论与技能,培养良好的品德素质。
一、信息安全学科概论二、信息安全的基本概念1、信息安全事关国家安全信息成为社会发展的重要战略资源,,信息成为社会发展的重要战略资源信息技术改变着人们的生活和工作方式。
Hash函数
Hash函数概念将任意长度的输⼊变换为固定长度的输出的不可逆的单向密码体制Hash函数在数字签名和消息完整性检测等⽅⾯有着⼴泛的应⽤Hash函数同时是⼀种具有压缩特性的单向函数,其像通常称为数字指纹,消息摘要或散列值。
散列值的⽣成过程可以表⽰为h = H(M)其中h是定长的散列值,H是哈希函数,M是⼀个变长消息散列函数主要⽤于消息认证和数字签名,因此需要具备以下特性1. H可应⽤于任意长度的消息2. H产⽣定长的输出3. 对任意给定的消息x,计算H(x)⽐较容易,⽤硬件软件均可实现4. 单向性:对任意给定的散列值h,找到满⾜H(x) = h 的x在计算上是不可⾏的5. 抗弱碰撞性:对任意给定的消息x,找到x != y并且H(x) = H(y)的消息y在计算上是不可⾏的6. 抗强碰撞性:找到任何满⾜H(x) = H(y) 的偶对(x,y)在计算上是不可⾏的性质2是哈希函数的基本特性,性质3是哈希函数的可⽤性,性质4,5,6是哈希函数为满⾜不同应⽤⽽需具备的基本安全性质应⽤数字签名由于消息散列值通常⽐消息本⾝短的多,因此对消息散列值进⾏数字签名在处理上⽐对消息本⾝进⾏签名要⾼效的多。
⽣成程序或⽂档的数字指纹hash函数可以⽤来保证消息的完整性。
⾸先,通过哈希函数变换得到程序或⽂档的散列值,然后将散列值存储,对程序或⽂档进⾏定时的检测,与已存储的散列值进⾏⽐较,以此来实现完整性验证。
⽤于安全传输和⽤户⼝令⽤于保存⽤户登陆⼝令(密码),通过⽤户id及⼝令⽣成相应的散列值,然后保存,⽤户在进⼊系统输⼊⼝令时,⽣成散列值与存储的散列值进⾏⽐较,这样可以确保⽤户⼝令不被管理员或攻击者获取到哈希算法消息认证消息认证的作⽤主要有两个:⼀个是验证信息来源的真实性,⼀般称之为信息源认证;另⼀个是验证消息的完整性消息认证码(MAC)利⽤消息和双放共享的密钥通过认证函数来⽣成⼀个固定长度的短数据块,并将该数据块附加在消息后⽐如发送⽅A和接收⽅B共享密钥K,若A向B发送消息M,则MAC = C(K,M) ,其中C是认证函数,MAC是消息认证码(a)为明⽂传输,(b)为先计算MAC后,将MAC数据块附加在M信息后进⾏加密传输,(c)为先将M进⾏加密,再⽣成MAC,并附在消息块后进⾏传输基于哈希的消息认证码HMAC是实际应⽤中使⽤最多的⽅案,如SSL就使⽤HMAC来实现消息认证功能。
Hash 函数
1. 2 基于分组密码的Hash 函数
基于分组密码的CFB 工作模式的Hash 函数H
首先选取一个初始向量
令
然后计算
基于分组密码的CBC 工作模式的Hash 函数H
首先选取一个初始向量
令
然后计算
1. 3 Hash函数MD4
设x 是一个消息, 用二进制表示。首先由x 生成一个数组
是长度为32 比特(bit)的(0,1) 序列,
②对i = 0 至N/16 - 1 执行第3 步至第10 步
③对j = 0 至15 执行X[j] = M[16i + j ] ④ 对j = 16 至79 执行 X[j] = (X[j - 3] ⊕ X[j - 8] ⊕ X[j -14] ⊕ X[j -16]) ≤ 1
⑤将寄存器A、B、C、D、E 中的值存储到另外四个寄存器AA、BB、CC、DD
中, AA = A, BB = B, CC = C,DD = D,EE=E
⑥ 执行Round1 ⑦ 执行Round2
点此查看Round1
点此查看Round2
⑧ 执行Round3 ⑨ 执行Round4
点此查看Round3
点此查看Rouቤተ መጻሕፍቲ ባይዱd3
⑩A = A + AA,B = B + BB,C = C + CC, D = D + DD,E=E+EE
现代密码学
主要内容
公钥密码的理论基础 RSA 公钥密码 大素数的生成
EIGamal 公钥密码
1. 1 Hash 函数的性质
定义8.1 设H 是一个Hash函数, 给定一个消息x, 如果寻找另外
一个与x 不同的消息 使得
是计算上不可行的,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
与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加法
密码学
第十三讲 HASH函数
张焕国 武汉大学计算机学院 空天信息安全与可信计算教育部重点实验室
内容简介
第一讲 信息安全概论 第二讲 密码学的基本概念 第三讲 数据加密标准(DES) 第四讲 高级数据加密标准(AES) 第五讲 中国商用密码(SMS4) 第六讲 分组密码的应用技术 第七讲 序列密码 第八讲 复习 第九讲 公钥密码(1)
区
12
二、SHA-1 HASH函数
3、运算算法
⑴输入填充
z 目的是使填充后的报文长度满足: 长度 = 448 mod 512 。
①填充方法是在报文后附加一个1和若干个0。 ②然后附上表示填充前报文长度的64位数据(最高有效位在前)。 z 若报文本身已经满足上述长度要求,仍然需要进行填充(例
如,若报文长度为448位,则仍需要填充512位使其长度为960 位),因此填充位数在1到512之间。 z 经过填充和附加后,数据的长度为512位的整数倍。
160位
A第 一
B轮 使
C用 D函
数 E f1
20步迭代
A第 二
B轮 使
C用 D函
数 E f2
20步迭代
A第 三
B轮 使
C用 D函
数 E f3
20步迭代
A第 四
B轮 使
C用 D函
数 E f4
20步迭代
+ + Cvi+1 + + 160位 +
17
二、SHA-1 HASH函数
3、运算算法 ⑷输出
z 所有的L个512位的分组处理完后,第L个分组的输 出即是160位的报文摘要。
CVi+1(4)= CVi(4)+ Ei
z h = CVL
19
二、SHA-1 HASH函数
3、运算算法
⑹压缩函数 缺点:
ABCDE
ft
+
z 输出B=输入A
<<5
+
z 输出D=输入C z 输出E=输入D
+
Wt
z A、C、D没有运算
<<30
+
Kt
ABCDE
20
二、SHA-1 HASH函数
3、运算算法
24
二、SHA-1 HASH函数
z 前16步迭代中Wt的值等于报文分组的第t 个字,其余64步迭代中Wt等于前面四个 Wt值异或后循环左移一位的结果。
z 缺点:
压缩字的扩展函数是线性函数 压缩字Wt的作用范围太小,只影响输出A,
不影响B、C、D、E。
25
二、SHA-1 HASH函数
注意:
z SHA-1是美国及许多国际组织的标准。 z 美 国 NIST 马 上 将 推 出 SHA-3 , 取 代 目 前 的
同。 z 每轮的输入是当前要处理的512位的分组BLK和160位缓冲区
ABCDE的内容,每轮都对ABCDE的内容更新,而且每轮使 用的逻辑函数不同,分别为f1, f2, f3和f4。 z 第四轮的输出与第一轮的输入相加得到压缩函数的输出。
16
二、SHA-1 HASH函数
BLKi( 512位)
Cvi
个强碰撞,以前认为是280。 z NIST于2007年公开征集SHA-3,并将于今年公布SHA-3。
10
二、SHA-1 HASH函数
1、 SHA系列Hash函数
z SHA-1 是 在 MD5 的 基 础 上 发 展 起 来 的 。 它 采 用 Merkle提出了安全Hash模型。已被美国政府和许多 国际组织采纳作为标准。
时间复杂度为O(2n)。
z 抗强碰撞性:找到任何满足H(x)=H(y)的偶对(x,y)在计算上是 不可行的。
平均需要尝试超过2n/2个数据就能产生一个碰撞,复杂度O(2n/2)。
7
一、HASH函数的概念
3、安全Hash函数处理数据的一般模型
• Merkle提出了用Hash函数处理数据M,的一般模 型。
2
内容简介
第十讲 公钥密码(2) 第十一讲 数字签名(1) 第十二讲 数字签名(2) 第十三讲 HASH函数 第十四讲 认证 第十五讲 密码协议 第十六讲 密钥管理(1) 第十七讲 密钥管理(2) 第十八讲 复习
3
教材与主要参考书
教材
参考书
4
一、HASH函数的概念
1、 Hash函数的作用
z Hash码也称报文摘要。 z 具有极强的错误检测能力:输入有很小的不同,输出
注意:高有效位存于低地址。
14
二、SHA-1 HASH函数
3、运算算法 ⑶主处理
z 主处理是SHA-1 HASH函数的核心。 z 每次处理一个512位的分组,链接迭代处理所有L个
分组数。
15
二、SHA-1 HASH函数
3、运算算法
⑶主处理
z 压缩函数是主处理的核心。 z 它由四层运算(每层迭代20步)组成,四层的运算结构相
CA62C1D6
z
缺点:压缩字K B、C、D、E。
t的作用范围太小,只影响输出A,不影响
23
二、SHA-1 HASH函数
3、运算算法
⑹压缩函数 z 压缩字W t
每步迭代使用从512位的报文分组BLK导出的一个32位 的(0字≤Wt≤t 7。9)因。共 有 80 步 迭 代 , 所 以 共 需 要 80 个 32 位 字 Wt z 的将字BL(MK 0至划M分7为9)。16个32位的字(M0至M15),再扩展为80个32位 扩展过程为: 若0≤t≤15 ,则W t = M t 若16≤t≤79 ,则W t = (W t-16⊕ W t-14⊕ W t-8⊕ W t-3)<<1
将有很大的不同! z 用Hash码作消息认证码(MAC),可用于认证。 z 用Hash码可以辅助数字签名。 z Hash函数还可辅助用于保密。
5
一、HASH函数的概念
2、Hash函数的定义
① Hash函数将任意长的数据M变换为定长的码h,记为: h=Hash (M)或 h=H(M)。
z 一般,h的长度小于M的长-1 HASH函数
3、运算算法
⑹压缩函数 z 逻辑函数ft
每 轮 使 用 一 个 逻 辑 函 数 , 其 输 入 均 为 B,C,D( 每 个 32 位),输出为一个32位的字。定义分别为: 第一轮0≤t≤19 f1=ft(B,C,D)=(B∧C)∨(¬B∧D) 第二轮20≤t≤39 f2=ft(B,C,D)=B⊕C⊕D 第三轮40≤t≤59 f3=ft(B,C,D)=(B∧C)∨(B∧D) ∨(C∧D) 第三轮60≤t≤79 f4=ft(B,C,D)=B⊕C⊕D
同Hash值且长度相等的两条报文,或者找出两条长 度不等但加入报文长度后Hash值相同的报文,从而 增加了攻击的难度。 z 目前大多数Hash函数均采用这种数据处理模型。
9
二、SHA-1 HASH函数
1、 SHA系列Hash函数
z SHA系列Hash函数是由美国标准与技术研究所(NIST)设计 的。
M0 b位
M1 b位
ML-1 b位
n位 f n位 f
IV=CV0
CV1
n位 f CVL-1
n位
Hash(M)
CVL
b位分组,f为压缩函数,L轮链接迭代,n位输出。
8
一、HASH函数的概念
3、安全Hash函数处理数据的一般模型
z 分组:将输入M分为L-1个大小为b位的分组。 z 填充:若第L-1个分组不足b位,则将其填充为b位。 z 附加:再附加上一个输入的总长度。 z 填充和附加之后,共L个大小为b位的分组。 z 由于输入中包含长度,所以攻击者必须找出具有相
z 1993年公布了SHA-0(FIPS PUB 180),后来发现它不安全。 z 1995年又公布了SHA-1(FIPS PUB 180-1)。 z 2002年又公布了SHA-2(FIPS PUB 180-2)。
SHA-2包括3个Hash函数:SHA-256, SHA-384, SHA-512 z 2005年王小云给出一种攻击SHA-1的方法,用269操作找到一