我有一个系统,显示来自摄像头饲料的video覆盖,它必须启动没有任何用户干预(越快越好)。 但是,这些系统将在客户手中,所以我们担心逆向工程。
操作系统(Linux),软件和日志存储在mSATA SSD上。 CPU是4GB内存的第四代酷睿i3。
基本上,我们如何防止任何不道德的客户或竞争对手简单地删除SSD和窃取我们的应用程序代码? 显而易见的答案是encryption驱动器,但它需要无人值守启动。 下一个合乎逻辑的步骤是在运行时解密软件,但是您仍然需要将解密密钥存储在纯文本中的某个地方?
有一个板载TPM模块,这可能是一个解决scheme,但我找不到任何好的文档使用它。
我愿意接受任何和所有的build议。
dm-crypt和LUKS seal到TPM并根据已知的PCR组使用访问限制。 如果没有安全启动,防止TPM向所有人释放密钥的唯一方法是使用密码 – 如果需要无人值守操作,则不可行。
磁盘只能在具有特定TPM的机器上解密。
密钥只在安全启动后才能释放。 因此,只有您认可的软件才能访问磁盘。 但是,您必须devise适当的更新策略才能更新系统。 (如果更新是一个问题)
TPM可能会受到低成本(<100€) 硬件攻击的诱惑。 这需要一些技巧,但是完全可行。
密钥可能仍然可以通过删除RAM并使用特殊设备读取来获得。 但在英特尔TXT重置平台期间将被擦除。
备份总是一个问题。 如果在备份中访问宝贵的数据非常容易,那么所有的平台保护都是毫无价值的。 如果将备份存储在同一个系统上,则不是备份。
运行时行为! 如果您的客户可以访问正在运行的系统(SSH,HTTP,…),则磁盘将被挂载并且所有数据都可以访问。
几年前发布了一个新的研究项目,您可能还会发现一些信息: IAIK acTvSM平台
以下链接有你想要的信息:
基本上你想要创build一个文件密钥,encryption也可以链接,假设你正在使用LUKs。