现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
現代密碼學2.1--完美安全和完美不可區(qū)分/Perfectly secret, Perfectly indistinguishable
- 完美安全
- 定義
- 定理
- 完美不可區(qū)分
- 實驗過程定義
- 完美不可區(qū)分定義
- 定理
博主正在學習INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些筆記供自己回憶,如有錯誤請指正。整理成一個系列現代密碼學,方便檢索。
《現代密碼學》第一章所介紹的古典密碼,全都已經被破解了。之前由于沒有正式的定義、精確的假設,無法證明一個密碼方案是否具有嚴格的安全性。在第二章第一節(jié)中,《現代密碼學》介紹了對抗具有無限算力的攻擊者,也能被證明是安全的密碼方案的定義,這樣的密碼方案被稱為是完美安全的;而針對攻擊者而言,密碼方案的完美不可區(qū)分是等價于完美安全的。
完美安全
定義
對于信息空間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′∈M?Pr[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′∈M?Pr[M=m′]Pr[M=m]?=Pr[M=m]
完美不可區(qū)分
首先,定義某個實驗過程,在此實驗的基礎上,定義完美不可區(qū)分。
實驗過程定義
攻擊者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。
完美不可區(qū)分定義
如果對于所有的攻擊者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Π是完美不可區(qū)分的。
也就是,對于攻擊者而言,這種密碼方案加密不同明文,效果都是一樣的。
定理
密碼方案Π\PiΠ是完美不可區(qū)分的,當且僅當Π\PiΠ是完美安全的。
證明:互相規(guī)約。
用形式化表示,
完美安全是"Pr[M=m∣C=c]=Pr[M=m]Pr[M=m|C=c]=Pr[M=m]Pr[M=m∣C=c]=Pr[M=m]",
完美不可區(qū)分是"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∈M?Pr[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∈M?Pr[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--由“一次一密