安全软件许可证使用审核日志

时间:2010-01-25 03:30:26

标签: c# security audit cracking

民间,

我们面临着一个有趣的技术挑战。如何编写一个跟踪软件使用情况的安全审计文件,以便许可证费用可以根据使用情况进行,从而使那些使用较少的人能够负担得起。

具体来说,TickZoom为对冲基金出售alpha代交易平台,目前每月需要2000美元才能获得许可,包括支持(将很快增加到两倍以上)。这对机构来说很好,但对个人来说太贵了。个人经常要求更低的价格换取使用该软件赚取的利润的百分比,直到他们能够支付固定费用为止。

我们喜欢这个提议。但我们需要一种可靠的方法来审核平台上实际产生的利润,以及通过删除或覆盖审计文件来阻止用户“游戏”它的方法,从而报告收益低于实际收入。

这个应用程序是用C#编写的,系统的这一部分是混淆的,至少使得解密代码变得困难。

另一个要求是针对每次发生的交易写入文件,以便在用户认为总费用存在差异的情况下允许更深入的审核。这样,个人贸易利润可以与经纪人的陈述进行比较。

当然,假设文件将被加密。

但是有关如何使其“防篡改”的任何想法?特别是针对简单的删除尝试?

我的第一个猜测是让软件始终需要一个预先存在的审核文件,否则它将拒绝运行。

然后,当我们交付软件时,它会打包一个“空”审计文件,但实际上它有某种防篡改验证。

用户可能试图“篡改”文件的下一个显而易见的技术是让某人简单地备份原始的“空”文件,然后再用它来覆盖审计文件,从而欺骗系统认为它是一个新的开始。

也许这可以通过包含某种“最后更新时间戳”和到期时间来解决。

此外,欢迎完全不同的解决方案。在这种情况下,我们可能会被迫添加“电话回家”功能,以便交易记录到我们的中央服务器。但这似乎是不利的,并可能在关键任务应用程序中增加另一个失败点。一般来说,他们非常不喜欢“手机之家”功能,原因很明显。

此致 Waynek

3 个答案:

答案 0 :(得分:5)

您的问题陈述是:

  • 我们不信任客户;客户可能是敌对的。
  • 我们希望客户向我们发送我们可以信任的数据。

此问题无法解决。你不妨说“我想找两个人,一个名叫鲍勃,一个名叫比尔,这样鲍勃比比尔和比比比鲍勃高一英尺高”。你不会找到两个拥有该房产的人。

你绝对肯定不能相信任何来自你不拥有的机器的东西,这些机器可能是敌对客户所拥有的。我的建议是不要浪费你宝贵的时间来解决一个不可能的问题;花时间制作你所拥有并信任的服务器,对抗敌对客户。

答案 1 :(得分:2)

不,我不相信除了将所有收入实时报告回您的服务器之外,您还可以做些什么,但即使这样也有问题。

- 编辑:

我认为你只有选择:

  • 将系统转换为基于Web的(或至少是瘦客户端),从而在服务器上进行所有交易

显然,如果你已经开发了一个完整的基于本地的系统,这可能是非常不切实际的

  • 想一些精心策划的“难以打破”并希望人们不要破坏它

并且在这种方法中结合,某种分析显示商店是否正在赚取X,并且突然X-sigificantAmount,你可以确定它们甚至不再有利可图,因此可能欺骗系统(或者外出业务:)但是这相当于对隐私的侵犯,并且可能根本不合适。

实际上,我认为您需要权衡风险与可能的利润,或者找出如何向这些人销售的另一个角度(即只有让界面/应用程序本身在总资金中管理X,如果它已经结束,提示专业版,或其他)。

答案 2 :(得分:1)

这是一个想法 - 每当用户退出与软件的会话时,基于审计日志生成散列。加密哈希,然后将其写入另一个文件,可能隐藏在二进制文件中或注册表中。

当用户接下来打开应用程序时,请阅读日志文件,重新生成哈希并查看它是否与记录的值匹配。如果没有,请使用“审核文件被篡改”错误消息关闭应用程序。

不是完全傻瓜证明,但会非常扎实。

此外,check out this question