【发布时间】:2010-12-07 04:29:49
【问题描述】:
我有一个 C# .NET 应用程序。此应用程序与一个硬件紧密耦合。想想自动取款机,开车亭有点东西。我想要一种方法让我的应用程序确保它在我们的硬件上运行。我们最初的计划是使用 WMI 获取 CPU、操作系统、HD 或其他硬件的序列号,对其进行数字签名,然后将该签名与软件一起发送。然后应用程序将在其中包含公钥以验证签名。有没有更好的方法来做到这一点?
更新 1
我们不需要加密狗或搭扣。系统之外没有任何东西。
【问题讨论】:
-
你意识到你可能会投入更多的钱和精力来防止它被其他硬件影响而不是值得的。任何真正想在没有您的签名密钥的情况下运行该软件的人都可以删除您的保护。此外,如果您的客户需要快速修复系统,您现在也在限制他们。
-
一切视情况而定。我们的应用程序附带非常特定的硬件,不是计算机,而是支持 .NET 的嵌入式硬件。硬件和软件以打包交易的形式提供,这就是他们从我们这里购买的东西。客户不想执行维护,这就是他们与我们签订合同和 SLA 的原因……这样做当然有充分的理由,但对于大多数应用程序来说并非如此……也就是说,除非您控制每一个一方面,从芯片开发到软件,你永远不可能完全保护一切。 (这也是苹果控制芯片的原因)
-
ssware.com/cryptoobfuscator/obfuscator-net.htm 拥有可以帮助您创建硬件锁定的工具,但不要将其用作唯一的方法……混淆/锁定工具越流行,人们就越努力投入黑客攻击它。并确保您与客户签订了可靠的法律协议,这是最重要的!