几个秘密共享方案

秘密共享是信息安全和数据保密中的重要手段,它在重要信息和秘密数据的安全保存、传输及合法利用中起着非常关键的作用 。
秘密共享由两个算法——秘密份额的分配算法和秘密的恢复算法构成 。
在执行秘密份额的分配算法时 , 分发者将秘密分割成若干份额在一组参与者中进行分配,使得每个参与者都得到关于该秘密的一个秘密份额;
秘密的恢复算法保证只有参与者的一些特定的子集才能有效的恢复秘密,其他子集不能有效地恢复秘密,甚至得不到关于秘密任何有用信息[1] 。
[1]张福泰, 赵福祥, 王育民. 可验证秘密分享及其应用[J]. 电子学报, 2002, 30(10):1519-1525.
1. 秘密共享分案
最早被提出的秘密共享模型是门限秘密共享模型 。
在(t,n) 门限秘密共享体制中,秘密的持有者,把秘密分割成 n 个份额,分别分配于n个参与者 , 使得只要获得这n个份额中的至少t个才可能有效地恢复出原来的秘密,而任何少于t个的份额集合都不能恢复出原来的秘密,得不到关于原秘密任何有用的信息 。
分发秘密
首先选择有限域Fq(q
n) 。设参与者集合为P={P1,P2 , …,Pn},t为门限值,秘密信息s 。选择Fq上的n个互不相同的非零元素x1,x2,……,xn,公开这些元素 。
随机选择
上的t-1次多项式
,其中a0=s,也就是秘密信息 。分别计算
 , 其中i=1,2 , …,n,将(
)作为子秘密分发给成员Pi 。
合并秘密
任意t个成员可以将其持有的子秘密共享 , 从而通过拉格朗日插值公式恢复出子秘密s 。设t个成员的子秘密为{(
) , … , (
)} , 拉格朗日插值公式如下图:
由多项式理论可知 , 一个t-1次多项式在t个不同的点及取值就可求解出多项式函数 , 于是可以求出y=f(x) 。由此计算出f(x0)=s=a0 。
不足:
秘密共享其实是包含了一些可能不切实际的假设的——秘密的分发者和参与者都是诚实的,然而, 在现实生活中, 参与者可能是不诚实, 他可能会故意或是由于一些非主观因素(如网络传输错误 )提供了错误的份额, 这样会导致也无法正确地恢复秘密[2] 。
为了检验共享的正确性,出现了可验证的秘密共享方案 。一个正常执行的可验证秘密共享方案能够保证:在秘密分发阶段, 分发者发送给参与者的共享是正确的;在秘密恢复阶段, 参与者提交的共享也是正确的[2] 。
[2]石润华, 黄刘生. 一种简单的可验证秘密共享方案[J]. 计算机应用, 2006(08):77-79.
2. 可验证的秘密共享方案
可验证的秘密共享方案和可验证秘密共享方案是最早出现的也是现在应用最多的两个秘密共享方案 , 其中可验证秘密共享方案是最早提出的不需要可信机构的计算安全的秘密共享方案 , 而是最早提出的无条件安全的秘密共享方案[1] 。
[1]张福泰, 赵福祥, 王育民. 可验证秘密分享及其应用[J]. 电子学报, 2002, 30(10):1519-1525.
什么是计算安全?什么是无条件安全?
评估密码系统安全性主要有三种方法:
(1)无条件安全性
这种评价方法考虑的是假定攻击者拥有无限的计算资源,但仍然无法破译该密码系统 。
(2)计算安全性
这种方法是指使用目前最好的方法攻破它所需要的计算远远超出攻击者的计算资源水平,则可以定义这个密码体制是安全的 。
(3)可证明安全性
这种方法是将密码系统的安全性归结为某个经过深入研究的数学难题(如大整数素因子分解、计算离散对数等),数学难题被证明求解困难 。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关,没有完全证明问题本身的安全性,并给出它们的等价性证明[3] 。
[3]
算法参数设置
设p、q是大素数,且有q |(p-1) , g是乘法群
中的一个p阶元素 , 这些参数都是公开的 。
分发秘密
设参与者集合为P={P1 , P2 , …,Pn},t为门限值,秘密信息s 。
随机选择
上的t-1次多项式
。每个节点Pi分别计算
,其中i=1,2,…,n,将
作为子秘密分发给成员Pi 。并且广播承诺
其中i={0,1,2,...  , t-1} 。
共享验证
每个节点
检验它所接受的
是否满足等式:
。如果等式不成立,那么节点 Pi所收到的共享
是无效的 。
等式为什么会成立:
合并秘密
每一参与者p向其他参与者广播自己的共享
,当接受到的
值大于t个,且均被验证为有效时,通过拉格朗日插值计算恢复出秘密值s 。
这一方案可抵抗(n-1)/2个恶意的参与者,由于
被公开;所以该方案只是计算安全的(根据密码学中的计算离散对数的困难性可得(

几个秘密共享方案

文章插图
中已知g、
和q是很难算出来
的 。[2]
[2]石润华, 黄刘生. 一种简单的可验证秘密共享方案[J]. 计算机应用, 2006(08):77-79.
3. 可验证的秘密共享方案
设g,h是群
的两个生成元,但
未知,记 承诺
,具体 VSSS算法如下:
初始化阶段
秘密分发者选择两个t-1阶多项式,其中秘密为s , t为随机数,
公开承诺
分发秘密
对 i = 1 , 2,...,n,计算
, 并将
发送给对应的参与者Pi 。
共享验证
每个参与者P使用下面公式验证从秘密分发者收到的秘密份额
注:该验证利用了承诺加法同态性质
秘密重构
在秘密重构时,参与者
首先利用上面验证公式验证其他参与者发送过来的
然后使用拉格朗日插值法进行秘密重构 。
除此之外秘密共享还有可公开验证秘密共享(PVSS),先应秘密共享()等等 。其他内容以后慢慢分享 , ,,
参考内容:
秘密共享方案和可验证的秘密共享方案可验证加密共享哈哈的博客-CSDN博客
【几个秘密共享方案】秘密共享算法算法的博客-CSDN博客基于承诺的可验证秘密共享方案:VSS_孙绿如叶~的博客-CSDN博客