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

Unit testing 处理用于单元测试的秘密OpenPGP密钥,unit-testing,security,gnupg,pgp,openpgp,Unit Testing,Security,Gnupg,Pgp,Openpgp,我正在从事一个项目,该软件使用GnuPG二进制文件进行加密操作。有些函数有OpenPGP加密的输出,有些函数接受OpenPGP加密的输入 为了进行单元测试,我的计划是为unittest@project.example.com并将其包含在存储库中。这(自然)会使密钥不适合生产使用,但这很好,因为用户需要生成/使用自己的密钥 现在回答我的问题。如果密钥包含在存储库中,任何人都可以将其上载到密钥服务器,使用它签署自己的密钥,或撤销密钥(并上载撤销)。GPG可以自动从密钥服务器下载密钥,在个人密钥环中

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

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


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


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

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


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

计划从新的GnuPG主目录开始,因此在撤销前导出密钥,将其存储在存储库中并作为测试设置重新导入应该可以做到这一点。保守pimrary密钥的秘密是一个有趣的想法,我能想到的唯一问题是,这会降低项目的可分叉性。每个人都可以在需要时在其中放置新密钥集。不过,记录背后的过程和想法可能是一件好事。为什么不为每个测试运行以非交互方式生成新密钥呢?那么我还必须为每个测试运行更改测试用例。加密的有效负载是预期输出的一部分。