我正在学习如何使用 gpg,我想为不同的目的创建多个密钥,例如一个用于加密我的电子邮件,另一个用于连接到 ssh,另一个用于密码存储。我可以看到这很快就失控了,我失去了对 ssh 等使用的密钥的追踪。
所以我的问题是我怎样才能保持井井有条?有没有办法在键或子键上附加名称或某些标记系统?或者我以错误的方式思考这个问题,我不应该查看 gpg 本身来组织我的密钥?
我知道这个问题是开放式的,并且可能是固执己见的,但我只是不确定这里推荐哪些安全实践。
答案1
用于 SSH 身份验证的 GPG(子)密钥必须具有用途 A(身份验证),并且实际上该用途不用于其他任何用途,因此有选择地设置可能足以识别您的 SSH 密钥。在旧版本中很难设置/更改甚至查看使用标志,但现代 GPG 更好:参见
关键详细信息列表中的 GPG 使用标志是如何定义的?
https://security.stackexchange.com/questions/31614/how-to-change-subkey-usage-of-a-pgp-key
https://superuser.com/questions/833875/how-do-i-display-the-usage-flags-for-my-encryption-keys-in-a-less-hackish-way
https://security.stackexchange.com/questions/206072/how-do-i-interpret-output-that-products-gpg-listing-keys
但要小心每个日期。
如果您使用gpg --full-gen-key
它,您可以输入“真实姓名”、“电子邮件地址”和“评论”,所有这些都将出现在userid 记录,显示当您列出或以其他方式查看键时。显然,您可以在评论中添加任何您想要的信息;不太明显的是,你可以在其他领域这样做。 PGP 最初设计用于电子邮件,因此旨在将密钥与人员或电子邮件地址相关联,这些地址在外人看来是稳定的,但实际上是在业务部门或“listserv”等人员之间共享和/或传输的,但是这只是一个意图——像 GPG 这样的程序可以处理任何格式正确的数据,无论它是否实际被接收或将作为电子邮件发送。
但请注意,用户 ID 信息包含在公钥中,并且可以被您的公钥分发到的任何人看到——如果您使用常见或默认的分发方法(如密钥服务器),则可能会很多。标记一个键“[电子邮件受保护](将此密钥用于 github)”并将该密钥提供给 github 来验证您的提交可能是一个好主意。标记一个密钥“(记住这不是我的儿童色情文件的正确密钥)”可能是一个坏主意。另外注意 userid 信息仅在主密钥级别而不是子密钥,因此它不能轻易帮助区分子密钥 - 但大多数 PGP 程序(包括 GPG)通常仅在主密钥上操作,并且不会使其很容易选择,甚至识别大多数操作的子项。