Purism Librem 密钥

Librem 密钥是一种新型硬件令牌,通过在受支持的系统上为启动、登录和磁盘解密添加物理身份验证因素来提高 Linux 安全性。它还具有一些使其成为优秀的通用 OpenPGP 智能卡的功能。本文着眼于 Librem 密钥与其他多因素令牌(如 YubiKey 5)的对比,并考虑是什么使 Librem 密钥成为独特的受信任计算工具。

Purism 是安全密钥和多因素身份验证市场的新参与者。随着 Librem 密钥的推出,Purism 加入了其他厂商的行列——例如 Yubico、Google、RSA 等——提供用于多因素身份验证的硬件令牌。

此外,与 YubiKey 5 系列一样,Librem 密钥还提供 OpenPGP 支持,其加密功能在密钥上安全地进行。这允许用户生成和使用 GnuPG 公钥和私钥,而无需将任何密钥材料暴露给连接 USB 设备的宿主计算机。

Librem 密钥基于德国制造的 Nitrokey Pro 2,但经过修改,在使用 Purism 的 Linux 笔记本电脑时专注于“受信任启动”。(本文稍后将更详细地介绍受信任启动过程以及 Librem 密钥如何融入该过程。)

Librem 密钥与 YubiKey 5 的比较

Librem 密钥和 YubiKey 5 系列的功能肯定有重叠之处。在深入了解 Librem 密钥的独特之处之前,让我们先看看它们的共同点。

表 1. Librem 密钥和 YubiKey 功能比较
功能 Librem 密钥 YubiKey 5
OpenPGP 支持
PAM 支持
PIV 智能卡
HOTP 支持
TOTP 支持
密码管理
PKCS#11 支持
S/MIME 支持
X.509 支持
FIDO U2F
FIDO2
硬件 TRNG
USB-A
USB-C

正如您从表 1 中看到的,这两种设备比它们的不同之处更相似。这两种设备都可以用于以下方面

  1. Linux 系统上启用 PAM 的登录。
  2. 一次性密码凭据,例如 TOTP 和 HOTP。
  3. OpenPGP 支持,包括板载密钥生成以及用于加密、签名和身份验证密钥的插槽。
  4. 密码管理:YubiKey 上有两个可配置的插槽,具有触摸发送和触摸生成功能(一旦设备配置完成),以及 Librem 密钥上的 16 个条目(与支持应用程序的 Nitrokey 应用程序一起使用时)。
  5. 使用 OpenSC 协议的随机性来源:来自 Librem 密钥的硬件随机性和来自 YubiKey 的算法随机性。

在某些方面,YubiKey 5 系列和某些 Nitrokey 型号也比 Librem 密钥提供更多功能。特别是,YubiKey 有更多外形尺寸,并且比 Librem 密钥笨重的拇指驱动器外形尺寸明显更薄或更小。

Purism Librem Key

图 1. Purism Librem 密钥(照片来源:Purism, SPC)

Nitrokey

图 2. Nitrokey Pro(照片来源:Nitrokey UG)

YubiKey Family

图 3. YubiKey 5 系列外形尺寸

YubiKey 提供 32 个用于板载基于 HMAC 的一次性密码 (HOTP) 存储的插槽。相比之下,Librem 密钥目前仅持有三个。

Nitrokey 在其多个型号上提供 FIDO U2F 和安全的密钥存储,尽管您无法在同一设备上同时获得这两种功能。由于 Nitrokey Pro 2 目前不提供这两种功能,因此 Librem 密钥也不提供。

在这三个设备中,YubiKey 为多因素身份验证提供了最多的选项。在直接比较中,Librem 密钥支持的插槽和协议要少得多。

""

图 4. YubiKey 图表(照片来源:Yubico, Inc.)

但是,按功能和外形尺寸进行比较并不能充分体现 Librem 密钥的价值。该设备的独特价值在于其改进 Linux 系统安全性的方法。让我们仔细看看它是如何做到的。

用于安全启动的 Librem 密钥

Purism 目前销售一套面向注重安全性的用户的 Linux 笔记本电脑。这些笔记本电脑包括独特的功能,例如用于摄像头和麦克风的物理开关,以及用于切换 WiFi 和蓝牙的第二个开关。

Librem hardware switch

图 5. Librem 硬件开关(照片来源:Purism, SPC)

这些笔记本电脑预装了 PureOS,以及利用每个系统的可信平台模块 (TPM) 的启用 Heads 的 coreboot 进程。当与 Librem 密钥配对使用时,这些组件共同验证启动过程的完整性。Purism 表示

[T]Librem 密钥通过检测您的笔记本电脑 BIOS 或内核是否被篡改,可以轻松证明您的系统是安全的。在启动时插入密钥,如果它闪烁绿灯,则一切正常。如果它检测到篡改,Librem 密钥的 LED 会闪烁红灯,提醒您注意问题。

