Sequences of Games: A Tool for Taming Complexity in Security Proofs

Sequences of Games: A Tool for Taming Complexity in Security Proofs

密码学中的安全证明有时可以被组织为一系列的游戏。在某种特定情况下,这可以是一个有用的工具,可以简化安全证明的复杂性,否则安全证明可能变得非常混乱,复杂和微妙以至于无法去验证。

The Basic Idea

加密原语的安全性通常被定义为攻击者和挑战者之间进行的攻击游戏。敌手和挑战者之间的通信也都是概率过程所以我们将游戏建模为一个概率空间。通常,安全定义与某些特定的事件S相关联。安全性意味着对于每一个有效的敌手,事件S发生的概率非常接近于某一个特定的目标概率:通常,要么是0,或 1/2。
为了证明使用游戏序列方法的安全性。一种是构建一序列的游戏:Game 0, Game 1, …, Game n,其中Game 0是针对给定敌手和密码原语的原始攻击游戏。令 S 0 S_0 S0是事件S,当i=1,…,n时,该结构定义了Game i中的事件 S i S_i Si。证明表明了对于 i = 0 , . . . , n − 1 i=0,...,n-1 i=0,...,n1 P r [ S i ] Pr[S_i] Pr[Si]可忽略地接近 P r [ S i + 1 ] Pr[S_{i+1}] Pr[Si+1],且 P r [ S n ] Pr[S_n] Pr[Sn]等于或可忽略地接近目标概率(比如EU-CMA中的0,IND-CPA/CCA中的1/2)。那么,结合 n n n是一个常数,可得 P r [ S ] Pr[S] Pr[S]可忽略地接近目标概率,安全性得证。这就是Sequences-of-Game证明的一般框架。然而,在构造这样的证明时,我们希望连续游戏之间的变化非常小,这样分析变化就尽可能简单。接下来,我们介绍连续游戏之间的过渡的三种类型:

这在后续的Elgamal证明中得到了充分的体现,Game 0就是在IND-CPA下的Elgamal的加密游戏,然后Game 1就是在IND-CPA下的OneTime-Pad游戏,令 S S S来表示 S 0 S_0 S0事件,该事件是Game 0 b = b ^ b=\hat{b} b=b^的事件,令 S 1 S_1 S1表示Game 1 b = b ^ b=\hat{b} b=b^的事件, P r [ S 1 ] Pr[S_1] Pr[S1]就表示目标概率 1 / 2 1/2 1/2(OneTime-Pad)。那么我们要做的是两件事:1. P r [ S 1 ] , P r [ S 2 ] , . . . , P r [ S n ] Pr[S_1],Pr[S_2],...,Pr[S_n] Pr[S1],Pr[S2],...,Pr[Sn]之间差异非常小。2. P r [ S ] Pr[S] Pr[S]接近于目标概率 P r [ S n ] Pr[S_n] Pr[Sn]。如果证明了 P r [ S ] Pr[S] Pr[S]接近于 P r [ S n ] Pr[S_n] Pr[Sn]就说明敌手无法攻破Elgamal加密。那么如何来做 P r [ S 1 ] , P r [ S 2 ] , . . . , P r [ S n ] Pr[S_1],Pr[S_2],...,Pr[S_n] Pr[S1],Pr[S2],...,Pr[Sn]这一系列游戏的过渡呢,让前后两个Game的差异非常小。总体思想其实就是:Game 0就是我们的方案,Game n是我们目标实现的理想方案(OneTime-Pad),如果能说明这两个无法区分,那么我们的方案就近似于理想方案,安全性得证。

不可区分的过渡。在这样的一个过渡中,认为进行一个小的更改,如果被敌手检测到,将意味着有一种有效的方法来区分这两个不可区分的分布(无论是计算意义上的,还是统计意义上的)。例如,假设 P 1 P_1 P1 P 2 P_2 P2是计算上不可区分的分布。为了证明 ∣ P r [ S i ] − P r [ S i + 1 ] ∣ |Pr[S_i]-Pr[S_{i+1}]| Pr[Si]Pr[Si+1]是可忽略的,一种方法是存在一个区分算法 D D D,它在Game iGame i+1之间插值,因此,当给定从分布 P 1 P_1 P1中提取的元素作为输入时, D D D以概率 P r [ S i ] Pr[S_i] Pr[Si]输出 1 1 1,当给定从分布 P 2 P_2 P2中提取的元素作为输入时, D D D以概率 P r [ S i + 1 ] Pr[S_{i+1}] Pr[Si+1]输出 1 1 1。不可区分的假设意味着 ∣ P r [ S i ] − P r [ S i + 1 ] ∣ |Pr[S_i]-Pr[S_{i+1}]| Pr[Si]Pr[Si+1]是可忽略的。通常, D D D的构造是明显的,前提是在过渡中做的更改是非常小的。通常情况下,会将这两个游戏设计为带有辅助输入的Hybrid Game----如果辅助输入来自 P 1 P_1 P1,你便会得到Game i,如果辅助输入来自于 P 2 P_2 P2,你便会得到Game i+1。这样,区分者只需要运行带有输入的一个混合游戏,并在适当的事件发生时输出 1 1 1

