JavaSE 6基于JSR105的XML簽名之理論篇

發表于:2007-04-27來源:作者:點擊數: 標簽:xmlJavaSEJSR105理論簽名
XML簽名技術,這項在W3C建議中指定的XML簽名語法及處理方法(XML-Signature Syntax and Processing),成為解決 SOA 開發 中消息級 安全 性方案的基
  XML簽名技術,這項在W3C建議中指定的XML簽名語法及處理方法(XML-Signature Syntax and Processing),成為解決SOA開發中消息級安全性方案的基礎。被普遍接受的OASIS標準WS-安全性(WS-Security)正是構建在這一技術(以及XML加密)基礎之上。JSR-105規范又對在Java平臺應用XML簽名技術進一步標準化,并且將成為即將到來的Java SE 6發行版本的一個組成部分。本系列文章(《理論篇》與《實踐篇》)將基于Java SE 6的試發行版本對JSR-105作入門性介紹;在第二篇(即《實踐篇》)中,我們將討論一個具體的應用案例。

  一、 數據一致性和消息認證

  XML數字簽名的主要目的是確保數據一致性。RFC 2828,因特網安全詞匯表(Internet Security Glossary),把"一致性"定義為"在一種未授權的或偶然方式下確保數據沒有改變、破壞或丟失的屬性"。在這種意義上,與一個校驗和一起存儲或傳遞數據就可以實現數據的一致性。嚴格地說,XML簽名能夠實現比這種一致性更為豐富的內涵-它能夠為在RFC 2828中所謂的消息認證提供支持。

  二、 簽名元素結構

  實質上,XML簽名使用XML語義描述一個數字簽名。下列層次捕獲頂級的元素和屬性以及它們之間的結構化關系。

clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e7e9e9 border=1>
<Signature ID?>
?。糞ignedInfo>
 ?。糃anonicalizationMethod/>
  ?。糞ignatureMethod/>
   (<Reference URI? >
    (<Transforms>)?
   ?。糄igestMethod>
   ?。糄igestValue>
   ?。?Reference>)+
  ?。?SignedInfo>
?。糞ignatureValue>
 (<KeyInfo>)?
 (<Object ID?>)*
</Signature>

  在這個示例中,?表示零個或一個出現,+表示一個或多個出現,而*表示零或多個出現。在此,所有的元素和屬性被定義于命名空間http://www.w3.org/2000/09/XMLdsig#。

  在此,Reference擔當連接要簽名的數據對象與一個XML簽名之間的橋梁作用(通過URI屬性)。一個應用程序選擇這里的digest方法來計算一個數據對象的digest值,并且把這二者作為相應的Reference元素的一部分。

  對于digest方法,W3C建議實現對SHA-1的支持。而且,這種實現通常還支持其它交互式單向哈希函數-例如SHA-256,SHA-512和RIPEMD 160。

  實際上,我們很少直接從數據對象本身計算一個digest值。通常,一個應用程序需要首先對數據對象應用一些轉換。例如,我們可以使用XPath來從一個XML文檔中僅提取關鍵元素以實現簽名;或者,我們也可能在使用XSLT經過一些轉換后對一個XML文檔進行簽名。這樣的轉換是在Transforms元素中指定的-其中包含一個有關實現轉換算法及其它相關信息的Transforms的有序列,當然也包括在相應的Reference元素之內。

  SignedInfo是數字簽名算法實際應用的元素。該算法通過SignatureMethod元素捕獲;W3C建議中要求實現對DSA_SHA1,RSA_SHA1和HMAC_SHA1(由JSR-105所注釋)的支持。前兩個是基于公鑰的,而HMAC是一種對稱密鑰密碼學算法。

共2頁。 1 2 :

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97