Encryption GPG:如何使用具有不同密码短语的多个签名进行签名?
我有一个定期运行的作业,并对文件进行签名/加密,如下所示:Encryption GPG:如何使用具有不同密码短语的多个签名进行签名?,encryption,batch-processing,gnupg,pgp,Encryption,Batch Processing,Gnupg,Pgp,我有一个定期运行的作业,并对文件进行签名/加密,如下所示: $ gpg --homedir /path/to/.gnupg -r key1@mydomain.com -r key2@mydomain.com --local-user sig1@mydomain.com --batch --passphrase-file /path/to/gpg-password --sign -ea myfile 该命令为两个收件人加密文件:key1@mydomain.com及key2@mydomain.c
$ gpg --homedir /path/to/.gnupg -r key1@mydomain.com -r key2@mydomain.com --local-user sig1@mydomain.com --batch --passphrase-file /path/to/gpg-password --sign -ea myfile
该命令为两个收件人加密文件:key1@mydomain.com及key2@mydomain.com. 它在文件上签名sig1@mydomain.com. 它以批处理模式运行,因为没有人工交互-这是一个自动化的过程。它从/path/to/gpg password获取签名的密码短语
我现在想做的是用两个签名同时在文件上签名。像这样:
$ gpg --homedir /path/to/.gnupg -r key1@mydomain.com -r key2@mydomain.com --local-user sig1@mydomain.com --local-user sig2@mydomain.com --batch --passphrase-file /path/to/gpg-password --sign -ea myfile
gpg: skipped "sig2@mydomain.com": bad passphrase
它在交互模式下运行良好(例如,不使用--batch),我只需通过命令行提供这两个密码。但是,在批处理模式下,它尝试从文件中获取签名时失败。签名仅对其中一个签名密钥有效
从手册页:
--密码短语文件file
从文件中读取密码短语。只有第一行将从文件file
中读取。仅当提供了一个密码短语时,才能使用此选项
我如何告诉它每个密钥的密码是什么?对于与我处于相同情况的其他人,我最终通过编辑一个签名密钥使其与另一个密钥具有相同的密码(存储在gpg密码文件中的密码)来解决gpg的这一明显缺陷。在这种情况下,这不会影响安全性,因为密码无论如何都存储在文本文件中-真正的安全性是运行此命令的用户的密码,以及密钥保密的事实)。您可以通过执行gpg--edit key
,然后执行passwd
来更改密钥上的密码。不要忘了在之后保存
。对于与我处于相同情况的其他人,我最终通过编辑一个签名密钥使其密码与另一个相同(存储在gpg密码文件中的密码)来解决gpg的这一明显缺陷。在这种情况下,这不会影响安全性,因为密码无论如何都存储在文本文件中-真正的安全性是运行此命令的用户的密码,以及密钥保密的事实)。您可以通过执行gpg--edit key
,然后执行passwd
来更改密钥上的密码。不要忘记在之后保存。您有不同的选择
- 完全删除密码,因为它们仍然存储在某个地方
- 使用相同的密码(正如您已经发现的)
- 使用
并预设密码短语。我不确定这是否仅是GnuPG 2(通常作为gpg代理
安装,可能是从gpg2
软件包安装)。预设密码短语非常简单。您必须对每个密钥分别运行此命令,并确保在给定时间内缓存密码短语(至少是添加所有密码短语,然后对要签名的文件进行签名的处理时间)gnupg2
- 为了完整性,但不实际:为每个密钥分别对文件进行签名,然后拆开OpenPGP数据包并重新组合,逐个添加所有签名。使用多个密钥签名只会创建多个签名包
- 完全删除密码,因为它们仍然存储在某个地方
- 使用相同的密码(正如您已经发现的)
- 使用
并预设密码短语。我不确定这是否仅是GnuPG 2(通常作为gpg代理
安装,可能是从gpg2
软件包安装)。预设密码短语非常简单。您必须对每个密钥分别运行此命令,并确保在给定时间内缓存密码短语(至少是添加所有密码短语,然后对要签名的文件进行签名的处理时间)gnupg2
- 为了完整性,但不实际:为每个密钥分别对文件进行签名,然后拆开OpenPGP数据包并重新组合,逐个添加所有签名。使用多个密钥签名只会创建多个签名包
- 您有不同的选择
gpg代理
并没有那么复杂,它的优点是您实际上可以从应用程序中完全删除密码短语,并大大减少私钥的暴露。无论如何,您都必须这样做才能支持ECC密钥,只有GNUPG2.1才支持ECC密钥(GNUPG2删除了--passphrase
选项)。有人指出,如果设置了--batch
选项,GNUPG2和2.1实际上仍然支持--passphrase
。谢谢!我一直在调查gpg探员比特,觉得现在不值得这么麻烦。我认为,仅仅因为这些密钥存储在其他地方,所以删除密码就有点危险。但是如果不是这样的话,密码是毫无意义的。使用gpg代理
并没有那么复杂,它的优点是您实际上可以从应用程序中完全删除密码短语,并大大减少私钥的暴露。无论如何,您都必须这样做才能支持ECC密钥,只有从GNUPG2.1开始才支持ECC密钥(GNUPG2删除了--passphrase
选项)。有人指出,如果设置了--batch
选项,GNUPG2和2.1实际上仍然支持--passphrase
。