安全多方计算 - Shamir机密分享方案

打印 上一主题 下一主题

主题 820|帖子 820|积分 2460


  • 安全多方计算 - Shamir机密分享方案

    • 概述
    • 门限机密共享

      • 什么是门限机密共享
      • 直观明白

    • Shamir机密共享

      • 机密分享
      • 机密重建

    • Shamir机密共享的特点
    • 对加法和乘法运算的支持

      • 对加法运算的支持
      • 对乘法运算的支持

    • 总结
    • 参考

  安全多方计算 - Shamir机密分享方案

概述

机密共享 (Secret Sharing) 是一种用于保护敏感数据(如加密密钥)的技术。它将一个机密分成多个部分,并将这些部分分发给多个到场者。只有当各个部分组合到一起时,才能规复原始的机密。它将风险在多方之间分散,从而提高了体系的安全性。
早在秦朝就有秦阳陵虎符:“甲兵之符,右在天子,左在阳陵”。只有"合符"无间才可调拨军队。这可谓古人的一大智慧,也可以看作是一种机密共享的实践。
但这里的机密共享要求所有到场者合作才能规复原始的机密(虎符),如果任意一个到场方将自己的机密份额丢失或损坏,就再也无法规复原始机密。
本文要先容一种门限机密共享(threshold secret sharing) —— Shamir机密共享1,就能够办理这个问题。同时,因为Shamir机密共享所具有的计算特性,使其在安全多方计算中也发挥重要作用。
门限机密共享

什么是门限机密共享

门限机密共享是一种暗码学技术,将机密                                    S                              S                  S 分割为                                    n                              n                  n 个部分,并将这些部分分发给                                    n                              n                  n 个到场者。所谓门限,是在分割这些机密的时间,设置一个巨细位于 1 和                                    n                              n                  n 之间的                                    k                              k                  k 值,使得给定任意                                    k                         −                         1                              k - 1                  k−1 个或更少的机密份额,都不能够计算得到机密                                    S                              S                  S 的任何信息;当给定任意                                    k                              k                  k 个或更多的机密份额的时间,就能够计算得到机密                                    S                              S                  S。这被称为                                    (                         k                         ,                         n                         )                              (k, n)                  (k,n) 门限机密共享方案。这意味着这                                    n                              n                  n 个到场者中最多                                    k                         −                         1                              k - 1                  k−1 个到场者泄露了他们的机密份额,机密                                    S                              S                  S 仍然是安全的。
   
  直观明白

想象一下,机密                                    S                              S                  S 是一个藏宝箱的暗码。我们不盼望单个到场者独自打开藏宝箱,因此我们可以构造方案将暗码分成多个部分分给到场方,只有当至少 2 个到场者合作时,他们才能拼凑出完整的暗码并打开藏宝箱。同时即便有个别机密份额丢失或被盗,剩下的到场方依然可以重构机密。
  为了更具体地阐明这一点,我们来看一个例子:
假设我们有一个机密值                                    S                         =                         2                              S = 2                  S=2,我盼望将这个机密值分享给 4 个到场者,而且要求至少 2 个到场者才能规复出机密值。现在将这个机密值作为y轴上的一个点的纵坐标,绘制一条穿过点(0,2)的随机直线。然后随机取4个 x 坐标值 3、5、6、7 作为4名到场者的 id,并计算这些 id 对应的直线上点的纵坐标值,分配给 4 名到场者。例如,到场者 3 得到的机密份额 s3。每个到场者只知道自己的 id 和对应的机密份额。
   
  4 个到场者有了机密份额,接下来就应该考虑利用机密份额规复机密了。任意一个到场者单独都无法规复出来机密值,因为单独一份机密份额相当于只有坐标系上的一个点,无法确定机密份额天生的时间选择了哪条线。这也意味着不知道这条线与 y 轴相交的位置。
   
  当有两个或更多到场者提供机密份额时,相当于坐标系中有多个点存在,就能够绘制出这条直线。这条直线与 y 轴的交点,就是原来的机密值。
