跨多个设备管理 gpg 密钥的最佳方法是什么?

信息安全 加密
2021-09-06 03:01:02

我有一台台式机和一台笔记本电脑都运行 Debian。所有设备都有加密的硬盘驱动器。我还有一部运行 Cyanogenmod/Android 的手机。

管理密钥的最佳方法是什么?

理想情况下,我希望能够列出一个公钥。

1个回答

显而易见的答案是使用gpg -a --export-secret-keygpg --import在设备之间共享您拥有的一个密钥。(有些人建议复制~/.gnupg/secring.gpg文件,或者更糟糕的是,复制整个~/.gnupg/目录。不要这样做;我遇到了一些细微的错误,这些错误使二进制格式无法跨实现移植,尽管如果你只坚持最近的 GnuPG,你就是几乎肯定没问题;gpg.conf不过,差异可能会咬你一口,所以最好始终导出/导入密钥。)——这是我通常使用的方案(我没有 Android 设备)。

如果您的系统具有不同的安全级别(例如,Cyanogen 有这个 phone-home 后门),您可能希望使用子密钥方案:首先创建一个仅签名密钥,然后创建两个或多个子密钥(一个仅签名您可以用来签署消息的子密钥和(如果需要:通常不这样做,使用您的主密钥)其他密钥,以及一个仅加密子密钥,您可以使用它来解密其他人加密到此子密钥的电子邮件)。然后,您只需将不太受信任的设备上需要的那些子密钥导出到它。Debian Wiki有关于如何执行此操作的非常详细的说明要点是,您首先将整个密钥导出到备份中,然后在本地删除“主”子项,然后再次导出(这次缺少主项,只保留您实际要导出的子项),然后导入在第一步中创建的备份文件。仅导入设备上的第二个导出。

不要创建多个密钥。人们会对使用哪一个感到困惑。


我愿意添加更多细节;这是一个有点笼统的答案;更多详细信息取决于您的用例(例如,您是想在所有设备上阅读加密邮件还是只阅读一个,或者您想在所有设备上仅阅读一些加密邮件但有其他加密邮件您的 Android 设备无法访问;以及签字)。