Time 使用系统时间进行节点锁定许可

Time 使用系统时间进行节点锁定许可,time,licensing,udp,bios,ntp,Time,Licensing,Udp,Bios,Ntp,我已使用MAC地址和系统时间锁定了节点许可证。我们担心人们会编辑他们的系统日期来扩展许可证,所以我尝试从NTP池中的机器获取真实日期。这是可行的,但是很明显,你不能在没有在线的情况下使用该产品,而且它似乎不是100%可靠的(我猜UDP数据包在某些情况下永远不会到达/返回) 这里的标准方法是什么?与多变的操作系统日期一起生活?在通过TCP提供时间的web服务器上运行什么?我听说当你重新启动时,BIOS的日期会被操作系统更新,所以如果不使用互联网,可能无法确定当前的日期是什么 我知道许可证永远不会完

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

这里的标准方法是什么?与多变的操作系统日期一起生活?在通过TCP提供时间的web服务器上运行什么?我听说当你重新启动时,BIOS的日期会被操作系统更新,所以如果不使用互联网,可能无法确定当前的日期是什么


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

在日期之外使用硬盘序列号将更难绕过。您还可以将其限制为用户登录名。除了硬件加密狗,软件许可总是可以规避的

更新:
如果是这样的话,你就不能监视一下时间吗?创建一个算法,验证系统时钟是否遵循逻辑顺序(始终递增)。如果日期突然向后移动超过指定的时间量(您必须考虑一些漂移和internet时间服务器更正),您禁用该程序,直到用户恢复时钟?

它归结为您喜欢的故障模式。如果您的许可证服务器(或时间服务器,但您也可以构建一个适当的许可证服务器)由于某种原因不可用,那么用户是否仍然能够使用您的产品(从而使您的产品易于进行未经许可的复制),或者产品是否在这种情况下拒绝工作(这样会让那些对你怀恨在心的合法用户恼火不已)?除非我是root用户,否则我不认为Linux上有磁盘序列号。与其说我担心将其绑定到特定的计算机或用户,不如说我担心许可证的无限期扩展。我必须将最后一次系统时间存储在某个文件中,他们可以将其删除。我想我可以检查文件系统中最近的修改文件(任何文件)然后检查系统时间是否在未来。嗯,你不能将其存储在一个关键的程序文件中吗?如果他们删除该文件,他们也会使程序出错。你可以使用一些算法混淆系统时间,使其不容易读取,然后CRC检查以确保它没有被破坏。