Shamir密钥分享算法简析
简述
秘密共享技术是密码学和信息安全的一个重要研究内容,ShamirShamir密钥分享算法最早是由ShamirShamir和BlacklyBlackly在1970年基于LagrangeLagrange插值和矢量方法提出的,其基本思想是分发者通过秘密多项式,将秘密ss分解为nn个秘密分发个持有者,其中任意不少于kk个秘密均能恢复密文,而任意少于kk个秘密均无法得到密文的任何信息。
实际应用
比如在门限体系中,为了保证信息安全性,一个秘密通常不能由单个持有者保存。比如一些重要场所的通行,比如遗嘱的生效等,必须将秘密分由多人保管并且只有当多人同时在场时秘密才能得以恢复。在这些场合,就需要这样一套的密钥分享技术。
算法思路
表示
ShamirShamir密钥共享算法由一个二元数(k,n)(k,n)表示,其中nn表示将明文ss加密为nn个ShadowShadow,kk表示必须至少同时拥有kk个ShadowShadow才能解密获得成明文。
加密
对于待加密的明文s∈ Zps∈ Zp(pp为大素数),在有限群GF(p)GF(p)任取k−1k−1个随机数a1,a2,…,ak−1a1,a2,…,ak−1,并令a0=sa0=s,从而构造如下的多项式:
对于这个多项式,任取nn个数x1,x2,x3,…,xnx1,x2,x3,…,xn分别带入多项式得到nn个密钥对:
分发给nn个持有者。
解密
假设得到了kk个密钥对{x1,y1}{x2,y2}…{xk,yk}{x1,y1}{x2,y2}…{xk,yk},我们可以得到如下方程(运算均在GF(p)GF(p)):
由矩阵乘法或者LagrangeLagrange插值法均可求的a0a0即为明文ss。
安全性
由伽罗华域以及矩阵运算的性质可知该算法的安全性是显然的。
补充
当k=nk=n的时候,Shamir算法还有一种用异或运算的实现:任取n−1n−1个随机数(r1,r2,r3,…,rn−1)(r1,r2,r3,…,rn−1),对于明文ss计算
rn=r1⊕r2⊕r3…⊕rn−1rn=r1⊕r2⊕r3…⊕rn−1
这样就可以通过将这nn个数全部进行异或来得到明文,同时,任意一个ShadowShadow都不会泄露有关秘密的任何信息。
Shamir密钥分享算法简析相关推荐
- Shamir密钥分享算法 python实现
Shamir's Secret Sharing:维基百科参考 Shamir密钥分享的算法大致内容是:把一个真实值拆分成好多份,每一份都不同且不是真实值,而只有明确知道了固定份数的内容,才能破解秘钥.详 ...
- STL中sort算法简析
STL里sort算法简析 文章目录 STL里sort算法简析 一.引入 二.正解 三.源码 **`sort的源码`**: **`其中,__introsort_loop便是内省式排序:`** 插入排序 ...
- 离散数学中Warshall算法简析
离散数学中Warshall算法简析 最近学了离散数学的图论,突然感觉离散数学的作用十分强大,相信学好离散数学中的算法,编程的魅力也不言而喻.闲话不多说,这篇博客中记录的是Warshall算法的简单解析 ...
- 网易云音乐的个性化推荐算法简析
本文是一个云村九级用户,根据多年的使用体验,对网易云音乐个性化推荐系统(私人FM,每日歌曲推荐,推荐歌单)运作模式的猜测分析. 很早以前刚开始使用网易云音乐的时候,我就对其个性化推荐系统有过一些猜测, ...
- [scRNA-seq]单细胞转录因子分析——SCENIC算法简析
转录因子(transcription factors, TFs)是直接作用于转录组上,调控DNA转录的蛋白质.它通过与DNA特定区域结合,促进(activator)或阻止(repressor)DNA的 ...
- 基于python3.7 numpy scipy matplotlib sklearn的机器学习笔记5—监督学习之KNN、DT、NB算法简析
1.KNN :通过计算待分类数据点,与 已有数据集中的所点距离.取距离最小的前 K个点,根据"少数服从 多数"的原则,将这个据点划分为出现次数最多的那个类别. 在sklearnsk ...
- 完美洗牌算法简析与代码实现
题目需求 数组[a1,a2,a3,a4,b1,b2,b3,b4],洗牌后变成[b1,a1,b2,a2,b3,a3,b4,a4]. 不得使用额外的空间,即空间复杂度要求为O(1).因为如果用线性空间,直 ...
- TF-IDF的Matlab程序,TF-IDF算法简析 - osc_sjg81se7的个人空间 - OSCHINA - 中文开源技术交流社区...
TF-IDF算法可用来提取文档的关键词,关键词在文本聚类.文本分类.文献检索.自动文摘等方面有着重要应用. 算法原理 TF:Term Frequency,词频 IDF:Inverse Document ...
- 【数据挖掘】DBSCAN算法简析
日常不想玩聚类 1.什么是DBSCAN算法? 基于密度的聚类算法,将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类. 2.DBSCAN算 ...
- CvBlobTrackerCC 多目标跟踪算法简析
(1)跟踪器的建立:对新产生的目标,且宽(高)大于5时,建立跟踪器 (2)Kalman滤波:用Kalman滤波器对目标当前的方位.大小做出预测 目标特征矢量采用(x, y, dx, dy, w, h) ...
最新文章
- 绝对和相对误差(absolute relative error)
- Google和eBay在建设微服务生态系统中的深刻教训
- Ionic创建页面以及页面之间跳转、页面添加返回按钮、新增底部页面
- 【数据库系列学习一】Access与Excel的区别和联系
- Spring入门5.事务管理机制
- 语义分割江湖的那些事儿——从旷视说起
- 在软件工程中有两件难事
- STM32CubeMX使用(二)之串口通信
- 移动**21*设置无法接通_手机通话质量不好?你可能只差一步设置!
- python-基础-面向对象2-异常-模块工厂模式
- linux挂在Windows操作系统共享文件夹
- 使用php函数对变量进行比较,PHP:将变量传递给函数,对变量进行处理,然后将其返回...
- js获取多叉树的广度和深度
- Spring的Orderd接口以及@Order、@Primary、@Priority三个注解介绍
- ubantu apt命令失败
- Qt自定义控件大全文章导航
- 引流脚本有什么作用?怎么选引流脚本把引流效果发挥得更好?引流脚本怎么操作?
- CSS3 画皮卡丘
- 贪心高性能神经网络与AI芯片应用
- uniapp唤起外部地图导航