【密码学】一文读懂SHAMIR门限方案

简介: 【密码学】一文读懂SHAMIR门限方案

[密码学】一文读懂SHAMIR门限方案

秘密共享-SHAMIR门限方案

前言

先来看一个故事,1月8日,贵州省锦屏县平秋镇圭叶村开始了第七届村主任换届选举。这个藏身大山深处的偏僻小山村,最近刚刚因一枚奇特的公章而成为了人们关注的焦点。为了在村里进行民主理财管理,一年多前,村民想出了一个点子,把村财务公章分成五瓣交由5位选出的村民代表掌管,专门审核村干部的开销。近日消息一传出后,顿时引起了外界的广泛热议。这枚“五瓣章”更是被网友称为史上最牛公章。

那么在密码学当中,有没有这种方案,必须满足一定人数才能解出来整个秘密消息,而少于预设的人数阈值则解不出来这个秘密消息呢?

Shamir(t,w)门限方案

下面来简单聊聊Shamir提出的门限方案

初始化阶段

庄家(Dealer),后文我们把庄家记作D,在 当中选择w个不同的非0元素,分别记作 其中 ,此处显然要求有限域当中元素个数要大于w的,然后D把 的值发送给 ,这里 是公开的。

分配共享阶段

然后假设D需要共享的秘密信息为 。D在 当中独立随机的选择t-1个元素 。

然后根据如下的规则计算 其中

然后,D将 的值发送给 作为共享。

还原秘密的值

在上面的方案当中,庄家构造了一个次数至多是t-1的一个多项式,此多项式的常数项即为需要共享的秘密信息。然后对于每个参与者得到的是该多项式上面的一个点 。

假设参与者 需要确定秘密K的值,那么我们可以得到

其中 是庄家D选择的多项式。然后根据上面所得到的坐标,我们可以得到t个具有t个未知数的线性方程组,如果这些方程是线性无关的,这样我们就可以得到唯一解,因此我们可以最终求得 也就是需要共享想秘密信息。

有关如何通过坐标来求得多项式,这就涉及到我比较头疼的内容了,因为我高数这块学的实在是不咋地,这个可以用拉格朗日插值法来搞,不过对于上面的图当中的例子,直接解方程问题也不大,下面我先来带着读者用解方程的方法来搞一下。

解方程实现

对于每个参与者能拿到的坐标如下:

、、

然后我们带入上面的多项式,得到下面的三个式子

我们要在上面这一堆式子当中找到 当中找到在 的解。

这个用高斯消元法,直接来解,因为我们实际上只需要解出来 然后呢,消元的时候,就可以有目的性的,我们直接剩下我们所需要的。

然后下面我们手动来算一下(我才不是为了水字数),第一行乘以14 然后和第二行相加。然后第一行乘以12加到第三行。

然后,第二行乘以15加到第一行,

然后解得 ,因此的最终庄家所共享的秘密K = 13,和上面我们描述的一致。

拉格朗日插值法

拉格朗日插值公式假定p是素数, 是 中的不同元素,假定是当中的元素,无需不同,存在次数至多为m的唯一多项式,使得,并且多项式如下:

注意对于拉格朗日插值法当中的运算,也都是基于有限域上来计算的。我们带入一下前文所用到的参数,可得:

同样的注意到我们是不需要计算出来完整的多项式的,我们只需要计算 。然后我们将 x = 0带入公式(1),可得

然后注意到最开始有关shamir门限方案有关 的说明,我们可以提前预计算

因此,对于共享的秘密信息K我们可以写成

好了,通过上面得到的公式(3)我们来计算一下上面的例子。

这样,我们就可以计算出来最终共享秘密的值

参考资料

相关文章
|
机器学习/深度学习 并行计算 安全
安全多方计算之一:什么是安全多方计算
安全多方计算之一:什么是安全多方计算
2119 0
|
人工智能 IDE 定位技术
AI IDE正式上线!通义灵码开箱即用
作为AI原生的开发环境工具,通义灵码AI IDE深度适配了最新的千问3大模型,并全面集成通义灵码插件能力,具备编程智能体、行间建议预测、行间会话等功能。
1474 13
|
机器学习/深度学习 人工智能 安全
安全多方计算之六:秘密共享
安全多方计算之六:秘密共享
1249 0
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
919 4
|
JavaScript
Vue3骨架屏(Skeleton)
该文章介绍了一个名为Skeleton的Vue组件,用于创建加载时的占位符界面,包含多种可配置项如按钮、输入框、图像等,并支持动画效果。
832 0
Vue3骨架屏(Skeleton)
|
存储 安全 算法
加盐哈希的科学原理及其重要性
【8月更文挑战第31天】
1329 0
|
监控 安全 网络安全
|
监控 网络安全 Perl
使用 Scapy 库编写 Ping of Death 脚本
使用 Scapy 库编写 Ping of Death 脚本
|
机器学习/深度学习 数据采集 算法
【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)
【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)
1228 3

热门文章

最新文章