以上是对门限机密共享的基本概念和直观明白的展示。接下来我们会具体讨论 Shamir 机密共享方法,它是最经典和广泛利用的门限机密共享技术之一。
Shamir机密共享

  Shamir机密共享是一种门限机密共享方案。
机密分享

Shamir机密共享方案基于拉格朗日多项式插值原理。它将机密                                    S                              S                  S 分成                                    n                              n                  n 个部分,每个到场者得到的部分都是机密                                    S                              S                  S 的一个多项式的值。只有当至少                                    k                              k                  k 个到场者合作时,才能规复原始的机密                                    S                              S                  S。
具体来说,多项式上的                                    k                              k                  k 个点能够唯一确定小于或等于                                    k                         −                         1                              k-1                  k−1 次的多项式。2 个点足以定义一条线,3 个点足以定义一条抛物线,4 个点足以定义一条立方曲线,依此类推。
假设机密数据                                    S                              S                  S 是一个数字,为了把它分成差别份额                                              S                            i                                       S_i                  Si​,选择一个随机                                    k                         −                         1                              k-1                  k−1 次多项式。多项式的一般形式为                                    f                         (                         x                         )                         =                                   a                            0                                  +                                   a                            1                                  x                         +                                   a                            2                                            x                            2                                  +                         ⋅                         ⋅                         ⋅                         +                                   a                                       k                               −                               1                                                      x                                       k                               −                               1                                                 f(x) = a_0 + a_1x + a_2x^2 + ··· + a_{k-1}x^{k-1}                  f(x)=a0​+a1​x+a2​x2+⋅⋅⋅+ak−1​xk−1,其中                                              a                            0                                  =                         S                              a_0 = S                  a0​=S 是要保护的机密。
机密拥有者随机天生                                    k                         −                         1                              k-1                  k−1 个随机数                                              a                            1                                  ,                                   a                            2                                  ,                         .                         .                         .                         ,                                   a                                       k                               −                               1                                                 a_1, a_2, ...,a_{k-1}                  a1​,a2​,...,ak−1​,作为多项式的系数以确定多项式                                    f                         (                         x                         )                              f(x)                  f(x)。然后选取                                    n                              n                  n 个互不相同的整数                                              x                            1                                  ,                                   x                            2                                  ,                         .                         .                         .                         ,                                   x                            n                                       x_1, x_2, ...,x_n                  x1​,x2​,...,xn​ 作为到场方 id,将这些整数带入到                                    f                         (                         x                         )                              f(x)                  f(x) 进行计算,得到                                              s                            1                                  =                         f                         (                                   x                            1                                  )                         ,                                   s                            2                                  =                         f                         (                                   x                            2                                  )                         ,                         .                         .                         .                         ,                                   s                            n                                  =                         f                         (                                   x                            n                                  )                              s_1 = f(x_1), s_2 = f(x_2), ..., s_n = f(x_n)                  s1​=f(x1​),s2​=f(x2​),...,sn​=f(xn​)。将计算得到的                                    n                              n                  n 个值分别分配给                                    n                              n                  n 个到场方,每个到场方掌握的机密份额就是                                    (                                   x                            i                                  ,                         f                         (                                   x                            i                                  )                         )                              (x_i, f(x_i))                  (xi​,f(xi​))。
例如,假定一个机密值                                    S                         =                         45                              S=45                  S=45,要求将其分给 10 个到场方,至少 3 方到场计算才能够规复出原始机密,即                                    n                         =                         10                         ,                         k                         =                         3                              n = 10, k = 3                  n=10,k=3。构造对应的多项式                                    f                         (                         x                         )                         =                         45                         +                         19                         x                         +                         13                                   x                            2                                       f(x) = 45 + 19x + 13x^2                  f(x)=45+19x+13x2。在此多项式上选取一连的整数点作为各个子机密:                                             D                            0                                  =                         (                         1                         ,                         77                         )                         ;                                   D                            1                                  =                         (                         2                         ,                         135                         )                         ;                                   D                            2                                  =                         (                         3                         ,                         219                         )                         ;                                   D                            3                                  =                         (                         4                         ,                         329                         )                         ;                                   D                            4                                  =                         (                         5                         ,                         465                         )                         ;                                   D                            5                                  =                         (                         6                         ,                         627                         )                         ;                                   D                            6                                  =                         (                         7                         ,                         815                         )                         ;                                   D                            7                                  =                         (                         8                         ,                         1029                         )                         ;                                   D                            8                                  =                         (                         9                         ,                         1269                         )                         ;                                   D                            9                                  =                         (                         10                         ,                         1535                         )                              D_0 = (1, 77); D_1 = (2, 135); D_2 = (3, 219); D_3 = (4, 329); D_4 = (5, 465); D_5 = (6, 627); D_6 = (7, 815); D_7 = (8, 1029); D_8 = (9, 1269); D_9 = (10, 1535)                  D0​=(1,77);D1​=(2,135);D2​=(3,219);D3​=(4,329);D4​=(5,465);D5​=(6,627);D6​=(7,815);D7​=(8,1029);D8​=(9,1269);D9​=(10,1535)。
机密重建