基于失败事件的过渡。在这样的一个过渡中,认为Game iGame i+1的过程是相同的,除非有某种失败事件 F F F发生。为了使得这种类型的过渡更加清晰,最好将两个游戏定义在相同的潜在概率空间中—这两个游戏之间的唯一区别是计算某些随机变量的规则。即,除非F出现,否则两个游戏的过程相同:
S i ∧ ¬ F ⇔ S i + 1 ∧ ¬ F S_i\wedge \neg F\Leftrightarrow S_{i+1}\wedge \neg F Si¬FSi+1¬F
也就是说,事件 S i ∧ ¬ F S_i\wedge \neg F Si¬F S i + 1 ∧ ¬ F S_{i+1}\wedge \neg F Si+1¬F 是相同的。这样我们推论出一个定理
Lemma 1 (Difference Lemma). A , B , F A,B,F A,B,F是定义在某些概率分布的事件,并假设 A ∧ ¬ F ⇔ B ∧ ¬ F A\wedge \neg F \Leftrightarrow B\wedge \neg F A¬FB¬F。那么 ∣ P r [ A ] − P r [ B ] ∣ ≤ P r [ F ] |Pr[A]-Pr[B]|\le Pr[F] Pr[A]Pr[B]Pr[F]
Proof. 这是一个简单的计算:
P r [ A ] − P r [ B ] = P r [ A ∧ F ] + P r [ A ∧ ¬ F ] − P r [ B ∧ F ] − P r [ B ∧ ¬ F ] = ∣ P r [ A ∧ F ] − P r [ B ∧ F ] ∣ ≤ P r [ F ] . Pr[A]-Pr[B]=Pr[A\wedge F]+Pr[A\wedge \neg F]-Pr[B\wedge F]-Pr[B\wedge \neg F]\\ =|Pr[A\wedge F]-Pr[B\wedge F]|\\ \le Pr[F]. Pr[A]Pr[B]=Pr[AF]+Pr[A¬F]Pr[BF]Pr[B¬F]=Pr[AF]Pr[BF]Pr[F].

桥接步骤。这一种过渡引入了桥接步骤,这通常是是一种重申如何以完全等效的方式计算某些量的方法。这种改变纯粹是概念性的,且 P r [ S i ] = P r [ S i + 1 ] Pr[S_i]=Pr[S_{i+1}] Pr[Si]=Pr[Si+1]。虽然从原则上来讲,这样的过渡性步骤似乎是不必要的,但如果去除的话,证明将很难形式化。

Elgamal Encryption Security Analysis

在DDH假设下,我们利用一系列游戏证明了Elgamal的语义安全性。

Game 0. 给定一个高效敌手 A A A。我们将Game 0定义为语义安全中针对 A A A的攻击游戏。为了使事情更加精确和具体,我们可以用以下算法来描述攻击游戏:
x ← Z q , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α ) b ← { 0 , 1 } , y ← Z q , β ← γ y , δ ← α y , ζ ← δ ⋅ m b b ^ ← A ( r , α , α , β , ζ ) x\leftarrow Z_q,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,\delta\leftarrow \alpha^y,\zeta\leftarrow \delta\cdot m_b\\ \hat{b}\leftarrow A(r,\alpha,\alpha,\beta,\zeta) xZq,αγxrR,(m0,m1)A(r,α)b{0,1},yZq,βγy,δαy,ζδmbb^A(r,α,α,β,ζ)
在该算法中,我们已经建模了一个敌手 A A A A A A是一个确定性算法,它将从某个集合 R R R中选取的随机硬币 r r r作为作为输入。如果我们将 S 0 S_0 S0定义为 b = b ^ b=\hat{b} b=b^的事件,那么敌手的优势为 ∣ P r [ S 0 ] − 1 / 2 ∣ |Pr[S_0]-1/2| Pr[S0]1/2∣
Game 1. 该过渡是基于不可区分性。我们对Game 0做一下小小的改变。即,不是用 α y \alpha^y αy来计算 δ \delta δ,而是用 γ z \gamma^z γz来计算 δ \delta δ,其中 z ∈ Z q z\in Z_q zZq。该游戏为:
x ← Z q , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α ) b ← { 0 , 1 } , y ← Z q , β ← γ y , z ← Z q , δ ← γ z , ζ ← δ ⋅ m b b ^ ← A ( r , α , α , β , ζ ) x\leftarrow Z_q,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,z\leftarrow Z_q,\delta\leftarrow \gamma^z,\zeta\leftarrow \delta\cdot m_b\\ \hat{b}\leftarrow A(r,\alpha,\alpha,\beta,\zeta) xZq,αγxrR,(m0,m1)A(r,α)b{0,1},yZq,βγy,zZq,δγz,ζδmbb^A(r,α,α,β,ζ)
S 1 S_1 S1Game 1 b = b ^ b=\hat{b} b=b^的事件。

