ElGamal 公钥密码系统
ElGamal 公钥密码系统的加密与解密过程
虽然 Diffie–Hellman 密钥交换算法提供了一种公开共享随机密钥的方法,但它并未完全实现公钥密码系统的目标。公钥密码系统应能够实现特定信息的交换,而不仅仅是随机比特串的共享。
历史上,第一个公钥密码系统是 1978 年由 Rivest、Shamir 和 Adleman 提出的 RSA 系统。RSA 是一个具有里程碑意义的重要发现,然而,尽管 RSA 是最早的公钥加密方案,但在 Diffie–Hellman 的著名论文之后最自然的发展是 Taher ElGamal 在 1985 年提出的一个系统。
ElGamal 公钥加密算法基于离散对数问题(DLP),并且与 Diffie–Hellman 密钥交换密切相关。
Alice 发布公钥
- 公钥和算法发布:
- Alice 决定并公开离散对数问题使用的具体参数 \(p\) 和 \(g\)。
- Alice 决定私钥 \(a (\bmod p-1)\)
- Alice 发布公钥 \(A \equiv g^{a}(\bmod p)\):
- Alice 不公开私钥,但公开公钥。
Bob 利用公钥进行加密
假设 Bob 的明文消息 $ m $ 是一个介于 $ 2 $ 和 $ p $ 之间的整数。
-
选择临时密钥:
- Bob 随机选择一个模 $ p $ 的整数 $ k $,称为临时密钥(ephemeral key)。
- 每条消息的加密都会使用一个新的 \(k\),加密完成后,\(k\) 将被丢弃。
-
加密计算:
-
Bob 利用明文 $ m $、随机临时密钥 $ k $ 和 Alice 的公钥 $ A $,计算:
\[c_1 \equiv g^k \pmod{p}, \quad c_2 \equiv m \cdot A^k \equiv m \cdot g^{ak}\pmod{p}, \]其中 $ g $ 和 $ p $ 是公开参数,Bob 知道它们的值。
-
-
生成密文:
- Bob 将密文表示为一个数对 $ (c_1, c_2) $,然后发送给 Alice。这个过程 Eve 可以窃取。
Alice 的解密过程:
-
收到密文:
- Alice 收到密文对 $ (c_1, c_2) $。
-
恢复明文:
-
利用私钥 $ a $,Alice 计算:
\[x \equiv c_1^a \equiv g^{ak}\pmod{p}. \] -
接着,计算 $ x^{-1}\equiv g^{-ak} \pmod{p} $。
-
Alice 将 $ c_2 $ 乘以 $ x^{-1} $:
\[ x^{-1} \cdot c_2 \equiv g^{-ak}\cdot m \cdot g^{ak} \equiv m\pmod{p}. \]
-
Eve 的破解挑战:
-
Eve 知道以下内容:
- 公共参数 \(p\)、\(g\),以及 Alice 的公钥 \(A \equiv g^a \pmod{p}\)。
- 密文对 $ (c_1\equiv g^k, c_2\equiv m\cdot g^{ak} (\bmod p)) $。
-
如果 Eve 能解决离散对数问题(DLP),她就可以解出 \(k\) 或者 \(a\),从而解密密文。
-
然而,离散对数问题的困难性是 ElGamal 安全性的核心。只要 DLP 足够难解,Eve 很难获取明文。
这里的私钥 \(a\) 就可以理解为这个计算问题的陷门信息。
关于 ElGamal 系统的安全性
我们需要探讨以下问题:
- ElGamal 加密系统是否与 Diffie–Hellman 问题(DHP)同样难解,或者“更进一步”,是否能够说明其与离散对数问题一样难解?
- 或者,由于加密方式的特殊性,是否引入了某种隐秘的漏洞,使得 Eve 能够在不解决 DHP 的情况下轻松解密消息?
现代密码学的目标:
- 现代密码学的一个重要目标是明确关联一个加密系统的安全性与某个公认的难题(如 DHP)。
- 对于 ElGamal 加密系统,理想情况下,我们希望证明:
- 任何能够破解 ElGamal 加密的攻击者,必然也能解决 Diffie–Hellman 问题。
接下来,我们可以讨论是否有严格的数学证明来支持这一点,以及 ElGamal 系统在具体实现中的潜在攻击面和防御措施。
任何能够破解 ElGamal 加密的攻击者,必然也能解决 Diffie–Hellman 问题
精确的描述:
设有素数 $ p $ 和基 $ g $,用于 ElGamal 加密。
假设 Eve 拥有一个可以解密任意 ElGamal 密文(基于任意 ElGamal 公钥)的解密预言机。
那么,Eve 可以利用该预言机解决 Diffie–Hellman 问题。
证明思路:
Diffie–Hellman 问题回顾:
Eve 得到以下两个值:
她需要计算:
Eve 知道 $ A $ 和 $ B $,但不知道 $ a $ 和 $ b $ 的具体值。
ElGamal 解密预言机:
-
预言机接收输入:
- 素数 $ p $,
- 基 $ g $,
- 公钥 $ A $,
- 密文对 $ (c_1, c_2) $。
-
返回结果:
\[(c_1^a)^{-1} \cdot c_2 \pmod{p}, \]其中 \(c_1^a \equiv (g^k)^a \equiv g^{ak} \pmod{p}\)。
利用预言机解决 Diffie–Hellman 问题:
-
Eve 的初始选择:
Eve 选择输入 $c_1 = B = g^b $ 和 $ c_2 = 1$。-
在这种情况下,预言机返回:
\[(c_1^a)^{-1} \cdot c_2 \equiv (g^{ab})^{-1} \cdot 1 \equiv (g^{ab})^{-1} \pmod{p}. \] -
Eve 然后计算该值的逆元,得到:
\[g^{ab} \pmod{p}. \]
这样,Diffie–Hellman 问题得以解决。
-
-
预防预言机的防范策略:
假设预言机足够聪明,拒绝解密任何 $ c_2 = 1 $ 的密文。- Eve 依然可以通过选择随机密文对欺骗预言机:
-
设置 $ c_1 = B = g^b $ 和任意 $ c_2 $。
-
预言机返回的值为:
\[m \equiv (c_1^a)^{-1} \cdot c_2 \equiv (g^{ab})^{-1} \cdot c_2 \pmod{p}. \] -
Eve 通过计算:
\[m^{-1} \cdot c_2 \equiv g^{ab} \pmod{p}, \]成功得到 $ g^{ab} $。
-
- Eve 依然可以通过选择随机密文对欺骗预言机:
尽管预言机没有直接透露 $ a $ 或 $ b $ 的值,Eve 利用预言机成功解决了 Diffie–Hellman 问题,而无需求解离散对数问题。
选择密文攻击 (Chosen Ciphertext Attack)
-
定义:
Eve 拥有一个解密预言机,可以解密任意密文(给定任意密文 \((c_1,c_2)\),可以恢复出明文 \(m\))。这种攻击方式称为选择密文攻击 (CCA)。 -
ElGamal 的抗性:
- 上述命题表明,ElGamal 系统的安全性依赖于(可以理解为 \(\geq\)) Diffie–Hellman 问题的难解性。
- 因此,假设 Diffie–Hellman 问题难解,ElGamal 系统在面对选择密文攻击时是安全的。

浙公网安备 33010602011771号