为什么智能卡很智能
如果您使用 GPG 密钥,请了解将它们存储在智能卡上的好处。
GPG 已经存在很长时间了,被用于保护从您的电子邮件到您的软件的一切。如果您想给某人发送电子邮件,并确保没有人可以阅读或修改它,GPG 签名和加密是您将使用的主要方法。发行版使用 GPG 对其软件包进行签名,因此您可以确信,您从软件包镜像下载和安装的软件包没有被修改过原始状态。许多组织中的开发人员都遵循最佳实践,即对他们提交到仓库的任何代码进行 GPG 签名。通过签署他们的提交,其他人可以确认声称来自特定开发人员的更改确实来自该开发人员。像 GitHub 和 GitLab 这样的基于 Web 的 Git 前端允许用户上传他们的 GPG 公钥,因此当他们提交签名代码时,界面可以向所有人显示它已经过验证。
然而,所有这些安全最终都归结为您的私钥的安全性。一旦其他人可以访问您的私钥,他们就可以执行所有与您相同的 GPG 任务。这就是为什么您在首次设置 GPG 密钥时会被提示输入密码。其想法是,如果攻击者能够复制您的密钥,他们仍然需要猜测您的密码才能使用该密钥。尽管 GPG 密钥安全非常重要,但许多人仍然只是将他们的密钥留在他们文件系统上的 ~/.gnupg 目录中,并将该目录复制到他们需要使用 GPG 的任何系统中。
有一种更好的方法。使用 OpenPGP 智能卡,您可以将您的密钥存储在受 PIN 码保护的安全设备上,不仅可以更安全地存储您的密钥,还可以更方便地使用它们。虽然有些笔记本电脑配备了集成的智能卡读卡器,但大多数没有。幸运的是,这些设备可以作为来自多家不同供应商的多功能 USB 安全令牌设备的一部分提供,《Linux Journal》过去曾发表过对此类产品的评测。在本文中,我将讨论 OpenPGP 智能卡比本地文件系统更适合存储您的密钥的所有原因。
原因 1:防篡改密钥存储智能卡的主要好处之一是它可以安全地存储您的 GPG 密钥。当您将密钥存储在文件系统上时,任何可以访问该文件系统的人都可以复制密钥。在智能卡上,密钥一旦进入,就永远不会离开,既不会意外离开,也不会因篡改而离开。智能卡芯片本身被设计成防篡改的,即使有人可以物理访问,也能抵抗提取密钥数据的尝试。通过将密钥放在智能卡上,您可以合理地保证您的密钥是安全的,即使是来自坚定的攻击者。
原因 2:GPG 操作在卡上进行智能卡的下一个好处与密钥存储的防篡改性质有关。由于私钥永远无法离开智能卡,因此您的所有 GPG 操作都在智能卡本身上进行!当您的 GPG 密钥在您的文件系统上时,每次您加密、解密或签名某些内容时,您的密钥都会被解锁并复制到 RAM 中,以便 CPU 可以执行 GPG 操作。使用智能卡,密钥< Em>永远 Em>不会离开设备,智能卡本身执行 GPG 操作。GPG 具有智能卡感知能力,因此它通过 USB 将有效负载发送到智能卡,智能卡对其进行加密、解密或签名,然后将输出通过 USB 发送回计算机。
操作在卡上进行这一事实非常重要,因为它可以进一步保证您的私钥不会泄露,即使您在不受信任的机器上使用智能卡也是如此。即使攻击者可以远程访问不受信任的机器并且可以猜到您的 PIN 码,他们最多也只能暂时使用您的密钥来加密、解密或签名某些内容。他们仍然无法提取您的密钥或无限期地使用它们——一旦您拔下智能卡,密钥就会超出他们的掌握。
原因 3:便携性智能卡的另一个好处是便携性。诚然,笔记本电脑非常便携,理论上,您可以随身携带一台笔记本电脑(如果您是随叫随到的站点可靠性工程师,情况可能就是这样)。但现实情况是,大多数人至少会在一段时间内让他们的电脑处于无人看管的状态。如果您去某个地方旅行,您可能会携带笔记本电脑,但在许多情况下,您可能也会将其留在酒店。
如果您有多台计算机,您将面临将 GPG 密钥复制到您打算使用这些密钥的每台计算机上的问题。在这种情况下,这些便携性限制就成了一个问题,因为您不会一直拥有所有这些笔记本电脑。笔记本电脑会丢失和被盗,并且可以物理访问笔记本电脑的攻击者可能会访问您的 GPG 密钥。即使笔记本电脑具有磁盘加密,精明的攻击者也可能使用冷启动攻击来获取仍存在于已挂起机器的 RAM 中的磁盘解锁密钥副本。
当您的 GPG 密钥在智能卡上时,您可以将 USB 安全令牌放在您的钱包或口袋里(我发现牛仔裤的表袋是个好地方),并随时随身携带。这种便携性意味着您不必担心将 GPG 密钥复制到您的每台机器上。相反,您只需在需要使用密钥时插入智能卡,然后在完成后将其移除即可。即使您想在使用计算机时将智能卡连接到计算机,您也可以(并且应该)在离开计算机时仍然将其移除,以便它始终与您同在。有些 USB 安全令牌甚至提供 NFC 接口,因此您可以在智能手机上使用您的密钥。
原因 4:多因素身份验证智能卡的最后一个好处是它在您的 GPG 密钥上强制执行多因素身份验证。理想情况下,GPG 密钥受到两个不同因素的保护:您拥有的东西(密钥本身)和您知道的东西(解锁密钥的密码)。当您将密钥存储在文件系统上时,多因素身份验证是可选的。当您首次生成密钥时,系统会提示您生成密码来保护它们,但您可以跳过该步骤并生成没有密码保护的密钥。
如果您所在的组织想要在 GPG 密钥上强制执行多因素身份验证,智能卡是一种简单的方法。智能卡要求用户输入 PIN 码才能解锁密钥,并且每当使用该特定密钥时,GPG 都会自动提示用户输入他们的智能卡,然后键入 PIN 码。
结论我希望您发现对 OpenPGP 智能卡的好处的讨论很有用。凭借市场上大量的 USB 安全令牌(随着对安全加密货币存储的兴趣增长,这个市场变得更大),您有很多价格范围内的选择。在购买智能卡之前,请务必检查智能卡支持哪些 GPG 密钥大小和算法,特别是如果您使用较新的椭圆曲线算法或更大的(3072 位或 4096 位)RSA 密钥。
资源- Todd A. Jacobs 的“使用 YubiKey 5 进行 WebAuthn Web 身份验证”,《LJ》,2019 年 2 月
- Todd Jacobs 的“Purism Librem Key”,《LJ》,2019 年 2 月