处理用于单元测试的秘密 OpenPGP 密钥

Handling secret OpenPGP keys for unit testing

我正在从事一个项目,其中软件使用 GnuPG 二进制文件进行加密操作。有些函数有 OpenPGP 加密输出,有些函数有 OpenPGP 加密输入。

为了进行单元测试,我的计划是为 unittest@project.example.com 生成一个无密码密钥,并将其包含在存储库中。这将(自然地)使密钥不适合生产使用,但这很好,因为用户应该 generate/use 他们自己的密钥。


现在回答我的问题。如果密钥包含在存储库中,任何人都可以将其上传到密钥服务器,使用它来签署 his/her 自己的密钥,或撤销它(并上传撤销)。 GPG 可以自动从密钥服务器下载密钥,将这样的密钥(私钥是 public 知识)放在个人密钥环中似乎是不明智的。

是否可以将密钥的已撤销版本上传到密钥服务器(因此没有钥匙串会信任它)并在密钥未撤销的存储库中包含密钥版本?这会解决密钥在个人钥匙串中出现并受到信任的问题,同时仍允许使用相同的密钥进行单元测试吗?

在密钥服务器上撤销密钥,同时在本地包含未撤销的版本将不会出现问题,除非您实际从密钥服务器获取已撤销的版本。只需在撤销密钥之前创建一个副本,并确保使用本地或什至新的 GnuPG 主目录(无论如何你都应该这样做,以保持单元测试的可重复性并将它们与开发人员的帐户分开)。这样,您应该确保您的钥匙链中没有吊销证书,除非有人手动获取它(他不应该这样做,您可能想在某处记录下来)。

要考虑的另一种情况是将 密钥保密,但只发布一个秘密子密钥。这可能会使实际用于加密的密钥的后续更改更​​容易,并防止其他人弄乱主密钥(创建用户 ID、撤销任何内容、颁发证书……)。