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

Security 如何在单板arm计算机中保护软件应用程序?,security,arm,embedded-linux,code-access-security,Security,Arm,Embedded Linux,Code Access Security,我们用C语言开发了一个应用程序。然后我们交叉编译它,并将它移植到运行Linux的ARM单板计算机上。我们开始向使用此应用程序的客户销售此SBC,以满足他们的特定需求。然而,我们听到传言说,他们也试图侵入SBC,复制我们编译的代码,然后反编译,以便将来他们将开发自己的代码。 所以我的问题是:如何在SBC中保护我的软件应用程序? 我们曾尝试过标准的Linux软件保护解决方案,如truecrypt,但很难交叉编译到SBC。有什么建议吗? 顺致敬意, 新2或您似乎有两个单独的问题需要处理: 机密信息的披

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

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

  • 机密信息的披露(例如,软件实施的详细信息)
  • 未经授权使用/修改您的软件
  • 唯一完全可靠的解决方案是使用具有安全引导和完全可信的执行路径(例如,所有代码签名)的SBC。这决不是不可能的,但会限制您的硬件选择,而且会很费劲。这从根本上与开源运动的精神背道而驰,很难找到解决方案

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

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

    • 剥离符号
    • 混淆那些需要保留的符号
    • 与库静态链接
    • 对编译到软件中的任何数据进行模糊处理或加密
    防止未经授权的使用可以通过合法用户持有的某种身份验证和/或代码签名来实现

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

    实际上,您可能需要这两种

    也许这会是一个更好的论坛。不要浪费你的时间。如果他们想逆向工程,他们会的。