gpt4 book ai didi

security - gpg2中gpg-agent的目的

转载 作者:行者123 更新时间:2023-12-04 02:54:16 24 4
gpt4 key购买 nike

我已经使用gpg进行加密已有一段时间了。有人建议我应该改用gpg2。当我去使用gpg2时,我几乎什么也做不了。它会提示需要访问私钥,但是在没有运行gpg-agent的情况下,我似乎无法使用私钥。

事实证明,我故意禁用了gpg-agent(通过使用chmod -x /usr/bin/gpg-agent);这导致gpg2的功能非常有限,并向stderr投诉。

我禁用gpg-agent的原因是发生了一系列事件。

首先,我将SSH连接到远程计算机,“代理”将打开一个弹出窗口,要求我解锁SSH key 。我之所以不喜欢,是因为:

  • 屏幕上的弹出窗口中断了我的工作流程
  • 屏幕上的弹出窗口不太可能会被注意到,因此它会显示连接处于停滞状态,而不是查询以解锁加密 key
  • 当我绝对不​​希望我的密码被缓存时,该代理似乎缓存了我的密码(就像sudo讨厌使用密码缓存一样,我可以在其配置中禁用它);每当我的加密 key 用于任何正在使用它们的程序时,我都会一直想为它们输入密码短语。
  • 该弹出窗口似乎由一个单独的进程拥有,而我希望特定的进程使用该键来查询密码短语(即使它是进行实际查询的库);由于我的大部分事件都是使用命令行工具进行的,因此这意味着GUI应用程序并不理想,因为并非我所做的所有事情都可以访问X11
  • 在后台自动启动一个单独的进程将删除“一个命令,一个进程”的概念,尤其是如果该后台进程在原始命令退出
  • 之后仍然存在

    原来,这是GNOME的关键代理,如果不卸载GNOME,就无法卸载该代理。所以我只是通过 chmod -x /usr/bin/gnome-keyring*禁用了它。然后,我发现SSH将回退到另一个代理,因此我也使用相同的方法 chmod -x /usr/bin/ssh-agent*禁用了它

    当我开始使用 gpg时,我发现它有一个类似的代理,就是我要问的那个代理。我出于同样的原因立即将其禁用;我希望软件始终要求我提供密码短语才能使用私钥。我不希望出于任何原因缓存密码短语。

    因此,随着 gpg2似乎需要 gpg-agent,我想问一下:
  • 我对密码短语缓存的使用是否过于偏执?我很想看到或指出对此进行讨论。
  • 是否有最佳实践可以提供一种更好的方法来避免甚至意外启用缓存的密码短语的使用?
  • 有没有一种方法可以在不运行gpg2的情况下使用gpg-agent
  • 假定代理是希望能够回答查询的守护程序,那么是什么阻止了本地计算机上运行的另一个用户或服务能够访问我的缓存或存储的凭据?
  • 最佳答案

    Am I being overly paranoid about the use of passphrase caching? I would be curious to see or be pointed to a discussion of it.



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

    Is there a best practice that enables a better way to avoid even accidentally enabling the use of a cached passphrase?



    一种快速的解决方案(可能不是最佳实践)是使用以下选项来自定义〜/.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

    我发现以下有关GPG关键最佳实践的指南(更多关于 key 管理的一般指南,不完全是您要问的内容)相当有用且易于遵循:
  • https://alexcabal.com/creating-the-perfect-gpg-keypair/
  • https://riseup.net/en/security/message-security/openpgp/best-practices(已过时,某些部分在最新的gpg 2.x版本中无法使用)

  • Is there a way to use gpg2 without gpg-agent ever running?



    据我所知,不使用gpg2.x。手册页指出以下内容:
       --use-agent
    --no-use-agent
    This is dummy option. gpg always requires the agent.

    我有gpg 2.1.15。

    Given that agents are daemons which are expected to be able to answer queries, what prevents another user or service running on the local machine from being able to access my cached or stored credentials?



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

    关于security - gpg2中gpg-agent的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273922/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com