【问题标题】:Using the system time for node locked licensing使用系统时间进行节点锁定许可
【发布时间】:2023-04-09 16:46:01
【问题描述】:

我有节点锁定许可,使用 MAC 地址和系统时间。我们担心人们只会编辑他们的系统日期来延长许可证,所以我尝试从 NTP 池中的机器获取真实日期。这行得通,但显然你不能在不在线的情况下使用该产品,而且它似乎不是 100% 可靠的(我猜在某些情况下 UDP 数据包永远不会到达/返回)。

这里的标准方法是什么?忍受可变的操作系统日期?在通过 TCP 提供时间的 Web 服务器上运行一些东西?我听说 BIOS 日期会在您重新启动时被操作系统更新,所以也许没有任何方法可以在不使用互联网的情况下确定当前日期?

我知道许可永远不会完全安全,我希望它会被破解或下载,但我不希望它像更改系统日期那样简单。任何想法表示赞赏。谢谢

【问题讨论】:

  • 归结为您喜欢哪种故障模式。如果您的许可证服务器(或时间服务器,但您最好构建一个适当的许可证服务器)由于某种原因不可用,用户是否仍然能够使用您的产品(从而使您的产品容易被未经许可的复制),或者应该产品拒绝在这种情况下工作(因此会惹恼那些会热情恨你的合法用户)?

标签: time licensing udp bios ntp


【解决方案1】:

使用除日期之外的硬盘驱动器序列号将更难以绕过。您也可以将其限制为用户登录名。除了拥有硬件加密狗之外,始终可以规避软件许可。

更新: 如果是这样的话,你不能只监控时间吗?创建一个算法来验证系统时钟是否遵循逻辑进程(总是增加)。如果日期突然向后移动超过指定的时间量(你必须考虑一些漂移和互联网时间服务器更正),你禁用程序直到用户恢复时钟?

【讨论】:

  • 我不认为磁盘序列号在 Linux 上可用,除非我是 root,不记得了。与其担心将其绑定到特定机器或用户,不如担心无限期延长许可证。
  • 我必须将最后系统时间存储在某个文件中,他们可以将其删除。我想我可以检查文件系统是否有最近修改的文件(任何文件),并检查是否在将来就系统时间而言。嗯。
  • 您不能将它存储在关键程序文件中吗?如果他们删除该文件,他们也会搞砸程序。您可以使用某种算法混淆系统时间,使其不易阅读,然后对其进行 CRC 检查以确保它没有被混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多