Claim 1. P r [ S 1 ] = 1 / 2 Pr[S_1]=1/2 Pr[S1]=1/2。这是因为在Game 2中, δ \delta δ实际上是一个one-time pad,那么敌手的输出 b ^ \hat{b} b^与隐藏位 b b b无关。

Claim 2. ∣ P r [ S 0 ] − P r [ S 1 ] = ϵ d d h |Pr[S_0]-Pr[S_1]=\epsilon_{ddh} Pr[S0]Pr[S1]=ϵddh,其中 ϵ d d h \epsilon_{ddh} ϵddh是攻破DDH假设的优势(在DDH假设下可以忽略不计)。这一点的证明是显而易见的,在Game 0中,元组 ( α , β , δ ) (\alpha,\beta,\delta) (α,β,δ)的形式为 ( γ x , γ y , γ x y ) (\gamma^x,\gamma^y,\gamma^{xy}) (γx,γy,γxy),而在Game 1中,它的形式是 ( γ x , γ y , γ z ) (\gamma^x,\gamma^y,\gamma^z) (γx,γy,γz),那么在DDH假设下,敌手觉察不出二者的差异。更准确地说,我们的区分算法 D D D是这样工作的,这里的 D D D其实就是我们所讲的 Simulator:
D ( α , β , δ ) r ← R , ( m 0 , m 1 ) ← A ( r , α ) b ← { 0 , 1 } , ζ ← δ ⋅ m b b ^ ← A ( r , α , β , ζ ) i f    b = b ^ t h e n    o u t p u t    1 e l s e    o u t p u t    0 D(\alpha,\beta,\delta)\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha)\\ b\leftarrow \{0,1\},\zeta\leftarrow \delta\cdot m_b\\ \hat{b}\leftarrow A(r,\alpha,\beta,\zeta)\\ \mathrm{if\;} b=\hat{b}\\ \mathrm{then \;output\; }1\\ \mathrm{else \;output\; } 0 D(α,β,δ)rR,(m0,m1)A(r,α)b{0,1},ζδmbb^A(r,α,β,ζ)ifb=b^thenoutput1elseoutput0

算法 D D D能够有效地在Game 0Game 1之间插入。如果 D D D的输入是 ( γ x , γ y , γ x y ) (\gamma^x,\gamma^y,\gamma^{xy}) (γx,γy,γxy)的形式,那么计算就像是在Game 0中执行的一样。
P r [ x , y ← Z q : D ( γ x , γ y , γ x y ) = 1 ] = P r [ S 0 ] . Pr[x,y\leftarrow Z_q:D(\gamma^x,\gamma^y,\gamma^{xy})=1]=Pr[S_0]. Pr[x,yZq:D(γx,γy,γxy)=1]=Pr[S0].
如果算法 D D D的输入是 ( γ x , γ y , γ z ) (\gamma^x,\gamma^y,\gamma^{z}) (γx,γy,γz),那么计算过程就如Game 1
P r [ x , y , z ← Z q : D ( γ x , γ y , γ z ) = 1 ] = P r [ S 1 ] . Pr[x,y,z\leftarrow Z_q:D(\gamma^x,\gamma^y,\gamma^z)=1]=Pr[S_1]. Pr[x,y,zZq:D(γx,γy,γz)=1]=Pr[S1].
由此可知, D D D的DDH-优势为 ∣ P r [ S 0 ] − P r [ S 1 ] ∣ |Pr[S_0]-Pr[S_1]| Pr[S0]Pr[S1](这里是正确密文的概率减去错误密文的概率,就是敌手的优势),我们完成了Claim 2的证明。
结合Claim 1和Claim 2,我们能够得到:
∣ P r [ S 0 ] − 1 / 2 ∣ = ϵ d d h |Pr[S_0]-1/2|=\epsilon_{ddh} Pr[S0]1/2∣=ϵddh
并且是可忽略的,我们完成了Elgamal加密的安全证明。

Hashed Elgamal

