c#,如何存储和检查生成的许可证密钥?

时间:2016-03-24 10:19:38

标签: c# ssl encryption cryptography

我读了很多关于RSA,加密,许可证密钥等的内容,但我仍感到困惑。

我们有一个可以由客户在本地安装的Web应用程序(他们通常应该选择SaaS版本,但有些人可能不需要它) 该应用程序有不同的模块等(非常标准)

我们的后端存储客户数据和许可证/购买的模块,可通过SSL访问。

"客户"将定期检查颁发的许可证是否仍然有效。

我不清楚的是如何存储许可证密钥和/或数据,例如"许可证有效期多久"

到目前为止我的想法:

  • 只需将其保存在表格(明文)中,即使用户篡改数据库中的数据,定期许可证检查也可确保许可证的有效性。 (用户可以访问他不应该在短时间内访问的部分)

  • 加密并将其保存在表格中。这意味着我要么

    • 使用共享密钥

    • 使用私钥/公钥:因此要么必须使用公钥解密(在客户端上),要么将其发送到后端进行解密并将其发送回客户端。

我只是觉得加密整个事情是一种开销。

我不是安全和/或加密专家。

所以我的问题是

  • 检查/存储许可证(及其数据)时的最佳做法是什么?

感谢。

编辑:

我删除了问题" SSL是否足够?"在最后一段中因为我意识到这是一个不同的主题。

1 个答案:

答案 0 :(得分:1)

我假设您在本地拥有许可证文件,并且检查仅在客户端进行?您可以执行以下操作:

  1. 在服务器上生成许可文件(无论您想要什么格式,甚至可以是纯文本)
  2. 使用您的私钥对此文件进行签名(无需加密,只需附加签名)
  3. 在您的应用中包含您的许可,签名和公钥(或使其可下载以便能够更新/撤销许可)
  4. 检查许可文件时,只需使用您的公钥检查签名即可。如果客户端篡改了许可证文件,则签名将无法验证。
  5. 当然,您必须以某种方式保护已部署的公钥,因此客户端无法使用它自己替换它并创建自己的许可文件。

    使用XML,您可以使用XML Signature