3

伙计们,

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

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

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

此应用程序是用 C# 编写的,并且系统的这一部分被混淆了,至少使破译代码变得困难。

另一个要求是为发生的每笔交易写入文件,以便在用户觉得总费用存在一些差异的情况下进行更深入的审计。这样,个人交易利润可以与经纪人报表进行比较。

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

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

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

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

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

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

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

真诚的,韦尼克

4

3 回答 3

5

你的问题的陈述是:

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

这个问题没有解决办法。你不妨说“我想找两个人,一个叫 Bob,一个叫 Bill,这样 Bob 比 Bill 高一英尺,Bill 比 Bob 高一英尺”。你不会找到两个拥有这种财产的人。

您绝对不能相信来自您不拥有的机器的任何东西,这些机器可能由敌对客户拥有。我的建议是不要浪费你宝贵的时间去解决一个不可能的问题;花时间使您拥有并信任的服务器对敌对客户具有强大的抵抗力。

于 2010-01-27T22:45:33.737 回答
2

不,我认为除了将所有收入实时报告回您的服务器之外,您无能为力,但即使这样也有问题。

- 编辑:

在我看来,你唯一的选择是:

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

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

  • 想出一些“难以”打破的复杂计划,并希望人们不要打破它

并在此方法中结合某种分析,显示商店是否赚取 X 和突然的 X-sigificantAmount,您可以确定它们甚至不再盈利,因此可能欺骗系统(或倒闭: ) 但这几乎是对隐私的侵犯,而且可能根本不合适。

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

于 2010-01-25T03:33:17.583 回答
1

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

当用户下次打开应用程序时,读取日志文件,重新生成哈希值并查看它是否与记录的值匹配。如果没有,请关闭应用程序并显示“Audit file tampered with”错误消息。

不完全是万无一失的,但会非常可靠。

另外,看看这个问题

于 2010-01-25T05:54:54.240 回答