出于种种原因,处理位运算要比群元素快得多。基于此,我们可以使用Elgamal加密的Hash版本。该方案使用了一系列健值hash函数 H : = { H k } k ∈ K H:=\{H_k\}_{k\in K} H:={Hk}kK,其中每一个 H k : G → { 0 , 1 } ℓ H_k:G\rightarrow \{0,1\}^\ell Hk:G{0,1}
KeyGen.
x ← Z q , k ← K , α ← γ x , p k ← ( α , k ) , s k ← ( x , k ) . x\leftarrow Z_q,k\leftarrow K,\alpha\leftarrow \gamma^x,pk\leftarrow (\alpha,k),sk\leftarrow (x,k). xZq,kK,αγx,pk(α,k),sk(x,k).
Encryption.
y ← Z q , β ← γ y , δ ← α y , h ← H k ( δ ) , v ← h ⊕ m , ψ ← ( β , v ) . y\leftarrow Z_q,\beta\leftarrow \gamma^y,\delta\leftarrow \alpha^y,h\leftarrow H_k(\delta),v\leftarrow h\oplus m,\psi\leftarrow (\beta,v). yZq,βγy,δαy,hHk(δ),vhm,ψ(β,v).
Decryption.
m ← H k ( β x ) ⊕ v . m\leftarrow H_k(\beta^x)\oplus v. mHk(βx)v.
Hashed Elgamal加密的安全性的语义安全性,可以在DDH假设以及哈希函数 H H H族的熵平滑的假设下证明。粗略地说,这意味着很难区分 ( k , H k ( δ ) ) (k,H_k(\delta)) (k,Hk(δ)) ( k , h ) (k,h) (k,h),其中 k ← K , δ ← G , h ← { 0 , 1 } ℓ k\leftarrow K,\delta\leftarrow G,h\leftarrow \{0,1\}^\ell kK,δG,h{0,1}。更正式地说,设D使一个算法,该算法以K的一个随机元素和 { 0 , 1 } ℓ \{0,1\}^\ell {0,1}的一个元素作为输入,并输出一个bit。我们定义D的ES-优势为:
∣ P r [ k ← K , δ ← G : D ( k , H k ( δ ) ) = 1 ] − P r [ k ← K , h ← { 0 , 1 } ℓ : D ( k , h ) = 1 ] ∣ . |Pr[k\leftarrow K,\delta\leftarrow G:D(k,H_k(\delta))=1]-Pr[k\leftarrow K,h\leftarrow \{0,1\}^\ell:D(k,h)=1]|. Pr[kK,δG:D(k,Hk(δ))=1]Pr[kK,h{0,1}:D(k,h)=1]∣.
在DDH假设和H为熵平滑的假设下,我们现在概述了Hashed Elgamal加密的语义安全性。
Game 0.这是原始的攻击游戏,表述如下:
x ← Z q , k ← K , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α , k ) b ← { 0 , 1 } , y ← Z q , β ← γ y , δ ← α y , h ← H k ( δ ) , v ← h ⊕ m b b ^ ← ( r , α , k , β , v ) . x\leftarrow Z_q,k\leftarrow K,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha,k)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,\delta\leftarrow \alpha^y,h\leftarrow H_k(\delta),v\leftarrow h\oplus m_b\\ \hat{b}\leftarrow(r,\alpha,k,\beta,v). xZq,kK,αγxrR,(m0,m1)A(r,α,k)b{0,1},yZq,βγy,δαy,hHk(δ),vhmbb^(r,α,k,β,v).
我们定义 S 0 S_0 S0
Game 0
b = b ^ b=\hat{b} b=b^的事件。
Game 1. 这是基于不可区分性的过渡。我们转换Game 0到Game 1,计算 δ \delta δ γ z , z ∈ Z q \gamma^z,z\in Z_q γz,zZq。Game 1表述如下:
x ← Z q , k ← K , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α , k ) b ← { 0 , 1 } , y ← Z q , β ← γ y , z ← Z q , δ ← γ z , h ← H k ( δ ) , v ← h ⊕ m b b ^ ← ( r , α , k , β , v ) . x\leftarrow Z_q,k\leftarrow K,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha,k)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,z\leftarrow Z_q,\delta\leftarrow \gamma^z,h\leftarrow H_k(\delta),v\leftarrow h\oplus m_b\\ \hat{b}\leftarrow(r,\alpha,k,\beta,v). xZq,kK,αγxrR,(m0,m1)A(r,α,k)b{0,1},yZq,βγy,zZq,δγz,hHk(δ),vhmbb^(r,α,k,β,v).
S 1 S_1 S1为在Game 1 b = b ^ b=\hat{b} b=b^的事件,我们有:
∣ P r [ S 0 ] − P r [ S 1 ] ∣ = ϵ d d h , |Pr[S_0]-Pr[S_1]|=\epsilon_{ddh}, Pr[S0]Pr[S1]=ϵddh,
证明过程与上述的Elgamal加密的过程相同。
Game 2. 这也是基于不可区分性的过渡。我们将Game 1转换为Game 2,通过简单的随机选择来计算 h h h,而不是计算哈希。此外,Game 2表述如下:
x ← Z q , k ← K , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α , k ) b ← { 0 , 1 } , y ← Z q , β ← γ y , z ← Z q , δ ← γ z , h ← { 0 , 1 } ℓ , v ← h ⊕ m b b ^ ← A ( r , α , k , β , v ) . x\leftarrow Z_q,k\leftarrow K,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha,k)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,z\leftarrow Z_q,\delta\leftarrow \gamma^z,h\leftarrow \{0,1\}^\ell,v\leftarrow h\oplus m_b\\ \hat{b}\leftarrow A(r,\alpha,k,\beta,v). xZq,kK,αγxrR,(m0,m1)A(r,α,k)b{0,1},yZq,βγy,zZq,δγz,h{0,1},vhmbb^A(r,α,k,β,v).
由此得出, δ \delta δGame 2中毫无作用。
S 2 S_2 S2为在Game 2 b = b ^ b=\hat{b} b=b^事件发生的概率,我们有。
∣ P r [ S 1 ] − P r [ S 2 ] ∣ = ϵ e s . |Pr[S_1]-Pr[S_2]|=\epsilon_{es}. Pr[S1]Pr[S2]=ϵes.
P r [ S 1 ] Pr[S_1] Pr[S1] P r [ S 2 ] Pr[S_2] Pr[S2]之间的任何差异都可以被利用为相应的ES-优势。事实上,很容易可以看出如下算法 D ′ D' D可以在Game 1Game 2之间插值,因此ES-优势等于 ∣ P r [ S 1 ] − P r [ S 2 ] ∣ |Pr[S_1]-Pr[S_2]| Pr[S1]Pr[S2]
D ′ ( k , h ) x ← Z q , α ← γ x r ← R , ( m 0 , m 1 ) ← A ( r , α , k ) b ← { 0 , 1 } , y ← Z q , β ← γ y , v ← h ⊕ m b b ^ ← A ( r , α , k , β , v ) i f    b = b ^ t h e n    o u t p u t 1 e l s e    o u t p u t 0. D'(k,h)\\ x\leftarrow Z_q,\alpha\leftarrow \gamma^x\\ r\leftarrow R,(m_0,m_1)\leftarrow A(r,\alpha,k)\\ b\leftarrow \{0,1\},y\leftarrow Z_q,\beta\leftarrow \gamma^y,v\leftarrow h\oplus m_b\\ \hat{b}\leftarrow A(r,\alpha,k,\beta,v)\\ if\; b=\hat{b}\\ \mathrm{then} \; \mathrm{output} 1\\ \mathrm{else}\; \mathrm{output} 0. D(k,h)xZq,αγxrR,(m0,m1)A(r,α,k)b{0,1},yZq,βγy,vhmbb^A(r,α,k,β,v)ifb=b^thenoutput1elseoutput0.
最终 h h hGame 2中扮演着One-time pad的角色,很明显:
P r [ S 2 ] = 1 / 2 Pr[S_2]=1/2 Pr[S2]=1/2
我们得到:
∣ P r [ S 0 ] − 1 / 2 ∣ ≤ ϵ d d h + ϵ e s , |Pr[S_0]-1/2|\le\epsilon_{ddh}+\epsilon_{es}, Pr[S0]1/2∣ϵddh+ϵes,
这是可忽略的因为 ϵ d d h \epsilon_{ddh} ϵddh ϵ e s \epsilon_{es} ϵes都是可忽略的。

