密码学归约证明——ElGamal加密方案的CPA安全性

1. 判定性DDH问题与G相关是困难的

\qquad 对任意的多项式时间算法 A A A,存在可忽略函数 n e g l negl negl,使得 ∣ P r [ A ( G , q , g , g x , g y , g z ) = 1 ] − P r [ A ( G , q , g , g x , g y , g x y ) = 1 ] ∣ ≤ n e g l ( n ) |Pr[A(G,q,g,g^x,g^y,g^z )=1]-Pr[A(G,q,g,g^x,g^y,g^{xy} )=1]|\leq negl(n) Pr[A(G,q,g,gx,gy,gz)=1]Pr[A(G,q,g,gx,gy,gxy)=1]negl(n),则称判定性 D D H DDH DDH问题与 G G G相关是困难的。
\qquad 有关 D D H DDH DDH问题以及其他离散对数相关的信息本证明不做叙述。

2. ElGamal加密

\qquad 设多项式时间算法 G G G,输入为 1 n 1^n 1n,输出循环群 G \mathbb{G} G,群的阶为 q q q,生成元为 g g g

  • G e n Gen Gen:获得 ( G , q , g ) ← G ( 1 n ) (\mathbb{G},q,g)←G(1^n ) (G,q,g)G(1n),均匀随机选择 x ← Z q x\leftarrow \mathbb{Z}_q xZq,计算 h = g x h=g^x h=gx。公钥是 ( G , q , g , h ) (\mathbb{G},q,g,h) (G,q,g,h),私钥是 ( G , q , g , x ) (\mathbb{G},q,g,x) (G,q,g,x)
  • E n c Enc Enc:输入公钥 ( G , q , g , h ) (\mathbb{G},q,g,h) (G,q,g,h)和消息 m ∈ G m\in G mG,选择随机的 y ← Z q y\leftarrow \mathbb{Z}_q yZq,输出密文 ⟨ g y , h y ⋅ m ⟩ \left \langle g^y,h^y\cdot m \right \rangle gy,hym
  • D e c Dec Dec:输入私钥 ( G , q , g , x ) (\mathbb{G},q,g,x) (G,q,g,x)和密文 ⟨ c 1 , c 2 ⟩ \left \langle c_1,c_2 \right \rangle c1,c2,输出 m = c 2 / c 1 x m=c_2/c_1^x m=c2/c1x

3. ElGamal加密的CPA安全性

\qquad 如果 D D H DDH DDH问题相对于 G G G是困难的,则 E l G a m a l ElGamal ElGamal加密方案 Π \Pi Π C P A CPA CPA安全的。

\qquad 修改加密方案 Π \Pi Π Π ′ \Pi' Π,用公钥 ( G , q , g , h ) (\mathbb{G},q,g,h) (G,q,g,h)加密消息通过选择随机的 y ← Z q y\leftarrow \mathbb{Z}_q yZq z ← Z q z\leftarrow \mathbb{Z}_q zZq来完成,并输出密文 ⟨ g y , g z ⋅ m ⟩ \left \langle g^y,g^z\cdot m\right \rangle gy,gzm

\qquad 考虑算法 D D D,目标是解决与 G G G相关的 D D H DDH DDH问题:输入 ( G , q , g , g 1 , g 2 , g 3 ) (\mathbb{G},q,g,g_1,g_2,g_3) (G,q,g,g1,g2,g3)

  • p k = ( G , q , g , g 1 ) pk=(\mathbb{G},q,g,g_1) pk=(G,q,g,g1),运行 A ( p k ) A(pk) A(pk)得到消息 m 0 , m 1 m_0,m_1 m0,m1
  • 选择随机比特 b b b,设 c 1 = g 2 c_1=g_2 c1=g2 c 2 = g 3 ⋅ m b c_2=g_3\cdot m_b c2=g3mb
  • 把密文 ⟨ c 1 , c 2 ⟩ \left \langle c_1,c_2 \right \rangle c1,c2 A A A,输出 b ′ b' b。如果 b ′ = b b'=b b=b,输出 1 1 1

