锁定 Linux 系统以仅在某些硬件上工作

信息安全 磁盘加密 MAC地址 树莓派
2021-08-28 11:13:46

有没有办法锁定 Linux 系统以仅使用特定(预定义)硬件?我正在开发一种商业产品,并且想让某人更难克隆整个工作系统,所以我正在考虑将 SW 和 HW 捆绑在一起,这样就需要为给定的 HW 提供特殊的 SW 图像。

我的确切场景是从 SD 卡启动的嵌入式板(带有 Raspbian 的 Raspberry Pi 2)。问题是 SD 卡可以在板之间轻松交换,所以我希望 SD 卡只能与单个特定板一起使用。我将使用自定义二进制文件(我自己从 C++ 编译)来提供产品的功能。我可以简单地从我的二进制文件中检查特定的硬件 ID(RPi序列号或 MAC 地址),但这仍然会为某人在操作系统级别上伪造这些硬件 ID 留下空间,然后在其上启动我的二进制文件。

我猜加密整个系统可能会提供更多保护,但密钥(无论是软件密码还是硬件 ID)也必须保存在那里以便系统启动,所以如果“攻击者”找到它,他将解密系统图像反正?系统工作在只读模式。

在具有可交换主存储的系统上,我可以获得的最佳保护是什么?我猜嵌入式存储可能有点难以阅读,但可能又不能提供 100% 的保护?

编辑:

关于我的保护原因:我的场景是一个嵌入式计算机视觉设备,它没有直接的 UI(显示或监视器的图像输出),但在某些情况下只会发出蜂鸣声警告。我不介意 SW 盗版,只要它至少带来一些“产品推广”或营销(例如,盗版 Microsoft Windows 就是这种情况 - 即使是盗版,它也有助于推广产品,因为它是品牌和徽标遍布用户界面)-但这根本不是我的情况。廉价的中国ELM 327芯片克隆是嵌入式软件盗版的好例子——软件是从PIC控制器中读出的,现在卖得很便宜。

1个回答

简短的回答是“不,没有办法将软件锁定到无法破坏的特定硬件上。”。您实质上是在谈论实现某种形式的 DRM,并将您的软件绑定到特定的硬件。蛮力方法只是进入您的代码并对其进行修改以停止寻找硬件检查。这是软件破解者几十年来为击败复制保护而采取的一种方法。许多人试图阻止饼干。最终都失败了。

长答案是,您可能能够阻止某些人在未经批准的硬件上使用您的软件一段时间。安全性不一定要完美才能有用。一套手铐可以用回形针摘取,但它们仍然有一些边际用途。

阅读您编辑的回复后,威胁模型听起来像是想要克隆您的产品的专业逆向工程师。这实质上意味着从停止逆向工程的角度来看,你注定要失败。

我不熟悉您的 ELM327 示例,但维基百科条目让我相信它看起来像是 1976 年的芯片,因此它不再受专利保护,也不受版权保护。在知识产权用完后,您无法保护您的发明不被克隆。有人发明了带有橡皮擦的铅笔,并且拥有多年独家销售权,但是现在任何人都可以生产带有橡皮擦的铅笔,因为很久很久以前IP就用完了。

我想说到目前为止,你反对商业克隆的最好武器是知识产权法。申请专利,并确保您的软件在各个地区具有适用于它的相应版权。联系优秀的知识产权律师。只有当您的产品成功时,它才会真正成为一个问题,因此您将有钱请律师来打击任何知识产权侵权行为。