密钥分享(secret sharing)算法

密钥分享(secret sharing)算法

  • 将每条信息 x 拆散成多个部分 x1,x2,……,xn ,并将它们分发给多个参与方 S1,S2,……,Sn ,每个参与方拿到的都是原始数据的一部分;
  • 一个或少数几个参与方无法还原出原始信息,只有大家把各自的数据凑在一起时才能还原真实数据

Shamir 密钥分享算法

  • 分发者将密钥 x 分解为 n 份,分发给 n 个持有者;
  • 任意不少于 k 个持有者均能恢复密钥,而任意少于 k 个持有者均无法得到密文。

核心思想

  • 将密钥的值设为一个 N 阶随机多项式中的常量参数(a0),然后在该随机多项式上随机选 K 个点的坐标,这些坐标就是关于密钥的分片。

加密

  • 对于以上的多项式,任取 n 个数 x1,x2,……,xn,分别带入多项式,得到 n 个密钥对,分发给 n 个持有者;

解密

  • 假设取得了 k ( k<n )个密钥对{x1,y1},{x2,y2},……,{xk,yk},可以得到如下的方程:
  • 由矩阵乘法或者 Lagrange 插值法均可求的 a0,即为明文;

实际使用

  • 重要场所的管理:通行密码通常不能由单个持有者保存,而是多个持有者分别持有部分;
  • 遗嘱生效:将密钥分给多人保管,只有当大多数人到场时,遗嘱才会生效;

参考:

  1. Shamir密钥分享算法简析
  2. 密钥分享Secret Sharing介绍
  3. 密钥繁多难记难管理?认识高效密钥管理体系

results matching ""

    No results matching ""