对于                                              S                            i                                       S_i                  Si​ 值的任意                                    k                              k                  k 个子集,我们可以通过插值找到                                    f                         (                         x                         )                              f(x)                  f(x) 的多项式系数,然后计算                                    S                         =                         f                         (                         0                         )                              S = f(0)                  S=f(0)。另一方面,仅知道子集中的                                    k                         −                         1                              k - 1                  k−1 个并不足以计算出                                    S                              S                  S。
在天生机密份额的时间,已经确定需要                                    k                              k                  k 个机密份额来规复原始机密。即根据                                    (                                   x                            1                                  ,                                   s                            1                                  )                         ,                         (                                   x                            2                                  ,                                   s                            2                                  )                         ,                         .                         .                         .                         ,                         (                                   x                            k                                  ,                                   s                            k                                  )                              (x_1, s_1), (x_2, s_2), ..., (x_k, s_k)                  (x1​,s1​),(x2​,s2​),...,(xk​,sk​) 等一系列点构造出原始的多项式                                    f                         (                         x                         )                              f(x)                  f(x),进而求解得到机密值                                    S                         =                         f                         (                         0                         )                         =                                   a                            0                                       S = f(0) = a_0                  S=f(0)=a0​。
Shamir机密共享的方案利用拉格朗日插值法求解多项式。
                                         f                            (                            x                            )                            =                                       ∑                                           i                                  =                                  0                                          n                                                 y                               i                                                 l                               i                                      (                            x                            )                                  f(x) = \sum_{i=0}^{n}y_il_i(x)                     f(x)=i=0∑n​yi​li​(x)
