2

xml 签名中使用的规范化标签是什么。它存在于<signed info>元素中。我在网上浏览了各种文件。但是所有这些都太抽象了,我无法理解。如果有人可以解释规范化标签中应该包含什么以及应该如何使用它会很有帮助?我对元素
也有疑问。<signature value>它包含什么签名?

4

1 回答 1

7

通常使用签名(除了可追溯性原因)作为收件人的证明,即消息在传输过程中没有被更改(例如中间人)。

->关键词:诚信

问题:

XML 提供了几种有效的方法来构造相同的(输入)数据,例如:

  1. <a>1</a><!--comment--> <b></b>
  2. <a>1</a><b/>

这使得创建可确定的签名散列成为不可能,而这对于有效的签名验证来说是必须的。例如,上面两个 XML 示例的 MD5 散列将导致完全不同的结果散列,尽管两个示例都以 XML 形式提供相同的有效数据(它们在语义上是相同的)。

解决方案: 这是 XML 规范化 (c14n) 出现的地方:消息由发送方(客户端)格式化(规范化),并且在接收方(服务器)接收后也被格式化(规范化),因此对于相同的数据,哈希不会改变(在 XML 级别上)。

我猜你只是对这些东西感到好奇,因为通常你不应该关心这个,因为库(XMLDSig-libs,WS-Security-libs,..)正在幕后处理这个问题。

关于第二个问题: SignatureValue 元素包含 SignedInfo 元素的 Base64 编码签名结果。

于 2012-04-03T10:04:07.427 回答