当前位置:首页 >资讯 >ElGamal加密算法


ElGamal1984年斯坦福大学的公钥密码系统TatherElGamal一种基于离散对数困难的公钥系统。1985年,TatherElGamal利用ElGamal设计公钥密码系统ElGamal数字签名方案是经典的数字签名方案之一,具有很高的安全性和实用性。ElGamal数字签名系统的变体用于数字签名标准DSS中。直到今天,许多新的数字签名方案仍然属于ElGamal数字签名系统的变体或扩展。这就是变体。ElGamal加密算法。



群是一个集合G,连同一个操作"·",它结合了任何两个元素A和b形成另一个元素,记为a·b。符号"·"是给出的具体操作,如加法的一般占位符。要有资格成为一个群体,这个集合和操作(G,·)必须满足四个要求:群公理:

1.封闭性。所有G中的G中。a.b,运算a·b结果也在G中。

2.结合性。独于所有G中的G中的G。a·b和c,等式(a·b)·c=a·(b·c)成立。

3.单位元。G中有一个元素e,使所有G中的元素对齐a,等式e·a=a·e=a成立。

4.反元素。对于每个G中的一个。a,存在于G中的元素B是的a·b=b·a=e,这里的e是单位元。

例如,整数集合和加法运算具有以下性质

任何两个整数a和b,它们的和a+b也是整数。换句话说,在任何时候,加上两个整数都可以得到整数的结果。这种性质被称为在加法下关闭。

任何整数a,b和c,(a+b)+c=a+(b+c)。用词语表达,先加a到b,然后加上它们的和c,结果和将a添加到b和c和是相等的。这种性质叫做结合律。

如果A是任何整数,那么0+a=a+0=a。零称为加法单位,因为将其添加到任何整数中得到相同的整数。

任何整数a,另一个整数b使另一个整数b存在a+b=b+a=0.整数b被称为整数a的逆元,记为−a。

一组被称为有限组,如果它有有限的元素,元素的数阶被称为群G阶。

例如,模型19下7为3,[1,7,49,343,2401,16807,117649,823543,574801...]={1、11、1、7、11、1、1、7、1、1、1、11...}这里的1、7、11循环,其实只有3个元素 循环群

循环组是其所有元素都是特定元素A的功率组(在组运算被写为加法时使用术语倍数)。在乘法符号下,组的元素为:

...,a−3,a−2,a−1,a0=e,a,a2,a3,...,该元素a称为该组的生成元或原元。

本原元

模n下a的阶m=φ(n),m是n的原元,如3是19的原元

19是质数,所以φ(19)=18),模19下3组为:

[1,3,9,27,81,243,729,2187,6561,19683,177141,15943,15943,243,729,6561,1969,1969,177147,17147,17141,159,159,159,243,243,243,243,243,229,21869,1969,1961,19669,1969,1969,1969,19,17,1,1,27,27,27,27,243,243,243,243,243,1,19,19,19,19657,19,1969,19659,17273,2727,27,27,27,27,27,27,27,27,27,27,243,243,243,243,243,243,243,243,243,243,243,243,27,27,27,27,243,243,27,27,27,27,27,27,27,27,29,27,2727,27,27,27,27,27,27,27,27,27,27,27,29,27,27,21,21,21,243,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,21,21,21,21,21,21,21,21,21,21,27,27,21,21,21,21,21,21,21,21,21,21,21,27,27,27,27,27,29,29,29,27,21,21,21,29,2 14348907,43046721,129140163,387420489,1162261467,3486784401L,10460353203L,31381059609L,94143178827L...]

用模19来表示

1、9、8、15、7、2、18、16、11、11、14、17、17、13、13、1、9、15、15、7、2、18、16、16、16、16、111、11、11、14、14、17、17、17、1、17、1、17、1、17、1、1、17、1、1、17、17、17、17、1、17、17、1、17、1、17、1、13、1、1、13、1、13、13、1、1、1、17、1、1、17、1、17、1、1、17、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、L,8L,5L,15L]

循环为1、3、9、8、5、15、7、2、18、16、11、14、12、17、13,因此循环群阶为18,与欧拉函数相等

密钥生成

首先选择一个素数p,两个随机数,g和x,g,xElGamal用于数字签名。签名信息为。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满1是否满1是否满1<=aElGamal用于加密。加密信息为加密信息。M,首先选择一个随机数k,k与p-1互质计算:

a=g^k(modp)

b=y^kM(modp)

(a,b)是密文,是明文的两倍长。解密时计算:

M=b/a^x(modp)

ElGamal签名的安全性取决于乘法群(IFp)*上面的离散对数计算。素数p必须足够大,而且,p-至少有一个大素数因子可以抵抗Pohlig&Hellman算法攻击。M一般应采用信息HASH值(如SHA算法)。ElGamal安全主要取决于p和g,如果选择不当,签名很容易伪造,应保证g。p-1大素数因子不能约。