现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点
現代密碼學2.2、2.3--由“一次一密/One-Time Pad”引出具有完美安全的密碼方案共同缺點
- One-Time Pad密碼方案
- 定義
- 正確性/correctness
- 完美隱藏性/perfectly secret
- 具有完美隱藏性的密碼方案的共同缺點
- 特例缺點
- 共同缺點
博主正在學習INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些筆記供自己回憶,如有錯誤請指正。整理成一個系列現代密碼學,方便檢索。
《現代密碼學》第一章所介紹的古典密碼,全都已經被破解了,而2.1節介紹了具有完美隱藏性的密碼方案的定義。了解完美隱藏性后,《現代密碼學》在2.2、2.3節向我們介紹了一種具有完美隱藏性的密碼方案One-Time Pad,進而引出這樣的密碼方案不可避免的缺點,并嚴格證明這些缺點是所有具有完美隱藏性的密碼方案不可避免的。
One-Time Pad密碼方案
定義
給定一個正整數lll,明文空間、密鑰空間、密文空間都是{0,1}l\{0,1\}^l{0,1}l,長度為lll的01串。
GenGenGen:從密鑰空間K={0,1}l\mathcal{K}=\{0,1\}^lK={0,1}l中均勻隨機取出一個字符串作為密鑰kkk,每一個的概率都是2?l2^{-l}2?l
EncEncEnc:對于明文m∈{0,1}lm\in \{0,1\}^lm∈{0,1}l,用密鑰k∈{0,1}lk\in \{0,1\}^lk∈{0,1}l加密,得到密文c:=k?mc:=k\bigoplus mc:=k?m
DecDecDec:對于密文c∈{0,1}lc\in \{0,1\}^lc∈{0,1}l,用密鑰k∈{0,1}lk\in \{0,1\}^lk∈{0,1}l解密,得到明文m:=k?cm:=k\bigoplus cm:=k?c
正確性/correctness
易證:Dec(Enck(m))=Dec(k?m)=k?k?m=mDec(Enc_k(m))=Dec(k\bigoplus m)=k\bigoplus k\bigoplus m=mDec(Enck?(m))=Dec(k?m)=k?k?m=m
(因為k?k=0lk\bigoplus k=0^lk?k=0l,0l?m=m0^l\bigoplus m=m0l?m=m,異或是相同為0,不同為1)
完美隱藏性/perfectly secret
要證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∣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[Enck(m)=c]=Pr[k?m=c]=Pr[k=m?c]=2?lPr[C=c|M=m]=Pr[Enc_k(m)=c]=Pr[k\bigoplus m=c]=Pr[k=m\bigoplus c]=2^{-l}Pr[C=c∣M=m]=Pr[Enck?(m)=c]=Pr[k?m=c]=Pr[k=m?c]=2?l
→Pr[C=c]=∑m∈MPr[C=c∣M=m]?Pr[M=m]=∑m∈M2?l?Pr[M=m]=2?l\rightarrow Pr[C=c]=\sum_{m\in \mathcal{M}}Pr[C=c|M=m]\cdot Pr[M=m]=\sum_{m\in \mathcal{M}}2^{-l}\cdot Pr[M=m]=2^{-l}→Pr[C=c]=∑m∈M?Pr[C=c∣M=m]?Pr[M=m]=∑m∈M?2?l?Pr[M=m]=2?l
→Pr[M=m∣C=c]=2?l?Pr[M=m]2?l=Pr[M=m]\rightarrow Pr[M=m|C=c]=\frac{2^{-l}\cdot Pr[M=m]}{2^{-l}}=Pr[M=m]→Pr[M=m∣C=c]=2?l2?l?Pr[M=m]?=Pr[M=m]
具有完美隱藏性的密碼方案的共同缺點
特例缺點
通過一個特例:One-Time Pad,可以看出它的缺點主要有兩個:
- 密鑰需要和明文一樣長,很難保存這么長的密鑰,且在知道明文前無法確定密鑰長度。
- 一個密鑰只能用一次,如果用兩次,則有
c1=k?m1,c2=k?m2c_1=k\bigoplus m_1,c_2=k\bigoplus m_2c1?=k?m1?,c2?=k?m2?,
→c1?c2=m1?m2\rightarrow c_1\bigoplus c_2=m_1\bigoplus m_2→c1??c2?=m1??m2?,這樣會泄露部分信息。
共同缺點
要有密鑰空間∣K∣≥|\mathcal{K}|\ge∣K∣≥明文空間∣M∣|\mathcal{M}|∣M∣,才是具有完美隱藏性的密碼方案。
證明:反證法,假設密鑰空間K<\mathcal{K}<K<明文空間M\mathcal{M}M。
- 令M(c)\mathcal{M}(c)M(c)表示密文ccc解密后得到的明文,由于密鑰kkk不確定,所以這是一個明文集合:M(c)={m∣m=Deck(c)\mathcal{M}(c)=\{m|m=Dec_k(c)M(c)={m∣m=Deck?(c) for k∈K}k\in \mathcal{K}\}k∈K}
由于Deck()Dec_k()Deck?()是確定性函數,即對于一個密鑰kkk,解密的明文結果只可能是一個確定的明文mmm。那么?c∈C,∣M(c)∣≤∣K∣\forall c\in \mathcal{C},| \mathcal{M}(c) |\le |\mathcal{K}|?c∈C,∣M(c)∣≤∣K∣。 - 因為∣K∣<∣M∣|\mathcal{K}|<|\mathcal{M}|∣K∣<∣M∣,那么?m′∈M,m′?M(c)\exists m' \in \mathcal{M},m'\notin \mathcal{M}(c)?m′∈M,m′∈/?M(c)。
- 那么Pr[M=m′∣C=c]=0≠Pr[M=m′]Pr[M=m'|C=c]=0\neq Pr[M=m']Pr[M=m′∣C=c]=0?=Pr[M=m′]。
總結
以上是生活随笔為你收集整理的现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代密码学2.1--完美安全和完美不可区
- 下一篇: 现代密码学8.1--密码学所涉及的数论和