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 x←Zq,计算 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 m∈G,选择随机的 y ← Z q y\leftarrow \mathbb{Z}_q y←Zq,输出密文 ⟨ g y , h y ⋅ m ⟩ \left \langle g^y,h^y\cdot m \right \rangle ⟨gy,hy⋅m⟩。
- 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 y←Zq和 z ← Z q z\leftarrow \mathbb{Z}_q z←Zq来完成,并输出密文 ⟨ g y , g z ⋅ m ⟩ \left \langle g^y,g^z\cdot m\right \rangle ⟨gy,gz⋅m⟩。
\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=g3⋅mb;
- 把密文 ⟨ 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,z←Zq,设
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,gz⋅mb⟩。这种情况下,
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,y←Zq,设
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,gxy⋅mb⟩。这种情况下,
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),因此
4. 参考文献
乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.