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使用密码缓存,我可以在其配置中禁用它); 每次将它们用于任何正在使用它们的程序时,我总是希望为我的加密密钥输入密码.它原来是GNOME的核心机构,我不能卸载不卸载GNOME代理.所以我只是禁用它chmod -x /usr/bin/gnome-keyring*.然后我发现SSH会回退到另一个代理,所以我也使用相同的方法禁用了它chmod -x /usr/bin/ssh-agent*
当我开始使用时gpg,我发现它有一个类似的代理,就像我要问的那个.我出于同样的原因立即禁用了它; 我希望软件总是问我密码才能使用私钥.我不希望以任何理由缓存密码.
所以gpg2看似要求 gpg-agent,我想问:
gpg2没有gpg-agent运行的情况下使用?我是否对密码短语缓存的使用过于偏执?我很想看到或指出对此进行讨论。
您的担心当然是有效的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
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |