门限签名(threshold signature区块链中叫多重签名 multisig),即n个用户中有t个签名时,签名有效。
秘密共享是门限签名的一种特殊情况,即多个用户共享一个秘密,并不是把秘密发给每个人,而是把秘密拆分开发给每个人(当然,也不能直接把信息拆开分发,存在语义上的安全问题),我总结的条件为:
(1)用户能够验证自己的秘密份额是正确的
(2)数量足够的用户能够重构秘密
对于条件(1),就是要让秘密份额满足某个等式,等式中包含公开信息和私人信息,对于条件(2),要求秘密份额包含秘密的信息,一种载体是拉格朗日插值,少于t个信息不能重构t-1次多项式,且都是普通运算,适合搬到有限域。
我们假设秘密为SSS,构造一个多项式
F(x)=S+∑t−1l=1xlFlF(x)=S+sum_{l=1}^{t-1}x^l F_lF(x)=S+∑l=1t−1xlFl
其中,FlF_lFl是有限域中随机选取的元素。
将F(i)F(i)F(i)发送给第iii个用户,且有S=F(0)S=F(0)S=F(0),注意,F(i)F(i)F(i)看上去是一个随机数。
重构时,F(x)=∑j∈ΦπΦxjSjF(x)=sum_{jin Phi} pi_{xj}^{Phi}S_jF(x)=∑j∈ΦπxjΦSj
其中,πΦxj=Πm