9

我正在尝试对一些使用 GPG(当前为 v 1.4.10)执行对称加密/解密过程的自定义软件进行验证。我当前的加密命令如下所示:

gpg --batch --no-tty --no-use-agent --symmetric --cipher-algo AES256 --passphrase "foobar" /path/to/file_to_be_encrypted

如果没有该--no-use-agent选项,我会收到臭名昭著的错误消息

gpg-agent 在此会话中不可用

我担心迁移到 gpg2,因为根据文档,gpg-agent 始终是必需的,并且--no-use-agent只是一个虚拟选项。我的 gpg 调用通过一个守护进程在后台发生,所以这是一个非常无代理的场景(加上它是对称的,我根本不需要代理)。

这种详细程度的文档很少,所以我正在寻找用户体验。gpg2 是否更紧密地结合了代理,这样我就不必担心它的可用性?

4

1 回答 1

6
  1. 您调用的方式gpg2,如果输出文件path/to/file_to_be_encrypted.gpg已经存在,它可能会失败。如果您希望文件被覆盖,您应该提供以下--yes选项:

    gpg2 --batch --yes --no-tty --no-use-agent --symmetric --cipher-algo AES256 --passphrase "foobar" /path/to/file_to_be_encrypted
    
  2. 当您使用对称加密时(就像您所做的那样),密码短语约束(即使设置为强制执行gpg-agent根本不会被应用——它只会起作用。

    假设gpg-agent是这样运行的(让mypasswords文件甚至包含与您的密码完全匹配的禁止模式):

    eval $(gpg-agent --daemon --enforce-passphrase-constraints --min-passphrase-len 8 --min-passphrase-nonalpha 4 --check-passphrase-pattern mypasswords)
    

    那么你的命令仍然会成功。

    简而言之:gpg-agent不会让它失败(除非它由于某种原因使 gpg 崩溃——比如错误的配置或缺少可执行文件,这是你无法解释的)

    编辑:我刚刚检查过并且在对称模式下,即使 gpg-agent 配置错误gpg-agent 可执行文件丢失, gpg2 也可以工作。

    这不相关,但以防万一:我还验证了当您在 gpg-agent 丢失或配置错误时尝试更改私钥密码时会发生什么:gpg2 将报告警告,甚至不会要求新的密码,然后继续工作。

资料来源:

于 2011-08-19T13:54:03.523 回答