5

我已经检查了 W3C 网站上的 XML 签名语法和处理,但是它几乎没有提到多重签名。是否有在一个 xml 文件上创建多重签名的标准或规则?谢谢

示例:(仅考虑同文件引用)

原始xml

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
</root>

第一个 A 用信封签名签名

签名的 XML

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>this is Signature signed by A with Ref URL=""</Signature>
</root>

现在,B 想要签署 XML(包含 A 的签名)

B 签名的 XML

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>Signature A: this is Signature signed by A with Ref URL=""</Signature>
  <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature>
</root>

然后,当涉及到验证时,它变得混乱......

对于签名 A,在验证时,它看到

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
  <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature>
</root>

但它实际签署的是

<root>
  <item>
    <name>Apple</name>
    <price>100</price>
  </item>
</root>

(请注意,由于包络变换,签名和验证时会删除一个人的签名节点)在进行包络签名时将签名节点视为根可以解决相同的问题。但是如果涉及多个引用,它可能会变得更加复杂。

4

1 回答 1

4

使用当前 XMLDSig 标准在一组节点上制作多个签名并将它们包含到同一个 XML 文档中没有问题。不需要特殊的规则或标准。

对于您的示例,每个签名(应该)不是在“根”上制作,而是在“项目”节点(或项目节点集)上制作。因此,签名 B 不涵盖签名 A 作为要签名的数据。

于 2012-06-06T16:54:35.533 回答