我正在开发一个项目,该软件使用 GnuPG 二进制文件进行加密操作。有些函数具有 OpenPGP 加密输出,有些函数采用 OpenPGP 加密输入。
为了进行单元测试,我的计划是为 [email protected] 生成无密码密钥并将其包含在存储库中。这(自然)会使密钥不适合生产使用,但这很好,因为用户应该生成/使用自己的密钥。
如果密钥包含在存储库中,任何人都可以将其上传到密钥服务器,用它来签署他/她自己的密钥,或撤销它(并上传撤销)。 GPG 可以自动从密钥服务器下载密钥,并且在个人密钥环中拥有这样的密钥(私钥是公开知识)似乎是不明智的。
是否可以将已撤销的密钥版本上传到密钥服务器(这样就没有人钥匙串会信任它)并在存储库中包含未撤销密钥的密钥版本?这是否可以解决密钥出现并在个人钥匙串中受到信任的问题,同时仍然允许使用相同的密钥进行单元测试?
在本地包含未撤销版本的同时撤销密钥服务器上的密钥将不会出现问题,除非您实际从密钥服务器获取已撤销版本。只需在撤销密钥之前创建一个副本,并确保使用本地甚至新的 GnuPG 主目录(无论如何您都应该这样做,以保持单元测试的可重复性并使它们与开发人员的帐户分开)。这样,您应该确保您的钥匙链中不会有吊销证书,除非有人手动获取它(他不应该这样做,您可能想在某个地方记录下来)。
要考虑的另一个场景是保持主秘密密钥的私密性,但仅发布秘密子密钥。这可能会使后续对实际用于加密的密钥进行更改变得更容易,并防止其他人弄乱主密钥(创建用户 ID、撤销任何内容、颁发证书……)。