【发布时间】:2018-04-26 16:50:10
【问题描述】:
我一直在使用gpg 进行加密。有人建议我应该改用gpg2。当我去使用gpg2时,我几乎无能为力;它会抱怨需要访问私钥,但我似乎无法让它在没有 gpg-agent 运行的情况下使用私钥。
原来我有意禁用了gpg-agent(通过使用chmod -x /usr/bin/gpg-agent);这导致 gpg2 的功能非常有限,并向 stderr 投诉。
我禁用gpg-agent 的原因是因为一系列事件。
首先,我将 SSH 连接到远程机器,“代理”会打开一个弹出窗口,要求我解锁我的 SSH 密钥。我不喜欢这个,因为:
- 屏幕上的弹出窗口中断了我的工作流程
- 我的屏幕上的弹出窗口不太可能被注意到,因此它会显示连接停止而不是查询以解锁加密密钥
- 当我绝对不希望我的密码被缓存时,代理似乎缓存了我的密码(很像
sudo对密码缓存的恼人使用,我可以在其配置中禁用它);我总是想为我的加密密钥输入密码,每次它们被用于任何使用它们的程序时。 - 弹出窗口似乎属于一个单独的进程,而我希望 使用密钥的特定进程 来查询密码(即使它是执行实际查询的库);由于我的大部分活动都使用命令行工具,这意味着 GUI 应用程序并不理想,因为我所做的一切都无法访问 X11
- 在后台自动启动一个单独的进程消除了“一个命令,一个进程”的概念,特别是如果该后台进程在原始命令退出后仍然存在
原来是 GNOME 的关键代理,如果不卸载 GNOME,我就无法卸载代理。所以我只是通过chmod -x /usr/bin/gnome-keyring* 禁用了它。然后我发现 SSH 会退回到另一个代理,所以我也使用相同的方法禁用了它chmod -x /usr/bin/ssh-agent*
当我开始使用gpg 时,我发现它有一个类似的代理,就是我要询问的那个。出于同样的原因,我立即禁用了它;我希望软件始终向我询问密码以使用私钥。我不希望出于任何原因缓存密码。
所以gpg2似乎需要gpg-agent,我想问一下:
- 我是否对密码缓存的使用过于偏执?我很想看到或被指出对此的讨论。
- 是否有最佳实践可以更好地避免意外启用缓存密码?
- 有没有办法在不运行
gpg-agent的情况下使用gpg2? - 鉴于代理是守护进程,它们应该能够回答查询,是什么阻止了在本地计算机上运行的其他用户或服务能够访问我缓存或存储的凭据?
【问题讨论】:
-
只想指出,我非常同意这里的观点。这就是我仍然继续使用和安装
gpg而不是gpg2的原因。 -
除了 rouge 进程访问套接字的可能性之外,还有可能安装的工具监视通过 d-bus 的所有内容。 d-bus 用于启用套接字通信。当我安装 Ubuntu 16.04 时,我发现很多信息被自动存储在一个数据库文件中,关于正在使用的应用程序和文件,以及另一个似乎存储关于通过 dbus 进行的信息的数据库文件。当然我把它们都禁用了。
标签: security gnupg passphrase gpg-agent