如何在单板手臂计算机中保护软件应用程序?

时间:2012-12-19 07:29:05

标签: security arm embedded-linux code-access-security

我们用C语言开发了一个应用程序。然后我们交叉编译它并将其移植到运行Linux的ARM单板计算机上。我们开始使用此应用程序将此SBC出售给客户以满足其特定需求。然而,我们听到有传言说他们也试图入侵SBC来复制我们编译的代码,然后对其进行反编译,以便将来他们能够开发自己的代码。 所以我的问题是:如何在SBC中保护我的软件应用程序? 我们曾尝试过标准的Linux软件保护解决方案,例如truecrypt,但很难将其编译到SBC。有什么建议? 最好的祝福, new2RoR

1 个答案:

答案 0 :(得分:2)

您似乎有两个单独的问题需要处理:

  1. 披露机密信息(例如,软件实施细节)
  2. 未经授权使用/修改您的软件
  3. 两者唯一完全可靠的解决方案是使用具有安全启动的SBC和完全可信的执行路径(例如,所有代码签名的)。这绝不是不可能的,但会限制您的硬件选择并付出高昂的努力。这从根本上违背了开源运动的精神,很难找到解决方案。

    处理机密性问题,反汇编编译的C和C ++并不是特别容易或有用,需要相当高的技能水平;除非这样做的价值非常高,否则不会是经济攻击。

    除非您可以阻止攻击者访问软件的二进制形式,否则您可以通过以下方式减少攻击面并使任何攻击者的生活更加困难:

    • 剥离符号
    • 模糊那些需要保留的符号
    • 与图书馆静态联系。
    • 对编译到软件中的任何数据进行模糊处理或加密

    通过合法用户持有的某种身份验证和/或代码签名,可以防止未经授权的使用

    • 代码签名可用于防止正在使用的软件的修改版本(只要您信任操作系统强制执行它)
    • 使用硬件身份验证令牌或唯一身份设备可确保不会在其他系统上复制和使用该软件。

    在实践中,您可能想要这两个。