秘密共享的概念是由Shamir和Blakley于1979年分别独立提出的。所谓秘密共享就是将一个密钥分成许多部分,然后秘密地分配给一些有关人员,使得某些有关人员在同时给出他们的部分后可以重建密钥,而另外一些人在给出他们的部分后不能重建密钥。
例如,某银行有三位出纳,他们每天都要开启保险柜,为防止每位出纳可能出现的监守自盗行为,银行规定至少有两位出纳在场才能开启保险柜,银行的这个开启保险柜的问题可以利用秘密共享方案来实现。
假设你中了几十亿的彩票,而且你想把这些财产留给你的亲戚。你的钱被锁进了只有你知道的安全的地方,你并不想把这个秘密告诉你的5个孩子中的任何一个,因为他们并不可信。你想把秘密拆开来,从而让他们中的任何3个拼在一起才能重建真实。那样的话,如果有人想得到你的遗产,就必须同其余的两个孩子合作。
秘密共享解决了两个问题:一是若密钥偶然或有意地被暴露,整个系统就易受攻击;二是若密钥丢失或损坏,系统中的所有信息就不能用了。
秘密共享的基本思想是将密钥k按下述方式分成n个分享k1,k2,…kn:
已知任意t个ki值易于计算出k。 已知任意t–1个或更少个ki,则由于信息短缺而不能计算出k。
这种方案也称为(t,n)门限方案。将n个分享k1,k2,…kn分给n个用户。由于重构密钥至少需要t个分享,故暴露s(s≤t–1)个分享不会危及密钥,从而少于t个用户的共谋不能得到密钥。同时,若一个分享被丢失或毁坏,仍可恢复密钥(只要有至少t个有效的分享即可)。接下来,我们以Shamir提出的门限秘密共享方案为例介绍。
Shamir门限秘密共享方案
Shamir于1979年提出了一个门限秘密共享方案,该方案是基于拉格朗日差值多项式构造的,具体算法如下。
初始化阶段
秘密分发者D随机地从GF(q)(q为素数,且q>n)选取n个不同的非零元素x1,x2,…xn。D将xi分配给Ui (i=1,2,…,n),且xi的值是公开的。
秘密分发阶段
如果D打算让n个参与者U1,U2,…Un共享秘密s∈GF(q),D随机地选取GF(q)中的t–1个元素a1,a2,…an-1,构造t–1次多项式
f(x)=s+a1x+a2x2+…+at-1xt-1
D计算yi=f(xi), 1≤i≤n,并将yi安全地分配给参与者Ui作为他的子秘密。
秘密恢复阶段
n个参与者中的任意t个参与者,不妨设为U1,U2,…Ut,出示他们的子秘密,从而得到t个点对:(x1,y1), (x2,y2),…,(xt,yt),这样就可以重构多项式f(x)和共享的秘密s值如下:
秘密图像共享需要使用特定的算法来实现,其中包括加密、解密等 *** 作。如果您需要实现秘密图像共享,可以寻找相关的开源代码或者应用,以下是一些常用的秘密图像共享算法及其代码:1. Shamir的秘密分享算法(Shamir's secret sharing algorithm):该算法可以将一个秘密信息分成多个部分,在满足一定条件时才能自动重组。相关的代码和库可以在GitHub上找到。
2. 基于多项式的秘密共享(Polynomial-Based Secret Sharing):该算法使用了多项式分割法来实现秘密共享。相关的开源库包括Miracl库、Sharemind等。
3. 可视密码方案(Visual Cryptography Scheme,VCS):该方案将秘密图像分成多张随机图像,只有在将所有随机图像叠加在一起时才能看到秘密图像。该方案的相关代码可以在GitHub上找到。
需要注意的是,秘密图像共享算法的实现和使用需要具备一定的专业知识和技能,如果您不具备相关经验,建议寻求专业人士的帮助。
密码学简介据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。
随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施
了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提
高,近期又出现了AES、ECC等。
使用密码学可以达到以下目的:
保密性:防止用户的标识或数据被读取。
数据完整性:防止数据被更改。
身份验证:确保数据发自特定的一方。
二. 加密算法介绍
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
对称加密算法
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES
2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。
Rijndael被选中成为将来的AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent
Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。
美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。
算法原理
AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。
AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16
字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相
同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据
AES与3DES的比较
算法名称
算法类型
密钥长度
速度
解密时间(建设机器每秒尝试255个密钥)
资源消耗
AES
对称block密码
128、192、256位
高
1490000亿年
低
3DES
对称feistel密码
112位或168位
低
46亿年
中
非对称算法
常见的非对称加密算法如下:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
ECC
在1976年,由于对称加密算法已经不能满足需要,Diffie 和Hellman发表了一篇叫《密码学新动向》的文章,介绍了公匙加密的概念,由Rivet、Shamir、Adelman提出了RSA算法。
随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA的密钥需要不断增
加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用RSA的应用带来了很重的负担,因此需要一种新的算法来
代替RSA。
1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP。ECDLP是比因子分解问题更难的问题,它是指数级的难度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)