Shamir秘密共享协议
基于挂锁的 门限
有这样的一条新闻,某小区业主使用66把锁串联锁住了小区大门,保证只有小区住户才能打开其中一把锁,打开大门。
这种将锁串联的操作实现了一种可以理解为“或”的逻辑。从另一种角度理解,这可以被看作一种
进一步的,通过将锁并联,我们可以构造出“与”逻辑,从而实现
例如,当1
2
3
4方案一:
A B
A C
B C1
2
3
4方案二:
a
b
c
下面的证明可略过
假设锁不可复制,但是钥匙可以复制。我们接下来研究
- 必要性:对于任意的
个参与者,总是存在至少一把无法打开的锁。 - 充分性:任意的两组
个参与者不能存在共同的无法打开的锁,否则这意味着我们可以找出 个无法开门的参与者。
假设锁数量为
进一步的,对于一个参与者
在Shamir的论文中,他提到一个
拉格朗日插值
拉格朗日插值是Shamir秘密共享的核心。对于给定的
直觉上来看,为了让该多项式在
因此我们可以构造
可以看到,当
可以证明,对于
Shamir协议
协议描述
Shamir对之前提到的
- 可以从
中的任意 份数据简单的计算出 - 即使持有
中的任意小于 份数据,也无法得知任何关于 的信息
通过将上述拉格朗日插值的过程倒转过来,我们很容易得到Shamir秘密共享的基本思想:
给定一个
其中
协议安全性证明
在实际应用中,该多项式可以被定义在素域
因此
注意上式中,只有黄色的部分不是常量。由于我们的操作在素域上进行,上式给出了一个
参考资料
- Shamir1979 - How to share a secret
- https://crypto.stackexchange.com/questions/64082/formal-proof-of-shamirs-secret-sharing-scheme-security