数学构造沙米尔的门限秘密共享算法 下载本文

门限共享秘密的数学设计

1.定义

在密码学中,秘密共享是指一个方法用于分发一个秘密在一组参与者,每个分配一个共享的秘密。这个秘密只能将每个人的密钥共享组合在一起才能解密;在他们自己的个人密钥是无法单独使用的。

2.目的

a.给了严格的控制和消除单点漏洞。 b.个人密钥持有人不能改变/访问数据。

3.数学定义

a.目标是将一些数据D分为n块,每块取名D1、D2…,Dn: 知道的k或多与D的n个模块使D容易可计算的。

b.知道的任何k-1或更少的子块使D完全隐藏(在某种意义上,其所有可能的值也同样无法解密)。

这个方案被称为(k,n)阈值方案。如果k = n然后需要所有参与者一起重建的秘密。

4.沙米尔的秘密共享:

假设我们想要使用(k,n)阈值方案分享我们的秘密S,k < n。 随意选择(k-1)系数a1,a2,a3…ak-1,让S是a0

f(x)?a0?a1x?a2x?.....?ak?12k?1

构造一个点(i,f(i)),i=1,2,3.....n

鉴于任何子集的这些k,我们可以找到的系数的多项式插值,然后评估a0 = S,这是秘密。 例子: S=1234;

n = 6和k = 3,获得随机整数 a1 = 94和a2 = 166 共享密钥:

(1,1494), (2,1942) (3,2598) (4,3402) (5,4414) (6,5614) 我们给每个参与者不同的单点(包括x和f(x))。 为了重构秘密任何3点就够了

(x0,y0)?(2,1924),(x1,y1)?(4,3402),(x2,y2)?(5,4414)UsingLagrangepolynomials2l0?x?x1/x0?x1*x?x2/x0?x2?x?4/2?4*x?5/2?5?1/6x?11/2x?31/3l1?x?x0/x1?x0*x?x2/x1?x2?x?2/4?2*x?5/4?5??1/2x?31/2x?5l2?x?x0/x2?x0*x?x1/x2?x1?x?2/5?2*x?4/5?4?1/3x?2x?22/3222f(x)??j?0yjlj(x)?1942(1/6x?11/2x?31/3)?3402(?1/2x?31/2x?5)?4414(1/3x?2x?22/3)2222f(x)?1234?166x?94x

期待解决: 1.添加用户怎么办? 2.删除用户怎么办?

3.我们希望持有n块的用户互相做身份认证?

基于沙米尔的门限秘密共享算法,提出动态门限秘密算法。