目录
Shamir秘密共享方案,叫做Shamir Secret Sharing, SSS。是由Shamir提出的一个分享密钥(本文秘密和“密钥”同义)的局部、并共同计算密钥的方法。
设计目的
假设公司A,B,C有一个密钥可以打开共同的仓库房门,为了防止保管人不在,或者被侵害,或者钥匙被偷,或者监守自盗。需要设计一个分享秘密的方案。
一个直观的方案就是将秘密分开为3份,给ABC各自钥匙的一部分,他们的子密钥合起来才能打开房门。
数学定义
引入一个临界点(Threshold,也叫门槛)的概念。N个分享秘密的人,只要凑够k个人(k<=N)就可以重建秘密。k就是这个临界点。
k<N,大大增加了使用的便利性和可扩展性。任意的k个人合起来都可以重建秘密,少于k个人无法重建秘密。
k=N,表明方案中所有的参与者需要贡献出自己的子秘密,才能合成所需的秘密。
举例
一个(k,N) 临界点方案,其共享秘密是 S.
对一个k-1次的多项式,取 N个不一样的点(i,f(i))。那么只要凑够 k个点就可以接出系数(a0,a1,……ak-1)。
只要把N个点分给N个人,设某个系数为共同秘密(如a0是秘密),那么就等于实现了SSS算法。
更多内容如算法的不足和改进,参考: