您好,欢迎访问三七文档
Elgamal算法ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系一.ElGamal算法定义:ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K。二.密钥产生方法密钥对产生办法。首先选择一个素数p,获取一个素数p的一个原根g(若g模p的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数))和一个随机数x,且g和x均小于p,计算y=g^x(modp),则其公钥为y,g和p。私钥是x。g和p可由一组用户共享。ElGamal用于数字签名。被签信息为M,首先选择一个随机数k,k与p-1互质,计算a=g^k(modp)再用扩展Euclidean算法对下面方程求解b:M=xa+kb(modp-1)签名就是(a,b)。随机数k须丢弃。验证时要验证下式:y^a*a^b(modp)=g^M(modp)同时一定要检验是否满足1=ap。否则签名容易伪造。ElGamal用于加密。被加密信息为M,首先选择一个随机数k,k与p-1互质,计算a=g^k(modp)b=y^kM(modp)(a,b)为密文,是明文的两倍长。解密时计算M=b/a^x(modp)ElGamal签名的安全性依赖于乘法群(IFp)*上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数因子以抵抗Pohlig&Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA算法)。ElGamal的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。三.一般的ElGamal数字签名方案在系统中有两个用户A和B,A要发送消息到B,并对发送的消息进行签名。B收到A发送的消息和签名后进行验证。1.系统初始化选取一个大的素数p,g是GF(p)的本原元。h:GF(p)→GF(p),是一个单向Hash函数。系统将参数p、g和h存放于公用的文件中,在系统中的每一个用户都可以从公开的文件中获得上述参数。2.对发送的消息进行数字签名的过程假定用户A要向B发送消息m[1,p-1],并对消息m签字。第一步:用户A选取一个x[1,p-1]作为秘密密钥,计算y=(modp)作为公钥。将公钥y存放于公用的文件中。第二步:随机选取k[1,p-1]且gcd(k,(p-1))=1,计算r=(modp)。对一般的ElGamal型数字签名方案有签名方程(SignatureEquation):ax=bk+c(mod(p-1))。其中(a,b,c)是(h(m),r,s)数学组合的一个置换。由签名方程可以解出s。那么(m,(r,s))就是A对消息m的数字签名。第三步:A将(m,(r,s))发送到B3.数字签名的验证过程当B接收到A发送的消息(m,(r,s)),再从系统公开文件和A的公开文件中获得系统公用参数p,g,h和A的公钥y。由(m,(r,s))计算出(a,b,c)验证等式:=(modp)是否成立。D.Bleichenbache“GeneratingElGamalSignaturesWithoutKnowingtheSecretKey”中提到了一些攻击方法和对策。ElGamal的一个不足之处是它的密文成倍扩张。美国的DSS(DigitalSignatureStandard)的DSA(DigitalSignatureAlgorithm)算法是经ElGamal算法演变而来。
本文标题:Elgamal算法
链接地址:https://www.777doc.com/doc-5681034 .html