现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
《现代密码学》第一章所介绍的古典密码,全都已经被破解了。之前由于没有正式的定义、精确的假设,无法证明一个密码方案是否具有严格的安全性。在第二章第一节中,《现代密码学》介绍了对抗具有无限算力的攻击者,也能被证明是安全的密码方案的定义,这样的密码方案被称为是完美安全的;而针对攻击者而言,密码方案的完美不可区分是等价于完美安全的。
完美安全
定义
对于信息空间 M \mathcal{M} M上的每一种概率分布,所有信息 m ∈ M m\in \mathcal{M} m∈M,所有密文 c ∈ C c\in \mathcal{C} c∈C,如果 P r [ C = c ] > 0 Pr[C=c]>0 Pr[C=c]>0,都满足 P r [ M = m ∣ C = c ] = P r [ M = m ] Pr[M=m|C=c]=Pr[M=m] Pr[M=m∣C=c]=Pr[M=m]。
也就是,密文 c ∈ C c\in \mathcal{C} c∈C不会透露任何关于明文 m ∈ M m \in \mathcal{M} m∈M的信息,完美地隐藏了关于被加密明文 m m m的所有信息。
定理
如果对于 ∀ m , m ′ ∈ M , ∀ c ∈ C \forall m,m'\in \mathcal{M},\forall c\in \mathcal{C} ∀m,m′∈M,∀c∈C,都有 P r [ E n c K ( m ) = c ] = P r [ E n c K ( m ′ ) = c ] Pr[Enc_K(m)=c]=Pr[Enc_K(m')=c] Pr[EncK(m)=c]=Pr[EncK(m′)=c],那么这个信息空间是 M \mathcal{M} M的密码方案是完美安全的。
证明:
要证明“密码方案是完美安全的”,即证满足“ P r [ M = m ∣ C = c ] = P r [ M = m ] Pr[M=m|C=c]=Pr[M=m] Pr[M=m∣C=c]=Pr[M=m]”。
- P r [ M = m ] = 0 Pr[M=m]=0 Pr[M=m]=0,则 P r [ M = m ∣ C = c ] Pr[M=m|C=c] Pr[M=m∣C=c]肯定也是0,那么有 P r [ M = m ∣ C = c ] = P r [ M = m ] Pr[M=m|C=c]=Pr[M=m] Pr[M=m∣C=c]=Pr[M=m];
- P r [ M = m ] > 0 Pr[M=m]>0 Pr[M=m]>0,
贝叶斯定理得 P r [ M = m ∣ C = c ] = P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] P r [ C = c ] Pr[M=m|C=c]=\frac{Pr[C=c|M=m]\cdot Pr[M=m]}{Pr[C=c]} Pr[M=m∣C=c]=Pr[C=c]Pr[C=c∣M=m]⋅Pr[M=m],
= P r [ C = c ∣ M = m ] ⋅ P r [ M = m ] ∑ m ′ ∈ M P r [ C = c ∣ M = m ′ ] ⋅ P