现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
- 完美安全
- 定义
- 定理
- 完美不可区分
- 实验过程定义
- 完美不可区分定义
- 定理
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
《现代密码学》第一章所介绍的古典密码,全都已经被破解了。之前由于没有正式的定义、精确的假设,无法证明一个密码方案是否具有严格的安全性。在第二章第一节中,《现代密码学》介绍了对抗具有无限算力的攻击者,也能被证明是安全的密码方案的定义,这样的密码方案被称为是完美安全的;而针对攻击者而言,密码方案的完美不可区分是等价于完美安全的。
完美安全
定义
对于信息空间M\mathcal{M}M上的每一种概率分布,所有信息m∈Mm\in \mathcal{M}m∈M,所有密文c∈Cc\in \mathcal{C}c∈C,如果Pr[C=c]>0Pr[C=c]>0Pr[C=c]>0,都满足Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]。
也就是,密文c∈Cc\in \mathcal{C}c∈C不会透露任何关于明文m∈Mm \in \mathcal{M}m∈M的信息,完美地隐藏了关于被加密明文mmm的所有信息。
定理
如果对于∀m,m′∈M,∀c∈C\forall m,m'\in \mathcal{M},\forall c\in \mathcal{C}∀m,m′∈M,∀c∈C,都有Pr[EncK(m)=c]=Pr[EncK(m′)=c]Pr[Enc_K(m)=c]=Pr[Enc_K(m')=c]Pr[EncK(m)=c]=Pr[EncK(m′)=c],那么这个信息空间是M\mathcal{M}M的密码方案是完美安全的。
证明:
要证明“密码方案是完美安全的”,即证满足“Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]”。
- Pr[M=m]=0Pr[M=m]=0Pr[M=m]=0,则Pr[M=m∣C=c]Pr[M=m|C=c]Pr[M=m∣C=c]肯定也是0,那么有Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m];
- Pr[M=m]>0Pr[M=m]>0Pr[M=m]>0,
贝叶斯定理得Pr[M=m∣C=c]=Pr[C=c∣M=m]⋅Pr[M=m]Pr[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],
=Pr[C=c∣M=m]⋅Pr[M=m]∑m′∈MPr[C=c∣M=m′]⋅Pr[M=m′]=\frac{Pr[C=c|M=m]\cdot Pr[M=m]}{\sum_{m'\in \mathcal{M}}Pr[C=c|M=m']\cdot Pr[M=m']}=∑m′∈MPr[C=c∣M=m′]⋅Pr[M=m′]Pr[C=c∣M=m]⋅Pr[M=m],(1)
因为Pr[EncK(m)=c]=Pr[EncK(m′)=c]Pr[Enc_K(m)=c]=Pr[Enc_K(m')=c]Pr[EncK(m)=c]=Pr[EncK(m′)=c],所以Pr[C=c∣M=m]=Pr[C=c∣M=m′]Pr[C=c|M=m]=Pr[C=c|M=m']Pr[C=c∣M=m]=Pr[C=c∣M=m′],
那么(1)式可写为=Pr[M=m]∑m′∈MPr[M=m′]=Pr[M=m]=\frac{Pr[M=m]}{\sum_{m'\in \mathcal{M}}Pr[M=m']}=Pr[M=m]=∑m′∈MPr[M=m′]Pr[M=m]=Pr[M=m]
完美不可区分
首先,定义某个实验过程,在此实验的基础上,定义完美不可区分。
实验过程定义
攻击者A\mathcal{A}A选择两个明文m,m′∈Mm,m'\in \mathcal{M}m,m′∈M,传给加密方。加密方随机选择一个比特b∈{0,1}b\in \{0,1\}b∈{0,1},通过加密方案Π\PiΠ进行加密,得到一个密文c←Enck(mb)c\leftarrow Enc_k(m_b)c←Enck(mb),传回给A\mathcal{A}A。此时,攻击者A\mathcal{A}A猜测加密方选择的比特是b′b'b′。如果b′=bb'=bb′=b,那么PriKA,Πeav=1PriK_{\mathcal{A},\Pi}^{eav}=1PriKA,Πeav=1;反之,攻击者A\mathcal{A}A猜错,PriKA,Πeav=0PriK_{\mathcal{A},\Pi}^{eav}=0PriKA,Πeav=0。
完美不可区分定义
如果对于所有的攻击者A\mathcal{A}A,信息空间为M\mathcal{M}M的密码方案Π\PiΠ都满足Pr[PriKA,Πeav=1]=12Pr[PriK_{\mathcal{A},\Pi}^{eav}=1]=\frac{1}{2}Pr[PriKA,Πeav=1]=21,那么称这种密码方案Π\PiΠ是完美不可区分的。
也就是,对于攻击者而言,这种密码方案加密不同明文,效果都是一样的。
定理
密码方案Π\PiΠ是完美不可区分的,当且仅当Π\PiΠ是完美安全的。
证明:互相规约。
用形式化表示,
完美安全是"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]",
完美不可区分是"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]",
-
现在要证"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]"↔\leftrightarrow↔"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"
-
先证"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"↔\leftrightarrow↔"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
- 从左到右(特殊→\rightarrow→一般):"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"→\rightarrow→"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]Pr[C=c]=\sum_{m\in \mathcal{M}}Pr[C=c|M=m]\cdot Pr[M=m]Pr[C=c]=∑m∈MPr[C=c∣M=m]⋅Pr[M=m]
因为Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1],所以我们可以令Pr[C=c∣M=mi]=αPr[C=c|M=m_i]=\alphaPr[C=c∣M=mi]=α,那么
Pr[C=c]=∑m∈Mα⋅Pr[M=m]=α⋅∑m∈MPr[M=m]=αPr[C=c]=\sum_{m\in \mathcal{M}}\alpha \cdot Pr[M=m]=\alpha \cdot \sum_{m\in \mathcal{M}}Pr[M=m]=\alphaPr[C=c]=∑m∈Mα⋅Pr[M=m]=α⋅∑m∈MPr[M=m]=α
即Pr[C=c]=α=Pr[C=c∣M=m]Pr[C=c]=\alpha =Pr[C=c|M=m]Pr[C=c]=α=Pr[C=c∣M=m] - 从右到左(一般→\rightarrow→特殊):"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"→\rightarrow→"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"
因为对于所有的明文信息m∈Mm\in \mathcal{M}m∈M,都有Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c],所以Pr[C=c∣M=m0]=Pr[C=c]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c]=Pr[C=c∣M=m1]
- 从左到右(特殊→\rightarrow→一般):"Pr[C=c∣M=m0]=Pr[C=c∣M=m1]Pr[C=c|M=m_0]=Pr[C=c|M=m_1]Pr[C=c∣M=m0]=Pr[C=c∣M=m1]"→\rightarrow→"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"
-
再证"Pr[C=c∣M=m]=Pr[C=c]Pr[C=c|M=m]=Pr[C=c]Pr[C=c∣M=m]=Pr[C=c]"↔\leftrightarrow↔"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]"
Pr[C=c∣M=m]=Pr[M=m∣C=c]⋅Pr[C=c]Pr[M=m]=Pr[C=c]Pr[C=c|M=m]=\frac{Pr[M=m|C=c]\cdot Pr[C=c]}{Pr[M=m]}=Pr[C=c]Pr[C=c∣M=m]=Pr[M=m]Pr[M=m∣C=c]⋅Pr[C=c]=Pr[C=c]
→Pr[M=m∣C=c]Pr[M=m]=1\rightarrow \frac{Pr[M=m|C=c]}{Pr[M=m]}=1→Pr[M=m]Pr[M=m∣C=c]=1
→Pr[M=m∣C=c]=Pr[M=m]\rightarrow Pr[M=m|C=c]=Pr[M=m]→Pr[M=m∣C=c]=Pr[M=m]
总结
以上是生活随笔为你收集整理的现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 基本数据结构与图
- 下一篇: 现代密码学2.2、2.3--由“一次一密