使用存储在应用程序二进制文件中的公钥进行软件许可证解密

Mar*_*kel 2 rsa encryption-asymmetric license-key

参考这个问题答案,我无法理解如果私钥保存在许可证服务器上并且公钥在应用程序可执行文件中提供,软件许可方案如何工作,而不是相反.

我正在尝试执行以下软件许可方案:

  1. 用户在购买时获取产品ID(基于GUID),并在应用程序内部使用它来激活它.
  2. 应用程序连接到许可证服务器,后者使用RSA公钥发送回加密文本.此文本(许可证)将存储在用户的硬盘上.
  3. 每次应用程序启动时,都需要使用RSA私钥解密此许可证,以便提取不同的参数,如产品版本,产品限制,注册到哪家公司等.

如果应用程序没有私钥而是公钥,应用程序如何解密该许可证文本?

谢谢!

编辑:

  1. 如果用于加密许可证的密钥仅在服务器端而不是公众处可用,我们可以将其称为私钥吗?在这种情况下,如果一方有加密密钥而另一方(公众)有密钥进行解密,那么拥有解密密钥的一方是否可以获得加密密钥?关注点是基于stackoverflow的各种主题,在给定私钥的情况下生成公钥并不困难.如果您有私钥,您实际上可以拥有两个密钥.
  2. 这个想法是,一旦软件被激活,它就不再需要连接到许可证服务器了.

SLa*_*aks 5

应用程序应以纯文本格式存储其详细信息.

注册时,服务器应使用私钥对这些详细信息(包括机器标识)进行签名.

每次应用程序启动时,都应使用公钥验证该签名.

  • @MarcusFrenkel服务器签名不会验证数据是否被更改. (2认同)