其中                                              l                            i                                  (                         x                         )                         =                                              (                               x                               −                                           x                                  1                                          )                               (                               x                               −                                           x                                  2                                          )                               .                               .                               .                               (                               x                               −                                           x                                  n                                          )                                                 (                                           x                                  i                                          −                                           x                                  1                                          )                               (                                           x                                  i                                          −                                           x                                  2                                          )                               .                               .                               .                               (                                           x                                  i                                          −                                           x                                  n                                          )                                                 l_i(x) = \frac{(x-x_1)(x-x_2)...(x-x_n)}{(x_i-x_1)(x_i-x_2)...(x_i-x_n)}                  li​(x)=(xi​−x1​)(xi​−x2​)...(xi​−xn​)(x−x1​)(x−x2​)...(x−xn​)​ 为拉格朗日插值基函数。在求解                                              y                            i                                            l                            i                                  (                         x                         )                              y_il_i(x)                  yi​li​(x) 的求解之后,对其求和,就能够获得目标多项式。
为了重建机密,任意选取3个到场方的机密份额作为输入。这里选择 id 为                                    2                         ,                         3                         ,                         6                              2, 3, 6                  2,3,6 的到场方进行机密重建。
                                    (                                   x                            0                                  ,                                   y                            0                                  )                         =                         (                         2                         ,                         135                         )                         ;                         (                                   x                            1                                  ,                                   y                            1                                  )                         =                         (                         3                         ,                         219                         )                         ;                         (                                   x                            2                                  ,                                   y                            2                                  )                         =                         (                         6                         ,                         627                         )                              (x_0, y_0) = (2, 135); (x_1, y_1) = (3, 219); (x_2, y_2) = (6, 627)                  (x0​,y0​)=(2,135);(x1​,y1​)=(3,219);(x2​,y2​)=(6,627)。
                                                    l                               0                                      (                            x                            )                            =                                                   x                                  −                                               x                                     1                                                                               x                                     0                                              −                                               x                                     1                                                             ∗                                                   x                                  −                                               x                                     2                                                                               x                                     0                                              −                                               x                                     2                                                             =                                                   x                                  −                                  3                                                      2                                  −                                  3                                                 ∗                                                   x                                  −                                  6                                                      2                                  −                                  6                                                 =                                       1                               4                                                 x                               2                                      −                                       9                               4                                      x                            +                                       9                               2                                            l_0(x) = \frac{x-x_1}{x_0-x_1}*\frac{x-x_2}{x_0-x_2} = \frac{x-3}{2-3}* \frac{x-6}{2-6} = \frac{1}{4}x^2-\frac{9}{4}x+\frac{9}{2}                     l0​(x)=x0​−x1​x−x1​​∗x0​−x2​x−x2​​=2−3x−3​∗2−6x−6​=41​x2−49​x+29​
                                                    l                               1                                      (                            x                            )                            =                                                   x                                  −                                               x                                     0                                                                               x                                     1                                              −                                               x                                     0                                                             ∗                                                   x                                  −                                               x                                     2                                                                               x                                     1                                              −                                               x                                     2                                                             =                                                   x                                  −                                  2                                                      3                                  −                                  2                                                 ∗                                                   x                                  −                                  6                                                      3                                  −                                  6                                                 =                            −                                       1                               3                                                 x                               2                                      +                                       8                               3                                      x                            −                            4                                  l_1(x) = \frac{x-x_0}{x_1-x_0}*\frac{x-x_2}{x_1-x_2} = \frac{x-2}{3-2}* \frac{x-6}{3-6} = -\frac{1}{3}x^2+\frac{8}{3}x - 4                     l1​(x)=x1​−x0​x−x0​​∗x1​−x2​x−x2​​=3−2x−2​∗3−6x−6​=−31​x2+38​x−4
                                                    l                               2                                      (                            x                            )                            =                                                   x                                  −                                               x                                     0                                                                               x                                     2                                              −                                               x                                     0                                                             ∗                                                   x                                  −                                               x                                     1                                                                               x                                     2                                              −                                               x                                     1                                                             =                                                   x                                  −                                  2                                                      6                                  −                                  2                                                 ∗                                                   x                                  −                                  3                                                      6                                  −                                  3                                                 =                                       1                               12                                                 x                               2                                      −                                       5                               12                                      x                            +                                       1                               2                                            l_2(x) = \frac{x-x_0}{x_2-x_0}*\frac{x-x_1}{x_2-x_1} = \frac{x-2}{6-2}* \frac{x-3}{6-3} = \frac{1}{12}x^2-\frac{5}{12}x+\frac{1}{2}                     l2​(x)=x2​−x0​x−x0​​∗x2​−x1​x−x1​​=6−2x−2​∗6−3x−3​=121​x2−125​x+21​
                                         f                            (                            x                            )                            =                                       ∑                                           i                                  =                                  0                                          2                                                 y                               i                                                 l                               i                                      (                            x                            )                            =                                       y                               0                                                 l                               0                                      (                            x                            )                            +                                       y                               1                                                 l                               1                                      (                            x                            )                            +                                       y                               2                                                 l                               2                                      (                            x                            )                                     =                            135                            (                                       1                               4                                                 x                               2                                      −                                       9                               4                                      x                            +                                       9                               2                                      )                            +                                     219                            (                            −                                       1                               3                                                 x                               2                                      +                                       8                               3                                      x                            −                            4                            )                            +                                     627                            (                                       1                               12                                                 x                               2                                      −                                       5                               12                                      x                            +                                       1                               2                                      )                                     =                            13                                       x                               2                                      +                            19                            x                            +                            45                                  f(x) = \sum_{i=0}^{2}y_il_i(x) = y_0l_0(x) + y_1l_1(x) + y_2l_2(x) \\ = 135(\frac{1}{4}x^2-\frac{9}{4}x+\frac{9}{2}) + \\ 219(-\frac{1}{3}x^2+\frac{8}{3}x - 4) + \\ 627(\frac{1}{12}x^2-\frac{5}{12}x+\frac{1}{2}) \\ = 13x^2 + 19x + 45                     f(x)=i=0∑2​yi​li​(x)=y0​l0​(x)+y1​l1​(x)+y2​l2​(x)=135(41​x2−49​x+29​)+219(−31​x2+38​x−4)+627(121​x2−125​x+21​)=13x2+19x+45
