这是一个用于检查您的 OpenPGP 客户端是否受 CVE-2021-33560 影响的工具。
该漏洞使您加密到某些 ElGamal 子密钥的消息面临明文恢复风险。漏洞的技术细节见这篇博客文章和这篇研究论文。
此工具用于测试您的 OpenPGP 客户端在作为发送方时是否受影响。它无法判断您的 ElGamal 子密钥在作为接收方时是否受影响;遗憾的是,这是一种计算量很大的检查,只能由专家执行。如果您使用 ElGamal 子密钥并担心其安全性,请阅读我们的常见问题解答。
您需要 Python 3.8 或更高版本。
该工具通过向特制的 ElGamal 子密钥加密消息,然后分析生成的密文来检测漏洞。
导入公钥并向其加密的方式取决于您的 OpenPGP 客户端。在下面的示例中,我们使用 GPG(其 libgcrypt 在 1.8.8 和 1.9.3 版本及以前均受影响),但您需要根据您自己的客户端调整这些步骤。
克隆此仓库并进入其中
git clone https://github.com/IBM/PGP-client-checker-CVE-2021-33560.git
cd PGP-client-checker-CVE-2021-33560
导入公钥(此步骤取决于您的客户端)
gpg --import key.asc
向导入的密钥加密消息(例如 "Hi")(此步骤 取决于您的客户端)
echo "Hi" | gpg -e --always-trust --armor -r [email protected] --output ciphertext.asc
对获得的密文运行此工具
./sec-check.py ciphertext.asc
并检查输出。如果您的客户端受影响,您可能会看到类似以下的消息:
Inspecting ./ciphertext.asc
Ephemeral secret bit length: 342
**Your client is affected by CVE-2021-33560!**
Your client seems to be based on an old version of libgcrypt. If a
security patch for your client is available, install it!
若要了解更多关于该漏洞的信息,请阅读我们的技术博客文章。