细说秘密分享/秘密分割的几种常见表述形式
秘密分享
秘密分享是庄家选择一个秘密\(s\),并通过一种秘密分割方式\(\pi(s,r)=(s_1,s_2,...,s_n)\) ,其中\(r\)是随机值,这些被分割出来的份额\(s_i\)被发送给不同的参与者\(P_i\),后续满足访问结构的参与者集合(授权集合)可以恢复出秘密\(s\),任意非授权集合都不能得到\(s\)的任何有关信息。
*访问结构是能够重构秘密的所有“参与者子集”构成的集合,\(\mathbb{A}\subseteq 2^{\{P_1,P_2,...,P_n\}} \setminus \emptyset\)。
shamir-(t,n) 门限秘密分享是经典的秘密分享方案,他是说n个参与者中任意t个及以上的参与者一起可以恢复出秘密,而不足t个参与者一起都得不到秘密的任何信息。
可以从两个常见的角度出发去理解,下面分析两种角度并说明他们在本质上的统一性。
第一种角度
(t元一次方程 , \(x^{t-1}a_{t-1}+...+xa_1+a_0=0\)):对秘密的恢复是求解t个方程组,来恢复t个未知元\((a_{t-1},...,a_1,a_0)\)。对秘密的分割是n个方程\(\left\{\begin{matrix} a_{t-1}+...+a_1+a_0=0\\ 2^{t-1}a_{t-1}+...+2a_1+a_0=0\\ ...\\ n^{t-1}a_{t-1}+...+na_1+a_0=0 \end{matrix}\right.\),这种角度因为用户拿到的份额是一整个方程而不是一个值,所以没有显示的写法去写出每个\(s_i\)是什么。所以这种角度虽然是最好理解的,但由于表述上差点意思,也是最少见的。而下面的函数角度和通用角度,在表述上更有优越性,常见于各类ABE论文的表述中。
第二种角度
(t-1阶函数 , \(f(x)=a_{t-1}x^{t-1}+...+a_1x+a_0\)):对秘密的恢复是通过对t个点位的函数值进行拉格朗日插值来恢复函数的未知系数组\(\beta =(a_{t-1},...,a_1,a_0)\)。对秘密的分割便是取n个点位的函数值,可以简单的取为\(x=(1,...,n)\) ,\((s_1=f(1),s_2=f(2),...,s_n=f(n))\),其中\(s=f(0)=a_0\)是秘密,是不能被分割时\(x\)取\(0\)给分割出去的。当恢复出未知系数组 \(\beta=(a_{t-1},...,a_1,a_0)\),自然得到秘密\(s\) 。更一般地可写为未知系数组\(\beta\)和目标向量\(\alpha =(0,0,...,1)\)的乘积\(s=\beta \cdot \alpha\) 。秘密\(s\)与t个未知系数之间存在某种函数关系,根据目标向量\(\alpha\)的不同而不同,常见的如\(s=a_0\),\(s=\sum_{i=0}^{t-1}a_i\)等等,在shamir-(t,n) 门限方案中\(s=a_0\) 。
通用角度(矩阵形式)
n×t的矩阵\(M\),其中满足访问结构的t行组成t×t的矩阵\(M_t\)可以线性表出\(\alpha\),没错就是目标向量。 (如果是shamir-(t,n) 门限方案则为任意t行都应可以,任意t-1行都不可以。)
对秘密的恢复过程为用\(M_t\)线性表出\(\alpha\),即找到不为0的向量\(w=(w_1,w_2,...,w_t)\),考虑矩阵为行向量构成的形式\(M_t=\begin{pmatrix} M_{t,1} \\ M_{t,2}\\ ...\\ M_{t,n} \end{pmatrix}\),使得\(wM_t=(w_1,w_2,...,w_t)\begin{pmatrix} M_{t,1} \\ M_{t,2}\\ ...\\ M_{t,n} \end{pmatrix}=\sum_{i=1}^{t}w_iM_{t,i}=\alpha\)。
*注意这里重点不在\(\alpha\),拥有目标向量\(\alpha\)并不能恢复出秘密\(s\),因为有关秘密\(s\)的向量\(\beta\)是未知的(只有庄家知道,想要恢复秘密的参与者不知道),重点在我们为了用\(M_t\)构成\(\alpha\)而求得\(w\),拥有\(w\),可以恢复秘密\(s=w\cdot \overrightarrow{s}\) ,这里不再是上面两个具体角度中的去先求出\(\beta\),再结合\(\alpha\)来恢复秘密\(s\)了,这里才是常规的流程,直接用秘密份额\(\overrightarrow{s}\)来恢复\(s\)。那么庄家(知道\(s\)和\(\beta\),都是由他来选的)对秘密的分割是:\(M_t \beta^T=\begin{pmatrix} s_1 \\ s_2\\ ...\\ s_n \end{pmatrix}=\overrightarrow{s}\),
也就是说\(\alpha\cdot\beta^T=(wM_t)\beta^T=wM_t\beta^T=w(M_t\beta^T)=w\cdot\overrightarrow{s}\) 。
显然shamir-(t,n) 门限方案是通用表述的特殊情况,即\(M=\begin{pmatrix}
n^{t-1} &... &n &1 \\
...& ... &... &... \\
2^{t-1}&... &2 &1 \\
1&... &1 &1
\end{pmatrix}\),\(\beta=(a_{t-1},...,a_1,a_0)^T\),\(\alpha=(0,0,...,1)\) 。
此时\(M_t \beta^T=\begin{pmatrix}
f(1) \\
f(2)\\
...\\
f(t)
\end{pmatrix}=\overrightarrow{s}\) ,根据拉格朗日插值法我们知道这里的\(w_i=\Delta _i(0)= \prod_{j=1,j\neq i}^{t}\frac{0-j}{i-j}\),这样\(w(M_t\beta^T)=\sum_{i=1}^{t}w_is_i=\sum_{i=1}^{t}\Delta_i(0)f(i)=f(0)=s\) 。
如果我们这里取\(w_i=\Delta _i(1)= \prod_{j=1,j\neq i}^{t}\frac{1-j}{i-j}\),那么\(wM_t=\alpha=\overrightarrow{1}\),\(\sum_{i=1}^{t}\Delta_i(1)f(i)=f(1)=\sum_{i=1}^{t}a_i=s\) 。