2012-04-03 76 views
1

什么是在xml签名中使用的规范化标签。它出现在<signed info>元素中。我通过网络浏览过各种文件。但他们都太抽象,我不明白。如果有人能够解释标准化标签中应包含哪些内容以及如何使用它,这将会有所帮助。
我也怀疑<signature value>元素。它包含什么签名?什么是xml签名中的规范化?

回答

5

通常使用签名(除了可追踪性原因)作为接收方的证明,证明消息在其途中没有改变(例如由中间的人)。

- >关键字:诚信

问题:

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

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

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

解决方案: 是这样的,其中一个XML规范化(C14N)进来: 该消息被格式化(规范化)由发送方(客户端),并且还对接收机侧接收(服务器)之后,使对于相同的数据(在XML级别上),哈希不会更改。

我想你只是好奇这件事,通常你不应该关心这个,因为libs(XMLDSig-libs,WS-Security-libs,..)正在幕后处理这个事情。

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

+0

谢谢你的回答。实际上,签名值元素包含元素的签名。请相应地更改“Re 2nd Question”部分。我会接受你的回答。 – Ashwin 2012-04-03 16:01:17

+0

不客气。感谢关于第二个问题的提示,我编辑了这部分内容。 – 2012-04-03 19:59:12

+0

@AydinK很好的答案,然而我不熟悉的部分是:_italic_“它在发送之后和接收端接收之前对消息进行格式化,以便对于相同数据(在XML级别) 。“_ italic_。我的理解是,您的XML消息不会在有线或从发送方到接收方的任何传输中发生变化。 c14n过程在发送方做为计算散列的序言(因此散列是根据规范版本的消息计算的)。在接收方,验证签名的过程将执行相同的操作以获得相同的散列。 – 2012-04-03 23:12:47