\qquad 分析 D D D的行为:

  • D D D的输入由 G ( 1 n ) G(1^n) G(1n)来获得 ( G , q , g ) (\mathbb{G},q,g) (G,q,g),随机选择 x , y , z ← Z q x,y,z\leftarrow \mathbb{Z}_q x,y,zZq,设 g 1 = g x g_1=g^x g1=gx g 2 = g y g_2=g^y g2=gy g 3 = g z g_3=g^z g3=gz。然后 D D D执行 A A A A A A有公钥 p k = ⟨ G , q , g , g x ⟩ pk=\langle \mathbb{G},q,g,g^x\rangle pk=G,q,g,gx和密文 ⟨ c 1 , c 2 ⟩ = ⟨ g y , g z ⋅ m b ⟩ \langle c_1,c_2 \rangle =\langle g^y,g^z\cdot m_b \rangle c1,c2=gy,gzmb。这种情况下, A A A作为 D D D的子程序所见情形与实验 P u b K A , Π ′ e a v ( n ) PubK_{A,\Pi'}^{eav} (n) PubKA,Πeav(n)中相同,即
    P r [ D ( G , q , g , g x , g y , g z ) = 1 ] = P r [ P u b K A , Π ′ e a v ( n ) = 1 ] = 1 2 Pr[D(\mathbb{G},q,g,g^x,g^y,g^z)=1]=Pr[PubK_{A,\Pi'}^{eav} (n)=1]=\frac{1}{2} Pr[D(G,q,g,gx,gy,gz)=1]=Pr[PubKA,Πeav(n)=1]=21
  • D D D的输入由 G ( 1 n ) G(1^n ) G(1n)来获得 ( G , q , g ) (\mathbb{G},q,g) (G,q,g),随机选择 x , y ← Z q x,y\leftarrow \mathbb{Z}_q x,yZq,设 g 1 = g x g_1=g^x g1=gx g 2 = g y g_2=g^y g2=gy g 3 = g x y g_3=g^{xy} g3=gxy。然后 D D D执行 A A A A A A有公钥 p k = ⟨ G , q , g , g x ⟩ pk=\langle \mathbb{G},q,g,g^x \rangle pk=G,q,g,gx和密文 ⟨ c 1 , c 2 ⟩ = ⟨ g y , g x y ⋅ m b ⟩ \langle c_1,c_2 \rangle=\langle g^y,g^{xy}\cdot m_b \rangle c1,c2=gy,gxymb。这种情况下, A A A作为 D D D的子程序所见情形与实验 P u b K A , Π e a v ( n ) PubK_{A,\Pi}^{eav} (n) PubKA,Πeav(n)中相同,即
    P r [ D ( G , q , g , g x , g y , g x y ) = 1 ] = P r [ P u b K A , Π e a v ( n ) = 1 ] Pr[D(\mathbb{G},q,g,g^x,g^y,g^{xy} )=1]=Pr[PubK_{A,\Pi}^{eav} (n)=1] Pr[D(G,q,g,gx,gy,gxy)=1]=Pr[PubKA,Πeav(n)=1]

归约证明
\qquad 由于 D D H DDH DDH问题相对于 G G G是困难的, ∣ P r [ A ( G , q , g , g x , g y , g z ) = 1 ] − P r [ A ( G , q , g , g x , g y , g x y ) = 1 ] ∣ ≤ n e g l ( n ) |Pr[A(\mathbb{G},q,g,g^x,g^y,g^z )=1]-Pr[A(\mathbb{G},q,g,g^x,g^y,g^{xy} )=1]|\leq negl(n) Pr[A(G,q,g,gx,gy,gz)=1]Pr[A(G,q,g,gx,gy,gxy)=1]negl(n),因此

P r [ P u b K A , Π e a v ( n ) = 1 ] ≤ 1 2 + n e g l ( n ) Pr[PubK_{A,\Pi}^{eav} (n)=1]\leq \frac{1}{2}+negl(n) Pr[PubKA,Πeav(n)=1]21+negl(n)

4. 参考文献

乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
证明多项式时间归约的传递性,我们需要证明以下命题: 如果问题 A 可以被多项式时间归约到问题 B,问题 B 可以被多项式时间归约到问题 C,那么问题 A 可以被多项式时间归约到问题 C。 假设问题 A 可以被多项式时间归约到问题 B,那么存在一个多项式时间可计算的函数 f,使得对于任何问题 A 的实例 x,都有 f(x) 是问题 B 的一个实例,并且 A 的解等价于 B 的解。即,如果我们可以在多项式时间内解决 B,那么也可以在多项式时间内解决 A。 同理,如果问题 B 可以被多项式时间归约到问题 C,那么存在一个多项式时间可计算的函数 g,使得对于任何问题 B 的实例 y,都有 g(y) 是问题 C 的一个实例,并且 B 的解等价于 C 的解。即,如果我们可以在多项式时间内解决 C,那么也可以在多项式时间内解决 B。 现在我们要证明的是,问题 A 可以被多项式时间归约到问题 C。为此,我们可以构造一个新的函数 h(x) = g(f(x)),它将 A 的实例 x 映射到 C 的实例 z,即 h(x) = z。 首先,我们需要证明 h(x) 是多项式时间可计算的。因为 f 和 g 都是多项式时间可计算的,所以 h(x) 也是多项式时间可计算的。 其次,我们需要证明 A 的解等价于 C 的解。假设 A 的解为 x*,B 的解为 y*,C 的解为 z*。因为 A 可以被多项式时间归约到 B,所以我们可以在多项式时间内求出 y*,使得 f(x*) = y*。同理,因为 B 可以被多项式时间归约到 C,所以我们可以在多项式时间内求出 z*,使得 g(y*) = z*。综合可得,h(x*) = z*,即 A 的解等价于 C 的解。 因此,我们证明了多项式时间归约具有传递性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值