什么是xml签名中的规范化?

时间:2012-04-03 02:02:36

标签: xml xml-signature

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

1 个答案:

答案 0 :(得分:7)

一般使用签名(除了可追溯性原因)作为收件人的证明,该邮件在其过程中未被更改(例如,由中间的人)。

- &gt; 关键字:诚信

问题:

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

  1. <a>1</a><!--comment--> <b></b>
  2. <a>1</a><b/>
  3. 这使得无法创建可确定的签名哈希,这是工作签名验证的必要条件。 例如,上面两个XML示例的MD5哈希将导致完全不同的结果哈希,尽管两个示例都以XML格式提供相同的有效数据(它们在语义上相同)。

    <强>解决方案: 这是XML规范化(c14n)的用武之地: 消息由发送方(客户端)格式化(规范化),也在接收方(服务器)接收后格式化,以便散列不会因相同数据(在XML级别)而改变。

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

    重新提问: SignatureValue元素包含SignedInfo元素的Base64编码签名结果。