如何在无需共享加密密码的情况下使用 FDE

信息安全 linux 磁盘加密 ubuntu drm
2021-09-06 15:51:51

我们有一个需要在本地部署的 AI 模型。硬件将由我们提供,因此我们可以在设备上做任何我们想做的事情。该设备是一台运行 Ubuntu 18.04 的迷你 PC。

UI 以 kiosk 模式启动,因此只有我们的程序会运行。用户应该能够启动机器,提供用户名+密码登录,软件将自动启动。

该设备应被锁定。即我们需要:

  1. 加密硬盘,这样任何人都无法通过插入另一台计算机来获取硬盘并复制文件。
  2. 使用户能够登录并使用应用程序。
  3. 存储 AI 模型,以用户无法复制或与我们以外的任何其他软件一起使用的方式使用它。

为了实现这一点,我发现了一些问题。为了让用户使用系统,我们需要共享加密密码。因此,他将始终能够将硬盘插入任何其他系统并使用它(或复制模型)。

我该如何克服这个问题?

4个回答

它涉及到:您想要实施DRM方案。许多在你尝试之前,都失败了。不可能向用户提供某些东西(硬件、数据)并阻止他们以非预期的方式使用它或复制它。你可以让它变得更难,但你不能阻止它。其他资源比您尝试过的更多(例如索尼、微软、任天堂以防止盗版主机游戏),最终一切都被打破了。

根据我之前的回答,@logneck 的建议和一点google-fu,我得出的结论是,可以使用可用的工具和大量的耐心/专业知识来实施问题中要求的方案。这种方法应该满足 OP 的要求,但只是一个设计指南,因为它有许多缺点/陷阱。它将帮助 OP 抵御试图从加密磁盘复制数据的天真的攻击者。

我之前使用 TPM 芯片的想法仍然有效。本指南(我从未尝试过)展示了如何在无需输入密码的情况下加密磁盘,并防止任何人解密另一台机器上的数据。

TPM 通常嵌入在主板中,因此不能移动到其他硬件。TPM 执行硬件认证,以便您可以验证硬件环境是否兼容,并且没有第三方卡插入您的主板。

如果硬件证明通过,TPM 会自行解锁。然后 LUKS 模块可以向 TPM 请求磁盘的加密密钥,该密钥存储在解锁的 TPM 中。

如果将磁盘移动到另一台机器上,您将不会随身携带密钥。

如指南中所述,该过程涉及:

  • 安装您选择的发行版
  • trousers使用和获取 TPM 芯片的所有权tpm-tools
  • 安装trustedgrub2并将其用作引导加载程序
  • 将 LUKS 解密密钥添加到 TPM
  • 密封TPM

密封 TPM 意味着进行硬件证明。我链接的 guide 讲的是 BIOS 引导而不是 UEFI(UEFI 用户熟悉安全引导的概念)。基本上trustedgrub2都会测量软件。这可以通过对内核进行校验和来简化,以确保它没有被改变。TPM 还将测量硬件以检查自 TPM 密封以来是否安装了其他 PCI 卡或类似卡。

在启动过程中,如果硬件没有被触碰/篡改,并且启动内核就是封存TPM的那个人,那么TPM就会向系统发出LUKS密钥,这样系统就可以自己解密了。

结果:1)磁盘被加密,2)启动时不需要密码,因此用户可以随时重新启动机器,3)用户无法恢复密钥,因为它存在于硬件存储中。

请注意,此解决方案与 Microsoft BitLocker 类似,并不完美,并且与 Microsoft 的解决方案存在相同的安全隐患。事实上,仅由 TPM 而不是 PIN 支持的 BitLocker 因其安全性较弱而屡遭批评,我将在此不予讨论。

上面的 TPM 解决方案不是 100% 安全的(请参阅 @Josef 评论)。如果您将商品提供给客户,您应该期望您的数据被传达。

为了获得安全的解决方案,您需要您的 Gizmo 将您的 Gizmo 打电话给您自己监督的服务器。

通常,每次您的软件必须计算某些东西时,它都会要求一个计算令牌,以某种方式对客户端进行身份验证。此令牌由您的服务器生成(因此不在您的客户手中),并在执行计算之前检查它是否有效。

您可以在此处使用任何签名方案,您需要对消息加上时间戳进行签名。如果签名与您的服务器的公钥匹配并且时间戳不是过去太久,则接受令牌。

如果您绝对不希望您的 AI 模型被泄露,还可以在此令牌中嵌入一个用于解密 AI 模型文件的密钥(用于加密的密钥必须是每个设备,以避免在泄露时全局泄漏)。

理想情况下,不时升级您的 AI 模型并包含使用它的最大允许时间戳。如果有人成功捕获了“私人”密钥来解密它,那么几天/几周后它将毫无用处,因此损害将是有限的。

最后,您还可以加密您的 AI 结果将提供的类(如果您的 AI 是关于对数据进行分类),因此即使使用模型,也无用/难以使用模型,除非您连接到提供的服务器你的解密密钥。

一旦你完成了所有这些,并为此花费了数周/数月的时间,你就会意识到你的竞争对手花费了他们的时间来改进他们的产品,现在它比你的更好。

使用 TPM 是一个不错的选择,但假设这对您不起作用,您也可以考虑某种基于网络的解锁。

假设您对机器有某种远程 SSH 访问权限,您可以在 initrd 映像中添加一个像 dropbear 这样的小型 SSH 守护程序,并在您的 initrd 中配置网络。有了它,您可以 SSH 并根据需要提供密码/密钥。

您还可以购买内置某种远程管理控制器的硬件。基本上给您一个 IP-KVM 来远程访问机器。有了它,您可以远程访问并根据需要提供凭据。如果您采用这种方式,保护和维护远程管理控制器的补丁就变得非常重要。