【问题标题】:Using asymmetric encryption for license file对许可证文件使用非对称加密
【发布时间】:2018-03-25 14:48:46
【问题描述】:

我想向客户发送一个包含我的应用程序许可数据的加密文件。由于我将使用非对称加密,因此我将使用私钥加密文件并将其发送给客户端。客户端 PC 上的应用程序将使用位于应用程序代码中的公钥解密发送的文件。

我这里提到的威胁模型是可以从应用程序 .dll 文件中提取公钥(例如使用 .net 反射器)并用于重新生成许可证。

那么有没有办法保护我的应用程序?

更新:

我浏览了以下link 中的代码示例来加密xml文件。

我现在面临的问题是,根据代码示例,两个密钥都将在与我相同的客户端 PC 中生成。那么这是对的还是我的误解?

正如 Alexe Barlescu 建议使用 ProtectedData 类来保护私钥一样,我该如何实现呢?

【问题讨论】:

  • 您不能仅使用公钥重新生成许可证。考虑一下您(开发人员)和黑客的应用程序被黑客入侵的利润与成本。如果您承受太多损失,只需使用现有库之一,否则您的方案听起来不错。顺便说一句,您描述的是数字签名,而不是加密
  • 感谢您的回答,但您能否详细解释一下我所描述的数字签名是什么意思?
  • 非对称加密是指使用公钥,只有私钥可以读取数据。数字签名是指使用私钥加密某些东西(通常只是哈希),而公钥让每个人都可以检查消息的来源 - 在这种情况下没有任何隐藏,因为公钥让每个人都可以看到真实数据
  • 再次感谢,这就解释了为什么我无法通过网络找到适合我的案例的好例子。当我第一次使用对称加密时,我发现可以使用 .net 反射器轻松地从 dll 文件中提取密钥。

标签: c# encryption encryption-asymmetric


【解决方案1】:

非对称加密使用两个密钥:

  • 用于加密数据的公钥
  • 用于解密数据的私钥

使用客户的公钥加密包含许可证的文件,因此只有他可以使用他的私钥解密它。 为了使您的客户的私钥安全,请使用位于 System.Security.Cryptography 命名空间的 ProtectedData 类中的 Protect 方法对其进行加密。私钥将加密存储在他的计算机上,只有当他需要解密您发送的消息时,他才能解密密钥。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2012-11-11
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2019-07-29
    相关资源
    最近更新 更多