Download presentation
Presentation is loading. Please wait.
1
苗付友 mfy@ustc.edu.cn http://202.38.64.11/~mfy 2015 年 12 月
2
现代密码学理论与实践 2/36 mfy@ustc.edu.cn 消息认证是用来验证消息完整性的一种机制或服务。消 息认证确保收到的数据确实就发送时的一样 ( 即没有修 改、插入、删除或重放 ) ,且发送方声称的身份是真实 有效的。 对称密码在那些相互共享密钥的用户间提供认证。用消 息发送方的私钥加密消息也可提供一种形式的认证。 用于消息认证的最常见的密码技术是消息认证码和安全 散列 (hash) 函数。 MAC 是一种需要使用秘密密钥的算法,以可变长的消 息和秘密密钥作为输入,产生一个认证码。拥有秘密密 钥的接收方产生一个认证码来验证消息的完整性。 散列函数将可变长度的消息映射为固定长度的散列值, 或叫消息摘要。对于消息认证码,安全散列函数必须以 某种方式和秘密密钥捆绑起来。
3
现代密码学理论与实践 3/36 mfy@ustc.edu.cn 11.1 消息认证 Message Authentication 11.1 消息认证 Message Authentication ◦ 对认证的要求 对认证的要求 11.2 认证函数 11.2 认证函数 ◦ 11.2.1 消息加密 11.2.1 消息加密 1) 对称密钥加密 2 )公开密钥加密 1) 对称密钥加密 2 )公开密钥加密 ◦ 11.2.2 消息认证码 MAC 11.2.2 消息认证码 MAC ◦ 11.2.3 散列函数 Hash Function 11.2.3 散列函数 Hash Function 11.3 消息认证码 MAC 11.3 消息认证码 MAC 11.4 散列函数 11.4 散列函数 ◦ 11.4.1 对散列函数的要求 11.4.1 对散列函数的要求 ◦ 11.4.2 强哈希函数 11.4.2 强哈希函数 ◦ 11.4.3 对哈希函数的攻击法 11.4.3 对哈希函数的攻击法 1) Rabin 的对哈希函数的攻击法 1) Rabin 的对哈希函数的攻击法 2) Yuval 对哈希函数的生日悖论攻击法 2) Yuval 对哈希函数的生日悖论攻击法
4
现代密码学理论与实践 4/36 mfy@ustc.edu.cn 消息认证 ( 报文认证 ) 关心的问题是 ◦ 保护消息的完整性 ◦ 验证发起方身份 ◦ 消息源的不可否认 ( 解决分歧 ) 消息认证要考虑安全需求 三种消息认证的方法 ◦ 消息加密 ◦ 消息认证码 (MAC) ◦ 哈希函数
5
现代密码学理论与实践 5/36 mfy@ustc.edu.cn 泄密 Disclosure ,将消息透露给没有合法身份的第三方 传输分析 Traffic analysis ,分析双方通信模式 伪装 Masquerade ,欺诈源向网络中插入一条消息 内容篡改 Content modification ,对消息内容的修改 顺序篡改 Sequence modification ,对消息顺序的修改 计时篡改 Timing modification ,对消息的延时和重放 信源抵赖 Source repudiation, 发送方否认发送过某消息 信宿抵赖 Destination repudiation ,接收方否认接收过某 消息
6
现代密码学理论与实践 6/36 mfy@ustc.edu.cn 11.2.1 消息加密 ◦ 消息加密本身提供了一种认证手段 ◦ 1) 对称加密 接收方可以确信消息是由发送方产生的,因为除了 接收方以外只有发送方拥有加密密钥,产生出用此 密钥可以解密的密文 如果消息可以是任意的位模式,接收方无法确定收 到的消息是合法明文的密文。因此,通常不管密文 的值是什么,如果解密后得到的明文有合法明文的 位模式,接收方都会作为真实的密文接收。 对称加密情况下,选取明文消息 (比如二进制的密钥等)使得其 用另外一种编码方式时具有合法 明文结构,从而可以利用不同编 码节省验证码?
8
现代密码学理论与实践 8/36 mfy@ustc.edu.cn
9
要求明文具有某种易于识别的结构,如在加密前 对每个消息附加一个帧校验序列 FCS FCS 和加密函数执行的顺序很重要
10
现代密码学理论与实践 10/36 mfy@ustc.edu.cn 考虑使用 TCP/IP 协议传输消息的结构
11
现代密码学理论与实践 11/36 mfy@ustc.edu.cn 若要提供认证,发送方用自己的私钥对消息加密, 接收方用发送方的公钥解密 ( 验证 ) ,就提供了认证 功能。 如果发送方用私钥加密消息,再用接收方的公钥加 密,就实现了既保密又认证的通信 这也需要注意区分伪造的不合理的消息 既保密又认证的通信的代价是需要执行四次复杂的 公钥算法而不是两次。
12
现代密码学理论与实践 12/36 mfy@ustc.edu.cn 只有特定接受者可验证 使用密钥产生短小的定长数据分组,即所谓的密码检 验 MAC ,将它附加在报文中。通信双方 A 和 B 共享密 钥 K ,报文从 A 发往 B , A 计算 MAC=C K (M), 附在报文 后发给 B 。 B 对接收到的报文重新计算 MAC ,并与接收 到的 MAC 比较。如果只有收发双方知道密钥且两个 MAC 匹配,则: ◦ 接收方可以确信报文未被更改; ◦ 接收方可以确信报文来自声称的发送者; ◦ 接收方可以确信报文序号正确,如果有的话。 Message Authentication( 报文认证 ) 不提供保密 MAC 函数类似加密,但非数字签名,也无需可逆 将 MAC 直接与明文并置,然后加密传输比较常用
13
现代密码学理论与实践 13/36 mfy@ustc.edu.cn MAC 加密所得的消息校验和 MAC = C K (M) ◦ 使用一个秘密密钥 K ,浓缩一个变长的消息 M ,产生一个固 定长度的认证子 MAC 是一种多对一的函数 ◦ 定义域由任意长的消息组成,值域由所有可能的 MAC 和密钥 组成。若使用 n 位长的 MAC, 则有 2 n 个可能的 MAC; 有 N 条可 能的消息, N>>2 n. 若密钥长度为 k, 则有 2 k 种可能的密钥。 ◦ 如 N 为 100 位, n 为 10 位, 共有 2 100 不同的消息, 2 10 种不同的 MAC, 平均而言同一 MAC 可由 2 100 / 2 10 =2 90 条不同的消息 产生。若密钥长度为 5 ,则从消息集合到 MAC 值的集合有 2 5 =32 不同映射。 ◦ 可以证明,由于认证函数的数学性质,与加密相比,认证函 数更不易被攻破
14
现代密码学理论与实践 14/36 mfy@ustc.edu.cn
15
现代密码学理论与实践 15/36 mfy@ustc.edu.cn
16
现代密码学理论与实践 16/36 mfy@ustc.edu.cn 一个散列函数以变长的报文 M 作为输入,产生定长的散列码 H(M) ,作为输出,亦称作报文摘要 Message Digest. 散列码 是报文所有比特的函数值,具有差错检测能力,报文任意一比 特的改变都将引起散列码的改变 不同的散列码使用方式 ◦ 对附加了散列码的报文进行加密 ◦ 使用常规加密方法仅对散列码加密 ◦ 使用公开密钥方法仅对散列码加密,提供数字签名 ◦ 同时提供保密和签名,可以分别使用常规方法加密报文及使用公 开密钥方法加密散列码 ◦ 其他 对避免加密的方法重视的原因 加密过程很慢,硬件开销大,初始化的开销,专利问题,出口限制
17
现代密码学理论与实践 17/36 mfy@ustc.edu.cn
18
现代密码学理论与实践 18/36 mfy@ustc.edu.cn
19
现代密码学理论与实践 19/36 mfy@ustc.edu.cn
20
现代密码学理论与实践 20/36 mfy@ustc.edu.cn 对 MAC 的要求 1. 若攻击者已知 M 和 C(K,M) ,则构造满足 C(K,M’)=C(K,M) 的消息 M’ 在计算上是不可行的 2. C(K,M) 应该是均匀分布的,即对任何随机选择的消息 M 和 M’ , C(K,M’)=C(K,M) 的概率是 2 -n ,其中 n 是 MAC 的位数 3. 设 M’ 是 M 的某个已知的变换,即 M’=f(M) ,如 f 可能表 示逆转 M 的一位或多位,那么 Pr[C(K,M)=C(K,M’)] 的 概率是 2 -n. ( Malleability ) 基于 DES 的消息认证码 FIPS PUB 113 ◦ 该算法定义为以密码分组链接 (CBC) 为操作方式的用 0 作为初始化向量的 DES
21
现代密码学理论与实践 21/36 mfy@ustc.edu.cn
22
现代密码学理论与实践 22/36 mfy@ustc.edu.cn 相同报文进行多点广播,以明文加对应 MAC 的形式 进行广播,接收者负责鉴别,不正确时发出告警 接收方无法对所有收到的报文进行解密工作,则可以 进行有选择地鉴别,对报文作随机检查 对明文计算机程序进行鉴别,检查完整性 某些应用不关注报文的保密而更重视鉴别报文的真实 性,如 SNMPv3 ,将保密与鉴别分开 保密函数与鉴别函数的分离能提供结构上的灵活性, 如在应用层完成鉴别而在较低层加密 在超过接收时间后继续延长保护期限,同时允许处理 报文内容 MAC 不提供数字签名,因为双方共享密 钥。
23
现代密码学理论与实践 23/36 mfy@ustc.edu.cn 散列函数 ◦ 一个散列函数以变长的报文 M 作为输入,产生定长的散列 码 H(M) ,作为输出,亦称作报文摘要 Message Digest. 散 列码是报文所有比特的函数值,具有差错检测能力,报文 任意一比特的改变都将引起散列码的改变。 h=H(M) 报文摘要的基本原理 ◦ 对任意长度的明文 m ,经由哈希函数 ( 杂凑函数 )h 产生固定 长度的哈希值 h(m) ,用来对明文作鉴别 (authentication) 或 数字签名 (digital signature) 。哈希函数值是对明文的一种 “ 指纹 ”(finger print) 或是摘要 (digest) 。对哈希函数值的数 字签名,就是对此明文的数字签名,可以用来提高数字签 名的效率。
25
现代密码学理论与实践 25/36 mfy@ustc.edu.cn 1. H 可以应用于任意大小的数据块 2. H 产生固定长度的输出 3. 对任意给定的明文 x ,计算 H(x) 容易,可由硬件或 软件实现 4. 对任意给定的散列码 h ,找到满足 H(x)=h 的 x ,在 计算上不可行,单向性 5. 对于给定的分组 x ,找到满足 y≠x 且 H(x)=H(y) 的 y , 在计算上不可行,抗弱碰撞性 6. 找到任何满足 H(x)=H(y) 的偶对 (x, y) ,在计算上不 可行,抗强碰撞性
26
现代密码学理论与实践 26/36 mfy@ustc.edu.cn 条件 1, 2, 3 , 4 是所谓单向性问题 (One-way) 条件 5 是对使用的哈希值的数字签名方法所做的安 全保障,否则攻击者可由已知的明文及相关的数字 签名任意伪造对其他明文的签名 条件 6 主要用于防范所谓的生日攻击法 能满足条件 1-5 的,称为弱哈希函数 (Weak Hash Function) 能同时满足条件 6 的,称为强哈希函数 (Strong Hash Function) 应用在数字签名上的哈希函数必须是强哈希函数
27
1978 年, Rabin 利用 DES, 使用密文块链方式 (CBC, Cipher Block Chaining) 提出一种简单快速 Hash 函数:
28
将明文 M 分成固定长度 64 位的明文块 (block)m 1, m 2, …, m n ,使用 DES 的 CBC 操作方法,对每一明文块陆续加密 令 h 0 = 初始值, h i = E mi [h i-1 ] 以及 G = h n 。 这种方法不使用密钥, G 就是 64 位的哈希函数值, 不安全。
29
现代密码学理论与实践 29/36 mfy@ustc.edu.cn 生日悖论攻击法 (Birthday Paradox) ◦ 若试图伪造明文 M 的签名,要求签字人签名 M’ ,即要找 到满足 H(M’)=H(M) 的 M’ ,到底需要找多少明文才能找 到这个对应的 M’ ? Rabin 的方法 ◦ 若一个函数可能有 n 个函数值,且已知一个函数值 h(x) , 任选 k 个任意数作为函数输入值,问: k 必须多大才能保 证至少找到一个输入值 y ,且 h(x) = h(y) 的概率大于 1/2 ? 当 k>n/2 时,这个概率将超过 1/2 。
30
现代密码学理论与实践 30/36 mfy@ustc.edu.cn 对于任意 y ,满足 h(x) = h(y) 的概率是 1/n ,不满足的 概率是 1-1/n 。 k 个任意输入没有一个满足 h(x) = h(y) 的概率是 (1-1/n) k ,至少有一个满足的概率是 1-(1- 1/n) k 。根据二项式定理, (1-a) k = 1-ka + a 2 – a 3 + … 当 a→0 时, (1-a) k →1-ka. 所以, k 个任意输入中至少有一个 y 满足 h(x) = h(y) 的 概率几乎等于 1-(1-ka) = ka ,这里, a 即为 1/n ,至 少有一个 y 满足 h(x) = h(y) 的概率几乎等于 k/n 。当 k>n/2 时,这个概率将超过 1/2 。 因此,看来 64 位的 Hash 函数,有 2 64 种组合,攻击者 只要尝试 k >n/2 ,即 2 64 /2 = 2 63 个明文,就有可能 获得超过 1/2 的成功机会。
31
现代密码学理论与实践 31/36 mfy@ustc.edu.cn 但是, Yuval 提出用生日悖论 (Birthday Paradox) 对 Robin 的方法进行攻击,证明只需要 2 32 次的运算就 有可能获得超过 1/2 的成功机会。 生日攻击的数学背景 到底 k 要多大,才能在 k 个人中,至少找到两个人有 同一天生日的概率大于 1/2 ? k 个人的生日总排列数是 365 k , k 个人有不同生日的 总排列数为: N = P k 365 = 即第一个人可能有 365 种生日选择,第二个人必须不同 于第一个人,所以有 364 种选择,依此类推。
32
现代密码学理论与实践 32/36 mfy@ustc.edu.cn k 个人有不同生日的概率 Q(365, k) = (365!/(365-k)!)/365 k = 365!/ (365 k (365-k)!) k 个人中至少有两个人有相同生日的概率是 P(365, k) = 1- Q(365, k) k 要多大,才能保证在 k 个人中,至少有两个人同 一天生日的概率大于 1/2 ? 计算得 P(365, 23) = 0.5073 ,即 k = 23 。 当 k = 100 时, P(365, 100) = 0.999997 。 可以这样解释,在 23 个人当中,考虑某一个人的 特定生日,在剩下的 22 个人中能找到相同特定生日的概 率是很小的; 但是只考虑同一天生,只有 = 253 种不同的组 合。所以只要 23 个人,找到两人同天生的概率大于 1/2 。
33
生日悖论
34
现代密码学理论与实践 34/36 mfy@ustc.edu.cn 穷举攻击 ◦ 散列函数 2 n/2 将决定散列码抗击强行攻击的强度 ◦ 消息认证码 需要同时知道消息和 MAC ,攻击更难成功 密码分析 ◦ 散列函数 安全散列函数 ◦ 消息认证码
35
现代密码学理论与实践 35/36 mfy@ustc.edu.cn
36
现代密码学理论与实践 36/36 mfy@ustc.edu.cn 第 11 章:
Similar presentations