为什么智能卡很智能

如果您使用 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>永远不会离开设备,智能卡本身执行 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 密钥。

资源

Kyle Rankin 是《Linux Journal》的技术编辑和专栏作家,也是 Purism 的首席安全官。他是《敌对网络中的 Linux 强化》、《DevOps 故障排除》、《官方 Ubuntu 服务器书籍》、《Knoppix Hacks》、《Knoppix 口袋参考》、《Linux 多媒体 Hacks》和《Ubuntu Hacks》的作者,也是许多其他 O'Reilly 书籍的贡献者。Rankin 经常就安全和开源软件发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论