我是使用 GnuPG 的新手,并试图了解如何最好地使用它。我已经阅读了针对非技术人员的 GPG/PGP 的简短易懂的解释?,但大多数指南都是从单机角度解释 PGP 的。
我想在三种计算设备上使用 GnuPG:Linux PC、Linux 笔记本电脑和 Android 手机。
基本用例是加密/解密由 IMAP 服务管理的电子邮件,因此所有设备都需要相同的私钥进行解密。
我想我的选择是:
只需将我所有的密钥复制到每台设备上的密钥环,并主要依靠私钥密码进行保护。
创建一个主密钥(使用 --gen-key)来代表我的身份,然后创建一个单独的一次性密钥(再次使用 --gen-key)用于加密/解密电子邮件并使用主密钥签名。前者只驻留在我的电脑上,后者分布在每个设备上。只要我的移动设备没有受到损害,一次性密钥就一直有效。
我可能过于偏执,让事情变得比实际情况更复杂,但请幽默我。我相信不要把所有的鸡蛋放在一个篮子里。
主密钥应该是我的数字身份。将花费大量精力围绕该身份建立信任,而我宁愿忍受偏执带来的不便,也不愿因疏忽而丢失我的密钥,不得不围绕新的主密钥建立信任(也许这不像我那么糟糕)想,但我对此很陌生)。
与 PC 相比,我更容易丢失笔记本电脑或手机。如果丢失 == 妥协,那么我宁愿丢失一个一次性密钥对(我可以撤销)而不是我的主密钥对。我总是可以将我的主钥匙的信任赋予新的一次性钥匙。
抱歉问了这么长的问题。:-)
TL; 博士
密码是否足以保护我在多个设备上存储我的主私钥?
我的选项#2 计划可行吗?我做错了什么还是可以改进?
如果选项#2 是个坏主意,那么在多个设备上为单个用户使用 GnuPG 时的最佳实践是什么?
GnuPG 配置中的一些更改需要gpg-agent重新启动/重新启动(根据文档),但是...我该怎么做?我试过gpg-agent restart,,service gpg-agent restart但没有成功。
使用 Macports,我意识到有端口gnupg和更新的gnupg2. 我想使用 GnuPG 来加密文件。我应该两者都安装,还是只安装一个就足够了?如果我同时安装,两者是否兼容?我首先安装哪个重要吗?
在基于控制台的环境(例如 ssh 会话)中使用 gpg 会失败,因为 GTK pinentry 对话框无法在 SSH 会话中显示。
我试过了,unset DISPLAY但没有帮助。GPG 命令行选项不包括用于强制 pinentry 进入控制台模式的开关。
较旧的 GPG 版本提供了基于文本的提示,该提示在 SSH 会话中运行良好,但升级后却失败了。
有--textmode命令行开关,但显然,它还有其他作用。
为远程会话获取纯文本 pin 条目的正确和干净的方法是什么?
GnuPG 可以gpg-agent缓存对私钥的访问。如何在整个用户会话中保持该缓存处于活动状态?
当我解锁 的密钥时gpg-agent,它只会在有限的时间内保持缓存状态。使用 SSH 的代理,我输入一次密码短语,它会在整个会话中保持缓存状态。我希望从gpg-agent.
因此,ssh-agent不受缓存寿命有限的影响。但是gpg-agent限制了缓存生命周期,至少在默认情况下是这样。我怎样才能消除缓存时间的限制从gpg-agent?
我有两封经常使用的电子邮件,对于这两封电子邮件,我都想使用由 GnuPG 生成/管理的 PGP 密钥。如果可能的话,我想避免为每封电子邮件创建不同的密钥对,因为这对于我的情况是不必要的,即我可以互换使用两封电子邮件。
有没有办法做到这一点?
我使用的是 Mac OS X 10.5 和 Ubuntu 11.04,以及 Thunderbird 3.1.10。
提前致谢!
我想生成一个RSA密钥GPG并在SSH登录时使用它。这甚至可能吗?如果是这样,如何?
编辑:请参阅@wwerner 的回答,我没有尝试过,但它似乎是当前的解决方案(截至 2018 年)
我的 gnupg 密钥环包含数百个不必要的条目。我如何从中删除过期、撤销和未签名的密钥?
我想保留已签署我的密钥的密钥,并仅在需要时导入新密钥。我之前为我的密钥签名者导入了整个信任网络。我的一位钥匙签名者似乎在他的旅行中获得了大量签名,而这些签名现在正在堵塞我的钥匙圈。
ssh-keygen默认创建 RSA 密钥,但gpg --gen-key更喜欢 DSA/ElGamal。
哪一个 - RSA 或 DSA - 更适合 GPG?
我正在尝试使用 gpg对称加密文件。
$ gpg --encrypt --symmetric $MYFILE
Run Code Online (Sandbox Code Playgroud)
我输入并重新输入密码,然后 gpg 告诉我
You did not specify a user ID. (you may use "-r")
Current recipients:
Enter the user ID. End with an empty line:
Run Code Online (Sandbox Code Playgroud)
我不知道在这里输入什么。我是对称加密(不是公钥加密),所以我不明白为什么 gpg 想知道收件人可能是谁。我不知道 gpg 期望的用户 ID 是什么样的,而且我也不知道任何 gpg 用户 ID。如果我只输入一个空行,gpg 会抱怨“没有有效的收件人”。
那么如何使用 gpg 对称加密文件呢?
版本:gpg (GnuPG) 1.4.11,在 Ubuntu 11.10 中打包。
gnupg ×10
encryption ×2
linux ×2
pgp ×2
ssh ×2
cache ×1
command-line ×1
console ×1
email ×1
gpg-agent ×1
private-key ×1
public-key ×1
security ×1
services ×1
terminal ×1