gpg-agent在gpg2中的用途

ine*_*ght 8 security passphrase gnupg gpg-agent

我一直在使用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,我想问:

  • 我是否过于偏执使用密码缓存?我很想看到或指出对它的讨论.
  • 是否有一种最佳实践可以更好地避免意外启用缓存密码短语?
  • 有没有办法在gpg2没有gpg-agent运行的情况下使用?
  • 鉴于代理是预期能够回答查询的守护进程,是什么阻止在本地计算机上运行的另一个用户或服务能够访问我的缓存或存储的凭据?

Rou*_*ian 6

我是否对密码短语缓存的使用过于偏执?我很想看到或指出对此进行讨论。

您的担心当然是有效的IMO。好消息是,有一些方法可以自定义gpg-agent行为以满足您的需求。例如,使用基于终端的密码短语提示(PIN项)代替GUI提示,并且缓存密码短语。

是否有最佳实践可以提供一种更好的方法来避免甚至意外启用缓存密码短语的使用?

一种快速的解决方案(可能不是最佳实践)是使用以下选项来自定义〜/ .gnupg / gpg-agent.conf:

# Expire cached PINs (passphrases) after zero seconds
default-cache-ttl 0
max-cache-ttl 0

# If you use your GPG keys for SSH auth...
default-cache-ttl-ssh 0
max-cache-ttl-ssh 0
enable-ssh-support

# Use TTY-based PIN entry program (I see pinentry, 
# pinentry-curses, pinentry-gnome3, pinentry-tty and 
# pinentry-x11 on my system)
pinentry-program /usr/bin/pinentry-tty
Run Code Online (Sandbox Code Playgroud)

我发现以下有关GPG关键最佳实践的指南(更多关于密钥管理的一般指南,不完全是您要问的内容)相当有用且易于遵循:

有没有一种方法可以在不运行gpg-agent的情况下使用gpg2?

据我所知,不使用gpg2.x。手册页指出以下内容:

   --use-agent
   --no-use-agent
          This is dummy option. gpg always requires the agent.
Run Code Online (Sandbox Code Playgroud)

我有gpg 2.1.15。

假设代理是希望能够回答查询的守护程序,那么是什么阻止了本地计算机上运行的另一个用户或服务能够访问我的缓存或存储的凭据?

很好的问题...默认情况下,gpg-agent使用套接字,因此从理论上讲,以用户身份运行的任何进程理论上都可以劫持您的密钥。不过,不要在此引用我。以下是gpg-agent工作原理的概述,希望可以帮助您开始寻找真正的答案:https : //unix.stackexchange.com/questions/188668/how-does-gpg-agent-work