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
来更改密钥上的密码。不要忘记在之后保存。

您有不同的选择

  • 完全删除密码,因为它们仍然存储在某个地方
  • 使用相同的密码(正如您已经发现的)
  • 使用
    gpg代理
    并预设密码短语。我不确定这是否仅是GnuPG 2(通常作为
    gpg2
    安装,可能是从
    gnupg2
    软件包安装)。预设密码短语非常简单。您必须对每个密钥分别运行此命令,并确保在给定时间内缓存密码短语(至少是添加所有密码短语,然后对要签名的文件进行签名的处理时间)
  • 为了完整性,但不实际:为每个密钥分别对文件进行签名,然后拆开OpenPGP数据包并重新组合,逐个添加所有签名。使用多个密钥签名只会创建多个签名包

    • 您有不同的选择

      • 完全删除密码,因为它们仍然存储在某个地方
      • 使用相同的密码(正如您已经发现的)
      • 使用
        gpg代理
        并预设密码短语。我不确定这是否仅是GnuPG 2(通常作为
        gpg2
        安装,可能是从
        gnupg2
        软件包安装)。预设密码短语非常简单。您必须对每个密钥分别运行此命令,并确保在给定时间内缓存密码短语(至少是添加所有密码短语,然后对要签名的文件进行签名的处理时间)
      • 为了完整性,但不实际:为每个密钥分别对文件进行签名,然后拆开OpenPGP数据包并重新组合,逐个添加所有签名。使用多个密钥签名只会创建多个签名包

      谢谢!我一直在调查gpg探员比特,觉得现在不值得这么麻烦。我认为,仅仅因为这些密钥存储在其他地方,所以删除密码就有点危险。但是如果不是这样的话,密码是毫无意义的。使用
      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