双线性映射
存在一个四元组
(
p
,
G
,
G
T
,
e
)
(p, G, G_T, e)
(p,G,GT,e). p是大素数,
G
,
G
T
G, G_T
G,GT是阶为素数p的循环群. 同时满足以下3个条件的映射e:
G
G
G X
G
G
G →
G
T
G_T
GT, 称为双线性映射.
(1) 双线性:
对
于
∀
u
,
v
∈
G
,
a
,
b
∈
Z
p
,
有
e
(
u
a
,
v
b
)
=
e
(
u
,
v
)
a
b
对于\forall u,v \in G, a,b\in Z_p, 有 e(u^a, v^b) = e(u, v)^{ab}
对于∀u,v∈G,a,b∈Zp,有e(ua,vb)=e(u,v)ab
(2) 非退化性:
∃
g
∈
G
,
使
e
(
g
,
g
)
在
G
T
中
的
阶
是
p
\exist g \in G, 使e(g, g)在G_T中的阶是p
∃g∈G,使e(g,g)在GT中的阶是p
(3) 可计算性:
对
于
∀
u
,
v
∈
G
,
都
能
够
计
算
e
(
u
,
v
)
对于\forall u,v \in G, 都能够计算e(u, v)
对于∀u,v∈G,都能够计算e(u,v)
概念解释:
现代密码学的理论知识, 主要解释一下群相关的概念.
循环群: G中存在元素g, 生成的循环子群就是G本身, 称G为循环群. 对于G中任意元素g, 存在循环集
{
g
,
g
2
,
.
.
.
,
g
k
}
\{g, g^2, ..., g^k \}
{g,g2,...,gk}(
g
k
=
e
g^k = e
gk=e)是G的子群, 这个循环集称为G的k阶循环子群.
群的阶: 有限群的元素个数就是群的阶.
阿贝尔群: 满足交换律
a
∗
b
=
b
∗
a
a*b = b*a
a∗b=b∗a的群称为阿贝尔群. 典型例子就是
Z
n
=
{
0
,
1
,
.
.
.
,
n
−
1
}
Z_n = \{0, 1, ..., n - 1\}
Zn={0,1,...,n−1}模n加法下的n阶的整数集. 所以定义里涉及的
Z
p
Z_p
Zp是模p加法下的p阶整数集.
线性秘密共享方案
假设参与者集合
P
=
{
P
1
,
P
2
,
.
.
.
,
P
n
}
P = \{P_1, P_2, ..., P_n\}
P={P1,P2,...,Pn}, 若
Π
\Pi
Π 满足以下2个条件, 则称为P上的一个线性秘密共享方案(LSSS, Linear Secret Sharing Scheme).
(1) 对于每个参与者所持有的秘密份额都可以构成
Z
p
Z_p
Zp上的向量
(2) 每个LSSS的
Π
\Pi
Π 都对应一个生成矩阵
M
(
l
×
n
)
M(l\times n)
M(l×n), 且映射
ρ
:
{
1
,
2
,
.
.
.
,
l
}
→
P
\rho: \{1,2,...,l\} → P
ρ:{1,2,...,l}→P 把 M 的每一行映射到参与者
ρ
(
i
)
\rho(i)
ρ(i),
ρ
\rho
ρ是单射函数. 对于向量
v
=
(
s
,
y
2
,
y
3
,
.
.
.
,
y
n
)
\mathbf{v} = (s, y_2, y_3, ..., y_n)
v=(s,y2,y3,...,yn),
s
∈
Z
p
s \in Z_p
s∈Zp是共享秘密值,
y
i
y_i
yi是随机数用来隐藏共享秘密值, 则共享秘密值
s
s
s的
l
l
l个秘密份额是
M
v
\mathbf{Mv}
Mv, 第i个秘密份额表示为
λ
i
=
(
M
v
)
i
\lambda_i = (\mathbf{Mv})_i
λi=(Mv)i, 对应分配给
ρ
(
i
)
\rho(i)
ρ(i).
概念解释:
把共享方案
Π
\Pi
Π, 生成矩阵
M
M
M, 映射
ρ
\rho
ρ捆绑起来看作实现一个LSSS的要素, 所做的运算, 相当于把共享秘密值s代入矩阵
M
M
M和向量
v
v
v的运算中, s被拆分成了
l
l
l份(而且是夹带n - 1个随机数成分的值), 然后由映射
ρ
\rho
ρ分配给
l
l
l个参与者. 这样就实现了线性秘密共享.
CDH假设
给定三元组 ( g , g a , g b ) ∈ G 3 (g, g^a, g^b) \in G^3 (g,ga,gb)∈G3, 其中 a , b ∈ Z p ∗ a,b \in Z_p^* a,b∈Zp∗且未知, 要求计算 g a b g^{ab} gab的值. 设敌手 A \mathcal{A} A成功计算出 g a b g^{ab} gab的概率是 A d v A C D H = ∣ P r [ A ( g a , g b ) = g a b ] ∣ ≤ ε Adv_A^{CDH} = | Pr[\Alpha(g^a, g^b) = g^{ab}] | \leq \varepsilon AdvACDH=∣Pr[A(ga,gb)=gab]∣≤ε. 如果 ε \varepsilon ε是可忽略的, 则称CDH问题是 ε − \varepsilon- ε−困难的.
概念解释:
一个经验规律, 数学上还没有严格证明, 这个问题很难解, 但是事实证明确实是计算难解问题, 所以就作为假设进行实践的前提, 如果这个问题被破解, 那依据此假设的理论都会倒塌.
密钥加密密钥树
key encryption key, KEK树是一个完全二叉树.令用户集合 U = { u 1 , u 2 , . . . , u N } U = \{u_1, u_2, ..., u_N\} U={u1,u2,...,uN}, 属性集合 W = { a t t 1 , a t t 2 , . . . , a t t n } W = \{ att_1, att_2, ..., att_n \} W={att1,att2,...,attn}. 设 G i ⊂ U G_i \subset U Gi⊂U是拥有属性集合 a t t i att_i atti的一个用户集合, 称为属性群. G i G_i Gi是可以正常访问属性 a t t i att_i atti的访问列表. 令 G = { G 1 , G 2 , . . . , G n } \mathcal{G} = \{ G_1, G_2, ..., G_n \} G={G1,G2,...,Gn}是属性群集合.
概念解释:
属性群
G
i
G_i
Gi就可看作是一个用户集合, 本质是一个集合, 它对应拥有属性
a
t
t
i
att_i
atti的用户集合. 比如对于用户
u
1
,
u
2
,
u
3
u_1, u_2, u_3
u1,u2,u3, 分别有属性集合
{
a
t
t
1
,
a
t
t
2
}
,
{
a
t
t
1
,
a
t
t
2
,
a
t
t
3
}
,
{
a
t
t
2
,
a
t
t
3
}
\{att_1, att_2\}, \{att_1, att_2,att_3 \}, \{att_2, att_3\}
{att1,att2},{att1,att2,att3},{att2,att3}, 则
G
1
=
{
u
1
,
u
2
}
,
G
2
=
{
u
1
,
u
2
,
u
3
}
,
G
3
=
{
u
2
,
u
3
}
G_1 = \{u_1, u_2 \}, G_2 = \{u_1, u_2, u_3\}, G_3 = \{u_2, u_3\}
G1={u1,u2},G2={u1,u2,u3},G3={u2,u3}.
数据服务管理者
DSM, data service manager. 负责构建KEK树.
(1) 每个叶子对应一个用户
u
k
u_k
uk, 中间节点
v
j
v_j
vj包含一个随机值
θ
j
\theta_j
θj.
(2) 路径生成算法
P
a
t
h
(
u
k
)
Path(u_k)
Path(uk), 找出叶子结点到根节点经过的中间结点.
(3) 最小覆盖集算法
M
i
n
c
s
(
G
i
)
Mincs(G_i)
Mincs(Gi), 找出可以覆盖属性群
G
i
G_i
Gi中所有用户的最少节点的集合.
(4) 对于任意
P
a
t
h
(
u
k
)
和
M
i
n
c
s
(
G
i
)
Path(u_k)和Mincs(G_i)
Path(uk)和Mincs(Gi), 路径和最小覆盖集最多一个交点.