【发布时间】:2011-08-26 20:29:19
【问题描述】:
我正在做一个激活服务器,使用户能够激活他们的软件。问题是他们拥有公钥。验证方法需要公钥来检查许可证文件的签名。我担心有人可以使用两个密钥(公钥和私钥)生成自己的许可证文件,然后更改客户端上的公钥,这会欺骗他当前的许可证。
有没有办法避免这种情况?公钥应该存储在哪里?您必须考虑到检查是在客户端完成的,并且签名是在服务器上创建的。
谢谢。
【问题讨论】:
标签: vb.net encryption licensing drm
我正在做一个激活服务器,使用户能够激活他们的软件。问题是他们拥有公钥。验证方法需要公钥来检查许可证文件的签名。我担心有人可以使用两个密钥(公钥和私钥)生成自己的许可证文件,然后更改客户端上的公钥,这会欺骗他当前的许可证。
有没有办法避免这种情况?公钥应该存储在哪里?您必须考虑到检查是在客户端完成的,并且签名是在服务器上创建的。
谢谢。
【问题讨论】:
标签: vb.net encryption licensing drm
不要使用许可文件。每次启动应用程序时,都要连接到许可服务器以对其进行验证。
【讨论】:
所以?公钥加密的全部意义在于解密只能由密钥的对应方完成。如果您的应用使用用户的公钥加密某些内容并将其发送到您的服务器,则他们无法解密该数据包,因为只有您拥有的私钥才能工作。
如果用户的许可证文件使用您的私钥加密,则只有他们的公钥可以解密它。这样一来,即使许可文件被共享,您也可以追踪谁共享它,因为只有一个用户的密钥能够解密它。
【讨论】: