【发布时间】:2018-03-25 14:48:46
【问题描述】:
我想向客户发送一个包含我的应用程序许可数据的加密文件。由于我将使用非对称加密,因此我将使用私钥加密文件并将其发送给客户端。客户端 PC 上的应用程序将使用位于应用程序代码中的公钥解密发送的文件。
我这里提到的威胁模型是可以从应用程序 .dll 文件中提取公钥(例如使用 .net 反射器)并用于重新生成许可证。
那么有没有办法保护我的应用程序?
更新:
我浏览了以下link 中的代码示例来加密xml文件。
我现在面临的问题是,根据代码示例,两个密钥都将在与我相同的客户端 PC 中生成。那么这是对的还是我的误解?
正如 Alexe Barlescu 建议使用 ProtectedData 类来保护私钥一样,我该如何实现呢?
【问题讨论】:
-
您不能仅使用公钥重新生成许可证。考虑一下您(开发人员)和黑客的应用程序被黑客入侵的利润与成本。如果您承受太多损失,只需使用现有库之一,否则您的方案听起来不错。顺便说一句,您描述的是数字签名,而不是加密
-
感谢您的回答,但您能否详细解释一下我所描述的数字签名是什么意思?
-
非对称加密是指使用公钥,只有私钥可以读取数据。数字签名是指使用私钥加密某些东西(通常只是哈希),而公钥让每个人都可以检查消息的来源 - 在这种情况下没有任何隐藏,因为公钥让每个人都可以看到真实数据
-
再次感谢,这就解释了为什么我无法通过网络找到适合我的案例的好例子。当我第一次使用对称加密时,我发现可以使用 .net 反射器轻松地从 dll 文件中提取密钥。
标签: c# encryption encryption-asymmetric