至此,这个用于机密分享的多项式重构完成,而机密是自由系数,也就是45。
用图形化展示就是以下过程:

  • 绘制份额
   
  

  • 绘制相应抛物线
   
  

  • 机密就是与y轴交点
   
  Shamir机密共享的特点

前面提到的Shamir机密共享方案利用的实数进行操作,固然这种方法在数值上比力简朴,但其安全性并不高。即使两个点不足以美满描述抛物线,它们仍然能够泄露有关机密的部分信息。为了办理这一问题,Shamir机密共享方案是在有限域上定义的,如许可以有效地提高安全性。在有限域上,多项式的图形变得不连贯和分散,这使得攻击者无法基于观察到的点对底层函数做出有根据的猜测。有限域的引入有效地防止了从简朴点规复多项式的机密值。
以下是Shamir机密共享的一些重要特点:

  • 机密份额的巨细与原始数据巨细无关:每个机密份额的巨细不会超过原始机密的巨细,这确保了机密份额在存储和传输过程中的高效性。
  • 动态调整机密份额:当                                         k                                  k                     k 值固定,机密份额                                                    s                               i                                            s_i                     si​ 是可以动态增长或删除的,比如有到场方加入或离开不会影响其他的机密份额;
  • 机密份额的修改:可以通过天生新的多项式来轻松修改机密份额,同时保持原始机密数据不变。这种修改可以提拔安全性,因为袒露的机密份额在更新后变得无效。
  • 分级方案的实现:通过多项式的值的组合,可以实现分级方案。例如,可以根据到场方的重要性分配差别数量的机密份额。比如,给公司的CEO分配3个机密份额,给两位副总分配2个机密份额,每位高管分配1个机密份额。如许,对于                                         (                            3                            ,                            n                            )                                  (3, n)                     (3,n) 门限机密共享方案,执行与原始机密相干的活动需要至少3位高管共同到场,或者2位高管(其中包罗至少一位副总)到场,或者仅由CEO独自进行操作。
  这些特点使得Shamir机密共享不仅在保密性和机动性方面体现出色,还在多种实际应用场景中显现了其独特的优势。然而,机密共享的真正潜力还包罗其在加法和乘法操作中的支持。Shamir机密共享不仅可以用于分割和规复机密,还可以在分裂态下进行加法和乘法运算。这意味着在多个到场方合作的情况下,可以对机密进行复杂的操作,而最终的结果却不会袒露原始(机密)数据。
接下来的部分将具体先容Shamir机密共享怎样支持加法和乘法操作,以及这些特性怎样提拔其在实际应用中的代价。
对加法和乘法运算的支持

对加法运算的支持

