门限秘密分割

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

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

子密钥生成算法

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

复原秘密

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

利用 f(x)=\sum_{j=1}^{k}{f(i_{j}) \prod_{l=1,l!=j}^{k}{\frac{x-i_l}{i_j-i_l}}}modp

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

实践应用

image-20230309110107313