在哪里保存应用程序的激活数据?

时间:2011-06-26 14:15:07

标签: security activation

在我的应用程序中,我将使用在线激活来控制盗版。但问题是,一旦用户激活软件,我如何检测该应用程序被激活。有没有办法存储此应用程序被激活的数据。不要告诉我注册表,因为这种方式不安全。任何与在线激活相关的信息都会对我有所帮助。我决定在系统驱动器中创建文件,我的应用程序每次启动时检查该文件。如果找到文件的话应用程序启动,如果没有,则会询问密钥。那是安全的吗?任何建议都会很好!!

2 个答案:

答案 0 :(得分:2)

您提到的问题是您需要考虑的问题,但还有很多其他问题:

  • 用户如何在没有网络连接的系统上激活许可证?
  • 如果您按照节点锁定每个许可证的标准做法(自动读取一些系统参数,如MAC地址,主机名,硬盘ID等)并在运行时检查这些参数,您将如何容纳升级他们的用户系统因此导致其中一个参数发生变化?
  • 想要将许可证重新定位到其他系统的用户如何将其从桌面移至笔记本电脑或新系统?
  • 如果用户打电话给你(他们会)并说:“帮助,我的系统崩溃了,所以我需要让我的许可证在另一台机器上运行?”
  • 如果您使用激活系统设置许可时间限制,例如试用许可证为30天或订阅时为一年,如何通过错误设置系统来防止试图欺骗的用户时钟在激活许可证之前还是在激活之后?
  • 如果您决定提供不同版本的应用程序,您的激活系统可以管理这些内容吗?例如根据每个用户的激活许可证为每个用户启用或配置产品功能,但所有功能都来自一个可执行文件
  • 如何报告已激活的许可证 - 您的服务器是否捕获已激活许可证的数据并提供报告,警报等。
  • 如果有人想购买20个许可证池,该怎么办?您是否必须提供20个不同的激活ID,或者您是否可以提供一个允许激活20个许可证的ID?

根据多年的实践经验,可以考虑一些事情。

答案 1 :(得分:0)

我可以看到“保护激活数据”有两种不同的看法:

1)如果您尝试保护用户的激活数据,以便用户无法将数据复制到其他计算机并在那里使用该软件,我建议使用以下协议:

在激活期间,对用户环境的唯一标识功能进行哈希处理并发送到激活服务器。激活服务器生成使用密钥签名的激活。在产品启动时,您的产品会验证您的服务器是否已签署激活(使用服务器的公钥),以及本地环境是否已激活到激活中包含的相同签名值。如果它失败了,那么环境已经改变了(操作系统的新安装?),或者数据已经迁移到需要(通过它的声音)新许可证/激活的新环境。无论哪种方式,用户都需要新的激活。

2)如果您正在尝试保护激活数据免受损坏,那么请考虑使用逻辑补充前一个协议,如果客户尝试使用相同的UID重新激活,则允许激活再次进行,这应该是导致相同的激活实例被发送回客户。

这些不在袖口,我不保证其中任何一个都是防弹的。另外,请记住,盗版者只需绕过验证激活就可以成为一个有争议的问题。

此外,我觉得重要的是要注意,使用此方案的想法是您不必在任何地方隐藏激活信息。您可以将它存放在方便的地方。