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

时间:2015-08-03 11:50:00

标签: unit-testing security gnupg pgp openpgp

我正在开发一个软件使用GnuPG二进制文件进行加密操作的项目。一些函数具有OpenPGP加密输出,一些函数采用OpenPGP加密输入。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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