admin管理员组

文章数量:1530044

常用的秘密共享方案

        • 首先提出问题——平均工资问题
        • 什么是秘密共享?
        • Shamir秘密共享分案 算法流程
        • 可验证秘密共享的提出
        • 什么是计算安全?什么是无条件安全?
        • Feldman可验证的秘密共享

安全多方计算的研究主要是针对无可信第三方的情况下,如何保证各方数据安全的同时利用多方数据进行计算,得到预期结果。
安全多方计算不是指某一单独的协议, 而是一些关键技术集合,比如:秘密共享、混淆电路、不经意传输等等。

今天来记录一下学习Shamir 秘密共享方案 和Feldman可验证的秘密共享方案的笔记。

首先提出问题——平均工资问题

A、B、C、D 如果在不暴露自己工资的情况下,求得四人的平均工资?

最简单的方案如下:
1,A生成一个随机数,将其与自己的工资相加,用B的公钥加密发送给B
2,B用自己的私钥解密,加进自己的工资,然后用C的公钥加密发送给C
3,C用自己的私钥解密,加进自己的工资,然后用D的公钥加密发送给D
4,D用自己的私钥解密,加进自己的工资,然后用A的公钥加密发送给A
5,A用自己的私钥解密,减去原来的随机数得到工资总和
6,A将工资总和除以人数得到平均工资,宣布结果

存在问题:

该协议假定所有参与者都是诚实的不会谎报工资,A不谎报结果。

如何保证节点诚实?且A不谎报结果?
一般的解决方案是运用比特承诺协议让A向B传送他的随机数但这种方案会导致协议结束后,B知道了A的工资。

其他还有什么更好的方案吗?
秘密分享!

什么是秘密共享?

秘密共享是信息安全和数据保密中的重要手段,它在重要信息和秘密数据的安全保存、传输及合法利用中起着非常关键的作用。
秘密共享由两个算法——秘密份额的分配算法和秘密的恢复算法构成。
在执行秘密份额的分配算法时,分发者将秘密分割成若干份额在一组参与者中进行分配,使得每个参与者都得到关于该秘密的一个秘密份额;
秘密的恢复算法保证只有参与者的一些特定的子集才能有效的恢复秘密,其他子集不能有效地恢复秘密,甚至得不到关于秘密任何有用信息[1]。

最早被提出的秘密共享模型是门限类的秘密共享模型,Shamir 秘密共享方案就是一种门限秘密共享模型。
  ( t , n ) \ (t,n)  (t,n) 门限秘密共享体制中,秘密的持有者,把秘密分割成   n \ n  n 个份额,分别分配于   n \ n  n 个参与者,使得只要获得这   n \ n  n 个份额中的至少   t \ t  t个才可能有效地恢复出原来的秘密,而任何少于   t \ t  t 个的份额集合都不能恢复出原来的秘密,得不到关于原秘密任何有用的信息。

Shamir秘密共享分案 算法流程

一共   n \ n  n个节点(   p 1 \ p_1  p1,   p 2 \ p_2  p2,…,   p n \ p_n  pn)拥有自己的秘密值(   v i \ v_i  vi ),如何计算这   n \ n  n个节点秘密的和,即求   v 1 \ v_1  v1+   v 2 \ v_2  v2+   v 3 \ v_3  v3+…+   v n \ v_n  vn

基本思路: n个节点,各自将秘密分成n分,发给参与计算的其余n-1个节点,随后,节点收到来自其他节点的秘密碎片,加上自己的共n个,计算碎片的和,将所得的和再次发给其他参与计算的节点,等待收到t个来自其他节点的和之后即可得出最后结论。

步骤一:随机值的共享 ,每个节点拥有均需一份相同的   X \ X  X={   x 1 \ x_1  x1,   x 2 \ x_2  x2,…,   x n \ x_n  xn}
步骤二:各节点   p i \ p_i  pi分别随机选择一个   t − 1 \ t-1  t1 次的多项式   f i \ f_i  fi (   f i ( x ) \ f_i(x)  fi(x) =   a i \ a_i  ai   x t − 1 \ x^{t-1}  xt1 +   b i \ b_i  bi   x t − 2 \ x^{t-2}  xt2 +   c i \ c_i  ci   x t − 3 \ x^{t-3}  xt3 +…+   v i \ v_i  vi ),因此这里加上   v i \ v_i  vi 在内一共产生了   t \ t  t 个未知数(   a i , b i \ a_i, b_i  aibi,…),这   t \ t  t 个数是只有当前节点才会知道的,且每个节点都会随机产生不同的   t \ t  t 个未知数,其中

本文标签: 秘密方案ShamirFeldman