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

C# 安全软件许可证使用审核日志,c#,security,audit,cracking,C#,Security,Audit,Cracking,各位 我们面临着一个有趣的技术挑战。如何编写跟踪软件使用情况的安全审计文件,以便根据使用情况收取许可证费用,从而使使用较少的人能够负担得起 具体而言,TickZoom为对冲基金销售alpha generation交易平台,目前每月许可费用为2000美元,包括支持费用(很快将增加一倍以上)。这对机构来说没问题,但对个人来说太贵了。个人经常要求以较低的价格换取使用该软件获得的利润的%,直到他们能够支付固定费用为止 我们喜欢这项建议。但我们需要一种可靠的方法来审计平台上实际产生的利润,并防止用户通过删

各位

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

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

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

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

另一个要求是为每一笔交易写入文件,以便在用户认为总费用存在差异时进行更深入的审计。这样一来,个人交易利润就可以与经纪人对账单进行比较

当然,假设文件将被加密

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

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

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

用户可能试图“篡改”文件的下一个明显的技术是,有人简单地备份原始的“空”文件,然后用它覆盖审计文件,从而愚弄系统,使其认为这是一个新的开始

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

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

真诚地,
Waynek

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

--编辑:

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

  • 将系统转换为基于web的(或至少是瘦客户端),从而在服务器上进行所有事务
显然,如果您已经开发了一个完整的基于本地的系统,那么这可能是非常不切实际的

  • 想出一些“很难”打破的精心设计的方案,希望人们不要打破它
在这种方法中,结合一些分析,显示如果商店赚X,突然X-sigicantamount,你可以确定他们甚至不再盈利,因此可能会欺骗系统(或歇业),但这几乎是对隐私的侵犯,可能根本不合适


实际上,我认为你需要权衡风险和可能的利润,或者从另一个角度考虑如何向这些人销售(即,只让界面/应用程序本身管理X的总资金,如果它过期,提示使用pro版本,或者其他任何东西)。

这里有一个想法——每当用户退出软件会话时,根据审核日志生成哈希。加密散列,然后将其写入另一个文件(可能隐藏在二进制文件中)或注册表

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

不完全是傻瓜式的,但会非常可靠


此外,您的问题陈述如下:

  • 我们不信任客户;客户可能怀有敌意
  • 我们希望客户向我们发送我们可以信任的数据
这个问题没有解决办法。你不妨说:“我想找两个人,一个叫鲍勃,一个叫比尔,这样鲍勃比比尔高一英尺,比尔比鲍勃高一英尺。”。你找不到两个拥有那房子的人


你绝对不能相信任何来自你不拥有的机器的东西,而这些机器可能是敌对客户的。我的建议是不要浪费你宝贵的时间去解决一个不可能解决的问题;花些时间让你自己拥有并信任的服务器对恶意客户保持强大。

当然,这也是我的本能。实时向服务器报告可以在单独的线程中进行,在临时连接出现问题时排队,但在太多交易无法记录后,它最终将不得不阻止软件运行,直到连接得到纠正。用户会勉强同意获得更实惠的价格,但如果“服务器”出现故障,从而导致用户应用程序死亡,并可能导致他们的经济损失,这将是非常尴尬的。另一方面,在中国(或世界)的不同数据中心,用5台甚至更多冗余的Linux机器设置一个域名应该既简单又便宜,因为我们有国际用户。这样,日志可以有一长串要登录的主机IP地址。我们可以允许它在没有“有状态”连接的情况下随时登录到任何人,然后在后端有收集所有日志、按用户id存储日志、创建报告等的进程,因此它可以非常可靠。Wayne:即使你这样做,