【问题标题】:Prevent third parties manipulation of an XML file防止第三方操纵 XML 文件
【发布时间】:2015-05-26 03:31:06
【问题描述】:

我今天的问题是我必须保护要从我的 Internet 网站分发的 XML 文件免受第三方的操纵。
如果我没有关于 XML 的经验,我会尽可能清楚。

首先让我澄清一下,这些 XML 基本上是出于礼貌而分发给我的“客户”的,他们下载了它们,并且要阅读它们以便插入到他们的数据库中。它们基本上是数据库的条目。我无法避免这样做。 XML 文件将以这种方式分发,我无法识别下载它们的“客户”。

我不知道为什么我的“客户”应该接受来自其他来源的文件,但是可能可能会发生这种情况。如果是这样,这些其他来源也可以下载、读取、修改我的 XML 的参数(原为纯文本)并将修改后的文件转发给最终用户(“客户端”)。

我以为我可以实现校验和方法,但从长远来看,第三方可以找出算法并提供具有正确校验和的修改文件。
有什么办法可以对这些 XML 进行签名,以便在掺假后丢失签名?

【问题讨论】:

  • 也许你可以看看 XML 签名 (w3.org/TR/xmldsig-core)。我对它了解不多,但我认为它适合你想做的事情。
  • 我认为它不适合:我必须将 XML 作为纯文本发送,无论我添加多少带有 的字段,第三方总是可以修改文件。我无法加密、发送解密密钥等...
  • 您是否可以控制软件导出和导入 xml 文件?
  • 从本质上讲,纯文本文件总是可以被编辑的,而且真的没有办法添加一些在编辑时会从文件中消失的东西。但是您可以做的是提供另一种工具,您的客户可以在其中上传和验证他们的文件,然后再导入它们。这不是一个理想的解决方案,但可能总比没有好。

标签: xml database digital-signature


【解决方案1】:

如果文本数据的安全性至关重要,则必须通过受信任的通道进行带外传输。

您的客户可以根据需要从您的站点获取记录,并且您可以使用 @gbuzogany 解释的加密哈希对它们进行数字签名。

然后,让用户定期连接到您的站点以检索他们可用于从数据库中提取数据的个性化密钥。

这样,您可以控制访问密钥的生命周期,但数据可供任何客户免费使用。任何第三方数据都不会从您的主密钥生成哈希,并且不会被应用程序成功读取。

然后,您的应用程序将忽略您使用获取的密钥验证的未经身份验证的记录。

见:

【讨论】:

    【解决方案2】:

    任何公钥加密算法都可以解决您的问题(这是他们可以提供的功能之一,真实性):

    http://en.wikipedia.org/wiki/Public-key_cryptography

    最重要的一点是客户端需要检查签名是否有效。要么他们手动完成,要么你可以提供一个程序让他们检查它是否有效。

    步骤:

    • 选择您选择的公钥加密算法(例如:RSA、PGP)
    • 生成公钥和私钥。
    • 公钥将公开放置在您的网站上,因此客户可以访问它(您可以将其与您拥有的 XML 文件一起提供)。您应该对私钥保密(这样可以保证没有其他人可以冒充您)。
    • 使用任何算法来创建文件的哈希值(例如:SHA256)。
    • 使用私钥为此散列创建签名。这将保证哈希是有效的。
    • 任何客户端都可以使用相同的算法创建哈希,并使用您的公钥来检查签名是否有效(文件没有被修改,是您签名的)。

    例如,您可以使用 OpenSSL 来完成所有这些操作:

    创建哈希(由您签名,并由客户端验证):

    openssl dgst -sha256 data.txt > hash 
    

    签名:

    openssl rsautl -sign -inkey privatekey.pem -keyform PEM -in hash > signature
    

    验证签名:

    openssl rsautl -verify -inkey publickey.pem -keyform PEM -in signature
    

    【讨论】:

    • 这可能是最好的解决方案。如果您为您的客户创建小程序,它将为他们验证文件,请将您的公钥直接插入该程序,否则它也可能被伪造(使用不同的私钥签名并提供不同的对应公钥)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多