ElGamal加密算法

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

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

算法

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

密钥生成

密钥生成的步骤如下:

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

加密

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

  • Bob从 { 1 , , q 1 } {\displaystyle \{1,\ldots ,q-1\}} 随机选择一个 y {\displaystyle y} ,然后计算 c 1 := g y {\displaystyle c_{1}:=g^{y}}
  • Bob计算共享秘密 s := h y {\displaystyle s:=h^{y}}
  • Bob把他要发送的秘密消息 m {\displaystyle m} 映射为 G {\displaystyle G} 上的一个元素 m {\displaystyle m'}
  • Bob计算 c 2 := m s {\displaystyle c_{2}:=m'\cdot s}
  • Bob将密文 ( c 1 , c 2 ) = ( g y , m h y ) = ( g y , m ( g x ) y ) {\displaystyle (c_{1},c_{2})=(g^{y},m'\cdot h^{y})=(g^{y},m'\cdot (g^{x})^{y})} 发送给Alice。

值得注意的是,如果一个人知道了 m {\displaystyle m'} ,那么它很容易就能知道 h y {\displaystyle h^{y}} 的值。因此对每一条信息都产生一个新的 y {\displaystyle y} 可以提高安全性。所以 y {\displaystyle y} 也被称作临时密钥英语ephemeral key

解密

利用私钥 x {\displaystyle x} 对密文 ( c 1 , c 2 ) {\displaystyle (c_{1},c_{2})} 进行解密的算法工作方式如下:

  • Alice计算共享秘密 s := c 1 x {\displaystyle s:=c_{1}{}^{x}}
  • 然后计算 m := c 2 s 1 {\displaystyle m':=c_{2}\cdot s^{-1}} ,并将其映射回明文 m {\displaystyle m} ,其中 s 1 {\displaystyle s^{-1}} s {\displaystyle s} 在群 G {\displaystyle G} 上的逆元。(例如:如果 G {\displaystyle G} 整数模n乘法群的一个子群,那么逆元就是模逆元)。
解密算法是能够正确解密出明文的,因为
c 2 s 1 = m h y ( g x y ) 1 = m g x y g x y = m . {\displaystyle c_{2}\cdot s^{-1}=m'\cdot h^{y}\cdot (g^{xy})^{-1}=m'\cdot g^{xy}\cdot g^{-xy}=m'.}

实际使用

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

参考文献

  1. ^ 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)


 
算法
  • Benaloh英语Benaloh cryptosystem
  • Blum–Goldwasser英语Blum–Goldwasser cryptosystem
  • Cayley–Purser英语Cayley–Purser algorithm
  • Damgård–Jurik英语Damgård–Jurik cryptosystem
  • GMR英语GMR (cryptography)
  • Goldwasser–Micali英语Goldwasser–Micali cryptosystem
  • Paillier英语Paillier cryptosystem
  • Rabin英语Rabin cryptosystem
  • RSA
  • Okamoto–Uchiyama英语Okamoto–Uchiyama cryptosystem
  • Schmidt–Samoa英语Schmidt–Samoa cryptosystem
  • Cramer–Shoup英语Cramer–Shoup cryptosystem
  • DH
  • DSA
  • ECDH
  • ECDSA
  • EdDSA
  • EKE英语Encrypted key exchange
  • ElGamal
  • MQV英语MQV
  • Schnorr英语Schnorr signature
  • SPEKE英语SPEKE (cryptography)
  • SRP英语Secure Remote Password protocol
  • STS英语Station-to-Station protocol
  • SM2
其他
  • AE英语Algebraic Eraser
  • CEILIDH英语CEILIDH
  • EPOC英语Efficient Probabilistic Public-Key Encryption Scheme
  • HFE英语Hidden Field Equations
  • IES英语Integrated Encryption Scheme
  • Lamport英语Lamport signature
  • McEliece英语McEliece cryptosystem
  • Merkle–Hellman英语Merkle–Hellman knapsack cryptosystem
  • Naccache–Stern英语Naccache–Stern cryptosystem
  • Naccache–Stern knapsack cryptosystem英语Naccache–Stern knapsack cryptosystem
  • NTRU
  • NTRUEncrypt英语NTRUEncrypt
  • NTRUSign英语NTRUSign
  • Three-pass protocol英语Three-pass protocol
  • XTR英语XTR
理论
标准化
  • CRYPTREC英语CRYPTREC
  • IEEE P1363英语IEEE P1363
  • NESSIE英语NESSIE
  • NSA Suite B英语NSA Suite B Cryptography
论题
  • 分类 分类
  • 主题 主题
  • 专题 专题