在ElGamal公钥密码体制中,β=αd mod p,从公开的α和β,求保密的解密密钥d,就是计算一个离散对数,因此,ElGamal公钥密码体制的安全性主要是基于有限域Zp上离散对数问题的难解性
最近有一位之前找过的用户问了我们小编的一个问题,我相信这也是很多币圈朋友经常会疑惑的问题:elgamal相关问题,elgamal算法的安全性是基于相关问题,带着这一个问题,让专业的小编告诉您原因。
ElGamal密码体制是T. ElGamal于1984年提出的,它至今仍然是一个安全性良好的公钥密码体制。
密钥产生过程
选择一个大素数p以及两个小于p的随机数g和x,计算y≡gx mod p。以(y,g,p)作为用户公钥,x作为用户私钥。
加密过程
如果想将明文消息M加密后发给该用户,则计算过程如下:随机选取一个与p-1互素的整数k,计算C1≡gk mod p,C2≡yk mod p,密文为C=(C1,C2)。
解密过程
当用户收到密文(C1,C2)=(gk mod p, yk mod p)后,计算C2C1-x mod p就可以得到正确的解密结果。
同许多其它的公钥密码体制一样,ElGamal密码算法的安全性是建立在有限域上的离散对数的难解性这一数学难题的基础上的。
设p是一个素数,α∈Zpx,α是一个本原元,β∈Zpx。已知α和β,求满足αn≡β(mod n)的唯一整数n,0≤n≤p–2。这一问题称为有限域上的离散对数问题,常将n记为logαβ。
ElGamal公钥密码体制可以在计算离散对数困难的任何群中实现,不过通常使用的是有限域,但不局限于有限域。
关于有限域上的离散对数问题,已经进行了许多深入的研究,取得了许多重要成果,但到目前为止,还没有找到一个非常有效的多项式时间算法来计算有限域上的离散对数。一般而言,只要素数p选取适当,有限域Zp上的离散对数问题是难解的。反过来,已知α和n,计算β=αn mod p是容易的。因此,对于适当的素数p,模p指数运算是一个单向函数。
在ElGamal公钥密码体制中,β=αd mod p,从公开的α和β,求保密的解密密钥d,就是计算一个离散对数,因此,ElGamal公钥密码体制的安全性主要是基于有限域Zp上离散对数问题的难解性。
为了抵抗目前已知的一些对ElGamal公钥密码体制的攻击,素数p按十进制表示,至少应该有150位数字,并且p-1至少应该有一个大的素因子。
(转载前请告知~)
加密方法。
一种加密方法具有新颖的特性,即公开披露加密密钥并不会因此披露相应的解密密钥。这有两个重要的后果:1、不需要传输密钥,公钥可以被公开。
2、可以使用私人持有的解密密钥对消息进行“签名”。任何人都可以使用相应的公开披露的加密密钥来验证此签名。
ElGamal加密算法可以定义在任何循环群G上。它的安全性取决于G上的离散对数难题。
ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。
有问题,会被盗号。
为了安全,随机数k应当是一次性的。否则时间一长, k将可能泄露。
一、密钥散列
采用MD5或者SHA1等散列算法,对明文进行加密。严格来说,MD5不算一种加密算法,而是一种摘要算法。无论多长的输入,MD5都会输出一个128位(16字节)的散列值。而SHA1也是流行的消息摘要算法,它可以生成一个被称为消息摘要的160位(20字节)散列值。MD5相对SHA1来说,安全性较低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。
二、对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
三、非对称加密
非对称加密算法是一种密钥的保密方法,它需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
四、数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。
五、直接明文保存
早期很多这样的做法,比如用户设置的密码是“123”,直接就将“123”保存到数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
六、使用MD5、SHA1等单向HASH算法保护密码
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
七、特殊的单向HASH算法
由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。
八、PBKDF2
该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。
九、BCrypt
BCrypt 在1999年就产生了,并且在对抗 GPU/ASIC 方面要优于 PBKDF2,但是我还是不建议你在新系统中使用它,因为它在离线破解的威胁模型分析中表现并不突出。
十、SCrypt
SCrypt 在如今是一个更好的选择:比 BCrypt设计得更好(尤其是关于内存方面)并且已经在该领域工作了 10 年。另一方面,它也被用于许多加密货币,并且我们有一些硬件(包括 FPGA 和 ASIC)能实现它。 尽管它们专门用于采矿,也可以将其重新用于破解。
都看完了嘛?相信现在您对elgamal有一个初级的认识了吧!也可以收藏页面获取更多elgamal算法的安全性是基于知识哟!区块链、虚拟币,我们是认真的!