【问题标题】:.NET cryptography for licence keys?.NET 加密许可证密钥?
【发布时间】:2010-09-20 12:21:17
【问题描述】:

我想创建一个许可证密钥,您会推荐哪种加密算法?

基本上输入是:

公司名称
主要版本号
创建日期
有效期
有特点1:
有特点2:
有特点3:

例如Acme 公司 5.0 20081102 20081102 0 1 0

相关:Which built-in .NET cryptography algorithm is the most secure?

【问题讨论】:

标签: .net encryption cryptography


【解决方案1】:

我会建议:不要花太多时间来保护您的密钥。 使用字节编译语言很容易反编译,只需让应用程序跳过验证步骤。无论您的密钥有多安全,当您的验证函数始终返回 true 时,它​​们都无关紧要。序列号可以让诚实的人保持诚实。

【讨论】:

  • 哈哈,哈哈,“非常容易反编译,只需让应用程序跳过验证步骤”。既然这很简单,那就继续吧,破解我们最新版本的 HP Loadrunner,或最新版本的Burp Suite 并向我们展示它非常简单。一篇博文作为证据就足够了,例如here's one for a (very) old version of Burp Suite真正的问题是,你逆向工程了多少有价值的程序?
  • "序列号是为了让诚实的人保持诚实.." 错误。老实说,老实人不需要序列号,像“除非你先付钱,否则不要使用这个功能”这样的 msgbox 就足够了。 序列号可以让不诚实的人保持诚实。不诚实,但便宜Security is an economics problem 首先是技术问题。
【解决方案2】:

如果您在客户端进行验证,您希望使用非对称加密。这样您就不必将私钥分发给客户。我将使用 SHA-256 和 2048 位密钥生成 RSA 签名。如果你这样做,加密操作将不是薄弱环节。破解者当然可以更改代码以跳过验证步骤,但没有任何加密算法可以解决此问题。

如果您在服务器端进行验证,我会选择基于 SHA-256 的 HMAC。

【讨论】:

    【解决方案3】:

    对于许可证密钥,您不是对加密它感兴趣,而是对它签名感兴趣。通过签署它,您可以验证到期日期和启用的功能列表没有篡改。无需隐藏(加密)许可证密钥,因为您不想通过向最终用户隐藏许可证来减轻威胁。

    加密签名是通过散列许可证然后用私钥加密散列来完成的。由于任何人都可以使用相应的公钥解密该哈希,因此任何人都可以验证许可证是否被篡改。

    用于签名和验证的基本 CryptoAPI 函数是 CryptSignHashCryptVerifySignature,请参阅 Example C Program: Signing a Hash and Verifying the Hash Signature

    .Net Framework 等价物是 RSAPKCS1SignatureFormatterRSAPKCS1SignatureDeformatter 类。

    【讨论】:

      【解决方案4】:

      您的其他问题的答案也适用于此处:Which built-in .NET cryptography algorithm is the most secure?

      【讨论】:

        【解决方案5】:

        你需要做 4 件事:
        第 1 项:校验和您的应用程序(MD5,带有自定义 md5 上下文)
        - MD5 上下文需要加密初始化
        - 比较私钥/公钥加密校验和
        第 2 项:校验和您正在运行的应用程序的文本段
        第 3 项:对许可证使用 4096 位 RSA 私钥-公钥加密
        No 4:加密任何重要的字符串,例如“Wrong key”或“Key ok”

        【讨论】:

        • MD5 是一种损坏的哈希算法,不应使用
        【解决方案6】:

        如果您想查看三重 DES 加密的示例,可以查看 my blog post 对数据库中的数据进行加密。

        博客文章包含视频和源代码。

        虽然它专注于加密数据库中的字符串列,但您绝对可以修改它以使用许可字段。

        源代码用 C# 编写,使用 Triple DES 算法。

        【讨论】:

          猜你喜欢
          • 2013-02-06
          • 2011-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-11
          • 2011-09-23
          相关资源
          最近更新 更多