在Shamir机密共享方案中,加法运算支持意味着,在不规复原始机密的情况下,通过到场方之间的计算,就可以直接得到机密值之和。这一特性使得在处理多个机密时,我们能够利用其分享的份额进行加法操作。
示例阐明
假设我们有两个机密值:                                             S                            1                                  =                         45                              S_1 = 45                  S1​=45 和                                              S                            2                                  =                         33                              S_2 = 33                  S2​=33。对应的多项式为:
对于                                              S                            1                                       S_1                  S1​,多项式为                                              f                            1                                  (                         x                         )                         =                         45                         +                         19                         x                         +                         13                                   x                            2                                       f_1(x) = 45 + 19x + 13x^2                  f1​(x)=45+19x+13x2;对于                                              S                            2                                       S_2                  S2​,多项式为                                              f                            2                                  (                         x                         )                         =                         33                         +                         21                         x                         +                         10                                   x                            2                                       f_2(x) = 33 + 21x + 10x^2                  f2​(x)=33+21x+10x2。
仍采用前文中                                    x                         =                         {                         2                         ,                         3                         ,                         6                         }                              x = \{2, 3, 6\}                  x={2,3,6} 作为甲乙丙三方的                                    i                         d                              id                  id。以其在多项式上的值                                              f                            1                                  (                         {                         2                         ,                         3                         ,                         6                         }                         )                              f_1(\{2, 3, 6\})                  f1​({2,3,6}) 和                                              f                            2                                  (                         {                         2                         ,                         3                         ,                         6                         }                         )                              f_2(\{2, 3, 6\})                  f2​({2,3,6}) 作为分配给各方的机密份额。
三方到场者甲、乙、丙分别持有机密的拆分份额,表格如下:
到场方idS1份额 (                                                  S                                               1                                                   i                                        d                                                                   S1_{id}                           S1id​)S2份额 (                                                  S                                               2                                                   i                                        d                                                                   S2_{id}                           S2id​)                                                  S                                               1                                                   i                                        d                                                                   S1_{id}                           S1id​ +                                                   S                                               2                                                   i                                        d                                                                   S2_{id}                           S2id​甲2135115250乙3219186405丙66275191146 如安在不规复原始机密的情况加,计算出来                                              S                            1                                  +                                   S                            2                                       S_1 + S_2                  S1​+S2​ 的结果呢?只需要甲乙丙分别计算各自当地机密份额的和                                    S                                   1                                       i                               d                                            +                         S                                   2                                       i                               d                                                 S1_{id} + S2_{id}                  S1id​+S2id​,然后对其进行插值计算。
                                                    l                               0                                      (                            x                            )                            =                                                   x                                  −                                               x                                     1                                                                               x                                     0                                              −                                               x                                     1                                                             ∗                                                   x                                  −                                               x                                     2                                                                               x                                     0                                              −                                               x                                     2                                                             =                                                   x                                  −                                  3                                                      2                                  −                                  3                                                 ∗                                                   x                                  −                                  6                                                      2                                  −                                  6                                                 =                                       1                               4                                                 x                               2                                      −                                       9                               4                                      x                            +                                       9                               2                                            l_0(x) = \frac{x-x_1}{x_0-x_1}*\frac{x-x_2}{x_0-x_2} = \frac{x-3}{2-3}* \frac{x-6}{2-6} = \frac{1}{4}x^2-\frac{9}{4}x+\frac{9}{2}                     l0​(x)=x0​−x1​x−x1​​∗x0​−x2​x−x2​​=2−3x−3​∗2−6x−6​=41​x2−49​x+29​
                                                    l                               1                                      (                            x                            )                            =                                                   x                                  −                                               x                                     0                                                                               x                                     1                                              −                                               x                                     0                                                             ∗                                                   x                                  −                                               x                                     2                                                                               x                                     1                                              −                                               x                                     2                                                             =                                                   x                                  −                                  2                                                      3                                  −                                  2                                                 ∗                                                   x                                  −                                  6                                                      3                                  −                                  6                                                 =                            −                                       1                               3                                                 x                               2                                      +                                       8                               3                                      x                            −                            4                                  l_1(x) = \frac{x-x_0}{x_1-x_0}*\frac{x-x_2}{x_1-x_2} = \frac{x-2}{3-2}* \frac{x-6}{3-6} = -\frac{1}{3}x^2+\frac{8}{3}x - 4                     l1​(x)=x1​−x0​x−x0​​∗x1​−x2​x−x2​​=3−2x−2​∗3−6x−6​=−31​x2+38​x−4
                                                    l                               2                                      (                            x                            )                            =                                                   x                                  −                                               x                                     0                                                                               x                                     2                                              −                                               x                                     0                                                             ∗                                                   x                                  −                                               x                                     1                                                                               x                                     2                                              −                                               x                                     1                                                             =                                                   x                                  −                                  2                                                      6                                  −                                  2                                                 ∗                                                   x                                  −                                  3                                                      6                                  −                                  3                                                 =                                       1                               12                                                 x                               2                                      −                                       5                               12                                      x                            +                                       1                               2                                            l_2(x) = \frac{x-x_0}{x_2-x_0}*\frac{x-x_1}{x_2-x_1} = \frac{x-2}{6-2}* \frac{x-3}{6-3} = \frac{1}{12}x^2-\frac{5}{12}x+\frac{1}{2}                     l2​(x)=x2​−x0​x−x0​​∗x2​−x1​x−x1​​=6−2x−2​∗6−3x−3​=121​x2−125​x+21​
