计算机中的哪些部件是唯一可用于创建该机器指纹的?
Possible Duplicate:
Generating a unique machine id
I'm trying to build a licensing mechanism for a software we're building. We have a whitelist of machines that can use the software.
What parts of a machine are unique to be used as part of the fingerprint?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题(用于执行软件许可证的访问控制)与一般的安全/加密问题类似。但第一条规则是:永远不要推出自己的加密货币。我认为这绝对适用于此。
考虑一下击败您可能发现的所有身份机制是多么容易。然后考虑修补二进制文件以不执行将驱动其执行“您的软件未经许可”代码的比较是多么容易。现在考虑一下下载适用于世界上每个人的补丁是多么容易。
现在尝试平衡您阻止无法弄清楚这一点的用户的愿望与对合法用户的影响,这些合法用户在更换故障硬盘(由洪水区域部件构建,例如: )。当您在没有 NIC 或磁盘的平台上时,您的软件将如何反应(完全可行,您的软件可能比您使用的任何硬件 API 的使用寿命更长)。它会失败安全/偏执,还是失败合规/信任?您确定真的要继续这个计划吗?
如果您确实需要许可证机制,请考虑使用一种算法来生成许可证标识字符串。
Your problem (access controls for the purpose of enforcing a software license) is similar to that of security/encryption in general. But the number one rule is: never roll your own crypto. I think that definitely applies here.
Consider how easy it is to defeat all of the identity mechanisms you might find. Then consider how easy it is to patch the binary to not execute the comparison that would drive it to execute the "your software is unlicensed" code. Now consider how easy it is to download a patch which does that for everyone in the world.
Now try to balance your desire to thwart the users who can't figure that out against the impact on your legitimate users who will find your software to be "broken" when they replace their failing hard disk (built with flood zone parts, e.g. :). How will your software react when you're on a platform with no NIC or disks (totally feasible, your software may last ages longer than any hardware API you use). Will it fail safe/paranoid, or fail compliant/trusting? Are you sure you really want to go ahead with this scheme?
If you indeed need a license mechanism, consider an algorithm to produce license identification strings instead.