多方计算中的秘密分享VSS与PVSS

一、 秘密分享

秘密分享的方式有很多种,我们根据论文《Publicly Verifiable Secret Sharing》中的描述,进行讨论。

\begin{equation}s_{A i}=\left\{\begin{array}{l}
\text { randomly chosen in } \mathbb{Z}_{p} \text { for } i=j_{1}, \ldots, j_{k-1} \\
s-\sum_{\ell=1}^{k-1} s_{A j_{\ell}}(\bmod p) \text { for } i=j_{k}
\end{array}\right.\end{equation}

对于秘密s,我们给产生k-1的随机数,然后用秘密减去这些随机数的和对p求余,产生一个k份的秘密。

只有k个用户同时合作,才能把秘密恢复。

同时,我们可以公开验证,分享秘密的人有没有将正确的si分享给每个用户。我们只需要将公开的加密得到的S进行累乘,则可以实现所有秘密的累加。而秘密分享者,需要公开对秘密进行加密的S。

 

另外一种秘密分享的方式可以让每个用户独立验证,si是否正确。下文中xi是每个人的公钥。dealer选择k-1个随机数,然后公开\begin{equation}S=g^{s} \text { and } F_{j}=g^{f}\end{equation}。

因此每个人的秘密被加密为si,之后我们可以用下面这种方式计算出Si。

\begin{equation}s_{i}=s+\sum_{j=1}^{k} f_{j} x_{i}^{j}(\bmod p)\end{equation}

 

然后我们可以验证,Si是否等于gsi。

\begin{equation}S_{i}=S \cdot \prod_{j=1}^{k-1} F_{j}^{\left(x_{i}^{j}\right)}\end{equation}

posted @ 2020-05-11 20:26  金思远  阅读(942)  评论(0编辑  收藏  举报