Shamir 门限方案|秘密共享|拉格朗日插值|密码学

门限秘密分割

秘密 s 被分成 n 份毫无相关的部分信息,每一部分信息称为一个子密钥,由一个参与者持有,只有至少拥有 k 份子密钥时才能恢复出秘密 s ,这种方案为 (k, n)-秘密分割门限方案 k 称为方案的门限值

Shamir门限方案就是一种门限秘密分割方案,他是基于拉格朗日插值公式的

子密钥生成算法

  • 秘密为 S
  • 取大素数 p
  • 确定 n ,作为子密钥的持有者的数量
  • 确定 k ,作为门限值
  • 1 p 的有限域中随机取 k-1 个数,记做 a 1 , a 2 , . . . a k − 1 a_1,a_2,...a_{k-1} a 1 , a 2 , . . . a k 1 ,作为 k-1 次多项式 f(x) 的非常数项的系数
  • 写出多项式为 f ( x ) = S + a 1 x + a 2 x + . . . + a k − 1 x k − 1 f(x)= S +a_1x+a_2x +...+a_{k-1}x^{k-1} f ( x ) = S + a 1 x + a 2 x + . . . + a k 1 x k 1 ,共n项, S 是秘密,作为常数项放在多项式内
  • n 个持有者记做 P 1 , P 2 , . . . . P n P_1,P_2,....P_{n} P 1 , P 2 , . . . . P n P i P_i P i 分到的子密钥为 f ( i ) f(i) f ( i )
  • 销毁多项式

复原秘密

复原秘密至少需要 k 个子密钥

利用 f ( x ) = ∑ j = 1 k f ( i j ) ∏ l = 1 , l ! = j k x − i l i j − i l m o d p f(x)=\sum_{j=1}^{k}{f(i_{j}) \prod_{l=1,l!=j}^{k}{\frac{x-i_l}{i_j-i_l}}}modp f ( x ) = j = 1 k f ( i j ) l = 1 , l ! = j k i j i l x i l m o d p

而我们如果只需要计算秘密,就只需要将x=0带入,得到的数就是所需要的秘密

在这里插入图片描述


版权声明:本文为weixin_51216553原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。