密码学中常见的困难问题一般分为两类
计算困难问题(Computational Hard Problems)
如果给定一个问题实例作为输入,在多项式时间内找到这个问题实例的正确解的概率是l的一个可忽略的函数,用 ε ( λ ) \boldsymbol{\varepsilon}(\lambda) ε(λ)(简称 ε \boldsymbol{\varepsilon} ε)表示,那么用安全参数 λ \lambda λ生成的计算问题是困难的。如果 λ \lambda λ不够大,计算问题肯定很容易。
下面给出一些计算难题,其中 G \mathbb{G} G是来自配对群e: G × G → G T \mathbb{G} \times \mathbb{G} \rightarrow \mathbb{G}_T G×G→GT。
离散对数问题(Discrete Logarithm Problem, DL)
实例:
g
,
g
a
∈
G
g,g^a \in \mathbb{G}
g,ga∈G,
G
\mathbb{G}
G是一般的循环群,
a
∈
Z
p
a \in \mathbb{Z}_p
a∈Zp
计算:
a
a
a
解读: 给定
g
,
g
a
∈
G
g,g^a \in \mathbb{G}
g,ga∈G,在循环群上计算出指数
a
a
a是困难的。(因为它涉及在有限群中通过逆运算(即对数)来找回指数
a
a
a,这在一般情况下是计算上非常困难的。)
计算DH问题(Computational Diffie-Hellman Problem, CDH)
实例:
g
,
g
a
,
g
b
∈
G
g,g^a,g^b \in \mathbb{G}
g,ga,gb∈G,
G
\mathbb{G}
G是一般的循环群,
a
,
b
∈
Z
p
a,b \in \mathbb{Z}_p
a,b∈Zp
计算:
g
a
b
g^{ab}
gab
解读: 给定生成元
g
g
g以及两个群元素
g
a
g^a
ga,
g
b
g^b
gb,在循环群上计算出
g
a
b
g^{ab}
gab是困难的。由于并不知道a,b的具体值,也无法通过幂的逆运算(DL问题)得到a或b,因此计算
g
a
b
g^{ab}
gab是非常困难的。
q-强DH问题(q-Strong Diffie-Hellman Problem, q-SDH)
实例:
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
∈
G
g,g^a,g^{a^2}, \cdots, g^{a^q} \in \mathbb{G}
g,ga,ga2,⋯,gaq∈G
计算:
(
s
,
g
1
a
+
s
)
∈
Z
p
×
G
(s,g^{\frac{1}{a+s}}) \in \mathbb{Z}_p \times \mathbb{G}
(s,ga+s1)∈Zp×G,
s
s
s是
Z
p
\Z_p
Zp中任意取得值。
解读: 给定
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
g,g^a,g^{a^2}, \cdots, g^{a^q}
g,ga,ga2,⋯,gaq的一系列幂次后,问题是要找到一个数值对
(
s
,
g
1
a
+
s
)
(s,g^{\frac{1}{a+s}})
(s,ga+s1),即需要通过已知的幂次计算得到
g
1
a
+
s
g^{\frac{1}{a+s}}
ga+s1。在没有直接知道
a
a
a或
s
s
s的情况下,这种运算因指数运算的组合性变得及其困难,因此,在循环群
G
\mathbb{G}
G中,计算数值对
(
s
,
g
1
a
+
s
)
(s,g^{\frac{1}{a+s}})
(s,ga+s1)是困难的。
q-强 Diffie-Hellman 逆问题 (q-Strong Diffie-Hellman Inversion Problem, q-SDHI)
实例:
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
∈
G
g,g^a,g^{a^2}, \cdots, g^{a^q} \in \mathbb{G}
g,ga,ga2,⋯,gaq∈G
计算:
g
1
a
g^{\frac{1}{a}}
ga1
解读: 给定了生成元
g
g
g以及一系列幂值
g
a
,
g
a
2
,
⋯
,
g
a
q
g^a,g^{a^2}, \cdots, g^{a^q}
ga,ga2,⋯,gaq,求出
g
1
a
g^{\frac{1}{a}}
ga1。但是
a
a
a本身是未知的,如何从
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
g,g^a,g^{a^2}, \cdots, g^{a^q}
g,ga,ga2,⋯,gaq信息中推到出
g
1
a
g^{\frac{1}{a}}
ga1在群
G
\mathbb{G}
G困难的。
双线性DH问题(Bilinear Diffie-Hellman Problem, BDH)
实例:
g
,
g
a
,
g
b
,
g
c
∈
G
g,g^a,g^b,g^c \in \mathbb{G}
g,ga,gb,gc∈G,
a
,
b
,
c
∈
Z
p
a,b,c \in \mathbb{Z}_p
a,b,c∈Zp
计算:
e
(
g
,
g
)
a
b
c
e(g,g)^{abc}
e(g,g)abc
解读: 给定
g
,
g
a
,
g
b
,
g
c
g,g^a,g^b,g^c
g,ga,gb,gc ,计算
e
(
g
,
g
)
a
b
c
e(g,g)^{abc}
e(g,g)abc,其中e是两个循环群
G
\mathbb{G}
G的元素映射到目标群
G
T
\mathbb{G}_T
GT的双线性函数,由于无法计算出a,b,c的值(DL)。因此从给定的条件中无法计算出
e
(
g
,
g
)
a
b
c
e(g,g)^{abc}
e(g,g)abc。
q-双线性Diffie-Hellman逆问题(q-Bilinear Diffie-Hellman Inversion Problem, q-BDHI)
实例:
g
,
g
a
,
g
b
,
g
c
∈
G
g,g^a,g^b,g^c \in \mathbb{G}
g,ga,gb,gc∈G,
a
,
b
,
c
∈
Z
p
a,b,c \in \mathbb{Z}_p
a,b,c∈Zp
计算:
e
(
g
,
g
)
1
a
e(g,g)^{\frac1a}
e(g,g)a1
解读: 给定
g
,
g
a
,
g
b
,
g
c
∈
G
g,g^a,g^b,g^c \in \mathbb{G}
g,ga,gb,gc∈G条件,无法从这些条件中计算出
a
a
a或者
1
a
\frac1a
a1,因此需要计算
e
(
g
,
g
)
1
a
e(g,g)^{\frac1a}
e(g,g)a1是非常困难的。
q-双线性DH问题 (q-Bilinear Diffie-Hellman Problem, q-BDH)
实例:
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
,
g
a
q
+
2
,
g
a
q
+
3
,
⋯
,
g
a
2
q
,
h
∈
G
g,g^a,g^{a^2},\cdots,g^{a^q},g^{a^{q+2}},g^{a^{q+3}},\cdots,g^{a^{2q}},h\in\mathbb{G}
g,ga,ga2,⋯,gaq,gaq+2,gaq+3,⋯,ga2q,h∈G
计算:
e
(
g
,
h
)
a
q
+
1
e(g,h)^{a^{q+1}}
e(g,h)aq+1
解读: 给定
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
,
g
a
q
+
2
,
g
a
q
+
3
,
⋯
,
g
a
2
q
,
h
g,g^a,g^{a^2},\cdots,g^{a^q},g^{a^{q+2}},g^{a^{q+3}},\cdots,g^{a^{2q}},h
g,ga,ga2,⋯,gaq,gaq+2,gaq+3,⋯,ga2q,h计算
e
(
g
,
h
)
a
q
+
1
e(g,h)^{a^{q+1}}
e(g,h)aq+1。由于计算
e
(
g
,
h
)
a
q
+
1
e(g,h)^{a^{q+1}}
e(g,h)aq+1需要依赖于已知的元素,意味着解决这个问题需要推到出
a
a
a或
q
q
q的值,而通过给定的条件,计算
a
a
a或
q
q
q的值在群
G
\mathbb{G}
G是困难的,所以q-BDH是困难的。
决策困难问题(Decisional Hard Problems)
如果给定一个目标为
Z
Z
Z的问题实例作为输入,在多项式时间内返回正确猜测的优势是l的一个可忽略的函数,表示为
ε
(
λ
)
\boldsymbol{\varepsilon}(\lambda)
ε(λ)(简称
ε
\boldsymbol{\varepsilon}
ε),则用安全参数
λ
\lambda
λ生成的决策问题是困难的。
ε
=
Pr
[
Guess
Z
=
True
∣
Z
=
True
]
−
Pr
[
Guess
Z
=
True
∣
Z
=
False
]
\varepsilon=\Pr\left[\text{Guess }Z=\text{True}|Z=\text{True}\right]-\Pr\left[\text{Guess }Z=\text{True}|Z=\text{False}\right]
ε=Pr[Guess Z=True∣Z=True]−Pr[Guess Z=True∣Z=False]
当
- Pr [ Guess Z = True ∣ Z = True ] \Pr\left[\text{Guess }Z=\text{True}|Z=\text{True}\right] Pr[Guess Z=True∣Z=True]表示如果 Z Z Z为真,猜对 Z Z Z的概率。
- Pr [ Guess Z = True ∣ Z = False ] \Pr\left[\text{Guess Z}=\text{True}|Z=\text{False}\right] Pr[Guess Z=True∣Z=False]表示如果 Z Z Z为假,猜错 Z Z Z的概率。
如果 λ \lambda λ不够大,决策问题肯定很容易。
下面给出一些决策难题,其中 G \mathbb{G} G是来自配对群e: G × G → G T \mathbb{G} \times \mathbb{G} \rightarrow \mathbb{G}_T G×G→GT。
决策DH问题(Decisional Diffie-Hellman Problem, DDH)
实例:
g
,
g
a
,
g
b
,
Z
∈
G
g,g^a,g^b,Z\in\mathbb{G}
g,ga,gb,Z∈G ,
G
\mathbb{G}
G是个一般的循环群。
计算:
Z
=
?
g
a
b
Z \overset{\text{?}}{=} g^{ab}
Z=?gab
解读: 给定
g
,
g
a
,
g
b
,
Z
g,g^a,g^b,Z
g,ga,gb,Z ,但我们并不知道
a
a
a和
b
b
b的具体值,因此
g
a
b
g^{ab}
gab的值在计算上是不可得的。因此现在没有一个有效的算法能够判断
Z
=
?
g
a
b
Z \overset{\text{?}}{=} g^{ab}
Z=?gab。
变种决策DH问题(Variant Decisional Diffie-Hellman Problem, Variant DDH)
实例:
g
,
g
a
,
g
b
,
g
a
c
,
Z
∈
G
g,g^{a},g^{b},g^{ac},Z\in\mathbb{G}
g,ga,gb,gac,Z∈G,
G
\mathbb{G}
G是一个一般的循环群。
决策:
Z
=
?
g
b
c
Z \overset{\text{?}}{=} g^{bc}
Z=?gbc
解读: 给定
g
,
g
a
,
g
b
,
g
a
c
,
Z
g,g^{a},g^{b},g^{ac},Z
g,ga,gb,gac,Z,与标准的DDH问题类似,由于我们不能直接计算出
b
b
b或
c
c
c的值,因此
g
b
c
g^{bc}
gbc在计算上是不可得的,因此现在没有一个有效的算法能够判断
Z
=
?
g
b
c
Z \overset{\text{?}}{=} g^{bc}
Z=?gbc。
决策双线性DH问题(Decisional Bilinear Diffie-Hellman Problem, DBDH)
实例:
g
,
g
a
,
g
b
,
g
c
∈
G
,
Z
∈
G
T
g,g^a,g^b,g^c\in\mathbb{G},Z\in\mathbb{G}_T
g,ga,gb,gc∈G,Z∈GT
决策:
Z
=
?
e
(
g
,
g
)
a
b
c
Z \overset{\text{?}}{=} e(g,g)^{abc}
Z=?e(g,g)abc
解读: 给定
g
,
g
a
,
g
b
,
g
c
g,g^a,g^b,g^c
g,ga,gb,gc,计算
e
(
g
,
g
)
a
b
c
e(g,g)^{abc}
e(g,g)abc。从BDH问题中我们可以得出,计算a,b,c的值是不可能的,因此计算
e
(
g
,
g
)
a
b
c
e(g,g)^{abc}
e(g,g)abc是困难的。所以现在没有一个有效的算法能够判断
Z
=
?
e
(
g
,
g
)
a
b
c
Z \overset{\text{?}}{=} e(g,g)^{abc}
Z=?e(g,g)abc。
决策线性问题(Decisional Linear Problem)
实例:
g
,
g
a
,
g
b
,
g
a
c
1
,
g
b
c
2
,
Z
∈
G
g,g^a,g^b,g^{ac_1},g^{bc_2},Z\in\mathbb{G}
g,ga,gb,gac1,gbc2,Z∈G
决策:
Z
=
?
g
c
1
+
c
2
Z \overset{\text{?}}{=} g^{c_1+c_2}
Z=?gc1+c2
解读: 给定
g
,
g
a
,
g
b
,
g
a
c
1
,
g
b
c
2
g,g^a,g^b,g^{ac_1},g^{bc_2}
g,ga,gb,gac1,gbc2,计算
g
c
1
+
c
2
g^{c_1+c_2}
gc1+c2。从DDH问题中我们可以得出计算
a
,
b
,
c
1
,
c
2
a,b,c_1,c_2
a,b,c1,c2的值是困难的,从而从
g
a
c
1
,
g
b
c
2
g^{ac_1},g^{bc_2}
gac1,gbc2中提取出
c
1
,
c
2
c_1,c_2
c1,c2是困难的,因此现在没有一个有效的算法能够判断
Z
=
?
g
c
1
+
c
2
Z \overset{\text{?}}{=} g^{c_1+c_2}
Z=?gc1+c2。
q-决策扩展双线性DH指数问题(q-Decisional Augmented Bilinear Diffie-Hellman Exponentiation Problem, q-DABDHE)
实例:
g
,
g
a
,
g
a
2
,
⋯
,
g
a
q
,
h
,
h
a
q
+
2
∈
G
g,g^a,g^{a^2},\cdots,g^{a^q},h,h^{a^q+2} \in \mathbb{G}
g,ga,ga2,⋯,gaq,h,haq+2∈G,
Z
∈
G
T
Z \in \mathbb{G}_T
Z∈GT
决策:
Z
=
?
e
(
g
,
h
)
a
q
+
1
Z \overset{\text{?}}{=} e(g,h)^{a^{q+1}}
Z=?e(g,h)aq+1
解读: q-DABDHE问题的关键是无法直接计算出
a
q
+
1
a^{q+1}
aq+1并验证该结果。提供的实例条件很难推导出
a
q
+
1
a^{q+1}
aq+1,复杂性比DBDH问题更高,映射关系更加困难。
运用场景:身份基加密,分层加密方案。
Decisional ( P,Q,
f
\mathit{f}
f ) - GDHE Problem
实例:
g
P
(
x
1
,
x
2
,
⋯
,
x
m
)
∈
G
g^{P(x_1,x_2,\cdots,x_m)}\in \mathbb{G}
gP(x1,x2,⋯,xm)∈G,
e
(
g
,
g
)
Q
(
x
1
,
x
2
,
⋯
,
x
m
)
e(g,g)^{Q(x_1,x_2,\cdots,x_m)}
e(g,g)Q(x1,x2,⋯,xm),
Z
∈
G
T
Z \in \mathbb{G}_T
Z∈GT
P
=
(
p
1
,
p
2
,
⋯
,
p
s
)
∈
Z
p
[
X
1
,
⋯
,
X
m
]
s
P=(p_1,p_2,\cdots,p_s) \in \mathbb{Z}_p[X_1,\cdots,X_m]^s
P=(p1,p2,⋯,ps)∈Zp[X1,⋯,Xm]s是一个由变量m多项式组成的s元组。
Q
=
(
q
1
,
q
2
,
⋯
,
q
s
)
∈
Z
p
[
[
X
1
,
⋯
,
X
m
]
s
Q=(q_1,q_2,\cdots,q_s) \in \mathbb{Z}_p[[X_1,\cdots,X_m]^s
Q=(q1,q2,⋯,qs)∈Zp[[X1,⋯,Xm]s是一个由变量m多项式组成的s元组。
f
∈
Z
p
[
X
1
,
⋯
,
X
m
]
\mathit{f} \in \mathbb{Z}_p[X_1,\cdots,X_m]
f∈Zp[X1,⋯,Xm]
f
≠
∑
a
i
,
j
p
i
p
j
+
∑
b
i
q
i
holds for
∀
a
i
,
j
,
b
i
f\neq\sum a_{i,j}p_ip_j+\sum b_iq_i\text{ holds for }\forall a_{i,j},b_i
f=∑ai,jpipj+∑biqi holds for ∀ai,j,bi
决策:
Z
=
?
e
(
g
,
h
)
f
(
x
1
,
x
2
,
⋯
,
x
m
)
Z \overset{\text{?}}{=} e(g,h)^{\mathit{f}(x_1,x_2,\cdots,x_m)}
Z=?e(g,h)f(x1,x2,⋯,xm)
Decisional (
f
\mathit{f}
f, g, F)-GDDHE Problem
实例:
g
,
g
a
,
g
a
2
,
⋯
,
g
n
−
1
,
g
a
f
(
a
)
,
g
b
a
f
(
a
)
∈
G
g,g^a,g^{a^2},\cdots,g^{n-1},g^{a\mathit{f}(a)},g^{ba\mathit{f}(a)} \in \mathbb{G}
g,ga,ga2,⋯,gn−1,gaf(a),gbaf(a)∈G
h
,
h
a
,
h
a
2
,
⋯
,
h
a
2
k
,
h
b
⋅
g
(
a
)
∈
G
h,h^{a},h^{a^{2}},\cdots,h^{a^{2k}},h^{b\cdot g(a)}\in\mathbb{G}
h,ha,ha2,⋯,ha2k,hb⋅g(a)∈G
Z
∈
G
T
Z\in\mathbb{G}_T
Z∈GT
f
(
x
)
,
g
(
x
)
f(x),g(x)
f(x),g(x)是阶数为n,k,且阶数互素的多项式。
决策:
Z
=
?
e
(
g
,
h
)
b
⋅
f
(
a
)
Z\overset{?}{\operatorname*{=}}e(g,h)^{b\cdot f(a)}
Z=?e(g,h)b⋅f(a)