张成方案简介参考专栏的文章张成方案。
分配秘密 s s s
假设
M
^
\hat{M}
M^是有
l
l
l列的单调张成方案,庄家持有的秘密为
s
s
s,可以按如下步骤构建秘密分割方案:
从
K
l
\mathcal{K^l}
Kl中生成一个随机向量
r
⃗
=
(
r
1
,
r
2
,
.
.
.
,
r
l
)
\vec{r}=(r_1,r_2,...,r_l)
r=(r1,r2,...,rl),满足
r
⃗
⋅
1
⃗
=
∑
i
=
1
l
r
i
=
s
\vec{r}\cdot\vec{1}=\sum_{i=1}^l r_i=s
r⋅1=∑i=1lri=s。计算向量
t
∈
K
l
t\in \mathcal{K^l}
t∈Kl,
t
=
M
⋅
r
⃗
t=M \cdot \vec{r}
t=M⋅r,并按照
M
^
\hat{M}
M^中的行标记对
t
t
t进行标记。并将标记为
x
i
x_i
xi的元素分配给
P
i
P_i
Pi作为
P
i
P_i
Pi的秘密份额。
重构秘密 s s s
G ⊆ { P 1 , P 2 , . . . , P n } G\subseteq{P_1,P_2,...,P_n} G⊆{P1,P2,...,Pn}是一个授权集合, δ G ⃗ \vec{\delta_G} δG是 G G G的特征向量。由于 f ( δ G ) = 1 f(\delta_G)=1 f(δG)=1, 1 ⃗ ∈ s p a n ( M δ G ) \vec{1}\in span(M_{\delta_G}) 1∈span(MδG),即存在常数 β 1 , β 2 , ⋯ , β ∣ G ∣ \beta_1,\beta_2,\cdots,\beta_{|G|} β1,β2,⋯,β∣G∣, ∑ i = 1 ∣ G ∣ β i M i = 1 ⃗ \sum_{i=1}^{|G|} \beta_i M_i=\vec{1} ∑i=1∣G∣βiMi=1。将 G G G中参与方持有的秘密份额做如下线性变换即可恢复秘密 s = ∑ i = 1 ∣ G ∣ β i ( M i ⋅ r ⃗ ) s=\sum_{i=1}^{|G|} \beta_i (M_i\cdot \vec{r}) s=∑i=1∣G∣βi(Mi⋅r)
案例
M = [ 1 2 0 0 1 3 1 0 1 0 9 0 ] M=\begin{bmatrix} 1 & 2 & 0\\ 0 & 1 & 3 \\ 1 & 0 & 1 \\ 0 & 9 & 0\end{bmatrix} M=⎣⎢⎢⎡101021090310⎦⎥⎥⎤, ρ ( 1 ) = x 1 , ρ 2 ( 2 ) = x 2 , ρ 3 ( 3 ) = x 3 , ρ 4 ( 4 ) = x 4 \rho(1)=x_1,\rho_2(2)=x_2,\rho_3(3)=x_3,\rho_4(4)=x_4 ρ(1)=x1,ρ2(2)=x2,ρ3(3)=x3,ρ4(4)=x4, G = { P 1 , P 2 , P 3 } G=\{ P_1,P_2,P_3 \} G={P1,P2,P3}。明显存在 1 ⃗ ∈ s p a n ( M δ G ) \vec{1}\in span(M_{\delta_G}) 1∈span(MδG),对应常数 β 1 = 3 7 , β 2 = 1 7 , β 3 = 4 7 \beta_1=\frac{3}{7},\beta_2=\frac{1}{7},\beta_3=\frac{4}{7} β1=73,β2=71,β3=74。 设 r ⃗ = ( 1 , 2 , 2 ) , s = 5 \vec{r}=(1,2,2),s=5 r=(1,2,2),s=5。分配给 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3的秘密份额分别为 5 , 8 , 3 5,8,3 5,8,3。则秘密 s = 5 ∗ 3 7 + 8 ∗ 1 7 + 3 ∗ 4 7 = 5 s=5*\frac{3}{7}+8*\frac{1}{7}+3*\frac{4}{7}=5 s=5∗73+8∗71+3∗74=5
安全性证明
N
N
N是一个向量集合的矩阵表示,
v
⃗
\vec{v}
v与这个向量集合独立的充要条件是存在向量
w
⃗
\vec{w}
w满足
N
⋅
w
⃗
=
0
⃗
N\cdot \vec{w}=\vec{0}
N⋅w=0且
v
⃗
⋅
w
⃗
≠
0
⃗
\vec{v} \cdot \vec{w} \neq \vec{0}
v⋅w=0
设
B
B
B是未授权集合。因为
1
⃗
\vec{1}
1与
M
δ
B
M_{\delta_B}
MδB独立,则存在向量
r
⃗
′
\vec{r}^{\prime}
r′,使得
M
δ
B
⋅
r
⃗
′
=
0
⃗
M_{\delta_B} \cdot \vec{r}^{\prime}=\vec{0}
MδB⋅r′=0但
r
⃗
′
⋅
1
⃗
≠
0
\vec{r}^{\prime} \cdot \vec{1} \neq 0
r′⋅1=0。
对于任意
a
∈
Z
p
a \in Z_p
a∈Zp,令
R
′
=
r
⃗
+
a
r
⃗
′
R^{\prime}=\vec{r}+a\vec{r}^{\prime}
R′=r+ar′,则有
M
δ
B
⋅
R
′
=
M
δ
B
⋅
r
⃗
+
a
(
M
δ
B
⋅
r
⃗
′
)
=
M
δ
B
⋅
r
⃗
=
c
⃗
M_{\delta_B} \cdot R^{\prime}=M_{\delta_B} \cdot \vec{r} + a(M_{\delta_B} \cdot \vec{r}^{\prime})=M_{\delta_B} \cdot \vec{r}=\vec{c}
MδB⋅R′=MδB⋅r+a(MδB⋅r′)=MδB⋅r=c,其中
c
⃗
\vec{c}
c为
B
B
B的秘密份额。
1
⃗
⋅
R
′
=
1
⃗
⋅
(
r
⃗
+
a
r
⃗
′
)
=
1
⃗
⋅
r
⃗
+
a
(
1
⃗
⋅
r
⃗
′
)
=
s
+
a
(
1
⃗
⋅
r
⃗
′
)
\vec{1} \cdot R^{\prime}=\vec{1} \cdot (\vec{r} + a\vec{r}^{\prime})=\vec{1} \cdot \vec{r}+a(\vec{1} \cdot \vec{r}^{\prime})=s+a(\vec{1} \cdot \vec{r}^{\prime})
1⋅R′=1⋅(r+ar′)=1⋅r+a(1⋅r′)=s+a(1⋅r′)
即证。