我在 OSX 10.13.4 上,我正在学习如何从终端使用 gnupg。我用
gpg --cipher-algo AES256 -c input.txt -o output.gpg
它要求我输入密码,我输入了一个密码,文件现在已加密。但是,当我发出命令时,gpg -d output.gpg
它解密了它,而没有要求我输入密码 ?_?
我该如何防止这种情况发生?
编辑
下列的这我已经开始max-cache-ttl 0
并且.gnupg/gpg-agent.conf
它似乎起作用了,有人能确认这确实是正确的做法吗?
答案1
max-cache-ttl 0
在文件中进行设置.gnupg/gpg-agent.conf
似乎是一个好的解决方案。特别是因为它有效。
还有 gpg-agent 选项,--no-allow-external-cache
其作用是:
告诉 Pinentry 不要启用使用外部缓存密码的功能。
某些桌面环境倾向于使用一个主密码解锁所有凭据,并且可能安装了 Pinentry,它使用额外的外部缓存来实现这种策略。使用此选项时,建议 Pinentry 不要使用此类缓存,而是 总是向用户询问所请求的密码。
那声音好像它应该总是要求输入密码,但它似乎没有这样做。或者,它只在存在外部缓存时才询问。
或者,您可以继续让 gpg-agent 缓存密码,但在需要时通过发送信号SIGHUP
(使用kill
、killall
、pkill
等)清除它们:
此信号会刷新所有缓存的密码,如果程序已使用配置文件启动,则会再次读取配置文件。仅遵守某些选项:quiet、verbose、debug、debug-all、debug-level、debug-pinen-try、no-grab、pinentry-program、pinentry-invisible-char、default-cache-ttl、max-cache-ttl、ignore-cache-for-signing、no-allow-external-cache、allow-emacs-pinen-try、no-allow-mark-trusted、disable-scdaemon 和 disable-check-own-socket。scdaemon-program 也受支持,但由于当前实现仅调用 scdaemon 一次,因此除非您手动终止 scdaemon,否则它没什么用处
答案2
另一种方法是仅禁用对称加密/解密(不使用公钥/私钥对)的缓存。您可以每次使用命令行选项执行此操作:
gpg --no-symkey-cache -c input.txt
gpg --no-symkey-cache -d output.gpg
或者您可以添加no-symkey-cache
到~/.gnupg/gpg.conf
,这样您就不需要每次都添加到命令行。请注意,该--no-symkey-cache
功能需要gpg 2.2.7
或 更高版本。
如果您只想禁用不涉及公钥/私钥对的对称加密/解密的缓存,则此解决方案更好。它仍将缓存公钥/私钥对的密码。