Pseudo-Random Funcitions

ℓ 1 \ell_1 1 ℓ 2 \ell_2 2是两个正整数(安全参数)。令 F : = { F s } s ∈ S F:=\{F_s\}_{s\in S} F:={Fs}sS是键函数族,其中每个函数 F s F_s Fs { 0 , 1 } ℓ 1 → { 0 , 1 } ℓ 2 \{0,1\}^{\ell_1}\rightarrow \{0,1\}^{\ell_2} {0,1}1{0,1}2。令 Γ ℓ 1 , ℓ 2 \Gamma_{\ell_1,\ell_2} Γ1,2表示所有 { 0 , 1 } ℓ 1 → { 0 , 1 } ℓ 2 \{0,1\}^{\ell_1}\rightarrow \{0,1\}^{\ell_2} {0,1}1{0,1}2的函数集合。非正式的说,如果难以通过黑箱访问来区分从 F F F 中抽取的随机函数和从 Γ \Gamma Γ 中抽取的随机函数,那么我们称 F F F为伪随机的。
更为正式的说,给定一个敌手 A A A A A A可以通过oracle访问 Γ ℓ 1 , ℓ 2 \Gamma_{\ell_1,\ell_2} Γ1,2中的函数并假设 A A A总是输出一个bit。定义的 A A A的PRF-优势为:
∣ P r [ s ← S : A F s ( ) = 1 ] − P r [ f ← Γ ℓ 1 , ℓ 2 : A f ( ) ] = 1 ∣ |Pr[s\leftarrow S:A^{F_s}()=1]-Pr[f\leftarrow \Gamma_{\ell_1,\ell_2}:A^f()]=1| Pr[sS:AFs()=1]Pr[fΓ1,2:Af()]=1∣
我们有如何任何有效敌手的PRF-优势是可以忽略不计的,那么 F F F是伪随机的。

Extending the Input Length with a Universal Hash Function

