放置用于加密的密钥或密码的最佳位置?

时间:2011-08-25 15:23:45

标签: vb.net encryption licensing

我正在制作激活服务器,客户端必须将信息发送到激活服务器,激活服务器将发送回加密的许可证文件。但是,为了解密该文件,客户端需要密钥或密码。

将密钥或密码用于加密的最佳位置是什么?或者更好的是传递密钥或密码的最佳方式是什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

客户端应用程序有一个服务器地址,它将连接到该服务器地址,发送所需的任何信息(我假设您在这里发送客户端的配置文件)。它还可以事先知道配置文件中服务器的公钥。

服务器使用其私钥对配置文件的哈希进行签名(包括它可以验证的公钥,因为它被发送到服务器)。这个签名的数字哈希被发送回客户端。

启动时,哈希以两种方式验证:

  • 签名是正确的。
  • 哈希对应于配置文件。

我现在没有任何VB.Net代码可用,但所有C#代码都可以在C#3.0的网上Nutshell示例中找到。

Example code in C# Available under section The RSA class and followings

答案 1 :(得分:0)

我不确定如何确定它是否是最佳位置,但* .config文件似乎是一个有效选项。

答案 2 :(得分:0)

由于这是我的专业领域,让我跳进去...看来你正试图从头开始创建自己的激活系统。在使用激活来保护软件许可证的早期阶段,许多公司采用了开发自己的系统的方法而没有深入的专业知识,并且他们对制作安全,用户友好的激活系统所做的事情的无知使激活成为一个坏名声。因此,为了帮助您不必痛苦地重新学习这些课程并激怒您的客户,以下是您需要考虑的一些事项:

  • 如果用户没有与服务器建立网络连接,或者他们的连接被防火墙阻止,他们将如何激活他们的许可证?
  • 大概是作为激活的一部分,您将应用程序节点锁定到用户系统的某些参数(否则他们可以复制它并在他们希望的任何系统上运行它)。您将如何处理对系统进行小幅升级的人,导致节点锁定参数发生变化?请注意,MAC地址不是一个好的选择,即使它是常用的,因为在某些系统上配置MAC地址的难易程度意味着MAC地址节点锁定是不安全的。
  • 用户的系统崩溃 - 他们如何让他们的许可证在另一个系统上运行? (你怎么知道他们说的是系统崩溃的真相?)
  • 如果用户想要在一段时间后将其许可证移动到另一台计算机,例如从桌面到笔记本电脑,该怎么办?您的系统是否允许他们这样做而不是安全漏洞或需要您支持的恼人的手动过程?
  • 您如何保护您的许可证免受密钥篡改,欺骗或篡改许可代码等?
  • 从您的帖子看来,您现在似乎只想启用整个应用程序。如果将来您想要激活有时间限制的试用版或订阅许可证,配置产品功能或启用某些模块等,您的激活系统是否会支持此功能,还是必须重新构建它?

只需要考虑一些事情。