2012-04-03 50 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