我怎样才能encryption我的SSD,但仍然无人值守(Linux)启动?

我有一个系统,显示来自摄像头饲料的video覆盖,它必须启动没有任何用户干预(越快越好)。 但是,这些系统将在客户手中,所以我们担心逆向工程。

操作系统(Linux),软件和日志存储在mSATA SSD上。 CPU是4GB内存的第四代酷睿i3。

基本上,我们如何防止任何不道德的客户或竞争对手简单地删除SSD和窃取我们的应用程序代码? 显而易见的答案是encryption驱动器,但它需要无人值守启动。 下一个合乎逻辑的步骤是在运行时解密软件,但是您仍然需要将解密密钥存储在纯文本中的某个地方?

有一个板载TPM模块,这可能是一个解决scheme,但我找不到任何好的文档使用它。

我愿意接受任何和所有的build议。

概观

  1. encryption磁盘
    • 使用dm-cryptLUKS
  2. 将密钥seal到TPM并根据已知的PCR组使用访问限制。
  3. 使用安全启动
    • 英特尔TXT和TBoot能够安全引导Linux内核。 你必须检查你的CPU和芯片组是否支持TXT。

安全

  • 如果没有安全启动,防止TPM向所有人释放密钥的唯一方法是使用密码 – 如果需要无人值守操作,则不可行。

  • 磁盘只能在具有特定TPM的机器上解密。

  • 密钥只在安全启动后才能释放。 因此,只有您认可的软件才能访问磁盘。 但是,您必须devise适当的更新策略才能更新系统。 (如果更新是一个问题)

  • TPM可能会受到低成本(<100€) 硬件攻击的诱惑。 这需要一些技巧,但是完全可行。

  • 密钥可能仍然可以通过删除RAM并使用特殊设备读取来获得。 但在英特尔TXT重置平台期间将被擦除。

  • 备份总是一个问题。 如果在备份中访问宝贵的数据非常容易,那么所有的平台保护都是毫无价值的。 如果将备份存储在同一个系统上,则不是备份。

  • 运行时行为! 如果您的客户可以访问正在运行的系统(SSH,HTTP,…),则磁盘将被挂载并且所有数据都可以访问。

链接

几年前发布了一个新的研究项目,您可能还会发现一些信息: IAIK acTvSM平台

以下链接有你想要的信息:

http://wejn.org/how-to-make-passwordless-cryptsetup.html

基本上你想要创build一个文件密钥,encryption也可以链接,假设你正在使用LUKs。