语义安全
语义安全表示为攻击者即使已知某个消息的密文,也得不出该消息的任何部分信息,即使是1比特的信息
在完美保密性中,对于等长的消息m,m属于可被该加密算法加密的消息空间,当m用密钥k加密后,加密结果无法得到m的任何信息。形式化的定义为如下:
目前能够到达这个安全条件的加密算法只有一次一密(One-time Pad),由于加密使用的密钥长度至少需要同消息长度相同,因此一次一密在实践中没有应用价值。
在实际的加密算法中,只需要保证实际保密性就行。目前按照图灵机的定义,计算机最多能计算多项式时间(Polynomial Time)内能解决的问题,最多有多项式大的存储空间(Polynomial Storage)。实际保密性就是计算机无法从加密结果中得到有关明文的任何信息。形式化定义如下:
不可区分性游戏
加密方案语义安全的概念由不可区分性(Indistinguishability) 游戏,简称IND游戏来刻画,这种游戏是一种思维实验。其中有2个参与者,一个称为挑战者(challenger),另一个是攻击者(attacker)。挑战者建立系统,攻击者对系统发起挑战,挑战者接受攻击者的挑战。
公钥加密方案在选择明文攻击下的不可区分性(IND-CPA)
- 初始化:挑战者产生系统E,攻击者获得系统的公开钥
- 挑战:攻击者输出两个长度相同的消息m0和m1。挑战者随机选择b ∈ \in ∈{ 0,1},将mb加密,并将密文给攻击者
- 猜测:攻击者输出b’,如果b’ = b, 则攻击者攻击成功
攻击者的优势可定义为参数k的函数:
A
d
v
e
,
A
C
P
A
(
k
)
=
∣
P
r
[
b
=
b
′
]
−
1
2
∣
Adv_{e,A}^{CPA}(k) = |Pr[b = b'] - \frac{1}{2}|
Adve,ACPA(k)=∣Pr[b=b′]−21∣
其中k是安全参数,用来确定加密方案密钥的长度。因为任一个不作为的攻击者A,都能通过对b做随机猜测,而以1/2的概率赢得IND-CPA游戏。而
∣
P
r
[
b
=
b
′
]
−
1
2
∣
|Pr[b = b'] - \frac{1}{2}|
∣Pr[b=b′]−21∣是攻击者通过努力得到的,故称为攻击者的优势。如果攻击者A式多项式时间,而它的优势可忽略不计,即
A
d
v
e
,
A
C
P
A
(
k
)
≤
n
e
g
l
(
k
)
Adv_{e,A}^{CPA}(k)\leq negl(k)
Adve,ACPA(k)≤negl(k),negl(k)是一个可忽略函数。此时这个加密算法在选择明文攻击下具有不可区分性(IND-CPA安全)
如果加密方案是确定的,如RSA算法、Rabin密码体制等,每个明文对应的密文只有一个,敌手只需重新对 m 0 m_0 m0和 m 1 m_1 m1加密后,与目标密文进行比较,即赢得游戏。因此语义安全性不适用于确定性的加密方案。与确定性加密方案相对的是概率性的加密方案,在每次加密时,首先选择一个随机数,再生成密文。因此同一明文在不同的加密中得到的密文不同,如ElGamal加密算法。
公钥加密方案在选择密文攻击下的不可区分性(IND-CCA)
IND-CPA安全仅仅保证攻击者是完全被动情况时(即仅做监听)的安全,不能保证攻击者是主动情况时(例如向网络中注入消息)的安全。非适应性选择密文攻击(Chosen Ciphertext Attack,CCA)描述了攻击者的主动攻击。攻击者在获得目标密文以前,可以访问解密谕言机(Oracle)。谕言机获得目标密文后,希望获得目标密文对应的明文的部分信息。
- 初始化:挑战者产生系统E,攻击者A获得系统的公开钥
- 训练:攻击者向挑战者(或解密谕言机)做解密询问(可多次),即取密文c给挑战者,挑战者解密后,将明文给攻击者
- 挑战:攻击者输出两个长度相同的消息m0和m1,再从挑战者接收mb的密文,其中随机值b ∈ \in ∈{ 0,1}
- 猜测:攻击者输出b’,如果b’ = b, 则攻击者攻击成功
公钥加密方案在适应性选择密文攻击下的不可区分性(IND-CCA2)
适应性选择密文攻击 (Adaptive Chosen Ciphertext Attack,CCA2):攻击者获得目标密文后,可以向网络中注入消息(可以和目标密文相关),然后通过和网络中的用户交互,获得与目标密文相应的明文的部分信息
- 初始化:挑战者产生系统E,攻击者A获得系统的公开钥
- 训练阶段1:攻击者向挑战者(或解密谕言机)做解密询问(可多次),即取密文c给挑战者,挑战者解密后,将明文给攻击者
- 挑战:攻击者输出两个长度相同的消息m0和m1,再从挑战者接收mb的密文cb,其中随机值b ∈ \in ∈{ 0,1}
- 训练阶段2:攻击者继续向挑战者(或解密谕言机)做解密询问(可多次),即取密文c( c ≠ c b c\not=c_b c=cb)给挑战者,挑战者解密后将明文给敌手
- 猜测:攻击者输出b’,如果b’ = b, 则攻击者攻击成功
在设计抗击主动敌手的密码协议时(如数字签名、认证、密钥交换、多方计算等), IND-CCA2安全的密码系统是有力的密码原语
原语是指由若干条指令组成的,用于完成 一定功能的一个过程
签名体制的语义安全性(EUF-CMA)
对于数字签名体制,存在以下几种伪造类型
- 完全攻破:攻击者能够产生与私钥持有者相同的签名,这相当于恢复出了私钥
- 选择性伪造:攻击者能够伪造一个他选择的消息签名
- 存在性伪造:攻击者能够伪造一个消息的签名,这个消息可能仅仅是一个随机比特串
签名体制的语义安全性,由不可伪造(Existential Unforgeability)游戏(简称EUF游戏)来刻画
- 初始阶段:挑战者产生系统E的密钥对(pk,sk) ,攻击者A获得系统的公开钥
- 阶段1(签名询问):A执行以下的多项式有界次适应性询问:A提交mi ,挑战者计算 σ i = S i g n ( m i , s k ) \sigma_i=Sign(m_i,sk) σi=Sign(mi,sk)并返回给A
- 输出:A输出 ( m , σ ) (m,\sigma) (m,σ),如果m不出现在阶段1且 V e r ( , m , p k ) = T Ver(,m,pk)=T Ver(,m,pk)=T,则A攻击成功
签名体制
Π
=
(
K
e
y
G
e
n
,
S
i
g
n
,
V
e
r
)
\Pi=(KeyGen,Sign,Ver)
Π=(KeyGen,Sign,Ver)称为在适应性选择消息攻击下具有存在性不可伪造性(Existential Unforgeability Against Adaptive Chosen Messages Attacks,EUF-CMA),简称为EUF-CMA安全,如果对任何多项式有界时间的敌手,存在 一个可忽略的函数negl(k),使得
A
d
v
S
i
g
ϵ
,
A
C
M
A
(
k
)
≤
n
e
g
l
(
k
)
AdvSig_{\epsilon,A}^{CMA}(k) \leq negl(k)
AdvSigϵ,ACMA(k)≤negl(k)
参考文献
[1]刘巍然.如何理解"语义安全(semantic security)"[EB/OL].https://www.zhihu.com/question/37203836/answer/70932036, 2015-11-05.
[2]杨波.密码学中的可证明安全性[M].清华大学出版社,2017年5月.