【问题标题】:Encoding license file for privacy为隐私编码许可证文件
【发布时间】:2011-02-24 20:21:59
【问题描述】:

我们使用 XML 数字签名来签署和验证我们的许可证密钥。签约工作正常,运行顺利。 XML 许可证文件包含有关许可证的一些(明文)详细信息以及二进制签名。

我们希望对这些明文详细信息(许可期限、用户名等)进行编码(我不是说加密),以便窥探者不会立即看到它们。是否有人们在这种情况下使用的标准(例如,base 64 或其他标准)?它不需要安全或特别聪明,只要足以隐藏记事本中的信息即可。

编辑:我们正在使用 .NET/C#。

谢谢:)

【问题讨论】:

  • Base64 有什么问题?易于编码/解码,内置支持多种语言/库。肉眼看起来很模糊。
  • 我们有点害羞。据我了解,有人进行了编码,最终在 XML 中产生了非法字符,然后一切都开始崩溃了。所以 base 64 是我的选择,但由于我是许可领域的新手,我正在尽职调查以确保我没有发疯。 :)

标签: c# xml licensing digital-signature license-key


【解决方案1】:

只需使用 XOR。 XOR 是一件好事(如果使用得当),即使在 RC4 等密码算法中也能使用。通过使用异或,我的意思是取一些在您的应用程序中保持不变的文本字符串,然后将文件的第一个字节与该字符串的第一个字节进行异或,然后将文件的第二个字节与该字符串的第二个字节异或,依此类推。然后从字符串的开头开始。这就是流密码的工作方式。在您的代码中找到的字符串(与某个常数相反)将使黑客的工作稍微复杂一点。

【讨论】:

    【解决方案2】:

    一个简单的十六进制编码就可以做到这一点。它也很容易解码。如果您提及您正在使用哪种语言或平台编写代码,那么有人可以提出更具体的建议。

    【讨论】:

    • 您好,感谢您的回复,我们正在使用 .NET、C# 构建。我们在 C++ 中也有各种各样的东西。
    【解决方案3】:

    如果您只是想混淆细节,那么我认为 Base64 或等效编码机制就可以了。

    我不熟悉关于您正在尝试做的事情的任何标准,因为大多数人会争辩说您正在尝试做的事情并没有真正实现任何目标(因为它属于“通过默默无闻的安全”)。

    【讨论】:

    • 谢谢,好点子。我们的许可方案非常简约——足以让诚实的用户保持诚实。你说得对,这个领域的标准完全为零。我有点惊讶 .NET 没有提供更好的开箱即用许可支持。有许可类和(贵得离谱的)MS 许可服务,但是......没有易于使用的黑盒组件,可以在一些常见配置中提供基本的公钥/私钥许可。
    【解决方案4】:

    作为许可证密钥的用户,我建议不要进行这种混淆。在审核许可证以确定您所指的详细信息时,它通常非常有用。如果我可以从 xml 描述中获取它们,则可以节省大量时间。它还有助于发现错误部署的许可证。如果我发现颁发给 example.com 而不是我工作的组织的密钥,我知道我们需要解决这个问题。如果发给ZXhhbXBsZS5jb20K(base64中的example.com),我不会三思而后行。我还必须确保按时更新许可证。我什么时候更新许可证到期 MjAxMC0wNi0wMQo=?

    【讨论】:

    • 这让我很感兴趣。您是说,作为用户,您发现自己正在检查.lic 密钥内容?但是,如果我们使用(例如)您的唯一机器 ID 或其哈希值作为许可证的一部分,该怎么办?打开一个 LIC 文件并以纯文本形式查看该信息是否会打扰您?
    • 如果我作为用户发现您在 .lic 文件中保留了我的一些敏感信息并试图向我隐瞒这一事实,我会更加困扰。
    • 一点也不。这是我将在审核许可证使用情况时使用的信息。如果我发现 IP 192.0.2.15 的密钥在 IP 192.0.2.41 的密钥服务器上使用,我想纠正这种情况。对于识别服务器的任何其他信息也是如此。没有许可证中的信息可能会使正确部署许可证变得困难,因为我无法确定许可证应该在哪个服务上。
    猜你喜欢
    • 2017-06-25
    • 2014-07-06
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2016-11-24
    • 2021-07-13
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多