【问题标题】:How to detect if desktop application has been modified?如何检测桌面应用程序是否已被修改?
【发布时间】:2011-12-28 11:01:29
【问题描述】:

如何检测桌面应用是否被修改?

应用程序与 Web 服务通信,因此我们可以对桌面进行哈希处理,然后检查校验和是否匹配或类似的东西?或者你有什么建议?

【问题讨论】:

  • 可以是任何应用程序,还是您(或您的公司)制作的特定应用程序?
  • 公司构建的自定义应用程序,所以我们知道文件,这是否意味着应用程序可以在加载应用程序时检查校验和?这是唯一的方法吗?
  • 您的威胁模型是什么?也就是说,是什么让你觉得需要检查应用程序是否被修改过?
  • 如果您不解释您的威胁模型,您可能会得到无法解决实际问题的答案。例如,如果是反盗版,则答案与防止损坏下载的答案完全不同,而如果要确保人们运行最新版本,答案则完全不同。

标签: c++ windows macos qt cross-platform


【解决方案1】:

只是不要让应用程序做任何你不允许修改应用程序的人做的事情。那么应用程序是否被修改并不重要。

您提出的解决方案就像一家银行试图设计一种不能用来写空头支票的笔,然后试图确保客户始终使用这支笔来写他们的支票。不要再担心客户用什么笔来写支票,而只是拒绝任何超过客户余额的支票。

或者,换一种说法:

1) 如果应用程序要求您的 Web 服务做一些您不希望它做的事情,那么修改或不修改应用程序有什么区别?

2) 如果应用程序要求您的 Web 服务执行您希望它执行的操作,那么修改或不修改应用程序有什么区别?

总之,没什么区别。

【讨论】:

    【解决方案2】:

    虽然David's answer 是我对您的问题的看法的一个很好的总结(比我自己说的要好),但我确实认识到某些环境确实想要完成您所要求的:某种方式来证明到一个远程系统,你真正运行的是你所说的软件。

    IBM's TrouSers 是致力于使remote attestation 成为现实的软件堆栈的一部分。整个堆栈依赖于一些商品主板中内置的TPM 芯片、执行引导加载程序加密校验和的可信 BIOS、执行操作系统内核和重要系统实用程序的加密校验和的可信引导加载程序,以及可以管理 TPM 并验证相关软件的操作系统支持 (TrouSers)。

    请务必注意,TPM 芯片并非专为FIPS 140 风格的篡改保护而设计。即使有一个完全可操作的远程证明堆栈,硬件所有者也可以或多或少地为所欲为。因此,对硬件进行良好的物理安全控制以防止不受信任的人篡改设备至关重要。

    【讨论】:

      【解决方案3】:

      最好的方法是计算可执行文件的校验和并将其存储在安全的地方。您可以随时重新计算校验和并根据存储的校验和进行验证。如果值不匹配,则可执行文件已更改。这就是互联网上大多数可用下载所做的事情。发布者将校验和与下载一起发布。此下载可以镜像。从镜像站点下载的用户应将下载的校验和与发布的校验和进行匹配,以确保下载不被篡改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多