现代密码学3.4--CPA安全,多次加密
現代密碼學3.4--CPA安全,多次加密
- CPA安全
- oracle
- 例子
- 含oracle的實驗過程
- CPA安全定義
- 多次加密的CPA安全
- "left-or-right" oracle LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?)
- 含"left-or-right" oracle的多次加密實驗過程
- 多次加密的CPA安全定義
- 多次加密和單次加密對比
- 唯密文攻擊/計算安全
- 選擇明文攻擊/CPA安全
博主正在學習INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些筆記供自己回憶,如有錯誤請指正。整理成一個系列現代密碼學,方便檢索。
- 第二章定義的完美安全是一種理論上的討論,而第三章需要定義的計算安全是一種更偏向實際需求的討論。
- 3.1節討論了定義計算安全的兩種方法,3.2節討論了什么是計算安全,3.3節給出了基于PRG構造的計算安全的密碼方案。
- 以上3.1-3.3節都在討論計算安全,這是一種抵御唯密文攻擊的安全,根據1.4節的四種攻擊模型可知,這是對敵手能力的一種最弱描述。現在,我們考慮敵手具有選擇明文攻擊的攻擊能力,來定義一種更強的安全性:CPA安全,以及考慮多次加密的計算安全和多次加密的CPA安全。
CPA安全
oracle
攻擊者可以選擇明文mmm傳給加密者,加密者用加密算法Enck(m)Enc_k(m)Enck?(m)得到ccc……返回給攻擊者。把這個過程看作一次查詢,由攻擊者來確定查什么,可以進行任意多次,且每次都用同樣的密鑰kkk。
例子
美軍vs日軍,中途島海戰:美軍監聽到日軍要攻擊“AF”,但是無法破解“AF”是什么地方。美軍猜測是“中途島”,于是讓中途島發假信息說缺水,日本截獲了這個信息并立即報告給總部:“AF”缺水,這就讓美軍知道了在日軍的加密方案中“AF”就是“中途島”。這就是選擇明文攻擊,美軍選擇了明文“中途島”,日軍加密得到“AF”,雖然不是日軍自愿參與的,但美軍仍達到了他們的需要。
含oracle的實驗過程
- 敵手A\mathcal{A}A已知安全參數1n1^n1n,有一個連接Enck(?)Enc_k(\cdot)Enck?(?)的oracle(可以詢問Enck(?)Enc_k(\cdot)Enck?(?)任意多次),輸出等長明文m0,m1m_0,m_1m0?,m1?給加密者;
- 加密者任選b∈{0,1}b\in\{0,1\}b∈{0,1},輸出密文c←Enck(mb)c\leftarrow Enc_k(m_b)c←Enck?(mb?)給敵手A\mathcal{A}A;
- 敵手A\mathcal{A}A在獲得ccc后,仍有一個連接Enck(?)Enc_k(\cdot)Enck?(?)的oracle(可以根據ccc調整,繼續查詢),輸出猜測的b′b'b′;
- 如果b′=bb'=bb′=b輸出1,否則輸出0。
CPA安全定義
私鑰加密方案Π=(Gen,Enc,Dec)\Pi=(Gen,Enc,Dec)Π=(Gen,Enc,Dec)如果對于任意PPT敵手A\mathcal{A}A,都有一個可忽略函數negl滿足Pr[PrivKA,Πcpa(n)=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{cpa}(n)=1]\le \frac{1}{2}+Pr[PrivKA,Πcpa?(n)=1]≤21?+negl(n)(n)(n),則稱該方案Π\PiΠ在選擇明文攻擊下有不可區分的加密,是滿足CPA安全的。
多次加密的CPA安全
“left-or-right” oracle LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?)
攻擊者輸入等長明文m0,m1m_0,m_1m0?,m1?給LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?),如果b=0b=0b=0,輸出c←Enck(m0)c\leftarrow Enc_k(m_0)c←Enck?(m0?);如果b=1b=1b=1,輸出c←Enck(m1)c\leftarrow Enc_k(m_1)c←Enck?(m1?)。
- “left-or-right” oracle LRk,b(m,m)LR_{k,b}(m,m)LRk,b?(m,m)可以模擬oracle Enck(m)Enc_k(m)Enck?(m)
- LRk,b(m0,1,m1,1)……LRk,b(m0,t,m1,t)LR_{k,b}(m_{0,1},m_{1,1})……LR_{k,b}(m_{0,t},m_{1,t})LRk,b?(m0,1?,m1,1?)……LRk,b?(m0,t?,m1,t?)可以模擬多次加密
不輸入m0,1,……m0,tm_{0,1},……m_{0,t}m0,1?,……m0,t?和m1,1,……m1,tm_{1,1},……m_{1,t}m1,1?,……m1,t?,而選擇分別輸入LRk,b(m0,1,m1,1)……LRk,b(m0,t,m1,t)LR_{k,b}(m_{0,1},m_{1,1})……LR_{k,b}(m_{0,t},m_{1,t})LRk,b?(m0,1?,m1,1?)……LRk,b?(m0,t?,m1,t?),是因為加密者每次加密LRk,b(m0,i,m1,i)LR_{k,b}(m_{0,i},m_{1,i})LRk,b?(m0,i?,m1,i?)返回密文cic_ici?給敵手,敵手可以據此去選擇下一次希望判斷的明文,這樣定義下的敵手能力更強。
含"left-or-right" oracle的多次加密實驗過程
- 確定b∈{0,1}b\in\{0,1\}b∈{0,1}
- 敵手A\mathcal{A}A已知安全參數1n1^n1n,有一個連接LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?)的oracle(可以詢問LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?)任意多次)
- 敵手A\mathcal{A}A輸出猜測的b′b'b′;
- 如果b′=bb'=bb′=b輸出1,否則輸出0。
多次加密的CPA安全定義
私鑰加密方案Π=(Gen,Enc,Dec)\Pi=(Gen,Enc,Dec)Π=(Gen,Enc,Dec)如果對于任意PPT敵手A\mathcal{A}A,都有一個可忽略函數negl滿足Pr[PrivKA,ΠLR?cpa(n)=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{LR-cpa}(n)=1]\le \frac{1}{2}+Pr[PrivKA,ΠLR?cpa?(n)=1]≤21?+negl(n)(n)(n),則稱該方案Π\PiΠ在選擇明文攻擊下有不可區分的多次加密,是滿足CPA安全的多次加密。
多次加密和單次加密對比
唯密文攻擊/計算安全
考慮計算安全和多次加密下的計算安全。
- 計算安全:敵手傳m0,m1m_0,m_1m0?,m1?給加密者,加密者選擇mb,b∈{0,1}m_b,b\in\{0,1\}mb?,b∈{0,1}進行加密得到c←Enck(mb)c\leftarrow Enc_k(m_b)c←Enck?(mb?)返回給敵手,敵手猜測b′b'b′。b′=bb'=bb′=b則輸出1,否則輸出0。Pr[PrivKA,Πeav=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{eav}=1]\le \frac{1}{2}+Pr[PrivKA,Πeav?=1]≤21?+negl(n)(n)(n)。具體描述可看3.2節:什么是計算安全
- 多次加密下的計算安全:敵手傳M0={m0,1……m0,t},M1={m1,1,……m1,t},∣m0,i∣=∣m1,i∣M_0=\{m_{0,1……m_{0,t}}\},M_1=\{m_{1,1},……m_{1,t}\},|m_{0,i}|=|m_{1,i}|M0?={m0,1……m0,t??},M1?={m1,1?,……m1,t?},∣m0,i?∣=∣m1,i?∣給加密者,加密者選擇b∈{0,1}b\in\{0,1\}b∈{0,1}進行加密ci←Enck(mb,i)c_i\leftarrow Enc_k(m_{b,i})ci?←Enck?(mb,i?)得到C=(c1……ct)C=(c_1……c_t)C=(c1?……ct?)返回給敵手,敵手猜測b′b'b′。b′=bb'=bb′=b則輸出1,否則輸出0。Pr[PrivKA,Πmult=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{mult}=1]\le \frac{1}{2}+Pr[PrivKA,Πmult?=1]≤21?+negl(n)(n)(n)。
如果EnckEnc_kEnck?是確定性算法,安全性:多次加密的計算安全>計算安全。
選擇明文攻擊/CPA安全
考慮CPA安全和多次加密下的CPA安全。
- CPA安全:定義含oracle的實驗,Pr[PrivKA,Πcpa(n)=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{cpa}(n)=1]\le \frac{1}{2}+Pr[PrivKA,Πcpa?(n)=1]≤21?+negl(n)(n)(n)
- 多次加密下的CPA安全:定義含LRk,b(?,?)LR_{k,b}(\cdot,\cdot)LRk,b?(?,?)的實驗,Pr[PrivKA,ΠLR?cpa(n)=1]≤12+Pr[PrivK_{\mathcal{A},\Pi}^{LR-cpa}(n)=1]\le \frac{1}{2}+Pr[PrivKA,ΠLR?cpa?(n)=1]≤21?+negl(n)(n)(n)
安全性:多次加密的CPA安全=單次加密的CPA安全。
總結
以上是生活随笔為你收集整理的现代密码学3.4--CPA安全,多次加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代密码学3.3--伪随机生成器/PRG
- 下一篇: 公钥密码--Diffie-Hellman