基于张成方案建立秘密分割方案

张成方案简介参考专栏的文章张成方案。

分配秘密 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} tKl t = M ⋅ r ⃗ t=M \cdot \vec{r} t=Mr ,并按照 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} GP1,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=1Gβ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=1Gβi(Mir )

案例

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=573+871+374=5

安全性证明

N N N是一个向量集合的矩阵表示, v ⃗ \vec{v} v 与这个向量集合独立的充要条件是存在向量 w ⃗ \vec{w} w 满足 N ⋅ w ⃗ = 0 ⃗ N\cdot \vec{w}=\vec{0} Nw =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δBr =0 r ⃗ ′ ⋅ 1 ⃗ ≠ 0 \vec{r}^{\prime} \cdot \vec{1} \neq 0 r 1 =0
对于任意 a ∈ Z p a \in Z_p aZp,令 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δBR=MδBr +a(MδBr )=MδBr =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 )
即证。

你可能感兴趣的:(密码学基础,算法,密码学,秘密分割)