通过计算:
                                         f                            (                            x                            )                            =                                       ∑                                           i                                  =                                  0                                          2                                                 y                               i                                                 l                               i                                      (                            x                            )                            =                            250                            (                                       1                               4                                                 x                               2                                      −                                       9                               4                                      x                            +                                       9                               2                                      )                                              +                            405                            (                            −                                       1                               3                                                 x                               2                                      +                                       8                               3                                      x                            −                            4                            )                                              +                            1146                            (                                       1                               12                                                 x                               2                                      −                                       5                               12                                      x                            +                                       1                               2                                      )                                              =                            78                            +                            a                            x                            +                            b                                       x                               2                                            f(x) = \sum_{i=0}^{2}y_il_i(x) = 250(\frac{1}{4}x^2-\frac{9}{4}x+\frac{9}{2}) \\ \\+ 405(-\frac{1}{3}x^2+\frac{8}{3}x - 4) \\ \\+ 1146(\frac{1}{12}x^2-\frac{5}{12}x+\frac{1}{2}) \\ \\= 78 + ax + bx^2                     f(x)=i=0∑2​yi​li​(x)=250(41​x2−49​x+29​)+405(−31​x2+38​x−4)+1146(121​x2−125​x+21​)=78+ax+bx2
直接计算常数项就好了,从计算结果可见,这个多项式的常数项为 78,即原始机密                                             S                            1                                       S_1                  S1​的值加上                                             S                            2                                       S_2                  S2​的值,验证了Shamir机密共享方案的同态加法支持。
通过这种方式,我们可以在不规复原始机密的情况下,通过到场方持有的份额计算出机密的和。这证明白Shamir机密共享对加法计算天然支持。
  对乘法运算的支持

