现代密码学3.3--伪随机生成器/PRG
現代密碼學3.3--偽隨機生成器/PRG
- PRG
- 歸約證明
- 基于PRG構造計算安全(唯密文攻擊)的密碼方案
- 構造密碼方案Π\PiΠ
- 基于PRG,證明密碼方案Π\PiΠ的計算安全
博主正在學習INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些筆記供自己回憶,如有錯誤請指正。整理成一個系列現代密碼學,方便檢索。
- 第二章定義的完美安全是一種理論上的討論,而第三章需要定義的計算安全是一種更偏向實際需求的討論。
- 3.1節討論了定義計算安全的兩種方法,3.2節討論了什么是計算安全。1.4節介紹了現代密碼的三大原則:定義+假設+安全性證明,現在定義了計算安全,還需要有一個假設,才能構造能夠進行安全性證明的密碼方案,
- 所以3.3節:
- 介紹一個常見的假設工具:偽隨機生成器/pseudorandom generator/PRG,
- 如何基于困難問題來構造密碼方案
- 以及基于PRG(困難問題)構造密碼方案的實例。
PRG
- 原因:生成真隨機比特是難的且慢的
- 過程:“短的、均勻的”字符串(seed) 生成 “長的,看起來均勻的”字符串
- 定義原因:需要進行統計測試確定PRG的合理性,但多少次測試足以保證呢?(不知道多少次,所以需要嚴格定義
定義
lll是一個多項式,GGG是一個確定性多項式算法,對于輸入s∈{0,1}ns\in \{0,1\}^ns∈{0,1}n,G(s)G(s)G(s)輸出長度為l(n)l(n)l(n)的字符串。如果GGG滿足以下兩個性質,則稱為PRG。
- 拓展性:l(n)>n,?nl(n)>n,\forall nl(n)>n,?n(如果l(n)≤nl(n)\le nl(n)≤n,則沒有用PRG的意義,直接用真隨機就可以滿足,lll被稱為GGG的擴張因子)
- 偽隨機性:對于任意PPT敵手DDD,都有可忽略函數neglneglnegl滿足∣Pr[D(G(s))=1]?Pr[D(r)=1]∣≤negl(n),r∈{0,1}l(n)|Pr[D(G(s))=1]-Pr[D(r)=1]|\le negl(n),r\in \{0,1\}^{l(n)}∣Pr[D(G(s))=1]?Pr[D(r)=1]∣≤negl(n),r∈{0,1}l(n)均勻隨機。
暴力破解可以區分偽隨機和真隨機,但這并不影響偽隨機的合理性。不過這告訴我們seed需要足夠長,不會被遍歷,通常選|seed|=安全參數
歸約證明
歸約思想:如果存在PPT敵手A\mathcal{A}A以不可忽略的概率?\epsilon?攻破密碼方案,則構造PPT敵手A′\mathcal{A}'A′調用A\mathcal{A}A,可以解決困難問題;因為假設問題是困難的,所以推出矛盾。
歸約過程
- 找到PPT敵手A\mathcal{A}A,嘗試攻破密碼方案Π\PiΠ,成功概率為?(n)\epsilon(n)?(n)
- 構造PPT敵手A′\mathcal{A}'A′,嘗試解決困難問題X,調用A\mathcal{A}A作為子線程。如果A\mathcal{A}A攻破密碼方案Π\PiΠ,則A′\mathcal{A}'A′以1/p(n)1/p(n)1/p(n)概率解決困難問題實例x。
- A′\mathcal{A}'A′以?(n)/p(n)\epsilon(n)/p(n)?(n)/p(n)概率解決困難問題X
- 如果?\epsilon?不可忽略,則?(n)/p(n)\epsilon(n)/p(n)?(n)/p(n)不可忽略;這與X是困難問題不符,矛盾推出A\mathcal{A}A攻破密碼方案Π\PiΠ的概率?\epsilon?一定是可忽略的,則密碼方案Π\PiΠ一定是計算安全的。
基于PRG構造計算安全(唯密文攻擊)的密碼方案
構造密碼方案Π\PiΠ
GGG是一個擴張因子為lll的偽隨機生成器,是確定性算法
- Gen:安全參數nnn,種子k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n作為密鑰
- Enc:基于密鑰k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n和明文m∈{0,1}l(n)m\in \{0,1\}^{l(n)}m∈{0,1}l(n),輸出密文c:=G(k)⊕mc:=G(k)\oplus mc:=G(k)⊕m
- Dec:基于密鑰k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n和密文c∈{0,1}l(n)c\in \{0,1\}^{l(n)}c∈{0,1}l(n),輸出明文m:=G(k)⊕cm:=G(k)\oplus cm:=G(k)⊕c
基于PRG,證明密碼方案Π\PiΠ的計算安全
- 要證:對于任意PPT敵手A\mathcal{A}A,存在一個可忽略函數neglneglnegl使得Pr[PrivKA,Πeav(n)=1]≤12+negl(n)Pr[PrivK_{\mathcal{A},\Pi}^{eav}(n)=1]\le \frac{1}{2}+negl(n)Pr[PrivKA,Πeav?(n)=1]≤21?+negl(n),
- 思路:通過調用A\mathcal{A}A作為子程序,構造PPT敵手DDD,用DDD去區分偽隨機GGG和真隨機;如果A\mathcal{A}A能以不可忽略概率攻破方案Π\PiΠ,則DDD能區分偽隨機和真隨機,這與偽隨機的定義不符,矛盾。
構造DDD,有一個輸入w∈{0,1}l(n)w\in \{0,1\}^{l(n)}w∈{0,1}l(n)
- DDD調用A(1n)\mathcal{A}(1^n)A(1n),獲得明文m0,m1∈{0,1}l(n)m_0,m_1\in \{0,1\}^{l(n)}m0?,m1?∈{0,1}l(n)
- 加密者任選一個b∈{0,1}b\in \{0,1\}b∈{0,1},輸出密文c:=w⊕mbc:=w\oplus m_bc:=w⊕mb?給DDD
- DDD將密文ccc傳給A\mathcal{A}A,得到b′b'b′。如果b′=bb'=bb′=b,則輸出1,否則輸出0。
密碼方案Π ̄\overline{\Pi}Π是標準的一次一密加密方案/one-time pad,Pr[PrivKA,Π ̄eav]=12Pr[PrivK_{\mathcal{A},\overline{\Pi}}^{eav}]=\frac{1}{2}Pr[PrivKA,Πeav?]=21?。
- 如果w∈{0,1}l(n)w\in \{0,1\}^{l(n)}w∈{0,1}l(n)是真隨機的,則Prw←{0,1}l(n)[D(w)=1]=Pr[PrivKA,Π ̄eav]=12Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(w)=1]=Pr[PrivK_{\mathcal{A},\overline{\Pi}}^{eav}]=\frac{1}{2}Prw←{0,1}l(n)?[D(w)=1]=Pr[PrivKA,Πeav?]=21?
- 如果www是通過隨機種子k∈{0,1}l(n)k\in \{0,1\}^{l(n)}k∈{0,1}l(n)和PRG GGG生成的w:=G(k)w:=G(k)w:=G(k),則Prw←{0,1}l(n)[D(G(k))=1]=Pr[PrivKA,Πeav]Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(G(k))=1]=Pr[PrivK_{\mathcal{A},\Pi}^{eav}]Prw←{0,1}l(n)?[D(G(k))=1]=Pr[PrivKA,Πeav?]
PRG定義推出密碼方案計算安全
- PRG定義:Prw←{0,1}l(n)[D(w)=1]?Prw←{0,1}l(n)[D(G(k))=1]≤negl(n)Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(w)=1]-Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(G(k))=1]\le negl(n)Prw←{0,1}l(n)?[D(w)=1]?Prw←{0,1}l(n)?[D(G(k))=1]≤negl(n)
- ∣12?Pr[PrivKA,Πeav]∣≤negl(n)|\frac{1}{2}-Pr[PrivK_{\mathcal{A},\Pi}^{eav}]|\le negl(n)∣21??Pr[PrivKA,Πeav?]∣≤negl(n)
則我們有Pr[PrivKA,Πeav]≤12+negl(n)Pr[PrivK_{\mathcal{A},\Pi}^{eav}]\le \frac{1}{2}+negl(n)Pr[PrivKA,Πeav?]≤21?+negl(n)
總結
以上是生活随笔為你收集整理的现代密码学3.3--伪随机生成器/PRG的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代密码学2.4--香农定理/Shann
- 下一篇: 现代密码学3.4--CPA安全,多次加密