赞
踩
主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。
内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思
初步笔记,如有错误请指正
快速补充一些密码相关的背景知识
本节学习用于保护信息的完整性和真实性的消息认证码(MAC)和抗碰撞的哈希函数(CRHF)。
目录:MAC、构建安全MAC、CBC-MAC、CRHF、HMAC、信息论上MAC。
完整性与真实性(Integrity and Authentication)
MAC的词法(Message Authentication Code)
MAC安全
定义MAC安全
如果对名称不熟悉,可以参考下方的概念回顾
。PPT在密码学中代表“概率多项式时间”(Probabilistic Polynomial Time),这是一种衡量算法或攻击者能力的标准。在这个特定的上下文中,PPT是用来描述攻击者的计算能力。
让我们来详细解释这个定义:
所以,这个定义的含义是:一个MAC系统在适应性选择消息攻击下被认为是安全的,如果没有任何实际的、有限计算能力的攻击者能够以超过微不足道的概率成功伪造一个MAC。这个标准确保了即使在面对强大但现实的攻击者时,MAC系统也能保持其安全性和完整性。
真实例子
例题
MAC应用
构造安全MAC
证明基于PRF的安全MAC
证明基于PRF的安全MAC(续)
如果是真随机 f f f 被使用 t = f ( m ) t=f(m) t=f(m) 是均匀随机的.
Pr [ D f ( ⋅ ) ( 1 n ) = 1 ] = Pr [ M a c f o r g e A , Π ~ ( n ) = 1 ] ≤ 2 − n . \Pr[D^{f(\cdot)}(1^n)=1] = \Pr[\mathsf{Macforge}_{\mathcal{A},\tilde{\Pi}}(n) = 1] \le 2^{-n}. Pr[Df(⋅)(1n)=1]=Pr[MacforgeA,Π~(n)=1]≤2−n.
如果 F k F_k Fk 被使用,那么就是在执行实验 M a c f o r g e A , Π ( n ) \mathsf{Macforge}_{\mathcal{A},\Pi}(n) MacforgeA,Π(n).
Pr [ D F k ( ⋅ ) ( 1 n ) = 1 ] = Pr [ M a c f o r g e A , Π ( n ) = 1 ] = ε ( n ) . \Pr[D^{F_k(\cdot)}(1^n)=1] = \Pr[\mathsf{Macforge}_{\mathcal{A},\Pi}(n) = 1] = \varepsilon(n). Pr[DFk(⋅)(1n)=1]=Pr[MacforgeA,Π(n)=1]=ε(n).
根据PRF的定义有, ∣ Pr [ D F k ( ⋅ ) ( 1 n ) = 1 ] − Pr [ D f ( ⋅ ) ( 1 n ) = 1 ] ∣ ≥ ε ( n ) − 2 − n . \left| \Pr[D^{F_k(\cdot)}(1^n)=1] - \Pr[D^{f(\cdot)}(1^n)=1] \right| \ge \varepsilon(n) - 2^{-n}. ∣∣Pr[DFk(⋅)(1n)=1]−Pr[Df(⋅)(1n)=1]∣∣≥ε(n)−2−n.
扩展到变长消息
CBC-MAC(Cipher Block Chaining Message Authentication Code)是一种基于块加密算法的消息认证码(MAC)构造方法。它使用的是密码块链接(Cipher Block Chaining,CBC)模式,这是一种常用的块加密操作模式。
构造固定长度的CBC-MAC
构造固定长度的CBC-MAC(续)
安全变长MAC
MAC填充(Padding)
定义哈希函数(Hash Function)
定义抗碰撞(Collision Resistance)
碰撞(Collision): x ≠ x ′ x \neq x' x=x′ 并且 H ( x ) = H ( x ′ ) H(x) = H(x') H(x)=H(x′)。
抗碰撞(Collision Resistance):对于任意PPT算法,找到碰撞是不可能的。
碰撞发现实验 H a s h c o l l A , Π ( n ) \mathsf{Hashcoll}_{\mathcal{A},\Pi}(n) HashcollA,Π(n):
s ← G e n ( 1 n ) s \gets \mathsf{Gen}(1^n) s←Gen(1n).
H a s h c o l l A , Π ( n ) = 1 ⟺ x ≠ x ′ ∧ H s ( x ) = H s ( x ′ ) \mathsf{Hashcoll}_{\mathcal{A},\Pi}(n) =1 \iff x\ne x' \land H^s(x) = H^s(x') HashcollA,Π(n)=1⟺x=x′∧Hs(x)=Hs(x′).
哈希函数
Π
\Pi
Π (
G
e
n
\mathsf{Gen}
Gen,
H
s
H^s
Hs) 是抗碰撞的,如果
∀
\forall
∀ ppt
A
\mathcal{A}
A,
∃
n
e
g
l
\exists\;\mathsf{negl}
∃negl 使得
Pr
[
H
a
s
h
c
o
l
l
A
,
Π
(
n
)
=
1
]
≤
n
e
g
l
(
n
)
.
\Pr[\mathsf{Hashcoll}_{\mathcal{A},\Pi}(n)=1] \le \mathsf{negl}(n).
Pr[HashcollA,Π(n)=1]≤negl(n).
哈希函数安全的更弱的概念
关于CRHF的问题
哈希函数的应用
生日问题
生日问题:“如果一群人中有两个人的生日是同一天的概率有1/2,这群人数有多少?”。答案是23。这与我们平时的认知差异,也被称作“生日悖论”。具体计算见教材附件。
这个问题意味着哈希函数的输出需要足够长,否则敌手可能通过蛮力枚举来发现碰撞。
在现实攻击中,找到有意义的消息的碰撞对于攻击者来说更有价值。这对攻击者来说并不是难题,可以很容易的构造足够数量的、有意义的消息来实施攻击。对消息中一个单词的替换,所构造明文的数量翻番。
MD变换(Merkle-Damgård Transform)
MD变换的安全性
从分组密码构造CRHF
SHA-1和MD5
Hash-and-MAC
NMAC
HMAC(基于哈希的MAC)
HMAC安全性
HMAC结语
HMAC是基于NMAC的改进,是工业标准(RFC2104),HMAC比CBC-MAC更快;
验证计时攻击:
Keyczar密码学库(Python):
def Verify(key, msg, sig_bytes):
\qquad
return HMAC(key, msg) == sig_bytes
存在问题是上述比较是按字节匹配,通过观察函数返回时间可以判断相同字节的数量,从而按字节猜测标签内容。
在Xbox 360中,相邻字节上被验证拒绝的时间差有2.2毫秒.
不要自己实现密码学!
信息论上MAC安全定义
理解信息论MAC安全
信息论上MAC的构造
构造一个SUF
来自SUF的MAC的安全性
信息论MAC的局限性
总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。