使用 RSA 密钥对进行 PGP 加密和解密

信息安全 密码学 加密 密钥管理 pgp hsm
2021-08-25 04:37:18

有没有办法可以将 RSA 密钥对与 PGP 一起使用?我的意思是我有 2048 长度的密钥对,我想用它来加密和解密数据。但我所发现的只是 PGP 使用了一些密钥环和一些 pgp 密钥。而且我还没有找到任何地方为什么它们不同?为什么我要问的是我需要将密钥存储在 HSM 中,但我不能用 PGP 密钥来做到这一点。环顾四周,也没有在谷歌上找到任何关于此的内容。

任何人都可以向我解释或分享一些链接。

4个回答

PGP 的作用在OpenPGP标准中有所描述。在 OpenPGP 中,“密钥环”是“以 OpenPGP 描述的格式编码的公钥和/或私钥”的一些术语。

OpenPGP 描述密钥环格式的密钥类型包括 RSA 密钥。没有任何基本问题会阻止 OpenPGP 实现使用存储在 HSM 中的 RSA 私钥。但实际上,名为GnuPG的免费 OpenPGP 实现本身并不支持这一点——但gnupg-pkcs11项目可能会有所帮助:它允许集成提供 PKCS#11 驱动程序的加密设备(几乎所有 HSM 都这样做)进入 GnuPG 世界。

将现有的“PGP 密钥”(即当前存储为 OpenPGP 格式文件的 RSA 私钥)导入HSM 不一定是一个好主意:HSM 是一种昂贵的设备,旨在永远不允许私钥存在在 HSM 的防篡改硬件之外。如果密钥是导入的,那么它确实/确实存在于外部世界的某个地方,这使得使用 HSM 的合理性大大降低。

我不知道 PGP,但 GPG 可以使用智能卡(有时更有趣,PKCS#11 USB-Tokens)来保护私钥:

http://www.gnupg.org/howtos/card-howto/en/smartcard-howto-single.html

如果您不放心使用 HSM,则应考虑使用带有专用键盘的 HSM。否则保护几乎没有用。

您可能还想提请您的 IT 安全部门注意: http ://secgroup.ext.dsi.unive.it/projects/security-apis/pkcs11-security/tookan/

他们在 ACM CCS 2010 上有一篇论文解释了这个问题。

除了 PGP 密钥之外,您不能在 PGP 中使用任何东西。某些功能也适用于证书和 S/MIME 密钥,但不是全部(例如,附加解密密钥不起作用)。我希望你没有在不知道的情况下购买它。

您可以在 PGP 中设置密钥生成时的 RSA 算法,并在 PGP Universal 中将 RSA 算法设置为策略设置:

PGP 密钥

在组织中实施 PGP 电子邮件加密的一些经验教训

如果您使用的是 RSA 证书,那么您应该使用由 openssl 支持的 cms(从 PCCS#7 和 s/mime 演变而来)。http://www.openssl.org/docs/apps/cms.html

要签署和加密文件:

openssl cms –encrypt –text –in compressed-file.txt –out encrypted-file.txt public-key.pem

接下来我们对文件内容进行签名:

openssl cms –sign –text –in encrypted-file.zip –signer certificate.pem –inkey certtificate.key –out signed-file.txt

验证和解密:

openssl cms –verify –in file –signer certificate.pem 

如果验证成功,则可以解密文件内容。

openssl cms –decrypt –in file –inkey private-key.pem –out decrypted-file