注意:有关 Heads 项目的更深入了解,请参阅 Kyle Rankin 在本期中发表的“使用 Heads 进行防篡改启动”文章。

Heads——可能是在安全重点发行版 Tails 的名称上玩文字游戏——在启动时显示一个基于时间的单次密码 (TOTP),该密码根据各种 BIOS 测量值计算得出。然后,您可以将此一次性代码与在多因素应用程序(如 Google Authenticator 或 FreeOTP)中生成的代码进行验证。匹配的代码提供密码学保证,证明启动过程没有被篡改。

在这种情况下,您实际上并没有使用一次性密码向系统验证您的身份。相反,系统正在向(用户)验证自身,以便您可以验证其完整性!

使用 Heads,您可以在不验证 TOTP 的情况下启动计算机。这确保了如果您无法访问智能手机或其他验证设备,验证过程不会阻止您,但这样做显然是一种安全权衡,为了方便起见,您自行决定放弃强大的验证。

由于 Librem 密钥没有自己的独立时间源,因此消除 Librem 密钥对宿主计算机系统时钟的依赖性进一步提高了安全性。Purism 修改了 Nitrokey Pro 2,使其使用 HOTP 而不是 TOTP。此功能与启动时应用程序配对使用,该应用程序尝试与连接的 Librem 密钥通信,以更直观和自动化的方式验证 HOTP 代码。

如果检测到 Librem 密钥,并且一切正常,则密钥会闪烁绿灯,以直观地指示您的 TPM 和 BIOS 没有被篡改。如果它闪烁红灯,则表明您系统的启动过程未能通过完整性检查,并且可能已被篡改。根据篡改的类型,Heads 系统(本身可能已被篡改)应该报告错误,但防篡改的 Librem 密钥将可靠地显示闪烁的红灯,以警告您系统不安全。

作为一个周到的设计选择,丢失 Librem 密钥不会将您锁定在系统之外。虽然您暂时会丢失可视化指示器和自动自检机制,但您仍然可以使用启动系统的标准 TOTP 机制进行手动验证,直到您找到或更换 Librem 密钥。

不仅仅适用于 Purism 笔记本电脑

虽然本文重点介绍将 Librem 密钥与 Purism 笔记本电脑一起使用,但值得注意的是,底层魔力是以下四个关键组件的组合

  1. 具有 TPM 模块的计算机系统。
  2. Heads coreboot 系统。
  3. libremkey_hotp_initialize 命令行工具。
  4. libremkey_hotp_verification 命令行工具。

理论上,在启用 TPM 的系统上运行 PureOS 的任何人都可以利用 Librem 密钥的安全启动功能。此外,任何可以使用修改后的 Heads 以及上面列出的命令行工具的发行版也可以利用 Librem 密钥。

虽然 Librem 密钥与 Purism 笔记本电脑配对使用时显然是最有用的,但该解决方案的开源性质使其成为 Linux 爱好者在其他启用 TPM 的硬件上进行试验的理想场所。Purism 因提供没有供应商锁定的开源安全解决方案而值得称赞!

用于磁盘解密的 Librem 密钥

Librem 密钥还旨在支持在启动时插入密钥即可自动解密 LUKS 加密磁盘。但是,此功能目前正在等待上游 Debian 维护人员的支持,然后由 PureOS 团队进行一些额外的工作。该问题很可能在本篇文章发布时得到解决,但在撰写本文时仍然存在。

虽然使用 Librem 密钥进行 LUKS 解密尚不可用,但该设备可以被 VeraCrypt 等其他工具使用,以提供基于密钥文件的解密或其他解决方法。

Librem 密钥提供 PKCS#11 支持。这意味着它应该与 VeraCrypt 的智能卡和硬件令牌支持兼容。VeraCrypt 允许将智能卡令牌用作加密操作(如磁盘解密)的密钥文件。以下内容直接来自 VeraCrypt 的密钥文件文档

VeraCrypt 可以直接使用存储在符合 PKCS #11(2.0 或更高版本)标准的安全性令牌或智能卡上的密钥文件,并且允许用户在令牌/卡上存储文件(数据对象)。要将此类文件用作 VeraCrypt 密钥文件,请单击“添加令牌文件”(在密钥文件对话框窗口中)。

对存储在安全令牌或智能卡上的密钥文件的访问通常受 PIN 码保护,PIN 码可以使用硬件 PIN 键盘或通过 VeraCrypt GUI 输入。它也可以通过其他方式保护,例如指纹读取器。

