【问题标题】:What is getting signed in XML Signature (XMLDsig)?什么是在 XML 签名 (XMLDsig) 中签名?
【发布时间】:2022-09-27 18:02:13
【问题描述】:

我想解析一个 XML-DSIG 文件及其内容。我在wikipedia 上读过它的结构和一点RFC。但我无法弄清楚一些事情,假设这是我得到的一个 XML-DSIG 示例:

<?xml version=\"1.0\"?>
<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">
  <SignedInfo>
    <CanonicalizationMethod Algorithm=\"urn:xml-dsig:transformation:v1.1\"/>
    <SignatureMethod Algorithm=\"some-algo\"/>
    <Reference URI=\"#KeyInfo\">
      <Transforms>
        <Transform Algorithm=\"urn:xml-dsig:transformation:v1.1\"/>
      </Transforms>
      <DigestMethod Algorithm=\"some-algo-256\"/>
      <DigestValue>some-hash-256</DigestValue>
    </Reference>
    <Reference URI=\"#Object\">
      <Transforms>
        <Transform Algorithm=\"urn:xml-dsig:transformation:v1.1\"/>
      </Transforms>
      <DigestMethod Algorithm=\"some-algo-256\"/>
      <DigestValue>some-hash-256</DigestValue>
    </Reference>
  </SignedInfo>
  <SignatureValue>signature-value-in-base-64</SignatureValue>
  <KeyInfo Id=\"KeyInfo\">
    <X509Data>
      <X509Certificate>x509-cert-in-base-64</X509Certificate>
    </X509Data>
  </KeyInfo>
  <Object Id=\"Object\">
    <Result>
      ...Initial XML I was signing...
    </Result>
  </Object>
</Signature>

我的问题是:

  1. 如果#KeyInfo&lt;Reference&gt; 标记中,这意味着&lt;KeyInfo&gt; 部分也被签名了吗? (因为 wiki 说“一个或多个 Reference 元素指定由 URI 引用签名的资源”)。这就引出了第二个问题
  2. 如果签名值对标签&lt;KeyInfo&gt;&lt;Object&gt; 中的数据都进行了签名,那么实际签名的是什么?它只是计算出的 xml 的这两部分的哈希值并且在 &lt;DigestValue&gt; 标签中,还是从 &lt;KeyInfo 开始到 &lt;/KeyInfo&gt; 结束标签的整个标签以及它之间的数据? (与&lt;Object&gt; 相同的问题)。

    Wiki 没有指定这些内容,我迷失在 RFC 中,找不到这些问题的答案。

    标签: cryptography certificate digital-signature xml-signature xml-dsig


    【解决方案1】:
    1. 是的,KeyInfo 将包含在签名中。
    2. SignedInfo 元素的内容是实际签名的内容。首先使用指定的转换对其进行规范化,然后将该序列化元素的字节馈送到您选择的签名算法中。实际内容(KeyInfoObject)通过SignedInfo 中的DigestValue 元素的存在包含在签名中,而不是直接签名。因此,在签名验证期间验证这些哈希值是否正确至关重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2022-06-28
      相关资源
      最近更新 更多