我们现在提出一种结构,它允许扩展伪随机函数族的输入长度。令 ℓ \ell 是一个正整数且 ℓ ≤ ℓ 1 \ell\le\ell_1 1。令 H : = { H k } k ∈ K H:=\{H_k\}_{k\in K} H:={Hk}kK为一族键hash函数( k k k是hash函数的密钥, K K K是密钥空间,带有密钥的哈希函数,即使输入值相同,密钥 k k k不同,那么输出值也不一样),其中每个 H k H_k Hk映射 { 0 , 1 } ℓ → { 0 , 1 } ℓ 1 \{0,1\}^{\ell}\rightarrow \{0,1\}^{\ell_1} {0,1}{0,1}1。我们假设 H H H是一个 ϵ u h \epsilon_{uh} ϵuh-通用hash函数族,其中 ϵ u h \epsilon_{uh} ϵuh是可忽略的。这意味着对于所有 w , w ′ ∈ { 0 , 1 } ℓ w,w'\in\{0,1\}^\ell w,w{0,1} w ≠ w ′ w\ne w' w=w来说,我们有:
P r [ k ← K : H k ( w ) = H k ( w ′ ) ] ≤ ϵ u h Pr[k\leftarrow K:H_k(w)=H_k(w')]\le\epsilon_{uh} Pr[kK:Hk(w)=Hk(w)]ϵuh
我们定义函数族为:
F ′ : = { F k , s ′ } ( k , s ) ∈ K × S , F':=\{F'_{k,s}\}_{(k,s)\in K\times S}, F:={Fk,s}(k,s)K×S,
其中,每个 F k , s ′ F'_{k,s} Fk,s { 0 , 1 } ℓ → { 0 , 1 } ℓ 2 \{0,1\}^{\ell}\rightarrow \{0,1\}^{\ell_2} {0,1}{0,1}2,原理为:将 w ∈ { 0 , 1 } ℓ w\in\{0,1\}^{\ell} w{0,1} F s ( H k ( w ) ) F_s({H_k(w)}) Fs(Hk(w))

我们将证明如果 F F F是伪随机的,那么 F ′ F' F是伪随机的。

Game 0.该游戏表示一个敌手在给定oracle访问一个从 F ′ F' F中随机选取的一个函数下的计算。我们假设敌手对oracle进行q次查询。该游戏的过程如下:
k ← K , s ← S r ← R f o r    i ← 1 , . . . , q    d o w i ← A ( r , y 1 , . . . , y i − 1 ) ∈ { 0 , 1 } ℓ x i ← H k ( w i ) ∈ { 0 , 1 } ℓ 1 y i ← F s ( x i ) ∈ { 0 , 1 } ℓ 2 . b ← A ( r , y 1 , . . . , y q ) ∈ { 0 , 1 } o u t p u t    b k\leftarrow K,s\leftarrow S\\ r\leftarrow R\\ \mathrm{for\;} i\leftarrow 1,...,q\mathrm{\;do}\\ w_i\leftarrow A(r,y_1,...,y_{i-1})\in \{0,1\}^{\ell}\\ x_i\leftarrow H_k(w_i)\in \{0,1\}^{\ell_1}\\ y_i\leftarrow F_s(x_i)\in \{0,1\}^{\ell_2}.\\ b\leftarrow A(r,y_1,...,y_q)\in \{0,1\}\\ \mathrm{output}\; b kK,sSrRfori1,...,qdowiA(r,y1,...,yi1){0,1}xiHk(wi){0,1}1yiFs(xi){0,1}2.bA(r,y1,...,yq){0,1}outputb
该算法表示敌手被建模为确定性算法 A A A,我们提供随机硬币 r ∈ R r\in R rR作为输入,在 i i i次的迭代循环中,敌手通过随机硬币r和先前的 w 1 , . . . , w i − 1 w_1,...,w_{i-1} w1,...,wi1的查询结果 y 1 , . . . , y i − 1 y_1,...,y_{i-1} y1,...,yi1为输入的函数计算他下一次的查询 w i w_i wi。我们假设 A A A输出的每一个 w 1 , . . . , w q w_1,...,w_q w1,...,wq值都是不同的。
S 0 S_0 S0Game 0中输出 b = 1 b=1 b=1的事件。
我们证明的目标是将这个Game转化为一个Game,这一个Game等价于敌手给定Oracle访问 Γ ℓ , ℓ 2 \Gamma_{\ell,\ell_2} Γ,2的随机元素。使得后一个Game b = 1 b=1 b=1的概率可以忽略不计地接近 P r [ S 0 ] Pr[S_0] Pr[S0]
Game 1. 该过渡是基于不可区分性。我们现在修改Game 0使得我们使用一个真正的随机函数,从 ℓ 1 \ell_1 1bits到 ℓ 2 \ell_2 2bits来替换 F s F_s FsGame 1的执行过程如下:
k ← K , f ← Γ ℓ 1 , ℓ 2 r ← R f o r    i ← 1 , . . . , q    d o w i ← A ( r , y 1 , . . . , y i − 1 ) ∈ { 0 , 1 } ℓ x i ← H k ( w i ) ∈ { 0 , 1 } ℓ 1 y i ← f ( x i ) ∈ { 0 , 1 } ℓ 2 . b ← A ( r , y 1 , . . . , y q ) ∈ { 0 , 1 } o u t p u t    b k\leftarrow K,f\leftarrow \Gamma_{\ell_1,\ell_2}\\ r\leftarrow R\\ \mathrm{for\;} i\leftarrow 1,...,q\mathrm{\;do}\\ w_i\leftarrow A(r,y_1,...,y_{i-1})\in \{0,1\}^{\ell}\\ x_i\leftarrow H_k(w_i)\in \{0,1\}^{\ell_1}\\ y_i\leftarrow f(x_i)\in \{0,1\}^{\ell_2}.\\ b\leftarrow A(r,y_1,...,y_q)\in \{0,1\}\\ \mathrm{output}\; b kK,fΓ1,2rRfori1,...,qdowiA(r,y1,...,yi1){0,1}xiHk(wi){0,1}1yif(xi){0,1}2.bA(r,y1,...,yq){0,1}outputb
我们声称:
∣ P r [ S 0 ] − P r [ S 1 ] ∣ = ϵ p r f , |Pr[S_0]-Pr[S_1]|=\epsilon_{prf}, Pr[S0]Pr[S1]=ϵprf,
其中 ϵ p r f \epsilon_{prf} ϵprf是PRF-优势,与 F F F相关,对于一些高效敌手(假设F是伪随机的,那么可以忽略不计)。实际上,以下敌手本质上在Game 0Game 1之间插入,因此相对于 F F F,具有PRF-优势,恰好等于 ∣ P r [ S 0 ] − P r [ S 1 ] ∣ |Pr[S_0]-Pr[S_1]| Pr[S0]Pr[S1]
O r a c l e    m a c h i n e    D O k ← K , r ← R f o r    i ← 1 , . . . , q    d o w i ← A ( r , y 1 , . . , y i − 1 ) ∈ { 0 , 1 } ℓ x i ← H k ( w i ) ∈ { 0 , 1 } ℓ 1 y i ← O ( x i ) ∈ { 0 , 1 } ℓ 2 b ← A ( r , y 1 , . . . , y q ) ∈ { 0 , 1 } o u t p u t    b \mathrm{Oracle\; machine}\; D^\mathcal{O}\\ k\leftarrow K,r\leftarrow R\\ \mathrm{for}\; i\leftarrow 1,...,q \;\mathrm{do}\\ w_i\leftarrow A(r,y_1,..,y_{i-1})\in \{0,1\}^{\ell}\\ x_i\leftarrow H_k(w_i)\in \{0,1\}^{\ell_1}\\ y_i\leftarrow \mathcal{O}(x_i)\in \{0,1\}^{\ell_2}\\ b\leftarrow A(r,y_1,...,y_q)\in \{0,1\}\\ \mathrm{output}\; b OraclemachineDOkK,rRfori1,...,qdowiA(r,y1,..,yi1){0,1}xiHk(wi){0,1}1yiO(xi){0,1}2bA(r,y1,...,yq){0,1}outputb

Game 2.该过渡基于桥接步骤。现在我们要在Game 1中做一个纯粹概念上的改变。直观上,我们可以将包含随机函数f的黑盒想象成里面有一个小侏儒的盒子:这个侏儒保留了一个以前的输入/输出对的表,如果查询与以前的一个输入匹配,则返回相应的输出,否则,将随机选择一个输出值,并将新的输入/输出对添加到表中。基于此,我们得到Game 1的流程:
k ← K , Y 1 , . . . , Y q ← { 0 , 1 } ℓ 2 r ← R f o r    i ← 1 , . . . , q    d o w i ← A ( r , y 1 , . . , y i − 1 ) ∈ { 0 , 1 } ℓ x i ← H k ( w i ) ∈ { 0 , 1 } ℓ 1 i f x i = x j    f o r    s o m e    j ≤ i    t h e n    y i ← y j    e l s e    y i ← Y i b ← A ( r , y 1 , . . . , y q ) ∈ { 0 , 1 } o u t p u t    b k\leftarrow K,Y_1,...,Y_q\leftarrow \{0,1\}^{\ell_2}\\ r\leftarrow R\\ \mathrm{for}\; i\leftarrow 1,...,q \;\mathrm{do}\\ w_i\leftarrow A(r,y_1,..,y_{i-1})\in \{0,1\}^{\ell}\\ x_i\leftarrow H_k(w_i)\in \{0,1\}^{\ell_1}\\ if x_i=x_j\; \mathrm{for\; some}\; j\le i\; \mathrm{then}\; y_i\leftarrow y_j\;\mathrm{else}\;y_i\leftarrow Y_i\\ b\leftarrow A(r,y_1,...,y_q)\in \{0,1\}\\ \mathrm{output}\; b kK,Y1,...,Yq{0,1}2rRfori1,...,qdowiA(r,y1,..,yi1){0,1}xiHk(wi){0,1}1ifxi=xjforsomejithenyiyjelseyiYibA(r,y1,...,yq){0,1}outputb

S 2 S_2 S2Game 2 b = 1 b=1 b=1的事件。因为从Game 1Game 2这样的变化纯粹是概念性的,我们显然做到了:
P r [ S 2 ] = P r [ S 1 ] . Pr[S_2]=Pr[S_1]. Pr[S2]=Pr[S1].

Game 3. 该过渡是基于失败事件的过渡。现在我们修改Game 2使得我们的侏儒变得非常健忘,并且在计算y_i值的时候不做任何一致性检查。
k ← K , Y 1 , . . . , Y q ← { 0 , 1 } ℓ 2 r ← R f o r    i ← 1 , . . . , q    d o w i ← A ( r , y 1 , . . , y i − 1 ) ∈ { 0 , 1 } ℓ x i ← H k ( w i ) ∈ { 0 , 1 } ℓ 1 y i ← Y i b ← A ( r , y 1 , . . . , y q ) ∈ { 0 , 1 } o u t p u t    b k\leftarrow K,Y_1,...,Y_q\leftarrow \{0,1\}^{\ell_2}\\ r\leftarrow R\\ \mathrm{for}\; i\leftarrow 1,...,q \;\mathrm{do}\\ w_i\leftarrow A(r,y_1,..,y_{i-1})\in \{0,1\}^{\ell}\\ x_i\leftarrow H_k(w_i)\in \{0,1\}^{\ell_1}\\ y_i\leftarrow Y_i\\ b\leftarrow A(r,y_1,...,y_q)\in \{0,1\}\\ \mathrm{output}\; b kK,Y1,...,Yq{0,1}2rRfori1,...,qdowiA(r,y1,..,yi1){0,1}xiHk(wi){0,1}1yiYibA(r,y1,...,yq){0,1}outputb

定义 S 3 S_3 S3Game 3 b = 1 b=1 b=1的事件。定义事件 F F F为在Game 3 x i = x j x_i=x_j xi=xj,且 i ≠ j i\ne j i=j的情况。

观察 k k k x 1 , . . . , x q x_1,...,x_q x1,...,xqGame 3中除了定义事件 F F F外,没有发挥任何作用。实际上,随机变量 k , r , y 1 , . . . , y q k,r,y_1,...,y_q k,r,y1,...,yq是相互独立的。我们将Game 2Game 3视为在相同的概率空间上操作,因此 k , r , Y 1 , . . . , Y q k,r,Y_1,...,Y_q k,r,Y1,...,Yq在两个游戏中是相同的。不难看出,Game 2Game 3是相同的,除非事件 F F F发生。特别是,如果 F F F没有发生,那么两个游戏的输出是相同的。这是相当明显的,但由于这是我们使用该技术的第一个示例,因此我们将进行更正式地证明。选择任意固定值 k , r , Y 1 , . . , Y q k,r,Y_1,..,Y_q k,r,Y1,..,Yq使得 F F F不发生。我们通过对 i = 0 , . . . , q i=0,...,q i=0,...,q的归纳法证明,在两个游戏中 w 1 , x 1 , y 1 , . . . , w i , x i , y i w_1,x_1,y_1,...,w_i,x_i,y_i w1,x1,y1,...,wi,xi,yi是相同的。 i = 0 i=0 i=0时,是非常正确的。那么我们令 i > 0 i>0 i>0,假设 i − 1 i-1 i1成立,并证明 i i i成立。正如在 i − 1 i-1 i1上成立一样,值 w i w_i wi的计算方法与 A ( r , y 1 , . . . , y i − 1 ) A(r,y_1,...,y_{i-1}) A(r,y1,...,yi1)在两个游戏中相同,因此 x i x_i xi的计算方法与 H k ( w i ) H_k(w_i) Hk(wi)在两个游戏中相同。当计算 y i y_i yi时,我们看到由于 F F F不成立,值 x 1 , . . . , x i x_1,...,x_i x1,...,xi是不相同的(并且在两个游戏中以相同的方式计算)。因此,在这两个游戏中 y i y_i yi都被赋值为 Y i Y_i Yi。归纳证明就完成了。由此可见,当 F F F没有发生,两个游戏都以同样的方式计算 y 1 , . . . , y q y_1,...,y_q y1,...,yq,因此都以同样的方式计算 b = A ( r , y 1 , . . . , y q ) b=A(r,y_1,...,y_q) b=A(r,y1,...,yq)

在前一段中,我们认为如果 F F F不发生,那么两个游戏输出相同的值。等价的说法是 S 2 ∧ ¬ F ⇔ S 3 ∧ ¬ F S_2\wedge \neg F\Leftrightarrow S_3\wedge \neg F S2¬FS3¬F。因此,通过Difference Lemma,我们有:
∣ P r [ S 2 ] − P r [ S 3 ] ∣ ≤ P r [ F ] . |Pr[S_2]-Pr[S_3]|\le Pr[F]. Pr[S2]Pr[S3]Pr[F].
那么我们有:
P r [ F ] ≤ ϵ u h ⋅ q 2 2 . Pr[F]\le \epsilon_{uh}\cdot \frac{q^2}{2}. Pr[F]ϵuh2q2.
分析都是关于Game 3。为了证明该等式,只要证明它以固定值 r , y 1 , . . . , y q r,y_1,...,y_q r,y1,...,yq为条件就足够了。在这个条件概率分布中,值 w 1 , . . . , w q w_1,...,w_q w1,...,wq是固定的(因为他们由 r , y 1 , . . . , y q r,y_1,...,y_q r,y1,...,yq决定),其中 k k k是均匀分布在 K K K上(通过独立性)。通过任意固定的索引对 i , j i,j i,j,且 i ≠ j i\ne j i=j,根据 H H H的通用hash属性,以及我们假设敌手从不重复任何查询,我们有 w i ≠ w j w_i\ne w_j wi=wj,因此:
P r [ H k ( w i ) = H k ( w j ) ] ≤ ϵ u h . Pr[H_k(w_i)=H_k(w_j)]\le \epsilon_{uh}. Pr[Hk(wi)=Hk(wj)]ϵuh.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值