ElGamal加密算法
在密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。[1]GnuPG和PGP等很多密码学系统中都应用到了ElGamal算法。
算法
ElGamal加密算法由三部分组成:密钥生成、加密和解密。
密钥生成
密钥生成的步骤如下:
- Alice利用生成元 产生一个 阶循环群 的有效描述。该循环群需要满足一定的安全性质。
- Alice从 中随机选择一个 。
- Alice计算 。
- Alice公开 以及 的描述作为其公钥,并保留 作为其私钥。私钥必须保密。
加密
使用Alice的公钥 向她加密一条消息 的加密算法工作方式如下:
- Bob从 随机选择一个 ,然后计算 。
- Bob计算共享秘密 。
- Bob把他要发送的秘密消息 映射为 上的一个元素 。
- Bob计算 。
- Bob将密文 发送给Alice。
值得注意的是,如果一个人知道了 ,那么它很容易就能知道 的值。因此对每一条信息都产生一个新的 可以提高安全性。所以 也被称作临时密钥。
解密
利用私钥 对密文 进行解密的算法工作方式如下:
- 解密算法是能够正确解密出明文的,因为
实际使用
ElGamal加密系统通常应用在混合加密系统中。例如:用对称加密体制来加密消息,然后利用ElGamal加密算法传递密钥。这是因为在同等安全等级下,ElGamal加密算法作为一种非对称密码学系统,通常比对称加密体制要慢。对称加密算法的密钥和要传递的消息相比通常要短得多,所以相比之下使用ElGamal加密密钥然后用对称加密来加密任意长度的消息,这样要更快一些。
参考文献
- ^ Taher ElGamal. A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms (PDF). IEEE Transactions on Information Theory. 1985, 31 (4): 469–472 [2016-12-14]. doi:10.1109/TIT.1985.1057074. (原始内容存档 (PDF)于2011-08-13). (conference version appeared in CRYPTO'84, pp. 10–18)