我有一个系统,它使用覆盖层显示来自摄像头的视频,并且必须在没有任何用户干预的情况下启动(越快越好)。但是,这些系统将交到客户手中,因此我们担心逆向工程。
操作系统 (Linux)、软件和日志存储在 mSATA SSD 上。CPU 是第四代 Core i3,配备 4GB RAM。
基本上,我们如何才能防止任何不道德的客户或竞争对手简单地移除 SSD 并窃取我们的应用程序代码?显而易见的答案是加密驱动器,但它需要无人值守启动。下一个合乎逻辑的步骤是在运行时解密软件,但您仍然需要将解密密钥以明文形式存储在某个地方,对吗?
板载有一个 TPM 模块,这可能是一个解决方案,但我找不到任何关于使用它的良好文档。
我愿意接受任何和所有的建议。
答案1
概述
- 加密磁盘
- 使用
dm-crypt
和LUKS
- 使用
seal
TPM 的密钥并根据众所周知的PCR
设置使用访问限制。- 使用安全启动
安全
如果没有安全启动,阻止 TPM 向所有人泄露密钥的唯一方法就是使用密码——但如果需要无人值守操作,则不可行。
只能在具有特定 TPM 的机器上解密磁盘。
密钥仅在安全启动后才释放。因此,只有您批准的软件才能访问磁盘。但是,您必须设计适当的更新策略才能更新系统。(如果更新是一个问题)
低成本 (< 100 欧元) 可以欺骗 TPM硬件攻击。这需要一些技巧,但是完全可行。
仍然可以通过移除 RAM 并使用特殊设备读取来获取密钥。但在 Intel TXT 重置平台期间,密钥将被擦除。
备份始终是个问题。如果可以轻松访问备份中的宝贵数据,那么您的所有平台保护都将毫无意义。如果您将备份存储在同一系统上,那么它就不是备份。
运行时行为!如果您的客户可以在正在运行的系统上进行访问(SSH、HTTP 等),则磁盘将被安装并且所有数据都可以访问。
链接
几年前发布了一个原型研究项目,您可能也会在那里找到一些信息:IAIK acTvSM 平台