ElGamal加密算法

来自testwiki
跳转到导航 跳转到搜索

密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换非对称加密算法。它在1985年由塔希尔·盖莫尔提出。[1]GnuPGPGP等很多密码学系统中都应用到了ElGamal算法。

ElGamal加密算法可以定义在任何循环群G上。它的安全性取决于G上的离散对数难题。

算法

ElGamal加密算法由三部分组成:密钥生成、加密和解密。

密钥生成

密钥生成的步骤如下:

  • Alice利用生成元g产生一个q阶循环群G的有效描述。该循环群需要满足一定的安全性质。
  • Alice从{1,,q1}中随机选择一个x
  • Alice计算h:=gx
  • Alice公开h以及G,q,g的描述作为其公钥,并保留x作为其私钥。私钥必须保密。

加密

使用Alice的公钥(G,q,g,h)向她加密一条消息m的加密算法工作方式如下:

  • Bob从{1,,q1}随机选择一个y,然后计算c1:=gy
  • Bob计算共享秘密s:=hy
  • Bob把他要发送的秘密消息m映射为G上的一个元素m
  • Bob计算c2:=ms
  • Bob将密文(c1,c2)=(gy,mhy)=(gy,m(gx)y)发送给Alice。

值得注意的是,如果一个人知道了m,那么它很容易就能知道hy的值。因此对每一条信息都产生一个新的y可以提高安全性。所以y也被称作Template:Link-en

解密

利用私钥x对密文(c1,c2)进行解密的算法工作方式如下:

  • Alice计算共享秘密s:=c1x
  • 然后计算m:=c2s1,并将其映射回明文m,其中s1s在群G上的逆元。(例如:如果G整数模n乘法群的一个子群,那么逆元就是模逆元)。
解密算法是能够正确解密出明文的,因为
c2s1=mhy(gxy)1=mgxygxy=m.

实际使用

ElGamal加密系统通常应用在Template:Link-en中。例如:用对称加密体制来加密消息,然后利用ElGamal加密算法传递密钥。这是因为在同等安全等级下,ElGamal加密算法作为一种非对称密码学系统,通常比对称加密体制要慢。对称加密算法的密钥和要传递的消息相比通常要短得多,所以相比之下使用ElGamal加密密钥然后用对称加密来加密任意长度的消息,这样要更快一些。

参考文献

  1. Template:Cite journal (conference version appeared in CRYPTO'84, pp. 10–18)


Template:密碼學