主离线密钥、共享加密/解密密钥、唯一签名密钥?

信息安全 pgp gnupg
2021-08-30 00:09:37

我已经阅读很多 关于如何使用离线主密钥设置 PGP 密钥的不同文章我拥有多个 YubiKey NEO 硬件智能卡,我打算将它们用于 PGP 并用作 SSH 密钥。其中一个硬件密钥将是我的日常驱动程序,其他的则保存在其他地方的安全位置,以防密钥丢失。正如其他地方所推荐的,主密钥将离线存在于一个安全的位置,因为我只需要在需要撤销子密钥时访问它。

我看到我需要维护三种类型的密钥:

  1. 离线主密钥。
    • 只有一个。
    • 负责签署和撤销子密钥。
    • 完全脱机存在于安全位置。
  2. 共享加密密钥。
    • 只有一个。
    • 负责加密和解密。
    • 同时存在于所有硬件智能卡上并在安全位置脱机。
  3. 共享身份验证密钥。
    • 只有一个。
    • 负责SSH认证。
    • 同时存在于所有硬件智能卡上并在安全位置脱机。
  4. 签名密钥。
    • 每个硬件智能卡一个。
    • 负责签收东西。
    • 仅存在于单个硬件智能卡上,无需离线备份。

这是拥有子项的总体思路吗?由于我将主要使用我的智能卡首先进行 SSH 身份验证,然后是 PGP 加密/解密,所以这种设置有意义吗?

我没有听说有人使用共享加密密钥,这可能吗?对于每张卡,我想我会做一些我会做gpg --card-edit的事情并导入加密/解密密钥对,然后生成并导入新的签名密钥对,使用离线主密钥对其进行签名。是否有关于如何在某处执行此操作的指南?

我是子密钥的新手,我仍在尝试了解什么是可能的,什么是安全的“最佳”。

1个回答

您的方法似乎合理;我要补充一点,主密钥还用于管理用户 ID(这对于维护信任网络中的信任很重要)。

拥有单个加密密钥背后的想法是 OpenPGP 缺乏将给定子密钥与设备或用户 ID 耦合的方法。另一方面,对于签署子密钥,这并不重要,而是使用可用的密钥。

使用(not ) 菜单keytocard中的命令也可以使用 OpenPGP 智能卡(最终的 Yubikey 只是充当一个)来实现共享加密密钥。OpenPGP 智能卡上的FSFE wiki 页面提供了一个深入的教程,涵盖了使用 OpenPGP 智能卡的几乎所有可能的场景(FSFE 会员卡是一种 OpenPGP 智能卡)。--edit-key--card-edit