【问题标题】:Need to encrypt license data to be decrypted by the client, can the client create their own encrypted files?需要加密license数据由客户端解密,客户端可以自己创建加密文件吗?
【发布时间】:2020-03-23 10:13:18
【问题描述】:

我正在创建一个将部署给我们客户的许可证管理器。在不涉及许多细节的情况下,我们在许可证文件中配置了许多参数,然后将其加密并放置在客户端服务器上。许可证管理器解密此文件并读取值。目前,这一切都是使用逐行 Triple-DES 完成的(如......每一行都是单独加密的......)。我正在用 NodeJS 重写整个东西。

目标是能够加密纯文本许可证文件并将该文件分发到客户服务器。客户服务器将运行需要能够解密许可证的许可证管理器 NodeJS 应用程序。

看起来私人/公共密钥加密可能是可行的方法 - 但客户能否使用我们与许可证管理器一起分发的密钥来加密他们自己的许可证文件?

【问题讨论】:

  • 如果您有公钥或私钥,那么是的,您可以加密文件。通常,编码的私钥还包含公钥(或者您可以使用它分发一个)我不明白您的要求。除此之外,这类问题应该在security.stackexchange.com 上提问。
  • 我只是想了解是否可以在服务器端加密某些东西然后在客户端解密它;客户端无法在解密后自行加密数据。
  • 不,您正在寻找的是签名。使用非对称密码术,您使用公钥进行加密,并且您应该真的期望它是公开的 - 即包括对手在内的每个人都能够获取/猜测该值。
  • 确实,您可能正在寻找签名。接下来-您不考虑用户是否可以替换公钥并验证他们自己的签名。没有灵丹妙药,只有你可以让它变得更难。查看在 DRM 系统或许可证管理器上花费了多少以及它们持续了多长时间

标签: node.js encryption licensing public-key-encryption


【解决方案1】:

看起来我应该关注的是数字签名而不是加密。

【讨论】:

    【解决方案2】:

    在这两种方式中,都可以找到创建自己的许可证文件的方法。因为您会将用于解密的密钥(或用于检查签名许可证的公钥)保留在代码中。所以有人可以找到/替换这个密钥并用自己的替换它。然后使用自己的加密/签名许可证创建自己的许可证文件。

    您可以通过创建在线服务来避免这种情况,每次有人启动产品以检查许可证时都会调用该服务。这也可以缓解,但恕我直言不是很容易

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2015-10-29
      • 2015-04-30
      • 1970-01-01
      相关资源
      最近更新 更多