在Shamir机密共享中,为了分享两个机密                                              s                            1                                       s_1                  s1​ 和                                              s                            2                                       s_2                  s2​,分别选取两个多项                                    p                              p                  p 和                                    q                              q                  q,满足                                              y                            i                                  =                         p                         (                         i                         )                              y_i = p(i)                  yi​=p(i) 和                                              z                            i                                  =                         q                         (                         i                         )                              z_i = q(i)                  zi​=q(i),且                                    p                         (                         0                         )                         =                                   s                            1                                       p(0) = s_1                  p(0)=s1​,                                    q                         (                         0                         )                         =                                   s                            2                                       q(0) = s_2                  q(0)=s2​。如果各到场方持有                                              s                            1                                       s_1                  s1​ 的份额                                    (                                   x                            i                                  ,                                   y                            i                                  )                              (x_i, y_i)                  (xi​,yi​) 和                                              s                            2                                       s_2                  s2​ 的份额                                    (                                   x                            i                                  ,                                   z                            i                                  )                              (x_i, z_i)                  (xi​,zi​),他们可以在当地将他们的份额相乘得到机密份额的乘积                                              s                            1                                  ∗                                   s                            2                                       s_1*s_2                  s1​∗s2​。通过这些新的份额                                    (                                   x                            i                                  ,                                   y                            i                                  ​                         ∗                                   z                            i                                  )                              (x_i, y_i​*z_i)                  (xi​,yi​​∗zi​) 可以计算两个原始机密的乘积,即                                              y                            i                                            z                            i                                  =                         (                         p                         ∗                         q                         )                         (                         i                         )                              y_iz_i = (p * q)(i)                  yi​zi​=(p∗q)(i) 而且满足                                    (                         p                         ∗                         q                         )                         (                         0                         )                         =                                   s                            1                                            s                            2                                       (p * q)(0) = s_1s_2                  (p∗q)(0)=s1​s2​。
但这里存在两个问题:

  • 多项式                                         (                            p                            ∗                            q                            )                                  (p * q)                     (p∗q) 的系数不是随机值,而是要依赖于各方共同计算;
  • 多项式的次数发生了变化。如果                                         p                                  p                     p 和                                         q                                  q                     q 的次数都是                                         k                            −                            1                                  k - 1                     k−1 次,也就是各自需要                                         k                                  k                     k 个机密份额来重建机密,那么                                         (                            p                            ∗                            q                            )                                  (p * q)                     (p∗q) 多项式的次数就变成了                                         2                            k                            −                            2                                  2k-2                     2k−2 次,也就是它将会需要                                         2                            k                            −                            1                                  2k-1                     2k−1 个份额来重建                                                    s                               1                                                 s                               2                                            s_1s_2                     s1​s2​。
这些问题在安全多方计算中带来了以下寻衅:
性能问题:多项式次数的增长导致计算复杂度显著增长。需要更多的计算资源来处理更高次数的多项式,而且需要更多的到场方来重建机密,这会影响整个计算过程的效率。
通讯开销:为了计算和共享新天生的份额,需要在到场方之间进行更多的通讯。这不仅增长了通讯的负担,还可能导致更高的延迟,特殊是在到场方分布广泛的情况下。
安全性问题:多项式系数不是随机的,可能会导致机密的部分信息泄露。在实际应用中,需要额外的步骤来确保系数的随机性和保密性,从而增强团体安全性。
为了办理这些问题,后续研究开发了多种基于 Shamir 机密共享的改进算法协议来更好的支持在机密之间进行的运算,尤其是乘法运算。
总结

本文从机密共享和门限机密共享出发,先容了Shamir机密共享方案的原理、计算过程以及其对于多方到场计算的支持,重要贡献如下:
Shamir机密共享方案的全面先容:具体描述了Shamir机密共享方案的基本概念,包罗怎样将一个机密分割成多个份额,并先容了怎样利用拉格朗日插值法规复原始机密。
图形化直观展示:通过具体的示例和图示,展示了Shamir机密共享方案的工作原理,包罗机密的分割、机密份额的分配及其重构过程。
多方到场计算的支持:探讨了Shamir机密共享方案对多方计算的支持,特殊是其在支持加法和乘法运算方面的能力。通过示例具体阐明白如安在不规复原始机密的情况下进行加法运算,并探讨了其在乘法运算中的寻衅。
接下来仍需要研究的内容:
乘法运算的改进:由于Shamir机密共享在乘法运算上的限制,多项式的系数不是随机的,且多项式次数增长导致计算复杂度提高。因此,后续需要探究新的协议是怎样来办理这些问题,以更高效、安全地支持机密之间的乘法运算。
应用拓展:Shamir机密共享方案在多方安全计算和呆板学习中的应用潜力巨大,后续会探究怎样利用Shamir机密共享方案处理加密数据的呆板学习训练和推断任务。
参考

  

  • How to Share a Secret

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表