Herzber的动态秘密分享方案

秘密分发

类似于Shamir的方案,分发者D:

1.选择一个 t 阶随机多项式。

f^{(0)}(x)=s+\sum_{i=1}^{t-1}a_{i}^{(0)}x^{i}

其中a_{i}^{(0)}\epsilon \:[1,p-1]

2.将n个秘密碎片

s_{i}^{0}=f(i)

分发给参与者P_{i}.

碎片更新

已经掌握碎片s_{i}^{(T-1)}的参与者P_{i}T时刻开始时,执行如下步骤将自己的碎片更新为s_{i}^{(T)}

        1.选择 t - 1 个随机数

\delta _{(i,1)}^{(T-1)},...,\delta _{(i,t-1)}^{(T-1)}

        构造 t - 1 次多项式

\Delta _{i}^{(T-1)}(x)=0+\sum_{j=1}^{t-1}\delta _{i,j}^{(T-1)}x^{j}

        显然有\Delta _{i}^{(T-1)}(0)=0

        2.对于所有的 1\leq j\leq n,j\neq i ,计算

u_{(i,j)}^{(T-1)}=\Delta _{i}^{(T-1)}(j)

        并发送给P_{j},另计算

u_{(i,i)}^{(T-1)}=\Delta _{i}^{(T-1)}(i)

        自己保留。

        3.对于所有的 1\leq j\leq n,j\neq i ,在收到其他参与者发来的

u_{(j,i)}^{(T-1)}=\Delta _{j}^{(T-1)}(i)

        后,加上自己的

u_{(i,i)}^{(T-1)}=\Delta _{i}^{(T-1)}(i)

        按照如下公式更新自己的碎片

s_{i}^{(T)}=s_{i}^{(T-1)}+\sum_{j=1}^{n}u_{(j,i)}^{(T-1)}

        4.除保留新碎片s_{i}^{(T)}外,销毁其他数据

秘密重构:

设当前碎片更新的时间节点为T^{\:{}'}, t 个参与者P_{1},P_{2},...,P_{t} 进行如下操作以重构出秘密 s :

        1.向其他人发送自己的s_{i}^{(T\:^{'})}

        2.计算\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T^{'})},其中\lambda _{i}=\prod _{0\leq j \leq t-1,j \neq i}(\frac{j}{j-i}) 为Lagrange插值系数

数学归纳法证明:

0时间节点时,有

  ​​​\sum_{i=1}^{t}\lambda _{i}s_{i}^{(0)}\\=\sum_{i=1}^{t}\lambda _{i}f^{(0)}(i)\\ =f^{(0)}(0)\\=s

\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T-1)}=s,则

\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T)}\\ =\sum_{i=1}^{t}\lambda _{i}(s_{i}^{(T-1)}+\sum_{j=1}^{n}u_{(j,i)}^{(T-1)})\\ =\sum_{i=1}^{t}\lambda _{i}(s_{i}^{(T-1)}+\sum_{j=1}^{n}\Delta _{j}^{(T-1)}(i))\\ =\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T-1)}+\sum_{i=1}^{t}\sum_{j=1}^{n}(\lambda _{i}\Delta _{j}^{(T-1)}(i))\\ =\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T-1)}+\sum_{j=1}^{n}\sum_{i=1}^{t}(\lambda _{i}\Delta _{j}^{(T-1)}(i))\\ =\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T-1)}+\sum_{j=1}^{n}\Delta _{j}^{(T-1)}(0)\\ =\sum_{i=1}^{t}\lambda _{i}s_{i}^{(T-1)}+0\\ =s

综上,在任意的T^{\:{}'}时间节点,总有 \sum_{i=1}^{t}\lambda _{i}s_{i}^{(T^{'})}=s

心得:

由于拉格朗日插值公式的构造特殊性,每个参与者P_{i},发出的u_{(i,j)}^{(T-1)}=\Delta _{i}^{(T-1)}(j),根据拉格朗日插值公式,都能恢复出\Delta _{i}^{(T-1)}(0)=0,故而能够在秘密重构中,将所有人的u_{(i,j)}汇集起来,恰好能够消除。只剩下秘密s。

同时又因为自己收到的是u_{(j,i)}^{(T-1)}=\Delta _{j}^{(T-1)}(i),在经过s_{i}^{(T)}=s_{i}^{(T-1)}+\sum_{j=1}^{n}u_{(j,i)}^{(T-1)}更新后得到新碎片,无法通过拉格朗日插值公式求得原有秘密碎片,或根据在销毁数据后,根据原有秘密碎片得到新秘密碎片。

问题:

由于该方案是基于Shamir的方案设计的,因此也只能抵抗被动攻击者,当分发者Deliver分发虚假的秘密碎片s_{i}^{(T\:^{'})},或者在碎片更新过程中任意一个参与者P_{i}提交虚假的u_{(i,j)},将会导致碎片更新失败.

改进:

在碎片更新阶段:1,2,5,6这四步相同,第3,4步做出了验证

已经掌握碎片s_{i}^{(T-1)}的参与者P_{i}T时刻开始时,执行如下步骤将自己的碎片更新为s_{i}^{(T)}

        1.选择 t - 1 个随机数

\delta _{(i,1)}^{(T-1)},...,\delta _{(i,t-1)}^{(T-1)}

        构造 t - 1 次多项式

\Delta _{i}^{(T-1)}(x)=0+\sum_{j=1}^{t-1}\delta _{i,j}^{(T-1)}x^{j}

        显然有\Delta _{i}^{(T-1)}(0)=0

        2.对于所有的 1\leq j\leq n,j\neq i ,计算

u_{(i,j)}^{(T-1)}=\Delta _{i}^{(T-1)}(j)

        并发送给P_{j},另计算

u_{(i,i)}^{(T-1)}=\Delta _{i}^{(T-1)}(i)

        自己保留。

        3.对 t - 1 个参数,计算并广播

B_{(i,j)}^{(T-1)}=g^{\delta _{(i,j)}^{(T-1)}}

        作为对 \delta _{(i,1)}^{(T-1)},...,\delta _{(i,t-1)}^{(T-1)} 的签名。

        4.对于所有的 1\leq j\leq n,j\neq i ,在收到其他参与者发来的

u_{(j,i)}^{(T-1)}=\Delta _{j}^{(T-1)}(i)

        以及

B_{(j,i)}^{(T-1)}=g^{\delta _{(j,i)}^{(T-1)}}

        后,判断

g^{u_{(j,i)}^{(T-1)}}=\prod_{k=0}^{t-1}(B_{(j,k)}^{(T-1)})^{i^{k}} 

        是否成立。(为保证形式一致,定义  \delta _{(j,0)}^{(T-1)}=0 )

        上述验证公式推导过程如下:

g^{u_{(j,i)}^{(T-1)}}\\ =g^{\Delta _{j}^{(T-1)}(i)}\\ =g^{\sum_{k=0}^{t-1}\delta _{(j,k)}^{(T-1)}\cdot i^{k}}\\ =\prod_{k=0}^{t-1}g^{\delta _{(j,k)}^{(T-1)}\cdot i^{k}}\\ =\prod_{k=0}^{t-1}(B_{(j,k)}^{(T-1)})^{i^{k}}\\

        5.若所有人发来的更新信息验证成功,则加上自己的

u_{(i,i)}^{(T-1)}=\Delta _{i}^{(T-1)}(i)

        按照如下公式更新自己的碎片

s_{i}^{(T)}=s_{i}^{(T-1)}+\sum_{j=1}^{n}u_{(j,i)}^{(T-1)}

        6.除保留新碎片s_{i}^{(T)}外,销毁其他数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值