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



我正在制作一个激活服务器,客户端将不得不向激活服务器发送信息,激活服务器发送回加密的许可证文件。然而,为了解密那个文件…客户端需要密钥或密码

用于加密的密钥或密码最好放在哪里?或者更好的是,传输密钥或密码的最佳方式是什么?

谢谢!

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

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

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

  • 签名正确。
  • 哈希值对应配置文件。

我没有VB。Net代码现在可用,但所有的c#代码都可以在c# 3.0 in a Nutshell示例中在线找到。

c#中的示例代码可在RSA类及以下章节获得

我不确定如何确定它是否是最好的的地方,但*。配置文件似乎是一个有效的选项。

既然这是我的专业领域,就让我插一句…看来你正试图从头开始创建自己的激活系统。在使用激活来保护软件许可证的早期,许多公司在没有深入的专业知识的情况下采用了开发自己系统的方法,并且他们对制作安全,用户友好的激活系统所需要的知识的无知使激活声名狼藉。所以,为了帮助你不必痛苦地重新学习这些经验教训,也不必激怒你的客户,这里有一些你需要考虑的事情:

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

只是考虑一些事情。

最新更新