哈希链遍历的计算存储权衡与可验证秘密共享
哈希链遍历协议优化
在哈希链遍历中,存在一些关键的计算和存储规则。对于 $S_{k + 1}$ 和 $S_k$ 这两个部分的计算,$S_{k + 1}$ 的计算不能依赖于 $S_k$ 的计算结果,因为预存储的链接 $y_{k + 1}$ 将它们分隔开。根据引理 4,$y_{k + 1}$ 在暴露之前不能被丢弃,而它的暴露显然要在 $S_{k + 1}$ 的所有计算完成之后。
同时,$S_k$ 中的链接不能在 $S_{k + 1}$ 中的链接之前暴露,因为 $S_k$ 位于 $S_{k + 1}$ 的左侧。所以,$S_k$ 中的相关链接必须在交换后及时准备好暴露。而且,提前计算结果并不会影响其准备就绪的状态,因此 $S_{k + 1}$ 中的相关链接也必须在交换后及时准备好暴露。
通过反复进行上述的计算交换,最终可以得到一个遍历相同哈希链的协议,并且具有所有 $S_{k + 1}$ 的计算都在 $S_k$ 的任何计算之前完成的特性。
有这样一个定理:设 $P$ 是 $m = 1$ 时长度最优的哈希链遍历协议,$\ell$ 是 $P$ 允许存储的最大链接数,那么 $P$ 可以遍历大小为 $\ell(\ell + 1)/2$ 的哈希链。证明采用对 $\ell$ 进行归纳的方法。当 $\ell = 1$ 时,结论显然成立。假设对于 $\ell - 1$ 结论成立,即存在一个协议在存储限制为 $\ell - 1$ 时可以遍历大小为 $(\ell - 1)\ell/2$ 的哈希链,下面证明对于 $\ell$ 结论也成立。根据引理 5,$P$ 在初始化时必须存储 $\ell$ 个链接。根据引理 7,$P$ 可以看作是两个独立子协议的
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