为了允许 VeraCrypt 访问安全令牌或智能卡,您需要首先安装令牌或智能卡的 PKCS #11(2.0 或更高版本)软件库。此类库可能随设备一起提供,也可能可以从供应商或其他第三方的网站下载。

如果您的安全令牌或智能卡不包含任何您可以用来作为 VeraCrypt 密钥文件的文件(数据对象),您可以使用 VeraCrypt 将任何文件导入到令牌或智能卡(如果设备支持)。为此,请按照以下步骤操作

1) 在密钥文件对话框窗口中,单击“添加令牌文件”。

2) 如果令牌或智能卡受 PIN 码、密码或其他方式(例如指纹读取器)保护,请验证您的身份(例如,通过使用硬件 PIN 键盘输入 PIN 码)。

3) “安全令牌密钥文件”对话框窗口应出现。在其中,单击“导入密钥文件到令牌”,然后选择您要导入到令牌或智能卡的文件。

虽然这种解决方法应该有效,但有一个重要的注意事项。由于最初对 Purism Librem 密钥的需求量很大,我无法拿到密钥来测试此配置。提供此替代方法是出于 Linux 黑客精神,而不是作为一种久经考验的方法。因此,您的使用情况可能会有所不同。

作为另一种选择,使用 Librem 密钥加密或解密文档、密码(例如使用 pass 命令行密码管理器)或使用标准 OpenPGP 操作的块设备按预期工作。

最后,值得注意的是,现有的 LUKS、dm-crypt 和 ecryptfs 选项通常对大多数用户来说“足够好”,前提是您可以信任 BIOS 和操作系统的完整性。由于 PureOS 和 Librem 密钥已经在启用 TPM 的系统上提供了这些完整性保证,因此使用 Librem 密钥解锁加密磁盘的主要好处是解密过程的防篡改自动化

结论

如果您想实施受信任启动,或者更喜欢使用完全开源的 OpenPGP 智能卡,那么 Librem 密钥是一个不错的选择。对于其他用途,其价值主张不太明确。

Librem 密钥是一个早期阶段的产品。与 YubiKey 相比,这一点在其较小的功能集和不太坚固的结构中最为明显。

Librem 密钥的零售价为 59 美元加上运费,也比 Yubico 的同类产品更贵。它也比其基于的原型 Nitrokey Pro 2 略贵。

作为 OpenPGP 智能卡或基于硬件的身份验证令牌,Librem 密钥在功能和定价方面略逊于其竞争对手。但是,当为了信任和透明度进行优化时,其对开源硬件、固件和软件的使用使 Librem 密钥成为具有专有固件(例如 YubiKey)的类似令牌的非常有吸引力的替代品。

此外,目前市场上没有其他消费产品能够像 Purism 的 Librem 密钥那样提供受信任启动过程的硬件验证。如果硬件防篡改检测对您很重要,那么将 Librem 密钥与兼容的硬件和软件结合使用应该是您纵深防御安全策略的一个组成部分。

完全受信任的启动过程对于有效的计算机安全至关重要。Librem 密钥通过每次验证该过程来提高安全性。可视化的绿色/红色指示器使验证过程自动化,并大大简化了用户体验。

Librem 密钥是一款独特的产品,也是用户友好的受信任启动身份验证方面向前迈出的重要一步。对于其预期的用例,它是当今市场上最好的选择——并且是一款值得关注的产品,因为它将继续发展。

术语表
  • FIDO U2F: FIDO 通用第二因素身份验证。
  • FIDO2: 第二代 U2F 协议,是 W3C WebAuthn 框架的一部分。
  • HOTP: RFC 4226 定义的基于 HMAC 的一次性密码算法,并且经常被启用 OAUTH 的系统使用。
  • LUKS: Linux 统一密钥设置。
  • OATH: 开放身份验证倡议。
  • OTP: 一次性密码。
  • PIV: 个人身份验证,通常与 FIPS 201 标准相关联。
  • PRNG: 伪随机数生成器通过将软件算法应用于种子值来近似随机性。与 TRNG 对比。
  • TOTP: 基于时间的单次密码算法。
  • TRNG: 真(或硬件)随机数生成器通过物理过程生成对密码学重要的随机值。与 PRNG 对比。
资源

软件和文档

Todd A. Jacobs 是 Flow Capital Group 的首席执行官,该公司收购和管理专门从事 IT 自动化、DevOps 和敏捷转型、安全和合规性、兼职 CIO/CTO 服务以及为网络风险和其他热门技术问题提供董事会咨询服务的公司。Todd 一生都在等待 Matt Smith 在《神秘博士》中的角色让领结再次流行起来。他与妻子和儿子住在马里兰州巴尔的摩附近,他希望将自己对 Linux 和技术的热爱传递给他们——但也许不会传递他的时尚品味。

加载 Disqus 评论