赞
踩
信息安全的三个要点:机密性、完整性、可用性
被动攻击:攻击者只能监听;主动攻击:攻击者可能会干扰通信
H(M)作用于一个任意长度的消息M,返回固定长度(通常超过128比特)的散列值h:
h=H(M)
作用:
要求:
假定h:X→Y,|X|≥|Y|,设x∈X,定义y=h(x)
理想的Hash函数应该满足:对于给定的x,只能通过函数h计算得到h(x)的值,而无法通过其他条件得到;已知h(x1),h(x2),…,无法间接推出h(x),其中x与x1,x2,…均不相等
令 F X , Y F^{X,Y} FX,Y是所有从X到Y的函数集合,假定|X|=N,|Y|=M,随机从 F X , Y F^{X,Y} FX,Y中选择一个Hash函数h:X→Y,对于任意的输入x,其输出值为均匀的,计算h(x)的唯一方法是询问随机预言机。
定理:假定 h ∈ F X , Y h\in F^{X,Y} h∈FX,Y随机选择,令 X 0 ∈ X X_0\in X X0∈X,假定当且仅当 x ∈ X 0 x\in X_0 x∈X0时。h(x)被确定,则对所有的 x ∈ X \ X 0 , y ∈ Y x\in X \backslash X_0,y\in Y x∈X\X0,y∈Y都有 P r [ h ( x ) = y ] = 1 M Pr[h(x)=y]=\frac{1}{M} Pr[h(x)=y]=M1
Find - Preimage(h, y, Q)
选择任意的
X
0
⊆
X
,
∣
X
0
∣
=
Q
X_0\subseteq X,|X_0|=Q
X0⊆X,∣X0∣=Q
for each x∈X0
do: if h(x)=y then return(x)
return (failure)
对于任意的 X 0 ⊆ X , ∣ X 0 ∣ = Q X_0\subseteq X,|X_0|=Q X0⊆X,∣X0∣=Q,算法的平均成功率为 ε = 1 − ( 1 − 1 M ) Q \varepsilon=1-(1-\frac{1}{M})^{Q} ε=1−(1−M1)Q
证明:给定y∈Y,令X0={x1,x2,…,xQ}
对于1≤i≤Q,有
P
r
[
E
i
]
=
1
M
Pr[E_i]=\frac{1}{M}
Pr[Ei]=M1
则有
P
r
[
E
1
∨
E
2
∨
.
.
.
∨
E
Q
]
=
1
−
(
1
−
1
M
)
Q
Pr[E_1 \vee E_2 \vee ... \vee E_Q]=1-(1-\frac{1}{M})^Q
Pr[E1∨E2∨...∨EQ]=1−(1−M1)Q
对于任意给定的y的成功率是常数,故结论成立。Q远小于M,故
ε
≈
Q
M
\varepsilon\approx\frac{Q}{M}
ε≈MQ(舍弃了后面的M-1的高次项)
拉斯维加斯算法
Find - Second - Preimage(h, y, Q)
y=h(x)
选择
X
0
⊆
X
\
{
x
}
,
∣
X
0
∣
=
Q
−
1
X_0\subseteq X\backslash\{x\},|X_0|=Q-1
X0⊆X\{x},∣X0∣=Q−1
for each x0∈X0
do: if h(x0)=y then return(x0)
return failure
对于任意的 X 0 ⊆ X \ { x } , ∣ X 0 ∣ = Q − 1 X_0\subseteq X\backslash\{x\},|X_0|=Q-1 X0⊆X\{x},∣X0∣=Q−1,算法的成功率为 ε = 1 − ( 1 − 1 M ) Q − 1 \varepsilon=1-(1-\frac{1}{M})^{Q-1} ε=1−(1−M1)Q−1
生日攻击
Find - Collision(h, Q)
选择任意的
X
0
⊆
X
,
∣
X
0
∣
=
Q
X_0\subseteq X,|X_0|=Q
X0⊆X,∣X0∣=Q
for each x∈X0
do yx=h(x)
if 对某一x’∈X,有yx=yx’
then return (x,x’)
else return (failure)
对于任意的
X
0
⊆
X
,
∣
X
0
∣
=
Q
X_0\subseteq X,|X_0|=Q
X0⊆X,∣X0∣=Q,算法平均成功率为
ε
=
1
−
(
M
−
1
M
M
−
2
M
.
.
.
M
−
Q
+
1
M
)
\varepsilon=1-(\frac{M-1}{M}\frac{M-2}{M}...\frac{M-Q+1}{M})
ε=1−(MM−1MM−2...MM−Q+1)
Q
≈
2
M
ln
1
1
−
ε
Q\approx\sqrt{2M\ln\frac{1}{1-\varepsilon}}
Q≈2Mln1−ε1
证明:
ε
=
1
−
(
M
−
1
M
M
−
2
M
.
.
.
M
−
Q
+
1
M
)
≈
∏
i
=
1
k
−
1
e
−
i
M
=
e
−
k
(
k
−
1
)
2
M
\varepsilon=1-(\frac{M-1}{M}\frac{M-2}{M}...\frac{M-Q+1}{M})\\ \approx\prod_{i=1}^{k-1}e^{-\frac{i}{M}}=e^{-\frac{k(k-1)}{2M}}
ε=1−(MM−1MM−2...MM−Q+1)≈i=1∏k−1e−Mi=e−2Mk(k−1)
对一个输出空间大小为M的随机函数,只需要计算大约 M \sqrt{M} M 个函数值就能够以一个不可忽略的概率发现一个碰撞。因此Hash函数的输出空间大小必须有一个下界。
Collision - To - Second - Preimage(h)
external Oracle - 2nd - Preimage
均匀随机选择x∈X
if Oracle - 2nd - Preimage(h,x)=x’
then return (x,x’)
else return (failure)
碰撞问题可以归约到第二原像问题,因此可以说碰撞稳固性质意味着第二原像稳固性质。
Collision - To - Preimage(h)
external Oracle - Preimage
均匀随机选择x∈X
y←h(x)
if (Oracle - Preimage(h, y)=x’) and (x≠x’)
then return (x, x’)
else return (failure)
定理4.5 假定h: X→Y是一个Hash函数,其中|X|和|Y|有限且|X|≥2|Y|。假定Oracle - Preimage对固定的hash函数是原像问题中的一个(1, Q)算法,则Collision - To - Preimage对固定的Hash函数时碰撞问题的一个(1/2, Q+1)算法
使用随机预言机模型中理想Hash函数是困难的,可以参考一些分组密码理论构造尽可能接近理想特性的Hash函数。(混乱、扩散、随机)。可以基于数学难题构造方法,但计算速度慢,不实用。因此可以使用对称密码体制来设计Hash函数,或者直接设计。
Hash函数通用结构:迭代结构
最后一块的最后8个字节(64bits)保存的是输入的长度。如果消息正好是分块的整数倍,仍然需要填充一整块,其中前面为10000…(填充内容),后面为输入长度。如果消息过长(大于2^64 bits),则将消息模2^64(仅取低64位)计算MD5。(消息长度为小端序)
初始化4个字寄存器,填入CV0(0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476,固定不变)
F
(
B
,
C
,
D
)
=
(
B
∧
C
)
∨
(
¬
B
∧
D
)
G
(
B
,
C
,
D
)
=
(
B
∧
C
)
∨
(
C
∧
¬
D
)
H
(
B
,
C
,
D
)
=
B
⊕
C
⊕
D
I
(
B
,
C
,
D
)
=
C
⊕
(
B
∨
¬
D
)
F(B,C,D)=(B\land C)\vee(\lnot B\land D)\\ G(B,C,D)=(B\land C)\vee(C\land\lnot D)\\ H(B,C,D)=B\oplus C\oplus D\\ I(B,C,D)=C\oplus(B\vee\lnot D)
F(B,C,D)=(B∧C)∨(¬B∧D)G(B,C,D)=(B∧C)∨(C∧¬D)H(B,C,D)=B⊕C⊕DI(B,C,D)=C⊕(B∨¬D)
与MD5基本相同,不同的是SHA1最后的输入长度为大端序而MD5为小端序
一共执行80步后输出
F
1
=
(
B
∧
C
)
∨
(
¬
B
∧
D
)
F
2
=
B
⊕
C
⊕
D
F
3
=
(
B
∧
C
)
∨
(
B
∧
D
)
∨
(
C
∧
D
)
F_1=(B\land C)\vee(\lnot B\land D)\\ F_2=B\oplus C\oplus D\\ F_3=(B\land C)\vee(B\land D)\vee(C\land D)
F1=(B∧C)∨(¬B∧D)F2=B⊕C⊕DF3=(B∧C)∨(B∧D)∨(C∧D)
其中F1用于第0-19步,F2用于第20-39、60-79步,F3用于第40-59步
W
t
=
{
Y
i
[
t
]
,
0
≤
t
≤
15
S
1
(
W
t
−
16
⊕
W
t
−
14
⊕
W
t
−
8
⊕
W
t
−
3
)
,
t
≥
15
W_t=\left\{\\
K
t
=
{
0x
5
A
827999
,
0
≤
t
≤
19
0x
6
E
D
9
E
B
A
1
,
20
≤
t
≤
39
0x
8
F
1
B
B
C
D
C
,
40
≤
t
≤
59
0x
C
A
62
C
1
D
6
,
60
≤
t
≤
79
K_t=\left\{\\
摘要长度:寻找原像与碰撞
速度:SHA1速度慢于MD5
简洁与紧致性:描述和实现都较为简单,无需更大代换表
数据存储方式:小端序和大端序
安全性:SHA1优于MD5
压缩函数:将Yi扩展为132个字用于压缩函数CF(ABCDEFGH)
采用海绵结构,可以实现任意长度的输入和输出
首尾填充1,中间填充0,整数倍也要填充
∀
n
≥
0
,
∀
M
,
M
′
∈
(
Z
2
)
∗
:
M
≠
M
′
⇒
M
∣
∣
p
a
d
[
r
]
≠
M
′
∣
∣
p
a
d
[
r
]
∣
∣
0
n
r
\forall n\ge 0,\forall M,M'\in(Z_2)^*:M\ne M'\Rightarrow M||pad[r]\ne M'||pad[r]||0^{nr}
∀n≥0,∀M,M′∈(Z2)∗:M=M′⇒M∣∣pad[r]=M′∣∣pad[r]∣∣0nr
即若原来的明文不一样,填充完之后应该也不一样。
报文校验码,满足某些安全性质的带密钥的Hash函数,功能是保证数据完整性以及数据源认证
可以通过不带密钥的Hash函数构造:HMAC
也可通过对称密钥算法构造:CBC-MAC
ipad = 3636…36
opad = 5c5c…5c
HMACK(x)=SHA-1((K
⊕
\oplus
⊕opad)||SHA-1((K
⊕
\oplus
⊕ipad)||x))【||表示连接】
通过嵌套Hash函数以保证MAC的安全性。一旦结构安全,则可以替换其中的Hash函数
CBC-MAC(x,k)
令x=x1||…||xn
IV←00…0
y0←IV
for i=1 to n
do yi=ek(yi-1
⊕
\oplus
⊕xi)
return yn
加密算法具有混乱特性,当基本加密算法满足合适的安全性质时,CBC-MAC是安全的
CCM模式:CTR+CBC-MAC
Ti=ctr+i mod 2m,x=x1||…,yi=ek(Ti)
⊕
\oplus
⊕xi
temp = CBC-MAC(x, K),y’ = T0
⊕
\oplus
⊕temp,y=y1||y2||…||y’
攻击方式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。