各位,

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

具体来说,TickZoom 为对冲基金销售阿尔法生成交易平台,目前该平台的许可费用为 2,000 美元/月,包括支持(很快将增加到两倍以上)。这对机构来说很好,但对个人来说太昂贵了。个人通常会要求较低的价格,以换取使用该软件所赚取的一定比例的利润,直到他们有能力支付固定费用。

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

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

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

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

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

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

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

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

也许可以通过包含某种“上次更新时间戳”和过期时间来解决这个问题。

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

真诚的,韦尼克

有帮助吗?

解决方案

下面是一个思想 - 当用户退出与软件会话,基于审计日志的哈希值。加密散列值,然后将它写出来到另一个文件中,也许隐藏之中您的二进制文件或注册表。

当用户打开应用程序下,读取日志文件,重新生成散列,看看它是否记录的值相匹配。如果没有,关闭错误消息“篡改审计文件”的应用程序。

不完全傻瓜证明,但将是非常稳固。

此外,检查出这个问题

其他提示

您的问题的陈述是:

  • 我们不信任客户;客户可能会怀有敌意。
  • 我们希望客户向我们发送我们可以信任的数据。

这个问题没有解决办法。你也可以说“我想找两个人,一个叫鲍勃,一个叫比尔,这样鲍勃比比尔高一英尺,比尔比鲍勃高一英尺”。你不会找到两个拥有该财产的人。

您绝对不能信任来自不属于您的机器、可能属于敌对客户的任何东西。我的建议是不要浪费你宝贵的时间去解决一个不可能的问题;花时间让您拥有并信任的服务器能够抵御敌对客户端。

不,我不认为除了将所有收入实时报告回服务器之外您还能做任何事情,但即使这样也有问题。

- 编辑:

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top