【问题标题】:Protecting XML file from editing保护 XML 文件不被编辑
【发布时间】:2011-01-09 23:09:06
【问题描述】:

我们在至少 1000 个 xml 文件中实现了大约 60 MB 的设备配置。

现在我们正在向客户发布软件。但我们的要求是不允许用户查看和编辑 xml 配置文件。 XML 配置文件包含很多设备信息的秘密,如果它是可读的,很容易被黑客入侵。

现在我们需要加密 xml 文件。有没有推荐的方法来加密 xml 文件并且可以在运行时解密?

【问题讨论】:

  • XML 出了大错?
  • 为什么没有人回答这个问题?

标签: c# .net xml encryption


【解决方案1】:

您对“黑客”的期望有多大?如果解密信息所需的所有信息无论如何都必须存在于系统上,那么一个坚定的攻击者无论如何都将能够得到它。

【讨论】:

  • 他们基本上是软件的现场用户,可能是一些客户开发人员。
【解决方案2】:

您可以使用 Cryptography 命名空间中的类。

大多数加密类都允许您对流进行加密和解密,因此非常适合您的目的。

但是,您仍然需要将加密密钥保存在某处,即使它在程序集中。

正如 Jon 指出的那样,坚定的黑客会找到破解任何加密的方法。

【讨论】:

    【解决方案3】:

    这是 DRM 应用程序已知的一个问题 - 您希望将数据提供给您选择的用户代理,但不提供给操作用户代理的用户。但是,由于用户代理通常站在用户一边,正如 Jon 和 Oded 所指出的,一个坚定的黑客会找到破解加密的方法。这是一场猫捉老鼠的游戏。您正在尝试为实施 DRM 的人们想要解决的完全相同的问题找到解决方案。纯软件用户代理比硬件辅助用户代理更容易破解,但无论哪种情况,时间都对黑客有用。最新的发展是后者——将所有加密技术嵌入到硬件中——比如 HDMI 的 HDCP 方法(高带宽数字内容保护路径),通过让解密后的数字信号通过黑盒硬件,用户基本上无法访问它从它的解密点直到它变得可用,但在预期的目的地 - 电视屏幕。然而,HDCP 成功的关键是在硬件中实现它。大多数黑客已经学会了处理软件。但是由于我想说现在每 100 名优秀的软件黑客中就有 1 名优秀的硬件黑客,所以老鼠希望周围没有猫来抓它。对不起,理论太多了,但我相信这对你的问题很重要。如果您仍然愿意玩游戏,请加密您的 XML 文件,并确保潜在黑客无法获得解密密钥 - 即混淆它,别无他法。

    【讨论】:

    • 如果电影业在这个问题上投入了数百万美元,却无法保护其电影,那么还有什么希望。
    • 你的意思是什么?答案在哪里?您是否知道每 100 个好罪犯中就有 1 个好小偷可以闯入您的房子,所以您是否锁上了房门?你不是“愿意玩游戏”吗?历史表明,安全最终会被打破。但这不是我,我们不应该保护它。您在答案中提供的唯一有价值的信息是混淆。至少对我来说。
    • @publicENEMY,我认为我的回答非常好——一些有根据的理论和一些有根据的建议。我写得好像我自己在处理这个问题。希望没有猫抓到我的老鼠。整个 DRM 系统都是为了混淆解密密钥而构建的。这是老说法。仅仅因为任何安全措施最终都会被破坏,并不意味着可以在糟糕的安全措施上投入资金 :-) 密码学是集中精力产生真正的安全性,无论它可能意味着什么。内部开发的 DRM 系统类似于家用焊接车库锁。很少有开发人员是优秀的密码学家。
    【解决方案4】:

    正如其他人所解释的那样,如果没有受信任的设备来存储密钥并在不授予密钥访问权限的情况下在任何情况下进行解密,您将无法获得绝对安全。计算机不是“受信任的设备”... 我的雇主出售此类技术,如果您的数据真的物有所值,您可能应该考虑这样的解决方案。 如果额外的 USB 加密狗不可接受(或太贵),至少使用公钥(非对称)加密(参见 System.Security.Cryptography)。 非对称加密的优点是用于解密数据的密钥不能用于加密数据。 您的应用程序必须存储解密密钥,黑客可以通过或多或少的努力来确定它。然后他可以解密您的所有数据,但他不能再次加密更改的数据。因此,他不能将您的应用程序与更改的数据一起使用。 如果你想阻止他这样做,你必须混淆你的应用程序并使用反调试技术(静态和运行时)。如果您采用这种方式购买现有解决方案可能会更便宜。

    【讨论】:

      【解决方案5】:

      注意:黑客可以看到 .net 生成的可执行文件和 dll 中的所有功能! 如果你在你的 .net 项目中做一个解密算法,比如 DecryptXML(string Path),黑客很容易调用这个指令。所以一定要对你的项目进行dotfuscate。

      【讨论】:

        猜你喜欢
        • 2020-06-16
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多