为了保证更强的安全性,GoldWasser和Micali在1984年提出了概率加密,引入更强的安全目标:语义安全。理论上已证明,语义安全(Semantic Security,SS)等价于密文不可区分性。
密文不可区分性
敌手和挑战者商定目标密码体制,选定加密密钥pk,然后进行以下各阶段:
寻找阶段: 敌手选择两个等长的明文
m
0
m_0
m0,
m
1
m_1
m1
猜测阶段: 敌手被挑战者告知其中一个明文
m
b
m_b
mb和随机数r的加密结果
C
b
C_b
Cb,判断
C
b
C_b
Cb是
C
0
C_0
C0还是
C
1
C_1
C1,其中b是保密的。
若
b
=
0
,
C
0
=
E
n
c
p
k
(
m
0
,
r
)
若
b
=
1
,
C
1
=
E
n
c
p
k
(
m
1
,
r
)
若b=0,C_0=Enc_{pk}(m_0,r) \\若b=1,C_1=Enc_{pk}(m_1,r)
若b=0,C0=Encpk(m0,r)若b=1,C1=Encpk(m1,r)
敌手的目标是以大于
1
2
\frac {1}{2}
21的概率猜对b的值.下面定义敌手的优势:
A
d
v
敌
手
=
∣
P
r
[
b
←
E
n
c
p
k
(
m
0
,
r
)
]
−
P
r
[
b
←
E
n
c
p
k
(
m
1
,
r
)
]
∣
Adv_{敌手}=|Pr[b\leftarrow Enc_{pk}(m_0,r)]-Pr[b\leftarrow Enc_{pk}(m_1,r)]|
Adv敌手=∣Pr[b←Encpk(m0,r)]−Pr[b←Encpk(m1,r)]∣
如果
A
d
v
敌
手
Adv_{敌手}
Adv敌手为可以忽略,那么可以认为
C
0
C_0
C0和
C
1
C_1
C1不可区分。
相对前者,增加敌手可以在收到
C
b
C_b
Cb之前,调用一次加密或解密的能力。下面是具体流程:
训练: 敌手向挑战者请求任意密文的解密(多项式有界次数),即选取密文C给挑战者,挑战者返回解密结果给敌手。
挑战: 敌手A选择两个等长的明文
m
0
m_0
m0、
m
1
m_1
m1,再从挑战者接受
m
b
m_b
mb加密后的密文
C
b
C_b
Cb,b是随机的;
猜测: 敌手输出
b
′
b^{'}
b′,若
b
′
=
b
b^{'}=b
b′=b,则敌手成功。
若
b
=
0
,
C
0
=
E
n
c
p
k
(
m
0
,
r
)
若
b
=
1
,
C
1
=
E
n
c
p
k
(
m
1
,
r
)
若b=0,C_0=Enc_{pk}(m_0,r) \\若b=1,C_1=Enc_{pk}(m_1,r)
若b=0,C0=Encpk(m0,r)若b=1,C1=Encpk(m1,r)
敌手的目标是以大于
1
2
\frac {1}{2}
21的概率猜对b的值.下面定义敌手的优势:
A
d
v
敌
手
=
∣
P
r
[
b
′
=
b
]
−
1
2
]
∣
Adv_{敌手}=|Pr[b^{'}=b]-\frac {1}{2}]|
Adv敌手=∣Pr[b′=b]−21]∣
如果
A
d
v
敌
手
Adv_{敌手}
Adv敌手可以忽略,那么认为此密码体制在非适应性选择密文攻击下具有不可区分性,称为IND-CCA1安全。
相对前者,不限制敌手调用解密的时间。下面是具体流程:
训练1: 敌手向挑战者请求任意密文的解密(多项式有界次数),即选取密文C给挑战者,挑战者返回解密结果给敌手。
挑战: 敌手A选择两个等长的明文
m
0
m_0
m0、
m
1
m_1
m1,再从挑战者接受
m
b
m_b
mb加密后的密文
C
b
C_b
Cb,b是随机的;
训练2: 敌手继续向挑战者请求任意密文的解密(多项式有界次数),即选取密文C(C不能是
C
b
C_b
Cb)给挑战者,挑战者返回解密结果给敌手。
猜测: 敌手输出
b
′
b^{'}
b′,若
b
′
=
b
b^{'}=b
b′=b,则敌手成功。
若
b
=
0
,
C
0
=
E
n
c
p
k
(
m
0
,
r
)
若
b
=
1
,
C
1
=
E
n
c
p
k
(
m
1
,
r
)
若b=0,C_0=Enc_{pk}(m_0,r) \\若b=1,C_1=Enc_{pk}(m_1,r)
若b=0,C0=Encpk(m0,r)若b=1,C1=Encpk(m1,r)
敌手的目标是以大于
1
2
\frac {1}{2}
21的概率猜对b的值.下面定义敌手的优势:
A
d
v
敌
手
=
∣
P
r
[
b
′
=
b
]
−
1
2
]
∣
Adv_{敌手}=|Pr[b^{'}=b]-\frac {1}{2}]|
Adv敌手=∣Pr[b′=b]−21]∣
如果
A
d
v
敌
手
Adv_{敌手}
Adv敌手可以忽略,那么认为此密码体制在适应性选择密文攻击下具有不可区分性,称为IND-CCA2安全。
目前普遍认为,任何新提出的公钥加密算法都应该在适应性选择密文攻击下达到语义安全性,即IND-CCA2。
“完全或无”、IND-CPA、IND-CCA1、IND-CCA2的详细说明
“IND-”安全概念的简单解释
如何理解"语义安全(semantic security)"